diff --git a/.claude/.pi-map.index.md b/.claude/.pi-map.index.md index f5f1d53..9c5251b 100644 --- a/.claude/.pi-map.index.md +++ b/.claude/.pi-map.index.md @@ -2,7 +2,7 @@ dir: .claude ## role -Configuration directory for Claude AI assistant integration and custom instructions. +Configuration directory for Claude AI assistant settings and custom instructions. ## parent index: ./.pi-map.index.md map: ./.pi-map.md diff --git a/.claude/.pi-map.md b/.claude/.pi-map.md index 4476958..dfd4dea 100644 --- a/.claude/.pi-map.md +++ b/.claude/.pi-map.md @@ -4,10 +4,10 @@ dir: .claude index: .claude/.pi-map.index.md ## role -Configuration directory for Claude AI assistant integration and custom instructions. +Configuration directory for Claude AI assistant settings and custom instructions. ## files ## arch -Project-specific AI tooling configuration using convention-based file organization for assistant context and behavior customization. +Simple flat-file configuration storage with no executable code, using human-readable text files for AI behavior customization. ## tags - ## symbols diff --git a/.claude/skills/.pi-map.index.md b/.claude/skills/.pi-map.index.md index f31c258..c887923 100644 --- a/.claude/skills/.pi-map.index.md +++ b/.claude/skills/.pi-map.index.md @@ -2,7 +2,7 @@ dir: .claude/skills ## role -Contains reusable AI skill definitions and prompt templates that configure Claude's specialized capabilities for specific development tasks. +Contains skill definitions and configuration files for the Claude AI assistant to extend its capabilities with specialized behaviors and domain-specific expertise. ## parent index: .claude/.pi-map.index.md map: .claude/.pi-map.md diff --git a/.claude/skills/.pi-map.md b/.claude/skills/.pi-map.md index e83c69e..a3fd520 100644 --- a/.claude/skills/.pi-map.md +++ b/.claude/skills/.pi-map.md @@ -4,10 +4,10 @@ dir: .claude/skills index: .claude/skills/.pi-map.index.md ## role -Contains reusable AI skill definitions and prompt templates that configure Claude's specialized capabilities for specific development tasks. +Contains skill definitions and configuration files for the Claude AI assistant to extend its capabilities with specialized behaviors and domain-specific expertise. ## files ## arch -Modular skill-based architecture using declarative configuration files (likely YAML/JSON) to define context-specific behaviors, tool access patterns, and system prompts for different operational modes. +Declarative skill configuration system using structured metadata files (likely YAML/JSON) that define prompts, tools, and context boundaries for modular AI capability extensions. ## tags - ## symbols diff --git a/.claude/skills/sift-backlog/.pi-map.index.md b/.claude/skills/sift-backlog/.pi-map.index.md index 8fb2218..00251fd 100644 --- a/.claude/skills/sift-backlog/.pi-map.index.md +++ b/.claude/skills/sift-backlog/.pi-map.index.md @@ -2,7 +2,7 @@ dir: .claude/skills/sift-backlog ## role -Defines a workflow skill for triaging, organizing, and activating backlog tasks into actionable plans using a custom CLI tool. +Provides a workflow skill for triaging, organizing, and activating backlog tasks into actionable plans using a custom CLI tool. ## parent index: .claude/skills/.pi-map.index.md map: .claude/skills/.pi-map.md diff --git a/.claude/skills/sift-backlog/.pi-map.md b/.claude/skills/sift-backlog/.pi-map.md index 977bd16..6268492 100644 --- a/.claude/skills/sift-backlog/.pi-map.md +++ b/.claude/skills/sift-backlog/.pi-map.md @@ -4,11 +4,11 @@ dir: .claude/skills/sift-backlog index: .claude/skills/sift-backlog/.pi-map.index.md ## role -Defines a workflow skill for triaging, organizing, and activating backlog tasks into actionable plans using a custom CLI tool. +Provides a workflow skill for triaging, organizing, and activating backlog tasks into actionable plans using a custom CLI tool. ## files -- SKILL.md | Defines a workflow skill for triaging, organizing, and activating backlog tasks into actionable plans using a custom CLI tool. | dep: sf (custom CLI tool), task management system, plan management system +- SKILL.md | Defines a workflow skill for triaging, organizing, and activating backlog tasks into actionable plans using a custom CLI tool. | dep: sf CLI (task, plan, dependency, update subcommands) ## arch -Documentation-driven skill definition using structured markdown with command specifications, workflow stages, and integration patterns for Claude CLI tooling. +Skill-based workflow automation using markdown-defined CLI tooling and structured task management patterns. ## tags skill, defines, workflow, triaging, organizing, activating, backlog, tasks ## symbols diff --git a/.opencode/.pi-map.index.md b/.opencode/.pi-map.index.md index a452937..dcdbe79 100644 --- a/.opencode/.pi-map.index.md +++ b/.opencode/.pi-map.index.md @@ -2,7 +2,7 @@ dir: .opencode ## role -Hidden directory for OpenCode IDE/editor configuration and workspace metadata +This appears to be a configuration or metadata directory for the OpenCode AI coding assistant tool. ## parent index: ./.pi-map.index.md map: ./.pi-map.md diff --git a/.opencode/.pi-map.md b/.opencode/.pi-map.md index 40ae67c..c614059 100644 --- a/.opencode/.pi-map.md +++ b/.opencode/.pi-map.md @@ -4,10 +4,10 @@ dir: .opencode index: .opencode/.pi-map.index.md ## role -Hidden directory for OpenCode IDE/editor configuration and workspace metadata +This appears to be a configuration or metadata directory for the OpenCode AI coding assistant tool. ## files ## arch -IDE-specific dot-directory pattern, no active code architecture; stores tool preferences and ephemeral state +Hidden directory storing tool-specific state; no discernible software architecture as it contains no source files. ## tags - ## symbols diff --git a/.opencode/commands/.pi-map.index.md b/.opencode/commands/.pi-map.index.md index 7bcca04..e594184 100644 --- a/.opencode/commands/.pi-map.index.md +++ b/.opencode/commands/.pi-map.index.md @@ -2,7 +2,7 @@ dir: .opencode/commands ## role -Defines experimental workflow skills and AI assistant stances for an OpenSpec-based development system with structured change management. +Defines AI assistant command workflows for an OpenSpec-based development system, covering task execution, change archival, exploratory analysis, and new change proposal generation. ## parent index: .opencode/.pi-map.index.md map: .opencode/.pi-map.md diff --git a/.opencode/commands/.pi-map.md b/.opencode/commands/.pi-map.md index e4099c1..1f36e3a 100644 --- a/.opencode/commands/.pi-map.md +++ b/.opencode/commands/.pi-map.md @@ -4,16 +4,16 @@ dir: .opencode/commands index: .opencode/commands/.pi-map.index.md ## role -Defines experimental workflow skills and AI assistant stances for an OpenSpec-based development system with structured change management. +Defines AI assistant command workflows for an OpenSpec-based development system, covering task execution, change archival, exploratory analysis, and new change proposal generation. ## files -- opsx-apply.md | Defines an experimental workflow skill for implementing tasks from an OpenSpec change through a structured, interactive process with CLI integration and progress tracking. | dep: openspec CLI, AskUserQuestion tool, filesystem (for reading context files) -- opsx-archive.md | Defines a workflow for archiving completed changes in an experimental openspec-based development system | dep: openspec CLI, AskUserQuestion tool, Task tool, Skill tool, filesystem (mkdir, mv), JSON parsing -- opsx-explore.md | Defines the "explore mode" stance for an AI assistant - a thinking/discovery mode for investigating problems and clarifying requirements without implementing code | dep: OpenSpec system -- opsx-propose.md | Defines a workflow for proposing new changes in the openspec system by creating a change directory and generating all required artifacts (proposal.md, design.md, tasks.md) in dependency order | dep: openspec CLI, AskUserQuestion tool, TodoWrite tool, JSON parsing +- opsx-apply.md | Implement tasks from an OpenSpec change by selecting a change, reading context files, and executing pending tasks in a loop until completion or blocked. | dep: openspec CLI, AskUserQuestion tool, filesystem access +- opsx-archive.md | Defines a workflow for archiving completed changes in an experimental openspec-based development system, including validation, spec sync assessment, and user confirmation steps. | dep: openspec CLI, AskUserQuestion tool, Task tool, Skill tool, filesystem operations +- opsx-explore.md | Defines the "explore mode" stance and guidelines for an AI assistant to think through ideas, investigate problems, and clarify requirements without implementing code. | dep: OpenSpec system, ASCII diagrams, codebase investigation tools +- opsx-propose.md | Defines an AI assistant workflow for proposing new changes by creating a scaffolded change directory and generating all required artifacts (proposal.md, design.md, tasks.md) in dependency order using the openspec CLI tool. | dep: openspec CLI, AskUserQuestion tool, TodoWrite tool ## arch -Markdown-based command definitions using a workflow pattern with interactive CLI integration, progress tracking, and dependency-ordered artifact generation across explore/propose/apply/archive lifecycle phases. +Markdown-based command specifications using a structured workflow pattern with sequential steps, file I/O operations, CLI tool integration (openspec), and human-in-the-loop decision points for validation and confirmation. ## tags -opsx, defines, workflow, openspec, openspec cli, askuserquestion tool, explore, experimental +opsx, tasks, openspec, change, openspec cli, askuserquestion tool, defines, explore ## symbols - ## workflows diff --git a/.opencode/skills/.pi-map.index.md b/.opencode/skills/.pi-map.index.md index f11167a..e110d7d 100644 --- a/.opencode/skills/.pi-map.index.md +++ b/.opencode/skills/.pi-map.index.md @@ -2,7 +2,7 @@ dir: .opencode/skills ## role -Contains reusable AI skill modules that provide specialized capabilities for the OpenCode assistant. +Contains custom AI agent skills or capabilities that extend the base functionality of the OpenCode framework with specialized tools and behaviors. ## parent index: .opencode/.pi-map.index.md map: .opencode/.pi-map.md diff --git a/.opencode/skills/.pi-map.md b/.opencode/skills/.pi-map.md index 77e0a1e..4b54493 100644 --- a/.opencode/skills/.pi-map.md +++ b/.opencode/skills/.pi-map.md @@ -4,10 +4,10 @@ dir: .opencode/skills index: .opencode/skills/.pi-map.index.md ## role -Contains reusable AI skill modules that provide specialized capabilities for the OpenCode assistant. +Contains custom AI agent skills or capabilities that extend the base functionality of the OpenCode framework with specialized tools and behaviors. ## files ## arch -Modular plugin-based architecture where each skill is a self-contained module with defined interfaces, enabling dynamic loading and composition of AI capabilities. +Modular skill plugin architecture where individual capabilities are registered as discrete, composable units that can be dynamically loaded and invoked by the agent system. ## tags - ## symbols diff --git a/.opencode/skills/openspec-apply-change/.pi-map.index.md b/.opencode/skills/openspec-apply-change/.pi-map.index.md index bcef100..7831b5e 100644 --- a/.opencode/skills/openspec-apply-change/.pi-map.index.md +++ b/.opencode/skills/openspec-apply-change/.pi-map.index.md @@ -2,7 +2,7 @@ dir: .opencode/skills/openspec-apply-change ## role -Defines an AI assistant skill that implements OpenSpec changes through a spec-driven workflow with structured planning, validation, and execution phases. +Provides an AI assistant skill that automates implementation of OpenSpec specification changes through a structured, CLI-driven workflow. ## parent index: .opencode/skills/.pi-map.index.md map: .opencode/skills/.pi-map.md diff --git a/.opencode/skills/openspec-apply-change/.pi-map.md b/.opencode/skills/openspec-apply-change/.pi-map.md index 0043787..4760267 100644 --- a/.opencode/skills/openspec-apply-change/.pi-map.md +++ b/.opencode/skills/openspec-apply-change/.pi-map.md @@ -4,13 +4,13 @@ dir: .opencode/skills/openspec-apply-change index: .opencode/skills/openspec-apply-change/.pi-map.index.md ## role -Defines an AI assistant skill that implements OpenSpec changes through a spec-driven workflow with structured planning, validation, and execution phases. +Provides an AI assistant skill that automates implementation of OpenSpec specification changes through a structured, CLI-driven workflow. ## files -- SKILL.md | Defines an AI assistant skill for implementing tasks from an OpenSpec change using a spec-driven workflow | dep: openspec CLI, AskUserQuestion tool, filesystem access +- SKILL.md | Defines an AI assistant skill for implementing tasks from an OpenSpec change using a spec-driven workflow with the openspec CLI. | dep: openspec CLI, AskUserQuestion tool, filesystem access ## arch -Template-based skill definition using markdown documentation with structured workflow phases (planning, validation, execution) and integration points for external tools (OpenSpec CLI, OpenCode agent). +Skill-based plugin architecture using markdown-defined capabilities with structured workflow steps (analyze, plan, implement, verify) and external CLI tool integration. ## tags -skill, defines, assistant, implementing, tasks, openspec, change, spec +skill, openspec, defines, assistant, implementing, tasks, change, spec ## symbols - ## workflows diff --git a/.opencode/skills/openspec-archive-change/.pi-map.index.md b/.opencode/skills/openspec-archive-change/.pi-map.index.md index 1ce1dc8..34fd99d 100644 --- a/.opencode/skills/openspec-archive-change/.pi-map.index.md +++ b/.opencode/skills/openspec-archive-change/.pi-map.index.md @@ -2,7 +2,7 @@ dir: .opencode/skills/openspec-archive-change ## role -Provides a reusable automation skill for archiving completed experimental changes via the openspec CLI +Defines an automation skill for archiving completed changes in an experimental workflow using the openspec CLI. ## parent index: .opencode/skills/.pi-map.index.md map: .opencode/skills/.pi-map.md diff --git a/.opencode/skills/openspec-archive-change/.pi-map.md b/.opencode/skills/openspec-archive-change/.pi-map.md index 8b3e61d..ca09eaa 100644 --- a/.opencode/skills/openspec-archive-change/.pi-map.md +++ b/.opencode/skills/openspec-archive-change/.pi-map.md @@ -4,13 +4,13 @@ dir: .opencode/skills/openspec-archive-change index: .opencode/skills/openspec-archive-change/.pi-map.index.md ## role -Provides a reusable automation skill for archiving completed experimental changes via the openspec CLI +Defines an automation skill for archiving completed changes in an experimental workflow using the openspec CLI. ## files -- SKILL.md | Defines a skill for archiving completed changes in an experimental workflow using the openspec CLI. | dep: openspec CLI, AskUserQuestion tool, Task tool, file system (mkdir, mv, read), JSON parsing +- SKILL.md | Defines a skill for archiving completed changes in an experimental workflow using the openspec CLI. | dep: openspec CLI, AskUserQuestion tool, Task tool, Skill tool, openspec-sync-specs skill ## arch -Skill-based modular automation pattern using markdown-defined CLI operations with structured metadata and command templates +Skill-based plugin architecture following a declarative markdown skill definition pattern for CLI workflow automation. ## tags -skill, defines, archiving, completed, changes, experimental, workflow, openspec +skill, openspec, defines, archiving, completed, changes, experimental, workflow ## symbols - ## workflows diff --git a/.opencode/skills/openspec-explore/.pi-map.index.md b/.opencode/skills/openspec-explore/.pi-map.index.md index 0d53c8b..f634b07 100644 --- a/.opencode/skills/openspec-explore/.pi-map.index.md +++ b/.opencode/skills/openspec-explore/.pi-map.index.md @@ -2,7 +2,7 @@ dir: .opencode/skills/openspec-explore ## role -Defines a conversational AI skill/persona for "explore mode" that serves as a thinking partner for exploring ideas, investigating problems, and clarifying requirements without implementing code. +Provides a conversational exploration skill for OpenSpec CLI that enables non-implementation ideation, problem investigation, and requirements clarification. ## parent index: .opencode/skills/.pi-map.index.md map: .opencode/skills/.pi-map.md diff --git a/.opencode/skills/openspec-explore/.pi-map.md b/.opencode/skills/openspec-explore/.pi-map.md index d6f65b6..1714c70 100644 --- a/.opencode/skills/openspec-explore/.pi-map.md +++ b/.opencode/skills/openspec-explore/.pi-map.md @@ -4,13 +4,13 @@ dir: .opencode/skills/openspec-explore index: .opencode/skills/openspec-explore/.pi-map.index.md ## role -Defines a conversational AI skill/persona for "explore mode" that serves as a thinking partner for exploring ideas, investigating problems, and clarifying requirements without implementing code. +Provides a conversational exploration skill for OpenSpec CLI that enables non-implementation ideation, problem investigation, and requirements clarification. ## files -- SKILL.md | Defines a conversational AI skill/persona for "explore mode" - a thinking partner for exploring ideas, investigating problems, and clarifying requirements without implementing code. | dep: openspec CLI +- SKILL.md | Defines a conversational "explore mode" skill for OpenSpec CLI that acts as a thinking partner for exploring ideas, investigating problems, and clarifying requirements without implementing code. | dep: openspec CLI ## arch -Single-file skill definition using markdown-based persona specification with structured sections for description, usage guidelines, and behavioral constraints. +Skill-based plugin architecture using markdown-defined behavioral specifications with conversational AI patterns, separating exploration/thinking workflows from implementation tasks. ## tags -skill, defines, conversational, persona, explore, mode, thinking, partner +skill, defines, conversational, explore, mode, openspec, cli, acts ## symbols - ## workflows diff --git a/.opencode/skills/openspec-propose/.pi-map.index.md b/.opencode/skills/openspec-propose/.pi-map.index.md index 18c22e0..f9dd244 100644 --- a/.opencode/skills/openspec-propose/.pi-map.index.md +++ b/.opencode/skills/openspec-propose/.pi-map.index.md @@ -2,7 +2,7 @@ dir: .opencode/skills/openspec-propose ## role -Provides a structured workflow skill for proposing new changes using the openspec CLI with artifact generation in dependency order. +Automates the creation of structured software change proposals through a scaffolded directory workflow using the openspec CLI. ## parent index: .opencode/skills/.pi-map.index.md map: .opencode/skills/.pi-map.md diff --git a/.opencode/skills/openspec-propose/.pi-map.md b/.opencode/skills/openspec-propose/.pi-map.md index dd237d4..d091869 100644 --- a/.opencode/skills/openspec-propose/.pi-map.md +++ b/.opencode/skills/openspec-propose/.pi-map.md @@ -4,13 +4,13 @@ dir: .opencode/skills/openspec-propose index: .opencode/skills/openspec-propose/.pi-map.index.md ## role -Provides a structured workflow skill for proposing new changes using the openspec CLI with artifact generation in dependency order. +Automates the creation of structured software change proposals through a scaffolded directory workflow using the openspec CLI. ## files -- SKILL.md | Defines a structured workflow for proposing new changes using the openspec CLI, generating proposal, design, and task artifacts in dependency order. | dep: openspec CLI, AskUserQuestion tool, TodoWrite tool +- SKILL.md | Defines an AI skill that automates proposing new software changes by scaffolding a directory structure and generating dependent artifacts (proposal, design, tasks) using the openspec CLI workflow. | dep: openspec CLI, AskUserQuestion tool, TodoWrite tool ## arch -Template-based skill definition using markdown documentation with sequential artifact generation (proposal → design → tasks) following dependency ordering. +Template-driven skill architecture following a sequential artifact generation pattern (proposal → design → tasks) with CLI-based workflow automation. ## tags -skill, defines, structured, workflow, proposing, new, changes, openspec +skill, defines, automates, proposing, new, software, changes, scaffolding ## symbols - ## workflows diff --git a/.pi-map.index.md b/.pi-map.index.md index 874982b..0cbc78b 100644 --- a/.pi-map.index.md +++ b/.pi-map.index.md @@ -16,7 +16,7 @@ dir: . Trust boundary: index routes, map orients, source decides. ## role -Infrastructure and deployment configuration for a self-hosted project management platform with OAuth2 authentication, providing Docker Compose orchestration, environment templates, and development tooling. +A self-hosted web platform for managing projects, git repositories, and development tools with OAuth2 authentication, built as a Dockerized multi-service application. ## parent - ## children @@ -47,9 +47,6 @@ Infrastructure and deployment configuration for a self-hosted project management - e2e index: e2e/.pi-map.index.md map: e2e/.pi-map.md -- minerv3 - index: minerv3/.pi-map.index.md - map: minerv3/.pi-map.md - openspec index: openspec/.pi-map.index.md map: openspec/.pi-map.md @@ -59,9 +56,6 @@ Infrastructure and deployment configuration for a self-hosted project management - tool-images index: tool-images/.pi-map.index.md map: tool-images/.pi-map.md -- uploads - index: uploads/.pi-map.index.md - map: uploads/.pi-map.md ## files - .env.example - .gitignore @@ -73,6 +67,9 @@ Infrastructure and deployment configuration for a self-hosted project management - docker-compose.yml - progress.md - swap-pane +- ui-audit-spacing-typography.md +- ui-rework-foundations-apply.md +- ui-rework-pass2-apply.md ## links index: ./.pi-map.index.md map: ./.pi-map.md diff --git a/.pi-map.md b/.pi-map.md index 5997626..2c67d52 100644 --- a/.pi-map.md +++ b/.pi-map.md @@ -18,22 +18,25 @@ index: ./.pi-map.index.md Trust boundary: index routes, map orients, source decides. ## role -Infrastructure and deployment configuration for a self-hosted project management platform with OAuth2 authentication, providing Docker Compose orchestration, environment templates, and development tooling. +A self-hosted web platform for managing projects, git repositories, and development tools with OAuth2 authentication, built as a Dockerized multi-service application. ## files -- .env.example | Provides a template of environment variables for configuring a Headquarter application with PostgreSQL, Redis, Authentik SSO, and Docker/Traefik deployment -- .gitignore | Specifies files and directories for Git to ignore across a multi-language project with Python, Node, and custom tooling | dep: Git -- AGENTS.md | Defines operational rules, workflows, and constraints for AI agents working within an OpenSpec-driven software development project. | dep: OpenSpec, superpowers, git, docker compose, conventional commits -- CHANGELOG.md | Documents version history and notable changes for a Git-based project management web application -- Makefile | Provides standard development commands for containerized web application lifecycle management via Docker Compose | dep: docker compose, alembic, pytest, ruff, mypy, playwright, npm, postgres, redis -- README.md | A self-hosted platform for managing projects, git repositories, and development tools with OAuth2 authentication. | dep: FastAPI, SQLAlchemy, Pydantic, Alembic, python-jose, React, TypeScript, Vite, React Router, Docker, PostgreSQL, Traefik, Authentik, Git -- docker-compose.traefik.yml | Deploys a multi-service web application (frontend, API, PostgreSQL, Redis) behind an existing Traefik reverse proxy with TLS termination and environment-configurable domains. | dep: docker, traefik, postgres, redis, authentik, docker-compose -- docker-compose.yml | Defines a multi-service Docker Compose stack with PostgreSQL, Redis, API backend, and web frontend services for a "headquarter" application | dep: Docker, PostgreSQL, Redis, Vite, asyncpg, nginx -- progress.md | Tracks completed and remaining tasks for a backend-frontend code refactoring project organized in 7 phases -- swap-pane | Empty file with no functionality +- .env.example | Template environment configuration file defining all required and optional environment variables for a multi-service application stack +- .gitignore | Specifies patterns for files and directories that Git should ignore in this project. | dep: git +- AGENTS.md | Defines agent behavior rules, workflow procedures, and project conventions for AI agents working on an OpenSpec-driven codebase. | dep: OpenSpec, git, superpowers workflow system, conventional commits +- CHANGELOG.md | Documents version history and notable changes to a project management and Git repository application +- Makefile | Provides standard development commands for managing a Docker Compose-based multi-service application (API, web, Postgres, Redis) with testing, migration, linting, and build automation. | dep: docker compose, alembic, pytest, ruff, mypy, playwright, npm/node +- README.md | A self-hosted platform for managing projects, git repositories, and development tools with OAuth2 authentication. | dep: FastAPI, SQLAlchemy, Pydantic, Alembic, python-jose, React, TypeScript, Vite, React Router, Docker, PostgreSQL, Traefik, Authentik +- docker-compose.traefik.yml | Deploys a multi-service web application stack (frontend, API, PostgreSQL, Redis) behind an existing Traefik reverse proxy with automatic HTTPS | dep: Docker, Docker Compose, Traefik, PostgreSQL, Redis, Authentik +- docker-compose.yml | Defines a multi-container Docker application with PostgreSQL, Redis, API backend, and web frontend services for a "headquarter" application. | dep: Docker Compose, PostgreSQL 15, Redis 7, Python/FastAPI (implied by asyncpg), Vite/Node.js (implied by web build), Alpine Linux +- progress.md | Documents the completed phases and remaining work of a backend-frontend code refactoring project involving modularization, subpackage extraction, and file reorganization. +- swap-pane | Swaps two tmux panes between windows, preserving active pane state and layout | dep: tmux +- ui-audit-spacing-typography.md | Documents a comprehensive UI audit of spacing, typography, and visual rhythm issues in a React web application, identifying missing CSS classes, unstyled mobile components, inconsistent design tokens, and layout bugs across component and stylesheet files. | dep: React/TSX components, CSS modules/stylesheets, CSS custom properties (tokens), mobile-specific components, design system tokens +- ui-rework-foundations-apply.md | Documents the implementation of Pass 1 (Foundations) of a web UI spacing/typography/visual-rhythm rework, including token expansion, primitive CSS classes, component updates, and validation results. | dep: CSS design tokens, React/TSX components, OpenSpec documentation system, git/SSH, npm build toolchain +- ui-rework-pass2-apply.md | Documents a completed web UI refactoring pass that converted inline styles to token-based utility classes, unified form patterns, and added component utilities across multiple React components. | dep: React, CSS custom properties, OpenSpec, Git, npm, TypeScript, ESLint ## arch -Containerized microservices architecture using Docker Compose with PostgreSQL and Redis data layers, Traefik reverse proxy for TLS/ingress, multi-stage builds for Node.js frontend and Python backend, and environment-driven configuration management. +Full-stack monolithic architecture with React frontend, API backend, PostgreSQL and Redis services, containerized via Docker Compose, using Traefik for reverse proxy/HTTPS, and following a token-based design system for UI consistency. ## tags -docker, redis, git, application, postgresql, compose, traefik, project +docker, application, git, web, react, ui, documents, rework ## symbols - ## workflows diff --git a/.stoneforge/.pi-map.index.md b/.stoneforge/.pi-map.index.md index 12c31e6..584fb05 100644 --- a/.stoneforge/.pi-map.index.md +++ b/.stoneforge/.pi-map.index.md @@ -2,7 +2,7 @@ dir: .stoneforge ## role -Internal configuration and state tracking directory for the Stoneforge application +Infrastructure configuration and metadata storage for the Stoneforge tool ## parent index: ./.pi-map.index.md map: ./.pi-map.md diff --git a/.stoneforge/.pi-map.md b/.stoneforge/.pi-map.md index 1ac8d34..f50ee78 100644 --- a/.stoneforge/.pi-map.md +++ b/.stoneforge/.pi-map.md @@ -4,15 +4,15 @@ dir: .stoneforge index: .stoneforge/.pi-map.index.md ## role -Internal configuration and state tracking directory for the Stoneforge application +Infrastructure configuration and metadata storage for the Stoneforge tool ## files -- .dashboard-opened | Stores timestamp and identifier data for tracking when a dashboard was opened -- .gitignore | Specifies files and patterns for Git to ignore in version control -- config.yaml | Configuration file for the Stoneforge application defining database, sync, playbook, identity, merge, workflow, and agent settings. +- .dashboard-opened | Stores timestamp metadata for tracking when a dashboard was opened +- .gitignore | Specifies files and patterns for Git to ignore in the repository | dep: git +- config.yaml | YAML configuration file defining settings for the Stoneforge tool, including database, sync, playbooks, identity, merge, workflow, and agent permissions. ## arch -Simple dot-directory pattern storing metadata (.dashboard-opened), version control exclusions (.gitignore), and hierarchical YAML configuration (config.yaml) with domain-separated settings +Dot-directory pattern for tool-specific state, using YAML for hierarchical configuration and dotfiles for ephemeral runtime metadata ## tags -config, stores, timestamp, identifier, data, tracking, dashboard, was +git, config, stores, timestamp, metadata, tracking, dashboard, was ## symbols - ## workflows diff --git a/.stoneforge/sync/.pi-map.index.md b/.stoneforge/sync/.pi-map.index.md index dcfbcdb..dfe03f1 100644 --- a/.stoneforge/sync/.pi-map.index.md +++ b/.stoneforge/sync/.pi-map.index.md @@ -2,7 +2,7 @@ dir: .stoneforge/sync ## role -Persists distributed task execution state by storing dependency graphs and ephemeral worker agent records for a collaborative workflow system. +Provides persistent storage for entity relationships and AI worker agent records in a synchronization system. ## parent index: .stoneforge/.pi-map.index.md map: .stoneforge/.pi-map.md diff --git a/.stoneforge/sync/.pi-map.md b/.stoneforge/sync/.pi-map.md index 7782f0c..77943ab 100644 --- a/.stoneforge/sync/.pi-map.md +++ b/.stoneforge/sync/.pi-map.md @@ -4,14 +4,14 @@ dir: .stoneforge/sync index: .stoneforge/sync/.pi-map.index.md ## role -Persists distributed task execution state by storing dependency graphs and ephemeral worker agent records for a collaborative workflow system. +Provides persistent storage for entity relationships and AI worker agent records in a synchronization system. ## files -- dependencies.jsonl | Stores a sequence of dependency relationships between entities in JSON Lines format, tracking parent-child, blocking, and reply relationships with timestamps and creators. -- elements.jsonl | Stores JSONL records of ephemeral worker agents with their session history, worktree assignments, and lifecycle metadata for a distributed task execution system. +- dependencies.jsonl | Stores dependency relationships between entities in JSONL format, including parent-child, blocking, and reply-to relationships with timestamps and creators. +- elements.jsonl | Stores JSONL-formatted entity records for AI worker agents with their session histories and metadata in a data persistence file. ## arch -Event-sourced JSONL append-only logs with entity-relationship modeling (parent-child, blocking, reply) and session-based worker lifecycle tracking. +Append-only JSONL document store with separate files for dependency graph edges (dependencies.jsonl) and entity nodes (elements.jsonl), using a log-structured data pattern for time-ordered, immutable record keeping. ## tags -stores, relationships, dependencies, elements, sequence, dependency, entities, json +stores, relationships, jsonl, dependencies, elements, dependency, entities, format ## symbols - ## workflows diff --git a/apps/.pi-map.index.md b/apps/.pi-map.index.md index a46b146..fe888c5 100644 --- a/apps/.pi-map.index.md +++ b/apps/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps ## role -Container for deployable application entry points and top-level configurations in the project. +Contains the main application entry points and executable modules for the project. ## parent index: ./.pi-map.index.md map: ./.pi-map.md diff --git a/apps/.pi-map.md b/apps/.pi-map.md index bb64e5b..ee8c862 100644 --- a/apps/.pi-map.md +++ b/apps/.pi-map.md @@ -4,10 +4,10 @@ dir: apps index: apps/.pi-map.index.md ## role -Container for deployable application entry points and top-level configurations in the project. +Contains the main application entry points and executable modules for the project. ## files ## arch -Monorepo-style directory structure housing independently runnable applications that share common libraries or modules, typically with per-app configuration, dependencies, and build targets. +Modular application structure with separate deployable units, likely following microservices or multi-app monorepo pattern with shared infrastructure. ## tags - ## symbols diff --git a/apps/api/.pi-map.index.md b/apps/api/.pi-map.index.md index 26fb718..c80d95f 100644 --- a/apps/api/.pi-map.index.md +++ b/apps/api/.pi-map.index.md @@ -2,26 +2,14 @@ dir: apps/api ## role -Self-hosted FastAPI backend API that manages projects, git repositories, and development tools by orchestrating Docker instances for remote development environments. +FastAPI-based backend API service for managing projects, git repositories, and development tools in a self-hosted development platform. ## parent index: apps/.pi-map.index.md map: apps/.pi-map.md ## children -- apps/api/.mypy_cache - index: apps/api/.mypy_cache/.pi-map.index.md - map: apps/api/.mypy_cache/.pi-map.md - apps/api/.pi-lens index: apps/api/.pi-lens/.pi-map.index.md map: apps/api/.pi-lens/.pi-map.md -- apps/api/.pytest_cache - index: apps/api/.pytest_cache/.pi-map.index.md - map: apps/api/.pytest_cache/.pi-map.md -- apps/api/.ruff_cache - index: apps/api/.ruff_cache/.pi-map.index.md - map: apps/api/.ruff_cache/.pi-map.md -- apps/api/.venv-test - index: apps/api/.venv-test/.pi-map.index.md - map: apps/api/.venv-test/.pi-map.md - apps/api/alembic index: apps/api/alembic/.pi-map.index.md map: apps/api/alembic/.pi-map.md diff --git a/apps/api/.pi-map.md b/apps/api/.pi-map.md index 012a7f2..548bf45 100644 --- a/apps/api/.pi-map.md +++ b/apps/api/.pi-map.md @@ -4,19 +4,19 @@ dir: apps/api index: apps/api/.pi-map.index.md ## role -Self-hosted FastAPI backend API that manages projects, git repositories, and development tools by orchestrating Docker instances for remote development environments. +FastAPI-based backend API service for managing projects, git repositories, and development tools in a self-hosted development platform. ## files -- .dockerignore | Specifies files and directories to exclude from Docker build context to reduce image size and avoid copying unnecessary files into containers. | dep: Docker -- Dockerfile | Multi-stage Docker build for a Python application with Docker socket access, Cloudflare tunneling, and database dependency waiting | dep: python:3.11-slim, gcc, libpq-dev, docker-ce-cli, docker-compose-plugin, cloudflared, uvicorn, pyproject.toml dependencies -- README.md | Documentation for a self-hosted FastAPI backend API that manages projects, git repositories, and development tools via Docker instances. | dep: FastAPI, SQLAlchemy, PostgreSQL, asyncpg, Alembic, Docker, Docker Compose, Authentik, uvicorn, pytest, ruff, mypy -- alembic.ini | Configuration file for Alembic database migration tool connecting to a PostgreSQL database with async driver | dep: alembic, sqlalchemy, asyncpg, PostgreSQL -- pyproject.toml | Defines Python project metadata, dependencies, and tool configurations for a FastAPI-based backend API called "headquarter-api" | dep: fastapi, uvicorn, sqlalchemy, asyncpg, alembic, pydantic, pydantic-settings, python-multipart, httpx, structlog, cryptography, pytest, pytest-asyncio, mypy, ruff, aiosqlite -- uv.lock | Lock file for the uv Python package manager that pins exact dependency versions and their artifact hashes for reproducible installations | dep: uv, Python 3.11+, aiosqlite, alembic, annotated-doc, annotated-types, anyio, ast-serialize, asyncpg, and many other PyPI packages -- wait-for-db.sh | Wait for a PostgreSQL database to become available before executing a command, with configurable retry logic. | dep: nc (netcat), sh (POSIX shell), sleep +- .dockerignore | Specifies files and directories to exclude from Docker build context to reduce image size and improve build performance. | dep: Docker +- Dockerfile | Multi-stage Docker image for a Python web application with Docker-in-Docker capabilities, database waiting, and Cloudflare tunnel support | dep: python:3.11-slim, gcc, libpq-dev, docker-ce-cli, docker-compose-plugin, cloudflared, uvicorn, pyproject.toml dependencies +- README.md | README documentation for Headquarter API, a self-hosted FastAPI backend for managing projects, git repositories, and development tools. | dep: FastAPI, SQLAlchemy, PostgreSQL, asyncpg, Alembic, Docker, Docker Compose, Authentik, uvicorn, pytest, ruff, mypy +- alembic.ini | Configuration file for Alembic database migration tool specifying script location, database connection URL, and logging settings | dep: alembic, sqlalchemy, asyncpg, postgresql +- pyproject.toml | Defines Python project configuration, dependencies, and tool settings for a FastAPI-based backend API service | dep: fastapi, uvicorn, sqlalchemy, asyncpg, alembic, pydantic, pydantic-settings, python-multipart, httpx, structlog, cryptography, pytest, pytest-asyncio, mypy, ruff, aiosqlite +- uv.lock | Lock file generated by uv package manager that records exact dependency versions, hashes, and download URLs for reproducible Python environment installation | dep: uv, PyPI, python +- wait-for-db.sh | Waits for a PostgreSQL database to become available before executing the provided command | dep: nc (netcat), sh, sleep ## arch -Async Python backend using FastAPI with PostgreSQL (asyncpg), Alembic migrations, uv package management, multi-stage Docker builds with Docker-in-Docker socket access, and Cloudflare tunneling for secure external connectivity. +Modern Python backend with FastAPI, SQLAlchemy/ORM with Alembic migrations, uv for dependency management, multi-stage Docker containerization with Docker-in-Docker support, and PostgreSQL database connectivity. ## tags -docker, alembic, python, database, fastapi, postgresql, asyncpg, uvicorn +docker, alembic, python, database, fastapi, uvicorn, pyproject, readme ## symbols - ## workflows diff --git a/apps/api/alembic/.pi-map.index.md b/apps/api/alembic/.pi-map.index.md index 05b32a6..6e76fe1 100644 --- a/apps/api/alembic/.pi-map.index.md +++ b/apps/api/alembic/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/alembic ## role -Database migration infrastructure for the API application, providing version-controlled schema changes with async SQLAlchemy support. +Database migration infrastructure for the API application, enabling version-controlled schema changes with async database support. ## parent index: apps/api/.pi-map.index.md map: apps/api/.pi-map.md diff --git a/apps/api/alembic/.pi-map.md b/apps/api/alembic/.pi-map.md index 0b8402d..8d50d9a 100644 --- a/apps/api/alembic/.pi-map.md +++ b/apps/api/alembic/.pi-map.md @@ -4,14 +4,14 @@ dir: apps/api/alembic index: apps/api/alembic/.pi-map.index.md ## role -Database migration infrastructure for the API application, providing version-controlled schema changes with async SQLAlchemy support. +Database migration infrastructure for the API application, enabling version-controlled schema changes with async database support. ## files -- env.py | Configures Alembic database migration environment with async SQLAlchemy support for a project. | exp: func:run_migrations_offline() → None, call:context.configure, call:context.begin_transaction, call:context.run_migrations, func:do_run_migrations(connection: Connection) → None, call:context.configure, call:context.begin_transaction, call:context.run_migrations, func:run_async_migrations() → None, call:async_engine_from_config, call:config.get_section, call:connectable.connect, call:connection.run_sync, call:connectable.dispose, func:run_migrations_online() → None, call:asyncio.run, call:run_async_migrations | dep: logging.config, alembic, sqlalchemy, sqlalchemy.engine, sqlalchemy.ext.asyncio, src.config, src.models, asyncio -- script.py.mako | Alembic database migration script template that generates upgrade/downgrade functions for SQLAlchemy schema migrations | dep: alembic, sqlalchemy +- env.py | Configures Alembic database migration environment with async SQLAlchemy support | exp: func:run_migrations_offline() → None, call:context.configure, call:context.begin_transaction, call:context.run_migrations, func:do_run_migrations(connection: Connection) → None, call:context.configure, call:context.begin_transaction, call:context.run_migrations, func:run_async_migrations() → None, call:async_engine_from_config, call:config.get_section, call:connectable.connect, call:connection.run_sync, call:connectable.dispose, func:run_migrations_online() → None, call:asyncio.run, call:run_async_migrations | dep: logging.config, alembic, sqlalchemy, sqlalchemy.engine, sqlalchemy.ext.asyncio, src.config, src.models, asyncio +- script.py.mako | Alembic database migration script template that generates upgrade/downgrade functions for SQL schema revisions | dep: alembic, sqlalchemy ## arch -Alembic migration framework with Mako templating for generating migration scripts, configured for async SQLAlchemy operations. +Template-based migration generation using Alembic with async SQLAlchemy engine configuration and environment setup. ## tags -migrations, run, sqlalchemy, async, alembic, call:context.configure, call:context.begin, transaction +migrations, run, async, sqlalchemy, alembic, call:context.configure, call:context.begin, transaction ## symbols - run_migrations_offline - do_run_migrations diff --git a/apps/api/alembic/versions/.pi-map.index.md b/apps/api/alembic/versions/.pi-map.index.md index d96a05b..8efa47f 100644 --- a/apps/api/alembic/versions/.pi-map.index.md +++ b/apps/api/alembic/versions/.pi-map.index.md @@ -2,14 +2,12 @@ dir: apps/api/alembic/versions ## role -Database schema version control and migration management for the API application, tracking incremental schema changes from initial tables through advanced features like workspaces, manifests, and monitoring. +Manages database schema evolution and version control for the API application using Alembic migration scripts. ## parent index: apps/api/alembic/.pi-map.index.md map: apps/api/alembic/.pi-map.md ## children -- apps/api/alembic/versions/.ruff_cache - index: apps/api/alembic/versions/.ruff_cache/.pi-map.index.md - map: apps/api/alembic/versions/.ruff_cache/.pi-map.md +- ## files - 0001_initial_schema.py - 0002_refresh_tokens.py @@ -71,7 +69,5 @@ map: apps/api/alembic/versions/.pi-map.md read: 2026_05_24_220141_add_startup_command.py, 2026_05_29_remove_lsio_command_override.py - change versions config read: 0003_user_configs.py, 0009_tool_configs.py, 0013_add_config_profiles.py -- explore versions subdirectories - index: apps/api/alembic/versions/.ruff_cache/.pi-map.index.md ## dirty - diff --git a/apps/api/alembic/versions/.pi-map.md b/apps/api/alembic/versions/.pi-map.md index 6798218..e33dcf8 100644 --- a/apps/api/alembic/versions/.pi-map.md +++ b/apps/api/alembic/versions/.pi-map.md @@ -4,62 +4,62 @@ dir: apps/api/alembic/versions index: apps/api/alembic/versions/.pi-map.index.md ## role -Database schema version control and migration management for the API application, tracking incremental schema changes from initial tables through advanced features like workspaces, manifests, and monitoring. +Manages database schema evolution and version control for the API application using Alembic migration scripts. ## files -- 0001_initial_schema.py | Defines the initial database schema migration creating five tables (users, ssh_keys, projects, git_repositories, user_configs) with relationships, indexes, and constraints using Alembic. | exp: func:upgrade() → None, call:op.create_table, call:sa.Column, call:sa.String, call:postgresql.UUID, call:sa.DateTime, call:sa.func.now, call:sa.PrimaryKeyConstraint, call:sa.UniqueConstraint, call:op.create_index, call:op.f, call:sa.Text, call:sa.ForeignKeyConstraint, call:sa.Boolean, call:postgresql.JSONB, func:downgrade() → None, call:op.drop_table, call:op.drop_index, call:op.f | dep: alembic, sqlalchemy.dialects, sqlalchemy, postgresql dialect -- 0002_refresh_tokens.py | Alembic database migration that creates a refresh_tokens table with indexes for user authentication token management | exp: func:upgrade() → None, call:op.get_bind, call:sa.inspect, call:inspector.has_table, call:op.create_table, call:sa.Column, call:postgresql.UUID, call:sa.String, call:sa.DateTime, call:sa.ForeignKeyConstraint, call:sa.PrimaryKeyConstraint, call:sa.UniqueConstraint, call:inspector.get_indexes, call:op.f, call:op.create_index, func:downgrade() → None, call:op.get_bind, call:sa.inspect, call:inspector.has_table, call:inspector.get_indexes, call:op.f, call:op.drop_index, call:op.drop_table | dep: alembic, sqlalchemy.dialects, sqlalchemy, sqlalchemy.dialects.postgresql -- 0003_user_configs.py | Alembic database migration that creates a user_configs table with JSON configuration storage linked to users | exp: func:upgrade() → None, call:op.create_table, call:sa.Column, call:sa.UUID, call:sa.JSON, call:sa.DateTime, call:sa.text, call:sa.ForeignKeyConstraint, call:sa.PrimaryKeyConstraint, call:sa.UniqueConstraint, func:downgrade() → None, call:op.drop_table | dep: typing, alembic, sqlalchemy -- 0004_tool_types.py | Alembic database migration that creates a tool_types table with metadata, templates, and versioning columns for a tool management system. | exp: func:upgrade() → None, call:op.create_table, call:sa.Column, call:sa.Uuid, call:sa.String, call:sa.Text, call:sa.JSON, call:sa.Boolean, call:sa.ForeignKey, call:sa.DateTime, call:sa.text, func:downgrade() → None, call:op.drop_table | dep: typing, alembic, sqlalchemy +- 0001_initial_schema.py | Creates the initial database schema with five tables (users, ssh_keys, projects, git_repositories, user_configs) using Alembic migrations | exp: func:upgrade() → None, call:op.create_table, call:sa.Column, call:sa.String, call:postgresql.UUID, call:sa.DateTime, call:sa.func.now, call:sa.PrimaryKeyConstraint, call:sa.UniqueConstraint, call:op.create_index, call:op.f, call:sa.Text, call:sa.ForeignKeyConstraint, call:sa.Boolean, call:postgresql.JSONB, func:downgrade() → None, call:op.drop_table, call:op.drop_index, call:op.f | dep: alembic, sqlalchemy.dialects, sqlalchemy, sqlalchemy.dialects.postgresql +- 0002_refresh_tokens.py | Alembic database migration that creates a refresh_tokens table with indexes for user authentication/session management | exp: func:upgrade() → None, call:op.get_bind, call:sa.inspect, call:inspector.has_table, call:op.create_table, call:sa.Column, call:postgresql.UUID, call:sa.String, call:sa.DateTime, call:sa.ForeignKeyConstraint, call:sa.PrimaryKeyConstraint, call:sa.UniqueConstraint, call:inspector.get_indexes, call:op.f, call:op.create_index, func:downgrade() → None, call:op.get_bind, call:sa.inspect, call:inspector.has_table, call:inspector.get_indexes, call:op.f, call:op.drop_index, call:op.drop_table | dep: alembic, sqlalchemy.dialects, sqlalchemy, postgresql dialect +- 0003_user_configs.py | Alembic database migration that creates a user_configs table with JSON configuration storage linked to users via foreign key | exp: func:upgrade() → None, call:op.create_table, call:sa.Column, call:sa.UUID, call:sa.JSON, call:sa.DateTime, call:sa.text, call:sa.ForeignKeyConstraint, call:sa.PrimaryKeyConstraint, call:sa.UniqueConstraint, func:downgrade() → None, call:op.drop_table | dep: typing, alembic, sqlalchemy +- 0004_tool_types.py | Alembic database migration that creates a tool_types table with metadata, templates, and user relationship columns | exp: func:upgrade() → None, call:op.create_table, call:sa.Column, call:sa.Uuid, call:sa.String, call:sa.Text, call:sa.JSON, call:sa.Boolean, call:sa.ForeignKey, call:sa.DateTime, call:sa.text, func:downgrade() → None, call:op.drop_table | dep: typing, alembic, sqlalchemy - 0005_ssh_keys_timestamps.py | Alembic database migration that adds created_at and updated_at timestamp columns to the ssh_keys table | exp: func:upgrade() → None, call:op.add_column, call:sa.Column, call:sa.DateTime, call:sa.text, func:downgrade() → None, call:op.drop_column | dep: typing, alembic, sqlalchemy -- 0006_tool_instances.py | Alembic database migration that creates a tool_instances table with columns for tracking deployed tool instances, their status, container info, and foreign key relationships to tool_types, git_repositories, projects, and users. | exp: func:upgrade() → None, call:op.create_table, call:sa.Column, call:postgresql.UUID, call:sa.text, call:sa.String, call:sa.Integer, call:sa.DateTime, call:sa.ForeignKeyConstraint, call:sa.PrimaryKeyConstraint, call:op.create_index, func:downgrade() → None, call:op.drop_index, call:op.drop_table | dep: typing, alembic, sqlalchemy.dialects, sqlalchemy, sqlalchemy.dialects.postgresql +- 0006_tool_instances.py | Alembic database migration that creates a tool_instances table with UUID primary key, foreign key relationships, timestamps, and indexes for tracking deployed tool instances | exp: func:upgrade() → None, call:op.create_table, call:sa.Column, call:postgresql.UUID, call:sa.text, call:sa.String, call:sa.Integer, call:sa.DateTime, call:sa.ForeignKeyConstraint, call:sa.PrimaryKeyConstraint, call:op.create_index, func:downgrade() → None, call:op.drop_index, call:op.drop_table | dep: typing, alembic, sqlalchemy.dialects, sqlalchemy, postgresql dialect - 0007_instance_container_name.py | Alembic database migration that adds a nullable container_name column to the tool_instances table | exp: func:upgrade() → None, call:op.add_column, call:sa.Column, call:sa.String, func:downgrade() → None, call:op.drop_column | dep: typing, alembic, sqlalchemy -- 0008_tool_type_category.py | Alembic database migration that adds `category` and `interfaces` columns to the `tool_types` table | exp: func:upgrade() → None, call:op.add_column, call:sa.Column, call:sa.String, call:sa.JSON, func:downgrade() → None, call:op.drop_column | dep: typing, alembic, sqlalchemy -- 0009_tool_configs.py | Alembic database migration that creates a tool_configs table with UUID keys, foreign key relationships, and indexes for storing user/project tool configuration settings. | exp: func:upgrade() → None, call:op.create_table, call:sa.Column, call:postgresql.UUID, call:sa.text, call:sa.String, call:sa.Text, call:sa.DateTime, call:sa.ForeignKeyConstraint, call:sa.PrimaryKeyConstraint, call:op.create_index, func:downgrade() → None, call:op.drop_index, call:op.drop_table | dep: typing, alembic, sqlalchemy.dialects, sqlalchemy, postgresql dialect -- 0010_tool_type_default_port.py | Alembic database migration that adds a nullable default_port column to the tool_types table. | exp: func:upgrade() → None, call:op.add_column, call:sa.Column, call:sa.Integer, func:downgrade() → None, call:op.drop_column | dep: typing, alembic, sqlalchemy -- 0011_tool_instance_tunnel_fields.py | Alembic database migration that adds tunnel-related fields (public_url and tunnel_id) to the tool_instances table | exp: func:upgrade() → None, call:op.add_column, call:sa.Column, call:sa.String, func:downgrade() → None, call:op.drop_column | dep: typing, alembic, sqlalchemy -- 0012_default_port_req.py | Alembic database migration that populates null default_port values for existing tool types and then makes the column non-nullable | exp: func:upgrade() → None, call:op.execute, call:op.alter_column, call:sa.Integer, func:downgrade() → None, call:op.alter_column, call:sa.Integer | dep: typing, alembic, sqlalchemy -- 0013_add_config_profiles.py | Alembic database migration that adds config profiles, includes, mounts tables and links tool instances to profiles with defensive idempotent checks | exp: func:_table_exists(table_name: str) → bool, call:sa.inspect(op.get_bind()).has_table, call:op.get_bind, func:_column_exists(table_name: str, column_name: str) → bool, call:_table_exists, call:sa.inspect(op.get_bind()).get_columns, call:op.get_bind, func:_index_exists(table_name: str, index_name: str) → bool, call:_table_exists, call:sa.inspect(op.get_bind()).get_indexes, call:op.get_bind, func:_foreign_key_exists(table_name: str, constrained_columns: list[str], referred_table: str) → bool, call:_table_exists, call:sa.inspect(op.get_bind()).get_foreign_keys, call:op.get_bind, call:foreign_key.get, func:upgrade() → None, call:_table_exists, call:op.create_table, call:sa.Column, call:postgresql.UUID, call:sa.String, call:sa.Text, call:sa.DateTime, call:sa.text, call:sa.ForeignKeyConstraint, call:sa.PrimaryKeyConstraint, call:sa.UniqueConstraint, call:_index_exists, call:op.create_index, call:sa.Integer, call:_column_exists, call:op.add_column, call:_foreign_key_exists, call:op.create_foreign_key, func:downgrade() → None, call:op.drop_index, call:op.drop_constraint, call:op.drop_column, call:op.drop_table | dep: collections.abc, alembic, sqlalchemy.dialects, sqlalchemy, sqlalchemy.dialects.postgresql +- 0008_tool_type_category.py | Alembic database migration that adds 'category' and 'interfaces' columns to the 'tool_types' table | exp: func:upgrade() → None, call:op.add_column, call:sa.Column, call:sa.String, call:sa.JSON, func:downgrade() → None, call:op.drop_column | dep: typing, alembic, sqlalchemy +- 0009_tool_configs.py | Alembic database migration that creates a tool_configs table for storing user tool configuration key-value pairs with optional project scoping | exp: func:upgrade() → None, call:op.create_table, call:sa.Column, call:postgresql.UUID, call:sa.text, call:sa.String, call:sa.Text, call:sa.DateTime, call:sa.ForeignKeyConstraint, call:sa.PrimaryKeyConstraint, call:op.create_index, func:downgrade() → None, call:op.drop_index, call:op.drop_table | dep: typing, alembic, sqlalchemy.dialects, sqlalchemy, sqlalchemy.dialects.postgresql +- 0010_tool_type_default_port.py | Alembic database migration that adds a nullable default_port column to the tool_types table | exp: func:upgrade() → None, call:op.add_column, call:sa.Column, call:sa.Integer, func:downgrade() → None, call:op.drop_column | dep: typing, alembic, sqlalchemy +- 0011_tool_instance_tunnel_fields.py | Alembic database migration that adds public_url and tunnel_id columns to the tool_instances table for tunnel functionality. | exp: func:upgrade() → None, call:op.add_column, call:sa.Column, call:sa.String, func:downgrade() → None, call:op.drop_column | dep: typing, alembic, sqlalchemy +- 0012_default_port_req.py | Alembic database migration that backfills default_port values for existing tool types and makes the column non-nullable | exp: func:upgrade() → None, call:op.execute, call:op.alter_column, call:sa.Integer, func:downgrade() → None, call:op.alter_column, call:sa.Integer | dep: typing, alembic, sqlalchemy +- 0013_add_config_profiles.py | Database migration that adds config profiles, profile includes, profile mounts, and tool instance profile selection tables with defensive idempotent checks | exp: func:_table_exists(table_name: str) → bool, call:sa.inspect(op.get_bind()).has_table, call:op.get_bind, func:_column_exists(table_name: str, column_name: str) → bool, call:_table_exists, call:sa.inspect(op.get_bind()).get_columns, call:op.get_bind, func:_index_exists(table_name: str, index_name: str) → bool, call:_table_exists, call:sa.inspect(op.get_bind()).get_indexes, call:op.get_bind, func:_foreign_key_exists(table_name: str, constrained_columns: list[str], referred_table: str) → bool, call:_table_exists, call:sa.inspect(op.get_bind()).get_foreign_keys, call:op.get_bind, call:foreign_key.get, func:upgrade() → None, call:_table_exists, call:op.create_table, call:sa.Column, call:postgresql.UUID, call:sa.String, call:sa.Text, call:sa.DateTime, call:sa.text, call:sa.ForeignKeyConstraint, call:sa.PrimaryKeyConstraint, call:sa.UniqueConstraint, call:_index_exists, call:op.create_index, call:sa.Integer, call:_column_exists, call:op.add_column, call:_foreign_key_exists, call:op.create_foreign_key, func:downgrade() → None, call:op.drop_index, call:op.drop_constraint, call:op.drop_column, call:op.drop_table | dep: collections.abc, alembic, sqlalchemy.dialects, sqlalchemy, sqlalchemy.dialects.postgresql - 0013_add_probe_result.py | Alembic database migration that adds a JSON probe_result column to the tool_instances table | exp: func:upgrade() → None, call:op.add_column, call:sa.Column, func:downgrade() → None, call:op.drop_column | dep: typing, alembic, sqlalchemy.dialects, sqlalchemy, sqlalchemy.dialects.postgresql -- 0014_add_profile_resolver_fields.py | Alembic database migration that adds profile resolver fields (project_id, tool_type_id, environment_variables, etc.) to config_profiles table and restructures config_mounts table (renaming mount_path to target_path, adding mode/files, removing content/source_profile_id). | exp: func:_table_exists(table_name: str) → bool, call:sa.inspect(op.get_bind()).has_table, call:op.get_bind, func:_column_exists(table_name: str, column_name: str) → bool, call:_table_exists, call:sa.inspect(op.get_bind()).get_columns, call:op.get_bind, func:_index_exists(table_name: str, index_name: str) → bool, call:_table_exists, call:sa.inspect(op.get_bind()).get_indexes, call:op.get_bind, func:_foreign_key_exists(table_name: str, constrained_columns: list[str], referred_table: str) → bool, call:_table_exists, call:sa.inspect(op.get_bind()).get_foreign_keys, call:op.get_bind, call:foreign_key.get, func:_foreign_key_names_for_column(table_name: str, column_name: str) → list[str], call:_table_exists, call:sa.inspect(op.get_bind()).get_foreign_keys, call:op.get_bind, call:foreign_key.get, call:names.append, func:upgrade() → None, call:_column_exists, call:op.add_column, call:sa.Column, call:postgresql.UUID, call:sa.JSON, call:sa.Text, call:sa.Integer, call:sa.Boolean, call:_foreign_key_exists, call:op.create_foreign_key, call:_index_exists, call:op.create_index, call:op.alter_column, call:sa.String, call:_foreign_key_names_for_column, call:op.drop_constraint, call:op.drop_column, func:downgrade() → None, call:op.add_column, call:sa.Column, call:postgresql.UUID, call:sa.Text, call:op.drop_column, call:op.alter_column, call:op.drop_index, call:op.drop_constraint | dep: collections.abc, alembic, sqlalchemy.dialects, sqlalchemy, sqlalchemy.dialects.postgresql -- 0014_merge_heads.py | Alembic merge migration that reconciles two divergent migration branches into a single history line | exp: func:upgrade() → None, func:downgrade() → None | dep: typing, alembic -- 0015_single_interface.py | Alembic database migration that replaces a JSON array `interfaces` column with `interface_type` string and `requires_port` boolean columns in the `tool_types` table, with dialect-specific data migration for PostgreSQL and SQLite. | exp: func:_get_dialect() → str, call:op.get_bind, func:upgrade() → None, call:_get_dialect, call:op.add_column, call:sa.Column, call:sa.String, call:sa.Boolean, call:op.execute, call:op.alter_column, call:op.drop_column, call:op.create_check_constraint, call:sa.text, func:downgrade() → None, call:_get_dialect, call:op.drop_constraint, call:op.add_column, call:sa.Column, call:postgresql.JSONB, call:sa.Text, call:op.execute, call:sa.JSON, call:op.drop_column | dep: typing, alembic, sqlalchemy.dialects, sqlalchemy, postgresql (dialect) -- 069d3da4dc9b_add_ssh_key_id_to_config_profiles.py | Alembic database migration that adds a nullable UUID foreign key column `ssh_key_id` to the `config_profiles` table referencing `ssh_keys.id` with SET NULL on delete | exp: func:upgrade() → None, call:op.add_column, call:sa.Column, call:sa.Uuid, call:sa.ForeignKey, func:downgrade() → None, call:op.drop_column | dep: alembic, sqlalchemy -- 20260527160017_add_pi_agent_tool_type.py | Alembic database migration that adds a new "pi-agent" tool type with terminal-based Docker environment for the Pi coding agent | exp: func:upgrade() → None, call:op.get_bind, call:conn.execute( sa.text("SELECT id FROM tool_types WHERE name = 'pi-agent'") ).fetchone, call:sa.text, call:json.dumps, func:downgrade() → None, call:op.get_bind, call:conn.execute, call:sa.text | dep: json, typing, alembic, uuid, sqlalchemy -- 2026_05_22_add_clone_mode.py | Alembic database migration that adds ssh_key_id foreign key to git_repositories table and clone_mode/branch columns to tool_instances table | exp: func:upgrade() → None, call:op.add_column, call:sa.Column, call:postgresql.UUID, call:op.create_foreign_key, call:sa.String, func:downgrade() → None, call:op.drop_column, call:op.drop_constraint | dep: alembic, sqlalchemy.dialects, sqlalchemy, sqlalchemy.dialects.postgresql -- 2026_05_23_remove_is_builtin.py | Alembic database migration to remove the `is_builtin` column from the `tool_types` table | exp: func:upgrade() → None, call:op.execute, func:downgrade() → None, call:op.add_column, call:sa.Column, call:sa.Boolean | dep: alembic, sqlalchemy +- 0014_add_profile_resolver_fields.py | Alembic database migration that adds profile resolver fields (project_id, tool_type_id, environment_variables, start_command, working_directory, port, is_default) to config_profiles table, renames mount_path to target_path and adds mode/files columns to config_mounts table while removing source_profile_id and content columns | exp: func:_table_exists(table_name: str) → bool, call:sa.inspect(op.get_bind()).has_table, call:op.get_bind, func:_column_exists(table_name: str, column_name: str) → bool, call:_table_exists, call:sa.inspect(op.get_bind()).get_columns, call:op.get_bind, func:_index_exists(table_name: str, index_name: str) → bool, call:_table_exists, call:sa.inspect(op.get_bind()).get_indexes, call:op.get_bind, func:_foreign_key_exists(table_name: str, constrained_columns: list[str], referred_table: str) → bool, call:_table_exists, call:sa.inspect(op.get_bind()).get_foreign_keys, call:op.get_bind, call:foreign_key.get, func:_foreign_key_names_for_column(table_name: str, column_name: str) → list[str], call:_table_exists, call:sa.inspect(op.get_bind()).get_foreign_keys, call:op.get_bind, call:foreign_key.get, call:names.append, func:upgrade() → None, call:_column_exists, call:op.add_column, call:sa.Column, call:postgresql.UUID, call:sa.JSON, call:sa.Text, call:sa.Integer, call:sa.Boolean, call:_foreign_key_exists, call:op.create_foreign_key, call:_index_exists, call:op.create_index, call:op.alter_column, call:sa.String, call:_foreign_key_names_for_column, call:op.drop_constraint, call:op.drop_column, func:downgrade() → None, call:op.add_column, call:sa.Column, call:postgresql.UUID, call:sa.Text, call:op.drop_column, call:op.alter_column, call:op.drop_index, call:op.drop_constraint | dep: collections.abc, alembic, sqlalchemy.dialects, sqlalchemy, sqlalchemy.dialects.postgresql +- 0014_merge_heads.py | Alembic merge migration that combines two divergent migration branches into a single history line | exp: func:upgrade() → None, func:downgrade() → None | dep: typing, alembic +- 0015_single_interface.py | Alembic database migration that replaces a plural JSON interfaces column with singular interface_type and requires_port columns on tool_types table | exp: func:_get_dialect() → str, call:op.get_bind, func:upgrade() → None, call:_get_dialect, call:op.add_column, call:sa.Column, call:sa.String, call:sa.Boolean, call:op.execute, call:op.alter_column, call:op.drop_column, call:op.create_check_constraint, call:sa.text, func:downgrade() → None, call:_get_dialect, call:op.drop_constraint, call:op.add_column, call:sa.Column, call:postgresql.JSONB, call:sa.Text, call:op.execute, call:sa.JSON, call:op.drop_column | dep: typing, alembic, sqlalchemy.dialects, sqlalchemy, sqlalchemy.dialects.postgresql +- 069d3da4dc9b_add_ssh_key_id_to_config_profiles.py | Alembic database migration that adds an ssh_key_id foreign key column to the config_profiles table | exp: func:upgrade() → None, call:op.add_column, call:sa.Column, call:sa.Uuid, call:sa.ForeignKey, func:downgrade() → None, call:op.drop_column | dep: alembic, sqlalchemy +- 20260527160017_add_pi_agent_tool_type.py | Alembic database migration that adds a new "pi-agent" tool type with terminal-based Docker development environment configuration | exp: func:upgrade() → None, call:op.get_bind, call:conn.execute( sa.text("SELECT id FROM tool_types WHERE name = 'pi-agent'") ).fetchone, call:sa.text, call:json.dumps, func:downgrade() → None, call:op.get_bind, call:conn.execute, call:sa.text | dep: json, typing, alembic, uuid, sqlalchemy +- 2026_05_22_add_clone_mode.py | Alembic database migration that adds ssh_key_id foreign key to git_repositories and clone_mode/branch columns to tool_instances | exp: func:upgrade() → None, call:op.add_column, call:sa.Column, call:postgresql.UUID, call:op.create_foreign_key, call:sa.String, func:downgrade() → None, call:op.drop_column, call:op.drop_constraint | dep: alembic, sqlalchemy.dialects, sqlalchemy, sqlalchemy.dialects.postgresql +- 2026_05_23_remove_is_builtin.py | Alembic database migration that removes the `is_builtin` column from the `tool_types` table with downgrade support to restore it. | exp: func:upgrade() → None, call:op.execute, func:downgrade() → None, call:op.add_column, call:sa.Column, call:sa.Boolean | dep: alembic, sqlalchemy - 2026_05_24_220141_add_startup_command.py | Alembic database migration that adds a nullable `startup_command` text column to the `tool_types` table. | exp: func:upgrade() → None, call:op.add_column, call:sa.Column, call:sa.Text, func:downgrade() → None, call:op.drop_column | dep: typing, alembic, sqlalchemy -- 2026_05_24_add_config_profiles.py | Alembic database migration that creates config_profiles and config_profile_includes tables with indexes, and adds a foreign key column to tool_instances for managing user configuration profiles. | exp: func:upgrade() → None, call:op.create_table, call:sa.Column, call:postgresql.UUID, call:sa.text, call:sa.ForeignKey, call:sa.String, call:sa.Text, call:postgresql.JSONB, call:sa.Boolean, call:sa.DateTime, call:sa.PrimaryKeyConstraint, call:sa.UniqueConstraint, call:op.create_index, call:sa.Integer, call:op.add_column, func:downgrade() → None, call:op.drop_index, call:op.drop_column, call:op.drop_table | dep: typing, alembic, sqlalchemy.dialects, sqlalchemy, postgresql dialect +- 2026_05_24_add_config_profiles.py | Alembic database migration that creates config_profiles and config_profile_includes tables with indexes, and adds a selected_config_profile_id foreign key to tool_instances | exp: func:upgrade() → None, call:op.create_table, call:sa.Column, call:postgresql.UUID, call:sa.text, call:sa.ForeignKey, call:sa.String, call:sa.Text, call:postgresql.JSONB, call:sa.Boolean, call:sa.DateTime, call:sa.PrimaryKeyConstraint, call:sa.UniqueConstraint, call:op.create_index, call:sa.Integer, call:op.add_column, func:downgrade() → None, call:op.drop_index, call:op.drop_column, call:op.drop_table | dep: typing, alembic, sqlalchemy.dialects, sqlalchemy, sqlalchemy.dialects.postgresql - 2026_05_26_add_git_mounts.py | Alembic database migration that adds a git_mounts JSON column to the config_profiles table | exp: func:upgrade() → None, call:op.add_column, call:sa.Column, call:sa.JSON, func:downgrade() → None, call:op.drop_column | dep: typing, alembic, sqlalchemy -- 2026_05_27_external_repos.py | Alembic database migration that makes project_id nullable in git_repositories table to support external repositories and expands alembic_version version_num column to 64 characters. | exp: func:upgrade() → None, call:op.execute, call:op.alter_column, call:sa.UUID, func:downgrade() → None, call:op.alter_column, call:sa.UUID, call:op.execute | dep: typing, alembic, sqlalchemy -- 2026_05_28_add_monitoring_tables.py | Alembic database migration that creates monitoring tables (instance_events and health_checks) with indexes for tracking tool instance events and health checks | exp: func:upgrade() → None, call:op.create_table, call:sa.Column, call:sa.Uuid, call:sa.String, call:sa.Text, call:sa.JSON, call:sa.DateTime, call:sa.func.now, call:sa.ForeignKeyConstraint, call:sa.PrimaryKeyConstraint, call:op.create_index, call:sa.Boolean, call:sa.Integer, func:downgrade() → None, call:op.drop_index, call:op.drop_table | dep: collections.abc, alembic, sqlalchemy -- 2026_05_28_add_terminal_sessions_table.py | Alembic database migration that creates a terminal_sessions table with tracking columns and foreign key to tool_instances | exp: func:upgrade() → None, call:op.create_table, call:sa.Column, call:sa.UUID, call:sa.String, call:sa.DateTime, call:sa.text, call:sa.ForeignKeyConstraint, call:sa.PrimaryKeyConstraint, call:op.create_index, call:op.f, func:downgrade() → None, call:op.drop_index, call:op.f, call:op.drop_table | dep: collections.abc, alembic, sqlalchemy -- 2026_05_28_add_tool_definition_manifests.py | Alembic database migration that creates a tool_definition_manifests table, adds manifest support to existing tool_types and tool_instances tables, and seeds initial data with a base Ubuntu image and pi-agent manifest while migrating the legacy pi-agent from Dockerfile templates to the new manifest system. | exp: func:upgrade() → None, call:op.get_bind, call:op.create_table, call:sa.Column, call:sa.UUID, call:sa.String, call:sa.Text, call:sa.JSON, call:sa.Boolean, call:sa.TIMESTAMP, call:sa.func.now, call:sa.PrimaryKeyConstraint, call:sa.UniqueConstraint, call:sa.ForeignKeyConstraint, call:sa.CheckConstraint, call:conn.execute, call:sa.text, call:result.fetchone, call:op.add_column, call:op.create_foreign_key, call:op.drop_constraint, call:op.execute, call:json.dumps, call:str, func:downgrade() → None, call:op.get_bind, call:conn.execute, call:sa.text, call:result.fetchone, call:op.drop_column, call:op.drop_constraint, call:op.drop_table | dep: json, uuid, typing, alembic, sqlalchemy -- 2026_05_28_drop_tool_configs_and_config_folders.py | Alembic database migration that drops `tool_configs` and `config_folders` tables with conditional existence checks and full downgrade recreation | exp: func:upgrade() → None, call:op.get_bind, call:conn.execute, call:sa.text, call:result.fetchone, call:op.drop_table, func:downgrade() → None, call:op.create_table, call:sa.Column, call:sa.UUID, call:sa.String, call:sa.Text, call:sa.JSON, call:sa.Boolean, call:sa.TIMESTAMP, call:sa.func.now, call:sa.PrimaryKeyConstraint, call:sa.Integer | dep: typing, alembic, sqlalchemy -- 2026_05_29_add_notifications_table.py | Alembic database migration that creates a notifications table with user-linked, categorized, severity-graded messages supporting read/dismissed tracking and optimized querying indexes. | exp: func:upgrade() → None, call:op.create_table, call:sa.Column, call:sa.Uuid, call:sa.String, call:sa.Text, call:sa.JSON, call:sa.DateTime, call:sa.func.now, call:sa.ForeignKeyConstraint, call:sa.PrimaryKeyConstraint, call:op.create_index, call:sa.text, func:downgrade() → None, call:op.drop_index, call:op.drop_table | dep: collections.abc, alembic, sqlalchemy -- 2026_05_29_add_ssh_key_ids_to_tool_instances.py | Alembic database migration that adds a JSON column named ssh_key_ids to the tool_instances table | exp: func:upgrade() → None, call:op.add_column, call:sa.Column, call:sa.JSON, func:downgrade() → None, call:op.drop_column | dep: alembic, sqlalchemy +- 2026_05_27_external_repos.py | Alembic database migration that makes project_id nullable in git_repositories to support external repositories and expands alembic_version version_num column to prevent truncation. | exp: func:upgrade() → None, call:op.execute, call:op.alter_column, call:sa.UUID, func:downgrade() → None, call:op.alter_column, call:sa.UUID, call:op.execute | dep: typing, alembic, sqlalchemy +- 2026_05_28_add_monitoring_tables.py | Alembic database migration that creates monitoring tables (instance_events and health_checks) with indexes for tracking tool instance events and health check status. | exp: func:upgrade() → None, call:op.create_table, call:sa.Column, call:sa.Uuid, call:sa.String, call:sa.Text, call:sa.JSON, call:sa.DateTime, call:sa.func.now, call:sa.ForeignKeyConstraint, call:sa.PrimaryKeyConstraint, call:op.create_index, call:sa.Boolean, call:sa.Integer, func:downgrade() → None, call:op.drop_index, call:op.drop_table | dep: collections.abc, alembic, sqlalchemy +- 2026_05_28_add_terminal_sessions_table.py | Alembic database migration that creates a terminal_sessions table with foreign key to tool_instances for tracking terminal session lifecycle | exp: func:upgrade() → None, call:op.create_table, call:sa.Column, call:sa.UUID, call:sa.String, call:sa.DateTime, call:sa.text, call:sa.ForeignKeyConstraint, call:sa.PrimaryKeyConstraint, call:op.create_index, call:op.f, func:downgrade() → None, call:op.drop_index, call:op.f, call:op.drop_table | dep: collections.abc, alembic, sqlalchemy +- 2026_05_28_add_tool_definition_manifests.py | Alembic database migration that creates a tool_definition_manifests table, adds manifest support to tool_types and tool_instances, and migrates the pi-agent tool from Dockerfile/compose templates to a JSON-based manifest system with a base Ubuntu image definition. | exp: func:upgrade() → None, call:op.get_bind, call:op.create_table, call:sa.Column, call:sa.UUID, call:sa.String, call:sa.Text, call:sa.JSON, call:sa.Boolean, call:sa.TIMESTAMP, call:sa.func.now, call:sa.PrimaryKeyConstraint, call:sa.UniqueConstraint, call:sa.ForeignKeyConstraint, call:sa.CheckConstraint, call:conn.execute, call:sa.text, call:result.fetchone, call:op.add_column, call:op.create_foreign_key, call:op.drop_constraint, call:op.execute, call:json.dumps, call:str, func:downgrade() → None, call:op.get_bind, call:conn.execute, call:sa.text, call:result.fetchone, call:op.drop_column, call:op.drop_constraint, call:op.drop_table | dep: json, uuid, typing, alembic, sqlalchemy +- 2026_05_28_drop_tool_configs_and_config_folders.py | Database migration that drops the `tool_configs` and `config_folders` tables with conditional existence checks, and provides downgrade to recreate them. | exp: func:upgrade() → None, call:op.get_bind, call:conn.execute, call:sa.text, call:result.fetchone, call:op.drop_table, func:downgrade() → None, call:op.create_table, call:sa.Column, call:sa.UUID, call:sa.String, call:sa.Text, call:sa.JSON, call:sa.Boolean, call:sa.TIMESTAMP, call:sa.func.now, call:sa.PrimaryKeyConstraint, call:sa.Integer | dep: typing, alembic, sqlalchemy +- 2026_05_29_add_notifications_table.py | Alembic database migration that creates a notifications table with user-linked, categorized, and severity-based notification records including read/dismissed tracking and optimized indexes. | exp: func:upgrade() → None, call:op.create_table, call:sa.Column, call:sa.Uuid, call:sa.String, call:sa.Text, call:sa.JSON, call:sa.DateTime, call:sa.func.now, call:sa.ForeignKeyConstraint, call:sa.PrimaryKeyConstraint, call:op.create_index, call:sa.text, func:downgrade() → None, call:op.drop_index, call:op.drop_table | dep: collections.abc, alembic, sqlalchemy +- 2026_05_29_add_ssh_key_ids_to_tool_instances.py | Alembic database migration that adds a JSON ssh_key_ids column to the tool_instances table | exp: func:upgrade() → None, call:op.add_column, call:sa.Column, call:sa.JSON, func:downgrade() → None, call:op.drop_column | dep: alembic, sqlalchemy - 2026_05_29_drop_ssh_key_id_from_config_profiles.py | Alembic database migration that removes the ssh_key_id column from the config_profiles table | exp: func:upgrade() → None, call:op.drop_column, func:downgrade() → None, call:op.add_column, call:sa.Column, call:sa.Uuid, call:sa.ForeignKey | dep: alembic, sqlalchemy -- 2026_05_29_fix_code_server_bind_addr.py | Alembic database migration that fixes code-server tool type compose templates by replacing deprecated `--bind-addr` flag with `--host` flag | exp: func:upgrade() → None, call:op.get_bind, call:conn.execute( sa.text(""" SELECT id, compose_template FROM tool_types WHERE name = 'code-server' AND compose_template LIKE '%--bind-addr%' """) ).fetchall, call:sa.text, call:compose_template.replace( "--bind-addr 0.0.0.0:8443", "--host 0.0.0.0" ).replace, call:print, func:downgrade() → None | dep: typing, alembic, sqlalchemy -- 2026_05_29_fix_code_server_bind_addr_port.py | Alembic database migration that fixes code-server Docker compose templates and instance files by replacing broken `--host` flags with correct `--bind-addr 0.0.0.0:port` configurations | exp: func:_fix_tool_type_templates(conn) → None, call:conn.execute( sa.text(""" SELECT id, compose_template, default_port FROM tool_types WHERE name = 'code-server' AND compose_template LIKE '%--host%' """) ).fetchall, call:sa.text, call:compose_template.split, call:len, call:line.lstrip, call:new_lines.append, call:"\n".join, call:print, func:_fix_instance_compose_files(conn) → None, call:conn.execute( sa.text(""" SELECT column_name FROM information_schema.columns WHERE table_name = 'tool_instances' AND column_name = 'compose_path' """) ).fetchone, call:sa.text, call:print, call:conn.execute( sa.text(""" SELECT id, compose_path, tool_type_id FROM tool_instances WHERE compose_path IS NOT NULL """) ).fetchall, call:Path, call:path.exists, call:path.read_text, call:conn.execute( sa.text(""" SELECT default_port FROM tool_types WHERE id = :id """), {"id": tool_type_id}, ).fetchone, call:yaml.safe_load, call:data["services"].values, call:path.write_text, call:yaml.dump, func:upgrade() → None, call:op.get_bind, call:_fix_tool_type_templates, call:_fix_instance_compose_files, func:downgrade() → None | dep: typing, alembic, yaml, pathlib, sqlalchemy -- 2026_05_29_fix_web_tool_bind_address.py | Alembic database migration that updates code-server and jupyter-notebook tool type compose templates to bind to 0.0.0.0 | exp: func:_fix_code_server_compose(conn) → None, call:conn.execute( sa.text(""" SELECT id, compose_template, definition_type FROM tool_types WHERE name = 'code-server' """) ).fetchone, call:sa.text, call:compose_template.split, call:enumerate, call:len, call:line.lstrip, call:new_lines.append, call:image_line.lstrip, call:new_lines.index, call:new_lines.insert, call:"\n".join, call:print, func:_fix_jupyter_compose(conn) → None, call:conn.execute( sa.text(""" SELECT id, compose_template, definition_type FROM tool_types WHERE name = 'jupyter-notebook' """) ).fetchone, call:sa.text, call:compose_template.split, call:enumerate, call:new_lines.append, call:len, call:line.lstrip, call:"\n".join, call:print, func:upgrade() → None, call:op.get_bind, call:_fix_code_server_compose, call:_fix_jupyter_compose, func:downgrade() → None | dep: typing, alembic, sqlalchemy -- 2026_05_29_remove_lsio_command_override.py | Alembic database migration that removes broken command overrides containing --bind-addr or --host flags from LinuxServer.io code-server Docker Compose templates in both database tool_types records and on-disk instance compose files. | exp: func:upgrade() → None, call:op.get_bind, call:conn.execute( sa.text(""" SELECT id, compose_template FROM tool_types WHERE name = 'code-server' """) ).fetchall, call:sa.text, call:yaml.safe_load, call:data["services"].values, call:svc.get, call:yaml.dump, call:print, call:conn.execute( sa.text(""" SELECT column_name FROM information_schema.columns WHERE table_name = 'tool_instances' AND column_name = 'compose_path' """) ).fetchone, call:conn.execute( sa.text(""" SELECT id, compose_path FROM tool_instances WHERE compose_path IS NOT NULL """) ).fetchall, call:Path, call:path.exists, call:path.read_text, call:path.write_text, func:downgrade() → None | dep: collections.abc, alembic, yaml, pathlib, sqlalchemy, pathlib.Path, information_schema -- 2026_05_29_remove_ssh_keys_mount_from_manifest.py | Alembic database migration that removes (or restores) the ssh_keys mount from a JSON manifest stored in the tool_definition_manifests table for the pi-agent tool definition. | exp: func:upgrade() → None, call:op.get_bind, call:conn.execute, call:sa.text, call:result.fetchone, call:isinstance, call:json.loads, call:manifest.get, call:len, call:m.get, call:json.dumps, func:downgrade() → None, call:op.get_bind, call:conn.execute, call:sa.text, call:result.fetchone, call:isinstance, call:json.loads, call:manifest.get, call:any, call:m.get, call:mounts.append, call:json.dumps | dep: json, typing, alembic, sqlalchemy -- 2026_06_01_add_workspaces.py | Alembic database migration that creates a workspaces table with foreign keys to git_repositories and users, adds indexes, and adds a workspace_id column to tool_instances | exp: func:upgrade() → None, call:op.create_table, call:sa.Column, call:sa.Uuid, call:sa.String, call:sa.ForeignKey, call:sa.DateTime, call:sa.text, call:sa.UniqueConstraint, call:op.create_index, call:op.add_column, func:downgrade() → None, call:op.drop_index, call:op.drop_column, call:op.drop_table | dep: collections.abc, alembic, sqlalchemy -- 2026_06_13_make_clone_mode_nullable.py | Alembic database migration that makes the `clone_mode` column in `tool_instances` table nullable to support workspace-first cleanup workflow. | exp: func:upgrade() → None, call:op.alter_column, call:sa.String, func:downgrade() → None, call:op.alter_column, call:sa.String | dep: alembic, sqlalchemy -- 2026_06_14_104415_add_tool_type_home_directory.py | Alembic database migration that adds a `home_directory` column to `tool_types` table and updates template strings to use a configurable workspace path instead of hardcoded `/workspace` | exp: func:upgrade() → None, call:op.add_column, call:sa.Column, call:sa.String, call:op.execute, call:sa.update(tool_types) .where(tool_types.c.compose_template.is_not(None)) .values, call:tool_types.c.compose_template.is_not, call:sa.func.replace, call:sa.update(tool_types) .where(tool_types.c.dockerfile_template.is_not(None)) .values, call:tool_types.c.dockerfile_template.is_not, func:downgrade() → None, call:op.execute, call:sa.update(tool_types) .where(tool_types.c.compose_template.is_not(None)) .values, call:tool_types.c.compose_template.is_not, call:sa.func.replace, call:sa.update(tool_types) .where(tool_types.c.dockerfile_template.is_not(None)) .values, call:tool_types.c.dockerfile_template.is_not, call:op.drop_column | dep: typing, alembic, sqlalchemy.sql, sqlalchemy -- 2026_06_14_182955_fix_pi_agent_home_directory_mount.py | Alembic database migration that updates the pi-agent tool definition manifest to mount repositories under the home directory instead of /workspace | exp: func:_find_pi_agent_manifest(conn: sa.Connection) → tuple[Union[str, None], Union[dict, None]], call:conn.execute( sa.select( tool_definition_manifests.c.id, tool_definition_manifests.c.manifest ).where(tool_definition_manifests.c.name == "pi-agent") ).fetchone, call:sa.select( tool_definition_manifests.c.id, tool_definition_manifests.c.manifest ).where, call:dict, func:_update_manifest(conn: sa.Connection, manifest_id: str, manifest: dict) → None, call:conn.execute, call:sa.update(tool_definition_manifests) .where(tool_definition_manifests.c.id == manifest_id) .values, func:upgrade() → None, call:op.get_bind, call:_find_pi_agent_manifest, call:manifest.get, call:mount.get, call:manifest.setdefault, call:_update_manifest, func:downgrade() → None, call:op.get_bind, call:_find_pi_agent_manifest, call:manifest.get, call:mount.get, call:manifest.setdefault, call:_update_manifest | dep: typing, alembic, sqlalchemy.sql, sqlalchemy -- 2026_06_15_090500_remove_pi_agent_explicit_repo_mount.py | Alembic database migration that removes explicit repo mounts from the pi-agent tool definition manifest and synthesizes them via compile_compose instead | exp: func:_find_pi_agent_manifest(conn: sa.Connection) → tuple[Union[str, None], Union[dict, None]], call:conn.execute( sa.select( tool_definition_manifests.c.id, tool_definition_manifests.c.manifest ).where(tool_definition_manifests.c.name == "pi-agent") ).fetchone, call:sa.select( tool_definition_manifests.c.id, tool_definition_manifests.c.manifest ).where, call:dict, func:_update_manifest(conn: sa.Connection, manifest_id: str, manifest: dict) → None, call:conn.execute, call:sa.update(tool_definition_manifests) .where(tool_definition_manifests.c.id == manifest_id) .values, func:upgrade() → None, call:op.get_bind, call:_find_pi_agent_manifest, call:manifest.get, call:mount.get, call:_update_manifest, func:downgrade() → None, call:op.get_bind, call:_find_pi_agent_manifest, call:manifest.setdefault, call:any, call:mount.get, call:mounts.append, call:_update_manifest | dep: typing, alembic, sqlalchemy.sql, sqlalchemy -- 398082499c30_add_tool_config_fields.py | Alembic database migration that adds five new columns (port_override, start_command, working_directory, environment_variables, volumes) to the tool_configs table with a port range check constraint. | exp: func:upgrade() → None, call:op.add_column, call:sa.Column, call:sa.Integer, call:sa.Text, call:postgresql.JSONB, call:op.create_check_constraint, call:sa.text, func:downgrade() → None, call:op.drop_constraint, call:op.drop_column | dep: alembic, sqlalchemy.dialects, sqlalchemy, sqlalchemy.dialects.postgresql -- 6fc7bfcf199f_merge_remove_is_builtin_and_add_config_.py | Alembic database migration that merges two parallel revision branches (removing is_builtin and adding config_profiles) into a single history line | exp: func:upgrade() → None, func:downgrade() → None | dep: alembic +- 2026_05_29_fix_code_server_bind_addr.py | Alembic database migration that fixes code-server tool type compose templates by replacing deprecated --bind-addr flag with --host flag | exp: func:upgrade() → None, call:op.get_bind, call:conn.execute( sa.text(""" SELECT id, compose_template FROM tool_types WHERE name = 'code-server' AND compose_template LIKE '%--bind-addr%' """) ).fetchall, call:sa.text, call:compose_template.replace( "--bind-addr 0.0.0.0:8443", "--host 0.0.0.0" ).replace, call:print, func:downgrade() → None | dep: typing, alembic, sqlalchemy +- 2026_05_29_fix_code_server_bind_addr_port.py | Alembic database migration that fixes code-server Docker compose templates by replacing broken `--host` flags with correct `--bind-addr 0.0.0.0:{port}` configurations in both database tool_type templates and on-disk instance compose files. | exp: func:_fix_tool_type_templates(conn) → None, call:conn.execute( sa.text(""" SELECT id, compose_template, default_port FROM tool_types WHERE name = 'code-server' AND compose_template LIKE '%--host%' """) ).fetchall, call:sa.text, call:compose_template.split, call:len, call:line.lstrip, call:new_lines.append, call:"\n".join, call:print, func:_fix_instance_compose_files(conn) → None, call:conn.execute( sa.text(""" SELECT column_name FROM information_schema.columns WHERE table_name = 'tool_instances' AND column_name = 'compose_path' """) ).fetchone, call:sa.text, call:print, call:conn.execute( sa.text(""" SELECT id, compose_path, tool_type_id FROM tool_instances WHERE compose_path IS NOT NULL """) ).fetchall, call:Path, call:path.exists, call:path.read_text, call:conn.execute( sa.text(""" SELECT default_port FROM tool_types WHERE id = :id """), {"id": tool_type_id}, ).fetchone, call:yaml.safe_load, call:data["services"].values, call:path.write_text, call:yaml.dump, func:upgrade() → None, call:op.get_bind, call:_fix_tool_type_templates, call:_fix_instance_compose_files, func:downgrade() → None | dep: typing, alembic, yaml, pathlib, sqlalchemy +- 2026_05_29_fix_web_tool_bind_address.py | Alembic database migration that fixes code-server and jupyter-notebook tool compose templates to bind to 0.0.0.0 | exp: func:_fix_code_server_compose(conn) → None, call:conn.execute( sa.text(""" SELECT id, compose_template, definition_type FROM tool_types WHERE name = 'code-server' """) ).fetchone, call:sa.text, call:compose_template.split, call:enumerate, call:len, call:line.lstrip, call:new_lines.append, call:image_line.lstrip, call:new_lines.index, call:new_lines.insert, call:"\n".join, call:print, func:_fix_jupyter_compose(conn) → None, call:conn.execute( sa.text(""" SELECT id, compose_template, definition_type FROM tool_types WHERE name = 'jupyter-notebook' """) ).fetchone, call:sa.text, call:compose_template.split, call:enumerate, call:new_lines.append, call:len, call:line.lstrip, call:"\n".join, call:print, func:upgrade() → None, call:op.get_bind, call:_fix_code_server_compose, call:_fix_jupyter_compose, func:downgrade() → None | dep: typing, alembic, sqlalchemy +- 2026_05_29_remove_lsio_command_override.py | Alembic database migration that removes broken command overrides containing --bind-addr or --host flags from LinuxServer.io code-server Docker Compose templates in both database records and on-disk compose files. | exp: func:upgrade() → None, call:op.get_bind, call:conn.execute( sa.text(""" SELECT id, compose_template FROM tool_types WHERE name = 'code-server' """) ).fetchall, call:sa.text, call:yaml.safe_load, call:data["services"].values, call:svc.get, call:yaml.dump, call:print, call:conn.execute( sa.text(""" SELECT column_name FROM information_schema.columns WHERE table_name = 'tool_instances' AND column_name = 'compose_path' """) ).fetchone, call:conn.execute( sa.text(""" SELECT id, compose_path FROM tool_instances WHERE compose_path IS NOT NULL """) ).fetchall, call:Path, call:path.exists, call:path.read_text, call:path.write_text, func:downgrade() → None | dep: collections.abc, alembic, yaml, pathlib, sqlalchemy +- 2026_05_29_remove_ssh_keys_mount_from_manifest.py | Alembic database migration that removes (and can restore) the ssh_keys mount from the pi-agent tool definition manifest stored as JSON | exp: func:upgrade() → None, call:op.get_bind, call:conn.execute, call:sa.text, call:result.fetchone, call:isinstance, call:json.loads, call:manifest.get, call:len, call:m.get, call:json.dumps, func:downgrade() → None, call:op.get_bind, call:conn.execute, call:sa.text, call:result.fetchone, call:isinstance, call:json.loads, call:manifest.get, call:any, call:m.get, call:mounts.append, call:json.dumps | dep: json, typing, alembic, sqlalchemy +- 2026_06_01_add_workspaces.py | Alembic database migration that creates a workspaces table with indexes and adds a workspace_id foreign key to tool_instances | exp: func:upgrade() → None, call:op.create_table, call:sa.Column, call:sa.Uuid, call:sa.String, call:sa.ForeignKey, call:sa.DateTime, call:sa.text, call:sa.UniqueConstraint, call:op.create_index, call:op.add_column, func:downgrade() → None, call:op.drop_index, call:op.drop_column, call:op.drop_table | dep: collections.abc, alembic, sqlalchemy +- 2026_06_13_make_clone_mode_nullable.py | Alembic database migration to make the `clone_mode` column nullable in the `tool_instances` table | exp: func:upgrade() → None, call:op.alter_column, call:sa.String, func:downgrade() → None, call:op.alter_column, call:sa.String | dep: alembic, sqlalchemy +- 2026_06_14_104415_add_tool_type_home_directory.py | Alembic database migration that adds a home_directory column to tool_types table and updates template strings from /workspace to a configurable path | exp: func:upgrade() → None, call:op.add_column, call:sa.Column, call:sa.String, call:op.execute, call:sa.update(tool_types) .where(tool_types.c.compose_template.is_not(None)) .values, call:tool_types.c.compose_template.is_not, call:sa.func.replace, call:sa.update(tool_types) .where(tool_types.c.dockerfile_template.is_not(None)) .values, call:tool_types.c.dockerfile_template.is_not, func:downgrade() → None, call:op.execute, call:sa.update(tool_types) .where(tool_types.c.compose_template.is_not(None)) .values, call:tool_types.c.compose_template.is_not, call:sa.func.replace, call:sa.update(tool_types) .where(tool_types.c.dockerfile_template.is_not(None)) .values, call:tool_types.c.dockerfile_template.is_not, call:op.drop_column | dep: typing, alembic, sqlalchemy.sql, sqlalchemy +- 2026_06_14_182955_fix_pi_agent_home_directory_mount.py | Alembic database migration that updates the pi-agent tool definition manifest to mount repos under the home directory instead of /workspace | exp: func:_find_pi_agent_manifest(conn: sa.Connection) → tuple[Union[str, None], Union[dict, None]], call:conn.execute( sa.select(tool_definition_manifests.c.id, tool_definition_manifests.c.manifest) .where(tool_definition_manifests.c.name == "pi-agent") ).fetchone, call:sa.select(tool_definition_manifests.c.id, tool_definition_manifests.c.manifest) .where, call:dict, func:_update_manifest(conn: sa.Connection, manifest_id: str, manifest: dict) → None, call:conn.execute, call:sa.update(tool_definition_manifests) .where(tool_definition_manifests.c.id == manifest_id) .values, func:upgrade() → None, call:op.get_bind, call:_find_pi_agent_manifest, call:manifest.get, call:mount.get, call:manifest.setdefault, call:_update_manifest, func:downgrade() → None, call:op.get_bind, call:_find_pi_agent_manifest, call:manifest.get, call:mount.get, call:manifest.setdefault, call:_update_manifest | dep: typing, alembic, sqlalchemy.sql, sqlalchemy +- 2026_06_15_090500_remove_pi_agent_explicit_repo_mount.py | Alembic database migration that removes explicit repo mounts from pi-agent tool definition manifests since they are now synthesized by compile_compose | exp: func:_find_pi_agent_manifest(conn: sa.Connection) → tuple[Union[str, None], Union[dict, None]], call:conn.execute( sa.select( tool_definition_manifests.c.id, tool_definition_manifests.c.manifest ).where(tool_definition_manifests.c.name == "pi-agent") ).fetchone, call:sa.select( tool_definition_manifests.c.id, tool_definition_manifests.c.manifest ).where, call:dict, func:_update_manifest(conn: sa.Connection, manifest_id: str, manifest: dict) → None, call:conn.execute, call:sa.update(tool_definition_manifests) .where(tool_definition_manifests.c.id == manifest_id) .values, func:upgrade() → None, call:op.get_bind, call:_find_pi_agent_manifest, call:manifest.get, call:mount.get, call:_update_manifest, func:downgrade() → None, call:op.get_bind, call:_find_pi_agent_manifest, call:manifest.setdefault, call:any, call:mount.get, call:mounts.append, call:_update_manifest | dep: typing, alembic, sqlalchemy.sql, sqlalchemy +- 398082499c30_add_tool_config_fields.py | Alembic database migration that adds configuration fields (port_override, start_command, working_directory, environment_variables, volumes) to the tool_configs table with a port range check constraint. | exp: func:upgrade() → None, call:op.add_column, call:sa.Column, call:sa.Integer, call:sa.Text, call:postgresql.JSONB, call:op.create_check_constraint, call:sa.text, func:downgrade() → None, call:op.drop_constraint, call:op.drop_column | dep: alembic, sqlalchemy.dialects, sqlalchemy, sqlalchemy.dialects.postgresql +- 6fc7bfcf199f_merge_remove_is_builtin_and_add_config_.py | Alembic database migration that merges two branches (removing is_builtin and adding config_profiles) with no actual schema changes | exp: func:upgrade() → None, func:downgrade() → None | dep: alembic - 86cec91fdb00_merge_profile_resolver_and_workspaces_.py | Alembic database migration that merges two divergent migration branches (profile resolver and workspaces) into a single head | exp: func:upgrade() → None, func:downgrade() → None | dep: alembic -- 8c6d1dbd4798_remove_pi_config_and_state_mounts_from_.py | Alembic database migration that removes or restores pi_state and pi_config mounts from the pi-agent manifest stored in tool_definition_manifests table | exp: func:_load_manifest(manifest_json), call:isinstance, call:json.loads, func:upgrade() → None, call:op.get_bind, call:conn.execute, call:sa.text, call:result.fetchone, call:_load_manifest, call:manifest.get, call:len, call:m.get, call:json.dumps, func:downgrade() → None, call:op.get_bind, call:conn.execute, call:sa.text, call:result.fetchone, call:_load_manifest, call:manifest.get, call:m.get, call:mounts.append, call:json.dumps | dep: json, alembic, sqlalchemy -- 8ed7dd80973d_create_config_folders_table.py | Alembic database migration that creates a config_folders table with user-owned configuration folders supporting JSONB file storage and project overrides | exp: func:upgrade() → None, call:op.create_table, call:sa.Column, call:postgresql.UUID, call:sa.text, call:sa.ForeignKey, call:sa.String, call:sa.Text, call:postgresql.JSONB, call:sa.Boolean, call:sa.DateTime, call:sa.UniqueConstraint, call:op.create_index, func:downgrade() → None, call:op.drop_index, call:op.drop_table | dep: alembic, sqlalchemy.dialects, sqlalchemy, sqlalchemy.dialects.postgresql +- 8c6d1dbd4798_remove_pi_config_and_state_mounts_from_.py | Alembic database migration that removes pi_state and pi_config mounts from the pi-agent manifest in upgrade, and restores them in downgrade | exp: func:_load_manifest(manifest_json), call:isinstance, call:json.loads, func:upgrade() → None, call:op.get_bind, call:conn.execute, call:sa.text, call:result.fetchone, call:_load_manifest, call:manifest.get, call:len, call:m.get, call:json.dumps, func:downgrade() → None, call:op.get_bind, call:conn.execute, call:sa.text, call:result.fetchone, call:_load_manifest, call:manifest.get, call:m.get, call:mounts.append, call:json.dumps | dep: json, alembic, sqlalchemy +- 8ed7dd80973d_create_config_folders_table.py | Creates a database migration that adds a config_folders table for storing user configuration folders with JSONB metadata, foreign key relationships, and indexing. | exp: func:upgrade() → None, call:op.create_table, call:sa.Column, call:postgresql.UUID, call:sa.text, call:sa.ForeignKey, call:sa.String, call:sa.Text, call:postgresql.JSONB, call:sa.Boolean, call:sa.DateTime, call:sa.UniqueConstraint, call:op.create_index, func:downgrade() → None, call:op.drop_index, call:op.drop_table | dep: alembic, sqlalchemy.dialects, sqlalchemy, postgresql dialect - af8512103d67_add_tool_type_fields.py | Alembic database migration that adds new columns (definition_type, dockerfile_template, build_context, readiness_probe) to the tool_types table with a CHECK constraint on definition_type. | exp: func:upgrade() → None, call:op.add_column, call:sa.Column, call:sa.String, call:sa.Text, call:postgresql.JSONB, call:op.create_check_constraint, call:sa.text, func:downgrade() → None, call:op.drop_constraint, call:op.drop_column | dep: alembic, sqlalchemy.dialects, sqlalchemy, sqlalchemy.dialects.postgresql -- f3d2dc90ba3a_merge_single_interface_and_clone_mode.py | Alembic database migration that merges two prior revisions (single_interface and clone_mode) into a single migration path | exp: func:upgrade() → None, func:downgrade() → None | dep: typing, alembic -- fc8f1a20cbf6_merge_home_directory_and_pi_agent_mount_.py | Alembic database migration that merges two divergent migration branches (home directory cleanup and pi agent mount cleanup) into a single revision history | exp: func:upgrade() → None, func:downgrade() → None | dep: alembic +- f3d2dc90ba3a_merge_single_interface_and_clone_mode.py | Alembic database migration that merges two parent revisions (single_interface and clone_mode) into a single branch point with no actual schema changes | exp: func:upgrade() → None, func:downgrade() → None | dep: typing, alembic +- fc8f1a20cbf6_merge_home_directory_and_pi_agent_mount_.py | Alembic database migration that merges two branch heads (home directory and pi agent mount cleanup) into a single revision point | exp: func:upgrade() → None, func:downgrade() → None | dep: alembic ## arch -Linear and branched migration history using Alembic's revision system with merge points to reconcile divergent branches; migrations use declarative SQLAlchemy operations with defensive idempotent checks, conditional existence guards, dialect-specific handling (PostgreSQL/SQLite), and in-place data migrations for template/schema evolution. +Linear migration history with branching/merge resolution pattern; each migration is an immutable, timestamped or sequenced script containing declarative SQLAlchemy operations (create_table, add_column, drop_column) with bidirectional upgrade/downgrade functions; includes data migrations, idempotent guards, and cross-references to on-disk file mutations. ## tags -column, table, call:op.drop, alembic, downgrade, upgrade, key, call:sa.text +column, table, call:op.drop, downgrade, upgrade, alembic, key, call:sa.text ## symbols - upgrade - downgrade @@ -76,7 +76,5 @@ column, table, call:op.drop, alembic, downgrade, upgrade, key, call:sa.text read: 2026_05_24_220141_add_startup_command.py, 2026_05_29_remove_lsio_command_override.py - change versions config read: 0003_user_configs.py, 0009_tool_configs.py, 0013_add_config_profiles.py -- explore versions subdirectories - index: apps/api/alembic/versions/.ruff_cache/.pi-map.index.md ## dirty - diff --git a/apps/api/src/.pi-map.index.md b/apps/api/src/.pi-map.index.md index 9112d64..e4eb045 100644 --- a/apps/api/src/.pi-map.index.md +++ b/apps/api/src/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/src ## role -Core application package for the Headquarter API, handling configuration, database connectivity, logging infrastructure, and FastAPI application lifecycle. +Core backend API package for the "Headquarter API" FastAPI application, handling configuration, database setup, logging, and application bootstrap. ## parent index: apps/api/.pi-map.index.md map: apps/api/.pi-map.md @@ -13,9 +13,6 @@ map: apps/api/.pi-map.md - apps/api/src/auth index: apps/api/src/auth/.pi-map.index.md map: apps/api/src/auth/.pi-map.md -- apps/api/src/headquarter_api.egg-info - index: apps/api/src/headquarter_api.egg-info/.pi-map.index.md - map: apps/api/src/headquarter_api.egg-info/.pi-map.md - apps/api/src/models index: apps/api/src/models/.pi-map.index.md map: apps/api/src/models/.pi-map.md @@ -49,6 +46,6 @@ map: apps/api/src/.pi-map.md - change src config read: config.py, logging_config.py - explore src subdirectories - index: apps/api/src/api/.pi-map.index.md, apps/api/src/auth/.pi-map.index.md, apps/api/src/headquarter_api.egg-info/.pi-map.index.md + index: apps/api/src/api/.pi-map.index.md, apps/api/src/auth/.pi-map.index.md, apps/api/src/models/.pi-map.index.md ## dirty - diff --git a/apps/api/src/.pi-map.md b/apps/api/src/.pi-map.md index 6300dca..d69ec3e 100644 --- a/apps/api/src/.pi-map.md +++ b/apps/api/src/.pi-map.md @@ -4,17 +4,17 @@ dir: apps/api/src index: apps/api/src/.pi-map.index.md ## role -Core application package for the Headquarter API, handling configuration, database connectivity, logging infrastructure, and FastAPI application lifecycle. +Core backend API package for the "Headquarter API" FastAPI application, handling configuration, database setup, logging, and application bootstrap. ## files - __init__.py | Marks the directory as a Python package for the Headquarter API. -- config.py | Defines application configuration settings with environment-based overrides using Pydantic, including database URLs, service domains, OAuth/Authentik integration, JWT/session settings, and computed properties for environment-specific behavior. | exp: class:Settings, func:build_database_url(user: str, password: str, host: str, port: int, database: str) → str | dep: pydantic, pydantic_settings -- database.py | Sets up async SQLAlchemy database engine and session factory, with retry logic for database connectivity testing and Alembic migration execution via subprocess. | exp: func:init_database(max_retries, retry_delay) → bool, call:range, call:engine.connect, call:test_conn.execute, call:text, call:test_conn.close, call:logger.info, call:asyncio.get_event_loop().run_in_executor, call:subprocess.run, call:os.path.dirname, call:os.path.abspath, call:logger.debug, call:logger.error, call:asyncio.sleep, call:str(exc).lower, call:logger.warning | dep: asyncio, logging, os, subprocess, sqlalchemy.ext.asyncio, sqlalchemy.pool, src.config, sqlalchemy -- logging_config.py | Configures structured JSON logging with correlation ID injection, custom formatters, and HTTP request/exception middleware for a FastAPI application. | exp: class:CorrelationIdFilter, method:filter(self, record: logging.LogRecord) → bool, call:get_correlation_id, class:JSONFormatter, method:format(self, record: logging.LogRecord) → str, call:self.formatTime, call:record.getMessage, call:getattr, call:self.formatException, call:json.dumps, method:formatTime(self, record: logging.LogRecord, datefmt) → str, call:time.strftime, call:time.gmtime, class:RequestLoggingMiddleware, method:dispatch(self, request: Request, call_next: Callable) → Response, call:time.time, call:logger.info, call:call_next, call:int, call:logger.error, call:type, call:traceback.format_exc, class:ExceptionLoggingMiddleware, method:dispatch(self, request: Request, call_next: Callable) → Response, call:call_next, call:logger.critical, call:traceback.format_exc, func:configure_logging(level) → None, call:JSONFormatter, call:logging.StreamHandler, call:console_handler.setFormatter, call:console_handler.addFilter, call:CorrelationIdFilter, call:root_logger.setLevel, call:logging.getLogger("uvicorn").setLevel, call:logging.getLogger("uvicorn.access").setLevel, call:logging.getLogger("sqlalchemy.engine").setLevel, call:logger.info, call:logging.getLevelName | dep: json, logging, sys, time, traceback, collections.abc, fastapi, starlette.middleware.base, src.services.shared.correlation -- main.py | Initializes and configures a FastAPI application for the "Headquarter API" with database setup, middleware, routing, and background services. | exp: func:_sanitize_validation_errors(errors), call:error.get, call:str, call:ctx.items, call:isinstance, call:type, call:sanitized.append, func:validation_exception_handler(request: Request, exc: RequestValidationError), call:exc.errors, call:logger.warning, call:_sanitize_validation_errors, call:JSONResponse, func:on_startup(), call:logger.info, call:init_database, call:logger.error, call:sys.exit, call:_health_monitor.start, call:seed_builtin_tool_types, func:on_shutdown(), call:logger.info, call:_health_monitor.stop | dep: logging, os, fastapi, fastapi.exceptions, fastapi.middleware.cors, fastapi.responses, fastapi.staticfiles, src.api.config, src.api.project, src.api.system, src.api.tool, src.api.user, src.api.workspace, src.config, src.models, src.database, src.logging_config, src.seeds.builtin_tool_types, src.services.instance, src.services.shared, sys, src.api.* +- config.py | Defines application configuration settings with environment variable loading, database URL construction, and computed properties for service URLs and security settings. | exp: class:Settings, func:build_database_url(user: str, password: str, host: str, port: int, database: str) → str | dep: pydantic, pydantic_settings +- database.py | Sets up an async SQLAlchemy database engine with retry logic and runs Alembic migrations via subprocess to initialize the database. | exp: func:init_database(max_retries, retry_delay) → bool, call:range, call:engine.connect, call:test_conn.execute, call:text, call:test_conn.close, call:logger.info, call:asyncio.get_event_loop().run_in_executor, call:subprocess.run, call:os.path.dirname, call:os.path.abspath, call:logger.debug, call:logger.error, call:asyncio.sleep, call:str(exc).lower, call:logger.warning | dep: asyncio, logging, os, subprocess, sqlalchemy.ext.asyncio, sqlalchemy.pool, src.config, sqlalchemy +- logging_config.py | Configures structured JSON logging with correlation ID injection, request/response logging middleware, and exception handling for a FastAPI application. | exp: class:CorrelationIdFilter, method:filter(self, record: logging.LogRecord) → bool, call:get_correlation_id, class:JSONFormatter, method:format(self, record: logging.LogRecord) → str, call:self.formatTime, call:record.getMessage, call:getattr, call:self.formatException, call:json.dumps, method:formatTime(self, record: logging.LogRecord, datefmt) → str, call:time.strftime, call:time.gmtime, class:RequestLoggingMiddleware, method:dispatch(self, request: Request, call_next: Callable) → Response, call:time.time, call:logger.info, call:call_next, call:int, call:logger.error, call:type, call:traceback.format_exc, class:ExceptionLoggingMiddleware, method:dispatch(self, request: Request, call_next: Callable) → Response, call:call_next, call:logger.critical, call:traceback.format_exc, func:configure_logging(level) → None, call:JSONFormatter, call:logging.StreamHandler, call:console_handler.setFormatter, call:console_handler.addFilter, call:CorrelationIdFilter, call:root_logger.setLevel, call:logging.getLogger("uvicorn").setLevel, call:logging.getLogger("uvicorn.access").setLevel, call:logging.getLogger("sqlalchemy.engine").setLevel, call:logger.info, call:logging.getLevelName | dep: json, logging, sys, time, traceback, collections.abc, fastapi, starlette.middleware.base, src.services.shared.correlation, starlette +- main.py | Bootstraps a FastAPI application called "Headquarter API" with database initialization, health monitoring, CORS, logging middleware, and modular API routers. | exp: func:_sanitize_validation_errors(errors), call:error.get, call:str, call:ctx.items, call:isinstance, call:type, call:sanitized.append, func:validation_exception_handler(request: Request, exc: RequestValidationError), call:exc.errors, call:logger.warning, call:_sanitize_validation_errors, call:JSONResponse, func:on_startup(), call:logger.info, call:init_database, call:logger.error, call:sys.exit, call:_health_monitor.start, call:seed_builtin_tool_types, func:on_shutdown(), call:logger.info, call:_health_monitor.stop | dep: logging, os, fastapi, fastapi.exceptions, fastapi.middleware.cors, fastapi.responses, fastapi.staticfiles, src.api.config, src.api.project, src.api.system, src.api.tool, src.api.user, src.api.workspace, src.config, src.models, src.database, src.logging_config, src.seeds.builtin_tool_types, src.services.instance, src.services.shared, sys, src.api ## arch -Layered architecture with Pydantic-based settings management, async SQLAlchemy with Alembic migrations, structured JSON logging with correlation ID tracking, and modular FastAPI initialization with middleware pipeline. +Layered architecture with separation of concerns across config (settings/env), database (async SQLAlchemy with Alembic migrations), logging (structured JSON with middleware), and main (app composition with modular routers and health monitoring). ## tags -src, database, logging, call:logger.info, api, middleware, fastapi, filter +src, logging, database, api, call:logger.info, middleware, fastapi, filter ## symbols - Settings - CorrelationIdFilter @@ -30,6 +30,6 @@ src, database, logging, call:logger.info, api, middleware, fastapi, filter - change src config read: config.py, logging_config.py - explore src subdirectories - index: apps/api/src/api/.pi-map.index.md, apps/api/src/auth/.pi-map.index.md, apps/api/src/headquarter_api.egg-info/.pi-map.index.md + index: apps/api/src/api/.pi-map.index.md, apps/api/src/auth/.pi-map.index.md, apps/api/src/models/.pi-map.index.md ## dirty - diff --git a/apps/api/src/api/.pi-map.index.md b/apps/api/src/api/.pi-map.index.md index d65e3e2..e74be8d 100644 --- a/apps/api/src/api/.pi-map.index.md +++ b/apps/api/src/api/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/src/api ## role -Defines the API routing package and shared validation utilities for the REST API layer. +Provides shared Pydantic validators and package initialization for API schema validation across the API layer. ## parent index: apps/api/src/.pi-map.index.md map: apps/api/src/.pi-map.md diff --git a/apps/api/src/api/.pi-map.md b/apps/api/src/api/.pi-map.md index cd5d5e1..a79e792 100644 --- a/apps/api/src/api/.pi-map.md +++ b/apps/api/src/api/.pi-map.md @@ -4,14 +4,14 @@ dir: apps/api/src/api index: apps/api/src/api/.pi-map.index.md ## role -Defines the API routing package and shared validation utilities for the REST API layer. +Provides shared Pydantic validators and package initialization for API schema validation across the API layer. ## files - __init__.py | Marks the directory as a Python package for API routers. -- shared_validators.py | Provides reusable Pydantic validator functions for API schema validation including mount paths, files, environment variables, and volume mounts. | exp: func:validate_mount_path(v: str | None) → str | None, call:v.startswith, raise:ValueError, func:validate_files(v: dict | None, max_size_bytes) → dict | None, call:v.items, call:path.startswith, call:len, call:content.encode, raise:ValueError, func:validate_env_vars(v: dict | None) → dict | None, call:isinstance, raise:ValueError, func:validate_volumes(v: list | None) → list | None, call:isinstance, call:enumerate, raise:ValueError +- shared_validators.py | Provides reusable Pydantic validators for API schema fields including mount paths, file dictionaries, environment variables, and volume mounts. | exp: func:validate_mount_path(v: str | None) → str | None, call:v.startswith, raise:ValueError, func:validate_files(v: dict | None, max_size_bytes) → dict | None, call:v.items, call:path.startswith, call:len, call:content.encode, raise:ValueError, func:validate_env_vars(v: dict | None) → dict | None, call:isinstance, raise:ValueError, func:validate_volumes(v: list | None) → list | None, call:isinstance, call:enumerate, raise:ValueError ## arch -Modular package structure with reusable Pydantic validators for cross-cutting API schema concerns. +Utility module pattern with reusable cross-cutting Pydantic validators for common API field types (mount paths, files, env vars, volumes). ## tags -validate, raise:value, error, call:isinstance, mount, api, init, path +validate, raise:value, error, call:isinstance, validators, mount, api, init ## symbols - validate_mount_path - validate_files diff --git a/apps/api/src/api/config/.pi-map.index.md b/apps/api/src/api/config/.pi-map.index.md index 780c15a..089ecf8 100644 --- a/apps/api/src/api/config/.pi-map.index.md +++ b/apps/api/src/api/config/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/src/api/config ## role -Provides FastAPI API endpoints for managing user configuration settings and configuration profiles. +Provides FastAPI API endpoints for managing user configuration settings and config profiles. ## parent index: apps/api/src/api/.pi-map.index.md map: apps/api/src/api/.pi-map.md diff --git a/apps/api/src/api/config/.pi-map.md b/apps/api/src/api/config/.pi-map.md index 44666cf..a01b19e 100644 --- a/apps/api/src/api/config/.pi-map.md +++ b/apps/api/src/api/config/.pi-map.md @@ -4,15 +4,15 @@ dir: apps/api/src/api/config index: apps/api/src/api/config/.pi-map.index.md ## role -Provides FastAPI API endpoints for managing user configuration settings and configuration profiles. +Provides FastAPI API endpoints for managing user configuration settings and config profiles. ## files -- __init__.py | Aggregates and exports configuration-related API routers for the config module. | dep: src.api.config.config_profiles, src.api.config.user_config -- config_profiles.py | FastAPI router providing CRUD endpoints for user config profiles with includes, resolution, defaults, and git URL validation | exp: func:list_config_profiles(project_id, tool_type_id, current_user_id, session), call:select(ConfigProfile) .where(ConfigProfile.user_id == user_uuid) .options, call:selectinload, call:uuid.UUID, call:conditions.append, call:ConfigProfile.project_id.is_, call:ConfigProfile.tool_type_id.is_, call:query.where, call:or_, call:session.execute, call:result.scalars().all, call:profile_to_response, func:create_config_profile(data: ConfigProfileCreate, current_user_id, session), call:create_profile, call:logger.debug, call:profile_to_response, func:get_config_profile(profile_id: str, current_user_id, session), call:get_profile_with_includes, call:uuid.UUID, call:profile_to_response, raise:HTTPException, func:update_config_profile(profile_id: str, data: ConfigProfileUpdate, current_user_id, session), call:get_profile_with_includes, call:uuid.UUID, call:update_profile, call:logger.debug, call:profile_to_response, raise:HTTPException, func:delete_config_profile(profile_id: str, current_user_id, session), call:get_profile_with_includes, call:uuid.UUID, call:session.delete, call:session.commit, call:logger.debug, raise:HTTPException, func:update_profile_includes_endpoint(profile_id: str, data: ConfigProfileIncludeUpdate, current_user_id, session), call:get_profile_with_includes, call:uuid.UUID, call:update_includes, call:session.execute, call:select(ConfigProfileInclude).where, call:inc_result.scalars().all, call:logger.debug, call:profile_to_response, call:list, raise:HTTPException, func:preview_config_profile(profile_id: str, current_user_id, session), call:get_profile_with_includes, call:uuid.UUID, call:resolve_profile, call:resolved_profile_to_dict, raise:HTTPException, func:resolve_default_profile_endpoint(project_id, tool_type_id, current_user_id, session), call:resolve_default_profile, call:uuid.UUID, func:get_default_profiles_endpoint(user_id, session) → dict, call:session.execute, call:select(UserConfig).where, call:result.scalar_one_or_none, func:set_default_profiles_endpoint(data: DefaultProfilesUpdate, user_id, session) → dict, call:validate_default_profiles, call:get_or_create_user_config, call:session.commit, call:session.refresh, func:get_default_profile_for_tool_type_endpoint(tool_type_id: str, user_id, session) → dict, call:session.execute, call:select(UserConfig).where, call:result.scalar_one_or_none, call:user_config.default_profiles.get, func:validate_git_url_endpoint(data: ValidateGitUrlRequest, current_user_id, session) → ValidateGitUrlResponse, call:validate_git_url | dep: logging, uuid, fastapi, sqlalchemy, sqlalchemy.ext.asyncio, sqlalchemy.orm, src.auth.dependencies, src.models, src.schemas.config, src.services.config.config_profile_resolver, src.services.config.crud_service, src.services.config.resolver_service -- user_config.py | Provides FastAPI endpoints to get and update the current user's configuration settings, creating a default config if none exists. | exp: func:_get_or_create_config(session: AsyncSession, user_id: uuid.UUID) → UserConfig, call:session.execute, call:select(UserConfig).where, call:result.scalar_one_or_none, call:UserConfig, call:session.add, call:session.commit, call:session.refresh, func:get_user_config(user_id, session) → UserConfigResponse, call:_get_user, call:_get_or_create_config, call:UserConfigResponse.model_validate, func:update_user_config(data: UserConfigUpdate, user_id, session) → UserConfigResponse, call:_get_user, call:_get_or_create_config, call:data.model_dump, call:logger.debug, call:session.commit, call:session.refresh, call:UserConfigResponse.model_validate | dep: logging, uuid, fastapi, sqlalchemy, sqlalchemy.ext.asyncio, src.auth.dependencies, src.models, src.schemas.user +- __init__.py | Aggregates and exports config-related API routers for module-level access | dep: src.api.config.config_profiles, src.api.config.user_config +- config_profiles.py | FastAPI router providing CRUD endpoints for user-owned config profiles with include resolution, default profile management, and git URL validation. | exp: func:list_config_profiles(project_id, tool_type_id, current_user_id, session), call:select(ConfigProfile) .where(ConfigProfile.user_id == user_uuid) .options, call:selectinload, call:uuid.UUID, call:conditions.append, call:ConfigProfile.project_id.is_, call:ConfigProfile.tool_type_id.is_, call:query.where, call:or_, call:session.execute, call:result.scalars().all, call:profile_to_response, func:create_config_profile(data: ConfigProfileCreate, current_user_id, session), call:create_profile, call:logger.debug, call:profile_to_response, func:get_config_profile(profile_id: str, current_user_id, session), call:get_profile_with_includes, call:uuid.UUID, call:profile_to_response, raise:HTTPException, func:update_config_profile(profile_id: str, data: ConfigProfileUpdate, current_user_id, session), call:get_profile_with_includes, call:uuid.UUID, call:update_profile, call:logger.debug, call:profile_to_response, raise:HTTPException, func:delete_config_profile(profile_id: str, current_user_id, session), call:get_profile_with_includes, call:uuid.UUID, call:session.delete, call:session.commit, call:logger.debug, raise:HTTPException, func:update_profile_includes_endpoint(profile_id: str, data: ConfigProfileIncludeUpdate, current_user_id, session), call:get_profile_with_includes, call:uuid.UUID, call:update_includes, call:session.execute, call:select(ConfigProfileInclude).where, call:inc_result.scalars().all, call:logger.debug, call:profile_to_response, call:list, raise:HTTPException, func:preview_config_profile(profile_id: str, current_user_id, session), call:get_profile_with_includes, call:uuid.UUID, call:resolve_profile, call:resolved_profile_to_dict, raise:HTTPException, func:resolve_default_profile_endpoint(project_id, tool_type_id, current_user_id, session), call:resolve_default_profile, call:uuid.UUID, func:get_default_profiles_endpoint(user_id, session) → dict, call:session.execute, call:select(UserConfig).where, call:result.scalar_one_or_none, func:set_default_profiles_endpoint(data: DefaultProfilesUpdate, user_id, session) → dict, call:validate_default_profiles, call:get_or_create_user_config, call:session.commit, call:session.refresh, func:get_default_profile_for_tool_type_endpoint(tool_type_id: str, user_id, session) → dict, call:session.execute, call:select(UserConfig).where, call:result.scalar_one_or_none, call:user_config.default_profiles.get, func:validate_git_url_endpoint(data: ValidateGitUrlRequest, current_user_id, session) → ValidateGitUrlResponse, call:validate_git_url | dep: logging, uuid, fastapi, sqlalchemy, sqlalchemy.ext.asyncio, sqlalchemy.orm, src.auth.dependencies, src.models, src.schemas.config, src.services.config.config_profile_resolver, src.services.config.crud_service, src.services.config.resolver_service +- user_config.py | Provides FastAPI endpoints for retrieving and updating user configuration settings with automatic record creation. | exp: func:_get_or_create_config(session: AsyncSession, user_id: uuid.UUID) → UserConfig, call:session.execute, call:select(UserConfig).where, call:result.scalar_one_or_none, call:UserConfig, call:session.add, call:session.commit, call:session.refresh, func:get_user_config(user_id, session) → UserConfigResponse, call:_get_user, call:_get_or_create_config, call:UserConfigResponse.model_validate, func:update_user_config(data: UserConfigUpdate, user_id, session) → UserConfigResponse, call:_get_user, call:_get_or_create_config, call:data.model_dump, call:logger.debug, call:session.commit, call:session.refresh, call:UserConfigResponse.model_validate | dep: logging, uuid, fastapi, sqlalchemy, sqlalchemy.ext.asyncio, src.auth.dependencies, src.models, src.schemas.user ## arch -Modular FastAPI router pattern with separate route modules for distinct resource domains (user config vs config profiles), each implementing standard CRUD operations with validation and default initialization logic. +Modular router-based architecture using FastAPI with separate route modules for distinct config domains (profiles vs. user settings), CRUD patterns, and include resolution for hierarchical config. ## tags -config, profile, get, user, includes, call:uuid.uuid, or, default +config, profile, get, user, call:uuid.uuid, includes, or, default ## symbols - list_config_profiles - create_config_profile diff --git a/apps/api/src/api/project/.pi-map.index.md b/apps/api/src/api/project/.pi-map.index.md index 55ccfa4..955ee45 100644 --- a/apps/api/src/api/project/.pi-map.index.md +++ b/apps/api/src/api/project/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/src/api/project ## role -Provides FastAPI REST API endpoints for project and Git repository management, serving as the HTTP interface layer for the project's core domain operations. +Provides FastAPI REST API endpoints for project and Git repository management, exposing CRUD operations and version control functionality to API consumers. ## parent index: apps/api/src/api/.pi-map.index.md map: apps/api/src/api/.pi-map.md diff --git a/apps/api/src/api/project/.pi-map.md b/apps/api/src/api/project/.pi-map.md index 7587fed..43d95ae 100644 --- a/apps/api/src/api/project/.pi-map.md +++ b/apps/api/src/api/project/.pi-map.md @@ -4,13 +4,13 @@ dir: apps/api/src/api/project index: apps/api/src/api/project/.pi-map.index.md ## role -Provides FastAPI REST API endpoints for project and Git repository management, serving as the HTTP interface layer for the project's core domain operations. +Provides FastAPI REST API endpoints for project and Git repository management, exposing CRUD operations and version control functionality to API consumers. ## files -- __init__.py | Aggregates and exports project-related API routers from submodules. | dep: src.api.project.git_repositories, src.api.project.projects -- git_repositories.py | Implements FastAPI REST endpoints for managing Git repositories, including CRUD operations, SSH key management, file browsing, branch operations, and git commands (clone, commit, push, pull, merge, etc.) for both project-scoped and external repositories. | exp: func:_get_repo(session: AsyncSession, user_id: uuid.UUID, project_id: uuid.UUID, repo_id: uuid.UUID) → GitRepository, call:_get_user, call:_get_owned_project, call:session.get, raise:HTTPException, func:_get_repo_on_disk(session: AsyncSession, user_id: uuid.UUID, project_id: uuid.UUID, repo_id: uuid.UUID) → GitRepository, call:_get_repo, call:os.path.exists, raise:HTTPException, func:_parse_remote_url(remote_url: str | None, force_original: bool) → str | None, call:parse_git_url, call:parse_result.get, raise:HTTPException, func:_commit_author(session: AsyncSession, user_id: uuid.UUID) → tuple[str, str], call:_get_user, func:list_user_repositories(user_id, session) → list[GitRepository], call:session.execute, call:select(GitRepository).where, call:list, call:result.scalars().all, func:parse_repository_url(data: URLParseRequest) → URLParseResponse, call:URLParseResponse, call:parse_git_url, func:create_external_repository(data: GitRepositoryCreate, user_id, session) → GitRepository, call:_get_user, call:session.execute, call:select(GitRepository).where, call:GitRepository.project_id.is_, call:existing.scalar_one_or_none, call:_parse_remote_url, call:uuid.UUID, call:session.get, call:preflight_remote_repository, call:session.add, call:session.flush, call:clone_working_repository, call:session.rollback, call:init_working_repository, call:session.commit, raise:HTTPException, func:list_repositories(project_id: uuid.UUID, user_id, session) → list[GitRepository], call:_get_user, call:_get_owned_project, call:session.execute, call:select(GitRepository).where, call:list, call:result.scalars().all, func:delete_repository(project_id: uuid.UUID, repo_id: uuid.UUID, user_id, session) → Response, call:_get_repo, call:os.path.exists, call:shutil.rmtree, call:session.delete, call:session.commit, call:Response, func:create_repository(project_id: uuid.UUID, data: GitRepositoryCreate, user_id, session) → GitRepository, call:_get_user, call:_get_owned_project, call:session.execute, call:select(GitRepository).where, call:existing.scalar_one_or_none, call:_parse_remote_url, call:uuid.UUID, call:session.get, call:preflight_remote_repository, call:get_repo_path, call:os.makedirs, call:os.path.dirname, call:clone_working_repository, call:init_working_repository, call:GitRepository, call:session.add, call:session.commit, call:session.refresh, raise:HTTPException, func:update_repository_ssh_key(project_id: uuid.UUID, repo_id: uuid.UUID, data: UpdateSSHKeyRequest, user_id, session) → GitRepository, call:_get_repo, call:uuid.UUID, call:session.get, call:session.commit, call:session.refresh, raise:HTTPException, func:get_repository_history(project_id: uuid.UUID, repo_id: uuid.UUID, view, branch, limit, offset, user_id, session) → dict, call:_get_repo_on_disk, call:get_commit_history, raise:HTTPException, func:get_repository_commit(project_id: uuid.UUID, repo_id: uuid.UUID, commit_hash: str, user_id, session) → dict, call:_get_repo_on_disk, call:get_commit_detail, raise:HTTPException, func:list_repository_files(project_id: uuid.UUID, repo_id: uuid.UUID, branch, path, user_id, session) → FileListResponse, call:_get_repo_on_disk, call:list_tree, call:FileListResponse, call:logger.error, call:str, raise:HTTPException, func:get_repository_file_content(project_id: uuid.UUID, repo_id: uuid.UUID, branch: str, path: str, user_id, session) → FileContentResponse, call:_get_repo_on_disk, call:get_file_content, call:FileContentResponse, raise:HTTPException, func:get_repository_branches(project_id: uuid.UUID, repo_id: uuid.UUID, user_id, session) → BranchesResponse, call:_get_repo, call:os.path.isdir, call:os.path.join, call:os.path.isfile, call:list_branches, call:BranchesResponse, call:logger.error, call:str, call:session.get, call:list_remote_branches, raise:HTTPException, func:update_repository_file(project_id: uuid.UUID, repo_id: uuid.UUID, data: FileUpdateRequest, user_id, session) → FileUpdateResponse, call:_get_repo_on_disk, call:_commit_author, call:commit_file, call:FileUpdateResponse, raise:HTTPException, func:get_repository_status(project_id: uuid.UUID, repo_id: uuid.UUID, user_id, session) → StatusResponse, call:_get_repo_on_disk, call:get_status, call:StatusResponse, raise:HTTPException, func:create_repository_branch(project_id: uuid.UUID, repo_id: uuid.UUID, data: BranchCreateRequest, user_id, session) → dict, call:_get_repo_on_disk, call:create_branch, raise:HTTPException, func:delete_repository_branch(project_id: uuid.UUID, repo_id: uuid.UUID, branch_name: str, force, user_id, session) → dict, call:_get_repo_on_disk, call:delete_branch, raise:HTTPException, func:checkout_repository_branch(project_id: uuid.UUID, repo_id: uuid.UUID, data: CheckoutRequest, user_id, session) → dict, call:_get_repo_on_disk, call:checkout_branch, raise:HTTPException, func:commit_repository_changes(project_id: uuid.UUID, repo_id: uuid.UUID, data: CommitRequest, user_id, session) → CommitResponse, call:_get_repo_on_disk, call:_commit_author, call:commit_changes, call:CommitResponse, raise:HTTPException, func:fetch_repository(project_id: uuid.UUID, repo_id: uuid.UUID, user_id, session) → FetchResponse, call:_get_repo_on_disk, call:fetch, call:FetchResponse, raise:HTTPException, func:pull_repository(project_id: uuid.UUID, repo_id: uuid.UUID, branch, user_id, session) → PullResponse, call:_get_repo_on_disk, call:pull, call:PullResponse, raise:HTTPException, func:push_repository(project_id: uuid.UUID, repo_id: uuid.UUID, branch, user_id, session) → PushResponse, call:_get_repo_on_disk, call:push, call:PushResponse, raise:HTTPException, func:merge_repository_branches(project_id: uuid.UUID, repo_id: uuid.UUID, data: MergeRequest, user_id, session) → MergeResponse, call:_get_repo_on_disk, call:merge, call:MergeResponse, raise:HTTPException | dep: logging, os, shutil, uuid, fastapi, sqlalchemy, sqlalchemy.ext.asyncio, src.auth.dependencies, src.models, src.schemas.project.git_repository, src.services.git.operations, src.utils.git_control, src.utils.git_files, src.utils.git_history, src.utils.git_url_parser -- projects.py | Implements FastAPI REST endpoints for CRUD operations on projects, including nested repository/workspace listing and filesystem cleanup on deletion. | exp: func:create_project(data: ProjectCreate, user_id, session) → Project, call:_get_user, call:Project, call:session.add, call:session.commit, call:session.refresh, func:list_projects(user_id, session) → list[dict], call:_get_user, call:session.execute, call:select(Project) .where(Project.owner_id == user.id) .order_by, call:Project.created_at.desc, call:result.scalars().all, call:select(GitRepository).where, call:repos_result.scalars().all, call:select(Workspace).where, call:ws_result.scalars().all, call:select(func.count()).where, call:func.count, call:inst_result.scalar, call:workspaces.append, call:str, call:repositories.append, call:enriched.append, call:project.created_at.isoformat, func:get_project(project_id: uuid.UUID, user_id, session) → Project, call:_get_user, call:_get_owned_project, func:update_project(project_id: uuid.UUID, data: ProjectUpdate, user_id, session) → Project, call:_get_user, call:_get_owned_project, call:session.commit, call:session.refresh, func:delete_project(project_id: uuid.UUID, user_id, session) → Response, call:_get_user, call:_get_owned_project, call:session.execute, call:select(GitRepository).where, call:result.scalars().all, call:os.path.exists, call:shutil.rmtree, call:session.delete, call:session.commit, call:Response, func:set_default_ssh_key(project_id: uuid.UUID, data: SetDefaultSSHKeyRequest, user_id, session) → Project, call:_get_user, call:_get_owned_project, call:session.get, call:session.commit, call:session.refresh, raise:HTTPException | dep: os, shutil, uuid, fastapi, sqlalchemy, sqlalchemy.ext.asyncio, src.auth.dependencies, src.models, src.models.project, src.schemas.project +- __init__.py | Aggregates and exports project-related API routers from submodules for package-level access. | dep: src.api.project.git_repositories, src.api.project.projects +- git_repositories.py | Provides FastAPI REST endpoints for managing Git repositories, including CRUD operations, SSH key management, file operations, branch management, and commit history within projects. | exp: func:_get_repo(session: AsyncSession, user_id: uuid.UUID, project_id: uuid.UUID, repo_id: uuid.UUID) → GitRepository, call:_get_user, call:_get_owned_project, call:session.get, raise:HTTPException, func:_get_repo_on_disk(session: AsyncSession, user_id: uuid.UUID, project_id: uuid.UUID, repo_id: uuid.UUID) → GitRepository, call:_get_repo, call:os.path.exists, raise:HTTPException, func:_parse_remote_url(remote_url: str | None, force_original: bool) → str | None, call:parse_git_url, call:parse_result.get, raise:HTTPException, func:_commit_author(session: AsyncSession, user_id: uuid.UUID) → tuple[str, str], call:_get_user, func:list_user_repositories(user_id, session) → list[GitRepository], call:session.execute, call:select(GitRepository).where, call:list, call:result.scalars().all, func:parse_repository_url(data: URLParseRequest) → URLParseResponse, call:URLParseResponse, call:parse_git_url, func:create_external_repository(data: GitRepositoryCreate, user_id, session) → GitRepository, call:_get_user, call:session.execute, call:select(GitRepository).where, call:GitRepository.project_id.is_, call:existing.scalar_one_or_none, call:_parse_remote_url, call:uuid.UUID, call:session.get, call:preflight_remote_repository, call:session.add, call:session.flush, call:clone_working_repository, call:session.rollback, call:init_working_repository, call:session.commit, raise:HTTPException, func:list_repositories(project_id: uuid.UUID, user_id, session) → list[GitRepository], call:_get_user, call:_get_owned_project, call:session.execute, call:select(GitRepository).where, call:list, call:result.scalars().all, func:delete_repository(project_id: uuid.UUID, repo_id: uuid.UUID, user_id, session) → Response, call:_get_repo, call:os.path.exists, call:shutil.rmtree, call:session.delete, call:session.commit, call:Response, func:create_repository(project_id: uuid.UUID, data: GitRepositoryCreate, user_id, session) → GitRepository, call:_get_user, call:_get_owned_project, call:session.execute, call:select(GitRepository).where, call:existing.scalar_one_or_none, call:_parse_remote_url, call:uuid.UUID, call:session.get, call:preflight_remote_repository, call:get_repo_path, call:os.makedirs, call:os.path.dirname, call:clone_working_repository, call:init_working_repository, call:GitRepository, call:session.add, call:session.commit, call:session.refresh, raise:HTTPException, func:update_repository_ssh_key(project_id: uuid.UUID, repo_id: uuid.UUID, data: UpdateSSHKeyRequest, user_id, session) → GitRepository, call:_get_repo, call:uuid.UUID, call:session.get, call:session.commit, call:session.refresh, raise:HTTPException, func:get_repository_history(project_id: uuid.UUID, repo_id: uuid.UUID, view, branch, limit, offset, user_id, session) → dict, call:_get_repo_on_disk, call:get_commit_history, raise:HTTPException, func:get_repository_commit(project_id: uuid.UUID, repo_id: uuid.UUID, commit_hash: str, user_id, session) → dict, call:_get_repo_on_disk, call:get_commit_detail, raise:HTTPException, func:list_repository_files(project_id: uuid.UUID, repo_id: uuid.UUID, branch, path, user_id, session) → FileListResponse, call:_get_repo_on_disk, call:list_tree, call:FileListResponse, call:logger.error, call:str, raise:HTTPException, func:get_repository_file_content(project_id: uuid.UUID, repo_id: uuid.UUID, branch: str, path: str, user_id, session) → FileContentResponse, call:_get_repo_on_disk, call:get_file_content, call:FileContentResponse, raise:HTTPException, func:get_repository_branches(project_id: uuid.UUID, repo_id: uuid.UUID, user_id, session) → BranchesResponse, call:_get_repo, call:os.path.isdir, call:os.path.join, call:os.path.isfile, call:list_branches, call:BranchesResponse, call:logger.error, call:str, call:session.get, call:list_remote_branches, raise:HTTPException, func:update_repository_file(project_id: uuid.UUID, repo_id: uuid.UUID, data: FileUpdateRequest, user_id, session) → FileUpdateResponse, call:_get_repo_on_disk, call:_commit_author, call:commit_file, call:FileUpdateResponse, raise:HTTPException, func:get_repository_status(project_id: uuid.UUID, repo_id: uuid.UUID, user_id, session) → StatusResponse, call:_get_repo_on_disk, call:get_status, call:StatusResponse, raise:HTTPException, func:create_repository_branch(project_id: uuid.UUID, repo_id: uuid.UUID, data: BranchCreateRequest, user_id, session) → dict, call:_get_repo_on_disk, call:create_branch, raise:HTTPException, func:delete_repository_branch(project_id: uuid.UUID, repo_id: uuid.UUID, branch_name: str, force, user_id, session) → dict, call:_get_repo_on_disk, call:delete_branch, raise:HTTPException, func:checkout_repository_branch(project_id: uuid.UUID, repo_id: uuid.UUID, data: CheckoutRequest, user_id, session) → dict, call:_get_repo_on_disk, call:checkout_branch, raise:HTTPException, func:commit_repository_changes(project_id: uuid.UUID, repo_id: uuid.UUID, data: CommitRequest, user_id, session) → CommitResponse, call:_get_repo_on_disk, call:_commit_author, call:commit_changes, call:CommitResponse, raise:HTTPException, func:fetch_repository(project_id: uuid.UUID, repo_id: uuid.UUID, user_id, session) → FetchResponse, call:_get_repo_on_disk, call:fetch, call:FetchResponse, raise:HTTPException, func:pull_repository(project_id: uuid.UUID, repo_id: uuid.UUID, branch, user_id, session) → PullResponse, call:_get_repo_on_disk, call:pull, call:PullResponse, raise:HTTPException, func:push_repository(project_id: uuid.UUID, repo_id: uuid.UUID, branch, user_id, session) → PushResponse, call:_get_repo_on_disk, call:push, call:PushResponse, raise:HTTPException, func:merge_repository_branches(project_id: uuid.UUID, repo_id: uuid.UUID, data: MergeRequest, user_id, session) → MergeResponse, call:_get_repo_on_disk, call:merge, call:MergeResponse, raise:HTTPException | dep: logging, os, shutil, uuid, fastapi, sqlalchemy, sqlalchemy.ext.asyncio, src.auth.dependencies, src.models, src.schemas.project.git_repository, src.services.git.operations, src.utils.git_control, src.utils.git_files, src.utils.git_history, src.utils.git_url_parser +- projects.py | Defines FastAPI REST endpoints for CRUD operations on projects, including nested repository/workspace listing and SSH key management. | exp: func:create_project(data: ProjectCreate, user_id, session) → Project, call:_get_user, call:Project, call:session.add, call:session.commit, call:session.refresh, func:list_projects(user_id, session) → list[dict], call:_get_user, call:session.execute, call:select(Project) .where(Project.owner_id == user.id) .order_by, call:Project.created_at.desc, call:result.scalars().all, call:select(GitRepository).where, call:repos_result.scalars().all, call:select(Workspace).where, call:ws_result.scalars().all, call:select(func.count()).where, call:func.count, call:inst_result.scalar, call:workspaces.append, call:str, call:repositories.append, call:enriched.append, call:project.created_at.isoformat, func:get_project(project_id: uuid.UUID, user_id, session) → Project, call:_get_user, call:_get_owned_project, func:update_project(project_id: uuid.UUID, data: ProjectUpdate, user_id, session) → Project, call:_get_user, call:_get_owned_project, call:session.commit, call:session.refresh, func:delete_project(project_id: uuid.UUID, user_id, session) → Response, call:_get_user, call:_get_owned_project, call:session.execute, call:select(GitRepository).where, call:result.scalars().all, call:os.path.exists, call:shutil.rmtree, call:session.delete, call:session.commit, call:Response, func:set_default_ssh_key(project_id: uuid.UUID, data: SetDefaultSSHKeyRequest, user_id, session) → Project, call:_get_user, call:_get_owned_project, call:session.get, call:session.commit, call:session.refresh, raise:HTTPException | dep: os, shutil, uuid, fastapi, sqlalchemy, sqlalchemy.ext.asyncio, src.auth.dependencies, src.models, src.models.project, src.schemas.project ## arch -Modular router-based architecture using FastAPI with separate modules for distinct resource domains (projects vs. git repositories), each implementing full CRUD plus specialized operations, aggregated via __init__.py for centralized router registration. +Modular FastAPI router organization with separate modules for related endpoint groups (projects vs. git_repositories), using standard REST patterns with nested resource paths. ## tags get, call:, repository, raise:httpexception, repo, on, disk, project ## symbols diff --git a/apps/api/src/api/system/.pi-map.index.md b/apps/api/src/api/system/.pi-map.index.md index f6e68ad..66b4778 100644 --- a/apps/api/src/api/system/.pi-map.index.md +++ b/apps/api/src/api/system/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/src/api/system ## role -Provides system-level API endpoints for monitoring, administration, and infrastructure interaction including dashboards, health checks, event streaming, notifications, and container terminal access. +Provides system-level API endpoints for monitoring, administration, and operational infrastructure including health checks, dashboards, real-time events, notifications, and container terminal access. ## parent index: apps/api/src/api/.pi-map.index.md map: apps/api/src/api/.pi-map.md diff --git a/apps/api/src/api/system/.pi-map.md b/apps/api/src/api/system/.pi-map.md index e5f2fc5..f674ca5 100644 --- a/apps/api/src/api/system/.pi-map.md +++ b/apps/api/src/api/system/.pi-map.md @@ -4,19 +4,19 @@ dir: apps/api/src/api/system index: apps/api/src/api/system/.pi-map.index.md ## role -Provides system-level API endpoints for monitoring, administration, and infrastructure interaction including dashboards, health checks, event streaming, notifications, and container terminal access. +Provides system-level API endpoints for monitoring, administration, and operational infrastructure including health checks, dashboards, real-time events, notifications, and container terminal access. ## files -- __init__.py | Aggregates and re-exports system API router modules from submodules for centralized access. | dep: src.api.system.dashboard, src.api.system.events, src.api.system.health, src.api.system.instance_proxy, src.api.system.notifications, src.api.system.terminal -- dashboard.py | Provides a FastAPI endpoint that returns a dashboard summary with aggregated counts of projects, repositories, SSH keys, and recent activity for the authenticated user. | exp: func:get_dashboard_summary(user_id, session) → dict, call:session.execute, call:select(func.count()).select_from(Project).where, call:func.count, call:projects_result.scalar, call:select(func.count()).select_from(GitRepository).where, call:repos_result.scalar, call:select(func.count()).select_from(SSHKey).where, call:ssh_keys_result.scalar, call:select(Project) .where(Project.owner_id == user_id) .order_by(Project.created_at.desc()) .limit, call:Project.created_at.desc, call:recent_projects.scalars().all | dep: uuid, fastapi, sqlalchemy, sqlalchemy.ext.asyncio, src.auth.dependencies, src.models, src.models.project, src.models (GitRepository, Project, SSHKey) -- events.py | Implements an SSE streaming endpoint that delivers instance events to authenticated users with per-user connection limits and keep-alive pings. | exp: func:events_stream(request: Request, user_id) → StreamingResponse, call:_connection_counts.get, call:InstanceEventBus, call:asyncio.Queue, call:queue.put_nowait, call:contextlib.suppress, call:queue.get_nowait, call:event_bus.subscribe, call:asyncio.wait_for, call:queue.get, call:json.dumps, call:unsubscribe, call:max, call:_connection_counts.pop, call:StreamingResponse, call:event_generator, raise:HTTPException, func:event_generator() → AsyncGenerator[str, None], call:InstanceEventBus, call:asyncio.Queue, call:queue.put_nowait, call:contextlib.suppress, call:queue.get_nowait, call:event_bus.subscribe, call:asyncio.wait_for, call:queue.get, call:json.dumps, call:unsubscribe, call:max, call:_connection_counts.get, call:_connection_counts.pop, func:on_event(payload: InstanceEventPayload) → None, call:queue.put_nowait, call:contextlib.suppress, call:queue.get_nowait | dep: asyncio, contextlib, json, uuid, collections.abc, fastapi, fastapi.responses, src.auth.dependencies, src.services.instance.event_bus -- health.py | Implements FastAPI health check endpoints for monitoring system status including database connectivity and disk space. | exp: func:health_check() → dict[str, Any], call:HealthChecks, call:time_module.perf_counter, call:SessionLocal, call:session.execute, call:text, call:DatabaseHealth, call:round, call:shutil.disk_usage, call:DiskHealth, call:HealthResponse( status=overall_status, timestamp=datetime.now(timezone.utc).isoformat().replace("+00:00", "Z"), version="0.1.0", checks=checks, uptime_seconds=round(time.time() - _start_time, 2), ).model_dump, call:datetime.now(timezone.utc).isoformat().replace, call:time.time, func:health_check_db() → dict[str, Any], call:time_module.perf_counter, call:SessionLocal, call:session.execute, call:text, call:DatabaseHealthResponse( status="healthy", response_time_ms=round(db_time, 2), ).model_dump, call:round, call:DatabaseHealthResponse( status="unhealthy", response_time_ms=0.0, ).model_dump | dep: time, datetime, typing, fastapi, sqlalchemy, src.database, src.schemas.system, shutil -- instance_proxy.py | Proxies HTTP requests from FastAPI endpoints to running containerized tool instances after verifying ownership and status. | exp: func:_proxy_request(request: Request, instance_id: uuid.UUID, path: str, user_id: uuid.UUID, session: AsyncSession) → Response, call:session.get, call:str, call:request.headers.items, call:key.lower, call:httpx.AsyncClient, call:request.body, call:client.request, call:logger.error, call:dict, call:response_headers.pop, call:Response, raise:HTTPException, func:proxy_to_instance(request: Request, instance_id: uuid.UUID, path, user_id, session) → Response, call:_proxy_request | dep: logging, uuid, httpx, fastapi, sqlalchemy.ext.asyncio, src.auth.dependencies, src.models -- notifications.py | Defines FastAPI REST endpoints for managing user notifications (list, unread count, mark read, dismiss/clear) with support for muted categories from user config. | exp: class:NotificationItem, class:NotificationListResponse, class:UnreadCountResponse, class:MarkAllReadResponse, class:ClearAllResponse, func:_get_mute_categories(session: AsyncSession, user_id: uuid.UUID) → list[str], call:session.execute, call:select(UserConfig).where, call:result.scalar_one_or_none, call:config.config.get, call:isinstance, func:list_notifications(limit, offset, unread_only, user, session) → NotificationListResponse, call:_get_mute_categories, call:notification_service.list_notifications, call:NotificationListResponse, call:NotificationItem.model_validate, func:get_unread_count(user, session) → UnreadCountResponse, call:notification_service.get_unread_count, call:UnreadCountResponse, func:mark_notification_read(notification_id: uuid.UUID, user, session) → NotificationItem, call:notification_service.mark_read, call:NotificationItem.model_validate, raise:HTTPException, func:mark_all_read(user, session) → MarkAllReadResponse, call:notification_service.mark_all_read, call:MarkAllReadResponse, func:clear_all_notifications(user, session) → ClearAllResponse, call:notification_service.dismiss_all, call:ClearAllResponse, func:dismiss_notification(notification_id: uuid.UUID, user, session) → None, call:notification_service.dismiss, raise:HTTPException | dep: uuid, datetime, fastapi, pydantic, sqlalchemy.ext.asyncio, src.auth.dependencies, src.models.user, src.models, src.services.shared.notification_service, sqlalchemy -- terminal.py | Provides WebSocket and HTTP endpoints for managing interactive terminal sessions attached to running Docker container tool instances, including session creation, attachment, input/output streaming, resize/reset control messages, and session listing. | exp: class:SessionRef, method:__init__(self, session, slot_session_id), func:terminal_websocket_default(websocket: WebSocket, instance_id: str, db_session) → None, call:_handle_terminal_websocket, func:terminal_websocket_specific(websocket: WebSocket, instance_id: str, session_id: str, db_session) → None, call:_handle_terminal_websocket, func:_handle_terminal_websocket(websocket: WebSocket, instance_id: str, target_session_id: str | None, db_session: AsyncSession) → None, call:logger.debug, call:websocket.accept, call:uuid.UUID, call:logger.error, call:websocket.close, call:_get_user_from_websocket, call:logger.warning, call:db_session.get, call:get_container_status, call:terminal_manager.get_or_create_session, call:terminal_manager.get_session, call:logger.info, call:terminal_manager.create_session, call:terminal_manager._find_key_by_internal_id, call:terminal_manager.attach_websocket, call:websocket.send_json, call:SessionRef, call:asyncio.create_task, call:_write_loop, call:_heartbeat_loop, call:asyncio.wait, call:len, call:task.cancel, call:str, call:suppress, call:terminal_manager.detach_websocket, func:_write_loop(session_ref: SessionRef, websocket, instance_id: str) → None, call:session.is_alive, call:asyncio.sleep, call:websocket.receive, call:session.write_input, call:text.startswith, call:json.loads, call:ctrl.get, call:logger.debug, call:session.resize, call:session.acknowledge_data, call:websocket.send_json, call:terminal_manager.reset_session, call:terminal_manager.attach_websocket, call:text.encode, func:_heartbeat_loop(websocket: WebSocket) → None, call:asyncio.sleep, call:websocket.send_json, func:_get_terminal_instance(instance_id: uuid.UUID, user_id: uuid.UUID, db_session: AsyncSession) → ToolInstance, call:db_session.get, raise:HTTPException, func:list_terminal_sessions(instance_id: uuid.UUID, user_id, db_session) → dict, call:_get_terminal_instance, call:db_session.execute, call:select(TerminalSessionModel) .where(TerminalSessionModel.instance_id == instance_id) .where(TerminalSessionModel.status != "closed") .order_by, call:TerminalSessionModel.created_at.asc, call:result.scalars().all, call:terminal_manager.get_session, call:str, call:sessions.append, call:live_session.has_websockets, call:row.created_at.isoformat, call:row.last_activity_at.isoformat, func:create_terminal_session(instance_id: uuid.UUID, data: dict, user_id, db_session) → dict, call:_get_terminal_instance, call:db_session.get, call:data.get, call:terminal_manager.create_session, raise:HTTPException, func:close_terminal_session(instance_id: uuid.UUID, session_id: str, user_id, db_session) → dict, call:_get_terminal_instance, call:terminal_manager._find_key_by_internal_id, call:str, call:terminal_manager.get_session, call:terminal_manager.close_session, raise:HTTPException, func:reset_specific_terminal_session(instance_id: uuid.UUID, session_id: str, user_id, db_session) → dict, call:_get_terminal_instance, call:terminal_manager._find_key_by_internal_id, call:str, call:terminal_manager.get_session, call:db_session.get, call:terminal_manager.reset_session, raise:HTTPException, func:rename_terminal_session(instance_id: uuid.UUID, session_id: str, data: dict, user_id, db_session) → dict, call:_get_terminal_instance, call:data.get, call:isinstance, call:terminal_manager.get_session, call:str, call:db_session.get, call:uuid.UUID, call:db_session.commit, raise:HTTPException, func:reset_terminal_session(instance_id: uuid.UUID, user_id, db_session) → dict, call:_get_terminal_instance, call:db_session.get, call:terminal_manager.reset_session, call:logger.info, call:str, call:logger.error, raise:HTTPException, func:_get_user_from_websocket(websocket: WebSocket, db_session: AsyncSession) → uuid.UUID | None, call:websocket.cookies.get, call:Settings, call:decode_session_cookie, call:uuid.UUID, call:str | dep: asyncio, json, logging, uuid, contextlib, fastapi, sqlalchemy, sqlalchemy.ext.asyncio, starlette.websockets, src.auth.dependencies, src.models, src.services.terminal.terminal_manager, src.services.docker, src.auth.session, src.config, starlette +- __init__.py | Aggregates and re-exports system API routers from submodules for centralized access. | dep: src.api.system.dashboard, src.api.system.events, src.api.system.health, src.api.system.instance_proxy, src.api.system.notifications, src.api.system.terminal +- dashboard.py | Provides a FastAPI endpoint that returns a dashboard summary with counts of projects, repositories, SSH keys, and recent activity for the authenticated user. | exp: func:get_dashboard_summary(user_id, session) → dict, call:session.execute, call:select(func.count()).select_from(Project).where, call:func.count, call:projects_result.scalar, call:select(func.count()).select_from(GitRepository).where, call:repos_result.scalar, call:select(func.count()).select_from(SSHKey).where, call:ssh_keys_result.scalar, call:select(Project) .where(Project.owner_id == user_id) .order_by(Project.created_at.desc()) .limit, call:Project.created_at.desc, call:recent_projects.scalars().all | dep: uuid, fastapi, sqlalchemy, sqlalchemy.ext.asyncio, src.auth.dependencies, src.models, src.models.project +- events.py | Implements an SSE streaming endpoint that broadcasts instance events to authenticated users with per-user connection limits and backpressure handling. | exp: func:events_stream(request: Request, user_id) → StreamingResponse, call:_connection_counts.get, call:InstanceEventBus, call:asyncio.Queue, call:queue.put_nowait, call:contextlib.suppress, call:queue.get_nowait, call:event_bus.subscribe, call:asyncio.wait_for, call:queue.get, call:json.dumps, call:unsubscribe, call:max, call:_connection_counts.pop, call:StreamingResponse, call:event_generator, raise:HTTPException, func:event_generator() → AsyncGenerator[str, None], call:InstanceEventBus, call:asyncio.Queue, call:queue.put_nowait, call:contextlib.suppress, call:queue.get_nowait, call:event_bus.subscribe, call:asyncio.wait_for, call:queue.get, call:json.dumps, call:unsubscribe, call:max, call:_connection_counts.get, call:_connection_counts.pop, func:on_event(payload: InstanceEventPayload) → None, call:queue.put_nowait, call:contextlib.suppress, call:queue.get_nowait | dep: asyncio, contextlib, json, uuid, collections.abc, fastapi, fastapi.responses, src.auth.dependencies, src.services.instance.event_bus +- health.py | Provides FastAPI health check endpoints that monitor database connectivity, disk space, and system uptime with performance timing. | exp: func:health_check() → dict[str, Any], call:HealthChecks, call:time_module.perf_counter, call:SessionLocal, call:session.execute, call:text, call:DatabaseHealth, call:round, call:shutil.disk_usage, call:DiskHealth, call:HealthResponse( status=overall_status, timestamp=datetime.now(timezone.utc).isoformat().replace("+00:00", "Z"), version="0.1.0", checks=checks, uptime_seconds=round(time.time() - _start_time, 2), ).model_dump, call:datetime.now(timezone.utc).isoformat().replace, call:time.time, func:health_check_db() → dict[str, Any], call:time_module.perf_counter, call:SessionLocal, call:session.execute, call:text, call:DatabaseHealthResponse( status="healthy", response_time_ms=round(db_time, 2), ).model_dump, call:round, call:DatabaseHealthResponse( status="unhealthy", response_time_ms=0.0, ).model_dump | dep: time, datetime, typing, fastapi, sqlalchemy, src.database, src.schemas.system, shutil +- instance_proxy.py | HTTP proxy router that forwards incoming requests to running containerized tool instances after verifying ownership and instance status. | exp: func:_proxy_request(request: Request, instance_id: uuid.UUID, path: str, user_id: uuid.UUID, session: AsyncSession) → Response, call:session.get, call:str, call:request.headers.items, call:key.lower, call:httpx.AsyncClient, call:request.body, call:client.request, call:logger.error, call:dict, call:response_headers.pop, call:Response, raise:HTTPException, func:proxy_to_instance(request: Request, instance_id: uuid.UUID, path, user_id, session) → Response, call:_proxy_request | dep: logging, uuid, httpx, fastapi, sqlalchemy.ext.asyncio, src.auth.dependencies, src.models +- notifications.py | Provides FastAPI REST endpoints for managing user notifications including listing, marking read/unread, dismissing, and clearing all notifications with support for muted categories. | exp: class:NotificationItem, class:NotificationListResponse, class:UnreadCountResponse, class:MarkAllReadResponse, class:ClearAllResponse, func:_get_mute_categories(session: AsyncSession, user_id: uuid.UUID) → list[str], call:session.execute, call:select(UserConfig).where, call:result.scalar_one_or_none, call:config.config.get, call:isinstance, func:list_notifications(limit, offset, unread_only, user, session) → NotificationListResponse, call:_get_mute_categories, call:notification_service.list_notifications, call:NotificationListResponse, call:NotificationItem.model_validate, func:get_unread_count(user, session) → UnreadCountResponse, call:notification_service.get_unread_count, call:UnreadCountResponse, func:mark_notification_read(notification_id: uuid.UUID, user, session) → NotificationItem, call:notification_service.mark_read, call:NotificationItem.model_validate, raise:HTTPException, func:mark_all_read(user, session) → MarkAllReadResponse, call:notification_service.mark_all_read, call:MarkAllReadResponse, func:clear_all_notifications(user, session) → ClearAllResponse, call:notification_service.dismiss_all, call:ClearAllResponse, func:dismiss_notification(notification_id: uuid.UUID, user, session) → None, call:notification_service.dismiss, raise:HTTPException | dep: uuid, datetime, fastapi, pydantic, sqlalchemy.ext.asyncio, src.auth.dependencies, src.models.user, src.models, src.services.shared.notification_service, sqlalchemy +- terminal.py | Provides WebSocket and REST endpoints for browser-based terminal access to running Docker container tool instances, supporting multiple named sessions, authentication, and terminal reset/reconnect functionality. | exp: class:SessionRef, method:__init__(self, session, slot_session_id), func:terminal_websocket_default(websocket: WebSocket, instance_id: str, db_session) → None, call:_handle_terminal_websocket, func:terminal_websocket_specific(websocket: WebSocket, instance_id: str, session_id: str, db_session) → None, call:_handle_terminal_websocket, func:_handle_terminal_websocket(websocket: WebSocket, instance_id: str, target_session_id: str | None, db_session: AsyncSession) → None, call:logger.debug, call:websocket.accept, call:uuid.UUID, call:logger.error, call:websocket.close, call:_get_user_from_websocket, call:logger.warning, call:db_session.get, call:get_container_status, call:terminal_manager.get_or_create_session, call:terminal_manager.get_session, call:logger.info, call:terminal_manager.create_session, call:terminal_manager._find_key_by_internal_id, call:terminal_manager.attach_websocket, call:websocket.send_json, call:SessionRef, call:asyncio.create_task, call:_write_loop, call:_heartbeat_loop, call:asyncio.wait, call:len, call:task.cancel, call:str, call:suppress, call:terminal_manager.detach_websocket, func:_write_loop(session_ref: SessionRef, websocket, instance_id: str) → None, call:session.is_alive, call:asyncio.sleep, call:websocket.receive, call:session.write_input, call:text.startswith, call:json.loads, call:ctrl.get, call:logger.debug, call:session.resize, call:session.acknowledge_data, call:websocket.send_json, call:terminal_manager.reset_session, call:terminal_manager.attach_websocket, call:text.encode, func:_heartbeat_loop(websocket: WebSocket) → None, call:asyncio.sleep, call:websocket.send_json, func:_get_terminal_instance(instance_id: uuid.UUID, user_id: uuid.UUID, db_session: AsyncSession) → ToolInstance, call:db_session.get, raise:HTTPException, func:list_terminal_sessions(instance_id: uuid.UUID, user_id, db_session) → dict, call:_get_terminal_instance, call:db_session.execute, call:select(TerminalSessionModel) .where(TerminalSessionModel.instance_id == instance_id) .where(TerminalSessionModel.status != "closed") .order_by, call:TerminalSessionModel.created_at.asc, call:result.scalars().all, call:terminal_manager.get_session, call:str, call:sessions.append, call:live_session.has_websockets, call:row.created_at.isoformat, call:row.last_activity_at.isoformat, func:create_terminal_session(instance_id: uuid.UUID, data: dict, user_id, db_session) → dict, call:_get_terminal_instance, call:db_session.get, call:data.get, call:terminal_manager.create_session, raise:HTTPException, func:close_terminal_session(instance_id: uuid.UUID, session_id: str, user_id, db_session) → dict, call:_get_terminal_instance, call:terminal_manager._find_key_by_internal_id, call:str, call:terminal_manager.get_session, call:terminal_manager.close_session, raise:HTTPException, func:reset_specific_terminal_session(instance_id: uuid.UUID, session_id: str, user_id, db_session) → dict, call:_get_terminal_instance, call:terminal_manager._find_key_by_internal_id, call:str, call:terminal_manager.get_session, call:db_session.get, call:terminal_manager.reset_session, raise:HTTPException, func:rename_terminal_session(instance_id: uuid.UUID, session_id: str, data: dict, user_id, db_session) → dict, call:_get_terminal_instance, call:data.get, call:isinstance, call:terminal_manager.get_session, call:str, call:db_session.get, call:uuid.UUID, call:db_session.commit, raise:HTTPException, func:reset_terminal_session(instance_id: uuid.UUID, user_id, db_session) → dict, call:_get_terminal_instance, call:db_session.get, call:terminal_manager.reset_session, call:logger.info, call:str, call:logger.error, raise:HTTPException, func:_get_user_from_websocket(websocket: WebSocket, db_session: AsyncSession) → uuid.UUID | None, call:websocket.cookies.get, call:Settings, call:decode_session_cookie, call:uuid.UUID, call:str | dep: asyncio, json, logging, uuid, contextlib, fastapi, sqlalchemy, sqlalchemy.ext.asyncio, starlette.websockets, src.auth.dependencies, src.models, src.services.terminal.terminal_manager, src.services.docker, src.auth.session, src.config, starlette ## arch -FastAPI router modules organized by domain concern with async/await patterns, SSE/WebSocket for real-time streaming, proxy pattern for container instance forwarding, and per-user authentication/authorization with connection limiting. +FastAPI router composition pattern with modular sub-routers aggregated via __init__.py, combining synchronous REST endpoints, SSE streaming, and WebSocket connections for real-time features, with authentication enforcement and resource ownership validation across operational and infrastructure concerns. ## tags -session, terminal, call:terminal, call:, src, get, response, websocket +terminal, session, call:terminal, call:, get, src, response, instance ## symbols - NotificationItem - NotificationListResponse diff --git a/apps/api/src/api/tool/.pi-map.index.md b/apps/api/src/api/tool/.pi-map.index.md index dd14ddb..e3238ab 100644 --- a/apps/api/src/api/tool/.pi-map.index.md +++ b/apps/api/src/api/tool/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/src/api/tool ## role -Provides FastAPI REST API endpoints for managing Docker-based tools, including their definitions, types, instances, lifecycle operations, and active sessions. +Provides FastAPI REST API endpoints for managing containerized tools throughout their lifecycle, including type definitions, instance management, session tracking, and Docker operations. ## parent index: apps/api/src/api/.pi-map.index.md map: apps/api/src/api/.pi-map.md diff --git a/apps/api/src/api/tool/.pi-map.md b/apps/api/src/api/tool/.pi-map.md index 3b5f2cd..90c364d 100644 --- a/apps/api/src/api/tool/.pi-map.md +++ b/apps/api/src/api/tool/.pi-map.md @@ -4,17 +4,17 @@ dir: apps/api/src/api/tool index: apps/api/src/api/tool/.pi-map.index.md ## role -Provides FastAPI REST API endpoints for managing Docker-based tools, including their definitions, types, instances, lifecycle operations, and active sessions. +Provides FastAPI REST API endpoints for managing containerized tools throughout their lifecycle, including type definitions, instance management, session tracking, and Docker operations. ## files -- __init__.py | Aggregates and exports all tool-related API routers from submodules as a unified module interface. | dep: src.api.tool.sessions, src.api.tool.tool_definitions, src.api.tool.tool_instances, src.api.tool.tool_lifecycle, src.api.tool.tool_types -- sessions.py | Provides a FastAPI endpoint to retrieve all active tool instances (sessions) for the currently authenticated user with related metadata. | exp: func:get_user_sessions(user_id, session) → dict, call:_get_user, call:session.execute, call:select(ToolInstance) .where(ToolInstance.owner_id == user_id) .where( ToolInstance.status.in_( ["running", "building", "pending", "stopped", "error"] ) ) .order_by, call:ToolInstance.status.in_, call:ToolInstance.created_at.desc, call:result.scalars().all, call:session.get, call:sessions.append, call:str, call:instance.created_at.isoformat | dep: uuid, fastapi, sqlalchemy, sqlalchemy.ext.asyncio, src.auth.dependencies, src.models, src.models (GitRepository, Project, ToolInstance, ToolType, Workspace) -- tool_definitions.py | FastAPI router providing CRUD endpoints and manifest compilation for tool definition manifests stored in a database. | exp: class:CreateToolDefinitionRequest, class:UpdateToolDefinitionRequest, func:create_tool_definition(data: CreateToolDefinitionRequest, user_id, session) → dict, call:uuid.UUID, call:session.get, call:session.execute, call:select(ToolDefinitionManifest).where, call:existing.scalar_one_or_none, call:ToolDefinitionManifest, call:session.add, call:session.commit, call:session.refresh, call:logger.info, call:str, call:definition.created_at.isoformat, raise:HTTPException, func:list_tool_definitions(user_id, session, include_bases) → dict, call:select, call:query.where, call:ToolDefinitionManifest.is_base.is_, call:session.execute, call:query.order_by, call:ToolDefinitionManifest.created_at.desc, call:result.scalars().all, call:str, call:d.created_at.isoformat, func:get_tool_definition(definition_id: uuid.UUID, user_id, session) → dict, call:session.get, call:str, call:definition.created_at.isoformat, call:definition.updated_at.isoformat, raise:HTTPException, func:update_tool_definition(definition_id: uuid.UUID, data: UpdateToolDefinitionRequest, user_id, session) → dict, call:session.get, call:session.commit, call:session.refresh, call:logger.info, call:str, call:definition.updated_at.isoformat, raise:HTTPException, func:delete_tool_definition(definition_id: uuid.UUID, user_id, session) → dict, call:session.get, call:session.execute, call:select(ToolType).where, call:result.scalars().all, call:", ".join, call:session.delete, call:session.commit, call:logger.info, call:str, raise:HTTPException, func:compile_tool_definition(definition_id: uuid.UUID, user_id, session) → dict, call:session.get, call:dict, call:resolve_base, call:deep_merge, call:compile_dockerfile, call:compile_entrypoint, call:compute_image_tag, call:compile_compose, call:session.commit, call:str, raise:HTTPException | dep: logging, uuid, fastapi, pydantic, sqlalchemy, sqlalchemy.ext.asyncio, src.auth.dependencies, src.models, src.services.build.manifest_compiler -- tool_instances.py | Provides FastAPI REST endpoints for managing tool instances including CRUD operations, logs, health checks, tunnel recreation, event history, and HTTP proxying to running containers. | exp: func:create_instance(project_id: uuid.UUID, repo_id: uuid.UUID, data: CreateInstanceRequest, user_id, session) → dict, call:_get_user, call:_get_owned_project, call:create_tool_instance, call:str, call:instance.created_at.isoformat, raise:HTTPException, func:list_instances(project_id: uuid.UUID, repo_id: uuid.UUID, user_id, session) → list[dict], call:_get_user, call:_get_owned_project, call:session.execute, call:select(ToolInstance) .where(ToolInstance.repository_id == repo_id) .where(ToolInstance.owner_id == user_id) .order_by, call:ToolInstance.created_at.desc, call:result.scalars().all, call:str, call:i.created_at.isoformat, func:get_instance(project_id: uuid.UUID, repo_id: uuid.UUID, instance_id: uuid.UUID, user_id, session) → dict, call:_get_user, call:_get_owned_project, call:session.get, call:get_container_status, call:str, call:instance.created_at.isoformat, call:instance.last_started_at.isoformat, raise:HTTPException, func:rename_instance(project_id: uuid.UUID, repo_id: uuid.UUID, instance_id: uuid.UUID, data: dict, user_id, session) → dict, call:_get_user, call:_get_owned_project, call:data.get("display_name", "").strip, call:rename_tool_instance, call:str, raise:HTTPException, func:get_instance_logs(project_id: uuid.UUID, repo_id: uuid.UUID, instance_id: uuid.UUID, tail, user_id, session) → dict, call:_get_user, call:_get_owned_project, call:session.get, call:get_container_logs, raise:HTTPException, func:recreate_tunnel_endpoint(project_id: uuid.UUID, repo_id: uuid.UUID, instance_id: uuid.UUID, user_id, session) → dict, call:_get_user, call:_get_owned_project, call:recreate_instance_tunnel, raise:HTTPException, func:check_instance_tunnel_health(project_id: uuid.UUID, repo_id: uuid.UUID, instance_id: uuid.UUID, user_id, session) → dict, call:_get_user, call:_get_owned_project, call:session.get, call:get_container_status, call:instance.probe_result.get, call:"\n".join, call:check_tunnel_health, call:tunnel_health.get, raise:HTTPException, func:get_instance_events(project_id: uuid.UUID, repo_id: uuid.UUID, instance_id: uuid.UUID, limit, user_id, session) → list[dict], call:_get_user, call:_get_owned_project, call:session.get, call:session.execute, call:select(InstanceEvent) .where(InstanceEvent.instance_id == instance_id) .order_by(InstanceEvent.created_at.desc()) .limit, call:InstanceEvent.created_at.desc, call:result.scalars().all, call:str, call:row.created_at.isoformat, raise:HTTPException, func:proxy_to_instance(request: Request, project_id: uuid.UUID, repo_id: uuid.UUID, instance_id: uuid.UUID, path, user_id, session) → Response, call:session.get, call:str, call:dict, call:headers.pop, call:httpx.AsyncClient, call:request.body, call:client.request, call:logger.error, call:response_headers.pop, call:Response, raise:HTTPException | dep: logging, uuid, httpx, fastapi, sqlalchemy, sqlalchemy.ext.asyncio, src.auth.dependencies, src.models, src.services.docker, src.services.shared.tunnel, src.schemas.tool, src.services.tool.instance_service +- __init__.py | Aggregates and exports router modules for the Tool API package. | dep: src.api.tool.sessions, src.api.tool.tool_definitions, src.api.tool.tool_instances, src.api.tool.tool_lifecycle, src.api.tool.tool_types +- sessions.py | Provides a FastAPI endpoint to retrieve all active tool sessions (running instances) for the currently authenticated user with related metadata. | exp: func:get_user_sessions(user_id, session) → dict, call:_get_user, call:session.execute, call:select(ToolInstance) .where(ToolInstance.owner_id == user_id) .where( ToolInstance.status.in_( ["running", "building", "pending", "stopped", "error"] ) ) .order_by, call:ToolInstance.status.in_, call:ToolInstance.created_at.desc, call:result.scalars().all, call:session.get, call:sessions.append, call:str, call:instance.created_at.isoformat | dep: uuid, fastapi, sqlalchemy, sqlalchemy.ext.asyncio, src.auth.dependencies, src.models +- tool_definitions.py | Provides FastAPI CRUD endpoints for managing tool definition manifests with compilation to Dockerfile and Docker Compose previews. | exp: class:CreateToolDefinitionRequest, class:UpdateToolDefinitionRequest, func:create_tool_definition(data: CreateToolDefinitionRequest, user_id, session) → dict, call:uuid.UUID, call:session.get, call:session.execute, call:select(ToolDefinitionManifest).where, call:existing.scalar_one_or_none, call:ToolDefinitionManifest, call:session.add, call:session.commit, call:session.refresh, call:logger.info, call:str, call:definition.created_at.isoformat, raise:HTTPException, func:list_tool_definitions(user_id, session, include_bases) → dict, call:select, call:query.where, call:ToolDefinitionManifest.is_base.is_, call:session.execute, call:query.order_by, call:ToolDefinitionManifest.created_at.desc, call:result.scalars().all, call:str, call:d.created_at.isoformat, func:get_tool_definition(definition_id: uuid.UUID, user_id, session) → dict, call:session.get, call:str, call:definition.created_at.isoformat, call:definition.updated_at.isoformat, raise:HTTPException, func:update_tool_definition(definition_id: uuid.UUID, data: UpdateToolDefinitionRequest, user_id, session) → dict, call:session.get, call:session.commit, call:session.refresh, call:logger.info, call:str, call:definition.updated_at.isoformat, raise:HTTPException, func:delete_tool_definition(definition_id: uuid.UUID, user_id, session) → dict, call:session.get, call:session.execute, call:select(ToolType).where, call:result.scalars().all, call:", ".join, call:session.delete, call:session.commit, call:logger.info, call:str, raise:HTTPException, func:compile_tool_definition(definition_id: uuid.UUID, user_id, session) → dict, call:session.get, call:dict, call:resolve_base, call:deep_merge, call:compile_dockerfile, call:compile_entrypoint, call:compute_image_tag, call:compile_compose, call:session.commit, call:str, raise:HTTPException | dep: logging, uuid, fastapi, pydantic, sqlalchemy, sqlalchemy.ext.asyncio, src.auth.dependencies, src.models, src.services.build.manifest_compiler +- tool_instances.py | FastAPI router providing REST endpoints for managing tool instances (CRUD, logs, health checks, tunnel management, proxying, and event history) within project repositories. | exp: func:create_instance(project_id: uuid.UUID, repo_id: uuid.UUID, data: CreateInstanceRequest, user_id, session) → dict, call:_get_user, call:_get_owned_project, call:create_tool_instance, call:str, call:instance.created_at.isoformat, raise:HTTPException, func:list_instances(project_id: uuid.UUID, repo_id: uuid.UUID, user_id, session) → list[dict], call:_get_user, call:_get_owned_project, call:session.execute, call:select(ToolInstance) .where(ToolInstance.repository_id == repo_id) .where(ToolInstance.owner_id == user_id) .order_by, call:ToolInstance.created_at.desc, call:result.scalars().all, call:str, call:i.created_at.isoformat, func:get_instance(project_id: uuid.UUID, repo_id: uuid.UUID, instance_id: uuid.UUID, user_id, session) → dict, call:_get_user, call:_get_owned_project, call:session.get, call:get_container_status, call:str, call:instance.created_at.isoformat, call:instance.last_started_at.isoformat, raise:HTTPException, func:rename_instance(project_id: uuid.UUID, repo_id: uuid.UUID, instance_id: uuid.UUID, data: dict, user_id, session) → dict, call:_get_user, call:_get_owned_project, call:data.get("display_name", "").strip, call:rename_tool_instance, call:str, raise:HTTPException, func:get_instance_logs(project_id: uuid.UUID, repo_id: uuid.UUID, instance_id: uuid.UUID, tail, user_id, session) → dict, call:_get_user, call:_get_owned_project, call:session.get, call:get_container_logs, raise:HTTPException, func:recreate_tunnel_endpoint(project_id: uuid.UUID, repo_id: uuid.UUID, instance_id: uuid.UUID, user_id, session) → dict, call:_get_user, call:_get_owned_project, call:recreate_instance_tunnel, raise:HTTPException, func:check_instance_tunnel_health(project_id: uuid.UUID, repo_id: uuid.UUID, instance_id: uuid.UUID, user_id, session) → dict, call:_get_user, call:_get_owned_project, call:session.get, call:get_container_status, call:instance.probe_result.get, call:"\n".join, call:check_tunnel_health, call:tunnel_health.get, raise:HTTPException, func:get_instance_events(project_id: uuid.UUID, repo_id: uuid.UUID, instance_id: uuid.UUID, limit, user_id, session) → list[dict], call:_get_user, call:_get_owned_project, call:session.get, call:session.execute, call:select(InstanceEvent) .where(InstanceEvent.instance_id == instance_id) .order_by(InstanceEvent.created_at.desc()) .limit, call:InstanceEvent.created_at.desc, call:result.scalars().all, call:str, call:row.created_at.isoformat, raise:HTTPException, func:proxy_to_instance(request: Request, project_id: uuid.UUID, repo_id: uuid.UUID, instance_id: uuid.UUID, path, user_id, session) → Response, call:session.get, call:str, call:dict, call:headers.pop, call:httpx.AsyncClient, call:request.body, call:client.request, call:logger.error, call:response_headers.pop, call:Response, raise:HTTPException | dep: logging, uuid, httpx, fastapi, sqlalchemy, sqlalchemy.ext.asyncio, src.auth.dependencies, src.models, src.services.docker, src.services.shared.tunnel, src.schemas.tool, src.services.tool.instance_service - tool_lifecycle.py | FastAPI router providing REST endpoints for managing Docker-based tool instance lifecycle operations (start, stop, restart, delete). | exp: func:start_instance(project_id: uuid.UUID, repo_id: uuid.UUID, instance_id: uuid.UUID, data, user_id, session) → dict, call:_get_user, call:_get_owned_project, call:start_tool_instance, raise:HTTPException, func:stop_instance(project_id: uuid.UUID, repo_id: uuid.UUID, instance_id: uuid.UUID, user_id, session) → dict, call:_get_user, call:_get_owned_project, call:stop_tool_instance, raise:HTTPException, func:restart_instance(project_id: uuid.UUID, repo_id: uuid.UUID, instance_id: uuid.UUID, user_id, session) → dict, call:_get_user, call:_get_owned_project, call:restart_tool_instance, raise:HTTPException, func:delete_instance(project_id: uuid.UUID, repo_id: uuid.UUID, instance_id: uuid.UUID, force, user_id, session) → None, call:_get_user, call:_get_owned_project, call:delete_tool_instance, call:str, call:detail.lower, raise:HTTPException | dep: logging, uuid, fastapi, sqlalchemy.ext.asyncio, src.auth.dependencies, src.schemas.tool, src.services.tool.instance_service -- tool_types.py | Defines FastAPI routes for CRUD operations and validation of Docker tool types with compose/dockerfile/manifest definitions. | exp: func:_require_admin(user: User) → None, func:create_tool_type(data: ToolTypeCreate, user_id, session) → ToolType, call:_get_user, call:_require_admin, call:session.scalar, call:select(ToolType).where, call:ToolType, call:session.add, call:session.commit, call:session.refresh, raise:HTTPException, func:list_tool_types(user_id, session) → list[ToolType], call:_get_user, call:session.execute, call:select(ToolType).order_by, call:list, call:result.scalars().all, func:get_tool_type(tool_type_id: uuid.UUID, user_id, session) → ToolType, call:_get_user, call:session.get, raise:HTTPException, func:update_tool_type(tool_type_id: uuid.UUID, data: ToolTypeUpdate, user_id, session) → ToolType, call:_get_user, call:_require_admin, call:session.get, call:data.model_dump, call:update_data.get, call:validate_compose_yaml, call:check_port_exposed, call:validate_required_variables, call:update_data.items, call:setattr, call:session.commit, call:session.refresh, raise:HTTPException, func:validate_tool_type_template(data: ToolTypeValidateRequest, user_id, session) → dict, call:_get_user, call:errors.append, call:validate_compose_yaml, call:str, call:data.dockerfile_template.strip().startswith, call:len, func:validate_tool_type(tool_type_id: uuid.UUID, user_id, session) → dict, call:_get_user, call:session.get, call:errors.append, call:validate_compose_yaml, call:str, call:tool_type.dockerfile_template.strip().startswith, call:len, raise:HTTPException, func:delete_tool_type(tool_type_id: uuid.UUID, user_id, session) → None, call:_get_user, call:_require_admin, call:session.get, call:session.delete, call:session.commit, raise:HTTPException | dep: uuid, fastapi, sqlalchemy, sqlalchemy.ext.asyncio, src.api.tool.tool_types_validation, src.auth.dependencies, src.models, src.models.user, src.schemas.tool -- tool_types_validation.py | Validates Docker Compose YAML templates by sanitizing template variables, parsing YAML structure, checking port exposure, and verifying required variables exist. | exp: func:sanitize_template_vars(template: str) → str, call:re.sub, func:validate_compose_yaml(template: str) → dict, call:sanitize_template_vars, call:yaml.safe_load, call:isinstance, raise:ValueError, func:check_port_exposed(parsed: dict, port: int) → bool, call:str, call:isinstance, call:parsed["services"].values, call:port_mapping.split, call:mapping.split, func:validate_required_variables(template: str, variables: list[str]) → None, raise:HTTPException | dep: re, yaml, fastapi +- tool_types.py | Defines FastAPI REST endpoints for CRUD operations on tool types with validation for Docker Compose, Dockerfile, and manifest definitions. | exp: func:_require_admin(user: User) → None, func:create_tool_type(data: ToolTypeCreate, user_id, session) → ToolType, call:_get_user, call:_require_admin, call:session.scalar, call:select(ToolType).where, call:ToolType, call:session.add, call:session.commit, call:session.refresh, raise:HTTPException, func:list_tool_types(user_id, session) → list[ToolType], call:_get_user, call:session.execute, call:select(ToolType).order_by, call:list, call:result.scalars().all, func:get_tool_type(tool_type_id: uuid.UUID, user_id, session) → ToolType, call:_get_user, call:session.get, raise:HTTPException, func:update_tool_type(tool_type_id: uuid.UUID, data: ToolTypeUpdate, user_id, session) → ToolType, call:_get_user, call:_require_admin, call:session.get, call:data.model_dump, call:update_data.get, call:validate_compose_yaml, call:check_port_exposed, call:validate_required_variables, call:update_data.items, call:setattr, call:session.commit, call:session.refresh, raise:HTTPException, func:validate_tool_type_template(data: ToolTypeValidateRequest, user_id, session) → dict, call:_get_user, call:errors.append, call:validate_compose_yaml, call:str, call:data.dockerfile_template.strip().startswith, call:len, func:validate_tool_type(tool_type_id: uuid.UUID, user_id, session) → dict, call:_get_user, call:session.get, call:errors.append, call:validate_compose_yaml, call:str, call:tool_type.dockerfile_template.strip().startswith, call:len, raise:HTTPException, func:delete_tool_type(tool_type_id: uuid.UUID, user_id, session) → None, call:_get_user, call:_require_admin, call:session.get, call:session.delete, call:session.commit, raise:HTTPException | dep: uuid, fastapi, sqlalchemy, sqlalchemy.ext.asyncio, src.api.tool.tool_types_validation, src.auth.dependencies, src.models, src.models.user, src.schemas.tool +- tool_types_validation.py | Provides validation utilities for Docker Compose templates including YAML parsing, port exposure checking, and required template variable verification. | exp: func:sanitize_template_vars(template: str) → str, call:re.sub, func:validate_compose_yaml(template: str) → dict, call:sanitize_template_vars, call:yaml.safe_load, call:isinstance, raise:ValueError, func:check_port_exposed(parsed: dict, port: int) → bool, call:str, call:isinstance, call:parsed["services"].values, call:port_mapping.split, call:mapping.split, func:validate_required_variables(template: str, variables: list[str]) → None, raise:HTTPException | dep: re, yaml, fastapi ## arch -Modular FastAPI router organization with clear separation of concerns across CRUD operations, Docker lifecycle management, YAML/Compose validation, and container proxying/tunneling. +Modular FastAPI router pattern with domain-driven separation of concerns (types, instances, sessions, lifecycle) and Docker-centric validation/compilation utilities for container orchestration. ## tags get, call:, tool, raise:httpexception, user, instance, call:str, call:session.get ## symbols diff --git a/apps/api/src/api/user/.pi-map.index.md b/apps/api/src/api/user/.pi-map.index.md index 325041d..037ec70 100644 --- a/apps/api/src/api/user/.pi-map.index.md +++ b/apps/api/src/api/user/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/src/api/user ## role -Provides authentication, user profile management, and SSH key operations for the API backend. +Provides user-facing API endpoints for authentication, profile management, and SSH key operations in the FastAPI backend. ## parent index: apps/api/src/api/.pi-map.index.md map: apps/api/src/api/.pi-map.md diff --git a/apps/api/src/api/user/.pi-map.md b/apps/api/src/api/user/.pi-map.md index 6bceb12..71d625f 100644 --- a/apps/api/src/api/user/.pi-map.md +++ b/apps/api/src/api/user/.pi-map.md @@ -4,14 +4,14 @@ dir: apps/api/src/api/user index: apps/api/src/api/user/.pi-map.index.md ## role -Provides authentication, user profile management, and SSH key operations for the API backend. +Provides user-facing API endpoints for authentication, profile management, and SSH key operations in the FastAPI backend. ## files -- __init__.py | Aggregates and exports user-related API routers from submodules for easy importing | dep: src.api.user.auth, src.api.user.ssh_keys, src.api.user.users -- auth.py | Implements OAuth2/OIDC authentication endpoints for a FastAPI application using Authentik as the identity provider, including login initiation, callback handling, logout, and current user retrieval. | exp: func:get_db_session() → AsyncGenerator[AsyncSession, None], call:SessionLocal, func:login(next) → RedirectResponse, call:Settings, call:token_urlsafe, call:build_login_redirect_url, call:logger.debug, call:RedirectResponse, call:response.set_cookie, func:callback(code: str, state: str, auth_state, auth_next, session) → RedirectResponse, call:logger.debug, call:logger.warning, call:Settings, call:httpx.AsyncClient, call:exchange_code_for_tokens, call:logger.info, call:logger.error, call:fetch_user_info, call:str, call:user_info.get, call:session.scalar, call:select(User).where, call:User, call:session.add, call:session.commit, call:session.refresh, call:create_session_cookie, call:build_cookie_options, call:cast, call:bool, call:cookie_options.get, call:RedirectResponse, call:redirect_response.set_cookie, call:redirect_response.delete_cookie, raise:HTTPException, func:logout(response: Response) → dict[str, str], call:Settings, call:build_cookie_options, call:cast, call:bool, call:str, call:cookie_options.get, call:response.delete_cookie, func:me(session_cookie, session) → dict[str, Any], call:logger.debug, call:bool, call:logger.warning, call:Settings, call:decode_session_cookie, call:session.get, call:logger.info, call:str, raise:HTTPException | dep: logging, secrets, typing, httpx, fastapi, fastapi.responses, sqlalchemy, sqlalchemy.ext.asyncio, src.auth.cookies, src.auth.oidc, src.auth.session, src.config, src.database, src.models.user -- ssh_keys.py | Implements a FastAPI router for managing Ed25519 SSH key pairs, including generation, storage with encrypted private keys, listing, deletion, and cryptographic signing/verification operations. | exp: func:_get_fernet() → Fernet, call:Settings, call:hashlib.sha256(settings.session_secret.encode()).digest, call:settings.session_secret.encode, call:base64.urlsafe_b64encode, call:Fernet, func:generate_ssh_key_pair() → tuple[str, str], call:Ed25519PrivateKey.generate, call:private_key.public_key, call:private_key.private_bytes, call:serialization.NoEncryption, call:public_key.public_bytes, call:private_bytes.decode, call:public_bytes.decode, func:create_ssh_key(data: SSHKeyCreate, user_id, session) → SSHKey, call:_get_user, call:generate_ssh_key_pair, call:_get_fernet, call:fernet.encrypt(private_key.encode()).decode, call:private_key.encode, call:SSHKey, call:session.add, call:session.commit, call:session.refresh, func:list_ssh_keys(user_id, session) → list[SSHKey], call:_get_user, call:session.execute, call:select(SSHKey).where, call:list, call:result.scalars().all, func:delete_ssh_key(key_id: uuid.UUID, user_id, session) → None, call:_get_user, call:session.get, call:session.delete, call:session.commit, raise:HTTPException, func:sign_payload(key_id: uuid.UUID, data: SignPayloadRequest, user_id, session) → SignatureResponse, call:_get_user, call:session.get, call:_get_fernet, call:fernet.decrypt(ssh_key.private_key_encrypted.encode()).decode, call:ssh_key.private_key_encrypted.encode, call:serialization.load_ssh_private_key, call:private_key_pem.encode, call:private_key.sign, call:data.payload.encode, call:SignatureResponse, call:base64.b64encode(signature).decode, raise:HTTPException, func:verify_signature(key_id: uuid.UUID, data: VerifySignatureRequest, user_id, session) → VerifySignatureResponse, call:_get_user, call:session.get, call:serialization.load_ssh_public_key, call:ssh_key.public_key.encode, call:base64.b64decode, call:public_key.verify, call:data.payload.encode, call:VerifySignatureResponse, raise:HTTPException | dep: base64, uuid, cryptography.fernet, cryptography.hazmat.primitives, cryptography.hazmat.primitives.asymmetric.ed25519, fastapi, sqlalchemy, sqlalchemy.ext.asyncio, src.auth.dependencies, src.config, src.models, src.schemas.project, hashlib, cryptography -- users.py | Implements FastAPI endpoints for authenticated user profile management including retrieval, updates, and avatar uploads. | exp: func:get_profile(user_id, session) → User, call:_get_user, func:update_profile(data: UserProfileUpdate, user_id, session) → User, call:_get_user, call:len, call:data.name.strip, call:data.email.strip, call:session.commit, call:session.refresh, raise:HTTPException, func:upload_avatar(file: UploadFile, user_id, session) → User, call:_get_user, call:file.read, call:len, call:Path, call:old_path.exists, call:old_path.unlink, call:filename_part.split(".")[-1].lower, call:uuid.uuid4, call:file_path.write_bytes, call:session.commit, call:session.refresh, raise:HTTPException | dep: uuid, pathlib, fastapi, sqlalchemy.ext.asyncio, src.auth.dependencies, src.models.user, src.schemas.user +- __init__.py | Aggregates and exports user-related API routers from submodules for easy importing. | dep: src.api.user.auth, src.api.user.ssh_keys, src.api.user.users +- auth.py | Implements OAuth2/OIDC authentication endpoints for a FastAPI application using Authentik as the identity provider, including login initiation, callback handling, session management, logout, and current user retrieval. | exp: func:get_db_session() → AsyncGenerator[AsyncSession, None], call:SessionLocal, func:login(next) → RedirectResponse, call:Settings, call:token_urlsafe, call:build_login_redirect_url, call:logger.debug, call:RedirectResponse, call:response.set_cookie, func:callback(code: str, state: str, auth_state, auth_next, session) → RedirectResponse, call:logger.debug, call:logger.warning, call:Settings, call:httpx.AsyncClient, call:exchange_code_for_tokens, call:logger.info, call:logger.error, call:fetch_user_info, call:str, call:user_info.get, call:session.scalar, call:select(User).where, call:User, call:session.add, call:session.commit, call:session.refresh, call:create_session_cookie, call:build_cookie_options, call:cast, call:bool, call:cookie_options.get, call:RedirectResponse, call:redirect_response.set_cookie, call:redirect_response.delete_cookie, raise:HTTPException, func:logout(response: Response) → dict[str, str], call:Settings, call:build_cookie_options, call:cast, call:bool, call:str, call:cookie_options.get, call:response.delete_cookie, func:me(session_cookie, session) → dict[str, Any], call:logger.debug, call:bool, call:logger.warning, call:Settings, call:decode_session_cookie, call:session.get, call:logger.info, call:str, raise:HTTPException | dep: logging, secrets, typing, httpx, fastapi, fastapi.responses, sqlalchemy, sqlalchemy.ext.asyncio, src.auth.cookies, src.auth.oidc, src.auth.session, src.config, src.database, src.models.user +- ssh_keys.py | FastAPI router for managing Ed25519 SSH keys including generation, storage with encrypted private keys, signing payloads, and signature verification | exp: func:_get_fernet() → Fernet, call:Settings, call:hashlib.sha256(settings.session_secret.encode()).digest, call:settings.session_secret.encode, call:base64.urlsafe_b64encode, call:Fernet, func:generate_ssh_key_pair() → tuple[str, str], call:Ed25519PrivateKey.generate, call:private_key.public_key, call:private_key.private_bytes, call:serialization.NoEncryption, call:public_key.public_bytes, call:private_bytes.decode, call:public_bytes.decode, func:create_ssh_key(data: SSHKeyCreate, user_id, session) → SSHKey, call:_get_user, call:generate_ssh_key_pair, call:_get_fernet, call:fernet.encrypt(private_key.encode()).decode, call:private_key.encode, call:SSHKey, call:session.add, call:session.commit, call:session.refresh, func:list_ssh_keys(user_id, session) → list[SSHKey], call:_get_user, call:session.execute, call:select(SSHKey).where, call:list, call:result.scalars().all, func:delete_ssh_key(key_id: uuid.UUID, user_id, session) → None, call:_get_user, call:session.get, call:session.delete, call:session.commit, raise:HTTPException, func:sign_payload(key_id: uuid.UUID, data: SignPayloadRequest, user_id, session) → SignatureResponse, call:_get_user, call:session.get, call:_get_fernet, call:fernet.decrypt(ssh_key.private_key_encrypted.encode()).decode, call:ssh_key.private_key_encrypted.encode, call:serialization.load_ssh_private_key, call:private_key_pem.encode, call:private_key.sign, call:data.payload.encode, call:SignatureResponse, call:base64.b64encode(signature).decode, raise:HTTPException, func:verify_signature(key_id: uuid.UUID, data: VerifySignatureRequest, user_id, session) → VerifySignatureResponse, call:_get_user, call:session.get, call:serialization.load_ssh_public_key, call:ssh_key.public_key.encode, call:base64.b64decode, call:public_key.verify, call:data.payload.encode, call:VerifySignatureResponse, raise:HTTPException | dep: base64, uuid, cryptography.fernet, cryptography.hazmat.primitives, cryptography.hazmat.primitives.asymmetric.ed25519, fastapi, sqlalchemy, sqlalchemy.ext.asyncio, src.auth.dependencies, src.config, src.models, src.schemas.project, hashlib, cryptography +- users.py | Implements FastAPI endpoints for user profile management including retrieval, updates, and avatar uploads with file validation. | exp: func:get_profile(user_id, session) → User, call:_get_user, func:update_profile(data: UserProfileUpdate, user_id, session) → User, call:_get_user, call:len, call:data.name.strip, call:data.email.strip, call:session.commit, call:session.refresh, raise:HTTPException, func:upload_avatar(file: UploadFile, user_id, session) → User, call:_get_user, call:file.read, call:len, call:Path, call:old_path.exists, call:old_path.unlink, call:filename_part.split(".")[-1].lower, call:uuid.uuid4, call:file_path.write_bytes, call:session.commit, call:session.refresh, raise:HTTPException | dep: uuid, pathlib, fastapi, sqlalchemy.ext.asyncio, src.auth.dependencies, src.models.user, src.schemas.user, sqlalchemy ## arch -Modular FastAPI router pattern with OAuth2/OIDC external identity provider integration, encrypted key storage, and file-based avatar handling. +Modular FastAPI router pattern with separate submodules for distinct concerns (auth, profile, SSH keys), using OAuth2/OIDC external identity provider (Authentik), encrypted key storage, and file upload handling. ## tags user, get, call:, key, ssh, src, cookie, raise:httpexception ## symbols diff --git a/apps/api/src/api/workspace/.pi-map.index.md b/apps/api/src/api/workspace/.pi-map.index.md index 48b3a41..c16e19e 100644 --- a/apps/api/src/api/workspace/.pi-map.index.md +++ b/apps/api/src/api/workspace/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/src/api/workspace ## role -Provides FastAPI REST API endpoints for workspace management, including file operations, git version control, and tool instance orchestration within user-scoped development environments. +Provides REST API endpoints for managing user workspaces, including file operations, Git version control, tool instances, and workspace lifecycle management. ## parent index: apps/api/src/api/.pi-map.index.md map: apps/api/src/api/.pi-map.md diff --git a/apps/api/src/api/workspace/.pi-map.md b/apps/api/src/api/workspace/.pi-map.md index 0ad7740..4863450 100644 --- a/apps/api/src/api/workspace/.pi-map.md +++ b/apps/api/src/api/workspace/.pi-map.md @@ -4,15 +4,15 @@ dir: apps/api/src/api/workspace index: apps/api/src/api/workspace/.pi-map.index.md ## role -Provides FastAPI REST API endpoints for workspace management, including file operations, git version control, and tool instance orchestration within user-scoped development environments. +Provides REST API endpoints for managing user workspaces, including file operations, Git version control, tool instances, and workspace lifecycle management. ## files -- __init__.py | Aggregates and re-exports workspace API router modules for centralized access | dep: src.api.workspace.workspace_files, src.api.workspace.workspace_git, src.api.workspace.workspace_instances, src.api.workspace.workspaces -- workspace_files.py | Provides FastAPI endpoints for listing, reading, and writing files within user workspaces with optional git commit integration. | exp: func:_get_workspace(session: AsyncSession, workspace_id: uuid.UUID, user_id: uuid.UUID) → Workspace, call:session.execute, call:select(Workspace).where, call:result.scalar_one_or_none, raise:HTTPException, func:list_files(workspace_id: uuid.UUID, path, user_id, session) → dict, call:_get_workspace, call:FileService, call:service.list_directory, raise:HTTPException, func:get_file_content(workspace_id: uuid.UUID, path: str, user_id, session) → dict, call:_get_workspace, call:FileService, call:service.read_file, raise:HTTPException, func:write_file(workspace_id: uuid.UUID, data: dict, user_id, session) → dict, call:_get_workspace, call:FileService, call:data.get("path", "").strip, call:data.get("message", "").strip, call:service.write_file, call:GitOperations, call:git.commit, raise:HTTPException | dep: uuid, fastapi, sqlalchemy.ext.asyncio, src.auth.dependencies, src.models, src.services.shared.file_service, sqlalchemy, src.services.git.git_operations -- workspace_git.py | Provides FastAPI REST endpoints for git operations (status, branches, commit, push, pull, fetch, checkout, history) scoped to user workspaces. | exp: func:_get_workspace(session: AsyncSession, workspace_id: uuid.UUID, user_id: uuid.UUID) → Workspace, call:session.execute, call:select(Workspace).where, call:result.scalar_one_or_none, raise:HTTPException, func:git_status(workspace_id: uuid.UUID, user_id, session) → dict, call:_get_workspace, call:GitOperations, call:git.status, raise:HTTPException, func:git_branches(workspace_id: uuid.UUID, user_id, session) → dict, call:_get_workspace, call:GitOperations, call:git.branches, raise:HTTPException, func:git_commit(workspace_id: uuid.UUID, data: dict, user_id, session) → dict, call:_get_workspace, call:data.get("message", "").strip, call:GitOperations, call:git.commit, raise:HTTPException, func:git_push(workspace_id: uuid.UUID, user_id, session) → dict, call:_get_workspace, call:GitOperations, call:git.push, raise:HTTPException, func:git_pull(workspace_id: uuid.UUID, user_id, session) → dict, call:_get_workspace, call:GitOperations, call:git.pull, raise:HTTPException, func:git_fetch(workspace_id: uuid.UUID, user_id, session) → dict, call:_get_workspace, call:GitOperations, call:git.fetch, raise:HTTPException, func:git_checkout(workspace_id: uuid.UUID, data: dict, user_id, session) → dict, call:_get_workspace, call:data.get("branch", "").strip, call:GitOperations, call:git.checkout, call:session.commit, raise:HTTPException, func:git_history(workspace_id: uuid.UUID, path, limit, user_id, session) → dict, call:_get_workspace, call:GitOperations, call:git.history, raise:HTTPException | dep: uuid, fastapi, sqlalchemy.ext.asyncio, src.auth.dependencies, src.models, src.services.git.git_operations, sqlalchemy -- workspace_instances.py | FastAPI router providing endpoints to create and list tool instances associated with a specific workspace. | exp: func:_get_workspace(session: AsyncSession, workspace_id: uuid.UUID, user_id: uuid.UUID) → Workspace, call:session.execute, call:select(Workspace).where, call:result.scalar_one_or_none, raise:HTTPException, func:create_workspace_instance(workspace_id: uuid.UUID, data: CreateWorkspaceInstanceRequest, user_id, session) → dict, call:_get_workspace, call:session.get, call:CreateInstanceRequest, call:str, call:create_tool_instance, call:instance.created_at.isoformat, raise:HTTPException, func:list_workspace_instances(workspace_id: uuid.UUID, user_id, session) → list[dict], call:_get_workspace, call:session.execute, call:select(ToolInstance) .where(ToolInstance.workspace_id == workspace_id) .order_by, call:ToolInstance.created_at.desc, call:result.scalars().all, call:str, call:i.created_at.isoformat | dep: uuid, fastapi, sqlalchemy, sqlalchemy.ext.asyncio, src.auth.dependencies, src.models, src.schemas.tool, src.services.tool.instance_service -- workspaces.py | FastAPI router providing CRUD endpoints for managing Git repository workspaces with nested and top-level URL structures. | exp: func:list_all_workspaces(user_id, session) → list[dict], call:select(func.count(ToolInstance.id)) .where(ToolInstance.workspace_id == Workspace.id) .correlate(Workspace) .scalar_subquery, call:func.count, call:session.execute, call:select( Workspace, GitRepository, instance_count.label("instance_count"), ) .join(GitRepository, Workspace.repo_id == GitRepository.id) .options(selectinload(GitRepository.project)) .where(Workspace.user_id == user_id) .order_by, call:instance_count.label, call:selectinload, call:Workspace.created_at.desc, call:result.all, call:str, call:ws.last_sync_at.isoformat, call:ws.created_at.isoformat, call:ws.updated_at.isoformat, func:delete_workspace_top_level(workspace_id: uuid.UUID, force, user_id, session) → dict, call:session.get, call:WorkspaceManager, call:manager.delete, call:session.commit, call:session.rollback, call:logger.error, raise:HTTPException, func:create_workspace_top_level(data: dict, user_id, session) → dict, call:data.get("repo_id", "").strip, call:uuid.UUID, call:session.get, call:data.get("name", "").strip, call:data.get("branch", "main").strip, call:WorkspaceManager, call:manager.create, call:session.add, call:session.commit, call:session.rollback, call:logger.error, call:session.refresh, call:str, call:workspace.created_at.isoformat, raise:HTTPException, func:list_workspaces(project_id: uuid.UUID, repo_id: uuid.UUID, user_id, session) → list[dict], call:_get_repo, call:select(func.count(ToolInstance.id)) .where(ToolInstance.workspace_id == Workspace.id) .correlate(Workspace) .scalar_subquery, call:func.count, call:session.execute, call:select( Workspace, instance_count.label("instance_count"), ) .where(Workspace.repo_id == repo_id) .order_by, call:instance_count.label, call:Workspace.created_at.desc, call:result.all, call:str, call:ws.last_sync_at.isoformat, call:ws.created_at.isoformat, call:ws.updated_at.isoformat, func:create_workspace(project_id: uuid.UUID, repo_id: uuid.UUID, data: dict, user_id, session) → dict, call:_get_repo, call:data.get("name", "").strip, call:data.get("branch", "main").strip, call:WorkspaceManager, call:manager.create, call:session.add, call:session.commit, call:session.rollback, call:logger.error, call:session.refresh, call:str, call:workspace.created_at.isoformat, raise:HTTPException, func:get_workspace_detail(project_id: uuid.UUID, repo_id: uuid.UUID, workspace_id: uuid.UUID, user_id, session) → dict, call:_get_repo, call:_get_workspace, call:session.execute, call:select(func.count(ToolInstance.id)).where, call:func.count, call:result.scalar, call:str, call:workspace.last_sync_at.isoformat, call:workspace.created_at.isoformat, call:workspace.updated_at.isoformat, func:update_workspace(project_id: uuid.UUID, repo_id: uuid.UUID, workspace_id: uuid.UUID, data: dict, user_id, session) → dict, call:_get_repo, call:_get_workspace, call:data.get("name", "").strip, call:data.get("branch", "").strip, call:session.commit, call:session.rollback, call:logger.error, call:str, raise:HTTPException, func:delete_workspace(project_id: uuid.UUID, repo_id: uuid.UUID, workspace_id: uuid.UUID, force, user_id, session) → dict, call:_get_repo, call:_get_workspace, call:WorkspaceManager, call:manager.delete, call:session.commit, call:session.rollback, call:logger.error, raise:HTTPException, func:sync_workspace(project_id: uuid.UUID, repo_id: uuid.UUID, workspace_id: uuid.UUID, user_id, session) → dict, call:_get_repo, call:_get_workspace, call:WorkspaceManager, call:manager.sync, call:session.commit, call:workspace.last_sync_at.isoformat, raise:HTTPException, func:_get_repo(session: AsyncSession, repo_id: uuid.UUID, project_id: uuid.UUID, user_id: uuid.UUID) → GitRepository, call:session.execute, call:select(GitRepository) .where( GitRepository.id == repo_id, GitRepository.project_id == project_id, ) .options, call:selectinload, call:result.scalar_one_or_none, raise:HTTPException, func:_get_workspace(session: AsyncSession, workspace_id: uuid.UUID, repo_id: uuid.UUID) → Workspace, call:session.execute, call:select(Workspace).where, call:result.scalar_one_or_none, raise:HTTPException | dep: logging, uuid, fastapi, sqlalchemy, sqlalchemy.ext.asyncio, sqlalchemy.orm, src.auth.dependencies, src.models, src.services.shared.workspace_manager +- __init__.py | Aggregates and re-exports workspace-related API routers from submodules for centralized access. | dep: src.api.workspace.workspace_files, src.api.workspace.workspace_git, src.api.workspace.workspace_instances, src.api.workspace.workspaces +- workspace_files.py | Provides FastAPI endpoints for listing, reading, and writing files within user-owned workspaces with optional Git commit integration. | exp: func:_get_workspace(session: AsyncSession, workspace_id: uuid.UUID, user_id: uuid.UUID) → Workspace, call:session.execute, call:select(Workspace).where, call:result.scalar_one_or_none, raise:HTTPException, func:list_files(workspace_id: uuid.UUID, path, user_id, session) → dict, call:_get_workspace, call:FileService, call:service.list_directory, raise:HTTPException, func:get_file_content(workspace_id: uuid.UUID, path: str, user_id, session) → dict, call:_get_workspace, call:FileService, call:service.read_file, raise:HTTPException, func:write_file(workspace_id: uuid.UUID, data: dict, user_id, session) → dict, call:_get_workspace, call:FileService, call:data.get("path", "").strip, call:data.get("message", "").strip, call:service.write_file, call:GitOperations, call:git.commit, raise:HTTPException | dep: uuid, fastapi, sqlalchemy.ext.asyncio, src.auth.dependencies, src.models, src.services.shared.file_service, sqlalchemy, src.services.git.git_operations +- workspace_git.py | Provides FastAPI REST endpoints for executing git operations (status, branches, commit, push, pull, fetch, checkout, history) on user workspaces with authentication and database persistence. | exp: func:_get_workspace(session: AsyncSession, workspace_id: uuid.UUID, user_id: uuid.UUID) → Workspace, call:session.execute, call:select(Workspace).where, call:result.scalar_one_or_none, raise:HTTPException, func:git_status(workspace_id: uuid.UUID, user_id, session) → dict, call:_get_workspace, call:GitOperations, call:git.status, raise:HTTPException, func:git_branches(workspace_id: uuid.UUID, user_id, session) → dict, call:_get_workspace, call:GitOperations, call:git.branches, raise:HTTPException, func:git_commit(workspace_id: uuid.UUID, data: dict, user_id, session) → dict, call:_get_workspace, call:data.get("message", "").strip, call:GitOperations, call:git.commit, raise:HTTPException, func:git_push(workspace_id: uuid.UUID, user_id, session) → dict, call:_get_workspace, call:GitOperations, call:git.push, raise:HTTPException, func:git_pull(workspace_id: uuid.UUID, user_id, session) → dict, call:_get_workspace, call:GitOperations, call:git.pull, raise:HTTPException, func:git_fetch(workspace_id: uuid.UUID, user_id, session) → dict, call:_get_workspace, call:GitOperations, call:git.fetch, raise:HTTPException, func:git_checkout(workspace_id: uuid.UUID, data: dict, user_id, session) → dict, call:_get_workspace, call:data.get("branch", "").strip, call:GitOperations, call:git.checkout, call:session.commit, raise:HTTPException, func:git_history(workspace_id: uuid.UUID, path, limit, user_id, session) → dict, call:_get_workspace, call:GitOperations, call:git.history, raise:HTTPException | dep: uuid, fastapi, sqlalchemy.ext.asyncio, src.auth.dependencies, src.models, src.services.git.git_operations, sqlalchemy +- workspace_instances.py | Defines FastAPI endpoints for creating and listing tool instances associated with a specific workspace. | exp: func:_get_workspace(session: AsyncSession, workspace_id: uuid.UUID, user_id: uuid.UUID) → Workspace, call:session.execute, call:select(Workspace).where, call:result.scalar_one_or_none, raise:HTTPException, func:create_workspace_instance(workspace_id: uuid.UUID, data: CreateWorkspaceInstanceRequest, user_id, session) → dict, call:_get_workspace, call:session.get, call:CreateInstanceRequest, call:str, call:create_tool_instance, call:instance.created_at.isoformat, raise:HTTPException, func:list_workspace_instances(workspace_id: uuid.UUID, user_id, session) → list[dict], call:_get_workspace, call:session.execute, call:select(ToolInstance) .where(ToolInstance.workspace_id == workspace_id) .order_by, call:ToolInstance.created_at.desc, call:result.scalars().all, call:str, call:i.created_at.isoformat | dep: uuid, fastapi, sqlalchemy, sqlalchemy.ext.asyncio, src.auth.dependencies, src.models, src.schemas.tool, src.services.tool.instance_service +- workspaces.py | FastAPI router providing CRUD endpoints for managing Git workspaces with repository integration, instance tracking, and sync capabilities. | exp: func:list_all_workspaces(user_id, session) → list[dict], call:select(func.count(ToolInstance.id)) .where(ToolInstance.workspace_id == Workspace.id) .correlate(Workspace) .scalar_subquery, call:func.count, call:session.execute, call:select( Workspace, GitRepository, instance_count.label("instance_count"), ) .join(GitRepository, Workspace.repo_id == GitRepository.id) .options(selectinload(GitRepository.project)) .where(Workspace.user_id == user_id) .order_by, call:instance_count.label, call:selectinload, call:Workspace.created_at.desc, call:result.all, call:str, call:ws.last_sync_at.isoformat, call:ws.created_at.isoformat, call:ws.updated_at.isoformat, func:delete_workspace_top_level(workspace_id: uuid.UUID, force, user_id, session) → dict, call:session.get, call:WorkspaceManager, call:manager.delete, call:session.commit, call:session.rollback, call:logger.error, raise:HTTPException, func:create_workspace_top_level(data: dict, user_id, session) → dict, call:data.get("repo_id", "").strip, call:uuid.UUID, call:session.get, call:data.get("name", "").strip, call:data.get("branch", "main").strip, call:WorkspaceManager, call:manager.create, call:session.add, call:session.commit, call:session.rollback, call:logger.error, call:session.refresh, call:str, call:workspace.created_at.isoformat, raise:HTTPException, func:list_workspaces(project_id: uuid.UUID, repo_id: uuid.UUID, user_id, session) → list[dict], call:_get_repo, call:select(func.count(ToolInstance.id)) .where(ToolInstance.workspace_id == Workspace.id) .correlate(Workspace) .scalar_subquery, call:func.count, call:session.execute, call:select( Workspace, instance_count.label("instance_count"), ) .where(Workspace.repo_id == repo_id) .order_by, call:instance_count.label, call:Workspace.created_at.desc, call:result.all, call:str, call:ws.last_sync_at.isoformat, call:ws.created_at.isoformat, call:ws.updated_at.isoformat, func:create_workspace(project_id: uuid.UUID, repo_id: uuid.UUID, data: dict, user_id, session) → dict, call:_get_repo, call:data.get("name", "").strip, call:data.get("branch", "main").strip, call:WorkspaceManager, call:manager.create, call:session.add, call:session.commit, call:session.rollback, call:logger.error, call:session.refresh, call:str, call:workspace.created_at.isoformat, raise:HTTPException, func:get_workspace_detail(project_id: uuid.UUID, repo_id: uuid.UUID, workspace_id: uuid.UUID, user_id, session) → dict, call:_get_repo, call:_get_workspace, call:session.execute, call:select(func.count(ToolInstance.id)).where, call:func.count, call:result.scalar, call:str, call:workspace.last_sync_at.isoformat, call:workspace.created_at.isoformat, call:workspace.updated_at.isoformat, func:update_workspace(project_id: uuid.UUID, repo_id: uuid.UUID, workspace_id: uuid.UUID, data: dict, user_id, session) → dict, call:_get_repo, call:_get_workspace, call:data.get("name", "").strip, call:data.get("branch", "").strip, call:session.commit, call:session.rollback, call:logger.error, call:str, raise:HTTPException, func:delete_workspace(project_id: uuid.UUID, repo_id: uuid.UUID, workspace_id: uuid.UUID, force, user_id, session) → dict, call:_get_repo, call:_get_workspace, call:WorkspaceManager, call:manager.delete, call:session.commit, call:session.rollback, call:logger.error, raise:HTTPException, func:sync_workspace(project_id: uuid.UUID, repo_id: uuid.UUID, workspace_id: uuid.UUID, user_id, session) → dict, call:_get_repo, call:_get_workspace, call:WorkspaceManager, call:manager.sync, call:session.commit, call:workspace.last_sync_at.isoformat, raise:HTTPException, func:_get_repo(session: AsyncSession, repo_id: uuid.UUID, project_id: uuid.UUID, user_id: uuid.UUID) → GitRepository, call:session.execute, call:select(GitRepository) .where( GitRepository.id == repo_id, GitRepository.project_id == project_id, ) .options, call:selectinload, call:result.scalar_one_or_none, raise:HTTPException, func:_get_workspace(session: AsyncSession, workspace_id: uuid.UUID, repo_id: uuid.UUID) → Workspace, call:session.execute, call:select(Workspace).where, call:result.scalar_one_or_none, raise:HTTPException | dep: logging, uuid, fastapi, sqlalchemy, sqlalchemy.ext.asyncio, sqlalchemy.orm, src.auth.dependencies, src.models, src.services.shared.workspace_manager ## arch -Modular router-based FastAPI architecture with domain-driven separation of concerns (files, git, instances, workspaces) using nested URL routing patterns and explicit dependency injection for cross-cutting workspace context. +Modular FastAPI router decomposition with domain-driven vertical slicing (files/git/instances/workspaces as separate modules), aggregated through __init__.py barrel exports, combining database persistence with external Git repository integration. ## tags workspace, get, raise:httpexception, call:, at.isoformat, git, call:select, call:data.get ## symbols diff --git a/apps/api/src/auth/.pi-map.index.md b/apps/api/src/auth/.pi-map.index.md index 72029cc..5ce7e6b 100644 --- a/apps/api/src/auth/.pi-map.index.md +++ b/apps/api/src/auth/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/src/auth ## role -Provides authentication and authorization infrastructure for the API using OIDC/OAuth2 with Authentik, session cookies, and FastAPI dependencies. +Provides authentication and authorization infrastructure for the API, including OIDC login, session management, and dependency injection for protected routes. ## parent index: apps/api/src/.pi-map.index.md map: apps/api/src/.pi-map.md diff --git a/apps/api/src/auth/.pi-map.md b/apps/api/src/auth/.pi-map.md index 6426813..1b50554 100644 --- a/apps/api/src/auth/.pi-map.md +++ b/apps/api/src/auth/.pi-map.md @@ -4,15 +4,15 @@ dir: apps/api/src/auth index: apps/api/src/auth/.pi-map.index.md ## role -Provides authentication and authorization infrastructure for the API using OIDC/OAuth2 with Authentik, session cookies, and FastAPI dependencies. +Provides authentication and authorization infrastructure for the API, including OIDC login, session management, and dependency injection for protected routes. ## files -- __init__.py | Re-exports authentication utility functions from submodules to provide a unified public API for the auth package | dep: src.auth.cookies, src.auth.oidc, src.auth.session -- cookies.py | Builds a dictionary of HTTP cookie options from application settings for secure cookie configuration. | exp: func:build_cookie_options(settings: Settings) → dict[str, str | bool | None] | dep: src.config, src.config.Settings -- dependencies.py | Provides FastAPI dependency functions for database sessions, user authentication, and project authorization. | exp: func:get_db_session(), call:SessionLocal, func:get_current_user_id(session_cookie) → uuid.UUID, call:Settings, call:decode_session_cookie, call:uuid.UUID, call:str, raise:HTTPException, func:get_current_user(session_cookie, db_session) → User, call:Settings, call:decode_session_cookie, call:uuid.UUID, call:str, call:db_session.get, raise:HTTPException, func:_get_user(session: AsyncSession, user_id: uuid.UUID) → User, call:session.get, raise:HTTPException, func:_get_owned_project(project_id: uuid.UUID, user_id: uuid.UUID, session: AsyncSession) → "Project", call:session.get, raise:HTTPException | dep: uuid, typing, fastapi, sqlalchemy.ext.asyncio, src.auth.session, src.config, src.database, src.models.project, src.models.user, sqlalchemy -- oidc.py | Implements OIDC/OAuth2 authentication flow with Authentik, including login URL construction, authorization code exchange for tokens, and user info retrieval. | exp: func:build_login_redirect_url(settings: Settings, redirect_uri: str, state: str) → str, call:urlencode, func:exchange_code_for_tokens(settings: Settings, code: str, redirect_uri: str, client: httpx.AsyncClient) → dict[str, str], call:client.post, call:response.raise_for_status, call:response.json, call:payload.get, func:fetch_user_info(settings: Settings, access_token: str, client: httpx.AsyncClient) → dict[str, Any], call:client.get, call:response.raise_for_status, call:response.json | dep: typing, urllib.parse, httpx, src.config -- session.py | Implements creation and verification of signed session cookies using HMAC-SHA256 in a JWS-like format. | exp: func:_base64url_encode(data: bytes) → str, call:base64.urlsafe_b64encode(data).rstrip(b"=").decode, func:_base64url_decode(data: str) → bytes, call:len, call:base64.urlsafe_b64decode, func:create_session_cookie(settings: Settings, user_id: str) → str, call:int, call:(datetime.now(timezone.utc) + timedelta(hours=settings.session_ttl_hours)).timestamp, call:datetime.now, call:timedelta, call:_base64url_encode, call:json.dumps({"alg": "HS256", "typ": "session"}).encode, call:json.dumps(payload).encode, call:hmac.new( settings.session_secret.encode(), message.encode(), hashlib.sha256, ).digest, call:settings.session_secret.encode, call:message.encode, func:decode_session_cookie(settings: Settings, cookie_value: str) → dict[str, Any], call:cookie_value.split, call:len, call:hmac.new( settings.session_secret.encode(), message.encode(), hashlib.sha256, ).digest, call:settings.session_secret.encode, call:message.encode, call:_base64url_encode, call:hmac.compare_digest, call:_base64url_decode, call:json.loads, call:payload.get, call:int, call:datetime.now(timezone.utc).timestamp, raise:ValueError | dep: hmac, hashlib, json, base64, datetime, typing, src.config, src.config.Settings +- __init__.py | Exposes authentication utility functions as a public API through module-level imports | dep: src.auth.cookies, src.auth.oidc, src.auth.session +- cookies.py | Builds a dictionary of HTTP cookie options from application settings | exp: func:build_cookie_options(settings: Settings) → dict[str, str | bool | None] | dep: src.config, src.config.Settings +- dependencies.py | Provides FastAPI dependency injection functions for database sessions, user authentication, and project ownership verification. | exp: func:get_db_session(), call:SessionLocal, func:get_current_user_id(session_cookie) → uuid.UUID, call:Settings, call:decode_session_cookie, call:uuid.UUID, call:str, raise:HTTPException, func:get_current_user(session_cookie, db_session) → User, call:Settings, call:decode_session_cookie, call:uuid.UUID, call:str, call:db_session.get, raise:HTTPException, func:_get_user(session: AsyncSession, user_id: uuid.UUID) → User, call:session.get, raise:HTTPException, func:_get_owned_project(project_id: uuid.UUID, user_id: uuid.UUID, session: AsyncSession) → "Project", call:session.get, raise:HTTPException | dep: uuid, typing, fastapi, sqlalchemy.ext.asyncio, src.auth.session, src.config, src.database, src.models.project, src.models.user, sqlalchemy +- oidc.py | Implements OIDC authentication flow with Authentik for login redirect URL construction, authorization code exchange, and user info retrieval. | exp: func:build_login_redirect_url(settings: Settings, redirect_uri: str, state: str) → str, call:urlencode, func:exchange_code_for_tokens(settings: Settings, code: str, redirect_uri: str, client: httpx.AsyncClient) → dict[str, str], call:client.post, call:response.raise_for_status, call:response.json, call:payload.get, func:fetch_user_info(settings: Settings, access_token: str, client: httpx.AsyncClient) → dict[str, Any], call:client.get, call:response.raise_for_status, call:response.json | dep: typing, urllib.parse, httpx, src.config +- session.py | Creates and verifies signed JWT-like session cookies with HMAC-SHA256 signatures and expiration checks. | exp: func:_base64url_encode(data: bytes) → str, call:base64.urlsafe_b64encode(data).rstrip(b"=").decode, func:_base64url_decode(data: str) → bytes, call:len, call:base64.urlsafe_b64decode, func:create_session_cookie(settings: Settings, user_id: str) → str, call:int, call:(datetime.now(timezone.utc) + timedelta(hours=settings.session_ttl_hours)).timestamp, call:datetime.now, call:timedelta, call:_base64url_encode, call:json.dumps({"alg": "HS256", "typ": "session"}).encode, call:json.dumps(payload).encode, call:hmac.new( settings.session_secret.encode(), message.encode(), hashlib.sha256, ).digest, call:settings.session_secret.encode, call:message.encode, func:decode_session_cookie(settings: Settings, cookie_value: str) → dict[str, Any], call:cookie_value.split, call:len, call:hmac.new( settings.session_secret.encode(), message.encode(), hashlib.sha256, ).digest, call:settings.session_secret.encode, call:message.encode, call:_base64url_encode, call:hmac.compare_digest, call:_base64url_decode, call:json.loads, call:payload.get, call:int, call:datetime.now(timezone.utc).timestamp, raise:ValueError | dep: hmac, hashlib, json, base64, datetime, typing, src.config, src.config.Settings ## arch -Modular security layer with separation of concerns: protocol handling (OIDC), transport security (cookies/sessions), framework integration (dependencies), and clean public API (re-exports). +Modular security layer using FastAPI dependency injection pattern, with separation of concerns across cookie handling, OIDC flow, session state, and reusable auth dependencies. ## tags session, src, cookie, user, get, base64url, raise:httpexception, call: ## symbols diff --git a/apps/api/src/models/.pi-map.index.md b/apps/api/src/models/.pi-map.index.md index ee42ab8..b8a96c1 100644 --- a/apps/api/src/models/.pi-map.index.md +++ b/apps/api/src/models/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/src/models ## role -Provides the SQLAlchemy ORM data models and database schema definitions for the API application. +Provides the foundational database model layer and unified public API for all SQLAlchemy ORM entities in the API application. ## parent index: apps/api/src/.pi-map.index.md map: apps/api/src/.pi-map.md diff --git a/apps/api/src/models/.pi-map.md b/apps/api/src/models/.pi-map.md index 272caa0..9c5d62c 100644 --- a/apps/api/src/models/.pi-map.md +++ b/apps/api/src/models/.pi-map.md @@ -4,12 +4,12 @@ dir: apps/api/src/models index: apps/api/src/models/.pi-map.index.md ## role -Provides the SQLAlchemy ORM data models and database schema definitions for the API application. +Provides the foundational database model layer and unified public API for all SQLAlchemy ORM entities in the API application. ## files -- __init__.py | Re-exports model classes from submodules to provide a centralized public API for the src.models package | dep: src.models.base, src.models.config.config_profile, src.models.project.git_repository, src.models.project.project, src.models.project.workspace, src.models.system.health_check, src.models.system.instance_event, src.models.system.notification, src.models.system.terminal_session, src.models.tool.tool_definition_manifest, src.models.tool.tool_instance, src.models.tool.tool_type, src.models.user.ssh_key, src.models.user.user, src.models.user.user_config +- __init__.py | Re-exports database models from submodules to provide a unified public API for the models package | dep: src.models.base, src.models.config.config_profile, src.models.project.git_repository, src.models.project.project, src.models.project.workspace, src.models.system.health_check, src.models.system.instance_event, src.models.system.notification, src.models.system.terminal_session, src.models.tool.tool_definition_manifest, src.models.tool.tool_instance, src.models.tool.tool_type, src.models.user.ssh_key, src.models.user.user, src.models.user.user_config - base.py | Defines SQLAlchemy base model and reusable mixins for UUID primary keys and automatic timestamp tracking in database models. | exp: class:Base, class:UUIDPrimaryKeyMixin, class:TimestampMixin | dep: uuid, datetime, sqlalchemy, sqlalchemy.orm ## arch -Layered repository pattern with declarative SQLAlchemy base, UUID/timestamp mixins for reusable model traits, and package-level facade pattern via __init__.py re-exports to centralize model access. +Implements a layered model architecture using SQLAlchemy declarative base with reusable mixins (UUID primary keys, timestamp tracking) and a facade pattern via `__init__.py` to centralize model imports. ## tags models, src, base, project, system, user, mixin, tool ## symbols diff --git a/apps/api/src/models/config/.pi-map.index.md b/apps/api/src/models/config/.pi-map.index.md index b5ed8a5..25075d5 100644 --- a/apps/api/src/models/config/.pi-map.index.md +++ b/apps/api/src/models/config/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/src/models/config ## role -Provides SQLAlchemy ORM models for configuration profiles that manage environment variables, mounts, files, and git mounts with support for profile inheritance and user/project/tool associations. +Provides SQLAlchemy ORM models for configuration profiles that store deployment settings like environment variables, mounts, and runtime hints. ## parent index: apps/api/src/models/.pi-map.index.md map: apps/api/src/models/.pi-map.md diff --git a/apps/api/src/models/config/.pi-map.md b/apps/api/src/models/config/.pi-map.md index 218cb07..2113dc2 100644 --- a/apps/api/src/models/config/.pi-map.md +++ b/apps/api/src/models/config/.pi-map.md @@ -4,14 +4,14 @@ dir: apps/api/src/models/config index: apps/api/src/models/config/.pi-map.index.md ## role -Provides SQLAlchemy ORM models for configuration profiles that manage environment variables, mounts, files, and git mounts with support for profile inheritance and user/project/tool associations. +Provides SQLAlchemy ORM models for configuration profiles that store deployment settings like environment variables, mounts, and runtime hints. ## files - __init__.py | Exports config model classes from a subpackage for simplified importing | dep: src.models.config.config_profile -- config_profile.py | Defines SQLAlchemy ORM models for configuration profiles and their includes, storing environment variables, runtime hints, mounts, files, and git mounts with user/project/tool associations and self-referential inclusion relationships. | exp: class:ConfigProfile, class:ConfigProfileInclude | dep: uuid, typing, sqlalchemy, sqlalchemy.orm, src.models.base, src.models.project, src.models, src.models.user, src.models (ToolType) +- config_profile.py | Defines SQLAlchemy ORM models for configuration profiles and their include relationships, storing deployment settings like environment variables, mounts, and runtime hints. | exp: class:ConfigProfile, class:ConfigProfileInclude | dep: uuid, typing, sqlalchemy, sqlalchemy.orm, src.models.base, src.models.project, src.models, src.models.user, src.models.ToolType ## arch -Uses SQLAlchemy ORM with declarative base pattern, implementing self-referential many-to-many relationships for profile inclusion, association tables for user/project/tool ownership, and polymorphic-like configuration through profile inheritance rather than class inheritance. +Package-level facade pattern with __init__.py exposing subpackage classes; domain model using SQLAlchemy ORM with relationship-based composition for profile includes. ## tags -config, src, models, profile, sqlalchemy, init, orm, mounts +config, models, src, profile, sqlalchemy, include, init, orm ## symbols - ConfigProfile - ConfigProfileInclude diff --git a/apps/api/src/models/project/.pi-map.index.md b/apps/api/src/models/project/.pi-map.index.md index 36c606a..e527030 100644 --- a/apps/api/src/models/project/.pi-map.index.md +++ b/apps/api/src/models/project/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/src/models/project ## role -Defines the core domain data models for project management, representing Git repositories, projects, and workspaces as SQLAlchemy ORM entities with their relationships. +Provides SQLAlchemy ORM models for core project-related domain entities (GitRepository, Project, Workspace) with their relationships. ## parent index: apps/api/src/models/.pi-map.index.md map: apps/api/src/models/.pi-map.md diff --git a/apps/api/src/models/project/.pi-map.md b/apps/api/src/models/project/.pi-map.md index c3dd4d3..8bf33de 100644 --- a/apps/api/src/models/project/.pi-map.md +++ b/apps/api/src/models/project/.pi-map.md @@ -4,16 +4,16 @@ dir: apps/api/src/models/project index: apps/api/src/models/project/.pi-map.index.md ## role -Defines the core domain data models for project management, representing Git repositories, projects, and workspaces as SQLAlchemy ORM entities with their relationships. +Provides SQLAlchemy ORM models for core project-related domain entities (GitRepository, Project, Workspace) with their relationships. ## files -- __init__.py | Exports the three main project model classes (GitRepository, Project, Workspace) as the public API for the models.project package. | dep: src.models.project.git_repository, src.models.project.project, src.models.project.workspace -- git_repository.py | Defines a SQLAlchemy ORM model for Git repositories with relationships to projects, users, and SSH keys. | exp: class:GitRepository | dep: uuid, datetime, typing, sqlalchemy, sqlalchemy.orm, src.models.base, src.models.project, src.models, src.models.user, src.models.ssh_key -- project.py | Defines a SQLAlchemy ORM model for a Project entity with relationships to users, Git repositories, and SSH keys. | exp: class:Project | dep: uuid, typing, sqlalchemy, sqlalchemy.orm, src.models.base, src.models, src.models.user, src.models.GitRepository, src.models.SSHKey, src.models.user.User -- workspace.py | Defines a SQLAlchemy ORM model for persistent writable Git repository clones associated with users. | exp: class:Workspace | dep: uuid, datetime, typing, sqlalchemy, sqlalchemy.orm, src.models.base, src.models, src.models.user, src.models.GitRepository, src.models.user.User +- __init__.py | Exports the core project model classes (GitRepository, Project, Workspace) for the models package | dep: src.models.project.git_repository, src.models.project.project, src.models.project.workspace +- git_repository.py | Defines a SQLAlchemy ORM model for Git repositories with relationships to projects, users, and SSH keys. | exp: class:GitRepository | dep: uuid, datetime, typing, sqlalchemy, sqlalchemy.orm, src.models.base, src.models.project, src.models, src.models.user, src.models.SSHKey +- project.py | Defines a SQLAlchemy ORM model for projects with relationships to users, Git repositories, and SSH keys. | exp: class:Project | dep: uuid, typing, sqlalchemy, sqlalchemy.orm, src.models.base, src.models, src.models.user, src.models.GitRepository, src.models.SSHKey, src.models.user.User +- workspace.py | Defines a SQLAlchemy ORM model for persistent writable Git repository clones associated with users | exp: class:Workspace | dep: uuid, datetime, typing, sqlalchemy, sqlalchemy.orm, src.models.base, src.models, src.models.user, src.models.GitRepository ## arch -Standard SQLAlchemy ORM model layer with declarative base pattern, using __init__.py as a public API facade to expose the three main entity classes while keeping implementation details in separate modules. +Data access layer using SQLAlchemy ORM with declarative models, explicit table relationships (many-to-many and foreign keys), and package-level facade pattern via __init__.py exports. ## tags -models, src, project, sqlalchemy, git, user, workspace, orm +models, src, project, sqlalchemy, git, workspace, orm, repository ## symbols - GitRepository - Project diff --git a/apps/api/src/models/system/.pi-map.index.md b/apps/api/src/models/system/.pi-map.index.md index d1619a2..4fd608e 100644 --- a/apps/api/src/models/system/.pi-map.index.md +++ b/apps/api/src/models/system/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/src/models/system ## role -Provides database persistence models for system-level operational concerns including health monitoring, audit logging, user notifications, and terminal session management. +Provides system-level SQLAlchemy ORM models for operational concerns including health monitoring, audit logging, notifications, and terminal session management. ## parent index: apps/api/src/models/.pi-map.index.md map: apps/api/src/models/.pi-map.md diff --git a/apps/api/src/models/system/.pi-map.md b/apps/api/src/models/system/.pi-map.md index de86374..6b5a130 100644 --- a/apps/api/src/models/system/.pi-map.md +++ b/apps/api/src/models/system/.pi-map.md @@ -4,17 +4,17 @@ dir: apps/api/src/models/system index: apps/api/src/models/system/.pi-map.index.md ## role -Provides database persistence models for system-level operational concerns including health monitoring, audit logging, user notifications, and terminal session management. +Provides system-level SQLAlchemy ORM models for operational concerns including health monitoring, audit logging, notifications, and terminal session management. ## files -- __init__.py | Exports system-related model classes from a package for convenient importing. | dep: src.models.system.health_check, src.models.system.instance_event, src.models.system.notification, src.models.system.terminal_session +- __init__.py | Package initialization file that exports system-related model classes for the models.system module | dep: src.models.system.health_check, src.models.system.instance_event, src.models.system.notification, src.models.system.terminal_session - health_check.py | Defines a SQLAlchemy ORM model for storing health check snapshots of tool instances with various status and probe fields. | exp: class:HealthCheck | dep: uuid, datetime, sqlalchemy, sqlalchemy.orm, src.models.base -- instance_event.py | Defines a SQLAlchemy ORM model for auditing instance lifecycle events with metadata, status tracking, and user attribution. | exp: class:InstanceEvent | dep: uuid, datetime, typing, sqlalchemy, sqlalchemy.orm, src.models.base -- notification.py | Defines a SQLAlchemy ORM model for storing user notifications with metadata, read/dismissed tracking, and polymorphic source references. | exp: class:Notification | dep: datetime, typing, uuid, sqlalchemy, sqlalchemy.orm, sqlalchemy.sql, src.models.base +- instance_event.py | Defines a SQLAlchemy model for auditing instance lifecycle events with metadata, status tracking, and user attribution. | exp: class:InstanceEvent | dep: uuid, datetime, typing, sqlalchemy, sqlalchemy.orm, src.models.base +- notification.py | Defines a SQLAlchemy ORM model for storing user notifications with support for categorization, severity levels, read/dismissed tracking, and polymorphic source references. | exp: class:Notification | dep: datetime, typing, uuid, sqlalchemy, sqlalchemy.orm, sqlalchemy.sql, src.models.base - terminal_session.py | Defines a SQLAlchemy database model for storing terminal session metadata with lifecycle tracking. | exp: class:TerminalSessionModel | dep: uuid, datetime, sqlalchemy, sqlalchemy.orm, src.models.base ## arch -Uses SQLAlchemy ORM declarative models with consistent patterns including timestamp tracking, JSON metadata columns, enum-based status fields, and polymorphic relationships for extensible source attribution. +Standard SQLAlchemy declarative model pattern with polymorphic associations (notification sources), lifecycle state tracking, and timestamped audit fields across all models. ## tags -sqlalchemy, src, models, model, orm, system, notification, health +sqlalchemy, models, src, model, system, orm, notification, health ## symbols - HealthCheck - InstanceEvent diff --git a/apps/api/src/models/tool/.pi-map.md b/apps/api/src/models/tool/.pi-map.md index 079fe79..cd8222e 100644 --- a/apps/api/src/models/tool/.pi-map.md +++ b/apps/api/src/models/tool/.pi-map.md @@ -6,14 +6,14 @@ index: apps/api/src/models/tool/.pi-map.index.md ## role Provides SQLAlchemy ORM models for managing containerized tool definitions, types, and deployed instances in the API. ## files -- __init__.py | Exports the public API for the tool models module by re-exporting three key classes. | dep: src.models.tool.tool_definition_manifest, src.models.tool.tool_instance, src.models.tool.tool_type -- tool_definition_manifest.py | Defines a SQLAlchemy ORM model for storing tool definition manifests that compile to Dockerfiles and Compose files, supporting both base definitions and tool-specific definitions with inheritance. | exp: class:ToolDefinitionManifest | dep: uuid, typing, sqlalchemy, sqlalchemy.orm, src.models.base, src.models.user -- tool_instance.py | Defines a SQLAlchemy ORM model for tool instances that represent deployed tools with container metadata, status tracking, and relationships to users, projects, workspaces, and other entities. | exp: class:ToolInstance | dep: uuid, datetime, typing, sqlalchemy, sqlalchemy.orm, src.models.base, src.models, src.models.project, src.models.user, src.models (ConfigProfile, GitRepository, Project, ToolType, User, Workspace) -- tool_type.py | Defines a SQLAlchemy ORM model for tool types that specify configuration templates and metadata for deployable tools in a containerized environment. | exp: class:ToolType | dep: uuid, typing, sqlalchemy, sqlalchemy.orm, src.models.base, src.models.tool.tool_definition_manifest, src.models.user +- __init__.py | Package initialization file that exports the public API for the tool models module. | dep: src.models.tool.tool_definition_manifest, src.models.tool.tool_instance, src.models.tool.tool_type +- tool_definition_manifest.py | Defines a SQLAlchemy model for tool definition manifests that can represent either base Docker images or tool definitions that inherit from bases, storing manifest JSON and cached Dockerfile/Compose outputs. | exp: class:ToolDefinitionManifest | dep: uuid, typing, sqlalchemy, sqlalchemy.orm, src.models.base, src.models.user +- tool_instance.py | Defines a SQLAlchemy ORM model representing a deployed tool instance with container/runtime metadata and relationships to users, projects, and workspaces. | exp: class:ToolInstance | dep: uuid, datetime, typing, sqlalchemy, sqlalchemy.orm, src.models.base, src.models, src.models.project, src.models.user, src.models (ConfigProfile, GitRepository, Project, ToolType, User, Workspace) +- tool_type.py | Defines a SQLAlchemy ORM model for tool types that specify metadata, configuration, and deployment templates for containerized tools. | exp: class:ToolType | dep: uuid, typing, sqlalchemy, sqlalchemy.orm, src.models.base, src.models.tool.tool_definition_manifest, src.models.user ## arch -Domain-driven data models using SQLAlchemy ORM with declarative base pattern, entity relationships, and inheritance support for tool manifest definitions. +Uses SQLAlchemy ORM with declarative models, inheritance patterns (base vs. derived tool definitions), and relational associations linking tools to users, projects, and workspaces. ## tags -tool, models, src, sqlalchemy, orm, definition, base, manifest +tool, models, src, sqlalchemy, definition, manifest, orm, instance ## symbols - ToolDefinitionManifest - ToolInstance diff --git a/apps/api/src/models/user/.pi-map.index.md b/apps/api/src/models/user/.pi-map.index.md index 04c39c8..3ff0d70 100644 --- a/apps/api/src/models/user/.pi-map.index.md +++ b/apps/api/src/models/user/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/src/models/user ## role -Provides SQLAlchemy ORM data models for user authentication, SSH key storage, and per-user configuration management. +Database models package defining user-related entities including users, SSH keys, and user configuration with their relationships. ## parent index: apps/api/src/models/.pi-map.index.md map: apps/api/src/models/.pi-map.md diff --git a/apps/api/src/models/user/.pi-map.md b/apps/api/src/models/user/.pi-map.md index 0c0192e..906fe55 100644 --- a/apps/api/src/models/user/.pi-map.md +++ b/apps/api/src/models/user/.pi-map.md @@ -4,16 +4,16 @@ dir: apps/api/src/models/user index: apps/api/src/models/user/.pi-map.index.md ## role -Provides SQLAlchemy ORM data models for user authentication, SSH key storage, and per-user configuration management. +Database models package defining user-related entities including users, SSH keys, and user configuration with their relationships. ## files -- __init__.py | Exports the user-related model classes (SSHKey, User, UserConfig) from a package for convenient importing. | dep: src.models.user.ssh_key, src.models.user.user, src.models.user.user_config -- ssh_key.py | Defines an SSHKey SQLAlchemy ORM model for storing encrypted SSH key pairs with user and optional project associations. | exp: class:SSHKey | dep: uuid, typing, sqlalchemy, sqlalchemy.orm, src.models.base, src.models.project, src.models.user +- __init__.py | Exports user-related model classes from a package for clean external imports. | dep: src.models.user.ssh_key, src.models.user.user, src.models.user.user_config +- ssh_key.py | Defines an SSHKey database model for storing encrypted SSH key pairs with associations to users and optional projects. | exp: class:SSHKey | dep: uuid, typing, sqlalchemy, sqlalchemy.orm, src.models.base, src.models.project, src.models.user - user.py | Defines a SQLAlchemy ORM model for a User entity with authentication fields and relationships to projects, SSH keys, and user configuration. | exp: class:User | dep: typing, sqlalchemy, sqlalchemy.orm, src.models.base, src.models.project, src.models, src.models.SSHKey, src.models.UserConfig -- user_config.py | Defines a SQLAlchemy model for storing per-user JSON configuration with typed property accessors for default profile IDs. | exp: class:UserConfig | dep: uuid, typing, sqlalchemy, sqlalchemy.orm, src.models.base, src.models.user +- user_config.py | Defines a SQLAlchemy model for storing per-user JSON configuration data with typed property accessors for profile IDs. | exp: class:UserConfig | dep: uuid, typing, sqlalchemy, sqlalchemy.orm, src.models.base, src.models.user ## arch -Classic SQLAlchemy ORM model package pattern with declarative models, explicit table relationships, and a package-level __init__.py facade for clean imports. +SQLAlchemy ORM with declarative models, one-to-many relationships (User→SSHKey, User→Project, User→UserConfig), encrypted field storage for SSH keys, and JSON-typed configuration with property accessors for schema flexibility. ## tags -user, src, models, sqlalchemy, sshkey, orm, model, ssh +user, src, models, sqlalchemy, model, sshkey, ssh, orm ## symbols - SSHKey - User diff --git a/apps/api/src/schemas/.pi-map.index.md b/apps/api/src/schemas/.pi-map.index.md index 651fe64..8da8d4d 100644 --- a/apps/api/src/schemas/.pi-map.index.md +++ b/apps/api/src/schemas/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/src/schemas ## role -Defines Pydantic schemas for data validation and serialization in the API layer. +Provides data validation schemas for the API application ## parent index: apps/api/src/.pi-map.index.md map: apps/api/src/.pi-map.md diff --git a/apps/api/src/schemas/.pi-map.md b/apps/api/src/schemas/.pi-map.md index 218b19f..d454e0d 100644 --- a/apps/api/src/schemas/.pi-map.md +++ b/apps/api/src/schemas/.pi-map.md @@ -4,13 +4,13 @@ dir: apps/api/src/schemas index: apps/api/src/schemas/.pi-map.index.md ## role -Defines Pydantic schemas for data validation and serialization in the API layer. +Provides data validation schemas for the API application ## files -- __init__.py | Empty file with no functionality +- __init__.py | Swaps two tmux panes between windows, preserving active pane state and layout | dep: tmux ## arch -Standard Python package structure using __init__.py to mark the directory as an importable package, likely intended for request/response models following FastAPI/Pydantic patterns. +Package initialization with modular schema definitions using Pydantic or similar validation framework ## tags -init, empty, functionality +tmux, init, swaps, two, panes, windows, preserving, active ## symbols - ## workflows diff --git a/apps/api/src/schemas/config/.pi-map.index.md b/apps/api/src/schemas/config/.pi-map.index.md index 9ca4621..c564479 100644 --- a/apps/api/src/schemas/config/.pi-map.index.md +++ b/apps/api/src/schemas/config/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/src/schemas/config ## role -Defines Pydantic validation schemas for configuration profile API request/response models with strict input validation. +Provides Pydantic schemas for configuration profile API operations with validated request/response models. ## parent index: apps/api/src/schemas/.pi-map.index.md map: apps/api/src/schemas/.pi-map.md diff --git a/apps/api/src/schemas/config/.pi-map.md b/apps/api/src/schemas/config/.pi-map.md index e314813..90ce3a8 100644 --- a/apps/api/src/schemas/config/.pi-map.md +++ b/apps/api/src/schemas/config/.pi-map.md @@ -4,14 +4,14 @@ dir: apps/api/src/schemas/config index: apps/api/src/schemas/config/.pi-map.index.md ## role -Defines Pydantic validation schemas for configuration profile API request/response models with strict input validation. +Provides Pydantic schemas for configuration profile API operations with validated request/response models. ## files -- __init__.py | Re-exports Pydantic schemas for configuration profile operations from a submodule to provide a clean public API. | dep: src.schemas.config.config_profile -- config_profile.py | Defines Pydantic request/response schemas for config profile API operations with validation for mounts, git URLs, UUIDs, and file paths. | exp: class:GitMountMapping, class:GitMountItem, class:MountItem, class:ConfigProfileCreate, class:ConfigProfileUpdate, class:ConfigProfileIncludeUpdate, class:ConfigProfileResponse, class:DefaultProfilesUpdate, class:ValidateGitUrlRequest, class:ValidateGitUrlResponse, func:_validate_uuid(v: str | None) → str | None, call:uuid.UUID, raise:ValueError | dep: uuid, pydantic, src.api.shared_validators +- __init__.py | Re-exports config profile schema classes from a submodule to provide a unified public interface for the config schemas module. | dep: src.schemas.config.config_profile +- config_profile.py | Defines Pydantic request/response schemas for configuration profile API operations with comprehensive input validation. | exp: class:GitMountMapping, class:GitMountItem, class:MountItem, class:ConfigProfileCreate, class:ConfigProfileUpdate, class:ConfigProfileIncludeUpdate, class:ConfigProfileResponse, class:DefaultProfilesUpdate, class:ValidateGitUrlRequest, class:ValidateGitUrlResponse, func:_validate_uuid(v: str | None) → str | None, call:uuid.UUID, raise:ValueError | dep: uuid, pydantic, src.api.shared_validators ## arch -Standard Python package pattern using `__init__.py` re-exports to expose a clean public API from internal modules, with Pydantic-based schema-per-resource organization. +Layered schema module using submodule organization with clean public interface via __init__.py re-exports, following Pydantic-based validation pattern for API contract definitions. ## tags -profile, config, git, mount, update, validate, response, item +config, profile, git, mount, update, validate, response, item ## symbols - GitMountMapping - GitMountItem diff --git a/apps/api/src/schemas/project/.pi-map.index.md b/apps/api/src/schemas/project/.pi-map.index.md index 0e235f8..99a44d0 100644 --- a/apps/api/src/schemas/project/.pi-map.index.md +++ b/apps/api/src/schemas/project/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/src/schemas/project ## role -Defines Pydantic data validation schemas for project-related API endpoints, serving as the contract layer between HTTP requests/responses and internal business logic. +Provides Pydantic data validation schemas for project-related API endpoints, serving as the contract layer between API requests/responses and internal business logic. ## parent index: apps/api/src/schemas/.pi-map.index.md map: apps/api/src/schemas/.pi-map.md diff --git a/apps/api/src/schemas/project/.pi-map.md b/apps/api/src/schemas/project/.pi-map.md index de36223..f3ab66e 100644 --- a/apps/api/src/schemas/project/.pi-map.md +++ b/apps/api/src/schemas/project/.pi-map.md @@ -4,16 +4,16 @@ dir: apps/api/src/schemas/project index: apps/api/src/schemas/project/.pi-map.index.md ## role -Defines Pydantic data validation schemas for project-related API endpoints, serving as the contract layer between HTTP requests/responses and internal business logic. +Provides Pydantic data validation schemas for project-related API endpoints, serving as the contract layer between API requests/responses and internal business logic. ## files -- __init__.py | Re-exports Pydantic schema classes from submodules to provide a unified public API for the project schemas module | dep: src.schemas.project.git_repository, src.schemas.project.project, src.schemas.project.ssh_key +- __init__.py | Re-exports Pydantic schema classes from submodules to provide a unified public API for project-related data models. | dep: src.schemas.project.git_repository, src.schemas.project.project, src.schemas.project.ssh_key - git_repository.py | Defines Pydantic request/response schemas for Git repository operations in an API. | exp: class:GitRepositoryCreate, class:URLParseRequest, class:URLParseResponse, class:GitRepositoryResponse, class:UpdateSSHKeyRequest, class:FileListResponse, class:FileContentResponse, class:BranchesResponse, class:FileUpdateRequest, class:FileUpdateResponse, class:StatusResponse, class:BranchCreateRequest, class:CheckoutRequest, class:CommitRequest, class:CommitResponse, class:FetchResponse, class:PullResponse, class:PushResponse, class:MergeRequest, class:MergeResponse | dep: uuid, datetime, pydantic -- project.py | Defines Pydantic request/response schemas for project-related API operations. | exp: class:ProjectCreate, class:ProjectUpdate, class:ProjectResponse, class:SetDefaultSSHKeyRequest | dep: uuid, pydantic -- ssh_key.py | Defines Pydantic schemas for SSH key creation, response, signing, and signature verification in an API. | exp: class:SSHKeyCreate, class:SSHKeyResponse, class:SignPayloadRequest, class:SignatureResponse, class:VerifySignatureRequest, class:VerifySignatureResponse | dep: uuid, datetime, pydantic +- project.py | Defines Pydantic request/response schemas for project-related API operations including creation, updates, responses, and default SSH key assignment. | exp: class:ProjectCreate, class:ProjectUpdate, class:ProjectResponse, class:SetDefaultSSHKeyRequest | dep: uuid, pydantic +- ssh_key.py | Defines Pydantic request/response schemas for SSH key management and signature operations in an API. | exp: class:SSHKeyCreate, class:SSHKeyResponse, class:SignPayloadRequest, class:SignatureResponse, class:VerifySignatureRequest, class:VerifySignatureResponse | dep: uuid, datetime, pydantic ## arch -Modular schema decomposition with submodule-per-domain pattern (project, git_repository, ssh_key) aggregated through __init__.py barrel exports, using Pydantic models for declarative validation and serialization. +Modular schema-per-domain pattern with clean separation of concerns (git repositories, projects, SSH keys) and centralized public API via `__init__.py` re-exports, following standard Pydantic model hierarchy with explicit request/response bifurcation. ## tags -response, request, project, create, update, sshkey, pydantic, schemas +response, request, project, create, update, sshkey, pydantic, git ## symbols - GitRepositoryCreate - URLParseRequest diff --git a/apps/api/src/schemas/system/.pi-map.index.md b/apps/api/src/schemas/system/.pi-map.index.md index e17f4e7..e973ea6 100644 --- a/apps/api/src/schemas/system/.pi-map.index.md +++ b/apps/api/src/schemas/system/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/src/schemas/system ## role -Provides Pydantic schema definitions for system health monitoring API responses. +Provides Pydantic data models for system health monitoring API responses, enabling standardized health check serialization across the API. ## parent index: apps/api/src/schemas/.pi-map.index.md map: apps/api/src/schemas/.pi-map.md diff --git a/apps/api/src/schemas/system/.pi-map.md b/apps/api/src/schemas/system/.pi-map.md index 420d023..1a4010b 100644 --- a/apps/api/src/schemas/system/.pi-map.md +++ b/apps/api/src/schemas/system/.pi-map.md @@ -4,14 +4,14 @@ dir: apps/api/src/schemas/system index: apps/api/src/schemas/system/.pi-map.index.md ## role -Provides Pydantic schema definitions for system health monitoring API responses. +Provides Pydantic data models for system health monitoring API responses, enabling standardized health check serialization across the API. ## files -- __init__.py | Re-exports health check schema classes from a submodule to provide a unified interface for the system schemas module. | dep: src.schemas.system.health -- health.py | Defines Pydantic data models for health check API responses including database, disk, and overall system health status. | exp: class:DatabaseHealth, class:DiskHealth, class:HealthChecks, class:HealthResponse, class:DatabaseHealthResponse | dep: pydantic +- __init__.py | Re-exports health-related schema classes from a submodule to provide a unified interface for the system schemas module. | dep: src.schemas.system.health +- health.py | Defines Pydantic data models for health check API responses including database, disk, and overall system health metrics. | exp: class:DatabaseHealth, class:DiskHealth, class:HealthChecks, class:HealthResponse, class:DatabaseHealthResponse | dep: pydantic ## arch -Simple modular schema layer with submodule organization and re-export pattern for clean API surface. +Simple submodule-based schema organization with explicit re-exports in __init__.py following a flat namespace pattern for cleaner imports. ## tags -health, database, response, system, disk, check, schemas, init +health, database, response, system, disk, schemas, init, pydantic ## symbols - DatabaseHealth - DiskHealth diff --git a/apps/api/src/schemas/tool/.pi-map.index.md b/apps/api/src/schemas/tool/.pi-map.index.md index 7ab1288..dc15c87 100644 --- a/apps/api/src/schemas/tool/.pi-map.index.md +++ b/apps/api/src/schemas/tool/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/src/schemas/tool ## role -Defines Pydantic data validation schemas for tool instance and tool type API operations in the API layer. +Provides Pydantic data validation schemas for tool-related API request/response models. ## parent index: apps/api/src/schemas/.pi-map.index.md map: apps/api/src/schemas/.pi-map.md diff --git a/apps/api/src/schemas/tool/.pi-map.md b/apps/api/src/schemas/tool/.pi-map.md index ccc8215..4070818 100644 --- a/apps/api/src/schemas/tool/.pi-map.md +++ b/apps/api/src/schemas/tool/.pi-map.md @@ -4,13 +4,13 @@ dir: apps/api/src/schemas/tool index: apps/api/src/schemas/tool/.pi-map.index.md ## role -Defines Pydantic data validation schemas for tool instance and tool type API operations in the API layer. +Provides Pydantic data validation schemas for tool-related API request/response models. ## files -- __init__.py | Package initialization file that exposes tool-related schema classes for import convenience. | dep: src.schemas.tool.tool_instance, src.schemas.tool.tool_type +- __init__.py | Re-exports tool-related Pydantic schemas from submodules to provide a unified public interface for the schemas.tool package. | dep: src.schemas.tool.tool_instance, src.schemas.tool.tool_type - tool_instance.py | Defines Pydantic request/response schemas for tool instance lifecycle operations (create, create-on-workspace, start). | exp: class:CreateInstanceRequest, class:CreateWorkspaceInstanceRequest, class:StartInstanceRequest | dep: pydantic -- tool_type.py | Defines Pydantic request/response schemas for tool type CRUD operations with conditional validation logic based on definition type (compose/dockerfile/manifest). | exp: class:ToolTypeCreate, class:ToolTypeUpdate, class:ToolTypeResponse, class:ToolTypeValidateRequest | dep: uuid, datetime, pydantic, src.api.tool.tool_types_validation +- tool_type.py | Defines Pydantic request/response schemas for tool type CRUD operations with conditional validation logic based on definition type | exp: class:ToolTypeCreate, class:ToolTypeUpdate, class:ToolTypeResponse, class:ToolTypeValidateRequest | dep: uuid, datetime, pydantic, src.api.tool.tool_types_validation ## arch -Standard Pydantic schema package pattern with type-specific conditional validation using discriminated unions or field validators based on definition type. +Modular schema organization with submodule-per-entity pattern, re-exported through __init__.py for clean imports; uses conditional Pydantic validators for polymorphic definition type handling. ## tags tool, type, request, instance, create, schemas, pydantic, response ## symbols diff --git a/apps/api/src/schemas/user/.pi-map.index.md b/apps/api/src/schemas/user/.pi-map.index.md index 51b208a..616f9bb 100644 --- a/apps/api/src/schemas/user/.pi-map.index.md +++ b/apps/api/src/schemas/user/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/src/schemas/user ## role -Provides Pydantic data validation schemas for user-related API requests and responses. +Defines Pydantic schemas for user-related request/response data serialization and validation in the API layer. ## parent index: apps/api/src/schemas/.pi-map.index.md map: apps/api/src/schemas/.pi-map.md diff --git a/apps/api/src/schemas/user/.pi-map.md b/apps/api/src/schemas/user/.pi-map.md index fff7adc..4892888 100644 --- a/apps/api/src/schemas/user/.pi-map.md +++ b/apps/api/src/schemas/user/.pi-map.md @@ -4,15 +4,15 @@ dir: apps/api/src/schemas/user index: apps/api/src/schemas/user/.pi-map.index.md ## role -Provides Pydantic data validation schemas for user-related API requests and responses. +Defines Pydantic schemas for user-related request/response data serialization and validation in the API layer. ## files -- __init__.py | Re-exports user-related Pydantic schemas from submodules to provide a unified public API for the user schemas package. | dep: src.schemas.user.user, src.schemas.user.user_config -- user.py | Defines Pydantic response and update schemas for user profile data | exp: class:UserProfileResponse, class:UserProfileUpdate | dep: uuid, pydantic -- user_config.py | Defines Pydantic models for user configuration data transfer objects (response and update schemas). | exp: class:UserConfigResponse, class:UserConfigUpdate | dep: pydantic +- __init__.py | Exports user-related Pydantic schemas from submodules to provide a clean public API for the user schemas package. | dep: src.schemas.user.user, src.schemas.user.user_config +- user.py | Defines Pydantic request/response schemas for user profile data in an API | exp: class:UserProfileResponse, class:UserProfileUpdate | dep: uuid, pydantic +- user_config.py | Defines Pydantic request/response schemas for user configuration data in an API. | exp: class:UserConfigResponse, class:UserConfigUpdate | dep: pydantic ## arch -Modular schema organization with submodule separation of concerns and unified package-level re-exports for clean imports. +Modular package pattern with clean public API via __init__.py exports, separating domain concerns (user profile vs. user configuration) into distinct schema modules. ## tags -user, schemas, response, update, config, pydantic, profile, src +user, schemas, response, config, pydantic, profile, update, api ## symbols - UserProfileResponse - UserProfileUpdate diff --git a/apps/api/src/scripts/.pi-map.index.md b/apps/api/src/scripts/.pi-map.index.md index a919a2f..e229903 100644 --- a/apps/api/src/scripts/.pi-map.index.md +++ b/apps/api/src/scripts/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/src/scripts ## role -Provides utility scripts for administrative and setup tasks for the API application, specifically database seeding. +Provides utility scripts for database initialization and maintenance tasks for the API. ## parent index: apps/api/src/.pi-map.index.md map: apps/api/src/.pi-map.md diff --git a/apps/api/src/scripts/.pi-map.md b/apps/api/src/scripts/.pi-map.md index aa7d682..686f981 100644 --- a/apps/api/src/scripts/.pi-map.md +++ b/apps/api/src/scripts/.pi-map.md @@ -4,14 +4,14 @@ dir: apps/api/src/scripts index: apps/api/src/scripts/.pi-map.index.md ## role -Provides utility scripts for administrative and setup tasks for the API application, specifically database seeding. +Provides utility scripts for database initialization and maintenance tasks for the API. ## files -- __init__.py | Marks the directory as a Python package and provides a docstring describing it as utility scripts for the API package. -- seed.py | Seeds a development user into the database using SQLAlchemy async operations, with idempotency check to avoid duplicates. | exp: func:build_seed_user() → Mapping[str, str | None], func:seed_database(session: AsyncSession) → User, call:build_seed_user, call:session.scalar, call:select(User).where, call:User, call:session.add, call:session.commit, call:session.refresh, func:run() → None, call:SessionLocal, call:seed_database, call:print, call:str, func:main() → None, call:asyncio.run, call:run | dep: collections.abc, sqlalchemy, sqlalchemy.ext.asyncio, src.database, src.models.user, asyncio +- __init__.py | Marks the directory as a Python package and provides a module docstring for API utility scripts. +- seed.py | Seeds a development user into the database, creating it if it doesn't already exist based on email. | exp: func:build_seed_user() → Mapping[str, str | None], func:seed_database(session: AsyncSession) → User, call:build_seed_user, call:session.scalar, call:select(User).where, call:User, call:session.add, call:session.commit, call:session.refresh, func:run() → None, call:SessionLocal, call:seed_database, call:print, call:str, func:main() → None, call:asyncio.run, call:run | dep: collections.abc, sqlalchemy, sqlalchemy.ext.asyncio, src.database, src.models.user, asyncio ## arch -Simple procedural script architecture with async SQLAlchemy database operations and idempotent initialization patterns. +Simple procedural script pattern with direct database access via SQLAlchemy models, no service layer abstraction. ## tags -seed, user, database, sqlalchemy, package, init, call:build, call:session.scalar +seed, user, database, init, call:build, call:session.scalar, call:select, call:user ## symbols - build_seed_user - seed_database diff --git a/apps/api/src/seeds/.pi-map.index.md b/apps/api/src/seeds/.pi-map.index.md index 504a1a7..eb7552c 100644 --- a/apps/api/src/seeds/.pi-map.index.md +++ b/apps/api/src/seeds/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/src/seeds ## role -Provides database seeding utilities for initializing and synchronizing built-in data records in the API application. +Provides database seeding utilities to populate initial built-in tool type configurations for the API application. ## parent index: apps/api/src/.pi-map.index.md map: apps/api/src/.pi-map.md diff --git a/apps/api/src/seeds/.pi-map.md b/apps/api/src/seeds/.pi-map.md index fe374a1..6506712 100644 --- a/apps/api/src/seeds/.pi-map.md +++ b/apps/api/src/seeds/.pi-map.md @@ -4,12 +4,12 @@ dir: apps/api/src/seeds index: apps/api/src/seeds/.pi-map.index.md ## role -Provides database seeding utilities for initializing and synchronizing built-in data records in the API application. +Provides database seeding utilities to populate initial built-in tool type configurations for the API application. ## files -- __init__.py | Marks the directory as a Python package for database seeding utilities. -- builtin_tool_types.py | Seeds predefined built-in tool types (code-server, jupyter-notebook, opencode) into a database with upsert logic, creating them if missing or updating existing ones to match code changes. | exp: func:_table_exists(session, table_name: str) → bool, call:session.execute, call:text, call:result.scalar, func:seed_builtin_tool_types(), call:SessionLocal, call:_table_exists, call:logger.warning, call:session.scalar, call:select(ToolType).where, call:ToolType, call:tool_data.get, call:session.add, call:logger.info, call:session.commit | dep: logging, sqlalchemy, src.database, src.models +- __init__.py | Marks directory as Python package for database seeding utilities +- builtin_tool_types.py | Seeds built-in tool types (code-server, jupyter-notebook, opencode) into the database with Docker Compose templates, creating or updating records as needed. | exp: func:_table_exists(session, table_name: str) → bool, call:session.execute, call:text, call:result.scalar, func:seed_builtin_tool_types(), call:SessionLocal, call:_table_exists, call:logger.warning, call:session.scalar, call:select(ToolType).where, call:ToolType, call:tool_data.get, call:session.add, call:logger.info, call:session.commit | dep: logging, sqlalchemy, src.database, src.models ## arch -Simple imperative seeding scripts with upsert pattern for idempotent data initialization, using direct database operations without abstraction layers. +Simple procedural seeding pattern with idempotent upsert operations, directly importing and executing database model creation logic with embedded Docker Compose template definitions. ## tags tool, types, table, exists, builtin, call:tool, database, init ## symbols diff --git a/apps/api/src/services/.pi-map.index.md b/apps/api/src/services/.pi-map.index.md index 13b8c13..771a898 100644 --- a/apps/api/src/services/.pi-map.index.md +++ b/apps/api/src/services/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/src/services ## role -Service layer package for the API application, intended to contain business logic implementations. +Provides utility services for the API application, including tmux window management functionality. ## parent index: apps/api/src/.pi-map.index.md map: apps/api/src/.pi-map.md diff --git a/apps/api/src/services/.pi-map.md b/apps/api/src/services/.pi-map.md index 734d647..e6a6a3b 100644 --- a/apps/api/src/services/.pi-map.md +++ b/apps/api/src/services/.pi-map.md @@ -4,13 +4,13 @@ dir: apps/api/src/services index: apps/api/src/services/.pi-map.index.md ## role -Service layer package for the API application, intended to contain business logic implementations. +Provides utility services for the API application, including tmux window management functionality. ## files -- __init__.py | Empty file with no functionality +- __init__.py | Swaps two tmux panes between windows, preserving active pane state and layout | dep: tmux ## arch -Standard Python package structure with an empty initializer, awaiting service module implementations following a layered architecture pattern. +Simple module-based architecture with service functions organized in a flat directory structure. ## tags -init, empty, functionality +tmux, init, swaps, two, panes, windows, preserving, active ## symbols - ## workflows diff --git a/apps/api/src/services/config/.pi-map.index.md b/apps/api/src/services/config/.pi-map.index.md index 2133418..27d43da 100644 --- a/apps/api/src/services/config/.pi-map.index.md +++ b/apps/api/src/services/config/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/src/services/config ## role -Provides configuration profile management with recursive resolution, validation, and access control for container environment setup. +Provides configuration profile resolution, validation, and CRUD operations with recursive includes and cycle detection for the API layer. ## parent index: apps/api/src/services/.pi-map.index.md map: apps/api/src/services/.pi-map.md diff --git a/apps/api/src/services/config/.pi-map.md b/apps/api/src/services/config/.pi-map.md index 210a4ac..5d9f66b 100644 --- a/apps/api/src/services/config/.pi-map.md +++ b/apps/api/src/services/config/.pi-map.md @@ -4,14 +4,14 @@ dir: apps/api/src/services/config index: apps/api/src/services/config/.pi-map.index.md ## role -Provides configuration profile management with recursive resolution, validation, and access control for container environment setup. +Provides configuration profile resolution, validation, and CRUD operations with recursive includes and cycle detection for the API layer. ## files -- __init__.py | Re-exports configuration profile resolution components from a subpackage to provide a unified public API. | dep: src.services.config.config_profile_resolver -- config_profile_resolver.py | Resolves configuration profiles recursively with ordered includes, deterministic merge rules, and cycle protection for container environment setup. | exp: class:ConfigProfileCycleError, class:ConfigProfileNotFoundError, class:ResolvedMount, class:ResolvedProfile, func:_detect_cycle(profile_id: uuid.UUID, visited: set[uuid.UUID], path: list[uuid.UUID]) → bool, func:_merge_env_vars(base: dict[str, str], overlay: dict[str, str], overrides: dict[str, str], source_name: str) → dict[str, str], call:dict, call:overlay.items, func:_merge_runtime_hints(base: dict[str, Any], overlay: dict[str, Any], overrides: dict[str, str], source_name: str) → dict[str, Any], call:dict, call:overlay.items, func:_merge_files(base: dict[str, str], overlay: dict[str, str], overrides: dict[str, str], source_name: str) → dict[str, str], call:dict, call:overlay.items, func:_merge_mounts(base: dict[str, ResolvedMount], overlay: list[dict[str, Any]], overrides: dict[str, str], source_name: str) → dict[str, ResolvedMount], call:dict, call:mount_data.get, call:files.items, call:ResolvedMount, func:_merge_git_mounts(base: list[dict[str, Any]], overlay: list[dict[str, Any]], source_name: str) → list[dict[str, Any]], call:list, call:enumerate, call:_normalize_git_mount_entry, call:dict, call:m.get, call:mount.get, call:existing.get, call:existing["mappings"].append, call:existing_sources.add, call:len, call:result.append, func:_normalize_git_mount_entry(entry: dict[str, Any]) → dict[str, Any], call:dict, call:entry.get, call:entry.pop, func:_resolve_profile_recursive(session: AsyncSession, profile_id: uuid.UUID, visited: set[uuid.UUID], path: list[uuid.UUID]) → ResolvedProfile, call:_detect_cycle, call:" -> ".join, call:str, call:session.get, call:ResolvedProfile, call:select(ConfigProfileInclude) .where(ConfigProfileInclude.profile_id == profile_id) .order_by, call:session.execute, call:include_result.scalars().all, call:_resolve_profile_recursive, call:result.included_profiles.append, call:_merge_env_vars, call:_merge_runtime_hints, call:_merge_files, call:_merge_mounts, call:included.mounts.values, call:_merge_git_mounts, raise:ConfigProfileCycleError, raise:ConfigProfileNotFoundError, func:resolve_profile(session: AsyncSession, profile_id: uuid.UUID) → ResolvedProfile, call:_resolve_profile_recursive, call:set, func:check_include_cycle(session: AsyncSession, profile_id: uuid.UUID, new_include_id) → list[uuid.UUID] | None, call:select(ConfigProfileInclude) .where(ConfigProfileInclude.profile_id == current_id) .order_by, call:session.execute, call:include_result.scalars().all, call:_check_from, call:set, call:len, func:_check_from(current_id: uuid.UUID, target_id: uuid.UUID, visited: set[uuid.UUID], path: list[uuid.UUID]) → list[uuid.UUID] | None, call:select(ConfigProfileInclude) .where(ConfigProfileInclude.profile_id == current_id) .order_by, call:session.execute, call:include_result.scalars().all, call:_check_from, func:apply_resolved_profile(instance_dir: str, resolved: ResolvedProfile, home_dir) → tuple[dict[str, str], dict[str, str], list[dict], dict[str, Any]], call:Path, call:dict, call:files.items, call:full_path.resolve().relative_to, call:instance_path.resolve, call:logger.warning, call:full_path.parent.mkdir, call:full_path.write_text, call:resolved.mounts.values, call:os.path.normpath, call:expand_container_path, call:expanded_target.lstrip("/").replace, call:mount_dir.mkdir, call:mount.files.items, call:mount_dir.resolve, call:volume_mounts.append, call:str, func:expand_container_path(path: str, home_dir: str) → str, call:path.startswith, call:os.path.join, func:resolved_profile_to_dict(resolved: ResolvedProfile) → dict[str, Any], call:str, call:resolved.mounts.values | dep: logging, os, uuid, dataclasses, typing, sqlalchemy, sqlalchemy.ext.asyncio, src.models, pathlib -- crud_service.py | Provides CRUD operations for configuration profiles including validation, access control, size limits, and include cycle detection. | exp: func:calculate_profile_size(data: dict) → int, call:data.get("env_vars", {}).items, call:len, call:key.encode, call:str(value).encode, call:data.get("runtime_hints", {}).items, call:str(mount.get("target", "")).encode, call:str(mount.get("mode", "")).encode, call:mount.get("files", {}).items, call:path.encode, call:content.encode, call:data.get("files", {}).items, func:get_profile_with_includes(session: AsyncSession, profile_id: uuid.UUID) → ConfigProfile | None, call:session.execute, call:select(ConfigProfile) .where(ConfigProfile.id == profile_id) .options, call:selectinload, call:result.scalar_one_or_none, func:check_access(session: AsyncSession, user_id: uuid.UUID, project_id, tool_type_id) → None, call:session.get, raise:HTTPException, func:validate_git_mounts(session: AsyncSession, user_id: uuid.UUID, git_mounts: list[Any], project_id) → None, call:mount.get, call:remote_url.startswith, raise:HTTPException, func:profile_to_response(profile: ConfigProfile, includes) → dict, call:str, call:profile.created_at.isoformat, call:profile.updated_at.isoformat, func:get_or_create_user_config(session: AsyncSession, user_id: uuid.UUID) → UserConfig, call:session.execute, call:select(UserConfig).where, call:result.scalar_one_or_none, call:UserConfig, call:session.add, func:validate_default_profiles(session: AsyncSession, user_id: uuid.UUID, default_profiles: dict[str, str]) → None, call:default_profiles.items, call:uuid.UUID, call:session.get, raise:HTTPException, func:create_profile(session: AsyncSession, user_id: uuid.UUID, data: Any) → ConfigProfile, call:session.execute, call:select(ConfigProfile) .where( ConfigProfile.user_id == user_id, ConfigProfile.name == data.name, ) .options, call:selectinload, call:existing.scalar_one_or_none, call:uuid.UUID, call:check_access, call:m.model_dump, call:hasattr, call:validate_git_mounts, call:calculate_profile_size, call:data.model_dump, call:ConfigProfile, call:session.add, call:session.commit, call:select(ConfigProfile) .where(ConfigProfile.id == profile.id) .options, call:result.scalar_one, raise:HTTPException, func:update_profile(session: AsyncSession, profile: ConfigProfile, data: Any) → ConfigProfile, call:data.model_dump, call:session.execute, call:select(ConfigProfile).where, call:existing.scalar_one_or_none, call:uuid.UUID, call:check_access, call:m.model_dump, call:hasattr, call:validate_git_mounts, call:profile_to_response, call:calculate_profile_size, call:update_data.items, call:isinstance, call:setattr, call:session.commit, call:select(ConfigProfile) .where(ConfigProfile.id == profile.id) .options, call:selectinload, call:result.scalar_one, raise:HTTPException, func:update_includes(session: AsyncSession, profile: ConfigProfile, included_ids: list[uuid.UUID], user_id: uuid.UUID) → ConfigProfile, call:session.get, call:check_include_cycle, call:" -> ".join, call:str, call:session.execute, call:select(ConfigProfileInclude).where, call:result.scalars().all, call:session.delete, call:session.flush, call:enumerate, call:ConfigProfileInclude, call:session.add, call:session.commit, call:select(ConfigProfile).where, call:result.scalar_one, raise:HTTPException | dep: uuid, typing, fastapi, sqlalchemy, sqlalchemy.ext.asyncio, sqlalchemy.orm, src.models, src.models.project, src.services.config.config_profile_resolver -- resolver_service.py | Resolves default configuration profiles for users/projects/tools and validates Git URLs with SSH key support. | exp: func:resolve_default_profile(session: AsyncSession, user_id: uuid.UUID, project_id: uuid.UUID, tool_type_id: uuid.UUID) → dict, call:select(ConfigProfile) .where(ConfigProfile.user_id == user_id) .where( (ConfigProfile.project_id.is_(None) & ConfigProfile.tool_type_id.is_(None)) | (ConfigProfile.project_id == project_id) | (ConfigProfile.tool_type_id == tool_type_id) | ( (ConfigProfile.project_id == project_id) & (ConfigProfile.tool_type_id == tool_type_id) ) ) .order_by, call:ConfigProfile.project_id.is_, call:ConfigProfile.tool_type_id.is_, call:session.execute, call:result.scalars().all, call:str, func:validate_git_url(session: AsyncSession, current_user_id: uuid.UUID, url: str, ssh_key_id: str | None) → ValidateGitUrlResponse, call:parse_git_url, call:url.strip, call:parse_result.get, call:ValidateGitUrlResponse, call:uuid.UUID, call:session.get, call:_get_fernet, call:fernet.decrypt(ssh_key.private_key_encrypted.encode()).decode, call:ssh_key.private_key_encrypted.encode, call:tempfile.mkstemp, call:os.write, call:private_key.encode, call:os.close, call:os.chmod, call:subprocess.run, call:os.path.exists, call:os.unlink, call:result.stderr.strip, call:stderr.lower, call:result.stdout.strip().split, call:line.strip, call:line.split, call:len, call:ref.startswith, call:branches.append | dep: logging, os, subprocess, uuid, typing, fastapi, sqlalchemy, sqlalchemy.ext.asyncio, src.models, src.services.shared.ssh_keys, src.utils.git_url_parser, src.schemas.config, tempfile +- __init__.py | Re-exports configuration profile resolution components to make them accessible as a unified module interface. | dep: src.services.config.config_profile_resolver +- config_profile_resolver.py | Resolves configuration profiles recursively with ordered includes, deterministic merge rules, and cycle detection. | exp: class:ConfigProfileCycleError, class:ConfigProfileNotFoundError, class:ResolvedMount, class:ResolvedProfile, func:_detect_cycle(profile_id: uuid.UUID, visited: set[uuid.UUID], path: list[uuid.UUID]) → bool, func:_merge_env_vars(base: dict[str, str], overlay: dict[str, str], overrides: dict[str, str], source_name: str) → dict[str, str], call:dict, call:overlay.items, func:_merge_runtime_hints(base: dict[str, Any], overlay: dict[str, Any], overrides: dict[str, str], source_name: str) → dict[str, Any], call:dict, call:overlay.items, func:_merge_files(base: dict[str, str], overlay: dict[str, str], overrides: dict[str, str], source_name: str) → dict[str, str], call:dict, call:overlay.items, func:_merge_mounts(base: dict[str, ResolvedMount], overlay: list[dict[str, Any]], overrides: dict[str, str], source_name: str) → dict[str, ResolvedMount], call:dict, call:mount_data.get, call:files.items, call:ResolvedMount, func:_find_mount_conflicts(profile: ConfigProfile, resolved: ResolvedProfile) → list[dict[str, Any]], call:m.get("files", {}).keys, call:resolved.mounts.values, call:conflicts.append, func:_merge_git_mounts(base: list[dict[str, Any]], overlay: list[dict[str, Any]], source_name: str) → list[dict[str, Any]], call:list, call:enumerate, call:_normalize_git_mount_entry, call:dict, call:m.get, call:mount.get, call:existing.get, call:existing["mappings"].append, call:existing_sources.add, call:len, call:result.append, func:_normalize_git_mount_entry(entry: dict[str, Any]) → dict[str, Any], call:dict, call:entry.get, call:entry.pop, func:_resolve_profile_recursive(session: AsyncSession, profile_id: uuid.UUID, visited: set[uuid.UUID], path: list[uuid.UUID]) → ResolvedProfile, call:_detect_cycle, call:" -> ".join, call:str, call:session.get, call:ResolvedProfile, call:select(ConfigProfileInclude) .where(ConfigProfileInclude.profile_id == profile_id) .order_by, call:session.execute, call:include_result.scalars().all, call:_resolve_profile_recursive, call:result.included_profiles.append, call:_merge_env_vars, call:_merge_runtime_hints, call:_merge_files, call:_merge_mounts, call:included.mounts.values, call:_merge_git_mounts, raise:ConfigProfileCycleError, raise:ConfigProfileNotFoundError, func:resolve_profile(session: AsyncSession, profile_id: uuid.UUID) → ResolvedProfile, call:_resolve_profile_recursive, call:set, func:check_include_cycle(session: AsyncSession, profile_id: uuid.UUID, new_include_id) → list[uuid.UUID] | None, call:select(ConfigProfileInclude) .where(ConfigProfileInclude.profile_id == current_id) .order_by, call:session.execute, call:include_result.scalars().all, call:_check_from, call:set, call:len, func:_check_from(current_id: uuid.UUID, target_id: uuid.UUID, visited: set[uuid.UUID], path: list[uuid.UUID]) → list[uuid.UUID] | None, call:select(ConfigProfileInclude) .where(ConfigProfileInclude.profile_id == current_id) .order_by, call:session.execute, call:include_result.scalars().all, call:_check_from, func:apply_resolved_profile(instance_dir: str, resolved: ResolvedProfile, home_dir) → tuple[dict[str, str], dict[str, str], list[dict], dict[str, Any]], call:Path, call:dict, call:files.items, call:full_path.resolve().relative_to, call:instance_path.resolve, call:logger.warning, call:full_path.parent.mkdir, call:full_path.write_text, call:resolved.mounts.values, call:os.path.normpath, call:expand_container_path, call:expanded_target.lstrip("/").replace, call:mount_dir.mkdir, call:mount.files.items, call:mount_dir.resolve, call:volume_mounts.append, call:str, func:expand_container_path(path: str, home_dir: str) → str, call:path.startswith, call:os.path.join, func:resolved_profile_to_dict(resolved: ResolvedProfile) → dict[str, Any], call:str, call:resolved.mounts.values | dep: logging, os, uuid, dataclasses, typing, sqlalchemy, sqlalchemy.ext.asyncio, src.models, pathlib +- crud_service.py | Provides CRUD operations and validation logic for configuration profiles, including size limits, access control, and include cycle detection. | exp: func:calculate_profile_size(data: dict) → int, call:data.get("env_vars", {}).items, call:len, call:key.encode, call:str(value).encode, call:data.get("runtime_hints", {}).items, call:str(mount.get("target", "")).encode, call:str(mount.get("mode", "")).encode, call:mount.get("files", {}).items, call:path.encode, call:content.encode, call:data.get("files", {}).items, func:get_profile_with_includes(session: AsyncSession, profile_id: uuid.UUID) → ConfigProfile | None, call:session.execute, call:select(ConfigProfile) .where(ConfigProfile.id == profile_id) .options, call:selectinload, call:result.scalar_one_or_none, func:check_access(session: AsyncSession, user_id: uuid.UUID, project_id, tool_type_id) → None, call:session.get, raise:HTTPException, func:validate_git_mounts(session: AsyncSession, user_id: uuid.UUID, git_mounts: list[Any], project_id) → None, call:mount.get, call:remote_url.startswith, raise:HTTPException, func:profile_to_response(profile: ConfigProfile, includes) → dict, call:str, call:profile.created_at.isoformat, call:profile.updated_at.isoformat, func:get_or_create_user_config(session: AsyncSession, user_id: uuid.UUID) → UserConfig, call:session.execute, call:select(UserConfig).where, call:result.scalar_one_or_none, call:UserConfig, call:session.add, func:validate_default_profiles(session: AsyncSession, user_id: uuid.UUID, default_profiles: dict[str, str]) → None, call:default_profiles.items, call:uuid.UUID, call:session.get, raise:HTTPException, func:create_profile(session: AsyncSession, user_id: uuid.UUID, data: Any) → ConfigProfile, call:session.execute, call:select(ConfigProfile) .where( ConfigProfile.user_id == user_id, ConfigProfile.name == data.name, ) .options, call:selectinload, call:existing.scalar_one_or_none, call:uuid.UUID, call:check_access, call:m.model_dump, call:hasattr, call:validate_git_mounts, call:calculate_profile_size, call:data.model_dump, call:ConfigProfile, call:session.add, call:session.commit, call:select(ConfigProfile) .where(ConfigProfile.id == profile.id) .options, call:result.scalar_one, raise:HTTPException, func:update_profile(session: AsyncSession, profile: ConfigProfile, data: Any) → ConfigProfile, call:data.model_dump, call:session.execute, call:select(ConfigProfile).where, call:existing.scalar_one_or_none, call:uuid.UUID, call:check_access, call:m.model_dump, call:hasattr, call:validate_git_mounts, call:profile_to_response, call:calculate_profile_size, call:update_data.items, call:isinstance, call:setattr, call:session.commit, call:select(ConfigProfile) .where(ConfigProfile.id == profile.id) .options, call:selectinload, call:result.scalar_one, raise:HTTPException, func:update_includes(session: AsyncSession, profile: ConfigProfile, included_ids: list[uuid.UUID], user_id: uuid.UUID) → ConfigProfile, call:session.get, call:check_include_cycle, call:" -> ".join, call:str, call:session.execute, call:select(ConfigProfileInclude).where, call:result.scalars().all, call:session.delete, call:session.flush, call:enumerate, call:ConfigProfileInclude, call:session.add, call:session.commit, call:select(ConfigProfile).where, call:result.scalar_one, raise:HTTPException | dep: uuid, typing, fastapi, sqlalchemy, sqlalchemy.ext.asyncio, sqlalchemy.orm, src.models, src.models.project, src.services.config.config_profile_resolver +- resolver_service.py | Resolves default configuration profiles for users/projects/tools and validates Git URLs by checking remote repository accessibility and listing branches, optionally using SSH key authentication. | exp: func:resolve_default_profile(session: AsyncSession, user_id: uuid.UUID, project_id: uuid.UUID, tool_type_id: uuid.UUID) → dict, call:select(ConfigProfile) .where(ConfigProfile.user_id == user_id) .where( (ConfigProfile.project_id.is_(None) & ConfigProfile.tool_type_id.is_(None)) | (ConfigProfile.project_id == project_id) | (ConfigProfile.tool_type_id == tool_type_id) | ( (ConfigProfile.project_id == project_id) & (ConfigProfile.tool_type_id == tool_type_id) ) ) .order_by, call:ConfigProfile.project_id.is_, call:ConfigProfile.tool_type_id.is_, call:session.execute, call:result.scalars().all, call:str, func:validate_git_url(session: AsyncSession, current_user_id: uuid.UUID, url: str, ssh_key_id: str | None) → ValidateGitUrlResponse, call:parse_git_url, call:url.strip, call:parse_result.get, call:ValidateGitUrlResponse, call:uuid.UUID, call:session.get, call:_get_fernet, call:fernet.decrypt(ssh_key.private_key_encrypted.encode()).decode, call:ssh_key.private_key_encrypted.encode, call:tempfile.mkstemp, call:os.write, call:private_key.encode, call:os.close, call:os.chmod, call:subprocess.run, call:os.path.exists, call:os.unlink, call:result.stderr.strip, call:stderr.lower, call:result.stdout.strip().split, call:line.strip, call:line.split, call:len, call:ref.startswith, call:branches.append | dep: logging, os, subprocess, uuid, typing, fastapi, sqlalchemy, sqlalchemy.ext.asyncio, src.models, src.services.shared.ssh_keys, src.utils.git_url_parser, src.schemas.config, tempfile ## arch -Layered service architecture with separation between resolution logic (recursive merge with cycle detection), CRUD operations (validation, access control, size limits), and default resolution (Git/SSH integration), exposed through a unified facade pattern via __init__.py. +Service-layer pattern with separation between resolution logic (recursive merge with cycle detection), CRUD operations (validation, access control, size limits), and external integration (Git URL validation with SSH support), exposed through a unified module facade. ## tags profile, call:, call:select, merge, git, call:str, call:session.execute, cycle ## symbols diff --git a/apps/api/src/services/docker/.pi-map.index.md b/apps/api/src/services/docker/.pi-map.index.md index fe744f5..aff33bd 100644 --- a/apps/api/src/services/docker/.pi-map.index.md +++ b/apps/api/src/services/docker/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/src/services/docker ## role -Provides Docker infrastructure automation for container lifecycle management, service composition, secure configuration deployment, and external network tunneling. +Provides Docker infrastructure automation for container lifecycle management, service composition, configuration deployment, and secure public tunneling. ## parent index: apps/api/src/services/.pi-map.index.md map: apps/api/src/services/.pi-map.md diff --git a/apps/api/src/services/docker/.pi-map.md b/apps/api/src/services/docker/.pi-map.md index 44f617b..a288b9f 100644 --- a/apps/api/src/services/docker/.pi-map.md +++ b/apps/api/src/services/docker/.pi-map.md @@ -4,15 +4,15 @@ dir: apps/api/src/services/docker index: apps/api/src/services/docker/.pi-map.index.md ## role -Provides Docker infrastructure automation for container lifecycle management, service composition, secure configuration deployment, and external network tunneling. +Provides Docker infrastructure automation for container lifecycle management, service composition, configuration deployment, and secure public tunneling. ## files -- __init__.py | Package initialization file that exposes Docker-related service functions for container operations, compose management, configuration staging, and tunnel management. | dep: src.services.docker.compose, src.services.docker.config_staging, src.services.docker.container, src.services.docker.tunnel +- __init__.py | Exports Docker service functions for container, compose, config staging, and tunnel operations as a unified package interface. | dep: src.services.docker.compose, src.services.docker.config_staging, src.services.docker.container, src.services.docker.tunnel - compose.py | Generates, renders, and executes Docker Compose files with volume sorting and template variable substitution. | exp: func:sort_volumes_by_specificity(volumes: list[str]) → list[str], call:vol.split, call:len, call:parts[1].rstrip, call:target.count, call:targets.append, call:Counter(targets).items, call:logger.warning, call:sorted, func:_target_depth(vol: str) → int, call:vol.split, call:len, call:parts[1].rstrip, call:target.count, func:render_compose_template(template: str, variables: dict[str, Any]) → str, call:variables.items, call:result.replace, call:str, call:aliases.items, call:variables.get, func:write_compose_file(instance_dir: str, content: str) → str, call:Path, call:compose_path.write_text, call:str, func:execute_compose_command(compose_path: str, action: str, timeout, env_file) → tuple[int, str, str], call:Path, call:cmd.extend, call:cmd.append, call:subprocess.run, call:str, raise:ValueError | dep: logging, subprocess, collections, pathlib, typing, collections.Counter, pathlib.Path, typing.Any -- config_staging.py | Stages configuration files into instance directories with security checks for path traversal. | exp: func:ensure_instance_directory(instance_id: str, base_path) → str, call:Settings, call:Path, call:instance_dir.mkdir, call:str, call:instance_dir.absolute, func:write_env_file(instance_dir: str, env_vars: dict[str, str]) → str, call:Path, call:env_vars.items, call:env_path.write_text, call:"\n".join, call:str, func:write_config_files(instance_dir: str, files: dict[str, str]) → None, call:Path, call:files.items, call:full_path.resolve().relative_to, call:instance_path.resolve, call:full_path.parent.mkdir, call:full_path.write_text, raise:ValueError | dep: logging, pathlib, src.config, src.config.Settings -- container.py | Provides utility functions for querying Docker container runtime state, managing container network connections, and finding free TCP ports via subprocess calls to the Docker CLI. | exp: func:get_container_id(instance_name: str) → str | None, call:instance_name.lower, call:subprocess.run, call:result.stdout.strip, call:ps_result.stdout.strip().splitlines, call:line.split, call:len, call:name.lower, func:get_container_name(instance_name: str) → str | None, call:subprocess.run, call:instance_name.lower, call:result.stdout.strip().lstrip, func:get_backend_network_name() → str, call:subprocess.run, call:result.stdout.strip().split, call:net.lower, func:connect_container_to_network(container_name: str, network_name) → bool, call:get_backend_network_name, call:subprocess.run, func:get_container_ip_on_network(container_id: str, network_name) → str | None, call:get_backend_network_name, call:subprocess.run, call:result.stdout.strip, func:is_container_on_network(container_id: str, network_name) → bool, call:get_backend_network_name, call:subprocess.run, func:get_container_status(container_id: str) → dict[str, Any], call:subprocess.run, call:result.stdout.strip().split, call:int, call:len, call:parts[1].isdigit, func:wait_for_container_running(container_id: str, timeout, interval) → dict[str, Any], call:time.time, call:get_container_status, call:time.sleep, func:get_container_logs(container_id: str, tail) → str, call:subprocess.run, call:str, func:find_free_port(start, end) → int, call:range, call:socket.socket, call:s.connect_ex, raise:RuntimeError | dep: logging, subprocess, time, typing, socket -- tunnel.py | Manages Cloudflare tunnels by orchestrating cloudflared Docker containers to expose internal services via temporary public URLs. | exp: func:_tunnel_container_name(instance_name: str) → str, call:instance_name.lower, func:_ensure_image() → None, call:subprocess.run, call:result.stdout.strip, call:logger.info, call:logger.warning, func:_cleanup_stale_tunnel(tunnel_name: str) → None, call:subprocess.run, func:_get_tunnel_logs(tunnel_name: str) → tuple[str, str], call:subprocess.run, func:_get_tunnel_exit_code(tunnel_name: str) → int | None, call:subprocess.run, call:int, call:result.stdout.strip, func:start_tunnel(instance_name: str, container_port: int, timeout, target_url) → dict[str, str], call:_ensure_image, call:_tunnel_container_name, call:_cleanup_stale_tunnel, call:instance_name.lower, call:get_backend_network_name, call:logger.debug, call:" ".join, call:subprocess.run, call:proc.stdout.strip, call:re.compile, call:__import__("time").time, call:_get_tunnel_logs, call:url_pattern.search, call:match.group, call:_get_tunnel_exit_code, call:__import__("time").sleep, call:logger.info, raise:RuntimeError, func:stop_tunnel(instance_name: str) → None, call:_tunnel_container_name, call:_cleanup_stale_tunnel, call:logger.debug, func:recreate_tunnel(instance_name: str, container_port: int, target_url) → dict[str, str], call:stop_tunnel, call:start_tunnel, func:check_tunnel_health(url: str, timeout) → dict[str, Any], call:subprocess.run, call:int, call:result.stdout.strip, call:str(exc).lower, call:any | dep: logging, re, subprocess, typing, src.services.docker.container +- config_staging.py | Stages configuration files into instance directories with path security validation and environment file generation. | exp: func:ensure_instance_directory(instance_id: str, base_path) → str, call:Settings, call:Path, call:instance_dir.mkdir, call:str, call:instance_dir.absolute, func:write_env_file(instance_dir: str, env_vars: dict[str, str]) → str, call:Path, call:env_vars.items, call:env_path.write_text, call:"\n".join, call:str, func:write_config_files(instance_dir: str, files: dict[str, str]) → None, call:Path, call:files.items, call:full_path.resolve().relative_to, call:instance_path.resolve, call:full_path.parent.mkdir, call:full_path.write_text, raise:ValueError | dep: logging, pathlib, src.config, src.config.Settings +- container.py | Provides utility functions for querying Docker container runtime state, managing network connections, and finding free ports via subprocess calls to the Docker CLI. | exp: func:get_container_id(instance_name: str) → str | None, call:instance_name.lower, call:subprocess.run, call:result.stdout.strip, call:ps_result.stdout.strip().splitlines, call:line.split, call:len, call:name.lower, func:get_container_name(instance_name: str) → str | None, call:subprocess.run, call:instance_name.lower, call:result.stdout.strip().lstrip, func:get_backend_network_name() → str, call:subprocess.run, call:result.stdout.strip().split, call:net.lower, func:connect_container_to_network(container_name: str, network_name) → bool, call:get_backend_network_name, call:subprocess.run, func:get_container_ip_on_network(container_id: str, network_name) → str | None, call:get_backend_network_name, call:subprocess.run, call:result.stdout.strip, func:is_container_on_network(container_id: str, network_name) → bool, call:get_backend_network_name, call:subprocess.run, func:get_container_status(container_id: str) → dict[str, Any], call:subprocess.run, call:result.stdout.strip().split, call:int, call:len, call:parts[1].isdigit, func:wait_for_container_running(container_id: str, timeout, interval) → dict[str, Any], call:time.time, call:get_container_status, call:time.sleep, func:get_container_logs(container_id: str, tail) → str, call:subprocess.run, call:str, func:find_free_port(start, end) → int, call:range, call:socket.socket, call:s.connect_ex, raise:RuntimeError | dep: logging, subprocess, time, typing, socket +- tunnel.py | Manages Cloudflare tunnels by orchestrating cloudflared Docker containers to expose internal services via temporary public URLs. | exp: func:_tunnel_container_name(instance_name: str) → str, call:instance_name.lower, func:_ensure_image() → None, call:subprocess.run, call:result.stdout.strip, call:logger.info, call:logger.warning, func:_cleanup_stale_tunnel(tunnel_name: str) → None, call:subprocess.run, func:_get_tunnel_logs(tunnel_name: str) → tuple[str, str], call:subprocess.run, func:_get_tunnel_exit_code(tunnel_name: str) → int | None, call:subprocess.run, call:int, call:result.stdout.strip, func:start_tunnel(instance_name: str, container_port: int, timeout, target_url) → dict[str, str], call:_ensure_image, call:_tunnel_container_name, call:_cleanup_stale_tunnel, call:instance_name.lower, call:get_backend_network_name, call:logger.debug, call:" ".join, call:subprocess.run, call:proc.stdout.strip, call:re.compile, call:__import__("time").time, call:_get_tunnel_logs, call:url_pattern.search, call:match.group, call:_get_tunnel_exit_code, call:__import__("time").sleep, call:logger.info, raise:RuntimeError, func:stop_tunnel(instance_name: str) → None, call:_tunnel_container_name, call:_cleanup_stale_tunnel, call:logger.debug, func:recreate_tunnel(instance_name: str, container_port: int, target_url) → dict[str, str], call:stop_tunnel, call:start_tunnel, func:check_tunnel_health(url: str, timeout) → dict[str, Any], call:subprocess.run, call:int, call:result.stdout.strip, call:str(exc).lower, call:any | dep: logging, re, subprocess, typing, src.services.docker.container, time ## arch -Subprocess-based CLI wrapper architecture with template-driven file generation, security-validated file staging, and container-orchestrated tunnel proxying. +Modular service-oriented architecture with CLI-wrapper pattern for Docker operations, template-based file generation, and subprocess-based external tool orchestration. ## tags tunnel, container, call:subprocess.run, get, name, call:, network, call:result.stdout.strip ## symbols diff --git a/apps/api/src/services/git/.pi-map.index.md b/apps/api/src/services/git/.pi-map.index.md index 464c9da..0d21e31 100644 --- a/apps/api/src/services/git/.pi-map.index.md +++ b/apps/api/src/services/git/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/src/services/git ## role -Encapsulates all Git version control operations for workspace management, providing both synchronous and asynchronous interfaces for repository cloning, commit history, branch management, and remote operations with SSH authentication support. +Provides Git repository operations for the API, including cloning, fetching, pulling, and branch management with SSH authentication support for workspace management. ## parent index: apps/api/src/services/.pi-map.index.md map: apps/api/src/services/.pi-map.md diff --git a/apps/api/src/services/git/.pi-map.md b/apps/api/src/services/git/.pi-map.md index 1e50426..3129195 100644 --- a/apps/api/src/services/git/.pi-map.md +++ b/apps/api/src/services/git/.pi-map.md @@ -4,17 +4,17 @@ dir: apps/api/src/services/git index: apps/api/src/services/git/.pi-map.index.md ## role -Encapsulates all Git version control operations for workspace management, providing both synchronous and asynchronous interfaces for repository cloning, commit history, branch management, and remote operations with SSH authentication support. +Provides Git repository operations for the API, including cloning, fetching, pulling, and branch management with SSH authentication support for workspace management. ## files -- __init__.py | Exports the public API for the git services module by re-exporting key classes and functions from submodules. | dep: src.services.git.clone, src.services.git.git_operations, src.services.git.git_service -- clone.py | Provides git repository cloning with optional SSH authentication, dirty state checking, and cleanup utilities | exp: func:clone_repository(remote_url: str, ssh_key_path: str | None, instance_dir: str, branch) → str, call:Path, call:clone_path.mkdir, call:os.environ.copy, call:str, call:logger.debug, call:subprocess.run, call:logger.error, raise:RuntimeError, func:check_dirty_state(clone_path: str) → tuple[bool, list[str]], call:subprocess.run, call:logger.warning, call:line.strip, call:result.stdout.split, call:len, func:remove_clone_directory(instance_dir: str) → None, call:Path, call:clone_path.exists, call:shutil.rmtree, call:logger.debug | dep: logging, os, subprocess, pathlib, shutil -- git_operations.py | Provides asynchronous git operations (status, commit, push, pull, fetch, checkout, history, branches) scoped to a workspace directory by wrapping git CLI commands. | exp: class:GitStatus, class:Commit, class:GitOperations, method:__init__(self, workspace: Workspace) → None, method:_run(self, *cmd: str) → tuple[int, str, str], call:asyncio.create_subprocess_exec, call:proc.communicate, call:stdout.decode, call:stderr.decode, method:status(self) → GitStatus, call:self._run, call:stdout.splitlines, call:line.startswith, call:line[3:].strip, call:branch_info.split("[ahead ")[1].split, call:int, call:ahead_str.split, call:branch_info.split("[behind ")[1].split, call:behind_str.split, call:len, call:untracked.append, call:deleted.append, call:added.append, call:modified.append, call:GitStatus, method:commit(self, message: str) → None, call:self._run, call:logger.info, raise:RuntimeError, method:push(self) → None, call:self._run, call:logger.info, raise:RuntimeError, method:pull(self) → None, call:self._run, call:logger.info, raise:RuntimeError, method:fetch(self) → None, call:self._run, call:logger.info, raise:RuntimeError, method:checkout(self, branch: str) → None, call:self._run, call:logger.info, raise:RuntimeError, method:history(self, path, limit) → list[Commit], call:cmd.extend, call:self._run, call:stdout.strip().splitlines, call:line.split, call:len, call:commits.append, call:Commit, raise:RuntimeError, method:branches(self) → tuple[list[str], str], call:self._run, call:stdout.strip().splitlines, call:line.strip, call:line.startswith, call:line.endswith, call:line.replace, call:branches.append, raise:RuntimeError | dep: asyncio, logging, dataclasses, src.models, src.models.Workspace -- git_service.py | Provides asynchronous and synchronous git operations (clone, fetch, pull, branch check) with SSH key support for workspace management. | exp: class:GitService | dep: asyncio, logging, os, subprocess, tempfile -- operations.py | Provides git repository operations including cloning, initialization, remote validation, and branch listing with SSH key authentication support. | exp: func:get_repo_path(user_id: uuid.UUID, project_id: uuid.UUID, name: str) → str, call:Settings, call:os.path.join, call:str, func:build_provider_clone_url(owner: str, repo: str) → str, func:prepare_ssh_env(ssh_key: SSHKey | None) → tuple[dict, str] | None, call:_get_fernet, call:fernet.decrypt(ssh_key.private_key_encrypted.encode()).decode, call:ssh_key.private_key_encrypted.encode, call:tempfile.mkstemp, call:os.write, call:private_key.encode, call:os.close, call:os.chmod, func:preflight_remote_repository(remote_url: str, ssh_key) → None, call:prepare_ssh_env, call:subprocess.run, call:os.path.exists, call:os.unlink, call:logger.error, raise:HTTPException, func:clone_working_repository(remote_url: str, repo_path: str, ssh_key) → None, call:prepare_ssh_env, call:subprocess.run, call:os.path.exists, call:os.unlink, call:logger.error, raise:HTTPException, func:init_working_repository(repo_path: str) → None, call:subprocess.run, raise:HTTPException, func:list_remote_branches(remote_url: str, ssh_key) → tuple[list[str], str], call:prepare_ssh_env, call:subprocess.run, call:logger.warning, call:result.stdout.strip().split, call:line.split, call:len, call:ref.startswith, call:branches.append, call:str, call:os.path.exists, call:os.unlink, raise:RuntimeError | dep: logging, os, subprocess, uuid, fastapi, src.config, src.models, src.services.shared.ssh_keys, tempfile +- __init__.py | Exports the public API for the git services module by re-exporting functions and classes from submodules. | dep: src.services.git.clone, src.services.git.git_operations, src.services.git.git_service +- clone.py | Provides a service for cloning Git repositories, checking for uncommitted changes, and cleaning up clone directories. | exp: func:clone_repository(remote_url: str, ssh_key_path: str | None, instance_dir: str, branch) → str, call:Path, call:clone_path.mkdir, call:os.environ.copy, call:str, call:logger.debug, call:subprocess.run, call:logger.error, raise:RuntimeError, func:check_dirty_state(clone_path: str) → tuple[bool, list[str]], call:subprocess.run, call:logger.warning, call:line.strip, call:result.stdout.split, call:len, func:remove_clone_directory(instance_dir: str) → None, call:Path, call:clone_path.exists, call:shutil.rmtree, call:logger.debug | dep: logging, os, subprocess, pathlib, shutil +- git_operations.py | Provides an async Python interface for executing git commands within a workspace directory, parsing output into structured data types. | exp: class:GitStatus, class:Commit, class:GitOperations, method:__init__(self, workspace: Workspace) → None, method:_run(self, *cmd: str) → tuple[int, str, str], call:asyncio.create_subprocess_exec, call:proc.communicate, call:stdout.decode, call:stderr.decode, method:status(self) → GitStatus, call:self._run, call:stdout.splitlines, call:line.startswith, call:line[3:].strip, call:branch_info.split("[ahead ")[1].split, call:int, call:ahead_str.split, call:branch_info.split("[behind ")[1].split, call:behind_str.split, call:len, call:untracked.append, call:deleted.append, call:added.append, call:modified.append, call:GitStatus, method:commit(self, message: str) → None, call:self._run, call:logger.info, raise:RuntimeError, method:push(self) → None, call:self._run, call:logger.info, raise:RuntimeError, method:pull(self) → None, call:self._run, call:logger.info, raise:RuntimeError, method:fetch(self) → None, call:self._run, call:logger.info, raise:RuntimeError, method:checkout(self, branch: str) → None, call:self._run, call:logger.info, raise:RuntimeError, method:history(self, path, limit) → list[Commit], call:cmd.extend, call:self._run, call:stdout.strip().splitlines, call:line.split, call:len, call:commits.append, call:Commit, raise:RuntimeError, method:branches(self) → tuple[list[str], str], call:self._run, call:stdout.strip().splitlines, call:line.strip, call:line.startswith, call:line.endswith, call:line.replace, call:branches.append, raise:RuntimeError | dep: asyncio, logging, dataclasses, src.models, src.models.Workspace +- git_service.py | Provides asynchronous and synchronous git operations (clone, fetch, pull, branch checking) with SSH key authentication support for workspace management. | exp: class:GitService | dep: asyncio, logging, os, subprocess, tempfile +- operations.py | Provides git repository operations including clone, init, preflight checks, and branch listing with SSH key authentication support. | exp: func:get_repo_path(user_id: uuid.UUID, project_id: uuid.UUID, name: str) → str, call:Settings, call:os.path.join, call:str, func:build_provider_clone_url(owner: str, repo: str) → str, func:prepare_ssh_env(ssh_key: SSHKey | None) → tuple[dict, str] | None, call:_get_fernet, call:fernet.decrypt(ssh_key.private_key_encrypted.encode()).decode, call:ssh_key.private_key_encrypted.encode, call:tempfile.mkstemp, call:os.write, call:private_key.encode, call:os.close, call:os.chmod, func:preflight_remote_repository(remote_url: str, ssh_key) → None, call:prepare_ssh_env, call:subprocess.run, call:os.path.exists, call:os.unlink, call:logger.error, raise:HTTPException, func:clone_working_repository(remote_url: str, repo_path: str, ssh_key) → None, call:prepare_ssh_env, call:subprocess.run, call:os.path.exists, call:os.unlink, call:logger.error, raise:HTTPException, func:init_working_repository(repo_path: str) → None, call:subprocess.run, raise:HTTPException, func:list_remote_branches(remote_url: str, ssh_key) → tuple[list[str], str], call:prepare_ssh_env, call:subprocess.run, call:logger.warning, call:result.stdout.strip().split, call:line.split, call:len, call:ref.startswith, call:branches.append, call:str, call:os.path.exists, call:os.unlink, raise:RuntimeError | dep: logging, os, subprocess, uuid, fastapi, src.config, src.models, src.services.shared.ssh_keys, tempfile ## arch -Layered abstraction pattern with three implementation tiers: low-level CLI wrappers (git_operations.py, operations.py), mid-level service coordinators (git_service.py), and high-level specialized utilities (clone.py), unified through __init__.py re-exports to present a single public API surface. +Layered service architecture with separation between async command execution (git_operations.py), high-level async/sync service orchestration (git_service.py), and specific operation implementations (clone.py, operations.py), using re-export pattern (__init__.py) for clean public API surfacing. ## tags -git, raise:runtime, error, run, call:self., clone, call:subprocess.run, ssh +git, raise:runtime, error, run, call:self., clone, call:subprocess.run, call:logger.info ## symbols - GitStatus - Commit diff --git a/apps/api/src/services/instance/.pi-map.index.md b/apps/api/src/services/instance/.pi-map.index.md index a9ec2aa..01d051e 100644 --- a/apps/api/src/services/instance/.pi-map.index.md +++ b/apps/api/src/services/instance/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/src/services/instance ## role -Coordinates tool instance lifecycle events, health monitoring, and notifications across the API service. +Provides infrastructure for managing tool instance lifecycles, health monitoring, and event-driven communication within the API service. ## parent index: apps/api/src/services/.pi-map.index.md map: apps/api/src/services/.pi-map.md diff --git a/apps/api/src/services/instance/.pi-map.md b/apps/api/src/services/instance/.pi-map.md index ccc977e..047cb52 100644 --- a/apps/api/src/services/instance/.pi-map.md +++ b/apps/api/src/services/instance/.pi-map.md @@ -4,14 +4,14 @@ dir: apps/api/src/services/instance index: apps/api/src/services/instance/.pi-map.index.md ## role -Coordinates tool instance lifecycle events, health monitoring, and notifications across the API service. +Provides infrastructure for managing tool instance lifecycles, health monitoring, and event-driven communication within the API service. ## files -- __init__.py | Exports public API for instance lifecycle services module | dep: src.services.instance.event_bus, src.services.instance.health_monitor, src.services.instance.lifecycle_hooks +- __init__.py | Exports the public API for the instance lifecycle services module. | dep: src.services.instance.event_bus, src.services.instance.health_monitor, src.services.instance.lifecycle_hooks - event_bus.py | Implements a singleton in-memory typed event bus with publish/subscribe pattern for instance lifecycle and health events, supporting both sync and async callbacks with exception isolation. | exp: class:InstanceEventBus, method:__init__(self) → None, method:__new__(cls) → "InstanceEventBus", call:super().__new__, method:_reset_for_testing(self) → None, call:self._subscribers.clear, method:subscribe(self, event_type: str, callback: EventCallback) → Callable[[], None], call:str, call:uuid.uuid4, call:self._subscribers[event_type].append, call:self.unsubscribe, method:unsubscribe(self, event_type: str, callback_id: str) → None, method:unsubscribe_all(self, event_type: str) → None, call:self._subscribers.pop, method:publish(self, event_type: str, payload: InstanceEventPayload) → None, call:callbacks.extend, call:self._subscribers.get, call:inspect.iscoroutinefunction, call:callback, call:payload.get, call:logger.exception | dep: asyncio, inspect, logging, uuid, collections.abc, typing -- health_monitor.py | Background health monitor that polls Docker container and tunnel health for tool instances, publishes state change events, and creates notifications for errors/unhealthy states. | exp: class:HealthSnapshot, class:HealthMonitor, method:__init__(self, event_bus: InstanceEventBus) → None, method:start(self) → None, call:self._task.done, call:asyncio.get_running_loop, call:loop.create_task, call:self._poll_loop, method:stop(self) → None, call:self._task.done, call:self._task.cancel, call:self._last_known_state.clear, method:_poll_loop(self) → None, call:asyncio.sleep, call:self._run_check_cycle, call:logger.exception, method:_run_check_cycle(self) → None, call:SessionLocal, call:session.execute, call:select(ToolInstance).where, call:ToolInstance.status.in_, call:result.scalars().all, call:self._check_instance, method:_check_instance(self, session: AsyncSession, instance: ToolInstance) → None, call:logger.debug, call:get_container_status, call:logger.exception, call:str, call:get_correlation_id, call:check_tunnel_health, call:tunnel_result.get, call:HealthSnapshot, call:self._last_known_state.get, call:self._derive_status, call:self._snapshots_equal, call:self._handle_state_change, method:_derive_status(self, snapshot: HealthSnapshot, previous: HealthSnapshot | None, current_status: str | None) → str, method:_snapshots_equal(self, a: HealthSnapshot, b: HealthSnapshot) → bool, method:_handle_state_change(self, session: AsyncSession, instance: ToolInstance, previous: HealthSnapshot | None, snapshot: HealthSnapshot, new_status: str) → None, call:HealthCheck, call:session.add, call:session.commit, call:get_correlation_id, call:str, call:datetime.now(timezone.utc).isoformat, call:self._event_bus.publish, call:notification_service.create_notification, call:logger.exception | dep: asyncio, logging, uuid, dataclasses, datetime, sqlalchemy, sqlalchemy.ext.asyncio, src.database, src.models, src.services.shared.correlation, src.services.docker, src.services.shared.tunnel, src.services.instance.event_bus, src.services.shared.notification_service -- lifecycle_hooks.py | Provides helpers to publish tool instance lifecycle events, persist audit records, and conditionally send user notifications. | exp: func:_derive_title(event_type: str) → str, call:mapping.get, call:event_type.replace("instance.", "").replace("_", " ").title, func:_should_notify(event_type: str, status: str | None) → bool, func:_build_payload(event_type: str, instance: ToolInstance, status, message, metadata) → InstanceEventPayload, call:str, call:datetime.now(timezone.utc).isoformat, call:get_correlation_id, func:_write_audit_row(session: AsyncSession, instance: ToolInstance, event_type: str, created_by, status, message, metadata) → InstanceEvent, call:InstanceEvent, call:event_type.replace, call:session.add, call:session.commit, func:publish_lifecycle_event(event_bus: InstanceEventBus, session: AsyncSession, instance: ToolInstance, event_type: str, created_by, status, message, metadata) → None, call:_build_payload, call:_write_audit_row, call:event_bus.publish, call:_should_notify, call:_derive_title, call:notification_service.create_notification, call:logger.exception, call:payload.get | dep: logging, uuid, datetime, sqlalchemy.ext.asyncio, src.models, src.services.shared.correlation, src.services.instance.event_bus, src.services.shared.notification_service +- health_monitor.py | Background health monitor that polls Docker container and tunnel health for tool instances, updating database state and publishing events on status changes. | exp: class:HealthSnapshot, class:HealthMonitor, method:__init__(self, event_bus: InstanceEventBus) → None, method:start(self) → None, call:self._task.done, call:asyncio.get_running_loop, call:loop.create_task, call:self._poll_loop, method:stop(self) → None, call:self._task.done, call:self._task.cancel, call:self._last_known_state.clear, method:_poll_loop(self) → None, call:asyncio.sleep, call:self._run_check_cycle, call:logger.exception, method:_run_check_cycle(self) → None, call:SessionLocal, call:session.execute, call:select(ToolInstance).where, call:ToolInstance.status.in_, call:result.scalars().all, call:self._check_instance, method:_check_instance(self, session: AsyncSession, instance: ToolInstance) → None, call:logger.debug, call:get_container_status, call:logger.exception, call:str, call:get_correlation_id, call:check_tunnel_health, call:tunnel_result.get, call:HealthSnapshot, call:self._last_known_state.get, call:self._derive_status, call:self._snapshots_equal, call:self._handle_state_change, method:_derive_status(self, snapshot: HealthSnapshot, previous: HealthSnapshot | None, current_status: str | None) → str, method:_snapshots_equal(self, a: HealthSnapshot, b: HealthSnapshot) → bool, method:_handle_state_change(self, session: AsyncSession, instance: ToolInstance, previous: HealthSnapshot | None, snapshot: HealthSnapshot, new_status: str) → None, call:HealthCheck, call:session.add, call:session.commit, call:get_correlation_id, call:str, call:datetime.now(timezone.utc).isoformat, call:self._event_bus.publish, call:notification_service.create_notification, call:logger.exception | dep: asyncio, logging, uuid, dataclasses, datetime, sqlalchemy, sqlalchemy.ext.asyncio, src.database, src.models, src.services.shared.correlation, src.services.docker, src.services.shared.tunnel, src.services.instance.event_bus, src.services.shared.notification_service +- lifecycle_hooks.py | Publishes tool instance lifecycle events to an event bus, writes audit rows to the database, and conditionally sends notifications for errors and ready-state transitions. | exp: func:_derive_title(event_type: str) → str, call:mapping.get, call:event_type.replace("instance.", "").replace("_", " ").title, func:_should_notify(event_type: str, status: str | None) → bool, func:_build_payload(event_type: str, instance: ToolInstance, status, message, metadata) → InstanceEventPayload, call:str, call:datetime.now(timezone.utc).isoformat, call:get_correlation_id, func:_write_audit_row(session: AsyncSession, instance: ToolInstance, event_type: str, created_by, status, message, metadata) → InstanceEvent, call:InstanceEvent, call:event_type.replace, call:session.add, call:session.commit, func:publish_lifecycle_event(event_bus: InstanceEventBus, session: AsyncSession, instance: ToolInstance, event_type: str, created_by, status, message, metadata) → None, call:_build_payload, call:_write_audit_row, call:event_bus.publish, call:_should_notify, call:_derive_title, call:notification_service.create_notification, call:logger.exception, call:payload.get | dep: logging, uuid, datetime, sqlalchemy.ext.asyncio, src.models, src.services.shared.correlation, src.services.instance.event_bus, src.services.shared.notification_service ## arch -Observer pattern via typed singleton event bus with async/sync subscribers, background polling loops, and side-effect hooks for persistence and notifications. +Event-driven architecture using a singleton in-memory pub/sub event bus with typed events, background polling workers, and lifecycle hooks that coordinate database updates, audit logging, and notifications through exception-isolated sync/async callbacks. ## tags call:self., instance, src, services, event, health, call:logger.exception, check ## symbols diff --git a/apps/api/src/services/shared/.pi-map.index.md b/apps/api/src/services/shared/.pi-map.index.md index f7d012b..fa07bb9 100644 --- a/apps/api/src/services/shared/.pi-map.index.md +++ b/apps/api/src/services/shared/.pi-map.index.md @@ -2,14 +2,12 @@ dir: apps/api/src/services/shared ## role -Provides common, cross-cutting backend services used by multiple API components for security, infrastructure, and user-facing operations. +Provides common cross-cutting infrastructure services used by multiple API domains including security, I/O, container orchestration, and workspace management. ## parent index: apps/api/src/services/.pi-map.index.md map: apps/api/src/services/.pi-map.md ## children -- apps/api/src/services/shared/.ruff_cache - index: apps/api/src/services/shared/.ruff_cache/.pi-map.index.md - map: apps/api/src/services/shared/.ruff_cache/.pi-map.md +- ## files - __init__.py - correlation.py @@ -26,7 +24,5 @@ map: apps/api/src/services/shared/.pi-map.md ## workflows - change shared behavior read: __init__.py, correlation.py, file_service.py -- explore shared subdirectories - index: apps/api/src/services/shared/.ruff_cache/.pi-map.index.md ## dirty - diff --git a/apps/api/src/services/shared/.pi-map.md b/apps/api/src/services/shared/.pi-map.md index a057055..0310957 100644 --- a/apps/api/src/services/shared/.pi-map.md +++ b/apps/api/src/services/shared/.pi-map.md @@ -4,21 +4,21 @@ dir: apps/api/src/services/shared index: apps/api/src/services/shared/.pi-map.index.md ## role -Provides common, cross-cutting backend services used by multiple API components for security, infrastructure, and user-facing operations. +Provides common cross-cutting infrastructure services used by multiple API domains including security, I/O, container orchestration, and workspace management. ## files -- __init__.py | Re-exports shared service classes and functions from a services package to provide a unified public API | dep: src.services.shared.correlation, src.services.shared.file_service, src.services.shared.notification_service, src.services.shared.permission_fixer, src.services.shared.readiness_probe, src.services.shared.ssh_keys, src.services.shared.tunnel, src.services.shared.workspace_manager, correlation, file_service, notification_service, permission_fixer, readiness_probe, ssh_keys, tunnel, workspace_manager +- __init__.py | Re-exports shared service components from submodules to provide a unified public API for the shared services module. | dep: src.services.shared.correlation, src.services.shared.file_service, src.services.shared.notification_service, src.services.shared.permission_fixer, src.services.shared.readiness_probe, src.services.shared.ssh_keys, src.services.shared.tunnel, src.services.shared.workspace_manager - correlation.py | Provides async correlation ID tracking via context variables and FastAPI middleware for request tracing. | exp: class:CorrelationIdMiddleware, method:dispatch(self, request: Request, call_next), call:request.headers.get, call:str, call:uuid.uuid4, call:CORRELATION_ID.set, call:call_next, call:CORRELATION_ID.reset, func:get_correlation_id() → str, call:CORRELATION_ID.get, call:str, call:uuid.uuid4 | dep: contextvars, uuid, fastapi, starlette.middleware.base, fastapi.Request, starlette.middleware.base.BaseHTTPMiddleware -- file_service.py | Provides safe file operations (list, read, write) scoped within a workspace directory with path traversal protection. | exp: class:FileEntry, class:FileService, method:list_directory(self, workspace: Workspace, relative_path) → list[FileEntry], call:os.path.join, call:os.path.normpath, call:abs_path.startswith, call:os.path.exists, call:sorted, call:os.listdir, call:os.path.isdir, call:os.path.getsize, call:os.path.isfile, call:entries.append, call:FileEntry, call:rel.replace, call:entries.sort, call:e.name.lower, raise:ValueError, method:read_file(self, workspace: Workspace, relative_path: str) → str, call:self._resolve_path, call:os.path.isfile, call:open, call:f.read, raise:FileNotFoundError, raise:ValueError, method:write_file(self, workspace: Workspace, relative_path: str, content: str) → None, call:self._resolve_path, call:os.makedirs, call:os.path.dirname, call:open, call:f.write, call:logger.info, method:_resolve_path(self, workspace: Workspace, relative_path: str) → str, call:os.path.normpath, call:os.path.join, call:abs_path.startswith, raise:ValueError | dep: logging, os, dataclasses, src.models, src.models.Workspace -- notification_service.py | Provides an async singleton service for creating, listing, reading, and dismissing user-owned notifications with strict ownership isolation. | exp: class:NotificationService, method:create_notification(self, session: AsyncSession, user_id: uuid.UUID, category: str, severity: str, title: str, message, source_type, source_id, metadata) → Notification, call:Notification, call:session.add, call:session.commit, call:session.refresh, method:list_notifications(self, session: AsyncSession, user_id: uuid.UUID, limit, offset, unread_only, mute_categories) → tuple[list[Notification], int], call:Notification.dismissed_at.is_, call:where_clauses.append, call:Notification.read_at.is_, call:Notification.category.not_in, call:select(func.count()).select_from(Notification).where, call:func.count, call:session.execute, call:total_result.scalar_one, call:select(Notification) .where(*where_clauses) .order_by(Notification.created_at.desc()) .limit(limit) .offset, call:Notification.created_at.desc, call:list, call:items_result.scalars().all, method:get_unread_count(self, session: AsyncSession, user_id: uuid.UUID) → int, call:select(func.count()) .select_from(Notification) .where, call:func.count, call:Notification.read_at.is_, call:Notification.dismissed_at.is_, call:session.execute, call:result.scalar_one, method:mark_read(self, session: AsyncSession, notification_id: uuid.UUID, user_id: uuid.UUID) → Notification, call:self._get_owned_notification, call:datetime.now, call:session.commit, call:session.refresh, method:mark_all_read(self, session: AsyncSession, user_id: uuid.UUID) → int, call:update(Notification) .where( Notification.user_id == user_id, Notification.read_at.is_(None), Notification.dismissed_at.is_(None), ) .values, call:Notification.read_at.is_, call:Notification.dismissed_at.is_, call:datetime.now, call:session.execute, call:session.commit, method:dismiss_all(self, session: AsyncSession, user_id: uuid.UUID) → int, call:update(Notification) .where( Notification.user_id == user_id, Notification.dismissed_at.is_(None), ) .values, call:Notification.dismissed_at.is_, call:datetime.now, call:session.execute, call:session.commit, method:dismiss(self, session: AsyncSession, notification_id: uuid.UUID, user_id: uuid.UUID) → None, call:self._get_owned_notification, call:datetime.now, call:session.commit, method:_get_owned_notification(self, session: AsyncSession, notification_id: uuid.UUID, user_id: uuid.UUID) → Notification, call:session.get, raise:ValueError | dep: uuid, datetime, typing, sqlalchemy, sqlalchemy.engine, sqlalchemy.ext.asyncio, src.models, src.models.Notification +- file_service.py | Provides secure file operations (list, read, write) scoped within a workspace directory with path traversal protection. | exp: class:FileEntry, class:FileService, method:list_directory(self, workspace: Workspace, relative_path) → list[FileEntry], call:os.path.join, call:os.path.normpath, call:abs_path.startswith, call:os.path.exists, call:sorted, call:os.listdir, call:os.path.isdir, call:os.path.getsize, call:os.path.isfile, call:entries.append, call:FileEntry, call:rel.replace, call:entries.sort, call:e.name.lower, raise:ValueError, method:read_file(self, workspace: Workspace, relative_path: str) → str, call:self._resolve_path, call:os.path.isfile, call:open, call:f.read, raise:FileNotFoundError, raise:ValueError, method:write_file(self, workspace: Workspace, relative_path: str, content: str) → None, call:self._resolve_path, call:os.makedirs, call:os.path.dirname, call:open, call:f.write, call:logger.info, method:_resolve_path(self, workspace: Workspace, relative_path: str) → str, call:os.path.normpath, call:os.path.join, call:abs_path.startswith, raise:ValueError | dep: logging, os, dataclasses, src.models, src.models.Workspace +- notification_service.py | Provides a singleton service for creating, listing, reading, and dismissing user-owned notifications with strict ownership isolation via SQLAlchemy async operations. | exp: class:NotificationService, method:create_notification(self, session: AsyncSession, user_id: uuid.UUID, category: str, severity: str, title: str, message, source_type, source_id, metadata) → Notification, call:Notification, call:session.add, call:session.commit, call:session.refresh, method:list_notifications(self, session: AsyncSession, user_id: uuid.UUID, limit, offset, unread_only, mute_categories) → tuple[list[Notification], int], call:Notification.dismissed_at.is_, call:where_clauses.append, call:Notification.read_at.is_, call:Notification.category.not_in, call:select(func.count()).select_from(Notification).where, call:func.count, call:session.execute, call:total_result.scalar_one, call:select(Notification) .where(*where_clauses) .order_by(Notification.created_at.desc()) .limit(limit) .offset, call:Notification.created_at.desc, call:list, call:items_result.scalars().all, method:get_unread_count(self, session: AsyncSession, user_id: uuid.UUID) → int, call:select(func.count()) .select_from(Notification) .where, call:func.count, call:Notification.read_at.is_, call:Notification.dismissed_at.is_, call:session.execute, call:result.scalar_one, method:mark_read(self, session: AsyncSession, notification_id: uuid.UUID, user_id: uuid.UUID) → Notification, call:self._get_owned_notification, call:datetime.now, call:session.commit, call:session.refresh, method:mark_all_read(self, session: AsyncSession, user_id: uuid.UUID) → int, call:update(Notification) .where( Notification.user_id == user_id, Notification.read_at.is_(None), Notification.dismissed_at.is_(None), ) .values, call:Notification.read_at.is_, call:Notification.dismissed_at.is_, call:datetime.now, call:session.execute, call:session.commit, method:dismiss_all(self, session: AsyncSession, user_id: uuid.UUID) → int, call:update(Notification) .where( Notification.user_id == user_id, Notification.dismissed_at.is_(None), ) .values, call:Notification.dismissed_at.is_, call:datetime.now, call:session.execute, call:session.commit, method:dismiss(self, session: AsyncSession, notification_id: uuid.UUID, user_id: uuid.UUID) → None, call:self._get_owned_notification, call:datetime.now, call:session.commit, method:_get_owned_notification(self, session: AsyncSession, notification_id: uuid.UUID, user_id: uuid.UUID) → Notification, call:session.get, raise:ValueError | dep: uuid, datetime, typing, sqlalchemy, sqlalchemy.engine, sqlalchemy.ext.asyncio, src.models, src.models.Notification - permission_fixer.py | Applies mount and SSH permission policies inside running Docker containers by executing chown/chmod commands via docker exec as root. | exp: class:PermissionFixError, func:apply_mount_permissions(container_id: str, mounts: list[dict], timeout) → list[dict[str, Any]], call:mount.get, call:logger.debug, call:results.append, call:_run_in_container, call:str, call:logger.warning, func:_exec_and_log(container_id: str, command: list[str], timeout: int, description: str) → str, call:logger.debug, call:" ".join, call:subprocess.run, call:result.stdout.strip, call:result.stderr.strip, raise:PermissionFixError, func:apply_ssh_permissions(container_id: str, ssh_target: str, container_user: str, timeout) → dict[str, Any], call:_exec_and_log, call:logger.info, call:str, call:logger.warning, func:_run_in_container(container_id: str, command: list[str], timeout: int) → None, call:subprocess.run, raise:PermissionFixError, func:check_root_user_available(container_id: str, timeout) → bool, call:_run_in_container | dep: logging, subprocess, typing -- readiness_probe.py | Executes a retryable readiness probe command inside a Docker container with configurable timeout and interval | exp: func:execute_probe(container_id: str, command: str, timeout, interval) → tuple[bool, list[str]], call:asyncio.get_event_loop().time, call:logs.append, call:logger.debug, call:subprocess.run, call:result.stdout.strip, call:result.stderr.strip, call:asyncio.sleep | dep: asyncio, logging, subprocess -- ssh_keys.py | Decrypts and writes SSH key files to instance directories for container mounting, with optional ownership configuration and SSH config generation. | exp: func:_get_fernet() → Fernet, call:Settings, call:hashlib.sha256(settings.session_secret.encode()).digest, call:settings.session_secret.encode, call:base64.urlsafe_b64encode, call:Fernet, func:_sanitize_filename(name: str) → str, call:re.sub, call:sanitized.strip, func:prepare_ssh_key_files(instance_dir: str, ssh_key, subdir, uid, gid, key_filename, write_config) → str, call:Path, call:ssh_dir.mkdir, call:_get_fernet, call:fernet.decrypt(ssh_key.private_key_encrypted.encode()).decode, call:ssh_key.private_key_encrypted.encode, call:private_key_path.write_text, call:os.chmod, call:public_key_path.write_text, call:config_path.write_text, call:os.chown, call:logger.debug, call:logger.warning, call:os.getuid, call:str, func:write_ssh_config(ssh_dir: str, key_filenames: list[str], uid, gid) → None, call:Path, call:ssh_dir_path.mkdir, call:lines.append, call:"\n".join, call:config_path.write_text, call:os.chmod, call:os.chown, func:cleanup_ssh_key_files(instance_dir: str) → None, call:Path, call:ssh_dir.exists, call:ssh_dir.iterdir, call:file_path.unlink, call:ssh_dir.rmdir | dep: logging, os, re, pathlib, cryptography.fernet, src.config, base64, hashlib -- tunnel.py | Re-exports Docker tunnel functions from a nested module for backward compatibility. | dep: src.services.docker.tunnel -- workspace_manager.py | Manages workspace lifecycle operations including creation, deletion, synchronization, and migration of legacy tool instances into workspace-based repositories. | exp: class:SyncResult, class:WorkspaceHasInstancesError, method:__init__(self, instances: list[dict]) → None, call:super().__init__, call:len, class:WorkspaceManager, method:_workspace_path(self, workspace_id: uuid.UUID, repo: "GitRepository") → str, call:os.path.join, call:str, call:self._repo_directory_name, method:create(self, repo: GitRepository, user_id: uuid.UUID, name: str, branch, session) → Workspace, call:self._repo_directory_name, call:uuid.uuid4, call:os.path.join, call:str, call:logger.info, call:os.path.exists, call:logger.warning, call:shutil.rmtree, call:os.makedirs, call:contextlib.suppress, call:os.chmod, call:getattr, call:session.execute, call:select(SSHKey).where, call:result.scalar_one_or_none, call:_get_fernet, call:fernet.decrypt( ssh_key_obj.private_key_encrypted.encode() ).decode, call:ssh_key_obj.private_key_encrypted.encode, call:GitService.clone, call:logger.error, call:self._make_world_writable, call:Workspace, call:datetime.now, raise:ValueError, method:delete(self, workspace: Workspace, force, session) → None, call:self._get_instances, call:self._stop_and_delete_instance, call:os.path.exists, call:shutil.rmtree, call:logger.info, call:session.delete, raise:ValueError, raise:WorkspaceHasInstancesError, method:sync(self, workspace: Workspace, session) → SyncResult, call:logger.info, call:session.get, call:getattr, call:session.execute, call:select(SSHKey).where, call:result.scalar_one_or_none, call:_get_fernet, call:fernet.decrypt( ssh_key_obj.private_key_encrypted.encode() ).decode, call:ssh_key_obj.private_key_encrypted.encode, call:GitService.fetch, call:GitService.branch_exists_remotely, call:SyncResult, call:GitService.pull, call:self._make_world_writable, call:datetime.now, method:_make_world_writable(self, path: str) → None, call:contextlib.suppress, call:os.chmod, call:os.walk, call:os.path.join, call:os.stat, method:_get_instances(self, workspace: Workspace, session: AsyncSession) → list[ToolInstance], call:session.execute, call:select(ToolInstance).where, call:list, call:result.scalars().all, method:_stop_and_delete_instance(self, instance: ToolInstance, session: AsyncSession) → None, call:delete_tool_instance, call:logger.info, call:logger.error, method:ensure_instance_workspace(self, instance: ToolInstance, session: AsyncSession) → Workspace, call:session.get, call:self._workspace_name_exists, call:self._migrate_clone_into_workspace, call:self.create, call:session.add, call:session.commit, call:session.refresh, call:logger.info, raise:RuntimeError, method:_workspace_name_exists(self, session: AsyncSession, repo_id: uuid.UUID, name: str) → bool, call:session.execute, call:select(Workspace).where, call:result.scalar_one_or_none, method:_migrate_clone_into_workspace(self, instance: ToolInstance, repo: "GitRepository", session: AsyncSession, name: str) → Workspace, call:os.path.dirname, call:os.path.join, call:os.path.exists, call:uuid.uuid4, call:str, call:self._repo_directory_name, call:os.makedirs, call:contextlib.suppress, call:os.chmod, call:shutil.rmtree, call:shutil.move, call:self._make_world_writable, call:Workspace, call:datetime.now, call:session.add, call:session.flush, raise:RuntimeError | dep: contextlib, logging, os, shutil, stat, uuid, dataclasses, datetime, typing, sqlalchemy, src.models, src.services.git.git_service, src.services.shared.ssh_keys, src.utils.git_url_parser, sqlalchemy.ext.asyncio, src.services.tool.instance_service +- readiness_probe.py | Executes retryable readiness probe commands inside Docker containers with configurable timeout and interval. | exp: func:execute_probe(container_id: str, command: str, timeout, interval) → tuple[bool, list[str]], call:asyncio.get_event_loop().time, call:logs.append, call:logger.debug, call:subprocess.run, call:result.stdout.strip, call:result.stderr.strip, call:asyncio.sleep | dep: asyncio, logging, subprocess +- ssh_keys.py | Decrypts encrypted SSH keys and writes them to instance directories with proper permissions and SSH config files for container use. | exp: func:_get_fernet() → Fernet, call:Settings, call:hashlib.sha256(settings.session_secret.encode()).digest, call:settings.session_secret.encode, call:base64.urlsafe_b64encode, call:Fernet, func:_sanitize_filename(name: str) → str, call:re.sub, call:sanitized.strip, func:prepare_ssh_key_files(instance_dir: str, ssh_key, subdir, uid, gid, key_filename, write_config) → str, call:Path, call:ssh_dir.mkdir, call:_get_fernet, call:fernet.decrypt(ssh_key.private_key_encrypted.encode()).decode, call:ssh_key.private_key_encrypted.encode, call:private_key_path.write_text, call:os.chmod, call:public_key_path.write_text, call:config_path.write_text, call:os.chown, call:logger.debug, call:logger.warning, call:os.getuid, call:str, func:write_ssh_config(ssh_dir: str, key_filenames: list[str], uid, gid) → None, call:Path, call:ssh_dir_path.mkdir, call:lines.append, call:"\n".join, call:config_path.write_text, call:os.chmod, call:os.chown, func:cleanup_ssh_key_files(instance_dir: str) → None, call:Path, call:ssh_dir.exists, call:ssh_dir.iterdir, call:file_path.unlink, call:ssh_dir.rmdir | dep: logging, os, re, pathlib, cryptography.fernet, src.config, base64, hashlib, pathlib.Path, cryptography.fernet.Fernet, src.config.Settings +- tunnel.py | Re-exports docker tunnel functions for backward compatibility | dep: src.services.docker.tunnel +- workspace_manager.py | Manages the lifecycle of git-backed workspaces including creation, deletion, synchronization, and migration of legacy tool instances. | exp: class:SyncResult, class:WorkspaceHasInstancesError, method:__init__(self, instances: list[dict]) → None, call:super().__init__, call:len, class:WorkspaceManager, method:_workspace_path(self, workspace_id: uuid.UUID, repo: "GitRepository") → str, call:os.path.join, call:str, call:self._repo_directory_name, method:create(self, repo: GitRepository, user_id: uuid.UUID, name: str, branch, session) → Workspace, call:self._repo_directory_name, call:uuid.uuid4, call:os.path.join, call:str, call:logger.info, call:os.path.exists, call:logger.warning, call:shutil.rmtree, call:os.makedirs, call:contextlib.suppress, call:os.chmod, call:getattr, call:session.execute, call:select(SSHKey).where, call:result.scalar_one_or_none, call:_get_fernet, call:fernet.decrypt( ssh_key_obj.private_key_encrypted.encode() ).decode, call:ssh_key_obj.private_key_encrypted.encode, call:GitService.clone, call:logger.error, call:self._make_world_writable, call:Workspace, call:datetime.now, raise:ValueError, method:delete(self, workspace: Workspace, force, session) → None, call:self._get_instances, call:self._stop_and_delete_instance, call:os.path.exists, call:shutil.rmtree, call:logger.info, call:session.delete, raise:ValueError, raise:WorkspaceHasInstancesError, method:sync(self, workspace: Workspace, session) → SyncResult, call:logger.info, call:session.get, call:getattr, call:session.execute, call:select(SSHKey).where, call:result.scalar_one_or_none, call:_get_fernet, call:fernet.decrypt( ssh_key_obj.private_key_encrypted.encode() ).decode, call:ssh_key_obj.private_key_encrypted.encode, call:GitService.fetch, call:GitService.branch_exists_remotely, call:SyncResult, call:GitService.pull, call:self._make_world_writable, call:datetime.now, method:_make_world_writable(self, path: str) → None, call:contextlib.suppress, call:os.chmod, call:os.walk, call:os.path.join, call:os.stat, method:_get_instances(self, workspace: Workspace, session: AsyncSession) → list[ToolInstance], call:session.execute, call:select(ToolInstance).where, call:list, call:result.scalars().all, method:_stop_and_delete_instance(self, instance: ToolInstance, session: AsyncSession) → None, call:delete_tool_instance, call:logger.info, call:logger.error, method:ensure_instance_workspace(self, instance: ToolInstance, session: AsyncSession) → Workspace, call:session.get, call:self._workspace_name_exists, call:self._migrate_clone_into_workspace, call:self.create, call:session.add, call:session.commit, call:session.refresh, call:logger.info, raise:RuntimeError, method:_workspace_name_exists(self, session: AsyncSession, repo_id: uuid.UUID, name: str) → bool, call:session.execute, call:select(Workspace).where, call:result.scalar_one_or_none, method:_migrate_clone_into_workspace(self, instance: ToolInstance, repo: "GitRepository", session: AsyncSession, name: str) → Workspace, call:os.path.dirname, call:os.path.join, call:os.path.exists, call:uuid.uuid4, call:str, call:self._repo_directory_name, call:os.makedirs, call:contextlib.suppress, call:os.chmod, call:shutil.rmtree, call:shutil.move, call:self._make_world_writable, call:Workspace, call:datetime.now, call:session.add, call:session.flush, raise:RuntimeError | dep: contextlib, logging, os, shutil, stat, uuid, dataclasses, datetime, typing, sqlalchemy, src.models, src.services.git.git_service, src.services.shared.ssh_keys, src.utils.git_url_parser, sqlalchemy.ext.asyncio, src.services.tool.instance_service ## arch -Modular utility services following singleton and async patterns, with Docker/container integration, filesystem sandboxing, context-based request tracing, and strict resource ownership isolation. +Modular utility services with singleton patterns, async/await throughout, context variable propagation for request tracing, file-system sandboxing, and container-exec delegation for privileged operations. ## tags -error, call:self., get, workspace, src, key, call:str, call:session.execute +error, call:self., get, src, workspace, key, call:str, call:session.execute ## symbols - CorrelationIdMiddleware - FileEntry @@ -31,7 +31,5 @@ error, call:self., get, workspace, src, key, call:str, call:session.execute ## workflows - change shared behavior read: __init__.py, correlation.py, file_service.py -- explore shared subdirectories - index: apps/api/src/services/shared/.ruff_cache/.pi-map.index.md ## dirty - diff --git a/apps/api/src/services/terminal/.pi-map.index.md b/apps/api/src/services/terminal/.pi-map.index.md index f48672a..ec8359f 100644 --- a/apps/api/src/services/terminal/.pi-map.index.md +++ b/apps/api/src/services/terminal/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/src/services/terminal ## role -Provides WebSocket-connected terminal session management with PTY-based I/O for remote terminal access in the API server. +Provides backend infrastructure for managing interactive WebSocket-based terminal sessions within Docker containers, including session lifecycle, PTY I/O handling, and resource cleanup. ## parent index: apps/api/src/services/.pi-map.index.md map: apps/api/src/services/.pi-map.md diff --git a/apps/api/src/services/terminal/.pi-map.md b/apps/api/src/services/terminal/.pi-map.md index ae5a8d0..2775896 100644 --- a/apps/api/src/services/terminal/.pi-map.md +++ b/apps/api/src/services/terminal/.pi-map.md @@ -4,13 +4,13 @@ dir: apps/api/src/services/terminal index: apps/api/src/services/terminal/.pi-map.index.md ## role -Provides WebSocket-connected terminal session management with PTY-based I/O for remote terminal access in the API server. +Provides backend infrastructure for managing interactive WebSocket-based terminal sessions within Docker containers, including session lifecycle, PTY I/O handling, and resource cleanup. ## files -- __init__.py | Package initialization file that exports the public API for a terminal services module | dep: src.services.terminal.terminal_manager, src.services.terminal.terminal_session -- terminal_manager.py | Manages WebSocket-connected terminal sessions with lifecycle control, idle cleanup, database persistence, and per-instance session limits. | exp: class:MaxSessionsExceededError, method:__init__(self, instance_id: str, max_sessions) → None, call:super().__init__, class:TerminalManager, method:__init__(self) → None, call:self._start_idle_check, method:_start_idle_check(self) → None, call:self._idle_check_task.done, call:asyncio.get_running_loop, call:loop.create_task, call:self._idle_check_loop, method:_idle_check_loop(self) → None, call:asyncio.sleep, call:self._cleanup_idle_sessions, call:logger.error, method:_cleanup_idle_sessions(self) → None, call:list, call:self._sessions.items, call:session.is_idle, call:idle_keys.append, call:logger.info, call:self._sessions.pop, call:session.close, call:asyncio.create_task, call:self._mark_closed_in_db, method:_insert_db_session_row(self, session_id: str, instance_id: uuid.UUID, name: str) → None, call:SessionLocal, call:pg_insert(TerminalSessionModel) .values( id=uuid.UUID(session_id), instance_id=instance_id, name=name, status="active", created_at=datetime.now(timezone.utc), last_activity_at=datetime.now(timezone.utc), ) .on_conflict_do_nothing, call:uuid.UUID, call:datetime.now, call:db_session.execute, call:db_session.commit, call:logger.debug, call:logger.error, method:_mark_closed_in_db(self, session_id: str) → None, call:SessionLocal, call:db_session.get, call:uuid.UUID, call:datetime.now, call:db_session.commit, call:logger.debug, call:logger.error, method:_count_sessions_for_instance(self, instance_id_str: str) → int, call:sum, method:create_session(self, instance_id: uuid.UUID, container_id: str, startup_command, name, session_id) → TerminalSession, call:str, call:self._count_sessions_for_instance, call:uuid.uuid4, call:TerminalSession, call:session.start, call:asyncio.create_task, call:self._insert_db_session_row, call:logger.info, raise:MaxSessionsExceededError, method:get_or_create_session(self, instance_id: uuid.UUID, container_id: str, startup_command) → TerminalSession, call:self._start_idle_check, call:str, call:session.is_alive, call:logger.debug, call:session.close, call:logger.info, call:uuid.uuid4, call:TerminalSession, call:session.start, call:asyncio.create_task, call:self._insert_db_session_row, method:get_session(self, instance_id: str, session_id: str) → TerminalSession | None, call:self._sessions.get, call:self._sessions.items, method:_find_key_by_internal_id(self, instance_id: str, internal_session_id: str) → tuple[str, str] | None, call:self._sessions.items, method:get_sessions_for_instance(self, instance_id: str) → list[TerminalSession], call:self._sessions.items, method:close_session(self, instance_id: str, session_id: str) → None, call:self._sessions.pop, call:session.close, call:asyncio.create_task, call:self._mark_closed_in_db, call:logger.info, method:attach_websocket(self, session: TerminalSession, websocket: WebSocket) → None, call:session.has_websockets, call:logger.debug, call:list, call:ws.close, call:session._websockets.clear, call:session.attach_websocket, call:session.get_buffer, call:websocket.send_bytes, method:detach_websocket(self, session: TerminalSession, websocket: WebSocket) → None, call:session.detach_websocket, method:reset_session(self, instance_id: uuid.UUID, container_id: str, startup_command, session_id, name) → TerminalSession, call:str, call:logger.debug, call:self._sessions.pop, call:old_session.close, call:asyncio.create_task, call:self._mark_closed_in_db, call:uuid.uuid4, call:TerminalSession, call:new_session.start, call:self._insert_db_session_row, method:close_all(self) → None, call:list, call:self._sessions.values, call:self._sessions.clear, call:session.close, call:self._idle_check_task.done, call:self._idle_check_task.cancel | dep: asyncio, logging, uuid, datetime, fastapi, sqlalchemy.dialects.postgresql, src.database, src.models, src.services.terminal.terminal_session, fastapi.WebSocket -- terminal_session.py | Manages a high-performance asyncio-native terminal session using PTY I/O with event-driven reads, output batching, and flow control for WebSocket delivery. | exp: class:TerminalSession, method:__init__(self, session_id: str, instance_id: uuid.UUID, container_id: str, startup_command, name) → None, call:deque, call:set, call:time.time, call:self._generate_name, call:str, call:bytearray, call:asyncio.Lock, method:start(self, startup_command) → None, call:pty.openpty, call:self._set_terminal_size, call:logger.debug, call:asyncio.create_subprocess_exec, call:os.close, call:time.time, call:self._start_reading, method:_start_reading(self) → None, call:asyncio.get_event_loop, call:loop.add_reader, call:logger.debug, call:logger.error, method:_stop_reading(self) → None, call:asyncio.get_event_loop, call:loop.remove_reader, method:_on_fd_readable(self) → None, call:os.read, call:logger.debug, call:self._handle_eof, call:self._add_to_buffer, call:time.time, call:self._queue_output, method:_add_to_buffer(self, data: bytes) → None, call:self._output_buffer.append, call:len, call:self._output_buffer.popleft, method:_queue_output(self, data: bytes) → None, call:self._batch_buffer.extend, call:len, call:self._pause_output, call:asyncio.get_event_loop, call:loop.call_later, method:_flush_batch_sync(self) → None, call:self._batch_buffer.clear, call:bytes, call:set, call:list, call:asyncio.create_task, call:self._send_bytes, call:dead_sockets.add, method:_send_bytes(self, ws: Any, payload: bytes) → None, call:ws.send_bytes, call:self._websockets.discard, method:acknowledge_data(self, char_count: int) → None, call:max, call:self._resume_output, call:self._ack_timeout_handle.cancel, call:asyncio.get_event_loop, call:loop.call_later, method:_ack_timeout_fallback(self) → None, call:logger.warning, call:self._resume_output, method:_pause_output(self) → None, call:self._stop_reading, call:logger.debug, method:_resume_output(self) → None, call:self._start_reading, call:logger.debug, method:get_buffer(self) → bytes, call:b"".join, method:_handle_eof(self) → None, call:self._stop_reading, call:self.process._transport.close, call:set, call:self._websockets.clear, call:asyncio.create_task, call:ws.close, call:logger.info, method:write_input(self, data: bytes) → None, call:os.write, call:time.time, call:logger.debug, call:self._handle_eof, method:_set_terminal_size(self, cols: int, rows: int) → None, call:logger.warning, call:struct.pack, call:fcntl.ioctl, call:logger.debug, call:logger.error, method:resize(self, cols: int, rows: int) → None, call:logger.warning, call:logger.debug, call:self._set_terminal_size, call:os.kill, method:reset(self) → None, call:self.close, call:self._output_buffer.clear, call:self._websockets.clear, call:self._batch_buffer.clear, method:close(self) → None, call:self._stop_reading, call:self._batch_timer.cancel, call:self._ack_timeout_handle.cancel, call:os.close, call:self.process.kill, call:asyncio.wait_for, call:self.process.wait, method:is_alive(self) → bool, method:is_idle(self) → bool, call:time.time, method:attach_websocket(self, websocket: Any) → None, call:self._websockets.add, call:time.time, method:detach_websocket(self, websocket: Any) → None, call:self._websockets.discard, method:has_websockets(self) → bool, call:len, method:send_to_all(self, data: bytes) → None, call:set, call:ws.send_bytes, call:dead_sockets.add, call:self._websockets.discard, method:read_output(self) → bytes | dep: asyncio, logging, os, pty, signal, struct, fcntl, time, uuid, collections, typing, collections.deque +- __init__.py | Package initialization file that exports the public API for the terminal services module | dep: src.services.terminal.terminal_manager, src.services.terminal.terminal_session +- terminal_manager.py | Manages active terminal sessions with WebSocket support, idle cleanup, database persistence, and per-instance session limits. | exp: class:MaxSessionsExceededError, method:__init__(self, instance_id: str, max_sessions) → None, call:super().__init__, class:TerminalManager, method:__init__(self) → None, call:self._start_idle_check, method:_start_idle_check(self) → None, call:self._idle_check_task.done, call:asyncio.get_running_loop, call:loop.create_task, call:self._idle_check_loop, method:_idle_check_loop(self) → None, call:asyncio.sleep, call:self._cleanup_idle_sessions, call:logger.error, method:_cleanup_idle_sessions(self) → None, call:list, call:self._sessions.items, call:session.is_idle, call:idle_keys.append, call:logger.info, call:self._sessions.pop, call:session.close, call:asyncio.create_task, call:self._mark_closed_in_db, method:_insert_db_session_row(self, session_id: str, instance_id: uuid.UUID, name: str) → None, call:SessionLocal, call:pg_insert(TerminalSessionModel) .values( id=uuid.UUID(session_id), instance_id=instance_id, name=name, status="active", created_at=datetime.now(timezone.utc), last_activity_at=datetime.now(timezone.utc), ) .on_conflict_do_nothing, call:uuid.UUID, call:datetime.now, call:db_session.execute, call:db_session.commit, call:logger.debug, call:logger.error, method:_mark_closed_in_db(self, session_id: str) → None, call:SessionLocal, call:db_session.get, call:uuid.UUID, call:datetime.now, call:db_session.commit, call:logger.debug, call:logger.error, method:_count_sessions_for_instance(self, instance_id_str: str) → int, call:sum, method:create_session(self, instance_id: uuid.UUID, container_id: str, startup_command, name, session_id) → TerminalSession, call:str, call:self._count_sessions_for_instance, call:uuid.uuid4, call:TerminalSession, call:session.start, call:asyncio.create_task, call:self._insert_db_session_row, call:logger.info, raise:MaxSessionsExceededError, method:get_or_create_session(self, instance_id: uuid.UUID, container_id: str, startup_command) → TerminalSession, call:self._start_idle_check, call:str, call:session.is_alive, call:logger.debug, call:session.close, call:logger.info, call:uuid.uuid4, call:TerminalSession, call:session.start, call:asyncio.create_task, call:self._insert_db_session_row, method:get_session(self, instance_id: str, session_id: str) → TerminalSession | None, call:self._sessions.get, call:self._sessions.items, method:_find_key_by_internal_id(self, instance_id: str, internal_session_id: str) → tuple[str, str] | None, call:self._sessions.items, method:get_sessions_for_instance(self, instance_id: str) → list[TerminalSession], call:self._sessions.items, method:close_session(self, instance_id: str, session_id: str) → None, call:self._sessions.pop, call:session.close, call:asyncio.create_task, call:self._mark_closed_in_db, call:logger.info, method:attach_websocket(self, session: TerminalSession, websocket: WebSocket) → None, call:session.has_websockets, call:logger.debug, call:list, call:ws.close, call:session._websockets.clear, call:session.attach_websocket, call:session.get_buffer, call:websocket.send_bytes, method:detach_websocket(self, session: TerminalSession, websocket: WebSocket) → None, call:session.detach_websocket, method:reset_session(self, instance_id: uuid.UUID, container_id: str, startup_command, session_id, name) → TerminalSession, call:str, call:logger.debug, call:self._sessions.pop, call:old_session.close, call:asyncio.create_task, call:self._mark_closed_in_db, call:uuid.uuid4, call:TerminalSession, call:new_session.start, call:self._insert_db_session_row, method:close_all(self) → None, call:list, call:self._sessions.values, call:self._sessions.clear, call:session.close, call:self._idle_check_task.done, call:self._idle_check_task.cancel | dep: asyncio, logging, uuid, datetime, fastapi, sqlalchemy.dialects.postgresql, src.database, src.models, src.services.terminal.terminal_session, fastapi.WebSocket +- terminal_session.py | Manages a high-performance terminal session using asyncio-native event-driven I/O with PTY for docker exec processes, featuring output batching, flow control, and WebSocket broadcasting. | exp: class:TerminalSession, method:__init__(self, session_id: str, instance_id: uuid.UUID, container_id: str, startup_command, name) → None, call:deque, call:set, call:time.time, call:self._generate_name, call:str, call:bytearray, call:asyncio.Lock, method:start(self, startup_command) → None, call:pty.openpty, call:self._set_terminal_size, call:logger.debug, call:asyncio.create_subprocess_exec, call:os.close, call:time.time, call:self._start_reading, method:_start_reading(self) → None, call:asyncio.get_event_loop, call:loop.add_reader, call:logger.debug, call:logger.error, method:_stop_reading(self) → None, call:asyncio.get_event_loop, call:loop.remove_reader, method:_on_fd_readable(self) → None, call:os.read, call:logger.debug, call:self._handle_eof, call:self._add_to_buffer, call:time.time, call:self._queue_output, method:_add_to_buffer(self, data: bytes) → None, call:self._output_buffer.append, call:len, call:self._output_buffer.popleft, method:_queue_output(self, data: bytes) → None, call:self._batch_buffer.extend, call:len, call:self._pause_output, call:asyncio.get_event_loop, call:loop.call_later, method:_flush_batch_sync(self) → None, call:self._batch_buffer.clear, call:bytes, call:set, call:list, call:asyncio.create_task, call:self._send_bytes, call:dead_sockets.add, method:_send_bytes(self, ws: Any, payload: bytes) → None, call:ws.send_bytes, call:self._websockets.discard, method:acknowledge_data(self, char_count: int) → None, call:max, call:self._resume_output, call:self._ack_timeout_handle.cancel, call:asyncio.get_event_loop, call:loop.call_later, method:_ack_timeout_fallback(self) → None, call:logger.warning, call:self._resume_output, method:_pause_output(self) → None, call:self._stop_reading, call:logger.debug, method:_resume_output(self) → None, call:self._start_reading, call:logger.debug, method:get_buffer(self) → bytes, call:b"".join, method:_handle_eof(self) → None, call:self._stop_reading, call:self.process._transport.close, call:set, call:self._websockets.clear, call:asyncio.create_task, call:ws.close, call:logger.info, method:write_input(self, data: bytes) → None, call:os.write, call:time.time, call:logger.debug, call:self._handle_eof, method:_set_terminal_size(self, cols: int, rows: int) → None, call:logger.warning, call:struct.pack, call:fcntl.ioctl, call:logger.debug, call:logger.error, method:resize(self, cols: int, rows: int) → None, call:logger.warning, call:logger.debug, call:self._set_terminal_size, call:os.kill, method:reset(self) → None, call:self.close, call:self._output_buffer.clear, call:self._websockets.clear, call:self._batch_buffer.clear, method:close(self) → None, call:self._stop_reading, call:self._batch_timer.cancel, call:self._ack_timeout_handle.cancel, call:os.close, call:self.process.kill, call:asyncio.wait_for, call:self.process.wait, method:is_alive(self) → bool, method:is_idle(self) → bool, call:time.time, method:attach_websocket(self, websocket: Any) → None, call:self._websockets.add, call:time.time, method:detach_websocket(self, websocket: Any) → None, call:self._websockets.discard, method:has_websockets(self) → bool, call:len, method:send_to_all(self, data: bytes) → None, call:set, call:ws.send_bytes, call:dead_sockets.add, call:self._websockets.discard, method:read_output(self) → bytes | dep: asyncio, logging, os, pty, signal, struct, fcntl, time, uuid, collections, typing, collections.deque, typing.Any ## arch -Asyncio-native event-driven architecture with session lifecycle management, resource cleanup, output batching/flow control, and database persistence for scalable terminal multiplexing. +Asyncio-native event-driven architecture with producer-consumer pattern for terminal output batching, WebSocket pub/sub broadcasting, session state machine with idle timeout and database persistence, and per-instance resource limits enforced by a centralized manager. ## tags call:self., session, call:logger.debug, idle, output, terminal, check, task ## symbols diff --git a/apps/api/src/services/tool/.pi-map.index.md b/apps/api/src/services/tool/.pi-map.index.md index d4f861b..137903e 100644 --- a/apps/api/src/services/tool/.pi-map.index.md +++ b/apps/api/src/services/tool/.pi-map.index.md @@ -2,14 +2,12 @@ dir: apps/api/src/services/tool ## role -Provides infrastructure orchestration for isolated tool instances, managing their complete lifecycle from provisioning to teardown. +Orchestrates Docker container lifecycle for tool instances, enabling isolated execution environments with git repository access and configurable runtime profiles. ## parent index: apps/api/src/services/.pi-map.index.md map: apps/api/src/services/.pi-map.md ## children -- apps/api/src/services/tool/.ruff_cache - index: apps/api/src/services/tool/.ruff_cache/.pi-map.index.md - map: apps/api/src/services/tool/.ruff_cache/.pi-map.md +- ## files - instance_service.py ## links @@ -18,7 +16,5 @@ map: apps/api/src/services/tool/.pi-map.md ## workflows - change tool behavior read: instance_service.py -- explore tool subdirectories - index: apps/api/src/services/tool/.ruff_cache/.pi-map.index.md ## dirty - diff --git a/apps/api/src/services/tool/.pi-map.md b/apps/api/src/services/tool/.pi-map.md index c4275cc..1a53d60 100644 --- a/apps/api/src/services/tool/.pi-map.md +++ b/apps/api/src/services/tool/.pi-map.md @@ -4,26 +4,24 @@ dir: apps/api/src/services/tool index: apps/api/src/services/tool/.pi-map.index.md ## role -Provides infrastructure orchestration for isolated tool instances, managing their complete lifecycle from provisioning to teardown. +Orchestrates Docker container lifecycle for tool instances, enabling isolated execution environments with git repository access and configurable runtime profiles. ## files -- instance_service.py | Manages the lifecycle of tool instances including git repository mounting, Docker container orchestration, config profile resolution, SSH tunnel management, and permission handling for a development environment platform. | exp: func:_get_repository_mount_name(repo: GitRepository, workspace) → str, call:os.path.basename, call:os.path.normpath, call:extract_base_repo_url, call:base_url.rstrip("/").split, call:name.endswith, func:_chown_path(path: str, uid: int, gid: int) → None, call:os.path.isdir, call:os.walk, call:os.path.join, call:contextlib.suppress, call:os.chown, call:logger.warning, func:_chown_staged_mounts(extra_volumes: list[dict], instance_dir: str, uid: int, gid: int) → None, call:vol.get, call:source.startswith, call:_chown_path, func:resolve_git_mounts(session: AsyncSession, resolved: ResolvedProfile, instance_dir, working_directory, home_dir) → list[dict], call:tasks.append, call:resolve_single_git_mount, call:asyncio.gather, call:isinstance, call:logger.warning, call:volume_mounts.extend, func:normalize_git_mount(entry: dict) → dict, call:dict, call:entry.get, call:entry.pop, func:clone_git_repo(remote_url: str, branch: str | None, clone_parent: str) → str, call:hashlib.md5(remote_url.encode()).hexdigest, call:remote_url.encode, call:remote_url.split("/")[-1].replace, call:os.path.join, call:os.path.exists, call:os.makedirs, call:clone_repository, call:logger.debug, call:logger.warning, call:pull_repository_updates, call:checkout_branch, func:resolve_git_mount_mappings(repo_path: str, mappings: list[dict], working_directory: str | None, home_dir) → list[dict], call:mapping.get, call:logger.warning, call:expand_container_path, call:target_path.startswith, call:os.path.join, call:expand_glob_source, call:os.path.exists, call:len, call:os.path.relpath, call:volume_mounts.append, call:logger.debug, func:resolve_single_git_mount(session: AsyncSession, git_mount: dict, instance_dir, working_directory, home_dir) → list[dict], call:normalize_git_mount, call:git_mount.get, call:logger.warning, call:asyncio.to_thread, call:resolve_git_mount_mappings, func:checkout_branch(repo_path: str, branch: str) → bool, call:subprocess.run, call:logger.warning, call:result.stderr.strip, func:pull_repository_updates(repo_path: str, remote_url: str) → None, call:subprocess.run, raise:RuntimeError, func:expand_glob_source(source_path: str, repo_path: str) → list[str], call:any, call:os.path.exists, call:glob_module.glob, call:len, call:os.path.abspath, call:abs_path.startswith, call:results.append, call:logger.warning, func:validate_config_profile(session: AsyncSession, profile_id: str | None, user_id: uuid.UUID, project_id: uuid.UUID, tool_type_id: uuid.UUID) → uuid.UUID | None, call:uuid.UUID, call:session.get, raise:HTTPException, func:sanitize_compose_file(compose_path: str) → None, call:Path, call:compose_file.exists, call:compose_file.read_text, call:yaml.safe_load, call:compose_data["services"].items, call:isinstance, call:port_mapping.split, call:len, call:valid_ports.append, call:compose_file.write_text, call:yaml.dump, func:modify_compose_file(compose_path: str, port_override, start_command, working_directory, extra_volumes, home_dir) → None, call:Path, call:compose_file.read_text, call:yaml.safe_load, call:compose_data["services"].items, call:enumerate, call:isinstance, call:port_mapping.split, call:expand_container_path, call:vol.get, call:service_config["volumes"].append, call:service_config.get, call:sort_volumes_by_specificity, call:compose_file.write_text, call:yaml.dump, func:ensure_container_name_in_compose(compose_path: str, container_name: str) → None, call:Path, call:compose_file.exists, call:compose_file.read_text, call:yaml.safe_load, call:compose_data["services"].items, call:container_name.lower, call:compose_file.write_text, call:yaml.dump, call:logger.info, func:ensure_web_bind_address(compose_path: str, tool_type_name: str, default_port: int) → None, call:KNOWN_BIND_FIXES.get, call:Path, call:compose_file.exists, call:compose_file.read_text, call:yaml.safe_load, call:compose_data["services"].values, call:service_config.get, call:compose_file.write_text, call:yaml.dump, call:logger.warning, call:logger.info, func:ensure_backend_network_in_compose(compose_path: str) → None, call:Path, call:compose_file.exists, call:compose_file.read_text, call:yaml.safe_load, call:get_backend_network_name, call:compose_data["services"].values, call:svc_config.get, call:compose_file.write_text, call:yaml.dump, call:logger.info, func:prepare_manifest_instance(session: AsyncSession, instance: ToolInstance, instance_dir: str, repo_path: str, env_vars: dict, extra_volumes: list, working_directory: str | None) → tuple[str, str, dict, str], call:session.get, call:dict, call:resolve_base, call:deep_merge, call:logger.warning, call:merge_with_config, call:manifest.pop, call:env_vars.update, call:extra_volumes.extend, call:compute_image_tag, call:subprocess.run, call:check.stdout.strip, call:compile_dockerfile, call:compile_entrypoint, call:logger.debug, call:len, call:asyncio.to_thread, call:logger.info, call:resolve_profile, call:gm.get, call:_get_repository_mount_name, call:os.path.basename, call:os.path.normpath, call:instance.name.lower, call:compile_compose, call:manifest.get, call:datetime.now, call:get_manifest_home_dir, raise:RuntimeError, func:create_tool_instance(session: AsyncSession, user_id: uuid.UUID, project_id: uuid.UUID, repo_id: uuid.UUID, data: "CreateInstanceRequest") → ToolInstance, call:session.get, call:uuid.UUID, call:validate_config_profile, call:uuid.uuid4, call:select(ToolInstance) .where(ToolInstance.workspace_id == workspace_id) .where(ToolInstance.tool_type_id == tool_type_id) .where, call:select(ToolInstance) .where(ToolInstance.repository_id == repo_id) .where(ToolInstance.tool_type_id == tool_type_id) .where, call:session.execute, call:len, call:result.scalars().all, call:ensure_instance_directory, call:os.path.join, call:find_free_port, call:f"headquarter/{instance_name}:latest".lower, call:asyncio.to_thread, call:logger.error, call:logger.info, call:_get_repository_mount_name, call:instance_name.lower, call:write_compose_file, call:dict, call:resolve_base, call:deep_merge, call:compute_image_tag, call:compile_compose, call:str, call:render_compose_template, call:ToolInstance, call:session.add, call:session.commit, call:session.refresh, call:publish_lifecycle_event, raise:ValueError, raise:RuntimeError, func:start_tool_instance(session: AsyncSession, user_id: uuid.UUID, project_id: uuid.UUID, repo_id: uuid.UUID, instance_id: uuid.UUID, data: "StartInstanceRequest | None") → dict, call:session.get, call:validate_config_profile, call:session.commit, call:os.path.exists, call:logger.info, call:dict, call:resolve_base, call:deep_merge, call:get_manifest_home_dir, call:manifest.get, call:user_cfg.get, call:logger.debug, call:os.path.dirname, call:resolve_profile, call:apply_resolved_profile, call:env_vars.update, call:config_files.update, call:extra_volumes.extend, call:resolve_git_mounts, call:profile_hints.get, call:len, call:logger.error, call:write_env_file, call:write_config_files, call:uuid.UUID, call:ssh_keys_to_mount.append, call:logger.warning, call:os.path.join, call:os.makedirs, call:_sanitize_filename, call:key_filenames.append, call:prepare_ssh_key_files, call:write_ssh_config, call:extra_volumes.append, call:_chown_staged_mounts, call:prepare_manifest_instance, call:write_compose_file, call:logger.exception, call:modify_compose_file, call:sanitize_compose_file, call:ensure_web_bind_address, call:ensure_container_name_in_compose, call:ensure_backend_network_in_compose, call:execute_compose_command, call:instance.name.lower, call:get_container_id, call:publish_lifecycle_event, call:wait_for_container_running, call:get_container_logs, call:resolved_manifest.get, call:apply_mount_permissions, call:home_dir.startswith, call:apply_ssh_permissions, call:probe_config.get, call:execute_probe, call:datetime.now().isoformat, call:"\n".join, call:get_container_status, call:start_tunnel, call:str, call:traceback.format_exc, raise:ValueError, raise:RuntimeError, func:restart_tool_instance(session: AsyncSession, user_id: uuid.UUID, project_id: uuid.UUID, repo_id: uuid.UUID, instance_id: uuid.UUID) → dict, call:session.get, call:stop_tunnel, call:logger.debug, call:logger.warning, call:os.path.exists, call:os.path.dirname, call:resolve_profile, call:apply_resolved_profile, call:write_env_file, call:logger.error, call:sanitize_compose_file, call:ensure_web_bind_address, call:ensure_container_name_in_compose, call:ensure_backend_network_in_compose, call:execute_compose_command, call:datetime.now, call:session.commit, call:start_tunnel, call:publish_lifecycle_event, raise:ValueError, raise:RuntimeError, func:delete_tool_instance(session: AsyncSession, user_id: uuid.UUID, project_id: uuid.UUID, repo_id: uuid.UUID, instance_id: uuid.UUID, force) → None, call:session.get, call:os.path.dirname, call:os.path.join, call:os.path.exists, call:check_dirty_state, call:stop_tunnel, call:logger.debug, call:logger.warning, call:execute_compose_command, call:shutil.rmtree, call:publish_lifecycle_event, call:session.delete, call:session.commit, raise:ValueError, raise:RuntimeError, func:recreate_instance_tunnel(session: AsyncSession, user_id: uuid.UUID, project_id: uuid.UUID, repo_id: uuid.UUID, instance_id: uuid.UUID) → dict, call:session.get, call:instance.name.lower, call:logger.info, call:get_container_id, call:logger.error, call:get_backend_network_name, call:is_container_on_network, call:connect_container_to_network, call:get_container_ip_on_network, call:logger.warning, call:recreate_tunnel, call:check_tunnel_health, call:health.get, call:subprocess.run, call:probe.stdout.strip, call:session.commit, call:logger.exception, raise:ValueError, raise:RuntimeError, func:stop_tool_instance(session: AsyncSession, user_id: uuid.UUID, project_id: uuid.UUID, repo_id: uuid.UUID, instance_id: uuid.UUID) → dict, call:session.get, call:stop_tunnel, call:logger.warning, call:os.path.exists, call:execute_compose_command, call:datetime.now, call:session.commit, call:publish_lifecycle_event, raise:ValueError, func:rename_tool_instance(session: AsyncSession, user_id: uuid.UUID, project_id: uuid.UUID, repo_id: uuid.UUID, instance_id: uuid.UUID, display_name: str) → ToolInstance, call:session.get, call:display_name.strip, call:session.commit, call:session.refresh, raise:ValueError | dep: asyncio, contextlib, logging, os, subprocess, uuid, datetime, fastapi, sqlalchemy, sqlalchemy.ext.asyncio, src.models, src.schemas.tool, src.services.git.clone, src.services.config.config_profile_resolver, src.services.docker, src.services.shared.tunnel, src.services.build.docker_build, src.services.build.manifest_compiler, src.services.shared.permission_fixer, src.services.shared.readiness_probe, src.services.shared.ssh_keys, src.services.instance.event_bus, src.services.instance.lifecycle_hooks, src.utils.git_url_parser, hashlib, yaml, pathlib, traceback, shutil, glob +- instance_service.py | Manages Docker-based tool instances including lifecycle operations, git repository mounting, config profile resolution, and container orchestration. | exp: func:_get_repository_mount_name(repo: GitRepository, workspace) → str, call:os.path.basename, call:os.path.normpath, call:extract_base_repo_url, call:base_url.rstrip("/").split, call:name.endswith, func:_chown_path(path: str, uid: int, gid: int) → None, call:os.path.isdir, call:os.walk, call:os.path.join, call:contextlib.suppress, call:os.chown, call:logger.warning, func:_chown_staged_mounts(extra_volumes: list[dict], instance_dir: str, uid: int, gid: int) → None, call:vol.get, call:source.startswith, call:_chown_path, func:_relative_under(parent: str, child: str) → str | None, call:os.path.normpath, call:child.startswith, call:len, func:_stack_profile_mounts_with_git_mounts(profile_mounts: list[dict], git_mount_volumes: list[dict]) → list[dict], call:pvol.get, call:os.path.exists, call:remaining.append, call:gvol.get, call:os.path.isdir, call:_relative_under, call:os.path.join, call:shutil.copytree, call:os.makedirs, call:os.path.dirname, call:shutil.copy2, call:logger.debug, func:resolve_git_mounts(session: AsyncSession, resolved: ResolvedProfile, instance_dir, working_directory, home_dir) → list[dict], call:tasks.append, call:resolve_single_git_mount, call:asyncio.gather, call:isinstance, call:logger.warning, call:volume_mounts.extend, func:normalize_git_mount(entry: dict) → dict, call:dict, call:entry.get, call:entry.pop, func:clone_git_repo(remote_url: str, branch: str | None, clone_parent: str) → str, call:hashlib.md5( f"{remote_url}:{branch_segment}".encode() ).hexdigest, call:f"{remote_url}:{branch_segment}".encode, call:remote_url.split("/")[-1].replace, call:os.path.join, call:os.path.exists, call:os.makedirs, call:clone_repository, call:logger.debug, call:logger.warning, call:pull_repository_updates, call:checkout_branch, func:resolve_git_mount_mappings(repo_path: str, mappings: list[dict], working_directory: str | None, home_dir) → list[dict], call:mapping.get, call:logger.warning, call:expand_container_path, call:target_path.startswith, call:os.path.join, call:expand_glob_source, call:os.path.exists, call:len, call:min, call:source_path.find, call:os.path.dirname, call:os.path.relpath, call:volume_mounts.append, call:logger.debug, func:resolve_single_git_mount(session: AsyncSession, git_mount: dict, instance_dir, working_directory, home_dir) → list[dict], call:normalize_git_mount, call:git_mount.get, call:logger.warning, call:asyncio.to_thread, call:resolve_git_mount_mappings, func:checkout_branch(repo_path: str, branch: str) → bool, call:subprocess.run, call:logger.warning, call:result.stderr.strip, func:pull_repository_updates(repo_path: str, remote_url: str) → None, call:subprocess.run, raise:RuntimeError, func:expand_glob_source(source_path: str, repo_path: str) → list[str], call:any, call:os.path.exists, call:glob_module.glob, call:len, call:os.path.abspath, call:abs_path.startswith, call:results.append, call:logger.warning, func:validate_config_profile(session: AsyncSession, profile_id: str | None, user_id: uuid.UUID, project_id: uuid.UUID, tool_type_id: uuid.UUID) → uuid.UUID | None, call:uuid.UUID, call:session.get, raise:HTTPException, func:sanitize_compose_file(compose_path: str) → None, call:Path, call:compose_file.exists, call:compose_file.read_text, call:yaml.safe_load, call:compose_data["services"].items, call:isinstance, call:port_mapping.split, call:len, call:valid_ports.append, call:compose_file.write_text, call:yaml.dump, func:modify_compose_file(compose_path: str, port_override, start_command, working_directory, extra_volumes, home_dir) → None, call:Path, call:compose_file.read_text, call:yaml.safe_load, call:compose_data["services"].items, call:enumerate, call:isinstance, call:port_mapping.split, call:expand_container_path, call:vol.get, call:service_config["volumes"].append, call:service_config.get, call:sort_volumes_by_specificity, call:compose_file.write_text, call:yaml.dump, func:ensure_container_name_in_compose(compose_path: str, container_name: str) → None, call:Path, call:compose_file.exists, call:compose_file.read_text, call:yaml.safe_load, call:compose_data["services"].items, call:container_name.lower, call:compose_file.write_text, call:yaml.dump, call:logger.info, func:ensure_web_bind_address(compose_path: str, tool_type_name: str, default_port: int) → None, call:KNOWN_BIND_FIXES.get, call:Path, call:compose_file.exists, call:compose_file.read_text, call:yaml.safe_load, call:compose_data["services"].values, call:service_config.get, call:compose_file.write_text, call:yaml.dump, call:logger.warning, call:logger.info, func:ensure_backend_network_in_compose(compose_path: str) → None, call:Path, call:compose_file.exists, call:compose_file.read_text, call:yaml.safe_load, call:get_backend_network_name, call:compose_data["services"].values, call:svc_config.get, call:compose_file.write_text, call:yaml.dump, call:logger.info, func:prepare_manifest_instance(session: AsyncSession, instance: ToolInstance, instance_dir: str, repo_path: str, env_vars: dict, extra_volumes: list, working_directory: str | None) → tuple[str, str, dict, str], call:session.get, call:dict, call:resolve_base, call:deep_merge, call:logger.warning, call:merge_with_config, call:manifest.pop, call:env_vars.update, call:extra_volumes.extend, call:compute_image_tag, call:subprocess.run, call:check.stdout.strip, call:compile_dockerfile, call:compile_entrypoint, call:logger.debug, call:len, call:asyncio.to_thread, call:logger.info, call:resolve_profile, call:gm.get, call:_get_repository_mount_name, call:os.path.basename, call:os.path.normpath, call:instance.name.lower, call:compile_compose, call:manifest.get, call:datetime.now, call:get_manifest_home_dir, raise:RuntimeError, func:create_tool_instance(session: AsyncSession, user_id: uuid.UUID, project_id: uuid.UUID, repo_id: uuid.UUID, data: "CreateInstanceRequest") → ToolInstance, call:session.get, call:uuid.UUID, call:validate_config_profile, call:uuid.uuid4, call:select(ToolInstance) .where(ToolInstance.workspace_id == workspace_id) .where(ToolInstance.tool_type_id == tool_type_id) .where, call:select(ToolInstance) .where(ToolInstance.repository_id == repo_id) .where(ToolInstance.tool_type_id == tool_type_id) .where, call:session.execute, call:len, call:result.scalars().all, call:ensure_instance_directory, call:os.path.join, call:find_free_port, call:f"headquarter/{instance_name}:latest".lower, call:asyncio.to_thread, call:logger.error, call:logger.info, call:_get_repository_mount_name, call:instance_name.lower, call:write_compose_file, call:dict, call:resolve_base, call:deep_merge, call:compute_image_tag, call:compile_compose, call:str, call:render_compose_template, call:ToolInstance, call:session.add, call:session.commit, call:session.refresh, call:publish_lifecycle_event, raise:ValueError, raise:RuntimeError, func:start_tool_instance(session: AsyncSession, user_id: uuid.UUID, project_id: uuid.UUID, repo_id: uuid.UUID, instance_id: uuid.UUID, data: "StartInstanceRequest | None") → dict, call:session.get, call:validate_config_profile, call:session.commit, call:os.path.exists, call:logger.info, call:dict, call:resolve_base, call:deep_merge, call:get_manifest_home_dir, call:manifest.get, call:runtime.get, call:expand_container_path, call:user_cfg.get, call:logger.debug, call:os.path.dirname, call:resolve_profile, call:apply_resolved_profile, call:profile_hints.get, call:env_vars.update, call:config_files.update, call:resolve_git_mounts, call:_stack_profile_mounts_with_git_mounts, call:extra_volumes.extend, call:len, call:logger.error, call:write_env_file, call:write_config_files, call:uuid.UUID, call:ssh_keys_to_mount.append, call:logger.warning, call:os.path.join, call:os.makedirs, call:_sanitize_filename, call:key_filenames.append, call:prepare_ssh_key_files, call:write_ssh_config, call:extra_volumes.append, call:_chown_staged_mounts, call:prepare_manifest_instance, call:write_compose_file, call:logger.exception, call:modify_compose_file, call:sanitize_compose_file, call:ensure_web_bind_address, call:ensure_container_name_in_compose, call:ensure_backend_network_in_compose, call:execute_compose_command, call:instance.name.lower, call:get_container_id, call:publish_lifecycle_event, call:wait_for_container_running, call:get_container_logs, call:resolved_manifest.get, call:apply_mount_permissions, call:home_dir.startswith, call:apply_ssh_permissions, call:probe_config.get, call:execute_probe, call:datetime.now().isoformat, call:"\n".join, call:get_container_status, call:start_tunnel, call:str, call:traceback.format_exc, raise:ValueError, raise:RuntimeError, func:restart_tool_instance(session: AsyncSession, user_id: uuid.UUID, project_id: uuid.UUID, repo_id: uuid.UUID, instance_id: uuid.UUID) → dict, call:session.get, call:stop_tunnel, call:logger.debug, call:logger.warning, call:os.path.exists, call:os.path.dirname, call:resolve_profile, call:apply_resolved_profile, call:write_env_file, call:logger.error, call:sanitize_compose_file, call:ensure_web_bind_address, call:ensure_container_name_in_compose, call:ensure_backend_network_in_compose, call:execute_compose_command, call:datetime.now, call:session.commit, call:start_tunnel, call:publish_lifecycle_event, raise:ValueError, raise:RuntimeError, func:delete_tool_instance(session: AsyncSession, user_id: uuid.UUID, project_id: uuid.UUID, repo_id: uuid.UUID, instance_id: uuid.UUID, force) → None, call:session.get, call:os.path.dirname, call:os.path.join, call:os.path.exists, call:check_dirty_state, call:stop_tunnel, call:logger.debug, call:logger.warning, call:execute_compose_command, call:shutil.rmtree, call:publish_lifecycle_event, call:session.delete, call:session.commit, raise:ValueError, raise:RuntimeError, func:recreate_instance_tunnel(session: AsyncSession, user_id: uuid.UUID, project_id: uuid.UUID, repo_id: uuid.UUID, instance_id: uuid.UUID) → dict, call:session.get, call:instance.name.lower, call:logger.info, call:get_container_id, call:logger.error, call:get_backend_network_name, call:is_container_on_network, call:connect_container_to_network, call:get_container_ip_on_network, call:logger.warning, call:recreate_tunnel, call:check_tunnel_health, call:health.get, call:subprocess.run, call:probe.stdout.strip, call:session.commit, call:logger.exception, raise:ValueError, raise:RuntimeError, func:stop_tool_instance(session: AsyncSession, user_id: uuid.UUID, project_id: uuid.UUID, repo_id: uuid.UUID, instance_id: uuid.UUID) → dict, call:session.get, call:stop_tunnel, call:logger.warning, call:os.path.exists, call:execute_compose_command, call:datetime.now, call:session.commit, call:publish_lifecycle_event, raise:ValueError, func:rename_tool_instance(session: AsyncSession, user_id: uuid.UUID, project_id: uuid.UUID, repo_id: uuid.UUID, instance_id: uuid.UUID, display_name: str) → ToolInstance, call:session.get, call:display_name.strip, call:session.commit, call:session.refresh, raise:ValueError | dep: asyncio, contextlib, logging, os, shutil, subprocess, uuid, datetime, fastapi, sqlalchemy, sqlalchemy.ext.asyncio, src.models, src.schemas.tool, src.services.git.clone, src.services.config.config_profile_resolver, src.services.docker, src.services.shared.tunnel, src.services.build.docker_build, src.services.build.manifest_compiler, src.services.shared.permission_fixer, src.services.shared.readiness_probe, src.services.shared.ssh_keys, src.services.instance.event_bus, src.services.instance.lifecycle_hooks, src.utils.git_url_parser, hashlib, yaml, pathlib, traceback, docker services, git services, build services, SSH/tunnel services, event bus, instance lifecycle hooks ## arch -Service-oriented architecture with a single facade service that coordinates multiple infrastructure concerns (container runtime, version control, networking, configuration, and authorization) through imperative orchestration. +Service-oriented architecture with Docker SDK integration, implementing repository mounting, config-driven profile resolution, and container orchestration patterns for ephemeral compute instances. ## tags -compose, call:compose, call:logger.warning, error, container, instance, git, mount +compose, call:compose, container, call:logger.warning, error, instance, git, profile ## symbols - _get_repository_mount_name - _chown_path - _chown_staged_mounts +- _relative_under +- _stack_profile_mounts_with_git_mounts - resolve_git_mounts - normalize_git_mount - clone_git_repo -- resolve_git_mount_mappings -- resolve_single_git_mount ## workflows - change tool behavior read: instance_service.py -- explore tool subdirectories - index: apps/api/src/services/tool/.ruff_cache/.pi-map.index.md ## dirty - diff --git a/apps/api/src/utils/.pi-map.index.md b/apps/api/src/utils/.pi-map.index.md index 3e7a5c7..fa4d523 100644 --- a/apps/api/src/utils/.pi-map.index.md +++ b/apps/api/src/utils/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/src/utils ## role -Provides Git repository interaction utilities that wrap subprocess commands for URL parsing, file browsing, history extraction, and repository control operations. +Provides Git repository interaction utilities and URL parsing helpers for the API backend, enabling programmatic access to version control operations, file browsing, commit history analysis, and remote repository URL resolution. ## parent index: apps/api/src/.pi-map.index.md map: apps/api/src/.pi-map.md diff --git a/apps/api/src/utils/.pi-map.md b/apps/api/src/utils/.pi-map.md index f15d115..94152a6 100644 --- a/apps/api/src/utils/.pi-map.md +++ b/apps/api/src/utils/.pi-map.md @@ -4,15 +4,15 @@ dir: apps/api/src/utils index: apps/api/src/utils/.pi-map.index.md ## role -Provides Git repository interaction utilities that wrap subprocess commands for URL parsing, file browsing, history extraction, and repository control operations. +Provides Git repository interaction utilities and URL parsing helpers for the API backend, enabling programmatic access to version control operations, file browsing, commit history analysis, and remote repository URL resolution. ## files -- __init__.py | Empty file with no functionality +- __init__.py | Swaps two tmux panes between windows, preserving active pane state and layout | dep: tmux - git_control.py | Provides a Python wrapper for common Git repository operations using subprocess calls | exp: class:GitStatus, func:_run_git_command(repo_path: str, *args: str) → str, call:subprocess.run, raise:RuntimeError, func:get_status(repo_path: str) → GitStatus, call:_run_git_command(repo_path, "rev-parse", "--abbrev-ref", "HEAD").strip, call:_run_git_command(repo_path, "symbolic-ref", "--short", "HEAD").strip, call:GitStatus, call:output.strip().split, call:line.startswith, call:branch_info.split("[ahead ")[1].split, call:int, call:ahead_str.split, call:branch_info.split("[behind ")[1].split, call:behind_str.split, call:len, call:status.untracked.append, call:status.added.append, call:status.deleted.append, call:status.renamed.append, call:status.modified.append, func:create_branch(repo_path: str, name: str, base_branch) → None, call:_run_git_command, call:str(e).lower, func:delete_branch(repo_path: str, name: str, force) → None, call:_run_git_command, func:checkout_branch(repo_path: str, name: str) → None, call:_run_git_command, call:str(e).lower, func:commit_changes(repo_path: str, message: str, author_name: str, author_email: str, files) → str, call:_run_git_command(repo_path, "rev-parse", "HEAD").strip, func:fetch(repo_path: str) → None, call:_run_git_command, func:pull(repo_path: str, branch) → None, call:args.append, call:_run_git_command, func:push(repo_path: str, branch) → None, call:args.extend, call:_run_git_command, func:merge(repo_path: str, source_branch: str, target_branch, message) → str, call:checkout_branch, call:args.extend, call:_run_git_command(repo_path, "rev-parse", "HEAD").strip, func:get_current_branch(repo_path: str) → str, call:_run_git_command(repo_path, "rev-parse", "--abbrev-ref", "HEAD").strip, call:_run_git_command(repo_path, "symbolic-ref", "--short", "HEAD").strip | dep: subprocess, dataclasses -- git_files.py | Provides utilities for browsing and manipulating Git repository contents including file trees, branches, file contents, and commits via subprocess git commands. | exp: class:FileTreeEntry, class:BranchInfo, class:FileContent, func:_run_git_command(repo_path: str, *args: str) → str, call:subprocess.run, call:stderr.lower, call:logger.warning, raise:RuntimeError, func:list_tree(repo_path: str, branch, path) → list[FileTreeEntry], call:_run_git_command, call:logger.warning, call:logger.error, call:str(e).lower, call:output.strip().split, call:line.split, call:len, call:meta.split, call:int, call:_get_last_commit_for_path, call:entries.append, call:FileTreeEntry, func:_get_last_commit_for_path(repo_path: str, branch: str, path: str) → dict[str, Any] | None, call:_run_git_command, call:output.strip().split, call:len, func:get_file_content(repo_path: str, branch: str, path: str) → FileContent, call:_run_git_command, call:int, call:size_output.strip, call:_is_binary_file, call:_detect_language, call:_get_last_commit_for_path, call:FileContent, raise:FileNotFoundError, func:_is_binary_file(repo_path: str, branch: str, path: str) → bool, call:subprocess.run, raise:RuntimeError, func:_detect_language(path: str) → str | None, call:Path(path).suffix.lower, call:language_map.get, func:list_branches(repo_path: str) → tuple[list[BranchInfo], str], call:_run_git_command, call:logger.error, call:str, call:r.strip, call:remote_output.strip().split, call:set, call:output.strip().split, call:line.strip, call:branch_name.split, call:branch_name.startswith, call:len, call:any, call:head_output.strip, call:_get_last_commit_for_path, call:branches.append, call:BranchInfo, func:commit_file(repo_path: str, branch: str, path: str, content: str, commit_message: str, author_name: str, author_email: str) → str, call:tempfile.TemporaryDirectory, call:os.path.join, call:os.makedirs, call:os.path.dirname, call:open, call:f.write, call:_run_git_command( worktree_path, "rev-parse", "HEAD", ).strip | dep: logging, subprocess, dataclasses, pathlib, typing, tempfile, os -- git_history.py | Extracts and structures git commit history, metadata, diffs, and graph visualization data from bare/mirror repositories using subprocess git commands. | exp: class:Commit, class:FileChange, class:CommitDetail, func:_run_git_command(repo_path: str, args: list[str]) → str, call:subprocess.run, raise:RuntimeError, func:get_commit_history(repo_path: str, branch, limit, offset) → dict[str, Any], call:_run_git_command, call:b.strip, call:branches_output.strip().split, call:log_args.append, call:_get_branch_map, call:_get_tag_map, call:log_output.strip().split, call:line.strip, call:line.split, call:len, call:parts[1].split, call:commits.append, call:Commit, call:int, call:branch_map.get, call:tag_map.get, call:count_output.strip, call:_build_graph_data, call:enumerate, call:min, call:commit_dicts.append, call:_commit_to_dict, func:get_commit_detail(repo_path: str, commit_hash: str) → dict[str, Any], call:_run_git_command, call:log_output.strip().split, call:len, call:parts[1].split, call:int, call:_parse_stats, call:_parse_diff, call:_get_branch_map, call:_get_tag_map, call:datetime.fromtimestamp(timestamp, tz=timezone.utc).isoformat, call:branch_map.get, call:tag_map.get, call:_file_change_to_dict, raise:ValueError, func:_get_branch_map(repo_path: str) → dict[str, list[str]], call:_run_git_command, call:branch_output.strip().split, call:line.split, call:result[commit_hash].append, func:_get_tag_map(repo_path: str) → dict[str, list[str]], call:_run_git_command, call:tag_output.strip().split, call:line.split, call:result[commit_hash].append, func:_build_graph_data(commits: list[Commit]) → dict[str, Any], call:enumerate, call:hash, call:nodes.append, call:edges.append, func:_parse_stats(stat_output: str) → dict[str, int], call:stat_output.strip().split, call:line.strip, call:line.split, call:part.strip, call:int, call:part.split, func:_parse_diff(diff_output: str) → list[FileChange], call:diff_output.split, call:line.startswith, call:"\n".join, call:files.append, call:FileChange, call:current_diff.append, func:_commit_to_dict(commit: Commit, graph_symbol, graph_depth) → dict[str, Any], call:refs.extend, call:datetime.fromtimestamp(commit.timestamp, tz=timezone.utc).isoformat, func:_file_change_to_dict(file_change: FileChange) → dict[str, Any] | dep: subprocess, dataclasses, datetime, typing -- git_url_parser.py | Parses various Git hosting service URLs (browser, SSH, HTTPS) to extract normalized base repository clone URLs with .git suffix. | exp: func:extract_base_repo_url(url: str) → str | None, call:url.startswith, call:url.endswith, call:urlparse, call:parsed.netloc.lower, call:parsed.path.split, call:_extract_github_url, call:_extract_gitlab_url, call:_extract_bitbucket_url, call:_extract_generic_url, func:_extract_github_url(url: str, path_parts: list[str]) → str | None, call:len, call:repo_name.endswith, func:_extract_gitlab_url(url: str, path_parts: list[str]) → str | None, call:len, call:repo_name.endswith, func:_extract_bitbucket_url(url: str, path_parts: list[str]) → str | None, call:len, call:repo_name.endswith, func:_extract_generic_url(url: str, path_parts: list[str]) → str | None, call:len, call:repo_name.endswith, call:urlparse, func:is_valid_clone_url(url: str) → bool, call:url.startswith, call:urlparse, call:path.endswith, func:parse_git_url(url: str) → dict, call:url.strip, call:urlparse, call:parsed.netloc.lower, call:url.startswith, call:url.split, call:len, call:parts[0].replace, call:is_valid_clone_url, call:extract_base_repo_url | dep: urllib.parse +- git_files.py | Provides utilities for browsing and manipulating Git repository contents including file trees, branches, file contents, and commits. | exp: class:FileTreeEntry, class:BranchInfo, class:FileContent, func:_run_git_command(repo_path: str, *args: str) → str, call:subprocess.run, call:stderr.lower, call:logger.warning, raise:RuntimeError, func:list_tree(repo_path: str, branch, path) → list[FileTreeEntry], call:_run_git_command, call:logger.warning, call:logger.error, call:str(e).lower, call:output.strip().split, call:line.split, call:len, call:meta.split, call:int, call:_get_last_commit_for_path, call:entries.append, call:FileTreeEntry, func:_get_last_commit_for_path(repo_path: str, branch: str, path: str) → dict[str, Any] | None, call:_run_git_command, call:output.strip().split, call:len, func:get_file_content(repo_path: str, branch: str, path: str) → FileContent, call:_run_git_command, call:int, call:size_output.strip, call:_is_binary_file, call:_detect_language, call:_get_last_commit_for_path, call:FileContent, raise:FileNotFoundError, func:_is_binary_file(repo_path: str, branch: str, path: str) → bool, call:subprocess.run, raise:RuntimeError, func:_detect_language(path: str) → str | None, call:Path(path).suffix.lower, call:language_map.get, func:list_branches(repo_path: str) → tuple[list[BranchInfo], str], call:_run_git_command, call:logger.error, call:str, call:r.strip, call:remote_output.strip().split, call:set, call:output.strip().split, call:line.strip, call:branch_name.split, call:branch_name.startswith, call:len, call:any, call:head_output.strip, call:_get_last_commit_for_path, call:branches.append, call:BranchInfo, func:commit_file(repo_path: str, branch: str, path: str, content: str, commit_message: str, author_name: str, author_email: str) → str, call:tempfile.TemporaryDirectory, call:os.path.join, call:os.makedirs, call:os.path.dirname, call:open, call:f.write, call:_run_git_command( worktree_path, "rev-parse", "HEAD", ).strip | dep: logging, subprocess, dataclasses, pathlib, typing, tempfile, os +- git_history.py | Extracts and parses Git commit history, diffs, and metadata from bare/mirror repositories into structured Python dataclasses/dictionaries. | exp: class:Commit, class:FileChange, class:CommitDetail, func:_run_git_command(repo_path: str, args: list[str]) → str, call:subprocess.run, raise:RuntimeError, func:get_commit_history(repo_path: str, branch, limit, offset) → dict[str, Any], call:_run_git_command, call:b.strip, call:branches_output.strip().split, call:log_args.append, call:_get_branch_map, call:_get_tag_map, call:log_output.strip().split, call:line.strip, call:line.split, call:len, call:parts[1].split, call:commits.append, call:Commit, call:int, call:branch_map.get, call:tag_map.get, call:count_output.strip, call:_build_graph_data, call:enumerate, call:min, call:commit_dicts.append, call:_commit_to_dict, func:get_commit_detail(repo_path: str, commit_hash: str) → dict[str, Any], call:_run_git_command, call:log_output.strip().split, call:len, call:parts[1].split, call:int, call:_parse_stats, call:_parse_diff, call:_get_branch_map, call:_get_tag_map, call:datetime.fromtimestamp(timestamp, tz=timezone.utc).isoformat, call:branch_map.get, call:tag_map.get, call:_file_change_to_dict, raise:ValueError, func:_get_branch_map(repo_path: str) → dict[str, list[str]], call:_run_git_command, call:branch_output.strip().split, call:line.split, call:result[commit_hash].append, func:_get_tag_map(repo_path: str) → dict[str, list[str]], call:_run_git_command, call:tag_output.strip().split, call:line.split, call:result[commit_hash].append, func:_build_graph_data(commits: list[Commit]) → dict[str, Any], call:enumerate, call:hash, call:nodes.append, call:edges.append, func:_parse_stats(stat_output: str) → dict[str, int], call:stat_output.strip().split, call:line.strip, call:line.split, call:part.strip, call:int, call:part.split, func:_parse_diff(diff_output: str) → list[FileChange], call:diff_output.split, call:line.startswith, call:"\n".join, call:files.append, call:FileChange, call:current_diff.append, func:_commit_to_dict(commit: Commit, graph_symbol, graph_depth) → dict[str, Any], call:refs.extend, call:datetime.fromtimestamp(commit.timestamp, tz=timezone.utc).isoformat, func:_file_change_to_dict(file_change: FileChange) → dict[str, Any] | dep: subprocess, dataclasses, datetime, typing +- git_url_parser.py | Parses browser URLs from GitHub, GitLab, and Bitbucket to extract canonical git clone URLs, with validation and detailed result reporting. | exp: func:extract_base_repo_url(url: str) → str | None, call:url.startswith, call:url.endswith, call:urlparse, call:parsed.netloc.lower, call:parsed.path.split, call:_extract_github_url, call:_extract_gitlab_url, call:_extract_bitbucket_url, call:_extract_generic_url, func:_extract_github_url(url: str, path_parts: list[str]) → str | None, call:len, call:repo_name.endswith, func:_extract_gitlab_url(url: str, path_parts: list[str]) → str | None, call:len, call:repo_name.endswith, func:_extract_bitbucket_url(url: str, path_parts: list[str]) → str | None, call:len, call:repo_name.endswith, func:_extract_generic_url(url: str, path_parts: list[str]) → str | None, call:len, call:repo_name.endswith, call:urlparse, func:is_valid_clone_url(url: str) → bool, call:url.startswith, call:urlparse, call:path.endswith, func:parse_git_url(url: str) → dict, call:url.strip, call:urlparse, call:parsed.netloc.lower, call:url.startswith, call:url.split, call:len, call:parts[0].replace, call:is_valid_clone_url, call:extract_base_repo_url | dep: urllib.parse ## arch -Facade pattern with subprocess-based adapters, where each module encapsulates a distinct Git domain (control, files, history, URLs) behind Pythonic function interfaces. +Collection of utility modules following a functional/service-oriented pattern with subprocess-based Git CLI wrappers, dataclass-based structured data extraction, and parser combinators for URL handling; each module specializes in a distinct Git operation domain (control, files, history, URLs) with no apparent shared abstractions or base classes. ## tags call:, git, run, command, get, url, commit, call:len ## symbols diff --git a/apps/api/tests/.pi-map.index.md b/apps/api/tests/.pi-map.index.md index be886e4..79e98c9 100644 --- a/apps/api/tests/.pi-map.index.md +++ b/apps/api/tests/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/tests ## role -Provides shared test infrastructure and fixtures for the API application's test suite. +Provides shared test infrastructure and fixtures for API endpoint testing ## parent index: apps/api/.pi-map.index.md map: apps/api/.pi-map.md diff --git a/apps/api/tests/.pi-map.md b/apps/api/tests/.pi-map.md index 1f611e4..3e717e1 100644 --- a/apps/api/tests/.pi-map.md +++ b/apps/api/tests/.pi-map.md @@ -4,11 +4,11 @@ dir: apps/api/tests index: apps/api/tests/.pi-map.index.md ## role -Provides shared test infrastructure and fixtures for the API application's test suite. +Provides shared test infrastructure and fixtures for API endpoint testing ## files -- conftest.py | Provides shared pytest fixtures for testing a FastAPI application with async SQLite database, authenticated clients, and test data setup. | exp: func:test_client() → Generator[TestClient, None, None], call:create_async_engine, call:engine.begin, call:conn.run_sync, call:asyncio.run, call:init_db, call:async_sessionmaker, call:patch, call:TestClient, call:app.dependency_overrides.pop, call:engine.dispose, func:init_db(), call:engine.begin, call:conn.run_sync, func:override_get_db_session() → AsyncGenerator[AsyncSession, None], call:async_sessionmaker, func:db_session(test_client) → AsyncGenerator[AsyncSession, None], call:app.dependency_overrides.get, call:override_fn, call:gen.asend, call:gen.aclose, call:create_async_engine, call:engine.begin, call:conn.run_sync, call:async_sessionmaker, call:engine.dispose, func:authenticated_client(test_client) → Generator[TestClient, None, None], call:str, call:uuid.uuid4, call:Settings, call:app.dependency_overrides.get, call:override_fn, call:gen.asend, call:User, call:uuid.UUID, call:session.add, call:session.commit, call:gen.aclose, call:asyncio.run, call:create_test_user, call:create_session_cookie, call:test_client.cookies.set, func:create_test_user(), call:app.dependency_overrides.get, call:override_fn, call:gen.asend, call:User, call:uuid.UUID, call:session.add, call:session.commit, call:gen.aclose, func:test_project_and_repo(authenticated_client) → tuple[str, str], call:uuid.uuid4, call:Settings, call:authenticated_client.cookies.get, call:decode_session_cookie, call:uuid.UUID, call:asyncio.run, call:get_user_id, call:app.dependency_overrides.get, call:override_fn, call:gen.asend, call:Project, call:session.add, call:GitRepository, call:session.commit, call:gen.aclose, call:create_project_and_repo, call:str, raise:RuntimeError, func:get_user_id(), call:Settings, call:authenticated_client.cookies.get, call:decode_session_cookie, call:uuid.UUID, func:create_project_and_repo(), call:app.dependency_overrides.get, call:override_fn, call:gen.asend, call:Project, call:session.add, call:GitRepository, call:session.commit, call:gen.aclose, func:admin_client(test_client) → Generator[TestClient, None, None], call:str, call:uuid.uuid4, call:Settings, call:app.dependency_overrides.get, call:override_fn, call:gen.asend, call:User, call:uuid.UUID, call:session.add, call:session.commit, call:gen.aclose, call:asyncio.run, call:create_admin_user, call:create_session_cookie, call:test_client.cookies.set, func:create_admin_user(), call:app.dependency_overrides.get, call:override_fn, call:gen.asend, call:User, call:uuid.UUID, call:session.add, call:session.commit, call:gen.aclose | dep: asyncio, os, typing, unittest.mock, pytest, pytest_asyncio, fastapi.testclient, sqlalchemy.ext.asyncio, src.config, src.models.base, src.main, src.auth.dependencies, uuid, src.auth.session, src.models.user.user, src.models.project.project, src.models.project.git_repository, fastapi, sqlalchemy, aiosqlite, src.models, src.auth +- conftest.py | Configures shared pytest fixtures for FastAPI testing with async SQLite database, dependency overrides, and authenticated/admin test clients. | exp: func:test_client() → Generator[TestClient, None, None], call:create_async_engine, call:engine.begin, call:conn.run_sync, call:asyncio.run, call:init_db, call:async_sessionmaker, call:patch, call:TestClient, call:app.dependency_overrides.pop, call:engine.dispose, func:init_db(), call:engine.begin, call:conn.run_sync, func:override_get_db_session() → AsyncGenerator[AsyncSession, None], call:async_sessionmaker, func:db_session(test_client) → AsyncGenerator[AsyncSession, None], call:app.dependency_overrides.get, call:override_fn, call:gen.asend, call:gen.aclose, call:create_async_engine, call:engine.begin, call:conn.run_sync, call:async_sessionmaker, call:engine.dispose, func:authenticated_client(test_client) → Generator[TestClient, None, None], call:str, call:uuid.uuid4, call:Settings, call:app.dependency_overrides.get, call:override_fn, call:gen.asend, call:User, call:uuid.UUID, call:session.add, call:session.commit, call:gen.aclose, call:asyncio.run, call:create_test_user, call:create_session_cookie, call:test_client.cookies.set, func:create_test_user(), call:app.dependency_overrides.get, call:override_fn, call:gen.asend, call:User, call:uuid.UUID, call:session.add, call:session.commit, call:gen.aclose, func:test_project_and_repo(authenticated_client) → tuple[str, str], call:uuid.uuid4, call:Settings, call:authenticated_client.cookies.get, call:decode_session_cookie, call:uuid.UUID, call:asyncio.run, call:get_user_id, call:app.dependency_overrides.get, call:override_fn, call:gen.asend, call:Project, call:session.add, call:GitRepository, call:session.commit, call:gen.aclose, call:create_project_and_repo, call:str, raise:RuntimeError, func:get_user_id(), call:Settings, call:authenticated_client.cookies.get, call:decode_session_cookie, call:uuid.UUID, func:create_project_and_repo(), call:app.dependency_overrides.get, call:override_fn, call:gen.asend, call:Project, call:session.add, call:GitRepository, call:session.commit, call:gen.aclose, func:admin_client(test_client) → Generator[TestClient, None, None], call:str, call:uuid.uuid4, call:Settings, call:app.dependency_overrides.get, call:override_fn, call:gen.asend, call:User, call:uuid.UUID, call:session.add, call:session.commit, call:gen.aclose, call:asyncio.run, call:create_admin_user, call:create_session_cookie, call:test_client.cookies.set, func:create_admin_user(), call:app.dependency_overrides.get, call:override_fn, call:gen.asend, call:User, call:uuid.UUID, call:session.add, call:session.commit, call:gen.aclose | dep: asyncio, os, typing, unittest.mock, pytest, pytest_asyncio, fastapi.testclient, sqlalchemy.ext.asyncio, src.config, src.models.base, src.main, src.auth.dependencies, uuid, src.auth.session, src.models.user.user, src.models.project.project, src.models.project.git_repository, fastapi, sqlalchemy, aiosqlite, src.models, src.auth ## arch -Pytest fixture-based testing architecture with async SQLite test database, dependency injection overrides, and authenticated client factories using FastAPI's TestClient. +Pytest plugin architecture with async SQLite test database, dependency injection overrides, and role-based client fixtures (authenticated/admin) for isolated FastAPI integration tests ## tags call:app.dependency, call:create, overrides.get, call:override, fn, call:gen.asend, call:gen.aclose, user ## symbols diff --git a/apps/api/tests/api/.pi-map.index.md b/apps/api/tests/api/.pi-map.index.md index 42b1e99..9611da2 100644 --- a/apps/api/tests/api/.pi-map.index.md +++ b/apps/api/tests/api/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/tests/api ## role -Integration tests for multi-session terminal WebSocket routes and authentication requirements on REST API endpoints +Provides integration tests for multi-session terminal WebSocket functionality and authentication requirements on REST API endpoints. ## parent index: apps/api/tests/.pi-map.index.md map: apps/api/tests/.pi-map.md diff --git a/apps/api/tests/api/.pi-map.md b/apps/api/tests/api/.pi-map.md index aeac02b..0b921b2 100644 --- a/apps/api/tests/api/.pi-map.md +++ b/apps/api/tests/api/.pi-map.md @@ -4,11 +4,11 @@ dir: apps/api/tests/api index: apps/api/tests/api/.pi-map.index.md ## role -Integration tests for multi-session terminal WebSocket routes and authentication requirements on REST API endpoints +Provides integration tests for multi-session terminal WebSocket functionality and authentication requirements on REST API endpoints. ## files -- test_terminal_ws_multi.py | Integration tests verifying multi-session terminal WebSocket routes exist and REST API endpoints require authentication | exp: class:TestTerminalWebSocketMultiSession, method:test_specific_session_websocket_route_exists(self, client), call:client.get, method:test_default_session_alias_route_exists(self, client), call:client.get, class:TestTerminalRestApi, method:test_list_sessions_requires_auth(self, client), call:client.get, method:test_create_session_requires_auth(self, client), call:client.post, method:test_close_session_requires_auth(self, client), call:client.delete, method:test_reset_session_requires_auth(self, client), call:client.post, method:test_rename_session_requires_auth(self, client), call:client.post, method:test_legacy_reset_alias_requires_auth(self, client), call:client.post, func:client(), call:TestClient | dep: pytest, fastapi.testclient, src.main +- test_terminal_ws_multi.py | Integration tests verifying multi-session terminal WebSocket routes exist and REST API endpoints require authentication | exp: class:TestTerminalWebSocketMultiSession, method:test_specific_session_websocket_route_exists(self, client), call:client.get, method:test_default_session_alias_route_exists(self, client), call:client.get, class:TestTerminalRestApi, method:test_list_sessions_requires_auth(self, client), call:client.get, method:test_create_session_requires_auth(self, client), call:client.post, method:test_close_session_requires_auth(self, client), call:client.delete, method:test_reset_session_requires_auth(self, client), call:client.post, method:test_rename_session_requires_auth(self, client), call:client.post, method:test_legacy_reset_alias_requires_auth(self, client), call:client.post, func:client(), call:TestClient | dep: pytest, fastapi.testclient, src.main, fastapi.testclient.TestClient, src.main.app ## arch -Test-driven validation using pytest with WebSocket client testing and HTTP authentication assertion patterns +Simple test package using pytest-style integration tests with WebSocket client assertions and HTTP status code verification for auth enforcement. ## tags test, session, requires, auth, call:client.post, terminal, call:client.get, multi ## symbols diff --git a/apps/api/tests/integration/.pi-map.index.md b/apps/api/tests/integration/.pi-map.index.md index 0c42ca2..2135035 100644 --- a/apps/api/tests/integration/.pi-map.index.md +++ b/apps/api/tests/integration/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/tests/integration ## role -Integration and unit test suite for the API backend, covering authentication, CRUD APIs, workspace operations, git integration, notifications, and database model validation against real PostgreSQL and mocked dependencies. +Integration test suite for the API backend, covering authentication, authorization, CRUD operations, lifecycle events, workspace management, and external service integrations with real database and git dependencies. ## parent index: apps/api/tests/.pi-map.index.md map: apps/api/tests/.pi-map.md diff --git a/apps/api/tests/integration/.pi-map.md b/apps/api/tests/integration/.pi-map.md index 7ea11a9..f3ad0d7 100644 --- a/apps/api/tests/integration/.pi-map.md +++ b/apps/api/tests/integration/.pi-map.md @@ -4,32 +4,32 @@ dir: apps/api/tests/integration index: apps/api/tests/integration/.pi-map.index.md ## role -Integration and unit test suite for the API backend, covering authentication, CRUD APIs, workspace operations, git integration, notifications, and database model validation against real PostgreSQL and mocked dependencies. +Integration test suite for the API backend, covering authentication, authorization, CRUD operations, lifecycle events, workspace management, and external service integrations with real database and git dependencies. ## files -- __init__.py | Empty file with no functionality +- __init__.py | Swaps two tmux panes between windows, preserving active pane state and layout | dep: tmux - test_auth_api.py | Integration tests for authentication API endpoints using a real PostgreSQL database | exp: func:_postgres_available() → bool, call:asyncpg.connect, call:conn.close, call:asyncio.run, call:_check, func:_check() → bool, call:asyncpg.connect, call:conn.close, func:_prepare_auth_test_db() → None, call:create_async_engine, call:build_database_url, call:engine.begin, call:connection.run_sync, call:connection.execute, call:text, call:engine.dispose, call:asyncio.run, call:_run, func:_run() → None, call:create_async_engine, call:build_database_url, call:engine.begin, call:connection.run_sync, call:connection.execute, call:text, call:engine.dispose, func:_load_app(), call:importlib.reload, func:_insert_test_user(user_id: str) → None, call:create_async_engine, call:build_database_url, call:engine.begin, call:connection.run_sync, call:async_sessionmaker, call:session_factory, call:User, call:uuid.UUID, call:session.merge, call:session.commit, call:engine.dispose, call:asyncio.run, call:_run, func:_run() → None, call:create_async_engine, call:build_database_url, call:engine.begin, call:connection.run_sync, call:async_sessionmaker, call:session_factory, call:User, call:uuid.UUID, call:session.merge, call:session.commit, call:engine.dispose, func:test_login_redirects_to_authentik_authorize_endpoint() → None, call:_prepare_auth_test_db, call:_load_app, call:TestClient, call:client.get, func:test_me_returns_401_without_session_cookie() → None, call:_prepare_auth_test_db, call:_load_app, call:TestClient, call:client.get, func:test_me_returns_user_with_valid_session() → None, call:_prepare_auth_test_db, call:_insert_test_user, call:_load_app, call:Settings, call:create_session_cookie, call:TestClient, call:client.get, call:response.json, func:test_logout_clears_session_cookie() → None, call:_prepare_auth_test_db, call:_load_app, call:TestClient, call:client.post, call:response.headers.get | dep: uuid, asyncio, importlib, fastapi.testclient, pytest, sqlalchemy, sqlalchemy.ext.asyncio, src.auth.session, src.config, src.models, src.models.user.user, asyncpg, fastapi -- test_auth_services.py | Integration tests for authentication services including cookie options, OIDC login URLs, and session cookie creation/decoding with security validations. | exp: func:test_cookie_options_follow_environment_defaults(monkeypatch) → None, call:monkeypatch.setenv, call:Settings, call:build_cookie_options, func:test_login_redirect_url_contains_required_oidc_params() → None, call:Settings, call:build_login_redirect_url, func:test_create_and_decode_session_cookie_round_trip() → None, call:Settings, call:create_session_cookie, call:decode_session_cookie, func:test_decode_session_rejects_invalid_signature() → None, call:Settings, call:create_session_cookie, call:pytest.raises, call:decode_session_cookie, func:test_decode_session_rejects_expired_cookie(monkeypatch) → None, call:Settings, call:create_session_cookie, call:pytest.raises, call:decode_session_cookie | dep: pytest, src.auth.cookies, src.auth.oidc, src.auth.session, src.config -- test_config_profiles_api.py | Integration tests for a FastAPI config profiles REST API covering CRUD operations, profile inheritance, default resolution, git mounts, and validation. | exp: class:TestConfigProfilesAPI, method:test_list_config_profiles_requires_authentication(self, test_client: TestClient) → None, call:test_client.get, method:test_list_config_profiles_returns_user_profiles(self, authenticated_client: TestClient) → None, call:authenticated_client.get, call:response.json, call:isinstance, method:test_create_config_profile_successfully(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:response.json, method:test_create_config_profile_duplicate_name(self, authenticated_client: TestClient) → None, call:authenticated_client.post, method:test_create_config_profile_exceeds_size_limit(self, authenticated_client: TestClient) → None, call:authenticated_client.post, method:test_create_config_profile_invalid_file_path(self, authenticated_client: TestClient) → None, call:authenticated_client.post, method:test_create_config_profile_invalid_mount_target(self, authenticated_client: TestClient) → None, call:authenticated_client.post, method:test_get_config_profile_by_id(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:create_response.json, call:authenticated_client.get, call:response.json, method:test_get_config_profile_not_found(self, authenticated_client: TestClient) → None, call:authenticated_client.get, call:uuid.uuid4, method:test_update_config_profile_successfully(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:create_response.json, call:authenticated_client.put, call:response.json, method:test_delete_config_profile_successfully(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:create_response.json, call:authenticated_client.delete, call:authenticated_client.get, method:test_update_profile_includes_successfully(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:base_response.json, call:child_response.json, call:authenticated_client.put, call:response.json, call:print, call:data.get, call:len, method:test_update_profile_includes_cycle_detection(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:a_response.json, call:b_response.json, call:authenticated_client.put, method:test_preview_config_profile_successfully(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:base_response.json, call:child_response.json, call:authenticated_client.put, call:authenticated_client.get, call:response.json, call:len, method:test_resolve_default_profile(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:str, call:uuid.uuid4, call:authenticated_client.get, call:response.json, method:test_resolve_default_profile_no_match(self, authenticated_client: TestClient) → None, call:str, call:uuid.uuid4, call:authenticated_client.get, call:response.json, method:test_create_config_profile_with_git_mounts(self, authenticated_client: TestClient, test_project_and_repo) → None, call:authenticated_client.post, call:response.json, call:len, method:test_update_config_profile_git_mounts(self, authenticated_client: TestClient, test_project_and_repo) → None, call:authenticated_client.post, call:create_response.json, call:authenticated_client.put, call:response.json, call:len, method:test_create_config_profile_invalid_git_mount_source_path(self, authenticated_client: TestClient, test_project_and_repo) → None, call:authenticated_client.post, method:test_create_config_profile_invalid_git_mount_target_path_traversal(self, authenticated_client: TestClient, test_project_and_repo) → None, call:authenticated_client.post, method:test_preview_config_profile_with_git_mounts(self, authenticated_client: TestClient, test_project_and_repo) → None, call:authenticated_client.post, call:create_response.json, call:authenticated_client.get, call:response.json, call:len | dep: uuid, pytest, fastapi.testclient, fastapi.testclient.TestClient -- test_events.py | Integration tests for SSE endpoint authentication, connection limits, event bus pub/sub, and lifecycle event persistence to database | exp: func:event_bus() → Generator[InstanceEventBus, None, None], call:InstanceEventBus, call:bus._reset_for_testing, func:sample_payload() → InstanceEventPayload, call:str, call:uuid.uuid4, func:_get_user_id_from_client(client: TestClient) → uuid.UUID | None, call:Settings, call:client.cookies.get, call:decode_session_cookie, call:uuid.UUID, func:test_sse_requires_auth(test_client: TestClient) → None, call:test_client.get, func:test_sse_enforces_connection_limit(authenticated_client: TestClient) → None, call:_get_user_id_from_client, call:authenticated_client.get, call:events_module._connection_counts.pop, func:test_sse_event_generator_format() → None, call:getattr, call:any, call:str, func:test_lifecycle_hook_publishes_event_and_persists(authenticated_client: TestClient, db_session: AsyncSession, event_bus: InstanceEventBus) → None, call:_get_user_id_from_client, call:Project, call:uuid.uuid4, call:GitRepository, call:ToolType, call:db_session.add_all, call:db_session.commit, call:ToolInstance, call:db_session.add, call:received.append, call:event_bus.subscribe, call:publish_lifecycle_event, call:len, call:db_session.execute, call:select(InstanceEvent).where, call:result.scalars().all, func:subscriber(payload: InstanceEventPayload) → None, call:received.append, func:test_lifecycle_event_persists_audit_row(authenticated_client: TestClient, db_session: AsyncSession, event_bus: InstanceEventBus) → None, call:_get_user_id_from_client, call:Project, call:uuid.uuid4, call:GitRepository, call:ToolType, call:db_session.add_all, call:db_session.commit, call:ToolInstance, call:db_session.add, call:publish_lifecycle_event, call:db_session.execute, call:select(InstanceEvent).where, call:result.scalars().all, call:len, func:test_event_bus_pubsub(event_bus: InstanceEventBus) → None, call:received.append, call:event_bus.subscribe, call:str, call:uuid.uuid4, call:asyncio.run, call:event_bus.publish, call:len, func:handler(payload: InstanceEventPayload) → None, call:received.append | dep: asyncio, uuid, collections.abc, typing, pytest, fastapi.testclient, sqlalchemy, sqlalchemy.ext.asyncio, src.api.system, src.auth.session, src.config, src.models.project.git_repository, src.models.system.instance_event, src.models.project.project, src.models.tool.tool_instance, src.models.tool.tool_type, src.services.instance.event_bus, src.api.system.events, src.services.instance.lifecycle_hooks, fastapi -- test_git_control.py | Unit tests for git utility functions including repository status, branch operations, and commit handling | exp: class:TestGitStatus, method:test_clean_repo(self, temp_repo), call:get_status, call:isinstance, call:len, method:test_modified_file(self, temp_repo), call:open, call:os.path.join, call:f.write, call:get_status, method:test_untracked_file(self, temp_repo), call:open, call:os.path.join, call:f.write, call:get_status, class:TestBranchOperations, method:test_create_branch(self, temp_repo), call:get_current_branch, call:create_branch, call:get_status, method:test_checkout_branch(self, temp_repo), call:get_current_branch, call:create_branch, call:checkout_branch, method:test_delete_branch(self, temp_repo), call:get_current_branch, call:create_branch, call:delete_branch, method:test_get_current_branch(self, temp_repo), call:get_current_branch, class:TestCommit, method:test_commit_changes(self, temp_repo), call:open, call:os.path.join, call:f.write, call:commit_changes, call:get_status, method:test_commit_all_changes(self, temp_repo), call:open, call:os.path.join, call:f.write, call:commit_changes, call:get_status, call:len, func:temp_repo(), call:tempfile.TemporaryDirectory, call:os.system, call:open, call:os.path.join, call:f.write, func:test_get_current_branch_handles_unborn_main() → None, call:tempfile.TemporaryDirectory, call:os.system, call:get_current_branch, func:test_create_branch_on_bare_repo_with_no_commits() → None, call:tempfile.TemporaryDirectory, call:os.system, call:create_branch, call:get_current_branch, func:test_checkout_branch_on_bare_repo_with_no_commits() → None, call:tempfile.TemporaryDirectory, call:os.system, call:checkout_branch, call:get_current_branch | dep: os, tempfile, pytest, src.utils.git_control -- test_models.py | Integration tests verifying SQLAlchemy model definitions, table registration, column constraints, relationships, and async database operations. | exp: func:test_base_metadata_collects_declared_tables() → None, call:isinstance, func:test_shared_mixins_define_expected_columns() → None, func:test_expected_tables_are_registered() → None, call:set, func:test_user_table_has_required_columns() → None, call:set, call:columns.keys, func:test_project_relationships_point_to_owner_and_default_ssh_key() → None, call:next, call:iter, func:test_repository_and_user_config_relationships_are_registered() → None, call:next, call:iter, func:test_async_session_can_insert_and_load_user(db_session: AsyncSession) → None, call:User, call:db_session.add, call:db_session.commit, call:db_session.refresh, call:db_session.get | dep: pytest, sqlalchemy.ext.asyncio, src.models, src.models.base, src.models.project.git_repository, src.models.project.project, src.models.user.ssh_key, src.models.user.user, src.models.user.user_config, src.models (Base, mixins, User, Project, GitRepository, SSHKey, UserConfig) -- test_notifications_api.py | Integration tests for a notifications REST API covering authentication, CRUD operations, pagination, and user isolation. | exp: func:notification_service() → NotificationService, call:NotificationService, func:user_a(db_session: AsyncSession) → User, call:User, call:uuid.uuid4, call:db_session.add, call:db_session.commit, func:user_b(db_session: AsyncSession) → User, call:User, call:uuid.uuid4, call:db_session.add, call:db_session.commit, func:_mint_cookie_for_user(test_client: TestClient, user_id: uuid.UUID) → None, call:Settings, call:create_session_cookie, call:str, call:test_client.cookies.set, func:test_list_requires_auth(test_client: TestClient) → None, call:test_client.get, func:test_list_returns_only_own_notifications(authenticated_client: TestClient, db_session: AsyncSession, notification_service: NotificationService, user_a: User, user_b: User) → None, call:notification_service.create_notification, call:asyncio.run, call:create_notifications, call:_mint_cookie_for_user, call:authenticated_client.get, call:response.json, call:len, func:create_notifications() → None, call:notification_service.create_notification, func:test_list_pagination(authenticated_client: TestClient, db_session: AsyncSession, notification_service: NotificationService, user_a: User) → None, call:range, call:notification_service.create_notification, call:datetime.now, call:timedelta, call:db_session.commit, call:db_session.refresh, call:asyncio.run, call:create_many, call:_mint_cookie_for_user, call:authenticated_client.get, call:response.json, call:len, func:create_many() → None, call:range, call:notification_service.create_notification, call:datetime.now, call:timedelta, call:db_session.commit, call:db_session.refresh, func:test_unread_count_endpoint(authenticated_client: TestClient, db_session: AsyncSession, notification_service: NotificationService, user_a: User) → None, call:range, call:notification_service.create_notification, call:asyncio.run, call:create_unread, call:_mint_cookie_for_user, call:authenticated_client.get, call:response.json, func:create_unread() → None, call:range, call:notification_service.create_notification, func:test_mark_read_endpoint(authenticated_client: TestClient, db_session: AsyncSession, notification_service: NotificationService, user_a: User) → None, call:notification_service.create_notification, call:asyncio.run, call:create_and_get, call:_mint_cookie_for_user, call:authenticated_client.patch, call:response.json, func:create_and_get() → uuid.UUID, call:notification_service.create_notification, func:test_mark_read_404_for_other_user(authenticated_client: TestClient, db_session: AsyncSession, notification_service: NotificationService, user_a: User, user_b: User) → None, call:notification_service.create_notification, call:asyncio.run, call:create_and_get, call:_mint_cookie_for_user, call:authenticated_client.patch, func:create_and_get() → uuid.UUID, call:notification_service.create_notification, func:test_mark_all_read_endpoint(authenticated_client: TestClient, db_session: AsyncSession, notification_service: NotificationService, user_a: User) → None, call:range, call:notification_service.create_notification, call:asyncio.run, call:create_unread, call:_mint_cookie_for_user, call:authenticated_client.post, call:response.json, func:create_unread() → None, call:range, call:notification_service.create_notification, func:test_dismiss_endpoint(authenticated_client: TestClient, db_session: AsyncSession, notification_service: NotificationService, user_a: User) → None, call:notification_service.create_notification, call:asyncio.run, call:create_and_get, call:_mint_cookie_for_user, call:authenticated_client.delete, call:authenticated_client.get, call:response.json, call:len, func:create_and_get() → uuid.UUID, call:notification_service.create_notification, func:test_dismiss_404_for_other_user(authenticated_client: TestClient, db_session: AsyncSession, notification_service: NotificationService, user_a: User, user_b: User) → None, call:notification_service.create_notification, call:asyncio.run, call:create_and_get, call:_mint_cookie_for_user, call:authenticated_client.delete, func:create_and_get() → uuid.UUID, call:notification_service.create_notification, func:test_mute_categories_filter_in_list(authenticated_client: TestClient, db_session: AsyncSession, notification_service: NotificationService, user_a: User) → None, call:UserConfig, call:db_session.add, call:db_session.commit, call:notification_service.create_notification, call:asyncio.run, call:setup, call:_mint_cookie_for_user, call:authenticated_client.get, call:response.json, call:len, func:setup() → None, call:UserConfig, call:db_session.add, call:db_session.commit, call:notification_service.create_notification | dep: uuid, datetime, pytest, fastapi.testclient, sqlalchemy.ext.asyncio, src.models.user.user, src.models.user.user_config, src.services.shared.notification_service, src.auth.session, src.config, asyncio, fastapi, sqlalchemy -- test_notifications_lifecycle.py | Integration tests verifying that instance lifecycle events and health monitor state changes correctly create (or skip) notifications with proper ownership, severity, and error handling. | exp: func:event_bus() → Generator[InstanceEventBus, None, None], call:InstanceEventBus, call:bus._reset_for_testing, func:test_instance(db_session: AsyncSession) → ToolInstance, call:User, call:uuid.uuid4, call:db_session.add, call:db_session.commit, call:Project, call:GitRepository, call:ToolType, call:db_session.add_all, call:ToolInstance, func:test_lifecycle_started_intermediate_skips_notification(db_session: AsyncSession, event_bus: InstanceEventBus, test_instance: ToolInstance) → None, call:received.append, call:event_bus.subscribe, call:publish_lifecycle_event, call:len, call:db_session.execute, call:select(Notification).where, call:list, call:result.scalars().all, func:subscriber(payload: InstanceEventPayload) → None, call:received.append, func:test_lifecycle_running_creates_notification(db_session: AsyncSession, event_bus: InstanceEventBus, test_instance: ToolInstance) → None, call:publish_lifecycle_event, call:db_session.execute, call:select(Notification).where, call:list, call:result.scalars().all, call:len, func:test_health_monitor_error_creates_notification(db_session: AsyncSession, event_bus: InstanceEventBus, test_instance: ToolInstance) → None, call:HealthMonitor, call:HealthSnapshot, call:received.append, call:event_bus.subscribe, call:patch, call:monitor._check_instance, call:len, call:db_session.execute, call:select(Notification).where, call:list, call:result.scalars().all, func:subscriber(payload: InstanceEventPayload) → None, call:received.append, func:test_notification_failure_does_not_block_event_pipeline(db_session: AsyncSession, event_bus: InstanceEventBus, test_instance: ToolInstance) → None, call:received.append, call:event_bus.subscribe, call:patch, call:RuntimeError, call:publish_lifecycle_event, call:len, call:db_session.execute, call:select(Notification).where, call:result.scalar_one_or_none, func:subscriber(payload: InstanceEventPayload) → None, call:received.append, func:test_notification_ownership_matches_instance_owner(db_session: AsyncSession, event_bus: InstanceEventBus) → None, call:User, call:uuid.uuid4, call:db_session.add, call:db_session.commit, call:Project, call:GitRepository, call:ToolType, call:db_session.add_all, call:ToolInstance, call:publish_lifecycle_event, call:db_session.execute, call:select(Notification).where, call:result.scalar_one, func:test_lifecycle_error_creates_error_notification(db_session: AsyncSession, event_bus: InstanceEventBus, test_instance: ToolInstance) → None, call:publish_lifecycle_event, call:db_session.execute, call:select(Notification).where, call:result.scalar_one, func:test_health_monitor_unhealthy_creates_warning_notification(db_session: AsyncSession, event_bus: InstanceEventBus, test_instance: ToolInstance) → None, call:HealthMonitor, call:HealthSnapshot, call:patch, call:monitor._check_instance, call:db_session.execute, call:select(Notification).where, call:result.scalar_one | dep: uuid, collections.abc, unittest.mock, pytest, pytest_asyncio, sqlalchemy, sqlalchemy.ext.asyncio, src.models.project.git_repository, src.models.system.notification, src.models.project.project, src.models.tool.tool_instance, src.models.tool.tool_type, src.models.user.user, src.services.instance.event_bus, src.services.instance.health_monitor, src.services.instance.lifecycle_hooks -- test_projects_api.py | Integration tests for a FastAPI projects API endpoint, verifying authentication, CRUD operations, and ownership-based authorization against a real PostgreSQL database. | exp: func:_postgres_available() → bool, call:asyncpg.connect, call:conn.close, call:asyncio.run, call:_check, func:_check() → bool, call:asyncpg.connect, call:conn.close, func:_prepare_test_db() → None, call:create_async_engine, call:build_database_url, call:engine.begin, call:connection.run_sync, call:connection.execute, call:text, call:engine.dispose, call:asyncio.run, call:_run, func:_run() → None, call:create_async_engine, call:build_database_url, call:engine.begin, call:connection.run_sync, call:connection.execute, call:text, call:engine.dispose, func:_load_app(), call:hasattr, call:asyncio.run, call:database_module.engine.dispose, call:importlib.reload, func:_mint_token(user_id: str) → str, call:Settings, call:create_session_cookie, func:_insert_user(user_id: str, email) → None, call:create_async_engine, call:build_database_url, call:engine.begin, call:connection.run_sync, call:async_sessionmaker, call:session_factory, call:User, call:uuid.UUID, call:session.merge, call:session.commit, call:engine.dispose, call:asyncio.run, call:_run, func:_run() → None, call:create_async_engine, call:build_database_url, call:engine.begin, call:connection.run_sync, call:async_sessionmaker, call:session_factory, call:User, call:uuid.UUID, call:session.merge, call:session.commit, call:engine.dispose, func:_insert_project(project_id: str, owner_id: str, name) → None, call:create_async_engine, call:build_database_url, call:async_sessionmaker, call:session_factory, call:Project, call:uuid.UUID, call:session.merge, call:session.commit, call:engine.dispose, call:asyncio.run, call:_run, func:_run() → None, call:create_async_engine, call:build_database_url, call:async_sessionmaker, call:session_factory, call:Project, call:uuid.UUID, call:session.merge, call:session.commit, call:engine.dispose, func:test_create_project_requires_authentication() → None, call:_prepare_test_db, call:_load_app, call:TestClient, call:client.post, func:test_create_project_successfully() → None, call:_prepare_test_db, call:_insert_user, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.post, call:response.json, func:test_list_projects_returns_only_owned_projects() → None, call:_prepare_test_db, call:_insert_user, call:_insert_project, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.get, call:response.json, call:len, func:test_update_project_requires_ownership() → None, call:_prepare_test_db, call:_insert_user, call:_insert_project, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.patch, func:test_update_project_successfully() → None, call:_prepare_test_db, call:_insert_user, call:_insert_project, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.patch, call:response.json, func:test_delete_project_requires_ownership() → None, call:_prepare_test_db, call:_insert_user, call:_insert_project, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.delete, func:test_delete_project_successfully() → None, call:_prepare_test_db, call:_insert_user, call:_insert_project, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.delete, func:test_set_default_ssh_key_requires_ownership() → None, call:_prepare_test_db, call:_insert_user, call:_insert_project, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.patch | dep: uuid, datetime, asyncio, pytest, fastapi.testclient, sqlalchemy, sqlalchemy.ext.asyncio, src.auth.session, src.config, src.models, src.models.project.project, src.models.user.user, asyncpg, importlib, fastapi, src.database, src.api.user.auth, src.api.project.projects, src.main +- test_auth_services.py | Integration tests for authentication services including cookie options, OIDC login redirect URLs, and session cookie creation/decode with validation | exp: func:test_cookie_options_follow_environment_defaults(monkeypatch) → None, call:monkeypatch.setenv, call:Settings, call:build_cookie_options, func:test_login_redirect_url_contains_required_oidc_params() → None, call:Settings, call:build_login_redirect_url, func:test_create_and_decode_session_cookie_round_trip() → None, call:Settings, call:create_session_cookie, call:decode_session_cookie, func:test_decode_session_rejects_invalid_signature() → None, call:Settings, call:create_session_cookie, call:pytest.raises, call:decode_session_cookie, func:test_decode_session_rejects_expired_cookie(monkeypatch) → None, call:Settings, call:create_session_cookie, call:pytest.raises, call:decode_session_cookie | dep: pytest, src.auth.cookies, src.auth.oidc, src.auth.session, src.config +- test_config_profiles_api.py | Integration tests for a FastAPI config profiles REST API covering CRUD operations, includes/cycle detection, default resolution, git mounts, and validation. | exp: class:TestConfigProfilesAPI, method:test_list_config_profiles_requires_authentication(self, test_client: TestClient) → None, call:test_client.get, method:test_list_config_profiles_returns_user_profiles(self, authenticated_client: TestClient) → None, call:authenticated_client.get, call:response.json, call:isinstance, method:test_create_config_profile_successfully(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:response.json, method:test_create_config_profile_duplicate_name(self, authenticated_client: TestClient) → None, call:authenticated_client.post, method:test_create_config_profile_exceeds_size_limit(self, authenticated_client: TestClient) → None, call:authenticated_client.post, method:test_create_config_profile_invalid_file_path(self, authenticated_client: TestClient) → None, call:authenticated_client.post, method:test_create_config_profile_invalid_mount_target(self, authenticated_client: TestClient) → None, call:authenticated_client.post, method:test_get_config_profile_by_id(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:create_response.json, call:authenticated_client.get, call:response.json, method:test_get_config_profile_not_found(self, authenticated_client: TestClient) → None, call:authenticated_client.get, call:uuid.uuid4, method:test_update_config_profile_successfully(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:create_response.json, call:authenticated_client.put, call:response.json, method:test_delete_config_profile_successfully(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:create_response.json, call:authenticated_client.delete, call:authenticated_client.get, method:test_update_profile_includes_successfully(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:base_response.json, call:child_response.json, call:authenticated_client.put, call:response.json, call:print, call:data.get, call:len, method:test_update_profile_includes_cycle_detection(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:a_response.json, call:b_response.json, call:authenticated_client.put, method:test_preview_config_profile_successfully(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:base_response.json, call:child_response.json, call:authenticated_client.put, call:authenticated_client.get, call:response.json, call:len, method:test_resolve_default_profile(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:str, call:uuid.uuid4, call:authenticated_client.get, call:response.json, method:test_resolve_default_profile_no_match(self, authenticated_client: TestClient) → None, call:str, call:uuid.uuid4, call:authenticated_client.get, call:response.json, method:test_create_config_profile_with_git_mounts(self, authenticated_client: TestClient, test_project_and_repo) → None, call:authenticated_client.post, call:response.json, call:len, method:test_update_config_profile_git_mounts(self, authenticated_client: TestClient, test_project_and_repo) → None, call:authenticated_client.post, call:create_response.json, call:authenticated_client.put, call:response.json, call:len, method:test_create_config_profile_invalid_git_mount_source_path(self, authenticated_client: TestClient, test_project_and_repo) → None, call:authenticated_client.post, method:test_create_config_profile_invalid_git_mount_target_path_traversal(self, authenticated_client: TestClient, test_project_and_repo) → None, call:authenticated_client.post, method:test_preview_config_profile_with_git_mounts(self, authenticated_client: TestClient, test_project_and_repo) → None, call:authenticated_client.post, call:create_response.json, call:authenticated_client.get, call:response.json, call:len | dep: uuid, pytest, fastapi.testclient, fastapi.testclient.TestClient +- test_events.py | Integration tests for SSE endpoint authentication, connection limits, and lifecycle event publishing/persistence via pub/sub event bus. | exp: func:event_bus() → Generator[InstanceEventBus, None, None], call:InstanceEventBus, call:bus._reset_for_testing, func:sample_payload() → InstanceEventPayload, call:str, call:uuid.uuid4, func:_get_user_id_from_client(client: TestClient) → uuid.UUID | None, call:Settings, call:client.cookies.get, call:decode_session_cookie, call:uuid.UUID, func:test_sse_requires_auth(test_client: TestClient) → None, call:test_client.get, func:test_sse_enforces_connection_limit(authenticated_client: TestClient) → None, call:_get_user_id_from_client, call:authenticated_client.get, call:events_module._connection_counts.pop, func:test_sse_event_generator_format() → None, call:getattr, call:any, call:str, func:test_lifecycle_hook_publishes_event_and_persists(authenticated_client: TestClient, db_session: AsyncSession, event_bus: InstanceEventBus) → None, call:_get_user_id_from_client, call:Project, call:uuid.uuid4, call:GitRepository, call:ToolType, call:db_session.add_all, call:db_session.commit, call:ToolInstance, call:db_session.add, call:received.append, call:event_bus.subscribe, call:publish_lifecycle_event, call:len, call:db_session.execute, call:select(InstanceEvent).where, call:result.scalars().all, func:subscriber(payload: InstanceEventPayload) → None, call:received.append, func:test_lifecycle_event_persists_audit_row(authenticated_client: TestClient, db_session: AsyncSession, event_bus: InstanceEventBus) → None, call:_get_user_id_from_client, call:Project, call:uuid.uuid4, call:GitRepository, call:ToolType, call:db_session.add_all, call:db_session.commit, call:ToolInstance, call:db_session.add, call:publish_lifecycle_event, call:db_session.execute, call:select(InstanceEvent).where, call:result.scalars().all, call:len, func:test_event_bus_pubsub(event_bus: InstanceEventBus) → None, call:received.append, call:event_bus.subscribe, call:str, call:uuid.uuid4, call:asyncio.run, call:event_bus.publish, call:len, func:handler(payload: InstanceEventPayload) → None, call:received.append | dep: asyncio, uuid, collections.abc, typing, pytest, fastapi.testclient, sqlalchemy, sqlalchemy.ext.asyncio, src.api.system, src.auth.session, src.config, src.models.project.git_repository, src.models.system.instance_event, src.models.project.project, src.models.tool.tool_instance, src.models.tool.tool_type, src.services.instance.event_bus, src.api.system.events, src.services.instance.lifecycle_hooks, fastapi +- test_git_control.py | Unit tests for git utility functions including status checking, branch operations, and committing changes | exp: class:TestGitStatus, method:test_clean_repo(self, temp_repo), call:get_status, call:isinstance, call:len, method:test_modified_file(self, temp_repo), call:open, call:os.path.join, call:f.write, call:get_status, method:test_untracked_file(self, temp_repo), call:open, call:os.path.join, call:f.write, call:get_status, class:TestBranchOperations, method:test_create_branch(self, temp_repo), call:get_current_branch, call:create_branch, call:get_status, method:test_checkout_branch(self, temp_repo), call:get_current_branch, call:create_branch, call:checkout_branch, method:test_delete_branch(self, temp_repo), call:get_current_branch, call:create_branch, call:delete_branch, method:test_get_current_branch(self, temp_repo), call:get_current_branch, class:TestCommit, method:test_commit_changes(self, temp_repo), call:open, call:os.path.join, call:f.write, call:commit_changes, call:get_status, method:test_commit_all_changes(self, temp_repo), call:open, call:os.path.join, call:f.write, call:commit_changes, call:get_status, call:len, func:temp_repo(), call:tempfile.TemporaryDirectory, call:os.system, call:open, call:os.path.join, call:f.write, func:test_get_current_branch_handles_unborn_main() → None, call:tempfile.TemporaryDirectory, call:os.system, call:get_current_branch, func:test_create_branch_on_bare_repo_with_no_commits() → None, call:tempfile.TemporaryDirectory, call:os.system, call:create_branch, call:get_current_branch, func:test_checkout_branch_on_bare_repo_with_no_commits() → None, call:tempfile.TemporaryDirectory, call:os.system, call:checkout_branch, call:get_current_branch | dep: os, tempfile, pytest, src.utils.git_control +- test_models.py | Integration tests verifying SQLAlchemy model metadata, table registration, column definitions, relationships, and basic async database operations. | exp: func:test_base_metadata_collects_declared_tables() → None, call:isinstance, func:test_shared_mixins_define_expected_columns() → None, func:test_expected_tables_are_registered() → None, call:set, func:test_user_table_has_required_columns() → None, call:set, call:columns.keys, func:test_project_relationships_point_to_owner_and_default_ssh_key() → None, call:next, call:iter, func:test_repository_and_user_config_relationships_are_registered() → None, call:next, call:iter, func:test_async_session_can_insert_and_load_user(db_session: AsyncSession) → None, call:User, call:db_session.add, call:db_session.commit, call:db_session.refresh, call:db_session.get | dep: pytest, sqlalchemy.ext.asyncio, src.models, src.models.base, src.models.project.git_repository, src.models.project.project, src.models.user.ssh_key, src.models.user.user, src.models.user.user_config, src.models (Base, mixins, GitRepository, Project, SSHKey, User, UserConfig) +- test_notifications_api.py | Integration tests for a notifications REST API covering authentication, CRUD operations, pagination, and user isolation. | exp: func:notification_service() → NotificationService, call:NotificationService, func:user_a(db_session: AsyncSession) → User, call:User, call:uuid.uuid4, call:db_session.add, call:db_session.commit, func:user_b(db_session: AsyncSession) → User, call:User, call:uuid.uuid4, call:db_session.add, call:db_session.commit, func:_mint_cookie_for_user(test_client: TestClient, user_id: uuid.UUID) → None, call:Settings, call:create_session_cookie, call:str, call:test_client.cookies.set, func:test_list_requires_auth(test_client: TestClient) → None, call:test_client.get, func:test_list_returns_only_own_notifications(authenticated_client: TestClient, db_session: AsyncSession, notification_service: NotificationService, user_a: User, user_b: User) → None, call:notification_service.create_notification, call:asyncio.run, call:create_notifications, call:_mint_cookie_for_user, call:authenticated_client.get, call:response.json, call:len, func:create_notifications() → None, call:notification_service.create_notification, func:test_list_pagination(authenticated_client: TestClient, db_session: AsyncSession, notification_service: NotificationService, user_a: User) → None, call:range, call:notification_service.create_notification, call:datetime.now, call:timedelta, call:db_session.commit, call:db_session.refresh, call:asyncio.run, call:create_many, call:_mint_cookie_for_user, call:authenticated_client.get, call:response.json, call:len, func:create_many() → None, call:range, call:notification_service.create_notification, call:datetime.now, call:timedelta, call:db_session.commit, call:db_session.refresh, func:test_unread_count_endpoint(authenticated_client: TestClient, db_session: AsyncSession, notification_service: NotificationService, user_a: User) → None, call:range, call:notification_service.create_notification, call:asyncio.run, call:create_unread, call:_mint_cookie_for_user, call:authenticated_client.get, call:response.json, func:create_unread() → None, call:range, call:notification_service.create_notification, func:test_mark_read_endpoint(authenticated_client: TestClient, db_session: AsyncSession, notification_service: NotificationService, user_a: User) → None, call:notification_service.create_notification, call:asyncio.run, call:create_and_get, call:_mint_cookie_for_user, call:authenticated_client.patch, call:response.json, func:create_and_get() → uuid.UUID, call:notification_service.create_notification, func:test_mark_read_404_for_other_user(authenticated_client: TestClient, db_session: AsyncSession, notification_service: NotificationService, user_a: User, user_b: User) → None, call:notification_service.create_notification, call:asyncio.run, call:create_and_get, call:_mint_cookie_for_user, call:authenticated_client.patch, func:create_and_get() → uuid.UUID, call:notification_service.create_notification, func:test_mark_all_read_endpoint(authenticated_client: TestClient, db_session: AsyncSession, notification_service: NotificationService, user_a: User) → None, call:range, call:notification_service.create_notification, call:asyncio.run, call:create_unread, call:_mint_cookie_for_user, call:authenticated_client.post, call:response.json, func:create_unread() → None, call:range, call:notification_service.create_notification, func:test_dismiss_endpoint(authenticated_client: TestClient, db_session: AsyncSession, notification_service: NotificationService, user_a: User) → None, call:notification_service.create_notification, call:asyncio.run, call:create_and_get, call:_mint_cookie_for_user, call:authenticated_client.delete, call:authenticated_client.get, call:response.json, call:len, func:create_and_get() → uuid.UUID, call:notification_service.create_notification, func:test_dismiss_404_for_other_user(authenticated_client: TestClient, db_session: AsyncSession, notification_service: NotificationService, user_a: User, user_b: User) → None, call:notification_service.create_notification, call:asyncio.run, call:create_and_get, call:_mint_cookie_for_user, call:authenticated_client.delete, func:create_and_get() → uuid.UUID, call:notification_service.create_notification, func:test_mute_categories_filter_in_list(authenticated_client: TestClient, db_session: AsyncSession, notification_service: NotificationService, user_a: User) → None, call:UserConfig, call:db_session.add, call:db_session.commit, call:notification_service.create_notification, call:asyncio.run, call:setup, call:_mint_cookie_for_user, call:authenticated_client.get, call:response.json, call:len, func:setup() → None, call:UserConfig, call:db_session.add, call:db_session.commit, call:notification_service.create_notification | dep: uuid, datetime, pytest, fastapi.testclient, sqlalchemy.ext.asyncio, src.models.user.user, src.models.user.user_config, src.services.shared.notification_service, src.auth.session, src.config, asyncio, fastapi.testclient.TestClient, sqlalchemy.ext.asyncio.AsyncSession +- test_notifications_lifecycle.py | Integration tests verifying that instance lifecycle events and health monitoring create appropriate notifications with correct ownership and severity levels. | exp: func:event_bus() → Generator[InstanceEventBus, None, None], call:InstanceEventBus, call:bus._reset_for_testing, func:test_instance(db_session: AsyncSession) → ToolInstance, call:User, call:uuid.uuid4, call:db_session.add, call:db_session.commit, call:Project, call:GitRepository, call:ToolType, call:db_session.add_all, call:ToolInstance, func:test_lifecycle_started_intermediate_skips_notification(db_session: AsyncSession, event_bus: InstanceEventBus, test_instance: ToolInstance) → None, call:received.append, call:event_bus.subscribe, call:publish_lifecycle_event, call:len, call:db_session.execute, call:select(Notification).where, call:list, call:result.scalars().all, func:subscriber(payload: InstanceEventPayload) → None, call:received.append, func:test_lifecycle_running_creates_notification(db_session: AsyncSession, event_bus: InstanceEventBus, test_instance: ToolInstance) → None, call:publish_lifecycle_event, call:db_session.execute, call:select(Notification).where, call:list, call:result.scalars().all, call:len, func:test_health_monitor_error_creates_notification(db_session: AsyncSession, event_bus: InstanceEventBus, test_instance: ToolInstance) → None, call:HealthMonitor, call:HealthSnapshot, call:received.append, call:event_bus.subscribe, call:patch, call:monitor._check_instance, call:len, call:db_session.execute, call:select(Notification).where, call:list, call:result.scalars().all, func:subscriber(payload: InstanceEventPayload) → None, call:received.append, func:test_notification_failure_does_not_block_event_pipeline(db_session: AsyncSession, event_bus: InstanceEventBus, test_instance: ToolInstance) → None, call:received.append, call:event_bus.subscribe, call:patch, call:RuntimeError, call:publish_lifecycle_event, call:len, call:db_session.execute, call:select(Notification).where, call:result.scalar_one_or_none, func:subscriber(payload: InstanceEventPayload) → None, call:received.append, func:test_notification_ownership_matches_instance_owner(db_session: AsyncSession, event_bus: InstanceEventBus) → None, call:User, call:uuid.uuid4, call:db_session.add, call:db_session.commit, call:Project, call:GitRepository, call:ToolType, call:db_session.add_all, call:ToolInstance, call:publish_lifecycle_event, call:db_session.execute, call:select(Notification).where, call:result.scalar_one, func:test_lifecycle_error_creates_error_notification(db_session: AsyncSession, event_bus: InstanceEventBus, test_instance: ToolInstance) → None, call:publish_lifecycle_event, call:db_session.execute, call:select(Notification).where, call:result.scalar_one, func:test_health_monitor_unhealthy_creates_warning_notification(db_session: AsyncSession, event_bus: InstanceEventBus, test_instance: ToolInstance) → None, call:HealthMonitor, call:HealthSnapshot, call:patch, call:monitor._check_instance, call:db_session.execute, call:select(Notification).where, call:result.scalar_one | dep: uuid, collections.abc, unittest.mock, pytest, pytest_asyncio, sqlalchemy, sqlalchemy.ext.asyncio, src.models.project.git_repository, src.models.system.notification, src.models.project.project, src.models.tool.tool_instance, src.models.tool.tool_type, src.models.user.user, src.services.instance.event_bus, src.services.instance.health_monitor, src.services.instance.lifecycle_hooks +- test_projects_api.py | Integration tests for a FastAPI projects API endpoint requiring PostgreSQL, covering CRUD operations with authentication and ownership authorization. | exp: func:_postgres_available() → bool, call:asyncpg.connect, call:conn.close, call:asyncio.run, call:_check, func:_check() → bool, call:asyncpg.connect, call:conn.close, func:_prepare_test_db() → None, call:create_async_engine, call:build_database_url, call:engine.begin, call:connection.run_sync, call:connection.execute, call:text, call:engine.dispose, call:asyncio.run, call:_run, func:_run() → None, call:create_async_engine, call:build_database_url, call:engine.begin, call:connection.run_sync, call:connection.execute, call:text, call:engine.dispose, func:_load_app(), call:hasattr, call:asyncio.run, call:database_module.engine.dispose, call:importlib.reload, func:_mint_token(user_id: str) → str, call:Settings, call:create_session_cookie, func:_insert_user(user_id: str, email) → None, call:create_async_engine, call:build_database_url, call:engine.begin, call:connection.run_sync, call:async_sessionmaker, call:session_factory, call:User, call:uuid.UUID, call:session.merge, call:session.commit, call:engine.dispose, call:asyncio.run, call:_run, func:_run() → None, call:create_async_engine, call:build_database_url, call:engine.begin, call:connection.run_sync, call:async_sessionmaker, call:session_factory, call:User, call:uuid.UUID, call:session.merge, call:session.commit, call:engine.dispose, func:_insert_project(project_id: str, owner_id: str, name) → None, call:create_async_engine, call:build_database_url, call:async_sessionmaker, call:session_factory, call:Project, call:uuid.UUID, call:session.merge, call:session.commit, call:engine.dispose, call:asyncio.run, call:_run, func:_run() → None, call:create_async_engine, call:build_database_url, call:async_sessionmaker, call:session_factory, call:Project, call:uuid.UUID, call:session.merge, call:session.commit, call:engine.dispose, func:test_create_project_requires_authentication() → None, call:_prepare_test_db, call:_load_app, call:TestClient, call:client.post, func:test_create_project_successfully() → None, call:_prepare_test_db, call:_insert_user, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.post, call:response.json, func:test_list_projects_returns_only_owned_projects() → None, call:_prepare_test_db, call:_insert_user, call:_insert_project, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.get, call:response.json, call:len, func:test_update_project_requires_ownership() → None, call:_prepare_test_db, call:_insert_user, call:_insert_project, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.patch, func:test_update_project_successfully() → None, call:_prepare_test_db, call:_insert_user, call:_insert_project, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.patch, call:response.json, func:test_delete_project_requires_ownership() → None, call:_prepare_test_db, call:_insert_user, call:_insert_project, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.delete, func:test_delete_project_successfully() → None, call:_prepare_test_db, call:_insert_user, call:_insert_project, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.delete, func:test_set_default_ssh_key_requires_ownership() → None, call:_prepare_test_db, call:_insert_user, call:_insert_project, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.patch | dep: uuid, datetime, asyncio, pytest, fastapi.testclient, sqlalchemy, sqlalchemy.ext.asyncio, src.auth.session, src.config, src.models, src.models.project.project, src.models.user.user, asyncpg, importlib, fastapi, src.database, src.api.user.auth, src.api.project.projects, src.main - test_seed.py | Tests deterministic seed user generation and database seeding functionality for development environments. | exp: func:test_build_seed_user_returns_deterministic_payload() → None, call:build_seed_user, func:test_seed_database_creates_development_user(db_session: AsyncSession) → None, call:seed_database, call:db_session.scalar, call:select(User).where | dep: pytest, sqlalchemy, sqlalchemy.ext.asyncio, src.models.user, src.scripts.seed -- test_ssh_keys_api.py | Integration tests verifying SSH key API endpoints require authentication | exp: func:test_create_ssh_key_requires_authentication(test_client: TestClient) → None, call:test_client.post, func:test_list_ssh_keys_requires_authentication(test_client: TestClient) → None, call:test_client.get | dep: pytest, fastapi.testclient -- test_tool_instance_lifecycle.py | Integration test placeholder for verifying Docker availability and container home directory lifecycle behavior | exp: func:_docker_available() → bool, call:subprocess.run, func:test_docker_available_placeholder() → None, call:_docker_available | dep: subprocess, pytest -- test_tool_types_api.py | Integration tests for a FastAPI tool types REST API endpoint using a real PostgreSQL database. | exp: func:_postgres_available() → bool, call:asyncpg.connect, call:conn.close, call:asyncio.run, call:_check, func:_check() → bool, call:asyncpg.connect, call:conn.close, func:_prepare_test_db() → None, call:create_async_engine, call:build_database_url, call:engine.begin, call:connection.run_sync, call:connection.execute, call:text, call:engine.dispose, call:asyncio.run, call:_run, func:_run() → None, call:create_async_engine, call:build_database_url, call:engine.begin, call:connection.run_sync, call:connection.execute, call:text, call:engine.dispose, func:_load_app(), call:hasattr, call:asyncio.run, call:database_module.engine.dispose, call:importlib.reload, func:_mint_token(user_id: str) → str, call:Settings, call:create_session_cookie, call:datetime.now, call:timedelta, func:_insert_user(user_id: str, email) → None, call:create_async_engine, call:build_database_url, call:engine.begin, call:connection.run_sync, call:async_sessionmaker, call:session_factory, call:User, call:uuid.UUID, call:session.merge, call:session.commit, call:engine.dispose, call:asyncio.run, call:_run, func:_run() → None, call:create_async_engine, call:build_database_url, call:engine.begin, call:connection.run_sync, call:async_sessionmaker, call:session_factory, call:User, call:uuid.UUID, call:session.merge, call:session.commit, call:engine.dispose, func:_insert_tool_type(tool_type_id: str, name: str, display_name: str, compose_template: str, created_by_id) → None, call:create_async_engine, call:build_database_url, call:async_sessionmaker, call:session_factory, call:ToolType, call:uuid.UUID, call:session.merge, call:session.commit, call:engine.dispose, call:asyncio.run, call:_run, func:_run() → None, call:create_async_engine, call:build_database_url, call:async_sessionmaker, call:session_factory, call:ToolType, call:uuid.UUID, call:session.merge, call:session.commit, call:engine.dispose, func:test_list_tool_types_requires_authentication() → None, call:_prepare_test_db, call:_load_app, call:TestClient, call:client.get, func:test_list_tool_types_returns_all_types() → None, call:_prepare_test_db, call:_insert_user, call:_insert_tool_type, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.get, call:response.json, call:len, call:next, func:test_get_tool_type_by_id() → None, call:_prepare_test_db, call:_insert_user, call:_insert_tool_type, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.get, call:response.json, func:test_get_tool_type_not_found() → None, call:_prepare_test_db, call:_insert_user, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.get, func:test_create_tool_type_successfully() → None, call:_prepare_test_db, call:_insert_user, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.post, call:response.json, func:test_create_tool_type_duplicate_name() → None, call:_prepare_test_db, call:_insert_user, call:_insert_tool_type, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.post, func:test_create_tool_type_invalid_yaml() → None, call:_prepare_test_db, call:_insert_user, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.post, func:test_create_tool_type_missing_services() → None, call:_prepare_test_db, call:_insert_user, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.post, func:test_create_tool_type_missing_required_variable() → None, call:_prepare_test_db, call:_insert_user, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.post, func:test_update_tool_type_successfully() → None, call:_prepare_test_db, call:_insert_user, call:_insert_tool_type, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.put, call:response.json, func:test_update_tool_type_not_found() → None, call:_prepare_test_db, call:_insert_user, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.put, func:test_delete_tool_type_successfully() → None, call:_prepare_test_db, call:_insert_user, call:_insert_tool_type, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.delete, call:client.get, func:test_delete_tool_type_not_found() → None, call:_prepare_test_db, call:_insert_user, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.delete | dep: uuid, datetime, asyncio, pytest, fastapi.testclient, sqlalchemy, sqlalchemy.ext.asyncio, src.auth.session, src.config, src.models, src.models.tool.tool_type, src.models.user.user, asyncpg, importlib, fastapi -- test_tool_types_api_extended.py | Integration tests for a FastAPI tool types API endpoint covering CRUD operations with extended fields like dockerfile templates, readiness probes, startup commands, and validation. | exp: class:TestToolTypesAPIExtended, method:test_create_tool_type_with_dockerfile(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:response.json, method:test_create_tool_type_with_readiness_probe(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:response.json, method:test_create_tool_type_invalid_definition_type(self, authenticated_client: TestClient) → None, call:authenticated_client.post, method:test_create_tool_type_dockerfile_without_template(self, authenticated_client: TestClient) → None, call:authenticated_client.post, method:test_update_tool_type_with_new_fields(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:create_response.json, call:authenticated_client.put, call:response.json, method:test_validate_tool_type_compose(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:response.json, method:test_validate_tool_type_invalid_compose(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:response.json, method:test_validate_tool_type_dockerfile(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:response.json, method:test_get_tool_type_returns_new_fields(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:create_response.json, call:authenticated_client.get, call:response.json, method:test_create_tool_type_without_port_fails(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:response.json, call:str, method:test_create_tool_type_with_port_mismatch_fails(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:response.json, method:test_create_tool_type_with_startup_command(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:response.json, method:test_update_tool_type_startup_command(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:create_response.json, call:authenticated_client.put, call:response.json, method:test_get_tool_type_returns_startup_command(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:create_response.json, call:authenticated_client.get, call:response.json | dep: pytest, fastapi.testclient, fastapi.testclient.TestClient -- test_users_api.py | Integration tests for user profile API endpoints using a real PostgreSQL database | exp: func:_postgres_available() → bool, call:asyncpg.connect, call:conn.close, call:asyncio.run, call:_check, func:_check() → bool, call:asyncpg.connect, call:conn.close, func:_prepare_users_test_db() → None, call:create_async_engine, call:build_database_url, call:engine.begin, call:connection.run_sync, call:connection.execute, call:text, call:engine.dispose, call:asyncio.run, call:_run, func:_run() → None, call:create_async_engine, call:build_database_url, call:engine.begin, call:connection.run_sync, call:connection.execute, call:text, call:engine.dispose, func:_load_app(), call:importlib.reload, func:_insert_test_user(user_id: str) → None, call:create_async_engine, call:build_database_url, call:engine.begin, call:connection.run_sync, call:async_sessionmaker, call:session_factory, call:User, call:uuid.UUID, call:session.merge, call:session.commit, call:engine.dispose, call:asyncio.run, call:_run, func:_run() → None, call:create_async_engine, call:build_database_url, call:engine.begin, call:connection.run_sync, call:async_sessionmaker, call:session_factory, call:User, call:uuid.UUID, call:session.merge, call:session.commit, call:engine.dispose, func:_create_auth_cookie(user_id: str) → str, call:Settings, call:create_session_cookie, func:test_get_profile_returns_401_without_cookie() → None, call:_prepare_users_test_db, call:_load_app, call:TestClient, call:client.get, func:test_get_profile_returns_user_data() → None, call:_prepare_users_test_db, call:_insert_test_user, call:_load_app, call:TestClient, call:client.cookies.set, call:_create_auth_cookie, call:client.get, call:response.json, func:test_update_profile_changes_name_and_email() → None, call:_prepare_users_test_db, call:_insert_test_user, call:_load_app, call:TestClient, call:client.cookies.set, call:_create_auth_cookie, call:client.put, call:response.json, func:test_update_profile_rejects_empty_name() → None, call:_prepare_users_test_db, call:_insert_test_user, call:_load_app, call:TestClient, call:client.cookies.set, call:_create_auth_cookie, call:client.put, func:test_update_profile_rejects_invalid_email() → None, call:_prepare_users_test_db, call:_insert_test_user, call:_load_app, call:TestClient, call:client.cookies.set, call:_create_auth_cookie, call:client.put, func:test_upload_avatar_updates_avatar_url() → None, call:_prepare_users_test_db, call:_insert_test_user, call:_load_app, call:TestClient, call:client.cookies.set, call:_create_auth_cookie, call:client.post, call:io.BytesIO, call:response.json, call:data["avatar_url"].startswith, func:test_upload_avatar_rejects_invalid_file_type() → None, call:_prepare_users_test_db, call:_insert_test_user, call:_load_app, call:TestClient, call:client.cookies.set, call:_create_auth_cookie, call:client.post, call:io.BytesIO, func:test_upload_avatar_rejects_oversized_file() → None, call:_prepare_users_test_db, call:_insert_test_user, call:_load_app, call:TestClient, call:client.cookies.set, call:_create_auth_cookie, call:client.post, call:io.BytesIO | dep: uuid, datetime, asyncio, io, fastapi.testclient, pytest, sqlalchemy, sqlalchemy.ext.asyncio, src.auth.session, src.config, src.models, src.models.user.user, asyncpg, importlib, fastapi, src.database, src.api.user.users, src.main -- test_workspace_files.py | Integration tests for FastAPI endpoints that manage workspace file operations (list, read, write) | exp: class:TestListWorkspaceFiles, method:test_list_files(self, authenticated_client: TestClient, test_repo_with_workspace: Workspace), call:os.makedirs, call:os.path.join, call:open, call:f.write, call:authenticated_client.get, call:response.json, method:test_list_files_path_escapes_workspace(self, authenticated_client: TestClient, test_repo_with_workspace: Workspace), call:authenticated_client.get, class:TestGetFileContent, method:test_get_content(self, authenticated_client: TestClient, test_repo_with_workspace: Workspace), call:open, call:os.path.join, call:f.write, call:authenticated_client.get, call:response.json, method:test_get_missing_file(self, authenticated_client: TestClient, test_repo_with_workspace: Workspace), call:authenticated_client.get, class:TestWriteFileContent, method:test_write_file(self, authenticated_client: TestClient, test_repo_with_workspace: Workspace), call:authenticated_client.post, call:os.path.exists, call:os.path.join, method:test_write_file_missing_path(self, authenticated_client: TestClient, test_repo_with_workspace: Workspace), call:authenticated_client.post, func:_get_user_id(client: TestClient) → uuid.UUID, call:Settings, call:client.cookies.get, call:decode_session_cookie, call:uuid.UUID, raise:RuntimeError, func:test_repo_with_workspace(db_session: AsyncSession, authenticated_client: TestClient), call:_get_user_id, call:Project, call:db_session.add, call:db_session.flush, call:GitRepository, call:tempfile.mkdtemp, call:Workspace, call:db_session.commit, call:db_session.refresh, call:asyncio.run, call:_create, func:_create(), call:Project, call:db_session.add, call:db_session.flush, call:GitRepository, call:tempfile.mkdtemp, call:Workspace, call:db_session.commit, call:db_session.refresh | dep: asyncio, os, tempfile, uuid, unittest.mock, pytest, fastapi.testclient, sqlalchemy.ext.asyncio, src.models, src.services.shared.workspace_manager, src.auth.session, src.config, fastapi, sqlalchemy -- test_workspace_git.py | Integration tests for FastAPI workspace git endpoints (status, commit, history, checkout) using real git repositories. | exp: class:TestGitStatus, method:test_status_clean(self, authenticated_client: TestClient, test_repo_with_git_workspace: Workspace), call:authenticated_client.get, call:response.json, method:test_status_modified(self, authenticated_client: TestClient, test_repo_with_git_workspace: Workspace), call:open, call:os.path.join, call:f.write, call:authenticated_client.get, call:response.json, class:TestGitCommit, method:test_commit(self, authenticated_client: TestClient, test_repo_with_git_workspace: Workspace), call:open, call:os.path.join, call:f.write, call:authenticated_client.post, call:response.json, method:test_commit_missing_message(self, authenticated_client: TestClient, test_repo_with_git_workspace: Workspace), call:authenticated_client.post, class:TestGitHistory, method:test_history(self, authenticated_client: TestClient, test_repo_with_git_workspace: Workspace), call:authenticated_client.get, call:response.json, call:len, class:TestGitCheckout, method:test_checkout(self, authenticated_client: TestClient, test_repo_with_git_workspace: Workspace), call:_run_git, call:authenticated_client.post, call:response.json, func:_run_git(*args: str, cwd: str) → None, call:subprocess.run, func:_get_user_id(client: TestClient) → uuid.UUID, call:Settings, call:client.cookies.get, call:decode_session_cookie, call:uuid.UUID, raise:RuntimeError, func:test_repo_with_git_workspace(db_session: AsyncSession, authenticated_client: TestClient), call:_get_user_id, call:Project, call:db_session.add, call:db_session.flush, call:GitRepository, call:tempfile.mkdtemp, call:_run_git, call:open, call:os.path.join, call:f.write, call:Workspace, call:db_session.commit, call:db_session.refresh, call:asyncio.run, call:_create, func:_create(), call:Project, call:db_session.add, call:db_session.flush, call:GitRepository, call:tempfile.mkdtemp, call:_run_git, call:open, call:os.path.join, call:f.write, call:Workspace, call:db_session.commit, call:db_session.refresh | dep: asyncio, os, subprocess, tempfile, uuid, pytest, fastapi.testclient, sqlalchemy.ext.asyncio, src.models, src.auth.session, src.config, fastapi, sqlalchemy -- test_workspace_instances.py | Integration tests for FastAPI workspace instance endpoints (list and create) using an authenticated test client and mocked database fixtures. | exp: class:TestListWorkspaceInstances, method:test_list_empty(self, authenticated_client: TestClient, test_workspace_with_tool_type), call:authenticated_client.get, call:response.json, method:test_list_instances(self, authenticated_client: TestClient, db_session: AsyncSession, test_workspace_with_tool_type), call:ToolInstance, call:db_session.add, call:db_session.commit, call:asyncio.run, call:_create_instance, call:authenticated_client.get, call:response.json, call:len, class:TestCreateWorkspaceInstance, method:test_create_instance(self, authenticated_client: TestClient, test_workspace_with_tool_type), call:ToolInstance, call:uuid.uuid4, call:datetime.now, call:patch, call:authenticated_client.post, call:str, call:response.json, func:_get_user_id(client: TestClient) → uuid.UUID, call:Settings, call:client.cookies.get, call:decode_session_cookie, call:uuid.UUID, raise:RuntimeError, func:test_workspace_with_tool_type(db_session: AsyncSession, authenticated_client: TestClient), call:_get_user_id, call:Project, call:db_session.add, call:db_session.flush, call:GitRepository, call:tempfile.mkdtemp, call:Workspace, call:ToolType, call:db_session.commit, call:db_session.refresh, call:asyncio.run, call:_create, func:_create(), call:Project, call:db_session.add, call:db_session.flush, call:GitRepository, call:tempfile.mkdtemp, call:Workspace, call:ToolType, call:db_session.commit, call:db_session.refresh | dep: asyncio, tempfile, uuid, datetime, unittest.mock, pytest, fastapi.testclient, sqlalchemy.ext.asyncio, src.models, src.auth.session, src.config, src.api.workspace.workspace_instances -- test_workspaces_api.py | Integration tests for workspace API endpoints including list, create, delete, and sync operations with repository/project scoping | exp: class:TestListWorkspaces, method:test_list_empty(self, authenticated_client: TestClient, test_repo: GitRepository), call:authenticated_client.get, call:response.json, method:test_list_with_workspaces(self, authenticated_client: TestClient, db_session: AsyncSession, test_repo: GitRepository), call:Workspace, call:db_session.add, call:db_session.commit, call:asyncio.run, call:_commit, call:authenticated_client.get, call:response.json, call:len, class:TestCreateWorkspace, method:test_create_success(self, authenticated_client: TestClient, test_repo: GitRepository), call:Workspace, call:uuid.uuid4, call:patch.object, call:authenticated_client.post, call:response.json, call:mock_create.assert_called_once, method:test_create_missing_name(self, authenticated_client: TestClient, test_repo: GitRepository), call:authenticated_client.post, call:response.json, method:test_create_duplicate_name(self, authenticated_client: TestClient, db_session: AsyncSession, test_repo: GitRepository), call:Workspace, call:db_session.add, call:db_session.commit, call:asyncio.run, call:_commit, call:patch.object, call:Exception, call:authenticated_client.post, class:TestDeleteWorkspace, method:test_delete_without_instances(self, authenticated_client: TestClient, db_session: AsyncSession, test_repo: GitRepository), call:Workspace, call:db_session.add, call:db_session.commit, call:db_session.refresh, call:asyncio.run, call:_commit_refresh, call:patch.object, call:authenticated_client.delete, call:response.json, method:test_delete_with_instances_force(self, authenticated_client: TestClient, db_session: AsyncSession, test_repo: GitRepository), call:Workspace, call:db_session.add, call:db_session.commit, call:db_session.refresh, call:asyncio.run, call:_commit_refresh, call:patch.object, call:authenticated_client.delete, class:TestSyncWorkspace, method:test_sync_success(self, authenticated_client: TestClient, db_session: AsyncSession, test_repo: GitRepository), call:Workspace, call:db_session.add, call:db_session.commit, call:db_session.refresh, call:asyncio.run, call:_commit_refresh, call:patch.object, call:MagicMock, call:authenticated_client.post, call:response.json, method:test_sync_branch_deleted(self, authenticated_client: TestClient, db_session: AsyncSession, test_repo: GitRepository), call:Workspace, call:db_session.add, call:db_session.commit, call:db_session.refresh, call:asyncio.run, call:_commit_refresh, call:patch.object, call:MagicMock, call:authenticated_client.post, call:response.json, func:_get_user_id_from_client(client: TestClient) → uuid.UUID, call:Settings, call:client.cookies.get, call:decode_session_cookie, call:uuid.UUID, raise:RuntimeError, func:test_repo(db_session: AsyncSession, authenticated_client: TestClient), call:_get_user_id_from_client, call:Project, call:db_session.add, call:db_session.flush, call:GitRepository, call:db_session.commit, call:db_session.refresh, call:asyncio.run, call:_create, func:_create(), call:Project, call:db_session.add, call:db_session.flush, call:GitRepository, call:db_session.commit, call:db_session.refresh | dep: asyncio, uuid, unittest.mock, pytest, fastapi.testclient, sqlalchemy.ext.asyncio, src.models, src.services.shared.workspace_manager, src.auth.session, src.config, fastapi, sqlalchemy +- test_ssh_keys_api.py | Integration tests verifying SSH key API endpoints require authentication | exp: func:test_create_ssh_key_requires_authentication(test_client: TestClient) → None, call:test_client.post, func:test_list_ssh_keys_requires_authentication(test_client: TestClient) → None, call:test_client.get | dep: pytest, fastapi.testclient, fastapi.testclient.TestClient +- test_tool_instance_lifecycle.py | Integration test placeholder for verifying Docker availability as a prerequisite for future tool container lifecycle tests | exp: func:_docker_available() → bool, call:subprocess.run, func:test_docker_available_placeholder() → None, call:_docker_available | dep: subprocess, pytest +- test_tool_types_api.py | Integration tests for a FastAPI tool types REST API endpoint using PostgreSQL, covering CRUD operations, authentication, and validation rules. | exp: func:_postgres_available() → bool, call:asyncpg.connect, call:conn.close, call:asyncio.run, call:_check, func:_check() → bool, call:asyncpg.connect, call:conn.close, func:_prepare_test_db() → None, call:create_async_engine, call:build_database_url, call:engine.begin, call:connection.run_sync, call:connection.execute, call:text, call:engine.dispose, call:asyncio.run, call:_run, func:_run() → None, call:create_async_engine, call:build_database_url, call:engine.begin, call:connection.run_sync, call:connection.execute, call:text, call:engine.dispose, func:_load_app(), call:hasattr, call:asyncio.run, call:database_module.engine.dispose, call:importlib.reload, func:_mint_token(user_id: str) → str, call:Settings, call:create_session_cookie, call:datetime.now, call:timedelta, func:_insert_user(user_id: str, email) → None, call:create_async_engine, call:build_database_url, call:engine.begin, call:connection.run_sync, call:async_sessionmaker, call:session_factory, call:User, call:uuid.UUID, call:session.merge, call:session.commit, call:engine.dispose, call:asyncio.run, call:_run, func:_run() → None, call:create_async_engine, call:build_database_url, call:engine.begin, call:connection.run_sync, call:async_sessionmaker, call:session_factory, call:User, call:uuid.UUID, call:session.merge, call:session.commit, call:engine.dispose, func:_insert_tool_type(tool_type_id: str, name: str, display_name: str, compose_template: str, created_by_id) → None, call:create_async_engine, call:build_database_url, call:async_sessionmaker, call:session_factory, call:ToolType, call:uuid.UUID, call:session.merge, call:session.commit, call:engine.dispose, call:asyncio.run, call:_run, func:_run() → None, call:create_async_engine, call:build_database_url, call:async_sessionmaker, call:session_factory, call:ToolType, call:uuid.UUID, call:session.merge, call:session.commit, call:engine.dispose, func:test_list_tool_types_requires_authentication() → None, call:_prepare_test_db, call:_load_app, call:TestClient, call:client.get, func:test_list_tool_types_returns_all_types() → None, call:_prepare_test_db, call:_insert_user, call:_insert_tool_type, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.get, call:response.json, call:len, call:next, func:test_get_tool_type_by_id() → None, call:_prepare_test_db, call:_insert_user, call:_insert_tool_type, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.get, call:response.json, func:test_get_tool_type_not_found() → None, call:_prepare_test_db, call:_insert_user, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.get, func:test_create_tool_type_successfully() → None, call:_prepare_test_db, call:_insert_user, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.post, call:response.json, func:test_create_tool_type_duplicate_name() → None, call:_prepare_test_db, call:_insert_user, call:_insert_tool_type, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.post, func:test_create_tool_type_invalid_yaml() → None, call:_prepare_test_db, call:_insert_user, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.post, func:test_create_tool_type_missing_services() → None, call:_prepare_test_db, call:_insert_user, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.post, func:test_create_tool_type_missing_required_variable() → None, call:_prepare_test_db, call:_insert_user, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.post, func:test_update_tool_type_successfully() → None, call:_prepare_test_db, call:_insert_user, call:_insert_tool_type, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.put, call:response.json, func:test_update_tool_type_not_found() → None, call:_prepare_test_db, call:_insert_user, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.put, func:test_delete_tool_type_successfully() → None, call:_prepare_test_db, call:_insert_user, call:_insert_tool_type, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.delete, call:client.get, func:test_delete_tool_type_not_found() → None, call:_prepare_test_db, call:_insert_user, call:_load_app, call:TestClient, call:client.cookies.set, call:_mint_token, call:client.delete | dep: uuid, datetime, asyncio, pytest, fastapi.testclient, sqlalchemy, sqlalchemy.ext.asyncio, src.auth.session, src.config, src.models, src.models.tool.tool_type, src.models.user.user, asyncpg, importlib, fastapi +- test_tool_types_api_extended.py | Integration tests for a FastAPI tool types API endpoint covering CRUD operations, validation, and new fields like dockerfile templates, readiness probes, startup commands, and port validation. | exp: class:TestToolTypesAPIExtended, method:test_create_tool_type_with_dockerfile(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:response.json, method:test_create_tool_type_with_readiness_probe(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:response.json, method:test_create_tool_type_invalid_definition_type(self, authenticated_client: TestClient) → None, call:authenticated_client.post, method:test_create_tool_type_dockerfile_without_template(self, authenticated_client: TestClient) → None, call:authenticated_client.post, method:test_update_tool_type_with_new_fields(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:create_response.json, call:authenticated_client.put, call:response.json, method:test_validate_tool_type_compose(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:response.json, method:test_validate_tool_type_invalid_compose(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:response.json, method:test_validate_tool_type_dockerfile(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:response.json, method:test_get_tool_type_returns_new_fields(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:create_response.json, call:authenticated_client.get, call:response.json, method:test_create_tool_type_without_port_fails(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:response.json, call:str, method:test_create_tool_type_with_port_mismatch_fails(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:response.json, method:test_create_tool_type_with_startup_command(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:response.json, method:test_update_tool_type_startup_command(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:create_response.json, call:authenticated_client.put, call:response.json, method:test_get_tool_type_returns_startup_command(self, authenticated_client: TestClient) → None, call:authenticated_client.post, call:create_response.json, call:authenticated_client.get, call:response.json | dep: pytest, fastapi.testclient, fastapi.testclient.TestClient +- test_users_api.py | Integration tests for user profile API endpoints including get, update, and avatar upload with PostgreSQL dependency | exp: func:_postgres_available() → bool, call:asyncpg.connect, call:conn.close, call:asyncio.run, call:_check, func:_check() → bool, call:asyncpg.connect, call:conn.close, func:_prepare_users_test_db() → None, call:create_async_engine, call:build_database_url, call:engine.begin, call:connection.run_sync, call:connection.execute, call:text, call:engine.dispose, call:asyncio.run, call:_run, func:_run() → None, call:create_async_engine, call:build_database_url, call:engine.begin, call:connection.run_sync, call:connection.execute, call:text, call:engine.dispose, func:_load_app(), call:importlib.reload, func:_insert_test_user(user_id: str) → None, call:create_async_engine, call:build_database_url, call:engine.begin, call:connection.run_sync, call:async_sessionmaker, call:session_factory, call:User, call:uuid.UUID, call:session.merge, call:session.commit, call:engine.dispose, call:asyncio.run, call:_run, func:_run() → None, call:create_async_engine, call:build_database_url, call:engine.begin, call:connection.run_sync, call:async_sessionmaker, call:session_factory, call:User, call:uuid.UUID, call:session.merge, call:session.commit, call:engine.dispose, func:_create_auth_cookie(user_id: str) → str, call:Settings, call:create_session_cookie, func:test_get_profile_returns_401_without_cookie() → None, call:_prepare_users_test_db, call:_load_app, call:TestClient, call:client.get, func:test_get_profile_returns_user_data() → None, call:_prepare_users_test_db, call:_insert_test_user, call:_load_app, call:TestClient, call:client.cookies.set, call:_create_auth_cookie, call:client.get, call:response.json, func:test_update_profile_changes_name_and_email() → None, call:_prepare_users_test_db, call:_insert_test_user, call:_load_app, call:TestClient, call:client.cookies.set, call:_create_auth_cookie, call:client.put, call:response.json, func:test_update_profile_rejects_empty_name() → None, call:_prepare_users_test_db, call:_insert_test_user, call:_load_app, call:TestClient, call:client.cookies.set, call:_create_auth_cookie, call:client.put, func:test_update_profile_rejects_invalid_email() → None, call:_prepare_users_test_db, call:_insert_test_user, call:_load_app, call:TestClient, call:client.cookies.set, call:_create_auth_cookie, call:client.put, func:test_upload_avatar_updates_avatar_url() → None, call:_prepare_users_test_db, call:_insert_test_user, call:_load_app, call:TestClient, call:client.cookies.set, call:_create_auth_cookie, call:client.post, call:io.BytesIO, call:response.json, call:data["avatar_url"].startswith, func:test_upload_avatar_rejects_invalid_file_type() → None, call:_prepare_users_test_db, call:_insert_test_user, call:_load_app, call:TestClient, call:client.cookies.set, call:_create_auth_cookie, call:client.post, call:io.BytesIO, func:test_upload_avatar_rejects_oversized_file() → None, call:_prepare_users_test_db, call:_insert_test_user, call:_load_app, call:TestClient, call:client.cookies.set, call:_create_auth_cookie, call:client.post, call:io.BytesIO | dep: uuid, datetime, asyncio, io, fastapi.testclient, pytest, sqlalchemy, sqlalchemy.ext.asyncio, src.auth.session, src.config, src.models, src.models.user.user, asyncpg, importlib, fastapi +- test_workspace_files.py | Integration tests for workspace file API endpoints (list, read, write) with path traversal security validation. | exp: class:TestListWorkspaceFiles, method:test_list_files(self, authenticated_client: TestClient, test_repo_with_workspace: Workspace), call:os.makedirs, call:os.path.join, call:open, call:f.write, call:authenticated_client.get, call:response.json, method:test_list_files_path_escapes_workspace(self, authenticated_client: TestClient, test_repo_with_workspace: Workspace), call:authenticated_client.get, class:TestGetFileContent, method:test_get_content(self, authenticated_client: TestClient, test_repo_with_workspace: Workspace), call:open, call:os.path.join, call:f.write, call:authenticated_client.get, call:response.json, method:test_get_missing_file(self, authenticated_client: TestClient, test_repo_with_workspace: Workspace), call:authenticated_client.get, class:TestWriteFileContent, method:test_write_file(self, authenticated_client: TestClient, test_repo_with_workspace: Workspace), call:authenticated_client.post, call:os.path.exists, call:os.path.join, method:test_write_file_missing_path(self, authenticated_client: TestClient, test_repo_with_workspace: Workspace), call:authenticated_client.post, func:_get_user_id(client: TestClient) → uuid.UUID, call:Settings, call:client.cookies.get, call:decode_session_cookie, call:uuid.UUID, raise:RuntimeError, func:test_repo_with_workspace(db_session: AsyncSession, authenticated_client: TestClient), call:_get_user_id, call:Project, call:db_session.add, call:db_session.flush, call:GitRepository, call:tempfile.mkdtemp, call:Workspace, call:db_session.commit, call:db_session.refresh, call:asyncio.run, call:_create, func:_create(), call:Project, call:db_session.add, call:db_session.flush, call:GitRepository, call:tempfile.mkdtemp, call:Workspace, call:db_session.commit, call:db_session.refresh | dep: asyncio, os, tempfile, uuid, unittest.mock, pytest, fastapi.testclient, sqlalchemy.ext.asyncio, src.models, src.services.shared.workspace_manager, src.auth.session, src.config, fastapi, sqlalchemy +- test_workspace_git.py | Integration tests for workspace git endpoints (status, commit, history, checkout) using real git repositories. | exp: class:TestGitStatus, method:test_status_clean(self, authenticated_client: TestClient, test_repo_with_git_workspace: Workspace), call:authenticated_client.get, call:response.json, method:test_status_modified(self, authenticated_client: TestClient, test_repo_with_git_workspace: Workspace), call:open, call:os.path.join, call:f.write, call:authenticated_client.get, call:response.json, class:TestGitCommit, method:test_commit(self, authenticated_client: TestClient, test_repo_with_git_workspace: Workspace), call:open, call:os.path.join, call:f.write, call:authenticated_client.post, call:response.json, method:test_commit_missing_message(self, authenticated_client: TestClient, test_repo_with_git_workspace: Workspace), call:authenticated_client.post, class:TestGitHistory, method:test_history(self, authenticated_client: TestClient, test_repo_with_git_workspace: Workspace), call:authenticated_client.get, call:response.json, call:len, class:TestGitCheckout, method:test_checkout(self, authenticated_client: TestClient, test_repo_with_git_workspace: Workspace), call:_run_git, call:authenticated_client.post, call:response.json, func:_run_git(*args: str, cwd: str) → None, call:subprocess.run, func:_get_user_id(client: TestClient) → uuid.UUID, call:Settings, call:client.cookies.get, call:decode_session_cookie, call:uuid.UUID, raise:RuntimeError, func:test_repo_with_git_workspace(db_session: AsyncSession, authenticated_client: TestClient), call:_get_user_id, call:Project, call:db_session.add, call:db_session.flush, call:GitRepository, call:tempfile.mkdtemp, call:_run_git, call:open, call:os.path.join, call:f.write, call:Workspace, call:db_session.commit, call:db_session.refresh, call:asyncio.run, call:_create, func:_create(), call:Project, call:db_session.add, call:db_session.flush, call:GitRepository, call:tempfile.mkdtemp, call:_run_git, call:open, call:os.path.join, call:f.write, call:Workspace, call:db_session.commit, call:db_session.refresh | dep: asyncio, os, subprocess, tempfile, uuid, pytest, fastapi.testclient, sqlalchemy.ext.asyncio, src.models, src.auth.session, src.config +- test_workspace_instances.py | Integration tests for workspace instance REST API endpoints (listing and creating tool instances within workspaces) | exp: class:TestListWorkspaceInstances, method:test_list_empty(self, authenticated_client: TestClient, test_workspace_with_tool_type), call:authenticated_client.get, call:response.json, method:test_list_instances(self, authenticated_client: TestClient, db_session: AsyncSession, test_workspace_with_tool_type), call:ToolInstance, call:db_session.add, call:db_session.commit, call:asyncio.run, call:_create_instance, call:authenticated_client.get, call:response.json, call:len, class:TestCreateWorkspaceInstance, method:test_create_instance(self, authenticated_client: TestClient, test_workspace_with_tool_type), call:ToolInstance, call:uuid.uuid4, call:datetime.now, call:patch, call:authenticated_client.post, call:str, call:response.json, func:_get_user_id(client: TestClient) → uuid.UUID, call:Settings, call:client.cookies.get, call:decode_session_cookie, call:uuid.UUID, raise:RuntimeError, func:test_workspace_with_tool_type(db_session: AsyncSession, authenticated_client: TestClient), call:_get_user_id, call:Project, call:db_session.add, call:db_session.flush, call:GitRepository, call:tempfile.mkdtemp, call:Workspace, call:ToolType, call:db_session.commit, call:db_session.refresh, call:asyncio.run, call:_create, func:_create(), call:Project, call:db_session.add, call:db_session.flush, call:GitRepository, call:tempfile.mkdtemp, call:Workspace, call:ToolType, call:db_session.commit, call:db_session.refresh | dep: asyncio, tempfile, uuid, datetime, unittest.mock, pytest, fastapi.testclient, sqlalchemy.ext.asyncio, src.models, src.auth.session, src.config, src.api.workspace.workspace_instances +- test_workspaces_api.py | Integration tests for workspace REST API endpoints including list, create, delete, and sync operations. | exp: class:TestListWorkspaces, method:test_list_empty(self, authenticated_client: TestClient, test_repo: GitRepository), call:authenticated_client.get, call:response.json, method:test_list_with_workspaces(self, authenticated_client: TestClient, db_session: AsyncSession, test_repo: GitRepository), call:Workspace, call:db_session.add, call:db_session.commit, call:asyncio.run, call:_commit, call:authenticated_client.get, call:response.json, call:len, class:TestCreateWorkspace, method:test_create_success(self, authenticated_client: TestClient, test_repo: GitRepository), call:Workspace, call:uuid.uuid4, call:patch.object, call:authenticated_client.post, call:response.json, call:mock_create.assert_called_once, method:test_create_missing_name(self, authenticated_client: TestClient, test_repo: GitRepository), call:authenticated_client.post, call:response.json, method:test_create_duplicate_name(self, authenticated_client: TestClient, db_session: AsyncSession, test_repo: GitRepository), call:Workspace, call:db_session.add, call:db_session.commit, call:asyncio.run, call:_commit, call:patch.object, call:Exception, call:authenticated_client.post, class:TestDeleteWorkspace, method:test_delete_without_instances(self, authenticated_client: TestClient, db_session: AsyncSession, test_repo: GitRepository), call:Workspace, call:db_session.add, call:db_session.commit, call:db_session.refresh, call:asyncio.run, call:_commit_refresh, call:patch.object, call:authenticated_client.delete, call:response.json, method:test_delete_with_instances_force(self, authenticated_client: TestClient, db_session: AsyncSession, test_repo: GitRepository), call:Workspace, call:db_session.add, call:db_session.commit, call:db_session.refresh, call:asyncio.run, call:_commit_refresh, call:patch.object, call:authenticated_client.delete, class:TestSyncWorkspace, method:test_sync_success(self, authenticated_client: TestClient, db_session: AsyncSession, test_repo: GitRepository), call:Workspace, call:db_session.add, call:db_session.commit, call:db_session.refresh, call:asyncio.run, call:_commit_refresh, call:patch.object, call:MagicMock, call:authenticated_client.post, call:response.json, method:test_sync_branch_deleted(self, authenticated_client: TestClient, db_session: AsyncSession, test_repo: GitRepository), call:Workspace, call:db_session.add, call:db_session.commit, call:db_session.refresh, call:asyncio.run, call:_commit_refresh, call:patch.object, call:MagicMock, call:authenticated_client.post, call:response.json, func:_get_user_id_from_client(client: TestClient) → uuid.UUID, call:Settings, call:client.cookies.get, call:decode_session_cookie, call:uuid.UUID, raise:RuntimeError, func:test_repo(db_session: AsyncSession, authenticated_client: TestClient), call:_get_user_id_from_client, call:Project, call:db_session.add, call:db_session.flush, call:GitRepository, call:db_session.commit, call:db_session.refresh, call:asyncio.run, call:_create, func:_create(), call:Project, call:db_session.add, call:db_session.flush, call:GitRepository, call:db_session.commit, call:db_session.refresh | dep: asyncio, uuid, unittest.mock, pytest, fastapi.testclient, sqlalchemy.ext.asyncio, src.models, src.services.shared.workspace_manager, src.auth.session, src.config, fastapi, sqlalchemy ## arch -Pytest-based integration testing with FastAPI TestClient, SQLAlchemy async sessions, real PostgreSQL database fixtures, and selective mocking; follows pattern of endpoint-per-test-file with authenticated client fixtures and seeded database state. +Pytest-based integration testing with real PostgreSQL and git dependencies, FastAPI TestClient for HTTP endpoint testing, async SQLAlchemy for database operations, pub/sub event bus for lifecycle testing, and modular per-domain test modules following API/service boundaries. ## tags -test, call:, call:db, call:authenticated, user, create, call:response.json, call:create +test, call:, call:db, call:authenticated, user, call:response.json, create, call:create ## symbols - TestConfigProfilesAPI - TestGitStatus diff --git a/apps/api/tests/services/.pi-map.index.md b/apps/api/tests/services/.pi-map.index.md index 34d64e8..356a25b 100644 --- a/apps/api/tests/services/.pi-map.index.md +++ b/apps/api/tests/services/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/tests/services ## role -Unit tests for TerminalManager's multi-session functionality and session lifecycle management. +Validates TerminalManager's multi-session orchestration capabilities including session lifecycle, resource limits, and WebSocket integration. ## parent index: apps/api/tests/.pi-map.index.md map: apps/api/tests/.pi-map.md diff --git a/apps/api/tests/services/.pi-map.md b/apps/api/tests/services/.pi-map.md index 9d47c20..2bbb88b 100644 --- a/apps/api/tests/services/.pi-map.md +++ b/apps/api/tests/services/.pi-map.md @@ -4,11 +4,11 @@ dir: apps/api/tests/services index: apps/api/tests/services/.pi-map.index.md ## role -Unit tests for TerminalManager's multi-session functionality and session lifecycle management. +Validates TerminalManager's multi-session orchestration capabilities including session lifecycle, resource limits, and WebSocket integration. ## files - test_terminal_manager_multi.py | Unit tests for TerminalManager's multi-session support including session creation limits, instance filtering, WebSocket attachment behavior, default session handling, and idle cleanup. | exp: class:FakeWebSocket, method:__init__(self, name) → None, method:close(self, code, reason) → None, method:send_bytes(self, data: bytes) → None, call:self._sent.append, func:manager() → TerminalManager, call:TerminalManager, call:tm._idle_check_task.done, call:tm._idle_check_task.cancel, func:mock_terminal_session(monkeypatch) → None, call:__import__("time").time, call:monkeypatch.setattr, func:fake_start(self), call:__import__("time").time, func:instance_id() → uuid.UUID, call:uuid.uuid4, func:test_create_session_increases_count(manager: TerminalManager, mock_terminal_session, instance_id: uuid.UUID) → None, call:len, call:manager.get_sessions_for_instance, call:str, call:manager.create_session, func:test_create_session_enforces_max_5(manager: TerminalManager, mock_terminal_session, instance_id: uuid.UUID) → None, call:range, call:manager.create_session, call:len, call:manager.get_sessions_for_instance, call:str, call:pytest.raises, func:test_get_sessions_for_instance_filters_by_instance(manager: TerminalManager, mock_terminal_session) → None, call:uuid.uuid4, call:manager.create_session, call:len, call:manager.get_sessions_for_instance, call:str, func:test_close_session_removes_from_dict(manager: TerminalManager, mock_terminal_session, instance_id: uuid.UUID) → None, call:manager.create_session, call:manager.get_session, call:str, call:patch.object, call:AsyncMock, call:manager.close_session, call:asyncio.sleep, call:mock_mark.assert_called_once_with, func:test_attach_websocket_only_closes_same_session(manager: TerminalManager, mock_terminal_session, instance_id: uuid.UUID) → None, call:manager.create_session, call:FakeWebSocket, call:session_a.attach_websocket, call:session_b.attach_websocket, call:manager.attach_websocket, func:test_default_session_keyed_separately(manager: TerminalManager, mock_terminal_session, instance_id: uuid.UUID) → None, call:manager.get_or_create_session, call:manager.create_session, call:manager.get_session, call:str, func:test_idle_cleanup_updates_db_status(manager: TerminalManager, mock_terminal_session, instance_id: uuid.UUID) → None, call:manager.create_session, call:patch.object, call:AsyncMock, call:manager._cleanup_idle_sessions, call:manager.get_session, call:str, call:mock_mark.assert_called_once_with | dep: asyncio, uuid, unittest.mock, pytest, src.services.terminal.terminal_manager, src.services.terminal.terminal_session ## arch -pytest-based test suite with mocked dependencies, testing session limits, filtering, WebSocket handling, and background cleanup tasks. +Unit test suite using pytest-style test classes with mocked dependencies, testing stateful service behavior through parameterized session scenarios and async WebSocket attachment flows. ## tags session, test, call:manager.get, call:manager.create, instance, call:str, sessions, websocket ## symbols diff --git a/apps/api/tests/system/.pi-map.index.md b/apps/api/tests/system/.pi-map.index.md index 9525eb9..8c79e1f 100644 --- a/apps/api/tests/system/.pi-map.index.md +++ b/apps/api/tests/system/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/tests/system ## role -System-level integration tests for the API application +System-level integration testing utilities for the API application, specifically for managing tmux session layouts during test execution. ## parent index: apps/api/tests/.pi-map.index.md map: apps/api/tests/.pi-map.md diff --git a/apps/api/tests/system/.pi-map.md b/apps/api/tests/system/.pi-map.md index 5eb01eb..e89c13c 100644 --- a/apps/api/tests/system/.pi-map.md +++ b/apps/api/tests/system/.pi-map.md @@ -4,13 +4,13 @@ dir: apps/api/tests/system index: apps/api/tests/system/.pi-map.index.md ## role -System-level integration tests for the API application +System-level integration testing utilities for the API application, specifically for managing tmux session layouts during test execution. ## files -- __init__.py | Empty file with no functionality +- __init__.py | Swaps two tmux panes between windows, preserving active pane state and layout | dep: tmux ## arch -Standard Python test package structure with empty initializer for module discovery +Minimal helper module using tmux command-line interface manipulation for test environment orchestration, with state-preserving window/pane management operations. ## tags -init, empty, functionality +tmux, init, swaps, two, panes, windows, preserving, active ## symbols - ## workflows diff --git a/apps/api/tests/unit/.pi-map.index.md b/apps/api/tests/unit/.pi-map.index.md index 833c9b1..f20c6a6 100644 --- a/apps/api/tests/unit/.pi-map.index.md +++ b/apps/api/tests/unit/.pi-map.index.md @@ -7,9 +7,7 @@ Contains unit tests for the API application's core services, utilities, and infr index: apps/api/tests/.pi-map.index.md map: apps/api/tests/.pi-map.md ## children -- apps/api/tests/unit/.ruff_cache - index: apps/api/tests/unit/.ruff_cache/.pi-map.index.md - map: apps/api/tests/unit/.ruff_cache/.pi-map.md +- ## files - __init__.py - test_alembic_migrations.py @@ -42,7 +40,5 @@ map: apps/api/tests/unit/.pi-map.md read: __init__.py, test_alembic_migrations.py, test_config.py - change unit config read: test_config.py, test_config_profile_resolver.py -- explore unit subdirectories - index: apps/api/tests/unit/.ruff_cache/.pi-map.index.md ## dirty - diff --git a/apps/api/tests/unit/.pi-map.md b/apps/api/tests/unit/.pi-map.md index 104e156..d55d3f1 100644 --- a/apps/api/tests/unit/.pi-map.md +++ b/apps/api/tests/unit/.pi-map.md @@ -6,33 +6,33 @@ index: apps/api/tests/unit/.pi-map.index.md ## role Contains unit tests for the API application's core services, utilities, and infrastructure components. ## files -- __init__.py | Empty file with no functionality -- test_alembic_migrations.py | Unit tests that verify Alembic database migrations are importable, have correct revision identifiers, and declare expected dependencies without requiring a live database. | exp: func:test_home_directory_migration_imports_and_rewrites() → None, call:Path, call:migration_path.exists, call:importlib.util.spec_from_file_location, call:importlib.util.module_from_spec, call:spec.loader.exec_module, call:callable, func:test_merge_migration_resolves_heads() → None, call:Path, call:migration_path.exists, call:importlib.util.spec_from_file_location, call:importlib.util.module_from_spec, call:spec.loader.exec_module, call:callable, func:test_remove_pi_agent_repo_mount_migration_imports() → None, call:Path, call:migration_path.exists, call:importlib.util.spec_from_file_location, call:importlib.util.module_from_spec, call:spec.loader.exec_module, call:callable | dep: importlib.util, pathlib, pytest, importlib -- test_config.py | Tests configuration settings and database URL building for an application, verifying defaults, environment variable overrides, and environment-specific behavior. | exp: func:test_settings_default_database_url_uses_asyncpg(monkeypatch) → None, call:monkeypatch.delenv, call:Settings, func:test_build_database_url_uses_explicit_values() → None, call:build_database_url, func:test_settings_prefers_explicit_database_url_env(monkeypatch) → None, call:monkeypatch.setenv, call:Settings, func:test_auth_settings_have_secure_defaults() → None, call:Settings, call:settings.resolved_authentik_authorize_url.endswith, call:settings.resolved_authentik_token_url.endswith, call:settings.resolved_authentik_jwks_url.endswith, func:test_cookie_policy_is_strict_in_production(monkeypatch) → None, call:monkeypatch.setenv, call:Settings, func:test_cookie_policy_is_relaxed_for_local_dev(monkeypatch) → None, call:monkeypatch.setenv, call:Settings | dep: pytest, src.config, src.database -- test_config_profile_resolver.py | Tests the config profile resolution system including merge helpers, profile inheritance with cycle detection, and git mount normalization | exp: class:TestMergeFunctions, method:test_merge_env_vars_basic(self) → None, call:_merge_env_vars, method:test_merge_env_vars_tracks_overrides(self) → None, call:_merge_env_vars, method:test_merge_runtime_hints_basic(self) → None, call:_merge_runtime_hints, method:test_merge_files_basic(self) → None, call:_merge_files, method:test_merge_mounts_basic(self) → None, call:_merge_mounts, method:test_merge_mounts_file_override(self) → None, call:_merge_mounts, call:ResolvedMount, method:test_merge_mounts_mode_conflict(self) → None, call:_merge_mounts, call:ResolvedMount, method:test_merge_git_mounts_basic(self) → None, call:_merge_git_mounts, call:len, method:test_merge_git_mounts_concatenate_same_repo_branch(self) → None, call:_merge_git_mounts, call:len, method:test_merge_git_mounts_dedup_same_mapping(self) → None, call:_merge_git_mounts, call:len, method:test_merge_git_mounts_different_repos(self) → None, call:_merge_git_mounts, call:len, method:test_merge_git_mounts_different_branches(self) → None, call:_merge_git_mounts, call:len, call:m.get, class:TestResolveProfile, class:TestApplyResolvedProfile, method:test_mounts_directory_not_individual_files(self, tmp_path) → None, call:ResolvedProfile, call:uuid.uuid4, call:ResolvedMount, call:apply_resolved_profile, call:str, call:len, call:Path(volumes[0]["source"]).is_dir, call:(Path(volumes[0]["source"]) / "config.json").exists, call:(Path(volumes[0]["source"]) / "nested" / "file.txt").exists, method:test_directory_mount_target(self, tmp_path) → None, call:ResolvedProfile, call:uuid.uuid4, call:ResolvedMount, call:apply_resolved_profile, call:str, call:len, call:Path, call:(Path(volumes[0]["source"]) / "z.json").exists, method:test_empty_mount_produces_no_volumes(self, tmp_path) → None, call:ResolvedProfile, call:uuid.uuid4, call:ResolvedMount, call:apply_resolved_profile, call:str, method:test_home_expansion_in_directory_mount_target(self, tmp_path) → None, call:ResolvedProfile, call:uuid.uuid4, call:ResolvedMount, call:apply_resolved_profile, call:str, call:len, call:(Path(volumes[0]["source"]) / "app.toml").exists, call:Path, method:test_readonly_mount_sets_readonly_flag(self, tmp_path) → None, call:ResolvedProfile, call:uuid.uuid4, call:ResolvedMount, call:apply_resolved_profile, call:str, call:len, call:volumes[0].get, method:test_writable_mount_does_not_set_readonly_flag(self, tmp_path) → None, call:ResolvedProfile, call:uuid.uuid4, call:ResolvedMount, call:apply_resolved_profile, call:str, call:len, call:volumes[0].get, class:TestCheckIncludeCycle | dep: uuid, pathlib, pytest, sqlalchemy.ext.asyncio, src.models.config.config_profile, src.services.config.config_profile_resolver -- test_docker_build.py | Unit tests for a Docker image build service that verifies Dockerfile creation, command structure, context file handling, path traversal prevention, and error handling. | exp: class:TestBuildImage | dep: subprocess, tempfile, pathlib, unittest.mock, pytest, src.services.build.docker_build +- __init__.py | Swaps two tmux panes between windows, preserving active pane state and layout | dep: tmux +- test_alembic_migrations.py | Unit tests that verify Alembic database migration files are importable, have correct revision identifiers, and declare expected dependencies. | exp: func:test_home_directory_migration_imports_and_rewrites() → None, call:Path, call:migration_path.exists, call:importlib.util.spec_from_file_location, call:importlib.util.module_from_spec, call:spec.loader.exec_module, call:callable, func:test_merge_migration_resolves_heads() → None, call:Path, call:migration_path.exists, call:importlib.util.spec_from_file_location, call:importlib.util.module_from_spec, call:spec.loader.exec_module, call:callable, func:test_remove_pi_agent_repo_mount_migration_imports() → None, call:Path, call:migration_path.exists, call:importlib.util.spec_from_file_location, call:importlib.util.module_from_spec, call:spec.loader.exec_module, call:callable | dep: importlib.util, pathlib, pytest +- test_config.py | Unit tests for application configuration settings including database URLs, authentication defaults, and cookie security policies | exp: func:test_settings_default_database_url_uses_asyncpg(monkeypatch) → None, call:monkeypatch.delenv, call:Settings, func:test_build_database_url_uses_explicit_values() → None, call:build_database_url, func:test_settings_prefers_explicit_database_url_env(monkeypatch) → None, call:monkeypatch.setenv, call:Settings, func:test_auth_settings_have_secure_defaults() → None, call:Settings, call:settings.resolved_authentik_authorize_url.endswith, call:settings.resolved_authentik_token_url.endswith, call:settings.resolved_authentik_jwks_url.endswith, func:test_cookie_policy_is_strict_in_production(monkeypatch) → None, call:monkeypatch.setenv, call:Settings, func:test_cookie_policy_is_relaxed_for_local_dev(monkeypatch) → None, call:monkeypatch.setenv, call:Settings | dep: pytest, src.config, src.database, src.config.Settings, src.database.build_database_url +- test_config_profile_resolver.py | Unit tests for config profile resolution including merge helpers, profile inheritance with cycle detection, and git mount normalization | exp: class:TestMergeFunctions, method:test_merge_env_vars_basic(self) → None, call:_merge_env_vars, method:test_merge_env_vars_tracks_overrides(self) → None, call:_merge_env_vars, method:test_merge_runtime_hints_basic(self) → None, call:_merge_runtime_hints, method:test_merge_files_basic(self) → None, call:_merge_files, method:test_merge_mounts_basic(self) → None, call:_merge_mounts, method:test_merge_mounts_file_override(self) → None, call:_merge_mounts, call:ResolvedMount, method:test_merge_mounts_mode_conflict(self) → None, call:_merge_mounts, call:ResolvedMount, method:test_merge_git_mounts_basic(self) → None, call:_merge_git_mounts, call:len, method:test_merge_git_mounts_concatenate_same_repo_branch(self) → None, call:_merge_git_mounts, call:len, method:test_merge_git_mounts_dedup_same_mapping(self) → None, call:_merge_git_mounts, call:len, method:test_merge_git_mounts_different_repos(self) → None, call:_merge_git_mounts, call:len, method:test_merge_git_mounts_different_branches(self) → None, call:_merge_git_mounts, call:len, call:m.get, class:TestResolveProfile, class:TestApplyResolvedProfile, method:test_mounts_directory_not_individual_files(self, tmp_path) → None, call:ResolvedProfile, call:uuid.uuid4, call:ResolvedMount, call:apply_resolved_profile, call:str, call:len, call:Path(volumes[0]["source"]).is_dir, call:(Path(volumes[0]["source"]) / "config.json").exists, call:(Path(volumes[0]["source"]) / "nested" / "file.txt").exists, method:test_directory_mount_target(self, tmp_path) → None, call:ResolvedProfile, call:uuid.uuid4, call:ResolvedMount, call:apply_resolved_profile, call:str, call:len, call:Path, call:(Path(volumes[0]["source"]) / "z.json").exists, method:test_empty_mount_produces_no_volumes(self, tmp_path) → None, call:ResolvedProfile, call:uuid.uuid4, call:ResolvedMount, call:apply_resolved_profile, call:str, method:test_home_expansion_in_directory_mount_target(self, tmp_path) → None, call:ResolvedProfile, call:uuid.uuid4, call:ResolvedMount, call:apply_resolved_profile, call:str, call:len, call:(Path(volumes[0]["source"]) / "app.toml").exists, call:Path, method:test_readonly_mount_sets_readonly_flag(self, tmp_path) → None, call:ResolvedProfile, call:uuid.uuid4, call:ResolvedMount, call:apply_resolved_profile, call:str, call:len, call:volumes[0].get, method:test_writable_mount_does_not_set_readonly_flag(self, tmp_path) → None, call:ResolvedProfile, call:uuid.uuid4, call:ResolvedMount, call:apply_resolved_profile, call:str, call:len, call:volumes[0].get, class:TestCheckIncludeCycle | dep: uuid, pathlib, pytest, sqlalchemy.ext.asyncio, src.models.config.config_profile, src.services.config.config_profile_resolver +- test_docker_build.py | Unit tests for a Docker image build service that verifies command construction, file writing, error handling, and security constraints. | exp: class:TestBuildImage | dep: subprocess, tempfile, pathlib, unittest.mock, pytest, src.services.build.docker_build - test_docker_service.py | Unit tests for Docker service utilities including container ID/name retrieval and volume sorting by specificity. | exp: class:TestGetContainerId, class:TestGetContainerName, class:TestSortVolumesBySpecificity, method:test_parent_before_child(self) → None, call:sort_volumes_by_specificity, method:test_stable_sort_for_equal_depth(self) → None, call:sort_volumes_by_specificity, method:test_with_type_suffix(self) → None, call:sort_volumes_by_specificity, method:test_empty_list(self) → None, call:sort_volumes_by_specificity, method:test_single_volume(self) → None, call:sort_volumes_by_specificity, method:test_duplicate_target_warning(self, caplog) → None, call:caplog.at_level, call:sort_volumes_by_specificity | dep: unittest.mock, logging, src.services.docker.container, src.services.docker.compose, subprocess -- test_event_bus.py | Unit tests for InstanceEventBus verifying publish/subscribe, exception isolation, unsubscribe, and async callback support. | exp: func:event_bus() → InstanceEventBus, call:InstanceEventBus, call:bus._reset_for_testing, func:sample_payload() → InstanceEventPayload, call:str, call:uuid.uuid4, func:test_publish_delivers_to_all_subscribers(event_bus: InstanceEventBus, sample_payload: InstanceEventPayload) → None, call:received.append, call:event_bus.subscribe, call:event_bus.publish, call:len, func:callback_1(payload: InstanceEventPayload) → None, call:received.append, func:callback_2(payload: InstanceEventPayload) → None, call:received.append, func:callback_3(payload: InstanceEventPayload) → None, call:received.append, func:test_subscriber_exception_isolation(event_bus: InstanceEventBus, sample_payload: InstanceEventPayload) → None, call:received.append, call:event_bus.subscribe, call:event_bus.publish, raise:RuntimeError, func:bad_callback(_payload: InstanceEventPayload) → None, raise:RuntimeError, func:good_callback(_payload: InstanceEventPayload) → None, call:received.append, func:test_unsubscribe_removes_callback(event_bus: InstanceEventBus, sample_payload: InstanceEventPayload) → None, call:received.append, call:event_bus.subscribe, call:unsubscribe, call:event_bus.publish, func:callback(_payload: InstanceEventPayload) → None, call:received.append, func:test_publish_to_empty_subscriber_list(event_bus: InstanceEventBus, sample_payload: InstanceEventPayload) → None, call:event_bus.publish, func:test_async_subscriber_supported(event_bus: InstanceEventBus, sample_payload: InstanceEventPayload) → None, call:asyncio.sleep, call:received.append, call:event_bus.subscribe, call:event_bus.publish, func:async_callback(_payload: InstanceEventPayload) → None, call:asyncio.sleep, call:received.append, func:test_unsubscribe_all_clears_subscribers(event_bus: InstanceEventBus, sample_payload: InstanceEventPayload) → None, call:received.append, call:event_bus.subscribe, call:event_bus.unsubscribe_all, call:event_bus.publish, func:callback(_payload: InstanceEventPayload) → None, call:received.append | dep: asyncio, uuid, typing, pytest, src.services.instance.event_bus -- test_file_service.py | Unit tests for FileService validating directory listing, file read/write, binary rejection, path traversal prevention, and workspace-based file operations. | exp: class:TestFileService, method:test_list_directory_empty(self, temp_workspace: Workspace), call:FileService, call:service.list_directory, method:test_list_directory_with_files(self, temp_workspace: Workspace), call:os.makedirs, call:os.path.join, call:open, call:f.write, call:FileService, call:service.list_directory, call:len, method:test_read_file(self, temp_workspace: Workspace), call:open, call:os.path.join, call:f.write, call:FileService, call:service.read_file, method:test_read_binary_file_rejected(self, temp_workspace: Workspace), call:open, call:os.path.join, call:f.write, call:FileService, call:pytest.raises, call:service.read_file, method:test_write_file(self, temp_workspace: Workspace), call:FileService, call:service.write_file, call:os.path.exists, call:os.path.join, call:open, call:f.read, method:test_path_escapes_workspace(self, temp_workspace: Workspace), call:FileService, call:pytest.raises, call:service.list_directory, func:temp_workspace(), call:tempfile.TemporaryDirectory, call:Workspace | dep: os, tempfile, pytest, src.models, src.services.shared.file_service, src.models.Workspace, src.services.shared.file_service.FileService +- test_event_bus.py | Unit tests for InstanceEventBus verifying publish/subscribe, exception isolation, unsubscribe, async callback, and bulk unsubscribe functionality. | exp: func:event_bus() → InstanceEventBus, call:InstanceEventBus, call:bus._reset_for_testing, func:sample_payload() → InstanceEventPayload, call:str, call:uuid.uuid4, func:test_publish_delivers_to_all_subscribers(event_bus: InstanceEventBus, sample_payload: InstanceEventPayload) → None, call:received.append, call:event_bus.subscribe, call:event_bus.publish, call:len, func:callback_1(payload: InstanceEventPayload) → None, call:received.append, func:callback_2(payload: InstanceEventPayload) → None, call:received.append, func:callback_3(payload: InstanceEventPayload) → None, call:received.append, func:test_subscriber_exception_isolation(event_bus: InstanceEventBus, sample_payload: InstanceEventPayload) → None, call:received.append, call:event_bus.subscribe, call:event_bus.publish, raise:RuntimeError, func:bad_callback(_payload: InstanceEventPayload) → None, raise:RuntimeError, func:good_callback(_payload: InstanceEventPayload) → None, call:received.append, func:test_unsubscribe_removes_callback(event_bus: InstanceEventBus, sample_payload: InstanceEventPayload) → None, call:received.append, call:event_bus.subscribe, call:unsubscribe, call:event_bus.publish, func:callback(_payload: InstanceEventPayload) → None, call:received.append, func:test_publish_to_empty_subscriber_list(event_bus: InstanceEventBus, sample_payload: InstanceEventPayload) → None, call:event_bus.publish, func:test_async_subscriber_supported(event_bus: InstanceEventBus, sample_payload: InstanceEventPayload) → None, call:asyncio.sleep, call:received.append, call:event_bus.subscribe, call:event_bus.publish, func:async_callback(_payload: InstanceEventPayload) → None, call:asyncio.sleep, call:received.append, func:test_unsubscribe_all_clears_subscribers(event_bus: InstanceEventBus, sample_payload: InstanceEventPayload) → None, call:received.append, call:event_bus.subscribe, call:event_bus.unsubscribe_all, call:event_bus.publish, func:callback(_payload: InstanceEventPayload) → None, call:received.append | dep: asyncio, uuid, typing, pytest, src.services.instance.event_bus +- test_file_service.py | Unit tests for FileService validating directory listing, file read/write operations, binary file rejection, and path traversal security. | exp: class:TestFileService, method:test_list_directory_empty(self, temp_workspace: Workspace), call:FileService, call:service.list_directory, method:test_list_directory_with_files(self, temp_workspace: Workspace), call:os.makedirs, call:os.path.join, call:open, call:f.write, call:FileService, call:service.list_directory, call:len, method:test_read_file(self, temp_workspace: Workspace), call:open, call:os.path.join, call:f.write, call:FileService, call:service.read_file, method:test_read_binary_file_rejected(self, temp_workspace: Workspace), call:open, call:os.path.join, call:f.write, call:FileService, call:pytest.raises, call:service.read_file, method:test_write_file(self, temp_workspace: Workspace), call:FileService, call:service.write_file, call:os.path.exists, call:os.path.join, call:open, call:f.read, method:test_path_escapes_workspace(self, temp_workspace: Workspace), call:FileService, call:pytest.raises, call:service.list_directory, func:temp_workspace(), call:tempfile.TemporaryDirectory, call:Workspace | dep: os, tempfile, pytest, src.models, src.services.shared.file_service, src.models.Workspace, src.services.shared.file_service.FileService - test_git_operations.py | Unit tests for GitOperations class covering status, commit, history, and branch operations | exp: class:TestGitOperationsStatus, method:test_status_clean(self, temp_workspace: Workspace), call:GitOperations, call:asyncio.run, call:git.status, method:test_status_modified(self, temp_workspace: Workspace), call:open, call:os.path.join, call:f.write, call:GitOperations, call:asyncio.run, call:git.status, method:test_status_untracked(self, temp_workspace: Workspace), call:open, call:os.path.join, call:f.write, call:GitOperations, call:asyncio.run, call:git.status, class:TestGitOperationsCommit, method:test_commit_stages_and_commits(self, temp_workspace: Workspace), call:open, call:os.path.join, call:f.write, call:GitOperations, call:asyncio.run, call:git.commit, call:git.status, call:git.history, method:test_commit_fails_without_changes(self, temp_workspace: Workspace), call:GitOperations, call:pytest.raises, call:asyncio.run, call:git.commit, class:TestGitOperationsHistory, method:test_history_returns_commits(self, temp_workspace: Workspace), call:GitOperations, call:asyncio.run, call:git.history, call:len, method:test_history_filters_by_path(self, temp_workspace: Workspace), call:open, call:os.path.join, call:f.write, call:GitOperations, call:asyncio.run, call:git.commit, call:git.history, call:len, class:TestGitOperationsBranches, method:test_branches_lists_main(self, temp_workspace: Workspace), call:GitOperations, call:asyncio.run, call:git.branches, method:test_checkout_switches_branch(self, temp_workspace: Workspace), call:_run_git, call:GitOperations, call:asyncio.run, call:git.checkout, call:git.status, func:_run_git(*args: str, cwd: str) → None, call:subprocess.run, func:temp_workspace(), call:tempfile.TemporaryDirectory, call:_run_git, call:os.path.join, call:open, call:f.write, call:Workspace | dep: asyncio, os, subprocess, tempfile, pytest, src.models, src.services.git.git_operations, src.models.Workspace, src.services.git.git_operations.GitOperations - test_git_service.py | Unit tests for GitService class covering clone, fetch, pull, and branch_exists_remotely operations with mocked subprocess calls. | exp: class:TestGitServiceClone, class:TestGitServiceFetch, class:TestGitServicePull, class:TestGitServiceBranchExistsRemotely, method:test_branch_exists(self), call:MagicMock, call:patch, call:GitService.branch_exists_remotely, call:mock_run.assert_called_once_with, method:test_branch_not_exists(self), call:MagicMock, call:patch, call:GitService.branch_exists_remotely, method:test_ls_remote_fails(self), call:MagicMock, call:patch, call:GitService.branch_exists_remotely | dep: asyncio, unittest.mock, pytest, src.services.git.git_service -- test_git_url_parser.py | Tests for git URL parsing utilities that extract base repository URLs, validate clone URLs, and parse various git URL formats across GitHub, GitLab, and Bitbucket. | exp: class:TestExtractBaseRepoUrl, method:test_github_tree_url(self), call:extract_base_repo_url, method:test_github_blob_url(self), call:extract_base_repo_url, method:test_github_pull_url(self), call:extract_base_repo_url, method:test_github_issues_url(self), call:extract_base_repo_url, method:test_github_valid_url(self), call:extract_base_repo_url, method:test_github_url_with_query_params(self), call:extract_base_repo_url, method:test_gitlab_tree_url(self), call:extract_base_repo_url, method:test_gitlab_blob_url(self), call:extract_base_repo_url, method:test_gitlab_merge_request_url(self), call:extract_base_repo_url, method:test_gitlab_valid_url(self), call:extract_base_repo_url, method:test_bitbucket_src_url(self), call:extract_base_repo_url, method:test_bitbucket_valid_url(self), call:extract_base_repo_url, method:test_ssh_url(self), call:extract_base_repo_url, method:test_ssh_url_without_git_suffix(self), call:extract_base_repo_url, method:test_invalid_url(self), call:extract_base_repo_url, method:test_empty_url(self), call:extract_base_repo_url, class:TestIsValidCloneUrl, method:test_valid_ssh_url(self), call:is_valid_clone_url, method:test_valid_https_url(self), call:is_valid_clone_url, method:test_browser_url(self), call:is_valid_clone_url, method:test_url_without_git_suffix(self), call:is_valid_clone_url, method:test_invalid_url(self), call:is_valid_clone_url, class:TestParseGitUrl, method:test_valid_git_url(self), call:parse_git_url, method:test_browser_url(self), call:parse_git_url, method:test_invalid_url(self), call:parse_git_url, method:test_empty_url(self), call:parse_git_url, method:test_ssh_url(self), call:parse_git_url | dep: src.utils.git_url_parser, pytest -- test_health_monitor.py | Unit tests for HealthMonitor state-transition logic covering container crash detection, tunnel failure detection, recovery detection, write deduplication, exception resilience, and start/stop lifecycle. | exp: func:event_bus() → InstanceEventBus, call:InstanceEventBus, call:bus._reset_for_testing, func:health_monitor(event_bus: InstanceEventBus) → HealthMonitor, call:HealthMonitor, func:_create_running_instance(db_session) → ToolInstance, call:User, call:uuid.uuid4, call:db_session.add, call:db_session.commit, call:ToolInstance, func:test_detects_container_crash(db_session, event_bus: InstanceEventBus, health_monitor: HealthMonitor) → None, call:_create_running_instance, call:events_captured.append, call:event_bus.subscribe, call:patch, call:health_monitor._check_instance, call:db_session.refresh, call:len, call:db_session.execute, call:select(HealthCheck).where, call:result.scalar_one, func:capture_event(payload: InstanceEventPayload) → None, call:events_captured.append, func:test_detects_tunnel_failure(db_session, event_bus: InstanceEventBus, health_monitor: HealthMonitor) → None, call:_create_running_instance, call:events_captured.append, call:event_bus.subscribe, call:patch, call:health_monitor._check_instance, call:db_session.refresh, call:len, call:db_session.execute, call:select(HealthCheck).where, call:result.scalar_one, func:capture_event(payload: InstanceEventPayload) → None, call:events_captured.append, func:test_detects_recovery(db_session, event_bus: InstanceEventBus, health_monitor: HealthMonitor) → None, call:_create_running_instance, call:db_session.commit, call:HealthSnapshot, call:events_captured.append, call:event_bus.subscribe, call:patch, call:health_monitor._check_instance, call:db_session.refresh, call:len, call:db_session.execute, call:select(HealthCheck).where, call:result.scalar_one, func:capture_event(payload: InstanceEventPayload) → None, call:events_captured.append, func:test_skips_writes_when_no_state_change(db_session, event_bus: InstanceEventBus, health_monitor: HealthMonitor) → None, call:_create_running_instance, call:HealthSnapshot, call:patch, call:health_monitor._check_instance, call:db_session.execute, call:select(HealthCheck).where, call:len, call:result.scalars().all, func:test_docker_exception_resilience(db_session, event_bus: InstanceEventBus, health_monitor: HealthMonitor) → None, call:_create_running_instance, call:events_captured.append, call:event_bus.subscribe, call:patch, call:RuntimeError, call:health_monitor._check_instance, call:db_session.execute, call:select(HealthCheck).where, call:result.scalar_one_or_none, func:capture_event(payload: InstanceEventPayload) → None, call:events_captured.append, func:test_monitor_start_stop(health_monitor: HealthMonitor) → None, call:health_monitor.start, call:task.done, call:health_monitor.stop, call:suppress, call:task.cancelled | dep: asyncio, uuid, contextlib, unittest.mock, pytest, sqlalchemy, src.models.system.health_check, src.models.tool.tool_instance, src.models.user.user, src.services.instance.event_bus, src.services.instance.health_monitor -- test_home_path_expansion.py | Unit tests for home directory path expansion (~ and $HOME) in container paths and manifest home directory resolution. | exp: class:TestExpandContainerPath, method:test_tilde_slash_expands(self) → None, call:expand_container_path, method:test_tilde_alone_expands(self) → None, call:expand_container_path, method:test_dollar_home_slash_expands(self) → None, call:expand_container_path, method:test_dollar_home_alone_expands(self) → None, call:expand_container_path, method:test_absolute_path_unchanged(self) → None, call:expand_container_path, method:test_relative_path_unchanged(self) → None, call:expand_container_path, method:test_tilde_in_middle_unchanged(self) → None, call:expand_container_path, method:test_dollar_home_in_middle_unchanged(self) → None, call:expand_container_path, method:test_root_home(self) → None, call:expand_container_path, class:TestGetManifestHomeDir, method:test_with_user_block(self) → None, call:get_manifest_home_dir, method:test_without_user_block(self) → None, call:get_manifest_home_dir, method:test_with_empty_user_name(self) → None, call:get_manifest_home_dir, method:test_with_none_user_name(self) → None, call:get_manifest_home_dir | dep: pytest, src.services.config.config_profile_resolver, src.services.build.manifest_compiler -- test_instance_service.py | Unit tests for tool instance service functions including compose file modification, repository mount name resolution, and manifest instance preparation | exp: class:TestModifyComposeFile, method:test_extra_volumes_expand_home_dir(self, tmp_path), call:compose_path.write_text, call:modify_compose_file, call:str, call:compose_path.read_text, method:test_working_directory_expands_home_dir(self, tmp_path), call:compose_path.write_text, call:modify_compose_file, call:str, call:compose_path.read_text, class:TestGetRepositoryMountName, method:test_prefers_remote_url_name_over_user_provided_name(self), call:MagicMock, call:_get_repository_mount_name, method:test_parses_browser_url_to_repo_name(self), call:MagicMock, call:_get_repository_mount_name, method:test_uses_workspace_path_basename_when_workspace_provided(self), call:MagicMock, call:_get_repository_mount_name, method:test_falls_back_to_repo_name_when_remote_url_missing(self), call:MagicMock, call:_get_repository_mount_name, method:test_falls_back_to_repo_name_for_unparseable_url(self), call:MagicMock, call:_get_repository_mount_name, class:Result, func:test_prepare_manifest_instance_uses_workspace_path_basename(), call:MagicMock, call:AsyncMock, call:Result, call:prepare_manifest_instance, func:session_get(model, obj_id), func:fake_run(cmd), call:Result | dep: unittest.mock, pytest, src.services.tool.instance_service, subprocess, src.services.tool +- test_git_url_parser.py | Unit tests for git URL parsing utilities that validate extraction of base repository URLs, clone URL validation, and comprehensive URL parsing across GitHub, GitLab, and Bitbucket formats. | exp: class:TestExtractBaseRepoUrl, method:test_github_tree_url(self), call:extract_base_repo_url, method:test_github_blob_url(self), call:extract_base_repo_url, method:test_github_pull_url(self), call:extract_base_repo_url, method:test_github_issues_url(self), call:extract_base_repo_url, method:test_github_valid_url(self), call:extract_base_repo_url, method:test_github_url_with_query_params(self), call:extract_base_repo_url, method:test_gitlab_tree_url(self), call:extract_base_repo_url, method:test_gitlab_blob_url(self), call:extract_base_repo_url, method:test_gitlab_merge_request_url(self), call:extract_base_repo_url, method:test_gitlab_valid_url(self), call:extract_base_repo_url, method:test_bitbucket_src_url(self), call:extract_base_repo_url, method:test_bitbucket_valid_url(self), call:extract_base_repo_url, method:test_ssh_url(self), call:extract_base_repo_url, method:test_ssh_url_without_git_suffix(self), call:extract_base_repo_url, method:test_invalid_url(self), call:extract_base_repo_url, method:test_empty_url(self), call:extract_base_repo_url, class:TestIsValidCloneUrl, method:test_valid_ssh_url(self), call:is_valid_clone_url, method:test_valid_https_url(self), call:is_valid_clone_url, method:test_browser_url(self), call:is_valid_clone_url, method:test_url_without_git_suffix(self), call:is_valid_clone_url, method:test_invalid_url(self), call:is_valid_clone_url, class:TestParseGitUrl, method:test_valid_git_url(self), call:parse_git_url, method:test_browser_url(self), call:parse_git_url, method:test_invalid_url(self), call:parse_git_url, method:test_empty_url(self), call:parse_git_url, method:test_ssh_url(self), call:parse_git_url | dep: src.utils.git_url_parser, pytest +- test_health_monitor.py | Unit tests for HealthMonitor state-transition logic covering container crash detection, tunnel failure detection, recovery detection, write optimization, and exception resilience. | exp: func:event_bus() → InstanceEventBus, call:InstanceEventBus, call:bus._reset_for_testing, func:health_monitor(event_bus: InstanceEventBus) → HealthMonitor, call:HealthMonitor, func:_create_running_instance(db_session) → ToolInstance, call:User, call:uuid.uuid4, call:db_session.add, call:db_session.commit, call:ToolInstance, func:test_detects_container_crash(db_session, event_bus: InstanceEventBus, health_monitor: HealthMonitor) → None, call:_create_running_instance, call:events_captured.append, call:event_bus.subscribe, call:patch, call:health_monitor._check_instance, call:db_session.refresh, call:len, call:db_session.execute, call:select(HealthCheck).where, call:result.scalar_one, func:capture_event(payload: InstanceEventPayload) → None, call:events_captured.append, func:test_detects_tunnel_failure(db_session, event_bus: InstanceEventBus, health_monitor: HealthMonitor) → None, call:_create_running_instance, call:events_captured.append, call:event_bus.subscribe, call:patch, call:health_monitor._check_instance, call:db_session.refresh, call:len, call:db_session.execute, call:select(HealthCheck).where, call:result.scalar_one, func:capture_event(payload: InstanceEventPayload) → None, call:events_captured.append, func:test_detects_recovery(db_session, event_bus: InstanceEventBus, health_monitor: HealthMonitor) → None, call:_create_running_instance, call:db_session.commit, call:HealthSnapshot, call:events_captured.append, call:event_bus.subscribe, call:patch, call:health_monitor._check_instance, call:db_session.refresh, call:len, call:db_session.execute, call:select(HealthCheck).where, call:result.scalar_one, func:capture_event(payload: InstanceEventPayload) → None, call:events_captured.append, func:test_skips_writes_when_no_state_change(db_session, event_bus: InstanceEventBus, health_monitor: HealthMonitor) → None, call:_create_running_instance, call:HealthSnapshot, call:patch, call:health_monitor._check_instance, call:db_session.execute, call:select(HealthCheck).where, call:len, call:result.scalars().all, func:test_docker_exception_resilience(db_session, event_bus: InstanceEventBus, health_monitor: HealthMonitor) → None, call:_create_running_instance, call:events_captured.append, call:event_bus.subscribe, call:patch, call:RuntimeError, call:health_monitor._check_instance, call:db_session.execute, call:select(HealthCheck).where, call:result.scalar_one_or_none, func:capture_event(payload: InstanceEventPayload) → None, call:events_captured.append, func:test_monitor_start_stop(health_monitor: HealthMonitor) → None, call:health_monitor.start, call:task.done, call:health_monitor.stop, call:suppress, call:task.cancelled | dep: asyncio, uuid, contextlib, unittest.mock, pytest, sqlalchemy, src.models.system.health_check, src.models.tool.tool_instance, src.models.user.user, src.services.instance.event_bus, src.services.instance.health_monitor +- test_home_path_expansion.py | Unit tests for tilde and $HOME expansion in container paths, plus manifest-based home directory resolution | exp: class:TestExpandContainerPath, method:test_tilde_slash_expands(self) → None, call:expand_container_path, method:test_tilde_alone_expands(self) → None, call:expand_container_path, method:test_dollar_home_slash_expands(self) → None, call:expand_container_path, method:test_dollar_home_alone_expands(self) → None, call:expand_container_path, method:test_absolute_path_unchanged(self) → None, call:expand_container_path, method:test_relative_path_unchanged(self) → None, call:expand_container_path, method:test_tilde_in_middle_unchanged(self) → None, call:expand_container_path, method:test_dollar_home_in_middle_unchanged(self) → None, call:expand_container_path, method:test_root_home(self) → None, call:expand_container_path, class:TestGetManifestHomeDir, method:test_with_user_block(self) → None, call:get_manifest_home_dir, method:test_without_user_block(self) → None, call:get_manifest_home_dir, method:test_with_empty_user_name(self) → None, call:get_manifest_home_dir, method:test_with_none_user_name(self) → None, call:get_manifest_home_dir | dep: pytest, src.services.config.config_profile_resolver, src.services.build.manifest_compiler +- test_instance_service.py | Unit tests for tool instance service functions including compose file modification, repository mount name resolution, profile/git mount stacking, and manifest instance preparation. | exp: class:TestModifyComposeFile, method:test_extra_volumes_expand_home_dir(self, tmp_path), call:compose_path.write_text, call:modify_compose_file, call:str, call:compose_path.read_text, method:test_working_directory_expands_home_dir(self, tmp_path), call:compose_path.write_text, call:modify_compose_file, call:str, call:compose_path.read_text, class:TestGetRepositoryMountName, method:test_prefers_remote_url_name_over_user_provided_name(self), call:MagicMock, call:_get_repository_mount_name, method:test_parses_browser_url_to_repo_name(self), call:MagicMock, call:_get_repository_mount_name, method:test_uses_workspace_path_basename_when_workspace_provided(self), call:MagicMock, call:_get_repository_mount_name, method:test_falls_back_to_repo_name_when_remote_url_missing(self), call:MagicMock, call:_get_repository_mount_name, method:test_falls_back_to_repo_name_for_unparseable_url(self), call:MagicMock, call:_get_repository_mount_name, class:TestStackProfileMountsWithGitMounts, method:test_exact_overlap_merges_profile_files_into_git_source(self, tmp_path) → None, call:git_source.mkdir, call:(git_source / "existing.txt").write_text, call:profile_source.mkdir, call:(profile_source / "settings.json").write_text, call:str, call:_stack_profile_mounts_with_git_mounts, call:(git_source / "existing.txt").read_text, call:(git_source / "settings.json").read_text, method:test_descendant_overlap_copies_into_subdirectory(self, tmp_path) → None, call:git_source.mkdir, call:(git_source / "README").write_text, call:profile_source.mkdir, call:(profile_source / "settings.json").write_text, call:str, call:_stack_profile_mounts_with_git_mounts, call:(git_source / "agent" / "settings.json").read_text, call:(git_source / "README").read_text, method:test_non_overlapping_mounts_left_untouched(self, tmp_path) → None, call:git_source.mkdir, call:profile_source.mkdir, call:(profile_source / "config").write_text, call:str, call:_stack_profile_mounts_with_git_mounts, method:test_git_source_file_does_not_consume_profile_mount(self, tmp_path) → None, call:git_source.write_text, call:profile_source.mkdir, call:(profile_source / "settings.json").write_text, call:str, call:_stack_profile_mounts_with_git_mounts, method:test_profile_source_file_copied_into_git_source(self, tmp_path) → None, call:git_source.mkdir, call:profile_source.write_text, call:str, call:_stack_profile_mounts_with_git_mounts, call:(git_source / "settings.json").read_text, class:Result, func:test_prepare_manifest_instance_uses_workspace_path_basename(), call:MagicMock, call:AsyncMock, call:Result, call:prepare_manifest_instance, func:session_get(model, obj_id), func:fake_run(cmd), call:Result | dep: unittest.mock, pytest, src.services.tool.instance_service, subprocess, src.services.tool, pathlib - test_lifecycle_hooks.py | Unit tests for lifecycle hook helper functions that derive notification titles and determine whether events should trigger notifications. | exp: class:TestDeriveTitle, method:test_known_event_types(self) → None, call:_derive_title, method:test_unknown_event_type(self) → None, call:_derive_title, class:TestShouldNotify, method:test_error_events_are_notified(self) → None, call:_should_notify, method:test_health_changed_running_is_notified(self) → None, call:_should_notify, method:test_created_started_stopped_restarted_deleted_filtered(self) → None, call:_should_notify, method:test_health_changed_non_running_filtered(self) → None, call:_should_notify | dep: pytest, src.services.instance.lifecycle_hooks -- test_manifest_compiler.py | Unit tests for a manifest compiler that generates Dockerfiles, docker-compose files, and entrypoint scripts from manifest configurations. | exp: class:TestGetManifestHomeDir, method:test_home_directory_in_manifest_wins(self) → None, call:get_manifest_home_dir, method:test_user_name_derives_home(self) → None, call:get_manifest_home_dir, method:test_root_fallback(self) → None, call:get_manifest_home_dir, method:test_empty_home_directory_falls_back(self) → None, call:get_manifest_home_dir, class:TestCompileDockerfileHomeDirectory, method:test_env_home_and_workdir_use_home_directory(self) → None, call:compile_dockerfile, method:test_workspace_symlink_created(self) → None, call:compile_dockerfile, method:test_runtime_workspace_not_baked_into_image(self) → None, call:compile_dockerfile, method:test_runtime_working_dir_overrides_home_workdir(self) → None, call:compile_dockerfile, method:test_working_dir_expands_tilde(self) → None, call:compile_dockerfile, class:TestCompileComposeHomeDirectory, method:test_default_repo_mount_synthesized(self) → None, call:compile_compose, method:test_explicit_repo_mount_preserved(self) → None, call:compile_compose, method:test_workspace_name_substituted_in_mount_target(self) → None, call:compile_compose, method:test_working_dir_expands_home(self) → None, call:compile_compose, class:TestCompileEntrypoint, method:test_entrypoint_creates_home_and_workspace(self) → None, call:compile_entrypoint, method:test_entrypoint_removes_stale_placeholder_directory(self) → None, call:compile_entrypoint, method:test_entrypoint_uses_root_then_sudo_for_workspace_symlink(self) → None, call:compile_entrypoint, call:entrypoint.find, method:test_entrypoint_fixes_mount_owners(self) → None, call:compile_entrypoint, func:test_compile_dockerfile_creates_config_dirs_for_user() → None, call:compile_dockerfile, func:test_compile_dockerfile_no_user_does_not_create_home() → None, call:compile_dockerfile, func:test_compile_dockerfile_uses_user_npm_prefix() → None, call:compile_dockerfile, func:test_compile_dockerfile_starts_as_root_and_drops_privileges() → None, call:compile_dockerfile, call:compile_entrypoint, func:test_compile_compose_runs_as_root() → None, call:compile_compose | dep: pytest, src.services.build.manifest_compiler -- test_migration_metadata.py | Tests Alembic database migration files for correct table definitions and revision chain metadata | exp: func:test_initial_migration_defines_all_core_tables() → None, call:Path(__file__).resolve, call:spec_from_file_location, call:module_from_spec, call:spec.loader.exec_module, func:test_refresh_tokens_migration_has_expected_revision_chain() → None, call:Path(__file__).resolve, call:spec_from_file_location, call:module_from_spec, call:spec.loader.exec_module | dep: pytest, importlib.util, pathlib, pathlib.Path -- test_monitoring_models.py | Unit tests verifying creation, persistence, and querying of monitoring models (InstanceEvent and HealthCheck) with database migration compatibility. | exp: func:test_instance_event_creation(db_session) → None, call:User, call:uuid.uuid4, call:db_session.add, call:db_session.commit, call:ToolInstance, call:InstanceEvent, call:db_session.refresh, call:isinstance, func:test_health_check_creation(db_session) → None, call:User, call:uuid.uuid4, call:db_session.add, call:db_session.commit, call:ToolInstance, call:HealthCheck, call:db_session.refresh, call:isinstance, func:test_instance_event_query_by_instance(db_session) → None, call:User, call:uuid.uuid4, call:db_session.add, call:db_session.commit, call:ToolInstance, call:InstanceEvent, call:db_session.execute, call:select(InstanceEvent).where, call:result.scalar_one | dep: uuid, datetime, pytest, sqlalchemy, src.models.system.health_check, src.models.system.instance_event, src.models.tool.tool_instance, src.models.user.user -- test_notification_service.py | Unit tests for NotificationService covering CRUD operations, filtering, sorting, and ownership isolation. | exp: func:notification_service() → NotificationService, call:NotificationService, func:user_a(db_session: AsyncSession) → User, call:User, call:uuid.uuid4, call:db_session.add, call:db_session.commit, func:user_b(db_session: AsyncSession) → User, call:User, call:uuid.uuid4, call:db_session.add, call:db_session.commit, func:test_create_notification(db_session: AsyncSession, notification_service: NotificationService, user_a: User) → None, call:notification_service.create_notification, call:uuid.uuid4, func:test_list_notifications_orders_by_created_at_desc(db_session: AsyncSession, notification_service: NotificationService, user_a: User) → None, call:notification_service.create_notification, call:datetime.now, call:timedelta, call:db_session.commit, call:db_session.refresh, call:notification_service.list_notifications, func:test_list_notifications_excludes_dismissed(db_session: AsyncSession, notification_service: NotificationService, user_a: User) → None, call:notification_service.create_notification, call:notification_service.dismiss, call:notification_service.list_notifications, func:test_list_notifications_unread_only(db_session: AsyncSession, notification_service: NotificationService, user_a: User) → None, call:notification_service.create_notification, call:notification_service.mark_read, call:notification_service.list_notifications, func:test_get_unread_count(db_session: AsyncSession, notification_service: NotificationService, user_a: User) → None, call:range, call:notification_service.create_notification, call:notification_service.mark_read, call:notification_service.get_unread_count, func:test_mark_read_sets_read_at(db_session: AsyncSession, notification_service: NotificationService, user_a: User) → None, call:notification_service.create_notification, call:notification_service.mark_read, func:test_mark_all_read_affects_all_unread(db_session: AsyncSession, notification_service: NotificationService, user_a: User) → None, call:range, call:notification_service.create_notification, call:notification_service.mark_all_read, call:notification_service.get_unread_count, func:test_dismiss_sets_dismissed_at(db_session: AsyncSession, notification_service: NotificationService, user_a: User) → None, call:notification_service.create_notification, call:notification_service.dismiss, call:db_session.execute, call:select(Notification).where, call:result.scalar_one, func:test_mark_read_wrong_owner_raises(db_session: AsyncSession, notification_service: NotificationService, user_a: User, user_b: User) → None, call:notification_service.create_notification, call:pytest.raises, call:notification_service.mark_read, func:test_dismiss_wrong_owner_raises(db_session: AsyncSession, notification_service: NotificationService, user_a: User, user_b: User) → None, call:notification_service.create_notification, call:pytest.raises, call:notification_service.dismiss, func:test_list_notifications_mute_categories(db_session: AsyncSession, notification_service: NotificationService, user_a: User) → None, call:notification_service.create_notification, call:notification_service.list_notifications, func:test_get_unread_count_excludes_dismissed(db_session: AsyncSession, notification_service: NotificationService, user_a: User) → None, call:notification_service.create_notification, call:notification_service.dismiss, call:notification_service.get_unread_count, func:test_dismiss_all_affects_all_non_dismissed(db_session: AsyncSession, notification_service: NotificationService, user_a: User) → None, call:range, call:notification_service.create_notification, call:notification_service.dismiss_all, call:notification_service.list_notifications, func:test_dismiss_all_affects_only_caller(db_session: AsyncSession, notification_service: NotificationService, user_a: User, user_b: User) → None, call:range, call:notification_service.create_notification, call:notification_service.dismiss_all, call:notification_service.list_notifications, func:test_mark_all_read_affects_only_caller(db_session: AsyncSession, notification_service: NotificationService, user_a: User, user_b: User) → None, call:range, call:notification_service.create_notification, call:notification_service.mark_all_read, call:notification_service.get_unread_count | dep: uuid, datetime, pytest, sqlalchemy, sqlalchemy.ext.asyncio, src.models.system.notification, src.models.user.user, src.services.shared.notification_service, NotificationService, Notification, User, AsyncSession -- test_notifications_api_routes.py | Tests that FastAPI notification routes are declared in correct order so bulk DELETE doesn't get intercepted by parameterized route | exp: func:test_delete_notifications_route_order() → None, call:FastAPI, call:app.include_router, call:TestClient, call:client.delete | dep: fastapi, fastapi.testclient, src.api.system.notifications -- test_permission_fixer.py | Unit tests for a Docker container permission fixer that adjusts mount and SSH permissions via docker exec commands. | exp: class:TestApplyMountPermissions, class:TestRunInContainer, class:TestApplySshPermissions, class:TestCheckRootUserAvailable | dep: unittest.mock, pytest, src.services.shared.permission_fixer, subprocess -- test_readiness_probe.py | Unit tests for a Docker container readiness probe service that executes commands via docker exec with retry logic. | exp: class:TestExecuteProbe, class:TestIntegrationScenarios | dep: unittest.mock, src.services.shared.readiness_probe, subprocess -- test_ssh_keys.py | Unit tests for SSH key preparation functionality including file creation, permissions, ownership, and error handling | exp: class:TestPrepareSshKeyFiles | dep: os, pathlib, unittest.mock, pytest, src.services.shared.ssh_keys +- test_manifest_compiler.py | Unit tests for a manifest compiler that generates Dockerfiles, docker-compose files, and entrypoint scripts from configuration manifests. | exp: class:TestGetManifestHomeDir, method:test_home_directory_in_manifest_wins(self) → None, call:get_manifest_home_dir, method:test_user_name_derives_home(self) → None, call:get_manifest_home_dir, method:test_root_fallback(self) → None, call:get_manifest_home_dir, method:test_empty_home_directory_falls_back(self) → None, call:get_manifest_home_dir, class:TestCompileDockerfileHomeDirectory, method:test_env_home_and_workdir_use_home_directory(self) → None, call:compile_dockerfile, method:test_workspace_symlink_created(self) → None, call:compile_dockerfile, method:test_runtime_workspace_not_baked_into_image(self) → None, call:compile_dockerfile, method:test_runtime_working_dir_overrides_home_workdir(self) → None, call:compile_dockerfile, method:test_working_dir_expands_tilde(self) → None, call:compile_dockerfile, class:TestCompileComposeHomeDirectory, method:test_default_repo_mount_synthesized(self) → None, call:compile_compose, method:test_explicit_repo_mount_preserved(self) → None, call:compile_compose, method:test_workspace_name_substituted_in_mount_target(self) → None, call:compile_compose, method:test_working_dir_expands_home(self) → None, call:compile_compose, class:TestCompileEntrypoint, method:test_entrypoint_creates_home_and_workspace(self) → None, call:compile_entrypoint, method:test_entrypoint_removes_stale_placeholder_directory(self) → None, call:compile_entrypoint, method:test_entrypoint_uses_root_then_sudo_for_workspace_symlink(self) → None, call:compile_entrypoint, call:entrypoint.find, method:test_entrypoint_fixes_mount_owners(self) → None, call:compile_entrypoint, func:test_compile_dockerfile_creates_config_dirs_for_user() → None, call:compile_dockerfile, func:test_compile_dockerfile_no_user_does_not_create_home() → None, call:compile_dockerfile, func:test_compile_dockerfile_uses_user_npm_prefix() → None, call:compile_dockerfile, func:test_compile_dockerfile_starts_as_root_and_drops_privileges() → None, call:compile_dockerfile, call:compile_entrypoint, func:test_compile_compose_runs_as_root() → None, call:compile_compose | dep: pytest, src.services.build.manifest_compiler +- test_migration_metadata.py | Validates Alembic database migration files by dynamically loading and verifying expected table names and revision chain metadata | exp: func:test_initial_migration_defines_all_core_tables() → None, call:Path(__file__).resolve, call:spec_from_file_location, call:module_from_spec, call:spec.loader.exec_module, func:test_refresh_tokens_migration_has_expected_revision_chain() → None, call:Path(__file__).resolve, call:spec_from_file_location, call:module_from_spec, call:spec.loader.exec_module | dep: pytest, importlib.util, pathlib +- test_monitoring_models.py | Unit tests for monitoring models (InstanceEvent and HealthCheck) verifying creation, persistence, and querying capabilities with database migration compatibility. | exp: func:test_instance_event_creation(db_session) → None, call:User, call:uuid.uuid4, call:db_session.add, call:db_session.commit, call:ToolInstance, call:InstanceEvent, call:db_session.refresh, call:isinstance, func:test_health_check_creation(db_session) → None, call:User, call:uuid.uuid4, call:db_session.add, call:db_session.commit, call:ToolInstance, call:HealthCheck, call:db_session.refresh, call:isinstance, func:test_instance_event_query_by_instance(db_session) → None, call:User, call:uuid.uuid4, call:db_session.add, call:db_session.commit, call:ToolInstance, call:InstanceEvent, call:db_session.execute, call:select(InstanceEvent).where, call:result.scalar_one | dep: uuid, datetime, pytest, sqlalchemy, src.models.system.health_check, src.models.system.instance_event, src.models.tool.tool_instance, src.models.user.user +- test_notification_service.py | Unit tests for NotificationService covering CRUD operations, filtering, pagination, and ownership validation for user notifications. | exp: func:notification_service() → NotificationService, call:NotificationService, func:user_a(db_session: AsyncSession) → User, call:User, call:uuid.uuid4, call:db_session.add, call:db_session.commit, func:user_b(db_session: AsyncSession) → User, call:User, call:uuid.uuid4, call:db_session.add, call:db_session.commit, func:test_create_notification(db_session: AsyncSession, notification_service: NotificationService, user_a: User) → None, call:notification_service.create_notification, call:uuid.uuid4, func:test_list_notifications_orders_by_created_at_desc(db_session: AsyncSession, notification_service: NotificationService, user_a: User) → None, call:notification_service.create_notification, call:datetime.now, call:timedelta, call:db_session.commit, call:db_session.refresh, call:notification_service.list_notifications, func:test_list_notifications_excludes_dismissed(db_session: AsyncSession, notification_service: NotificationService, user_a: User) → None, call:notification_service.create_notification, call:notification_service.dismiss, call:notification_service.list_notifications, func:test_list_notifications_unread_only(db_session: AsyncSession, notification_service: NotificationService, user_a: User) → None, call:notification_service.create_notification, call:notification_service.mark_read, call:notification_service.list_notifications, func:test_get_unread_count(db_session: AsyncSession, notification_service: NotificationService, user_a: User) → None, call:range, call:notification_service.create_notification, call:notification_service.mark_read, call:notification_service.get_unread_count, func:test_mark_read_sets_read_at(db_session: AsyncSession, notification_service: NotificationService, user_a: User) → None, call:notification_service.create_notification, call:notification_service.mark_read, func:test_mark_all_read_affects_all_unread(db_session: AsyncSession, notification_service: NotificationService, user_a: User) → None, call:range, call:notification_service.create_notification, call:notification_service.mark_all_read, call:notification_service.get_unread_count, func:test_dismiss_sets_dismissed_at(db_session: AsyncSession, notification_service: NotificationService, user_a: User) → None, call:notification_service.create_notification, call:notification_service.dismiss, call:db_session.execute, call:select(Notification).where, call:result.scalar_one, func:test_mark_read_wrong_owner_raises(db_session: AsyncSession, notification_service: NotificationService, user_a: User, user_b: User) → None, call:notification_service.create_notification, call:pytest.raises, call:notification_service.mark_read, func:test_dismiss_wrong_owner_raises(db_session: AsyncSession, notification_service: NotificationService, user_a: User, user_b: User) → None, call:notification_service.create_notification, call:pytest.raises, call:notification_service.dismiss, func:test_list_notifications_mute_categories(db_session: AsyncSession, notification_service: NotificationService, user_a: User) → None, call:notification_service.create_notification, call:notification_service.list_notifications, func:test_get_unread_count_excludes_dismissed(db_session: AsyncSession, notification_service: NotificationService, user_a: User) → None, call:notification_service.create_notification, call:notification_service.dismiss, call:notification_service.get_unread_count, func:test_dismiss_all_affects_all_non_dismissed(db_session: AsyncSession, notification_service: NotificationService, user_a: User) → None, call:range, call:notification_service.create_notification, call:notification_service.dismiss_all, call:notification_service.list_notifications, func:test_dismiss_all_affects_only_caller(db_session: AsyncSession, notification_service: NotificationService, user_a: User, user_b: User) → None, call:range, call:notification_service.create_notification, call:notification_service.dismiss_all, call:notification_service.list_notifications, func:test_mark_all_read_affects_only_caller(db_session: AsyncSession, notification_service: NotificationService, user_a: User, user_b: User) → None, call:range, call:notification_service.create_notification, call:notification_service.mark_all_read, call:notification_service.get_unread_count | dep: uuid, datetime, pytest, sqlalchemy, sqlalchemy.ext.asyncio, src.models.system.notification, src.models.user.user, src.services.shared.notification_service +- test_notifications_api_routes.py | Tests that FastAPI notification routes are ordered correctly so bulk DELETE /notifications matches before parameterized DELETE /notifications/{id} | exp: func:test_delete_notifications_route_order() → None, call:FastAPI, call:app.include_router, call:TestClient, call:client.delete | dep: fastapi, fastapi.testclient, src.api.system.notifications +- test_permission_fixer.py | Unit tests for a Docker container permission fixer service that adjusts mount and SSH permissions via container exec commands. | exp: class:TestApplyMountPermissions, class:TestRunInContainer, class:TestApplySshPermissions, class:TestCheckRootUserAvailable | dep: unittest.mock, pytest, src.services.shared.permission_fixer, subprocess +- test_readiness_probe.py | Unit tests for a Docker container readiness probe service that executes commands with retry logic and timeout handling | exp: class:TestExecuteProbe, class:TestIntegrationScenarios | dep: unittest.mock, src.services.shared.readiness_probe, subprocess +- test_ssh_keys.py | Unit tests for SSH key preparation functionality including file creation, permissions, ownership, and error handling. | exp: class:TestPrepareSshKeyFiles | dep: os, pathlib, unittest.mock, pytest, src.services.shared.ssh_keys ## arch -Comprehensive unit test suite using mocked dependencies to test business logic in isolation, covering database migrations, configuration, Docker operations, Git workflows, file services, event handling, health monitoring, and SSH/security utilities. +Standard Python unittest/pytest pattern with isolated test modules per service, heavy use of mocking for external dependencies (Docker, Git, subprocess), and tests covering security constraints, error handling, and state transitions across asynchronous and synchronous operations. ## tags -test, url, call:notification, git, call:, home, merge, call:db +test, url, call:, git, call:notification, home, mounts, mount ## symbols - TestMergeFunctions - TestResolveProfile @@ -47,7 +47,5 @@ test, url, call:notification, git, call:, home, merge, call:db read: __init__.py, test_alembic_migrations.py, test_config.py - change unit config read: test_config.py, test_config_profile_resolver.py -- explore unit subdirectories - index: apps/api/tests/unit/.ruff_cache/.pi-map.index.md ## dirty - diff --git a/apps/api/uploads/.pi-map.index.md b/apps/api/uploads/.pi-map.index.md index 1452095..778cc30 100644 --- a/apps/api/uploads/.pi-map.index.md +++ b/apps/api/uploads/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/uploads ## role -Handles file upload processing, storage, and retrieval for the API application. +Handles file upload processing and storage for the API application. ## parent index: apps/api/.pi-map.index.md map: apps/api/.pi-map.md diff --git a/apps/api/uploads/.pi-map.md b/apps/api/uploads/.pi-map.md index 971e794..38004c3 100644 --- a/apps/api/uploads/.pi-map.md +++ b/apps/api/uploads/.pi-map.md @@ -4,10 +4,10 @@ dir: apps/api/uploads index: apps/api/uploads/.pi-map.index.md ## role -Handles file upload processing, storage, and retrieval for the API application. +Handles file upload processing and storage for the API application. ## files ## arch -Express.js middleware pattern with multipart form parsing, likely using Multer or similar for file handling, with storage abstraction for local/cloud backends. +Likely follows a modular handler pattern with middleware for multipart parsing, file validation, and cloud storage or local filesystem abstraction. ## tags - ## symbols diff --git a/apps/api/uploads/avatars/.pi-map.index.md b/apps/api/uploads/avatars/.pi-map.index.md index 4842e5c..d4188d1 100644 --- a/apps/api/uploads/avatars/.pi-map.index.md +++ b/apps/api/uploads/avatars/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/api/uploads/avatars ## role -Storage directory for user avatar image files uploaded through the API application. +Storage directory for user avatar images uploaded through the API. ## parent index: apps/api/uploads/.pi-map.index.md map: apps/api/uploads/.pi-map.md diff --git a/apps/api/uploads/avatars/.pi-map.md b/apps/api/uploads/avatars/.pi-map.md index 98fbeac..7306880 100644 --- a/apps/api/uploads/avatars/.pi-map.md +++ b/apps/api/uploads/avatars/.pi-map.md @@ -4,14 +4,14 @@ dir: apps/api/uploads/avatars index: apps/api/uploads/avatars/.pi-map.index.md ## role -Storage directory for user avatar image files uploaded through the API application. +Storage directory for user avatar images uploaded through the API. ## files - 30d2810a-cb00-4065-8e5d-c7d32a0b55c9.png | Binary file - b342b640-d3c1-488d-bdba-0e2890d6c363.png | Binary file - da1c3121-20d7-400c-8c94-507a9d890810.png | Binary file - ee9fdd89-0dcc-4f46-9ad8-01f4ff93720d.png | Binary file ## arch -Simple static file storage using UUID-named PNG files in a flat directory structure, serving as a persistent blob store without database indexing or subdirectory organization. +Simple static file storage using UUID-named PNG files in a flat directory structure, no application code or architectural patterns present. ## tags binary, 30d2810a, cb00, 4065, 8e5d, c7d32a0b55c9, b342b640, d3c1 ## symbols diff --git a/apps/web/.pi-map.index.md b/apps/web/.pi-map.index.md index 6a5a4ae..8f87851 100644 --- a/apps/web/.pi-map.index.md +++ b/apps/web/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/web ## role -Frontend web application providing the browser-based user interface for the project, built with React/Vite and served via nginx. +Frontend web application serving as the main user interface for the "Headquarter" project, built with React and Vite. ## parent index: apps/.pi-map.index.md map: apps/.pi-map.md diff --git a/apps/web/.pi-map.md b/apps/web/.pi-map.md index 68c2411..bf45ec8 100644 --- a/apps/web/.pi-map.md +++ b/apps/web/.pi-map.md @@ -4,21 +4,21 @@ dir: apps/web index: apps/web/.pi-map.index.md ## role -Frontend web application providing the browser-based user interface for the project, built with React/Vite and served via nginx. +Frontend web application serving as the main user interface for the "Headquarter" project, built with React and Vite. ## files -- .env.example | Template file defining example environment variables for frontend API and application URL configuration -- .eslintrc.cjs | Configures ESLint for a TypeScript browser project with modern ECMAScript module support | dep: @typescript-eslint/parser, @typescript-eslint/eslint-plugin, eslint -- Dockerfile | Multi-stage Docker build for a Node.js/Vite frontend application served by nginx with non-root user security | dep: node:20-alpine, nginx:alpine, npm, wget -- index.html | Standard HTML entry point for a React/Vite application that loads a TypeScript root component | dep: Google Fonts (Inter, IBM Plex Mono), main.tsx entry module -- nginx.conf | Configures nginx as a web server for a single-page application with optimized caching, compression, and client-side routing support. | dep: nginx -- package-lock.json | Records exact dependency versions and resolved URLs for reproducible npm package installation in the "headquarter-web" React project. | dep: npm, @phosphor-icons/react, @types/prismjs, axios, prismjs, react, react-dom, react-router-dom, react-simple-code-editor, tailwindcss, xterm, xterm-addon-fit, xterm-addon-web-links, xterm-addon-webgl, @testing-library/jest-dom, @testing-library/react, @types/react, @types/react-dom, @typescript-eslint/eslint-plugin, @typescript-eslint/parser, @vitejs/plugin-react, autoprefixer, eslint, jsdom, postcss, typescript, vite, vitest, @babel/core, @babel/runtime -- package.json | Configuration file for a React-based web application named "headquarter-web" built with Vite and TypeScript, featuring code editing, terminal, and routing capabilities. | dep: react, react-dom, react-router-dom, vite, typescript, tailwindcss, axios, prismjs, xterm, @phosphor-icons/react, react-simple-code-editor, vitest, eslint -- tsconfig.json | TypeScript configuration file for a React project using Vite with modern ES2020 target and bundler module resolution | dep: typescript, react, vite -- vite.config.ts | Configures Vite build tool for a React project with custom dev server port and Vitest test settings. | dep: vite, @vitejs/plugin-react +- .env.example | Template file showing required environment variables for a Vite-based frontend application | dep: Vite +- .eslintrc.cjs | Configures ESLint for a TypeScript browser project with modern ES2022 module support | dep: eslint, @typescript-eslint/parser, @typescript-eslint/eslint-plugin +- Dockerfile | Multi-stage Docker build for a Vite/Node.js frontend application, compiling static assets and serving them via nginx as a non-root user | dep: node:20-alpine, nginx:alpine, npm, wget +- index.html | Serves as the entry point HTML file for a React application named "Headquarter" that loads a TypeScript module and uses Google Fonts. | dep: Google Fonts (Inter, IBM Plex Mono), React (implied by root div and main.tsx) +- nginx.conf | Configures Nginx as a web server for a single-page application with gzip compression, client-side routing support, cache control for static assets, and a health check endpoint. | dep: nginx +- package-lock.json | Auto-generated dependency lock file that records exact versions and resolved URLs of all npm packages for reproducible installs in the "headquarter-web" React web application. | dep: npm, Node.js, React, Vite, TailwindCSS, xterm, PrismJS, axios, react-router-dom, TypeScript, ESLint, Vitest, @testing-library/react, @phosphor-icons/react, react-simple-code-editor, jsdom, postcss, autoprefixer +- package.json | Defines a React-based web application project named "headquarter-web" with configuration for building, development, testing, and linting using Vite and TypeScript. | dep: react, react-dom, react-router-dom, axios, tailwindcss, prismjs, xterm, @phosphor-icons/react, react-simple-code-editor, vite, typescript, vitest, eslint, @testing-library/react +- tsconfig.json | Configures TypeScript compiler settings for a modern React project using Vite with ES modules | dep: TypeScript, Vite, React, DOM +- vite.config.ts | Configures Vite build tool for a React project with custom dev server port and testing setup | dep: vite, @vitejs/plugin-react ## arch -Modern SPA architecture using Vite for bundling, TypeScript for type safety, React for UI components, with containerized nginx deployment and environment-driven configuration. +Modern SPA architecture using React with TypeScript, Vite for build tooling, Docker multi-stage builds with nginx static serving, and environment-based configuration. ## tags -react, eslint, vite, typescript, dom, application, nginx, web +react, vite, eslint, typescript, application, nginx, web, configures ## symbols - ## workflows diff --git a/apps/web/public/.pi-map.index.md b/apps/web/public/.pi-map.index.md index d4bd623..4332b4a 100644 --- a/apps/web/public/.pi-map.index.md +++ b/apps/web/public/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/web/public ## role -Static frontend assets serving a standalone HTML preview/demo of the workspace dashboard UI without requiring the full application runtime. +Static HTML mockup/prototype for demonstrating the Headquarter dashboard UI without requiring the full application runtime ## parent index: apps/web/.pi-map.index.md map: apps/web/.pi-map.md diff --git a/apps/web/public/.pi-map.md b/apps/web/public/.pi-map.md index 5d05c21..df349a4 100644 --- a/apps/web/public/.pi-map.md +++ b/apps/web/public/.pi-map.md @@ -4,13 +4,13 @@ dir: apps/web/public index: apps/web/public/.pi-map.index.md ## role -Static frontend assets serving a standalone HTML preview/demo of the workspace dashboard UI without requiring the full application runtime. +Static HTML mockup/prototype for demonstrating the Headquarter dashboard UI without requiring the full application runtime ## files -- preview.html | Static HTML/CSS UI mockup for a "Headquarter" workspace dashboard with interactive page preview switching between Home, Projects, and Settings views. | dep: Google Fonts (Inter, IBM Plex Mono) +- preview.html | A static HTML UI preview/mockup for a "Headquarter" web application dashboard showing home and settings page layouts with a page switcher for demonstration | dep: Google Fonts (Inter, IBM Plex Mono) ## arch -Self-contained static HTML prototype with vanilla CSS and JavaScript, using a simple view-switching pattern to simulate multi-page SPA navigation within a single file. +Simple static HTML/CSS/JS prototype with client-side page switching via JavaScript, using inline styles and vanilla DOM manipulation for rapid UI demonstration ## tags -preview, static, html, css, mockup, headquarter, workspace, dashboard +preview, page, static, html, mockup, headquarter, web, application ## symbols - ## workflows diff --git a/apps/web/src/.pi-map.index.md b/apps/web/src/.pi-map.index.md index 4ebffb3..643ee31 100644 --- a/apps/web/src/.pi-map.index.md +++ b/apps/web/src/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/web/src ## role -Provides the core web application entry point, routing infrastructure, and shared domain type definitions for a React-based frontend. +Frontend web application entry point and routing layer for a React-based collaborative development platform. ## parent index: apps/web/.pi-map.index.md map: apps/web/.pi-map.md diff --git a/apps/web/src/.pi-map.md b/apps/web/src/.pi-map.md index 91f9308..a3a0061 100644 --- a/apps/web/src/.pi-map.md +++ b/apps/web/src/.pi-map.md @@ -4,15 +4,15 @@ dir: apps/web/src index: apps/web/src/.pi-map.index.md ## role -Provides the core web application entry point, routing infrastructure, and shared domain type definitions for a React-based frontend. +Frontend web application entry point and routing layer for a React-based collaborative development platform. ## files -- main.tsx | Bootstraps a React application with routing, authentication, and session management providers. | dep: react, react-dom/client, react-router-dom, ./router, ./state/auth, ./state/sessions, ./styles/tokens.css, ./styles/global.css, ./styles/utilities.css, ./styles/syntax-highlight.css, ./styles/pages/git-history.css, ./styles/pages/projects.css, ./styles/pages/sessions.css, ./styles/pages/ssh-keys.css, ./styles/pages/workspace-detail.css, ./styles/pages/workspaces.css, react-dom -- router.tsx | Defines the React Router configuration for a web application with protected routes, nested layouts, and redirects. | exp: AppRouter | dep: react-router-dom, ./components/app-shell, ./components/protected-route, ./pages/DashboardPage, ./pages/PlaceholderPage, ./pages/ProfilePage, ./pages/ProjectsPage, ./pages/GitRepositoriesPage, ./pages/GitHistoryPage, ./pages/ProjectSettingsPage, ./pages/SettingsPage, ./pages/TerminalPage, ./pages/ToolWorkshopPage, ./pages/SshKeysPage, ./pages/ConfigProfilesPage, ./pages/SessionsPage, ./pages/WorkspacesPage, ./pages/WorkspaceDetailPage -- types.ts | Defines TypeScript type definitions for user sessions, projects, repositories, and workspaces in an application. | exp: SessionUser, SessionPayload, Project, WorkspaceSummary, RepositorySummary, ProjectWithRepos +- main.tsx | Entry point that bootstraps a React application with routing, authentication, and session management providers. | dep: react, react-dom/client, react-router-dom, ./router, ./state/auth, ./state/sessions, ./styles/tokens.css, ./styles/global.css, ./styles/utilities.css, ./styles/syntax-highlight.css, ./styles/pages/git-history.css, ./styles/pages/projects.css, ./styles/pages/sessions.css, ./styles/pages/ssh-keys.css, ./styles/pages/workspace-detail.css, ./styles/pages/workspaces.css, react-dom +- router.tsx | Defines the client-side routing configuration for a React application using nested routes with authentication protection and redirects. | exp: AppRouter | dep: react-router-dom, ./components/app-shell, ./components/protected-route, ./pages/DashboardPage, ./pages/PlaceholderPage, ./pages/ProfilePage, ./pages/ProjectsPage, ./pages/GitRepositoriesPage, ./pages/GitHistoryPage, ./pages/ProjectSettingsPage, ./pages/SettingsPage, ./pages/TerminalPage, ./pages/ToolWorkshopPage, ./pages/SshKeysPage, ./pages/ConfigProfilesPage, ./pages/SessionsPage, ./pages/WorkspacesPage, ./pages/WorkspaceDetailPage +- types.ts | Defines TypeScript type declarations for session users, projects, workspaces, and repositories in an application. | exp: SessionUser, SessionPayload, Project, WorkspaceSummary, RepositorySummary, ProjectWithRepos ## arch -Implements a modular React SPA architecture using React Router v6 with nested route layouts, protected route guards via authentication/session providers, and centralized TypeScript domain modeling for cross-cutting concerns. +Modular React SPA with provider-based dependency injection, nested route guards for authentication/authorization, and centralized TypeScript type definitions. ## tags -pages, styles, css, router, react, session, dom, project +pages, styles, css, react, router, session, dom, project ## symbols - AppRouter - SessionUser diff --git a/apps/web/src/api/.pi-map.index.md b/apps/web/src/api/.pi-map.index.md index cba9650..6e14927 100644 --- a/apps/web/src/api/.pi-map.index.md +++ b/apps/web/src/api/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/web/src/api ## role -Provides typed HTTP API client modules for all backend communication in the web application, organized by domain entity. +Provides typed HTTP API client functions for all backend operations across the web frontend, organized by domain entity with centralized Axios configuration. ## parent index: apps/web/src/.pi-map.index.md map: apps/web/src/.pi-map.md diff --git a/apps/web/src/api/.pi-map.md b/apps/web/src/api/.pi-map.md index d58710d..136fef3 100644 --- a/apps/web/src/api/.pi-map.md +++ b/apps/web/src/api/.pi-map.md @@ -4,29 +4,29 @@ dir: apps/web/src/api index: apps/web/src/api/.pi-map.index.md ## role -Provides typed HTTP API client modules for all backend communication in the web application, organized by domain entity. +Provides typed HTTP API client functions for all backend operations across the web frontend, organized by domain entity with centralized Axios configuration. ## files -- client.ts | Configures an Axios HTTP client with automatic 401 redirect handling and exponential backoff retry logic for transient network/server errors. | exp: apiClient, shouldSkipAuthRedirect | dep: axios -- config-profiles.ts | Defines TypeScript interfaces and API client functions for managing configuration profiles with environment variables, mounts, git mounts, file inclusions, and profile resolution. | exp: ConfigProfile, ConfigProfileMount, GitMountMapping, GitMount, ConfigProfileInclude, ResolvedProfile, ResolvedMount, CreateConfigProfileRequest, UpdateConfigProfileRequest, UpdateIncludesRequest, listConfigProfiles, getConfigProfile, createConfigProfile, updateConfigProfile, deleteConfigProfile, updateProfileIncludes, previewConfigProfile, resolveDefaultProfile, ValidateGitUrlResponse, validateGitUrl | dep: ./client, client -- dashboard.ts | Defines a TypeScript type and API function to fetch dashboard summary data from a backend endpoint. | exp: DashboardSummary, getDashboardSummary | dep: ./client -- events.ts | Provides utilities for establishing a Server-Sent Events connection and checking the event stream endpoint status. | exp: func:createEventSource() → EventSource, func:probeEventStreamStatus() → Promise, call:setTimeout, call:controller.abort, call:fetch, call:clearTimeout -- git-repositories.ts | Provides a TypeScript API client module for managing Git repositories, branches, commits, and version control operations via HTTP endpoints. | exp: GitRepository, GitRepositoryCreate, URLParseResult, Branch, BranchesResponse, CommitHistoryEntry, CommitHistoryResponse, CommitDetail, GitStatus, CommitResponse, MergeResponse, func:parseGitUrl(url: string) → Promise, call:apiClient.post, func:listRepositories(projectId: string) → Promise, func:listAllUserRepositories() → Promise, func:createRepository(projectId: string, data: GitRepositoryCreate) → Promise, call:apiClient.post, func:createExternalRepository(data: GitRepositoryCreate) → Promise, func:deleteRepository(projectId: string, repoId: string) → Promise, call:apiClient.delete, func:updateRepositorySshKey(projectId: string, repoId: string, sshKeyId: string | null) → Promise, call:apiClient.patch, func:listRepositoryBranches(projectId: string, repoId: string) → Promise, call:apiClient.get, func:getRepositoryHistory(projectId: string, repoId: string, branch: string, limit: number) → Promise, call:searchParams.set, call:String, call:searchParams.toString, call:apiClient.get, func:getCommitDetail(projectId: string, repoId: string, commitHash: string) → Promise, call:apiClient.get, func:getRepositoryStatus(projectId: string, repoId: string) → Promise, call:apiClient.get, func:createBranch(projectId: string, repoId: string, name: string, baseBranch: string) → Promise<{ message: string; branch: string }>, call:apiClient.post, func:deleteBranch(projectId: string, repoId: string, branchName: string, force: boolean) → Promise<{ message: string }>, call:apiClient.delete, func:checkoutBranch(projectId: string, repoId: string, branch: string) → Promise<{ message: string; branch: string }>, call:apiClient.post, func:commitChanges(projectId: string, repoId: string, message: string, files: string[]) → Promise, call:apiClient.post, func:fetchRepository(projectId: string, repoId: string) → Promise<{ message: string }>, call:apiClient.post, func:pullRepository(projectId: string, repoId: string, branch: string) → Promise<{ message: string }>, call:apiClient.post, func:pushRepository(projectId: string, repoId: string, branch: string) → Promise<{ message: string }>, call:apiClient.post, func:mergeBranches(projectId: string, repoId: string, sourceBranch: string, targetBranch: string, message: string) → Promise, call:apiClient.post | dep: ./client, apiClient -- notifications.ts | Defines TypeScript interfaces and API client functions for fetching, reading, dismissing, and clearing user notifications. | exp: NotificationItem, NotificationListResponse, UnreadCountResponse, MarkAllReadResponse, ClearAllResponse, getNotifications, getUnreadCount, markNotificationRead, markAllNotificationsRead, dismissNotification, clearAllNotifications | dep: ./client, apiClient -- profile.ts | Provides API functions for fetching, updating, and uploading avatar for the current user's profile. | exp: UserProfile, ProfileUpdatePayload, getProfile, updateProfile, uploadAvatar | dep: ./client, ../types, apiClient, SessionUser -- projects.ts | Provides typed API functions for CRUD operations on projects via HTTP endpoints. | exp: ProjectCreateInput, ProjectUpdateInput, SetDefaultSSHKeyInput, listProjects, createProject, updateProject, deleteProject, setDefaultSSHKey | dep: ./client, ../types -- sessions.ts | Provides TypeScript API functions and interfaces for managing remote tool instances and sessions via HTTP requests. | exp: ToolInstance, Session, InstanceHealth, func:listInstances(projectId: string, repoId: string) → Promise, call:apiClient.get, func:createInstance(projectId: string, repoId: string, toolTypeId: string, displayName: string, workspaceId: string, configProfileId: string, sshKeyIds: string[]) → Promise, call:apiClient.post, func:startInstance(projectId: string, repoId: string, instanceId: string, configProfileId: string, sshKeyIds: string[], retries) → Promise<{ status: string; url?: string }>, call:apiClient.post, call:setTimeout, call:startInstance, raise:error, func:stopInstance(projectId: string, repoId: string, instanceId: string) → Promise<{ status: string }>, call:apiClient.post, func:restartInstance(projectId: string, repoId: string, instanceId: string, configProfileId: string, sshKeyIds: string[], retries) → Promise<{ status: string; url?: string }>, call:apiClient.post, call:setTimeout, call:restartInstance, raise:error, func:deleteInstance(projectId: string, repoId: string, instanceId: string, force: boolean) → Promise, call:apiClient.delete, func:getInstance(projectId: string, repoId: string, instanceId: string) → Promise, call:apiClient.get, func:getUserSessions() → Promise, call:apiClient.get, func:checkInstanceHealth(projectId: string, repoId: string, instanceId: string) → Promise, call:apiClient.get, func:renameInstance(projectId: string, repoId: string, instanceId: string, displayName: string) → Promise<{ id: string; name: string; display_name: string }>, call:apiClient.patch, func:recreateInstanceTunnel(projectId: string, repoId: string, instanceId: string) → Promise<{ status: string; url?: string }>, call:apiClient.post | dep: axios, ./client -- settings.ts | Defines user configuration interfaces and API functions for fetching and updating user settings via HTTP requests. | exp: UserConfig, UserConfigUpdate, getUserConfig, updateUserConfig | dep: ./client, apiClient -- ssh-keys.ts | Provides a TypeScript API client for SSH key management operations including listing, creating, deleting, and cryptographic signing/verification. | exp: SSHKey, SSHKeyCreate, SignPayloadRequest, SignatureResponse, VerifySignatureRequest, VerifySignatureResponse, func:listSSHKeys() → Promise, func:createSSHKey(data: SSHKeyCreate) → Promise, func:deleteSSHKey(keyId: string) → Promise, call:apiClient.delete, func:signPayload(keyId: string, data: SignPayloadRequest) → Promise, func:verifySignature(keyId: string, data: VerifySignatureRequest) → Promise | dep: ./client, apiClient -- terminal.ts | Provides a TypeScript API client module for managing remote terminal sessions (CRUD operations) on cloud instances via REST endpoints. | exp: TerminalSession, TerminalSessionListResponse, TerminalSessionCreateRequest, TerminalSessionCreateResponse, func:listTerminalSessions(instanceId: string) → Promise, call:apiClient.get, func:createTerminalSession(instanceId: string, name: string) → Promise, call:apiClient.post, func:closeTerminalSession(instanceId: string, sessionId: string) → Promise<{ status: string; session_id: string }>, call:apiClient.delete, func:resetTerminalSession(instanceId: string, sessionId: string) → Promise<{ id: string; name: string; status: string }>, call:apiClient.post, func:renameTerminalSession(instanceId: string, sessionId: string, name: string) → Promise<{ id: string; name: string }>, call:apiClient.post | dep: ./client, client -- tool-definitions.ts | Defines TypeScript interfaces and API client functions for CRUD operations and compilation of tool definitions in a containerized tool management system. | exp: ToolDefinitionManifest, CreateToolDefinitionRequest, UpdateToolDefinitionRequest, CompileResult, listToolDefinitions, getToolDefinition, createToolDefinition, updateToolDefinition, deleteToolDefinition, compileToolDefinition | dep: ./client, apiClient -- tool-types.test.ts | Unit tests for tool type API operations including CRUD, validation, and field handling for dockerfile and compose definitions. | dep: vitest, ../api/tool-types, ../api/client +- client.ts | Configures an Axios HTTP client with authentication redirect handling and automatic retry logic for transient network/server errors | exp: apiClient, shouldSkipAuthRedirect | dep: axios +- config-profiles.ts | Defines TypeScript interfaces and API client functions for managing configuration profiles with environment variables, mounts, git mounts, files, and profile inheritance. | exp: ConfigProfile, ConfigProfileMount, GitMountMapping, GitMount, ConfigProfileInclude, ResolvedProfile, ResolvedMount, CreateConfigProfileRequest, UpdateConfigProfileRequest, UpdateIncludesRequest, listConfigProfiles, getConfigProfile, createConfigProfile, updateConfigProfile, deleteConfigProfile, updateProfileIncludes, previewConfigProfile, resolveDefaultProfile, ValidateGitUrlResponse, validateGitUrl | dep: ./client, apiClient +- dashboard.ts | Defines a TypeScript type and API function to fetch dashboard summary data | exp: DashboardSummary, getDashboardSummary | dep: ./client +- events.ts | Provides utilities for connecting to and checking the status of a server-sent events stream endpoint | exp: func:createEventSource() → EventSource, func:probeEventStreamStatus() → Promise, call:setTimeout, call:controller.abort, call:fetch, call:clearTimeout +- git-repositories.ts | Defines TypeScript interfaces and API client functions for Git repository management, branch operations, and version control actions (commit, push, pull, merge, etc.) | exp: GitRepository, GitRepositoryCreate, URLParseResult, Branch, BranchesResponse, CommitHistoryEntry, CommitHistoryResponse, CommitDetail, GitStatus, CommitResponse, MergeResponse, func:parseGitUrl(url: string) → Promise, call:apiClient.post, func:listRepositories(projectId: string) → Promise, func:listAllUserRepositories() → Promise, func:createRepository(projectId: string, data: GitRepositoryCreate) → Promise, call:apiClient.post, func:createExternalRepository(data: GitRepositoryCreate) → Promise, func:deleteRepository(projectId: string, repoId: string) → Promise, call:apiClient.delete, func:updateRepositorySshKey(projectId: string, repoId: string, sshKeyId: string | null) → Promise, call:apiClient.patch, func:listRepositoryBranches(projectId: string, repoId: string) → Promise, call:apiClient.get, func:getRepositoryHistory(projectId: string, repoId: string, branch: string, limit: number) → Promise, call:searchParams.set, call:String, call:searchParams.toString, call:apiClient.get, func:getCommitDetail(projectId: string, repoId: string, commitHash: string) → Promise, call:apiClient.get, func:getRepositoryStatus(projectId: string, repoId: string) → Promise, call:apiClient.get, func:createBranch(projectId: string, repoId: string, name: string, baseBranch: string) → Promise<{ message: string; branch: string }>, call:apiClient.post, func:deleteBranch(projectId: string, repoId: string, branchName: string, force: boolean) → Promise<{ message: string }>, call:apiClient.delete, func:checkoutBranch(projectId: string, repoId: string, branch: string) → Promise<{ message: string; branch: string }>, call:apiClient.post, func:commitChanges(projectId: string, repoId: string, message: string, files: string[]) → Promise, call:apiClient.post, func:fetchRepository(projectId: string, repoId: string) → Promise<{ message: string }>, call:apiClient.post, func:pullRepository(projectId: string, repoId: string, branch: string) → Promise<{ message: string }>, call:apiClient.post, func:pushRepository(projectId: string, repoId: string, branch: string) → Promise<{ message: string }>, call:apiClient.post, func:mergeBranches(projectId: string, repoId: string, sourceBranch: string, targetBranch: string, message: string) → Promise, call:apiClient.post | dep: ./client, apiClient +- notifications.ts | Defines TypeScript interfaces and API functions for fetching, reading, dismissing, and clearing user notifications. | exp: NotificationItem, NotificationListResponse, UnreadCountResponse, MarkAllReadResponse, ClearAllResponse, getNotifications, getUnreadCount, markNotificationRead, markAllNotificationsRead, dismissNotification, clearAllNotifications | dep: ./client, apiClient +- profile.ts | Provides API functions to fetch, update, and upload an avatar for the current user's profile. | exp: UserProfile, ProfileUpdatePayload, getProfile, updateProfile, uploadAvatar | dep: ./client, ../types, apiClient, SessionUser +- projects.ts | Defines API client functions for CRUD operations on projects and setting default SSH keys. | exp: ProjectCreateInput, ProjectUpdateInput, SetDefaultSSHKeyInput, listProjects, createProject, updateProject, deleteProject, setDefaultSSHKey | dep: ./client, ../types, apiClient, Project, ProjectWithRepos +- sessions.ts | Provides API client functions for managing tool instances and user sessions in a development environment platform. | exp: ToolInstance, Session, InstanceHealth, func:listInstances(projectId: string, repoId: string) → Promise, call:apiClient.get, func:createInstance(projectId: string, repoId: string, toolTypeId: string, displayName: string, workspaceId: string, configProfileId: string, sshKeyIds: string[]) → Promise, call:apiClient.post, func:startInstance(projectId: string, repoId: string, instanceId: string, configProfileId: string, sshKeyIds: string[], retries) → Promise<{ status: string; url?: string }>, call:apiClient.post, call:setTimeout, call:startInstance, raise:error, func:stopInstance(projectId: string, repoId: string, instanceId: string) → Promise<{ status: string }>, call:apiClient.post, func:restartInstance(projectId: string, repoId: string, instanceId: string, configProfileId: string, sshKeyIds: string[], retries) → Promise<{ status: string; url?: string }>, call:apiClient.post, call:setTimeout, call:restartInstance, raise:error, func:deleteInstance(projectId: string, repoId: string, instanceId: string, force: boolean) → Promise, call:apiClient.delete, func:getInstance(projectId: string, repoId: string, instanceId: string) → Promise, call:apiClient.get, func:getUserSessions() → Promise, call:apiClient.get, func:checkInstanceHealth(projectId: string, repoId: string, instanceId: string) → Promise, call:apiClient.get, func:renameInstance(projectId: string, repoId: string, instanceId: string, displayName: string) → Promise<{ id: string; name: string; display_name: string }>, call:apiClient.patch, func:recreateInstanceTunnel(projectId: string, repoId: string, instanceId: string) → Promise<{ status: string; url?: string }>, call:apiClient.post | dep: axios, ./client +- settings.ts | Defines user configuration types and API functions for fetching and updating user settings via HTTP requests. | exp: UserConfig, UserConfigUpdate, getUserConfig, updateUserConfig | dep: ./client +- ssh-keys.ts | Provides a TypeScript API client module for SSH key management operations including listing, creating, deleting, and cryptographic signing/verification. | exp: SSHKey, SSHKeyCreate, SignPayloadRequest, SignatureResponse, VerifySignatureRequest, VerifySignatureResponse, func:listSSHKeys() → Promise, func:createSSHKey(data: SSHKeyCreate) → Promise, func:deleteSSHKey(keyId: string) → Promise, call:apiClient.delete, func:signPayload(keyId: string, data: SignPayloadRequest) → Promise, func:verifySignature(keyId: string, data: VerifySignatureRequest) → Promise | dep: ./client, apiClient +- terminal.ts | Provides a TypeScript API client for managing terminal sessions on remote instances via HTTP requests. | exp: TerminalSession, TerminalSessionListResponse, TerminalSessionCreateRequest, TerminalSessionCreateResponse, func:listTerminalSessions(instanceId: string) → Promise, call:apiClient.get, func:createTerminalSession(instanceId: string, name: string) → Promise, call:apiClient.post, func:closeTerminalSession(instanceId: string, sessionId: string) → Promise<{ status: string; session_id: string }>, call:apiClient.delete, func:resetTerminalSession(instanceId: string, sessionId: string) → Promise<{ id: string; name: string; status: string }>, call:apiClient.post, func:renameTerminalSession(instanceId: string, sessionId: string, name: string) → Promise<{ id: string; name: string }>, call:apiClient.post | dep: ./client, apiClient +- tool-definitions.ts | Defines TypeScript interfaces and API client functions for CRUD operations and compilation of tool definitions in a Docker-based tool management system. | exp: ToolDefinitionManifest, CreateToolDefinitionRequest, UpdateToolDefinitionRequest, CompileResult, listToolDefinitions, getToolDefinition, createToolDefinition, updateToolDefinition, deleteToolDefinition, compileToolDefinition | dep: ./client +- tool-types.test.ts | Unit tests for tool type API CRUD operations including listing, creating, validating, updating, and deleting tool types with dockerfile and compose definitions | dep: vitest, ../api/tool-types, ../api/client - tool-types.ts | Defines TypeScript interfaces and API client functions for CRUD operations on tool types in a containerized deployment system. | exp: ReadinessProbe, ToolType, CreateToolTypeRequest, UpdateToolTypeRequest, listToolTypes, getToolType, createToolType, updateToolType, deleteToolType, validateToolType | dep: ./client, apiClient - workspace-files.ts | Provides an API client for listing, reading, and saving workspace files. | exp: FileEntry, func:listWorkspaceFiles(workspaceId: string, path: string) → Promise, func:getWorkspaceFileContent(workspaceId: string, path: string) → Promise, func:saveWorkspaceFile(workspaceId: string, path: string, content: string, commitMessage: string) → Promise, call:apiClient.post | dep: ./client, apiClient -- workspace-git.ts | Provides a typed API client for git operations on remote workspaces via HTTP endpoints. | exp: GitStatus, Commit, func:getGitStatus(workspaceId: string) → Promise, func:getGitBranches(workspaceId: string) → Promise<{ branches: string[]; current_branch: string }>, func:gitCommit(workspaceId: string, message: string) → Promise, call:apiClient.post, func:gitPush(workspaceId: string) → Promise, call:apiClient.post, func:gitPull(workspaceId: string) → Promise, call:apiClient.post, func:gitFetch(workspaceId: string) → Promise, call:apiClient.post, func:gitCheckout(workspaceId: string, branch: string) → Promise, call:apiClient.post, func:getGitHistory(workspaceId: string, path: string, limit: number) → Promise | dep: ./client -- workspace-instances.ts | Provides API client functions to list and create workspace tool instances. | exp: func:listWorkspaceInstances(workspaceId: string) → Promise, func:createWorkspaceInstance(workspaceId: string, toolTypeId: string, displayName: string, configProfileId: string) → Promise | dep: ./client, ./sessions -- workspaces.ts | Provides an API client wrapper for CRUD operations and sync functionality on workspaces via HTTP endpoints. | exp: func:listWorkspaces(projectId: string, repoId: string) → Promise, call:workspaceUrl, func:listAllWorkspaces() → Promise, func:createWorkspace(projectId: string, repoId: string, data: CreateWorkspaceRequest) → Promise, call:workspaceUrl, func:createWorkspaceTopLevel(data: CreateWorkspaceRequest & { repo_id: string }) → Promise, func:getWorkspace(projectId: string, repoId: string, workspaceId: string) → Promise, call:workspaceUrl, func:updateWorkspace(projectId: string, repoId: string, workspaceId: string, data: Partial) → Promise, call:workspaceUrl, func:deleteWorkspace(workspaceId: string, force) → Promise<{ status: string }>, func:syncWorkspace(projectId: string, repoId: string, workspaceId: string) → Promise, call:workspaceUrl | dep: ./client, ../types/workspace, apiClient, Workspace, CreateWorkspaceRequest, SyncResult +- workspace-git.ts | Provides a typed API client for workspace git operations including status, branches, commits, push/pull/fetch, checkout, and history. | exp: GitStatus, Commit, func:getGitStatus(workspaceId: string) → Promise, func:getGitBranches(workspaceId: string) → Promise<{ branches: string[]; current_branch: string }>, func:gitCommit(workspaceId: string, message: string) → Promise, call:apiClient.post, func:gitPush(workspaceId: string) → Promise, call:apiClient.post, func:gitPull(workspaceId: string) → Promise, call:apiClient.post, func:gitFetch(workspaceId: string) → Promise, call:apiClient.post, func:gitCheckout(workspaceId: string, branch: string) → Promise, call:apiClient.post, func:getGitHistory(workspaceId: string, path: string, limit: number) → Promise | dep: ./client +- workspace-instances.ts | Provides API client functions for listing and creating workspace tool instances. | exp: func:listWorkspaceInstances(workspaceId: string) → Promise, func:createWorkspaceInstance(workspaceId: string, toolTypeId: string, displayName: string, configProfileId: string) → Promise | dep: ./client, ./sessions, apiClient, ToolInstance +- workspaces.ts | Provides an API client for CRUD and sync operations on workspaces in a project/repository hierarchy. | exp: func:listWorkspaces(projectId: string, repoId: string) → Promise, call:workspaceUrl, func:listAllWorkspaces() → Promise, func:createWorkspace(projectId: string, repoId: string, data: CreateWorkspaceRequest) → Promise, call:workspaceUrl, func:createWorkspaceTopLevel(data: CreateWorkspaceRequest & { repo_id: string }) → Promise, func:getWorkspace(projectId: string, repoId: string, workspaceId: string) → Promise, call:workspaceUrl, func:updateWorkspace(projectId: string, repoId: string, workspaceId: string, data: Partial) → Promise, call:workspaceUrl, func:deleteWorkspace(workspaceId: string, force) → Promise<{ status: string }>, func:syncWorkspace(projectId: string, repoId: string, workspaceId: string) → Promise, call:workspaceUrl | dep: ./client, ../types/workspace, apiClient, Workspace, CreateWorkspaceRequest, SyncResult ## arch -Modular facade pattern with a centralized Axios client (client.ts) featuring cross-cutting concerns (auth redirect, retry logic), consumed by domain-specific modules that export typed interfaces and thin API function wrappers. +Modular facade pattern with domain-segregated modules (one per entity), shared base client with interceptors, consistent TypeScript interfaces for request/response types, and thin wrappers over RESTful endpoints. ## tags call:api, tool, client.post, create, git, profile, get, client ## symbols diff --git a/apps/web/src/components/.pi-map.index.md b/apps/web/src/components/.pi-map.index.md index 2b79a0b..3d002b2 100644 --- a/apps/web/src/components/.pi-map.index.md +++ b/apps/web/src/components/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/web/src/components ## role -Provides reusable, accessible UI primitives and layout components for a React web application, including shell layout, data states, icons, code editing, routing guards, and toast notifications. +Reusable React UI components providing the application's shared visual elements, layout shell, authentication guards, and notification infrastructure. ## parent index: apps/web/src/.pi-map.index.md map: apps/web/src/.pi-map.md diff --git a/apps/web/src/components/.pi-map.md b/apps/web/src/components/.pi-map.md index 7dc3cde..0fe57c5 100644 --- a/apps/web/src/components/.pi-map.md +++ b/apps/web/src/components/.pi-map.md @@ -4,22 +4,22 @@ dir: apps/web/src/components index: apps/web/src/components/.pi-map.index.md ## role -Provides reusable, accessible UI primitives and layout components for a React web application, including shell layout, data states, icons, code editing, routing guards, and toast notifications. +Reusable React UI components providing the application's shared visual elements, layout shell, authentication guards, and notification infrastructure. ## files -- app-shell.tsx | Renders the main application shell layout with navigation, header, session management, and mobile-responsive behavior for a React Router-based SPA. | exp: AppShell | dep: react-router-dom, ../api/sessions, ../hooks/use-theme, ../state/auth, ../state/sessions, ../hooks/use-mobile-viewport, ../state/events, ../state/toast, ../state/notifications, ./features/notification/event-toast-bridge, ./features/notification/notification-center, ./icon, ./features/mobile/mobile-nav, ./features/tool/start-tool-fab, ../utils/icons -- code-editor.tsx | A React component that renders a syntax-highlighted code editor with line numbers using react-simple-code-editor. | exp: CodeEditor | dep: react, react-simple-code-editor, ../utils/language +- app-shell.tsx | Provides the main application shell layout with navigation, session management, and responsive mobile/desktop rendering for a React application. | exp: AppShell | dep: react-router-dom, ../api/sessions, ../hooks/use-theme, ../utils/open-session, ../state/auth, ../state/sessions, ../hooks/use-mobile-viewport, ../state/events, ../state/toast, ../state/notifications, ./features/notification/event-toast-bridge, ./features/notification/notification-center, ./icon, ./features/mobile/mobile-nav, ./features/tool/start-tool-fab, ../utils/icons +- code-editor.tsx | A React component that renders a syntax-highlighting code editor with line numbers using react-simple-code-editor. | exp: CodeEditor | dep: react, react-simple-code-editor, ../utils/language - data-states.tsx | Provides reusable React components for displaying loading, error, and empty data states in a UI. | exp: LoadingState, ErrorState, EmptyState | dep: ./icon, icon -- icon.tsx | Provides a centralized, type-safe React icon component that maps semantic names to Phosphor icons with configurable size, weight, color, and accessibility attributes. | exp: IconName, IconProps, Icon | dep: react, @phosphor-icons/react -- loading-overlay.tsx | Renders an accessible loading overlay with optional label that conditionally displays based on visibility prop | exp: func:LoadingOverlay({ visible, label }: LoadingOverlayProps) | dep: ./icon, icon -- protected-route.test.tsx | Tests a ProtectedRoute component that guards content based on authentication state | dep: @testing-library/react, react-router-dom, vitest, ./protected-route -- protected-route.tsx | Conditionally renders children or redirects to login based on authentication state | exp: ProtectedRoute | dep: react-router-dom, ../state/auth -- syntax-highlighter.tsx | Renders syntax-highlighted code blocks with optional line numbers and copy-to-clipboard functionality | exp: SyntaxHighlighter | dep: react, ./icon, ../utils/language, React, icon, language (utils) +- icon.tsx | Provides a centralized, type-safe React icon component that maps semantic names to Phosphor icons with configurable size, weight, color, and accessibility properties. | exp: IconName, IconProps, Icon | dep: react, @phosphor-icons/react +- loading-overlay.tsx | Renders an accessible loading overlay with optional label when visible prop is true | exp: func:LoadingOverlay({ visible, label }: LoadingOverlayProps) | dep: ./icon, icon +- protected-route.test.tsx | Tests a ProtectedRoute component that guards private content based on authentication state | dep: @testing-library/react, react-router-dom, vitest, ./protected-route, ../state/auth +- protected-route.tsx | A React component that conditionally renders children or redirects to login based on authentication state, preserving the intended destination URL. | exp: ProtectedRoute | dep: react-router-dom, ../state/auth +- syntax-highlighter.tsx | Renders syntax-highlighted code blocks with optional line numbers, language badge, and copy-to-clipboard functionality. | exp: SyntaxHighlighter | dep: react, ./icon, ../utils/language, React, icon, language utilities - toast-rules.test.ts | Unit tests for mapping instance events to toast notification categories and severities | dep: vitest, ./toast-rules, ../types/events -- toast-rules.ts | Maps instance events to toast notifications with deduplication logic to prevent spam | exp: func:mapEventToCategory(event: InstanceEventPayload) → string, call:event.event.startsWith, func:mapEventToSeverity(event: InstanceEventPayload) → "info" | "warning" | "error" | "success", func:handleEventToast(event: InstanceEventPayload) → void, call:shouldShowToast, call:toast.info, call:toast.success, call:toast.warning, call:toast.error, func:clearToastDedup() → void, call:lastToastTime.clear | dep: ../state/toast, ../types/events, toast state module, InstanceEventPayload type +- toast-rules.ts | Maps instance events to toast notifications with deduplication logic | exp: func:mapEventToCategory(event: InstanceEventPayload) → string, call:event.event.startsWith, func:mapEventToSeverity(event: InstanceEventPayload) → "info" | "warning" | "error" | "success", func:handleEventToast(event: InstanceEventPayload) → void, call:shouldShowToast, call:toast.info, call:toast.success, call:toast.warning, call:toast.error, func:clearToastDedup() → void, call:lastToastTime.clear | dep: ../state/toast, ../types/events, toast, InstanceEventPayload ## arch -Component-based React architecture with functional components, composition patterns, and separation of concerns between presentation (UI rendering), logic (rules/hooks), and testing; integrates third-party libraries (react-simple-code-editor, Phosphor icons) and React Router for SPA navigation. +Component-based architecture with functional React patterns, separation of presentational components (data states, icons, syntax highlighting) from behavioral logic (toast rules, protected routes), and centralized design abstractions (icon mapping, code editor wrapping). ## tags -toast, icon, react, state, code, loading, event, editor +toast, react, state, icon, code, loading, event, editor ## symbols - LoadingOverlay - mapEventToCategory diff --git a/apps/web/src/components/features/.pi-map.index.md b/apps/web/src/components/features/.pi-map.index.md index b2eef20..5f3a614 100644 --- a/apps/web/src/components/features/.pi-map.index.md +++ b/apps/web/src/components/features/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/web/src/components/features ## role -Contains reusable React components that implement specific product features and user-facing functionality across the web application. +Reusable UI feature components that compose domain-specific functionality for the web application. ## parent index: apps/web/src/components/.pi-map.index.md map: apps/web/src/components/.pi-map.md diff --git a/apps/web/src/components/features/.pi-map.md b/apps/web/src/components/features/.pi-map.md index bd63318..48502b9 100644 --- a/apps/web/src/components/features/.pi-map.md +++ b/apps/web/src/components/features/.pi-map.md @@ -4,10 +4,10 @@ dir: apps/web/src/components/features index: apps/web/src/components/features/.pi-map.index.md ## role -Contains reusable React components that implement specific product features and user-facing functionality across the web application. +Reusable UI feature components that compose domain-specific functionality for the web application. ## files ## arch -Feature-based component organization with domain-specific groupings, likely combining presentational and container patterns with hooks for state management, following a modular architecture where each feature encapsulates its own UI, logic, and data fetching concerns. +Feature-based component organization with domain-driven design patterns, likely combining presentational components with localized state and business logic. ## tags - ## symbols diff --git a/apps/web/src/components/features/config-profiles/.pi-map.index.md b/apps/web/src/components/features/config-profiles/.pi-map.index.md index 16b1472..1b73dda 100644 --- a/apps/web/src/components/features/config-profiles/.pi-map.index.md +++ b/apps/web/src/components/features/config-profiles/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/web/src/components/features/config-profiles ## role -Provides UI components for managing Docker configuration profiles including creation, editing, listing, and mobile-responsive views. +Provides UI components for managing configuration profiles (create, edit, list, delete) with support for desktop and mobile layouts. ## parent index: apps/web/src/components/features/.pi-map.index.md map: apps/web/src/components/features/.pi-map.md diff --git a/apps/web/src/components/features/config-profiles/.pi-map.md b/apps/web/src/components/features/config-profiles/.pi-map.md index 7da39d3..88aca85 100644 --- a/apps/web/src/components/features/config-profiles/.pi-map.md +++ b/apps/web/src/components/features/config-profiles/.pi-map.md @@ -4,15 +4,15 @@ dir: apps/web/src/components/features/config-profiles index: apps/web/src/components/features/config-profiles/.pi-map.index.md ## role -Provides UI components for managing Docker configuration profiles including creation, editing, listing, and mobile-responsive views. +Provides UI components for managing configuration profiles (create, edit, list, delete) with support for desktop and mobile layouts. ## files -- ConfigProfileEditorPanel.tsx | React component that renders a form-based editor panel for creating and editing configuration profiles with support for includes, environment variables, runtime hints, files, and mounts. | exp: ConfigProfileEditorPanel | dep: ../../icon, ../git/git-mount-editor, ../../../api/config-profiles, ../../../types, ../../../api/tool-types, React, Icon, GitMountEditor, ConfigProfile, CreateConfigProfileRequest, ResolvedProfile, ProjectWithRepos, ToolType -- ConfigProfileListSidebar.tsx | Renders a sidebar component for listing, selecting, creating, and deleting configuration profiles with visual indicators for default status, scope, and includes. | exp: ConfigProfileListSidebar | dep: ../../icon, ../../../api/config-profiles, Icon, ConfigProfile -- ConfigProfilesMobileView.tsx | Renders a mobile-responsive view for managing configuration profiles with list, detail, edit, and preview states. | exp: ConfigProfilesMobileView | dep: react, ../mobile/mobile-list-view, ../mobile/mobile-detail-view, ../mobile/mobile-edit-view, ../mobile/mobile-fab, ../git/git-mount-editor, ../../icon, ../../../api/config-profiles, ../../../types, ../../../api/tool-types, mobile-list-view, mobile-detail-view, mobile-edit-view, mobile-fab, git-mount-editor, icon, config-profiles API types, types +- ConfigProfileEditorPanel.tsx | Renders a form panel for creating or editing configuration profiles with includes, environment variables, files, mounts, and git mounts. | exp: ConfigProfileEditorPanel | dep: ../../icon, ../git/git-mount-editor, ../../../api/config-profiles, ../../../types, ../../../api/tool-types, Icon, GitMountEditor, config-profiles API types, ProjectWithRepos types, tool-types API +- ConfigProfileListSidebar.tsx | Renders a sidebar UI component for listing, selecting, creating, and deleting configuration profiles with visual indicators for scope and metadata. | exp: ConfigProfileListSidebar | dep: ../../icon, ../../../api/config-profiles, React, Icon component, ConfigProfile type +- ConfigProfilesMobileView.tsx | Renders a mobile-responsive view for managing configuration profiles with list, detail, edit, and preview states. | exp: ConfigProfilesMobileView | dep: react, ../mobile/mobile-list-view, ../mobile/mobile-detail-view, ../mobile/mobile-edit-view, ../mobile/mobile-fab, ../git/git-mount-editor, ../../icon, ../../../api/config-profiles, ../../../types, ../../../api/tool-types, mobile-list-view, mobile-detail-view, mobile-edit-view, mobile-fab, git-mount-editor, icon, config-profiles API types, project types, tool-types API ## arch -Feature-based component composition with state-driven panels (list/detail/edit/preview), form-based editing, and responsive layout adaptation for mobile/desktop. +Feature-based component composition with panel/sidebar split-view pattern, responsive mobile state machine (list/detail/edit/preview), and form-driven data editing for complex nested configuration objects. ## tags -mobile, config, view, profiles, editor, profile, list, icon +config, mobile, view, profiles, profile, editor, list, git ## symbols - ConfigProfileEditorPanel - ConfigProfileListSidebar diff --git a/apps/web/src/components/features/git/.pi-map.index.md b/apps/web/src/components/features/git/.pi-map.index.md index 445acc9..be4ed43 100644 --- a/apps/web/src/components/features/git/.pi-map.index.md +++ b/apps/web/src/components/features/git/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/web/src/components/features/git ## role -Provides React UI components for Git repository operations including commit, merge, and mount configuration workflows. +Provides Git repository management UI components for mounting, committing, and merging operations within the web application. ## parent index: apps/web/src/components/features/.pi-map.index.md map: apps/web/src/components/features/.pi-map.md diff --git a/apps/web/src/components/features/git/.pi-map.md b/apps/web/src/components/features/git/.pi-map.md index f1f7aaf..67e30af 100644 --- a/apps/web/src/components/features/git/.pi-map.md +++ b/apps/web/src/components/features/git/.pi-map.md @@ -4,15 +4,15 @@ dir: apps/web/src/components/features/git index: apps/web/src/components/features/git/.pi-map.index.md ## role -Provides React UI components for Git repository operations including commit, merge, and mount configuration workflows. +Provides Git repository management UI components for mounting, committing, and merging operations within the web application. ## files -- commit-dialog.tsx | A React modal dialog component that displays a diff preview of file changes and allows users to enter a commit message to save those changes. | exp: CommitDialog | dep: react, ../../icon, icon -- git-mount-editor.tsx | A React component for editing Git repository mount configurations with URL validation, branch selection, and path mappings. | exp: GitMountEditor | dep: react, ../../icon, ../../../api/config-profiles, icon, config-profiles -- merge-dialog.tsx | A React modal dialog component that allows users to merge Git branches with source/target selection, optional commit message, and loading/error/success state handling. | exp: MergeDialog | dep: react, ../../../api/git-repositories, ../../icon, api/git-repositories, icon +- commit-dialog.tsx | Renders a modal dialog for reviewing code diffs and entering a commit message before committing changes to a file. | exp: CommitDialog | dep: react, ../../icon +- git-mount-editor.tsx | A React component that provides a UI for editing Git repository mounts with path mappings, including URL validation and branch selection. | exp: GitMountEditor | dep: react, ../../icon, ../../../api/config-profiles, icon, config-profiles API (validateGitUrl, GitMount, GitMountMapping types) +- merge-dialog.tsx | A React modal dialog component that allows users to merge Git branches by selecting a source branch, optionally providing a commit message, and executing the merge operation. | exp: MergeDialog | dep: react, ../../../api/git-repositories, ../../icon ## arch -Uses modal dialog pattern with form state management, loading/error/success state handling, and controlled inputs for Git-specific operations. +React component-based architecture using modal dialog patterns for discrete Git workflows, with form-driven interfaces for repository configuration and branch operations. ## tags -dialog, git, react, commit, icon, mount, merge, editor +dialog, git, commit, merge, react, icon, mount, editor ## symbols - CommitDialog - GitMountEditor diff --git a/apps/web/src/components/features/mobile/.pi-map.md b/apps/web/src/components/features/mobile/.pi-map.md index a5c848e..a3c3b05 100644 --- a/apps/web/src/components/features/mobile/.pi-map.md +++ b/apps/web/src/components/features/mobile/.pi-map.md @@ -6,20 +6,20 @@ index: apps/web/src/components/features/mobile/.pi-map.index.md ## role Provides a complete set of mobile-optimized UI components for CRUD operations, navigation, and terminal interfaces in a responsive web application. ## files -- mobile-action-sheet.tsx | Renders a mobile-optimized action sheet modal with title, configurable action buttons, and cancel option. | exp: MobileActionSheetItem, func:MobileActionSheet({ isOpen, onClose, title, actions, }: MobileActionSheetProps), call:useRef, call:useEffect, call:onClose, call:document.addEventListener, call:document.removeEventListener, call:e.stopPropagation, call:actions.map, call:action.onClick | dep: react, ../../icon, icon -- mobile-detail-view.tsx | A React component that renders a mobile-optimized detail view with a header, back/edit/delete actions, and a configurable list of typed fields. | exp: MobileDetailView | dep: ../../icon, React -- mobile-edit-view.tsx | A React component that renders a mobile-optimized form for editing records with configurable field types and save/cancel/delete actions. | exp: MobileEditView | dep: react -- mobile-fab.tsx | Renders a floating action button component for mobile with an add icon and configurable click handler and label. | exp: MobileFAB | dep: ../../icon, react, icon -- mobile-list-view.tsx | A reusable React component that renders a mobile-optimized list view with optional search, custom item rendering, and action buttons (duplicate/delete). | exp: MobileListView | dep: react, ../../icon, ../../../utils/icons, icon -- mobile-nav.tsx | Renders a mobile navigation bar with grouped items that trigger bottom sheets and standard links with active state highlighting | exp: MobileNav | dep: react, react-router-dom, ../../icon, ../tool/tools-bottom-sheet, ./spaces-bottom-sheet, ../../../utils/icons +- mobile-action-sheet.tsx | Renders a mobile-optimized action sheet modal with a list of actions, optional icons, variant styling, and keyboard/overlay dismissal handling. | exp: MobileActionSheetItem, func:MobileActionSheet({ isOpen, onClose, title, actions, }: MobileActionSheetProps), call:useRef, call:useEffect, call:onClose, call:document.addEventListener, call:document.removeEventListener, call:e.stopPropagation, call:actions.map, call:action.onClick | dep: react, ../../icon, icon +- mobile-detail-view.tsx | A React component that renders a mobile-optimized detail view with a header, back/edit/delete actions, and a configurable list of typed fields. | exp: MobileDetailView | dep: ../../icon, react, icon +- mobile-edit-view.tsx | Renders a mobile-optimized form view for editing records with configurable field types and save/cancel/delete actions. | exp: MobileEditView | dep: react +- mobile-fab.tsx | Renders a mobile floating action button with an add icon and customizable label | exp: MobileFAB | dep: ../../icon, React, Icon component +- mobile-list-view.tsx | A reusable React component that renders a mobile-optimized list view with optional search, custom item rendering, and action buttons for duplicate/delete. | exp: MobileListView | dep: react, ../../icon, ../../../utils/icons, icon (local component), icons (local utils) +- mobile-nav.tsx | Renders a mobile navigation bar with grouped items that open bottom sheets and standard items that use React Router links, including active state handling and session count badges. | exp: MobileNav | dep: react, react-router-dom, ../../icon, ../tool/tools-bottom-sheet, ./spaces-bottom-sheet, ../../../utils/icons, icon, tools-bottom-sheet, spaces-bottom-sheet, icons - mobile-page-header.tsx | Renders a mobile-only page header with optional back navigation and custom actions. | exp: func:MobilePageHeader({ title, showBack = true, actions }: MobilePageHeaderProps), call:useNavigate, call:useMobileViewport, call:navigate | dep: react-router-dom, ../../../hooks/use-mobile-viewport, ../../icon, use-mobile-viewport hook, Icon component -- mobile-terminal-header.tsx | Renders a mobile-responsive header for a terminal interface with navigation, title, connection status, font size controls, and close actions. | exp: MobileTerminalHeader | dep: react, ../../icon, icon -- mobile-terminal-wrapper.tsx | Wraps a terminal component with mobile-specific UI including auto-hiding header, virtual keyboard handling, and special keys interface. | exp: MobileTerminalWrapper | dep: react, ../terminal/terminal, ./mobile-terminal-header, ../terminal/special-keys-strip, ../terminal/special-keys-panel, ../../../hooks/use-mobile-viewport, ../../../hooks/use-virtual-keyboard, ../../../hooks/use-auto-hide, ../../../hooks/use-special-keys +- mobile-terminal-header.tsx | Renders a mobile-responsive header for a terminal interface with navigation, status, and font size controls. | exp: MobileTerminalHeader | dep: react, ../../icon, icon +- mobile-terminal-wrapper.tsx | Wraps a terminal component with mobile-specific UI including auto-hiding header, virtual keyboard handling, and special keys input panels. | exp: MobileTerminalWrapper | dep: react, ../terminal/terminal, ./mobile-terminal-header, ../terminal/special-keys-strip, ../terminal/special-keys-panel, ../../../hooks/use-mobile-viewport, ../../../hooks/use-virtual-keyboard, ../../../hooks/use-auto-hide, ../../../hooks/use-special-keys, React, TerminalComponent, MobileTerminalHeader, SpecialKeysStrip, SpecialKeysPanel, useMobileViewport, useVirtualKeyboard, useAutoHide, ModifierKey - spaces-bottom-sheet.tsx | Renders a mobile bottom sheet navigation menu for switching between "Projects" and "Workspaces" spaces with active state highlighting. | exp: SpacesBottomSheet | dep: react-router-dom, ../../icon, icon ## arch -Feature-based component architecture using compound mobile patterns (bottom sheets, action sheets, FABs) with typed configurable props, consistent mobile-first design system, and specialized terminal wrapper with native-like behaviors (auto-hiding headers, virtual keyboard handling). +Compound component pattern with feature-specific mobile wrappers that adapt desktop functionality to touch-friendly bottom sheets, action sheets, and specialized mobile views, using React Router for navigation and consistent mobile-first styling variants. ## tags -mobile, terminal, sheet, react, icon, view, header, action +mobile, sheet, react, view, terminal, icon, header, bottom ## symbols - MobileActionSheet - MobilePageHeader diff --git a/apps/web/src/components/features/notification/.pi-map.index.md b/apps/web/src/components/features/notification/.pi-map.index.md index 0304c08..f354c13 100644 --- a/apps/web/src/components/features/notification/.pi-map.index.md +++ b/apps/web/src/components/features/notification/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/web/src/components/features/notification ## role -Provides notification UI components and event-to-toast bridging logic for the web application. +Provides the complete notification UI system including toast notifications, notification center dropdown, and individual notification items with user preference filtering. ## parent index: apps/web/src/components/features/.pi-map.index.md map: apps/web/src/components/features/.pi-map.md diff --git a/apps/web/src/components/features/notification/.pi-map.md b/apps/web/src/components/features/notification/.pi-map.md index cc5cf77..e088bcd 100644 --- a/apps/web/src/components/features/notification/.pi-map.md +++ b/apps/web/src/components/features/notification/.pi-map.md @@ -4,18 +4,18 @@ dir: apps/web/src/components/features/notification index: apps/web/src/components/features/notification/.pi-map.index.md ## role -Provides notification UI components and event-to-toast bridging logic for the web application. +Provides the complete notification UI system including toast notifications, notification center dropdown, and individual notification items with user preference filtering. ## files -- event-toast-bridge.test.tsx | Tests that EventToastBridge correctly filters instance events based on user notification preferences (toast level and muted categories) before triggering toast notifications. | dep: vitest, @testing-library/react, ./event-toast-bridge, ../../../state/events, ../../../api/settings, ../../toast-rules, ../../../types/events, event-toast-bridge, useEventContext, getUserConfig, handleEventToast, InstanceEventPayload -- event-toast-bridge.tsx | Bridges event system to toast notifications by filtering events based on user config and processing them through toast rules | exp: func:EventToastBridge() → JSX.Element | null, call:useEventContext, call:useRef, call:useState, call:useEffect, call:getUserConfig() .then((c) => { setConfig({ notification_toast_level: c.notification_toast_level ?? "all", notification_mute_categories: c.notification_mute_categories ?? [], }); }) .catch, call:setConfig, call:window.addEventListener, call:window.removeEventListener, call:processedRef.current.has, call:processedRef.current.add, call:mapEventToCategory, call:mapEventToSeverity, call:config.notification_mute_categories.includes, call:handleEventToast | dep: react, ../../../state/events, ../../toast-rules, ../../../api/settings, useEventContext, toast-rules, settings api -- notification-center.test.tsx | Tests the NotificationCenter UI component's rendering, interactions, and API integration using Vitest and React Testing Library. | dep: vitest, @testing-library/react, ./notification-center, ../../../state/notifications, ../../../api/notifications, notification-center, notification-provider, notifications-api -- notification-center.tsx | Renders a notification bell icon with a dropdown panel showing notifications, supporting mobile and desktop responsive layouts via React portal. | exp: func:NotificationCenter({ isMobileTerminal = false, }: NotificationCenterProps), call:useNotifications, call:useMobileViewport, call:useRef, call:useState, call:useCallback, call:bellRef.current.getBoundingClientRect, call:setDropdownStyle, call:useEffect, call:updatePosition, call:dropdownRef.current.contains, call:bellRef.current?.contains, call:setIsDropdownOpen, call:document.addEventListener, call:window.addEventListener, call:document.removeEventListener, call:window.removeEventListener, call:refreshList, call:String, call:createPortal, call:notifications.map, call:markAllRead, call:clearAll | dep: react, react-dom, ../../../hooks/use-notifications, ../../../hooks/use-mobile-viewport, ./notification-item, ../../icon, use-notifications, use-mobile-viewport, notification-item, icon -- notification-item.test.tsx | Tests the NotificationItem React component for rendering, styling, and user interaction behaviors. | dep: vitest, @testing-library/react, ./notification-item -- notification-item.tsx | Renders a single notification item with expandable metadata, read/dismiss actions, and severity-based icon display. | exp: NotificationItemProps, func:NotificationItem({ notification, onMarkRead, onDismiss, }: NotificationItemProps), call:useState, call:Object.keys, call:formatRelativeTime, call:Object.entries(notification.metadata).map, call:key.replace, call:formatMetadataValue, call:setExpanded, call:onMarkRead, call:onDismiss | dep: react, ../../icon, ../../../utils/time, ../../../api/notifications, ../../../utils/icons, icon, time, notifications, icons +- event-toast-bridge.test.tsx | Tests the EventToastBridge component's notification preference filtering logic, including toast level settings, category muting, and deduplication behavior. | dep: vitest, @testing-library/react, ./event-toast-bridge, ../../../state/events, ../../../api/settings, ../../toast-rules, ../../../types/events, event-toast-bridge component, useEventContext hook, getUserConfig API, handleEventToast utility +- event-toast-bridge.tsx | Bridges events from an event context to toast notifications with user-configurable filtering by severity and category | exp: func:EventToastBridge() → JSX.Element | null, call:useEventContext, call:useRef, call:useState, call:useEffect, call:getUserConfig() .then((c) => { setConfig({ notification_toast_level: c.notification_toast_level ?? "all", notification_mute_categories: c.notification_mute_categories ?? [], }); }) .catch, call:setConfig, call:window.addEventListener, call:window.removeEventListener, call:processedRef.current.has, call:processedRef.current.add, call:mapEventToCategory, call:mapEventToSeverity, call:config.notification_mute_categories.includes, call:handleEventToast | dep: react, ../../../state/events, ../../toast-rules, ../../../api/settings, useEventContext, toast-rules, settings/api +- notification-center.test.tsx | Tests the NotificationCenter React component's rendering, interactions, and API integration using Vitest and React Testing Library. | dep: vitest, @testing-library/react, ./notification-center, ../../../state/notifications, ../../../api/notifications, notification-center, notification-provider, notifications-api +- notification-center.tsx | Renders a notification bell icon with a dropdown panel for viewing, managing, and dismissing notifications, supporting both desktop and mobile responsive layouts. | exp: func:NotificationCenter({ isMobileTerminal = false, }: NotificationCenterProps), call:useNotifications, call:useMobileViewport, call:useRef, call:useState, call:useCallback, call:bellRef.current.getBoundingClientRect, call:setDropdownStyle, call:useEffect, call:updatePosition, call:dropdownRef.current.contains, call:bellRef.current?.contains, call:setIsDropdownOpen, call:document.addEventListener, call:window.addEventListener, call:document.removeEventListener, call:window.removeEventListener, call:refreshList, call:String, call:createPortal, call:notifications.map, call:markAllRead, call:clearAll | dep: react, react-dom, ../../../hooks/use-notifications, ../../../hooks/use-mobile-viewport, ./notification-item, ../../icon, use-notifications, use-mobile-viewport, notification-item, icon +- notification-item.test.tsx | Tests the NotificationItem React component for rendering, styling, and user interaction behavior. | dep: vitest, @testing-library/react, ./notification-item +- notification-item.tsx | Renders a single notification item with expandable metadata, severity-based icons, read/dismiss actions, and relative time formatting. | exp: NotificationItemProps, func:NotificationItem({ notification, onMarkRead, onDismiss, }: NotificationItemProps), call:useState, call:Object.keys, call:formatRelativeTime, call:Object.entries(notification.metadata).map, call:key.replace, call:formatMetadataValue, call:setExpanded, call:onMarkRead, call:onDismiss | dep: react, ../../icon, ../../../utils/time, ../../../api/notifications, ../../../utils/icons, icon, time utils, notifications API, icons utils ## arch -React component-based architecture with feature-based directory organization, using portals for dropdown rendering, event-driven toast bridging with user preference filtering, and severity-based visual states. +Component-based React architecture with clear separation of concerns: bridge pattern for event-to-toast translation, compound component pattern for notification center UI, and granular single-responsibility components with comprehensive test coverage. ## tags -event, notification, call:use, toast, notifications, listener, react, item +event, notification, call:use, toast, listener, react, notifications, item ## symbols - EventToastBridge - NotificationCenter diff --git a/apps/web/src/components/features/profile/.pi-map.index.md b/apps/web/src/components/features/profile/.pi-map.index.md index f5fc594..c50e661 100644 --- a/apps/web/src/components/features/profile/.pi-map.index.md +++ b/apps/web/src/components/features/profile/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/web/src/components/features/profile ## role -Provides a mobile-specific UI for users to view and edit their profile information. +Provides a mobile-responsive user interface for editing user profile information and managing avatar uploads. ## parent index: apps/web/src/components/features/.pi-map.index.md map: apps/web/src/components/features/.pi-map.md diff --git a/apps/web/src/components/features/profile/.pi-map.md b/apps/web/src/components/features/profile/.pi-map.md index 54ca4ac..0e9c263 100644 --- a/apps/web/src/components/features/profile/.pi-map.md +++ b/apps/web/src/components/features/profile/.pi-map.md @@ -4,11 +4,11 @@ dir: apps/web/src/components/features/profile index: apps/web/src/components/features/profile/.pi-map.index.md ## role -Provides a mobile-specific UI for users to view and edit their profile information. +Provides a mobile-responsive user interface for editing user profile information and managing avatar uploads. ## files -- ProfileMobileView.tsx | Renders a mobile-optimized profile editing form with avatar upload, name/email fields, and save/cancel functionality. | exp: ProfileMobileView | dep: react-router-dom, ../mobile/mobile-edit-view, ../../icon, ../../../api/profile +- ProfileMobileView.tsx | Renders a mobile-optimized profile editing form with avatar upload, name/email fields, and save/cancel actions | exp: ProfileMobileView | dep: react-router-dom, ../mobile/mobile-edit-view, ../../icon, ../../../api/profile ## arch -Single feature-focused component with form handling and file upload, likely using controlled inputs and local state management. +Single-feature component with form state management, file upload handling, and responsive design patterns for mobile-first profile editing. ## tags mobile, profile, view, renders, optimized, editing, form, avatar ## symbols diff --git a/apps/web/src/components/features/project/.pi-map.index.md b/apps/web/src/components/features/project/.pi-map.index.md index 1bd1a10..b3b5557 100644 --- a/apps/web/src/components/features/project/.pi-map.index.md +++ b/apps/web/src/components/features/project/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/web/src/components/features/project ## role -Provides UI components for managing projects and their Git repositories, including cards, dialogs, and settings tabs with CRUD operations. +Provides UI components for managing projects, repositories, and workspaces in a web application. ## parent index: apps/web/src/components/features/.pi-map.index.md map: apps/web/src/components/features/.pi-map.md @@ -12,6 +12,7 @@ map: apps/web/src/components/features/.pi-map.md - ProjectCard.test.tsx - ProjectCard.tsx - ProjectDialog.tsx +- ProjectListItem.tsx - repositories-settings-tab.test.tsx - repositories-settings-tab.tsx - repository-create-dialog.tsx @@ -20,7 +21,7 @@ index: apps/web/src/components/features/project/.pi-map.index.md map: apps/web/src/components/features/project/.pi-map.md ## workflows - change project behavior - read: ProjectCard.tsx, ProjectDialog.tsx, repositories-settings-tab.tsx + read: ProjectCard.tsx, ProjectDialog.tsx, ProjectListItem.tsx - update project tests read: ProjectCard.test.tsx, repositories-settings-tab.test.tsx ## dirty diff --git a/apps/web/src/components/features/project/.pi-map.md b/apps/web/src/components/features/project/.pi-map.md index 5ac9c79..27bcf21 100644 --- a/apps/web/src/components/features/project/.pi-map.md +++ b/apps/web/src/components/features/project/.pi-map.md @@ -4,26 +4,28 @@ dir: apps/web/src/components/features/project index: apps/web/src/components/features/project/.pi-map.index.md ## role -Provides UI components for managing projects and their Git repositories, including cards, dialogs, and settings tabs with CRUD operations. +Provides UI components for managing projects, repositories, and workspaces in a web application. ## files -- ProjectCard.test.tsx | Unit tests for the ProjectCard component verifying rendering, workspace creation, and delete confirmation behavior. | dep: @testing-library/jest-dom/vitest, @testing-library/react, react-router-dom, vitest, ./ProjectCard, ../../../types, ProjectCard, types -- ProjectCard.tsx | Renders an expandable project card displaying project info, repositories, and associated workspaces with CRUD actions. | exp: ProjectCard | dep: ../../icon, ../workspace/workspace-create-form, ../../../types, Icon, WorkspaceCreateForm, ProjectWithRepos, WorkspaceSummary -- ProjectDialog.tsx | Renders a modal dialog for creating or editing a project with name/description inputs and cancel/submit actions. | exp: ProjectDialog | dep: ../../icon, React, icon -- repositories-settings-tab.test.tsx | Tests the RepositoriesSettingsTab component's repository creation flows including full URL cloning, owner/repo mode with SSH key selection, and SSH URL validation. | dep: @testing-library/react, vitest, ./repositories-settings-tab, ../../../api/git-repositories, ../../../api/ssh-keys, react-router-dom -- repositories-settings-tab.tsx | A React component that displays and manages Git repositories for a project, allowing users to list, create, and delete repositories. | exp: RepositoriesSettingsTab | dep: react, react-router-dom, ../../../api/git-repositories, ./repository-create-dialog, ../../icon -- repository-create-dialog.tsx | React dialog component for creating or cloning Git repositories with URL validation and SSH key selection. | exp: RepositoryCreateDialog | dep: react, ../../../api/git-repositories, ../../../api/ssh-keys, ../../icon +- ProjectCard.test.tsx | Unit tests for the ProjectCard React component verifying rendering, workspace creation, and delete confirmation behavior. | dep: @testing-library/jest-dom/vitest, @testing-library/react, react-router-dom, vitest, ./ProjectCard, ../../../types, ProjectCard component, types +- ProjectCard.tsx | Renders an expandable project card UI component displaying project info, repositories, and associated workspaces with CRUD actions. | exp: ProjectCard | dep: ../../icon, ../workspace/workspace-create-form, ../../../types, icon, workspace-create-form, types +- ProjectDialog.tsx | Renders a modal dialog for creating or editing a project with name/description inputs and submit/cancel actions. | exp: ProjectDialog | dep: ../../icon, React, Icon +- ProjectListItem.tsx | Renders a project list item with repositories, workspaces, and running sessions, including edit/delete actions and session management. | exp: ProjectListItem | dep: react, react-router-dom, ../../icon, ../../../api/sessions, ../../../utils/icons, ../../../types, ../../../utils/open-session +- repositories-settings-tab.test.tsx | Tests the RepositoriesSettingsTab component's repository creation flows including full URL cloning, owner/repo mode with SSH key generation, SSH URL validation, and form error handling. | dep: @testing-library/react, vitest, ./repositories-settings-tab, ../../../api/git-repositories, ../../../api/ssh-keys, react-router-dom +- repositories-settings-tab.tsx | React component that displays and manages Git repositories for a project, including listing, creating, and deleting repositories | exp: RepositoriesSettingsTab | dep: react, react-router-dom, ../../../api/git-repositories, ./repository-create-dialog, ../../icon +- repository-create-dialog.tsx | A React dialog component for creating or cloning Git repositories with URL validation, SSH key selection, and support for both simple owner/repo and advanced URL modes. | exp: RepositoryCreateDialog | dep: react, ../../../api/git-repositories, ../../../api/ssh-keys, ../../icon ## arch -React component-based architecture with feature-specific composition, dialog-based modals for forms, and comprehensive test coverage using unit tests for component behavior and user flows. +React component-based architecture with feature-specific composition, separating presentation (cards/lists/dialogs) from business logic, using dialogs for modal CRUD operations and comprehensive unit testing for complex user flows. ## tags -project, repositories, dialog, react, create, settings, icon, repository +project, repositories, react, dialog, icon, create, settings, api ## symbols - ProjectCard - ProjectDialog +- ProjectListItem - RepositoriesSettingsTab - RepositoryCreateDialog ## workflows - change project behavior - read: ProjectCard.tsx, ProjectDialog.tsx, repositories-settings-tab.tsx + read: ProjectCard.tsx, ProjectDialog.tsx, ProjectListItem.tsx - update project tests read: ProjectCard.test.tsx, repositories-settings-tab.test.tsx ## dirty diff --git a/apps/web/src/components/features/session/.pi-map.index.md b/apps/web/src/components/features/session/.pi-map.index.md index e40601a..78ff2a3 100644 --- a/apps/web/src/components/features/session/.pi-map.index.md +++ b/apps/web/src/components/features/session/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/web/src/components/features/session ## role -Provides UI components for managing development sessions including creation, listing, and interacting with individual sessions. +Provides UI components for managing development sessions including creation, listing, and individual session display with status and actions. ## parent index: apps/web/src/components/features/.pi-map.index.md map: apps/web/src/components/features/.pi-map.md diff --git a/apps/web/src/components/features/session/.pi-map.md b/apps/web/src/components/features/session/.pi-map.md index b39ed40..ee9070d 100644 --- a/apps/web/src/components/features/session/.pi-map.md +++ b/apps/web/src/components/features/session/.pi-map.md @@ -4,15 +4,15 @@ dir: apps/web/src/components/features/session index: apps/web/src/components/features/session/.pi-map.index.md ## role -Provides UI components for managing development sessions including creation, listing, and interacting with individual sessions. +Provides UI components for managing development sessions including creation, listing, and individual session display with status and actions. ## files -- create-session-form.tsx | A React form component for creating and starting a new development session with configurable project, repository, workspace, tool type, config profile, and SSH key options. | exp: CreateSessionForm | dep: react, ../../icon, ../../../api/sessions, ../../../types, ../../../api/git-repositories, ../../../api/tool-types, ../../../api/ssh-keys, ../../../api/config-profiles, ../../../api/workspaces, ../../../types/workspace, icon, sessions API, git-repositories API, tool-types API, ssh-keys API, config-profiles API, workspaces API, types -- session-card.tsx | Renders a card component displaying session information with status badges, inline rename editing, action buttons, and responsive mobile/desktop layouts including a dropdown options menu and mobile action sheet. | exp: SessionCardProps, func:SessionCard({ session, onOpen, onStart, onStop, onDelete, onRecreateTunnel, onRename, isBusy = false, tunnelHealth = null, }: SessionCardProps), call:useState, call:useRef, call:useMobileViewport, call:session.tool_type_interfaces?.includes, call:[ "running", "building", "starting", "probing", "pending", "unhealthy", ].includes, call:useEffect, call:optionsRef.current.contains, call:setOptionsOpen, call:document.addEventListener, call:document.removeEventListener, call:window.confirm, call:onDelete, call:setEditName, call:onRename, call:setIsEditingName, call:editName.trim, call:onOpen, call:new Date(session.created_at).toLocaleString, call:setShowActionSheet, call:onStart, call:onStop, call:onRecreateTunnel | dep: react, ../../../api/sessions, ../../icon, ../../../hooks/use-mobile-viewport, ../mobile/mobile-action-sheet +- create-session-form.tsx | A React form component for creating and starting a new development session with configurable project, repository, workspace, tool type, config profile, and SSH key options. | exp: CreateSessionForm | dep: react, ../../icon, ../../loading-overlay, ../../../api/sessions, ../../../types, ../../../api/git-repositories, ../../../api/tool-types, ../../../api/ssh-keys, ../../../api/config-profiles, ../../../api/workspaces, ../../../types/workspace, icon, loading-overlay, sessions API, git-repositories API, tool-types API, ssh-keys API, config-profiles API, workspaces API, types +- session-card.tsx | Renders a React card component displaying session information with status badges, inline rename editing, action buttons, and responsive mobile/desktop layouts including dropdown menus and action sheets. | exp: SessionCardProps, func:SessionCard({ session, onOpen, onStart, onStop, onDelete, onRecreateTunnel, onRename, isBusy = false, busyLabel = "Working...", tunnelHealth = null, }: SessionCardProps), call:useState, call:useRef, call:useMobileViewport, call:session.tool_type_interfaces?.includes, call:[ "running", "building", "starting", "probing", "pending", "unhealthy", ].includes, call:useEffect, call:optionsRef.current.contains, call:setOptionsOpen, call:document.addEventListener, call:document.removeEventListener, call:window.confirm, call:onDelete, call:setEditName, call:onRename, call:setIsEditingName, call:editName.trim, call:onOpen, call:new Date(session.created_at).toLocaleString, call:setShowActionSheet, call:onStart, call:onStop, call:onRecreateTunnel | dep: react, ../../../api/sessions, ../../icon, ../../../hooks/use-mobile-viewport, ../mobile/mobile-action-sheet, ../../loading-overlay - session-list.tsx | Renders a list of sessions grouped by active/recent status or as a flat grid, delegating to SessionCard for individual session display. | exp: SessionListProps, func:SessionList({ sessions, onOpen, onStart, onStop, onDelete, onRecreateTunnel, onRename, actionBusyId = null, tunnelHealth = {}, showGrouping = true, activeTitle = "Active Sessions", recentTitle = "Recent Sessions", maxRecent = 5, emptyMessage = "No sessions", }: SessionListProps), call:sessions.filter, call:activeStatuses.includes, call:sessions .filter((s) => recentStatuses.includes(s.status)) .slice, call:recentStatuses.includes, call:sessions.map, call:activeSessions.map, call:recentSessions.map | dep: ../../../api/sessions, ./session-card, Session, SessionCard, InstanceHealth ## arch -Feature-based component architecture with compound component pattern (SessionCard/SessionList), controlled forms with validation, optimistic UI updates for inline editing, responsive design with mobile/desktop layout variants, and compound action menus using dropdowns/sheets. +Presentational component pattern with feature-specific compound components (form, list, card) using responsive design and inline editing for CRUD session operations. ## tags -session, call:use, call:on, api, card, call:set, event, mobile +session, call:on, api, card, call:use, call:set, list, mobile ## symbols - SessionCard - SessionList @@ -21,6 +21,7 @@ session, call:use, call:on, api, card, call:set, event, mobile - call:useState - call:useRef - call:useMobileViewport +- call:session.tool_type_interfaces?.includes ## workflows - change session behavior read: create-session-form.tsx, session-card.tsx, session-list.tsx diff --git a/apps/web/src/components/features/settings/.pi-map.index.md b/apps/web/src/components/features/settings/.pi-map.index.md index 71bec9a..dd93230 100644 --- a/apps/web/src/components/features/settings/.pi-map.index.md +++ b/apps/web/src/components/features/settings/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/web/src/components/features/settings ## role -Provides the UI components for the application's settings interface, enabling users to configure preferences through a tabbed navigation layout. +Provides the UI components for user-configurable application settings with tab-based navigation and form controls. ## parent index: apps/web/src/components/features/.pi-map.index.md map: apps/web/src/components/features/.pi-map.md diff --git a/apps/web/src/components/features/settings/.pi-map.md b/apps/web/src/components/features/settings/.pi-map.md index 4193e13..3437b42 100644 --- a/apps/web/src/components/features/settings/.pi-map.md +++ b/apps/web/src/components/features/settings/.pi-map.md @@ -4,12 +4,12 @@ dir: apps/web/src/components/features/settings index: apps/web/src/components/features/settings/.pi-map.index.md ## role -Provides the UI components for the application's settings interface, enabling users to configure preferences through a tabbed navigation layout. +Provides the UI components for user-configurable application settings with tab-based navigation and form controls. ## files -- GeneralSettingsTab.tsx | Renders a general settings tab with theme, git, editor, and notification preferences using shared outlet context | exp: GeneralSettingsTab | dep: react-router-dom, ../../icon, ../../../api/settings -- settings-tab-layout.tsx | Renders a tabbed settings layout with a sidebar navigation and active tab highlighting based on current URL path. | exp: SettingsTabLayout | dep: react, react-router-dom +- GeneralSettingsTab.tsx | Renders a general settings tab with form controls for theme, git config, default editor, and notification preferences, wired to a parent-provided save handler. | exp: GeneralSettingsTab | dep: react-router-dom, ../../icon, ../../../api/settings +- settings-tab-layout.tsx | Renders a settings page layout with a sidebar navigation of tabs and a content area for the active tab. | exp: SettingsTabLayout | dep: react, react-router-dom ## arch -Uses a tabbed layout pattern with URL-based routing for navigation state, shared React context for data access, and compound component structure separating layout shell from content panels. +Compound component pattern with a layout shell (sidebar + content area) and specialized tab content components, using controlled forms with parent-managed save handlers. ## tags settings, tab, general, layout, react, renders, router, dom ## symbols diff --git a/apps/web/src/components/features/ssh-keys/.pi-map.index.md b/apps/web/src/components/features/ssh-keys/.pi-map.index.md index ef625c2..28557cc 100644 --- a/apps/web/src/components/features/ssh-keys/.pi-map.index.md +++ b/apps/web/src/components/features/ssh-keys/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/web/src/components/features/ssh-keys ## role -Provides UI components for managing SSH keys, including creation and listing with cryptographic operations. +Provides UI components for SSH key lifecycle management including creation and listing with cryptographic operations. ## parent index: apps/web/src/components/features/.pi-map.index.md map: apps/web/src/components/features/.pi-map.md diff --git a/apps/web/src/components/features/ssh-keys/.pi-map.md b/apps/web/src/components/features/ssh-keys/.pi-map.md index b27e367..65e08d7 100644 --- a/apps/web/src/components/features/ssh-keys/.pi-map.md +++ b/apps/web/src/components/features/ssh-keys/.pi-map.md @@ -4,14 +4,14 @@ dir: apps/web/src/components/features/ssh-keys index: apps/web/src/components/features/ssh-keys/.pi-map.index.md ## role -Provides UI components for managing SSH keys, including creation and listing with cryptographic operations. +Provides UI components for SSH key lifecycle management including creation and listing with cryptographic operations. ## files -- SSHKeyCreateForm.tsx | Renders a form for creating/generating a new SSH key with name input and submit button. | exp: SSHKeyCreateForm | dep: ../../icon, React, Icon component -- SSHKeyList.tsx | Renders a list of SSH keys with signing and verification capabilities | exp: SSHKeyList | dep: ../../icon, ../../data-states, ../../../api/ssh-keys, Icon, EmptyState, ErrorState, SSHKey type +- SSHKeyCreateForm.tsx | Renders a form for creating/generating a new SSH key with name input and submit button | exp: SSHKeyCreateForm | dep: ../../icon, React, icon +- SSHKeyList.tsx | Renders a list of SSH keys with signing and signature verification capabilities | exp: SSHKeyList | dep: ../../icon, ../../data-states, ../../../api/ssh-keys, icon, data-states, api/ssh-keys ## arch -Feature-based component organization with presentational components following single-responsibility pattern (form vs list separation). +Feature-based component organization with form/list pattern separation, each component handling distinct user workflows (creation vs. management/verification). ## tags -sshkey, form, list, create, ssh, icon, renders, keys +sshkey, form, list, ssh, create, icon, keys, renders ## symbols - SSHKeyCreateForm - SSHKeyList diff --git a/apps/web/src/components/features/terminal/.pi-map.index.md b/apps/web/src/components/features/terminal/.pi-map.index.md index 644fc71..866007f 100644 --- a/apps/web/src/components/features/terminal/.pi-map.index.md +++ b/apps/web/src/components/features/terminal/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/web/src/components/features/terminal ## role -Provides a cross-platform terminal emulator interface with WebSocket backend connectivity, supporting multiple sessions, special key input, and responsive desktop/mobile layouts. +Provides responsive, cross-platform terminal UI components with session management, virtual special keys, and WebSocket-backed xterm.js integration for web-based terminal access. ## parent index: apps/web/src/components/features/.pi-map.index.md map: apps/web/src/components/features/.pi-map.md diff --git a/apps/web/src/components/features/terminal/.pi-map.md b/apps/web/src/components/features/terminal/.pi-map.md index e5a3e0b..fb39962 100644 --- a/apps/web/src/components/features/terminal/.pi-map.md +++ b/apps/web/src/components/features/terminal/.pi-map.md @@ -4,19 +4,19 @@ dir: apps/web/src/components/features/terminal index: apps/web/src/components/features/terminal/.pi-map.index.md ## role -Provides a cross-platform terminal emulator interface with WebSocket backend connectivity, supporting multiple sessions, special key input, and responsive desktop/mobile layouts. +Provides responsive, cross-platform terminal UI components with session management, virtual special keys, and WebSocket-backed xterm.js integration for web-based terminal access. ## files -- DesktopTerminalView.tsx | Renders a desktop-optimized terminal view with session tabs, fullscreen mode, font controls, and reset confirmation dialog | exp: DesktopTerminalView | dep: react, ./terminal, ./terminal-session-tabs, ../../../api/terminal, React, TerminalComponent, TerminalSessionTabs, TerminalSession type -- MobileTerminalView.tsx | Renders a mobile-optimized terminal interface with toolbar, session tabs, terminal output, and special keys input controls. | exp: MobileTerminalView | dep: react, ./terminal, ./terminal-session-tabs, ../../icon, ./special-keys-strip, ./special-keys-panel, ../../../hooks/use-special-keys, ../../../api/terminal -- special-keys-panel.tsx | Renders an overlay panel of special keyboard keys (Home, End, F1-F12, etc.) that sends terminal escape sequences when clicked, with optional modifier key support. | exp: SpecialKeysPanel | dep: react, ../../../hooks/use-special-keys, React, use-special-keys hook -- special-keys-strip.tsx | Renders a strip of buttons for sending special keyboard keys (Esc, Tab, arrows, etc.) with optional modifier support for a terminal interface. | exp: SpecialKeysStrip | dep: react, ../../../hooks/use-special-keys, React, use-special-keys hook -- terminal-session-tabs.test.tsx | Tests a React component that renders interactive terminal session tabs with selection, close confirmation, renaming, creation limits, and status indicators. | dep: @testing-library/react, vitest, ./terminal-session-tabs -- terminal-session-tabs.tsx | Renders a tabbed interface for managing multiple terminal sessions with selection, creation, renaming, and close confirmation features. | exp: TerminalSessionInfo, TerminalSessionTabsProps, TerminalSessionTabs | dep: react, React -- terminal.tsx | A React component that renders an interactive terminal emulator using xterm.js, connecting to a WebSocket backend with features like mobile touch scrolling, font resizing, flow control, heartbeat monitoring, and automatic reconnection. | exp: TerminalProps, TerminalRef, TerminalComponent | dep: react, xterm, xterm-addon-fit, xterm-addon-web-links, xterm/css/xterm.css, ../../../hooks/use-special-keys +- DesktopTerminalView.tsx | Renders a desktop terminal view with session tabs, fullscreen controls, and multiple terminal instances | exp: DesktopTerminalView | dep: react, ./terminal, ./terminal-session-tabs, ../../../api/terminal +- MobileTerminalView.tsx | Renders a mobile-optimized terminal interface with session tabs, toolbar controls, special keys input, and keyboard-aware layout adjustments. | exp: MobileTerminalView | dep: react, ./terminal, ./terminal-session-tabs, ../../icon, ./special-keys-strip, ./special-keys-panel, ../../../hooks/use-special-keys, ../../../api/terminal, terminal, terminal-session-tabs, icon, special-keys-strip, special-keys-panel, use-special-keys, api/terminal +- special-keys-panel.tsx | Renders an overlay panel of special keyboard keys (Home, End, F1-F12, Ctrl+C, etc.) that sends terminal sequences when clicked and supports modifier key combinations. | exp: SpecialKeysPanel | dep: react, ../../../hooks/use-special-keys, React, use-special-keys hook +- special-keys-strip.tsx | Renders a strip of virtual special keys (Esc, Tab, Ctrl, Alt, arrows, etc.) for sending terminal key sequences with optional modifier support. | exp: SpecialKeysStrip | dep: react, ../../../hooks/use-special-keys, use-special-keys hook +- terminal-session-tabs.test.tsx | Tests a React terminal session tabs component for rendering, selection, closing with confirmation, renaming, session limits, and connection status display. | dep: @testing-library/react, vitest, ./terminal-session-tabs +- terminal-session-tabs.tsx | Renders an interactive tab bar for managing multiple terminal sessions with selection, renaming, closing, and creation capabilities | exp: TerminalSessionInfo, TerminalSessionTabsProps, TerminalSessionTabs | dep: react, React, useState, useRef, useCallback +- terminal.tsx | A React terminal component that provides an interactive xterm.js-based terminal with WebSocket connectivity, mobile touch support, and session management. | exp: TerminalProps, TerminalRef, TerminalComponent | dep: react, xterm, xterm-addon-fit, xterm-addon-web-links, xterm/css/xterm.css, ../../../hooks/use-special-keys, React ## arch -Component-based architecture with platform-specific view variants (Desktop/Mobile), compound component pattern for terminal subsystems (tabs, special keys, xterm.js integration), and WebSocket-based real-time communication with reconnection and heartbeat monitoring. +Component-based architecture with platform-specific view layers (desktop/mobile), modular special keys subsystems (strip/overlay panel), tab-based session management with React state, and xterm.js integration via WebSocket abstraction with touch/mobile adaptations. ## tags -terminal, special, keys, session, react, tabs, view, renders +terminal, special, keys, session, tabs, react, view, strip ## symbols - DesktopTerminalView - MobileTerminalView diff --git a/apps/web/src/components/features/tool-workshop/.pi-map.index.md b/apps/web/src/components/features/tool-workshop/.pi-map.index.md index 06f0fae..0f2add7 100644 --- a/apps/web/src/components/features/tool-workshop/.pi-map.index.md +++ b/apps/web/src/components/features/tool-workshop/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/web/src/components/features/tool-workshop ## role -Provides a complete UI for managing custom tool types (compose, dockerfile, manifest) in a workshop interface with list, edit, and mobile-responsive views. +Provides the UI components for a "Tool Workshop" feature that allows users to create, edit, list, and manage tool type definitions across desktop and mobile interfaces. ## parent index: apps/web/src/components/features/.pi-map.index.md map: apps/web/src/components/features/.pi-map.md diff --git a/apps/web/src/components/features/tool-workshop/.pi-map.md b/apps/web/src/components/features/tool-workshop/.pi-map.md index e949524..6f2fc01 100644 --- a/apps/web/src/components/features/tool-workshop/.pi-map.md +++ b/apps/web/src/components/features/tool-workshop/.pi-map.md @@ -4,15 +4,15 @@ dir: apps/web/src/components/features/tool-workshop index: apps/web/src/components/features/tool-workshop/.pi-map.index.md ## role -Provides a complete UI for managing custom tool types (compose, dockerfile, manifest) in a workshop interface with list, edit, and mobile-responsive views. +Provides the UI components for a "Tool Workshop" feature that allows users to create, edit, list, and manage tool type definitions across desktop and mobile interfaces. ## files -- ToolTypeEditorPanel.tsx | Renders a form panel for creating or editing tool types with support for compose, dockerfile, and manifest definition types | exp: ToolTypeFormState, ToolTypeEditorPanel | dep: ../../icon, ../tool/manifest-editor, ../../../api/tool-types, ../../../api/tool-definitions, React, Icon, ManifestEditor -- ToolTypeListSidebar.tsx | Renders a sidebar component for listing, selecting, creating, and deleting tool types in a "Tool Workshop" interface. | exp: ToolTypeListSidebar | dep: ../../icon, ../../../api/tool-types, React, Icon component, ToolType type -- ToolWorkshopMobileView.tsx | Renders a mobile-responsive workshop interface for managing tool types with list, detail, and edit views. | exp: MobileView, ToolWorkshopMobileView | dep: react, ../mobile/mobile-list-view, ../mobile/mobile-detail-view, ../mobile/mobile-edit-view, ../mobile/mobile-fab, ../tool/manifest-editor, ../../icon, ../../../api/tool-types, ./ToolTypeEditorPanel, ../../../api/tool-definitions, mobile-list-view, mobile-detail-view, mobile-edit-view, mobile-fab, manifest-editor, icon, tool-types, tool-definitions +- ToolTypeEditorPanel.tsx | Renders a form panel for creating or editing tool type definitions with support for compose, dockerfile, and manifest definition types. | exp: ToolTypeFormState, ToolTypeEditorPanel | dep: ../../icon, ../tool/manifest-editor, ../../../api/tool-types, ../../../api/tool-definitions, React, Icon, ManifestEditor, ToolType, ToolDefinitionManifest +- ToolTypeListSidebar.tsx | Renders a sidebar listing tool types with selection, creation, and deletion capabilities | exp: ToolTypeListSidebar | dep: ../../icon, ../../../api/tool-types, react, icon component, tool-types API type +- ToolWorkshopMobileView.tsx | Renders a mobile-responsive three-view (list/detail/edit) interface for managing tool types in a Tool Workshop, with conditional form fields based on definition type and interface type. | exp: MobileView, ToolWorkshopMobileView | dep: react, ../mobile/mobile-list-view, ../mobile/mobile-detail-view, ../mobile/mobile-edit-view, ../mobile/mobile-fab, ../tool/manifest-editor, ../../icon, ../../../api/tool-types, ./ToolTypeEditorPanel, ../../../api/tool-definitions, mobile-list-view, mobile-detail-view, mobile-edit-view, mobile-fab, manifest-editor, icon, tool-types, tool-definitions ## arch -Feature-based component composition with split-pane layout (sidebar + editor panel), responsive mobile adaptation, and CRUD operations for tool type definitions. +Follows a split-pane layout pattern with sidebar list + detail/editor panels, using a mobile-specific three-view navigation variant; components are feature-scoped with prop-driven data flow and conditional rendering based on definition/interface type enums. ## tags -tool, mobile, view, type, types, editor, list, workshop +tool, mobile, type, view, types, editor, list, panel ## symbols - ToolTypeFormState - ToolTypeEditorPanel diff --git a/apps/web/src/components/features/tool/.pi-map.index.md b/apps/web/src/components/features/tool/.pi-map.index.md index 122f0cb..ad49a13 100644 --- a/apps/web/src/components/features/tool/.pi-map.index.md +++ b/apps/web/src/components/features/tool/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/web/src/components/features/tool ## role -Provides React components for managing container-based development tools, including instance lifecycle, manifest editing, and workspace-integrated tool launching. +Provides UI components for managing containerized development tools, including instance lifecycle management, manifest configuration, and workspace-integrated tool launching. ## parent index: apps/web/src/components/features/.pi-map.index.md map: apps/web/src/components/features/.pi-map.md diff --git a/apps/web/src/components/features/tool/.pi-map.md b/apps/web/src/components/features/tool/.pi-map.md index 45fe261..da8988e 100644 --- a/apps/web/src/components/features/tool/.pi-map.md +++ b/apps/web/src/components/features/tool/.pi-map.md @@ -4,18 +4,18 @@ dir: apps/web/src/components/features/tool index: apps/web/src/components/features/tool/.pi-map.index.md ## role -Provides React components for managing container-based development tools, including instance lifecycle, manifest editing, and workspace-integrated tool launching. +Provides UI components for managing containerized development tools, including instance lifecycle management, manifest configuration, and workspace-integrated tool launching. ## files -- instance-list.tsx | Displays and manages a list of tool instances with CRUD operations, real-time status updates, and configuration profile selection. | exp: InstanceList | dep: react, react-router-dom, ../../icon, ../../../api/sessions, ../../../api/tool-types, ../session/create-session-form, ../../../api/config-profiles, ../../../api/ssh-keys, ../../../state/events, ../../../state/sessions, icon, api/sessions, api/tool-types, api/config-profiles, api/ssh-keys, state/events, state/sessions -- manifest-editor.tsx | A React component that provides a form-based UI for editing container tool definition manifests with fields for base images, packages, user config, environment variables, scripts, mounts, and runtime settings, including compilation preview functionality. | exp: ManifestEditor | dep: react, ../../icon, ../../../utils/errors, ../../../api/tool-definitions, icon, errors, tool-definitions -- start-tool-fab.tsx | A floating action button component that opens a modal to select a workspace and start a tool. | exp: func:StartToolFAB(), call:useState, call:setOpen, call:setWorkspacesLoading, call:listAllWorkspaces, call:setWorkspaces, call:setSelectedWorkspace, call:e.stopPropagation, call:workspaces.find, call:workspaces.map | dep: react, ../../icon, ./tool-starter, ../../../types/workspace, ../../../api/workspaces, icon, tool-starter, workspaces api, workspace types -- start-tool-modal.tsx | Renders a modal dialog for selecting a tool type and optional config profile to start on a workspace. | exp: StartToolModalProps, func:StartToolModal({ workspace, onClose, onStart, }: StartToolModalProps), call:useState, call:useAsyncData, call:e.preventDefault, call:setError, call:setSubmitting, call:onStart, call:onClose, call:e.stopPropagation, call:setToolTypeId, call:toolTypes?.map, call:setConfigProfileId | dep: react, ../../icon, ../../../api/tool-types, ../../../hooks/use-async-data, ../../../types/workspace, icon, tool-types, use-async-data, workspace -- tool-starter.tsx | A React component that provides a workspace-first UI for selecting tool types, config profiles, and SSH keys to create and start a new tool instance/session. | exp: ToolStarterProps, func:ToolStarter({ workspace, onStarted, onCancel, }: ToolStarterProps), call:useSessions, call:useSessionOperations, call:useState, call:useEffect, call:listToolTypes, call:setToolTypes, call:setToolTypesError, call:setToolTypesLoading, call:load, call:setProfiles, call:setSelectedProfileId, call:setProfilesLoading, call:listConfigProfiles, call:data.find, call:listSSHKeys, call:setSshKeys, call:setSelectedSshKeyIds, call:console.error, call:setSshKeysLoading, call:sshKeys.find, call:useCallback, call:setError, call:setStarting, call:createInstance, call:displayName.trim, call:startInstance, call:addOrUpdateSession, call:startOperation, call:onStarted, call:setSelectedToolTypeId, call:toolTypes.find, call:setDisplayName, call:toolTypes.map, call:setNameEdited, call:profiles.map, call:sshKeys.map, call:selectedSshKeyIds.includes, call:prev.filter | dep: react, ../../icon, ../../../api/tool-types, ../../../api/config-profiles, ../../../api/ssh-keys, ../../../state/sessions, ../../../state/session-operations, ../../../types/workspace, ../../../api/sessions, icon, tool-types, config-profiles, ssh-keys, sessions, session-operations, workspace +- instance-list.tsx | React component that displays and manages a list of tool instances with CRUD operations, real-time status updates, and configuration profile selection. | exp: InstanceList | dep: react, react-router-dom, ../../icon, ../../loading-overlay, ../../../api/sessions, ../../../api/tool-types, ../session/create-session-form, ../../../api/config-profiles, ../../../api/ssh-keys, ../../../state/events, ../../../state/sessions +- manifest-editor.tsx | A React component that provides a form-based UI for editing container manifest configurations including base images, packages, environment variables, scripts, mounts, and runtime settings, with live preview generation capability. | exp: ManifestEditor | dep: react, ../../icon, ../../../utils/errors, ../../../api/tool-definitions, icon, errors utils, tool-definitions API +- start-tool-fab.tsx | Renders a floating action button that opens a modal to select a workspace and start a tool. | exp: func:StartToolFAB(), call:useState, call:setOpen, call:setWorkspacesLoading, call:listAllWorkspaces, call:setWorkspaces, call:setSelectedWorkspace, call:e.stopPropagation, call:workspaces.find, call:workspaces.map | dep: react, ../../icon, ./tool-starter, ../../../types/workspace, ../../../api/workspaces, icon, tool-starter, workspace types, workspaces api +- start-tool-modal.tsx | React modal component for selecting a tool type and optional config profile to start a tool on a workspace | exp: StartToolModalProps, func:StartToolModal({ workspace, onClose, onStart, }: StartToolModalProps), call:useState, call:useAsyncData, call:e.preventDefault, call:setError, call:setSubmitting, call:onStart, call:onClose, call:e.stopPropagation, call:setToolTypeId, call:toolTypes?.map, call:setConfigProfileId | dep: react, ../../icon, ../../../api/tool-types, ../../../hooks/use-async-data, ../../../types/workspace +- tool-starter.tsx | React component for starting a tool instance within a workspace with configurable tool types, profiles, and SSH keys | exp: ToolStarterProps, func:ToolStarter({ workspace, onStarted, onCancel, }: ToolStarterProps), call:useSessions, call:useState, call:useEffect, call:listToolTypes, call:setToolTypes, call:setToolTypesError, call:setToolTypesLoading, call:load, call:setProfiles, call:setSelectedProfileId, call:setProfilesLoading, call:listConfigProfiles, call:data.find, call:listSSHKeys, call:setSshKeys, call:setSelectedSshKeyIds, call:console.error, call:setSshKeysLoading, call:sshKeys.find, call:useCallback, call:setError, call:setStarting, call:createInstance, call:displayName.trim, call:startInstance, call:addOrUpdateSession, call:onStarted, call:setSelectedToolTypeId, call:toolTypes.find, call:setDisplayName, call:toolTypes.map, call:setNameEdited, call:profiles.map, call:sshKeys.map, call:selectedSshKeyIds.includes, call:prev.filter | dep: react, ../../icon, ../../loading-overlay, ../../../api/tool-types, ../../../api/config-profiles, ../../../api/ssh-keys, ../../../state/sessions, ../../../types/workspace, ../../../api/sessions, icon, loading-overlay, tool-types, config-profiles, ssh-keys, sessions, workspace types, sessions api - tools-bottom-sheet.tsx | Renders a mobile bottom sheet navigation menu for tools with active route highlighting | exp: ToolsBottomSheet | dep: react-router-dom, ../../icon, icon ## arch -Feature-based component architecture with modal/sheet UI patterns, form-driven configuration editing, and workspace-contextual tool orchestration with mobile-responsive navigation. +Feature-based React component architecture with modal/bottom-sheet mobile-responsive patterns, form-driven configuration editing with live preview, and workspace-contextual tool orchestration. ## tags -tool, call:set, types, call:use, api, start, ssh, icon +call:set, tool, types, start, call:use, ssh, react, loading ## symbols - StartToolFAB - StartToolModal diff --git a/apps/web/src/components/features/workspace/.pi-map.index.md b/apps/web/src/components/features/workspace/.pi-map.index.md index 8f34cc6..50a664a 100644 --- a/apps/web/src/components/features/workspace/.pi-map.index.md +++ b/apps/web/src/components/features/workspace/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/web/src/components/features/workspace ## role -Provides the complete UI component suite for workspace management, including creation, detail viewing, file editing, Git operations, tool management, and settings. +Provides UI components for workspace management, navigation, and operations in a web-based development environment. ## parent index: apps/web/src/components/features/.pi-map.index.md map: apps/web/src/components/features/.pi-map.md diff --git a/apps/web/src/components/features/workspace/.pi-map.md b/apps/web/src/components/features/workspace/.pi-map.md index 24e7fa7..c103b6c 100644 --- a/apps/web/src/components/features/workspace/.pi-map.md +++ b/apps/web/src/components/features/workspace/.pi-map.md @@ -4,22 +4,22 @@ dir: apps/web/src/components/features/workspace index: apps/web/src/components/features/workspace/.pi-map.index.md ## role -Provides the complete UI component suite for workspace management, including creation, detail viewing, file editing, Git operations, tool management, and settings. +Provides UI components for workspace management, navigation, and operations in a web-based development environment. ## files - workspace-card.tsx | React component that renders a card displaying workspace information with status, metadata, and action buttons. | exp: WorkspaceCardProps, func:WorkspaceCard({ workspace, loading = false, onStartTool, onSync, onDelete, }: WorkspaceCardProps), call:onStartTool, call:onSync, call:onDelete | dep: react-router-dom, ../../icon, ./workspace-instance-chips, ../../../types/workspace -- workspace-create-form.tsx | React form component for creating workspaces with cascading project/repository/branch selectors and support for both contextual and standalone modes | exp: WorkspaceCreateFormProps, func:WorkspaceCreateForm({ onSubmit, onCancel, defaultProjectId, defaultRepoId, }: WorkspaceCreateFormProps), call:Boolean, call:useState, call:useGitRepo, call:useEffect, call:git.branches.includes, call:setSelectedBranch, call:setIsNewBranch, call:useCallback, call:listProjects, call:setProjects, call:setSelectedProject, call:setError, call:setFetchingProjects, call:loadProjects, call:setRepos, call:setSelectedRepo, call:listRepositories, call:loadRepos, call:setNewBranchName, call:e.preventDefault, call:name.trim, call:newBranchName.trim, call:setSubmitting, call:createWorkspaceTopLevel, call:onSubmit, call:projects.map, call:repos.map, call:setName, call:handleBranchChange, call:git.branches.map | dep: react, ../../icon, ../../../api/projects, ../../../api/git-repositories, ../../../api/workspaces, ../../../hooks/use-git-repo, ../../../types, icon, api/projects, api/git-repositories, api/workspaces, hooks/use-git-repo, types -- workspace-detail-header.tsx | Renders a header component for a workspace detail page showing breadcrumb navigation and branch information. | exp: WorkspaceDetailHeaderProps, func:WorkspaceDetailHeader({ workspace, }: WorkspaceDetailHeaderProps) | dep: ../../icon, react -- workspace-file-panel.tsx | Renders a file browser and editor panel with Git integration for a workspace detail page. | exp: func:WorkspaceFilePanel({ workspaceId }: WorkspaceFilePanelProps), call:useWorkspaceFiles, call:useWorkspaceGit, call:useState, call:setSelectedPath, call:setIsEditing, call:setEditContent, call:navigateTo, call:loadFile, call:currentPath.split("/").slice(0, -1).join, call:saveFile, call:setCommitMessage, call:commit, call:entries.map, call:handleSelect | dep: react, ../../icon, ../../../hooks/use-workspace-files, ../../../hooks/use-workspace-git, ../../../api/workspace-files -- workspace-git-panel.tsx | Renders a Git panel for a workspace detail page that displays branch selection and commit history. | exp: func:WorkspaceGitPanel({ workspaceId }: WorkspaceGitPanelProps), call:useWorkspaceGit, call:checkout, call:branches.map, call:history.map, call:commit.hash.slice | dep: ../../../hooks/use-workspace-git, react, use-workspace-git hook -- workspace-header.tsx | Renders a workspace header component displaying project info with navigation links to history and settings pages. | exp: WorkspaceHeader | dep: react-router-dom, ../../icon, icon +- workspace-create-form.tsx | A React form component for creating workspaces with cascading project/repository/branch selectors and support for both contextual (pre-selected) and standalone modes. | exp: WorkspaceCreateFormProps, func:WorkspaceCreateForm({ onSubmit, onCancel, defaultProjectId, defaultRepoId, }: WorkspaceCreateFormProps), call:Boolean, call:useState, call:useGitRepo, call:useEffect, call:git.branches.includes, call:setSelectedBranch, call:setIsNewBranch, call:useCallback, call:listProjects, call:setProjects, call:setSelectedProject, call:setError, call:setFetchingProjects, call:loadProjects, call:setRepos, call:setSelectedRepo, call:listRepositories, call:loadRepos, call:setNewBranchName, call:e.preventDefault, call:name.trim, call:newBranchName.trim, call:setSubmitting, call:createWorkspaceTopLevel, call:onSubmit, call:projects.map, call:repos.map, call:setName, call:handleBranchChange, call:git.branches.map | dep: react, ../../icon, ../../../api/projects, ../../../api/git-repositories, ../../../api/workspaces, ../../../hooks/use-git-repo, ../../../types, icon component, projects API, git-repositories API, workspaces API, use-git-repo hook +- workspace-detail-header.tsx | Renders a header component for a workspace detail page showing breadcrumb navigation and branch information. | exp: WorkspaceDetailHeaderProps, func:WorkspaceDetailHeader({ workspace, }: WorkspaceDetailHeaderProps) | dep: ../../icon, icon +- workspace-file-panel.tsx | Renders a file browser and editor panel for a workspace with integrated Git status and operations toolbar. | exp: func:WorkspaceFilePanel({ workspaceId }: WorkspaceFilePanelProps), call:useWorkspaceFiles, call:useWorkspaceGit, call:useState, call:setSelectedPath, call:setIsEditing, call:setEditContent, call:navigateTo, call:loadFile, call:currentPath.split("/").slice(0, -1).join, call:saveFile, call:setCommitMessage, call:commit, call:entries.map, call:handleSelect | dep: react, ../../icon, ../../../hooks/use-workspace-files, ../../../hooks/use-workspace-git, ../../../api/workspace-files +- workspace-git-panel.tsx | Renders a Git panel for a workspace detail page showing branch selector and commit history. | exp: func:WorkspaceGitPanel({ workspaceId }: WorkspaceGitPanelProps), call:useWorkspaceGit, call:checkout, call:branches.map, call:history.map, call:commit.hash.slice | dep: ../../../hooks/use-workspace-git, react, use-workspace-git hook +- workspace-header.tsx | Renders a workspace header component displaying project info, current repository, and navigation links to history and settings pages. | exp: WorkspaceHeader | dep: react-router-dom, ../../icon, icon - workspace-instance-chips.tsx | Displays running tool instances for a workspace as clickable status chips with external links. | exp: func:WorkspaceInstanceChips({ workspaceId, }: WorkspaceInstanceChipsProps), call:useState, call:useEffect, call:listWorkspaceInstances, call:setInstances, call:setLoading, call:load, call:instances.map, call:e.stopPropagation | dep: react, ../../../api/workspace-instances, ../../../api/sessions -- workspace-settings-panel.tsx | Displays a read-only settings panel showing workspace information details | exp: func:WorkspaceSettingsPanel({ workspace, }: WorkspaceSettingsPanelProps) | dep: ../../../types/workspace, React, Workspace type -- workspace-tab-bar.tsx | Renders desktop and mobile tab bar components for workspace navigation with files, git, tools, and settings tabs. | exp: WorkspaceTab, func:WorkspaceTabBar({ active, onChange }: WorkspaceTabBarProps), call:TABS.map, call:onChange, func:WorkspaceMobileTabBar({ active, onChange, }: WorkspaceTabBarProps), call:TABS.map, call:onChange | dep: ../../icon, react -- workspace-tools-panel.tsx | Renders a tools management panel for a workspace that displays running tool instances and allows starting new tools via a modal | exp: func:WorkspaceToolsPanel({ workspace }: WorkspaceToolsPanelProps), call:useWorkspaceInstances, call:useState, call:setShowModal, call:instances.map, call:e.stopPropagation, call:refresh | dep: react, ../../icon, ../tool/tool-starter, ../../../hooks/use-workspace-instances, ../../../types/workspace, icon, tool-starter, use-workspace-instances, workspace types +- workspace-settings-panel.tsx | Displays a read-only settings panel showing workspace information for a workspace detail page. | exp: func:WorkspaceSettingsPanel({ workspace, }: WorkspaceSettingsPanelProps) | dep: ../../../types/workspace, React, types/workspace +- workspace-tab-bar.tsx | Renders a tab bar navigation component for workspace detail pages with desktop and mobile variants. | exp: WorkspaceTab, func:WorkspaceTabBar({ active, onChange }: WorkspaceTabBarProps), call:TABS.map, call:onChange, func:WorkspaceMobileTabBar({ active, onChange, }: WorkspaceTabBarProps), call:TABS.map, call:onChange | dep: ../../icon, icon +- workspace-tools-panel.tsx | Renders a tools management panel for a workspace that displays running tool instances and provides a modal to start new tools. | exp: func:WorkspaceToolsPanel({ workspace }: WorkspaceToolsPanelProps), call:useWorkspaceInstances, call:useState, call:setShowModal, call:instances.map, call:e.stopPropagation, call:refresh | dep: react, ../../icon, ../tool/tool-starter, ../../../hooks/use-workspace-instances, ../../../types/workspace ## arch -Feature-based component organization with compound page pattern (header/tab-bar/panels), form abstraction for creation, and modal-driven tool management with responsive mobile/desktop tab navigation. +Feature-based component architecture with compound UI pattern - specialized sub-components (header, panels, forms, navigation) compose into complete workspace views, using container/presentational separation with integrated Git tooling and multi-modal workspace interactions. ## tags -workspace, call:set, call:use, panel, git, branch, react, call:on +workspace, call:set, call:use, panel, git, branch, call:on, header ## symbols - WorkspaceCard - WorkspaceCreateForm diff --git a/apps/web/src/hooks/.pi-map.index.md b/apps/web/src/hooks/.pi-map.index.md index 50c59ca..a899383 100644 --- a/apps/web/src/hooks/.pi-map.index.md +++ b/apps/web/src/hooks/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/web/src/hooks ## role -Provides reusable React custom hooks that encapsulate stateful logic, side effects, and API interactions for the web application's UI components, covering data fetching, terminal management, workspace operations, notifications, and mobile-specific behaviors. +A collection of custom React hooks that encapsulate domain-specific business logic, API interactions, and UI state management for a cloud workspace/terminal IDE web application. ## parent index: apps/web/src/.pi-map.index.md map: apps/web/src/.pi-map.md diff --git a/apps/web/src/hooks/.pi-map.md b/apps/web/src/hooks/.pi-map.md index 951b05e..35584e1 100644 --- a/apps/web/src/hooks/.pi-map.md +++ b/apps/web/src/hooks/.pi-map.md @@ -4,34 +4,34 @@ dir: apps/web/src/hooks index: apps/web/src/hooks/.pi-map.index.md ## role -Provides reusable React custom hooks that encapsulate stateful logic, side effects, and API interactions for the web application's UI components, covering data fetching, terminal management, workspace operations, notifications, and mobile-specific behaviors. +A collection of custom React hooks that encapsulate domain-specific business logic, API interactions, and UI state management for a cloud workspace/terminal IDE web application. ## files -- use-async-data.ts | A custom React hook that manages asynchronous data fetching with loading, error, and ready states, plus a manual reload capability. | exp: func:useAsyncData(fetcher: () => Promise, deps: React.DependencyList) → UseAsyncDataResult, call:useState, call:useCallback, call:setStatus, call:setError, call:fetcher, call:setData, call:load, call:useEffect | dep: react -- use-auto-hide.ts | A React custom hook that automatically hides an element after a specified timeout and provides manual controls for showing, hiding, and toggling visibility. | exp: func:useAutoHide(options: AutoHideOptions), call:useState, call:useRef, call:Date.now, call:useCallback, call:setIsVisible, call:clearTimeout, call:setTimeout, call:hide, call:show, call:useEffect | dep: react -- use-config-profiles.ts | A React custom hook that manages CRUD operations, form state, drag-and-drop ordering, and cyclic dependency prevention for configuration profiles. | exp: useConfigProfiles | dep: react, ../utils/errors, ../api/config-profiles, ../api/projects, ../api/tool-types, ../types -- use-events.test.ts | Tests a React hook that manages Server-Sent Events (SSE) connections with automatic reconnection, backoff, and error handling | dep: vitest, @testing-library/react, ./use-events, ../api/events, use-events hook -- use-events.ts | React hook that manages a Server-Sent Events connection with automatic exponential backoff reconnection, lifecycle event handling, and authentication redirect on 401 errors. | exp: UseEventsReturn, func:useEvents() → UseEventsReturn, call:useState, call:useRef, call:useCallback, call:clearTimeout, call:createEventSource, call:setConnected, call:setError, call:setReconnectCount, call:JSON.parse, call:setEvents, call:es.addEventListener, call:es.close, call:Math.min, call:Math.pow, call:Math.random, call:setTimeout, call:probeEventStreamStatus, call:window.location.assign, call:connect, call:useEffect, call:esRef.current.close | dep: react, ../api/events, ../types/events -- use-git-repo.ts | A custom React hook that centralizes all git repository operations (branch management, status tracking, commit history, and git actions) into a reusable interface for components. | exp: GitStatus, UseGitRepoResult, func:useGitRepo(projectId: string | undefined, repoId: string | undefined) → UseGitRepoResult, call:useState, call:useCallback, call:setLoading, call:setError, call:fn, call:extractError, call:withLoading, call:listRepositoryBranches, call:setBranches, call:data.branches.map, call:setDefaultBranch, call:getRepositoryStatus, call:setStatus, call:getRepositoryHistory, call:setHistory, call:getCommitDetail, call:setCommitDetail, call:commitChanges, call:refreshStatus, call:pushRepository, call:pullRepository, call:fetchRepository, call:checkoutBranch, call:refreshBranches, call:createBranch, call:deleteBranch, call:mergeBranches, call:refreshHistory, call:useEffect, raise:err | dep: react, ../api/git-repositories -- use-instance-actions.ts | A React custom hook that manages instance/session actions including opening, starting, stopping, deleting, force-deleting, recreating tunnels, and renaming with loading states and dirty delete handling. | exp: func:useInstanceActions(options: UseInstanceActionsOptions) → UseInstanceActionsReturn, call:useSessions, call:useState, call:useRef, call:useCallback, call:tabRefs.current.get, call:existing.focus, call:session.tool_type_interfaces?.includes, call:window.open, call:tabRefs.current.set, call:setLoadingSessionId, call:startInstance, call:onRefresh, call:stopInstance, call:deleteInstance, call:setDirtyDeleteSession, call:setDirtyDeleteFiles, call:removeSession, call:recreateInstanceTunnel, call:alert, call:newName.trim, call:renameInstance | dep: react, ../api/sessions, ../state/sessions -- use-mobile-viewport.ts | A React hook that tracks whether the viewport width is below a mobile breakpoint (768px) | exp: func:useMobileViewport(), call:useState, call:useEffect, call:setIsMobile, call:window.addEventListener, call:window.removeEventListener | dep: react -- use-notifications.test.tsx | Tests the useNotifications custom React hook with mocked API calls, covering optimistic updates, polling behavior, and error handling. | dep: vitest, @testing-library/react, ./use-notifications, ../state/notifications, ../api/notifications, use-notifications -- use-notifications.ts | Custom React hook that provides access to notification state and ensures it's used within a NotificationProvider | exp: func:useNotifications(), call:useContext, raise:Error | dep: react, ../state/notifications -- use-projects.ts | Custom React hook for managing project CRUD operations, workspace management, and dialog state for a project management UI | exp: useProjects | dep: react, ../api/projects, ../api/workspaces, ./use-async-data, ../types -- use-special-keys.ts | Maps special keys and modifier+character combinations to ANSI escape sequences for terminal input simulation. | exp: SpecialKey, ModifierKey, func:getSequenceWithModifier(key: SpecialKey, activeModifier: ModifierKey | null) → { sequence: string; clearModifier: boolean } | null, call:char.toLowerCase, func:applyModifierToChar(char: string, modifier: ModifierKey) → string | null, call:char.toLowerCase -- use-ssh-keys.ts | A React custom hook that manages SSH key operations including listing, generating, deleting, signing payloads, and verifying signatures. | exp: useSSHKeys | dep: react, ../api/ssh-keys, ./use-async-data -- use-start-tool.ts | React hook for managing the state and API calls to create and start a tool instance on a workspace. | exp: UseStartToolResult, func:useStartTool() → UseStartToolResult, call:useState, call:useCallback, call:setStarting, call:setError, call:createInstance, call:startInstance | dep: react, ../api/sessions, ../types/workspace -- use-terminal-page.ts | Manages terminal page state including sessions, keyboard shortcuts, fullscreen mode, mobile viewport handling, and terminal lifecycle operations. | exp: useTerminalPage | dep: react, react-router-dom, ../components/features/terminal/terminal, ../components/features/terminal/terminal-session-tabs, ./use-mobile-viewport, ./use-auto-hide, ./use-virtual-keyboard, ./use-terminal-sessions, ../api/terminal, ./use-special-keys, use-mobile-viewport, use-auto-hide, use-virtual-keyboard, use-terminal-sessions, terminal, terminal-session-tabs, api/terminal, api/sessions, use-special-keys -- use-terminal-sessions.ts | React custom hook that manages terminal session state (CRUD operations, active session tracking) for a given instance | exp: UseTerminalSessionsResult, func:useTerminalSessions(instanceId: string) → UseTerminalSessionsResult, call:useState, call:useCallback, call:setLoading, call:setError, call:listTerminalSessions, call:setSessions, call:setActiveSessionId, call:createTerminalSession, call:closeTerminalSession, call:prev.filter, call:renameTerminalSession, call:prev.map, call:resetTerminalSession, call:loadSessions, call:useEffect | dep: react, ../api/terminal -- use-theme.ts | React hook that fetches user theme preference on mount and applies it to the document root element via data-theme attribute | exp: func:useTheme(), call:useEffect, call:getUserConfig, call:document.documentElement.removeAttribute, call:document.documentElement.setAttribute | dep: react, ../api/settings -- use-tool-workshop.ts | Custom React hook that manages state and operations for a tool workshop UI, including CRUD operations for tool types and tool definitions with form handling and validation. | exp: useToolWorkshop | dep: react, ../utils/errors, ../api/tool-types, ../api/tool-definitions, ../components/features/tool-workshop/ToolTypeEditorPanel -- use-virtual-keyboard.ts | React hook that detects virtual keyboard open/close state and measures its height on mobile devices | exp: func:useVirtualKeyboard(), call:useState, call:useCallback, call:setState, call:useEffect, call:visualViewport.addEventListener, call:window.addEventListener, call:updateKeyboardState, call:visualViewport.removeEventListener, call:window.removeEventListener | dep: react -- use-workspace-actions.ts | Provides a React hook that encapsulates workspace CRUD operations with loading state management and user confirmation dialogs for destructive actions. | exp: UseWorkspaceActionsResult, func:useWorkspaceActions() → UseWorkspaceActionsResult, call:useState, call:useCallback, call:createWorkspace, call:setLoadingId, call:deleteWorkspace, call:onRefresh, call:window.confirm, call:instances.map((i) => `- ${i.name}`).join, call:syncWorkspace, call:updateWorkspace, raise:err | dep: react, ../api/workspaces, ../types/workspace -- use-workspace-files.ts | Custom React hook for managing workspace file operations including listing, loading, saving, and navigating files. | exp: UseWorkspaceFilesResult, func:useWorkspaceFiles(workspaceId: string) → UseWorkspaceFilesResult, call:useState, call:useCallback, call:setLoading, call:setError, call:listWorkspaceFiles, call:setEntries, call:setCurrentPath, call:setContent, call:getWorkspaceFileContent, call:saveWorkspaceFile, call:refresh, call:useEffect | dep: react, ../api/workspace-files -- use-workspace-git.ts | Custom React hook that provides git operations and state management for a workspace | exp: UseWorkspaceGitResult, func:useWorkspaceGit(workspaceId: string) → UseWorkspaceGitResult, call:useState, call:useCallback, call:setLoading, call:setError, call:Promise.all, call:getGitStatus, call:getGitBranches, call:getGitHistory, call:setStatus, call:setBranches, call:setCurrentBranch, call:setHistory, call:gitCommit, call:refresh, call:gitPush, call:gitPull, call:gitFetch, call:gitCheckout, call:useEffect | dep: react, ../api/workspace-git -- use-workspace-instances.ts | Custom React hook for managing workspace instances with CRUD operations, loading states, and error handling. | exp: UseWorkspaceInstancesResult, func:useWorkspaceInstances(workspaceId: string) → UseWorkspaceInstancesResult, call:useState, call:useCallback, call:setLoading, call:setError, call:listWorkspaceInstances, call:setInstances, call:createWorkspaceInstance, call:refresh, call:useEffect | dep: react, ../api/workspace-instances, ../api/sessions -- use-workspaces.ts | Custom React hook that fetches and manages workspace data with loading and error states. | exp: UseWorkspacesResult, func:useWorkspaces(projectId: string, repoId: string) → UseWorkspacesResult, call:useState, call:useCallback, call:setLoading, call:setError, call:listWorkspaces, call:listAllWorkspaces, call:setWorkspaces, call:useEffect, call:refresh | dep: react, ../api/workspaces, ../types/workspace +- use-async-data.ts | A custom React hook that manages asynchronous data fetching with loading, error, and success states. | exp: func:useAsyncData(fetcher: () => Promise, deps: React.DependencyList) → UseAsyncDataResult, call:useState, call:useCallback, call:setStatus, call:setError, call:fetcher, call:setData, call:load, call:useEffect | dep: react +- use-auto-hide.ts | React hook that automatically hides UI elements after a period of inactivity, with manual controls to show/hide/toggle visibility. | exp: func:useAutoHide(options: AutoHideOptions), call:useState, call:useRef, call:Date.now, call:useCallback, call:setIsVisible, call:clearTimeout, call:setTimeout, call:hide, call:show, call:useEffect | dep: react +- use-config-profiles.ts | React custom hook for managing configuration profiles with CRUD operations, profile inclusion with cycle detection, drag-and-drop reordering, and form state management. | exp: useConfigProfiles | dep: react, ../utils/errors, ../api/config-profiles, ../api/projects, ../api/tool-types, ../types +- use-events.test.ts | Tests a React hook that manages Server-Sent Events (SSE) connections with automatic reconnection, backoff, and error handling | dep: vitest, @testing-library/react, ./use-events, ../api/events, use-events hook, ../api/events module +- use-events.ts | Manages a Server-Sent Events (SSE) connection with exponential backoff reconnection, lifecycle event listening, and authentication redirect handling in a React hook. | exp: UseEventsReturn, func:useEvents() → UseEventsReturn, call:useState, call:useRef, call:useCallback, call:clearTimeout, call:createEventSource, call:setConnected, call:setError, call:setReconnectCount, call:JSON.parse, call:setEvents, call:es.addEventListener, call:es.close, call:Math.min, call:Math.pow, call:Math.random, call:setTimeout, call:probeEventStreamStatus, call:window.location.assign, call:connect, call:useEffect, call:esRef.current.close | dep: react, ../api/events, ../types/events +- use-git-repo.ts | A React custom hook that centralizes git repository operations including branch management, status tracking, commit history, and remote actions for a given project/repo ID pair. | exp: GitStatus, UseGitRepoResult, func:useGitRepo(projectId: string | undefined, repoId: string | undefined) → UseGitRepoResult, call:useState, call:useCallback, call:setLoading, call:setError, call:fn, call:extractError, call:withLoading, call:listRepositoryBranches, call:setBranches, call:data.branches.map, call:setDefaultBranch, call:getRepositoryStatus, call:setStatus, call:getRepositoryHistory, call:setHistory, call:getCommitDetail, call:setCommitDetail, call:commitChanges, call:refreshStatus, call:pushRepository, call:pullRepository, call:fetchRepository, call:checkoutBranch, call:refreshBranches, call:createBranch, call:deleteBranch, call:mergeBranches, call:refreshHistory, call:useEffect, raise:err | dep: react, ../api/git-repositories +- use-instance-actions.ts | A React custom hook that manages instance actions (start, stop, delete, rename, recreate tunnel, open) with loading states and dirty delete handling. | exp: func:useInstanceActions(options: UseInstanceActionsOptions) → UseInstanceActionsReturn, call:useSessions, call:useState, call:useCallback, call:openSession, call:setLoadingSessionId, call:startInstance, call:onRefresh, call:stopInstance, call:deleteInstance, call:setDirtyDeleteSession, call:setDirtyDeleteFiles, call:removeSession, call:recreateInstanceTunnel, call:alert, call:newName.trim, call:renameInstance | dep: react, ../api/sessions, ../state/sessions, ../utils/open-session +- use-mobile-viewport.ts | Custom React hook that returns a boolean indicating whether the viewport width is below a mobile breakpoint (768px) | exp: func:useMobileViewport(), call:useState, call:useEffect, call:setIsMobile, call:window.addEventListener, call:window.removeEventListener | dep: react +- use-notifications.test.tsx | Tests a React hook for managing notifications with optimistic updates, polling, and error handling. | dep: vitest, @testing-library/react, ./use-notifications, ../state/notifications, ../api/notifications, use-notifications, NotificationProvider, notifications API +- use-notifications.ts | Custom React hook that provides access to notification context with runtime validation that it's used within a provider | exp: func:useNotifications(), call:useContext, raise:Error | dep: react, ../state/notifications +- use-projects.ts | Custom React hook that manages project CRUD operations, workspace synchronization, and UI state for a project management interface | exp: useProjects | dep: react, ../api/projects, ../api/workspaces, ./use-async-data, ../types +- use-special-keys.ts | Provides ANSI escape sequences and modifier key mappings for terminal special key handling in a React hook or terminal emulator. | exp: SpecialKey, ModifierKey, func:getSequenceWithModifier(key: SpecialKey, activeModifier: ModifierKey | null) → { sequence: string; clearModifier: boolean } | null, call:char.toLowerCase, func:applyModifierToChar(char: string, modifier: ModifierKey) → string | null, call:char.toLowerCase +- use-ssh-keys.ts | React custom hook that manages SSH key CRUD operations, cryptographic signing/verification, and clipboard functionality with async state handling. | exp: useSSHKeys | dep: react, ../api/ssh-keys, ./use-async-data +- use-start-tool.ts | React hook that manages the state and API calls for creating and starting a tool instance on a workspace. | exp: UseStartToolResult, func:useStartTool() → UseStartToolResult, call:useState, call:useCallback, call:setStarting, call:setError, call:createInstance, call:startInstance | dep: react, ../api/sessions, ../types/workspace +- use-terminal-page.ts | Custom React hook that orchestrates terminal page state, session management, keyboard shortcuts, mobile UX, and fullscreen behavior for a multi-session terminal interface. | exp: useTerminalPage | dep: react, react-router-dom, ../components/features/terminal/terminal, ../components/features/terminal/terminal-session-tabs, ./use-mobile-viewport, ./use-auto-hide, ./use-virtual-keyboard, ./use-terminal-sessions, ../api/terminal, ./use-special-keys, use-mobile-viewport, use-auto-hide, use-virtual-keyboard, use-terminal-sessions, use-special-keys, terminal, terminal-session-tabs, sessions API +- use-terminal-sessions.ts | Custom React hook that manages terminal session state (CRUD operations, active session tracking, loading/error handling) for a given instance. | exp: UseTerminalSessionsResult, func:useTerminalSessions(instanceId: string) → UseTerminalSessionsResult, call:useState, call:useCallback, call:setLoading, call:setError, call:listTerminalSessions, call:setSessions, call:setActiveSessionId, call:createTerminalSession, call:closeTerminalSession, call:prev.filter, call:renameTerminalSession, call:prev.map, call:resetTerminalSession, call:loadSessions, call:useEffect | dep: react, ../api/terminal +- use-theme.ts | React hook that fetches user theme preference on mount and applies it to the document root element | exp: func:useTheme(), call:useEffect, call:getUserConfig, call:document.documentElement.removeAttribute, call:document.documentElement.setAttribute | dep: react, ../api/settings +- use-tool-workshop.ts | A React custom hook that manages state and operations for a tool workshop UI, including CRUD operations for tool types and tool definitions with form handling and validation. | exp: useToolWorkshop | dep: react, ../utils/errors, ../api/tool-types, ../api/tool-definitions, ../components/features/tool-workshop/ToolTypeEditorPanel +- use-virtual-keyboard.ts | A React hook that detects and tracks virtual keyboard state (open/closed, height, viewport height) on mobile devices using Visual Viewport API with fallback for older browsers. | exp: func:useVirtualKeyboard(), call:useState, call:useCallback, call:setState, call:useEffect, call:visualViewport.addEventListener, call:window.addEventListener, call:updateKeyboardState, call:visualViewport.removeEventListener, call:window.removeEventListener | dep: react +- use-workspace-actions.ts | Provides a React hook that wraps workspace CRUD API operations with loading state management and user confirmation dialogs for destructive/conflicting actions. | exp: UseWorkspaceActionsResult, func:useWorkspaceActions() → UseWorkspaceActionsResult, call:useState, call:useCallback, call:createWorkspace, call:setLoadingId, call:deleteWorkspace, call:onRefresh, call:window.confirm, call:instances.map((i) => `- ${i.name}`).join, call:syncWorkspace, call:updateWorkspace, raise:err | dep: react, ../api/workspaces, ../types/workspace +- use-workspace-files.ts | React custom hook that manages workspace file operations including listing, loading, saving, and navigating files. | exp: UseWorkspaceFilesResult, func:useWorkspaceFiles(workspaceId: string) → UseWorkspaceFilesResult, call:useState, call:useCallback, call:setLoading, call:setError, call:listWorkspaceFiles, call:setEntries, call:setCurrentPath, call:setContent, call:getWorkspaceFileContent, call:saveWorkspaceFile, call:refresh, call:useEffect | dep: react, ../api/workspace-files +- use-workspace-git.ts | Provides a React custom hook that encapsulates workspace Git operations including status, branches, history, and actions like commit/push/pull/checkout. | exp: UseWorkspaceGitResult, func:useWorkspaceGit(workspaceId: string) → UseWorkspaceGitResult, call:useState, call:useCallback, call:setLoading, call:setError, call:Promise.all, call:getGitStatus, call:getGitBranches, call:getGitHistory, call:setStatus, call:setBranches, call:setCurrentBranch, call:setHistory, call:gitCommit, call:refresh, call:gitPush, call:gitPull, call:gitFetch, call:gitCheckout, call:useEffect | dep: react, ../api/workspace-git +- use-workspace-instances.ts | React hook that manages workspace instance state with CRUD operations for listing, refreshing, and creating tool instances within a workspace. | exp: UseWorkspaceInstancesResult, func:useWorkspaceInstances(workspaceId: string) → UseWorkspaceInstancesResult, call:useState, call:useCallback, call:setLoading, call:setError, call:listWorkspaceInstances, call:setInstances, call:createWorkspaceInstance, call:refresh, call:useEffect | dep: react, ../api/workspace-instances, ../api/sessions +- use-workspaces.ts | Custom React hook that fetches and manages workspace data with loading and error states | exp: UseWorkspacesResult, func:useWorkspaces(projectId: string, repoId: string) → UseWorkspacesResult, call:useState, call:useCallback, call:setLoading, call:setError, call:listWorkspaces, call:listAllWorkspaces, call:setWorkspaces, call:useEffect, call:refresh | dep: react, ../api/workspaces, ../types/workspace ## arch -Follows a custom hook composition pattern where each hook encapsulates a single domain concern (data fetching, CRUD operations, UI state, device detection), often combining useState/useEffect/useCallback with SWR-style async data management, and layering higher-level hooks (use-terminal-page) from lower-level ones (use-mobile-viewport, use-virtual-keyboard). +Layered custom hook architecture following React patterns—composing useState/useEffect for async operations, context integration, optimistic updates, polling, and mobile-responsive behaviors; each hook typically isolates a single domain concern (workspaces, terminals, git, notifications, etc.) with consistent loading/error state patterns. ## tags call:set, call:use, workspace, react, state, terminal, api, callback ## symbols diff --git a/apps/web/src/pages/.pi-map.index.md b/apps/web/src/pages/.pi-map.index.md index 8445fc1..36e6277 100644 --- a/apps/web/src/pages/.pi-map.index.md +++ b/apps/web/src/pages/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/web/src/pages ## role -Contains top-level page components that render the main UI views for the web application, each corresponding to a distinct route and feature area. +Contains all top-level page components for the web application, serving as the routing endpoints that compose the UI for each distinct feature area. ## parent index: apps/web/src/.pi-map.index.md map: apps/web/src/.pi-map.md diff --git a/apps/web/src/pages/.pi-map.md b/apps/web/src/pages/.pi-map.md index 14a1b30..a831cf7 100644 --- a/apps/web/src/pages/.pi-map.md +++ b/apps/web/src/pages/.pi-map.md @@ -4,30 +4,30 @@ dir: apps/web/src/pages index: apps/web/src/pages/.pi-map.index.md ## role -Contains top-level page components that render the main UI views for the web application, each corresponding to a distinct route and feature area. +Contains all top-level page components for the web application, serving as the routing endpoints that compose the UI for each distinct feature area. ## files -- ConfigProfilesPage.tsx | Renders a configuration profiles management page with responsive desktop/mobile layouts for creating, editing, previewing, and organizing config profiles. | exp: ConfigProfilesPage | dep: react, ../components/data-states, ../hooks/use-mobile-viewport, ../hooks/use-config-profiles, ../components/features/config-profiles/ConfigProfileListSidebar, ../components/features/config-profiles/ConfigProfileEditorPanel, ../components/features/config-profiles/ConfigProfilesMobileView, use-mobile-viewport, use-config-profiles, data-states, ConfigProfileListSidebar, ConfigProfileEditorPanel, ConfigProfilesMobileView -- DashboardPage.test.tsx | Unit tests for the DashboardPage component verifying overview loading and error retry behavior | dep: @testing-library/jest-dom/vitest, @testing-library/react, react-router-dom, vitest, ./DashboardPage, ../state/sessions, DashboardPage, SessionsProvider -- DashboardPage.tsx | Renders a dashboard homepage that displays workspace overview, active/recent sessions, summary statistics, and polling health checks for running instances. | exp: HomePage | dep: react, react-router-dom, ../api/dashboard, ../api/sessions, ../components/data-states, ../components/features/session/session-list, ../hooks/use-instance-actions, ../state/sessions -- GitHistoryPage.tsx | Renders a Git commit history page with branch selection, commit list with graph visualization, and a detail panel showing commit metadata, stats, and diffs. | exp: GitHistoryPage | dep: react, react-router-dom, ../api/git-repositories, ../components/data-states, ../components/icon, ../hooks/use-async-data -- GitRepositoriesPage.tsx | Displays and manages a project's Git repositories with CRUD operations including listing, creating, navigating to history, and deleting with confirmation | exp: GitRepositoriesPage | dep: react, react-router-dom, ../api/git-repositories, ../components/data-states, ../components/icon, ../components/features/project/repository-create-dialog, ../hooks/use-async-data -- PlaceholderPage.tsx | Exports three simple React page components (PlaceholderPage, NotFoundPage, LoginRedirectPage) for a frontend scaffold. | exp: PlaceholderPage, NotFoundPage, LoginRedirectPage | dep: ../components/icon, React -- ProfilePage.tsx | A React component that renders a responsive profile page with form editing, avatar upload, and save functionality for both mobile and desktop viewports. | exp: ProfilePage | dep: react, ../api/profile, ../components/data-states, ../components/icon, ../components/features/profile/ProfileMobileView, ../state/auth, ../hooks/use-async-data, ../hooks/use-mobile-viewport -- ProjectSettingsPage.tsx | Renders a project settings page with tabbed navigation for general settings, repositories, and members, including project data fetching, editing, and deletion capabilities. | exp: ProjectSettingsPage | dep: react, react-router-dom, ../components/features/settings/settings-tab-layout, ../components/features/project/repositories-settings-tab, ../api/client, ../types -- ProjectsPage.test.tsx | Unit tests for the ProjectsPage component covering loading, empty, error, create, edit, and delete states with API mocking. | dep: @testing-library/react, react-router-dom, vitest, ./ProjectsPage, ../api/projects, ProjectsPage -- ProjectsPage.tsx | Renders a responsive projects management page with separate mobile and desktop layouts, supporting project CRUD operations, repository management, and workspace actions. | exp: ProjectsPage | dep: react, ../components/data-states, ../components/icon, ../hooks/use-mobile-viewport, ../components/features/project/ProjectCard, ../components/features/project/ProjectDialog, ../components/features/project/repository-create-dialog, ../components/features/mobile/mobile-list-view, ../components/features/mobile/mobile-fab, ../hooks/use-projects, ../types, use-mobile-viewport, use-projects, data-states, icon, ProjectCard, ProjectDialog, RepositoryCreateDialog, MobileListView, MobileFAB -- SessionsPage.tsx | Renders a sessions management page that displays, polls health for, and handles CRUD operations on development environment sessions with dirty delete confirmation. | exp: SessionsPage | dep: react, ../api/sessions, ../api/settings, ../components/data-states, ../components/features/session/session-list, ../components/features/session/session-card, ../hooks/use-instance-actions, ../state/sessions -- SettingsPage.tsx | A React settings page component that loads, displays, and manages user configuration with tabbed navigation and nested outlet for child routes. | exp: SettingsPage | dep: react, react-router-dom, ../api/settings, ../components/data-states, ../hooks/use-async-data, ../components/features/settings/GeneralSettingsTab -- SshKeysPage.tsx | React page component for managing SSH keys including generation, listing, signing, verification, and deletion | exp: SSHKeysPage | dep: react-router-dom, ../components/data-states, ../hooks/use-ssh-keys, ../components/features/ssh-keys/SSHKeyCreateForm, ../components/features/ssh-keys/SSHKeyList -- TerminalPage.tsx | Renders a responsive terminal page that switches between mobile and desktop views based on device type, managing terminal sessions and their interactions. | exp: TerminalPage | dep: react, ../hooks/use-terminal-page, ../components/features/terminal/MobileTerminalView, ../components/features/terminal/DesktopTerminalView, useTerminalPage hook, MobileTerminalView, DesktopTerminalView -- ToolWorkshopPage.tsx | Renders a responsive tool workshop page with list and editor views for managing tool types, handling loading/error states and mobile/desktop layouts | exp: ToolWorkshopPage | dep: ../components/data-states, ../hooks/use-mobile-viewport, ../hooks/use-tool-workshop, ../components/features/tool-workshop/ToolTypeListSidebar, ../components/features/tool-workshop/ToolTypeEditorPanel, ../components/features/tool-workshop/ToolWorkshopMobileView, react, use-mobile-viewport, use-tool-workshop, data-states, ToolTypeListSidebar, ToolTypeEditorPanel, ToolWorkshopMobileView -- WorkspaceDetailPage.test.tsx | Tests the WorkspaceDetailPage component rendering and tab switching behavior | dep: @testing-library/jest-dom/vitest, @testing-library/react, react-router-dom, vitest, ./WorkspaceDetailPage, @testing-library/jest-dom, WorkspaceDetailPage, use-workspaces, use-workspace-files, use-workspace-git, use-workspace-instances, use-mobile-viewport -- WorkspaceDetailPage.tsx | Renders a workspace detail page with tab-based navigation for files, git, tools, and settings panels, with mobile-responsive layout. | exp: func:WorkspaceDetailPage(), call:useParams, call:useState, call:useMobileViewport, call:useWorkspaces, call:workspaces.find | dep: react, react-router-dom, ../hooks/use-workspaces, ../hooks/use-mobile-viewport, ../components/features/workspace/workspace-detail-header, ../components/features/workspace/workspace-tab-bar, ../components/features/workspace/workspace-file-panel, ../components/features/workspace/workspace-git-panel, ../components/features/workspace/workspace-tools-panel, ../components/features/workspace/workspace-settings-panel, use-workspaces, use-mobile-viewport, workspace-detail-header, workspace-tab-bar, workspace-file-panel, workspace-git-panel, workspace-tools-panel, workspace-settings-panel -- WorkspacesPage.tsx | Renders a responsive workspaces management page with mobile and desktop views supporting listing, creating, viewing details, syncing, deleting, and starting tools for workspaces. | exp: func:WorkspacesPage(), call:useMobileViewport, call:useState, call:useWorkspaces, call:useWorkspaceActions, call:actions.delete, call:actions.sync, call:setMobileView, call:refresh, call:setStartWorkspace, call:handleDelete, call:setSelectedWorkspace, call:workspaces.map, call:e.stopPropagation, call:setShowCreate | dep: react, ../components/icon, ../hooks/use-mobile-viewport, ../hooks/use-workspaces, ../hooks/use-workspace-actions, ../components/features/workspace/workspace-card, ../components/features/workspace/workspace-create-form, ../components/features/mobile/mobile-detail-view, ../components/features/mobile/mobile-fab, ../components/features/tool/tool-starter, ../types/workspace +- ConfigProfilesPage.tsx | Renders a configuration profiles management page with responsive desktop/mobile layouts for listing, editing, creating, and previewing config profiles. | exp: ConfigProfilesPage | dep: react, ../components/data-states, ../hooks/use-mobile-viewport, ../hooks/use-config-profiles, ../components/features/config-profiles/ConfigProfileListSidebar, ../components/features/config-profiles/ConfigProfileEditorPanel, ../components/features/config-profiles/ConfigProfilesMobileView, use-mobile-viewport, use-config-profiles, data-states, ConfigProfileListSidebar, ConfigProfileEditorPanel, ConfigProfilesMobileView +- DashboardPage.test.tsx | Tests the DashboardPage (HomePage) component's rendering, loading states, error handling, and retry functionality. | dep: @testing-library/jest-dom/vitest, @testing-library/react, react-router-dom, vitest, ./DashboardPage, ../state/sessions, @testing-library/jest-dom, ../api/dashboard, ../api/sessions, ../api/projects, ../api/git-repositories, ../api/tool-types +- DashboardPage.tsx | Renders a workspace dashboard page that displays summary statistics, active sessions with health polling, and recent sessions with management actions. | exp: HomePage | dep: react, react-router-dom, ../api/dashboard, ../api/sessions, ../components/data-states, ../components/features/session/session-list, ../hooks/use-instance-actions, ../state/sessions +- GitHistoryPage.tsx | Renders a Git commit history page with branch selection, commit list with graph visualization, and a detail panel showing commit metadata, stats, and diff. | exp: GitHistoryPage | dep: react, react-router-dom, ../api/git-repositories, ../components/data-states, ../components/icon, ../hooks/use-async-data +- GitRepositoriesPage.tsx | Displays and manages a list of Git repositories for a project with CRUD operations, loading states, and navigation to history. | exp: GitRepositoriesPage | dep: react, react-router-dom, ../api/git-repositories, ../components/data-states, ../components/icon, ../components/features/project/repository-create-dialog, ../hooks/use-async-data +- PlaceholderPage.tsx | Provides three reusable React page components for placeholder content, 404 errors, and login redirects with external authentication. | exp: PlaceholderPage, NotFoundPage, LoginRedirectPage | dep: ../components/icon, react +- ProfilePage.tsx | A React component that renders a responsive profile page allowing users to view and edit their profile information (name, email) and upload an avatar, with separate mobile and desktop layouts. | exp: ProfilePage | dep: react, ../api/profile, ../components/data-states, ../components/icon, ../components/features/profile/ProfileMobileView, ../state/auth, ../hooks/use-async-data, ../hooks/use-mobile-viewport +- ProjectSettingsPage.tsx | Renders a project settings page with tabbed navigation for general settings, repositories, and members, including project data fetching and CRUD operations. | exp: ProjectSettingsPage | dep: react, react-router-dom, ../components/features/settings/settings-tab-layout, ../components/features/project/repositories-settings-tab, ../api/client, ../types +- ProjectsPage.test.tsx | Unit tests for the ProjectsPage component covering loading, empty, error, create, edit, and delete project flows | dep: @testing-library/react, react-router-dom, vitest, ./ProjectsPage, ../api/projects +- ProjectsPage.tsx | Renders a responsive projects management page with separate mobile and desktop views supporting CRUD operations, repository management, and workspace actions. | exp: ProjectsPage | dep: react, ../components/data-states, ../components/icon, ../hooks/use-mobile-viewport, ../components/features/project/ProjectCard, ../components/features/project/ProjectListItem, ../components/features/project/ProjectDialog, ../components/features/project/repository-create-dialog, ../components/features/mobile/mobile-list-view, ../components/features/mobile/mobile-fab, ../hooks/use-projects, ../state/sessions, ../types +- SessionsPage.tsx | A React page component that displays and manages user sessions with health polling, last session tracking, and dirty delete confirmation handling. | exp: SessionsPage | dep: react, ../api/sessions, ../api/settings, ../components/data-states, ../components/features/session/session-list, ../components/features/session/session-card, ../hooks/use-instance-actions, ../state/sessions +- SettingsPage.tsx | A React settings page component that loads user configuration, manages tab-based navigation, and provides configuration state to child routes via Outlet context. | exp: SettingsPage | dep: react, react-router-dom, ../api/settings, ../components/data-states, ../hooks/use-async-data, ../components/features/settings/GeneralSettingsTab +- SshKeysPage.tsx | Renders a settings page for managing SSH keys including generation, listing, signing, verification, and deletion operations. | exp: SSHKeysPage | dep: react-router-dom, ../components/data-states, ../hooks/use-ssh-keys, ../components/features/ssh-keys/SSHKeyCreateForm, ../components/features/ssh-keys/SSHKeyList +- TerminalPage.tsx | Renders a responsive terminal page that conditionally displays mobile or desktop terminal views based on device type, managing terminal sessions and their interactions through a custom hook. | exp: TerminalPage | dep: react, ../hooks/use-terminal-page, ../components/features/terminal/MobileTerminalView, ../components/features/terminal/DesktopTerminalView +- ToolWorkshopPage.tsx | Renders a responsive tool workshop page for managing tool types with desktop sidebar/editor layout and mobile view switching | exp: ToolWorkshopPage | dep: ../components/data-states, ../hooks/use-mobile-viewport, ../hooks/use-tool-workshop, ../components/features/tool-workshop/ToolTypeListSidebar, ../components/features/tool-workshop/ToolTypeEditorPanel, ../components/features/tool-workshop/ToolWorkshopMobileView, react, use-mobile-viewport, use-tool-workshop, data-states, ToolTypeListSidebar, ToolTypeEditorPanel, ToolWorkshopMobileView +- WorkspaceDetailPage.test.tsx | Tests the WorkspaceDetailPage component's rendering and tab switching behavior | dep: @testing-library/jest-dom/vitest, @testing-library/react, react-router-dom, vitest, ./WorkspaceDetailPage, @testing-library/jest-dom, WorkspaceDetailPage, use-workspaces, use-workspace-files, use-workspace-git, use-workspace-instances, use-mobile-viewport +- WorkspaceDetailPage.tsx | Renders a workspace detail page with tabbed navigation for files, git, tools, and settings panels, with mobile-responsive layout. | exp: func:WorkspaceDetailPage(), call:useParams, call:useState, call:useMobileViewport, call:useWorkspaces, call:workspaces.find | dep: react, react-router-dom, ../hooks/use-workspaces, ../hooks/use-mobile-viewport, ../components/features/workspace/workspace-detail-header, ../components/features/workspace/workspace-tab-bar, ../components/features/workspace/workspace-file-panel, ../components/features/workspace/workspace-git-panel, ../components/features/workspace/workspace-tools-panel, ../components/features/workspace/workspace-settings-panel, use-workspaces, use-mobile-viewport, workspace-detail-header, workspace-tab-bar, workspace-mobile-tab-bar, workspace-file-panel, workspace-git-panel, workspace-tools-panel, workspace-settings-panel +- WorkspacesPage.tsx | Renders a responsive workspaces management page with separate mobile and desktop layouts for listing, creating, viewing, and managing workspaces. | exp: func:WorkspacesPage(), call:useMobileViewport, call:useState, call:useWorkspaces, call:useWorkspaceActions, call:actions.delete, call:actions.sync, call:setMobileView, call:refresh, call:setStartWorkspace, call:handleDelete, call:setSelectedWorkspace, call:workspaces.map, call:e.stopPropagation, call:setShowCreate | dep: react, ../components/icon, ../hooks/use-mobile-viewport, ../hooks/use-workspaces, ../hooks/use-workspace-actions, ../components/features/workspace/workspace-card, ../components/features/workspace/workspace-create-form, ../components/features/mobile/mobile-detail-view, ../components/features/mobile/mobile-fab, ../components/features/tool/tool-starter, ../types/workspace ## arch -Route-based page organization with responsive mobile/desktop layout patterns, tabbed navigation for complex pages, polling/health-check mechanisms for live data, and CRUD operations with loading/error/empty states throughout. +Follows a page-based routing architecture with responsive mobile/desktop split patterns, tabbed navigation for complex pages, and feature-specific data fetching with loading/error states; most pages use custom hooks for business logic and separate layout components for device-specific rendering. ## tags -page, components, workspace, features, mobile, react, hooks, settings +page, components, workspace, features, mobile, react, settings, hooks ## symbols - WorkspaceDetailPage - WorkspacesPage diff --git a/apps/web/src/state/.pi-map.index.md b/apps/web/src/state/.pi-map.index.md index b860286..1bbdebe 100644 --- a/apps/web/src/state/.pi-map.index.md +++ b/apps/web/src/state/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/web/src/state ## role -Centralized client-side state management layer providing React context providers for core application concerns including authentication, real-time data, notifications, and user feedback. +Centralized React state management package providing context-based global state for authentication, real-time events, notifications, sessions, and UI feedback across the web application. ## parent index: apps/web/src/.pi-map.index.md map: apps/web/src/.pi-map.md diff --git a/apps/web/src/state/.pi-map.md b/apps/web/src/state/.pi-map.md index 25e99b8..a8c3614 100644 --- a/apps/web/src/state/.pi-map.md +++ b/apps/web/src/state/.pi-map.md @@ -4,17 +4,17 @@ dir: apps/web/src/state index: apps/web/src/state/.pi-map.index.md ## role -Centralized client-side state management layer providing React context providers for core application concerns including authentication, real-time data, notifications, and user feedback. +Centralized React state management package providing context-based global state for authentication, real-time events, notifications, sessions, and UI feedback across the web application. ## files -- auth.tsx | Provides React authentication context for managing user session state with login status, user data, and session refresh/logout operations. | exp: AuthProvider, useAuth | dep: react, ../api/client, ../types -- events.tsx | Creates a React context provider for real-time event data with connection status and reconnection tracking | exp: func:EventProvider({ children }: { children: React.ReactNode }), call:useEvents, call:useMemo, func:useEventContext(), call:useContext | dep: react, ../hooks/use-events, ../types/events -- notifications.tsx | Provides a React context provider that manages notification state with optimistic updates, polling, and dropdown-aware fetching. | exp: NotificationContextValue, NotificationContext, func:NotificationProvider({ children, }: { children: React.ReactNode; }), call:useState, call:useRef, call:useCallback, call:getUnreadCount, call:setUnreadCount, call:clearInterval, call:console.error, call:setIsLoading, call:getNotifications, call:setNotifications, call:fetchUnreadCount, call:setInterval, call:fetchList, call:useEffect, call:stopPolling, call:startPolling, call:document.addEventListener, call:document.removeEventListener, call:currentNotifications.find, call:currentNotifications.map, call:new Date().toISOString, call:Math.max, call:setError, call:markNotificationRead, call:markAllNotificationsRead, call:currentNotifications.filter, call:dismissNotification, call:clearAllNotifications | dep: react, ../api/notifications, React -- sessions.tsx | Provides a React context that manages user sessions state with server polling, local CRUD operations, and loading/error handling. | exp: SessionsContextType, SessionsProvider, useSessions | dep: react, ../api/sessions -- toast.tsx | Implements a React toast notification system with context-based state management, auto-dismiss timers, and imperative API shortcuts. | exp: ToastSeverity, ToastItem, toast, func:ToastProvider({ children }: { children: React.ReactNode }), call:useState, call:useRef, call:useCallback, call:setToasts, call:prev.filter, call:timersRef.current.get, call:clearTimeout, call:timersRef.current.delete, call:Date.now, call:setTimeout, call:removeToast, call:timersRef.current.set, call:useEffect, call:addToast, func:useToast(), call:useContext, raise:Error | dep: react, React +- auth.tsx | Provides React authentication context with session state management, user data, and auth operations (refresh/logout). | exp: AuthProvider, useAuth | dep: react, ../api/client, ../types +- events.tsx | Creates a React context provider for real-time instance events with connection status and reconnect tracking | exp: func:EventProvider({ children }: { children: React.ReactNode }), call:useEvents, call:useMemo, func:useEventContext(), call:useContext | dep: react, ../hooks/use-events, ../types/events +- notifications.tsx | Provides a React context that manages notification state with optimistic updates, polling, and visibility-aware fetching for a notification dropdown UI. | exp: NotificationContextValue, NotificationContext, func:NotificationProvider({ children, }: { children: React.ReactNode; }), call:useState, call:useRef, call:useCallback, call:getUnreadCount, call:setUnreadCount, call:clearInterval, call:console.error, call:setIsLoading, call:getNotifications, call:setNotifications, call:fetchUnreadCount, call:setInterval, call:fetchList, call:useEffect, call:stopPolling, call:startPolling, call:document.addEventListener, call:document.removeEventListener, call:currentNotifications.find, call:currentNotifications.map, call:new Date().toISOString, call:Math.max, call:setError, call:markNotificationRead, call:markAllNotificationsRead, call:currentNotifications.filter, call:dismissNotification, call:clearAllNotifications | dep: react, ../api/notifications, React +- sessions.tsx | Provides a React context for managing user sessions with server polling, local state updates, and CRUD operations. | exp: SessionsContextType, SessionsProvider, useSessions | dep: react, ../api/sessions +- toast.tsx | Provides a React toast notification system with context-based state management, auto-dismiss timers, and imperative API access. | exp: ToastSeverity, ToastItem, toast, func:ToastProvider({ children }: { children: React.ReactNode }), call:useState, call:useRef, call:useCallback, call:setToasts, call:prev.filter, call:timersRef.current.get, call:clearTimeout, call:timersRef.current.delete, call:Date.now, call:setTimeout, call:removeToast, call:timersRef.current.set, call:useEffect, call:addToast, func:useToast(), call:useContext, raise:Error | dep: react, React ## arch -React Context API pattern with separate providers per domain, combining optimistic updates, server polling, event-driven state synchronization, and imperative APIs for cross-cutting concerns. +React Context pattern with provider/consumer model, each module implementing independent singleton contexts with imperative APIs, optimistic updates, polling-based synchronization, and side-effect management via useEffect hooks. ## tags -call:use, context, toast, provider, react, call:set, notification +call:use, context, toast, call:set, notification, react, provider, notifications ## symbols - EventProvider - useEventContext @@ -23,6 +23,7 @@ call:use, context, toast, provider, react, call:set, notification - useToast - AuthProvider - useAuth +- call:useEvents ## workflows - change state behavior read: auth.tsx, events.tsx, notifications.tsx diff --git a/apps/web/src/styles/.pi-map.index.md b/apps/web/src/styles/.pi-map.index.md index 0d79258..b5f4f5e 100644 --- a/apps/web/src/styles/.pi-map.index.md +++ b/apps/web/src/styles/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/web/src/styles ## role -Provides the complete visual design system and styling foundation for the web application, encompassing global styles, theme tokens, utility classes, and component-specific styles. +Centralizes the visual design system and styling infrastructure for the web application, providing theme-aware CSS tokens, global styles, component patterns, and utility classes used across the frontend. ## parent index: apps/web/src/.pi-map.index.md map: apps/web/src/.pi-map.md diff --git a/apps/web/src/styles/.pi-map.md b/apps/web/src/styles/.pi-map.md index 97e38b0..27cc2e1 100644 --- a/apps/web/src/styles/.pi-map.md +++ b/apps/web/src/styles/.pi-map.md @@ -4,16 +4,16 @@ dir: apps/web/src/styles index: apps/web/src/styles/.pi-map.index.md ## role -Provides the complete visual design system and styling foundation for the web application, encompassing global styles, theme tokens, utility classes, and component-specific styles. +Centralizes the visual design system and styling infrastructure for the web application, providing theme-aware CSS tokens, global styles, component patterns, and utility classes used across the frontend. ## files -- global.css | Defines global CSS styles for a web application shell layout, navigation, cards, forms, dialogs, settings pages, and responsive design patterns. | dep: CSS custom properties (CSS variables: --border, --panel, --brand, --muted, --ink, --bg, --danger, --success, --warning, --font-size-xs, --font-size-sm, --space-2, --space-3, --space-4, --space-5) -- syntax-highlight.css | Stylesheet for a syntax highlighting component with toolbar, line numbers, code display, and Prism.js theme integration | dep: Prism.js -- tokens.css | Defines a comprehensive CSS design token system with light/dark themes, spacing scales, breakpoints, and fluid typography for a web application. -- utilities.css | Provides a comprehensive CSS utility system for responsive layouts, terminal interfaces, and UI components with mobile-first design patterns. | dep: CSS custom properties (--space-*, --border, --bg, --muted, --success, --text, --brand, --danger, --danger-light), xterm.js (terminal library) +- global.css | Global CSS stylesheet defining the visual design system, layout structure, and component styles for a web application shell with responsive navigation, cards, forms, dialogs, and settings pages. +- syntax-highlight.css | Stylesheet providing CSS for a syntax highlighting component with line numbers, toolbar, and Prism.js token color integration. | dep: CSS custom properties (var(--panel), var(--border), var(--bg), var(--muted), var(--ink), var(--brand)), Prism.js (for token classes) +- tokens.css | Defines a comprehensive CSS design system with custom properties for colors, spacing, typography, shadows, and layout tokens supporting both light and dark themes. +- utilities.css | Provides a comprehensive CSS utility framework with responsive layout, typography, spacing, and component-specific styles for a web application including terminal, session management, and form interfaces. | dep: CSS custom properties (variables), xterm.js (terminal integration), webkit-box (multiline truncation) ## arch -Token-driven CSS architecture using CSS custom properties for themeable design system with mobile-first responsive utilities, separate component-specific stylesheets, and light/dark mode support. +CSS custom property (variable) driven design system with theme switching (light/dark), utility-first CSS patterns, modular separation of concerns (tokens/globals/components/utilities), and responsive design with mobile-first breakpoints. ## tags -space, global, css, design, danger, syntax, defines, web +var(, css, global, layout, component, syntax, tokens, stylesheet ## symbols - ## workflows diff --git a/apps/web/src/styles/pages/.pi-map.index.md b/apps/web/src/styles/pages/.pi-map.index.md index b61d0b1..67e9418 100644 --- a/apps/web/src/styles/pages/.pi-map.index.md +++ b/apps/web/src/styles/pages/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/web/src/styles/pages ## role -Contains page-specific CSS stylesheets for individual application views in the web frontend, providing scoped styling for distinct feature areas. +Contains page-specific CSS stylesheets for individual application views in the web frontend, providing scoped visual styling for distinct feature pages and their UI components. ## parent index: apps/web/src/styles/.pi-map.index.md map: apps/web/src/styles/.pi-map.md diff --git a/apps/web/src/styles/pages/.pi-map.md b/apps/web/src/styles/pages/.pi-map.md index aa4a43c..2c63a5d 100644 --- a/apps/web/src/styles/pages/.pi-map.md +++ b/apps/web/src/styles/pages/.pi-map.md @@ -4,18 +4,18 @@ dir: apps/web/src/styles/pages index: apps/web/src/styles/pages/.pi-map.index.md ## role -Contains page-specific CSS stylesheets for individual application views in the web frontend, providing scoped styling for distinct feature areas. +Contains page-specific CSS stylesheets for individual application views in the web frontend, providing scoped visual styling for distinct feature pages and their UI components. ## files -- git-history.css | Stylesheet for a Git history visualization page with commit list, branch selector, and detail panel layout | dep: CSS custom properties (var(--border), var(--panel), var(--ink), var(--brand), var(--muted)) -- projects.css | Stylesheet for a projects page UI featuring expandable project toggles, repository listings, workspace grids, and repository creation radio controls. | dep: CSS custom properties (variables) -- sessions.css | Stylesheet for session management UI components including cards, dropdowns, forms, and responsive mobile layouts. | dep: CSS custom properties/variables (var(--border), var(--panel), var(--text), var(--space-*), var(--danger), var(--color-border)) -- ssh-keys.css | Styles a responsive SSH key list component that stacks vertically on mobile and switches to horizontal layout on larger screens | dep: CSS custom properties (var(--space-3), var(--space-2), var(--space-4), var(--bg), var(--border)) -- workspace-detail.css | Stylesheet for a workspace detail page with tabbed interface including files, git, tools, and settings views, plus a workspace creation form | dep: CSS custom properties (variables for colors, spacing, typography) -- workspaces.css | Stylesheet for a workspaces management page featuring responsive grid layout, workspace cards with status badges, instance chips, and mobile adaptations. | dep: CSS custom properties (design tokens: --space-*, --border, --panel, --brand, --ink, --muted, --bg, --success, --warning, --danger, --font-size-*) +- git-history.css | Stylesheet for a Git history visualization page with commit list, graph display, and detail panel. | dep: CSS custom properties (var(--border), var(--radius-md), var(--panel), var(--ink), var(--brand), var(--muted), var(--radius-sm), var(--radius-lg)) +- projects.css | Stylesheet for a projects management UI page with repositories, workspaces, and tool links | dep: CSS custom properties (variables) +- sessions.css | Stylesheet for a sessions management UI component with responsive mobile layout, dropdown menus, and form elements | dep: CSS custom properties (var(--border), var(--panel), var(--text), var(--space-*), var(--danger), var(--bg)), CSS animations +- ssh-keys.css | Provides responsive CSS styling for an SSH key list component, stacking vertically on mobile and switching to horizontal layout on larger screens | dep: CSS custom properties (var(--space-3), var(--space-2), var(--space-4), var(--bg), var(--radius-md)) +- workspace-detail.css | Stylesheet for a workspace detail page with responsive tabs, file browser, git integration, tools, and settings UI | dep: CSS custom properties (design tokens), IBM Plex Mono font +- workspaces.css | Stylesheet for a workspaces page featuring a responsive grid of workspace cards with status badges, instance chips, and action buttons. ## arch -Modular CSS architecture with page-level style separation, responsive design patterns using media queries for mobile adaptation, and component-scoped styling organized by feature domain rather than shared component library. +Modular page-scoped CSS architecture with responsive design patterns (mobile-first breakpoints, flex/grid layouts), component-oriented styling for specific UI elements (cards, lists, forms, tabs), and status-driven visual states (badges, chips). ## tags -var(, workspace, stylesheet, space, git, page, detail, history +var(, stylesheet, git, page, detail, radius, workspaces, responsive ## symbols - ## workflows diff --git a/apps/web/src/test/.pi-map.index.md b/apps/web/src/test/.pi-map.index.md index ad990ba..6fd447e 100644 --- a/apps/web/src/test/.pi-map.index.md +++ b/apps/web/src/test/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/web/src/test ## role -Provides shared testing infrastructure and configuration for the web application's test suite +Provides testing infrastructure and configuration for the web application ## parent index: apps/web/src/.pi-map.index.md map: apps/web/src/.pi-map.md diff --git a/apps/web/src/test/.pi-map.md b/apps/web/src/test/.pi-map.md index 315f32a..7cb2e53 100644 --- a/apps/web/src/test/.pi-map.md +++ b/apps/web/src/test/.pi-map.md @@ -4,13 +4,13 @@ dir: apps/web/src/test index: apps/web/src/test/.pi-map.index.md ## role -Provides shared testing infrastructure and configuration for the web application's test suite +Provides testing infrastructure and configuration for the web application ## files -- setup.ts | Configures Vitest testing environment with Jest DOM matchers for enhanced DOM assertions | dep: @testing-library/jest-dom/vitest +- setup.ts | Imports jest-dom matchers for Vitest to enable DOM assertion methods in tests | dep: @testing-library/jest-dom/vitest ## arch -Minimal utility layer using Vitest with Jest DOM matchers for browser-like DOM assertion capabilities +Minimal test setup layer using Vitest with jest-dom integration for DOM assertions ## tags -dom, vitest, jest, setup, configures, testing, environment, matchers +dom, jest, vitest, setup, matchers, enable, assertion, methods ## symbols - ## workflows diff --git a/apps/web/src/types/.pi-map.index.md b/apps/web/src/types/.pi-map.index.md index fc929e7..e71e43d 100644 --- a/apps/web/src/types/.pi-map.index.md +++ b/apps/web/src/types/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/web/src/types ## role -Provides shared TypeScript type definitions for event-driven communication and workspace management across the web application. +Provides shared TypeScript type definitions for event-driven and workspace-related data structures across the web application. ## parent index: apps/web/src/.pi-map.index.md map: apps/web/src/.pi-map.md diff --git a/apps/web/src/types/.pi-map.md b/apps/web/src/types/.pi-map.md index fc98968..370b29e 100644 --- a/apps/web/src/types/.pi-map.md +++ b/apps/web/src/types/.pi-map.md @@ -4,12 +4,12 @@ dir: apps/web/src/types index: apps/web/src/types/.pi-map.index.md ## role -Provides shared TypeScript type definitions for event-driven communication and workspace management across the web application. +Provides shared TypeScript type definitions for event-driven and workspace-related data structures across the web application. ## files -- events.ts | Defines TypeScript interfaces for instance event metadata and payload structures used in event-driven system communication. | exp: InstanceEventMetadata, InstanceEventPayload +- events.ts | Defines TypeScript interfaces for instance event metadata and payload structures used in an event-driven system. | exp: InstanceEventMetadata, InstanceEventPayload - workspace.ts | Defines TypeScript interfaces for workspace data models, requests, and sync results in a workspace management feature. | exp: Workspace, CreateWorkspaceRequest, SyncResult ## arch -Pure type declaration layer using TypeScript interfaces for compile-time contracts, with no runtime logic or dependencies. +Pure type declaration package using interface-based contracts with no runtime logic, following a centralized type repository pattern for cross-module consistency. ## tags workspace, event, instance, metadata, payload, sync, defines, typescript ## symbols diff --git a/apps/web/src/utils/.pi-map.index.md b/apps/web/src/utils/.pi-map.index.md index dca5290..a2c2318 100644 --- a/apps/web/src/utils/.pi-map.index.md +++ b/apps/web/src/utils/.pi-map.index.md @@ -2,7 +2,7 @@ dir: apps/web/src/utils ## role -Provides shared utility functions for error handling, icon type definitions, syntax highlighting language mapping, and relative time formatting across the web application. +Provides shared utility functions for error handling, icons, syntax highlighting, session management, and time formatting across the web application. ## parent index: apps/web/src/.pi-map.index.md map: apps/web/src/.pi-map.md @@ -12,6 +12,7 @@ map: apps/web/src/.pi-map.md - errors.ts - icons.ts - language.ts +- open-session.ts - time.ts ## links index: apps/web/src/utils/.pi-map.index.md diff --git a/apps/web/src/utils/.pi-map.md b/apps/web/src/utils/.pi-map.md index 94b73a1..fb38d65 100644 --- a/apps/web/src/utils/.pi-map.md +++ b/apps/web/src/utils/.pi-map.md @@ -4,25 +4,26 @@ dir: apps/web/src/utils index: apps/web/src/utils/.pi-map.index.md ## role -Provides shared utility functions for error handling, icon type definitions, syntax highlighting language mapping, and relative time formatting across the web application. +Provides shared utility functions for error handling, icons, syntax highlighting, session management, and time formatting across the web application. ## files -- errors.ts | Extracts a human-readable error message from an unknown error object, specifically handling axios-style errors with string or array detail fields | exp: extractErrorMessage -- icons.ts | Re-exports the IconName type from the icon component for external consumption | dep: ../components/icon -- language.ts | Maps file extensions to Prism.js language identifiers and provides utilities for syntax highlighting with lazy language loading. | exp: detectLanguage, highlightCode, loadLanguage | dep: prismjs -- time.ts | Formats a date string into a human-readable relative time string (e.g., "2h ago", "3d ago") | exp: func:formatRelativeTime(dateStr: string) → string, call:Math.max, call:Math.floor, call:now.getTime, call:date.getTime +- errors.ts | Extracts human-readable error messages from API errors, handling Axios-style response structures with string or array detail formats | exp: extractErrorMessage +- icons.ts | Re-exports the IconName type from the icon component for external use. | dep: ../components/icon +- language.ts | Maps file extensions to Prism.js language identifiers and provides utilities for syntax highlighting with dynamic language loading. | exp: detectLanguage, highlightCode, loadLanguage | dep: prismjs +- open-session.ts | Opens a browser tab/window for a given session, reusing existing tabs if available | exp: func:openSession(session: Session) → void, call:tabRefs.get, call:existing.focus, call:session.tool_type_interfaces?.includes, call:window.open, call:tabRefs.set | dep: ../api/sessions, Session type from ../api/sessions +- time.ts | Formats a date string as a human-readable relative time string (e.g., "2h ago", "3d ago") | exp: func:formatRelativeTime(dateStr: string) → string, call:Math.max, call:Math.floor, call:now.getTime, call:date.getTime ## arch -Lightweight functional utilities organized by domain concern with no internal dependencies, using pattern matching (error types), lazy loading (language imports), and pure string/date transformations. +Lightweight functional utilities with no internal dependencies between files, using TypeScript type exports and dynamic imports for code splitting. ## tags -time, language, error, message, errors, string, relative, human +time, language, session, open, call:tab, error, api, errors ## symbols +- openSession - formatRelativeTime - extractErrorMessage - detectLanguage - highlightCode - loadLanguage -- call:Math.max -- call:Math.floor -- call:now.getTime +- call:tabRefs.get +- call:existing.focus ## workflows - change utils behavior read: errors.ts, icons.ts, language.ts diff --git a/docs/.pi-map.index.md b/docs/.pi-map.index.md index f9b0028..2ca5a0f 100644 --- a/docs/.pi-map.index.md +++ b/docs/.pi-map.index.md @@ -2,7 +2,7 @@ dir: docs ## role -Central documentation hub and navigation entry point for the Headquarter platform. +Provides user-facing documentation and knowledge base for the Headquarter platform. ## parent index: ./.pi-map.index.md map: ./.pi-map.md diff --git a/docs/.pi-map.md b/docs/.pi-map.md index d6fe630..f5e1adf 100644 --- a/docs/.pi-map.md +++ b/docs/.pi-map.md @@ -4,13 +4,13 @@ dir: docs index: docs/.pi-map.index.md ## role -Central documentation hub and knowledge base for the Headquarter platform. +Provides user-facing documentation and knowledge base for the Headquarter platform. ## files -- README.md | Serves as the main index and navigation hub for the Headquarter platform documentation, organizing links to feature guides, API docs, architecture, deployment, and development resources. +- README.md | Serves as the main index/landing page for the Headquarter platform documentation, organizing links to feature guides, API docs, architecture, deployment, and development resources. ## arch -Static documentation organization using hierarchical markdown files with cross-referenced navigation structure. +Static documentation site using markdown files organized by topic (features, API, architecture, deployment, development). ## tags -readme, serves, main, index, navigation, hub, headquarter, platform +readme, serves, main, index, landing, page, headquarter, platform ## symbols - ## workflows diff --git a/docs/api/.pi-map.index.md b/docs/api/.pi-map.index.md index b12edba..29e646b 100644 --- a/docs/api/.pi-map.index.md +++ b/docs/api/.pi-map.index.md @@ -2,7 +2,7 @@ dir: docs/api ## role -Provides comprehensive API documentation for the Headquarter platform's REST and WebSocket endpoints, covering authentication, project management, infrastructure tooling, and interactive terminal access. +Documents the REST API and WebSocket interfaces for the platform's core services including authentication, project management, tool instances, and interactive terminal access. ## parent index: docs/.pi-map.index.md map: docs/.pi-map.md diff --git a/docs/api/.pi-map.md b/docs/api/.pi-map.md index 114b0e0..69117b8 100644 --- a/docs/api/.pi-map.md +++ b/docs/api/.pi-map.md @@ -4,21 +4,21 @@ dir: docs/api index: docs/api/.pi-map.index.md ## role -Provides comprehensive API documentation for the Headquarter platform's REST and WebSocket endpoints, covering authentication, project management, infrastructure tooling, and interactive terminal access. +Documents the REST API and WebSocket interfaces for the platform's core services including authentication, project management, tool instances, and interactive terminal access. ## files -- README.md | API documentation for a FastAPI-based Headquarter REST API describing authentication, endpoints, and testing | dep: FastAPI, REST API, session cookie authentication, JSON +- README.md | Provides documentation for a RESTful API built with FastAPI, covering authentication, response formats, endpoint sections, and interactive testing. | dep: FastAPI - auth.md | Documents OAuth2 authentication API endpoints for Authentik-based login flow with session management | dep: Authentik, OAuth2, session cookies -- config-profiles.md | Documents a configuration profile system with git repository mounting capabilities for tool instances, including API endpoints, validation rules, and profile resolution with merge/override semantics. | dep: git repositories, tool instances, container filesystem, SSH keys, glob pattern matching -- projects.md | Documents a REST API for project management with CRUD operations. -- repositories.md | Documents a REST API for managing Git repositories, files, branches, and commits within projects. -- ssh-keys.md | Documents a REST API for managing user SSH keys including listing, generating, and deleting key pairs -- terminal.md | Documents a WebSocket-based Terminal API for interactive terminal access to running tool instance containers with session persistence and heartbeat mechanisms. | dep: WebSocket, HTTP, JSON, UUID, session cookies, terminal/shell emulation -- tool-types.md | Documents REST API endpoints for managing Docker Compose-based tool types with template variable support -- users.md | Documents a REST API for user profile management, avatar uploads, and user-configurable settings. +- config-profiles.md | Documents an API for managing reusable configuration profiles with git repository mounting capabilities for tool instances | dep: git, filesystem, API endpoints, JSON +- projects.md | Documents a REST API for project management with CRUD operations +- repositories.md | Documents REST API endpoints for Git repository management and file operations within a project-based system. +- ssh-keys.md | Documents a REST API for SSH key management including listing, generating, and deleting user SSH keys +- terminal.md | Documents a WebSocket-based Terminal API for interactive terminal access to running tool instance containers with session persistence and heartbeat management. | dep: WebSocket, HTTP, JSON, UUID, terminal/shell, container runtime +- tool-types.md | Documents REST API endpoints for managing Docker Compose-based tool types with built-in vs custom differentiation +- users.md | Documents a REST API for user profile management, avatar uploads, and user configuration settings. ## arch -Documentation-as-code structure organized by domain entity with FastAPI-style endpoint documentation, following standard HTTP method conventions (GET/POST/PUT/DELETE) with WebSocket extensions for real-time features, and OAuth2/session-based authentication patterns. +FastAPI-based RESTful API with OAuth2/Authentik authentication, WebSocket support for real-time features, resource-oriented endpoint organization, and CRUD patterns across project-scoped resources with git integration and container-based tooling. ## tags -api, documents, rest, tool, terminal, endpoints, management, profile +api, documents, management, tool, rest, terminal, ssh, endpoints ## symbols - ## workflows diff --git a/docs/architecture/.pi-map.index.md b/docs/architecture/.pi-map.index.md index 31f98c2..7e7181a 100644 --- a/docs/architecture/.pi-map.index.md +++ b/docs/architecture/.pi-map.index.md @@ -2,7 +2,7 @@ dir: docs/architecture ## role -Provides technical documentation for the "Headquarter" application's system architecture across all layers. +Documents the technical architecture and design decisions for the "Headquarter" full-stack web application across all system layers. ## parent index: docs/.pi-map.index.md map: docs/.pi-map.md diff --git a/docs/architecture/.pi-map.md b/docs/architecture/.pi-map.md index c1d930f..332cf8e 100644 --- a/docs/architecture/.pi-map.md +++ b/docs/architecture/.pi-map.md @@ -4,16 +4,16 @@ dir: docs/architecture index: docs/architecture/.pi-map.index.md ## role -Provides technical documentation for the "Headquarter" application's system architecture across all layers. +Documents the technical architecture and design decisions for the "Headquarter" full-stack web application across all system layers. ## files - backend.md | Documents the layered backend architecture of a FastAPI application with authentication, real-time monitoring, and service management. | dep: FastAPI, SQLAlchemy, asyncpg, Pydantic, Alembic, httpx, pytest, Authentik, Docker -- database.md | Documents the PostgreSQL database schema, relationships, and operational procedures for a "Headquarter" application managing users, projects, git repositories, SSH keys, user configs, and tool types. | dep: PostgreSQL, SQLAlchemy ORM, Alembic, Authentik, Docker Compose -- deployment.md | Documents the containerized deployment architecture, infrastructure components, and operational strategies for a web application called "Headquarter" | dep: Docker, Traefik, React, Vite, nginx, FastAPI, Python 3.11, PostgreSQL 15, Redis 7, Authentik, PgBouncer, alembic +- database.md | Documents the PostgreSQL database schema, relationships, and operational details for the Headquarter application | dep: PostgreSQL, SQLAlchemy, Alembic, Authentik, Docker Compose, PgBouncer +- deployment.md | Documents the containerized deployment architecture for a web application called "Headquarter" using Docker, Traefik, and microservices. | dep: Docker, Traefik, React, Vite, nginx, FastAPI, Python 3.11, PostgreSQL 15, Redis 7, Authentik, OAuth2/OIDC, Alembic, PgBouncer - frontend.md | Documents the frontend architecture for a React-based SPA called "Headquarter" with modular design patterns, real-time SSE events, and OAuth authentication. | dep: React, React Router, Vite, TypeScript, Vitest, React Testing Library, Authentik OAuth ## arch -Documentation-as-code approach with markdown files organized by architectural concern (backend, database, deployment, frontend) covering a full-stack FastAPI/React/PostgreSQL system with real-time features and containerized deployment. +Markdown-based architecture decision records (ADRs) covering four-tier documentation structure: backend (FastAPI), frontend (React SPA), database (PostgreSQL), and deployment (Docker/Traefik microservices). ## tags -documents, backend, architecture, fastapi, application, alembic, authentik, database +documents, backend, architecture, fastapi, application, alembic, authentik, docker ## symbols - ## workflows diff --git a/docs/architecture/decisions/.pi-map.md b/docs/architecture/decisions/.pi-map.md index 4e52b3e..9dde5ec 100644 --- a/docs/architecture/decisions/.pi-map.md +++ b/docs/architecture/decisions/.pi-map.md @@ -6,12 +6,12 @@ index: docs/architecture/decisions/.pi-map.index.md ## role Documents key architectural decisions made during the project's development to provide historical context and rationale for technology choices. ## files -- adr-001-session-auth.md | Documents the architectural decision to use session-based authentication with HMAC-signed httpOnly cookies for OAuth2 flow instead of JWT alternatives | dep: Authentik, Traefik, OAuth2, HMAC-SHA256 -- adr-002-async-sqlalchemy.md | Architecture decision record documenting the choice to use SQLAlchemy 2.0 with async PostgreSQL via asyncpg for an async-capable Python application | dep: SQLAlchemy 2.0, PostgreSQL, asyncpg, Alembic +- adr-001-session-auth.md | Documents the architectural decision to use session-based authentication with HMAC-signed httpOnly cookies for an OAuth2 application. | dep: Authentik, Traefik, OAuth2, HMAC-SHA256 +- adr-002-async-sqlalchemy.md | Architecture Decision Record documenting the choice to use SQLAlchemy 2.0 with async PostgreSQL via asyncpg for an async-capable Python application | dep: SQLAlchemy 2.0, PostgreSQL, asyncpg, Alembic ## arch -Lightweight ADR (Architecture Decision Record) pattern using numbered, markdown-formatted documents with consistent structure covering context, decision, consequences, and status. +Lightweight ADR (Architecture Decision Record) pattern using numbered markdown files with consistent naming convention (adr-NNN-title.md) for traceable, versioned decision documentation. ## tags -adr, async, session, sqlalchemy, decision, hmac, oauth2, 001 +adr, async, session, sqlalchemy, decision, hmac, oauth2, application ## symbols - ## workflows diff --git a/docs/deployment/.pi-map.index.md b/docs/deployment/.pi-map.index.md index a2e8f1e..d055fd1 100644 --- a/docs/deployment/.pi-map.index.md +++ b/docs/deployment/.pi-map.index.md @@ -2,7 +2,7 @@ dir: docs/deployment ## role -Provides operational documentation for deploying, configuring, and securing the Headquarter application in production environments. +Provides deployment and infrastructure documentation for the Headquarter application, covering containerization, reverse proxy, authentication, and environment configuration. ## parent index: docs/.pi-map.index.md map: docs/.pi-map.md diff --git a/docs/deployment/.pi-map.md b/docs/deployment/.pi-map.md index 5e5b7e1..8e56c2e 100644 --- a/docs/deployment/.pi-map.md +++ b/docs/deployment/.pi-map.md @@ -4,16 +4,16 @@ dir: docs/deployment index: docs/deployment/.pi-map.index.md ## role -Provides operational documentation for deploying, configuring, and securing the Headquarter application in production environments. +Provides deployment and infrastructure documentation for the Headquarter application, covering containerization, reverse proxy, authentication, and environment configuration. ## files -- authentik.md | Documents how to configure Authentik as an OAuth2 provider for the Headquarter application | dep: Authentik, Headquarter, OAuth2, Python -- docker.md | Provides deployment instructions for a multi-container "Headquarter" application using Docker Compose in development and production environments | dep: Docker, Docker Compose, FastAPI, React, Vite, PostgreSQL, Redis, Traefik, Alembic, Authentik, Let's Encrypt -- environment.md | Documents all environment variables used by the Headquarter application, including their defaults, construction rules, and security requirements. -- traefik.md | Documents how to configure and deploy Traefik as a reverse proxy with automatic HTTPS for a "Headquarter" application using Docker Compose and Docker labels. | dep: Traefik, Docker, Docker Compose, Let's Encrypt, DNS +- authentik.md | Documents the configuration steps for integrating Authentik as an OAuth2 provider with the Headquarter application | dep: Authentik, Headquarter, OAuth2, Python +- docker.md | Documentation for deploying a multi-container "Headquarter" application using Docker Compose with development and production configurations | dep: Docker, Docker Compose, FastAPI, React, Vite, PostgreSQL, Redis, Traefik, Alembic, Authentik, Let's Encrypt, Alpine +- environment.md | Documents all environment variables used by the Headquarter application, including their defaults, descriptions, and configuration examples for different environments. +- traefik.md | Documents how to configure and deploy Traefik as a reverse proxy and load balancer for the "Headquarter" application using Docker Compose with automatic HTTPS via Let's Encrypt. | dep: Traefik, Docker Compose, Let's Encrypt, DNS, Docker, Alembic ## arch -Documentation-as-code pattern covering containerized deployment (Docker Compose), reverse proxy routing (Traefik), identity federation (Authentik OAuth2), and environment-based configuration management. +Documentation-as-code approach with modular environment-specific guides following standard DevOps patterns: Docker Compose for container orchestration, Traefik for edge routing with automatic HTTPS, Authentik for identity federation via OAuth2, and centralized environment variable management for twelve-factor app configuration. ## tags -docker, authentik, headquarter, traefik, application, documents, environment, configure +docker, authentik, headquarter, traefik, application, documents, environment, configuration ## symbols - ## workflows diff --git a/docs/development/.pi-map.index.md b/docs/development/.pi-map.index.md index a8c2548..763f616 100644 --- a/docs/development/.pi-map.index.md +++ b/docs/development/.pi-map.index.md @@ -2,7 +2,7 @@ dir: docs/development ## role -Developer documentation hub providing setup, contribution, quality, and testing guidelines for the Headquarter full-stack project. +Provides comprehensive documentation for developers contributing to the Headquarter full-stack web application project. ## parent index: docs/.pi-map.index.md map: docs/.pi-map.md @@ -13,6 +13,7 @@ map: docs/.pi-map.md - quality-gates.md - setup.md - testing.md +- ui-review-checklist.md ## links index: docs/development/.pi-map.index.md map: docs/development/.pi-map.md diff --git a/docs/development/.pi-map.md b/docs/development/.pi-map.md index dbef3c4..a478427 100644 --- a/docs/development/.pi-map.md +++ b/docs/development/.pi-map.md @@ -4,16 +4,17 @@ dir: docs/development index: docs/development/.pi-map.index.md ## role -Developer documentation hub providing setup, contribution, quality, and testing guidelines for the Headquarter full-stack project. +Provides comprehensive documentation for developers contributing to the Headquarter full-stack web application project. ## files -- contributing.md | Provides guidelines and workflows for contributing to the Headquarter project | dep: git, ruff, mypy, pytest, npm, React, TypeScript, Python -- quality-gates.md | Defines mandatory quality gates (linting, type checking, testing, security, build) for backend (Python) and frontend (TypeScript) code before merge, including CI/CD integration and IDE setup. | dep: ruff, mypy, pytest, bandit, safety, TypeScript, ESLint, Vitest, pre-commit, npm, make -- setup.md | Provides step-by-step instructions for setting up a full-stack development environment for a FastAPI/React application with PostgreSQL, Redis, and optional Authentik authentication. | dep: Python 3.11+, Node.js 18+, PostgreSQL 15+, Redis 7+, Git, Docker, FastAPI, React, Alembic, uvicorn, npm, Authentik -- testing.md | Documents testing practices, frameworks, and guidelines for both backend (Python/pytest) and frontend (React/Vitest) of a web application called "Headquarter" | dep: pytest, pytest-asyncio, httpx, factory-boy, vitest, react-testing-library, jsdom, playwright, asyncpg, postgresql, authentik, github-actions +- contributing.md | Provides guidelines and workflows for contributing to the Headquarter project, including setup, development workflow, code standards, testing, documentation, and review processes. +- quality-gates.md | Defines mandatory quality gates and tooling configuration for backend (Python) and frontend (TypeScript/React) code before merging changes. | dep: ruff, mypy, pytest, bandit, safety, pre-commit, TypeScript, ESLint, Vitest, npm, make, GitLab CI +- setup.md | Provides step-by-step instructions for setting up a local development environment for a full-stack web application with FastAPI backend, React frontend, PostgreSQL database, Redis cache, and optional Authentik authentication. | dep: Python, Node.js, PostgreSQL, Redis, Git, Docker, FastAPI, React, uvicorn, alembic, npm, Authentik +- testing.md | Documentation guide for backend, frontend, and E2E testing practices in the Headquarter application | dep: pytest, pytest-asyncio, httpx, factory-boy, Vitest, React Testing Library, jsdom, Playwright, PostgreSQL, GitHub Actions +- ui-review-checklist.md | Defines a checklist for reviewing UI changes to ensure compliance with design token standards and accessibility practices. ## arch -Static markdown documentation organized by concern (setup, contributing, quality, testing) with explicit FastAPI/Python backend and React/TypeScript frontend toolchain boundaries. +Documentation-as-code pattern with structured markdown files covering setup, standards, quality gates, testing, and review processes for a FastAPI/React/PostgreSQL/Redis stack. ## tags -pytest, react, testing, contributing, npm, typescript, python, quality +testing, contributing, setup, review, quality, gates, backend, frontend ## symbols - ## workflows diff --git a/docs/features/.pi-map.index.md b/docs/features/.pi-map.index.md index 8b481ab..7f72e92 100644 --- a/docs/features/.pi-map.index.md +++ b/docs/features/.pi-map.index.md @@ -2,7 +2,7 @@ dir: docs/features ## role -User-facing documentation for features of a web-based development platform called "Headquarter" that provides project management, Git repositories, containerized development tools, and browser-based IDE capabilities. +Documentation package describing user-facing features of the Headquarter web-based development platform. ## parent index: docs/.pi-map.index.md map: docs/.pi-map.md diff --git a/docs/features/.pi-map.md b/docs/features/.pi-map.md index 9219fd1..e19180e 100644 --- a/docs/features/.pi-map.md +++ b/docs/features/.pi-map.md @@ -4,22 +4,22 @@ dir: docs/features index: docs/features/.pi-map.index.md ## role -User-facing documentation for features of a web-based development platform called "Headquarter" that provides project management, Git repositories, containerized development tools, and browser-based IDE capabilities. +Documentation package describing user-facing features of the Headquarter web-based development platform. ## files -- auth.md | Documents the OAuth2 authentication system using Authentik for the Headquarter application | dep: Authentik, OAuth2, session cookies -- git-history.md | Documents a Git history visualization UI feature showing commit graphs, branch filtering, and commit details with diff viewing | dep: Git, repositories API, branch selector UI component, diff syntax highlighter -- projects.md | Documentation for project management functionality in a software application called Headquarter -- repositories.md | Documents how to create, manage, and interact with Git repositories within a project-based system | dep: Git, SSH, GitHub, GitLab, API endpoints -- settings.md | Documentation for user settings functionality in a Headquarter application, covering theme preferences, git identity, and default editor configuration. -- ssh-keys.md | Document SSH key management functionality for git authentication in an application -- terminal-troubleshooting.md | Provides troubleshooting guidance for diagnosing and resolving terminal connection and functionality issues in a web-based terminal system | dep: WebSocket, Docker, browser DevTools, API server, terminal session management -- terminal.md | Documents terminal session functionality for browser-based interactive shell access to containerized tool instances -- tool-types.md | Documents how to define, manage, and use development tool types in Headquarter using Docker Compose templates | dep: Docker Compose, YAML, git, VS Code Server, Jupyter Notebook -- workspace.md | Documents a repository workspace file browser interface with repository/branch selection, file tree navigation, file viewing with syntax highlighting, and quick editing capabilities. | dep: Git, Repositories API, Git History, Git Repositories +- auth.md | Documents the OAuth2 authentication system using Authentik for the Headquarter application, including user flows, technical implementation, API endpoints, configuration, and troubleshooting. | dep: Authentik, OAuth2, session cookies +- git-history.md | Documentation for a Git history visualization feature in a web application, showing commit graphs, branch filtering, and detailed commit inspection | dep: Git, web UI framework, repositories API, diff rendering engine +- projects.md | Documentation for project management features in the Headquarter application, covering CRUD operations, workspace navigation, and API endpoints. | dep: workspace.md, repositories.md, ../api/projects.md +- repositories.md | Documents Git repository management features including creation, cloning, URL parsing, and deletion within a project-based system. +- settings.md | Documents user settings functionality for a "Headquarter" application, including theme preferences, git identity, and default editor configuration. +- ssh-keys.md | Documents SSH key management functionality for generating, storing, and using Ed25519 key pairs to authenticate with git remotes. | dep: Git repositories, SSH Keys API +- terminal-troubleshooting.md | Provides troubleshooting guidance for diagnosing and resolving terminal connection and connectivity issues in a web-based tool instance environment. | dep: WebSocket, Docker, browser DevTools, REST API, terminal session management +- terminal.md | Documentation explaining browser-based persistent terminal sessions for containerized tool instances, including features, troubleshooting, and session management. +- tool-types.md | Documents development tool type definitions and management for a platform that spawns containerized development environments via Docker Compose templates. | dep: Docker Compose, YAML, git, VS Code Server (linuxserver/code-server), Jupyter Notebook (jupyter/scipy-notebook), OpenCode +- workspace.md | Documents a repository workspace UI feature for browsing, viewing, and editing files in git repositories through a web interface. | dep: Git repositories, file tree viewer, syntax highlighting, REST API ## arch -Feature-oriented documentation structure with each markdown file independently documenting a distinct system capability; content follows a consistent pattern of overview, usage instructions, and UI element descriptions; docs cover a full-stack developer platform spanning authentication (OAuth2/Authentik), Git operations, Docker-based tooling, and in-browser terminals/editors. +Flat markdown-based documentation structure organized by feature domain, covering authentication, project/workspace management, Git operations, containerized terminals, and user preferences. ## tags -git, terminal, documents, functionality, headquarter, application, ssh, tool +git, documents, terminal, troubleshooting, management, workspace, tool, application ## symbols - ## workflows diff --git a/docs/guides/.pi-map.index.md b/docs/guides/.pi-map.index.md index c9b5407..c7e28be 100644 --- a/docs/guides/.pi-map.index.md +++ b/docs/guides/.pi-map.index.md @@ -2,7 +2,7 @@ dir: docs/guides ## role -Provides user-facing documentation for advanced configuration features of the platform. +Provides user-facing documentation for advanced configuration features. ## parent index: docs/.pi-map.index.md map: docs/.pi-map.md diff --git a/docs/guides/.pi-map.md b/docs/guides/.pi-map.md index 0befb2c..7b99947 100644 --- a/docs/guides/.pi-map.md +++ b/docs/guides/.pi-map.md @@ -4,11 +4,11 @@ dir: docs/guides index: docs/guides/.pi-map.index.md ## role -Provides user-facing documentation for advanced configuration features of the platform. +Provides user-facing documentation for advanced configuration features. ## files -- config-profiles-git-mounts.md | Documents how to mount files and directories from git repositories into tool instances via config profiles | dep: Git, container runtime (bind mounts), glob pattern matching +- config-profiles-git-mounts.md | Documents how to mount files and directories from git repositories into tool instances using config profiles | dep: Git, container runtime (for bind mounts), config profile system ## arch -Flat markdown documentation structure with topic-specific guides. +Static markdown documentation with no code, following standard technical writing patterns for feature guides. ## tags git, config, profiles, mounts, documents, mount, directories, repositories ## symbols diff --git a/docs/superpowers/.pi-map.index.md b/docs/superpowers/.pi-map.index.md index 67762cb..6645c1f 100644 --- a/docs/superpowers/.pi-map.index.md +++ b/docs/superpowers/.pi-map.index.md @@ -2,7 +2,7 @@ dir: docs/superpowers ## role -Documentation for specialized capabilities or advanced features of the project. +Documentation for special capabilities or advanced features of the project. ## parent index: docs/.pi-map.index.md map: docs/.pi-map.md diff --git a/docs/superpowers/.pi-map.md b/docs/superpowers/.pi-map.md index af9d699..7c0314c 100644 --- a/docs/superpowers/.pi-map.md +++ b/docs/superpowers/.pi-map.md @@ -4,10 +4,10 @@ dir: docs/superpowers index: docs/superpowers/.pi-map.index.md ## role -Documentation for advanced or specialized features and capabilities of the project. +Documentation for special capabilities or advanced features of the project. ## files ## arch -Flat documentation structure with topic-based markdown files describing extended functionality beyond core features. +Documentation-only directory with no code architecture; likely contains markdown or structured text files describing extended functionality. ## tags - ## symbols diff --git a/docs/superpowers/handoffs/.pi-map.index.md b/docs/superpowers/handoffs/.pi-map.index.md index b6ddb8f..55b5f86 100644 --- a/docs/superpowers/handoffs/.pi-map.index.md +++ b/docs/superpowers/handoffs/.pi-map.index.md @@ -2,7 +2,7 @@ dir: docs/superpowers/handoffs ## role -Documents infrastructure migration procedures for development environment tooling. +Documents a specific infrastructure migration task for tool container home directory configuration. ## parent index: docs/superpowers/.pi-map.index.md map: docs/superpowers/.pi-map.md diff --git a/docs/superpowers/handoffs/.pi-map.md b/docs/superpowers/handoffs/.pi-map.md index 5826bee..0e3dd4e 100644 --- a/docs/superpowers/handoffs/.pi-map.md +++ b/docs/superpowers/handoffs/.pi-map.md @@ -4,13 +4,13 @@ dir: docs/superpowers/handoffs index: docs/superpowers/handoffs/.pi-map.index.md ## role -Documents infrastructure migration procedures for development environment tooling. +Documents a specific infrastructure migration task for tool container home directory configuration. ## files -- tool-container-home-directory.md | Documents a multi-phase implementation plan for changing tool container home directories from `/workspace` to `/home/user` while preserving repo root directory names in mount targets and maintaining backward compatibility. | dep: alembic, docker, python, pydantic/sqlalchemy models, manifest compiler, instance service, config profile resolver, permission fixer +- tool-container-home-directory.md | Documents the implementation plan and progress for changing tool container home directories from `/workspace` to `/home/user` while preserving repo/workspace name in mount targets. | dep: Alembic, Docker, Docker Compose, Python, SQLAlchemy, tool-images/base.dockerfile ## arch -Technical documentation following phased implementation pattern with backward compatibility considerations. +Documentation-as-code pattern tracking implementation progress of a filesystem mount target migration from `/workspace` to `/home/user` with backward compatibility considerations. ## tags -home, tool, container, directory, documents, multi, phase, implementation +tool, home, container, workspace, directory, documents, implementation, plan ## symbols - ## workflows diff --git a/docs/superpowers/plans/.pi-map.index.md b/docs/superpowers/plans/.pi-map.index.md index 241094f..c252c4d 100644 --- a/docs/superpowers/plans/.pi-map.index.md +++ b/docs/superpowers/plans/.pi-map.index.md @@ -2,7 +2,7 @@ dir: docs/superpowers/plans ## role -Contains dated implementation planning documents that specify step-by-step technical approaches for major infrastructure, authentication, database, and UI feature development. +Contains architectural implementation plans and design documents for major system features and infrastructure changes. ## parent index: docs/superpowers/.pi-map.index.md map: docs/superpowers/.pi-map.md diff --git a/docs/superpowers/plans/.pi-map.md b/docs/superpowers/plans/.pi-map.md index f374762..4da8b77 100644 --- a/docs/superpowers/plans/.pi-map.md +++ b/docs/superpowers/plans/.pi-map.md @@ -4,17 +4,17 @@ dir: docs/superpowers/plans index: docs/superpowers/plans/.pi-map.index.md ## role -Contains dated implementation planning documents that specify step-by-step technical approaches for major infrastructure, authentication, database, and UI feature development. +Contains architectural implementation plans and design documents for major system features and infrastructure changes. ## files -- 2024-05-16-docker-infrastructure.md | Defines a step-by-step implementation plan for setting up a complete Docker-based development infrastructure with multi-service orchestration including PostgreSQL, Redis, Traefik, Authentik, FastAPI backend, and React frontend. | dep: Docker, Docker Compose, Make, Python 3.11, Node.js 20, PostgreSQL, Redis, Traefik, Authentik, FastAPI, React, Vite, nginx, alembic, uvicorn, SQLAlchemy, pydantic, structlog -- 2026-05-17-auth-oauth.md | Implementation plan for adding Authentik-backed OIDC authentication with JWT access tokens and DB-backed refresh tokens to a FastAPI application | dep: FastAPI, SQLAlchemy, Alembic, python-jose, httpx, pytest, Authentik, PostgreSQL -- 2026-05-17-database-models.md | Define an implementation plan for building SQLAlchemy 2.0 async database models, Alembic migrations, and seed data for a FastAPI backend. | dep: SQLAlchemy 2.x, asyncpg, Alembic, pytest, pytest-asyncio, Pydantic Settings, PostgreSQL, FastAPI -- 2026-05-24-session-branch-selection.md | Implementation plan for replacing free-text branch input with a dropdown of available branches and adding "Create new branch" functionality in a session creation form | dep: React, TypeScript, FastAPI, Python, Git subprocess, Pydantic, API client -- tool-container-home-directory.md | Implementation plan to make `/home/user` the configurable default home directory for tool containers while preserving repository name in mount targets, migrating legacy tool types, and maintaining `/workspace` backward compatibility symlink. | dep: Alembic, Docker, Compose, manifest compiler, instance service, config profile resolver, permission fixer, base dockerfile, pytest +- 2024-05-16-docker-infrastructure.md | Plan for implementing a complete Docker-based development infrastructure with multi-service orchestration including PostgreSQL, Redis, Traefik, Authentik, FastAPI backend, and React frontend | dep: Docker, Docker Compose, Make, Python 3.11, Node.js 20, PostgreSQL, Redis, Traefik, Authentik, FastAPI, React, Vite, nginx, uvicorn, SQLAlchemy, alembic, pydantic +- 2026-05-17-auth-oauth.md | Implementation plan for adding Authentik-backed OIDC authentication with JWT access tokens and database-backed refresh tokens to a FastAPI application | dep: FastAPI, SQLAlchemy, Alembic, python-jose, httpx, pytest, PostgreSQL, Authentik +- 2026-05-17-database-models.md | Define an implementation plan for building SQLAlchemy 2.0 async database models with Alembic migrations and seed data for a FastAPI backend. | dep: SQLAlchemy 2.x, asyncpg, Alembic, pytest, pytest-asyncio, Pydantic Settings, PostgreSQL, FastAPI, superpowers:subagent-driven-development +- 2026-05-24-session-branch-selection.md | Implementation plan for replacing free-text branch input with a dropdown of available branches and adding "Create new branch" functionality in a session creation form | dep: React, TypeScript, FastAPI, Python, Git, subprocess, Pydantic +- tool-container-home-directory.md | Implementation plan for migrating tool containers from `/workspace` to configurable `/home/user` home directory with backward compatibility symlink and repository name preservation | dep: Alembic, Docker, Docker Compose, Python (SQLAlchemy, Jinja2), pytest, npm/TypeScript ## arch -Document-driven planning architecture using chronological Markdown specifications with precise technical scope, dependencies, and migration strategies for incremental system evolution. +Markdown-based technical specification documents using dated versioning, covering full-stack concerns (Docker orchestration, auth, database, UI/UX, container tooling) with detailed step-by-step implementation guidance for complex cross-cutting changes. ## tags -05, fastapi, 2026, implementation, plan, docker, alembic, postgresql +05, fastapi, 2026, plan, docker, alembic, postgresql, authentik ## symbols - ## workflows diff --git a/docs/superpowers/specs/.pi-map.index.md b/docs/superpowers/specs/.pi-map.index.md index bb460e5..e4cc147 100644 --- a/docs/superpowers/specs/.pi-map.index.md +++ b/docs/superpowers/specs/.pi-map.index.md @@ -2,7 +2,7 @@ dir: docs/superpowers/specs ## role -Contains design specifications and test plans for upcoming features ("superpowers") being planned for the project. +Contains technical design specifications and test plans for upcoming features, serving as the project's architectural decision record and implementation blueprint repository. ## parent index: docs/superpowers/.pi-map.index.md map: docs/superpowers/.pi-map.md diff --git a/docs/superpowers/specs/.pi-map.md b/docs/superpowers/specs/.pi-map.md index aec4226..41cc8e8 100644 --- a/docs/superpowers/specs/.pi-map.md +++ b/docs/superpowers/specs/.pi-map.md @@ -4,15 +4,15 @@ dir: docs/superpowers/specs index: docs/superpowers/specs/.pi-map.index.md ## role -Contains design specifications and test plans for upcoming features ("superpowers") being planned for the project. +Contains technical design specifications and test plans for upcoming features, serving as the project's architectural decision record and implementation blueprint repository. ## files -- 2026-05-17-auth-oauth-design.md | Design document for implementing OAuth2/OIDC authentication with Authentik, internal JWT access tokens, and database-backed refresh token rotation. | dep: Authentik, JWKS, JWT, database/PostgreSQL, cookies, pytest, mypy, ruff -- 2026-05-24-session-branch-selection-design.md | Design document for replacing free-text branch input with a dropdown of available branches and adding the ability to create a new local branch at clone time in a session creation UI. | dep: React/TypeScript frontend, Python/FastAPI backend, Git, API client, ToolInstance database model -- tool-container-home-directory-test-plan.md | Test plan and QA checklist for validating configurable home directory behavior in tool containers, covering manifest compilation, path expansion, database migrations, and mount target resolution. | dep: pytest, alembic, docker, compose, manifest compiler, instance service, ToolType, config profiles, git mounts +- 2026-05-17-auth-oauth-design.md | Design document for implementing OAuth2/OIDC authentication via Authentik with internal JWT access tokens, DB-backed refresh token rotation, and secure cookie handling. | dep: Authentik, JWT library, database/ORM, web framework (implied), JWKS client, cookie handling library +- 2026-05-24-session-branch-selection-design.md | Design document for replacing free-text branch input with a dropdown of available branches and adding the ability to create a new local branch at clone time in a session creation UI. | dep: React, TypeScript, Python, FastAPI, Pydantic, Git, API client, ToolInstance model +- tool-container-home-directory-test-plan.md | This file is a comprehensive QA test plan for validating a configurable home directory feature in tool containers, covering unit tests, integration tests, manual QA checklist, and exit criteria for the implementation. | dep: pytest, alembic, docker, compose, manifest compiler, instance service, git mounts, config profiles, ToolType, workspace mounts, entrypoint permission fixer ## arch -Document-driven architecture using dated Markdown design documents for feature specifications, plus standalone test plans for QA validation of complex features. +Markdown-based documentation with date-prefixed design documents following a chronological naming convention, plus standalone test plans; each spec isolates a single feature concern (auth, session UI, container configuration) with no code dependencies between documents. ## tags -design, 2026, 05, branch, database, session, test, plan +design, 2026, 05, branch, session, test, plan, home ## symbols - ## workflows diff --git a/docs/templates/.pi-map.index.md b/docs/templates/.pi-map.index.md index c26728e..1a9ef66 100644 --- a/docs/templates/.pi-map.index.md +++ b/docs/templates/.pi-map.index.md @@ -2,7 +2,7 @@ dir: docs/templates ## role -Provides standardized markdown templates for consistent documentation of APIs, architecture, and features across the project. +Provides standardized markdown templates for consistent documentation of API endpoints, system architecture, and product features across the project. ## parent index: docs/.pi-map.index.md map: docs/.pi-map.md diff --git a/docs/templates/.pi-map.md b/docs/templates/.pi-map.md index 589983a..a1c7c39 100644 --- a/docs/templates/.pi-map.md +++ b/docs/templates/.pi-map.md @@ -4,15 +4,15 @@ dir: docs/templates index: docs/templates/.pi-map.index.md ## role -Provides standardized markdown templates for consistent documentation of APIs, architecture, and features across the project. +Provides standardized markdown templates for consistent documentation of API endpoints, system architecture, and product features across the project. ## files -- api-endpoint.md | Provides a standardized markdown template for documenting REST API endpoints with sections for authentication, requests, responses, and examples. +- api-endpoint.md | Provides a standardized markdown template for documenting REST API endpoints with request/response specifications and examples. - architecture.md | Provides a markdown template for documenting system architecture with standardized sections for components, data flow, technology stack, and operational considerations. -- feature-doc.md | Markdown template for documenting software features with standardized sections +- feature-doc.md | Provides a markdown template for documenting new product features with standardized sections covering overview, usage, API reference, configuration, and troubleshooting. ## arch -Template-based documentation system using structured markdown files with predefined sections to enforce uniformity and completeness in technical documentation. +Template-based documentation pattern using structured, fill-in-the-section markdown files to enforce uniform documentation standards and reduce authoring overhead. ## tags -standardized, markdown, template, documenting, api, sections, architecture, provides +api, provides, standardized, markdown, template, documenting, architecture, endpoint ## symbols - ## workflows diff --git a/e2e/.pi-map.index.md b/e2e/.pi-map.index.md index 691fda2..5d2e7b0 100644 --- a/e2e/.pi-map.index.md +++ b/e2e/.pi-map.index.md @@ -2,7 +2,7 @@ dir: e2e ## role -End-to-end testing package for the "headquarter" project using Playwright to validate full application workflows across multiple browsers. +Provides end-to-end testing infrastructure for the headquarter project using Playwright to validate full application workflows across browsers. ## parent index: ./.pi-map.index.md map: ./.pi-map.md diff --git a/e2e/.pi-map.md b/e2e/.pi-map.md index cb81d13..02559d0 100644 --- a/e2e/.pi-map.md +++ b/e2e/.pi-map.md @@ -4,14 +4,14 @@ dir: e2e index: e2e/.pi-map.index.md ## role -End-to-end testing package for the "headquarter" project using Playwright to validate full application workflows across multiple browsers. +Provides end-to-end testing infrastructure for the headquarter project using Playwright to validate full application workflows across browsers. ## files -- package.json | Defines an end-to-end testing package for a "headquarter" project using Playwright | dep: @playwright/test -- playwright.config.ts | Configures Playwright test runner with parallel execution, CI-specific settings, and multi-browser project definitions. | dep: @playwright/test +- package.json | Defines an end-to-end testing package for a "headquarter" project using Playwright. | dep: @playwright/test +- playwright.config.ts | Configures Playwright end-to-end testing with parallel execution, CI-specific settings, and cross-browser testing on Chromium and Firefox. | dep: @playwright/test, process.env ## arch -Standard Playwright testing architecture with configuration-driven parallel test execution, CI-optimized settings, and multi-browser project matrix (Chromium/Firefox/WebKit) for cross-browser compatibility testing. +Follows a standard Playwright testing pattern with parallel test execution, CI-optimized configuration, and cross-browser testing matrix (Chromium/Firefox), separated as a standalone test package with its own dependencies. ## tags -package, test, end, project, playwright, @playwright, playwright.config, defines +end, testing, package, playwright, @playwright, test, playwright.config, defines ## symbols - ## workflows diff --git a/e2e/tests/.pi-map.index.md b/e2e/tests/.pi-map.index.md index ec6ff1a..5441eaf 100644 --- a/e2e/tests/.pi-map.index.md +++ b/e2e/tests/.pi-map.index.md @@ -2,7 +2,7 @@ dir: e2e/tests ## role -End-to-end testing suite for authentication flows using Playwright. +End-to-end testing suite for authentication and user flows using Playwright. ## parent index: e2e/.pi-map.index.md map: e2e/.pi-map.md diff --git a/e2e/tests/.pi-map.md b/e2e/tests/.pi-map.md index 696f3d5..57acb11 100644 --- a/e2e/tests/.pi-map.md +++ b/e2e/tests/.pi-map.md @@ -4,13 +4,13 @@ dir: e2e/tests index: e2e/tests/.pi-map.index.md ## role -End-to-end testing suite for authentication flows using Playwright. +End-to-end testing suite for authentication and user flows using Playwright. ## files -- login.spec.ts | End-to-end tests for authentication flow using Playwright, verifying login page accessibility, OAuth redirect behavior, and protected route enforcement. | dep: @playwright/test +- login.spec.ts | End-to-end tests for authentication flows using Playwright, verifying login page accessibility, OAuth redirection, and protected route authentication guards. | dep: @playwright/test ## arch -Spec-based test organization with Playwright test runner, following page-object pattern for browser automation and scenario-based test isolation. +Specification-style test files using Playwright's page-driven testing pattern with behavior-focused `.spec.ts` naming convention. ## tags -end, login.spec, tests, authentication, flow, playwright, verifying, login +end, authentication, login.spec, tests, flows, playwright, verifying, login ## symbols - ## workflows diff --git a/openspec/.pi-map.index.md b/openspec/.pi-map.index.md index 7cf8d6e..828b233 100644 --- a/openspec/.pi-map.index.md +++ b/openspec/.pi-map.index.md @@ -2,7 +2,7 @@ dir: openspec ## role -Defines the OpenSpec methodology and project configuration for managing software requirements, specifications, and task tracking as living documentation within a Docker-based coding agent management platform. +Defines the OpenSpec methodology and project configuration for managing living documentation, requirements, and development workflows. ## parent index: ./.pi-map.index.md map: ./.pi-map.md diff --git a/openspec/.pi-map.md b/openspec/.pi-map.md index 6bb99b5..a5de444 100644 --- a/openspec/.pi-map.md +++ b/openspec/.pi-map.md @@ -1,31 +1,17 @@ -# . -dir: . +# openspec +dir: openspec -index: ./.pi-map.index.md - -## Project Map Protocol - -1. Read this protocol and the root `.pi-map.index.md` first. -2. Use `index:` / `map:` references to open relevant directory indexes and maps. -3. Load indexes before rich maps during task-start navigation. -4. Read the local rich map and actual source before editing. -5. Treat non-empty `## dirty` sections in either artifact as stale. -6. If source and generated artifacts disagree, trust source. -7. If map and index disagree, trust neither blindly; verify from source and regenerate the pair. -8. After editing source, run `project_map_patch` for each changed file. -9. Before broad architectural claims or final handoff, run `project_map_validate` when freshness matters. - -Trust boundary: index routes, map orients, source decides. +index: openspec/.pi-map.index.md ## role -Defines a living documentation methodology and project configuration for managing software requirements, specifications, and development discipline rules within a Docker-based coding agent platform. +Defines the OpenSpec methodology and project configuration for managing living documentation, requirements, and development workflows. ## files -- README.md | Documents the OpenSpec methodology for managing software requirements, specifications, and task tracking as living documentation within a project repository. | dep: OpenSpec CLI (@fission-ai/openspec), Docker, SQLAlchemy, Alembic, Authentik, React, TypeScript, Tailwind, Traefik, Jinja2, xterm.js, pytest, mypy, ruff, npm -- config.yaml | Configuration file defining project metadata, technology stack, and software development discipline rules for a Docker-based coding agent management platform | dep: FastAPI, React, Vite, PostgreSQL, SQLAlchemy, Redis, Alembic, pytest, Docker Compose, Traefik, Authentik +- README.md | Documents the OpenSpec methodology for managing requirements, specifications, and task tracking as living documentation within the repository | dep: OpenSpec CLI, npx, AGENTS.md +- config.yaml | Configuration file defining a Docker-based development platform project with technology stack, SDD methodology settings, and strict TDD enforcement rules | dep: FastAPI, PostgreSQL, Redis, Alembic, React, Vite, Docker Compose, Traefik, Authentik, pytest, SQLAlchemy ## arch -Documentation-as-code pattern with YAML-based declarative configuration separating project metadata, technology stack definitions, and behavioral rules for automated agent orchestration. +Documentation-as-code pattern with YAML-based configuration enforcing Docker-centric development, strict TDD, and SDD (Specification-Driven Development) methodology. ## tags -software, project, docker, sqlalchemy, alembic, authentik, react, traefik +methodology, readme, config, documents, openspec, managing, requirements, specifications ## symbols - ## workflows diff --git a/openspec/changes/.pi-map.index.md b/openspec/changes/.pi-map.index.md index 5abf126..68f75ba 100644 --- a/openspec/changes/.pi-map.index.md +++ b/openspec/changes/.pi-map.index.md @@ -2,7 +2,7 @@ dir: openspec/changes ## role -Tracks and manages specification changes and versioning history for the OpenAPI specification evolution. +Manages change tracking and history for OpenAPI specification documents, enabling audit trails and versioning of specification modifications. ## parent index: openspec/.pi-map.index.md map: openspec/.pi-map.md diff --git a/openspec/changes/.pi-map.md b/openspec/changes/.pi-map.md index cee2d9f..5bfe634 100644 --- a/openspec/changes/.pi-map.md +++ b/openspec/changes/.pi-map.md @@ -1,13 +1,13 @@ -# changes -dir: changes +# openspec/changes +dir: openspec/changes -index: changes/.pi-map.index.md +index: openspec/changes/.pi-map.index.md ## role -Package for tracking, storing, and managing file changes or diffs in the project. +Manages change tracking and history for OpenAPI specification documents, enabling audit trails and versioning of specification modifications. ## files ## arch -Likely implements a change-log or diff-storage pattern, possibly with immutable change records and versioning for audit trails or synchronization. +Event-sourced or command-pattern architecture with immutable change records, likely using a storage-agnostic interface for persisting incremental diffs or revision logs of specification state transitions. ## tags - ## symbols diff --git a/openspec/changes/archive/.pi-map.index.md b/openspec/changes/archive/.pi-map.index.md index 14ac49d..90e5d2d 100644 --- a/openspec/changes/archive/.pi-map.index.md +++ b/openspec/changes/archive/.pi-map.index.md @@ -1,167 +1,157 @@ -# . (index) -dir: . - -## Project Map Protocol - -1. Read this protocol and the root `.pi-map.index.md` first. -2. Use `index:` / `map:` references to open relevant directory indexes and maps. -3. Load indexes before rich maps during task-start navigation. -4. Read the local rich map and actual source before editing. -5. Treat non-empty `## dirty` sections in either artifact as stale. -6. If source and generated artifacts disagree, trust source. -7. If map and index disagree, trust neither blindly; verify from source and regenerate the pair. -8. After editing source, run `project_map_patch` for each changed file. -9. Before broad architectural claims or final handoff, run `project_map_validate` when freshness matters. - -Trust boundary: index routes, map orients, source decides. +# openspec/changes/archive (index) +dir: openspec/changes/archive ## role -This is an empty package directory with no files to analyze. +Provides historical record and backward compatibility for schema changes that have been archived or superseded. ## parent -- +index: openspec/changes/.pi-map.index.md +map: openspec/changes/.pi-map.md ## children -- 2025-05-17-oauth-traefik-integration - index: 2025-05-17-oauth-traefik-integration/.pi-map.index.md - map: 2025-05-17-oauth-traefik-integration/.pi-map.md -- 2025-05-17-user-profile - index: 2025-05-17-user-profile/.pi-map.index.md - map: 2025-05-17-user-profile/.pi-map.md -- 2025-05-18-git-repo-management - index: 2025-05-18-git-repo-management/.pi-map.index.md - map: 2025-05-18-git-repo-management/.pi-map.md -- 2025-05-18-ssh-key-management - index: 2025-05-18-ssh-key-management/.pi-map.index.md - map: 2025-05-18-ssh-key-management/.pi-map.md -- 2025-05-18-test-infrastructure-improvements - index: 2025-05-18-test-infrastructure-improvements/.pi-map.index.md - map: 2025-05-18-test-infrastructure-improvements/.pi-map.md -- 2025-05-18-tool-types-definition - index: 2025-05-18-tool-types-definition/.pi-map.index.md - map: 2025-05-18-tool-types-definition/.pi-map.md -- 2025-05-18-user-config-management - index: 2025-05-18-user-config-management/.pi-map.index.md - map: 2025-05-18-user-config-management/.pi-map.md -- 2026-05-17-auth-oauth - index: 2026-05-17-auth-oauth/.pi-map.index.md - map: 2026-05-17-auth-oauth/.pi-map.md -- 2026-05-17-database-models - index: 2026-05-17-database-models/.pi-map.index.md - map: 2026-05-17-database-models/.pi-map.md -- 2026-05-17-frontend-foundation - index: 2026-05-17-frontend-foundation/.pi-map.index.md - map: 2026-05-17-frontend-foundation/.pi-map.md -- 2026-05-17-project-management - index: 2026-05-17-project-management/.pi-map.index.md - map: 2026-05-17-project-management/.pi-map.md -- 2026-05-18-database-setup-recovery - index: 2026-05-18-database-setup-recovery/.pi-map.index.md - map: 2026-05-18-database-setup-recovery/.pi-map.md -- 2026-05-18-simplify-authentik-auth - index: 2026-05-18-simplify-authentik-auth/.pi-map.index.md - map: 2026-05-18-simplify-authentik-auth/.pi-map.md -- 2026-05-19-api-documentation - index: 2026-05-19-api-documentation/.pi-map.index.md - map: 2026-05-19-api-documentation/.pi-map.md -- 2026-05-19-documentation-overhaul - index: 2026-05-19-documentation-overhaul/.pi-map.index.md - map: 2026-05-19-documentation-overhaul/.pi-map.md -- 2026-05-19-file-editor - index: 2026-05-19-file-editor/.pi-map.index.md - map: 2026-05-19-file-editor/.pi-map.md -- 2026-05-19-git-control - index: 2026-05-19-git-control/.pi-map.index.md - map: 2026-05-19-git-control/.pi-map.md -- 2026-05-19-git-history-visualization - index: 2026-05-19-git-history-visualization/.pi-map.index.md - map: 2026-05-19-git-history-visualization/.pi-map.md -- 2026-05-19-repo-workspace - index: 2026-05-19-repo-workspace/.pi-map.index.md - map: 2026-05-19-repo-workspace/.pi-map.md -- 2026-05-19-responsive-spacing-improvements - index: 2026-05-19-responsive-spacing-improvements/.pi-map.index.md - map: 2026-05-19-responsive-spacing-improvements/.pi-map.md -- 2026-05-19-smart-git-url-parsing - index: 2026-05-19-smart-git-url-parsing/.pi-map.index.md - map: 2026-05-19-smart-git-url-parsing/.pi-map.md -- 2026-05-19-tool-instances - index: 2026-05-19-tool-instances/.pi-map.index.md - map: 2026-05-19-tool-instances/.pi-map.md -- 2026-05-19-tool-terminal - index: 2026-05-19-tool-terminal/.pi-map.index.md - map: 2026-05-19-tool-terminal/.pi-map.md -- 2026-05-19-universal-icon-system - index: 2026-05-19-universal-icon-system/.pi-map.index.md - map: 2026-05-19-universal-icon-system/.pi-map.md -- 2026-05-19-workspace-visual-overhaul - index: 2026-05-19-workspace-visual-overhaul/.pi-map.index.md - map: 2026-05-19-workspace-visual-overhaul/.pi-map.md -- 2026-05-22-cloudflare-tunnel-instances-superseded - index: 2026-05-22-cloudflare-tunnel-instances-superseded/.pi-map.index.md - map: 2026-05-22-cloudflare-tunnel-instances-superseded/.pi-map.md -- 2026-05-22-enforce-single-tool-type-with-port-config - index: 2026-05-22-enforce-single-tool-type-with-port-config/.pi-map.index.md - map: 2026-05-22-enforce-single-tool-type-with-port-config/.pi-map.md -- 2026-05-22-git-repo-ssh-clone-check - index: 2026-05-22-git-repo-ssh-clone-check/.pi-map.index.md - map: 2026-05-22-git-repo-ssh-clone-check/.pi-map.md -- 2026-05-22-git-repo-working-clones - index: 2026-05-22-git-repo-working-clones/.pi-map.index.md - map: 2026-05-22-git-repo-working-clones/.pi-map.md -- 2026-05-22-instance-health-monitoring - index: 2026-05-22-instance-health-monitoring/.pi-map.index.md - map: 2026-05-22-instance-health-monitoring/.pi-map.md -- 2026-05-22-instance-proxy - index: 2026-05-22-instance-proxy/.pi-map.index.md - map: 2026-05-22-instance-proxy/.pi-map.md -- 2026-05-22-opencode-web-terminal - index: 2026-05-22-opencode-web-terminal/.pi-map.index.md - map: 2026-05-22-opencode-web-terminal/.pi-map.md -- 2026-05-22-repo-clone-mode-with-ssh - index: 2026-05-22-repo-clone-mode-with-ssh/.pi-map.index.md - map: 2026-05-22-repo-clone-mode-with-ssh/.pi-map.md -- 2026-05-22-session-management-fixes - index: 2026-05-22-session-management-fixes/.pi-map.index.md - map: 2026-05-22-session-management-fixes/.pi-map.md -- 2026-05-22-sessions-hub - index: 2026-05-22-sessions-hub/.pi-map.index.md - map: 2026-05-22-sessions-hub/.pi-map.md -- 2026-05-22-tool-config-management - index: 2026-05-22-tool-config-management/.pi-map.index.md - map: 2026-05-22-tool-config-management/.pi-map.md -- 2026-05-22-tool-config-ui-rework - index: 2026-05-22-tool-config-ui-rework/.pi-map.index.md - map: 2026-05-22-tool-config-ui-rework/.pi-map.md -- 2026-05-22-tool-workshop - index: 2026-05-22-tool-workshop/.pi-map.index.md - map: 2026-05-22-tool-workshop/.pi-map.md -- 2026-05-22-ui-redesign-home-settings - index: 2026-05-22-ui-redesign-home-settings/.pi-map.index.md - map: 2026-05-22-ui-redesign-home-settings/.pi-map.md -- 2026-05-23-remove-built-in-tools - index: 2026-05-23-remove-built-in-tools/.pi-map.index.md - map: 2026-05-23-remove-built-in-tools/.pi-map.md -- 2026-05-24-terminal-startup-and-container-tools - index: 2026-05-24-terminal-startup-and-container-tools/.pi-map.index.md - map: 2026-05-24-terminal-startup-and-container-tools/.pi-map.md -- 2026-05-25-add-config-profiles - index: 2026-05-25-add-config-profiles/.pi-map.index.md - map: 2026-05-25-add-config-profiles/.pi-map.md -- 2026-05-25-mobile-app-usability - index: 2026-05-25-mobile-app-usability/.pi-map.index.md - map: 2026-05-25-mobile-app-usability/.pi-map.md -- 2026-05-25-mobile-pages-overhaul - index: 2026-05-25-mobile-pages-overhaul/.pi-map.index.md - map: 2026-05-25-mobile-pages-overhaul/.pi-map.md -- 2026-06-12-completed-changes-archive - index: 2026-06-12-completed-changes-archive/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/.pi-map.md -- 2026-06-14-completed-specs-archive - index: 2026-06-14-completed-specs-archive/.pi-map.index.md - map: 2026-06-14-completed-specs-archive/.pi-map.md +- openspec/changes/archive/2025-05-17-oauth-traefik-integration + index: openspec/changes/archive/2025-05-17-oauth-traefik-integration/.pi-map.index.md + map: openspec/changes/archive/2025-05-17-oauth-traefik-integration/.pi-map.md +- openspec/changes/archive/2025-05-17-user-profile + index: openspec/changes/archive/2025-05-17-user-profile/.pi-map.index.md + map: openspec/changes/archive/2025-05-17-user-profile/.pi-map.md +- openspec/changes/archive/2025-05-18-git-repo-management + index: openspec/changes/archive/2025-05-18-git-repo-management/.pi-map.index.md + map: openspec/changes/archive/2025-05-18-git-repo-management/.pi-map.md +- openspec/changes/archive/2025-05-18-ssh-key-management + index: openspec/changes/archive/2025-05-18-ssh-key-management/.pi-map.index.md + map: openspec/changes/archive/2025-05-18-ssh-key-management/.pi-map.md +- openspec/changes/archive/2025-05-18-test-infrastructure-improvements + index: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/.pi-map.index.md + map: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/.pi-map.md +- openspec/changes/archive/2025-05-18-tool-types-definition + index: openspec/changes/archive/2025-05-18-tool-types-definition/.pi-map.index.md + map: openspec/changes/archive/2025-05-18-tool-types-definition/.pi-map.md +- openspec/changes/archive/2025-05-18-user-config-management + index: openspec/changes/archive/2025-05-18-user-config-management/.pi-map.index.md + map: openspec/changes/archive/2025-05-18-user-config-management/.pi-map.md +- openspec/changes/archive/2026-05-17-auth-oauth + index: openspec/changes/archive/2026-05-17-auth-oauth/.pi-map.index.md + map: openspec/changes/archive/2026-05-17-auth-oauth/.pi-map.md +- openspec/changes/archive/2026-05-17-database-models + index: openspec/changes/archive/2026-05-17-database-models/.pi-map.index.md + map: openspec/changes/archive/2026-05-17-database-models/.pi-map.md +- openspec/changes/archive/2026-05-17-frontend-foundation + index: openspec/changes/archive/2026-05-17-frontend-foundation/.pi-map.index.md + map: openspec/changes/archive/2026-05-17-frontend-foundation/.pi-map.md +- openspec/changes/archive/2026-05-17-project-management + index: openspec/changes/archive/2026-05-17-project-management/.pi-map.index.md + map: openspec/changes/archive/2026-05-17-project-management/.pi-map.md +- openspec/changes/archive/2026-05-18-database-setup-recovery + index: openspec/changes/archive/2026-05-18-database-setup-recovery/.pi-map.index.md + map: openspec/changes/archive/2026-05-18-database-setup-recovery/.pi-map.md +- openspec/changes/archive/2026-05-18-simplify-authentik-auth + index: openspec/changes/archive/2026-05-18-simplify-authentik-auth/.pi-map.index.md + map: openspec/changes/archive/2026-05-18-simplify-authentik-auth/.pi-map.md +- openspec/changes/archive/2026-05-19-api-documentation + index: openspec/changes/archive/2026-05-19-api-documentation/.pi-map.index.md + map: openspec/changes/archive/2026-05-19-api-documentation/.pi-map.md +- openspec/changes/archive/2026-05-19-documentation-overhaul + index: openspec/changes/archive/2026-05-19-documentation-overhaul/.pi-map.index.md + map: openspec/changes/archive/2026-05-19-documentation-overhaul/.pi-map.md +- openspec/changes/archive/2026-05-19-file-editor + index: openspec/changes/archive/2026-05-19-file-editor/.pi-map.index.md + map: openspec/changes/archive/2026-05-19-file-editor/.pi-map.md +- openspec/changes/archive/2026-05-19-git-control + index: openspec/changes/archive/2026-05-19-git-control/.pi-map.index.md + map: openspec/changes/archive/2026-05-19-git-control/.pi-map.md +- openspec/changes/archive/2026-05-19-git-history-visualization + index: openspec/changes/archive/2026-05-19-git-history-visualization/.pi-map.index.md + map: openspec/changes/archive/2026-05-19-git-history-visualization/.pi-map.md +- openspec/changes/archive/2026-05-19-repo-workspace + index: openspec/changes/archive/2026-05-19-repo-workspace/.pi-map.index.md + map: openspec/changes/archive/2026-05-19-repo-workspace/.pi-map.md +- openspec/changes/archive/2026-05-19-responsive-spacing-improvements + index: openspec/changes/archive/2026-05-19-responsive-spacing-improvements/.pi-map.index.md + map: openspec/changes/archive/2026-05-19-responsive-spacing-improvements/.pi-map.md +- openspec/changes/archive/2026-05-19-smart-git-url-parsing + index: openspec/changes/archive/2026-05-19-smart-git-url-parsing/.pi-map.index.md + map: openspec/changes/archive/2026-05-19-smart-git-url-parsing/.pi-map.md +- openspec/changes/archive/2026-05-19-tool-instances + index: openspec/changes/archive/2026-05-19-tool-instances/.pi-map.index.md + map: openspec/changes/archive/2026-05-19-tool-instances/.pi-map.md +- openspec/changes/archive/2026-05-19-tool-terminal + index: openspec/changes/archive/2026-05-19-tool-terminal/.pi-map.index.md + map: openspec/changes/archive/2026-05-19-tool-terminal/.pi-map.md +- openspec/changes/archive/2026-05-19-universal-icon-system + index: openspec/changes/archive/2026-05-19-universal-icon-system/.pi-map.index.md + map: openspec/changes/archive/2026-05-19-universal-icon-system/.pi-map.md +- openspec/changes/archive/2026-05-19-workspace-visual-overhaul + index: openspec/changes/archive/2026-05-19-workspace-visual-overhaul/.pi-map.index.md + map: openspec/changes/archive/2026-05-19-workspace-visual-overhaul/.pi-map.md +- openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded + index: openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/.pi-map.md +- openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config + index: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/.pi-map.md +- openspec/changes/archive/2026-05-22-git-repo-ssh-clone-check + index: openspec/changes/archive/2026-05-22-git-repo-ssh-clone-check/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-git-repo-ssh-clone-check/.pi-map.md +- openspec/changes/archive/2026-05-22-git-repo-working-clones + index: openspec/changes/archive/2026-05-22-git-repo-working-clones/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-git-repo-working-clones/.pi-map.md +- openspec/changes/archive/2026-05-22-instance-health-monitoring + index: openspec/changes/archive/2026-05-22-instance-health-monitoring/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-instance-health-monitoring/.pi-map.md +- openspec/changes/archive/2026-05-22-instance-proxy + index: openspec/changes/archive/2026-05-22-instance-proxy/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-instance-proxy/.pi-map.md +- openspec/changes/archive/2026-05-22-opencode-web-terminal + index: openspec/changes/archive/2026-05-22-opencode-web-terminal/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-opencode-web-terminal/.pi-map.md +- openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh + index: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/.pi-map.md +- openspec/changes/archive/2026-05-22-session-management-fixes + index: openspec/changes/archive/2026-05-22-session-management-fixes/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-session-management-fixes/.pi-map.md +- openspec/changes/archive/2026-05-22-sessions-hub + index: openspec/changes/archive/2026-05-22-sessions-hub/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-sessions-hub/.pi-map.md +- openspec/changes/archive/2026-05-22-tool-config-management + index: openspec/changes/archive/2026-05-22-tool-config-management/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-tool-config-management/.pi-map.md +- openspec/changes/archive/2026-05-22-tool-config-ui-rework + index: openspec/changes/archive/2026-05-22-tool-config-ui-rework/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-tool-config-ui-rework/.pi-map.md +- openspec/changes/archive/2026-05-22-tool-workshop + index: openspec/changes/archive/2026-05-22-tool-workshop/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-tool-workshop/.pi-map.md +- openspec/changes/archive/2026-05-22-ui-redesign-home-settings + index: openspec/changes/archive/2026-05-22-ui-redesign-home-settings/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-ui-redesign-home-settings/.pi-map.md +- openspec/changes/archive/2026-05-23-remove-built-in-tools + index: openspec/changes/archive/2026-05-23-remove-built-in-tools/.pi-map.index.md + map: openspec/changes/archive/2026-05-23-remove-built-in-tools/.pi-map.md +- openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools + index: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/.pi-map.index.md + map: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/.pi-map.md +- openspec/changes/archive/2026-05-25-add-config-profiles + index: openspec/changes/archive/2026-05-25-add-config-profiles/.pi-map.index.md + map: openspec/changes/archive/2026-05-25-add-config-profiles/.pi-map.md +- openspec/changes/archive/2026-05-25-mobile-app-usability + index: openspec/changes/archive/2026-05-25-mobile-app-usability/.pi-map.index.md + map: openspec/changes/archive/2026-05-25-mobile-app-usability/.pi-map.md +- openspec/changes/archive/2026-05-25-mobile-pages-overhaul + index: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/.pi-map.index.md + map: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive + index: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.md +- openspec/changes/archive/2026-06-14-completed-specs-archive + index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md + map: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md +- openspec/changes/archive/web-ui-spacing-typography-rework + index: openspec/changes/archive/web-ui-spacing-typography-rework/.pi-map.index.md + map: openspec/changes/archive/web-ui-spacing-typography-rework/.pi-map.md ## files ## links -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/.pi-map.md b/openspec/changes/archive/.pi-map.md index 13e37b0..9f1859f 100644 --- a/openspec/changes/archive/.pi-map.md +++ b/openspec/changes/archive/.pi-map.md @@ -1,27 +1,13 @@ -# . -dir: . +# openspec/changes/archive +dir: openspec/changes/archive -index: ./.pi-map.index.md - -## Project Map Protocol - -1. Read this protocol and the root `.pi-map.index.md` first. -2. Use `index:` / `map:` references to open relevant directory indexes and maps. -3. Load indexes before rich maps during task-start navigation. -4. Read the local rich map and actual source before editing. -5. Treat non-empty `## dirty` sections in either artifact as stale. -6. If source and generated artifacts disagree, trust source. -7. If map and index disagree, trust neither blindly; verify from source and regenerate the pair. -8. After editing source, run `project_map_patch` for each changed file. -9. Before broad architectural claims or final handoff, run `project_map_validate` when freshness matters. - -Trust boundary: index routes, map orients, source decides. +index: openspec/changes/archive/.pi-map.index.md ## role -This is an empty package directory with no files to analyze. +Provides historical record and backward compatibility for schema changes that have been archived or superseded. ## files ## arch -N/A - no code or architecture patterns present +Immutable archive pattern with versioned change records, likely using append-only storage for audit trails and rollback support. ## tags - ## symbols diff --git a/openspec/changes/archive/2025-05-17-oauth-traefik-integration/.pi-map.index.md b/openspec/changes/archive/2025-05-17-oauth-traefik-integration/.pi-map.index.md index f82fe39..3ee076d 100644 --- a/openspec/changes/archive/2025-05-17-oauth-traefik-integration/.pi-map.index.md +++ b/openspec/changes/archive/2025-05-17-oauth-traefik-integration/.pi-map.index.md @@ -1,23 +1,23 @@ -# 2025-05-17-oauth-traefik-integration (index) -dir: 2025-05-17-oauth-traefik-integration +# openspec/changes/archive/2025-05-17-oauth-traefik-integration (index) +dir: openspec/changes/archive/2025-05-17-oauth-traefik-integration ## role -Infrastructure integration package for deploying a Docker-based application behind an existing Traefik reverse proxy with OAuth authentication via Authentik. +Archive of design documents and task tracking for integrating OAuth authentication with Traefik reverse proxy deployment ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2025-05-17-oauth-traefik-integration/specs - index: 2025-05-17-oauth-traefik-integration/specs/.pi-map.index.md - map: 2025-05-17-oauth-traefik-integration/specs/.pi-map.md +- openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs + index: openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/.pi-map.index.md + map: openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/.pi-map.md ## files - .openspec.yaml - design.md - proposal.md - tasks.md ## links -index: 2025-05-17-oauth-traefik-integration/.pi-map.index.md -map: 2025-05-17-oauth-traefik-integration/.pi-map.md +index: openspec/changes/archive/2025-05-17-oauth-traefik-integration/.pi-map.index.md +map: openspec/changes/archive/2025-05-17-oauth-traefik-integration/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2025-05-17-oauth-traefik-integration/.pi-map.md b/openspec/changes/archive/2025-05-17-oauth-traefik-integration/.pi-map.md index f0b158d..adba32b 100644 --- a/openspec/changes/archive/2025-05-17-oauth-traefik-integration/.pi-map.md +++ b/openspec/changes/archive/2025-05-17-oauth-traefik-integration/.pi-map.md @@ -1,19 +1,19 @@ -# 2025-05-17-oauth-traefik-integration -dir: 2025-05-17-oauth-traefik-integration +# openspec/changes/archive/2025-05-17-oauth-traefik-integration +dir: openspec/changes/archive/2025-05-17-oauth-traefik-integration -index: 2025-05-17-oauth-traefik-integration/.pi-map.index.md +index: openspec/changes/archive/2025-05-17-oauth-traefik-integration/.pi-map.index.md ## role -Infrastructure integration package for deploying a Docker-based application behind an existing Traefik reverse proxy with OAuth authentication via Authentik. +Archive of design documents and task tracking for integrating OAuth authentication with Traefik reverse proxy deployment ## files -- .openspec.yaml | Defines an OpenAPI specification file metadata with schema type and creation date -- design.md | Design document for making a Docker-based application deployable behind an existing Traefik reverse proxy by removing hardcoded URLs and adding environment-based configuration | dep: Docker, Docker Compose, Traefik, Authentik, Python (config.py, auth.py), Vite (frontend) -- proposal.md | Proposes architectural changes to externalize Authentik/domain configuration to environment variables and add Traefik reverse proxy deployment support. -- tasks.md | A task tracking document for externalizing authentication/domain configuration, creating Traefik deployment, updating frontend config, and running verification tests. +- .openspec.yaml | Defines an OpenSpec configuration file with schema type and creation date metadata +- design.md | Design document outlining the plan to make an application deployable behind an existing Traefik reverse proxy by removing hardcoded URLs and making all external service endpoints configurable via environment variables. | dep: Docker, Docker Compose, Traefik, Authentik, Python (config.py, auth.py), Vite (frontend) +- proposal.md | Proposes infrastructure changes to externalize Authentik/domain configuration via environment variables and add Traefik reverse proxy deployment support. | dep: docker-compose, traefik, authentik, python, vite +- tasks.md | Tracks completion of infrastructure and configuration tasks for externalizing Authentik auth, adding Traefik reverse proxy support, and updating frontend/backend configuration. ## arch -Environment-driven configuration pattern replacing hardcoded URLs with externalized variables, plus reverse proxy integration using Traefik labels and Docker Compose deployment orchestration. +Specification-driven infrastructure migration using environment-based configuration externalization pattern to decouple hardcoded service dependencies ## tags -traefik, design, configuration, .openspec, document, docker, reverse, proxy +traefik, configuration, authentik, design, reverse, proxy, tasks, .openspec ## symbols - ## workflows diff --git a/openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/.pi-map.index.md b/openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/.pi-map.index.md index 2f99a20..e4897b6 100644 --- a/openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/.pi-map.index.md +++ b/openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/.pi-map.index.md @@ -1,25 +1,25 @@ -# 2025-05-17-oauth-traefik-integration/specs (index) -dir: 2025-05-17-oauth-traefik-integration/specs +# openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs (index) +dir: openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs ## role -Contains specification documents and design requirements for the OAuth-Traefik integration feature +Contains archived specification documents for an OAuth and Traefik integration feature planned for May 17, 2025. ## parent -index: 2025-05-17-oauth-traefik-integration/.pi-map.index.md -map: 2025-05-17-oauth-traefik-integration/.pi-map.md +index: openspec/changes/archive/2025-05-17-oauth-traefik-integration/.pi-map.index.md +map: openspec/changes/archive/2025-05-17-oauth-traefik-integration/.pi-map.md ## children -- 2025-05-17-oauth-traefik-integration/specs/auth-oauth - index: 2025-05-17-oauth-traefik-integration/specs/auth-oauth/.pi-map.index.md - map: 2025-05-17-oauth-traefik-integration/specs/auth-oauth/.pi-map.md -- 2025-05-17-oauth-traefik-integration/specs/docker-infrastructure - index: 2025-05-17-oauth-traefik-integration/specs/docker-infrastructure/.pi-map.index.md - map: 2025-05-17-oauth-traefik-integration/specs/docker-infrastructure/.pi-map.md -- 2025-05-17-oauth-traefik-integration/specs/traefik-deployment - index: 2025-05-17-oauth-traefik-integration/specs/traefik-deployment/.pi-map.index.md - map: 2025-05-17-oauth-traefik-integration/specs/traefik-deployment/.pi-map.md +- openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/auth-oauth + index: openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/auth-oauth/.pi-map.index.md + map: openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/auth-oauth/.pi-map.md +- openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/docker-infrastructure + index: openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/docker-infrastructure/.pi-map.index.md + map: openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/docker-infrastructure/.pi-map.md +- openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/traefik-deployment + index: openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/traefik-deployment/.pi-map.index.md + map: openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/traefik-deployment/.pi-map.md ## files ## links -index: 2025-05-17-oauth-traefik-integration/specs/.pi-map.index.md -map: 2025-05-17-oauth-traefik-integration/specs/.pi-map.md +index: openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/.pi-map.index.md +map: openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/.pi-map.md b/openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/.pi-map.md index 1e62ffe..4edb202 100644 --- a/openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/.pi-map.md +++ b/openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/.pi-map.md @@ -1,13 +1,13 @@ -# 2025-05-17-oauth-traefik-integration/specs -dir: 2025-05-17-oauth-traefik-integration/specs +# openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs +dir: openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs -index: 2025-05-17-oauth-traefik-integration/specs/.pi-map.index.md +index: openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/.pi-map.index.md ## role -Contains specification documents and design requirements for the OAuth-Traefik integration feature +Contains archived specification documents for an OAuth and Traefik integration feature planned for May 17, 2025. ## files ## arch -Documentation-driven development with structured specification files (likely markdown/asciidoc) defining system requirements, API contracts, and integration patterns before implementation +Specification-driven design using dated archival structure for tracking feature requirements and technical design decisions. ## tags - ## symbols diff --git a/openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/auth-oauth/.pi-map.index.md b/openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/auth-oauth/.pi-map.index.md index 2b32992..d1b31d6 100644 --- a/openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/auth-oauth/.pi-map.index.md +++ b/openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/auth-oauth/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2025-05-17-oauth-traefik-integration/specs/auth-oauth (index) -dir: 2025-05-17-oauth-traefik-integration/specs/auth-oauth +# openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/auth-oauth (index) +dir: openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/auth-oauth ## role -Defines authentication requirements for OAuth2/OIDC integration with Authentik and secure session management using httpOnly cookies. +Defines authentication specifications for OAuth2/OIDC integration with Authentik and secure session management using httpOnly cookies. ## parent -index: 2025-05-17-oauth-traefik-integration/specs/.pi-map.index.md -map: 2025-05-17-oauth-traefik-integration/specs/.pi-map.md +index: openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/.pi-map.index.md +map: openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2025-05-17-oauth-traefik-integration/specs/auth-oauth/.pi-map.index.md -map: 2025-05-17-oauth-traefik-integration/specs/auth-oauth/.pi-map.md +index: openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/auth-oauth/.pi-map.index.md +map: openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/auth-oauth/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/auth-oauth/.pi-map.md b/openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/auth-oauth/.pi-map.md index 0d7a1a1..d12c6da 100644 --- a/openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/auth-oauth/.pi-map.md +++ b/openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/auth-oauth/.pi-map.md @@ -1,16 +1,16 @@ -# 2025-05-17-oauth-traefik-integration/specs/auth-oauth -dir: 2025-05-17-oauth-traefik-integration/specs/auth-oauth +# openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/auth-oauth +dir: openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/auth-oauth -index: 2025-05-17-oauth-traefik-integration/specs/auth-oauth/.pi-map.index.md +index: openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/auth-oauth/.pi-map.index.md ## role -Defines authentication requirements for OAuth2/OIDC integration with Authentik and secure session management using httpOnly cookies. +Defines authentication specifications for OAuth2/OIDC integration with Authentik and secure session management using httpOnly cookies. ## files -- spec.md | Specifies modified requirements for OAuth2/OIDC authentication via Authentik and session security with httpOnly cookies | dep: Authentik, Traefik, OAuth2, OIDC +- spec.md | Defines modified requirements for OAuth2/OIDC authentication with Authentik and session security using httpOnly cookies | dep: Authentik, Traefik, OAuth2/OIDC, JWKS ## arch -Specification-driven architecture with external identity provider delegation, token-based authentication flows, and cookie-based session security patterns. +Specification-driven design using markdown-based requirements documents with focus on security patterns (OAuth2/OIDC flow, httpOnly cookie-based session storage). ## tags -oauth2, oidc, authentik, spec, specifies, modified, requirements, authentication +oauth2, oidc, authentik, spec, defines, modified, requirements, authentication ## symbols - ## workflows diff --git a/openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/docker-infrastructure/.pi-map.index.md b/openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/docker-infrastructure/.pi-map.index.md index 29f082d..575ee6b 100644 --- a/openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/docker-infrastructure/.pi-map.index.md +++ b/openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/docker-infrastructure/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2025-05-17-oauth-traefik-integration/specs/docker-infrastructure (index) -dir: 2025-05-17-oauth-traefik-integration/specs/docker-infrastructure +# openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/docker-infrastructure (index) +dir: openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/docker-infrastructure ## role -Defines Docker infrastructure specifications using behavior-driven development examples to validate environment configuration and service orchestration requirements. +Defines infrastructure specifications for Docker-based deployment supporting OAuth and Traefik integration. ## parent -index: 2025-05-17-oauth-traefik-integration/specs/.pi-map.index.md -map: 2025-05-17-oauth-traefik-integration/specs/.pi-map.md +index: openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/.pi-map.index.md +map: openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2025-05-17-oauth-traefik-integration/specs/docker-infrastructure/.pi-map.index.md -map: 2025-05-17-oauth-traefik-integration/specs/docker-infrastructure/.pi-map.md +index: openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/docker-infrastructure/.pi-map.index.md +map: openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/docker-infrastructure/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/docker-infrastructure/.pi-map.md b/openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/docker-infrastructure/.pi-map.md index 2850208..364abc1 100644 --- a/openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/docker-infrastructure/.pi-map.md +++ b/openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/docker-infrastructure/.pi-map.md @@ -1,14 +1,14 @@ -# 2025-05-17-oauth-traefik-integration/specs/docker-infrastructure -dir: 2025-05-17-oauth-traefik-integration/specs/docker-infrastructure +# openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/docker-infrastructure +dir: openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/docker-infrastructure -index: 2025-05-17-oauth-traefik-integration/specs/docker-infrastructure/.pi-map.index.md +index: openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/docker-infrastructure/.pi-map.index.md ## role -Defines Docker infrastructure specifications using behavior-driven development examples to validate environment configuration and service orchestration requirements. +Defines infrastructure specifications for Docker-based deployment supporting OAuth and Traefik integration. ## files -- spec.md | Defines modified requirements for Docker Compose setup and environment configuration using specification by example (Gherkin-style scenarios) | dep: Docker Compose, Traefik +- spec.md | Defines modified requirements for Docker Compose setup and environment configuration documentation | dep: Docker Compose, Traefik, .env.example ## arch -Specification-by-example pattern with Gherkin-style scenarios for executable requirements, targeting Docker Compose-based infrastructure validation. +Documentation-driven specification pattern using markdown-based requirements definition for container orchestration configuration. ## tags spec, defines, modified, requirements, docker, compose, setup, environment ## symbols diff --git a/openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/traefik-deployment/.pi-map.index.md b/openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/traefik-deployment/.pi-map.index.md index c65212f..5881638 100644 --- a/openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/traefik-deployment/.pi-map.index.md +++ b/openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/traefik-deployment/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2025-05-17-oauth-traefik-integration/specs/traefik-deployment (index) -dir: 2025-05-17-oauth-traefik-integration/specs/traefik-deployment +# openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/traefik-deployment (index) +dir: openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/traefik-deployment ## role -Defines deployment specifications for Traefik reverse proxy infrastructure in a Docker Compose environment. +Defines infrastructure-as-code specifications for deploying Traefik reverse proxy with OAuth integration via Docker Compose ## parent -index: 2025-05-17-oauth-traefik-integration/specs/.pi-map.index.md -map: 2025-05-17-oauth-traefik-integration/specs/.pi-map.md +index: openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/.pi-map.index.md +map: openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2025-05-17-oauth-traefik-integration/specs/traefik-deployment/.pi-map.index.md -map: 2025-05-17-oauth-traefik-integration/specs/traefik-deployment/.pi-map.md +index: openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/traefik-deployment/.pi-map.index.md +map: openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/traefik-deployment/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/traefik-deployment/.pi-map.md b/openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/traefik-deployment/.pi-map.md index 347d23c..5992504 100644 --- a/openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/traefik-deployment/.pi-map.md +++ b/openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/traefik-deployment/.pi-map.md @@ -1,16 +1,16 @@ -# 2025-05-17-oauth-traefik-integration/specs/traefik-deployment -dir: 2025-05-17-oauth-traefik-integration/specs/traefik-deployment +# openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/traefik-deployment +dir: openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/traefik-deployment -index: 2025-05-17-oauth-traefik-integration/specs/traefik-deployment/.pi-map.index.md +index: openspec/changes/archive/2025-05-17-oauth-traefik-integration/specs/traefik-deployment/.pi-map.index.md ## role -Defines deployment specifications for Traefik reverse proxy infrastructure in a Docker Compose environment. +Defines infrastructure-as-code specifications for deploying Traefik reverse proxy with OAuth integration via Docker Compose ## files -- spec.md | Specifies requirements for Traefik Docker Compose deployment configuration and environment variable documentation | dep: Traefik, Docker Compose, Authentik, OIDC +- spec.md | Defines requirements for Traefik Docker Compose deployment configuration with environment-based domain routing | dep: Docker Compose, Traefik, Authentik, OIDC ## arch -Infrastructure-as-specification pattern using markdown-based requirements documentation for containerized reverse proxy deployment. +Specification-driven documentation pattern using markdown-based requirements definition for containerized deployment configuration ## tags -traefik, spec, specifies, requirements, docker, compose, deployment, configuration +traefik, spec, defines, requirements, docker, compose, deployment, configuration ## symbols - ## workflows diff --git a/openspec/changes/archive/2025-05-17-user-profile/.pi-map.index.md b/openspec/changes/archive/2025-05-17-user-profile/.pi-map.index.md index 9c37392..eeb48b3 100644 --- a/openspec/changes/archive/2025-05-17-user-profile/.pi-map.index.md +++ b/openspec/changes/archive/2025-05-17-user-profile/.pi-map.index.md @@ -1,15 +1,15 @@ -# 2025-05-17-user-profile (index) -dir: 2025-05-17-user-profile +# openspec/changes/archive/2025-05-17-user-profile (index) +dir: openspec/changes/archive/2025-05-17-user-profile ## role -Design and planning package for an authenticated user profile management feature with read/update endpoints, frontend page, and avatar upload. +Defines a complete user profile management feature specification including backend API, frontend UI, and avatar upload capabilities. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2025-05-17-user-profile/specs - index: 2025-05-17-user-profile/specs/.pi-map.index.md - map: 2025-05-17-user-profile/specs/.pi-map.md +- openspec/changes/archive/2025-05-17-user-profile/specs + index: openspec/changes/archive/2025-05-17-user-profile/specs/.pi-map.index.md + map: openspec/changes/archive/2025-05-17-user-profile/specs/.pi-map.md ## files - .openspec.yaml - README.md @@ -17,8 +17,8 @@ map: ./.pi-map.md - proposal.md - tasks.md ## links -index: 2025-05-17-user-profile/.pi-map.index.md -map: 2025-05-17-user-profile/.pi-map.md +index: openspec/changes/archive/2025-05-17-user-profile/.pi-map.index.md +map: openspec/changes/archive/2025-05-17-user-profile/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2025-05-17-user-profile/.pi-map.md b/openspec/changes/archive/2025-05-17-user-profile/.pi-map.md index 4451c54..8417eb3 100644 --- a/openspec/changes/archive/2025-05-17-user-profile/.pi-map.md +++ b/openspec/changes/archive/2025-05-17-user-profile/.pi-map.md @@ -1,20 +1,20 @@ -# 2025-05-17-user-profile -dir: 2025-05-17-user-profile +# openspec/changes/archive/2025-05-17-user-profile +dir: openspec/changes/archive/2025-05-17-user-profile -index: 2025-05-17-user-profile/.pi-map.index.md +index: openspec/changes/archive/2025-05-17-user-profile/.pi-map.index.md ## role -Design and planning package for an authenticated user profile management feature with read/update endpoints, frontend page, and avatar upload. +Defines a complete user profile management feature specification including backend API, frontend UI, and avatar upload capabilities. ## files -- .openspec.yaml | Defines an OpenAPI specification file metadata with schema type and creation date +- .openspec.yaml | Defines an OpenSpec configuration file with schema type and creation date metadata - README.md | Documents the implementation of an authenticated user profile read/update flow across API and frontend -- design.md | Design document for implementing a user profile management feature with backend API endpoints and frontend page | dep: FastAPI, JWT authentication, cookie-based auth, static file serving, React/frontend framework -- proposal.md | Proposes implementing authenticated user profile management with read/update endpoints, frontend page, and avatar upload functionality. | dep: apps/api/src/api/, apps/web/src/, auth-oauth, User model -- tasks.md | Tracks implementation tasks for a user profile feature across backend API and frontend, with completion status and follow-up notes. +- design.md | Design document specifying a user profile management feature with backend API endpoints and frontend page for viewing/updating profile data and uploading avatars. | dep: FastAPI, JWT authentication, User model, UploadFile, static file serving, frontend routing/form handling +- proposal.md | This file is a technical proposal document outlining the implementation of user profile management functionality, including API endpoints, frontend page, and avatar upload capabilities. +- tasks.md | A project task tracking file documenting the implementation status of a user profile feature across backend API, frontend UI, and verification steps. ## arch -Specification-driven development using OpenAPI schema definitions, with phased task tracking across backend API and frontend implementation, documented through proposal, design, and task artifacts. +Specification-driven development using OpenSpec schema with structured design documents (design/proposal/tasks) separating concerns across backend API endpoints and frontend React page components. ## tags -api, user, profile, frontend, design, tasks, .openspec, implementation +profile, user, api, frontend, implementation, design, proposal, .openspec ## symbols - ## workflows diff --git a/openspec/changes/archive/2025-05-17-user-profile/specs/.pi-map.index.md b/openspec/changes/archive/2025-05-17-user-profile/specs/.pi-map.index.md index c14b6f9..d3f4608 100644 --- a/openspec/changes/archive/2025-05-17-user-profile/specs/.pi-map.index.md +++ b/openspec/changes/archive/2025-05-17-user-profile/specs/.pi-map.index.md @@ -1,19 +1,19 @@ -# 2025-05-17-user-profile/specs (index) -dir: 2025-05-17-user-profile/specs +# openspec/changes/archive/2025-05-17-user-profile/specs (index) +dir: openspec/changes/archive/2025-05-17-user-profile/specs ## role -Contains specification documents defining requirements and behavior for the user profile feature. +Contains archived specification documents for user profile feature changes from May 17, 2025, serving as historical design documentation for the openspec project. ## parent -index: 2025-05-17-user-profile/.pi-map.index.md -map: 2025-05-17-user-profile/.pi-map.md +index: openspec/changes/archive/2025-05-17-user-profile/.pi-map.index.md +map: openspec/changes/archive/2025-05-17-user-profile/.pi-map.md ## children -- 2025-05-17-user-profile/specs/user-profile - index: 2025-05-17-user-profile/specs/user-profile/.pi-map.index.md - map: 2025-05-17-user-profile/specs/user-profile/.pi-map.md +- openspec/changes/archive/2025-05-17-user-profile/specs/user-profile + index: openspec/changes/archive/2025-05-17-user-profile/specs/user-profile/.pi-map.index.md + map: openspec/changes/archive/2025-05-17-user-profile/specs/user-profile/.pi-map.md ## files ## links -index: 2025-05-17-user-profile/specs/.pi-map.index.md -map: 2025-05-17-user-profile/specs/.pi-map.md +index: openspec/changes/archive/2025-05-17-user-profile/specs/.pi-map.index.md +map: openspec/changes/archive/2025-05-17-user-profile/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2025-05-17-user-profile/specs/.pi-map.md b/openspec/changes/archive/2025-05-17-user-profile/specs/.pi-map.md index 65fdd3b..a4c9992 100644 --- a/openspec/changes/archive/2025-05-17-user-profile/specs/.pi-map.md +++ b/openspec/changes/archive/2025-05-17-user-profile/specs/.pi-map.md @@ -1,13 +1,13 @@ -# 2025-05-17-user-profile/specs -dir: 2025-05-17-user-profile/specs +# openspec/changes/archive/2025-05-17-user-profile/specs +dir: openspec/changes/archive/2025-05-17-user-profile/specs -index: 2025-05-17-user-profile/specs/.pi-map.index.md +index: openspec/changes/archive/2025-05-17-user-profile/specs/.pi-map.index.md ## role -Contains specification documents defining requirements and behavior for the user profile feature. +Contains archived specification documents for user profile feature changes from May 17, 2025, serving as historical design documentation for the openspec project. ## files ## arch -Documentation-driven specification pattern with date-based versioning for feature scoping. +Simple date-based archival directory structure with no active code, following a flat file storage pattern for version-controlled specification snapshots. ## tags - ## symbols diff --git a/openspec/changes/archive/2025-05-17-user-profile/specs/user-profile/.pi-map.index.md b/openspec/changes/archive/2025-05-17-user-profile/specs/user-profile/.pi-map.index.md index 6d850b3..70b723a 100644 --- a/openspec/changes/archive/2025-05-17-user-profile/specs/user-profile/.pi-map.index.md +++ b/openspec/changes/archive/2025-05-17-user-profile/specs/user-profile/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2025-05-17-user-profile/specs/user-profile (index) -dir: 2025-05-17-user-profile/specs/user-profile +# openspec/changes/archive/2025-05-17-user-profile/specs/user-profile (index) +dir: openspec/changes/archive/2025-05-17-user-profile/specs/user-profile ## role -Defines functional specifications for a user profile management system including profile retrieval, updates, and local avatar storage +Defines functional requirements for user profile management capabilities including data retrieval, updates, and local avatar storage. ## parent -index: 2025-05-17-user-profile/specs/.pi-map.index.md -map: 2025-05-17-user-profile/specs/.pi-map.md +index: openspec/changes/archive/2025-05-17-user-profile/specs/.pi-map.index.md +map: openspec/changes/archive/2025-05-17-user-profile/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2025-05-17-user-profile/specs/user-profile/.pi-map.index.md -map: 2025-05-17-user-profile/specs/user-profile/.pi-map.md +index: openspec/changes/archive/2025-05-17-user-profile/specs/user-profile/.pi-map.index.md +map: openspec/changes/archive/2025-05-17-user-profile/specs/user-profile/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2025-05-17-user-profile/specs/user-profile/.pi-map.md b/openspec/changes/archive/2025-05-17-user-profile/specs/user-profile/.pi-map.md index 606312c..c926bbf 100644 --- a/openspec/changes/archive/2025-05-17-user-profile/specs/user-profile/.pi-map.md +++ b/openspec/changes/archive/2025-05-17-user-profile/specs/user-profile/.pi-map.md @@ -1,16 +1,16 @@ -# 2025-05-17-user-profile/specs/user-profile -dir: 2025-05-17-user-profile/specs/user-profile +# openspec/changes/archive/2025-05-17-user-profile/specs/user-profile +dir: openspec/changes/archive/2025-05-17-user-profile/specs/user-profile -index: 2025-05-17-user-profile/specs/user-profile/.pi-map.index.md +index: openspec/changes/archive/2025-05-17-user-profile/specs/user-profile/.pi-map.index.md ## role -Defines functional specifications for a user profile management system including profile retrieval, updates, and local avatar storage +Defines functional requirements for user profile management capabilities including data retrieval, updates, and local avatar storage. ## files -- spec.md | Defines functional specifications for a user profile management system including profile retrieval, updates, and local avatar storage | dep: auth-oauth, User database model, pytest, mypy, ruff, npm/typecheck, npm/lint +- spec.md | Specifies requirements for user profile management including retrieval, updates, and local avatar storage | dep: auth-oauth, User database model, pytest, mypy, ruff, npm typecheck, npm lint ## arch -Specification-driven design with markdown-based requirements documentation +Specification-driven requirements document using markdown-based structured documentation pattern for feature specification. ## tags -profile, npm, spec, defines, functional, specifications, user, management +spec, specifies, requirements, user, profile, management, including, retrieval ## symbols - ## workflows diff --git a/openspec/changes/archive/2025-05-18-git-repo-management/.pi-map.index.md b/openspec/changes/archive/2025-05-18-git-repo-management/.pi-map.index.md index d173e5e..8f50de5 100644 --- a/openspec/changes/archive/2025-05-18-git-repo-management/.pi-map.index.md +++ b/openspec/changes/archive/2025-05-18-git-repo-management/.pi-map.index.md @@ -1,23 +1,23 @@ -# 2025-05-18-git-repo-management (index) -dir: 2025-05-18-git-repo-management +# openspec/changes/archive/2025-05-18-git-repo-management (index) +dir: openspec/changes/archive/2025-05-18-git-repo-management ## role -This package contains design and planning documents for implementing a git repository management feature that enables creating, listing, cloning, and deleting bare git repositories within projects. +Contains completed specification documents for implementing git repository management feature in an existing project/SSH-key platform. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2025-05-18-git-repo-management/specs - index: 2025-05-18-git-repo-management/specs/.pi-map.index.md - map: 2025-05-18-git-repo-management/specs/.pi-map.md +- openspec/changes/archive/2025-05-18-git-repo-management/specs + index: openspec/changes/archive/2025-05-18-git-repo-management/specs/.pi-map.index.md + map: openspec/changes/archive/2025-05-18-git-repo-management/specs/.pi-map.md ## files - .openspec.yaml - design.md - proposal.md - tasks.md ## links -index: 2025-05-18-git-repo-management/.pi-map.index.md -map: 2025-05-18-git-repo-management/.pi-map.md +index: openspec/changes/archive/2025-05-18-git-repo-management/.pi-map.index.md +map: openspec/changes/archive/2025-05-18-git-repo-management/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2025-05-18-git-repo-management/.pi-map.md b/openspec/changes/archive/2025-05-18-git-repo-management/.pi-map.md index 1e44665..775c77b 100644 --- a/openspec/changes/archive/2025-05-18-git-repo-management/.pi-map.md +++ b/openspec/changes/archive/2025-05-18-git-repo-management/.pi-map.md @@ -1,19 +1,19 @@ -# 2025-05-18-git-repo-management -dir: 2025-05-18-git-repo-management +# openspec/changes/archive/2025-05-18-git-repo-management +dir: openspec/changes/archive/2025-05-18-git-repo-management -index: 2025-05-18-git-repo-management/.pi-map.index.md +index: openspec/changes/archive/2025-05-18-git-repo-management/.pi-map.index.md ## role -This package contains design and planning documents for implementing a git repository management feature that enables creating, listing, cloning, and deleting bare git repositories within projects. +Contains completed specification documents for implementing git repository management feature in an existing project/SSH-key platform. ## files -- .openspec.yaml | Defines an OpenSpec configuration file with schema type and creation date metadata -- design.md | Design document specifying a bare git repository management system for projects with create/list/clone/delete operations | dep: git, filesystem, database, API, Dockerfile -- proposal.md | Proposes a feature to add git repository creation, cloning, and management capabilities within existing projects | dep: project-management, git, backend API, frontend UI, disk storage -- tasks.md | Project task checklist tracking implementation of a Git repository management feature across backend API, frontend UI, and project integration with verification steps. +- .openspec.yaml | Defines an OpenAPI specification metadata file with schema type and creation date +- design.md | Design document for adding bare git repository management to a platform that already has projects and SSH keys | dep: git, subprocess, filesystem storage, database, API, frontend +- proposal.md | Proposes adding git repository management functionality to a platform that already has projects but lacks repository creation and management capabilities | dep: git, backend API, frontend UI, disk storage, project management system +- tasks.md | This is a completed task checklist for implementing a Git repository management feature with backend API, frontend UI, project integration, and verification steps. | dep: FastAPI, Pydantic, React, git, pytest, ruff, mypy, npm, docker-compose ## arch -Documentation-driven specification pattern using layered design docs (proposal → design → tasks → API spec) to formally define requirements before implementation, with clear separation between backend API, frontend UI, and project integration concerns. +Specification-driven development with layered documentation (proposal → design → tasks) plus OpenAPI metadata, following a structured change request process with clear separation of backend API, frontend UI, and integration concerns. ## tags -git, management, design, repository, project, creation, .openspec, projects +git, repository, management, design, creation, .openspec, adding, platform ## symbols - ## workflows diff --git a/openspec/changes/archive/2025-05-18-git-repo-management/specs/.pi-map.index.md b/openspec/changes/archive/2025-05-18-git-repo-management/specs/.pi-map.index.md index a91868f..089bb64 100644 --- a/openspec/changes/archive/2025-05-18-git-repo-management/specs/.pi-map.index.md +++ b/openspec/changes/archive/2025-05-18-git-repo-management/specs/.pi-map.index.md @@ -1,19 +1,19 @@ -# 2025-05-18-git-repo-management/specs (index) -dir: 2025-05-18-git-repo-management/specs +# openspec/changes/archive/2025-05-18-git-repo-management/specs (index) +dir: openspec/changes/archive/2025-05-18-git-repo-management/specs ## role -Contains specification documents that define requirements, standards, or design contracts for the git repository management project. +This directory stores version-controlled specification documents for a git repository management feature, organized by date for archival and change tracking purposes. ## parent -index: 2025-05-18-git-repo-management/.pi-map.index.md -map: 2025-05-18-git-repo-management/.pi-map.md +index: openspec/changes/archive/2025-05-18-git-repo-management/.pi-map.index.md +map: openspec/changes/archive/2025-05-18-git-repo-management/.pi-map.md ## children -- 2025-05-18-git-repo-management/specs/git-repo-management - index: 2025-05-18-git-repo-management/specs/git-repo-management/.pi-map.index.md - map: 2025-05-18-git-repo-management/specs/git-repo-management/.pi-map.md +- openspec/changes/archive/2025-05-18-git-repo-management/specs/git-repo-management + index: openspec/changes/archive/2025-05-18-git-repo-management/specs/git-repo-management/.pi-map.index.md + map: openspec/changes/archive/2025-05-18-git-repo-management/specs/git-repo-management/.pi-map.md ## files ## links -index: 2025-05-18-git-repo-management/specs/.pi-map.index.md -map: 2025-05-18-git-repo-management/specs/.pi-map.md +index: openspec/changes/archive/2025-05-18-git-repo-management/specs/.pi-map.index.md +map: openspec/changes/archive/2025-05-18-git-repo-management/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2025-05-18-git-repo-management/specs/.pi-map.md b/openspec/changes/archive/2025-05-18-git-repo-management/specs/.pi-map.md index 35004c7..2cfcca8 100644 --- a/openspec/changes/archive/2025-05-18-git-repo-management/specs/.pi-map.md +++ b/openspec/changes/archive/2025-05-18-git-repo-management/specs/.pi-map.md @@ -1,13 +1,13 @@ -# 2025-05-18-git-repo-management/specs -dir: 2025-05-18-git-repo-management/specs +# openspec/changes/archive/2025-05-18-git-repo-management/specs +dir: openspec/changes/archive/2025-05-18-git-repo-management/specs -index: 2025-05-18-git-repo-management/specs/.pi-map.index.md +index: openspec/changes/archive/2025-05-18-git-repo-management/specs/.pi-map.index.md ## role -Contains specification documents that define requirements, standards, or design contracts for the git repository management project. +This directory stores version-controlled specification documents for a git repository management feature, organized by date for archival and change tracking purposes. ## files ## arch -Documentation-driven architecture using specification files (likely markdown or structured text) to establish formal contracts before implementation, supporting design-first or contract-first development patterns. +Date-based archival directory structure with flat file storage for specifications, using filesystem hierarchy as temporal versioning without explicit code architecture. ## tags - ## symbols diff --git a/openspec/changes/archive/2025-05-18-git-repo-management/specs/git-repo-management/.pi-map.index.md b/openspec/changes/archive/2025-05-18-git-repo-management/specs/git-repo-management/.pi-map.index.md index 2656765..5517b34 100644 --- a/openspec/changes/archive/2025-05-18-git-repo-management/specs/git-repo-management/.pi-map.index.md +++ b/openspec/changes/archive/2025-05-18-git-repo-management/specs/git-repo-management/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2025-05-18-git-repo-management/specs/git-repo-management (index) -dir: 2025-05-18-git-repo-management/specs/git-repo-management +# openspec/changes/archive/2025-05-18-git-repo-management/specs/git-repo-management (index) +dir: openspec/changes/archive/2025-05-18-git-repo-management/specs/git-repo-management ## role -Defines functional requirements for a Git repository management system supporting lifecycle operations. +Defines system requirements for a Git repository management service supporting create, clone, list, delete, and cascade delete operations ## parent -index: 2025-05-18-git-repo-management/specs/.pi-map.index.md -map: 2025-05-18-git-repo-management/specs/.pi-map.md +index: openspec/changes/archive/2025-05-18-git-repo-management/specs/.pi-map.index.md +map: openspec/changes/archive/2025-05-18-git-repo-management/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2025-05-18-git-repo-management/specs/git-repo-management/.pi-map.index.md -map: 2025-05-18-git-repo-management/specs/git-repo-management/.pi-map.md +index: openspec/changes/archive/2025-05-18-git-repo-management/specs/git-repo-management/.pi-map.index.md +map: openspec/changes/archive/2025-05-18-git-repo-management/specs/git-repo-management/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2025-05-18-git-repo-management/specs/git-repo-management/.pi-map.md b/openspec/changes/archive/2025-05-18-git-repo-management/specs/git-repo-management/.pi-map.md index cd6ce46..926ca84 100644 --- a/openspec/changes/archive/2025-05-18-git-repo-management/specs/git-repo-management/.pi-map.md +++ b/openspec/changes/archive/2025-05-18-git-repo-management/specs/git-repo-management/.pi-map.md @@ -1,16 +1,16 @@ -# 2025-05-18-git-repo-management/specs/git-repo-management -dir: 2025-05-18-git-repo-management/specs/git-repo-management +# openspec/changes/archive/2025-05-18-git-repo-management/specs/git-repo-management +dir: openspec/changes/archive/2025-05-18-git-repo-management/specs/git-repo-management -index: 2025-05-18-git-repo-management/specs/git-repo-management/.pi-map.index.md +index: openspec/changes/archive/2025-05-18-git-repo-management/specs/git-repo-management/.pi-map.index.md ## role -Defines functional requirements for a Git repository management system supporting lifecycle operations. +Defines system requirements for a Git repository management service supporting create, clone, list, delete, and cascade delete operations ## files -- spec.md | This file specifies software requirements for a Git repository management system, including creation, cloning, listing, deletion, and cascade deletion features. | dep: git, database, filesystem, HTTP API +- spec.md | Defines system requirements for a Git repository management service supporting create, clone, list, delete, and cascade delete operations | dep: git, database, filesystem, HTTP/web framework ## arch -Specification-driven design using a single requirements document with feature-based organization (CRUD + cascade operations). +Specification-driven architecture using Markdown-based requirements documentation with dated archival organization for change tracking ## tags -git, deletion, spec, specifies, software, requirements, repository, management +git, delete, spec, defines, system, requirements, repository, management ## symbols - ## workflows diff --git a/openspec/changes/archive/2025-05-18-ssh-key-management/.pi-map.index.md b/openspec/changes/archive/2025-05-18-ssh-key-management/.pi-map.index.md index 660a82b..94932cb 100644 --- a/openspec/changes/archive/2025-05-18-ssh-key-management/.pi-map.index.md +++ b/openspec/changes/archive/2025-05-18-ssh-key-management/.pi-map.index.md @@ -1,23 +1,23 @@ -# 2025-05-18-ssh-key-management (index) -dir: 2025-05-18-ssh-key-management +# openspec/changes/archive/2025-05-18-ssh-key-management (index) +dir: openspec/changes/archive/2025-05-18-ssh-key-management ## role -Implements a full-stack SSH key management system for secure Ed25519 key generation, encrypted storage, and git operations with external providers. +Archive directory containing completed design and planning documents for a full-stack SSH key management feature that enables git operations via generated SSH keys. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2025-05-18-ssh-key-management/specs - index: 2025-05-18-ssh-key-management/specs/.pi-map.index.md - map: 2025-05-18-ssh-key-management/specs/.pi-map.md +- openspec/changes/archive/2025-05-18-ssh-key-management/specs + index: openspec/changes/archive/2025-05-18-ssh-key-management/specs/.pi-map.index.md + map: openspec/changes/archive/2025-05-18-ssh-key-management/specs/.pi-map.md ## files - .openspec.yaml - design.md - proposal.md - tasks.md ## links -index: 2025-05-18-ssh-key-management/.pi-map.index.md -map: 2025-05-18-ssh-key-management/.pi-map.md +index: openspec/changes/archive/2025-05-18-ssh-key-management/.pi-map.index.md +map: openspec/changes/archive/2025-05-18-ssh-key-management/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2025-05-18-ssh-key-management/.pi-map.md b/openspec/changes/archive/2025-05-18-ssh-key-management/.pi-map.md index 2df6aaa..0243376 100644 --- a/openspec/changes/archive/2025-05-18-ssh-key-management/.pi-map.md +++ b/openspec/changes/archive/2025-05-18-ssh-key-management/.pi-map.md @@ -1,19 +1,19 @@ -# 2025-05-18-ssh-key-management -dir: 2025-05-18-ssh-key-management +# openspec/changes/archive/2025-05-18-ssh-key-management +dir: openspec/changes/archive/2025-05-18-ssh-key-management -index: 2025-05-18-ssh-key-management/.pi-map.index.md +index: openspec/changes/archive/2025-05-18-ssh-key-management/.pi-map.index.md ## role -Implements a full-stack SSH key management system for secure Ed25519 key generation, encrypted storage, and git operations with external providers. +Archive directory containing completed design and planning documents for a full-stack SSH key management feature that enables git operations via generated SSH keys. ## files -- .openspec.yaml | Defines an OpenSpec configuration file with schema type and creation date metadata -- design.md | Design document for implementing an API and UI to manage Ed25519 SSH keys with encrypted private key storage | dep: cryptography (Fernet, Ed25519), database/SSHKey model, frontend UI components, JWT_SECRET (for Fernet key derivation) -- proposal.md | Proposes adding SSH key management functionality (backend API, frontend UI, and Ed25519 key generation with encryption) to enable git operations with external providers. | dep: FastAPI (implied by router pattern), Fernet encryption, Ed25519 cryptography, React/Vue frontend (implied by web app), existing SSHKey model -- tasks.md | A completed task checklist documenting the implementation of a full-stack SSH key management feature with backend API, frontend UI, and verification steps. | dep: FastAPI, cryptography, Pydantic, React, React Router, npm, pytest, ruff, mypy +- .openspec.yaml | Defines an OpenAPI specification metadata file with schema type and creation date +- design.md | Design document for implementing an SSH key management API and frontend feature | dep: cryptography (Fernet, Ed25519), database/SSHKey model, JWT_SECRET/application secret, frontend router/table components +- proposal.md | Proposes a feature to add SSH key generation, management, and UI capabilities for git operations | dep: FastAPI, Fernet, Ed25519, React/Vue (implied by frontend), existing SSHKey model +- tasks.md | A completed task checklist tracking the implementation of a full-stack SSH key management feature with backend API, frontend UI, and verification steps. ## arch -Full-stack feature module with backend REST API, frontend UI, encrypted private key storage, and task-driven implementation documentation following design-proposal-tasks workflow. +Specification-driven development with OpenAPI schema metadata, phased implementation tracking (proposal → design → tasks), and full-stack feature delivery encompassing backend API, frontend UI, and verification workflows. ## tags -key, design, api, ssh, .openspec, ed25519, management, backend +design, ssh, key, management, feature, .openspec, api, frontend ## symbols - ## workflows diff --git a/openspec/changes/archive/2025-05-18-ssh-key-management/specs/.pi-map.index.md b/openspec/changes/archive/2025-05-18-ssh-key-management/specs/.pi-map.index.md index e16fab1..c596074 100644 --- a/openspec/changes/archive/2025-05-18-ssh-key-management/specs/.pi-map.index.md +++ b/openspec/changes/archive/2025-05-18-ssh-key-management/specs/.pi-map.index.md @@ -1,19 +1,19 @@ -# 2025-05-18-ssh-key-management/specs (index) -dir: 2025-05-18-ssh-key-management/specs +# openspec/changes/archive/2025-05-18-ssh-key-management/specs (index) +dir: openspec/changes/archive/2025-05-18-ssh-key-management/specs ## role -Contains specification documents defining requirements and design for SSH key management functionality. +Defines OpenAPI specifications for SSH key management API endpoints introduced in the 2025-05-18 release. ## parent -index: 2025-05-18-ssh-key-management/.pi-map.index.md -map: 2025-05-18-ssh-key-management/.pi-map.md +index: openspec/changes/archive/2025-05-18-ssh-key-management/.pi-map.index.md +map: openspec/changes/archive/2025-05-18-ssh-key-management/.pi-map.md ## children -- 2025-05-18-ssh-key-management/specs/ssh-key-management - index: 2025-05-18-ssh-key-management/specs/ssh-key-management/.pi-map.index.md - map: 2025-05-18-ssh-key-management/specs/ssh-key-management/.pi-map.md +- openspec/changes/archive/2025-05-18-ssh-key-management/specs/ssh-key-management + index: openspec/changes/archive/2025-05-18-ssh-key-management/specs/ssh-key-management/.pi-map.index.md + map: openspec/changes/archive/2025-05-18-ssh-key-management/specs/ssh-key-management/.pi-map.md ## files ## links -index: 2025-05-18-ssh-key-management/specs/.pi-map.index.md -map: 2025-05-18-ssh-key-management/specs/.pi-map.md +index: openspec/changes/archive/2025-05-18-ssh-key-management/specs/.pi-map.index.md +map: openspec/changes/archive/2025-05-18-ssh-key-management/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2025-05-18-ssh-key-management/specs/.pi-map.md b/openspec/changes/archive/2025-05-18-ssh-key-management/specs/.pi-map.md index 673a68a..aa2c331 100644 --- a/openspec/changes/archive/2025-05-18-ssh-key-management/specs/.pi-map.md +++ b/openspec/changes/archive/2025-05-18-ssh-key-management/specs/.pi-map.md @@ -1,13 +1,13 @@ -# 2025-05-18-ssh-key-management/specs -dir: 2025-05-18-ssh-key-management/specs +# openspec/changes/archive/2025-05-18-ssh-key-management/specs +dir: openspec/changes/archive/2025-05-18-ssh-key-management/specs -index: 2025-05-18-ssh-key-management/specs/.pi-map.index.md +index: openspec/changes/archive/2025-05-18-ssh-key-management/specs/.pi-map.index.md ## role -Contains specification documents defining requirements and design for SSH key management functionality. +Defines OpenAPI specifications for SSH key management API endpoints introduced in the 2025-05-18 release. ## files ## arch -Documentation-driven specification pattern using dated directory organization for version tracking of feature requirements. +OpenAPI 3.0 specification files organized as modular schema definitions for RESTful API contract documentation and code generation. ## tags - ## symbols diff --git a/openspec/changes/archive/2025-05-18-ssh-key-management/specs/ssh-key-management/.pi-map.index.md b/openspec/changes/archive/2025-05-18-ssh-key-management/specs/ssh-key-management/.pi-map.index.md index 3321f83..23448ef 100644 --- a/openspec/changes/archive/2025-05-18-ssh-key-management/specs/ssh-key-management/.pi-map.index.md +++ b/openspec/changes/archive/2025-05-18-ssh-key-management/specs/ssh-key-management/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2025-05-18-ssh-key-management/specs/ssh-key-management (index) -dir: 2025-05-18-ssh-key-management/specs/ssh-key-management +# openspec/changes/archive/2025-05-18-ssh-key-management/specs/ssh-key-management (index) +dir: openspec/changes/archive/2025-05-18-ssh-key-management/specs/ssh-key-management ## role -Defines functional requirements and specifications for SSH key lifecycle management operations. +Defines functional requirements for SSH key lifecycle management operations in the OpenSpec project. ## parent -index: 2025-05-18-ssh-key-management/specs/.pi-map.index.md -map: 2025-05-18-ssh-key-management/specs/.pi-map.md +index: openspec/changes/archive/2025-05-18-ssh-key-management/specs/.pi-map.index.md +map: openspec/changes/archive/2025-05-18-ssh-key-management/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2025-05-18-ssh-key-management/specs/ssh-key-management/.pi-map.index.md -map: 2025-05-18-ssh-key-management/specs/ssh-key-management/.pi-map.md +index: openspec/changes/archive/2025-05-18-ssh-key-management/specs/ssh-key-management/.pi-map.index.md +map: openspec/changes/archive/2025-05-18-ssh-key-management/specs/ssh-key-management/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2025-05-18-ssh-key-management/specs/ssh-key-management/.pi-map.md b/openspec/changes/archive/2025-05-18-ssh-key-management/specs/ssh-key-management/.pi-map.md index 10ea59f..d34d9c1 100644 --- a/openspec/changes/archive/2025-05-18-ssh-key-management/specs/ssh-key-management/.pi-map.md +++ b/openspec/changes/archive/2025-05-18-ssh-key-management/specs/ssh-key-management/.pi-map.md @@ -1,16 +1,16 @@ -# 2025-05-18-ssh-key-management/specs/ssh-key-management -dir: 2025-05-18-ssh-key-management/specs/ssh-key-management +# openspec/changes/archive/2025-05-18-ssh-key-management/specs/ssh-key-management +dir: openspec/changes/archive/2025-05-18-ssh-key-management/specs/ssh-key-management -index: 2025-05-18-ssh-key-management/specs/ssh-key-management/.pi-map.index.md +index: openspec/changes/archive/2025-05-18-ssh-key-management/specs/ssh-key-management/.pi-map.index.md ## role -Defines functional requirements and specifications for SSH key lifecycle management operations. +Defines functional requirements for SSH key lifecycle management operations in the OpenSpec project. ## files -- spec.md | Defines requirements for SSH key management functionality including generation, listing, display, and deletion +- spec.md | Specifies requirements for SSH key management functionality including generation, listing, display, and deletion ## arch -Specification-driven design using requirement documents to define system behavior before implementation. +Specification-driven design using markdown-based requirements documents with dated archival versioning. ## tags -spec, defines, requirements, ssh, key, management, functionality, including +spec, specifies, requirements, ssh, key, management, functionality, including ## symbols - ## workflows diff --git a/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/.pi-map.index.md b/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/.pi-map.index.md index 46c2673..e190e8d 100644 --- a/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/.pi-map.index.md +++ b/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/.pi-map.index.md @@ -1,23 +1,23 @@ -# 2025-05-18-test-infrastructure-improvements (index) -dir: 2025-05-18-test-infrastructure-improvements +# openspec/changes/archive/2025-05-18-test-infrastructure-improvements (index) +dir: openspec/changes/archive/2025-05-18-test-infrastructure-improvements ## role -Documents the planning, design, and tracking of test infrastructure improvements for a backend API project. +Documents a completed test infrastructure improvement initiative for restructuring and modernizing a multi-language backend testing suite. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2025-05-18-test-infrastructure-improvements/specs - index: 2025-05-18-test-infrastructure-improvements/specs/.pi-map.index.md - map: 2025-05-18-test-infrastructure-improvements/specs/.pi-map.md +- openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs + index: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/.pi-map.index.md + map: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/.pi-map.md ## files - .openspec.yaml - design.md - proposal.md - tasks.md ## links -index: 2025-05-18-test-infrastructure-improvements/.pi-map.index.md -map: 2025-05-18-test-infrastructure-improvements/.pi-map.md +index: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/.pi-map.index.md +map: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/.pi-map.md b/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/.pi-map.md index c6f9fe6..0dc8b88 100644 --- a/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/.pi-map.md +++ b/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/.pi-map.md @@ -1,19 +1,19 @@ -# 2025-05-18-test-infrastructure-improvements -dir: 2025-05-18-test-infrastructure-improvements +# openspec/changes/archive/2025-05-18-test-infrastructure-improvements +dir: openspec/changes/archive/2025-05-18-test-infrastructure-improvements -index: 2025-05-18-test-infrastructure-improvements/.pi-map.index.md +index: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/.pi-map.index.md ## role -Documents the planning, design, and tracking of test infrastructure improvements for a backend API project. +Documents a completed test infrastructure improvement initiative for restructuring and modernizing a multi-language backend testing suite. ## files -- .openspec.yaml | Defines an OpenSpec configuration file with schema type and creation date metadata -- design.md | This file documents the design and migration plan for restructuring a test suite into unit, integration, and system categories with shared fixtures, SQLite/PostgreSQL separation, and E2E coverage. | dep: pytest, pytest-asyncio, SQLite, PostgreSQL, Playwright, Docker, React/Vite, asyncpg, pytest-xdist -- proposal.md | Proposes a comprehensive restructuring of test infrastructure to separate unit/integration/system tests, add shared fixtures, enable SQLite for unit tests, implement transaction rollback isolation, and introduce Playwright E2E testing. | dep: pytest, PostgreSQL, SQLite, Playwright, python-jose, docker, Makefile -- tasks.md | Project task list tracking completed testing infrastructure improvements for a backend API project including test restructuring, shared fixtures, multi-database support, E2E setup, and documentation. | dep: pytest, pytest-asyncio, SQLAlchemy, aiosqlite, PostgreSQL, Playwright, python-jose, TestClient, Makefile +- .openspec.yaml | Defines an OpenAPI specification metadata file with schema type and creation date +- design.md | Design document for restructuring a test suite to separate unit/integration/system tests, introduce shared fixtures, and add E2E coverage | dep: pytest, pytest-asyncio, SQLite, PostgreSQL, Playwright, Docker, React/Vite, asyncpg, conftest.py, pytest-xdist +- proposal.md | Proposes restructuring a Python/Node.js test suite to separate unit, integration, and system tests, add shared fixtures, enable SQLite for fast unit tests, implement transaction rollback isolation, and introduce Playwright E2E testing. | dep: pytest, PostgreSQL, SQLite, Playwright, python-jose, Docker, Makefile +- tasks.md | A completed task checklist documenting the restructuring of a backend testing suite with unit/integration/system test separation, shared fixtures, SQLite support, E2E setup, and documentation | dep: pytest, pytest-asyncio, aiosqlite, SQLAlchemy, PostgreSQL, Playwright, python-jose, TestClient, Makefile ## arch -Documentation-driven project management using structured markdown files (proposal → design → tasks) with OpenSpec metadata, following a waterfall-like planning pattern for test suite restructuring across unit/integration/system/E2E layers. +Specification-driven change management using OpenAPI metadata tracking, with design-proposal-task documentation pipeline covering test pyramid separation (unit/integration/system/E2E), shared fixture patterns, database isolation strategies, and cross-language tooling unification. ## tags -pytest, sqlite, postgresql, playwright, design, restructuring, test, unit +pytest, unit, sqlite, playwright, design, restructuring, test, suite ## symbols - ## workflows diff --git a/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/.pi-map.index.md b/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/.pi-map.index.md index da19d60..9503cfc 100644 --- a/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/.pi-map.index.md +++ b/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/.pi-map.index.md @@ -1,25 +1,25 @@ -# 2025-05-18-test-infrastructure-improvements/specs (index) -dir: 2025-05-18-test-infrastructure-improvements/specs +# openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs (index) +dir: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs ## role -Contains specification documents defining requirements and design for test infrastructure improvements +Contains specification documents for test infrastructure improvements planned or implemented on 2025-05-18. ## parent -index: 2025-05-18-test-infrastructure-improvements/.pi-map.index.md -map: 2025-05-18-test-infrastructure-improvements/.pi-map.md +index: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/.pi-map.index.md +map: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/.pi-map.md ## children -- 2025-05-18-test-infrastructure-improvements/specs/e2e-testing - index: 2025-05-18-test-infrastructure-improvements/specs/e2e-testing/.pi-map.index.md - map: 2025-05-18-test-infrastructure-improvements/specs/e2e-testing/.pi-map.md -- 2025-05-18-test-infrastructure-improvements/specs/test-isolation - index: 2025-05-18-test-infrastructure-improvements/specs/test-isolation/.pi-map.index.md - map: 2025-05-18-test-infrastructure-improvements/specs/test-isolation/.pi-map.md -- 2025-05-18-test-infrastructure-improvements/specs/test-organization - index: 2025-05-18-test-infrastructure-improvements/specs/test-organization/.pi-map.index.md - map: 2025-05-18-test-infrastructure-improvements/specs/test-organization/.pi-map.md +- openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/e2e-testing + index: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/e2e-testing/.pi-map.index.md + map: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/e2e-testing/.pi-map.md +- openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/test-isolation + index: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/test-isolation/.pi-map.index.md + map: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/test-isolation/.pi-map.md +- openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/test-organization + index: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/test-organization/.pi-map.index.md + map: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/test-organization/.pi-map.md ## files ## links -index: 2025-05-18-test-infrastructure-improvements/specs/.pi-map.index.md -map: 2025-05-18-test-infrastructure-improvements/specs/.pi-map.md +index: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/.pi-map.index.md +map: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/.pi-map.md b/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/.pi-map.md index 98a87eb..39a05ba 100644 --- a/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/.pi-map.md +++ b/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/.pi-map.md @@ -1,13 +1,13 @@ -# 2025-05-18-test-infrastructure-improvements/specs -dir: 2025-05-18-test-infrastructure-improvements/specs +# openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs +dir: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs -index: 2025-05-18-test-infrastructure-improvements/specs/.pi-map.index.md +index: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/.pi-map.index.md ## role -Contains specification documents defining requirements and design for test infrastructure improvements +Contains specification documents for test infrastructure improvements planned or implemented on 2025-05-18. ## files ## arch -Documentation-as-code pattern using dated directories for versioned specification tracking +Document-based specification storage using dated archival directories for change tracking and historical reference. ## tags - ## symbols diff --git a/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/e2e-testing/.pi-map.index.md b/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/e2e-testing/.pi-map.index.md index c42c707..c61f6aa 100644 --- a/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/e2e-testing/.pi-map.index.md +++ b/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/e2e-testing/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2025-05-18-test-infrastructure-improvements/specs/e2e-testing (index) -dir: 2025-05-18-test-infrastructure-improvements/specs/e2e-testing +# openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/e2e-testing (index) +dir: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/e2e-testing ## role -Defines end-to-end testing requirements using Playwright and Makefile integration for automated browser-based system validation. +Defines end-to-end testing specifications using Playwright and Makefile integration for automated browser-based validation of system behavior. ## parent -index: 2025-05-18-test-infrastructure-improvements/specs/.pi-map.index.md -map: 2025-05-18-test-infrastructure-improvements/specs/.pi-map.md +index: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/.pi-map.index.md +map: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2025-05-18-test-infrastructure-improvements/specs/e2e-testing/.pi-map.index.md -map: 2025-05-18-test-infrastructure-improvements/specs/e2e-testing/.pi-map.md +index: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/e2e-testing/.pi-map.index.md +map: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/e2e-testing/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/e2e-testing/.pi-map.md b/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/e2e-testing/.pi-map.md index 00b1345..f70292f 100644 --- a/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/e2e-testing/.pi-map.md +++ b/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/e2e-testing/.pi-map.md @@ -1,16 +1,16 @@ -# 2025-05-18-test-infrastructure-improvements/specs/e2e-testing -dir: 2025-05-18-test-infrastructure-improvements/specs/e2e-testing +# openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/e2e-testing +dir: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/e2e-testing -index: 2025-05-18-test-infrastructure-improvements/specs/e2e-testing/.pi-map.index.md +index: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/e2e-testing/.pi-map.index.md ## role -Defines end-to-end testing requirements using Playwright and Makefile integration for automated browser-based system validation. +Defines end-to-end testing specifications using Playwright and Makefile integration for automated browser-based validation of system behavior. ## files -- spec.md | Defines requirements for end-to-end testing with Playwright and Makefile test targets for a software system. | dep: Playwright, Makefile, test database +- spec.md | Specifies requirements for end-to-end testing with Playwright and Makefile test targets for a software system | dep: Playwright, Makefile, test database ## arch -Specification-driven testing architecture with Makefile target orchestration and Playwright-based browser automation framework. +Specification-driven testing architecture with Playwright for cross-browser automation, Makefile target orchestration for CI/CD integration, and markdown-based requirement documentation. ## tags -end, playwright, makefile, spec, defines, requirements, testing, test +end, playwright, makefile, spec, specifies, requirements, testing, test ## symbols - ## workflows diff --git a/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/test-isolation/.pi-map.index.md b/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/test-isolation/.pi-map.index.md index 113336b..ddb3b9f 100644 --- a/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/test-isolation/.pi-map.index.md +++ b/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/test-isolation/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2025-05-18-test-infrastructure-improvements/specs/test-isolation (index) -dir: 2025-05-18-test-infrastructure-improvements/specs/test-isolation +# openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/test-isolation (index) +dir: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/test-isolation ## role -Defines requirements for ensuring test isolation through shared fixtures and database transaction management in a testing infrastructure. +Defines specifications for test isolation mechanisms to ensure reliable, independent test execution through shared fixtures and database transaction boundaries. ## parent -index: 2025-05-18-test-infrastructure-improvements/specs/.pi-map.index.md -map: 2025-05-18-test-infrastructure-improvements/specs/.pi-map.md +index: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/.pi-map.index.md +map: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2025-05-18-test-infrastructure-improvements/specs/test-isolation/.pi-map.index.md -map: 2025-05-18-test-infrastructure-improvements/specs/test-isolation/.pi-map.md +index: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/test-isolation/.pi-map.index.md +map: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/test-isolation/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/test-isolation/.pi-map.md b/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/test-isolation/.pi-map.md index 36cd4d0..ad61cc9 100644 --- a/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/test-isolation/.pi-map.md +++ b/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/test-isolation/.pi-map.md @@ -1,14 +1,14 @@ -# 2025-05-18-test-infrastructure-improvements/specs/test-isolation -dir: 2025-05-18-test-infrastructure-improvements/specs/test-isolation +# openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/test-isolation +dir: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/test-isolation -index: 2025-05-18-test-infrastructure-improvements/specs/test-isolation/.pi-map.index.md +index: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/test-isolation/.pi-map.index.md ## role -Defines requirements for ensuring test isolation through shared fixtures and database transaction management in a testing infrastructure. +Defines specifications for test isolation mechanisms to ensure reliable, independent test execution through shared fixtures and database transaction boundaries. ## files -- spec.md | Defines requirements for shared test fixtures and transaction isolation in a testing infrastructure | dep: pytest, SQLAlchemy, TestClient, SQLite, PostgreSQL +- spec.md | Defines requirements for shared test fixtures and transaction isolation in a testing system | dep: pytest, SQLAlchemy, TestClient, SQLite, PostgreSQL ## arch -Specification-driven architecture using markdown-based requirements documents to define behavioral contracts for test infrastructure components. +Specification-driven architecture using markdown-based requirements documents that establish behavioral contracts for test infrastructure components. ## tags spec, defines, requirements, shared, test, fixtures, transaction, isolation ## symbols diff --git a/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/test-organization/.pi-map.index.md b/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/test-organization/.pi-map.index.md index c1c0e61..1139a66 100644 --- a/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/test-organization/.pi-map.index.md +++ b/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/test-organization/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2025-05-18-test-infrastructure-improvements/specs/test-organization (index) -dir: 2025-05-18-test-infrastructure-improvements/specs/test-organization +# openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/test-organization (index) +dir: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/test-organization ## role -Defines testing standards and categorization requirements for the backend test suite using pytest markers. +Defines test categorization requirements for backend tests using pytest markers to distinguish unit, integration, and system test levels. ## parent -index: 2025-05-18-test-infrastructure-improvements/specs/.pi-map.index.md -map: 2025-05-18-test-infrastructure-improvements/specs/.pi-map.md +index: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/.pi-map.index.md +map: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2025-05-18-test-infrastructure-improvements/specs/test-organization/.pi-map.index.md -map: 2025-05-18-test-infrastructure-improvements/specs/test-organization/.pi-map.md +index: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/test-organization/.pi-map.index.md +map: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/test-organization/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/test-organization/.pi-map.md b/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/test-organization/.pi-map.md index f0a9ba7..6477a7c 100644 --- a/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/test-organization/.pi-map.md +++ b/openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/test-organization/.pi-map.md @@ -1,14 +1,14 @@ -# 2025-05-18-test-infrastructure-improvements/specs/test-organization -dir: 2025-05-18-test-infrastructure-improvements/specs/test-organization +# openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/test-organization +dir: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/test-organization -index: 2025-05-18-test-infrastructure-improvements/specs/test-organization/.pi-map.index.md +index: openspec/changes/archive/2025-05-18-test-infrastructure-improvements/specs/test-organization/.pi-map.index.md ## role -Defines testing standards and categorization requirements for the backend test suite using pytest markers. +Defines test categorization requirements for backend tests using pytest markers to distinguish unit, integration, and system test levels. ## files - spec.md | Defines requirements for organizing backend tests into unit, integration, and system categories with pytest markers | dep: pytest, pyproject.toml, apps/api/tests/ ## arch -Specification-driven documentation pattern establishing a three-tier test hierarchy (unit/integration/system) with marker-based test organization. +Specification-driven testing architecture using pytest marker-based test organization with clear separation of concerns across three test tiers. ## tags tests, pytest, spec, defines, requirements, organizing, backend, unit ## symbols diff --git a/openspec/changes/archive/2025-05-18-tool-types-definition/.pi-map.index.md b/openspec/changes/archive/2025-05-18-tool-types-definition/.pi-map.index.md index c9823e0..efd67cc 100644 --- a/openspec/changes/archive/2025-05-18-tool-types-definition/.pi-map.index.md +++ b/openspec/changes/archive/2025-05-18-tool-types-definition/.pi-map.index.md @@ -1,23 +1,23 @@ -# 2025-05-18-tool-types-definition (index) -dir: 2025-05-18-tool-types-definition +# openspec/changes/archive/2025-05-18-tool-types-definition (index) +dir: openspec/changes/archive/2025-05-18-tool-types-definition ## role -Design and planning package for a ToolType system that enables defining and launching development tools via Docker Compose templates. +Defines an archived OpenAPI specification for a ToolType system that enables Docker Compose-based development tool templates with variable substitution. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2025-05-18-tool-types-definition/specs - index: 2025-05-18-tool-types-definition/specs/.pi-map.index.md - map: 2025-05-18-tool-types-definition/specs/.pi-map.md +- openspec/changes/archive/2025-05-18-tool-types-definition/specs + index: openspec/changes/archive/2025-05-18-tool-types-definition/specs/.pi-map.index.md + map: openspec/changes/archive/2025-05-18-tool-types-definition/specs/.pi-map.md ## files - .openspec.yaml - design.md - proposal.md - tasks.md ## links -index: 2025-05-18-tool-types-definition/.pi-map.index.md -map: 2025-05-18-tool-types-definition/.pi-map.md +index: openspec/changes/archive/2025-05-18-tool-types-definition/.pi-map.index.md +map: openspec/changes/archive/2025-05-18-tool-types-definition/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2025-05-18-tool-types-definition/.pi-map.md b/openspec/changes/archive/2025-05-18-tool-types-definition/.pi-map.md index f88424b..a2415de 100644 --- a/openspec/changes/archive/2025-05-18-tool-types-definition/.pi-map.md +++ b/openspec/changes/archive/2025-05-18-tool-types-definition/.pi-map.md @@ -1,19 +1,19 @@ -# 2025-05-18-tool-types-definition -dir: 2025-05-18-tool-types-definition +# openspec/changes/archive/2025-05-18-tool-types-definition +dir: openspec/changes/archive/2025-05-18-tool-types-definition -index: 2025-05-18-tool-types-definition/.pi-map.index.md +index: openspec/changes/archive/2025-05-18-tool-types-definition/.pi-map.index.md ## role -Design and planning package for a ToolType system that enables defining and launching development tools via Docker Compose templates. +Defines an archived OpenAPI specification for a ToolType system that enables Docker Compose-based development tool templates with variable substitution. ## files -- .openspec.yaml | Defines an OpenSpec configuration file with schema type and creation date metadata -- design.md | Design document for implementing a ToolType system that defines development tools via Docker Compose templates with variable substitution | dep: Docker Compose, Jinja2, Alembic, database, API framework, frontend -- proposal.md | Defines a feature proposal for implementing a tool type system with Docker Compose template support to enable launching development tool instances | dep: SQLAlchemy, Docker Compose, apps/api/src/api/tool_types.py, apps/web/src/pages/tool-types.tsx -- tasks.md | Tracks completed development tasks for implementing a ToolType CRUD feature across backend API, frontend UI, and database migration | dep: SQLAlchemy, Alembic, FastAPI, Pydantic, React/TypeScript, pytest, ruff, mypy, npm +- .openspec.yaml | Defines an OpenAPI specification metadata file with schema type and creation date +- design.md | Design document specifying a ToolType system for defining and managing Docker Compose-based development tool templates with variable substitution | dep: Docker Compose, Jinja2, Alembic, database, admin auth system +- proposal.md | Defines a feature proposal for adding a tool type system with Docker Compose templates to enable launching development tool instances like VS Code Server and Jupyter notebooks. | dep: SQLAlchemy, Docker Compose, apps/api/src/api/tool_types.py, apps/web/src/pages/tool-types.tsx +- tasks.md | Project task checklist tracking implementation of a ToolType CRUD feature across database, backend API, frontend, and verification phases | dep: SQLAlchemy, Alembic, Pydantic, FastAPI, React/TypeScript, pytest, ruff, mypy, npm ## arch -Documentation-driven specification pattern using OpenSpec schema configuration, layered design docs (proposal → design → tasks), and CRUD-focused implementation planning across full stack (API/UI/database). +Specification-driven design using OpenAPI metadata, phased CRUD implementation tracking, and Docker Compose template abstraction with variable substitution for portable development environments. ## tags -defines, design, implementing, development, proposal, tool, api, tasks +tool, design, proposal, api, defines, type, .openspec, tooltype ## symbols - ## workflows diff --git a/openspec/changes/archive/2025-05-18-tool-types-definition/specs/.pi-map.index.md b/openspec/changes/archive/2025-05-18-tool-types-definition/specs/.pi-map.index.md index bdae7f2..ce0ffc0 100644 --- a/openspec/changes/archive/2025-05-18-tool-types-definition/specs/.pi-map.index.md +++ b/openspec/changes/archive/2025-05-18-tool-types-definition/specs/.pi-map.index.md @@ -1,19 +1,19 @@ -# 2025-05-18-tool-types-definition/specs (index) -dir: 2025-05-18-tool-types-definition/specs +# openspec/changes/archive/2025-05-18-tool-types-definition/specs (index) +dir: openspec/changes/archive/2025-05-18-tool-types-definition/specs ## role -Contains specification documents defining tool types, interfaces, and behavioral contracts for the project's tooling system. +Contains archived specification documents from May 18, 2025 defining tool types for the OpenSpec project. ## parent -index: 2025-05-18-tool-types-definition/.pi-map.index.md -map: 2025-05-18-tool-types-definition/.pi-map.md +index: openspec/changes/archive/2025-05-18-tool-types-definition/.pi-map.index.md +map: openspec/changes/archive/2025-05-18-tool-types-definition/.pi-map.md ## children -- 2025-05-18-tool-types-definition/specs/tool-types-definition - index: 2025-05-18-tool-types-definition/specs/tool-types-definition/.pi-map.index.md - map: 2025-05-18-tool-types-definition/specs/tool-types-definition/.pi-map.md +- openspec/changes/archive/2025-05-18-tool-types-definition/specs/tool-types-definition + index: openspec/changes/archive/2025-05-18-tool-types-definition/specs/tool-types-definition/.pi-map.index.md + map: openspec/changes/archive/2025-05-18-tool-types-definition/specs/tool-types-definition/.pi-map.md ## files ## links -index: 2025-05-18-tool-types-definition/specs/.pi-map.index.md -map: 2025-05-18-tool-types-definition/specs/.pi-map.md +index: openspec/changes/archive/2025-05-18-tool-types-definition/specs/.pi-map.index.md +map: openspec/changes/archive/2025-05-18-tool-types-definition/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2025-05-18-tool-types-definition/specs/.pi-map.md b/openspec/changes/archive/2025-05-18-tool-types-definition/specs/.pi-map.md index 707f76c..209b3c0 100644 --- a/openspec/changes/archive/2025-05-18-tool-types-definition/specs/.pi-map.md +++ b/openspec/changes/archive/2025-05-18-tool-types-definition/specs/.pi-map.md @@ -1,13 +1,13 @@ -# 2025-05-18-tool-types-definition/specs -dir: 2025-05-18-tool-types-definition/specs +# openspec/changes/archive/2025-05-18-tool-types-definition/specs +dir: openspec/changes/archive/2025-05-18-tool-types-definition/specs -index: 2025-05-18-tool-types-definition/specs/.pi-map.index.md +index: openspec/changes/archive/2025-05-18-tool-types-definition/specs/.pi-map.index.md ## role -Contains specification documents defining tool types, interfaces, and behavioral contracts for the project's tooling system. +Contains archived specification documents from May 18, 2025 defining tool types for the OpenSpec project. ## files ## arch -Document-driven specification pattern using formal interface definitions to establish contracts between tool implementations and consumers, likely supporting code generation or validation. +Archive directory storing dated specification snapshots with no active code architecture or patterns. ## tags - ## symbols diff --git a/openspec/changes/archive/2025-05-18-tool-types-definition/specs/tool-types-definition/.pi-map.index.md b/openspec/changes/archive/2025-05-18-tool-types-definition/specs/tool-types-definition/.pi-map.index.md index 20d155d..f293b77 100644 --- a/openspec/changes/archive/2025-05-18-tool-types-definition/specs/tool-types-definition/.pi-map.index.md +++ b/openspec/changes/archive/2025-05-18-tool-types-definition/specs/tool-types-definition/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2025-05-18-tool-types-definition/specs/tool-types-definition (index) -dir: 2025-05-18-tool-types-definition/specs/tool-types-definition +# openspec/changes/archive/2025-05-18-tool-types-definition/specs/tool-types-definition (index) +dir: openspec/changes/archive/2025-05-18-tool-types-definition/specs/tool-types-definition ## role -Defines specifications for a ToolType management system that enables CRUD operations, Docker Compose template validation, and variable substitution for configurable tool deployments. +Defines system requirements for a ToolType model that manages containerized tool definitions with CRUD operations, Docker Compose validation, variable substitution, and built-in seeding capabilities. ## parent -index: 2025-05-18-tool-types-definition/specs/.pi-map.index.md -map: 2025-05-18-tool-types-definition/specs/.pi-map.md +index: openspec/changes/archive/2025-05-18-tool-types-definition/specs/.pi-map.index.md +map: openspec/changes/archive/2025-05-18-tool-types-definition/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2025-05-18-tool-types-definition/specs/tool-types-definition/.pi-map.index.md -map: 2025-05-18-tool-types-definition/specs/tool-types-definition/.pi-map.md +index: openspec/changes/archive/2025-05-18-tool-types-definition/specs/tool-types-definition/.pi-map.index.md +map: openspec/changes/archive/2025-05-18-tool-types-definition/specs/tool-types-definition/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2025-05-18-tool-types-definition/specs/tool-types-definition/.pi-map.md b/openspec/changes/archive/2025-05-18-tool-types-definition/specs/tool-types-definition/.pi-map.md index 848c605..0532874 100644 --- a/openspec/changes/archive/2025-05-18-tool-types-definition/specs/tool-types-definition/.pi-map.md +++ b/openspec/changes/archive/2025-05-18-tool-types-definition/specs/tool-types-definition/.pi-map.md @@ -1,16 +1,16 @@ -# 2025-05-18-tool-types-definition/specs/tool-types-definition -dir: 2025-05-18-tool-types-definition/specs/tool-types-definition +# openspec/changes/archive/2025-05-18-tool-types-definition/specs/tool-types-definition +dir: openspec/changes/archive/2025-05-18-tool-types-definition/specs/tool-types-definition -index: 2025-05-18-tool-types-definition/specs/tool-types-definition/.pi-map.index.md +index: openspec/changes/archive/2025-05-18-tool-types-definition/specs/tool-types-definition/.pi-map.index.md ## role -Defines specifications for a ToolType management system that enables CRUD operations, Docker Compose template validation, and variable substitution for configurable tool deployments. +Defines system requirements for a ToolType model that manages containerized tool definitions with CRUD operations, Docker Compose validation, variable substitution, and built-in seeding capabilities. ## files -- spec.md | Define requirements for a ToolType management system with CRUD API, Docker Compose template validation, and variable substitution | dep: REST API, Docker Compose, YAML parser, UUID, authentication/authorization system +- spec.md | Define system requirements for a ToolType model with CRUD API, Docker Compose template validation, variable substitution, and built-in tool type seeding | dep: REST API, Docker Compose, YAML parser, UUID, authentication/authorization system ## arch -Specification-driven architecture using markdown-based requirements documentation with structured sections for functional requirements, API design, data models, and validation rules. +Specification-driven architecture using a single markdown requirements document that defines a domain model (ToolType) with validation rules, template processing (Jinja2-style variable substitution), and seeding infrastructure for predefined tool configurations. ## tags -spec, define, requirements, tooltype, management, system, crud, api +spec, define, system, requirements, tooltype, model, crud, api ## symbols - ## workflows diff --git a/openspec/changes/archive/2025-05-18-user-config-management/.pi-map.index.md b/openspec/changes/archive/2025-05-18-user-config-management/.pi-map.index.md index e171a32..adb2322 100644 --- a/openspec/changes/archive/2025-05-18-user-config-management/.pi-map.index.md +++ b/openspec/changes/archive/2025-05-18-user-config-management/.pi-map.index.md @@ -1,23 +1,23 @@ -# 2025-05-18-user-config-management (index) -dir: 2025-05-18-user-config-management +# openspec/changes/archive/2025-05-18-user-config-management (index) +dir: openspec/changes/archive/2025-05-18-user-config-management ## role -Design and planning package for a JSONB-backed user configuration management feature with API and UI components. +Design and specification package for a persistent user configuration management feature using PostgreSQL JSONB storage. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2025-05-18-user-config-management/specs - index: 2025-05-18-user-config-management/specs/.pi-map.index.md - map: 2025-05-18-user-config-management/specs/.pi-map.md +- openspec/changes/archive/2025-05-18-user-config-management/specs + index: openspec/changes/archive/2025-05-18-user-config-management/specs/.pi-map.index.md + map: openspec/changes/archive/2025-05-18-user-config-management/specs/.pi-map.md ## files - .openspec.yaml - design.md - proposal.md - tasks.md ## links -index: 2025-05-18-user-config-management/.pi-map.index.md -map: 2025-05-18-user-config-management/.pi-map.md +index: openspec/changes/archive/2025-05-18-user-config-management/.pi-map.index.md +map: openspec/changes/archive/2025-05-18-user-config-management/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2025-05-18-user-config-management/.pi-map.md b/openspec/changes/archive/2025-05-18-user-config-management/.pi-map.md index 4e13fc2..929bc26 100644 --- a/openspec/changes/archive/2025-05-18-user-config-management/.pi-map.md +++ b/openspec/changes/archive/2025-05-18-user-config-management/.pi-map.md @@ -1,19 +1,19 @@ -# 2025-05-18-user-config-management -dir: 2025-05-18-user-config-management +# openspec/changes/archive/2025-05-18-user-config-management +dir: openspec/changes/archive/2025-05-18-user-config-management -index: 2025-05-18-user-config-management/.pi-map.index.md +index: openspec/changes/archive/2025-05-18-user-config-management/.pi-map.index.md ## role -Design and planning package for a JSONB-backed user configuration management feature with API and UI components. +Design and specification package for a persistent user configuration management feature using PostgreSQL JSONB storage. ## files -- .openspec.yaml | Defines an OpenSpec configuration file with schema type and creation date metadata -- design.md | Design document for a simple key-value user configuration system using PostgreSQL JSONB | dep: PostgreSQL, JSONB -- proposal.md | Proposes a feature to add persistent user preference storage and management through a JSONB-backed config system with API endpoints and frontend settings UI. | dep: database, API, frontend, UserConfig model, AppShell -- tasks.md | Project task tracking document for implementing a user settings/config feature with backend API, frontend UI, and verification steps | dep: SQLAlchemy, Alembic, FastAPI/HTTP endpoints, React/frontend router, Docker Compose, ruff, mypy, pytest, TypeScript tooling +- .openspec.yaml | Defines an OpenAPI specification metadata file with schema type and creation date +- design.md | Design document specifying a simple key-value user configuration system using PostgreSQL JSONB with merge semantics and lazy creation | dep: PostgreSQL, JSONB +- proposal.md | Design proposal for implementing persistent user preferences and settings storage across sessions +- tasks.md | Project task tracking document for implementing a user settings/config feature with backend API, frontend UI, and verification steps | dep: SQLAlchemy, Alembic, FastAPI/HTTP endpoints, React/frontend framework, Docker Compose, ruff, mypy, pytest, TypeScript ## arch -Specification-driven development using OpenSpec schema definitions, paired with markdown-based design documents (design.md, proposal.md, tasks.md) following a proposal → design → task breakdown workflow pattern. +Specification-driven development with phased implementation (backend API → frontend UI → verification), using lazy-creation merge semantics for JSONB key-value preferences, tracked through OpenAPI metadata, design docs, proposals, and task breakdown. ## tags -design, user, jsonb, api, frontend, configuration, .openspec, document +design, user, proposal, creation, .openspec, document, postgresql, jsonb ## symbols - ## workflows diff --git a/openspec/changes/archive/2025-05-18-user-config-management/specs/.pi-map.index.md b/openspec/changes/archive/2025-05-18-user-config-management/specs/.pi-map.index.md index 0d89199..52aba05 100644 --- a/openspec/changes/archive/2025-05-18-user-config-management/specs/.pi-map.index.md +++ b/openspec/changes/archive/2025-05-18-user-config-management/specs/.pi-map.index.md @@ -1,19 +1,19 @@ -# 2025-05-18-user-config-management/specs (index) -dir: 2025-05-18-user-config-management/specs +# openspec/changes/archive/2025-05-18-user-config-management/specs (index) +dir: openspec/changes/archive/2025-05-18-user-config-management/specs ## role -Contains specification documents defining requirements and design for the user configuration management feature. +Archives a historical specification snapshot for user configuration management features from May 18, 2025. ## parent -index: 2025-05-18-user-config-management/.pi-map.index.md -map: 2025-05-18-user-config-management/.pi-map.md +index: openspec/changes/archive/2025-05-18-user-config-management/.pi-map.index.md +map: openspec/changes/archive/2025-05-18-user-config-management/.pi-map.md ## children -- 2025-05-18-user-config-management/specs/user-config-management - index: 2025-05-18-user-config-management/specs/user-config-management/.pi-map.index.md - map: 2025-05-18-user-config-management/specs/user-config-management/.pi-map.md +- openspec/changes/archive/2025-05-18-user-config-management/specs/user-config-management + index: openspec/changes/archive/2025-05-18-user-config-management/specs/user-config-management/.pi-map.index.md + map: openspec/changes/archive/2025-05-18-user-config-management/specs/user-config-management/.pi-map.md ## files ## links -index: 2025-05-18-user-config-management/specs/.pi-map.index.md -map: 2025-05-18-user-config-management/specs/.pi-map.md +index: openspec/changes/archive/2025-05-18-user-config-management/specs/.pi-map.index.md +map: openspec/changes/archive/2025-05-18-user-config-management/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2025-05-18-user-config-management/specs/.pi-map.md b/openspec/changes/archive/2025-05-18-user-config-management/specs/.pi-map.md index 1e1cdb6..472342b 100644 --- a/openspec/changes/archive/2025-05-18-user-config-management/specs/.pi-map.md +++ b/openspec/changes/archive/2025-05-18-user-config-management/specs/.pi-map.md @@ -1,13 +1,13 @@ -# 2025-05-18-user-config-management/specs -dir: 2025-05-18-user-config-management/specs +# openspec/changes/archive/2025-05-18-user-config-management/specs +dir: openspec/changes/archive/2025-05-18-user-config-management/specs -index: 2025-05-18-user-config-management/specs/.pi-map.index.md +index: openspec/changes/archive/2025-05-18-user-config-management/specs/.pi-map.index.md ## role -Contains specification documents defining requirements and design for the user configuration management feature. +Archives a historical specification snapshot for user configuration management features from May 18, 2025. ## files ## arch -Documentation-driven development with structured specification files (likely markdown/txt) serving as the single source of truth for implementation requirements and acceptance criteria. +Read-only archive directory using date-based versioning with no active code or architectural patterns. ## tags - ## symbols diff --git a/openspec/changes/archive/2025-05-18-user-config-management/specs/user-config-management/.pi-map.index.md b/openspec/changes/archive/2025-05-18-user-config-management/specs/user-config-management/.pi-map.index.md index 5625a3e..368856b 100644 --- a/openspec/changes/archive/2025-05-18-user-config-management/specs/user-config-management/.pi-map.index.md +++ b/openspec/changes/archive/2025-05-18-user-config-management/specs/user-config-management/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2025-05-18-user-config-management/specs/user-config-management (index) -dir: 2025-05-18-user-config-management/specs/user-config-management +# openspec/changes/archive/2025-05-18-user-config-management/specs/user-config-management (index) +dir: openspec/changes/archive/2025-05-18-user-config-management/specs/user-config-management ## role -Defines system requirements for JSONB-based user configuration storage, retrieval, and frontend theme application. +Defines requirements for a user configuration storage system that persists JSONB key-value pairs via API endpoints and applies them to frontend themes. ## parent -index: 2025-05-18-user-config-management/specs/.pi-map.index.md -map: 2025-05-18-user-config-management/specs/.pi-map.md +index: openspec/changes/archive/2025-05-18-user-config-management/specs/.pi-map.index.md +map: openspec/changes/archive/2025-05-18-user-config-management/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2025-05-18-user-config-management/specs/user-config-management/.pi-map.index.md -map: 2025-05-18-user-config-management/specs/user-config-management/.pi-map.md +index: openspec/changes/archive/2025-05-18-user-config-management/specs/user-config-management/.pi-map.index.md +map: openspec/changes/archive/2025-05-18-user-config-management/specs/user-config-management/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2025-05-18-user-config-management/specs/user-config-management/.pi-map.md b/openspec/changes/archive/2025-05-18-user-config-management/specs/user-config-management/.pi-map.md index 698cfaf..3945002 100644 --- a/openspec/changes/archive/2025-05-18-user-config-management/specs/user-config-management/.pi-map.md +++ b/openspec/changes/archive/2025-05-18-user-config-management/specs/user-config-management/.pi-map.md @@ -1,16 +1,16 @@ -# 2025-05-18-user-config-management/specs/user-config-management -dir: 2025-05-18-user-config-management/specs/user-config-management +# openspec/changes/archive/2025-05-18-user-config-management/specs/user-config-management +dir: openspec/changes/archive/2025-05-18-user-config-management/specs/user-config-management -index: 2025-05-18-user-config-management/specs/user-config-management/.pi-map.index.md +index: openspec/changes/archive/2025-05-18-user-config-management/specs/user-config-management/.pi-map.index.md ## role -Defines system requirements for JSONB-based user configuration storage, retrieval, and frontend theme application. +Defines requirements for a user configuration storage system that persists JSONB key-value pairs via API endpoints and applies them to frontend themes. ## files -- spec.md | Define system requirements for user configuration storage, retrieval, and frontend theme application using JSONB key-value pairs. +- spec.md | Define requirements for a user configuration storage system with JSONB key-value pairs, API endpoints, and frontend theme application ## arch -Specification-driven architecture using JSONB key-value pairs for flexible schema-less user preferences with clear separation between storage backend and frontend consumption patterns. +Specification-driven architecture using JSONB document storage with REST API layer and frontend theme binding pattern, documented in Markdown specification format. ## tags -spec, define, system, requirements, user, configuration, storage, retrieval +spec, define, requirements, user, configuration, storage, system, jsonb ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-17-auth-oauth/.pi-map.index.md b/openspec/changes/archive/2026-05-17-auth-oauth/.pi-map.index.md index 818ddd7..8290e67 100644 --- a/openspec/changes/archive/2026-05-17-auth-oauth/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-17-auth-oauth/.pi-map.index.md @@ -1,15 +1,15 @@ -# 2026-05-17-auth-oauth (index) -dir: 2026-05-17-auth-oauth +# openspec/changes/archive/2026-05-17-auth-oauth (index) +dir: openspec/changes/archive/2026-05-17-auth-oauth ## role -Authentication and authorization package implementing OAuth2/OIDC integration with Authentik for secure user session management. +Archive directory containing design documentation and implementation records for an OAuth2/OIDC authentication system with Authentik integration, internal JWTs, and database-backed refresh tokens. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2026-05-17-auth-oauth/specs - index: 2026-05-17-auth-oauth/specs/.pi-map.index.md - map: 2026-05-17-auth-oauth/specs/.pi-map.md +- openspec/changes/archive/2026-05-17-auth-oauth/specs + index: openspec/changes/archive/2026-05-17-auth-oauth/specs/.pi-map.index.md + map: openspec/changes/archive/2026-05-17-auth-oauth/specs/.pi-map.md ## files - .openspec.yaml - README.md @@ -17,8 +17,8 @@ map: ./.pi-map.md - proposal.md - tasks.md ## links -index: 2026-05-17-auth-oauth/.pi-map.index.md -map: 2026-05-17-auth-oauth/.pi-map.md +index: openspec/changes/archive/2026-05-17-auth-oauth/.pi-map.index.md +map: openspec/changes/archive/2026-05-17-auth-oauth/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-17-auth-oauth/.pi-map.md b/openspec/changes/archive/2026-05-17-auth-oauth/.pi-map.md index c0446b6..01c74bd 100644 --- a/openspec/changes/archive/2026-05-17-auth-oauth/.pi-map.md +++ b/openspec/changes/archive/2026-05-17-auth-oauth/.pi-map.md @@ -1,20 +1,20 @@ -# 2026-05-17-auth-oauth -dir: 2026-05-17-auth-oauth +# openspec/changes/archive/2026-05-17-auth-oauth +dir: openspec/changes/archive/2026-05-17-auth-oauth -index: 2026-05-17-auth-oauth/.pi-map.index.md +index: openspec/changes/archive/2026-05-17-auth-oauth/.pi-map.index.md ## role -Authentication and authorization package implementing OAuth2/OIDC integration with Authentik for secure user session management. +Archive directory containing design documentation and implementation records for an OAuth2/OIDC authentication system with Authentik integration, internal JWTs, and database-backed refresh tokens. ## files -- .openspec.yaml | Defines an OpenAPI specification file metadata with schema type and creation date -- README.md | Documents a project that implements OAuth2/OIDC authentication using Authentik with internal JWTs and database-backed refresh tokens | dep: Authentik, OAuth2, OIDC, JWT -- design.md | Design document specifying an OAuth2/OIDC authentication system using Authentik with internal JWT access tokens, DB-backed opaque refresh tokens, and environment-aware cookie policies. | dep: Authentik, Python async SQLAlchemy, Alembic, JWT library, JWKS client, cookie handling library -- proposal.md | Proposes a technical implementation plan for adding production-ready OAuth2/OIDC authentication with Authentik integration, JWT session management, and secure token lifecycle handling to a backend API project. | dep: Authentik, OAuth2/OIDC, JWKS, JWT, database, apps/api/src, config, models, auth services, API routes -- tasks.md | Task tracking document for implementing OIDC/JWT authentication system with refresh tokens in a backend application. | dep: SQLAlchemy, Alembic, Authentik OIDC, pytest, ruff, mypy, asyncpg, PostgreSQL +- .openspec.yaml | Defines an OpenSpec configuration file with schema type and creation date metadata +- README.md | Implements OAuth2/OIDC authentication using Authentik with internal JWTs and database-backed refresh tokens +- design.md | Design document specifying an Authentik OIDC-based authentication system with internal JWT access tokens, DB-backed opaque refresh tokens, and environment-aware cookie policies for a Python async SQLAlchemy backend. | dep: Authentik OIDC, Python async SQLAlchemy, Alembic, JWKS, JWT, pytest, ruff, mypy +- proposal.md | Proposes a secure OAuth2/OIDC authentication system using Authentik with internal JWT access tokens, server-side refresh token management, and environment-aware cookie policies. | dep: Authentik, JWKS, JWT, database, apps/api/src, config, models, auth services, API routes, frontend +- tasks.md | This is a completed task checklist documenting the implementation of an OIDC/JWT-based authentication system with refresh tokens for a backend application. | dep: Authentik OIDC, SQLAlchemy, Alembic, PostgreSQL/asyncpg, pytest, ruff, mypy, JWKS, JWT ## arch -Layered security architecture with external IdP delegation (Authentik OIDC), internal JWT stateless access tokens, database-backed opaque refresh tokens, and environment-aware cookie security policies. +Specification-driven architecture using OpenSpec schema definitions with phased implementation tracking (design → proposal → tasks → README), documenting an async Python/SQLAlchemy backend with external IdP (Authentik OIDC), internal JWT access tokens, opaque DB refresh tokens, and environment-aware cookie security policies. ## tags -oidc, authentik, oauth2, jwt, authentication, tokens, refresh, design +jwt, tokens, oidc, authentication, authentik, refresh, internal, design ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-17-auth-oauth/specs/.pi-map.index.md b/openspec/changes/archive/2026-05-17-auth-oauth/specs/.pi-map.index.md index b7ed854..b7b6375 100644 --- a/openspec/changes/archive/2026-05-17-auth-oauth/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-17-auth-oauth/specs/.pi-map.index.md @@ -1,19 +1,19 @@ -# 2026-05-17-auth-oauth/specs (index) -dir: 2026-05-17-auth-oauth/specs +# openspec/changes/archive/2026-05-17-auth-oauth/specs (index) +dir: openspec/changes/archive/2026-05-17-auth-oauth/specs ## role -Contains specification documents defining requirements, interfaces, and behavior contracts for the OAuth authentication system. +Contains archived specification documents for an OAuth-based authentication feature change from May 17, 2026, serving as historical design reference for the openspec project. ## parent -index: 2026-05-17-auth-oauth/.pi-map.index.md -map: 2026-05-17-auth-oauth/.pi-map.md +index: openspec/changes/archive/2026-05-17-auth-oauth/.pi-map.index.md +map: openspec/changes/archive/2026-05-17-auth-oauth/.pi-map.md ## children -- 2026-05-17-auth-oauth/specs/auth-oauth - index: 2026-05-17-auth-oauth/specs/auth-oauth/.pi-map.index.md - map: 2026-05-17-auth-oauth/specs/auth-oauth/.pi-map.md +- openspec/changes/archive/2026-05-17-auth-oauth/specs/auth-oauth + index: openspec/changes/archive/2026-05-17-auth-oauth/specs/auth-oauth/.pi-map.index.md + map: openspec/changes/archive/2026-05-17-auth-oauth/specs/auth-oauth/.pi-map.md ## files ## links -index: 2026-05-17-auth-oauth/specs/.pi-map.index.md -map: 2026-05-17-auth-oauth/specs/.pi-map.md +index: openspec/changes/archive/2026-05-17-auth-oauth/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-17-auth-oauth/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-17-auth-oauth/specs/.pi-map.md b/openspec/changes/archive/2026-05-17-auth-oauth/specs/.pi-map.md index f6ce503..6eb501e 100644 --- a/openspec/changes/archive/2026-05-17-auth-oauth/specs/.pi-map.md +++ b/openspec/changes/archive/2026-05-17-auth-oauth/specs/.pi-map.md @@ -1,13 +1,13 @@ -# 2026-05-17-auth-oauth/specs -dir: 2026-05-17-auth-oauth/specs +# openspec/changes/archive/2026-05-17-auth-oauth/specs +dir: openspec/changes/archive/2026-05-17-auth-oauth/specs -index: 2026-05-17-auth-oauth/specs/.pi-map.index.md +index: openspec/changes/archive/2026-05-17-auth-oauth/specs/.pi-map.index.md ## role -Contains specification documents defining requirements, interfaces, and behavior contracts for the OAuth authentication system. +Contains archived specification documents for an OAuth-based authentication feature change from May 17, 2026, serving as historical design reference for the openspec project. ## files ## arch -Documentation-driven design using specification files (likely markdown or similar) to formalize system requirements before implementation. +Specification-driven architecture using dated archive directories for change tracking, with isolated spec documents per feature change for versioned documentation history. ## tags - ## symbols diff --git a/openspec/changes/archive/2026-05-17-auth-oauth/specs/auth-oauth/.pi-map.index.md b/openspec/changes/archive/2026-05-17-auth-oauth/specs/auth-oauth/.pi-map.index.md index 0001175..0377243 100644 --- a/openspec/changes/archive/2026-05-17-auth-oauth/specs/auth-oauth/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-17-auth-oauth/specs/auth-oauth/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-17-auth-oauth/specs/auth-oauth (index) -dir: 2026-05-17-auth-oauth/specs/auth-oauth +# openspec/changes/archive/2026-05-17-auth-oauth/specs/auth-oauth (index) +dir: openspec/changes/archive/2026-05-17-auth-oauth/specs/auth-oauth ## role -Defines authentication and authorization requirements for OAuth2/OIDC integration with Authentik identity provider. +Defines OAuth2/OIDC authentication requirements for integration with Authentik identity provider, covering session lifecycle security. ## parent -index: 2026-05-17-auth-oauth/specs/.pi-map.index.md -map: 2026-05-17-auth-oauth/specs/.pi-map.md +index: openspec/changes/archive/2026-05-17-auth-oauth/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-17-auth-oauth/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-17-auth-oauth/specs/auth-oauth/.pi-map.index.md -map: 2026-05-17-auth-oauth/specs/auth-oauth/.pi-map.md +index: openspec/changes/archive/2026-05-17-auth-oauth/specs/auth-oauth/.pi-map.index.md +map: openspec/changes/archive/2026-05-17-auth-oauth/specs/auth-oauth/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-17-auth-oauth/specs/auth-oauth/.pi-map.md b/openspec/changes/archive/2026-05-17-auth-oauth/specs/auth-oauth/.pi-map.md index 18bf837..627e980 100644 --- a/openspec/changes/archive/2026-05-17-auth-oauth/specs/auth-oauth/.pi-map.md +++ b/openspec/changes/archive/2026-05-17-auth-oauth/specs/auth-oauth/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-17-auth-oauth/specs/auth-oauth -dir: 2026-05-17-auth-oauth/specs/auth-oauth +# openspec/changes/archive/2026-05-17-auth-oauth/specs/auth-oauth +dir: openspec/changes/archive/2026-05-17-auth-oauth/specs/auth-oauth -index: 2026-05-17-auth-oauth/specs/auth-oauth/.pi-map.index.md +index: openspec/changes/archive/2026-05-17-auth-oauth/specs/auth-oauth/.pi-map.index.md ## role -Defines authentication and authorization requirements for OAuth2/OIDC integration with Authentik identity provider. +Defines OAuth2/OIDC authentication requirements for integration with Authentik identity provider, covering session lifecycle security. ## files -- spec.md | Specifies OAuth2/OIDC authentication, session security, token refresh, and logout requirements for a web application using Authentik as the identity provider. | dep: Authentik, JWKS, OAuth2, OIDC, HTTP cookies, database +- spec.md | Defines modified requirements for OAuth2/OIDC authentication, session security, token refresh, and session termination using Authentik | dep: Authentik, OAuth2, OIDC, JWKS ## arch -Specification-driven security architecture using standard OAuth2/OIDC flows with session management, token lifecycle, and secure logout patterns. +Specification-driven requirements document using markdown-based RFC-style specification format with no executable code. ## tags -oauth2, oidc, authentik, spec, specifies, authentication, session, security +oauth2, oidc, session, authentik, spec, defines, modified, requirements ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-17-database-models/.pi-map.index.md b/openspec/changes/archive/2026-05-17-database-models/.pi-map.index.md index 7093fa1..08257e9 100644 --- a/openspec/changes/archive/2026-05-17-database-models/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-17-database-models/.pi-map.index.md @@ -1,11 +1,11 @@ -# 2026-05-17-database-models (index) -dir: 2026-05-17-database-models +# openspec/changes/archive/2026-05-17-database-models (index) +dir: openspec/changes/archive/2026-05-17-database-models ## role -Database persistence layer providing SQLAlchemy 2.0 async ORM models and Alembic migration infrastructure for PostgreSQL data management in the Headquarter platform API. +Defines database ORM models and migration infrastructure for a PostgreSQL-backed async SQLAlchemy layer with UUID primary keys and Alembic version control. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children - ## files @@ -15,8 +15,8 @@ map: ./.pi-map.md - proposal.md - tasks.md ## links -index: 2026-05-17-database-models/.pi-map.index.md -map: 2026-05-17-database-models/.pi-map.md +index: openspec/changes/archive/2026-05-17-database-models/.pi-map.index.md +map: openspec/changes/archive/2026-05-17-database-models/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-17-database-models/.pi-map.md b/openspec/changes/archive/2026-05-17-database-models/.pi-map.md index 9e83663..be2bd8d 100644 --- a/openspec/changes/archive/2026-05-17-database-models/.pi-map.md +++ b/openspec/changes/archive/2026-05-17-database-models/.pi-map.md @@ -1,20 +1,20 @@ -# 2026-05-17-database-models -dir: 2026-05-17-database-models +# openspec/changes/archive/2026-05-17-database-models +dir: openspec/changes/archive/2026-05-17-database-models -index: 2026-05-17-database-models/.pi-map.index.md +index: openspec/changes/archive/2026-05-17-database-models/.pi-map.index.md ## role -Database persistence layer providing SQLAlchemy 2.0 async ORM models and Alembic migration infrastructure for PostgreSQL data management in the Headquarter platform API. +Defines database ORM models and migration infrastructure for a PostgreSQL-backed async SQLAlchemy layer with UUID primary keys and Alembic version control. ## files -- .openspec.yaml | Defines an OpenAPI specification file metadata with schema type and creation date -- README.md | Defines a project for implementing SQLAlchemy database models and Alembic migrations for core entities. | dep: SQLAlchemy, Alembic -- design.md | Defines the database schema design, technology choices, and project structure for an async SQLAlchemy-based PostgreSQL ORM in an API application. | dep: SQLAlchemy 2.0, asyncpg, Alembic, pydantic-settings, PostgreSQL -- proposal.md | Proposes implementing SQLAlchemy 2.0 async database models and Alembic migrations for core entities in the Headquarter platform | dep: SQLAlchemy 2.0, Alembic, asyncpg, pytest, mypy, ruff -- tasks.md | Tracks completed implementation tasks for building a SQLAlchemy-based async database layer with models, migrations, seeding, and testing for an API application. | dep: SQLAlchemy, Alembic, Pydantic-settings, PostgreSQL, pytest, mypy, ruff +- .openspec.yaml | Defines an OpenSpec configuration file with schema type and creation date metadata +- README.md | Documents a project component responsible for implementing SQLAlchemy ORM models and Alembic database migration infrastructure for core business entities. | dep: SQLAlchemy, Alembic +- design.md | Defines the database schema design, technology choices, and architecture for an async SQLAlchemy-based PostgreSQL ORM layer with UUID primary keys, relationships, and migration strategy | dep: SQLAlchemy 2.0, asyncpg, Alembic, PostgreSQL, pydantic-settings, pytest, mypy, ruff +- proposal.md | Proposes implementing SQLAlchemy 2.0 async database models and Alembic migrations for core entities in a platform called Headquarter. | dep: SQLAlchemy 2.0, Alembic, asyncpg, pytest, mypy, ruff +- tasks.md | Tracks completed implementation tasks for building SQLAlchemy database models with async PostgreSQL support, Alembic migrations, and testing infrastructure | dep: SQLAlchemy, Alembic, pydantic-settings, PostgreSQL, pytest, mypy, ruff ## arch -Async SQLAlchemy 2.0 declarative ORM with Alembic migration tooling, following repository pattern for data access, with model-driven schema design and automated migration generation for PostgreSQL backend. +Specification-driven architecture using OpenSpec format with phased implementation tracking (design → proposal → tasks → archive), employing SQLAlchemy 2.0 async patterns, UUID-based entity relationships, and Alembic migration strategy for a platform called Headquarter. ## tags -sqlalchemy, alembic, database, defines, models, migrations, design, async +alembic, sqlalchemy, database, postgresql, models, design, async, pytest ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-17-frontend-foundation/.pi-map.index.md b/openspec/changes/archive/2026-05-17-frontend-foundation/.pi-map.index.md index bdb51a2..7ae782b 100644 --- a/openspec/changes/archive/2026-05-17-frontend-foundation/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-17-frontend-foundation/.pi-map.index.md @@ -1,15 +1,15 @@ -# 2026-05-17-frontend-foundation (index) -dir: 2026-05-17-frontend-foundation +# openspec/changes/archive/2026-05-17-frontend-foundation (index) +dir: openspec/changes/archive/2026-05-17-frontend-foundation ## role -Establishes a foundational frontend architecture for authenticated React/TypeScript/Vite web applications with routing, API integration, and responsive UI patterns. +Defines a frontend foundation specification for a React/TypeScript/Vite web application with authentication, routing, and API integration capabilities. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2026-05-17-frontend-foundation/specs - index: 2026-05-17-frontend-foundation/specs/.pi-map.index.md - map: 2026-05-17-frontend-foundation/specs/.pi-map.md +- openspec/changes/archive/2026-05-17-frontend-foundation/specs + index: openspec/changes/archive/2026-05-17-frontend-foundation/specs/.pi-map.index.md + map: openspec/changes/archive/2026-05-17-frontend-foundation/specs/.pi-map.md ## files - .openspec.yaml - README.md @@ -17,8 +17,8 @@ map: ./.pi-map.md - proposal.md - tasks.md ## links -index: 2026-05-17-frontend-foundation/.pi-map.index.md -map: 2026-05-17-frontend-foundation/.pi-map.md +index: openspec/changes/archive/2026-05-17-frontend-foundation/.pi-map.index.md +map: openspec/changes/archive/2026-05-17-frontend-foundation/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-17-frontend-foundation/.pi-map.md b/openspec/changes/archive/2026-05-17-frontend-foundation/.pi-map.md index 535c0c9..8dbc6d2 100644 --- a/openspec/changes/archive/2026-05-17-frontend-foundation/.pi-map.md +++ b/openspec/changes/archive/2026-05-17-frontend-foundation/.pi-map.md @@ -1,20 +1,20 @@ -# 2026-05-17-frontend-foundation -dir: 2026-05-17-frontend-foundation +# openspec/changes/archive/2026-05-17-frontend-foundation +dir: openspec/changes/archive/2026-05-17-frontend-foundation -index: 2026-05-17-frontend-foundation/.pi-map.index.md +index: openspec/changes/archive/2026-05-17-frontend-foundation/.pi-map.index.md ## role -Establishes a foundational frontend architecture for authenticated React/TypeScript/Vite web applications with routing, API integration, and responsive UI patterns. +Defines a frontend foundation specification for a React/TypeScript/Vite web application with authentication, routing, and API integration capabilities. ## files -- .openspec.yaml | Defines an OpenAPI specification file metadata with schema type and creation date -- README.md | Defines a project foundation for a frontend application with authentication, routing, and API integration capabilities. +- .openspec.yaml | Defines an OpenSpec configuration file with schema type and creation date metadata +- README.md | Defines a project foundation for a frontend application with authentication, routing, and API integration capabilities - design.md | Design document outlining the frontend foundation architecture for a React/TypeScript/Vite web app with authenticated routing, responsive shell layout, and API client patterns. | dep: react-router-dom, Axios, React, TypeScript, Vite -- proposal.md | Proposes a frontend foundation for a React/TypeScript web application with authentication, routing, and API integration. | dep: React, TypeScript, Vite, backend auth endpoints (/auth/login, /auth/logout, /auth/me, /auth/refresh) +- proposal.md | Proposes a frontend React foundation for authentication, routing, and API integration in a web application. | dep: React, TypeScript, Vite, backend auth endpoints (/auth/login, /auth/logout, /auth/me, /auth/refresh) - tasks.md | Tracks completed frontend development tasks for building an authenticated web application with routing, API integration, and dashboard UI. ## arch -Document-driven specification package using OpenAPI metadata, design documents, and task tracking to define a layered frontend architecture with authenticated routing, API client abstraction, and shell-based responsive layout components. +Specification-driven architecture using OpenSpec schema with documented design-proposal-task workflow; React SPA with Vite build tooling, authenticated route guards, responsive shell layout, and centralized API client pattern. ## tags -react, frontend, routing, api, typescript, auth, foundation, application +react, frontend, routing, api, auth, foundation, application, integration ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-17-frontend-foundation/specs/.pi-map.index.md b/openspec/changes/archive/2026-05-17-frontend-foundation/specs/.pi-map.index.md index 6b6d244..a7e5c63 100644 --- a/openspec/changes/archive/2026-05-17-frontend-foundation/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-17-frontend-foundation/specs/.pi-map.index.md @@ -1,19 +1,19 @@ -# 2026-05-17-frontend-foundation/specs (index) -dir: 2026-05-17-frontend-foundation/specs +# openspec/changes/archive/2026-05-17-frontend-foundation/specs (index) +dir: openspec/changes/archive/2026-05-17-frontend-foundation/specs ## role -Contains specification documents defining requirements and design decisions for the frontend foundation layer. +Contains historical specification documents for the frontend foundation changes dated May 17, 2026, serving as an archived record of past design decisions. ## parent -index: 2026-05-17-frontend-foundation/.pi-map.index.md -map: 2026-05-17-frontend-foundation/.pi-map.md +index: openspec/changes/archive/2026-05-17-frontend-foundation/.pi-map.index.md +map: openspec/changes/archive/2026-05-17-frontend-foundation/.pi-map.md ## children -- 2026-05-17-frontend-foundation/specs/frontend-foundation - index: 2026-05-17-frontend-foundation/specs/frontend-foundation/.pi-map.index.md - map: 2026-05-17-frontend-foundation/specs/frontend-foundation/.pi-map.md +- openspec/changes/archive/2026-05-17-frontend-foundation/specs/frontend-foundation + index: openspec/changes/archive/2026-05-17-frontend-foundation/specs/frontend-foundation/.pi-map.index.md + map: openspec/changes/archive/2026-05-17-frontend-foundation/specs/frontend-foundation/.pi-map.md ## files ## links -index: 2026-05-17-frontend-foundation/specs/.pi-map.index.md -map: 2026-05-17-frontend-foundation/specs/.pi-map.md +index: openspec/changes/archive/2026-05-17-frontend-foundation/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-17-frontend-foundation/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-17-frontend-foundation/specs/.pi-map.md b/openspec/changes/archive/2026-05-17-frontend-foundation/specs/.pi-map.md index 1c6898b..4a250e1 100644 --- a/openspec/changes/archive/2026-05-17-frontend-foundation/specs/.pi-map.md +++ b/openspec/changes/archive/2026-05-17-frontend-foundation/specs/.pi-map.md @@ -1,13 +1,13 @@ -# 2026-05-17-frontend-foundation/specs -dir: 2026-05-17-frontend-foundation/specs +# openspec/changes/archive/2026-05-17-frontend-foundation/specs +dir: openspec/changes/archive/2026-05-17-frontend-foundation/specs -index: 2026-05-17-frontend-foundation/specs/.pi-map.index.md +index: openspec/changes/archive/2026-05-17-frontend-foundation/specs/.pi-map.index.md ## role -Contains specification documents defining requirements and design decisions for the frontend foundation layer. +Contains historical specification documents for the frontend foundation changes dated May 17, 2026, serving as an archived record of past design decisions. ## files ## arch -Documentation-driven architecture using specification files to formalize API contracts, component interfaces, and implementation standards before code development. +Simple archival storage pattern using date-based directory naming convention with flat file organization for version-controlled specification documents. ## tags - ## symbols diff --git a/openspec/changes/archive/2026-05-17-frontend-foundation/specs/frontend-foundation/.pi-map.index.md b/openspec/changes/archive/2026-05-17-frontend-foundation/specs/frontend-foundation/.pi-map.index.md index 8f6578c..4341057 100644 --- a/openspec/changes/archive/2026-05-17-frontend-foundation/specs/frontend-foundation/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-17-frontend-foundation/specs/frontend-foundation/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-17-frontend-foundation/specs/frontend-foundation (index) -dir: 2026-05-17-frontend-foundation/specs/frontend-foundation +# openspec/changes/archive/2026-05-17-frontend-foundation/specs/frontend-foundation (index) +dir: openspec/changes/archive/2026-05-17-frontend-foundation/specs/frontend-foundation ## role -Defines the technical specification and requirements for a React 18+ TypeScript frontend foundation with routing, authentication, layout, and HTTP client capabilities. +Defines frontend foundation specifications for a React 18+ TypeScript web application including routing, layout, HTTP client, and loading state management. ## parent -index: 2026-05-17-frontend-foundation/specs/.pi-map.index.md -map: 2026-05-17-frontend-foundation/specs/.pi-map.md +index: openspec/changes/archive/2026-05-17-frontend-foundation/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-17-frontend-foundation/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-17-frontend-foundation/specs/frontend-foundation/.pi-map.index.md -map: 2026-05-17-frontend-foundation/specs/frontend-foundation/.pi-map.md +index: openspec/changes/archive/2026-05-17-frontend-foundation/specs/frontend-foundation/.pi-map.index.md +map: openspec/changes/archive/2026-05-17-frontend-foundation/specs/frontend-foundation/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-17-frontend-foundation/specs/frontend-foundation/.pi-map.md b/openspec/changes/archive/2026-05-17-frontend-foundation/specs/frontend-foundation/.pi-map.md index 2200764..185c036 100644 --- a/openspec/changes/archive/2026-05-17-frontend-foundation/specs/frontend-foundation/.pi-map.md +++ b/openspec/changes/archive/2026-05-17-frontend-foundation/specs/frontend-foundation/.pi-map.md @@ -1,14 +1,14 @@ -# 2026-05-17-frontend-foundation/specs/frontend-foundation -dir: 2026-05-17-frontend-foundation/specs/frontend-foundation +# openspec/changes/archive/2026-05-17-frontend-foundation/specs/frontend-foundation +dir: openspec/changes/archive/2026-05-17-frontend-foundation/specs/frontend-foundation -index: 2026-05-17-frontend-foundation/specs/frontend-foundation/.pi-map.index.md +index: openspec/changes/archive/2026-05-17-frontend-foundation/specs/frontend-foundation/.pi-map.index.md ## role -Defines the technical specification and requirements for a React 18+ TypeScript frontend foundation with routing, authentication, layout, and HTTP client capabilities. +Defines frontend foundation specifications for a React 18+ TypeScript web application including routing, layout, HTTP client, and loading state management. ## files -- spec.md | This file specifies frontend requirements for a React 18+ TypeScript web application with routing, authentication, layout, and HTTP client configuration. | dep: React 18+, TypeScript 5+, Vite, React Router, Axios/fetch +- spec.md | Specifies frontend requirements for a React 18+ TypeScript web application with routing, layout, HTTP client, and loading state management. | dep: React 18+, TypeScript 5+, Vite, React Router, Axios/fetch ## arch -Specification-driven architecture using React 18 with TypeScript, likely implementing common patterns such as component-based UI, client-side routing, token-based authentication, responsive layout systems, and configurable HTTP interceptors. +Specification-driven architecture using markdown-based requirements documentation to establish foundational frontend patterns before implementation. ## tags spec, specifies, frontend, requirements, react, typescript, web, application ## symbols diff --git a/openspec/changes/archive/2026-05-17-project-management/.pi-map.index.md b/openspec/changes/archive/2026-05-17-project-management/.pi-map.index.md index 9b3c537a..c571c15 100644 --- a/openspec/changes/archive/2026-05-17-project-management/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-17-project-management/.pi-map.index.md @@ -1,15 +1,15 @@ -# 2026-05-17-project-management (index) -dir: 2026-05-17-project-management +# openspec/changes/archive/2026-05-17-project-management (index) +dir: openspec/changes/archive/2026-05-17-project-management ## role -Defines specifications, design, and implementation tracking for a full-stack project management feature with authenticated CRUD, ownership enforcement, and SSH key integration. +Archive of design documents for a full-stack project management feature implementing authenticated CRUD operations with ownership enforcement. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2026-05-17-project-management/specs - index: 2026-05-17-project-management/specs/.pi-map.index.md - map: 2026-05-17-project-management/specs/.pi-map.md +- openspec/changes/archive/2026-05-17-project-management/specs + index: openspec/changes/archive/2026-05-17-project-management/specs/.pi-map.index.md + map: openspec/changes/archive/2026-05-17-project-management/specs/.pi-map.md ## files - .openspec.yaml - README.md @@ -17,8 +17,8 @@ map: ./.pi-map.md - proposal.md - tasks.md ## links -index: 2026-05-17-project-management/.pi-map.index.md -map: 2026-05-17-project-management/.pi-map.md +index: openspec/changes/archive/2026-05-17-project-management/.pi-map.index.md +map: openspec/changes/archive/2026-05-17-project-management/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-17-project-management/.pi-map.md b/openspec/changes/archive/2026-05-17-project-management/.pi-map.md index 2867ea3..5903cba 100644 --- a/openspec/changes/archive/2026-05-17-project-management/.pi-map.md +++ b/openspec/changes/archive/2026-05-17-project-management/.pi-map.md @@ -1,20 +1,20 @@ -# 2026-05-17-project-management -dir: 2026-05-17-project-management +# openspec/changes/archive/2026-05-17-project-management +dir: openspec/changes/archive/2026-05-17-project-management -index: 2026-05-17-project-management/.pi-map.index.md +index: openspec/changes/archive/2026-05-17-project-management/.pi-map.index.md ## role -Defines specifications, design, and implementation tracking for a full-stack project management feature with authenticated CRUD, ownership enforcement, and SSH key integration. +Archive of design documents for a full-stack project management feature implementing authenticated CRUD operations with ownership enforcement. ## files -- .openspec.yaml | Defines an OpenAPI specification file metadata with schema type and creation date -- README.md | Defines a project management application that implements create, read, update, delete, listing, and ownership workflows across API and frontend layers -- design.md | Design document specifying authenticated project CRUD implementation with ownership rules, default SSH key support, and frontend integration. | dep: auth-oauth, frontend-foundation, backend API routes, JWT, project service layer, repository associations, SSH key system -- proposal.md | Proposes a project management feature implementation covering authenticated CRUD APIs, frontend flows, SSH key integration, and cascading deletion behavior. | dep: authentication, data models, frontend foundation, apps/api/src, apps/web/src -- tasks.md | Tracks completed tasks for implementing full-stack project management features with ownership enforcement and verification checks. +- .openspec.yaml | Defines an OpenSpec configuration file with schema type and creation date metadata +- README.md | Describes a project management system implementing CRUD operations, listing, and ownership workflows across API and frontend layers. +- design.md | Design document specifying authenticated project CRUD implementation connecting backend and frontend with ownership/security rules | dep: auth-oauth, frontend-foundation, JWT, project service layer, repository associations, SSH keys +- proposal.md | Proposes implementation of end-to-end project management functionality with authentication, ownership enforcement, and SSH key integration across backend and frontend. | dep: apps/api/src, apps/web/src, authentication, data models, SSH keys, repositories +- tasks.md | A task tracking document for implementing full-stack project management functionality with ownership enforcement, covering backend API, frontend flows, and verification steps. ## arch -Documentation-driven specification pattern using OpenAPI metadata, layered design docs (proposal → design → tasks), and separation of concerns across API/backend and frontend concerns with explicit ownership-based access control. +Specification-driven development using OpenSpec schema with phased implementation tracking across backend API, frontend UI, and security layers (SSH key integration, ownership rules). ## tags -project, frontend, management, ownership, design, tasks, defines, .openspec +frontend, project, ownership, management, api, design, backend, .openspec ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-17-project-management/specs/.pi-map.index.md b/openspec/changes/archive/2026-05-17-project-management/specs/.pi-map.index.md index b89f023..a7d22fb 100644 --- a/openspec/changes/archive/2026-05-17-project-management/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-17-project-management/specs/.pi-map.index.md @@ -1,25 +1,25 @@ -# 2026-05-17-project-management/specs (index) -dir: 2026-05-17-project-management/specs +# openspec/changes/archive/2026-05-17-project-management/specs (index) +dir: openspec/changes/archive/2026-05-17-project-management/specs ## role -Contains project specifications and requirements documentation for the 2026-05-17-project-management system. +Contains archived specification documents for project management features from a May 2026 snapshot ## parent -index: 2026-05-17-project-management/.pi-map.index.md -map: 2026-05-17-project-management/.pi-map.md +index: openspec/changes/archive/2026-05-17-project-management/.pi-map.index.md +map: openspec/changes/archive/2026-05-17-project-management/.pi-map.md ## children -- 2026-05-17-project-management/specs/git-repo - index: 2026-05-17-project-management/specs/git-repo/.pi-map.index.md - map: 2026-05-17-project-management/specs/git-repo/.pi-map.md -- 2026-05-17-project-management/specs/project-management - index: 2026-05-17-project-management/specs/project-management/.pi-map.index.md - map: 2026-05-17-project-management/specs/project-management/.pi-map.md -- 2026-05-17-project-management/specs/ssh-keys - index: 2026-05-17-project-management/specs/ssh-keys/.pi-map.index.md - map: 2026-05-17-project-management/specs/ssh-keys/.pi-map.md +- openspec/changes/archive/2026-05-17-project-management/specs/git-repo + index: openspec/changes/archive/2026-05-17-project-management/specs/git-repo/.pi-map.index.md + map: openspec/changes/archive/2026-05-17-project-management/specs/git-repo/.pi-map.md +- openspec/changes/archive/2026-05-17-project-management/specs/project-management + index: openspec/changes/archive/2026-05-17-project-management/specs/project-management/.pi-map.index.md + map: openspec/changes/archive/2026-05-17-project-management/specs/project-management/.pi-map.md +- openspec/changes/archive/2026-05-17-project-management/specs/ssh-keys + index: openspec/changes/archive/2026-05-17-project-management/specs/ssh-keys/.pi-map.index.md + map: openspec/changes/archive/2026-05-17-project-management/specs/ssh-keys/.pi-map.md ## files ## links -index: 2026-05-17-project-management/specs/.pi-map.index.md -map: 2026-05-17-project-management/specs/.pi-map.md +index: openspec/changes/archive/2026-05-17-project-management/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-17-project-management/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-17-project-management/specs/.pi-map.md b/openspec/changes/archive/2026-05-17-project-management/specs/.pi-map.md index 76ef054..0381a19 100644 --- a/openspec/changes/archive/2026-05-17-project-management/specs/.pi-map.md +++ b/openspec/changes/archive/2026-05-17-project-management/specs/.pi-map.md @@ -1,13 +1,13 @@ -# 2026-05-17-project-management/specs -dir: 2026-05-17-project-management/specs +# openspec/changes/archive/2026-05-17-project-management/specs +dir: openspec/changes/archive/2026-05-17-project-management/specs -index: 2026-05-17-project-management/specs/.pi-map.index.md +index: openspec/changes/archive/2026-05-17-project-management/specs/.pi-map.index.md ## role -Contains project specifications and requirements documentation for the 2026-05-17-project-management system. +Contains archived specification documents for project management features from a May 2026 snapshot ## files ## arch -Documentation-driven specification pattern with no code architecture; serves as the requirements foundation for downstream implementation packages. +Flat directory structure storing dated, versioned specification files with no subdirectories or code files present ## tags - ## symbols diff --git a/openspec/changes/archive/2026-05-17-project-management/specs/git-repo/.pi-map.index.md b/openspec/changes/archive/2026-05-17-project-management/specs/git-repo/.pi-map.index.md index 9f8b417..93f9147 100644 --- a/openspec/changes/archive/2026-05-17-project-management/specs/git-repo/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-17-project-management/specs/git-repo/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-17-project-management/specs/git-repo (index) -dir: 2026-05-17-project-management/specs/git-repo +# openspec/changes/archive/2026-05-17-project-management/specs/git-repo (index) +dir: openspec/changes/archive/2026-05-17-project-management/specs/git-repo ## role -Defines specification requirements for cascading repository deletion when a project is deleted in a project management system. +Defines a specification for maintaining referential integrity between project and repository data through cascading deletion. ## parent -index: 2026-05-17-project-management/specs/.pi-map.index.md -map: 2026-05-17-project-management/specs/.pi-map.md +index: openspec/changes/archive/2026-05-17-project-management/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-17-project-management/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-17-project-management/specs/git-repo/.pi-map.index.md -map: 2026-05-17-project-management/specs/git-repo/.pi-map.md +index: openspec/changes/archive/2026-05-17-project-management/specs/git-repo/.pi-map.index.md +map: openspec/changes/archive/2026-05-17-project-management/specs/git-repo/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-17-project-management/specs/git-repo/.pi-map.md b/openspec/changes/archive/2026-05-17-project-management/specs/git-repo/.pi-map.md index bdf95bc..60823b8 100644 --- a/openspec/changes/archive/2026-05-17-project-management/specs/git-repo/.pi-map.md +++ b/openspec/changes/archive/2026-05-17-project-management/specs/git-repo/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-17-project-management/specs/git-repo -dir: 2026-05-17-project-management/specs/git-repo +# openspec/changes/archive/2026-05-17-project-management/specs/git-repo +dir: openspec/changes/archive/2026-05-17-project-management/specs/git-repo -index: 2026-05-17-project-management/specs/git-repo/.pi-map.index.md +index: openspec/changes/archive/2026-05-17-project-management/specs/git-repo/.pi-map.index.md ## role -Defines specification requirements for cascading repository deletion when a project is deleted in a project management system. +Defines a specification for maintaining referential integrity between project and repository data through cascading deletion. ## files -- spec.md | Defines modified requirements for cascading repository deletion when a project is deleted +- spec.md | Specifies a requirement for cascading deletion of repository records when their parent project is deleted. ## arch -Specification-driven design using markdown-based requirements documentation with focus on referential integrity and cascading delete operations across project-repository boundaries. +Specification-driven design using Markdown-based requirement documentation with explicit behavioral constraints for data lifecycle management. ## tags -spec, defines, modified, requirements, cascading, repository, deletion, project +spec, specifies, requirement, cascading, deletion, repository, records, their ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-17-project-management/specs/project-management/.pi-map.index.md b/openspec/changes/archive/2026-05-17-project-management/specs/project-management/.pi-map.index.md index a132df8..a63c7be 100644 --- a/openspec/changes/archive/2026-05-17-project-management/specs/project-management/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-17-project-management/specs/project-management/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-17-project-management/specs/project-management (index) -dir: 2026-05-17-project-management/specs/project-management +# openspec/changes/archive/2026-05-17-project-management/specs/project-management (index) +dir: openspec/changes/archive/2026-05-17-project-management/specs/project-management ## role -Defines the specification requirements for a project management system including CRUD operations, access control, and SSH key management features. +Defines system requirements and specifications for a project management API with authentication, access control, and SSH key management features. ## parent -index: 2026-05-17-project-management/specs/.pi-map.index.md -map: 2026-05-17-project-management/specs/.pi-map.md +index: openspec/changes/archive/2026-05-17-project-management/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-17-project-management/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-17-project-management/specs/project-management/.pi-map.index.md -map: 2026-05-17-project-management/specs/project-management/.pi-map.md +index: openspec/changes/archive/2026-05-17-project-management/specs/project-management/.pi-map.index.md +map: openspec/changes/archive/2026-05-17-project-management/specs/project-management/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-17-project-management/specs/project-management/.pi-map.md b/openspec/changes/archive/2026-05-17-project-management/specs/project-management/.pi-map.md index 98ced5c..7209841 100644 --- a/openspec/changes/archive/2026-05-17-project-management/specs/project-management/.pi-map.md +++ b/openspec/changes/archive/2026-05-17-project-management/specs/project-management/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-17-project-management/specs/project-management -dir: 2026-05-17-project-management/specs/project-management +# openspec/changes/archive/2026-05-17-project-management/specs/project-management +dir: openspec/changes/archive/2026-05-17-project-management/specs/project-management -index: 2026-05-17-project-management/specs/project-management/.pi-map.index.md +index: openspec/changes/archive/2026-05-17-project-management/specs/project-management/.pi-map.index.md ## role -Defines the specification requirements for a project management system including CRUD operations, access control, and SSH key management features. +Defines system requirements and specifications for a project management API with authentication, access control, and SSH key management features. ## files -- spec.md | Defines modified requirements for a project management system with CRUD operations, ownership-based access control, and SSH key management +- spec.md | Defines modified system requirements for a project management API with authentication, ownership-based access control, and SSH key management. ## arch -Requirements-driven specification document using natural language descriptions of functional requirements, business rules, and system constraints without explicit architectural patterns. +Specification-driven design using Markdown-based requirements documentation with no implemented code architecture. ## tags -management, spec, defines, modified, requirements, project, system, crud +management, spec, defines, modified, system, requirements, project, api ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-17-project-management/specs/ssh-keys/.pi-map.index.md b/openspec/changes/archive/2026-05-17-project-management/specs/ssh-keys/.pi-map.index.md index 81e0b39..b6702ff 100644 --- a/openspec/changes/archive/2026-05-17-project-management/specs/ssh-keys/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-17-project-management/specs/ssh-keys/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-17-project-management/specs/ssh-keys (index) -dir: 2026-05-17-project-management/specs/ssh-keys +# openspec/changes/archive/2026-05-17-project-management/specs/ssh-keys (index) +dir: openspec/changes/archive/2026-05-17-project-management/specs/ssh-keys ## role -Specifies requirements for SSH key management and project-level default key assignment with validation rules. +Defines requirements for SSH key management within project-scoped access control. ## parent -index: 2026-05-17-project-management/specs/.pi-map.index.md -map: 2026-05-17-project-management/specs/.pi-map.md +index: openspec/changes/archive/2026-05-17-project-management/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-17-project-management/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-17-project-management/specs/ssh-keys/.pi-map.index.md -map: 2026-05-17-project-management/specs/ssh-keys/.pi-map.md +index: openspec/changes/archive/2026-05-17-project-management/specs/ssh-keys/.pi-map.index.md +map: openspec/changes/archive/2026-05-17-project-management/specs/ssh-keys/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-17-project-management/specs/ssh-keys/.pi-map.md b/openspec/changes/archive/2026-05-17-project-management/specs/ssh-keys/.pi-map.md index 205f04c..e41e923 100644 --- a/openspec/changes/archive/2026-05-17-project-management/specs/ssh-keys/.pi-map.md +++ b/openspec/changes/archive/2026-05-17-project-management/specs/ssh-keys/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-17-project-management/specs/ssh-keys -dir: 2026-05-17-project-management/specs/ssh-keys +# openspec/changes/archive/2026-05-17-project-management/specs/ssh-keys +dir: openspec/changes/archive/2026-05-17-project-management/specs/ssh-keys -index: 2026-05-17-project-management/specs/ssh-keys/.pi-map.index.md +index: openspec/changes/archive/2026-05-17-project-management/specs/ssh-keys/.pi-map.index.md ## role -Specifies requirements for SSH key management and project-level default key assignment with validation rules. +Defines requirements for SSH key management within project-scoped access control. ## files -- spec.md | Defines modified requirements for SSH key association with project default-key assignment validation +- spec.md | Specifies modified requirements for SSH key association with projects, restricting default-key assignment to valid keys within the authenticated owner's project scope. ## arch -Requirements specification using markdown-based structured documentation pattern. +Specification-driven requirements document using markdown-based change specification pattern. ## tags -key, spec, defines, modified, requirements, ssh, association, project +key, spec, specifies, modified, requirements, ssh, association, projects ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-18-database-setup-recovery/.pi-map.index.md b/openspec/changes/archive/2026-05-18-database-setup-recovery/.pi-map.index.md index e60369d..e6c6b34 100644 --- a/openspec/changes/archive/2026-05-18-database-setup-recovery/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-18-database-setup-recovery/.pi-map.index.md @@ -1,23 +1,23 @@ -# 2026-05-18-database-setup-recovery (index) -dir: 2026-05-18-database-setup-recovery +# openspec/changes/archive/2026-05-18-database-setup-recovery (index) +dir: openspec/changes/archive/2026-05-18-database-setup-recovery ## role -This package contains planning and design documents for implementing automatic database setup, migration, and recovery mechanisms for a Dockerized API application. +Documents a completed database setup and recovery feature implementation for containerized API application startup resilience. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2026-05-18-database-setup-recovery/specs - index: 2026-05-18-database-setup-recovery/specs/.pi-map.index.md - map: 2026-05-18-database-setup-recovery/specs/.pi-map.md +- openspec/changes/archive/2026-05-18-database-setup-recovery/specs + index: openspec/changes/archive/2026-05-18-database-setup-recovery/specs/.pi-map.index.md + map: openspec/changes/archive/2026-05-18-database-setup-recovery/specs/.pi-map.md ## files - .openspec.yaml - design.md - proposal.md - tasks.md ## links -index: 2026-05-18-database-setup-recovery/.pi-map.index.md -map: 2026-05-18-database-setup-recovery/.pi-map.md +index: openspec/changes/archive/2026-05-18-database-setup-recovery/.pi-map.index.md +map: openspec/changes/archive/2026-05-18-database-setup-recovery/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-18-database-setup-recovery/.pi-map.md b/openspec/changes/archive/2026-05-18-database-setup-recovery/.pi-map.md index 7a391b7..77c9ef0 100644 --- a/openspec/changes/archive/2026-05-18-database-setup-recovery/.pi-map.md +++ b/openspec/changes/archive/2026-05-18-database-setup-recovery/.pi-map.md @@ -1,19 +1,19 @@ -# 2026-05-18-database-setup-recovery -dir: 2026-05-18-database-setup-recovery +# openspec/changes/archive/2026-05-18-database-setup-recovery +dir: openspec/changes/archive/2026-05-18-database-setup-recovery -index: 2026-05-18-database-setup-recovery/.pi-map.index.md +index: openspec/changes/archive/2026-05-18-database-setup-recovery/.pi-map.index.md ## role -This package contains planning and design documents for implementing automatic database setup, migration, and recovery mechanisms for a Dockerized API application. +Documents a completed database setup and recovery feature implementation for containerized API application startup resilience. ## files -- .openspec.yaml | Defines an OpenSpec configuration file with schema type and creation date metadata -- design.md | Design document specifying how to implement automatic database migration running, connection retry logic, and graceful error handling on application startup | dep: SQLAlchemy, Alembic, Docker, async context -- proposal.md | Proposes architectural changes for automatic database initialization, migration management, and seed data handling in a Dockerized API application | dep: alembic, docker-compose, traefik, fastapi/sqlalchemy (implied), postgres (implied) -- tasks.md | Project task checklist tracking completion status of database initialization, error handling, Docker integration, and testing work items. +- .openspec.yaml | Defines an OpenAPI specification metadata file with schema type and creation date +- design.md | Design document for implementing automatic database migrations, connection retries, and graceful error handling on application startup | dep: SQLAlchemy, Alembic, Docker +- proposal.md | Proposes architectural changes for automatic database initialization, migration management, and seed data handling in a containerized API application | dep: alembic, docker-compose, traefik, python/fastapi, postgres/sqlalchemy +- tasks.md | Project task checklist tracking completion of database initialization, error handling, Docker integration, and testing work items. ## arch -Documentation-driven architecture using OpenSpec for schema configuration, with designs for startup-time database initialization, connection retry with exponential backoff, migration running, and seed data handling integrated into Docker container orchestration. +Specification-driven development using OpenAPI metadata standards with structured design/proposal/task documentation pattern for tracking infrastructure feature delivery. ## tags -design, database, handling, docker, .openspec, automatic, migration, error +design, database, handling, docker, .openspec, automatic, error, application ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-18-database-setup-recovery/specs/.pi-map.index.md b/openspec/changes/archive/2026-05-18-database-setup-recovery/specs/.pi-map.index.md index 911735e..4366512 100644 --- a/openspec/changes/archive/2026-05-18-database-setup-recovery/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-18-database-setup-recovery/specs/.pi-map.index.md @@ -1,19 +1,19 @@ -# 2026-05-18-database-setup-recovery/specs (index) -dir: 2026-05-18-database-setup-recovery/specs +# openspec/changes/archive/2026-05-18-database-setup-recovery/specs (index) +dir: openspec/changes/archive/2026-05-18-database-setup-recovery/specs ## role -Contains specification documents defining requirements for database setup and recovery procedures. +Contains archived specification documents for database setup and recovery features from a 2026-05-18 change cycle, serving as historical design reference for the openspec project. ## parent -index: 2026-05-18-database-setup-recovery/.pi-map.index.md -map: 2026-05-18-database-setup-recovery/.pi-map.md +index: openspec/changes/archive/2026-05-18-database-setup-recovery/.pi-map.index.md +map: openspec/changes/archive/2026-05-18-database-setup-recovery/.pi-map.md ## children -- 2026-05-18-database-setup-recovery/specs/database-initialization - index: 2026-05-18-database-setup-recovery/specs/database-initialization/.pi-map.index.md - map: 2026-05-18-database-setup-recovery/specs/database-initialization/.pi-map.md +- openspec/changes/archive/2026-05-18-database-setup-recovery/specs/database-initialization + index: openspec/changes/archive/2026-05-18-database-setup-recovery/specs/database-initialization/.pi-map.index.md + map: openspec/changes/archive/2026-05-18-database-setup-recovery/specs/database-initialization/.pi-map.md ## files ## links -index: 2026-05-18-database-setup-recovery/specs/.pi-map.index.md -map: 2026-05-18-database-setup-recovery/specs/.pi-map.md +index: openspec/changes/archive/2026-05-18-database-setup-recovery/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-18-database-setup-recovery/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-18-database-setup-recovery/specs/.pi-map.md b/openspec/changes/archive/2026-05-18-database-setup-recovery/specs/.pi-map.md index 3ee5aa8..9946357 100644 --- a/openspec/changes/archive/2026-05-18-database-setup-recovery/specs/.pi-map.md +++ b/openspec/changes/archive/2026-05-18-database-setup-recovery/specs/.pi-map.md @@ -1,13 +1,13 @@ -# 2026-05-18-database-setup-recovery/specs -dir: 2026-05-18-database-setup-recovery/specs +# openspec/changes/archive/2026-05-18-database-setup-recovery/specs +dir: openspec/changes/archive/2026-05-18-database-setup-recovery/specs -index: 2026-05-18-database-setup-recovery/specs/.pi-map.index.md +index: openspec/changes/archive/2026-05-18-database-setup-recovery/specs/.pi-map.index.md ## role -Contains specification documents defining requirements for database setup and recovery procedures. +Contains archived specification documents for database setup and recovery features from a 2026-05-18 change cycle, serving as historical design reference for the openspec project. ## files ## arch -Documentation-driven specification pattern with structured requirement definitions for system recovery capabilities. +Flat directory structure storing dated, immutable specification snapshots with no active code or architectural patterns—purely document archival using temporal organization (YYYY-MM-DD-descriptive-name). ## tags - ## symbols diff --git a/openspec/changes/archive/2026-05-18-database-setup-recovery/specs/database-initialization/.pi-map.index.md b/openspec/changes/archive/2026-05-18-database-setup-recovery/specs/database-initialization/.pi-map.index.md index b89309c..f4dcae7 100644 --- a/openspec/changes/archive/2026-05-18-database-setup-recovery/specs/database-initialization/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-18-database-setup-recovery/specs/database-initialization/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-18-database-setup-recovery/specs/database-initialization (index) -dir: 2026-05-18-database-setup-recovery/specs/database-initialization +# openspec/changes/archive/2026-05-18-database-setup-recovery/specs/database-initialization (index) +dir: openspec/changes/archive/2026-05-18-database-setup-recovery/specs/database-initialization ## role -Defines software requirements for automatic database initialization, connection resilience, seed data management, and startup error messaging using Gherkin-style scenarios. +Defines requirements for robust database initialization and connection handling during application startup. ## parent -index: 2026-05-18-database-setup-recovery/specs/.pi-map.index.md -map: 2026-05-18-database-setup-recovery/specs/.pi-map.md +index: openspec/changes/archive/2026-05-18-database-setup-recovery/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-18-database-setup-recovery/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-18-database-setup-recovery/specs/database-initialization/.pi-map.index.md -map: 2026-05-18-database-setup-recovery/specs/database-initialization/.pi-map.md +index: openspec/changes/archive/2026-05-18-database-setup-recovery/specs/database-initialization/.pi-map.index.md +map: openspec/changes/archive/2026-05-18-database-setup-recovery/specs/database-initialization/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-18-database-setup-recovery/specs/database-initialization/.pi-map.md b/openspec/changes/archive/2026-05-18-database-setup-recovery/specs/database-initialization/.pi-map.md index 5ae11d9..757549e 100644 --- a/openspec/changes/archive/2026-05-18-database-setup-recovery/specs/database-initialization/.pi-map.md +++ b/openspec/changes/archive/2026-05-18-database-setup-recovery/specs/database-initialization/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-18-database-setup-recovery/specs/database-initialization -dir: 2026-05-18-database-setup-recovery/specs/database-initialization +# openspec/changes/archive/2026-05-18-database-setup-recovery/specs/database-initialization +dir: openspec/changes/archive/2026-05-18-database-setup-recovery/specs/database-initialization -index: 2026-05-18-database-setup-recovery/specs/database-initialization/.pi-map.index.md +index: openspec/changes/archive/2026-05-18-database-setup-recovery/specs/database-initialization/.pi-map.index.md ## role -Defines software requirements for automatic database initialization, connection resilience, seed data management, and startup error messaging using Gherkin-style scenarios. +Defines requirements for robust database initialization and connection handling during application startup. ## files -- spec.md | Defines software requirements for automatic database initialization, connection resilience, seed data management, and startup error messaging using Gherkin-style scenarios. +- spec.md | Specifies requirements for automatic database initialization, connection resilience, seed data management, and startup error messaging for an application. ## arch -Behavior-driven specification using Gherkin syntax (Given/When/Then) to define executable requirements for database lifecycle management. +Specification-driven requirements document using markdown-based technical specification pattern. ## tags -spec, defines, software, requirements, automatic, database, initialization, connection +spec, specifies, requirements, automatic, database, initialization, connection, resilience ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-18-simplify-authentik-auth/.pi-map.index.md b/openspec/changes/archive/2026-05-18-simplify-authentik-auth/.pi-map.index.md index 68ce718..52612f9 100644 --- a/openspec/changes/archive/2026-05-18-simplify-authentik-auth/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-18-simplify-authentik-auth/.pi-map.index.md @@ -1,23 +1,23 @@ -# 2026-05-18-simplify-authentik-auth (index) -dir: 2026-05-18-simplify-authentik-auth +# openspec/changes/archive/2026-05-18-simplify-authentik-auth (index) +dir: openspec/changes/archive/2026-05-18-simplify-authentik-auth ## role -Authentication system migration package for replacing JWT/OIDC token-based auth with session-based cookies using Authentik OAuth2. +Archive of a 2026 proposal to simplify authentication by migrating from JWT/OIDC to session-cookie-based OAuth2 with Authentik ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2026-05-18-simplify-authentik-auth/specs - index: 2026-05-18-simplify-authentik-auth/specs/.pi-map.index.md - map: 2026-05-18-simplify-authentik-auth/specs/.pi-map.md +- openspec/changes/archive/2026-05-18-simplify-authentik-auth/specs + index: openspec/changes/archive/2026-05-18-simplify-authentik-auth/specs/.pi-map.index.md + map: openspec/changes/archive/2026-05-18-simplify-authentik-auth/specs/.pi-map.md ## files - .openspec.yaml - design.md - proposal.md - tasks.md ## links -index: 2026-05-18-simplify-authentik-auth/.pi-map.index.md -map: 2026-05-18-simplify-authentik-auth/.pi-map.md +index: openspec/changes/archive/2026-05-18-simplify-authentik-auth/.pi-map.index.md +map: openspec/changes/archive/2026-05-18-simplify-authentik-auth/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-18-simplify-authentik-auth/.pi-map.md b/openspec/changes/archive/2026-05-18-simplify-authentik-auth/.pi-map.md index 3ced602..54c6732 100644 --- a/openspec/changes/archive/2026-05-18-simplify-authentik-auth/.pi-map.md +++ b/openspec/changes/archive/2026-05-18-simplify-authentik-auth/.pi-map.md @@ -1,19 +1,19 @@ -# 2026-05-18-simplify-authentik-auth -dir: 2026-05-18-simplify-authentik-auth +# openspec/changes/archive/2026-05-18-simplify-authentik-auth +dir: openspec/changes/archive/2026-05-18-simplify-authentik-auth -index: 2026-05-18-simplify-authentik-auth/.pi-map.index.md +index: openspec/changes/archive/2026-05-18-simplify-authentik-auth/.pi-map.index.md ## role -Authentication system migration package for replacing JWT/OIDC token-based auth with session-based cookies using Authentik OAuth2. +Archive of a 2026 proposal to simplify authentication by migrating from JWT/OIDC to session-cookie-based OAuth2 with Authentik ## files -- .openspec.yaml | Defines an OpenSpec configuration file with schema type and creation date metadata -- design.md | Design document for migrating a backend authentication system from JWT tokens to session cookies with OAuth2/Authentik integration | dep: Authentik (OAuth2), Redis (optional), backend database, frontend -- proposal.md | Proposes simplifying an Authentik-based authentication system by replacing JWT/token-based auth with session-based cookies | dep: Authentik, OAuth2, session cookies, database user model, frontend auth state -- tasks.md | Project task list for migrating an application from JWT/OIDC authentication to session-based authentication using Authentik | dep: Authentik, Alembic, python-jose, ruff, mypy, pytest +- .openspec.yaml | Defines an OpenAPI specification metadata file with schema type and creation date +- design.md | Design document for migrating from JWT-based authentication to simplified session-cookie-based OAuth2 authentication with Authentik | dep: Authentik (OAuth2), Backend session store, Redis (optional), Database (users, user_configs) +- proposal.md | Proposes replacing a complex JWT/OIDC authentication system with a simplified session-based OAuth2 flow using Authentik | dep: Authentik, OAuth2, session cookies, HTTP cookies, JWKS +- tasks.md | Project task list for migrating an application from JWT-based authentication to session-based authentication using Authentik ## arch -Documentation-driven migration planning with specification files (OpenSpec), design documents, proposals, and task tracking—no implementation code, purely planning artifacts for a backend auth architecture change. +Specification-driven change management using OpenAPI metadata with structured design documents (design/proposal/tasks) for architectural decision records ## tags -authentik, authentication, design, jwt, session, .openspec, migrating, system +authentication, authentik, design, jwt, session, oauth2, .openspec, migrating ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-18-simplify-authentik-auth/specs/.pi-map.index.md b/openspec/changes/archive/2026-05-18-simplify-authentik-auth/specs/.pi-map.index.md index 924163c..cdd46e8 100644 --- a/openspec/changes/archive/2026-05-18-simplify-authentik-auth/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-18-simplify-authentik-auth/specs/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-18-simplify-authentik-auth/specs (index) -dir: 2026-05-18-simplify-authentik-auth/specs +# openspec/changes/archive/2026-05-18-simplify-authentik-auth/specs (index) +dir: openspec/changes/archive/2026-05-18-simplify-authentik-auth/specs ## role -Defines technical specifications for a simplified OAuth2 authentication system using Authentik with stateless signed session cookies +Defines authentication specification for a simplified OAuth2 integration with Authentik using stateless signed session cookies ## parent -index: 2026-05-18-simplify-authentik-auth/.pi-map.index.md -map: 2026-05-18-simplify-authentik-auth/.pi-map.md +index: openspec/changes/archive/2026-05-18-simplify-authentik-auth/.pi-map.index.md +map: openspec/changes/archive/2026-05-18-simplify-authentik-auth/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-18-simplify-authentik-auth/specs/.pi-map.index.md -map: 2026-05-18-simplify-authentik-auth/specs/.pi-map.md +index: openspec/changes/archive/2026-05-18-simplify-authentik-auth/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-18-simplify-authentik-auth/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-18-simplify-authentik-auth/specs/.pi-map.md b/openspec/changes/archive/2026-05-18-simplify-authentik-auth/specs/.pi-map.md index e514d13..d12c9ba 100644 --- a/openspec/changes/archive/2026-05-18-simplify-authentik-auth/specs/.pi-map.md +++ b/openspec/changes/archive/2026-05-18-simplify-authentik-auth/specs/.pi-map.md @@ -1,14 +1,14 @@ -# 2026-05-18-simplify-authentik-auth/specs -dir: 2026-05-18-simplify-authentik-auth/specs +# openspec/changes/archive/2026-05-18-simplify-authentik-auth/specs +dir: openspec/changes/archive/2026-05-18-simplify-authentik-auth/specs -index: 2026-05-18-simplify-authentik-auth/specs/.pi-map.index.md +index: openspec/changes/archive/2026-05-18-simplify-authentik-auth/specs/.pi-map.index.md ## role -Defines technical specifications for a simplified OAuth2 authentication system using Authentik with stateless signed session cookies +Defines authentication specification for a simplified OAuth2 integration with Authentik using stateless signed session cookies ## files -- spec.md | Defines a simplified OAuth2 authentication flow using Authentik with stateless signed session cookies | dep: Authentik, HMAC-SHA256, OAuth2 +- spec.md | Defines a simplified OAuth2 authentication flow using Authentik with stateless signed session cookies | dep: OAuth2, Authentik, HMAC-SHA256, session cookies ## arch -Specification-driven design using markdown documentation to define authentication flow requirements before implementation +Specification-driven design using markdown-based technical specification documents ## tags oauth2, authentik, spec, defines, simplified, authentication, flow, stateless ## symbols diff --git a/openspec/changes/archive/2026-05-19-api-documentation/.openspec/.pi-map.index.md b/openspec/changes/archive/2026-05-19-api-documentation/.openspec/.pi-map.index.md index 341570a..77df959 100644 --- a/openspec/changes/archive/2026-05-19-api-documentation/.openspec/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-19-api-documentation/.openspec/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-19-api-documentation/.openspec (index) -dir: 2026-05-19-api-documentation/.openspec +# openspec/changes/archive/2026-05-19-api-documentation/.openspec (index) +dir: openspec/changes/archive/2026-05-19-api-documentation/.openspec ## role -Defines the OpenAPI specification configuration schema for generating API documentation +Defines configuration metadata for an archived API documentation specification snapshot ## parent -index: 2026-05-19-api-documentation/.pi-map.index.md -map: 2026-05-19-api-documentation/.pi-map.md +index: openspec/changes/archive/2026-05-19-api-documentation/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-api-documentation/.pi-map.md ## children - ## files - config.yaml ## links -index: 2026-05-19-api-documentation/.openspec/.pi-map.index.md -map: 2026-05-19-api-documentation/.openspec/.pi-map.md +index: openspec/changes/archive/2026-05-19-api-documentation/.openspec/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-api-documentation/.openspec/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-19-api-documentation/.openspec/.pi-map.md b/openspec/changes/archive/2026-05-19-api-documentation/.openspec/.pi-map.md index 9f51fa3..7f8c6e7 100644 --- a/openspec/changes/archive/2026-05-19-api-documentation/.openspec/.pi-map.md +++ b/openspec/changes/archive/2026-05-19-api-documentation/.openspec/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-19-api-documentation/.openspec -dir: 2026-05-19-api-documentation/.openspec +# openspec/changes/archive/2026-05-19-api-documentation/.openspec +dir: openspec/changes/archive/2026-05-19-api-documentation/.openspec -index: 2026-05-19-api-documentation/.openspec/.pi-map.index.md +index: openspec/changes/archive/2026-05-19-api-documentation/.openspec/.pi-map.index.md ## role -Defines the OpenAPI specification configuration schema for generating API documentation +Defines configuration metadata for an archived API documentation specification snapshot ## files -- config.yaml | Defines a configuration file specifying a schema-driven API documentation specification +- config.yaml | Defines a basic configuration file specifying a schema type and name for API documentation ## arch -Schema-driven configuration using YAML to specify API documentation generation parameters and metadata +Simple declarative configuration using YAML key-value pairs for schema identification ## tags -config, defines, configuration, specifying, schema, driven, api, documentation +config, defines, basic, configuration, specifying, schema, type, name ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-19-api-documentation/.pi-map.index.md b/openspec/changes/archive/2026-05-19-api-documentation/.pi-map.index.md index c0610fb..e2a4dde 100644 --- a/openspec/changes/archive/2026-05-19-api-documentation/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-19-api-documentation/.pi-map.index.md @@ -1,25 +1,25 @@ -# 2026-05-19-api-documentation (index) -dir: 2026-05-19-api-documentation +# openspec/changes/archive/2026-05-19-api-documentation (index) +dir: openspec/changes/archive/2026-05-19-api-documentation ## role -Planning and design documents for improving API documentation in a FastAPI-based application. +Archive directory preserving historical API documentation improvement proposals and their implementation tracking for a FastAPI project. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2026-05-19-api-documentation/.openspec - index: 2026-05-19-api-documentation/.openspec/.pi-map.index.md - map: 2026-05-19-api-documentation/.openspec/.pi-map.md -- 2026-05-19-api-documentation/specs - index: 2026-05-19-api-documentation/specs/.pi-map.index.md - map: 2026-05-19-api-documentation/specs/.pi-map.md +- openspec/changes/archive/2026-05-19-api-documentation/.openspec + index: openspec/changes/archive/2026-05-19-api-documentation/.openspec/.pi-map.index.md + map: openspec/changes/archive/2026-05-19-api-documentation/.openspec/.pi-map.md +- openspec/changes/archive/2026-05-19-api-documentation/specs + index: openspec/changes/archive/2026-05-19-api-documentation/specs/.pi-map.index.md + map: openspec/changes/archive/2026-05-19-api-documentation/specs/.pi-map.md ## files - design.md - proposal.md - tasks.md ## links -index: 2026-05-19-api-documentation/.pi-map.index.md -map: 2026-05-19-api-documentation/.pi-map.md +index: openspec/changes/archive/2026-05-19-api-documentation/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-api-documentation/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-19-api-documentation/.pi-map.md b/openspec/changes/archive/2026-05-19-api-documentation/.pi-map.md index 7332a98..b991cf1 100644 --- a/openspec/changes/archive/2026-05-19-api-documentation/.pi-map.md +++ b/openspec/changes/archive/2026-05-19-api-documentation/.pi-map.md @@ -1,18 +1,18 @@ -# 2026-05-19-api-documentation -dir: 2026-05-19-api-documentation +# openspec/changes/archive/2026-05-19-api-documentation +dir: openspec/changes/archive/2026-05-19-api-documentation -index: 2026-05-19-api-documentation/.pi-map.index.md +index: openspec/changes/archive/2026-05-19-api-documentation/.pi-map.index.md ## role -Planning and design documents for improving API documentation in a FastAPI-based application. +Archive directory preserving historical API documentation improvement proposals and their implementation tracking for a FastAPI project. ## files -- design.md | Design document outlining API documentation structure, health endpoints, and OpenAPI enhancements for a FastAPI-based application | dep: FastAPI, Pydantic v2, psutil, SQLAlchemy, PostgreSQL, Docker -- proposal.md | Proposes a comprehensive API documentation improvement plan for a FastAPI-based project | dep: FastAPI, OpenAPI/Swagger, ReDoc, Pydantic, apps/api/README.md, docs/architecture/decisions/ -- tasks.md | Project task tracking document for API documentation improvements across health endpoints, endpoint documentation, model documentation, README creation, architecture decisions, and quality gates +- design.md | Design document outlining API documentation structure, health endpoints, and architecture decisions for a FastAPI-based application | dep: FastAPI, Pydantic, psutil, SQLAlchemy, PostgreSQL, Docker, OpenAPI/Swagger +- proposal.md | Proposes a plan to add comprehensive API documentation, health monitoring, and developer onboarding materials to a FastAPI-based project. | dep: FastAPI, OpenAPI/Swagger, Pydantic, ADR +- tasks.md | Tracks completed API documentation tasks across health endpoints, endpoint documentation, model documentation, README creation, architecture decisions, and quality verification for a FastAPI-based project. ## arch -Documentation-driven development with structured markdown specifications covering OpenAPI enhancements, health endpoint standards, and phased task tracking for documentation quality gates. +Document-driven change management using sequential design-proposal-tasks workflow with markdown-based specification and progress tracking. ## tags -documentation, api, fastapi, design, document, health, endpoints, openapi +documentation, fastapi, design, api, health, tasks, endpoints, architecture ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-19-api-documentation/specs/.pi-map.index.md b/openspec/changes/archive/2026-05-19-api-documentation/specs/.pi-map.index.md index 342f71c..9ffdb69 100644 --- a/openspec/changes/archive/2026-05-19-api-documentation/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-19-api-documentation/specs/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-19-api-documentation/specs (index) -dir: 2026-05-19-api-documentation/specs +# openspec/changes/archive/2026-05-19-api-documentation/specs (index) +dir: openspec/changes/archive/2026-05-19-api-documentation/specs ## role -Defines API documentation requirements, health endpoint specifications, and documentation standards for a FastAPI-based project +Defines API documentation requirements and specifications for health endpoints, auto-generated docs, and developer onboarding materials for a FastAPI-based service ## parent -index: 2026-05-19-api-documentation/.pi-map.index.md -map: 2026-05-19-api-documentation/.pi-map.md +index: openspec/changes/archive/2026-05-19-api-documentation/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-api-documentation/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-19-api-documentation/specs/.pi-map.index.md -map: 2026-05-19-api-documentation/specs/.pi-map.md +index: openspec/changes/archive/2026-05-19-api-documentation/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-api-documentation/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-19-api-documentation/specs/.pi-map.md b/openspec/changes/archive/2026-05-19-api-documentation/specs/.pi-map.md index c5d9602..3639c53 100644 --- a/openspec/changes/archive/2026-05-19-api-documentation/specs/.pi-map.md +++ b/openspec/changes/archive/2026-05-19-api-documentation/specs/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-19-api-documentation/specs -dir: 2026-05-19-api-documentation/specs +# openspec/changes/archive/2026-05-19-api-documentation/specs +dir: openspec/changes/archive/2026-05-19-api-documentation/specs -index: 2026-05-19-api-documentation/specs/.pi-map.index.md +index: openspec/changes/archive/2026-05-19-api-documentation/specs/.pi-map.index.md ## role -Defines API documentation requirements, health endpoint specifications, and documentation standards for a FastAPI-based project +Defines API documentation requirements and specifications for health endpoints, auto-generated docs, and developer onboarding materials for a FastAPI-based service ## files -- spec.md | Defines API documentation requirements, health endpoint specifications, and documentation standards for a FastAPI-based project | dep: FastAPI, OpenAPI, Pydantic, Swagger UI, ReDoc +- spec.md | Defines API documentation requirements and specifications for health endpoints, auto-generated docs, and developer onboarding materials for a FastAPI-based service | dep: FastAPI, Pydantic, OpenAPI/Swagger, ReDoc ## arch -Specification-driven documentation approach using markdown-based standards for API contract definition and health check endpoint design +Specification-driven documentation architecture using Markdown-based API specs with FastAPI auto-generation patterns for health endpoints and developer onboarding materials ## tags -documentation, fastapi, spec, defines, api, requirements, health, endpoint +fastapi, spec, defines, api, documentation, requirements, specifications, health ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-19-documentation-overhaul/.pi-map.index.md b/openspec/changes/archive/2026-05-19-documentation-overhaul/.pi-map.index.md index 3c0213a..6fc938a 100644 --- a/openspec/changes/archive/2026-05-19-documentation-overhaul/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-19-documentation-overhaul/.pi-map.index.md @@ -1,23 +1,23 @@ -# 2026-05-19-documentation-overhaul (index) -dir: 2026-05-19-documentation-overhaul +# openspec/changes/archive/2026-05-19-documentation-overhaul (index) +dir: openspec/changes/archive/2026-05-19-documentation-overhaul ## role -Planning and tracking documents for a comprehensive documentation overhaul initiative scheduled for 2026-05-19. +Archive directory preserving historical planning artifacts for a 2026 documentation restructuring initiative ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2026-05-19-documentation-overhaul/specs - index: 2026-05-19-documentation-overhaul/specs/.pi-map.index.md - map: 2026-05-19-documentation-overhaul/specs/.pi-map.md +- openspec/changes/archive/2026-05-19-documentation-overhaul/specs + index: openspec/changes/archive/2026-05-19-documentation-overhaul/specs/.pi-map.index.md + map: openspec/changes/archive/2026-05-19-documentation-overhaul/specs/.pi-map.md ## files - .openspec.yaml - design.md - proposal.md - tasks.md ## links -index: 2026-05-19-documentation-overhaul/.pi-map.index.md -map: 2026-05-19-documentation-overhaul/.pi-map.md +index: openspec/changes/archive/2026-05-19-documentation-overhaul/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-documentation-overhaul/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-19-documentation-overhaul/.pi-map.md b/openspec/changes/archive/2026-05-19-documentation-overhaul/.pi-map.md index 66143c0..807304a 100644 --- a/openspec/changes/archive/2026-05-19-documentation-overhaul/.pi-map.md +++ b/openspec/changes/archive/2026-05-19-documentation-overhaul/.pi-map.md @@ -1,19 +1,19 @@ -# 2026-05-19-documentation-overhaul -dir: 2026-05-19-documentation-overhaul +# openspec/changes/archive/2026-05-19-documentation-overhaul +dir: openspec/changes/archive/2026-05-19-documentation-overhaul -index: 2026-05-19-documentation-overhaul/.pi-map.index.md +index: openspec/changes/archive/2026-05-19-documentation-overhaul/.pi-map.index.md ## role -Planning and tracking documents for a comprehensive documentation overhaul initiative scheduled for 2026-05-19. +Archive directory preserving historical planning artifacts for a 2026 documentation restructuring initiative ## files - .openspec.yaml | Defines an OpenSpec configuration file with schema type and creation date metadata -- design.md | Defines the structure, templates, and process for overhauling a project's documentation system -- proposal.md | Proposes a comprehensive documentation overhaul for a software project to address gaps in README, feature docs, API docs, deployment guides, and architecture documentation. -- tasks.md | Task tracking document for a comprehensive documentation overhaul project spanning README rewrite, documentation structure creation, feature/API/architecture documentation, deployment/development guides, and finalization +- design.md | Design specification for overhauling and restructuring a software project's documentation system | dep: Markdown, Mermaid, FastAPI, GitHub Pages, Docker, Traefik, Authentik, OpenSpec +- proposal.md | Proposes a comprehensive documentation overhaul for a software project to address gaps in README, feature docs, API docs, deployment guides, architecture docs, and user guides +- tasks.md | A phased task list for overhauling and creating comprehensive documentation for a software project ## arch -Standard project management structure using OpenSpec configuration, design specification, formal proposal, and task breakdown documents. +Flat timestamped archive using date-prefixed naming with structured planning documents (design spec, proposal, task breakdown) in Markdown, governed by an OpenSpec metadata file ## tags -documentation, project, defines, creation, .openspec, structure, design, comprehensive +design, software, project, documentation, docs, openspec, .openspec, overhauling ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-19-documentation-overhaul/specs/.pi-map.index.md b/openspec/changes/archive/2026-05-19-documentation-overhaul/specs/.pi-map.index.md index 6ac0fcd..0e27e81 100644 --- a/openspec/changes/archive/2026-05-19-documentation-overhaul/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-19-documentation-overhaul/specs/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-19-documentation-overhaul/specs (index) -dir: 2026-05-19-documentation-overhaul/specs +# openspec/changes/archive/2026-05-19-documentation-overhaul/specs (index) +dir: openspec/changes/archive/2026-05-19-documentation-overhaul/specs ## role -Defines requirements and standards for a documentation overhaul of a project management/Git repository web application. +Defines requirements, templates, and processes for a comprehensive documentation overhaul of a software project ## parent -index: 2026-05-19-documentation-overhaul/.pi-map.index.md -map: 2026-05-19-documentation-overhaul/.pi-map.md +index: openspec/changes/archive/2026-05-19-documentation-overhaul/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-documentation-overhaul/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-19-documentation-overhaul/specs/.pi-map.index.md -map: 2026-05-19-documentation-overhaul/specs/.pi-map.md +index: openspec/changes/archive/2026-05-19-documentation-overhaul/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-documentation-overhaul/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-19-documentation-overhaul/specs/.pi-map.md b/openspec/changes/archive/2026-05-19-documentation-overhaul/specs/.pi-map.md index 3acc69f..6b5e180 100644 --- a/openspec/changes/archive/2026-05-19-documentation-overhaul/specs/.pi-map.md +++ b/openspec/changes/archive/2026-05-19-documentation-overhaul/specs/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-19-documentation-overhaul/specs -dir: 2026-05-19-documentation-overhaul/specs +# openspec/changes/archive/2026-05-19-documentation-overhaul/specs +dir: openspec/changes/archive/2026-05-19-documentation-overhaul/specs -index: 2026-05-19-documentation-overhaul/specs/.pi-map.index.md +index: openspec/changes/archive/2026-05-19-documentation-overhaul/specs/.pi-map.index.md ## role -Defines requirements and standards for a documentation overhaul of a project management/Git repository web application. +Defines requirements, templates, and processes for a comprehensive documentation overhaul of a software project ## files -- spec.md | Specification document outlining requirements, templates, and processes for a comprehensive documentation overhaul of a project management/Git repository web application +- spec.md | Specifies requirements, templates, and processes for a comprehensive documentation overhaul of a software project ## arch -Specification-driven documentation framework using structured templates, process workflows, and hierarchical requirement organization. +Specification-driven documentation standardization using markdown-based requirement definitions and process templates ## tags -spec, specification, document, outlining, requirements, templates, processes, comprehensive +spec, specifies, requirements, templates, processes, comprehensive, documentation, overhaul ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-19-file-editor/.pi-map.index.md b/openspec/changes/archive/2026-05-19-file-editor/.pi-map.index.md index 42c5e42..342b9c6 100644 --- a/openspec/changes/archive/2026-05-19-file-editor/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-19-file-editor/.pi-map.index.md @@ -1,23 +1,23 @@ -# 2026-05-19-file-editor (index) -dir: 2026-05-19-file-editor +# openspec/changes/archive/2026-05-19-file-editor (index) +dir: openspec/changes/archive/2026-05-19-file-editor ## role -Design and planning documentation for a next-generation file editor component with view/edit modes, syntax highlighting, and git integration +Contains archived specification documents for a file editor feature implementation in an OpenSpec project workspace ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2026-05-19-file-editor/specs - index: 2026-05-19-file-editor/specs/.pi-map.index.md - map: 2026-05-19-file-editor/specs/.pi-map.md +- openspec/changes/archive/2026-05-19-file-editor/specs + index: openspec/changes/archive/2026-05-19-file-editor/specs/.pi-map.index.md + map: openspec/changes/archive/2026-05-19-file-editor/specs/.pi-map.md ## files - .openspec.yaml - design.md - proposal.md - tasks.md ## links -index: 2026-05-19-file-editor/.pi-map.index.md -map: 2026-05-19-file-editor/.pi-map.md +index: openspec/changes/archive/2026-05-19-file-editor/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-file-editor/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-19-file-editor/.pi-map.md b/openspec/changes/archive/2026-05-19-file-editor/.pi-map.md index b055e14..3afb2e9 100644 --- a/openspec/changes/archive/2026-05-19-file-editor/.pi-map.md +++ b/openspec/changes/archive/2026-05-19-file-editor/.pi-map.md @@ -1,19 +1,19 @@ -# 2026-05-19-file-editor -dir: 2026-05-19-file-editor +# openspec/changes/archive/2026-05-19-file-editor +dir: openspec/changes/archive/2026-05-19-file-editor -index: 2026-05-19-file-editor/.pi-map.index.md +index: openspec/changes/archive/2026-05-19-file-editor/.pi-map.index.md ## role -Design and planning documentation for a next-generation file editor component with view/edit modes, syntax highlighting, and git integration +Contains archived specification documents for a file editor feature implementation in an OpenSpec project workspace ## files - .openspec.yaml | Defines an OpenSpec configuration file with schema type and creation date metadata -- design.md | Design specification for a file editor component that replaces FileViewer with view/edit modes, syntax highlighting, and git commit integration | dep: react-simple-code-editor, prismjs, existing API endpoints (GET/POST /projects/{id}/repositories/{id}/files/content) -- proposal.md | Design proposal for adding syntax highlighting and in-browser editing capabilities to a repository file viewer with Git commit integration | dep: react-simple-code-editor, Prism.js, existing PUT /files/content API endpoint -- tasks.md | Project task list tracking implementation phases for a file editor component with syntax highlighting, editing, and commit capabilities | dep: react-simple-code-editor, prismjs, @types/prismjs, TypeScript, ESLint, ruff, mypy +- design.md | Design document for a React-based file editor component with view/edit modes, syntax highlighting, and Git commit integration | dep: react-simple-code-editor, prismjs, CSS variables/theme system, Git repository API +- proposal.md | Proposes a file editor feature with syntax highlighting and editing capabilities for a repository workspace | dep: react-simple-code-editor, Prism.js, existing PUT /files/content API endpoint +- tasks.md | Project task checklist tracking implementation of a file editor component with syntax highlighting, editing, and commit capabilities | dep: react-simple-code-editor, prismjs, @types/prismjs, React, TypeScript, ESLint, ruff, mypy ## arch -Specification-driven development using OpenSpec schema definitions, phased milestone tracking, and iterative design documentation (design doc → proposal → task breakdown) +Documentation-driven specification pattern with design/proposal/task separation, using YAML metadata for schema versioning and Markdown for structured technical documentation ## tags -editor, design, syntax, highlighting, commit, react, simple, code +editor, react, design, syntax, highlighting, simple, code, prismjs ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-19-file-editor/specs/.pi-map.index.md b/openspec/changes/archive/2026-05-19-file-editor/specs/.pi-map.index.md index fde39ea..2eaff9d 100644 --- a/openspec/changes/archive/2026-05-19-file-editor/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-19-file-editor/specs/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-19-file-editor/specs (index) -dir: 2026-05-19-file-editor/specs +# openspec/changes/archive/2026-05-19-file-editor/specs (index) +dir: openspec/changes/archive/2026-05-19-file-editor/specs ## role -Defines technical specifications and requirements for a web-based file editor with syntax highlighting and git integration. +Defines technical specifications for a web-based file editor component with syntax highlighting, view/edit modes, and Git commit integration ## parent -index: 2026-05-19-file-editor/.pi-map.index.md -map: 2026-05-19-file-editor/.pi-map.md +index: openspec/changes/archive/2026-05-19-file-editor/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-file-editor/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-19-file-editor/specs/.pi-map.index.md -map: 2026-05-19-file-editor/specs/.pi-map.md +index: openspec/changes/archive/2026-05-19-file-editor/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-file-editor/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-19-file-editor/specs/.pi-map.md b/openspec/changes/archive/2026-05-19-file-editor/specs/.pi-map.md index e0fca77..cdeca29 100644 --- a/openspec/changes/archive/2026-05-19-file-editor/specs/.pi-map.md +++ b/openspec/changes/archive/2026-05-19-file-editor/specs/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-19-file-editor/specs -dir: 2026-05-19-file-editor/specs +# openspec/changes/archive/2026-05-19-file-editor/specs +dir: openspec/changes/archive/2026-05-19-file-editor/specs -index: 2026-05-19-file-editor/specs/.pi-map.index.md +index: openspec/changes/archive/2026-05-19-file-editor/specs/.pi-map.index.md ## role -Defines technical specifications and requirements for a web-based file editor with syntax highlighting and git integration. +Defines technical specifications for a web-based file editor component with syntax highlighting, view/edit modes, and Git commit integration ## files -- spec.md | Specifies requirements, API contracts, component interfaces, and testing strategy for a web-based file editor with syntax highlighting and git commit integration | dep: Prism.js, React/TypeScript (implied by interfaces), REST API endpoints, URL routing +- spec.md | Defines technical specifications for a web-based file editor component with syntax highlighting, view/edit modes, and Git commit integration | dep: Prism.js, React/TypeScript (implied), REST API backend, URL routing/state management ## arch -Specification-driven design using requirements documentation, API contracts, and interface definitions to guide implementation. +Specification-driven design with feature-based modularization, separating view and edit modes, and integrating with Git workflows for version control operations ## tags -spec, specifies, requirements, api, contracts, component, interfaces, testing +spec, defines, technical, specifications, web, editor, component, syntax ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-19-git-control/.pi-map.index.md b/openspec/changes/archive/2026-05-19-git-control/.pi-map.index.md index 2914356..13f4baa 100644 --- a/openspec/changes/archive/2026-05-19-git-control/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-19-git-control/.pi-map.index.md @@ -1,23 +1,23 @@ -# 2026-05-19-git-control (index) -dir: 2026-05-19-git-control +# openspec/changes/archive/2026-05-19-git-control (index) +dir: openspec/changes/archive/2026-05-19-git-control ## role -Defines specifications and planning documents for implementing Git version control capabilities in a browser-based repository management interface. +Defines a full-stack Git version control feature specification for integrating repository read/write operations into a project workspace UI. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2026-05-19-git-control/specs - index: 2026-05-19-git-control/specs/.pi-map.index.md - map: 2026-05-19-git-control/specs/.pi-map.md +- openspec/changes/archive/2026-05-19-git-control/specs + index: openspec/changes/archive/2026-05-19-git-control/specs/.pi-map.index.md + map: openspec/changes/archive/2026-05-19-git-control/specs/.pi-map.md ## files - .openspec.yaml - design.md - proposal.md - tasks.md ## links -index: 2026-05-19-git-control/.pi-map.index.md -map: 2026-05-19-git-control/.pi-map.md +index: openspec/changes/archive/2026-05-19-git-control/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-git-control/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-19-git-control/.pi-map.md b/openspec/changes/archive/2026-05-19-git-control/.pi-map.md index 5b1751c..3677973 100644 --- a/openspec/changes/archive/2026-05-19-git-control/.pi-map.md +++ b/openspec/changes/archive/2026-05-19-git-control/.pi-map.md @@ -1,19 +1,19 @@ -# 2026-05-19-git-control -dir: 2026-05-19-git-control +# openspec/changes/archive/2026-05-19-git-control +dir: openspec/changes/archive/2026-05-19-git-control -index: 2026-05-19-git-control/.pi-map.index.md +index: openspec/changes/archive/2026-05-19-git-control/.pi-map.index.md ## role -Defines specifications and planning documents for implementing Git version control capabilities in a browser-based repository management interface. +Defines a full-stack Git version control feature specification for integrating repository read/write operations into a project workspace UI. ## files - .openspec.yaml | Defines an OpenSpec configuration file with schema type and creation date metadata -- design.md | Design specification for a Git-based repository management UI with backend API and frontend workspace components | dep: Git, React/TypeScript, REST API, file tree UI components, dialog/modal system -- proposal.md | Proposes adding git control capabilities (branch management, commit, push/pull, merge) to a browser-based repository workspace that currently only provides read-only access | dep: git, repository workspace, file viewer, branch selector, toolbar -- tasks.md | Project task tracking document outlining implementation phases for a Git version control feature in a full-stack application | dep: GitPython, FastAPI, React/Vue frontend, pytest, ruff, mypy +- design.md | Design specification for a Git version control UI integrated into a project workspace with backend API endpoints and frontend components | dep: Git, React/TypeScript, REST API, file system utilities, authentication system +- proposal.md | Proposes adding git write/remote operations to a repository workspace interface +- tasks.md | Project task tracking document for implementing a full-stack Git control feature with backend utilities, REST API endpoints, and frontend UI components | dep: git, python, fastapi/react (implied), ruff, mypy, pytest ## arch -Documentation-driven specification pattern using OpenSpec schema configuration, phased task tracking, and separation of concerns between design specification (backend API + frontend workspace) and feature proposal (read-only to full read/write Git operations). +Specification-driven development using OpenSpec schema metadata, with layered design documents (proposal → design → tasks) separating backend REST API endpoints from frontend React components, and task-driven implementation tracking across Go backend utilities and TypeScript/React frontend. ## tags -git, design, .openspec, repository, management, workspace, react, control +git, design, .openspec, control, project, workspace, backend, api ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-19-git-control/specs/.pi-map.index.md b/openspec/changes/archive/2026-05-19-git-control/specs/.pi-map.index.md index a1a4fba..004bbfd 100644 --- a/openspec/changes/archive/2026-05-19-git-control/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-19-git-control/specs/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-19-git-control/specs (index) -dir: 2026-05-19-git-control/specs +# openspec/changes/archive/2026-05-19-git-control/specs (index) +dir: openspec/changes/archive/2026-05-19-git-control/specs ## role -Defines the API contract and UI specification for a Git version control interface that enables branch management, commits, remote sync, and merge operations. +Defines REST API and frontend specifications for a Git version control interface with branch management, commit operations, remote sync, and merge capabilities ## parent -index: 2026-05-19-git-control/.pi-map.index.md -map: 2026-05-19-git-control/.pi-map.md +index: openspec/changes/archive/2026-05-19-git-control/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-git-control/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-19-git-control/specs/.pi-map.index.md -map: 2026-05-19-git-control/specs/.pi-map.md +index: openspec/changes/archive/2026-05-19-git-control/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-git-control/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-19-git-control/specs/.pi-map.md b/openspec/changes/archive/2026-05-19-git-control/specs/.pi-map.md index 28b3523..082e7a3 100644 --- a/openspec/changes/archive/2026-05-19-git-control/specs/.pi-map.md +++ b/openspec/changes/archive/2026-05-19-git-control/specs/.pi-map.md @@ -1,14 +1,14 @@ -# 2026-05-19-git-control/specs -dir: 2026-05-19-git-control/specs +# openspec/changes/archive/2026-05-19-git-control/specs +dir: openspec/changes/archive/2026-05-19-git-control/specs -index: 2026-05-19-git-control/specs/.pi-map.index.md +index: openspec/changes/archive/2026-05-19-git-control/specs/.pi-map.index.md ## role -Defines the API contract and UI specification for a Git version control interface that enables branch management, commits, remote sync, and merge operations. +Defines REST API and frontend specifications for a Git version control interface with branch management, commit operations, remote sync, and merge capabilities ## files -- spec.md | Defines a REST API and frontend specification for a Git version control interface enabling branch management, commits, remote sync, and merge operations +- spec.md | Defines a REST API and frontend specification for a Git version control interface with branch management, commit operations, remote sync, and merge capabilities ## arch -Specification-driven design using REST API documentation paired with frontend requirements, establishing clear interfaces between backend services and client implementation. +Specification-driven design using Markdown-based API documentation with clear endpoint definitions, request/response schemas, and frontend UI component requirements ## tags spec, defines, rest, api, frontend, specification, git, version ## symbols diff --git a/openspec/changes/archive/2026-05-19-git-history-visualization/.pi-map.index.md b/openspec/changes/archive/2026-05-19-git-history-visualization/.pi-map.index.md index 90a0e23..406baa5 100644 --- a/openspec/changes/archive/2026-05-19-git-history-visualization/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-19-git-history-visualization/.pi-map.index.md @@ -1,23 +1,23 @@ -# 2026-05-19-git-history-visualization (index) -dir: 2026-05-19-git-history-visualization +# openspec/changes/archive/2026-05-19-git-history-visualization (index) +dir: openspec/changes/archive/2026-05-19-git-history-visualization ## role -Design and planning package for an interactive Git history visualization web application feature +Product specification and design documents for a planned Git history visualization feature, archived as historical project planning artifacts. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2026-05-19-git-history-visualization/specs - index: 2026-05-19-git-history-visualization/specs/.pi-map.index.md - map: 2026-05-19-git-history-visualization/specs/.pi-map.md +- openspec/changes/archive/2026-05-19-git-history-visualization/specs + index: openspec/changes/archive/2026-05-19-git-history-visualization/specs/.pi-map.index.md + map: openspec/changes/archive/2026-05-19-git-history-visualization/specs/.pi-map.md ## files - .openspec.yaml - design.md - proposal.md - tasks.md ## links -index: 2026-05-19-git-history-visualization/.pi-map.index.md -map: 2026-05-19-git-history-visualization/.pi-map.md +index: openspec/changes/archive/2026-05-19-git-history-visualization/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-git-history-visualization/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-19-git-history-visualization/.pi-map.md b/openspec/changes/archive/2026-05-19-git-history-visualization/.pi-map.md index 60edb3d..578f6cf 100644 --- a/openspec/changes/archive/2026-05-19-git-history-visualization/.pi-map.md +++ b/openspec/changes/archive/2026-05-19-git-history-visualization/.pi-map.md @@ -1,19 +1,19 @@ -# 2026-05-19-git-history-visualization -dir: 2026-05-19-git-history-visualization +# openspec/changes/archive/2026-05-19-git-history-visualization +dir: openspec/changes/archive/2026-05-19-git-history-visualization -index: 2026-05-19-git-history-visualization/.pi-map.index.md +index: openspec/changes/archive/2026-05-19-git-history-visualization/.pi-map.index.md ## role -Design and planning package for an interactive Git history visualization web application feature +Product specification and design documents for a planned Git history visualization feature, archived as historical project planning artifacts. ## files - .openspec.yaml | Defines an OpenSpec configuration file with schema type and creation date metadata -- design.md | Design document specifying architecture, API endpoints, data models, and UI layout for a Git history visualization web application | dep: Git CLI, Backend API, Frontend (SVG rendering), JSON -- proposal.md | Proposes building an interactive git history visualization tool with graph and list views for exploring commit history, branches, and diffs | dep: git CLI, React, SVG -- tasks.md | Project task checklist for building a Git history visualization feature with backend API, frontend components, page integration, and testing phases | dep: Git, Python (backend), TypeScript/JavaScript (frontend), SVG, React/Vue (implied by component structure), HTTP API, Router +- design.md | Design document for a Git history visualization web application with backend API and frontend components | dep: Git CLI, SVG rendering engine, HTTP API framework, syntax highlighting library +- proposal.md | Product proposal document for building an interactive git history visualization tool +- tasks.md | Project task tracking document for building a Git history visualization feature with backend API, frontend components, page integration, and testing phases. ## arch -Specification-driven development with markdown-based design documents, OpenSpec schema configuration, and phased task-based project management +Document-driven specification pattern using OpenSpec metadata with phased task breakdown (backend API → frontend components → integration → testing) and dual design/proposal documentation structure. ## tags -git, history, design, visualization, .openspec, api, git cli, building +design, document, git, history, visualization, proposal, .openspec, backend ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-19-git-history-visualization/specs/.pi-map.index.md b/openspec/changes/archive/2026-05-19-git-history-visualization/specs/.pi-map.index.md index db8c8fa..27475b5 100644 --- a/openspec/changes/archive/2026-05-19-git-history-visualization/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-19-git-history-visualization/specs/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-19-git-history-visualization/specs (index) -dir: 2026-05-19-git-history-visualization/specs +# openspec/changes/archive/2026-05-19-git-history-visualization/specs (index) +dir: openspec/changes/archive/2026-05-19-git-history-visualization/specs ## role -Defines technical requirements and API contract for a Git history visualization feature +Defines technical specifications for a Git history visualization feature with graph/list views, commit details, and diff display via REST API and React-like frontend components. ## parent -index: 2026-05-19-git-history-visualization/.pi-map.index.md -map: 2026-05-19-git-history-visualization/.pi-map.md +index: openspec/changes/archive/2026-05-19-git-history-visualization/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-git-history-visualization/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-19-git-history-visualization/specs/.pi-map.index.md -map: 2026-05-19-git-history-visualization/specs/.pi-map.md +index: openspec/changes/archive/2026-05-19-git-history-visualization/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-git-history-visualization/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-19-git-history-visualization/specs/.pi-map.md b/openspec/changes/archive/2026-05-19-git-history-visualization/specs/.pi-map.md index 8674fe6..de279ec 100644 --- a/openspec/changes/archive/2026-05-19-git-history-visualization/specs/.pi-map.md +++ b/openspec/changes/archive/2026-05-19-git-history-visualization/specs/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-19-git-history-visualization/specs -dir: 2026-05-19-git-history-visualization/specs +# openspec/changes/archive/2026-05-19-git-history-visualization/specs +dir: openspec/changes/archive/2026-05-19-git-history-visualization/specs -index: 2026-05-19-git-history-visualization/specs/.pi-map.index.md +index: openspec/changes/archive/2026-05-19-git-history-visualization/specs/.pi-map.index.md ## role -Defines technical requirements and API contract for a Git history visualization feature +Defines technical specifications for a Git history visualization feature with graph/list views, commit details, and diff display via REST API and React-like frontend components. ## files -- spec.md | Defines technical specifications for a Git history visualization feature with graph/list views, commit details, and REST API endpoints +- spec.md | Defines technical specifications for a Git history visualization feature with graph/list views, commit details, and diff display via REST API and React-like frontend components. | dep: Git, REST API, SVG, TypeScript, JSON ## arch -Specification-driven design using RESTful API patterns with dual-view UI (graph/list) architecture +Specification-driven architecture using REST API backend with React-like frontend components, featuring dual view modes (graph/list), hierarchical data structures for commits/branches, and modular component decomposition for rendering and interaction. ## tags -spec, defines, technical, specifications, git, history, visualization, feature +git, spec, defines, technical, specifications, history, visualization, feature ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-19-repo-workspace/.pi-map.index.md b/openspec/changes/archive/2026-05-19-repo-workspace/.pi-map.index.md index c93cf4a..a447e79 100644 --- a/openspec/changes/archive/2026-05-19-repo-workspace/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-19-repo-workspace/.pi-map.index.md @@ -1,23 +1,23 @@ -# 2026-05-19-repo-workspace (index) -dir: 2026-05-19-repo-workspace +# openspec/changes/archive/2026-05-19-repo-workspace (index) +dir: openspec/changes/archive/2026-05-19-repo-workspace ## role -Defines a repository workspace UI feature for browsing, viewing, and editing Git project files with branch navigation and syntax highlighting. +Design specification archive for a repository workspace UI feature enabling cross-repo file browsing and editing ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2026-05-19-repo-workspace/specs - index: 2026-05-19-repo-workspace/specs/.pi-map.index.md - map: 2026-05-19-repo-workspace/specs/.pi-map.md +- openspec/changes/archive/2026-05-19-repo-workspace/specs + index: openspec/changes/archive/2026-05-19-repo-workspace/specs/.pi-map.index.md + map: openspec/changes/archive/2026-05-19-repo-workspace/specs/.pi-map.md ## files - .openspec.yaml - design.md - proposal.md - tasks.md ## links -index: 2026-05-19-repo-workspace/.pi-map.index.md -map: 2026-05-19-repo-workspace/.pi-map.md +index: openspec/changes/archive/2026-05-19-repo-workspace/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-repo-workspace/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-19-repo-workspace/.pi-map.md b/openspec/changes/archive/2026-05-19-repo-workspace/.pi-map.md index d8721a7..32f9991 100644 --- a/openspec/changes/archive/2026-05-19-repo-workspace/.pi-map.md +++ b/openspec/changes/archive/2026-05-19-repo-workspace/.pi-map.md @@ -1,19 +1,19 @@ -# 2026-05-19-repo-workspace -dir: 2026-05-19-repo-workspace +# openspec/changes/archive/2026-05-19-repo-workspace +dir: openspec/changes/archive/2026-05-19-repo-workspace -index: 2026-05-19-repo-workspace/.pi-map.index.md +index: openspec/changes/archive/2026-05-19-repo-workspace/.pi-map.index.md ## role -Defines a repository workspace UI feature for browsing, viewing, and editing Git project files with branch navigation and syntax highlighting. +Design specification archive for a repository workspace UI feature enabling cross-repo file browsing and editing ## files - .openspec.yaml | Defines an OpenSpec configuration file with schema type and creation date metadata -- design.md | Design document specifying a repository workspace UI for browsing, viewing, and editing project files with repo/branch/file navigation, syntax highlighting, and quick edit capabilities. | dep: React, URL routing, REST API, syntax highlighter, virtual scrolling -- proposal.md | Proposes a repository workspace as the default project view with file browsing, branch selection, and file viewing/editing capabilities -- tasks.md | Project task tracking document outlining implementation phases for a Git repository workspace UI with file browsing, editing, and navigation features | dep: git, React/Next.js, FastAPI, prismjs, ruff, mypy, pytest +- design.md | Design document for a repository workspace UI that enables browsing, viewing, and editing files across multiple repos and branches within a project. | dep: React, URL/routing system, syntax highlighting library, git backend API +- proposal.md | Proposes a repository workspace as the default project view for browsing files, switching branches, and viewing/editing code with syntax highlighting +- tasks.md | A project task checklist documenting the implementation of a Git repository workspace UI with file browsing, editing, and navigation features across 7 phases ## arch -Documentation-driven specification with OpenSpec schema configuration, using phased task planning (design → proposal → implementation tracking) for a file-tree navigation pattern with quick-edit capabilities. +Document-driven specification pattern with phased task breakdown (7-phase implementation plan), separating design rationale (design.md), user-facing proposal (proposal.md), and executable tracking (tasks.md) under OpenSpec metadata governance ## tags -design, repository, workspace, browsing, editing, project, .openspec, document +design, repository, workspace, browsing, editing, project, .openspec, viewing ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-19-repo-workspace/specs/.pi-map.index.md b/openspec/changes/archive/2026-05-19-repo-workspace/specs/.pi-map.index.md index fbe5c27..8e24509 100644 --- a/openspec/changes/archive/2026-05-19-repo-workspace/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-19-repo-workspace/specs/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-19-repo-workspace/specs (index) -dir: 2026-05-19-repo-workspace/specs +# openspec/changes/archive/2026-05-19-repo-workspace/specs (index) +dir: openspec/changes/archive/2026-05-19-repo-workspace/specs ## role -Defines technical specifications for a repository workspace web application with file browsing, branch navigation, and quick editing capabilities +Defines specification requirements and architecture for a repository workspace browser feature enabling file viewing, branch navigation, and quick editing. ## parent -index: 2026-05-19-repo-workspace/.pi-map.index.md -map: 2026-05-19-repo-workspace/.pi-map.md +index: openspec/changes/archive/2026-05-19-repo-workspace/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-repo-workspace/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-19-repo-workspace/specs/.pi-map.index.md -map: 2026-05-19-repo-workspace/specs/.pi-map.md +index: openspec/changes/archive/2026-05-19-repo-workspace/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-repo-workspace/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-19-repo-workspace/specs/.pi-map.md b/openspec/changes/archive/2026-05-19-repo-workspace/specs/.pi-map.md index 2e14381..f7f0480 100644 --- a/openspec/changes/archive/2026-05-19-repo-workspace/specs/.pi-map.md +++ b/openspec/changes/archive/2026-05-19-repo-workspace/specs/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-19-repo-workspace/specs -dir: 2026-05-19-repo-workspace/specs +# openspec/changes/archive/2026-05-19-repo-workspace/specs +dir: openspec/changes/archive/2026-05-19-repo-workspace/specs -index: 2026-05-19-repo-workspace/specs/.pi-map.index.md +index: openspec/changes/archive/2026-05-19-repo-workspace/specs/.pi-map.index.md ## role -Defines technical specifications for a repository workspace web application with file browsing, branch navigation, and quick editing capabilities +Defines specification requirements and architecture for a repository workspace browser feature enabling file viewing, branch navigation, and quick editing. ## files -- spec.md | Defines technical specifications for a repository workspace web application with file browsing, branch navigation, and quick editing capabilities | dep: React, React Router, URLSearchParams, git backend, syntax highlighting library +- spec.md | Defines requirements, API contracts, data models, and frontend architecture for a repository workspace browser with file viewing, branch navigation, and quick editing capabilities. | dep: React, React Router (useSearchParams), TypeScript, Git backend API, syntax highlighting library ## arch -Specification-driven design using Markdown documentation as the single source of truth for requirements and system behavior +Specification-driven design with documented API contracts, data models, and frontend architecture for a file browsing and editing interface. ## tags -spec, defines, technical, specifications, repository, workspace, web, application +spec, defines, requirements, api, contracts, data, models, frontend ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-19-responsive-spacing-improvements/.openspec/.pi-map.index.md b/openspec/changes/archive/2026-05-19-responsive-spacing-improvements/.openspec/.pi-map.index.md index 05f0c33..eb8d0ae 100644 --- a/openspec/changes/archive/2026-05-19-responsive-spacing-improvements/.openspec/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-19-responsive-spacing-improvements/.openspec/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-19-responsive-spacing-improvements/.openspec (index) -dir: 2026-05-19-responsive-spacing-improvements/.openspec +# openspec/changes/archive/2026-05-19-responsive-spacing-improvements/.openspec (index) +dir: openspec/changes/archive/2026-05-19-responsive-spacing-improvements/.openspec ## role -Configuration directory for a specification-driven project defining responsive spacing improvements +Defines a configuration schema for responsive spacing improvements in the OpenSpec system. ## parent -index: 2026-05-19-responsive-spacing-improvements/.pi-map.index.md -map: 2026-05-19-responsive-spacing-improvements/.pi-map.md +index: openspec/changes/archive/2026-05-19-responsive-spacing-improvements/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-responsive-spacing-improvements/.pi-map.md ## children - ## files - config.yaml ## links -index: 2026-05-19-responsive-spacing-improvements/.openspec/.pi-map.index.md -map: 2026-05-19-responsive-spacing-improvements/.openspec/.pi-map.md +index: openspec/changes/archive/2026-05-19-responsive-spacing-improvements/.openspec/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-responsive-spacing-improvements/.openspec/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-19-responsive-spacing-improvements/.openspec/.pi-map.md b/openspec/changes/archive/2026-05-19-responsive-spacing-improvements/.openspec/.pi-map.md index e284487..a776bba 100644 --- a/openspec/changes/archive/2026-05-19-responsive-spacing-improvements/.openspec/.pi-map.md +++ b/openspec/changes/archive/2026-05-19-responsive-spacing-improvements/.openspec/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-19-responsive-spacing-improvements/.openspec -dir: 2026-05-19-responsive-spacing-improvements/.openspec +# openspec/changes/archive/2026-05-19-responsive-spacing-improvements/.openspec +dir: openspec/changes/archive/2026-05-19-responsive-spacing-improvements/.openspec -index: 2026-05-19-responsive-spacing-improvements/.openspec/.pi-map.index.md +index: openspec/changes/archive/2026-05-19-responsive-spacing-improvements/.openspec/.pi-map.index.md ## role -Configuration directory for a specification-driven project defining responsive spacing improvements +Defines a configuration schema for responsive spacing improvements in the OpenSpec system. ## files -- config.yaml | Defines a configuration file for a specification-driven project named "responsive-spacing-improvements" +- config.yaml | Defines a configuration with schema type and name for responsive spacing improvements ## arch -Single YAML configuration file using declarative specification pattern for project metadata and settings +Simple YAML-based configuration pattern with schema typing for spec versioning. ## tags -config, defines, configuration, specification, driven, project, named, responsive +config, defines, configuration, schema, type, name, responsive, spacing ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-19-responsive-spacing-improvements/.pi-map.index.md b/openspec/changes/archive/2026-05-19-responsive-spacing-improvements/.pi-map.index.md index ba09553..e537856 100644 --- a/openspec/changes/archive/2026-05-19-responsive-spacing-improvements/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-19-responsive-spacing-improvements/.pi-map.index.md @@ -1,25 +1,25 @@ -# 2026-05-19-responsive-spacing-improvements (index) -dir: 2026-05-19-responsive-spacing-improvements +# openspec/changes/archive/2026-05-19-responsive-spacing-improvements (index) +dir: openspec/changes/archive/2026-05-19-responsive-spacing-improvements ## role -Documents a completed responsive design system project that improved spacing, sizing, and mobile usability across a web application's UI. +Archive of a completed 2026 project to implement a responsive spacing system using CSS custom properties and mobile-first breakpoints to fix UI layout issues. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2026-05-19-responsive-spacing-improvements/.openspec - index: 2026-05-19-responsive-spacing-improvements/.openspec/.pi-map.index.md - map: 2026-05-19-responsive-spacing-improvements/.openspec/.pi-map.md -- 2026-05-19-responsive-spacing-improvements/specs - index: 2026-05-19-responsive-spacing-improvements/specs/.pi-map.index.md - map: 2026-05-19-responsive-spacing-improvements/specs/.pi-map.md +- openspec/changes/archive/2026-05-19-responsive-spacing-improvements/.openspec + index: openspec/changes/archive/2026-05-19-responsive-spacing-improvements/.openspec/.pi-map.index.md + map: openspec/changes/archive/2026-05-19-responsive-spacing-improvements/.openspec/.pi-map.md +- openspec/changes/archive/2026-05-19-responsive-spacing-improvements/specs + index: openspec/changes/archive/2026-05-19-responsive-spacing-improvements/specs/.pi-map.index.md + map: openspec/changes/archive/2026-05-19-responsive-spacing-improvements/specs/.pi-map.md ## files - design.md - proposal.md - tasks.md ## links -index: 2026-05-19-responsive-spacing-improvements/.pi-map.index.md -map: 2026-05-19-responsive-spacing-improvements/.pi-map.md +index: openspec/changes/archive/2026-05-19-responsive-spacing-improvements/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-responsive-spacing-improvements/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-19-responsive-spacing-improvements/.pi-map.md b/openspec/changes/archive/2026-05-19-responsive-spacing-improvements/.pi-map.md index 7c80995..a86f51e 100644 --- a/openspec/changes/archive/2026-05-19-responsive-spacing-improvements/.pi-map.md +++ b/openspec/changes/archive/2026-05-19-responsive-spacing-improvements/.pi-map.md @@ -1,18 +1,18 @@ -# 2026-05-19-responsive-spacing-improvements -dir: 2026-05-19-responsive-spacing-improvements +# openspec/changes/archive/2026-05-19-responsive-spacing-improvements +dir: openspec/changes/archive/2026-05-19-responsive-spacing-improvements -index: 2026-05-19-responsive-spacing-improvements/.pi-map.index.md +index: openspec/changes/archive/2026-05-19-responsive-spacing-improvements/.pi-map.index.md ## role -Documents a completed responsive design system project that improved spacing, sizing, and mobile usability across a web application's UI. +Archive of a completed 2026 project to implement a responsive spacing system using CSS custom properties and mobile-first breakpoints to fix UI layout issues. ## files -- design.md | Design document specifying a responsive CSS design system with spacing scales, breakpoints, layout components, and migration strategy for improving responsive behavior across a web application. -- proposal.md | Proposes a comprehensive responsive design system to fix spacing, sizing, and mobile usability issues in a UI -- tasks.md | A completed task checklist documenting a responsive spacing and layout improvement project across CSS foundations, layout utilities, component updates, overflow fixes, touch targets, and quality gates. +- design.md | Design document for implementing a responsive spacing system with CSS custom properties, layout components, and mobile-first breakpoints +- proposal.md | Proposes a comprehensive responsive design system to fix UI spacing, sizing, and mobile adaptation issues +- tasks.md | A completed task checklist for implementing responsive spacing improvements across a web application in 8 phases ## arch -Design-system architecture with token-based CSS spacing scales, breakpoint-driven responsive utilities, component migration strategy, and phased implementation with quality gates for systematic UI modernization. +Documentation-driven waterfall process with 8-phase implementation (design → proposal → phased tasks) for systematic rollout of a CSS custom property-based responsive design system. ## tags -design, responsive, spacing, layout, css, system, across, proposal +design, responsive, spacing, implementing, system, mobile, proposal, tasks ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-19-responsive-spacing-improvements/specs/.pi-map.index.md b/openspec/changes/archive/2026-05-19-responsive-spacing-improvements/specs/.pi-map.index.md index 6a0dc1b..2fc374d 100644 --- a/openspec/changes/archive/2026-05-19-responsive-spacing-improvements/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-19-responsive-spacing-improvements/specs/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-19-responsive-spacing-improvements/specs (index) -dir: 2026-05-19-responsive-spacing-improvements/specs +# openspec/changes/archive/2026-05-19-responsive-spacing-improvements/specs (index) +dir: openspec/changes/archive/2026-05-19-responsive-spacing-improvements/specs ## role -Defines technical specifications for responsive design system improvements including spacing, typography, and layout. +Defines responsive design system specifications for spacing, breakpoints, typography, and component behavior in a web application. ## parent -index: 2026-05-19-responsive-spacing-improvements/.pi-map.index.md -map: 2026-05-19-responsive-spacing-improvements/.pi-map.md +index: openspec/changes/archive/2026-05-19-responsive-spacing-improvements/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-responsive-spacing-improvements/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-19-responsive-spacing-improvements/specs/.pi-map.index.md -map: 2026-05-19-responsive-spacing-improvements/specs/.pi-map.md +index: openspec/changes/archive/2026-05-19-responsive-spacing-improvements/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-responsive-spacing-improvements/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-19-responsive-spacing-improvements/specs/.pi-map.md b/openspec/changes/archive/2026-05-19-responsive-spacing-improvements/specs/.pi-map.md index 7c1cf3b..a27a3e1 100644 --- a/openspec/changes/archive/2026-05-19-responsive-spacing-improvements/specs/.pi-map.md +++ b/openspec/changes/archive/2026-05-19-responsive-spacing-improvements/specs/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-19-responsive-spacing-improvements/specs -dir: 2026-05-19-responsive-spacing-improvements/specs +# openspec/changes/archive/2026-05-19-responsive-spacing-improvements/specs +dir: openspec/changes/archive/2026-05-19-responsive-spacing-improvements/specs -index: 2026-05-19-responsive-spacing-improvements/specs/.pi-map.index.md +index: openspec/changes/archive/2026-05-19-responsive-spacing-improvements/specs/.pi-map.index.md ## role -Defines technical specifications for responsive design system improvements including spacing, typography, and layout. +Defines responsive design system specifications for spacing, breakpoints, typography, and component behavior in a web application. ## files -- spec.md | Defines a specification for implementing responsive spacing, fluid typography, and mobile-first layout improvements across a web application | dep: CSS custom properties, clamp(), viewport units, media queries, WCAG 2.5.5 +- spec.md | Specifies responsive design improvements for a web application including spacing system, breakpoints, fluid typography, and component-level responsive behavior requirements. ## arch -Markdown-based specification document using prose requirements with code examples, following a mobile-first responsive design pattern with fluid CSS techniques. +Design specification/documentation pattern using markdown-based requirements documents with no executable code. ## tags -spec, defines, specification, implementing, responsive, spacing, fluid, typography +responsive, spec, specifies, design, improvements, web, application, including ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-19-smart-git-url-parsing/.pi-map.index.md b/openspec/changes/archive/2026-05-19-smart-git-url-parsing/.pi-map.index.md index 738fbaf..25fab27 100644 --- a/openspec/changes/archive/2026-05-19-smart-git-url-parsing/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-19-smart-git-url-parsing/.pi-map.index.md @@ -1,23 +1,23 @@ -# 2026-05-19-smart-git-url-parsing (index) -dir: 2026-05-19-smart-git-url-parsing +# openspec/changes/archive/2026-05-19-smart-git-url-parsing (index) +dir: openspec/changes/archive/2026-05-19-smart-git-url-parsing ## role -Defines a feature proposal and implementation plan for intelligent Git URL parsing that converts browser URLs to valid clone URLs during repository creation. +Proposed feature specification for intelligent git URL parsing that automatically detects, validates, and suggests corrections for malformed repository URLs during repository creation workflows. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2026-05-19-smart-git-url-parsing/specs - index: 2026-05-19-smart-git-url-parsing/specs/.pi-map.index.md - map: 2026-05-19-smart-git-url-parsing/specs/.pi-map.md +- openspec/changes/archive/2026-05-19-smart-git-url-parsing/specs + index: openspec/changes/archive/2026-05-19-smart-git-url-parsing/specs/.pi-map.index.md + map: openspec/changes/archive/2026-05-19-smart-git-url-parsing/specs/.pi-map.md ## files - .openspec.yaml - design.md - proposal.md - tasks.md ## links -index: 2026-05-19-smart-git-url-parsing/.pi-map.index.md -map: 2026-05-19-smart-git-url-parsing/.pi-map.md +index: openspec/changes/archive/2026-05-19-smart-git-url-parsing/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-smart-git-url-parsing/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-19-smart-git-url-parsing/.pi-map.md b/openspec/changes/archive/2026-05-19-smart-git-url-parsing/.pi-map.md index bd90c47..7b50e3f 100644 --- a/openspec/changes/archive/2026-05-19-smart-git-url-parsing/.pi-map.md +++ b/openspec/changes/archive/2026-05-19-smart-git-url-parsing/.pi-map.md @@ -1,19 +1,19 @@ -# 2026-05-19-smart-git-url-parsing -dir: 2026-05-19-smart-git-url-parsing +# openspec/changes/archive/2026-05-19-smart-git-url-parsing +dir: openspec/changes/archive/2026-05-19-smart-git-url-parsing -index: 2026-05-19-smart-git-url-parsing/.pi-map.index.md +index: openspec/changes/archive/2026-05-19-smart-git-url-parsing/.pi-map.index.md ## role -Defines a feature proposal and implementation plan for intelligent Git URL parsing that converts browser URLs to valid clone URLs during repository creation. +Proposed feature specification for intelligent git URL parsing that automatically detects, validates, and suggests corrections for malformed repository URLs during repository creation workflows. ## files - .openspec.yaml | Defines an OpenSpec configuration file with schema type and creation date metadata -- design.md | Design document for a smart Git URL parsing feature that detects browser URLs from GitHub/GitLab/Bitbucket and converts them to valid clone URLs -- proposal.md | Proposes a feature to intelligently parse and correct malformed Git repository URLs pasted by users during repository creation -- tasks.md | Project task breakdown for implementing smart Git URL parsing across backend and frontend with validation, suggestion, and user confirmation flows | dep: FastAPI, Python, TypeScript, React, ruff, mypy, pytest +- design.md | Design document for smart URL parsing system that converts browser URLs to git clone URLs with user confirmation flow +- proposal.md | Proposes a feature to automatically detect and correct malformed git repository URLs pasted by users during repository creation +- tasks.md | Project task list for implementing smart Git URL parsing across backend and frontend with validation, suggestion, and user confirmation workflows ## arch -Documentation-driven design using markdown specs (design/proposal/tasks) with YAML metadata, following a structured product development workflow from concept to task breakdown. +Specification-driven design using OpenSpec schema with phased implementation plan (backend validation API → frontend suggestion UI → user confirmation flow) and clear separation between URL parsing logic, suggestion generation, and user interaction components. ## tags -design, git, urls, creation, .openspec, smart, url, parsing +design, urls, git, creation, .openspec, smart, url, parsing ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-19-smart-git-url-parsing/specs/.pi-map.index.md b/openspec/changes/archive/2026-05-19-smart-git-url-parsing/specs/.pi-map.index.md index a9f8ce0..b29ae8c 100644 --- a/openspec/changes/archive/2026-05-19-smart-git-url-parsing/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-19-smart-git-url-parsing/specs/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-19-smart-git-url-parsing/specs (index) -dir: 2026-05-19-smart-git-url-parsing/specs +# openspec/changes/archive/2026-05-19-smart-git-url-parsing/specs (index) +dir: openspec/changes/archive/2026-05-19-smart-git-url-parsing/specs ## role -Defines the behavioral specification for a smart URL parsing system that distinguishes browser URLs from git clone URLs and extracts canonical repository URLs with user confirmation workflows. +Defines the specification for a smart Git URL parsing service that converts browser URLs to valid git clone URLs. ## parent -index: 2026-05-19-smart-git-url-parsing/.pi-map.index.md -map: 2026-05-19-smart-git-url-parsing/.pi-map.md +index: openspec/changes/archive/2026-05-19-smart-git-url-parsing/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-smart-git-url-parsing/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-19-smart-git-url-parsing/specs/.pi-map.index.md -map: 2026-05-19-smart-git-url-parsing/specs/.pi-map.md +index: openspec/changes/archive/2026-05-19-smart-git-url-parsing/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-smart-git-url-parsing/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-19-smart-git-url-parsing/specs/.pi-map.md b/openspec/changes/archive/2026-05-19-smart-git-url-parsing/specs/.pi-map.md index 0cc5925..3c3a4d2 100644 --- a/openspec/changes/archive/2026-05-19-smart-git-url-parsing/specs/.pi-map.md +++ b/openspec/changes/archive/2026-05-19-smart-git-url-parsing/specs/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-19-smart-git-url-parsing/specs -dir: 2026-05-19-smart-git-url-parsing/specs +# openspec/changes/archive/2026-05-19-smart-git-url-parsing/specs +dir: openspec/changes/archive/2026-05-19-smart-git-url-parsing/specs -index: 2026-05-19-smart-git-url-parsing/specs/.pi-map.index.md +index: openspec/changes/archive/2026-05-19-smart-git-url-parsing/specs/.pi-map.index.md ## role -Defines the behavioral specification for a smart URL parsing system that distinguishes browser URLs from git clone URLs and extracts canonical repository URLs with user confirmation workflows. +Defines the specification for a smart Git URL parsing service that converts browser URLs to valid git clone URLs. ## files -- spec.md | Defines a specification for detecting browser URLs versus git clone URLs and extracting base repository URLs with user confirmation workflows +- spec.md | Specifies requirements, API, data model, parsing rules, and frontend behavior for a smart Git URL parsing service that converts browser URLs to valid git clone URLs ## arch -Specification-driven design using markdown-based requirements documentation with structured sections for overview, goals, non-goals, user stories, and detailed behavioral specifications for URL classification, extraction, and interactive confirmation flows. +Requirements-driven specification document following a structured spec format with sections for API, data model, parsing rules, and frontend behavior. ## tags -urls, spec, defines, specification, detecting, browser, versus, git +parsing, git, urls, spec, specifies, requirements, api, data ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-19-tool-instances/.openspec/.pi-map.index.md b/openspec/changes/archive/2026-05-19-tool-instances/.openspec/.pi-map.index.md index f9f8ea4..e2e2d51 100644 --- a/openspec/changes/archive/2026-05-19-tool-instances/.openspec/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-19-tool-instances/.openspec/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-19-tool-instances/.openspec (index) -dir: 2026-05-19-tool-instances/.openspec +# openspec/changes/archive/2026-05-19-tool-instances/.openspec (index) +dir: openspec/changes/archive/2026-05-19-tool-instances/.openspec ## role -Defines the OpenAPI specification schema configuration for tool instances in the project. +Defines a schema configuration for archiving tool instances in the OpenSpec changes system ## parent -index: 2026-05-19-tool-instances/.pi-map.index.md -map: 2026-05-19-tool-instances/.pi-map.md +index: openspec/changes/archive/2026-05-19-tool-instances/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-tool-instances/.pi-map.md ## children - ## files - config.yaml ## links -index: 2026-05-19-tool-instances/.openspec/.pi-map.index.md -map: 2026-05-19-tool-instances/.openspec/.pi-map.md +index: openspec/changes/archive/2026-05-19-tool-instances/.openspec/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-tool-instances/.openspec/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-19-tool-instances/.openspec/.pi-map.md b/openspec/changes/archive/2026-05-19-tool-instances/.openspec/.pi-map.md index 3b349cc..229beab 100644 --- a/openspec/changes/archive/2026-05-19-tool-instances/.openspec/.pi-map.md +++ b/openspec/changes/archive/2026-05-19-tool-instances/.openspec/.pi-map.md @@ -1,14 +1,14 @@ -# 2026-05-19-tool-instances/.openspec -dir: 2026-05-19-tool-instances/.openspec +# openspec/changes/archive/2026-05-19-tool-instances/.openspec +dir: openspec/changes/archive/2026-05-19-tool-instances/.openspec -index: 2026-05-19-tool-instances/.openspec/.pi-map.index.md +index: openspec/changes/archive/2026-05-19-tool-instances/.openspec/.pi-map.index.md ## role -Defines the OpenAPI specification schema configuration for tool instances in the project. +Defines a schema configuration for archiving tool instances in the OpenSpec changes system ## files -- config.yaml | Defines a configuration file specifying a schema type and name for tool instances. +- config.yaml | Defines a configuration file specifying a schema type and name for tool instances ## arch -Simple declarative configuration using YAML to specify schema metadata (type "openapi" and name "ToolInstances") for code generation or API documentation purposes. +Simple declarative configuration using YAML with schema type/name key-value pairs ## tags config, defines, configuration, specifying, schema, type, name, tool ## symbols diff --git a/openspec/changes/archive/2026-05-19-tool-instances/.pi-map.index.md b/openspec/changes/archive/2026-05-19-tool-instances/.pi-map.index.md index 1ea6315..4db0509 100644 --- a/openspec/changes/archive/2026-05-19-tool-instances/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-19-tool-instances/.pi-map.index.md @@ -1,25 +1,25 @@ -# 2026-05-19-tool-instances (index) -dir: 2026-05-19-tool-instances +# openspec/changes/archive/2026-05-19-tool-instances (index) +dir: openspec/changes/archive/2026-05-19-tool-instances ## role -Defines the architecture and requirements for a Docker-based containerized development environment management system that provisions isolated tool instances per repository with lifecycle management. +Design documentation package for a Docker-based tool instance management system enabling per-repository development environments with lifecycle and session integration. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2026-05-19-tool-instances/.openspec - index: 2026-05-19-tool-instances/.openspec/.pi-map.index.md - map: 2026-05-19-tool-instances/.openspec/.pi-map.md -- 2026-05-19-tool-instances/specs - index: 2026-05-19-tool-instances/specs/.pi-map.index.md - map: 2026-05-19-tool-instances/specs/.pi-map.md +- openspec/changes/archive/2026-05-19-tool-instances/.openspec + index: openspec/changes/archive/2026-05-19-tool-instances/.openspec/.pi-map.index.md + map: openspec/changes/archive/2026-05-19-tool-instances/.openspec/.pi-map.md +- openspec/changes/archive/2026-05-19-tool-instances/specs + index: openspec/changes/archive/2026-05-19-tool-instances/specs/.pi-map.index.md + map: openspec/changes/archive/2026-05-19-tool-instances/specs/.pi-map.md ## files - design.md - proposal.md - tasks.md ## links -index: 2026-05-19-tool-instances/.pi-map.index.md -map: 2026-05-19-tool-instances/.pi-map.md +index: openspec/changes/archive/2026-05-19-tool-instances/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-tool-instances/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-19-tool-instances/.pi-map.md b/openspec/changes/archive/2026-05-19-tool-instances/.pi-map.md index b08c4d0..ec32894 100644 --- a/openspec/changes/archive/2026-05-19-tool-instances/.pi-map.md +++ b/openspec/changes/archive/2026-05-19-tool-instances/.pi-map.md @@ -1,18 +1,18 @@ -# 2026-05-19-tool-instances -dir: 2026-05-19-tool-instances +# openspec/changes/archive/2026-05-19-tool-instances +dir: openspec/changes/archive/2026-05-19-tool-instances -index: 2026-05-19-tool-instances/.pi-map.index.md +index: openspec/changes/archive/2026-05-19-tool-instances/.pi-map.index.md ## role -Defines the architecture and requirements for a Docker-based containerized development environment management system that provisions isolated tool instances per repository with lifecycle management. +Design documentation package for a Docker-based tool instance management system enabling per-repository development environments with lifecycle and session integration. ## files -- design.md | Design document specifying a Docker-based tool instance system for launching and managing development environments per repository with lifecycle management and frontend integration. | dep: Docker, Docker Compose, SQLAlchemy/Base, React/useAtom, AppShell, GitRepository, ToolType, Project, User -- proposal.md | Proposes a system for managing Docker-based development tool instances with persistent sessions linked to repositories | dep: Docker Compose, Docker API, GitRepository, ToolType, database -- tasks.md | Project task tracking document for implementing Docker-based tool instance management with backend API, frontend UI, and lifecycle operations | dep: FastAPI, SQLAlchemy, Alembic, Docker, React/TypeScript, Jotai, docker-compose +- design.md | Design document specifying a system for managing Docker-based tool instances (e.g., VS Code servers) per Git repository with lifecycle management, status tracking, and frontend session integration. | dep: Docker Compose, SQLAlchemy/Base model, React/TypeScript (jotai atoms), FastAPI/REST backend, GitRepository, ToolType, Project, User models +- proposal.md | Design document for implementing a tool instance management system with Docker-based sessions linked to repositories | dep: Docker Compose, Docker API, GitRepository, ToolType, app shell/navigation +- tasks.md | Project task tracking document for implementing a Docker-based tool instance management system with backend API and frontend UI | dep: Docker, Alembic, FastAPI/REST API, React/TypeScript frontend, SQLAlchemy ORM, Jinja2 templating, atomic state management ## arch -Event-driven microservices architecture with REST API backend, frontend UI, and Docker container orchestration using session persistence, lifecycle state machines, and repository-scoped resource isolation. +Specification-driven architecture with separated design documents (design.md for system spec, proposal.md for implementation plan, tasks.md for project tracking) covering backend API, frontend UI, Docker orchestration, and Git repository linkage. ## tags -docker, design, tool, document, instance, system, managing, development +design, docker, document, system, tool, management, tracking, frontend ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-19-tool-instances/specs/.pi-map.index.md b/openspec/changes/archive/2026-05-19-tool-instances/specs/.pi-map.index.md index 2bccaf8..b58b608 100644 --- a/openspec/changes/archive/2026-05-19-tool-instances/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-19-tool-instances/specs/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-19-tool-instances/specs (index) -dir: 2026-05-19-tool-instances/specs +# openspec/changes/archive/2026-05-19-tool-instances/specs (index) +dir: openspec/changes/archive/2026-05-19-tool-instances/specs ## role -Defines technical specifications for a Docker-based tool instance management system handling container lifecycle and status tracking. +Defines technical specifications for a tool instance management system with Docker container lifecycle, API endpoints, and database schema ## parent -index: 2026-05-19-tool-instances/.pi-map.index.md -map: 2026-05-19-tool-instances/.pi-map.md +index: openspec/changes/archive/2026-05-19-tool-instances/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-tool-instances/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-19-tool-instances/specs/.pi-map.index.md -map: 2026-05-19-tool-instances/specs/.pi-map.md +index: openspec/changes/archive/2026-05-19-tool-instances/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-tool-instances/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-19-tool-instances/specs/.pi-map.md b/openspec/changes/archive/2026-05-19-tool-instances/specs/.pi-map.md index db6515e..c628862 100644 --- a/openspec/changes/archive/2026-05-19-tool-instances/specs/.pi-map.md +++ b/openspec/changes/archive/2026-05-19-tool-instances/specs/.pi-map.md @@ -1,14 +1,14 @@ -# 2026-05-19-tool-instances/specs -dir: 2026-05-19-tool-instances/specs +# openspec/changes/archive/2026-05-19-tool-instances/specs +dir: openspec/changes/archive/2026-05-19-tool-instances/specs -index: 2026-05-19-tool-instances/specs/.pi-map.index.md +index: openspec/changes/archive/2026-05-19-tool-instances/specs/.pi-map.index.md ## role -Defines technical specifications for a Docker-based tool instance management system handling container lifecycle and status tracking. +Defines technical specifications for a tool instance management system with Docker container lifecycle, API endpoints, and database schema ## files -- spec.md | Defines technical specifications for a tool instance management system that creates, monitors, and controls Docker containers for user sessions with lifecycle operations and status tracking. | dep: Docker, PostgreSQL, REST API, Git repositories, template engine +- spec.md | Defines technical specifications for a tool instance management system with Docker container lifecycle, API endpoints, and database schema | dep: Docker, PostgreSQL, REST API, template engine, git repositories ## arch -Specification-driven architecture with lifecycle state management (create/monitor/control) for session-isolated container orchestration. +Specification document following a structured technical design pattern with sections for overview, requirements, API design, data model, and implementation details ## tags docker, spec, defines, technical, specifications, tool, instance, management ## symbols diff --git a/openspec/changes/archive/2026-05-19-tool-terminal/.openspec/.pi-map.index.md b/openspec/changes/archive/2026-05-19-tool-terminal/.openspec/.pi-map.index.md index a37beb6..9b13985 100644 --- a/openspec/changes/archive/2026-05-19-tool-terminal/.openspec/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-19-tool-terminal/.openspec/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-19-tool-terminal/.openspec (index) -dir: 2026-05-19-tool-terminal/.openspec +# openspec/changes/archive/2026-05-19-tool-terminal/.openspec (index) +dir: openspec/changes/archive/2026-05-19-tool-terminal/.openspec ## role -Defines the OpenAPI specification configuration for the tool-terminal component. +Defines an archived OpenSpec configuration schema for a tool-terminal component dated 2026-05-19. ## parent -index: 2026-05-19-tool-terminal/.pi-map.index.md -map: 2026-05-19-tool-terminal/.pi-map.md +index: openspec/changes/archive/2026-05-19-tool-terminal/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-tool-terminal/.pi-map.md ## children - ## files - config.yaml ## links -index: 2026-05-19-tool-terminal/.openspec/.pi-map.index.md -map: 2026-05-19-tool-terminal/.openspec/.pi-map.md +index: openspec/changes/archive/2026-05-19-tool-terminal/.openspec/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-tool-terminal/.openspec/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-19-tool-terminal/.openspec/.pi-map.md b/openspec/changes/archive/2026-05-19-tool-terminal/.openspec/.pi-map.md index 036c8d2..45251e5 100644 --- a/openspec/changes/archive/2026-05-19-tool-terminal/.openspec/.pi-map.md +++ b/openspec/changes/archive/2026-05-19-tool-terminal/.openspec/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-19-tool-terminal/.openspec -dir: 2026-05-19-tool-terminal/.openspec +# openspec/changes/archive/2026-05-19-tool-terminal/.openspec +dir: openspec/changes/archive/2026-05-19-tool-terminal/.openspec -index: 2026-05-19-tool-terminal/.openspec/.pi-map.index.md +index: openspec/changes/archive/2026-05-19-tool-terminal/.openspec/.pi-map.index.md ## role -Defines the OpenAPI specification configuration for the tool-terminal component. +Defines an archived OpenSpec configuration schema for a tool-terminal component dated 2026-05-19. ## files -- config.yaml | Defines a basic configuration file specifying a schema type and name for a tool-terminal component. +- config.yaml | Defines a configuration file specifying a schema type and name for a tool-terminal component. ## arch -Simple declarative configuration using YAML for schema metadata definition. +Simple declarative schema configuration using YAML with type/name metadata pattern for component specification. ## tags -config, defines, basic, configuration, specifying, schema, type, name +config, defines, configuration, specifying, schema, type, name, tool ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-19-tool-terminal/.pi-map.index.md b/openspec/changes/archive/2026-05-19-tool-terminal/.pi-map.index.md index c5d1176..0b877bd 100644 --- a/openspec/changes/archive/2026-05-19-tool-terminal/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-19-tool-terminal/.pi-map.index.md @@ -1,25 +1,25 @@ -# 2026-05-19-tool-terminal (index) -dir: 2026-05-19-tool-terminal +# openspec/changes/archive/2026-05-19-tool-terminal (index) +dir: openspec/changes/archive/2026-05-19-tool-terminal ## role -Implements a browser-based terminal interface for Docker containers using WebSocket bidirectional streaming with xterm.js frontend and docker exec PTY backend. +Design and planning documents for a browser-based terminal interface feature enabling WebSocket-connected Docker container access. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2026-05-19-tool-terminal/.openspec - index: 2026-05-19-tool-terminal/.openspec/.pi-map.index.md - map: 2026-05-19-tool-terminal/.openspec/.pi-map.md -- 2026-05-19-tool-terminal/specs - index: 2026-05-19-tool-terminal/specs/.pi-map.index.md - map: 2026-05-19-tool-terminal/specs/.pi-map.md +- openspec/changes/archive/2026-05-19-tool-terminal/.openspec + index: openspec/changes/archive/2026-05-19-tool-terminal/.openspec/.pi-map.index.md + map: openspec/changes/archive/2026-05-19-tool-terminal/.openspec/.pi-map.md +- openspec/changes/archive/2026-05-19-tool-terminal/specs + index: openspec/changes/archive/2026-05-19-tool-terminal/specs/.pi-map.index.md + map: openspec/changes/archive/2026-05-19-tool-terminal/specs/.pi-map.md ## files - design.md - proposal.md - tasks.md ## links -index: 2026-05-19-tool-terminal/.pi-map.index.md -map: 2026-05-19-tool-terminal/.pi-map.md +index: openspec/changes/archive/2026-05-19-tool-terminal/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-tool-terminal/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-19-tool-terminal/.pi-map.md b/openspec/changes/archive/2026-05-19-tool-terminal/.pi-map.md index 93c3b84..433dc6e 100644 --- a/openspec/changes/archive/2026-05-19-tool-terminal/.pi-map.md +++ b/openspec/changes/archive/2026-05-19-tool-terminal/.pi-map.md @@ -1,18 +1,18 @@ -# 2026-05-19-tool-terminal -dir: 2026-05-19-tool-terminal +# openspec/changes/archive/2026-05-19-tool-terminal +dir: openspec/changes/archive/2026-05-19-tool-terminal -index: 2026-05-19-tool-terminal/.pi-map.index.md +index: openspec/changes/archive/2026-05-19-tool-terminal/.pi-map.index.md ## role -Implements a browser-based terminal interface for Docker containers using WebSocket bidirectional streaming with xterm.js frontend and docker exec PTY backend. +Design and planning documents for a browser-based terminal interface feature enabling WebSocket-connected Docker container access. ## files -- design.md | Design document specifying a web-based terminal interface for Docker containers using WebSocket bidirectional streaming with xterm.js frontend and docker exec PTY backend. | dep: WebSocket, Docker, xterm.js, asyncio, subprocess, fcntl, xterm-addon-fit, xterm-addon-web-links -- proposal.md | Proposes a browser-based terminal access system for Docker containers via WebSocket | dep: Docker, WebSocket, xterm.js, pseudo-TTY/PTY -- tasks.md | Project task tracking document for implementing a WebSocket-based terminal feature using xterm.js and Docker exec | dep: FastAPI, WebSocket, asyncio-subprocess, xterm.js, xterm-addon-fit, xterm-addon-web-links, docker, PTY, React/Next.js +- design.md | Design document for a browser-based terminal interface that connects to Docker containers via WebSocket | dep: docker, asyncio, subprocess, fcntl, xterm.js, xterm-addon-fit, xterm-addon-web-links +- proposal.md | Proposes a browser-based terminal access solution for Docker containers via WebSocket | dep: Docker, WebSocket, xterm.js, Pseudo-TTY +- tasks.md | Project task list tracking implementation of a WebSocket-based browser terminal for Docker container instances using xterm.js and FastAPI. | dep: FastAPI, WebSocket, xterm.js, xterm-addon-fit, xterm-addon-web-links, asyncio-subprocess, docker, React/Next.js ## arch -Client-server architecture with WebSocket for real-time bidirectional communication, xterm.js for terminal emulation in the browser, and Docker exec API for PTY allocation to container processes. +Document-driven specification package using markdown-based design proposals, technical design docs, and task tracking for a WebSocket/xterm.js/FastAPI terminal implementation. ## tags -xterm, docker, websocket, js, addon, design, web, terminal +xterm, docker, websocket, js, addon, design, browser, terminal ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-19-tool-terminal/specs/.pi-map.index.md b/openspec/changes/archive/2026-05-19-tool-terminal/specs/.pi-map.index.md index e4587ed..cb97454 100644 --- a/openspec/changes/archive/2026-05-19-tool-terminal/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-19-tool-terminal/specs/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-19-tool-terminal/specs (index) -dir: 2026-05-19-tool-terminal/specs +# openspec/changes/archive/2026-05-19-tool-terminal/specs (index) +dir: openspec/changes/archive/2026-05-19-tool-terminal/specs ## role -Defines protocol specifications for browser-based remote terminal access to Docker containers +Defines specifications for a browser-based terminal interface to Docker containers using WebSocket communication ## parent -index: 2026-05-19-tool-terminal/.pi-map.index.md -map: 2026-05-19-tool-terminal/.pi-map.md +index: openspec/changes/archive/2026-05-19-tool-terminal/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-tool-terminal/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-19-tool-terminal/specs/.pi-map.index.md -map: 2026-05-19-tool-terminal/specs/.pi-map.md +index: openspec/changes/archive/2026-05-19-tool-terminal/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-tool-terminal/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-19-tool-terminal/specs/.pi-map.md b/openspec/changes/archive/2026-05-19-tool-terminal/specs/.pi-map.md index adf2176..bf00e8f 100644 --- a/openspec/changes/archive/2026-05-19-tool-terminal/specs/.pi-map.md +++ b/openspec/changes/archive/2026-05-19-tool-terminal/specs/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-19-tool-terminal/specs -dir: 2026-05-19-tool-terminal/specs +# openspec/changes/archive/2026-05-19-tool-terminal/specs +dir: openspec/changes/archive/2026-05-19-tool-terminal/specs -index: 2026-05-19-tool-terminal/specs/.pi-map.index.md +index: openspec/changes/archive/2026-05-19-tool-terminal/specs/.pi-map.index.md ## role -Defines protocol specifications for browser-based remote terminal access to Docker containers +Defines specifications for a browser-based terminal interface to Docker containers using WebSocket communication ## files -- spec.md | Defines a WebSocket-based terminal specification for spawning interactive shell sessions inside Docker containers via browser-based terminals | dep: FastAPI, asyncio, docker CLI, xterm.js, xterm-addon-fit, xterm-addon-web-links +- spec.md | Specifies a WebSocket-based terminal system for spawning interactive shells in Docker containers via browser-based xterm.js terminals | dep: FastAPI, asyncio, docker CLI, xterm.js, xterm-addon-fit, xterm-addon-web-links ## arch -Markdown-based specification document using WebSocket transport protocol with Docker container runtime integration +Protocol specification document defining WebSocket message framing, xterm.js integration, and bidirectional shell I/O streaming architecture ## tags -xterm, addon, spec, defines, websocket, terminal, specification, spawning +xterm, addon, spec, specifies, websocket, terminal, system, spawning ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-19-universal-icon-system/.openspec/.pi-map.index.md b/openspec/changes/archive/2026-05-19-universal-icon-system/.openspec/.pi-map.index.md index 2269058..4868623 100644 --- a/openspec/changes/archive/2026-05-19-universal-icon-system/.openspec/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-19-universal-icon-system/.openspec/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-19-universal-icon-system/.openspec (index) -dir: 2026-05-19-universal-icon-system/.openspec +# openspec/changes/archive/2026-05-19-universal-icon-system/.openspec (index) +dir: openspec/changes/archive/2026-05-19-universal-icon-system/.openspec ## role -Provides configuration specification for a universal icon system that generates icons across multiple platforms and formats from a single source. +Defines a specification-driven configuration schema for a universal icon system within an archived OpenSpec change set. ## parent -index: 2026-05-19-universal-icon-system/.pi-map.index.md -map: 2026-05-19-universal-icon-system/.pi-map.md +index: openspec/changes/archive/2026-05-19-universal-icon-system/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-universal-icon-system/.pi-map.md ## children - ## files - config.yaml ## links -index: 2026-05-19-universal-icon-system/.openspec/.pi-map.index.md -map: 2026-05-19-universal-icon-system/.openspec/.pi-map.md +index: openspec/changes/archive/2026-05-19-universal-icon-system/.openspec/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-universal-icon-system/.openspec/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-19-universal-icon-system/.openspec/.pi-map.md b/openspec/changes/archive/2026-05-19-universal-icon-system/.openspec/.pi-map.md index ce9cae5..c5318e5 100644 --- a/openspec/changes/archive/2026-05-19-universal-icon-system/.openspec/.pi-map.md +++ b/openspec/changes/archive/2026-05-19-universal-icon-system/.openspec/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-19-universal-icon-system/.openspec -dir: 2026-05-19-universal-icon-system/.openspec +# openspec/changes/archive/2026-05-19-universal-icon-system/.openspec +dir: openspec/changes/archive/2026-05-19-universal-icon-system/.openspec -index: 2026-05-19-universal-icon-system/.openspec/.pi-map.index.md +index: openspec/changes/archive/2026-05-19-universal-icon-system/.openspec/.pi-map.index.md ## role -Provides configuration specification for a universal icon system that generates icons across multiple platforms and formats from a single source. +Defines a specification-driven configuration schema for a universal icon system within an archived OpenSpec change set. ## files -- config.yaml | Defines a basic configuration for a specification-driven universal icon system +- config.yaml | Defines a YAML configuration file specifying a spec-driven schema for a universal icon system | dep: YAML ## arch -YAML-based declarative configuration pattern defining build targets, output formats, and source asset specifications for cross-platform icon generation. +Declarative YAML-based schema definition using OpenSpec's spec-driven configuration pattern for standardized icon system metadata. ## tags -config, defines, basic, configuration, specification, driven, universal, icon +yaml, config, defines, configuration, specifying, spec, driven, schema ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-19-universal-icon-system/.pi-map.index.md b/openspec/changes/archive/2026-05-19-universal-icon-system/.pi-map.index.md index db3d21d..567b5ac 100644 --- a/openspec/changes/archive/2026-05-19-universal-icon-system/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-19-universal-icon-system/.pi-map.index.md @@ -1,25 +1,25 @@ -# 2026-05-19-universal-icon-system (index) -dir: 2026-05-19-universal-icon-system +# openspec/changes/archive/2026-05-19-universal-icon-system (index) +dir: openspec/changes/archive/2026-05-19-universal-icon-system ## role -Design and planning documentation for a centralized Phosphor icon system to replace inconsistent Unicode symbols in a React application. +Design documentation and planning artifacts for a universal icon system migration initiative using Phosphor Icons in a React application. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2026-05-19-universal-icon-system/.openspec - index: 2026-05-19-universal-icon-system/.openspec/.pi-map.index.md - map: 2026-05-19-universal-icon-system/.openspec/.pi-map.md -- 2026-05-19-universal-icon-system/specs - index: 2026-05-19-universal-icon-system/specs/.pi-map.index.md - map: 2026-05-19-universal-icon-system/specs/.pi-map.md +- openspec/changes/archive/2026-05-19-universal-icon-system/.openspec + index: openspec/changes/archive/2026-05-19-universal-icon-system/.openspec/.pi-map.index.md + map: openspec/changes/archive/2026-05-19-universal-icon-system/.openspec/.pi-map.md +- openspec/changes/archive/2026-05-19-universal-icon-system/specs + index: openspec/changes/archive/2026-05-19-universal-icon-system/specs/.pi-map.index.md + map: openspec/changes/archive/2026-05-19-universal-icon-system/specs/.pi-map.md ## files - design.md - proposal.md - tasks.md ## links -index: 2026-05-19-universal-icon-system/.pi-map.index.md -map: 2026-05-19-universal-icon-system/.pi-map.md +index: openspec/changes/archive/2026-05-19-universal-icon-system/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-universal-icon-system/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-19-universal-icon-system/.pi-map.md b/openspec/changes/archive/2026-05-19-universal-icon-system/.pi-map.md index dc8f69e..ed1cedd 100644 --- a/openspec/changes/archive/2026-05-19-universal-icon-system/.pi-map.md +++ b/openspec/changes/archive/2026-05-19-universal-icon-system/.pi-map.md @@ -1,18 +1,18 @@ -# 2026-05-19-universal-icon-system -dir: 2026-05-19-universal-icon-system +# openspec/changes/archive/2026-05-19-universal-icon-system +dir: openspec/changes/archive/2026-05-19-universal-icon-system -index: 2026-05-19-universal-icon-system/.pi-map.index.md +index: openspec/changes/archive/2026-05-19-universal-icon-system/.pi-map.index.md ## role -Design and planning documentation for a centralized Phosphor icon system to replace inconsistent Unicode symbols in a React application. +Design documentation and planning artifacts for a universal icon system migration initiative using Phosphor Icons in a React application. ## files -- design.md | Design specification for implementing a centralized icon system using Phosphor icons to replace raw Unicode symbols across a React application | dep: @phosphor-icons/react, React, TypeScript, CSS -- proposal.md | Proposes implementing a universal icon system using Phosphor Icons to replace inconsistent Unicode symbols across a frontend project. | dep: phosphor-react -- tasks.md | Project task list for implementing a universal icon system using Phosphor Icons across a React/TypeScript application | dep: @phosphor-icons/react, React, TypeScript, CSS/SCSS +- design.md | Defines the architecture, component design, migration plan, and technical specifications for a centralized icon system using Phosphor icons in a React application. | dep: @phosphor-icons/react, React, TypeScript, CSS +- proposal.md | Proposes implementing a universal icon system using Phosphor Icons to replace inconsistent Unicode symbols across a frontend project. | dep: phosphor-react, React +- tasks.md | Project task list for implementing a universal icon system using Phosphor Icons to replace Unicode symbols and enhance UI components across a React application | dep: @phosphor-icons/react, React/TypeScript (tsx files), npm, CSS ## arch -Markdown-based specification documents using a hierarchical task breakdown (design → proposal → tasks) with no actual code implementation; follows a documentation-first planning pattern for UI component standardization. +Documentation-driven architecture with markdown-based RFC process (proposal → design → tasks) specifying a centralized icon component abstraction layer to replace ad-hoc Unicode symbols with a typed, consistent React icon system. ## tags -react, icons, phosphor, design, implementing, icon, system, across +react, icons, phosphor, design, icon, system, application, @phosphor ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-19-universal-icon-system/specs/.pi-map.index.md b/openspec/changes/archive/2026-05-19-universal-icon-system/specs/.pi-map.index.md index 272300a..be51703 100644 --- a/openspec/changes/archive/2026-05-19-universal-icon-system/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-19-universal-icon-system/specs/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-19-universal-icon-system/specs (index) -dir: 2026-05-19-universal-icon-system/specs +# openspec/changes/archive/2026-05-19-universal-icon-system/specs (index) +dir: openspec/changes/archive/2026-05-19-universal-icon-system/specs ## role -Defines technical specifications and requirements for implementing a universal icon system with standardized sizing, accessibility, and registry-based icon management. +Defines technical specifications for implementing a universal icon system using Phosphor icons with standardized sizing, registration, and accessibility patterns. ## parent -index: 2026-05-19-universal-icon-system/.pi-map.index.md -map: 2026-05-19-universal-icon-system/.pi-map.md +index: openspec/changes/archive/2026-05-19-universal-icon-system/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-universal-icon-system/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-19-universal-icon-system/specs/.pi-map.index.md -map: 2026-05-19-universal-icon-system/specs/.pi-map.md +index: openspec/changes/archive/2026-05-19-universal-icon-system/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-universal-icon-system/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-19-universal-icon-system/specs/.pi-map.md b/openspec/changes/archive/2026-05-19-universal-icon-system/specs/.pi-map.md index cab5bd7..e387db7 100644 --- a/openspec/changes/archive/2026-05-19-universal-icon-system/specs/.pi-map.md +++ b/openspec/changes/archive/2026-05-19-universal-icon-system/specs/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-19-universal-icon-system/specs -dir: 2026-05-19-universal-icon-system/specs +# openspec/changes/archive/2026-05-19-universal-icon-system/specs +dir: openspec/changes/archive/2026-05-19-universal-icon-system/specs -index: 2026-05-19-universal-icon-system/specs/.pi-map.index.md +index: openspec/changes/archive/2026-05-19-universal-icon-system/specs/.pi-map.index.md ## role -Defines technical specifications and requirements for implementing a universal icon system with standardized sizing, accessibility, and registry-based icon management. +Defines technical specifications for implementing a universal icon system using Phosphor icons with standardized sizing, registration, and accessibility patterns. ## files -- spec.md | Specification document defining a universal icon system using Phosphor icons with a centralized registry, size variants, and accessibility requirements. | dep: @phosphor-icons/react +- spec.md | Defines a specification for a universal icon system using Phosphor icons with a centralized registry, size variants, and accessibility requirements. | dep: @phosphor-icons/react ## arch -Specification-driven architecture using centralized registry pattern with variant-based sizing system and accessibility-first design constraints. +Specification-driven architecture using a centralized icon registry pattern with predefined size variants (sm/md/lg/xl), semantic naming conventions, and WCAG-compliant accessibility requirements including aria-label support and decorative icon handling. ## tags -icons, spec, specification, document, defining, universal, icon, system +icons, spec, defines, specification, universal, icon, system, phosphor ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-19-workspace-visual-overhaul/.pi-map.index.md b/openspec/changes/archive/2026-05-19-workspace-visual-overhaul/.pi-map.index.md index e3d96b3..7e58b63 100644 --- a/openspec/changes/archive/2026-05-19-workspace-visual-overhaul/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-19-workspace-visual-overhaul/.pi-map.index.md @@ -1,23 +1,23 @@ -# 2026-05-19-workspace-visual-overhaul (index) -dir: 2026-05-19-workspace-visual-overhaul +# openspec/changes/archive/2026-05-19-workspace-visual-overhaul (index) +dir: openspec/changes/archive/2026-05-19-workspace-visual-overhaul ## role -Design and planning package for a UI/UX visual overhaul of a workspace/settings interface adopting GitHub-style conventions. +Contains design documents and specifications for a planned workspace UI visual overhaul redesign ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2026-05-19-workspace-visual-overhaul/specs - index: 2026-05-19-workspace-visual-overhaul/specs/.pi-map.index.md - map: 2026-05-19-workspace-visual-overhaul/specs/.pi-map.md +- openspec/changes/archive/2026-05-19-workspace-visual-overhaul/specs + index: openspec/changes/archive/2026-05-19-workspace-visual-overhaul/specs/.pi-map.index.md + map: openspec/changes/archive/2026-05-19-workspace-visual-overhaul/specs/.pi-map.md ## files - .openspec.yaml - design.md - proposal.md - tasks.md ## links -index: 2026-05-19-workspace-visual-overhaul/.pi-map.index.md -map: 2026-05-19-workspace-visual-overhaul/.pi-map.md +index: openspec/changes/archive/2026-05-19-workspace-visual-overhaul/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-workspace-visual-overhaul/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-19-workspace-visual-overhaul/.pi-map.md b/openspec/changes/archive/2026-05-19-workspace-visual-overhaul/.pi-map.md index 63c9c00..3e41835 100644 --- a/openspec/changes/archive/2026-05-19-workspace-visual-overhaul/.pi-map.md +++ b/openspec/changes/archive/2026-05-19-workspace-visual-overhaul/.pi-map.md @@ -1,19 +1,19 @@ -# 2026-05-19-workspace-visual-overhaul -dir: 2026-05-19-workspace-visual-overhaul +# openspec/changes/archive/2026-05-19-workspace-visual-overhaul +dir: openspec/changes/archive/2026-05-19-workspace-visual-overhaul -index: 2026-05-19-workspace-visual-overhaul/.pi-map.index.md +index: openspec/changes/archive/2026-05-19-workspace-visual-overhaul/.pi-map.index.md ## role -Design and planning package for a UI/UX visual overhaul of a workspace/settings interface adopting GitHub-style conventions. +Contains design documents and specifications for a planned workspace UI visual overhaul redesign ## files - .openspec.yaml | Defines an OpenSpec configuration file with schema type and creation date metadata -- design.md | Design document for a workspace visual overhaul featuring a new project header, consolidated settings page with tabs, simplified sidebar, and updated routing structure. | dep: React/TypeScript component system, CSS variables/styling system, React Router, existing project API endpoints +- design.md | Design specification for a workspace UI overhaul including new header component, consolidated project settings page with tabs, sidebar simplification, and route restructuring. | dep: React, React Router, CSS variables, existing project/repository APIs - proposal.md | Proposes a UI/UX redesign of a repository workspace to follow GitHub-style layout conventions -- tasks.md | Project task list tracking a multi-phase UI overhaul for a workspace/settings interface with repository management, sidebar cleanup, and polish items +- tasks.md | Project task tracking document for a workspace UI visual overhaul with repository management, settings pages, and responsive design improvements ## arch -Documentation-driven design process using structured markdown specifications (OpenSpec config, design doc, proposal, task tracking) without implementation code. +Specification-driven change management using OpenSpec schema with markdown-based design docs (design.md, proposal.md, tasks.md) following a structured proposal-to-implementation workflow ## tags -design, workspace, .openspec, overhaul, project, settings, sidebar, repository +design, workspace, .openspec, overhaul, project, settings, repository, proposal ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-19-workspace-visual-overhaul/specs/.pi-map.index.md b/openspec/changes/archive/2026-05-19-workspace-visual-overhaul/specs/.pi-map.index.md index 03d32e0..70632f4 100644 --- a/openspec/changes/archive/2026-05-19-workspace-visual-overhaul/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-19-workspace-visual-overhaul/specs/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-19-workspace-visual-overhaul/specs (index) -dir: 2026-05-19-workspace-visual-overhaul/specs +# openspec/changes/archive/2026-05-19-workspace-visual-overhaul/specs (index) +dir: openspec/changes/archive/2026-05-19-workspace-visual-overhaul/specs ## role -Defines technical specifications and requirements for a workspace UI visual overhaul focused on repository management relocation and sidebar simplification. +UI/UX specification for a workspace visual redesign that restructures repository management and navigation patterns. ## parent -index: 2026-05-19-workspace-visual-overhaul/.pi-map.index.md -map: 2026-05-19-workspace-visual-overhaul/.pi-map.md +index: openspec/changes/archive/2026-05-19-workspace-visual-overhaul/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-workspace-visual-overhaul/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-19-workspace-visual-overhaul/specs/.pi-map.index.md -map: 2026-05-19-workspace-visual-overhaul/specs/.pi-map.md +index: openspec/changes/archive/2026-05-19-workspace-visual-overhaul/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-19-workspace-visual-overhaul/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-19-workspace-visual-overhaul/specs/.pi-map.md b/openspec/changes/archive/2026-05-19-workspace-visual-overhaul/specs/.pi-map.md index eb21c02..d081b38 100644 --- a/openspec/changes/archive/2026-05-19-workspace-visual-overhaul/specs/.pi-map.md +++ b/openspec/changes/archive/2026-05-19-workspace-visual-overhaul/specs/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-19-workspace-visual-overhaul/specs -dir: 2026-05-19-workspace-visual-overhaul/specs +# openspec/changes/archive/2026-05-19-workspace-visual-overhaul/specs +dir: openspec/changes/archive/2026-05-19-workspace-visual-overhaul/specs -index: 2026-05-19-workspace-visual-overhaul/specs/.pi-map.index.md +index: openspec/changes/archive/2026-05-19-workspace-visual-overhaul/specs/.pi-map.index.md ## role -Defines technical specifications and requirements for a workspace UI visual overhaul focused on repository management relocation and sidebar simplification. +UI/UX specification for a workspace visual redesign that restructures repository management and navigation patterns. ## files -- spec.md | Specification document for a workspace UI visual overhaul project, defining requirements, route changes, component interfaces, and API contracts for moving repository management into a settings page and simplifying the sidebar navigation. | dep: React, React Router, TypeScript, API client, toast notification system, form validation library, responsive design framework, accessibility tools +- spec.md | UI/UX specification document for a workspace visual overhaul, moving repository management into a settings page, simplifying the sidebar, and introducing GitHub-style navigation patterns. | dep: React, React Router, TypeScript, API (PUT /projects/:id), UI component library (icons, tabs, forms, toast notifications) ## arch -Documentation-driven specification pattern using markdown-based requirements documents that define route changes, component interfaces, and API contracts. +Design specification document using markdown-based documentation pattern with dated archival versioning (YYYY-MM-DD-descriptive-name) for change tracking. ## tags -spec, specification, document, workspace, visual, overhaul, project, defining +spec, specification, document, workspace, visual, overhaul, moving, repository ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/.pi-map.index.md b/openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/.pi-map.index.md index e17b5d2..3828682 100644 --- a/openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/.pi-map.index.md @@ -1,23 +1,23 @@ -# 2026-05-22-cloudflare-tunnel-instances-superseded (index) -dir: 2026-05-22-cloudflare-tunnel-instances-superseded +# openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded (index) +dir: openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded ## role -Superseded architectural proposal and planning documents for migrating tool instance access from an API proxy to Cloudflare Tunnel-based direct HTTPS subdomains. +Archive of a completed architectural decision record documenting the migration from a custom API proxy to Cloudflare Tunnel for direct public HTTPS access to containerized tool instances. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2026-05-22-cloudflare-tunnel-instances-superseded/specs - index: 2026-05-22-cloudflare-tunnel-instances-superseded/specs/.pi-map.index.md - map: 2026-05-22-cloudflare-tunnel-instances-superseded/specs/.pi-map.md +- openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs + index: openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs/.pi-map.md ## files - .openspec.yaml - design.md - proposal.md - tasks.md ## links -index: 2026-05-22-cloudflare-tunnel-instances-superseded/.pi-map.index.md -map: 2026-05-22-cloudflare-tunnel-instances-superseded/.pi-map.md +index: openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/.pi-map.md b/openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/.pi-map.md index 97bccae..9e9ead2 100644 --- a/openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/.pi-map.md @@ -1,19 +1,19 @@ -# 2026-05-22-cloudflare-tunnel-instances-superseded -dir: 2026-05-22-cloudflare-tunnel-instances-superseded +# openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded +dir: openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded -index: 2026-05-22-cloudflare-tunnel-instances-superseded/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/.pi-map.index.md ## role -Superseded architectural proposal and planning documents for migrating tool instance access from an API proxy to Cloudflare Tunnel-based direct HTTPS subdomains. +Archive of a completed architectural decision record documenting the migration from a custom API proxy to Cloudflare Tunnel for direct public HTTPS access to containerized tool instances. ## files -- .openspec.yaml | Defines an OpenAPI specification configuration file with schema type and creation date metadata -- design.md | Architecture design document for replacing an API proxy with Cloudflare Tunnel to expose tool instances via unique HTTPS subdomains | dep: Cloudflare REST API, cloudflared, Docker, httpx, Cloudflare DNS -- proposal.md | Proposes replacing an API proxy endpoint with Cloudflare Tunnel integration to provide direct public URLs for tool instances | dep: FastAPI, Cloudflare API, cloudflared, Docker, Cloudflare Tunnel -- tasks.md | Project task list for migrating a proxy-based application access system to Cloudflare Tunnel-based public URLs | dep: docker-compose.traefik.yml, cloudflared, Cloudflare API, Alembic, FastAPI, React/TypeScript frontend +- .openspec.yaml | Defines an OpenSpec configuration file with schema type and creation date metadata +- design.md | Architecture design document for replacing an API proxy with Cloudflare Tunnel to provide direct HTTPS subdomains for tool instances | dep: Cloudflare API, cloudflared, Docker, httpx, Cloudflare DNS +- proposal.md | Proposes replacing an API proxy endpoint with Cloudflare Tunnel integration to provide direct public URLs for tool instances | dep: FastAPI, Cloudflare API, cloudflared, Docker, WebSocket +- tasks.md | Project task list for migrating from a custom proxy system to Cloudflare Tunnel-based public access for containerized tool instances | dep: docker-compose, cloudflared, Cloudflare API, Traefik, Alembic, Python/FastAPI, React/TypeScript frontend ## arch -Design documentation package using OpenAPI specification configuration, with structured markdown documents covering architecture design, technical proposal, and task breakdown for a cloud infrastructure migration pattern. +Documented ADR (Architecture Decision Record) pattern with layered specification files (proposal, design, tasks) plus OpenSpec metadata for schema versioning and traceability. ## tags -design, proxy, cloudflare, tunnel, cloudflared, docker, .openspec, replacing +design, proxy, cloudflare, tunnel, tool, instances, cloudflare api, cloudflared ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs/.pi-map.index.md b/openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs/.pi-map.index.md index 4f24571..fda7614 100644 --- a/openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs/.pi-map.index.md @@ -1,19 +1,19 @@ -# 2026-05-22-cloudflare-tunnel-instances-superseded/specs (index) -dir: 2026-05-22-cloudflare-tunnel-instances-superseded/specs +# openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs (index) +dir: openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs ## role -Contains specification documents for the Cloudflare tunnel instances feature that has been superseded. +Contains archived specification documents for a Cloudflare tunnel instances feature that was superseded on 2026-05-22, serving as historical record of the design before it was replaced. ## parent -index: 2026-05-22-cloudflare-tunnel-instances-superseded/.pi-map.index.md -map: 2026-05-22-cloudflare-tunnel-instances-superseded/.pi-map.md +index: openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/.pi-map.md ## children -- 2026-05-22-cloudflare-tunnel-instances-superseded/specs/cloudflare-tunnel-management - index: 2026-05-22-cloudflare-tunnel-instances-superseded/specs/cloudflare-tunnel-management/.pi-map.index.md - map: 2026-05-22-cloudflare-tunnel-instances-superseded/specs/cloudflare-tunnel-management/.pi-map.md +- openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs/cloudflare-tunnel-management + index: openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs/cloudflare-tunnel-management/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs/cloudflare-tunnel-management/.pi-map.md ## files ## links -index: 2026-05-22-cloudflare-tunnel-instances-superseded/specs/.pi-map.index.md -map: 2026-05-22-cloudflare-tunnel-instances-superseded/specs/.pi-map.md +index: openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs/.pi-map.md b/openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs/.pi-map.md index fb2e040..77720e9 100644 --- a/openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs/.pi-map.md @@ -1,13 +1,13 @@ -# 2026-05-22-cloudflare-tunnel-instances-superseded/specs -dir: 2026-05-22-cloudflare-tunnel-instances-superseded/specs +# openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs +dir: openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs -index: 2026-05-22-cloudflare-tunnel-instances-superseded/specs/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs/.pi-map.index.md ## role -Contains specification documents for the Cloudflare tunnel instances feature that has been superseded. +Contains archived specification documents for a Cloudflare tunnel instances feature that was superseded on 2026-05-22, serving as historical record of the design before it was replaced. ## files ## arch -Documentation/specification-driven architecture using markdown files to define technical requirements and design decisions for infrastructure components. +Specification-driven design with dated archive organization, using OpenAPI or similar API specification formats for declarative service definition. ## tags - ## symbols diff --git a/openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs/cloudflare-tunnel-management/.pi-map.index.md b/openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs/cloudflare-tunnel-management/.pi-map.index.md index 0d20786..9d06ec0 100644 --- a/openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs/cloudflare-tunnel-management/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs/cloudflare-tunnel-management/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-22-cloudflare-tunnel-instances-superseded/specs/cloudflare-tunnel-management (index) -dir: 2026-05-22-cloudflare-tunnel-instances-superseded/specs/cloudflare-tunnel-management +# openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs/cloudflare-tunnel-management (index) +dir: openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs/cloudflare-tunnel-management ## role -Defines requirements for automated Cloudflare tunnel lifecycle management tied to tool instance start/stop/delete operations with owner-based access control +Defines requirements for automatic Cloudflare tunnel lifecycle management tied to tool instance start/stop/delete operations with owner-based access control. ## parent -index: 2026-05-22-cloudflare-tunnel-instances-superseded/specs/.pi-map.index.md -map: 2026-05-22-cloudflare-tunnel-instances-superseded/specs/.pi-map.md +index: openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-22-cloudflare-tunnel-instances-superseded/specs/cloudflare-tunnel-management/.pi-map.index.md -map: 2026-05-22-cloudflare-tunnel-instances-superseded/specs/cloudflare-tunnel-management/.pi-map.md +index: openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs/cloudflare-tunnel-management/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs/cloudflare-tunnel-management/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs/cloudflare-tunnel-management/.pi-map.md b/openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs/cloudflare-tunnel-management/.pi-map.md index d56e53a..3839821 100644 --- a/openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs/cloudflare-tunnel-management/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs/cloudflare-tunnel-management/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-22-cloudflare-tunnel-instances-superseded/specs/cloudflare-tunnel-management -dir: 2026-05-22-cloudflare-tunnel-instances-superseded/specs/cloudflare-tunnel-management +# openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs/cloudflare-tunnel-management +dir: openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs/cloudflare-tunnel-management -index: 2026-05-22-cloudflare-tunnel-instances-superseded/specs/cloudflare-tunnel-management/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-cloudflare-tunnel-instances-superseded/specs/cloudflare-tunnel-management/.pi-map.index.md ## role -Defines requirements for automated Cloudflare tunnel lifecycle management tied to tool instance start/stop/delete operations with owner-based access control +Defines requirements for automatic Cloudflare tunnel lifecycle management tied to tool instance start/stop/delete operations with owner-based access control. ## files -- spec.md | Defines requirements for automated Cloudflare tunnel lifecycle management tied to tool instance start/stop/delete operations with owner-based access control | dep: Cloudflare API, DNS/CNAME records, database, container orchestration, frontend +- spec.md | Defines requirements for automatic Cloudflare tunnel lifecycle management tied to tool instance start/stop/delete operations with owner-based access control. | dep: Cloudflare API, DNS/CNAME records, database, container orchestration, frontend ## arch -Specification-driven requirements document using structured markdown with functional requirements, access control rules, and lifecycle operation mappings +Specification document using requirements-based architecture with user stories, functional requirements, and access control patterns for cloud infrastructure automation. ## tags -spec, defines, requirements, automated, cloudflare, tunnel, lifecycle, management +spec, defines, requirements, automatic, cloudflare, tunnel, lifecycle, management ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/.pi-map.index.md b/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/.pi-map.index.md index a233e8c..535dea1 100644 --- a/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/.pi-map.index.md @@ -1,23 +1,23 @@ -# 2026-05-22-enforce-single-tool-type-with-port-config (index) -dir: 2026-05-22-enforce-single-tool-type-with-port-config +# openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config (index) +dir: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config ## role -Design and planning package for a system-wide refactoring to enforce single interface types per tool with port configuration requirements +Archive of a completed specification for simplifying tool configuration by replacing multiple interfaces with a single interface type and conditional port configuration. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2026-05-22-enforce-single-tool-type-with-port-config/specs - index: 2026-05-22-enforce-single-tool-type-with-port-config/specs/.pi-map.index.md - map: 2026-05-22-enforce-single-tool-type-with-port-config/specs/.pi-map.md +- openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs + index: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/.pi-map.md ## files - .openspec.yaml - design.md - proposal.md - tasks.md ## links -index: 2026-05-22-enforce-single-tool-type-with-port-config/.pi-map.index.md -map: 2026-05-22-enforce-single-tool-type-with-port-config/.pi-map.md +index: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/.pi-map.md b/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/.pi-map.md index 0d2dba1..74e37c9 100644 --- a/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/.pi-map.md @@ -1,19 +1,19 @@ -# 2026-05-22-enforce-single-tool-type-with-port-config -dir: 2026-05-22-enforce-single-tool-type-with-port-config +# openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config +dir: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config -index: 2026-05-22-enforce-single-tool-type-with-port-config/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/.pi-map.index.md ## role -Design and planning package for a system-wide refactoring to enforce single interface types per tool with port configuration requirements +Archive of a completed specification for simplifying tool configuration by replacing multiple interfaces with a single interface type and conditional port configuration. ## files - .openspec.yaml | Defines an OpenSpec configuration file with schema type and creation date metadata -- design.md | Design document for migrating tool types from a JSON interfaces array to a single interface_type string with requires_port boolean | dep: Alembic, Pydantic, SQLAlchemy, frontend API client, database -- proposal.md | Proposes a breaking change to simplify tool types from supporting multiple interfaces to a single interface type, with conditional port configuration based on interface type. -- tasks.md | Task checklist tracking database migration, backend/frontend API updates, UI changes, and verification steps for refactoring a tool types system from multiple interfaces to single interface_type with requires_port flag | dep: Alembic, SQLAlchemy, Pydantic, TypeScript, React, pytest, npm +- design.md | Design document for migrating tool types from a JSON `interfaces` array to a single `interface_type` string with a `requires_port` boolean, including UI changes and data migration plan. | dep: Alembic, Pydantic, SQLAlchemy, JSON +- proposal.md | Proposes a breaking change to simplify tool type configuration by replacing multiple interfaces with a single interface type and conditionally showing port fields based on a new `requires_port` field. +- tasks.md | Project task checklist tracking a database migration and full-stack refactoring from a multi-interface JSON array to single interface_type string with requires_port boolean across backend, frontend, and tests. | dep: Alembic, SQLAlchemy, Pydantic, TypeScript, React, pytest, npm ## arch -Specification-driven change management using OpenSpec schema definitions, phased design documents (proposal → design → tasks), and migration-based architecture with explicit backend/frontend/UI coordination +Specification-driven change management using OpenSpec metadata, with separated design documents (proposal, design, tasks) tracking a full-stack database migration and UI refactoring across backend/frontend/test layers. ## tags -type, interface, design, tool, types, interfaces, single, port +type, interface, port, design, json, single, requires, configuration ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/.pi-map.index.md b/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/.pi-map.index.md index 011b932..58116f5 100644 --- a/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/.pi-map.index.md @@ -1,28 +1,28 @@ -# 2026-05-22-enforce-single-tool-type-with-port-config/specs (index) -dir: 2026-05-22-enforce-single-tool-type-with-port-config/specs +# openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs (index) +dir: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs ## role -Contains specification documents defining requirements for enforcing single tool type configurations with port settings. +Contains archived specification documents for a 2026 change enforcing single tool type with port configuration ## parent -index: 2026-05-22-enforce-single-tool-type-with-port-config/.pi-map.index.md -map: 2026-05-22-enforce-single-tool-type-with-port-config/.pi-map.md +index: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/.pi-map.md ## children -- 2026-05-22-enforce-single-tool-type-with-port-config/specs/frontend-foundation - index: 2026-05-22-enforce-single-tool-type-with-port-config/specs/frontend-foundation/.pi-map.index.md - map: 2026-05-22-enforce-single-tool-type-with-port-config/specs/frontend-foundation/.pi-map.md -- 2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-port-visibility - index: 2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-port-visibility/.pi-map.index.md - map: 2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-port-visibility/.pi-map.md -- 2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-single-interface - index: 2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-single-interface/.pi-map.index.md - map: 2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-single-interface/.pi-map.md -- 2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-types-definition - index: 2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-types-definition/.pi-map.index.md - map: 2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-types-definition/.pi-map.md +- openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/frontend-foundation + index: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/frontend-foundation/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/frontend-foundation/.pi-map.md +- openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-port-visibility + index: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-port-visibility/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-port-visibility/.pi-map.md +- openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-single-interface + index: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-single-interface/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-single-interface/.pi-map.md +- openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-types-definition + index: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-types-definition/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-types-definition/.pi-map.md ## files ## links -index: 2026-05-22-enforce-single-tool-type-with-port-config/specs/.pi-map.index.md -map: 2026-05-22-enforce-single-tool-type-with-port-config/specs/.pi-map.md +index: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/.pi-map.md b/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/.pi-map.md index 63c6fb1..f412a1d 100644 --- a/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/.pi-map.md @@ -1,13 +1,13 @@ -# 2026-05-22-enforce-single-tool-type-with-port-config/specs -dir: 2026-05-22-enforce-single-tool-type-with-port-config/specs +# openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs +dir: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs -index: 2026-05-22-enforce-single-tool-type-with-port-config/specs/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/.pi-map.index.md ## role -Contains specification documents defining requirements for enforcing single tool type configurations with port settings. +Contains archived specification documents for a 2026 change enforcing single tool type with port configuration ## files ## arch -Documentation-driven specification pattern using dated versioning for feature requirements. +Specification-driven change management with dated archival structure for API/schema evolution tracking ## tags - ## symbols diff --git a/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/frontend-foundation/.pi-map.index.md b/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/frontend-foundation/.pi-map.index.md index 76f8796..ee98f42 100644 --- a/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/frontend-foundation/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/frontend-foundation/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-22-enforce-single-tool-type-with-port-config/specs/frontend-foundation (index) -dir: 2026-05-22-enforce-single-tool-type-with-port-config/specs/frontend-foundation +# openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/frontend-foundation (index) +dir: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/frontend-foundation ## role -Defines UI requirements for a tool workshop interface with dynamic field visibility based on selected interface type +Defines UI specification for a tool workshop interface with dynamic port configuration based on selected tool type ## parent -index: 2026-05-22-enforce-single-tool-type-with-port-config/specs/.pi-map.index.md -map: 2026-05-22-enforce-single-tool-type-with-port-config/specs/.pi-map.md +index: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-22-enforce-single-tool-type-with-port-config/specs/frontend-foundation/.pi-map.index.md -map: 2026-05-22-enforce-single-tool-type-with-port-config/specs/frontend-foundation/.pi-map.md +index: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/frontend-foundation/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/frontend-foundation/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/frontend-foundation/.pi-map.md b/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/frontend-foundation/.pi-map.md index 47579e4..11f1746 100644 --- a/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/frontend-foundation/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/frontend-foundation/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-22-enforce-single-tool-type-with-port-config/specs/frontend-foundation -dir: 2026-05-22-enforce-single-tool-type-with-port-config/specs/frontend-foundation +# openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/frontend-foundation +dir: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/frontend-foundation -index: 2026-05-22-enforce-single-tool-type-with-port-config/specs/frontend-foundation/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/frontend-foundation/.pi-map.index.md ## role -Defines UI requirements for a tool workshop interface with dynamic field visibility based on selected interface type +Defines UI specification for a tool workshop interface with dynamic port configuration based on selected tool type ## files -- spec.md | Define requirements for a tool workshop UI with conditional field visibility based on interface type selection +- spec.md | Defines requirements for a tool workshop UI with an interface type dropdown and conditional visibility of port fields ## arch -Specification-driven design using requirements documentation with conditional configuration patterns for form field management +Markdown-based specification document using conditional field visibility pattern and interface type abstraction for hardware configuration forms ## tags -spec, define, requirements, tool, workshop, conditional, field, visibility +spec, defines, requirements, tool, workshop, interface, type, dropdown ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-port-visibility/.pi-map.index.md b/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-port-visibility/.pi-map.index.md index 94f0c19..d89f502 100644 --- a/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-port-visibility/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-port-visibility/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-port-visibility (index) -dir: 2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-port-visibility +# openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-port-visibility (index) +dir: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-port-visibility ## role -Defines requirements for conditionally showing/hiding port configuration fields and enforcing validation based on whether a tool type requires network ports. +Defines specification requirements for controlling port configuration UI visibility and validation based on tool type capabilities. ## parent -index: 2026-05-22-enforce-single-tool-type-with-port-config/specs/.pi-map.index.md -map: 2026-05-22-enforce-single-tool-type-with-port-config/specs/.pi-map.md +index: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-port-visibility/.pi-map.index.md -map: 2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-port-visibility/.pi-map.md +index: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-port-visibility/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-port-visibility/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-port-visibility/.pi-map.md b/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-port-visibility/.pi-map.md index fa78aa6..c5b6b43 100644 --- a/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-port-visibility/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-port-visibility/.pi-map.md @@ -1,14 +1,14 @@ -# 2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-port-visibility -dir: 2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-port-visibility +# openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-port-visibility +dir: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-port-visibility -index: 2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-port-visibility/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-port-visibility/.pi-map.index.md ## role -Defines requirements for conditionally showing/hiding port configuration fields and enforcing validation based on whether a tool type requires network ports. +Defines specification requirements for controlling port configuration UI visibility and validation based on tool type capabilities. ## files -- spec.md | Defines requirements for conditional port configuration visibility and validation based on a tool type's `requires_port` flag across UI and API. +- spec.md | Defines requirements for conditional port configuration visibility, validation, and UI rendering based on a tool type's `requires_port` flag. ## arch -Specification-driven requirements document using markdown with UI/API cross-cutting concerns, feature-flag-like conditional logic based on tool type metadata, and dual validation (client-side visibility + server-side enforcement). +Specification-driven requirements document using Markdown with structured constraints, validation rules, and UI rendering behavior definitions. ## tags port, spec, defines, requirements, conditional, configuration, visibility, validation ## symbols diff --git a/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-single-interface/.pi-map.index.md b/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-single-interface/.pi-map.index.md index 0e1b7e6..76721e1 100644 --- a/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-single-interface/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-single-interface/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-single-interface (index) -dir: 2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-single-interface +# openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-single-interface (index) +dir: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-single-interface ## role -Defines specification requirements for migrating from legacy multi-interface tool configurations to a single validated interface type with port configuration constraints. +Defines requirements for enforcing single interface types, validating allowed values, and migrating legacy data for a tool type system ## parent -index: 2026-05-22-enforce-single-tool-type-with-port-config/specs/.pi-map.index.md -map: 2026-05-22-enforce-single-tool-type-with-port-config/specs/.pi-map.md +index: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-single-interface/.pi-map.index.md -map: 2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-single-interface/.pi-map.md +index: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-single-interface/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-single-interface/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-single-interface/.pi-map.md b/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-single-interface/.pi-map.md index 622c8c2..793cbcb 100644 --- a/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-single-interface/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-single-interface/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-single-interface -dir: 2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-single-interface +# openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-single-interface +dir: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-single-interface -index: 2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-single-interface/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-type-single-interface/.pi-map.index.md ## role -Defines specification requirements for migrating from legacy multi-interface tool configurations to a single validated interface type with port configuration constraints. +Defines requirements for enforcing single interface types, validating allowed values, and migrating legacy data for a tool type system ## files -- spec.md | Defines requirements for enforcing single interface type validation, migration from legacy interfaces array, and allowed value constraints for tool types +- spec.md | Defines requirements for enforcing single interface types, validating allowed values, and migrating legacy data for a tool type system ## arch -Specification-driven requirements document using constraint-based validation patterns with explicit migration path from legacy array-based interface definitions to single-value enforced types. +Specification-driven design with requirements documentation for validation rules and data migration patterns ## tags -spec, defines, requirements, enforcing, single, interface, type, validation +spec, defines, requirements, enforcing, single, interface, types, validating ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-types-definition/.pi-map.index.md b/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-types-definition/.pi-map.index.md index e24c744..d1e5e4a 100644 --- a/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-types-definition/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-types-definition/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-types-definition (index) -dir: 2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-types-definition +# openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-types-definition (index) +dir: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-types-definition ## role -Defines requirements for a ToolType model and CRUD API with interface validation, port requirements, and template validation. +Defines the software requirements specification for a ToolType model and its CRUD API in a containerized development tools management system. ## parent -index: 2026-05-22-enforce-single-tool-type-with-port-config/specs/.pi-map.index.md -map: 2026-05-22-enforce-single-tool-type-with-port-config/specs/.pi-map.md +index: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-types-definition/.pi-map.index.md -map: 2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-types-definition/.pi-map.md +index: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-types-definition/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-types-definition/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-types-definition/.pi-map.md b/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-types-definition/.pi-map.md index 1627baa..acc3655 100644 --- a/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-types-definition/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-types-definition/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-types-definition -dir: 2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-types-definition +# openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-types-definition +dir: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-types-definition -index: 2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-types-definition/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-enforce-single-tool-type-with-port-config/specs/tool-types-definition/.pi-map.index.md ## role -Defines requirements for a ToolType model and CRUD API with interface validation, port requirements, and template validation. +Defines the software requirements specification for a ToolType model and its CRUD API in a containerized development tools management system. ## files -- spec.md | Specification document defining requirements for a ToolType model and CRUD API with single interface validation, port requirement logic, and template validation | dep: REST API, Docker Compose, YAML parsing, UUID, database timestamps +- spec.md | Software requirements specification for a ToolType model and CRUD API in a system that manages containerized development tools ## arch -Specification-driven API design with domain model constraints (single interface per tool type, conditional port requirements based on interface type, template-based validation). +Specification-driven requirements document using Markdown-based SRS format with entity-relationship definitions, API endpoint specifications, and validation rules for a domain model. ## tags -validation, spec, specification, document, defining, requirements, tooltype, model +spec, software, requirements, specification, tooltype, model, crud, api ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-22-git-repo-ssh-clone-check/.pi-map.index.md b/openspec/changes/archive/2026-05-22-git-repo-ssh-clone-check/.pi-map.index.md index 891459d..0e0a142 100644 --- a/openspec/changes/archive/2026-05-22-git-repo-ssh-clone-check/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-git-repo-ssh-clone-check/.pi-map.index.md @@ -1,11 +1,11 @@ -# 2026-05-22-git-repo-ssh-clone-check (index) -dir: 2026-05-22-git-repo-ssh-clone-check +# openspec/changes/archive/2026-05-22-git-repo-ssh-clone-check (index) +dir: openspec/changes/archive/2026-05-22-git-repo-ssh-clone-check ## role -Defines a feature for SSH-based Git repository cloning with owner/repo shorthand input and preflight existence validation. +Design and specification package for implementing SSH-only git repository cloning with structured clone path validation ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children - ## files @@ -14,8 +14,8 @@ map: ./.pi-map.md - proposal.md - tasks.md ## links -index: 2026-05-22-git-repo-ssh-clone-check/.pi-map.index.md -map: 2026-05-22-git-repo-ssh-clone-check/.pi-map.md +index: openspec/changes/archive/2026-05-22-git-repo-ssh-clone-check/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-git-repo-ssh-clone-check/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-git-repo-ssh-clone-check/.pi-map.md b/openspec/changes/archive/2026-05-22-git-repo-ssh-clone-check/.pi-map.md index 14ed0a4..025397d 100644 --- a/openspec/changes/archive/2026-05-22-git-repo-ssh-clone-check/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-git-repo-ssh-clone-check/.pi-map.md @@ -1,19 +1,19 @@ -# 2026-05-22-git-repo-ssh-clone-check -dir: 2026-05-22-git-repo-ssh-clone-check +# openspec/changes/archive/2026-05-22-git-repo-ssh-clone-check +dir: openspec/changes/archive/2026-05-22-git-repo-ssh-clone-check -index: 2026-05-22-git-repo-ssh-clone-check/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-git-repo-ssh-clone-check/.pi-map.index.md ## role -Defines a feature for SSH-based Git repository cloning with owner/repo shorthand input and preflight existence validation. +Design and specification package for implementing SSH-only git repository cloning with structured clone path validation ## files - .openspec.yaml | Defines an OpenSpec configuration file with schema type and creation date metadata -- design.md | Design document specifying a feature to clone repositories from a hardcoded Git provider using structured owner/repo inputs with preflight existence validation via SSH. | dep: git, existing repository creation endpoint (POST /projects/{project_id}/repositories), shared repository creation dialog -- proposal.md | Proposes a UI/UX enhancement to simplify Git repository creation by allowing owner/repo shorthand input instead of full URLs, with SSH-only clone validation via preflight checks. | dep: git, SSH, frontend dialog components, backend API endpoints, git ls-remote -- tasks.md | Project task tracking document for implementing SSH repository existence checks and structured clone form improvements | dep: git_repositories.py, RepositoryCreateDialog, git.commumedia.org +- design.md | Design specification for adding a structured SSH-only clone path for a fixed git provider while preserving existing repository creation behaviors | dep: git, existing repository creation endpoint (POST /projects/{project_id}/repositories), shared repository creation dialog +- proposal.md | Proposes a UI/UX enhancement to allow SSH-only repository cloning via owner/repo shorthand instead of full URLs, with preflight validation | dep: git, frontend dialog components, backend create endpoint, git_repositories.py +- tasks.md | Project task tracking document for implementing SSH-based repository creation with structured clone forms ## arch -Documentation-driven specification package using OpenSpec schema configuration, separated design/proposal/task documents, and structured SSH validation workflow for Git provider integration. +Specification-driven development using OpenSpec schema with phased documentation (design → proposal → tasks) and preflight validation pattern for UI/UX enhancement ## tags -git, ssh, design, clone, creation, .openspec, document, structured +creation, design, ssh, git, repository, .openspec, structured, clone ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-22-git-repo-working-clones/.pi-map.index.md b/openspec/changes/archive/2026-05-22-git-repo-working-clones/.pi-map.index.md index 7aa1890..4d03217 100644 --- a/openspec/changes/archive/2026-05-22-git-repo-working-clones/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-git-repo-working-clones/.pi-map.index.md @@ -1,11 +1,11 @@ -# 2026-05-22-git-repo-working-clones (index) -dir: 2026-05-22-git-repo-working-clones +# openspec/changes/archive/2026-05-22-git-repo-working-clones (index) +dir: openspec/changes/archive/2026-05-22-git-repo-working-clones ## role -Planning and design documents for migrating the project's Git backend from bare/mirror repositories to standard working-tree clones with proper branch initialization. +Contains archived design documents and task tracking for migrating from bare git repositories to working-tree clones to support workspace-based workflows. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children - ## files @@ -13,8 +13,8 @@ map: ./.pi-map.md - proposal.md - tasks.md ## links -index: 2026-05-22-git-repo-working-clones/.pi-map.index.md -map: 2026-05-22-git-repo-working-clones/.pi-map.md +index: openspec/changes/archive/2026-05-22-git-repo-working-clones/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-git-repo-working-clones/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-git-repo-working-clones/.pi-map.md b/openspec/changes/archive/2026-05-22-git-repo-working-clones/.pi-map.md index c54c2e2..3c9e296 100644 --- a/openspec/changes/archive/2026-05-22-git-repo-working-clones/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-git-repo-working-clones/.pi-map.md @@ -1,18 +1,18 @@ -# 2026-05-22-git-repo-working-clones -dir: 2026-05-22-git-repo-working-clones +# openspec/changes/archive/2026-05-22-git-repo-working-clones +dir: openspec/changes/archive/2026-05-22-git-repo-working-clones -index: 2026-05-22-git-repo-working-clones/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-git-repo-working-clones/.pi-map.index.md ## role -Planning and design documents for migrating the project's Git backend from bare/mirror repositories to standard working-tree clones with proper branch initialization. +Contains archived design documents and task tracking for migrating from bare git repositories to working-tree clones to support workspace-based workflows. ## files -- design.md | Design document for migrating repository creation from bare/mirror repos to working-tree repos with proper branch initialization | dep: git, repository backend, workspace UI, file browser, commit editor, git toolbar -- proposal.md | Proposes changes to repository creation and git operations to use normal working clones instead of mirrored bare repositories -- tasks.md | A task tracking document for backend Git repository creation and synchronization improvements with test coverage and quality gates. +- design.md | Design document specifying changes to repository creation to use working-tree clones instead of bare repos | dep: git, repository creation endpoint, workspace UI, file browser, commit editor, git toolbar +- proposal.md | Proposes changes to repository creation and git sync behavior to support workspace-based workflows instead of mirrored bare repositories +- tasks.md | This file tracks completed development tasks for backend Git repository operations, synchronization helpers, testing, and quality assurance. ## arch -Document-driven architecture with markdown specifications covering design rationale, technical proposals, and task tracking with quality gates and test coverage requirements. +Document-driven change management with phased proposal/design/task artifacts tracking a backend infrastructure migration from mirror-based to workspace-oriented git operations. ## tags -design, repository, creation, git, document, bare, repos, working +design, repository, git, tasks, changes, creation, instead, bare ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-22-instance-health-monitoring/.pi-map.index.md b/openspec/changes/archive/2026-05-22-instance-health-monitoring/.pi-map.index.md index 2344935..7976979 100644 --- a/openspec/changes/archive/2026-05-22-instance-health-monitoring/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-instance-health-monitoring/.pi-map.index.md @@ -1,23 +1,23 @@ -# 2026-05-22-instance-health-monitoring (index) -dir: 2026-05-22-instance-health-monitoring +# openspec/changes/archive/2026-05-22-instance-health-monitoring (index) +dir: openspec/changes/archive/2026-05-22-instance-health-monitoring ## role -Design and planning package for improving instance health monitoring in a container-based tunnel service, covering architecture proposals, implementation tasks, and OpenSpec configuration. +OpenSpec specification package defining architectural improvements for container instance health monitoring and auto-recovery in a tunnel service system ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2026-05-22-instance-health-monitoring/specs - index: 2026-05-22-instance-health-monitoring/specs/.pi-map.index.md - map: 2026-05-22-instance-health-monitoring/specs/.pi-map.md +- openspec/changes/archive/2026-05-22-instance-health-monitoring/specs + index: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/.pi-map.md ## files - .openspec.yaml - design.md - proposal.md - tasks.md ## links -index: 2026-05-22-instance-health-monitoring/.pi-map.index.md -map: 2026-05-22-instance-health-monitoring/.pi-map.md +index: openspec/changes/archive/2026-05-22-instance-health-monitoring/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-instance-health-monitoring/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-instance-health-monitoring/.pi-map.md b/openspec/changes/archive/2026-05-22-instance-health-monitoring/.pi-map.md index 452cbb8..ac8e82b 100644 --- a/openspec/changes/archive/2026-05-22-instance-health-monitoring/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-instance-health-monitoring/.pi-map.md @@ -1,19 +1,19 @@ -# 2026-05-22-instance-health-monitoring -dir: 2026-05-22-instance-health-monitoring +# openspec/changes/archive/2026-05-22-instance-health-monitoring +dir: openspec/changes/archive/2026-05-22-instance-health-monitoring -index: 2026-05-22-instance-health-monitoring/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-instance-health-monitoring/.pi-map.index.md ## role -Design and planning package for improving instance health monitoring in a container-based tunnel service, covering architecture proposals, implementation tasks, and OpenSpec configuration. +OpenSpec specification package defining architectural improvements for container instance health monitoring and auto-recovery in a tunnel service system ## files - .openspec.yaml | Defines an OpenSpec configuration file with schema type and creation date metadata -- design.md | Design document for improving instance health monitoring by distinguishing container health from tunnel health, integrating readiness probes, and preventing false-positive tunnel recreation | dep: Docker, Docker Compose, cloudflared, Docker API, Python, JSON, HTTP/REST API, WebSocket (mentioned as non-goal), database (tool_types table) -- proposal.md | Proposes architectural improvements to instance health monitoring, startup verification, and auto-recovery for a container-based tunnel service. | dep: Docker, docker compose, Docker API, React/Next.js (frontend), Python API backend -- tasks.md | Tracks completed backend and frontend tasks for implementing container startup verification, readiness probes, health checks, smart tunnel recovery, and status display UI | dep: Docker, docker compose, curl, ruff, mypy, tsc, FastAPI/Flask (implied by api/tool_instances.py), React/Vue (implied by frontend components) +- design.md | Design document for improving container instance health monitoring by distinguishing container health from tunnel health and integrating readiness probes into startup flow | dep: Docker, docker compose, cloudflared, Docker API, HTTP/tunnel networking, ToolType model +- proposal.md | Proposes architectural improvements to instance health monitoring, startup verification, and auto-recovery for a container-based tunnel service | dep: Docker, docker compose, Docker API, React/TypeScript frontend, REST API +- tasks.md | Project task checklist tracking backend and frontend implementation for container startup verification, readiness probes, health checks, tunnel recovery, and status display | dep: Docker, Docker Compose, Python (FastAPI), TypeScript/React, curl, ruff, mypy, tsc ## arch -Documentation-driven design with structured specifications (OpenSpec YAML), phased architectural proposals (design/proposal docs), and task-tracked implementation covering health check separation, readiness probes, and smart auto-recovery patterns. +Specification-driven design using OpenSpec schema with phased implementation tracking (proposal → design → tasks), separating container health from tunnel health concerns and integrating Kubernetes-style readiness probes into startup flow ## tags -health, tunnel, design, container, docker, docker compose, tasks, .openspec +health, container, design, tunnel, startup, docker, docker compose, .openspec ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/.pi-map.index.md b/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/.pi-map.index.md index 295d433..003b15f 100644 --- a/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/.pi-map.index.md @@ -1,31 +1,31 @@ -# 2026-05-22-instance-health-monitoring/specs (index) -dir: 2026-05-22-instance-health-monitoring/specs +# openspec/changes/archive/2026-05-22-instance-health-monitoring/specs (index) +dir: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs ## role -Contains specification documents defining requirements and design for the instance health monitoring feature. +Contains archived specification documents for an instance health monitoring feature planned for May 22, 2026 release. ## parent -index: 2026-05-22-instance-health-monitoring/.pi-map.index.md -map: 2026-05-22-instance-health-monitoring/.pi-map.md +index: openspec/changes/archive/2026-05-22-instance-health-monitoring/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-instance-health-monitoring/.pi-map.md ## children -- 2026-05-22-instance-health-monitoring/specs/instance-runtime-health - index: 2026-05-22-instance-health-monitoring/specs/instance-runtime-health/.pi-map.index.md - map: 2026-05-22-instance-health-monitoring/specs/instance-runtime-health/.pi-map.md -- 2026-05-22-instance-health-monitoring/specs/instance-startup-health - index: 2026-05-22-instance-health-monitoring/specs/instance-startup-health/.pi-map.index.md - map: 2026-05-22-instance-health-monitoring/specs/instance-startup-health/.pi-map.md -- 2026-05-22-instance-health-monitoring/specs/readiness-probe-integration - index: 2026-05-22-instance-health-monitoring/specs/readiness-probe-integration/.pi-map.index.md - map: 2026-05-22-instance-health-monitoring/specs/readiness-probe-integration/.pi-map.md -- 2026-05-22-instance-health-monitoring/specs/smart-tunnel-recovery - index: 2026-05-22-instance-health-monitoring/specs/smart-tunnel-recovery/.pi-map.index.md - map: 2026-05-22-instance-health-monitoring/specs/smart-tunnel-recovery/.pi-map.md -- 2026-05-22-instance-health-monitoring/specs/tool-instances - index: 2026-05-22-instance-health-monitoring/specs/tool-instances/.pi-map.index.md - map: 2026-05-22-instance-health-monitoring/specs/tool-instances/.pi-map.md +- openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/instance-runtime-health + index: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/instance-runtime-health/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/instance-runtime-health/.pi-map.md +- openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/instance-startup-health + index: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/instance-startup-health/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/instance-startup-health/.pi-map.md +- openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/readiness-probe-integration + index: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/readiness-probe-integration/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/readiness-probe-integration/.pi-map.md +- openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/smart-tunnel-recovery + index: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/smart-tunnel-recovery/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/smart-tunnel-recovery/.pi-map.md +- openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/tool-instances + index: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/tool-instances/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/tool-instances/.pi-map.md ## files ## links -index: 2026-05-22-instance-health-monitoring/specs/.pi-map.index.md -map: 2026-05-22-instance-health-monitoring/specs/.pi-map.md +index: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/.pi-map.md b/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/.pi-map.md index b3bc9f9..1b9f04d 100644 --- a/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/.pi-map.md @@ -1,13 +1,13 @@ -# 2026-05-22-instance-health-monitoring/specs -dir: 2026-05-22-instance-health-monitoring/specs +# openspec/changes/archive/2026-05-22-instance-health-monitoring/specs +dir: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs -index: 2026-05-22-instance-health-monitoring/specs/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/.pi-map.index.md ## role -Contains specification documents defining requirements and design for the instance health monitoring feature. +Contains archived specification documents for an instance health monitoring feature planned for May 22, 2026 release. ## files ## arch -Documentation-as-code pattern using dated directories for version control and traceability of system specifications. +Document-based specification storage using date-versioned directory hierarchy with no active code artifacts. ## tags - ## symbols diff --git a/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/instance-runtime-health/.pi-map.index.md b/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/instance-runtime-health/.pi-map.index.md index 47ed582..c6e7bc0 100644 --- a/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/instance-runtime-health/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/instance-runtime-health/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-22-instance-health-monitoring/specs/instance-runtime-health (index) -dir: 2026-05-22-instance-health-monitoring/specs/instance-runtime-health +# openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/instance-runtime-health (index) +dir: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/instance-runtime-health ## role -Defines health monitoring, polling, and container state synchronization requirements for a container/instance management system. +Defines system requirements for monitoring instance runtime health, frontend polling, and container state synchronization across web and terminal access modes. ## parent -index: 2026-05-22-instance-health-monitoring/specs/.pi-map.index.md -map: 2026-05-22-instance-health-monitoring/specs/.pi-map.md +index: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-22-instance-health-monitoring/specs/instance-runtime-health/.pi-map.index.md -map: 2026-05-22-instance-health-monitoring/specs/instance-runtime-health/.pi-map.md +index: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/instance-runtime-health/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/instance-runtime-health/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/instance-runtime-health/.pi-map.md b/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/instance-runtime-health/.pi-map.md index 7b8c061..929ee13 100644 --- a/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/instance-runtime-health/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/instance-runtime-health/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-22-instance-health-monitoring/specs/instance-runtime-health -dir: 2026-05-22-instance-health-monitoring/specs/instance-runtime-health +# openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/instance-runtime-health +dir: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/instance-runtime-health -index: 2026-05-22-instance-health-monitoring/specs/instance-runtime-health/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/instance-runtime-health/.pi-map.index.md ## role -Defines health monitoring, polling, and container state synchronization requirements for a container/instance management system. +Defines system requirements for monitoring instance runtime health, frontend polling, and container state synchronization across web and terminal access modes. ## files -- spec.md | Specification document defining health monitoring, polling, and container state synchronization requirements for a container/instance management system | dep: Docker, HTTP tunneling, REST API +- spec.md | Defines system requirements for runtime health monitoring, frontend health polling, and container state synchronization for instances with web and terminal access modes. | dep: Docker, HTTP tunnel, frontend UI, health probe system ## arch -Specification-driven design using requirement documents to formalize system behavior before implementation. +Specification-driven requirements document using markdown-based technical specification pattern with sections for goals, requirements, and implementation details. ## tags -container, spec, specification, document, defining, health, monitoring, polling +health, spec, defines, system, requirements, runtime, monitoring, frontend ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/instance-startup-health/.pi-map.index.md b/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/instance-startup-health/.pi-map.index.md index 3e58a04..9f4c8dd 100644 --- a/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/instance-startup-health/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/instance-startup-health/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-22-instance-health-monitoring/specs/instance-startup-health (index) -dir: 2026-05-22-instance-health-monitoring/specs/instance-startup-health +# openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/instance-startup-health (index) +dir: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/instance-startup-health ## role -Defines technical specifications for verifying container startup health and readiness in a Docker Compose-based tool instance management system. +Defines system requirements for container lifecycle management including startup verification, readiness probes, and health monitoring for Docker-based tool instances. ## parent -index: 2026-05-22-instance-health-monitoring/specs/.pi-map.index.md -map: 2026-05-22-instance-health-monitoring/specs/.pi-map.md +index: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-22-instance-health-monitoring/specs/instance-startup-health/.pi-map.index.md -map: 2026-05-22-instance-health-monitoring/specs/instance-startup-health/.pi-map.md +index: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/instance-startup-health/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/instance-startup-health/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/instance-startup-health/.pi-map.md b/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/instance-startup-health/.pi-map.md index 49fd6a6..a21a5ea 100644 --- a/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/instance-startup-health/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/instance-startup-health/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-22-instance-health-monitoring/specs/instance-startup-health -dir: 2026-05-22-instance-health-monitoring/specs/instance-startup-health +# openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/instance-startup-health +dir: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/instance-startup-health -index: 2026-05-22-instance-health-monitoring/specs/instance-startup-health/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/instance-startup-health/.pi-map.index.md ## role -Defines technical specifications for verifying container startup health and readiness in a Docker Compose-based tool instance management system. +Defines system requirements for container lifecycle management including startup verification, readiness probes, and health monitoring for Docker-based tool instances. ## files -- spec.md | Defines requirements for container startup verification, readiness probe execution, and health monitoring for a tool instance management system using Docker Compose | dep: docker compose, docker ps, readiness probes, tunnels, health endpoints, database +- spec.md | Defines system requirements for container lifecycle management including startup verification, readiness probes, and health monitoring for Docker-based tool instances. | dep: Docker, docker compose, database ## arch -Specification-driven requirements document using prose-based standards with sections for overview, requirements, and implementation notes, targeting integration with Docker Compose health check mechanisms and container orchestration patterns. +Specification document using requirements-driven architecture with clearly defined functional/non-functional requirements, health state machine (Unknown→Pending→Healthy→Unhealthy), and layered monitoring approach (startup verification, readiness probes, runtime health checks). ## tags -spec, defines, requirements, container, startup, verification, readiness, probe +docker, spec, defines, system, requirements, container, lifecycle, management ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/readiness-probe-integration/.pi-map.index.md b/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/readiness-probe-integration/.pi-map.index.md index bbe19cc..2717cc0 100644 --- a/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/readiness-probe-integration/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/readiness-probe-integration/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-22-instance-health-monitoring/specs/readiness-probe-integration (index) -dir: 2026-05-22-instance-health-monitoring/specs/readiness-probe-integration +# openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/readiness-probe-integration (index) +dir: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/readiness-probe-integration ## role -Defines technical specifications for Kubernetes-style readiness probe integration to determine container startup health state +Defines container readiness probe behavior for instance health monitoring during system startup ## parent -index: 2026-05-22-instance-health-monitoring/specs/.pi-map.index.md -map: 2026-05-22-instance-health-monitoring/specs/.pi-map.md +index: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-22-instance-health-monitoring/specs/readiness-probe-integration/.pi-map.index.md -map: 2026-05-22-instance-health-monitoring/specs/readiness-probe-integration/.pi-map.md +index: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/readiness-probe-integration/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/readiness-probe-integration/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/readiness-probe-integration/.pi-map.md b/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/readiness-probe-integration/.pi-map.md index af3314e..3e3aa05 100644 --- a/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/readiness-probe-integration/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/readiness-probe-integration/.pi-map.md @@ -1,14 +1,14 @@ -# 2026-05-22-instance-health-monitoring/specs/readiness-probe-integration -dir: 2026-05-22-instance-health-monitoring/specs/readiness-probe-integration +# openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/readiness-probe-integration +dir: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/readiness-probe-integration -index: 2026-05-22-instance-health-monitoring/specs/readiness-probe-integration/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/readiness-probe-integration/.pi-map.index.md ## role -Defines technical specifications for Kubernetes-style readiness probe integration to determine container startup health state +Defines container readiness probe behavior for instance health monitoring during system startup ## files -- spec.md | Defines requirements for container readiness probe configuration, execution, and result storage during instance startup | dep: docker, container orchestration, health endpoint, logging system +- spec.md | Defines requirements for container readiness probe configuration, execution, and result storage during instance startup | dep: docker, containers, health endpoint, logging system ## arch -Specification-driven requirements document using markdown-based technical specification pattern with functional requirements decomposition +Specification-driven contract defining probe configuration, execution lifecycle, and state persistence patterns ## tags spec, defines, requirements, container, readiness, probe, configuration, execution ## symbols diff --git a/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/smart-tunnel-recovery/.pi-map.index.md b/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/smart-tunnel-recovery/.pi-map.index.md index 02cde60..915461c 100644 --- a/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/smart-tunnel-recovery/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/smart-tunnel-recovery/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-22-instance-health-monitoring/specs/smart-tunnel-recovery (index) -dir: 2026-05-22-instance-health-monitoring/specs/smart-tunnel-recovery +# openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/smart-tunnel-recovery (index) +dir: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/smart-tunnel-recovery ## role -Defines requirements for distinguishing network tunnel failures from application-level errors in a health monitoring system to enable appropriate recovery strategies and user-facing behaviors. +Defines health-check classification logic to distinguish infrastructure tunnel failures from application-layer errors for automated tunnel recovery decisions. ## parent -index: 2026-05-22-instance-health-monitoring/specs/.pi-map.index.md -map: 2026-05-22-instance-health-monitoring/specs/.pi-map.md +index: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-22-instance-health-monitoring/specs/smart-tunnel-recovery/.pi-map.index.md -map: 2026-05-22-instance-health-monitoring/specs/smart-tunnel-recovery/.pi-map.md +index: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/smart-tunnel-recovery/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/smart-tunnel-recovery/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/smart-tunnel-recovery/.pi-map.md b/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/smart-tunnel-recovery/.pi-map.md index 0c2e7d9..8ce45e7 100644 --- a/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/smart-tunnel-recovery/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/smart-tunnel-recovery/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-22-instance-health-monitoring/specs/smart-tunnel-recovery -dir: 2026-05-22-instance-health-monitoring/specs/smart-tunnel-recovery +# openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/smart-tunnel-recovery +dir: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/smart-tunnel-recovery -index: 2026-05-22-instance-health-monitoring/specs/smart-tunnel-recovery/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/smart-tunnel-recovery/.pi-map.index.md ## role -Defines requirements for distinguishing network tunnel failures from application-level errors in a health monitoring system to enable appropriate recovery strategies and user-facing behaviors. +Defines health-check classification logic to distinguish infrastructure tunnel failures from application-layer errors for automated tunnel recovery decisions. ## files -- spec.md | Specifies requirements for classifying tunnel failures versus application errors in a health check system with different UI behaviors and recovery actions. +- spec.md | Specifies requirements for classifying tunnel failures versus application errors in a health check system to determine when tunnel recreation is appropriate | dep: cloudflared, health check system, frontend UI ## arch -Specification-driven design using requirement decomposition with clear separation between failure classification logic, UI state transitions, and automated recovery action definitions. +Specification-driven requirements document using structured markdown with clear categorization of failure modes and decision criteria for a health-monitoring subsystem. ## tags -spec, specifies, requirements, classifying, tunnel, failures, versus, application +tunnel, spec, specifies, requirements, classifying, failures, versus, application ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/tool-instances/.pi-map.index.md b/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/tool-instances/.pi-map.index.md index e0e0b97..2c66308 100644 --- a/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/tool-instances/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/tool-instances/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-22-instance-health-monitoring/specs/tool-instances (index) -dir: 2026-05-22-instance-health-monitoring/specs/tool-instances +# openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/tool-instances (index) +dir: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/tool-instances ## role -Defines system requirements for container health monitoring and automatic tunnel recovery mechanisms. +Defines specification requirements for container tool instance health monitoring and tunnel lifecycle management. ## parent -index: 2026-05-22-instance-health-monitoring/specs/.pi-map.index.md -map: 2026-05-22-instance-health-monitoring/specs/.pi-map.md +index: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-22-instance-health-monitoring/specs/tool-instances/.pi-map.index.md -map: 2026-05-22-instance-health-monitoring/specs/tool-instances/.pi-map.md +index: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/tool-instances/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/tool-instances/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/tool-instances/.pi-map.md b/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/tool-instances/.pi-map.md index 150d1d1..27bbf83 100644 --- a/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/tool-instances/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/tool-instances/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-22-instance-health-monitoring/specs/tool-instances -dir: 2026-05-22-instance-health-monitoring/specs/tool-instances +# openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/tool-instances +dir: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/tool-instances -index: 2026-05-22-instance-health-monitoring/specs/tool-instances/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-instance-health-monitoring/specs/tool-instances/.pi-map.index.md ## role -Defines system requirements for container health monitoring and automatic tunnel recovery mechanisms. +Defines specification requirements for container tool instance health monitoring and tunnel lifecycle management. ## files -- spec.md | Defines modified and added system requirements for container status monitoring, health check endpoints, and smart tunnel recreation logic. +- spec.md | Defines modified, added, and removed requirements for a system tracking container tool status, health monitoring endpoints, and tunnel lifecycle management. ## arch -Requirements specification document following structured system specification pattern with functional requirements for monitoring, health checking, and self-healing infrastructure. +Requirements-driven specification document using change-tracking format (modified/added/removed) for system behavior definition. ## tags -spec, defines, modified, added, system, requirements, container, status +spec, defines, modified, added, removed, requirements, system, tracking ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-22-instance-proxy/.pi-map.index.md b/openspec/changes/archive/2026-05-22-instance-proxy/.pi-map.index.md index da2cf58..da0787b 100644 --- a/openspec/changes/archive/2026-05-22-instance-proxy/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-instance-proxy/.pi-map.index.md @@ -1,23 +1,23 @@ -# 2026-05-22-instance-proxy (index) -dir: 2026-05-22-instance-proxy +# openspec/changes/archive/2026-05-22-instance-proxy (index) +dir: openspec/changes/archive/2026-05-22-instance-proxy ## role -Provides an authenticated HTTP/WebSocket proxy layer to expose internal Docker containerized tool instances to users through a single API endpoint, replacing broken localhost links. +Defines an OpenSpec change proposal for implementing an authenticated HTTP/WebSocket proxy to expose internal Docker tool instances through a unified API endpoint. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2026-05-22-instance-proxy/specs - index: 2026-05-22-instance-proxy/specs/.pi-map.index.md - map: 2026-05-22-instance-proxy/specs/.pi-map.md +- openspec/changes/archive/2026-05-22-instance-proxy/specs + index: openspec/changes/archive/2026-05-22-instance-proxy/specs/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-instance-proxy/specs/.pi-map.md ## files - .openspec.yaml - design.md - proposal.md - tasks.md ## links -index: 2026-05-22-instance-proxy/.pi-map.index.md -map: 2026-05-22-instance-proxy/.pi-map.md +index: openspec/changes/archive/2026-05-22-instance-proxy/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-instance-proxy/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-instance-proxy/.pi-map.md b/openspec/changes/archive/2026-05-22-instance-proxy/.pi-map.md index 6fedf27..d7cf1d3 100644 --- a/openspec/changes/archive/2026-05-22-instance-proxy/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-instance-proxy/.pi-map.md @@ -1,19 +1,19 @@ -# 2026-05-22-instance-proxy -dir: 2026-05-22-instance-proxy +# openspec/changes/archive/2026-05-22-instance-proxy +dir: openspec/changes/archive/2026-05-22-instance-proxy -index: 2026-05-22-instance-proxy/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-instance-proxy/.pi-map.index.md ## role -Provides an authenticated HTTP/WebSocket proxy layer to expose internal Docker containerized tool instances to users through a single API endpoint, replacing broken localhost links. +Defines an OpenSpec change proposal for implementing an authenticated HTTP/WebSocket proxy to expose internal Docker tool instances through a unified API endpoint. ## files -- .openspec.yaml | Defines an OpenAPI specification configuration file with schema type and creation date metadata -- design.md | Design document for implementing a FastAPI-based HTTP/WebSocket proxy to allow users to access internal Docker tool instances through a single authenticated API endpoint. | dep: FastAPI, httpx, starlette.websockets, Docker -- proposal.md | Proposes adding an HTTP/WebSocket proxy endpoint to expose Docker containerized tool instances to users over HTTPS instead of broken localhost links | dep: docker, backend API, frontend, WebSocket, HTTPS -- tasks.md | Project task tracking checklist for implementing a proxy endpoint system that routes HTTP/WebSocket traffic to Docker container instances | dep: Docker, FastAPI/httpx, WebSocket, code-server, ruff, mypy +- .openspec.yaml | Defines an OpenSpec configuration file with schema type and creation date metadata +- design.md | Design document for implementing an HTTP/WebSocket proxy in FastAPI to allow users to access internal Docker tool instances through a single authenticated API endpoint. | dep: FastAPI, httpx, starlette.websockets, Docker, Docker network, ToolInstance model +- proposal.md | Proposes adding an HTTP/WebSocket proxy endpoint to expose Docker-hosted tool instances to users over HTTPS instead of broken localhost links | dep: Docker, backend API, frontend, WebSocket, HTTPS +- tasks.md | A completed task list tracking the implementation of a proxy endpoint system for tool instances, including backend proxy functionality, frontend URL updates, and testing/quality verification. ## arch -FastAPI-based reverse proxy architecture with WebSocket support, using OpenAPI-specified endpoints for authenticated traffic routing to dynamic Docker container instances. +Documentation-driven specification pattern using OpenSpec change tracking with phased task breakdown (backend proxy → frontend integration → testing) for FastAPI-based WebSocket/HTTP proxy architecture. ## tags -docker, websocket, design, fastapi, http, proxy, instances, endpoint +proxy, docker, design, websocket, tool, instances, endpoint, .openspec ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-22-instance-proxy/specs/.pi-map.index.md b/openspec/changes/archive/2026-05-22-instance-proxy/specs/.pi-map.index.md index c66b986..c908a38 100644 --- a/openspec/changes/archive/2026-05-22-instance-proxy/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-instance-proxy/specs/.pi-map.index.md @@ -1,19 +1,19 @@ -# 2026-05-22-instance-proxy/specs (index) -dir: 2026-05-22-instance-proxy/specs +# openspec/changes/archive/2026-05-22-instance-proxy/specs (index) +dir: openspec/changes/archive/2026-05-22-instance-proxy/specs ## role -Contains test specifications and behavioral contracts for the instance-proxy component. +Contains historical specification documents for an instance proxy feature, archived from May 22, 2026, serving as a reference for past design decisions in the OpenSpec project. ## parent -index: 2026-05-22-instance-proxy/.pi-map.index.md -map: 2026-05-22-instance-proxy/.pi-map.md +index: openspec/changes/archive/2026-05-22-instance-proxy/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-instance-proxy/.pi-map.md ## children -- 2026-05-22-instance-proxy/specs/instance-proxy - index: 2026-05-22-instance-proxy/specs/instance-proxy/.pi-map.index.md - map: 2026-05-22-instance-proxy/specs/instance-proxy/.pi-map.md +- openspec/changes/archive/2026-05-22-instance-proxy/specs/instance-proxy + index: openspec/changes/archive/2026-05-22-instance-proxy/specs/instance-proxy/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-instance-proxy/specs/instance-proxy/.pi-map.md ## files ## links -index: 2026-05-22-instance-proxy/specs/.pi-map.index.md -map: 2026-05-22-instance-proxy/specs/.pi-map.md +index: openspec/changes/archive/2026-05-22-instance-proxy/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-instance-proxy/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-instance-proxy/specs/.pi-map.md b/openspec/changes/archive/2026-05-22-instance-proxy/specs/.pi-map.md index 7071a91..260efe9 100644 --- a/openspec/changes/archive/2026-05-22-instance-proxy/specs/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-instance-proxy/specs/.pi-map.md @@ -1,13 +1,13 @@ -# 2026-05-22-instance-proxy/specs -dir: 2026-05-22-instance-proxy/specs +# openspec/changes/archive/2026-05-22-instance-proxy/specs +dir: openspec/changes/archive/2026-05-22-instance-proxy/specs -index: 2026-05-22-instance-proxy/specs/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-instance-proxy/specs/.pi-map.index.md ## role -Contains test specifications and behavioral contracts for the instance-proxy component. +Contains historical specification documents for an instance proxy feature, archived from May 22, 2026, serving as a reference for past design decisions in the OpenSpec project. ## files ## arch -Specification-driven testing with structured test definitions, likely using BDD or contract-based patterns to define expected proxy behaviors. +Simple archival storage pattern with date-based directory versioning and no active code architecture, using flat file organization for immutable specification snapshots. ## tags - ## symbols diff --git a/openspec/changes/archive/2026-05-22-instance-proxy/specs/instance-proxy/.pi-map.index.md b/openspec/changes/archive/2026-05-22-instance-proxy/specs/instance-proxy/.pi-map.index.md index 717475b..70c61af 100644 --- a/openspec/changes/archive/2026-05-22-instance-proxy/specs/instance-proxy/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-instance-proxy/specs/instance-proxy/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-22-instance-proxy/specs/instance-proxy (index) -dir: 2026-05-22-instance-proxy/specs/instance-proxy +# openspec/changes/archive/2026-05-22-instance-proxy/specs/instance-proxy (index) +dir: openspec/changes/archive/2026-05-22-instance-proxy/specs/instance-proxy ## role -Defines API contract for routing client requests to isolated tool instances with authenticated access mediation +Defines API requirements for proxying HTTP and WebSocket traffic from authenticated users to running tool instances with owner-based access control. ## parent -index: 2026-05-22-instance-proxy/specs/.pi-map.index.md -map: 2026-05-22-instance-proxy/specs/.pi-map.md +index: openspec/changes/archive/2026-05-22-instance-proxy/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-instance-proxy/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-22-instance-proxy/specs/instance-proxy/.pi-map.index.md -map: 2026-05-22-instance-proxy/specs/instance-proxy/.pi-map.md +index: openspec/changes/archive/2026-05-22-instance-proxy/specs/instance-proxy/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-instance-proxy/specs/instance-proxy/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-instance-proxy/specs/instance-proxy/.pi-map.md b/openspec/changes/archive/2026-05-22-instance-proxy/specs/instance-proxy/.pi-map.md index 7771b3e..e7cdef2 100644 --- a/openspec/changes/archive/2026-05-22-instance-proxy/specs/instance-proxy/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-instance-proxy/specs/instance-proxy/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-22-instance-proxy/specs/instance-proxy -dir: 2026-05-22-instance-proxy/specs/instance-proxy +# openspec/changes/archive/2026-05-22-instance-proxy/specs/instance-proxy +dir: openspec/changes/archive/2026-05-22-instance-proxy/specs/instance-proxy -index: 2026-05-22-instance-proxy/specs/instance-proxy/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-instance-proxy/specs/instance-proxy/.pi-map.index.md ## role -Defines API contract for routing client requests to isolated tool instances with authenticated access mediation +Defines API requirements for proxying HTTP and WebSocket traffic from authenticated users to running tool instances with owner-based access control. ## files -- spec.md | Specifies API requirements for an HTTP/WebSocket proxy endpoint that forwards requests to running tool instances with owner-based access control +- spec.md | Specifies API requirements for proxying HTTP and WebSocket traffic from authenticated users to running tool instances with owner-based access control ## arch -Specification-driven API design using HTTP/WebSocket dual-protocol proxy pattern with owner-scoped authorization and instance-level request forwarding +Specification-driven API design using requirements documents that define authentication, authorization, and proxy routing patterns for multi-tenant tool instance access. ## tags -spec, specifies, api, requirements, http, websocket, proxy, endpoint +spec, specifies, api, requirements, proxying, http, websocket, traffic ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-22-opencode-web-terminal/.pi-map.index.md b/openspec/changes/archive/2026-05-22-opencode-web-terminal/.pi-map.index.md index 88f2949..4d87e9e 100644 --- a/openspec/changes/archive/2026-05-22-opencode-web-terminal/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-opencode-web-terminal/.pi-map.index.md @@ -1,23 +1,23 @@ -# 2026-05-22-opencode-web-terminal (index) -dir: 2026-05-22-opencode-web-terminal +# openspec/changes/archive/2026-05-22-opencode-web-terminal (index) +dir: openspec/changes/archive/2026-05-22-opencode-web-terminal ## role -Infrastructure configuration package for enabling web terminal access to OpenCode through standardized port management and API specification. +Defines a completed specification for adding web terminal support to the OpenCode tool type and standardizing dynamic port configuration across all tool types in the platform. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2026-05-22-opencode-web-terminal/specs - index: 2026-05-22-opencode-web-terminal/specs/.pi-map.index.md - map: 2026-05-22-opencode-web-terminal/specs/.pi-map.md +- openspec/changes/archive/2026-05-22-opencode-web-terminal/specs + index: openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/.pi-map.md ## files - .openspec.yaml - design.md - proposal.md - tasks.md ## links -index: 2026-05-22-opencode-web-terminal/.pi-map.index.md -map: 2026-05-22-opencode-web-terminal/.pi-map.md +index: openspec/changes/archive/2026-05-22-opencode-web-terminal/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-opencode-web-terminal/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-opencode-web-terminal/.pi-map.md b/openspec/changes/archive/2026-05-22-opencode-web-terminal/.pi-map.md index a6d4001..12d5ff7 100644 --- a/openspec/changes/archive/2026-05-22-opencode-web-terminal/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-opencode-web-terminal/.pi-map.md @@ -1,19 +1,19 @@ -# 2026-05-22-opencode-web-terminal -dir: 2026-05-22-opencode-web-terminal +# openspec/changes/archive/2026-05-22-opencode-web-terminal +dir: openspec/changes/archive/2026-05-22-opencode-web-terminal -index: 2026-05-22-opencode-web-terminal/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-opencode-web-terminal/.pi-map.index.md ## role -Infrastructure configuration package for enabling web terminal access to OpenCode through standardized port management and API specification. +Defines a completed specification for adding web terminal support to the OpenCode tool type and standardizing dynamic port configuration across all tool types in the platform. ## files -- .openspec.yaml | Defines an OpenAPI specification configuration file with schema type and creation date metadata -- design.md | Design document for making OpenCode accessible via web terminal, standardizing port configuration across tool types, and adding validation for tool type ports and interfaces. -- proposal.md | Proposes a systematic tool port configuration system with web interface support for terminal-first tools like OpenCode -- tasks.md | Project task list tracking implementation of tool type port configuration, OpenCode web server integration, tunnel port fixes, frontend updates, database migrations, and testing for a development tools platform | dep: Alembic, Docker Compose, OpenCode, backend API, frontend UI, tunnel service +- .openspec.yaml | Defines an OpenSpec configuration file with schema type and creation date metadata +- design.md | Design document for adding web interface support to OpenCode tool type and standardizing port configuration across tool types +- proposal.md | Proposes a systematic approach to standardize tool port configuration, add web interface support for OpenCode, and ensure proper tunnel port discovery across tool instances. +- tasks.md | A completed task checklist tracking implementation of dynamic port configuration for tool types, OpenCode web server integration, tunnel port fixes, frontend updates, database migrations, and quality gates. | dep: Alembic, Docker Compose, OpenCode, ToolType model, tunnel service, frontend React/TypeScript ## arch -Specification-driven design using OpenAPI configuration, task-tracked iterative implementation, and document-based proposal system covering port validation, tunnel fixes, database migrations, and frontend integration. +Specification-driven change management using OpenSpec schema with structured design/proposal/task documentation pattern, tracking cross-cutting concerns across backend services, tunnel infrastructure, frontend UI, and database migrations. ## tags -configuration, opencode, port, tool, type, design, web, .openspec +tool, port, configuration, opencode, design, web, type, .openspec ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/.pi-map.index.md b/openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/.pi-map.index.md index 47709a3..04391ff 100644 --- a/openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/.pi-map.index.md @@ -1,25 +1,25 @@ -# 2026-05-22-opencode-web-terminal/specs (index) -dir: 2026-05-22-opencode-web-terminal/specs +# openspec/changes/archive/2026-05-22-opencode-web-terminal/specs (index) +dir: openspec/changes/archive/2026-05-22-opencode-web-terminal/specs ## role -Contains test specifications and behavioral contracts for the web terminal component. +Contains archived specification documents for the OpenCode web terminal feature dated May 22, 2026, serving as historical design records for the project's change management process. ## parent -index: 2026-05-22-opencode-web-terminal/.pi-map.index.md -map: 2026-05-22-opencode-web-terminal/.pi-map.md +index: openspec/changes/archive/2026-05-22-opencode-web-terminal/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-opencode-web-terminal/.pi-map.md ## children -- 2026-05-22-opencode-web-terminal/specs/opencode-web-server - index: 2026-05-22-opencode-web-terminal/specs/opencode-web-server/.pi-map.index.md - map: 2026-05-22-opencode-web-terminal/specs/opencode-web-server/.pi-map.md -- 2026-05-22-opencode-web-terminal/specs/tool-port-configuration - index: 2026-05-22-opencode-web-terminal/specs/tool-port-configuration/.pi-map.index.md - map: 2026-05-22-opencode-web-terminal/specs/tool-port-configuration/.pi-map.md -- 2026-05-22-opencode-web-terminal/specs/tool-types - index: 2026-05-22-opencode-web-terminal/specs/tool-types/.pi-map.index.md - map: 2026-05-22-opencode-web-terminal/specs/tool-types/.pi-map.md +- openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/opencode-web-server + index: openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/opencode-web-server/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/opencode-web-server/.pi-map.md +- openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/tool-port-configuration + index: openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/tool-port-configuration/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/tool-port-configuration/.pi-map.md +- openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/tool-types + index: openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/tool-types/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/tool-types/.pi-map.md ## files ## links -index: 2026-05-22-opencode-web-terminal/specs/.pi-map.index.md -map: 2026-05-22-opencode-web-terminal/specs/.pi-map.md +index: openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/.pi-map.md b/openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/.pi-map.md index 128d203..6f14c42 100644 --- a/openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/.pi-map.md @@ -1,13 +1,13 @@ -# 2026-05-22-opencode-web-terminal/specs -dir: 2026-05-22-opencode-web-terminal/specs +# openspec/changes/archive/2026-05-22-opencode-web-terminal/specs +dir: openspec/changes/archive/2026-05-22-opencode-web-terminal/specs -index: 2026-05-22-opencode-web-terminal/specs/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/.pi-map.index.md ## role -Contains test specifications and behavioral contracts for the web terminal component. +Contains archived specification documents for the OpenCode web terminal feature dated May 22, 2026, serving as historical design records for the project's change management process. ## files ## arch -Specification-driven testing pattern using formal test files to define expected behavior before implementation. +Document-oriented archival storage using date-prefixed directory naming convention with flat file organization for version-controlled specification artifacts. ## tags - ## symbols diff --git a/openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/opencode-web-server/.pi-map.index.md b/openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/opencode-web-server/.pi-map.index.md index 9b95792..7cfd9ec 100644 --- a/openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/opencode-web-server/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/opencode-web-server/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-22-opencode-web-terminal/specs/opencode-web-server (index) -dir: 2026-05-22-opencode-web-terminal/specs/opencode-web-server +# openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/opencode-web-server (index) +dir: openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/opencode-web-server ## role -Defines the specification for a web server component that provides browser-based terminal access to OpenCode containers through tunneled connections on port 3000. +Defines the specification for a web server component that provides browser-based terminal access to OpenCode containers through tunneled connections. ## parent -index: 2026-05-22-opencode-web-terminal/specs/.pi-map.index.md -map: 2026-05-22-opencode-web-terminal/specs/.pi-map.md +index: openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-22-opencode-web-terminal/specs/opencode-web-server/.pi-map.index.md -map: 2026-05-22-opencode-web-terminal/specs/opencode-web-server/.pi-map.md +index: openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/opencode-web-server/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/opencode-web-server/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/opencode-web-server/.pi-map.md b/openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/opencode-web-server/.pi-map.md index d89d3e1..ed376ec 100644 --- a/openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/opencode-web-server/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/opencode-web-server/.pi-map.md @@ -1,14 +1,14 @@ -# 2026-05-22-opencode-web-terminal/specs/opencode-web-server -dir: 2026-05-22-opencode-web-terminal/specs/opencode-web-server +# openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/opencode-web-server +dir: openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/opencode-web-server -index: 2026-05-22-opencode-web-terminal/specs/opencode-web-server/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/opencode-web-server/.pi-map.index.md ## role -Defines the specification for a web server component that provides browser-based terminal access to OpenCode containers through tunneled connections on port 3000. +Defines the specification for a web server component that provides browser-based terminal access to OpenCode containers through tunneled connections. ## files -- spec.md | Specifies requirements for OpenCode containers to run a web server on port 3000 with a web terminal interface, proper tunneling, and UI integration. +- spec.md | Specifies requirements for OpenCode containers to run a web server on port 3000 with a web terminal interface, proper tunnel configuration, and dual UI exposure. ## arch -Specification-driven architecture using requirements documents to define container interfaces, port binding conventions, and UI integration patterns without containing implementation code. +Specification-driven architecture using a single markdown-based requirements document that defines port binding, tunnel integration, and dual UI exposure patterns for containerized development environments. ## tags web, spec, specifies, requirements, opencode, containers, run, server ## symbols diff --git a/openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/tool-port-configuration/.pi-map.index.md b/openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/tool-port-configuration/.pi-map.index.md index 6184e27..41e2ef5 100644 --- a/openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/tool-port-configuration/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/tool-port-configuration/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-22-opencode-web-terminal/specs/tool-port-configuration (index) -dir: 2026-05-22-opencode-web-terminal/specs/tool-port-configuration +# openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/tool-port-configuration (index) +dir: openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/tool-port-configuration ## role -Defines specifications for validating and configuring network port assignments and exposure patterns for development tools in containerized environments. +Defines requirements for configuring network ports in tool-type systems, including validation rules, compose template exposure, and multi-interface support. ## parent -index: 2026-05-22-opencode-web-terminal/specs/.pi-map.index.md -map: 2026-05-22-opencode-web-terminal/specs/.pi-map.md +index: openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-22-opencode-web-terminal/specs/tool-port-configuration/.pi-map.index.md -map: 2026-05-22-opencode-web-terminal/specs/tool-port-configuration/.pi-map.md +index: openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/tool-port-configuration/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/tool-port-configuration/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/tool-port-configuration/.pi-map.md b/openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/tool-port-configuration/.pi-map.md index c8da613..53a4fc0 100644 --- a/openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/tool-port-configuration/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/tool-port-configuration/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-22-opencode-web-terminal/specs/tool-port-configuration -dir: 2026-05-22-opencode-web-terminal/specs/tool-port-configuration +# openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/tool-port-configuration +dir: openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/tool-port-configuration -index: 2026-05-22-opencode-web-terminal/specs/tool-port-configuration/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/tool-port-configuration/.pi-map.index.md ## role -Defines specifications for validating and configuring network port assignments and exposure patterns for development tools in containerized environments. +Defines requirements for configuring network ports in tool-type systems, including validation rules, compose template exposure, and multi-interface support. ## files -- spec.md | Defines requirements for tool type validation including default ports, compose template port exposure, and multiple interface support +- spec.md | Defines requirements for a tool type system including default port validation, compose template port exposure, and multiple interface support ## arch -Specification-driven requirements documentation using markdown-based technical specs with structured requirement categories (validation rules, template configurations, multi-interface support). +Specification-driven requirements document using structured markdown with sections for overview, requirements, and test cases. ## tags -spec, defines, requirements, tool, type, validation, including, default +port, spec, defines, requirements, tool, type, system, including ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/tool-types/.pi-map.index.md b/openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/tool-types/.pi-map.index.md index 7869672..d7c74fe 100644 --- a/openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/tool-types/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/tool-types/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-22-opencode-web-terminal/specs/tool-types (index) -dir: 2026-05-22-opencode-web-terminal/specs/tool-types +# openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/tool-types (index) +dir: openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/tool-types ## role -Defines requirements for a tool type management system that validates Docker Compose templates and manages built-in tool definitions +Defines specification requirements for a tool type management system that validates Docker Compose templates and manages built-in tool configurations. ## parent -index: 2026-05-22-opencode-web-terminal/specs/.pi-map.index.md -map: 2026-05-22-opencode-web-terminal/specs/.pi-map.md +index: openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-22-opencode-web-terminal/specs/tool-types/.pi-map.index.md -map: 2026-05-22-opencode-web-terminal/specs/tool-types/.pi-map.md +index: openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/tool-types/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/tool-types/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/tool-types/.pi-map.md b/openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/tool-types/.pi-map.md index b3c6719..f967cf4 100644 --- a/openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/tool-types/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/tool-types/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-22-opencode-web-terminal/specs/tool-types -dir: 2026-05-22-opencode-web-terminal/specs/tool-types +# openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/tool-types +dir: openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/tool-types -index: 2026-05-22-opencode-web-terminal/specs/tool-types/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-opencode-web-terminal/specs/tool-types/.pi-map.index.md ## role -Defines requirements for a tool type management system that validates Docker Compose templates and manages built-in tool definitions +Defines specification requirements for a tool type management system that validates Docker Compose templates and manages built-in tool configurations. ## files -- spec.md | Specifies requirements for a tool type management system with Docker Compose template validation and built-in tool definitions | dep: database, docker-compose, validation framework +- spec.md | Defines modified requirements for a tool type management system with Docker Compose template validation and built-in tool configurations ## arch -Specification-driven architecture using markdown-based requirements documentation with Docker Compose template validation patterns +Specification-driven requirements document using markdown-based documentation pattern with validation rules for container orchestration templates and configuration management schema. ## tags -tool, docker, compose, spec, specifies, requirements, type, management +tool, spec, defines, modified, requirements, type, management, system ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/.pi-map.index.md b/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/.pi-map.index.md index 2d9dc63..894e29a 100644 --- a/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/.pi-map.index.md @@ -1,23 +1,23 @@ -# 2026-05-22-repo-clone-mode-with-ssh (index) -dir: 2026-05-22-repo-clone-mode-with-ssh +# openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh (index) +dir: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh ## role -Implements a repository clone mode with SSH key support to enable isolated, clean-room git operations inside tool instances without affecting host working copies. +Archive of a completed feature specification for adding SSH-based repository clone mode to a container tool instance system ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2026-05-22-repo-clone-mode-with-ssh/specs - index: 2026-05-22-repo-clone-mode-with-ssh/specs/.pi-map.index.md - map: 2026-05-22-repo-clone-mode-with-ssh/specs/.pi-map.md +- openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs + index: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/.pi-map.md ## files - .openspec.yaml - design.md - proposal.md - tasks.md ## links -index: 2026-05-22-repo-clone-mode-with-ssh/.pi-map.index.md -map: 2026-05-22-repo-clone-mode-with-ssh/.pi-map.md +index: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/.pi-map.md b/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/.pi-map.md index 25cd961..764a372 100644 --- a/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/.pi-map.md @@ -1,19 +1,19 @@ -# 2026-05-22-repo-clone-mode-with-ssh -dir: 2026-05-22-repo-clone-mode-with-ssh +# openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh +dir: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh -index: 2026-05-22-repo-clone-mode-with-ssh/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/.pi-map.index.md ## role -Implements a repository clone mode with SSH key support to enable isolated, clean-room git operations inside tool instances without affecting host working copies. +Archive of a completed feature specification for adding SSH-based repository clone mode to a container tool instance system ## files - .openspec.yaml | Defines an OpenSpec configuration file with schema type and creation date metadata -- design.md | Design document specifying a system to support both mount and clone repository access modes for tool instances, with SSH key management for clone operations. | dep: GitRepository, ToolInstance, Alembic, compose templates, SSH key system, _modify_compose_file -- proposal.md | Proposes a feature to add repository clone mode with SSH key support for isolated tool instances, enabling clean-room development and git operations inside containers without affecting the host working copy. | dep: GitRepository, ToolInstance, Docker, SSH keys, database migrations, backend API, frontend UI -- tasks.md | A completed task checklist for implementing SSH key-based git clone functionality with mount/clone modes across database, backend, frontend, and DevOps infrastructure | dep: Alembic, Pydantic, SQLAlchemy, FastAPI, React/TypeScript, pytest, ruff, mypy, npm, git, subprocess, SSH +- design.md | Design document specifying how to add repository clone mode and SSH key integration to a container tool instance system. | dep: Docker Compose, Alembic, Git, SSH, GitRepository model, ToolInstance model, _modify_compose_file helper +- proposal.md | Proposes a feature to add repository clone mode for tool instances with SSH key support, branch selection, and dirty-check deletion protection | dep: GitRepository, tool instances, Docker compose, database migrations, frontend sessions page, backend API +- tasks.md | A completed task checklist tracking the implementation of a repository cloning feature with SSH key support across database, backend, frontend, and infrastructure layers. | dep: Alembic, SQLAlchemy, Pydantic, FastAPI, React/frontend framework, pytest, ruff, mypy, npm, git, code-server, jupyter, opencode ## arch -Feature-driven documentation-first architecture using OpenSpec schema configuration, design/proposal/task documents, and cross-stack implementation (database, backend, frontend, DevOps) supporting dual access modes (mount vs. clone) with SSH credential management. +Specification-driven development using OpenSpec schema with layered implementation tracking (database/backend/frontend/infrastructure) and design-proposal-task workflow pattern ## tags -clone, ssh, design, key, git, .openspec, support, mount +ssh, design, repository, key, .openspec, add, clone, mode ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/.pi-map.index.md b/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/.pi-map.index.md index b0d3c55..7aeb38f 100644 --- a/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/.pi-map.index.md @@ -1,25 +1,25 @@ -# 2026-05-22-repo-clone-mode-with-ssh/specs (index) -dir: 2026-05-22-repo-clone-mode-with-ssh/specs +# openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs (index) +dir: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs ## role -Defines test specifications and requirements for the SSH clone mode feature. +Defines specifications for SSH-based repository clone mode functionality in the OpenSpec changes archive. ## parent -index: 2026-05-22-repo-clone-mode-with-ssh/.pi-map.index.md -map: 2026-05-22-repo-clone-mode-with-ssh/.pi-map.md +index: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/.pi-map.md ## children -- 2026-05-22-repo-clone-mode-with-ssh/specs/git-repo - index: 2026-05-22-repo-clone-mode-with-ssh/specs/git-repo/.pi-map.index.md - map: 2026-05-22-repo-clone-mode-with-ssh/specs/git-repo/.pi-map.md -- 2026-05-22-repo-clone-mode-with-ssh/specs/repo-clone-mode - index: 2026-05-22-repo-clone-mode-with-ssh/specs/repo-clone-mode/.pi-map.index.md - map: 2026-05-22-repo-clone-mode-with-ssh/specs/repo-clone-mode/.pi-map.md -- 2026-05-22-repo-clone-mode-with-ssh/specs/tool-instances - index: 2026-05-22-repo-clone-mode-with-ssh/specs/tool-instances/.pi-map.index.md - map: 2026-05-22-repo-clone-mode-with-ssh/specs/tool-instances/.pi-map.md +- openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/git-repo + index: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/git-repo/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/git-repo/.pi-map.md +- openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/repo-clone-mode + index: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/repo-clone-mode/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/repo-clone-mode/.pi-map.md +- openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/tool-instances + index: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/tool-instances/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/tool-instances/.pi-map.md ## files ## links -index: 2026-05-22-repo-clone-mode-with-ssh/specs/.pi-map.index.md -map: 2026-05-22-repo-clone-mode-with-ssh/specs/.pi-map.md +index: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/.pi-map.md b/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/.pi-map.md index b2d9b52..faf5829 100644 --- a/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/.pi-map.md @@ -1,13 +1,13 @@ -# 2026-05-22-repo-clone-mode-with-ssh/specs -dir: 2026-05-22-repo-clone-mode-with-ssh/specs +# openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs +dir: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs -index: 2026-05-22-repo-clone-mode-with-ssh/specs/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/.pi-map.index.md ## role -Defines test specifications and requirements for the SSH clone mode feature. +Defines specifications for SSH-based repository clone mode functionality in the OpenSpec changes archive. ## files ## arch -Behavior-driven specification files (likely Gherkin/Cucumber format) describing feature scenarios and acceptance criteria. +Documentation/specification storage using dated archival directory structure with isolated feature specs. ## tags - ## symbols diff --git a/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/git-repo/.pi-map.index.md b/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/git-repo/.pi-map.index.md index cc40dff..7fb3bd3 100644 --- a/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/git-repo/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/git-repo/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-22-repo-clone-mode-with-ssh/specs/git-repo (index) -dir: 2026-05-22-repo-clone-mode-with-ssh/specs/git-repo +# openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/git-repo (index) +dir: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/git-repo ## role -Defines specifications for SSH-based Git repository authentication and cloning operations in containerized environments. +Defines SSH authentication requirements for Git repository clone operations in a system specification. ## parent -index: 2026-05-22-repo-clone-mode-with-ssh/specs/.pi-map.index.md -map: 2026-05-22-repo-clone-mode-with-ssh/specs/.pi-map.md +index: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-22-repo-clone-mode-with-ssh/specs/git-repo/.pi-map.index.md -map: 2026-05-22-repo-clone-mode-with-ssh/specs/git-repo/.pi-map.md +index: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/git-repo/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/git-repo/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/git-repo/.pi-map.md b/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/git-repo/.pi-map.md index 21c5a98..92bc9de 100644 --- a/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/git-repo/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/git-repo/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-22-repo-clone-mode-with-ssh/specs/git-repo -dir: 2026-05-22-repo-clone-mode-with-ssh/specs/git-repo +# openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/git-repo +dir: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/git-repo -index: 2026-05-22-repo-clone-mode-with-ssh/specs/git-repo/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/git-repo/.pi-map.index.md ## role -Defines specifications for SSH-based Git repository authentication and cloning operations in containerized environments. +Defines SSH authentication requirements for Git repository clone operations in a system specification. ## files -- spec.md | Defines requirements for associating SSH keys with Git repositories for clone operations and container git access +- spec.md | Specifies requirements for SSH key assignment to Git repositories in a system ## arch -Requirements-driven specification document using markdown-based documentation pattern with user story and acceptance criteria structure. +Document-based specification using Markdown with requirements traceability for version-controlled infrastructure access patterns. ## tags -git, spec, defines, requirements, associating, ssh, keys, repositories +spec, specifies, requirements, ssh, key, assignment, git, repositories ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/repo-clone-mode/.pi-map.index.md b/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/repo-clone-mode/.pi-map.index.md index 96dd7e2..3ac6b57 100644 --- a/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/repo-clone-mode/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/repo-clone-mode/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-22-repo-clone-mode-with-ssh/specs/repo-clone-mode (index) -dir: 2026-05-22-repo-clone-mode-with-ssh/specs/repo-clone-mode +# openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/repo-clone-mode (index) +dir: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/repo-clone-mode ## role -Defines requirements for host-side repository cloning with branch selection, SSH key preparation for containers, and repository dirty state detection +Defines requirements for a Git repository cloning system with SSH key management and dirty state detection for containerized environments. ## parent -index: 2026-05-22-repo-clone-mode-with-ssh/specs/.pi-map.index.md -map: 2026-05-22-repo-clone-mode-with-ssh/specs/.pi-map.md +index: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-22-repo-clone-mode-with-ssh/specs/repo-clone-mode/.pi-map.index.md -map: 2026-05-22-repo-clone-mode-with-ssh/specs/repo-clone-mode/.pi-map.md +index: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/repo-clone-mode/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/repo-clone-mode/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/repo-clone-mode/.pi-map.md b/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/repo-clone-mode/.pi-map.md index 869cba6..b144754 100644 --- a/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/repo-clone-mode/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/repo-clone-mode/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-22-repo-clone-mode-with-ssh/specs/repo-clone-mode -dir: 2026-05-22-repo-clone-mode-with-ssh/specs/repo-clone-mode +# openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/repo-clone-mode +dir: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/repo-clone-mode -index: 2026-05-22-repo-clone-mode-with-ssh/specs/repo-clone-mode/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/repo-clone-mode/.pi-map.index.md ## role -Defines requirements for host-side repository cloning with branch selection, SSH key preparation for containers, and repository dirty state detection +Defines requirements for a Git repository cloning system with SSH key management and dirty state detection for containerized environments. ## files -- spec.md | Defines requirements for host-side repository cloning with branch selection, SSH key preparation for containers, and repository dirty state detection | dep: git, ssh, filesystem +- spec.md | Defines requirements for a system that clones Git repositories on the host filesystem with SSH key management and dirty state detection for containerized instances | dep: git, ssh, filesystem ## arch -Specification-driven design using Markdown-based requirements documents with clear separation of concerns (cloning, SSH key management, state detection) +Specification-driven architecture using a single markdown-based requirements document (spec.md) with no implemented code, following a design-first/documentation-first pattern for future implementation. ## tags -repository, ssh, spec, defines, requirements, host, side, cloning +git, filesystem, ssh, spec, defines, requirements, system, clones ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/tool-instances/.pi-map.index.md b/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/tool-instances/.pi-map.index.md index 2653a50..1c566c6 100644 --- a/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/tool-instances/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/tool-instances/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-22-repo-clone-mode-with-ssh/specs/tool-instances (index) -dir: 2026-05-22-repo-clone-mode-with-ssh/specs/tool-instances +# openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/tool-instances (index) +dir: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/tool-instances ## role -Defines requirements for managing tool instances with lifecycle operations including cloning, mounting, and safe deletion with state validation. +Defines requirements for a tool instance provisioning system supporting clone/mount modes with SSH key management and workspace integrity checks. ## parent -index: 2026-05-22-repo-clone-mode-with-ssh/specs/.pi-map.index.md -map: 2026-05-22-repo-clone-mode-with-ssh/specs/.pi-map.md +index: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-22-repo-clone-mode-with-ssh/specs/tool-instances/.pi-map.index.md -map: 2026-05-22-repo-clone-mode-with-ssh/specs/tool-instances/.pi-map.md +index: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/tool-instances/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/tool-instances/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/tool-instances/.pi-map.md b/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/tool-instances/.pi-map.md index 5c49524..2afe529 100644 --- a/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/tool-instances/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/tool-instances/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-22-repo-clone-mode-with-ssh/specs/tool-instances -dir: 2026-05-22-repo-clone-mode-with-ssh/specs/tool-instances +# openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/tool-instances +dir: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/tool-instances -index: 2026-05-22-repo-clone-mode-with-ssh/specs/tool-instances/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-repo-clone-mode-with-ssh/specs/tool-instances/.pi-map.index.md ## role -Defines requirements for managing tool instances with lifecycle operations including cloning, mounting, and safe deletion with state validation. +Defines requirements for a tool instance provisioning system supporting clone/mount modes with SSH key management and workspace integrity checks. ## files -- spec.md | Specifies requirements for a tool instance management system supporting clone/mount modes, SSH key mounting, and dirty-state checks before deletion. | dep: git, docker-compose, SSH, container runtime +- spec.md | Defines requirements for a system that supports creating tool instances in clone or mount modes, with SSH key mounting for git operations and dirty checks on clone deletion. ## arch -Specification-driven requirements document using markdown-based structured documentation for system behavior and constraints. +Specification-driven requirements document using structured markdown with functional decomposition (create/delete/clone/mount operations), constraint-based design (SSH security, dirty-state validation), and mode-based configuration pattern. ## tags -ssh, spec, specifies, requirements, tool, instance, management, system +clone, spec, defines, requirements, system, supports, creating, tool ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-22-session-management-fixes/.pi-map.index.md b/openspec/changes/archive/2026-05-22-session-management-fixes/.pi-map.index.md index 5a9564c..9d1d81b 100644 --- a/openspec/changes/archive/2026-05-22-session-management-fixes/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-session-management-fixes/.pi-map.index.md @@ -1,23 +1,23 @@ -# 2026-05-22-session-management-fixes (index) -dir: 2026-05-22-session-management-fixes +# openspec/changes/archive/2026-05-22-session-management-fixes (index) +dir: openspec/changes/archive/2026-05-22-session-management-fixes ## role -Design and planning package for session management system improvements using Cloudflare tunnels. +Contains archived specification documents for a 2026 session management UX/reliability improvement initiative focused on tunnel health monitoring and deletion confirmation flows. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2026-05-22-session-management-fixes/specs - index: 2026-05-22-session-management-fixes/specs/.pi-map.index.md - map: 2026-05-22-session-management-fixes/specs/.pi-map.md +- openspec/changes/archive/2026-05-22-session-management-fixes/specs + index: openspec/changes/archive/2026-05-22-session-management-fixes/specs/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-session-management-fixes/specs/.pi-map.md ## files - .openspec.yaml - design.md - proposal.md - tasks.md ## links -index: 2026-05-22-session-management-fixes/.pi-map.index.md -map: 2026-05-22-session-management-fixes/.pi-map.md +index: openspec/changes/archive/2026-05-22-session-management-fixes/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-session-management-fixes/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-session-management-fixes/.pi-map.md b/openspec/changes/archive/2026-05-22-session-management-fixes/.pi-map.md index bb6b81c..424d43b 100644 --- a/openspec/changes/archive/2026-05-22-session-management-fixes/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-session-management-fixes/.pi-map.md @@ -1,19 +1,19 @@ -# 2026-05-22-session-management-fixes -dir: 2026-05-22-session-management-fixes +# openspec/changes/archive/2026-05-22-session-management-fixes +dir: openspec/changes/archive/2026-05-22-session-management-fixes -index: 2026-05-22-session-management-fixes/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-session-management-fixes/.pi-map.index.md ## role -Design and planning package for session management system improvements using Cloudflare tunnels. +Contains archived specification documents for a 2026 session management UX/reliability improvement initiative focused on tunnel health monitoring and deletion confirmation flows. ## files -- .openspec.yaml | Defines an OpenAPI specification configuration file with schema type and creation date metadata -- design.md | Design document for UX and reliability improvements to a session management system using temporary Cloudflare tunnels | dep: React, Cloudflare (cloudflared), HTTP/polling, backend API, database -- proposal.md | Proposes UX and reliability improvements for session management UI including confirmation dialogs, state fixes, tunnel health monitoring, and tunnel recreation capabilities | dep: React, Cloudflare tunnels, Docker, tool_instances API, sessions API -- tasks.md | Project task tracking document listing completed backend and frontend development tasks for tunnel management features in a Docker-based application | dep: docker.py, tool_instances.py, sessions.ts, ToolInstance model, SessionsPage, InstanceList +- .openspec.yaml | Defines an OpenSpec configuration file with schema type and creation date metadata +- design.md | Design document for improving session management UX and reliability through stop confirmation dialogs, immediate state updates after deletion, tunnel health monitoring, and manual tunnel recreation capabilities. | dep: React, Cloudflare tunnels (cloudflared), backend API, database +- proposal.md | Proposes UX and reliability improvements for session management UI including confirmation dialogs, state fixes, and tunnel health monitoring with recreation capabilities | dep: React, Cloudflare tunnels, Docker, Python backend, TypeScript frontend API +- tasks.md | Project task checklist tracking backend and frontend development work for tunnel management features in a Docker-based tool instance system ## arch -Documentation-driven design with structured planning documents (OpenAPI spec, design docs, proposals, task tracking) for a Docker-based web application with tunnel-based remote access. +Document-driven specification archive using OpenSpec schema metadata with phased design-proposal-tasks workflow tracking for Docker-based tunnel management system. ## tags -design, management, tunnel, docker, tasks, .openspec, document, reliability +tunnel, design, management, .openspec, session, reliability, confirmation, dialogs ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-22-session-management-fixes/specs/.pi-map.index.md b/openspec/changes/archive/2026-05-22-session-management-fixes/specs/.pi-map.index.md index d82fe47..39ecf88 100644 --- a/openspec/changes/archive/2026-05-22-session-management-fixes/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-session-management-fixes/specs/.pi-map.index.md @@ -1,25 +1,25 @@ -# 2026-05-22-session-management-fixes/specs (index) -dir: 2026-05-22-session-management-fixes/specs +# openspec/changes/archive/2026-05-22-session-management-fixes/specs (index) +dir: openspec/changes/archive/2026-05-22-session-management-fixes/specs ## role -Contains specifications and design documents for session management fixes planned for the 2026-05-22 release. +Contains archived specification documents for session management fixes from May 22, 2026, serving as historical reference for completed design work. ## parent -index: 2026-05-22-session-management-fixes/.pi-map.index.md -map: 2026-05-22-session-management-fixes/.pi-map.md +index: openspec/changes/archive/2026-05-22-session-management-fixes/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-session-management-fixes/.pi-map.md ## children -- 2026-05-22-session-management-fixes/specs/session-lifecycle-ux - index: 2026-05-22-session-management-fixes/specs/session-lifecycle-ux/.pi-map.index.md - map: 2026-05-22-session-management-fixes/specs/session-lifecycle-ux/.pi-map.md -- 2026-05-22-session-management-fixes/specs/tool-instances - index: 2026-05-22-session-management-fixes/specs/tool-instances/.pi-map.index.md - map: 2026-05-22-session-management-fixes/specs/tool-instances/.pi-map.md -- 2026-05-22-session-management-fixes/specs/tunnel-health-monitoring - index: 2026-05-22-session-management-fixes/specs/tunnel-health-monitoring/.pi-map.index.md - map: 2026-05-22-session-management-fixes/specs/tunnel-health-monitoring/.pi-map.md +- openspec/changes/archive/2026-05-22-session-management-fixes/specs/session-lifecycle-ux + index: openspec/changes/archive/2026-05-22-session-management-fixes/specs/session-lifecycle-ux/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-session-management-fixes/specs/session-lifecycle-ux/.pi-map.md +- openspec/changes/archive/2026-05-22-session-management-fixes/specs/tool-instances + index: openspec/changes/archive/2026-05-22-session-management-fixes/specs/tool-instances/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-session-management-fixes/specs/tool-instances/.pi-map.md +- openspec/changes/archive/2026-05-22-session-management-fixes/specs/tunnel-health-monitoring + index: openspec/changes/archive/2026-05-22-session-management-fixes/specs/tunnel-health-monitoring/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-session-management-fixes/specs/tunnel-health-monitoring/.pi-map.md ## files ## links -index: 2026-05-22-session-management-fixes/specs/.pi-map.index.md -map: 2026-05-22-session-management-fixes/specs/.pi-map.md +index: openspec/changes/archive/2026-05-22-session-management-fixes/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-session-management-fixes/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-session-management-fixes/specs/.pi-map.md b/openspec/changes/archive/2026-05-22-session-management-fixes/specs/.pi-map.md index 5fbc85d..509b1d9 100644 --- a/openspec/changes/archive/2026-05-22-session-management-fixes/specs/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-session-management-fixes/specs/.pi-map.md @@ -1,13 +1,13 @@ -# 2026-05-22-session-management-fixes/specs -dir: 2026-05-22-session-management-fixes/specs +# openspec/changes/archive/2026-05-22-session-management-fixes/specs +dir: openspec/changes/archive/2026-05-22-session-management-fixes/specs -index: 2026-05-22-session-management-fixes/specs/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-session-management-fixes/specs/.pi-map.index.md ## role -Contains specifications and design documents for session management fixes planned for the 2026-05-22 release. +Contains archived specification documents for session management fixes from May 22, 2026, serving as historical reference for completed design work. ## files ## arch -Documentation-driven specification pattern with no executable code, serving as requirements/blueprint reference for implementation. +Simple flat-file archive structure with date-based directory organization for immutable specification storage and version tracking. ## tags - ## symbols diff --git a/openspec/changes/archive/2026-05-22-session-management-fixes/specs/session-lifecycle-ux/.pi-map.index.md b/openspec/changes/archive/2026-05-22-session-management-fixes/specs/session-lifecycle-ux/.pi-map.index.md index c491326..f2c0889 100644 --- a/openspec/changes/archive/2026-05-22-session-management-fixes/specs/session-lifecycle-ux/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-session-management-fixes/specs/session-lifecycle-ux/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-22-session-management-fixes/specs/session-lifecycle-ux (index) -dir: 2026-05-22-session-management-fixes/specs/session-lifecycle-ux +# openspec/changes/archive/2026-05-22-session-management-fixes/specs/session-lifecycle-ux (index) +dir: openspec/changes/archive/2026-05-22-session-management-fixes/specs/session-lifecycle-ux ## role -Defines software requirements for session management UI behaviors including stop confirmation dialogs and immediate deletion updates +Defines UX requirements and user interaction specifications for session lifecycle management features including stop confirmation dialogs and immediate delete feedback behaviors. ## parent -index: 2026-05-22-session-management-fixes/specs/.pi-map.index.md -map: 2026-05-22-session-management-fixes/specs/.pi-map.md +index: openspec/changes/archive/2026-05-22-session-management-fixes/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-session-management-fixes/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-22-session-management-fixes/specs/session-lifecycle-ux/.pi-map.index.md -map: 2026-05-22-session-management-fixes/specs/session-lifecycle-ux/.pi-map.md +index: openspec/changes/archive/2026-05-22-session-management-fixes/specs/session-lifecycle-ux/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-session-management-fixes/specs/session-lifecycle-ux/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-session-management-fixes/specs/session-lifecycle-ux/.pi-map.md b/openspec/changes/archive/2026-05-22-session-management-fixes/specs/session-lifecycle-ux/.pi-map.md index e73a4d2..d6c50ee 100644 --- a/openspec/changes/archive/2026-05-22-session-management-fixes/specs/session-lifecycle-ux/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-session-management-fixes/specs/session-lifecycle-ux/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-22-session-management-fixes/specs/session-lifecycle-ux -dir: 2026-05-22-session-management-fixes/specs/session-lifecycle-ux +# openspec/changes/archive/2026-05-22-session-management-fixes/specs/session-lifecycle-ux +dir: openspec/changes/archive/2026-05-22-session-management-fixes/specs/session-lifecycle-ux -index: 2026-05-22-session-management-fixes/specs/session-lifecycle-ux/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-session-management-fixes/specs/session-lifecycle-ux/.pi-map.index.md ## role -Defines software requirements for session management UI behaviors including stop confirmation dialogs and immediate deletion updates +Defines UX requirements and user interaction specifications for session lifecycle management features including stop confirmation dialogs and immediate delete feedback behaviors. ## files -- spec.md | Defines software requirements for session management UI behaviors including stop confirmation dialogs and immediate deletion updates +- spec.md | Defines software requirements and user scenarios for session management UI behaviors including stop confirmation and immediate delete feedback. ## arch -Specification-driven requirements documentation using markdown-based behavioral specifications with user-centric interaction patterns +Specification-driven requirements documentation using scenario-based UX patterns with user story structure, behavioral state definitions, and explicit UI feedback loop requirements. ## tags -spec, defines, software, requirements, session, management, behaviors, including +spec, defines, software, requirements, user, scenarios, session, management ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-22-session-management-fixes/specs/tool-instances/.pi-map.index.md b/openspec/changes/archive/2026-05-22-session-management-fixes/specs/tool-instances/.pi-map.index.md index a9921d1..5b47931 100644 --- a/openspec/changes/archive/2026-05-22-session-management-fixes/specs/tool-instances/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-session-management-fixes/specs/tool-instances/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-22-session-management-fixes/specs/tool-instances (index) -dir: 2026-05-22-session-management-fixes/specs/tool-instances +# openspec/changes/archive/2026-05-22-session-management-fixes/specs/tool-instances (index) +dir: openspec/changes/archive/2026-05-22-session-management-fixes/specs/tool-instances ## role -Defines requirements for a tool lifecycle management system enabling Docker-based tool deployment with networking and health monitoring. +Defines requirements for a tool lifecycle management system enabling Docker Compose deployment, Cloudflare tunneling, and health monitoring of tool instances. ## parent -index: 2026-05-22-session-management-fixes/specs/.pi-map.index.md -map: 2026-05-22-session-management-fixes/specs/.pi-map.md +index: openspec/changes/archive/2026-05-22-session-management-fixes/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-session-management-fixes/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-22-session-management-fixes/specs/tool-instances/.pi-map.index.md -map: 2026-05-22-session-management-fixes/specs/tool-instances/.pi-map.md +index: openspec/changes/archive/2026-05-22-session-management-fixes/specs/tool-instances/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-session-management-fixes/specs/tool-instances/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-session-management-fixes/specs/tool-instances/.pi-map.md b/openspec/changes/archive/2026-05-22-session-management-fixes/specs/tool-instances/.pi-map.md index 67e98f5..20d8004 100644 --- a/openspec/changes/archive/2026-05-22-session-management-fixes/specs/tool-instances/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-session-management-fixes/specs/tool-instances/.pi-map.md @@ -1,14 +1,14 @@ -# 2026-05-22-session-management-fixes/specs/tool-instances -dir: 2026-05-22-session-management-fixes/specs/tool-instances +# openspec/changes/archive/2026-05-22-session-management-fixes/specs/tool-instances +dir: openspec/changes/archive/2026-05-22-session-management-fixes/specs/tool-instances -index: 2026-05-22-session-management-fixes/specs/tool-instances/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-session-management-fixes/specs/tool-instances/.pi-map.index.md ## role -Defines requirements for a tool lifecycle management system enabling Docker-based tool deployment with networking and health monitoring. +Defines requirements for a tool lifecycle management system enabling Docker Compose deployment, Cloudflare tunneling, and health monitoring of tool instances. ## files -- spec.md | Defines modified and added requirements for a tool lifecycle management system with Docker Compose, Cloudflare tunneling, and health monitoring capabilities. | dep: Docker Compose, cloudflared, Cloudflare tunnel API, HTTP health check client +- spec.md | Defines modified and added requirements for a tool lifecycle management system with Docker Compose, Cloudflare tunneling, and health monitoring capabilities. | dep: Docker Compose, Cloudflare (cloudflared), HTTP/health checks ## arch -Specification-driven requirements documentation using markdown-based structured requirements with sections for new capabilities, modified behaviors, and feature specifications. +Specification-driven architecture using markdown-based requirements documents with structured sections for modifications, additions, and deletions to track system evolution. ## tags spec, defines, modified, added, requirements, tool, lifecycle, management ## symbols diff --git a/openspec/changes/archive/2026-05-22-session-management-fixes/specs/tunnel-health-monitoring/.pi-map.index.md b/openspec/changes/archive/2026-05-22-session-management-fixes/specs/tunnel-health-monitoring/.pi-map.index.md index c226e53..f1944fe 100644 --- a/openspec/changes/archive/2026-05-22-session-management-fixes/specs/tunnel-health-monitoring/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-session-management-fixes/specs/tunnel-health-monitoring/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-22-session-management-fixes/specs/tunnel-health-monitoring (index) -dir: 2026-05-22-session-management-fixes/specs/tunnel-health-monitoring +# openspec/changes/archive/2026-05-22-session-management-fixes/specs/tunnel-health-monitoring (index) +dir: openspec/changes/archive/2026-05-22-session-management-fixes/specs/tunnel-health-monitoring ## role -Defines specifications for detecting and automatically recovering failed cloudflared tunnels to maintain persistent connectivity for running instances. +Defines specifications for monitoring and automatically recreating failed cloudflared tunnels to ensure reliable connectivity. ## parent -index: 2026-05-22-session-management-fixes/specs/.pi-map.index.md -map: 2026-05-22-session-management-fixes/specs/.pi-map.md +index: openspec/changes/archive/2026-05-22-session-management-fixes/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-session-management-fixes/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-22-session-management-fixes/specs/tunnel-health-monitoring/.pi-map.index.md -map: 2026-05-22-session-management-fixes/specs/tunnel-health-monitoring/.pi-map.md +index: openspec/changes/archive/2026-05-22-session-management-fixes/specs/tunnel-health-monitoring/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-session-management-fixes/specs/tunnel-health-monitoring/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-session-management-fixes/specs/tunnel-health-monitoring/.pi-map.md b/openspec/changes/archive/2026-05-22-session-management-fixes/specs/tunnel-health-monitoring/.pi-map.md index b12f088..8cda9dc 100644 --- a/openspec/changes/archive/2026-05-22-session-management-fixes/specs/tunnel-health-monitoring/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-session-management-fixes/specs/tunnel-health-monitoring/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-22-session-management-fixes/specs/tunnel-health-monitoring -dir: 2026-05-22-session-management-fixes/specs/tunnel-health-monitoring +# openspec/changes/archive/2026-05-22-session-management-fixes/specs/tunnel-health-monitoring +dir: openspec/changes/archive/2026-05-22-session-management-fixes/specs/tunnel-health-monitoring -index: 2026-05-22-session-management-fixes/specs/tunnel-health-monitoring/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-session-management-fixes/specs/tunnel-health-monitoring/.pi-map.index.md ## role -Defines specifications for detecting and automatically recovering failed cloudflared tunnels to maintain persistent connectivity for running instances. +Defines specifications for monitoring and automatically recreating failed cloudflared tunnels to ensure reliable connectivity. ## files -- spec.md | Defines requirements for monitoring and recreating cloudflared tunnels for running instances | dep: cloudflared, HTTP health checks, UI components +- spec.md | Specifies requirements for tunnel health monitoring and broken tunnel recreation functionality in a system using cloudflared tunnels | dep: cloudflared, HTTP, UI ## arch -Requirements-driven specification document using scenario-based documentation pattern with defined acceptance criteria for tunnel health monitoring and recreation behavior. +Requirements-driven specification document using Markdown format with functional requirements, acceptance criteria, and error handling patterns for infrastructure resilience. ## tags -cloudflared, spec, defines, requirements, monitoring, recreating, tunnels, running +tunnel, cloudflared, spec, specifies, requirements, health, monitoring, broken ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-22-sessions-hub/.openspec/.pi-map.index.md b/openspec/changes/archive/2026-05-22-sessions-hub/.openspec/.pi-map.index.md index 7dcddad..d195712 100644 --- a/openspec/changes/archive/2026-05-22-sessions-hub/.openspec/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-sessions-hub/.openspec/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-22-sessions-hub/.openspec (index) -dir: 2026-05-22-sessions-hub/.openspec +# openspec/changes/archive/2026-05-22-sessions-hub/.openspec (index) +dir: openspec/changes/archive/2026-05-22-sessions-hub/.openspec ## role -Defines the OpenAPI specification and schema-driven configuration for the sessions hub service API +Defines a spec-driven configuration schema for a sessions hub service in an archived changeset ## parent -index: 2026-05-22-sessions-hub/.pi-map.index.md -map: 2026-05-22-sessions-hub/.pi-map.md +index: openspec/changes/archive/2026-05-22-sessions-hub/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-sessions-hub/.pi-map.md ## children - ## files - config.yaml ## links -index: 2026-05-22-sessions-hub/.openspec/.pi-map.index.md -map: 2026-05-22-sessions-hub/.openspec/.pi-map.md +index: openspec/changes/archive/2026-05-22-sessions-hub/.openspec/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-sessions-hub/.openspec/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-sessions-hub/.openspec/.pi-map.md b/openspec/changes/archive/2026-05-22-sessions-hub/.openspec/.pi-map.md index be8d5f6..b8f6b7e 100644 --- a/openspec/changes/archive/2026-05-22-sessions-hub/.openspec/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-sessions-hub/.openspec/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-22-sessions-hub/.openspec -dir: 2026-05-22-sessions-hub/.openspec +# openspec/changes/archive/2026-05-22-sessions-hub/.openspec +dir: openspec/changes/archive/2026-05-22-sessions-hub/.openspec -index: 2026-05-22-sessions-hub/.openspec/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-sessions-hub/.openspec/.pi-map.index.md ## role -Defines the OpenAPI specification and schema-driven configuration for the sessions hub service API +Defines a spec-driven configuration schema for a sessions hub service in an archived changeset ## files -- config.yaml | Defines a configuration file for a sessions hub service using spec-driven schema +- config.yaml | Defines a basic configuration file for a sessions hub service using spec-driven schema ## arch -Spec-driven schema configuration using YAML-based API contract definition +YAML-based declarative configuration with spec-driven schema pattern for service definition ## tags -config, defines, configuration, sessions, hub, service, spec, driven +config, defines, basic, configuration, sessions, hub, service, spec ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-22-sessions-hub/.pi-map.index.md b/openspec/changes/archive/2026-05-22-sessions-hub/.pi-map.index.md index cc80c42..d975fc5 100644 --- a/openspec/changes/archive/2026-05-22-sessions-hub/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-sessions-hub/.pi-map.index.md @@ -1,25 +1,25 @@ -# 2026-05-22-sessions-hub (index) -dir: 2026-05-22-sessions-hub +# openspec/changes/archive/2026-05-22-sessions-hub (index) +dir: openspec/changes/archive/2026-05-22-sessions-hub ## role -Centralized workspace session management feature enabling users to view, organize, and control active tool instances across projects. +This package contains archived planning documents for a "Sessions Hub" feature that would provide centralized workspace session management in the OpenSpec project. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2026-05-22-sessions-hub/.openspec - index: 2026-05-22-sessions-hub/.openspec/.pi-map.index.md - map: 2026-05-22-sessions-hub/.openspec/.pi-map.md -- 2026-05-22-sessions-hub/specs - index: 2026-05-22-sessions-hub/specs/.pi-map.index.md - map: 2026-05-22-sessions-hub/specs/.pi-map.md +- openspec/changes/archive/2026-05-22-sessions-hub/.openspec + index: openspec/changes/archive/2026-05-22-sessions-hub/.openspec/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-sessions-hub/.openspec/.pi-map.md +- openspec/changes/archive/2026-05-22-sessions-hub/specs + index: openspec/changes/archive/2026-05-22-sessions-hub/specs/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-sessions-hub/specs/.pi-map.md ## files - design.md - proposal.md - tasks.md ## links -index: 2026-05-22-sessions-hub/.pi-map.index.md -map: 2026-05-22-sessions-hub/.pi-map.md +index: openspec/changes/archive/2026-05-22-sessions-hub/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-sessions-hub/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-sessions-hub/.pi-map.md b/openspec/changes/archive/2026-05-22-sessions-hub/.pi-map.md index 73446bd..37c4e8e 100644 --- a/openspec/changes/archive/2026-05-22-sessions-hub/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-sessions-hub/.pi-map.md @@ -1,18 +1,18 @@ -# 2026-05-22-sessions-hub -dir: 2026-05-22-sessions-hub +# openspec/changes/archive/2026-05-22-sessions-hub +dir: openspec/changes/archive/2026-05-22-sessions-hub -index: 2026-05-22-sessions-hub/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-sessions-hub/.pi-map.index.md ## role -Centralized workspace session management feature enabling users to view, organize, and control active tool instances across projects. +This package contains archived planning documents for a "Sessions Hub" feature that would provide centralized workspace session management in the OpenSpec project. ## files -- design.md | Design document for implementing a Sessions Hub feature with page layout, navigation, data flow, and API changes for managing user workspace sessions. | dep: Navigation, AppShell, SessionsPage, UserConfig, API endpoints (/users/me/sessions, /users/me/config), workspace, state management, polling -- proposal.md | Proposes a centralized "Sessions Hub" feature for managing active tool instances across projects -- tasks.md | Project task tracking document for implementing a Sessions Hub feature across backend and frontend | dep: UserConfig model, Alembic, Pydantic, AppShell, React Router, sessions context, workspace, npm +- design.md | Design document for a "Sessions Hub" feature that provides a central UI for managing, creating, and resuming user workspace sessions with navigation integration and persistent last-session tracking. | dep: Navigation/AppShell, SessionsPage, UserConfig API, sessions API, workspace navigation, project/repository selectors +- proposal.md | Product proposal document defining a Sessions Hub feature for centralized management of active tool instances/sessions +- tasks.md | Project task checklist tracking implementation of a Sessions Hub feature across backend, frontend, and quality gates ## arch -Product design documents following a structured proposal-to-design-to-tasks workflow, with API-driven backend/frontend coordination and hub-and-spoke navigation pattern. +Document-driven waterfall planning with separate design, proposal, and task tracking artifacts for cross-functional (backend/frontend/QA) feature implementation. ## tags -sessions, design, hub, feature, workspace, document, implementing, navigation +sessions, design, hub, feature, proposal, document, navigation, tracking ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-22-sessions-hub/specs/.pi-map.index.md b/openspec/changes/archive/2026-05-22-sessions-hub/specs/.pi-map.index.md index e8cb046..3470cb9 100644 --- a/openspec/changes/archive/2026-05-22-sessions-hub/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-sessions-hub/specs/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-22-sessions-hub/specs (index) -dir: 2026-05-22-sessions-hub/specs +# openspec/changes/archive/2026-05-22-sessions-hub/specs (index) +dir: openspec/changes/archive/2026-05-22-sessions-hub/specs ## role -Defines comprehensive technical specifications for the Sessions Hub feature, serving as the authoritative design document for requirements, APIs, UI, and quality standards. +Defines a "Sessions Hub" feature for managing active development sessions through a dedicated navigation tab with real-time indicators and quick access capabilities. ## parent -index: 2026-05-22-sessions-hub/.pi-map.index.md -map: 2026-05-22-sessions-hub/.pi-map.md +index: openspec/changes/archive/2026-05-22-sessions-hub/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-sessions-hub/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-22-sessions-hub/specs/.pi-map.index.md -map: 2026-05-22-sessions-hub/specs/.pi-map.md +index: openspec/changes/archive/2026-05-22-sessions-hub/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-sessions-hub/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-sessions-hub/specs/.pi-map.md b/openspec/changes/archive/2026-05-22-sessions-hub/specs/.pi-map.md index 4c95347..e4a765c 100644 --- a/openspec/changes/archive/2026-05-22-sessions-hub/specs/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-sessions-hub/specs/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-22-sessions-hub/specs -dir: 2026-05-22-sessions-hub/specs +# openspec/changes/archive/2026-05-22-sessions-hub/specs +dir: openspec/changes/archive/2026-05-22-sessions-hub/specs -index: 2026-05-22-sessions-hub/specs/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-sessions-hub/specs/.pi-map.index.md ## role -Defines comprehensive technical specifications for the Sessions Hub feature, serving as the authoritative design document for requirements, APIs, UI, and quality standards. +Defines a "Sessions Hub" feature for managing active development sessions through a dedicated navigation tab with real-time indicators and quick access capabilities. ## files -- spec.md | Defines technical specifications for a "Sessions Hub" feature including requirements, API endpoints, UI layouts, state management, and quality gates for managing user sessions in a web application. | dep: REST API, TypeScript, React/frontend framework (implied by UI specs and quality gates), polling-based state management, Pydantic/BaseModel +- spec.md | Specification document for a "Sessions Hub" feature that adds a new navigation tab for managing running development sessions with real-time badge counts, quick creation, and persistence of last accessed session | dep: Users API, Projects API, Repositories API, Instances API, Tool Types API, User Config API, Sessions Context (existing polling system) ## arch -Specification-driven development with structured documentation covering functional requirements, RESTful API design, component-based UI architecture, Redux-style state management patterns, and gated quality checkpoints. +Product specification document using markdown-based feature specification pattern with requirements decomposition (functional, non-functional, UI/UX, security) and versioned archival storage for change tracking. ## tags -sessions, spec, defines, technical, specifications, hub, feature, including +sessions, spec, specification, document, hub, feature, adds, new ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-22-tool-config-management/.pi-map.index.md b/openspec/changes/archive/2026-05-22-tool-config-management/.pi-map.index.md index d0aca72..901e0ea 100644 --- a/openspec/changes/archive/2026-05-22-tool-config-management/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-tool-config-management/.pi-map.index.md @@ -1,23 +1,23 @@ -# 2026-05-22-tool-config-management (index) -dir: 2026-05-22-tool-config-management +# openspec/changes/archive/2026-05-22-tool-config-management (index) +dir: openspec/changes/archive/2026-05-22-tool-config-management ## role -Designs and tracks implementation of a flexible tool configuration management system for containerized development tools with user-global and project-scoped environment variables and file-based configurations. +Design and planning package for a tool configuration management system that enables user-global and project-scoped tool settings with runtime container mounting. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2026-05-22-tool-config-management/specs - index: 2026-05-22-tool-config-management/specs/.pi-map.index.md - map: 2026-05-22-tool-config-management/specs/.pi-map.md +- openspec/changes/archive/2026-05-22-tool-config-management/specs + index: openspec/changes/archive/2026-05-22-tool-config-management/specs/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-tool-config-management/specs/.pi-map.md ## files - .openspec.yaml - design.md - proposal.md - tasks.md ## links -index: 2026-05-22-tool-config-management/.pi-map.index.md -map: 2026-05-22-tool-config-management/.pi-map.md +index: openspec/changes/archive/2026-05-22-tool-config-management/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-tool-config-management/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-tool-config-management/.pi-map.md b/openspec/changes/archive/2026-05-22-tool-config-management/.pi-map.md index cc526ef..1b25f33 100644 --- a/openspec/changes/archive/2026-05-22-tool-config-management/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-tool-config-management/.pi-map.md @@ -1,19 +1,19 @@ -# 2026-05-22-tool-config-management -dir: 2026-05-22-tool-config-management +# openspec/changes/archive/2026-05-22-tool-config-management +dir: openspec/changes/archive/2026-05-22-tool-config-management -index: 2026-05-22-tool-config-management/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-tool-config-management/.pi-map.index.md ## role -Designs and tracks implementation of a flexible tool configuration management system for containerized development tools with user-global and project-scoped environment variables and file-based configurations. +Design and planning package for a tool configuration management system that enables user-global and project-scoped tool settings with runtime container mounting. ## files -- .openspec.yaml | Defines an OpenAPI specification configuration file with schema type and creation date metadata -- design.md | Design document for implementing a flexible tool configuration system with user-global and project-scoped env vars and file-based configs for containerized tools -- proposal.md | Proposes a feature to add per-user/per-project tool configuration management with categorization and container mounting for a development tools platform. | dep: database, container-runtime, API, frontend -- tasks.md | Project task checklist tracking implementation of tool configuration system with database models, backend APIs, frontend UI, and OpenCode integration +- .openspec.yaml | Defines an OpenSpec configuration file with schema type and creation date metadata +- design.md | Design document for implementing a flexible configuration system for tool instances with user-global and project-scoped configs, tool categories, and interface types +- proposal.md | Proposes a system for managing tool configurations (API keys, settings) per user/project and mounting them into containers at runtime | dep: ToolType model, container runtime, database migrations, frontend UI +- tasks.md | Project task checklist tracking implementation of a tool configuration system with database models, backend APIs, frontend UI, and OpenCode integration ## arch -Specification-driven development using OpenAPI standards, phased implementation tracking (database → backend → frontend → IDE integration), and hierarchical configuration scoping (user-global vs project-specific) with container mount integration. +Specification-driven architecture using OpenSpec schema definitions, phased task-based implementation tracking, and layered documentation (proposal → design → tasks) with container runtime integration pattern for secrets/config injection. ## tags -configuration, design, tool, project, .openspec, system, user, tools +tool, configuration, design, system, project, .openspec, user, proposal ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-22-tool-config-management/specs/.pi-map.index.md b/openspec/changes/archive/2026-05-22-tool-config-management/specs/.pi-map.index.md index a2a2369..c0b8f86 100644 --- a/openspec/changes/archive/2026-05-22-tool-config-management/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-tool-config-management/specs/.pi-map.index.md @@ -1,19 +1,19 @@ -# 2026-05-22-tool-config-management/specs (index) -dir: 2026-05-22-tool-config-management/specs +# openspec/changes/archive/2026-05-22-tool-config-management/specs (index) +dir: openspec/changes/archive/2026-05-22-tool-config-management/specs ## role -Contains specification documents defining requirements and design for a tool configuration management system. +Contains archived specification documents for a tool configuration management feature dated May 22, 2026, serving as historical design records for the openspec project. ## parent -index: 2026-05-22-tool-config-management/.pi-map.index.md -map: 2026-05-22-tool-config-management/.pi-map.md +index: openspec/changes/archive/2026-05-22-tool-config-management/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-tool-config-management/.pi-map.md ## children -- 2026-05-22-tool-config-management/specs/tool-config-management - index: 2026-05-22-tool-config-management/specs/tool-config-management/.pi-map.index.md - map: 2026-05-22-tool-config-management/specs/tool-config-management/.pi-map.md +- openspec/changes/archive/2026-05-22-tool-config-management/specs/tool-config-management + index: openspec/changes/archive/2026-05-22-tool-config-management/specs/tool-config-management/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-tool-config-management/specs/tool-config-management/.pi-map.md ## files ## links -index: 2026-05-22-tool-config-management/specs/.pi-map.index.md -map: 2026-05-22-tool-config-management/specs/.pi-map.md +index: openspec/changes/archive/2026-05-22-tool-config-management/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-tool-config-management/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-tool-config-management/specs/.pi-map.md b/openspec/changes/archive/2026-05-22-tool-config-management/specs/.pi-map.md index d89dc57..812d33f 100644 --- a/openspec/changes/archive/2026-05-22-tool-config-management/specs/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-tool-config-management/specs/.pi-map.md @@ -1,13 +1,13 @@ -# 2026-05-22-tool-config-management/specs -dir: 2026-05-22-tool-config-management/specs +# openspec/changes/archive/2026-05-22-tool-config-management/specs +dir: openspec/changes/archive/2026-05-22-tool-config-management/specs -index: 2026-05-22-tool-config-management/specs/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-tool-config-management/specs/.pi-map.index.md ## role -Contains specification documents defining requirements and design for a tool configuration management system. +Contains archived specification documents for a tool configuration management feature dated May 22, 2026, serving as historical design records for the openspec project. ## files ## arch -Documentation-driven specification pattern using dated directory organization to track evolving system requirements over time. +Document-based specification storage with date-versioned archival organization, using flat file structure for immutable design snapshots. ## tags - ## symbols diff --git a/openspec/changes/archive/2026-05-22-tool-config-management/specs/tool-config-management/.pi-map.index.md b/openspec/changes/archive/2026-05-22-tool-config-management/specs/tool-config-management/.pi-map.index.md index 1512747..c74962d 100644 --- a/openspec/changes/archive/2026-05-22-tool-config-management/specs/tool-config-management/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-tool-config-management/specs/tool-config-management/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-22-tool-config-management/specs/tool-config-management (index) -dir: 2026-05-22-tool-config-management/specs/tool-config-management +# openspec/changes/archive/2026-05-22-tool-config-management/specs/tool-config-management (index) +dir: openspec/changes/archive/2026-05-22-tool-config-management/specs/tool-config-management ## role -Defines system requirements for user-scoped tool configurations, environment/file config types, tool categorization with interfaces, and built-in OpenCode tool support +Defines system requirements for user-scoped tool configuration management, including configuration types, tool categorization, and built-in OpenCode tool support. ## parent -index: 2026-05-22-tool-config-management/specs/.pi-map.index.md -map: 2026-05-22-tool-config-management/specs/.pi-map.md +index: openspec/changes/archive/2026-05-22-tool-config-management/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-tool-config-management/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-22-tool-config-management/specs/tool-config-management/.pi-map.index.md -map: 2026-05-22-tool-config-management/specs/tool-config-management/.pi-map.md +index: openspec/changes/archive/2026-05-22-tool-config-management/specs/tool-config-management/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-tool-config-management/specs/tool-config-management/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-tool-config-management/specs/tool-config-management/.pi-map.md b/openspec/changes/archive/2026-05-22-tool-config-management/specs/tool-config-management/.pi-map.md index cd81e56..7ff2c77 100644 --- a/openspec/changes/archive/2026-05-22-tool-config-management/specs/tool-config-management/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-tool-config-management/specs/tool-config-management/.pi-map.md @@ -1,14 +1,14 @@ -# 2026-05-22-tool-config-management/specs/tool-config-management -dir: 2026-05-22-tool-config-management/specs/tool-config-management +# openspec/changes/archive/2026-05-22-tool-config-management/specs/tool-config-management +dir: openspec/changes/archive/2026-05-22-tool-config-management/specs/tool-config-management -index: 2026-05-22-tool-config-management/specs/tool-config-management/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-tool-config-management/specs/tool-config-management/.pi-map.index.md ## role -Defines system requirements for user-scoped tool configurations, environment/file config types, tool categorization with interfaces, and built-in OpenCode tool support +Defines system requirements for user-scoped tool configuration management, including configuration types, tool categorization, and built-in OpenCode tool support. ## files -- spec.md | Defines system requirements for user-scoped tool configurations, environment/file config types, tool categorization with interfaces, and built-in OpenCode tool support +- spec.md | Defines system requirements for user-scoped tool configurations, config types (env/file), tool categorization/interfaces, and built-in OpenCode tool support ## arch -Specification-driven architecture using markdown-based requirements documentation with interface definitions for tool configuration management +Specification-driven architecture using markdown-based requirements documents with typed configuration schemas (environment variables, file-based configs), tool interface definitions, and hierarchical tool categorization for extensible tool ecosystem integration. ## tags tool, spec, defines, system, requirements, user, scoped, configurations ## symbols diff --git a/openspec/changes/archive/2026-05-22-tool-config-ui-rework/.pi-map.index.md b/openspec/changes/archive/2026-05-22-tool-config-ui-rework/.pi-map.index.md index d510e36..fc61f78 100644 --- a/openspec/changes/archive/2026-05-22-tool-config-ui-rework/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-tool-config-ui-rework/.pi-map.index.md @@ -1,23 +1,23 @@ -# 2026-05-22-tool-config-ui-rework (index) -dir: 2026-05-22-tool-config-ui-rework +# openspec/changes/archive/2026-05-22-tool-config-ui-rework (index) +dir: openspec/changes/archive/2026-05-22-tool-config-ui-rework ## role -Design and planning package for a UI/UX rework of a tool configuration management interface with backend schema changes +Archive directory containing design documents and implementation plans for a 2026 UI/UX rework of a tool configuration management interface. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2026-05-22-tool-config-ui-rework/specs - index: 2026-05-22-tool-config-ui-rework/specs/.pi-map.index.md - map: 2026-05-22-tool-config-ui-rework/specs/.pi-map.md +- openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs + index: openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs/.pi-map.md ## files - .openspec.yaml - design.md - proposal.md - tasks.md ## links -index: 2026-05-22-tool-config-ui-rework/.pi-map.index.md -map: 2026-05-22-tool-config-ui-rework/.pi-map.md +index: openspec/changes/archive/2026-05-22-tool-config-ui-rework/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-tool-config-ui-rework/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-tool-config-ui-rework/.pi-map.md b/openspec/changes/archive/2026-05-22-tool-config-ui-rework/.pi-map.md index aded380..6cd93ad 100644 --- a/openspec/changes/archive/2026-05-22-tool-config-ui-rework/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-tool-config-ui-rework/.pi-map.md @@ -1,19 +1,19 @@ -# 2026-05-22-tool-config-ui-rework -dir: 2026-05-22-tool-config-ui-rework +# openspec/changes/archive/2026-05-22-tool-config-ui-rework +dir: openspec/changes/archive/2026-05-22-tool-config-ui-rework -index: 2026-05-22-tool-config-ui-rework/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-tool-config-ui-rework/.pi-map.index.md ## role -Design and planning package for a UI/UX rework of a tool configuration management interface with backend schema changes +Archive directory containing design documents and implementation plans for a 2026 UI/UX rework of a tool configuration management interface. ## files -- .openspec.yaml | Defines an OpenAPI specification configuration file with schema type and creation date metadata -- design.md | Design document for redesigning a tool configuration page with split-pane layout, new configuration fields, and improved UX | dep: PostgreSQL, JSON, Docker/container runtime (referenced but not modified) -- proposal.md | Proposes a UI/UX redesign of a tool configuration management page with backend schema changes to support additional configuration fields | dep: database, API endpoints, frontend components, migration system -- tasks.md | Project task checklist tracking implementation of container runtime configuration features across database, backend, and frontend | dep: Alembic, SQLAlchemy, Pydantic, FastAPI, React/TypeScript, JSON editor component, ruff, mypy, tsc, eslint +- .openspec.yaml | Defines an OpenSpec configuration file with schema type and creation date metadata +- design.md | Design document for redesigning a tool configuration UI from a flat list to a split-pane layout with expanded configuration fields and JSON-backed flexible data structures. | dep: PostgreSQL, responsive UI framework, JSON editor component +- proposal.md | Proposes a UI/UX redesign and backend enhancement for a tool configuration management page with new fields and a split-pane layout | dep: tool-configs page, tool-types display, database migration system, backend API, frontend component system +- tasks.md | Project task checklist tracking implementation of containerized tool configuration management with database migrations, backend API updates, and frontend split-pane UI | dep: Alembic, SQLAlchemy, Pydantic, FastAPI/HTTP API, React/TypeScript frontend, JSON editor component, ruff, mypy, tsc, eslint ## arch -Specification-driven design with OpenAPI configuration, split-pane frontend layout, and cross-layer task tracking across database/backend/frontend tiers +Document-driven specification pattern using OpenSpec metadata with phased implementation tracking (design → proposal → tasks) for a split-pane frontend architecture backed by JSON-flexible data structures and containerized deployment. ## tags -configuration, design, schema, .openspec, tool, page, fields, backend +configuration, tool, design, split, pane, .openspec, layout, fields ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs/.pi-map.index.md b/openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs/.pi-map.index.md index f2e6972..6cf6e4a 100644 --- a/openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs/.pi-map.index.md @@ -1,19 +1,19 @@ -# 2026-05-22-tool-config-ui-rework/specs (index) -dir: 2026-05-22-tool-config-ui-rework/specs +# openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs (index) +dir: openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs ## role -Contains specification documents for the tool configuration UI rework planned for 2026-05-22. +Contains archived specification documents for a UI rework of tool configuration from May 2026. ## parent -index: 2026-05-22-tool-config-ui-rework/.pi-map.index.md -map: 2026-05-22-tool-config-ui-rework/.pi-map.md +index: openspec/changes/archive/2026-05-22-tool-config-ui-rework/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-tool-config-ui-rework/.pi-map.md ## children -- 2026-05-22-tool-config-ui-rework/specs/tool-config-management - index: 2026-05-22-tool-config-ui-rework/specs/tool-config-management/.pi-map.index.md - map: 2026-05-22-tool-config-ui-rework/specs/tool-config-management/.pi-map.md +- openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs/tool-config-management + index: openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs/tool-config-management/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs/tool-config-management/.pi-map.md ## files ## links -index: 2026-05-22-tool-config-ui-rework/specs/.pi-map.index.md -map: 2026-05-22-tool-config-ui-rework/specs/.pi-map.md +index: openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs/.pi-map.md b/openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs/.pi-map.md index 59706f5..b5fd58f 100644 --- a/openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs/.pi-map.md @@ -1,13 +1,13 @@ -# 2026-05-22-tool-config-ui-rework/specs -dir: 2026-05-22-tool-config-ui-rework/specs +# openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs +dir: openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs -index: 2026-05-22-tool-config-ui-rework/specs/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs/.pi-map.index.md ## role -Contains specification documents for the tool configuration UI rework planned for 2026-05-22. +Contains archived specification documents for a UI rework of tool configuration from May 2026. ## files ## arch -Documentation/specification-driven design with dated versioning for UI redesign planning. +Flat directory structure storing dated, versioned design specs with no code or architectural patterns present. ## tags - ## symbols diff --git a/openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs/tool-config-management/.pi-map.index.md b/openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs/tool-config-management/.pi-map.index.md index a7a5502..187c9f2 100644 --- a/openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs/tool-config-management/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs/tool-config-management/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-22-tool-config-ui-rework/specs/tool-config-management (index) -dir: 2026-05-22-tool-config-ui-rework/specs/tool-config-management +# openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs/tool-config-management (index) +dir: openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs/tool-config-management ## role -Defines requirements and specifications for a tool configuration management system with runtime fields, split-pane UI, JSON editors, and validation. +Defines requirements for a tool configuration management UI system enabling runtime field editing, split-pane interfaces, JSON editing, and validation workflows. ## parent -index: 2026-05-22-tool-config-ui-rework/specs/.pi-map.index.md -map: 2026-05-22-tool-config-ui-rework/specs/.pi-map.md +index: openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-22-tool-config-ui-rework/specs/tool-config-management/.pi-map.index.md -map: 2026-05-22-tool-config-ui-rework/specs/tool-config-management/.pi-map.md +index: openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs/tool-config-management/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs/tool-config-management/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs/tool-config-management/.pi-map.md b/openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs/tool-config-management/.pi-map.md index 095bea8..4ec0bbf 100644 --- a/openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs/tool-config-management/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs/tool-config-management/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-22-tool-config-ui-rework/specs/tool-config-management -dir: 2026-05-22-tool-config-ui-rework/specs/tool-config-management +# openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs/tool-config-management +dir: openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs/tool-config-management -index: 2026-05-22-tool-config-ui-rework/specs/tool-config-management/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-tool-config-ui-rework/specs/tool-config-management/.pi-map.index.md ## role -Defines requirements and specifications for a tool configuration management system with runtime fields, split-pane UI, JSON editors, and validation. +Defines requirements for a tool configuration management UI system enabling runtime field editing, split-pane interfaces, JSON editing, and validation workflows. ## files -- spec.md | Defines requirements for a tool configuration system with runtime fields, split-pane UI, JSON editors, and validation +- spec.md | Specifies requirements for a tool configuration management system with runtime fields, split-pane UI, JSON editors, and validation ## arch -Specification-driven design using requirements documentation as the architectural foundation for a configuration UI with split-pane layout, JSON editing capabilities, and field validation. +Specification-driven design using markdown-based requirements documents with functional decomposition into UI layout (split-pane), data editing (JSON editors with syntax highlighting), and business logic (validation rules, runtime field handling) components. ## tags -spec, defines, requirements, tool, configuration, system, runtime, fields +spec, specifies, requirements, tool, configuration, management, system, runtime ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-22-tool-workshop/.pi-map.index.md b/openspec/changes/archive/2026-05-22-tool-workshop/.pi-map.index.md index 801cf34..4079c5d 100644 --- a/openspec/changes/archive/2026-05-22-tool-workshop/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-tool-workshop/.pi-map.index.md @@ -1,22 +1,22 @@ -# 2026-05-22-tool-workshop (index) -dir: 2026-05-22-tool-workshop +# openspec/changes/archive/2026-05-22-tool-workshop (index) +dir: openspec/changes/archive/2026-05-22-tool-workshop ## role -Design and planning documentation for a "Tool Workshop" system that enables user-defined Docker-based tools with rich configuration, reusable configs, and readiness probes through a unified management interface. +Design documentation package for a "Tool Workshop" system that enables flexible, Docker-based tool definitions with reusable configurations and readiness probes. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2026-05-22-tool-workshop/specs - index: 2026-05-22-tool-workshop/specs/.pi-map.index.md - map: 2026-05-22-tool-workshop/specs/.pi-map.md +- openspec/changes/archive/2026-05-22-tool-workshop/specs + index: openspec/changes/archive/2026-05-22-tool-workshop/specs/.pi-map.index.md + map: openspec/changes/archive/2026-05-22-tool-workshop/specs/.pi-map.md ## files - design.md - proposal.md - tasks.md ## links -index: 2026-05-22-tool-workshop/.pi-map.index.md -map: 2026-05-22-tool-workshop/.pi-map.md +index: openspec/changes/archive/2026-05-22-tool-workshop/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-tool-workshop/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-tool-workshop/.pi-map.md b/openspec/changes/archive/2026-05-22-tool-workshop/.pi-map.md index c81085a..4f03f7f 100644 --- a/openspec/changes/archive/2026-05-22-tool-workshop/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-tool-workshop/.pi-map.md @@ -1,18 +1,18 @@ -# 2026-05-22-tool-workshop -dir: 2026-05-22-tool-workshop +# openspec/changes/archive/2026-05-22-tool-workshop +dir: openspec/changes/archive/2026-05-22-tool-workshop -index: 2026-05-22-tool-workshop/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-tool-workshop/.pi-map.index.md ## role -Design and planning documentation for a "Tool Workshop" system that enables user-defined Docker-based tools with rich configuration, reusable configs, and readiness probes through a unified management interface. +Design documentation package for a "Tool Workshop" system that enables flexible, Docker-based tool definitions with reusable configurations and readiness probes. ## files -- design.md | Design specification for a "Tool Workshop" system that extends an existing tool management platform to support Docker Compose and Dockerfile definitions, readiness probes, reusable config file collections, rich configuration fields, and a unified management UI. | dep: Docker Compose, Docker, Python, JSONB, Cloudflare tunnels, database (implied), web framework (implied) -- proposal.md | Proposes a comprehensive redesign of a tool system to support user-defined Docker tools, rich configuration, reusable config folders, and readiness probes through a unified "Tool Workshop" interface. | dep: Docker Compose, Dockerfiles, database migration system, frontend routing/navigation system, Docker build service -- tasks.md | A comprehensive project task list tracking the implementation of a Docker-based tool management platform with backend API, frontend UI, and deployment phases, all marked as complete. | dep: Alembic, Pydantic, Docker, React/TypeScript, FastAPI, SQLAlchemy +- design.md | Design document for a "Tool Workshop" system that extends an existing tool management platform to support richer Docker Compose/Dockerfile-based tool definitions, reusable config file collections, readiness probes, and a unified management UI. | dep: Docker Compose, Docker, Cloudflare tunnels, JSONB storage, Python (dataclasses/models), backend API framework, database with UUID support +- proposal.md | Design proposal for transforming a rigid hardcoded tool system into a flexible user-defined "tool workshop" with Docker Compose/Dockerfile support, rich configuration, reusable config folders, and readiness probes. | dep: Docker Compose, Dockerfiles, database migration system, frontend routing/navigation, Docker build service +- tasks.md | Project task tracking document outlining phased backend/frontend development for a tool management platform with Docker integration, config folders, and readiness probes ## arch -Specification-driven design documents using markdown-based technical proposals with phased implementation tracking (design spec → proposal → task breakdown), covering backend API extensions, frontend UI components, and Docker/container orchestration patterns. +Specification-driven architecture with phased implementation (backend → frontend), transitioning from hardcoded to user-defined tools via Docker Compose/Dockerfile abstractions, config folder collections, and probe-based health checking. ## tags -tool, docker, design, management, workshop, system, platform, support +tool, design, docker, management, config, readiness, probes, proposal ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-22-tool-workshop/specs/.pi-map.index.md b/openspec/changes/archive/2026-05-22-tool-workshop/specs/.pi-map.index.md index 19b5aec..b2e7302 100644 --- a/openspec/changes/archive/2026-05-22-tool-workshop/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-tool-workshop/specs/.pi-map.index.md @@ -1,11 +1,11 @@ -# 2026-05-22-tool-workshop/specs (index) -dir: 2026-05-22-tool-workshop/specs +# openspec/changes/archive/2026-05-22-tool-workshop/specs (index) +dir: openspec/changes/archive/2026-05-22-tool-workshop/specs ## role -Defines technical specifications and requirements for a containerized development tool management system including configuration, lifecycle, and orchestration concerns. +Defines core specifications for a containerized development tool management system enabling reproducible, project-configured tool instances with lifecycle health verification. ## parent -index: 2026-05-22-tool-workshop/.pi-map.index.md -map: 2026-05-22-tool-workshop/.pi-map.md +index: openspec/changes/archive/2026-05-22-tool-workshop/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-tool-workshop/.pi-map.md ## children - ## files @@ -13,8 +13,8 @@ map: 2026-05-22-tool-workshop/.pi-map.md - readiness-probes.md - tool-workshop.md ## links -index: 2026-05-22-tool-workshop/specs/.pi-map.index.md -map: 2026-05-22-tool-workshop/specs/.pi-map.md +index: openspec/changes/archive/2026-05-22-tool-workshop/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-tool-workshop/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-tool-workshop/specs/.pi-map.md b/openspec/changes/archive/2026-05-22-tool-workshop/specs/.pi-map.md index 216c65e..ec51d8f 100644 --- a/openspec/changes/archive/2026-05-22-tool-workshop/specs/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-tool-workshop/specs/.pi-map.md @@ -1,18 +1,18 @@ -# 2026-05-22-tool-workshop/specs -dir: 2026-05-22-tool-workshop/specs +# openspec/changes/archive/2026-05-22-tool-workshop/specs +dir: openspec/changes/archive/2026-05-22-tool-workshop/specs -index: 2026-05-22-tool-workshop/specs/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-tool-workshop/specs/.pi-map.index.md ## role -Defines technical specifications and requirements for a containerized development tool management system including configuration, lifecycle, and orchestration concerns. +Defines core specifications for a containerized development tool management system enabling reproducible, project-configured tool instances with lifecycle health verification. ## files -- config-folders.md | Defines requirements and design for a reusable config folder system that mounts user configuration files into tool instances with project-specific override support -- readiness-probes.md | Defines functional requirements and specifications for container readiness probes that determine when tool instances are fully initialized and marked as running. | dep: docker, pydantic/BaseModel, shell commands (curl, nc, pg_isready), JSON -- tool-workshop.md | Defines requirements and specifications for a unified tool management system that handles Docker-based development tools through type definitions, configurations, config folders, and readiness probes. | dep: Docker Compose, Dockerfile, container runtime, design.md +- config-folders.md | Defines requirements and design for a reusable configuration folder system that mounts user dotfiles and settings into containerized tool instances with project-specific override support +- readiness-probes.md | Defines functional requirements and behavior for container readiness probes that verify tool instances are fully initialized before being marked as "running" | dep: docker, pydantic, BaseModel, json +- tool-workshop.md | Defines requirements and specifications for a unified Tool Workshop system that manages Docker-based development tools through type definitions, configurations, folders, and instance lifecycle management with readiness probes. | dep: Docker, Docker Compose, design.md (external reference) ## arch -Specification-driven design with layered documentation architecture: base system spec (tool-workshop.md), and modular sub-specs (config-folders.md, readiness-probes.md) that decompose concerns into independently specified, composable components. +Specification-driven architecture using layered configuration (base/user/project), Docker container orchestration with readiness probe health checks, and declarative type-based tool definitions with mountable config folder overlays. ## tags -tool, config, readiness, probes, defines, requirements, folders, design +tool, readiness, probes, defines, requirements, folders, docker, workshop ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-22-ui-redesign-home-settings/.pi-map.index.md b/openspec/changes/archive/2026-05-22-ui-redesign-home-settings/.pi-map.index.md index 047e0c3..7fe729e 100644 --- a/openspec/changes/archive/2026-05-22-ui-redesign-home-settings/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-22-ui-redesign-home-settings/.pi-map.index.md @@ -1,11 +1,11 @@ -# 2026-05-22-ui-redesign-home-settings (index) -dir: 2026-05-22-ui-redesign-home-settings +# openspec/changes/archive/2026-05-22-ui-redesign-home-settings (index) +dir: openspec/changes/archive/2026-05-22-ui-redesign-home-settings ## role -Contains design documentation and planning artifacts for a UI redesign project focused on restructuring the authenticated frontend around a Home overview and tabbed Settings hub. +Archive of a completed UI redesign specification for consolidating authenticated frontend pages into a Home overview and tabbed Settings hub ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children - ## files @@ -14,8 +14,8 @@ map: ./.pi-map.md - proposal.md - tasks.md ## links -index: 2026-05-22-ui-redesign-home-settings/.pi-map.index.md -map: 2026-05-22-ui-redesign-home-settings/.pi-map.md +index: openspec/changes/archive/2026-05-22-ui-redesign-home-settings/.pi-map.index.md +map: openspec/changes/archive/2026-05-22-ui-redesign-home-settings/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-22-ui-redesign-home-settings/.pi-map.md b/openspec/changes/archive/2026-05-22-ui-redesign-home-settings/.pi-map.md index 99bb6db..31fb726 100644 --- a/openspec/changes/archive/2026-05-22-ui-redesign-home-settings/.pi-map.md +++ b/openspec/changes/archive/2026-05-22-ui-redesign-home-settings/.pi-map.md @@ -1,19 +1,19 @@ -# 2026-05-22-ui-redesign-home-settings -dir: 2026-05-22-ui-redesign-home-settings +# openspec/changes/archive/2026-05-22-ui-redesign-home-settings +dir: openspec/changes/archive/2026-05-22-ui-redesign-home-settings -index: 2026-05-22-ui-redesign-home-settings/.pi-map.index.md +index: openspec/changes/archive/2026-05-22-ui-redesign-home-settings/.pi-map.index.md ## role -Contains design documentation and planning artifacts for a UI redesign project focused on restructuring the authenticated frontend around a Home overview and tabbed Settings hub. +Archive of a completed UI redesign specification for consolidating authenticated frontend pages into a Home overview and tabbed Settings hub ## files - .openspec.yaml | Defines an OpenSpec configuration file with schema type and creation date metadata -- design.md | Design specification document for a UI redesign covering information architecture, page layouts, visual direction, routing, and component strategy. -- proposal.md | Proposes a UI redesign to consolidate the authenticated frontend around a Home overview and a tabbed Settings hub while keeping existing functionality and APIs unchanged. -- tasks.md | Task checklist tracking completed work for a UI redesign project involving navigation restructuring, home page redesign, and settings hub reorganization +- design.md | Design specification document for a UI redesign of an application, outlining information architecture, page layouts, routing, visual direction, and component strategy. +- proposal.md | Proposes a UI redesign to consolidate authenticated frontend pages into a Home overview and a tabbed Settings hub while keeping existing functionality and backend unchanged. +- tasks.md | This file is a completed task checklist documenting a UI redesign project involving visual system updates, navigation restructuring, home page redesign, settings hub reorganization, and final cleanup/verification. ## arch -Documentation-driven design with specification files (OpenSpec config, design doc, proposal, and task tracking) following a structured planning approach with clear separation between proposal, design specification, and implementation tracking. +Specification-driven design process using OpenSpec schema with phased task tracking (visual system → navigation → home page → settings hub → cleanup) and documentation hierarchy (proposal → design → tasks) ## tags -redesign, design, .openspec, page, home, settings, hub, proposal +redesign, design, .openspec, page, visual, home, settings, hub ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-23-remove-built-in-tools/.pi-map.index.md b/openspec/changes/archive/2026-05-23-remove-built-in-tools/.pi-map.index.md index cf37610..0dc05ce 100644 --- a/openspec/changes/archive/2026-05-23-remove-built-in-tools/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-23-remove-built-in-tools/.pi-map.index.md @@ -1,23 +1,23 @@ -# 2026-05-23-remove-built-in-tools (index) -dir: 2026-05-23-remove-built-in-tools +# openspec/changes/archive/2026-05-23-remove-built-in-tools (index) +dir: openspec/changes/archive/2026-05-23-remove-built-in-tools ## role -This package contains design documents and planning artifacts for a refactoring initiative to eliminate special-case handling of built-in tool types by converting them to regular database records. +Contains archived specification documents for a completed refactoring that removed the privileged "built-in" tool type classification to make all tool types user-editable database records. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2026-05-23-remove-built-in-tools/specs - index: 2026-05-23-remove-built-in-tools/specs/.pi-map.index.md - map: 2026-05-23-remove-built-in-tools/specs/.pi-map.md +- openspec/changes/archive/2026-05-23-remove-built-in-tools/specs + index: openspec/changes/archive/2026-05-23-remove-built-in-tools/specs/.pi-map.index.md + map: openspec/changes/archive/2026-05-23-remove-built-in-tools/specs/.pi-map.md ## files - .openspec.yaml - design.md - proposal.md - tasks.md ## links -index: 2026-05-23-remove-built-in-tools/.pi-map.index.md -map: 2026-05-23-remove-built-in-tools/.pi-map.md +index: openspec/changes/archive/2026-05-23-remove-built-in-tools/.pi-map.index.md +map: openspec/changes/archive/2026-05-23-remove-built-in-tools/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-23-remove-built-in-tools/.pi-map.md b/openspec/changes/archive/2026-05-23-remove-built-in-tools/.pi-map.md index 9526b8b..01f8156 100644 --- a/openspec/changes/archive/2026-05-23-remove-built-in-tools/.pi-map.md +++ b/openspec/changes/archive/2026-05-23-remove-built-in-tools/.pi-map.md @@ -1,19 +1,19 @@ -# 2026-05-23-remove-built-in-tools -dir: 2026-05-23-remove-built-in-tools +# openspec/changes/archive/2026-05-23-remove-built-in-tools +dir: openspec/changes/archive/2026-05-23-remove-built-in-tools -index: 2026-05-23-remove-built-in-tools/.pi-map.index.md +index: openspec/changes/archive/2026-05-23-remove-built-in-tools/.pi-map.index.md ## role -This package contains design documents and planning artifacts for a refactoring initiative to eliminate special-case handling of built-in tool types by converting them to regular database records. +Contains archived specification documents for a completed refactoring that removed the privileged "built-in" tool type classification to make all tool types user-editable database records. ## files - .openspec.yaml | Defines an OpenSpec configuration file with schema type and creation date metadata -- design.md | Design document for removing built-in tool type special handling by migrating seeded data to regular database records via Alembic migration | dep: Alembic, SQLAlchemy/model layer, main.py startup logic, API layer, frontend -- proposal.md | Proposes a refactoring to eliminate the privileged "built-in" tool type classification and make all tool types equal, first-class database records | dep: ToolType model, main.py, tool_types.py API, database migration system, frontend -- tasks.md | Task checklist tracking the removal of `is_builtin` functionality from tool types across a full-stack application (database, backend, frontend, and testing) | dep: Alembic, SQLAlchemy, Pydantic, FastAPI, PostgreSQL, pytest, ruff, mypy, React/frontend build system +- design.md | Design document for refactoring built-in tool types from hardcoded/seeded entities to regular editable database records | dep: Alembic, ToolType model, main.py, API layer, frontend +- proposal.md | Proposes a system refactoring to eliminate the privileged "built-in" tool type classification, making all tool types equally manageable by users +- tasks.md | A completed task checklist documenting the removal of the `is_builtin` field/column from tool types across a full-stack application (database, backend, frontend, and testing) | dep: Alembic, PostgreSQL, Pydantic, FastAPI, React/TypeScript, pytest, ruff, mypy ## arch -Documentation-driven change management using a structured proposal pipeline (proposal → design → tasks → OpenSpec config) to coordinate a full-stack migration involving database schema changes (Alembic), backend API modifications, frontend updates, and test suite adjustments. +Documentation-driven change management using OpenSpec schema with structured design/proposal/task artifacts tracking a full-stack migration (database → backend → frontend → testing) from hardcoded seeded entities to regular editable records. ## tags -tool, type, design, database, alembic, frontend, .openspec, records +tool, design, types, type, .openspec, refactoring, database, alembic ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-23-remove-built-in-tools/specs/.pi-map.index.md b/openspec/changes/archive/2026-05-23-remove-built-in-tools/specs/.pi-map.index.md index 995ca4f..6787460 100644 --- a/openspec/changes/archive/2026-05-23-remove-built-in-tools/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-23-remove-built-in-tools/specs/.pi-map.index.md @@ -1,19 +1,19 @@ -# 2026-05-23-remove-built-in-tools/specs (index) -dir: 2026-05-23-remove-built-in-tools/specs +# openspec/changes/archive/2026-05-23-remove-built-in-tools/specs (index) +dir: openspec/changes/archive/2026-05-23-remove-built-in-tools/specs ## role -Contains test specifications for verifying the removal of built-in tools functionality. +Contains archived specification documents for a planned removal of built-in tools feature, dated 2026-05-23. ## parent -index: 2026-05-23-remove-built-in-tools/.pi-map.index.md -map: 2026-05-23-remove-built-in-tools/.pi-map.md +index: openspec/changes/archive/2026-05-23-remove-built-in-tools/.pi-map.index.md +map: openspec/changes/archive/2026-05-23-remove-built-in-tools/.pi-map.md ## children -- 2026-05-23-remove-built-in-tools/specs/tool-types - index: 2026-05-23-remove-built-in-tools/specs/tool-types/.pi-map.index.md - map: 2026-05-23-remove-built-in-tools/specs/tool-types/.pi-map.md +- openspec/changes/archive/2026-05-23-remove-built-in-tools/specs/tool-types + index: openspec/changes/archive/2026-05-23-remove-built-in-tools/specs/tool-types/.pi-map.index.md + map: openspec/changes/archive/2026-05-23-remove-built-in-tools/specs/tool-types/.pi-map.md ## files ## links -index: 2026-05-23-remove-built-in-tools/specs/.pi-map.index.md -map: 2026-05-23-remove-built-in-tools/specs/.pi-map.md +index: openspec/changes/archive/2026-05-23-remove-built-in-tools/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-23-remove-built-in-tools/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-23-remove-built-in-tools/specs/.pi-map.md b/openspec/changes/archive/2026-05-23-remove-built-in-tools/specs/.pi-map.md index 995296e..bc6f042 100644 --- a/openspec/changes/archive/2026-05-23-remove-built-in-tools/specs/.pi-map.md +++ b/openspec/changes/archive/2026-05-23-remove-built-in-tools/specs/.pi-map.md @@ -1,13 +1,13 @@ -# 2026-05-23-remove-built-in-tools/specs -dir: 2026-05-23-remove-built-in-tools/specs +# openspec/changes/archive/2026-05-23-remove-built-in-tools/specs +dir: openspec/changes/archive/2026-05-23-remove-built-in-tools/specs -index: 2026-05-23-remove-built-in-tools/specs/.pi-map.index.md +index: openspec/changes/archive/2026-05-23-remove-built-in-tools/specs/.pi-map.index.md ## role -Contains test specifications for verifying the removal of built-in tools functionality. +Contains archived specification documents for a planned removal of built-in tools feature, dated 2026-05-23. ## files ## arch -BDD-style specification files using Gherkin/Cucumber syntax for executable acceptance testing. +Simple archival directory structure using date-prefixed naming convention for change tracking and versioned specification storage. ## tags - ## symbols diff --git a/openspec/changes/archive/2026-05-23-remove-built-in-tools/specs/tool-types/.pi-map.index.md b/openspec/changes/archive/2026-05-23-remove-built-in-tools/specs/tool-types/.pi-map.index.md index 661578f..930f92b 100644 --- a/openspec/changes/archive/2026-05-23-remove-built-in-tools/specs/tool-types/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-23-remove-built-in-tools/specs/tool-types/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-23-remove-built-in-tools/specs/tool-types (index) -dir: 2026-05-23-remove-built-in-tools/specs/tool-types +# openspec/changes/archive/2026-05-23-remove-built-in-tools/specs/tool-types (index) +dir: openspec/changes/archive/2026-05-23-remove-built-in-tools/specs/tool-types ## role -Software specification document defining modified and removed requirements for a tool type management system +Defines specification changes for a simplified tool type model system that removes built-in/custom distinctions and template validation while adding port requirements. ## parent -index: 2026-05-23-remove-built-in-tools/specs/.pi-map.index.md -map: 2026-05-23-remove-built-in-tools/specs/.pi-map.md +index: openspec/changes/archive/2026-05-23-remove-built-in-tools/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-23-remove-built-in-tools/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-23-remove-built-in-tools/specs/tool-types/.pi-map.index.md -map: 2026-05-23-remove-built-in-tools/specs/tool-types/.pi-map.md +index: openspec/changes/archive/2026-05-23-remove-built-in-tools/specs/tool-types/.pi-map.index.md +map: openspec/changes/archive/2026-05-23-remove-built-in-tools/specs/tool-types/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-23-remove-built-in-tools/specs/tool-types/.pi-map.md b/openspec/changes/archive/2026-05-23-remove-built-in-tools/specs/tool-types/.pi-map.md index 7bd81b2..7a802da 100644 --- a/openspec/changes/archive/2026-05-23-remove-built-in-tools/specs/tool-types/.pi-map.md +++ b/openspec/changes/archive/2026-05-23-remove-built-in-tools/specs/tool-types/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-23-remove-built-in-tools/specs/tool-types -dir: 2026-05-23-remove-built-in-tools/specs/tool-types +# openspec/changes/archive/2026-05-23-remove-built-in-tools/specs/tool-types +dir: openspec/changes/archive/2026-05-23-remove-built-in-tools/specs/tool-types -index: 2026-05-23-remove-built-in-tools/specs/tool-types/.pi-map.index.md +index: openspec/changes/archive/2026-05-23-remove-built-in-tools/specs/tool-types/.pi-map.index.md ## role -Software specification document defining modified and removed requirements for a tool type management system +Defines specification changes for a simplified tool type model system that removes built-in/custom distinctions and template validation while adding port requirements. ## files -- spec.md | Software specification document defining modified and removed requirements for a tool type management system +- spec.md | Defines modified and removed requirements for a tool type model system, removing built-in/custom distinction and template validation while adding port requirements ## arch -Requirements specification document following standard software specification format with sections for removed and modified requirements +Specification-driven change documentation using requirement-based modeling with additive/modified/removal categorization for API schema evolution. ## tags -spec, software, specification, document, defining, modified, removed, requirements +requirements, spec, defines, modified, removed, tool, type, model ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/.pi-map.index.md b/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/.pi-map.index.md index e1792bc..b3ff48b 100644 --- a/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/.pi-map.index.md @@ -1,23 +1,23 @@ -# 2026-05-24-terminal-startup-and-container-tools (index) -dir: 2026-05-24-terminal-startup-and-container-tools +# openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools (index) +dir: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools ## role -Implements a feature for customizable per-tool-type terminal startup commands and productivity utilities in a WebSocket-based container terminal system. +Design specification package for implementing customizable terminal startup commands and container productivity tools in the OpenCode platform. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2026-05-24-terminal-startup-and-container-tools/specs - index: 2026-05-24-terminal-startup-and-container-tools/specs/.pi-map.index.md - map: 2026-05-24-terminal-startup-and-container-tools/specs/.pi-map.md +- openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs + index: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/.pi-map.index.md + map: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/.pi-map.md ## files - .openspec.yaml - design.md - proposal.md - tasks.md ## links -index: 2026-05-24-terminal-startup-and-container-tools/.pi-map.index.md -map: 2026-05-24-terminal-startup-and-container-tools/.pi-map.md +index: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/.pi-map.index.md +map: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/.pi-map.md b/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/.pi-map.md index a556a92..bd1af5e 100644 --- a/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/.pi-map.md +++ b/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/.pi-map.md @@ -1,19 +1,19 @@ -# 2026-05-24-terminal-startup-and-container-tools -dir: 2026-05-24-terminal-startup-and-container-tools +# openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools +dir: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools -index: 2026-05-24-terminal-startup-and-container-tools/.pi-map.index.md +index: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/.pi-map.index.md ## role -Implements a feature for customizable per-tool-type terminal startup commands and productivity utilities in a WebSocket-based container terminal system. +Design specification package for implementing customizable terminal startup commands and container productivity tools in the OpenCode platform. ## files -- .openspec.yaml | Defines an OpenSpec configuration file with schema version and creation date metadata -- design.md | Design specification for adding per-tool-type terminal startup commands and productivity utilities to a WebSocket-based container terminal system | dep: tool-types-definition, tool-terminal, opencode-web-server, tool-config-management, Docker, WebSocket, bash, Docker Compose -- proposal.md | Proposes adding customizable startup commands to terminal tool types and productivity tools to the OpenCode container -- tasks.md | Task tracking checklist for implementing a `startup_command` feature across database, backend API, terminal execution, frontend, and container tooling | dep: Alembic, SQLAlchemy, Pydantic, FastAPI, WebSocket, bash/tmux/ranger, npm, pytest, mypy, ruff +- .openspec.yaml | Defines an OpenSpec schema configuration file with metadata +- design.md | Defines a system design for adding customizable terminal startup commands to tool types and installing productivity utilities in OpenCode containers. | dep: tool-types-definition, tool-terminal, opencode-web-server, tool-config-management, Docker, WebSocket, bash, Docker Compose +- proposal.md | Proposes adding customizable startup commands to terminal tool types and improving the OpenCode container with productivity tools +- tasks.md | Task checklist tracking implementation of a `startup_command` feature for tool types across database, backend API, terminal sessions, frontend, and container tooling | dep: Alembic, SQLAlchemy, Pydantic, FastAPI, WebSocket, bash, tmux, ranger, Docker, pytest, mypy, ruff, npm ## arch -Specification-driven development using OpenSpec schema definitions, with cross-layer implementation spanning database schema, backend API, WebSocket terminal execution, frontend UI, and container tooling, tracked via structured task checklists. +Specification-driven development using OpenSpec schema configuration with phased task tracking across database, API, terminal, frontend, and container infrastructure layers. ## tags -tool, terminal, design, startup, websocket, container, .openspec, adding +tool, terminal, types, design, startup, opencode, defines, .openspec ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/.pi-map.index.md b/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/.pi-map.index.md index b8345a5..828cca6 100644 --- a/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/.pi-map.index.md @@ -1,28 +1,28 @@ -# 2026-05-24-terminal-startup-and-container-tools/specs (index) -dir: 2026-05-24-terminal-startup-and-container-tools/specs +# openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs (index) +dir: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs ## role -Contains specification documents that define requirements and designs for terminal startup and container tools features. +Contains archived specification documents for terminal startup and container tools features from a 2026-05-24 snapshot. ## parent -index: 2026-05-24-terminal-startup-and-container-tools/.pi-map.index.md -map: 2026-05-24-terminal-startup-and-container-tools/.pi-map.md +index: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/.pi-map.index.md +map: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/.pi-map.md ## children -- 2026-05-24-terminal-startup-and-container-tools/specs/opencode-web-server - index: 2026-05-24-terminal-startup-and-container-tools/specs/opencode-web-server/.pi-map.index.md - map: 2026-05-24-terminal-startup-and-container-tools/specs/opencode-web-server/.pi-map.md -- 2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal - index: 2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal/.pi-map.index.md - map: 2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal/.pi-map.md -- 2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal-startup-command - index: 2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal-startup-command/.pi-map.index.md - map: 2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal-startup-command/.pi-map.md -- 2026-05-24-terminal-startup-and-container-tools/specs/tool-types-definition - index: 2026-05-24-terminal-startup-and-container-tools/specs/tool-types-definition/.pi-map.index.md - map: 2026-05-24-terminal-startup-and-container-tools/specs/tool-types-definition/.pi-map.md +- openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/opencode-web-server + index: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/opencode-web-server/.pi-map.index.md + map: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/opencode-web-server/.pi-map.md +- openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal + index: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal/.pi-map.index.md + map: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal/.pi-map.md +- openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal-startup-command + index: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal-startup-command/.pi-map.index.md + map: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal-startup-command/.pi-map.md +- openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-types-definition + index: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-types-definition/.pi-map.index.md + map: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-types-definition/.pi-map.md ## files ## links -index: 2026-05-24-terminal-startup-and-container-tools/specs/.pi-map.index.md -map: 2026-05-24-terminal-startup-and-container-tools/specs/.pi-map.md +index: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/.pi-map.md b/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/.pi-map.md index 3ee4b31..f23f6b7 100644 --- a/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/.pi-map.md +++ b/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/.pi-map.md @@ -1,13 +1,13 @@ -# 2026-05-24-terminal-startup-and-container-tools/specs -dir: 2026-05-24-terminal-startup-and-container-tools/specs +# openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs +dir: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs -index: 2026-05-24-terminal-startup-and-container-tools/specs/.pi-map.index.md +index: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/.pi-map.index.md ## role -Contains specification documents that define requirements and designs for terminal startup and container tools features. +Contains archived specification documents for terminal startup and container tools features from a 2026-05-24 snapshot. ## files ## arch -Documentation-driven specification pattern using dated organizational structure with markdown-based technical specifications. +Specification-driven development with dated archive organization for feature tracking and change management. ## tags - ## symbols diff --git a/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/opencode-web-server/.pi-map.index.md b/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/opencode-web-server/.pi-map.index.md index 037ecc0..77f3e93 100644 --- a/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/opencode-web-server/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/opencode-web-server/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-24-terminal-startup-and-container-tools/specs/opencode-web-server (index) -dir: 2026-05-24-terminal-startup-and-container-tools/specs/opencode-web-server +# openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/opencode-web-server (index) +dir: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/opencode-web-server ## role -Defines specification requirements for a containerized web server that provides browser-based terminal access via port 3000. +Defines containerized web server requirements with integrated web terminal for the OpenCode platform ## parent -index: 2026-05-24-terminal-startup-and-container-tools/specs/.pi-map.index.md -map: 2026-05-24-terminal-startup-and-container-tools/specs/.pi-map.md +index: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-24-terminal-startup-and-container-tools/specs/opencode-web-server/.pi-map.index.md -map: 2026-05-24-terminal-startup-and-container-tools/specs/opencode-web-server/.pi-map.md +index: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/opencode-web-server/.pi-map.index.md +map: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/opencode-web-server/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/opencode-web-server/.pi-map.md b/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/opencode-web-server/.pi-map.md index 94ca09a..02a64e4 100644 --- a/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/opencode-web-server/.pi-map.md +++ b/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/opencode-web-server/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-24-terminal-startup-and-container-tools/specs/opencode-web-server -dir: 2026-05-24-terminal-startup-and-container-tools/specs/opencode-web-server +# openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/opencode-web-server +dir: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/opencode-web-server -index: 2026-05-24-terminal-startup-and-container-tools/specs/opencode-web-server/.pi-map.index.md +index: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/opencode-web-server/.pi-map.index.md ## role -Defines specification requirements for a containerized web server that provides browser-based terminal access via port 3000. +Defines containerized web server requirements with integrated web terminal for the OpenCode platform ## files -- spec.md | Defines modified requirements for OpenCode containers to run a web server with a web terminal interface on port 3000 +- spec.md | Defines requirements for an OpenCode containerized web server with a web terminal interface on port 3000 | dep: OpenCode, web server, tmux, ranger, container ## arch -Specification-driven design using requirement documents to define container behavior, port binding, and terminal interface integration. +Specification-driven architecture using markdown-based requirements documentation for a Node.js/Express container with xterm.js terminal, Docker containerization, and WebSocket communication ## tags -web, spec, defines, modified, requirements, opencode, containers, run +opencode, web, spec, defines, requirements, containerized, server, terminal ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal-startup-command/.pi-map.index.md b/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal-startup-command/.pi-map.index.md index e443ee9..11f5d87 100644 --- a/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal-startup-command/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal-startup-command/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal-startup-command (index) -dir: 2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal-startup-command +# openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal-startup-command (index) +dir: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal-startup-command ## role -Defines requirements for adding an optional `startup_command` field to terminal tool types that executes before the interactive shell in new terminal sessions. +Defines specification requirements for a terminal tool startup command feature that executes before interactive shell sessions. ## parent -index: 2026-05-24-terminal-startup-and-container-tools/specs/.pi-map.index.md -map: 2026-05-24-terminal-startup-and-container-tools/specs/.pi-map.md +index: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal-startup-command/.pi-map.index.md -map: 2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal-startup-command/.pi-map.md +index: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal-startup-command/.pi-map.index.md +map: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal-startup-command/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal-startup-command/.pi-map.md b/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal-startup-command/.pi-map.md index d0fce20..256a82a 100644 --- a/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal-startup-command/.pi-map.md +++ b/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal-startup-command/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal-startup-command -dir: 2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal-startup-command +# openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal-startup-command +dir: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal-startup-command -index: 2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal-startup-command/.pi-map.index.md +index: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal-startup-command/.pi-map.index.md ## role -Defines requirements for adding an optional `startup_command` field to terminal tool types that executes before the interactive shell in new terminal sessions. +Defines specification requirements for a terminal tool startup command feature that executes before interactive shell sessions. ## files -- spec.md | Defines requirements for adding an optional `startup_command` field to terminal tool types that executes before the interactive shell in new terminal sessions. +- spec.md | Defines requirements for adding an optional `startup_command` field to terminal tool types that executes before interactive shell sessions ## arch -Specification-driven design using markdown-based requirements documents with a single focused feature proposal. +Specification-driven development using markdown-based requirements documents with clear field definitions and behavioral constraints. ## tags -terminal, spec, defines, requirements, adding, optional, startup, command +spec, defines, requirements, adding, optional, startup, command, field ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal/.pi-map.index.md b/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal/.pi-map.index.md index bc528ec..c761714 100644 --- a/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal (index) -dir: 2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal +# openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal (index) +dir: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal ## role -Defines WebSocket-based terminal session specifications for containerized tools with startup command execution and lifecycle management. +Defines WebSocket terminal and session management requirements for containerized development tools ## parent -index: 2026-05-24-terminal-startup-and-container-tools/specs/.pi-map.index.md -map: 2026-05-24-terminal-startup-and-container-tools/specs/.pi-map.md +index: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal/.pi-map.index.md -map: 2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal/.pi-map.md +index: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal/.pi-map.index.md +map: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal/.pi-map.md b/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal/.pi-map.md index 9a6bfbe..bb80173 100644 --- a/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal/.pi-map.md +++ b/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal -dir: 2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal +# openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal +dir: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal -index: 2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal/.pi-map.index.md +index: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-terminal/.pi-map.index.md ## role -Defines WebSocket-based terminal session specifications for containerized tools with startup command execution and lifecycle management. +Defines WebSocket terminal and session management requirements for containerized development tools ## files -- spec.md | Defines requirements for WebSocket-based terminal sessions with startup command execution and session management for containerized tools | dep: WebSocket, Docker (docker exec), container runtime, shell/terminal emulation +- spec.md | Defines modified requirements for WebSocket terminal functionality and session management in a containerized tool system | dep: WebSocket, Docker, container runtime, shell/terminal emulation ## arch -Specification-driven API design using Markdown-based requirements documentation for WebSocket real-time communication with container session orchestration. +Specification-driven requirements document using Markdown-based structured specification format with functional requirement categorization ## tags -websocket, spec, defines, requirements, terminal, sessions, startup, command +websocket, spec, defines, modified, requirements, terminal, functionality, session ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-types-definition/.pi-map.index.md b/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-types-definition/.pi-map.index.md index 6de0298..b27b02b 100644 --- a/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-types-definition/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-types-definition/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-24-terminal-startup-and-container-tools/specs/tool-types-definition (index) -dir: 2026-05-24-terminal-startup-and-container-tools/specs/tool-types-definition +# openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-types-definition (index) +dir: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-types-definition ## role -Defines the data model and API contract for tool type management with template validation capabilities. +Defines data models and API specifications for a tool type management system that supports containerized development tools with Docker/Compose templates. ## parent -index: 2026-05-24-terminal-startup-and-container-tools/specs/.pi-map.index.md -map: 2026-05-24-terminal-startup-and-container-tools/specs/.pi-map.md +index: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-24-terminal-startup-and-container-tools/specs/tool-types-definition/.pi-map.index.md -map: 2026-05-24-terminal-startup-and-container-tools/specs/tool-types-definition/.pi-map.md +index: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-types-definition/.pi-map.index.md +map: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-types-definition/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-types-definition/.pi-map.md b/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-types-definition/.pi-map.md index 4761a70..0be6843 100644 --- a/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-types-definition/.pi-map.md +++ b/openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-types-definition/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-24-terminal-startup-and-container-tools/specs/tool-types-definition -dir: 2026-05-24-terminal-startup-and-container-tools/specs/tool-types-definition +# openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-types-definition +dir: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-types-definition -index: 2026-05-24-terminal-startup-and-container-tools/specs/tool-types-definition/.pi-map.index.md +index: openspec/changes/archive/2026-05-24-terminal-startup-and-container-tools/specs/tool-types-definition/.pi-map.index.md ## role -Defines the data model and API contract for tool type management with template validation capabilities. +Defines data models and API specifications for a tool type management system that supports containerized development tools with Docker/Compose templates. ## files -- spec.md | Defines requirements for a ToolType model and REST API endpoints for managing tool definitions with template validation | dep: REST API, Docker Compose, Dockerfile, YAML validation, UUID, authentication/authorization +- spec.md | Defines modified requirements for a ToolType model and CRUD API endpoints for managing tool definitions with Docker/Compose templates ## arch -Specification-driven design using Markdown-based requirements documentation for a model-REST API pattern with validation constraints. +Specification-driven API design using a structured markdown specification format with model definitions (ToolType) and CRUD endpoint patterns for resource management. ## tags -spec, defines, requirements, tooltype, model, rest, api, endpoints +spec, defines, modified, requirements, tooltype, model, crud, api ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-25-add-config-profiles/.pi-map.index.md b/openspec/changes/archive/2026-05-25-add-config-profiles/.pi-map.index.md index 4595b2b..f52b1a4 100644 --- a/openspec/changes/archive/2026-05-25-add-config-profiles/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-25-add-config-profiles/.pi-map.index.md @@ -1,23 +1,23 @@ -# 2026-05-25-add-config-profiles (index) -dir: 2026-05-25-add-config-profiles +# openspec/changes/archive/2026-05-25-add-config-profiles (index) +dir: openspec/changes/archive/2026-05-25-add-config-profiles ## role -Design and planning package for a new config profiles feature that replaces legacy config folder mounting with reusable, composable, user-owned launch configurations for tool sessions. +Design specification package for a config profile system that replaces legacy tool config folders with user-owned, composable launch configurations for tool instances. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2026-05-25-add-config-profiles/specs - index: 2026-05-25-add-config-profiles/specs/.pi-map.index.md - map: 2026-05-25-add-config-profiles/specs/.pi-map.md +- openspec/changes/archive/2026-05-25-add-config-profiles/specs + index: openspec/changes/archive/2026-05-25-add-config-profiles/specs/.pi-map.index.md + map: openspec/changes/archive/2026-05-25-add-config-profiles/specs/.pi-map.md ## files - .openspec.yaml - design.md - proposal.md - tasks.md ## links -index: 2026-05-25-add-config-profiles/.pi-map.index.md -map: 2026-05-25-add-config-profiles/.pi-map.md +index: openspec/changes/archive/2026-05-25-add-config-profiles/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-add-config-profiles/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-25-add-config-profiles/.pi-map.md b/openspec/changes/archive/2026-05-25-add-config-profiles/.pi-map.md index bf3cd25..191feb8 100644 --- a/openspec/changes/archive/2026-05-25-add-config-profiles/.pi-map.md +++ b/openspec/changes/archive/2026-05-25-add-config-profiles/.pi-map.md @@ -1,19 +1,19 @@ -# 2026-05-25-add-config-profiles -dir: 2026-05-25-add-config-profiles +# openspec/changes/archive/2026-05-25-add-config-profiles +dir: openspec/changes/archive/2026-05-25-add-config-profiles -index: 2026-05-25-add-config-profiles/.pi-map.index.md +index: openspec/changes/archive/2026-05-25-add-config-profiles/.pi-map.index.md ## role -Design and planning package for a new config profiles feature that replaces legacy config folder mounting with reusable, composable, user-owned launch configurations for tool sessions. +Design specification package for a config profile system that replaces legacy tool config folders with user-owned, composable launch configurations for tool instances. ## files -- .openspec.yaml | Defines an OpenSpec configuration file with schema version and creation date metadata -- design.md | Design document for a config profile system that replaces legacy config folders with user-owned, composable, selectable launch configurations for tool instances. | dep: Docker Compose, tool instance start system, config folder system (legacy), database tables (profiles, profile includes, instance profile selection) -- proposal.md | Proposes a new "config profiles" feature to replace legacy config folder mounting with reusable, composable, user-owned launch configurations for tool sessions. -- tasks.md | Project task tracking document outlining a multi-phase software development plan for implementing a config profile system with backend/frontend integration and quality gates. +- .openspec.yaml | Defines an OpenSpec schema configuration file with metadata +- design.md | Design document for a config profile system that replaces legacy tool config folders with user-owned, composable, selectable launch configurations for tool instances. | dep: Docker Compose, tool instance system, project/tool type models, config folder (legacy), UTF-8 text handling, graph resolution engine +- proposal.md | Proposes a new config profile system to replace legacy config folder mounting with reusable, composable, user-owned launch configurations for tool instances. +- tasks.md | Project task tracking document for implementing a configuration profile system with backend/frontend integration, dependency resolution, and quality gates. ## arch -Document-driven design process using structured markdown specifications (design.md, proposal.md) with formal schema definition (.openspec.yaml) and phased task tracking (tasks.md) following a requirements → proposal → design → implementation planning workflow. +Markdown-based design documentation pattern with structured specification files (schema, design, proposal, tasks) using OpenSpec metadata for schema validation and a phased implementation tracking approach. ## tags -config, design, .openspec, document, profile, system, legacy, user +config, design, profile, system, tool, configuration, .openspec, document ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-25-add-config-profiles/specs/.pi-map.index.md b/openspec/changes/archive/2026-05-25-add-config-profiles/specs/.pi-map.index.md index 0bd9fdd..9b52f2e 100644 --- a/openspec/changes/archive/2026-05-25-add-config-profiles/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-25-add-config-profiles/specs/.pi-map.index.md @@ -1,28 +1,28 @@ -# 2026-05-25-add-config-profiles/specs (index) -dir: 2026-05-25-add-config-profiles/specs +# openspec/changes/archive/2026-05-25-add-config-profiles/specs (index) +dir: openspec/changes/archive/2026-05-25-add-config-profiles/specs ## role -Contains specification documents for the "add-config-profiles" feature, defining requirements and behavior for a configuration profiles system. +Contains archived specification documents for a configuration profiles feature addition from May 2026. ## parent -index: 2026-05-25-add-config-profiles/.pi-map.index.md -map: 2026-05-25-add-config-profiles/.pi-map.md +index: openspec/changes/archive/2026-05-25-add-config-profiles/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-add-config-profiles/.pi-map.md ## children -- 2026-05-25-add-config-profiles/specs/config-profiles - index: 2026-05-25-add-config-profiles/specs/config-profiles/.pi-map.index.md - map: 2026-05-25-add-config-profiles/specs/config-profiles/.pi-map.md -- 2026-05-25-add-config-profiles/specs/tool-config-management - index: 2026-05-25-add-config-profiles/specs/tool-config-management/.pi-map.index.md - map: 2026-05-25-add-config-profiles/specs/tool-config-management/.pi-map.md -- 2026-05-25-add-config-profiles/specs/tool-instances - index: 2026-05-25-add-config-profiles/specs/tool-instances/.pi-map.index.md - map: 2026-05-25-add-config-profiles/specs/tool-instances/.pi-map.md -- 2026-05-25-add-config-profiles/specs/user-config - index: 2026-05-25-add-config-profiles/specs/user-config/.pi-map.index.md - map: 2026-05-25-add-config-profiles/specs/user-config/.pi-map.md +- openspec/changes/archive/2026-05-25-add-config-profiles/specs/config-profiles + index: openspec/changes/archive/2026-05-25-add-config-profiles/specs/config-profiles/.pi-map.index.md + map: openspec/changes/archive/2026-05-25-add-config-profiles/specs/config-profiles/.pi-map.md +- openspec/changes/archive/2026-05-25-add-config-profiles/specs/tool-config-management + index: openspec/changes/archive/2026-05-25-add-config-profiles/specs/tool-config-management/.pi-map.index.md + map: openspec/changes/archive/2026-05-25-add-config-profiles/specs/tool-config-management/.pi-map.md +- openspec/changes/archive/2026-05-25-add-config-profiles/specs/tool-instances + index: openspec/changes/archive/2026-05-25-add-config-profiles/specs/tool-instances/.pi-map.index.md + map: openspec/changes/archive/2026-05-25-add-config-profiles/specs/tool-instances/.pi-map.md +- openspec/changes/archive/2026-05-25-add-config-profiles/specs/user-config + index: openspec/changes/archive/2026-05-25-add-config-profiles/specs/user-config/.pi-map.index.md + map: openspec/changes/archive/2026-05-25-add-config-profiles/specs/user-config/.pi-map.md ## files ## links -index: 2026-05-25-add-config-profiles/specs/.pi-map.index.md -map: 2026-05-25-add-config-profiles/specs/.pi-map.md +index: openspec/changes/archive/2026-05-25-add-config-profiles/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-add-config-profiles/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-25-add-config-profiles/specs/.pi-map.md b/openspec/changes/archive/2026-05-25-add-config-profiles/specs/.pi-map.md index a3cb7fe..5baa397 100644 --- a/openspec/changes/archive/2026-05-25-add-config-profiles/specs/.pi-map.md +++ b/openspec/changes/archive/2026-05-25-add-config-profiles/specs/.pi-map.md @@ -1,13 +1,13 @@ -# 2026-05-25-add-config-profiles/specs -dir: 2026-05-25-add-config-profiles/specs +# openspec/changes/archive/2026-05-25-add-config-profiles/specs +dir: openspec/changes/archive/2026-05-25-add-config-profiles/specs -index: 2026-05-25-add-config-profiles/specs/.pi-map.index.md +index: openspec/changes/archive/2026-05-25-add-config-profiles/specs/.pi-map.index.md ## role -Contains specification documents for the "add-config-profiles" feature, defining requirements and behavior for a configuration profiles system. +Contains archived specification documents for a configuration profiles feature addition from May 2026. ## files ## arch -Specification-driven development with dated feature folders, using markdown/plaintext docs to separate design documentation from implementation code. +Document archive pattern using date-based directory versioning with flat file storage for specification tracking. ## tags - ## symbols diff --git a/openspec/changes/archive/2026-05-25-add-config-profiles/specs/config-profiles/.pi-map.index.md b/openspec/changes/archive/2026-05-25-add-config-profiles/specs/config-profiles/.pi-map.index.md index 1a2221d..71c8150 100644 --- a/openspec/changes/archive/2026-05-25-add-config-profiles/specs/config-profiles/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-25-add-config-profiles/specs/config-profiles/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-25-add-config-profiles/specs/config-profiles (index) -dir: 2026-05-25-add-config-profiles/specs/config-profiles +# openspec/changes/archive/2026-05-25-add-config-profiles/specs/config-profiles (index) +dir: openspec/changes/archive/2026-05-25-add-config-profiles/specs/config-profiles ## role -Defines requirements for a user-owned configuration profile management system supporting scoped compatibility, content storage, ordered includes, resolution layering, and default selection for launch configurations. +Defines specifications for a user-managed configuration profile system enabling scoped, layered, and ordered configuration resolution with default profile selection for launch scenarios. ## parent -index: 2026-05-25-add-config-profiles/specs/.pi-map.index.md -map: 2026-05-25-add-config-profiles/specs/.pi-map.md +index: openspec/changes/archive/2026-05-25-add-config-profiles/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-add-config-profiles/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-25-add-config-profiles/specs/config-profiles/.pi-map.index.md -map: 2026-05-25-add-config-profiles/specs/config-profiles/.pi-map.md +index: openspec/changes/archive/2026-05-25-add-config-profiles/specs/config-profiles/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-add-config-profiles/specs/config-profiles/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-25-add-config-profiles/specs/config-profiles/.pi-map.md b/openspec/changes/archive/2026-05-25-add-config-profiles/specs/config-profiles/.pi-map.md index e551738..5847df3 100644 --- a/openspec/changes/archive/2026-05-25-add-config-profiles/specs/config-profiles/.pi-map.md +++ b/openspec/changes/archive/2026-05-25-add-config-profiles/specs/config-profiles/.pi-map.md @@ -1,14 +1,14 @@ -# 2026-05-25-add-config-profiles/specs/config-profiles -dir: 2026-05-25-add-config-profiles/specs/config-profiles +# openspec/changes/archive/2026-05-25-add-config-profiles/specs/config-profiles +dir: openspec/changes/archive/2026-05-25-add-config-profiles/specs/config-profiles -index: 2026-05-25-add-config-profiles/specs/config-profiles/.pi-map.index.md +index: openspec/changes/archive/2026-05-25-add-config-profiles/specs/config-profiles/.pi-map.index.md ## role -Defines requirements for a user-owned configuration profile management system supporting scoped compatibility, content storage, ordered includes, resolution layering, and default selection for launch configurations. +Defines specifications for a user-managed configuration profile system enabling scoped, layered, and ordered configuration resolution with default profile selection for launch scenarios. ## files -- spec.md | Defines system requirements for a user-owned config profile management system with scoped compatibility, content storage, ordered includes, resolution layering, and default selection for launch configurations. +- spec.md | Defines system requirements for a user-owned config profile management system with scoped compatibility, ordered includes, layered resolution, and default selection for launch configurations. ## arch -Specification-driven design using layered resolution architecture with profile scoping, content-addressable storage, ordered dependency chains (includes), and precedence-based default selection for launch-time configuration resolution. +Specification-driven requirements document using hierarchical feature decomposition (core concepts → profiles → resolution → includes → defaults → compatibility → lifecycle) with explicit constraint notation and YAML-like examples for behavioral contracts. ## tags system, spec, defines, requirements, user, owned, config, profile ## symbols diff --git a/openspec/changes/archive/2026-05-25-add-config-profiles/specs/tool-config-management/.pi-map.index.md b/openspec/changes/archive/2026-05-25-add-config-profiles/specs/tool-config-management/.pi-map.index.md index 8a48041..96cb0f4 100644 --- a/openspec/changes/archive/2026-05-25-add-config-profiles/specs/tool-config-management/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-25-add-config-profiles/specs/tool-config-management/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-25-add-config-profiles/specs/tool-config-management (index) -dir: 2026-05-25-add-config-profiles/specs/tool-config-management +# openspec/changes/archive/2026-05-25-add-config-profiles/specs/tool-config-management (index) +dir: openspec/changes/archive/2026-05-25-add-config-profiles/specs/tool-config-management ## role -Specifies requirements for a tool configuration system that introduces config profiles to separate runtime state from reusable launch configurations. +Defines specification requirements for a tool configuration management system that introduces config profiles to separate runtime state from reusable launch configurations. ## parent -index: 2026-05-25-add-config-profiles/specs/.pi-map.index.md -map: 2026-05-25-add-config-profiles/specs/.pi-map.md +index: openspec/changes/archive/2026-05-25-add-config-profiles/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-add-config-profiles/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-25-add-config-profiles/specs/tool-config-management/.pi-map.index.md -map: 2026-05-25-add-config-profiles/specs/tool-config-management/.pi-map.md +index: openspec/changes/archive/2026-05-25-add-config-profiles/specs/tool-config-management/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-add-config-profiles/specs/tool-config-management/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-25-add-config-profiles/specs/tool-config-management/.pi-map.md b/openspec/changes/archive/2026-05-25-add-config-profiles/specs/tool-config-management/.pi-map.md index 61d248a..c108d83 100644 --- a/openspec/changes/archive/2026-05-25-add-config-profiles/specs/tool-config-management/.pi-map.md +++ b/openspec/changes/archive/2026-05-25-add-config-profiles/specs/tool-config-management/.pi-map.md @@ -1,14 +1,14 @@ -# 2026-05-25-add-config-profiles/specs/tool-config-management -dir: 2026-05-25-add-config-profiles/specs/tool-config-management +# openspec/changes/archive/2026-05-25-add-config-profiles/specs/tool-config-management +dir: openspec/changes/archive/2026-05-25-add-config-profiles/specs/tool-config-management -index: 2026-05-25-add-config-profiles/specs/tool-config-management/.pi-map.index.md +index: openspec/changes/archive/2026-05-25-add-config-profiles/specs/tool-config-management/.pi-map.index.md ## role -Specifies requirements for a tool configuration system that introduces config profiles to separate runtime state from reusable launch configurations. +Defines specification requirements for a tool configuration management system that introduces config profiles to separate runtime state from reusable launch configurations. ## files -- spec.md | Defines modified and removed requirements for a tool configuration system that separates runtime fields from reusable launch setup via config profiles. +- spec.md | Defines modified and removed requirements for a tool configuration system that separates runtime fields from reusable launch setup via config profiles ## arch -Requirements-driven specification using delta notation (MODIFIED/REMOVED) to track evolving constraints for a profile-based configuration management system with clear separation between persistent setup and ephemeral runtime data. +Specification-driven requirements document using change-tracking format (modified/removed requirements) to evolve a configuration system toward profile-based separation of concerns. ## tags spec, defines, modified, removed, requirements, tool, configuration, system ## symbols diff --git a/openspec/changes/archive/2026-05-25-add-config-profiles/specs/tool-instances/.pi-map.index.md b/openspec/changes/archive/2026-05-25-add-config-profiles/specs/tool-instances/.pi-map.index.md index f4a1fda..b08f3ab 100644 --- a/openspec/changes/archive/2026-05-25-add-config-profiles/specs/tool-instances/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-25-add-config-profiles/specs/tool-instances/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-25-add-config-profiles/specs/tool-instances (index) -dir: 2026-05-25-add-config-profiles/specs/tool-instances +# openspec/changes/archive/2026-05-25-add-config-profiles/specs/tool-instances (index) +dir: openspec/changes/archive/2026-05-25-add-config-profiles/specs/tool-instances ## role -Defines specifications for creating and configuring tool instances with support for clone/mount modes and config profile application at startup. +Defines specification requirements for creating tool instances with clone/mount modes and applying configuration profiles at startup. ## parent -index: 2026-05-25-add-config-profiles/specs/.pi-map.index.md -map: 2026-05-25-add-config-profiles/specs/.pi-map.md +index: openspec/changes/archive/2026-05-25-add-config-profiles/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-add-config-profiles/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-25-add-config-profiles/specs/tool-instances/.pi-map.index.md -map: 2026-05-25-add-config-profiles/specs/tool-instances/.pi-map.md +index: openspec/changes/archive/2026-05-25-add-config-profiles/specs/tool-instances/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-add-config-profiles/specs/tool-instances/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-25-add-config-profiles/specs/tool-instances/.pi-map.md b/openspec/changes/archive/2026-05-25-add-config-profiles/specs/tool-instances/.pi-map.md index 1bff6e0..206cf9c 100644 --- a/openspec/changes/archive/2026-05-25-add-config-profiles/specs/tool-instances/.pi-map.md +++ b/openspec/changes/archive/2026-05-25-add-config-profiles/specs/tool-instances/.pi-map.md @@ -1,14 +1,14 @@ -# 2026-05-25-add-config-profiles/specs/tool-instances -dir: 2026-05-25-add-config-profiles/specs/tool-instances +# openspec/changes/archive/2026-05-25-add-config-profiles/specs/tool-instances +dir: openspec/changes/archive/2026-05-25-add-config-profiles/specs/tool-instances -index: 2026-05-25-add-config-profiles/specs/tool-instances/.pi-map.index.md +index: openspec/changes/archive/2026-05-25-add-config-profiles/specs/tool-instances/.pi-map.index.md ## role -Defines specifications for creating and configuring tool instances with support for clone/mount modes and config profile application at startup. +Defines specification requirements for creating tool instances with clone/mount modes and applying configuration profiles at startup. ## files - spec.md | Defines requirements for tool instance creation with clone/mount modes and config profile application at startup ## arch -Specification-driven design using markdown-based requirements documents that define behavioral contracts for instance lifecycle management and configuration injection patterns. +Specification-driven design using markdown-based requirement documents with clear functional boundaries between instance creation modes and configuration application timing. ## tags spec, defines, requirements, tool, instance, creation, clone, mount ## symbols diff --git a/openspec/changes/archive/2026-05-25-add-config-profiles/specs/user-config/.pi-map.index.md b/openspec/changes/archive/2026-05-25-add-config-profiles/specs/user-config/.pi-map.index.md index 908df4a..a12d7c2 100644 --- a/openspec/changes/archive/2026-05-25-add-config-profiles/specs/user-config/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-25-add-config-profiles/specs/user-config/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-25-add-config-profiles/specs/user-config (index) -dir: 2026-05-25-add-config-profiles/specs/user-config +# openspec/changes/archive/2026-05-25-add-config-profiles/specs/user-config (index) +dir: openspec/changes/archive/2026-05-25-add-config-profiles/specs/user-config ## role -Defines requirements for a configuration profile management system enabling users to create, edit, and select runtime profiles through both a settings editor and launch-time UI. +Defines user-facing configuration requirements for profile-based settings management and launch profile selection interfaces. ## parent -index: 2026-05-25-add-config-profiles/specs/.pi-map.index.md -map: 2026-05-25-add-config-profiles/specs/.pi-map.md +index: openspec/changes/archive/2026-05-25-add-config-profiles/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-add-config-profiles/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-25-add-config-profiles/specs/user-config/.pi-map.index.md -map: 2026-05-25-add-config-profiles/specs/user-config/.pi-map.md +index: openspec/changes/archive/2026-05-25-add-config-profiles/specs/user-config/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-add-config-profiles/specs/user-config/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-25-add-config-profiles/specs/user-config/.pi-map.md b/openspec/changes/archive/2026-05-25-add-config-profiles/specs/user-config/.pi-map.md index 626416b..1ff7730 100644 --- a/openspec/changes/archive/2026-05-25-add-config-profiles/specs/user-config/.pi-map.md +++ b/openspec/changes/archive/2026-05-25-add-config-profiles/specs/user-config/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-25-add-config-profiles/specs/user-config -dir: 2026-05-25-add-config-profiles/specs/user-config +# openspec/changes/archive/2026-05-25-add-config-profiles/specs/user-config +dir: openspec/changes/archive/2026-05-25-add-config-profiles/specs/user-config -index: 2026-05-25-add-config-profiles/specs/user-config/.pi-map.index.md +index: openspec/changes/archive/2026-05-25-add-config-profiles/specs/user-config/.pi-map.index.md ## role -Defines requirements for a configuration profile management system enabling users to create, edit, and select runtime profiles through both a settings editor and launch-time UI. +Defines user-facing configuration requirements for profile-based settings management and launch profile selection interfaces. ## files -- spec.md | Defines requirements for a config profile management system including a settings editor and launch-time profile selection UI +- spec.md | Specifies requirements for a config profile settings editor and launch profile selection UI with Gherkin-style scenarios ## arch -Specification-driven design using markdown-based requirements documents that separate functional requirements (profile CRUD, UI flows) from system constraints, following a document-as-contract pattern for feature development. +Behavior-driven specification using Gherkin scenarios to document UI/UX requirements without prescribing implementation architecture. ## tags -profile, spec, defines, requirements, config, management, system, including +profile, spec, specifies, requirements, config, settings, editor, launch ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-25-mobile-app-usability/.pi-map.index.md b/openspec/changes/archive/2026-05-25-mobile-app-usability/.pi-map.index.md index 571469e..2ac191a 100644 --- a/openspec/changes/archive/2026-05-25-mobile-app-usability/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-25-mobile-app-usability/.pi-map.index.md @@ -1,23 +1,23 @@ -# 2026-05-25-mobile-app-usability (index) -dir: 2026-05-25-mobile-app-usability +# openspec/changes/archive/2026-05-25-mobile-app-usability (index) +dir: openspec/changes/archive/2026-05-25-mobile-app-usability ## role -Mobile responsiveness improvement package for a React web application's frontend usability overhaul. +Archive directory containing historical specification documents for a completed mobile app usability improvement initiative ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2026-05-25-mobile-app-usability/specs - index: 2026-05-25-mobile-app-usability/specs/.pi-map.index.md - map: 2026-05-25-mobile-app-usability/specs/.pi-map.md +- openspec/changes/archive/2026-05-25-mobile-app-usability/specs + index: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/.pi-map.index.md + map: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/.pi-map.md ## files - .openspec.yaml - design.md - proposal.md - tasks.md ## links -index: 2026-05-25-mobile-app-usability/.pi-map.index.md -map: 2026-05-25-mobile-app-usability/.pi-map.md +index: openspec/changes/archive/2026-05-25-mobile-app-usability/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-mobile-app-usability/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-25-mobile-app-usability/.pi-map.md b/openspec/changes/archive/2026-05-25-mobile-app-usability/.pi-map.md index f568ec3..96ce9eb 100644 --- a/openspec/changes/archive/2026-05-25-mobile-app-usability/.pi-map.md +++ b/openspec/changes/archive/2026-05-25-mobile-app-usability/.pi-map.md @@ -1,19 +1,19 @@ -# 2026-05-25-mobile-app-usability -dir: 2026-05-25-mobile-app-usability +# openspec/changes/archive/2026-05-25-mobile-app-usability +dir: openspec/changes/archive/2026-05-25-mobile-app-usability -index: 2026-05-25-mobile-app-usability/.pi-map.index.md +index: openspec/changes/archive/2026-05-25-mobile-app-usability/.pi-map.index.md ## role -Mobile responsiveness improvement package for a React web application's frontend usability overhaul. +Archive directory containing historical specification documents for a completed mobile app usability improvement initiative ## files -- .openspec.yaml | Defines an OpenSpec configuration file specifying a spec-driven schema with a creation date. -- design.md | Design document outlining mobile UX improvements for a React desktop-first web application, focusing on navigation, session management, forms, and touch targets for 320-768px viewports. | dep: React, CSS media queries, mobile browser safe-area-insets, routing system -- proposal.md | Proposes a frontend mobile responsiveness overhaul for the Headquarter web app to make critical workflows usable on mobile devices -- tasks.md | A completed task checklist for implementing comprehensive mobile responsive design across a web application +- .openspec.yaml | Defines an OpenSpec configuration file specifying a spec-driven schema with a creation date +- design.md | Design document outlining a mobile responsiveness initiative for a React web application's non-terminal UI components | dep: React, CSS media queries, React Router, mobile-terminal-ux (existing) +- proposal.md | Proposes a mobile responsiveness overhaul for the Headquarter web app's frontend to make critical workflows usable on mobile devices +- tasks.md | A completed task checklist documenting mobile UI/UX implementation work for a web application, covering navigation, session management, forms, responsive layout, touch interactions, complex pages, and testing. ## arch -Documentation-driven specification approach using OpenSpec schema configuration, design documents, and task-based project tracking for iterative mobile-first responsive UI implementation. +Specification-driven documentation pattern using OpenSpec schema with structured design/proposal/task artifacts for tracking frontend UI/UX changes ## tags -design, mobile, web, .openspec, react, application, proposal, tasks +mobile, design, web, .openspec, responsiveness, react, application, terminal ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/.pi-map.index.md b/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/.pi-map.index.md index 9e939a7..b117f75 100644 --- a/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/.pi-map.index.md @@ -1,34 +1,34 @@ -# 2026-05-25-mobile-app-usability/specs (index) -dir: 2026-05-25-mobile-app-usability/specs +# openspec/changes/archive/2026-05-25-mobile-app-usability/specs (index) +dir: openspec/changes/archive/2026-05-25-mobile-app-usability/specs ## role -Defines technical specifications and requirements for the 2026-05-25 mobile app usability improvement initiative. +Contains archived specification documents for mobile app usability improvements from a specific change cycle dated 2026-05-25. ## parent -index: 2026-05-25-mobile-app-usability/.pi-map.index.md -map: 2026-05-25-mobile-app-usability/.pi-map.md +index: openspec/changes/archive/2026-05-25-mobile-app-usability/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-mobile-app-usability/.pi-map.md ## children -- 2026-05-25-mobile-app-usability/specs/frontend-foundation - index: 2026-05-25-mobile-app-usability/specs/frontend-foundation/.pi-map.index.md - map: 2026-05-25-mobile-app-usability/specs/frontend-foundation/.pi-map.md -- 2026-05-25-mobile-app-usability/specs/mobile-navigation - index: 2026-05-25-mobile-app-usability/specs/mobile-navigation/.pi-map.index.md - map: 2026-05-25-mobile-app-usability/specs/mobile-navigation/.pi-map.md -- 2026-05-25-mobile-app-usability/specs/mobile-responsive-layouts - index: 2026-05-25-mobile-app-usability/specs/mobile-responsive-layouts/.pi-map.index.md - map: 2026-05-25-mobile-app-usability/specs/mobile-responsive-layouts/.pi-map.md -- 2026-05-25-mobile-app-usability/specs/mobile-session-management - index: 2026-05-25-mobile-app-usability/specs/mobile-session-management/.pi-map.index.md - map: 2026-05-25-mobile-app-usability/specs/mobile-session-management/.pi-map.md -- 2026-05-25-mobile-app-usability/specs/session-lifecycle-ux - index: 2026-05-25-mobile-app-usability/specs/session-lifecycle-ux/.pi-map.index.md - map: 2026-05-25-mobile-app-usability/specs/session-lifecycle-ux/.pi-map.md -- 2026-05-25-mobile-app-usability/specs/tool-instances - index: 2026-05-25-mobile-app-usability/specs/tool-instances/.pi-map.index.md - map: 2026-05-25-mobile-app-usability/specs/tool-instances/.pi-map.md +- openspec/changes/archive/2026-05-25-mobile-app-usability/specs/frontend-foundation + index: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/frontend-foundation/.pi-map.index.md + map: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/frontend-foundation/.pi-map.md +- openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-navigation + index: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-navigation/.pi-map.index.md + map: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-navigation/.pi-map.md +- openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-responsive-layouts + index: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-responsive-layouts/.pi-map.index.md + map: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-responsive-layouts/.pi-map.md +- openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-session-management + index: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-session-management/.pi-map.index.md + map: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-session-management/.pi-map.md +- openspec/changes/archive/2026-05-25-mobile-app-usability/specs/session-lifecycle-ux + index: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/session-lifecycle-ux/.pi-map.index.md + map: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/session-lifecycle-ux/.pi-map.md +- openspec/changes/archive/2026-05-25-mobile-app-usability/specs/tool-instances + index: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/tool-instances/.pi-map.index.md + map: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/tool-instances/.pi-map.md ## files ## links -index: 2026-05-25-mobile-app-usability/specs/.pi-map.index.md -map: 2026-05-25-mobile-app-usability/specs/.pi-map.md +index: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/.pi-map.md b/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/.pi-map.md index 0976532..0df9c5c 100644 --- a/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/.pi-map.md +++ b/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/.pi-map.md @@ -1,13 +1,13 @@ -# 2026-05-25-mobile-app-usability/specs -dir: 2026-05-25-mobile-app-usability/specs +# openspec/changes/archive/2026-05-25-mobile-app-usability/specs +dir: openspec/changes/archive/2026-05-25-mobile-app-usability/specs -index: 2026-05-25-mobile-app-usability/specs/.pi-map.index.md +index: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/.pi-map.index.md ## role -Defines technical specifications and requirements for the 2026-05-25 mobile app usability improvement initiative. +Contains archived specification documents for mobile app usability improvements from a specific change cycle dated 2026-05-25. ## files ## arch -Document-driven specification pattern with date-prefixed milestone organization for tracking mobile UX enhancement requirements. +Flat directory structure serving as a historical archive snapshot for tracking specification evolution, with no active architectural patterns—pure document storage with date-based and topic-based naming convention. ## tags - ## symbols diff --git a/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/frontend-foundation/.pi-map.index.md b/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/frontend-foundation/.pi-map.index.md index 33c286b..1beae90 100644 --- a/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/frontend-foundation/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/frontend-foundation/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-25-mobile-app-usability/specs/frontend-foundation (index) -dir: 2026-05-25-mobile-app-usability/specs/frontend-foundation +# openspec/changes/archive/2026-05-25-mobile-app-usability/specs/frontend-foundation (index) +dir: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/frontend-foundation ## role -Defines responsive layout and navigation specifications for a web application supporting both desktop sidebar and mobile bottom tab bar interfaces. +Defines responsive layout and mobile-first navigation requirements for a frontend foundation specification. ## parent -index: 2026-05-25-mobile-app-usability/specs/.pi-map.index.md -map: 2026-05-25-mobile-app-usability/specs/.pi-map.md +index: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-25-mobile-app-usability/specs/frontend-foundation/.pi-map.index.md -map: 2026-05-25-mobile-app-usability/specs/frontend-foundation/.pi-map.md +index: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/frontend-foundation/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/frontend-foundation/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/frontend-foundation/.pi-map.md b/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/frontend-foundation/.pi-map.md index d1557f8..d885467 100644 --- a/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/frontend-foundation/.pi-map.md +++ b/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/frontend-foundation/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-25-mobile-app-usability/specs/frontend-foundation -dir: 2026-05-25-mobile-app-usability/specs/frontend-foundation +# openspec/changes/archive/2026-05-25-mobile-app-usability/specs/frontend-foundation +dir: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/frontend-foundation -index: 2026-05-25-mobile-app-usability/specs/frontend-foundation/.pi-map.index.md +index: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/frontend-foundation/.pi-map.index.md ## role -Defines responsive layout and navigation specifications for a web application supporting both desktop sidebar and mobile bottom tab bar interfaces. +Defines responsive layout and mobile-first navigation requirements for a frontend foundation specification. ## files -- spec.md | Specifies modified responsive layout and navigation requirements for a web application with desktop sidebar and mobile bottom tab bar navigation. +- spec.md | Defines modified requirements for a responsive application layout component with mobile-first navigation patterns ## arch -Specification-driven responsive design pattern with breakpoint-based adaptive navigation switching between desktop and mobile layouts. +Specification-driven requirements document using markdown-based technical specification pattern. ## tags -navigation, spec, specifies, modified, responsive, layout, requirements, web +spec, defines, modified, requirements, responsive, application, layout, component ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-navigation/.pi-map.index.md b/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-navigation/.pi-map.index.md index 7d967be..72846e2 100644 --- a/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-navigation/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-navigation/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-25-mobile-app-usability/specs/mobile-navigation (index) -dir: 2026-05-25-mobile-app-usability/specs/mobile-navigation +# openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-navigation (index) +dir: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-navigation ## role -Defines mobile responsive navigation requirements including bottom tab bar for mobile viewports and safe area support +Defines responsive mobile navigation UI requirements with viewport-adaptive layout patterns (bottom tabs for mobile, sidebar for desktop) including safe area handling. ## parent -index: 2026-05-25-mobile-app-usability/specs/.pi-map.index.md -map: 2026-05-25-mobile-app-usability/specs/.pi-map.md +index: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-25-mobile-app-usability/specs/mobile-navigation/.pi-map.index.md -map: 2026-05-25-mobile-app-usability/specs/mobile-navigation/.pi-map.md +index: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-navigation/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-navigation/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-navigation/.pi-map.md b/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-navigation/.pi-map.md index 62e3781..07b0dd6 100644 --- a/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-navigation/.pi-map.md +++ b/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-navigation/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-25-mobile-app-usability/specs/mobile-navigation -dir: 2026-05-25-mobile-app-usability/specs/mobile-navigation +# openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-navigation +dir: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-navigation -index: 2026-05-25-mobile-app-usability/specs/mobile-navigation/.pi-map.index.md +index: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-navigation/.pi-map.index.md ## role -Defines mobile responsive navigation requirements including bottom tab bar for mobile viewports and safe area support +Defines responsive mobile navigation UI requirements with viewport-adaptive layout patterns (bottom tabs for mobile, sidebar for desktop) including safe area handling. ## files -- spec.md | Defines mobile responsive navigation requirements including bottom tab bar for mobile viewports and safe area support +- spec.md | Defines mobile-responsive navigation requirements with bottom tab bar for mobile viewports and sidebar for desktop, including safe area support ## arch -Specification-driven requirements document using markdown-based functional specification pattern for mobile UI/UX constraints +Specification-driven requirements document using viewport-based conditional rendering pattern with platform-specific layout adaptation and safe area insets for notched devices. ## tags -mobile, spec, defines, responsive, navigation, requirements, including, bottom +mobile, spec, defines, responsive, navigation, requirements, bottom, tab ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-responsive-layouts/.pi-map.index.md b/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-responsive-layouts/.pi-map.index.md index eb45e14..8735003 100644 --- a/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-responsive-layouts/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-responsive-layouts/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-25-mobile-app-usability/specs/mobile-responsive-layouts (index) -dir: 2026-05-25-mobile-app-usability/specs/mobile-responsive-layouts +# openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-responsive-layouts (index) +dir: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-responsive-layouts ## role -Defines mobile-specific UI/UX requirements for responsive design, touch interactions, and navigation patterns +Defines mobile responsive design specifications for touch-based interactions and adaptive layouts. ## parent -index: 2026-05-25-mobile-app-usability/specs/.pi-map.index.md -map: 2026-05-25-mobile-app-usability/specs/.pi-map.md +index: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-25-mobile-app-usability/specs/mobile-responsive-layouts/.pi-map.index.md -map: 2026-05-25-mobile-app-usability/specs/mobile-responsive-layouts/.pi-map.md +index: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-responsive-layouts/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-responsive-layouts/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-responsive-layouts/.pi-map.md b/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-responsive-layouts/.pi-map.md index 02a4417..6c0a726 100644 --- a/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-responsive-layouts/.pi-map.md +++ b/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-responsive-layouts/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-25-mobile-app-usability/specs/mobile-responsive-layouts -dir: 2026-05-25-mobile-app-usability/specs/mobile-responsive-layouts +# openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-responsive-layouts +dir: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-responsive-layouts -index: 2026-05-25-mobile-app-usability/specs/mobile-responsive-layouts/.pi-map.index.md +index: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-responsive-layouts/.pi-map.index.md ## role -Defines mobile-specific UI/UX requirements for responsive design, touch interactions, and navigation patterns +Defines mobile responsive design specifications for touch-based interactions and adaptive layouts. ## files -- spec.md | Defines mobile-specific UI/UX requirements for responsive design, touch interactions, and navigation patterns +- spec.md | Defines mobile responsive design requirements including breakpoints, touch targets, page headers, and active states for touch interactions. ## arch -Specification-driven design documentation using markdown-based requirements specification pattern +Requirements-driven specification document using markdown-based documentation pattern with structured sections for breakpoints, touch targets, and interactive states. ## tags -spec, defines, mobile, specific, requirements, responsive, design, touch +touch, spec, defines, mobile, responsive, design, requirements, including ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-session-management/.pi-map.index.md b/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-session-management/.pi-map.index.md index f86839c..2dd87c9 100644 --- a/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-session-management/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-session-management/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-25-mobile-app-usability/specs/mobile-session-management (index) -dir: 2026-05-25-mobile-app-usability/specs/mobile-session-management +# openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-session-management (index) +dir: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-session-management ## role -Defines UI/UX specifications for a mobile-responsive session management interface. +Defines mobile-specific usability requirements for session management interfaces in a historical specification archive. ## parent -index: 2026-05-25-mobile-app-usability/specs/.pi-map.index.md -map: 2026-05-25-mobile-app-usability/specs/.pi-map.md +index: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-25-mobile-app-usability/specs/mobile-session-management/.pi-map.index.md -map: 2026-05-25-mobile-app-usability/specs/mobile-session-management/.pi-map.md +index: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-session-management/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-session-management/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-session-management/.pi-map.md b/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-session-management/.pi-map.md index b89efbb..493cbe5 100644 --- a/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-session-management/.pi-map.md +++ b/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-session-management/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-25-mobile-app-usability/specs/mobile-session-management -dir: 2026-05-25-mobile-app-usability/specs/mobile-session-management +# openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-session-management +dir: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-session-management -index: 2026-05-25-mobile-app-usability/specs/mobile-session-management/.pi-map.index.md +index: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/mobile-session-management/.pi-map.index.md ## role -Defines UI/UX specifications for a mobile-responsive session management interface. +Defines mobile-specific usability requirements for session management interfaces in a historical specification archive. ## files -- spec.md | Specifies mobile-responsive UI requirements for a session management system including touch-optimized cards, creation flow, and list views. +- spec.md | Mobile-responsive specification document defining touch-optimized UI requirements for session management cards, creation forms, and list views. ## arch -Specification-driven design with mobile-first responsive patterns and touch-optimized interaction flows. +Document-based specification pattern with dated archival organization, separating mobile UI concerns into dedicated subdirectories by feature area. ## tags -spec, specifies, mobile, responsive, requirements, session, management, system +spec, mobile, responsive, specification, document, defining, touch, optimized ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/session-lifecycle-ux/.pi-map.index.md b/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/session-lifecycle-ux/.pi-map.index.md index d733768..5ad2a91 100644 --- a/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/session-lifecycle-ux/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/session-lifecycle-ux/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-25-mobile-app-usability/specs/session-lifecycle-ux (index) -dir: 2026-05-25-mobile-app-usability/specs/session-lifecycle-ux +# openspec/changes/archive/2026-05-25-mobile-app-usability/specs/session-lifecycle-ux (index) +dir: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/session-lifecycle-ux ## role -Defines mobile-optimized interaction requirements for session management in a software specification document. +Defines mobile-optimized UX specifications for session management interactions including touch targets, dialogs, and loading states. ## parent -index: 2026-05-25-mobile-app-usability/specs/.pi-map.index.md -map: 2026-05-25-mobile-app-usability/specs/.pi-map.md +index: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-25-mobile-app-usability/specs/session-lifecycle-ux/.pi-map.index.md -map: 2026-05-25-mobile-app-usability/specs/session-lifecycle-ux/.pi-map.md +index: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/session-lifecycle-ux/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/session-lifecycle-ux/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/session-lifecycle-ux/.pi-map.md b/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/session-lifecycle-ux/.pi-map.md index c0fa04f..8947b7f 100644 --- a/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/session-lifecycle-ux/.pi-map.md +++ b/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/session-lifecycle-ux/.pi-map.md @@ -1,14 +1,14 @@ -# 2026-05-25-mobile-app-usability/specs/session-lifecycle-ux -dir: 2026-05-25-mobile-app-usability/specs/session-lifecycle-ux +# openspec/changes/archive/2026-05-25-mobile-app-usability/specs/session-lifecycle-ux +dir: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/session-lifecycle-ux -index: 2026-05-25-mobile-app-usability/specs/session-lifecycle-ux/.pi-map.index.md +index: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/session-lifecycle-ux/.pi-map.index.md ## role -Defines mobile-optimized interaction requirements for session management in a software specification document. +Defines mobile-optimized UX specifications for session management interactions including touch targets, dialogs, and loading states. ## files -- spec.md | Defines mobile-optimized interaction requirements for session management in a software specification document. +- spec.md | Defines mobile-optimized interaction requirements for session management including touch targets, confirmation dialogs, form layouts, and loading states. ## arch -Specification-driven design with user experience focus for mobile session lifecycle patterns. +Specification/documentation pattern using markdown-based requirements documents for archiving design decisions. ## tags spec, defines, mobile, optimized, interaction, requirements, session, management ## symbols diff --git a/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/tool-instances/.pi-map.index.md b/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/tool-instances/.pi-map.index.md index 1130da4..41e23a4 100644 --- a/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/tool-instances/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/tool-instances/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-25-mobile-app-usability/specs/tool-instances (index) -dir: 2026-05-25-mobile-app-usability/specs/tool-instances +# openspec/changes/archive/2026-05-25-mobile-app-usability/specs/tool-instances (index) +dir: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/tool-instances ## role -Defines mobile-responsive design specifications for the tool instance management user interface. +Defines mobile-responsive design specifications for tool instance management UI components. ## parent -index: 2026-05-25-mobile-app-usability/specs/.pi-map.index.md -map: 2026-05-25-mobile-app-usability/specs/.pi-map.md +index: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-25-mobile-app-usability/specs/tool-instances/.pi-map.index.md -map: 2026-05-25-mobile-app-usability/specs/tool-instances/.pi-map.md +index: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/tool-instances/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/tool-instances/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/tool-instances/.pi-map.md b/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/tool-instances/.pi-map.md index 750f7aa..4ad2fc0 100644 --- a/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/tool-instances/.pi-map.md +++ b/openspec/changes/archive/2026-05-25-mobile-app-usability/specs/tool-instances/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-25-mobile-app-usability/specs/tool-instances -dir: 2026-05-25-mobile-app-usability/specs/tool-instances +# openspec/changes/archive/2026-05-25-mobile-app-usability/specs/tool-instances +dir: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/tool-instances -index: 2026-05-25-mobile-app-usability/specs/tool-instances/.pi-map.index.md +index: openspec/changes/archive/2026-05-25-mobile-app-usability/specs/tool-instances/.pi-map.index.md ## role -Defines mobile-responsive design specifications for the tool instance management user interface. +Defines mobile-responsive design specifications for tool instance management UI components. ## files -- spec.md | Mobile responsive design requirements for instance management UI controls, status display, and creation forms +- spec.md | Specifies mobile-responsive design requirements for instance management UI controls, status display, and creation forms. ## arch -Specification-driven design documentation with responsive UI patterns for mobile form controls and status displays. +Requirements-driven specification document with no implemented code architecture. ## tags -spec, mobile, responsive, design, requirements, instance, management, controls +spec, specifies, mobile, responsive, design, requirements, instance, management ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/.pi-map.index.md b/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/.pi-map.index.md index f56c94c..791b9b0 100644 --- a/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/.pi-map.index.md @@ -1,23 +1,23 @@ -# 2026-05-25-mobile-pages-overhaul (index) -dir: 2026-05-25-mobile-pages-overhaul +# openspec/changes/archive/2026-05-25-mobile-pages-overhaul (index) +dir: openspec/changes/archive/2026-05-25-mobile-pages-overhaul ## role -Mobile-responsive UI overhaul package that adapts three complex desktop split-pane interfaces for mobile while preserving existing desktop experiences. +Archive of a completed mobile-first responsive UI overhaul for complex configuration/workspace pages. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2026-05-25-mobile-pages-overhaul/specs - index: 2026-05-25-mobile-pages-overhaul/specs/.pi-map.index.md - map: 2026-05-25-mobile-pages-overhaul/specs/.pi-map.md +- openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs + index: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/.pi-map.index.md + map: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/.pi-map.md ## files - .openspec.yaml - design.md - proposal.md - tasks.md ## links -index: 2026-05-25-mobile-pages-overhaul/.pi-map.index.md -map: 2026-05-25-mobile-pages-overhaul/.pi-map.md +index: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/.pi-map.md b/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/.pi-map.md index a476a32..b992371 100644 --- a/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/.pi-map.md +++ b/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/.pi-map.md @@ -1,19 +1,19 @@ -# 2026-05-25-mobile-pages-overhaul -dir: 2026-05-25-mobile-pages-overhaul +# openspec/changes/archive/2026-05-25-mobile-pages-overhaul +dir: openspec/changes/archive/2026-05-25-mobile-pages-overhaul -index: 2026-05-25-mobile-pages-overhaul/.pi-map.index.md +index: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/.pi-map.index.md ## role -Mobile-responsive UI overhaul package that adapts three complex desktop split-pane interfaces for mobile while preserving existing desktop experiences. +Archive of a completed mobile-first responsive UI overhaul for complex configuration/workspace pages. ## files -- .openspec.yaml | Defines an OpenSpec configuration file specifying a spec-driven schema with a creation date. -- design.md | Design document specifying mobile-first responsive UI adaptations for three desktop split-pane interfaces (Tool Workshop, Config Profiles, Repo Workspace) while preserving existing desktop experiences. -- proposal.md | Proposes mobile-first redesigns for complex configuration and workspace pages while preserving existing desktop layouts -- tasks.md | Project task checklist tracking mobile UI/UX implementation progress across navigation, list-detail views, tool workshop, config profiles, repo workspace, and testing +- .openspec.yaml | Defines an OpenSpec configuration file specifying a spec-driven schema with a creation date +- design.md | Design document specifying mobile-first responsive UI patterns for three complex configuration/workspace pages while preserving desktop layouts. +- proposal.md | Proposes mobile-first redesigns for complex pages (Tool Workshop, Config Profiles, Repo Workspace) while keeping desktop unchanged. +- tasks.md | This file is a completed task checklist documenting mobile UI/UX implementation work across navigation, list-detail components, tool workshop, config profiles, repo workspace, and testing/polish phases. ## arch -Specification-driven design with phased task execution, employing responsive mobile-first adaptation pattern that transforms desktop split-pane layouts into mobile-appropriate navigation and list-detail view patterns. +Specification-driven design using OpenSpec schema with phased task execution (navigation → components → page-specific implementations → testing/polish) preserving existing desktop layouts through progressive enhancement. ## tags -design, mobile, desktop, workspace, configuration, specifying, .openspec, first +design, mobile, workspace, configuration, specifying, .openspec, first, complex ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/.pi-map.index.md b/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/.pi-map.index.md index b28e78d..653fb73 100644 --- a/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/.pi-map.index.md @@ -1,28 +1,28 @@ -# 2026-05-25-mobile-pages-overhaul/specs (index) -dir: 2026-05-25-mobile-pages-overhaul/specs +# openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs (index) +dir: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs ## role -Contains specification documents for the 2026 mobile pages overhaul project. +Contains archived specification documents from a May 2026 mobile pages overhaul project, preserving historical design decisions and requirements for the OpenSpec project. ## parent -index: 2026-05-25-mobile-pages-overhaul/.pi-map.index.md -map: 2026-05-25-mobile-pages-overhaul/.pi-map.md +index: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/.pi-map.md ## children -- 2026-05-25-mobile-pages-overhaul/specs/mobile-list-detail - index: 2026-05-25-mobile-pages-overhaul/specs/mobile-list-detail/.pi-map.index.md - map: 2026-05-25-mobile-pages-overhaul/specs/mobile-list-detail/.pi-map.md -- 2026-05-25-mobile-pages-overhaul/specs/mobile-navigation - index: 2026-05-25-mobile-pages-overhaul/specs/mobile-navigation/.pi-map.index.md - map: 2026-05-25-mobile-pages-overhaul/specs/mobile-navigation/.pi-map.md -- 2026-05-25-mobile-pages-overhaul/specs/mobile-repo-workspace - index: 2026-05-25-mobile-pages-overhaul/specs/mobile-repo-workspace/.pi-map.index.md - map: 2026-05-25-mobile-pages-overhaul/specs/mobile-repo-workspace/.pi-map.md -- 2026-05-25-mobile-pages-overhaul/specs/mobile-tools-navigation - index: 2026-05-25-mobile-pages-overhaul/specs/mobile-tools-navigation/.pi-map.index.md - map: 2026-05-25-mobile-pages-overhaul/specs/mobile-tools-navigation/.pi-map.md +- openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-list-detail + index: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-list-detail/.pi-map.index.md + map: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-list-detail/.pi-map.md +- openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-navigation + index: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-navigation/.pi-map.index.md + map: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-navigation/.pi-map.md +- openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-repo-workspace + index: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-repo-workspace/.pi-map.index.md + map: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-repo-workspace/.pi-map.md +- openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-tools-navigation + index: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-tools-navigation/.pi-map.index.md + map: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-tools-navigation/.pi-map.md ## files ## links -index: 2026-05-25-mobile-pages-overhaul/specs/.pi-map.index.md -map: 2026-05-25-mobile-pages-overhaul/specs/.pi-map.md +index: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/.pi-map.md b/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/.pi-map.md index d709834..5cf62c1 100644 --- a/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/.pi-map.md +++ b/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/.pi-map.md @@ -1,13 +1,13 @@ -# 2026-05-25-mobile-pages-overhaul/specs -dir: 2026-05-25-mobile-pages-overhaul/specs +# openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs +dir: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs -index: 2026-05-25-mobile-pages-overhaul/specs/.pi-map.index.md +index: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/.pi-map.index.md ## role -Contains specification documents for the 2026 mobile pages overhaul project. +Contains archived specification documents from a May 2026 mobile pages overhaul project, preserving historical design decisions and requirements for the OpenSpec project. ## files ## arch -Documentation-driven development with dated project milestones using flat file organization for requirements/specs. +Flat archival storage pattern with date-based directory hierarchy (YYYY-MM-DD-descriptive-name) for immutable historical record-keeping of past specifications. ## tags - ## symbols diff --git a/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-list-detail/.pi-map.index.md b/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-list-detail/.pi-map.index.md index 978b279..e1cfdcb 100644 --- a/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-list-detail/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-list-detail/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-25-mobile-pages-overhaul/specs/mobile-list-detail (index) -dir: 2026-05-25-mobile-pages-overhaul/specs/mobile-list-detail +# openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-list-detail (index) +dir: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-list-detail ## role -Defines UI/UX specifications for mobile-responsive list and detail views in a configuration management system. +Defines UI specifications for mobile list and detail views in a configuration management application. ## parent -index: 2026-05-25-mobile-pages-overhaul/specs/.pi-map.index.md -map: 2026-05-25-mobile-pages-overhaul/specs/.pi-map.md +index: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-25-mobile-pages-overhaul/specs/mobile-list-detail/.pi-map.index.md -map: 2026-05-25-mobile-pages-overhaul/specs/mobile-list-detail/.pi-map.md +index: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-list-detail/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-list-detail/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-list-detail/.pi-map.md b/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-list-detail/.pi-map.md index 6107d01..153f8dd 100644 --- a/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-list-detail/.pi-map.md +++ b/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-list-detail/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-25-mobile-pages-overhaul/specs/mobile-list-detail -dir: 2026-05-25-mobile-pages-overhaul/specs/mobile-list-detail +# openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-list-detail +dir: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-list-detail -index: 2026-05-25-mobile-pages-overhaul/specs/mobile-list-detail/.pi-map.index.md +index: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-list-detail/.pi-map.index.md ## role -Defines UI/UX specifications for mobile-responsive list and detail views in a configuration management system. +Defines UI specifications for mobile list and detail views in a configuration management application. ## files -- spec.md | Defines mobile UI requirements for a configuration management system with list views, detail views, editing, and CRUD operations for tool types and config profiles. +- spec.md | Mobile UI requirements specification for a configuration management application featuring list views, detail views, editing workflows, and CRUD operations for tool types and config profiles. ## arch -Specification-driven design with feature-based organization, defining interaction patterns for master-detail navigation, CRUD flows, and responsive mobile interfaces. +Specification-driven design with structured requirements for list-detail pattern, CRUD workflows, and modal-based editing interactions. ## tags -views, spec, defines, mobile, requirements, configuration, management, system +views, spec, mobile, requirements, specification, configuration, management, application ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-navigation/.pi-map.index.md b/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-navigation/.pi-map.index.md index d7dc588..c03e0c0 100644 --- a/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-navigation/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-navigation/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-25-mobile-pages-overhaul/specs/mobile-navigation (index) -dir: 2026-05-25-mobile-pages-overhaul/specs/mobile-navigation +# openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-navigation (index) +dir: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-navigation ## role -Defines requirements for a grouped bottom navigation system with submenu behavior on mobile devices. +Defines requirements for a mobile bottom navigation component with expandable sub-menus to group related pages. ## parent -index: 2026-05-25-mobile-pages-overhaul/specs/.pi-map.index.md -map: 2026-05-25-mobile-pages-overhaul/specs/.pi-map.md +index: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-25-mobile-pages-overhaul/specs/mobile-navigation/.pi-map.index.md -map: 2026-05-25-mobile-pages-overhaul/specs/mobile-navigation/.pi-map.md +index: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-navigation/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-navigation/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-navigation/.pi-map.md b/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-navigation/.pi-map.md index 808d4e4..9f41a6a 100644 --- a/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-navigation/.pi-map.md +++ b/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-navigation/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-25-mobile-pages-overhaul/specs/mobile-navigation -dir: 2026-05-25-mobile-pages-overhaul/specs/mobile-navigation +# openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-navigation +dir: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-navigation -index: 2026-05-25-mobile-pages-overhaul/specs/mobile-navigation/.pi-map.index.md +index: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-navigation/.pi-map.index.md ## role -Defines requirements for a grouped bottom navigation system with submenu behavior on mobile devices. +Defines requirements for a mobile bottom navigation component with expandable sub-menus to group related pages. ## files -- spec.md | Defines requirements for grouped bottom navigation with submenu behavior on mobile +- spec.md | Defines mobile bottom navigation requirements for grouping related pages under expandable sub-menu items ## arch -Specification-driven design using a single markdown requirements document to capture mobile UX patterns for hierarchical navigation. +Specification-driven design using markdown-based requirements documentation for UI/UX behavior patterns. ## tags -spec, defines, requirements, grouped, bottom, navigation, submenu, behavior +spec, defines, mobile, bottom, navigation, requirements, grouping, related ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-repo-workspace/.pi-map.index.md b/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-repo-workspace/.pi-map.index.md index 11c17f5..0c55cea 100644 --- a/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-repo-workspace/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-repo-workspace/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-25-mobile-pages-overhaul/specs/mobile-repo-workspace (index) -dir: 2026-05-25-mobile-pages-overhaul/specs/mobile-repo-workspace +# openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-repo-workspace (index) +dir: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-repo-workspace ## role -Defines mobile UI requirements for a repository workspace featuring file tree navigation, editor, git, and terminal views +Defines UI requirements for a mobile repository workspace interface supporting file tree, editor, git, and terminal views. ## parent -index: 2026-05-25-mobile-pages-overhaul/specs/.pi-map.index.md -map: 2026-05-25-mobile-pages-overhaul/specs/.pi-map.md +index: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-25-mobile-pages-overhaul/specs/mobile-repo-workspace/.pi-map.index.md -map: 2026-05-25-mobile-pages-overhaul/specs/mobile-repo-workspace/.pi-map.md +index: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-repo-workspace/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-repo-workspace/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-repo-workspace/.pi-map.md b/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-repo-workspace/.pi-map.md index c7eb69a..d233b40 100644 --- a/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-repo-workspace/.pi-map.md +++ b/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-repo-workspace/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-05-25-mobile-pages-overhaul/specs/mobile-repo-workspace -dir: 2026-05-25-mobile-pages-overhaul/specs/mobile-repo-workspace +# openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-repo-workspace +dir: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-repo-workspace -index: 2026-05-25-mobile-pages-overhaul/specs/mobile-repo-workspace/.pi-map.index.md +index: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-repo-workspace/.pi-map.index.md ## role -Defines mobile UI requirements for a repository workspace featuring file tree navigation, editor, git, and terminal views +Defines UI requirements for a mobile repository workspace interface supporting file tree, editor, git, and terminal views. ## files -- spec.md | Define mobile UI requirements for a repository workspace featuring file tree navigation, editor, git, and terminal views +- spec.md | Defines mobile UI requirements for a repository workspace with file tree, editor, git, and terminal views ## arch -Specification document using structured requirements format with feature decomposition into distinct functional views (file tree, editor, git, terminal) +Specification-driven design using Markdown-based requirements documentation with view-based modular UI decomposition. ## tags -spec, define, mobile, requirements, repository, workspace, featuring, tree +spec, defines, mobile, requirements, repository, workspace, tree, editor ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-tools-navigation/.pi-map.index.md b/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-tools-navigation/.pi-map.index.md index 520b78b..4fd8f51 100644 --- a/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-tools-navigation/.pi-map.index.md +++ b/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-tools-navigation/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-05-25-mobile-pages-overhaul/specs/mobile-tools-navigation (index) -dir: 2026-05-25-mobile-pages-overhaul/specs/mobile-tools-navigation +# openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-tools-navigation (index) +dir: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-tools-navigation ## role -Defines UX specifications for the mobile tools navigation component, including bottom sheet menu behavior and active state visualization. +Defines mobile UI interaction specifications for a grouped "Tools" bottom navigation entry with bottom sheet behavior and active state indication. ## parent -index: 2026-05-25-mobile-pages-overhaul/specs/.pi-map.index.md -map: 2026-05-25-mobile-pages-overhaul/specs/.pi-map.md +index: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-05-25-mobile-pages-overhaul/specs/mobile-tools-navigation/.pi-map.index.md -map: 2026-05-25-mobile-pages-overhaul/specs/mobile-tools-navigation/.pi-map.md +index: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-tools-navigation/.pi-map.index.md +map: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-tools-navigation/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-tools-navigation/.pi-map.md b/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-tools-navigation/.pi-map.md index 04aa5a2..33934f2 100644 --- a/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-tools-navigation/.pi-map.md +++ b/openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-tools-navigation/.pi-map.md @@ -1,14 +1,14 @@ -# 2026-05-25-mobile-pages-overhaul/specs/mobile-tools-navigation -dir: 2026-05-25-mobile-pages-overhaul/specs/mobile-tools-navigation +# openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-tools-navigation +dir: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-tools-navigation -index: 2026-05-25-mobile-pages-overhaul/specs/mobile-tools-navigation/.pi-map.index.md +index: openspec/changes/archive/2026-05-25-mobile-pages-overhaul/specs/mobile-tools-navigation/.pi-map.index.md ## role -Defines UX specifications for the mobile tools navigation component, including bottom sheet menu behavior and active state visualization. +Defines mobile UI interaction specifications for a grouped "Tools" bottom navigation entry with bottom sheet behavior and active state indication. ## files -- spec.md | Defines mobile UI requirements for a grouped "Tools" bottom navigation with a bottom sheet menu and active state indication +- spec.md | Defines mobile UI requirements for a grouped "Tools" bottom navigation entry with bottom sheet behavior and active state indication ## arch -Specification-driven design using markdown-based requirements documentation with behavioral state definitions (active/inactive) and interaction patterns (bottom sheet, grouped navigation items). +Specification-driven design using markdown-based requirements documentation with behavioral state definitions for mobile navigation patterns. ## tags bottom, spec, defines, mobile, requirements, grouped, tools, navigation ## symbols diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.index.md index 8ef115b..4ac4072 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.index.md @@ -1,80 +1,80 @@ -# 2026-06-12-completed-changes-archive (index) -dir: 2026-06-12-completed-changes-archive +# openspec/changes/archive/2026-06-12-completed-changes-archive (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive ## role -Historical archive documenting completed OpenSpec changes for audit and reference purposes. +Maintains a historical record of completed and audited OpenSpec changes for reference and traceability. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2026-06-12-completed-changes-archive/backend-frontend-refactoring - index: 2026-06-12-completed-changes-archive/backend-frontend-refactoring/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/backend-frontend-refactoring/.pi-map.md -- 2026-06-12-completed-changes-archive/config-profile-directory-mounts - index: 2026-06-12-completed-changes-archive/config-profile-directory-mounts/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/config-profile-directory-mounts/.pi-map.md -- 2026-06-12-completed-changes-archive/config-profile-git-mounts - index: 2026-06-12-completed-changes-archive/config-profile-git-mounts/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/config-profile-git-mounts/.pi-map.md -- 2026-06-12-completed-changes-archive/config-profile-includes-ui - index: 2026-06-12-completed-changes-archive/config-profile-includes-ui/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/config-profile-includes-ui/.pi-map.md -- 2026-06-12-completed-changes-archive/config-profile-multi-repo-mounts - index: 2026-06-12-completed-changes-archive/config-profile-multi-repo-mounts/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/config-profile-multi-repo-mounts/.pi-map.md -- 2026-06-12-completed-changes-archive/container-monitoring-notifications - index: 2026-06-12-completed-changes-archive/container-monitoring-notifications/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/container-monitoring-notifications/.pi-map.md -- 2026-06-12-completed-changes-archive/git-mount-url-validation - index: 2026-06-12-completed-changes-archive/git-mount-url-validation/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/git-mount-url-validation/.pi-map.md -- 2026-06-12-completed-changes-archive/home-path-expansion - index: 2026-06-12-completed-changes-archive/home-path-expansion/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/home-path-expansion/.pi-map.md -- 2026-06-12-completed-changes-archive/mobile-terminal-ux - index: 2026-06-12-completed-changes-archive/mobile-terminal-ux/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/mobile-terminal-ux/.pi-map.md -- 2026-06-12-completed-changes-archive/mount-specificity-ordering - index: 2026-06-12-completed-changes-archive/mount-specificity-ordering/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/mount-specificity-ordering/.pi-map.md -- 2026-06-12-completed-changes-archive/multi-session-terminal-ux - index: 2026-06-12-completed-changes-archive/multi-session-terminal-ux/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/multi-session-terminal-ux/.pi-map.md -- 2026-06-12-completed-changes-archive/notification-center - index: 2026-06-12-completed-changes-archive/notification-center/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/notification-center/.pi-map.md -- 2026-06-12-completed-changes-archive/persistent-terminal-sessions - index: 2026-06-12-completed-changes-archive/persistent-terminal-sessions/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/persistent-terminal-sessions/.pi-map.md -- 2026-06-12-completed-changes-archive/reorganize-long-files - index: 2026-06-12-completed-changes-archive/reorganize-long-files/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/reorganize-long-files/.pi-map.md -- 2026-06-12-completed-changes-archive/session-list-overhaul - index: 2026-06-12-completed-changes-archive/session-list-overhaul/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/session-list-overhaul/.pi-map.md -- 2026-06-12-completed-changes-archive/ssh-key-mounting - index: 2026-06-12-completed-changes-archive/ssh-key-mounting/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/ssh-key-mounting/.pi-map.md -- 2026-06-12-completed-changes-archive/terminal-fullscreen-unified-header - index: 2026-06-12-completed-changes-archive/terminal-fullscreen-unified-header/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/terminal-fullscreen-unified-header/.pi-map.md -- 2026-06-12-completed-changes-archive/tool-config-mount-cleanup - index: 2026-06-12-completed-changes-archive/tool-config-mount-cleanup/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/tool-config-mount-cleanup/.pi-map.md -- 2026-06-12-completed-changes-archive/tool-session-progress-and-updates - index: 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/.pi-map.md -- 2026-06-12-completed-changes-archive/working-copies - index: 2026-06-12-completed-changes-archive/working-copies/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/working-copies/.pi-map.md -- 2026-06-12-completed-changes-archive/workspace-first-ui - index: 2026-06-12-completed-changes-archive/workspace-first-ui/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/workspace-first-ui/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/backend-frontend-refactoring + index: openspec/changes/archive/2026-06-12-completed-changes-archive/backend-frontend-refactoring/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/backend-frontend-refactoring/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-directory-mounts + index: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-directory-mounts/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-directory-mounts/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts + index: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui + index: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-multi-repo-mounts + index: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-multi-repo-mounts/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-multi-repo-mounts/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/container-monitoring-notifications + index: openspec/changes/archive/2026-06-12-completed-changes-archive/container-monitoring-notifications/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/container-monitoring-notifications/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/git-mount-url-validation + index: openspec/changes/archive/2026-06-12-completed-changes-archive/git-mount-url-validation/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/git-mount-url-validation/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/home-path-expansion + index: openspec/changes/archive/2026-06-12-completed-changes-archive/home-path-expansion/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/home-path-expansion/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux + index: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/mount-specificity-ordering + index: openspec/changes/archive/2026-06-12-completed-changes-archive/mount-specificity-ordering/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/mount-specificity-ordering/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/multi-session-terminal-ux + index: openspec/changes/archive/2026-06-12-completed-changes-archive/multi-session-terminal-ux/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/multi-session-terminal-ux/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/notification-center + index: openspec/changes/archive/2026-06-12-completed-changes-archive/notification-center/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/notification-center/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions + index: openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/reorganize-long-files + index: openspec/changes/archive/2026-06-12-completed-changes-archive/reorganize-long-files/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/reorganize-long-files/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul + index: openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/ssh-key-mounting + index: openspec/changes/archive/2026-06-12-completed-changes-archive/ssh-key-mounting/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/ssh-key-mounting/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/terminal-fullscreen-unified-header + index: openspec/changes/archive/2026-06-12-completed-changes-archive/terminal-fullscreen-unified-header/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/terminal-fullscreen-unified-header/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/tool-config-mount-cleanup + index: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-config-mount-cleanup/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-config-mount-cleanup/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates + index: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/working-copies + index: openspec/changes/archive/2026-06-12-completed-changes-archive/working-copies/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/working-copies/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/workspace-first-ui + index: openspec/changes/archive/2026-06-12-completed-changes-archive/workspace-first-ui/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/workspace-first-ui/.pi-map.md ## files - README.md ## links -index: 2026-06-12-completed-changes-archive/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.md index 96c5595..4a72373 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-12-completed-changes-archive -dir: 2026-06-12-completed-changes-archive +# openspec/changes/archive/2026-06-12-completed-changes-archive +dir: openspec/changes/archive/2026-06-12-completed-changes-archive -index: 2026-06-12-completed-changes-archive/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.index.md ## role -Historical archive documenting completed OpenSpec changes for audit and reference purposes. +Maintains a historical record of completed and audited OpenSpec changes for reference and traceability. ## files -- README.md | Documents a historical archive of 17 fully implemented OpenSpec changes that have been audited against the source tree +- README.md | Documents archived completed OpenSpec changes that have been audited and confirmed as fully implemented in the source tree. ## arch -Simple documentation-based archive pattern with no active code, serving as immutable change log for compliance tracking. +Simple archival storage pattern using date-based directory naming with human-readable documentation for immutable change records. ## tags -readme, documents, historical, archive, fully, implemented, openspec, changes +readme, documents, archived, completed, openspec, changes, have, been ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/backend-frontend-refactoring/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/backend-frontend-refactoring/.pi-map.index.md index cf45b18..6843fbc 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/backend-frontend-refactoring/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/backend-frontend-refactoring/.pi-map.index.md @@ -1,11 +1,11 @@ -# 2026-06-12-completed-changes-archive/backend-frontend-refactoring (index) -dir: 2026-06-12-completed-changes-archive/backend-frontend-refactoring +# openspec/changes/archive/2026-06-12-completed-changes-archive/backend-frontend-refactoring (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/backend-frontend-refactoring ## role -This package serves as an archived planning and specification artifact for a completed structural refactoring that decomposed a monolithic Python/FastAPI backend and TypeScript frontend into domain-based modular subpackages. +This package archives a completed 2026 structural refactoring specification that reorganized a Python/FastAPI backend and TypeScript frontend monolith into domain-based subpackages with extracted schemas and standardized naming conventions. ## parent -index: 2026-06-12-completed-changes-archive/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.md ## children - ## files @@ -15,8 +15,8 @@ map: 2026-06-12-completed-changes-archive/.pi-map.md - spec.md - tasks.md ## links -index: 2026-06-12-completed-changes-archive/backend-frontend-refactoring/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/backend-frontend-refactoring/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/backend-frontend-refactoring/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/backend-frontend-refactoring/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/backend-frontend-refactoring/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/backend-frontend-refactoring/.pi-map.md index 9d4ca98..2501a3f 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/backend-frontend-refactoring/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/backend-frontend-refactoring/.pi-map.md @@ -1,20 +1,20 @@ -# 2026-06-12-completed-changes-archive/backend-frontend-refactoring -dir: 2026-06-12-completed-changes-archive/backend-frontend-refactoring +# openspec/changes/archive/2026-06-12-completed-changes-archive/backend-frontend-refactoring +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/backend-frontend-refactoring -index: 2026-06-12-completed-changes-archive/backend-frontend-refactoring/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/backend-frontend-refactoring/.pi-map.index.md ## role -This package serves as an archived planning and specification artifact for a completed structural refactoring that decomposed a monolithic Python/FastAPI backend and TypeScript frontend into domain-based modular subpackages. +This package archives a completed 2026 structural refactoring specification that reorganized a Python/FastAPI backend and TypeScript frontend monolith into domain-based subpackages with extracted schemas and standardized naming conventions. ## files -- .openspec.yaml | Defines an OpenSpec configuration file with schema type and creation date metadata -- design.md | Architecture design document for a large-scale backend/frontend refactoring to decompose monolithic modules into domain-based subpackages while preserving API contracts and behavior | dep: FastAPI, Pydantic, SQLAlchemy, Docker, cloudflared, React/TypeScript -- proposal.md | This file is a technical proposal document outlining a pure structural refactoring to split monolithic backend files and reorganize frontend code without changing any behavior. -- spec.md | Defines a pure structural refactoring specification for extracting schemas, splitting monolithic services, reorganizing frontend features, and standardizing naming conventions without changing any behavior or API contracts. | dep: Pydantic, FastAPI (implied by Depends, API routers), SQLAlchemy AsyncSession, React/TypeScript frontend, Docker, ruff, npm -- tasks.md | Defines a multi-phase refactoring plan to reorganize a Python/FastAPI backend and TypeScript frontend codebase into modular subpackages with verification steps | dep: FastAPI, Docker, pytest, ruff, py_compile, npm, TypeScript, React Router +- .openspec.yaml | Defines an OpenSpec configuration file with schema version and creation date metadata +- design.md | A design document specifying a large-scale backend/frontend refactoring to split monolithic modules into domain-based subpackages, extract schemas, and standardize naming conventions. | dep: FastAPI, Pydantic, SQLAlchemy, Docker, React/TypeScript, Git +- proposal.md | Proposes a pure structural refactoring of a codebase to extract schemas, split monolithic services, refactor auth dependencies, and reorganize frontend files without changing behavior. +- spec.md | This file defines a pure structural refactoring specification for extracting schemas, splitting service monoliths, reorganizing frontend code, and enforcing file size limits without changing any behavior or API contracts. | dep: Pydantic, FastAPI, SQLAlchemy, Docker Compose, React/TypeScript, ruff, npm +- tasks.md | A phased project roadmap for reorganizing a Python/FastAPI backend and TypeScript frontend codebase into domain-based subpackages with verification steps | dep: Python, FastAPI, Pydantic, Docker, ruff, py_compile, pytest, npm, TypeScript, React ## arch -Document-driven waterfall planning architecture using OpenSpec schema configuration, multi-phase task breakdown (design → proposal → specification → implementation), and strict behavior-preserving refactoring patterns with API contract immutability and verification gates. +Document-driven specification architecture using phased task breakdown (OpenSpec YAML metadata + layered markdown docs: design → proposal → spec → tasks) with behavior-preserving pure structural refactoring pattern enforced by file size limits and verification gates. ## tags -frontend, refactoring, defines, design, backend, monolithic, behavior, fastapi +frontend, fastapi, typescript, design, refactoring, schemas, pydantic, react ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-directory-mounts/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-directory-mounts/.pi-map.index.md index b740c49..b0766ac 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-directory-mounts/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-directory-mounts/.pi-map.index.md @@ -1,11 +1,11 @@ -# 2026-06-12-completed-changes-archive/config-profile-directory-mounts (index) -dir: 2026-06-12-completed-changes-archive/config-profile-directory-mounts +# openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-directory-mounts (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-directory-mounts ## role -Archives a completed configuration profile refactoring that fixes root-owned directory mount issues by staging and bind-mounting entire directories. +Provides a completed configuration profile fix for directory mount staging issues in OpenSpec, with full documentation of the bug diagnosis, solution design, and implementation tracking. ## parent -index: 2026-06-12-completed-changes-archive/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.md ## children - ## files @@ -13,8 +13,8 @@ map: 2026-06-12-completed-changes-archive/.pi-map.md - proposal.md - tasks.md ## links -index: 2026-06-12-completed-changes-archive/config-profile-directory-mounts/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/config-profile-directory-mounts/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-directory-mounts/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-directory-mounts/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-directory-mounts/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-directory-mounts/.pi-map.md index 8f8a489..7526aeb 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-directory-mounts/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-directory-mounts/.pi-map.md @@ -1,18 +1,18 @@ -# 2026-06-12-completed-changes-archive/config-profile-directory-mounts -dir: 2026-06-12-completed-changes-archive/config-profile-directory-mounts +# openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-directory-mounts +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-directory-mounts -index: 2026-06-12-completed-changes-archive/config-profile-directory-mounts/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-directory-mounts/.pi-map.index.md ## role -Archives a completed configuration profile refactoring that fixes root-owned directory mount issues by staging and bind-mounting entire directories. +Provides a completed configuration profile fix for directory mount staging issues in OpenSpec, with full documentation of the bug diagnosis, solution design, and implementation tracking. ## files - .openspec.yaml | Defines an OpenSpec configuration profile for directory mounts with completion tracking metadata -- proposal.md | Proposes a design change to fix root-owned directory issues in config profile mounts by staging and bind-mounting entire directories instead of individual files. | dep: Docker, config_profile_resolver.py, test_config_profile_resolver.py -- tasks.md | Tracks completed development tasks for refactoring a mount staging system and running quality gates. +- proposal.md | Proposes a design change to fix root-owned directory issues in config profile mounts by staging and bind-mounting entire directories instead of individual files. | dep: config_profile_resolver.py, Docker volume mounts, container user permissions +- tasks.md | A completed task checklist tracking the diagnosis and fix of a per-file mount staging bug, its refactoring to directory-level mounts, and the associated testing and deployment steps. ## arch -Documentation-driven change proposal with OpenSpec configuration, using a task-tracked implementation workflow for filesystem mount refactoring. +Documentation-driven change management using YAML metadata, markdown proposal/design docs, and task checklists to track a bugfix from diagnosis through refactoring to deployment. ## tags -tasks, profile, directory, mounts, .openspec, staging, py, proposal +directory, mounts, profile, tracking, .openspec, fix, staging, proposal ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/.pi-map.index.md index 962c1d3..5a2f761 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/.pi-map.index.md @@ -1,23 +1,23 @@ -# 2026-06-12-completed-changes-archive/config-profile-git-mounts (index) -dir: 2026-06-12-completed-changes-archive/config-profile-git-mounts +# openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts ## role -Archive of completed work for adding git repository mount support to config profiles, enabling version-controlled dotfiles in containers. +Design and planning package for implementing git repository mount support in config profiles, containing specification, design document, proposal, and implementation tracking. ## parent -index: 2026-06-12-completed-changes-archive/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.md ## children -- 2026-06-12-completed-changes-archive/config-profile-git-mounts/specs - index: 2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs + index: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/.pi-map.md ## files - .openspec.yaml - design.md - proposal.md - tasks.md ## links -index: 2026-06-12-completed-changes-archive/config-profile-git-mounts/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/config-profile-git-mounts/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/.pi-map.md index d17e71e..1aed85d 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/.pi-map.md @@ -1,19 +1,19 @@ -# 2026-06-12-completed-changes-archive/config-profile-git-mounts -dir: 2026-06-12-completed-changes-archive/config-profile-git-mounts +# openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts -index: 2026-06-12-completed-changes-archive/config-profile-git-mounts/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/.pi-map.index.md ## role -Archive of completed work for adding git repository mount support to config profiles, enabling version-controlled dotfiles in containers. +Design and planning package for implementing git repository mount support in config profiles, containing specification, design document, proposal, and implementation tracking. ## files -- .openspec.yaml | Defines an OpenSpec configuration file with schema type and creation date metadata -- design.md | Design document for adding git repository mount support to config profiles in a container management system | dep: ConfigProfile, git repositories, clone service, instance startup, Docker/volume mounts, database/JSONB -- proposal.md | Proposes adding git repository mounts to config profiles for version-controlled dotfiles in containers | dep: config profiles, git repositories, docker/container startup, database migrations, frontend UI/API -- tasks.md | A completed task checklist for implementing git repository mount functionality across database models, backend API, frontend UI, and documentation | dep: Alembic, SQLAlchemy, Pydantic, FastAPI, TypeScript, Docker Compose, git clone service +- .openspec.yaml | Defines an OpenAPI specification metadata file indicating a spec-driven schema approach with creation date tracking. +- design.md | Design document for adding git repository mount support to config profiles in a container instance system | dep: ConfigProfile, git repositories, clone service, instance startup, Docker bind mounts, profile preview/resolve +- proposal.md | Proposes adding git repository mounting capability to config profiles for version-controlled dotfiles | dep: config profiles, git repositories, docker, instance startup pipeline, database migrations +- tasks.md | A task checklist tracking the implementation of a git repository mounting feature for config profiles across database, backend API, frontend, and documentation. | dep: Alembic, SQLAlchemy, Pydantic, FastAPI/HTTP API, TypeScript, React, glob library, git clone service, docker compose ## arch -Design-driven feature implementation using proposal/design/task documentation hierarchy, with cross-stack changes spanning database models, backend API, frontend UI, and documentation. +Specification-driven development with phased implementation tracking, using markdown-based documentation hierarchy (proposal → design → tasks) and YAML metadata for schema versioning. ## tags -design, git, repository, .openspec, adding, mount, config, profiles +design, git, repository, config, profiles, tracking, .openspec, adding ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/.pi-map.index.md index 93b783e..36a9ffc 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/.pi-map.index.md @@ -1,22 +1,22 @@ -# 2026-06-12-completed-changes-archive/config-profile-git-mounts/specs (index) -dir: 2026-06-12-completed-changes-archive/config-profile-git-mounts/specs +# openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs ## role -Contains specification files defining configuration requirements and validation rules for git repository mount profiles. +Contains archived specification documents for completed configuration profile changes related to Git repository mounts from June 2026. ## parent -index: 2026-06-12-completed-changes-archive/config-profile-git-mounts/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/config-profile-git-mounts/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/.pi-map.md ## children -- 2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/config-profile-git-mounts - index: 2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/config-profile-git-mounts/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/config-profile-git-mounts/.pi-map.md -- 2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/tool-instances - index: 2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/tool-instances/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/tool-instances/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/config-profile-git-mounts + index: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/config-profile-git-mounts/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/config-profile-git-mounts/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/tool-instances + index: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/tool-instances/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/tool-instances/.pi-map.md ## files ## links -index: 2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/.pi-map.md index 5b3e2d3..3f9b548 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/.pi-map.md @@ -1,13 +1,13 @@ -# 2026-06-12-completed-changes-archive/config-profile-git-mounts/specs -dir: 2026-06-12-completed-changes-archive/config-profile-git-mounts/specs +# openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs -index: 2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/.pi-map.index.md ## role -Contains specification files defining configuration requirements and validation rules for git repository mount profiles. +Contains archived specification documents for completed configuration profile changes related to Git repository mounts from June 2026. ## files ## arch -Declarative specification pattern using structured config files (likely JSON/YAML) to define mount schemas, with separation of concerns between profile definitions and their operational implementation. +Flat directory archive structure storing immutable, dated specification snapshots for historical change tracking and audit compliance. ## tags - ## symbols diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/config-profile-git-mounts/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/config-profile-git-mounts/.pi-map.index.md index f386404..3078d54 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/config-profile-git-mounts/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/config-profile-git-mounts/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/config-profile-git-mounts (index) -dir: 2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/config-profile-git-mounts +# openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/config-profile-git-mounts (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/config-profile-git-mounts ## role -Defines requirements for mounting git repositories into containers via configuration profiles. +Defines requirements for mounting git repositories into containers via configuration profiles ## parent -index: 2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/config-profile-git-mounts/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/config-profile-git-mounts/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/config-profile-git-mounts/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/config-profile-git-mounts/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/config-profile-git-mounts/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/config-profile-git-mounts/.pi-map.md index d9668c9..11976cb 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/config-profile-git-mounts/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/config-profile-git-mounts/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/config-profile-git-mounts -dir: 2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/config-profile-git-mounts +# openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/config-profile-git-mounts +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/config-profile-git-mounts -index: 2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/config-profile-git-mounts/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/config-profile-git-mounts/.pi-map.index.md ## role -Defines requirements for mounting git repositories into containers via configuration profiles. +Defines requirements for mounting git repositories into containers via configuration profiles ## files -- spec.md | Defines requirements for adding git repository mounting capabilities to config profiles in a container management system | dep: git, container runtime, config profile system, UI/profile editor +- spec.md | Specifies requirements for adding git repository mounting capabilities to config profiles in a container system | dep: git, containers, config profiles, bind mounts, glob pattern matching ## arch -Specification-driven requirements document using markdown-based technical specification pattern. +Specification-driven requirements document using markdown-based specification format with structured sections for overview, goals, and detailed requirements ## tags -git, spec, defines, requirements, adding, repository, mounting, capabilities +git, spec, specifies, requirements, adding, repository, mounting, capabilities ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/tool-instances/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/tool-instances/.pi-map.index.md index 13d7f49..a8f23a9 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/tool-instances/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/tool-instances/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/tool-instances (index) -dir: 2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/tool-instances +# openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/tool-instances (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/tool-instances ## role -Defines requirements for git repository mounting behavior during tool instance startup. +Defines requirements for git repository mount processing during tool instance startup from configuration profiles. ## parent -index: 2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/tool-instances/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/tool-instances/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/tool-instances/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/tool-instances/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/tool-instances/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/tool-instances/.pi-map.md index 8da55bf..885f00f 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/tool-instances/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/tool-instances/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/tool-instances -dir: 2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/tool-instances +# openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/tool-instances +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/tool-instances -index: 2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/tool-instances/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-git-mounts/specs/tool-instances/.pi-map.index.md ## role -Defines requirements for git repository mounting behavior during tool instance startup. +Defines requirements for git repository mount processing during tool instance startup from configuration profiles. ## files -- spec.md | Defines requirements for git repository mount processing during tool instance startup, including config profile resolution, bind mount creation, auto-cloning, and failure handling. +- spec.md | Specifies requirements for processing git repository mounts from config profiles during tool instance startup, including bind mount creation, auto-cloning, and failure handling. ## arch -Specification-driven requirements document using plain markdown with no code implementation or architectural patterns. +Specification-driven requirements document using markdown-based technical specification pattern with functional requirements decomposition. ## tags -mount, spec, defines, requirements, git, repository, processing, tool +spec, specifies, requirements, processing, git, repository, mounts, config ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/.pi-map.index.md index 25b7e2b..63e0aa2 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/.pi-map.index.md @@ -1,23 +1,23 @@ -# 2026-06-12-completed-changes-archive/config-profile-includes-ui (index) -dir: 2026-06-12-completed-changes-archive/config-profile-includes-ui +# openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui ## role -Archive of completed UI work for drag-and-drop config profile includes management with cycle detection and scope visualization. +Archive of a completed feature specification for adding drag-and-drop profile includes management UI to a config profile editor. ## parent -index: 2026-06-12-completed-changes-archive/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.md ## children -- 2026-06-12-completed-changes-archive/config-profile-includes-ui/specs - index: 2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs + index: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/.pi-map.md ## files - .openspec.yaml - design.md - proposal.md - tasks.md ## links -index: 2026-06-12-completed-changes-archive/config-profile-includes-ui/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/config-profile-includes-ui/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/.pi-map.md index 69fee77..5bc13b8 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/.pi-map.md @@ -1,19 +1,19 @@ -# 2026-06-12-completed-changes-archive/config-profile-includes-ui -dir: 2026-06-12-completed-changes-archive/config-profile-includes-ui +# openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui -index: 2026-06-12-completed-changes-archive/config-profile-includes-ui/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/.pi-map.index.md ## role -Archive of completed UI work for drag-and-drop config profile includes management with cycle detection and scope visualization. +Archive of a completed feature specification for adding drag-and-drop profile includes management UI to a config profile editor. ## files -- .openspec.yaml | Defines an OpenSpec configuration file with schema version and creation date metadata -- design.md | Design document for adding drag-and-drop profile includes management UI to an existing config profile editor frontend | dep: React, HTML5 Drag and Drop API, config profiles backend API (listConfigProfiles, updateConfigProfile, updateProfileIncludes), existing scope badge components -- proposal.md | Proposes a UI feature for drag-and-drop management of ordered config profile includes with cycle detection and scope visualization | dep: config profiles backend API, frontend React app, drag-and-drop library -- tasks.md | Task tracking document for implementing a profile "includes" feature with UI, drag-and-drop reordering, and error handling +- .openspec.yaml | Defines an OpenSpec schema configuration file with metadata +- design.md | Design document for adding drag-and-drop profile includes management to an existing frontend config profile editor. | dep: React, native HTML5 Drag and Drop API, config profiles backend API, listConfigProfiles, updateConfigProfile, updateProfileIncludes +- proposal.md | Proposes a UI feature for drag-and-drop management of config profile includes with scope visualization and cycle detection +- tasks.md | Task tracking document for implementing a profile includes UI feature with drag-and-drop reordering, cycle detection, and error handling ## arch -Design-driven feature development with phased task tracking, using OpenSpec schema validation and explicit frontend/UX architecture documentation. +Specification-driven development using OpenSpec schema with structured design/proposal/task documents for a frontend feature involving hierarchical drag-and-drop interfaces with dependency graph validation. ## tags -drag, profile, design, drop, includes, .openspec, document, management +profile, design, drag, drop, includes, .openspec, document, management ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/.pi-map.index.md index 73dca3f..6fa04a2 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/.pi-map.index.md @@ -1,19 +1,19 @@ -# 2026-06-12-completed-changes-archive/config-profile-includes-ui/specs (index) -dir: 2026-06-12-completed-changes-archive/config-profile-includes-ui/specs +# openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs ## role -Contains archived specification documents for the config-profile-includes-ui feature that was completed on 2026-06-12. +Contains UI specification documents for the config-profile-includes feature that was archived after completion on June 12, 2026. ## parent -index: 2026-06-12-completed-changes-archive/config-profile-includes-ui/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/config-profile-includes-ui/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/.pi-map.md ## children -- 2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/config-profile-includes-management - index: 2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/config-profile-includes-management/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/config-profile-includes-management/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/config-profile-includes-management + index: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/config-profile-includes-management/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/config-profile-includes-management/.pi-map.md ## files ## links -index: 2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/.pi-map.md index 8b822cc..d89286c 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/.pi-map.md @@ -1,13 +1,13 @@ -# 2026-06-12-completed-changes-archive/config-profile-includes-ui/specs -dir: 2026-06-12-completed-changes-archive/config-profile-includes-ui/specs +# openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs -index: 2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/.pi-map.index.md ## role -Contains archived specification documents for the config-profile-includes-ui feature that was completed on 2026-06-12. +Contains UI specification documents for the config-profile-includes feature that was archived after completion on June 12, 2026. ## files ## arch -Document-based specification storage with date-versioned archiving pattern for completed feature requirements. +Archive-based documentation storage using date-stamped directories with flat file organization for historical change tracking. ## tags - ## symbols diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/config-profile-includes-management/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/config-profile-includes-management/.pi-map.index.md index 368789e..497732d 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/config-profile-includes-management/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/config-profile-includes-management/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/config-profile-includes-management (index) -dir: 2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/config-profile-includes-management +# openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/config-profile-includes-management (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/config-profile-includes-management ## role -Defines requirements for a config profile editor feature that enables users to view, modify, and persist profile include configurations through a management UI. +Defines UI specifications for managing configuration profile include files with CRUD and reordering operations. ## parent -index: 2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/config-profile-includes-management/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/config-profile-includes-management/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/config-profile-includes-management/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/config-profile-includes-management/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/config-profile-includes-management/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/config-profile-includes-management/.pi-map.md index d37e3cd..70b00f1 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/config-profile-includes-management/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/config-profile-includes-management/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/config-profile-includes-management -dir: 2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/config-profile-includes-management +# openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/config-profile-includes-management +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/config-profile-includes-management -index: 2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/config-profile-includes-management/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-includes-ui/specs/config-profile-includes-management/.pi-map.index.md ## role -Defines requirements for a config profile editor feature that enables users to view, modify, and persist profile include configurations through a management UI. +Defines UI specifications for managing configuration profile include files with CRUD and reordering operations. ## files -- spec.md | Define requirements for a config profile editor feature that manages profile includes with display, add/remove/reorder functionality, and save capabilities | dep: profile editor UI, includes API, profile update API, dropdown component, drag-and-drop system +- spec.md | Defines requirements for a config profile include system with display, add/remove/reorder, save, and list count features ## arch -Requirements specification using structured documentation pattern with functional requirements organized by user interaction flows (display, add/remove, reorder, save) and explicit UI/UX constraints. +Specification-driven requirements document using markdown-based feature specification pattern with user story and acceptance criteria structure. ## tags -profile, spec, define, requirements, config, editor, feature, manages +spec, defines, requirements, config, profile, include, system, display ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-multi-repo-mounts/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-multi-repo-mounts/.pi-map.index.md index c73be0a..1f5f3b3 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-multi-repo-mounts/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-multi-repo-mounts/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-12-completed-changes-archive/config-profile-multi-repo-mounts (index) -dir: 2026-06-12-completed-changes-archive/config-profile-multi-repo-mounts +# openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-multi-repo-mounts (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-multi-repo-mounts ## role -Archives a completed feature specification for extending Config Profiles to support multiple source/target path mappings within a single git repository mount entry. +Archives a completed feature specification for extending Config Profiles to support multiple source/target path mappings within a single git repository mount. ## parent -index: 2026-06-12-completed-changes-archive/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.md ## children - ## files - .openspec.yaml ## links -index: 2026-06-12-completed-changes-archive/config-profile-multi-repo-mounts/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/config-profile-multi-repo-mounts/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-multi-repo-mounts/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-multi-repo-mounts/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-multi-repo-mounts/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-multi-repo-mounts/.pi-map.md index 57f6a16..da02396 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-multi-repo-mounts/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-multi-repo-mounts/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-12-completed-changes-archive/config-profile-multi-repo-mounts -dir: 2026-06-12-completed-changes-archive/config-profile-multi-repo-mounts +# openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-multi-repo-mounts +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-multi-repo-mounts -index: 2026-06-12-completed-changes-archive/config-profile-multi-repo-mounts/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/config-profile-multi-repo-mounts/.pi-map.index.md ## role -Archives a completed feature specification for extending Config Profiles to support multiple source/target path mappings within a single git repository mount entry. +Archives a completed feature specification for extending Config Profiles to support multiple source/target path mappings within a single git repository mount. ## files -- .openspec.yaml | Define a completed feature specification for enabling multiple source/target mappings per git mount entry in Config Profiles with single repository cloning +- .openspec.yaml | Defines a completed feature specification for enabling multiple source/target mappings per git mount entry in Config Profiles with single repository cloning. ## arch -Specification-as-code pattern using OpenSpec YAML for formal feature documentation and change tracking in a dated archive directory structure. +Specification-driven change tracking using YAML-based feature documentation in a dated archive structure, capturing completed design decisions for multi-mapping repository mounts without sub-repository cloning. ## tags -.openspec, define, completed, feature, specification, enabling, multiple, source +.openspec, defines, completed, feature, specification, enabling, multiple, source ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/container-monitoring-notifications/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/container-monitoring-notifications/.pi-map.index.md index 088bb28..61dafc7 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/container-monitoring-notifications/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/container-monitoring-notifications/.pi-map.index.md @@ -1,11 +1,11 @@ -# 2026-06-12-completed-changes-archive/container-monitoring-notifications (index) -dir: 2026-06-12-completed-changes-archive/container-monitoring-notifications +# openspec/changes/archive/2026-06-12-completed-changes-archive/container-monitoring-notifications (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/container-monitoring-notifications ## role -Implements a real-time container monitoring and notification system that streams lifecycle events and health status from backend to frontend via SSE, replacing polling with instant visibility into container failures. +Archive of design documents, specifications, and implementation records for a container monitoring and notification system delivered through three stacked pull requests. ## parent -index: 2026-06-12-completed-changes-archive/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.md ## children - ## files @@ -20,8 +20,8 @@ map: 2026-06-12-completed-changes-archive/.pi-map.md - spec.md - tasks.md ## links -index: 2026-06-12-completed-changes-archive/container-monitoring-notifications/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/container-monitoring-notifications/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/container-monitoring-notifications/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/container-monitoring-notifications/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/container-monitoring-notifications/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/container-monitoring-notifications/.pi-map.md index 0fe8f7b..552af1e 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/container-monitoring-notifications/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/container-monitoring-notifications/.pi-map.md @@ -1,25 +1,25 @@ -# 2026-06-12-completed-changes-archive/container-monitoring-notifications -dir: 2026-06-12-completed-changes-archive/container-monitoring-notifications +# openspec/changes/archive/2026-06-12-completed-changes-archive/container-monitoring-notifications +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/container-monitoring-notifications -index: 2026-06-12-completed-changes-archive/container-monitoring-notifications/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/container-monitoring-notifications/.pi-map.index.md ## role -Implements a real-time container monitoring and notification system that streams lifecycle events and health status from backend to frontend via SSE, replacing polling with instant visibility into container failures. +Archive of design documents, specifications, and implementation records for a container monitoring and notification system delivered through three stacked pull requests. ## files - .openspec.yaml | Defines an OpenSpec project specification for a container monitoring and notification system -- apply-pr1.md | Documents the implementation of a backend core for container monitoring and notifications, including database migrations, SQLAlchemy models, event bus, health monitoring, SSE endpoint, lifecycle hooks, structured logging, and unit tests. | dep: SQLAlchemy, Alembic, FastAPI, asyncio, uvicorn, pytest, ruff, Docker, JSON -- apply-pr2.md | Documents the implementation of a frontend UI for container monitoring and notifications using Server-Sent Events, custom toast system, and real-time status updates. | dep: React, EventSource, TypeScript, Vitest, CSS, AbortController, fetch API -- apply-pr3.md | Documents the completion status and implementation details of PR-3 for container monitoring and notifications integration, including tests, API endpoints, documentation updates, and quality gate results. -- apply-progress.md | Documents the implementation progress of two pull requests for a container monitoring and notifications system, covering backend core services (EventBus, HealthMonitor, SSE endpoints) and frontend UI components (SSE hooks, custom toast system, real-time status updates). | dep: pytest, vitest, SQLAlchemy, Alembic, FastAPI/SSE, React, TypeScript, EventSource, ruff, eslint, asyncio, inspect, collections.abc -- design.md | Design document for a container monitoring and notification system using in-memory pub/sub, background health polling, SSE streaming, and frontend toast notifications | dep: FastAPI, SQLAlchemy, Alembic, asyncio, Docker, SSE/EventSource, sonner, TypeScript, Python -- explore.md | Exploratory analysis document identifying gaps and recommending architecture for container monitoring, health checks, logging, and notifications in a Docker-based tool instance management system. | dep: FastAPI, Docker CLI, SQLAlchemy, cloudflared, asyncio, SSE, React/frontend stack -- proposal.md | Proposes a container monitoring and real-time notification system using SSE to push lifecycle events and health status from a FastAPI backend to a frontend toast component, replacing 30-second polling with instant visibility into container failures, tunnel health, and audit trails. | dep: FastAPI, SSE/StreamingResponse, asyncio, Docker CLI, PostgreSQL, JSONB, UUID, WebSocket (existing terminal), sonner/toast library -- spec.md | Specifies a container monitoring and notification system using an in-memory event bus, background health monitor, SSE streaming, and frontend toast notifications with persistent audit logging. | dep: asyncio, PostgreSQL, Docker CLI, HTTP/tunnel, SSE/Server-Sent Events, JWT/cookie auth, JSON logging -- tasks.md | Defines a detailed software development plan for building a container monitoring and notification system across backend and frontend, broken into chained PRs with specific tasks, acceptance criteria, and dependencies. | dep: FastAPI, SQLAlchemy, Alembic, Docker, asyncio, SSE/EventSource, React, sonner, pytest +- apply-pr1.md | Documents the implementation of a backend monitoring and notification system for container instances, including database migrations, SQLAlchemy models, event bus, health monitoring, SSE streaming, lifecycle hooks, structured logging, and unit tests. | dep: Alembic, SQLAlchemy, asyncio, FastAPI, uvicorn, pytest, ruff, Docker, JSON +- apply-pr2.md | Documents a completed frontend pull request implementing real-time container monitoring and notifications via Server-Sent Events, custom toast system, and status badge updates | dep: React, EventSource, Vitest, TypeScript, ESLint, CSS +- apply-pr3.md | Documents the completion status, changed files, implementation summary, and quality gate results for PR-3 which integrated and polished container monitoring and notification features. +- apply-progress.md | Documents TDD-driven implementation progress for a container monitoring and notification system across backend (Python/FastAPI) and frontend (React/TypeScript) PRs, including architecture decisions, test evidence, and deviations from design. | dep: FastAPI, SQLAlchemy, Alembic, pytest, React, TypeScript, Vitest, EventSource, SSE, asyncio, inspect, collections.abc +- design.md | Design document for a container monitoring and notification system using pub/sub events, health monitoring, and Server-Sent Events to push real-time container status updates to a frontend toast notification system. | dep: FastAPI, SQLAlchemy, Alembic, asyncio, Docker, SSE/EventSource, sonner, React/TypeScript, JSON logging +- explore.md | Exploratory analysis document identifying gaps in container monitoring, logging, and notifications for a Docker-based tool instance management system, and recommending an SSE-based real-time event architecture. | dep: FastAPI, Docker CLI, docker-compose, SQLAlchemy, cloudflared, axios, asyncio, TerminalManager +- proposal.md | A software design proposal for implementing a real-time container monitoring and notification system with SSE-based push updates, health monitoring, and audit logging. | dep: FastAPI, Docker, asyncio, SSE/StreamingResponse, PostgreSQL, JSON logging, frontend toast component (sonner or custom), WebSocket (existing terminal), Docker CLI/shell-out patterns +- spec.md | Defines a container monitoring and notification system using an in-memory event bus, background health monitoring, SSE streaming, and real-time frontend notifications with persistent audit logging. | dep: asyncio, PostgreSQL, Docker CLI, HTTP/tunnel probes, SSE (Server-Sent Events), JWT/cookie authentication, JSON logging +- tasks.md | Defines a structured software design document (SDD) for building a container monitoring and notification system across 3 stacked PRs, detailing backend infrastructure (database, event bus, SSE, health monitoring) and frontend UI (SSE hook, toasts, badge updates) with specific tasks, acceptance criteria, and dependencies. | dep: FastAPI, SQLAlchemy, Alembic, Docker, asyncio, SSE/EventSource, React, sonner, pytest, uvicorn, contextvars, TypedDict ## arch -Event-driven architecture with in-memory pub/sub EventBus, background health polling, Server-Sent Events streaming from FastAPI backend, and frontend toast notification UI; implemented across chained PRs with SQLAlchemy models, structured logging, and persistent audit logging. +Event-driven architecture using pub/sub in-memory event bus with SSE streaming for real-time frontend updates, TDD-driven 3-PR stacked delivery (backend infrastructure → frontend UI → integration/polish), health monitoring with lifecycle hooks, structured logging, and persistent audit trail. ## tags -sse, container, monitoring, system, apply, notifications, fastapi, asyncio +monitoring, container, system, sse, notification, apply, asyncio, fastapi ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/git-mount-url-validation/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/git-mount-url-validation/.pi-map.index.md index d45cb88..b740941 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/git-mount-url-validation/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/git-mount-url-validation/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-12-completed-changes-archive/git-mount-url-validation (index) -dir: 2026-06-12-completed-changes-archive/git-mount-url-validation +# openspec/changes/archive/2026-06-12-completed-changes-archive/git-mount-url-validation (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/git-mount-url-validation ## role -Archives the completed specification for a git mount URL validation feature that was implemented as a high-priority item. +Preserves a completed feature specification for validating git repository URLs in mount configurations as a historical archive entry. ## parent -index: 2026-06-12-completed-changes-archive/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.md ## children - ## files - .openspec.yaml ## links -index: 2026-06-12-completed-changes-archive/git-mount-url-validation/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/git-mount-url-validation/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/git-mount-url-validation/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/git-mount-url-validation/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/git-mount-url-validation/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/git-mount-url-validation/.pi-map.md index 8433f91..54c433f 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/git-mount-url-validation/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/git-mount-url-validation/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-12-completed-changes-archive/git-mount-url-validation -dir: 2026-06-12-completed-changes-archive/git-mount-url-validation +# openspec/changes/archive/2026-06-12-completed-changes-archive/git-mount-url-validation +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/git-mount-url-validation -index: 2026-06-12-completed-changes-archive/git-mount-url-validation/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/git-mount-url-validation/.pi-map.index.md ## role -Archives the completed specification for a git mount URL validation feature that was implemented as a high-priority item. +Preserves a completed feature specification for validating git repository URLs in mount configurations as a historical archive entry. ## files -- .openspec.yaml | Defines an OpenSpec specification for a completed high-priority feature named "git-mount-url-validation" +- .openspec.yaml | Defines a completed high-priority feature specification for git mount URL validation ## arch -Specification-as-code pattern using OpenSpec YAML format for feature documentation and archival. +Specification-as-archive pattern using YAML-based feature documentation with date-versioned directory structure for immutable change tracking. ## tags -.openspec, defines, openspec, specification, completed, high, priority, feature +.openspec, defines, completed, high, priority, feature, specification, git ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/home-path-expansion/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/home-path-expansion/.pi-map.index.md index 503f70b..3cfea1e 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/home-path-expansion/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/home-path-expansion/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-12-completed-changes-archive/home-path-expansion (index) -dir: 2026-06-12-completed-changes-archive/home-path-expansion +# openspec/changes/archive/2026-06-12-completed-changes-archive/home-path-expansion (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/home-path-expansion ## role -Archive of a completed feature specification for home directory path expansion in container mount targets. +Defines a completed feature specification for home directory path expansion in container mount targets based on manifest user configuration. ## parent -index: 2026-06-12-completed-changes-archive/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.md ## children - ## files - .openspec.yaml ## links -index: 2026-06-12-completed-changes-archive/home-path-expansion/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/home-path-expansion/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/home-path-expansion/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/home-path-expansion/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/home-path-expansion/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/home-path-expansion/.pi-map.md index f61c6a3..e6fb1e9 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/home-path-expansion/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/home-path-expansion/.pi-map.md @@ -1,14 +1,14 @@ -# 2026-06-12-completed-changes-archive/home-path-expansion -dir: 2026-06-12-completed-changes-archive/home-path-expansion +# openspec/changes/archive/2026-06-12-completed-changes-archive/home-path-expansion +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/home-path-expansion -index: 2026-06-12-completed-changes-archive/home-path-expansion/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/home-path-expansion/.pi-map.index.md ## role -Archive of a completed feature specification for home directory path expansion in container mount targets. +Defines a completed feature specification for home directory path expansion in container mount targets based on manifest user configuration. ## files - .openspec.yaml | Defines a completed feature specification for resolving home directory path expansion (~ and $HOME) in container mount target paths based on manifest user configuration. ## arch -Specification-driven change documentation using OpenSpec YAML format for tracking completed feature implementations. +Specification-driven documentation pattern using YAML-based OpenSpec format for capturing archived feature requirements and design decisions. ## tags home, .openspec, defines, completed, feature, specification, resolving, directory ## symbols diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/.pi-map.index.md index 73e2a3a..93d876b 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/.pi-map.index.md @@ -1,23 +1,23 @@ -# 2026-06-12-completed-changes-archive/mobile-terminal-ux (index) -dir: 2026-06-12-completed-changes-archive/mobile-terminal-ux +# openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux ## role -Archives the completed mobile terminal UX redesign that enables web-based terminal usage on mobile devices through virtual keyboard handling, viewport optimization, and touch-friendly controls without external dependencies. +Documents a completed mobile terminal UX enhancement for web-based terminal applications with touch-friendly interfaces. ## parent -index: 2026-06-12-completed-changes-archive/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.md ## children -- 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs - index: 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs + index: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/.pi-map.md ## files - .openspec.yaml - design.md - proposal.md - tasks.md ## links -index: 2026-06-12-completed-changes-archive/mobile-terminal-ux/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/mobile-terminal-ux/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/.pi-map.md index 674b789..f03e0de 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/.pi-map.md @@ -1,19 +1,19 @@ -# 2026-06-12-completed-changes-archive/mobile-terminal-ux -dir: 2026-06-12-completed-changes-archive/mobile-terminal-ux +# openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux -index: 2026-06-12-completed-changes-archive/mobile-terminal-ux/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/.pi-map.index.md ## role -Archives the completed mobile terminal UX redesign that enables web-based terminal usage on mobile devices through virtual keyboard handling, viewport optimization, and touch-friendly controls without external dependencies. +Documents a completed mobile terminal UX enhancement for web-based terminal applications with touch-friendly interfaces. ## files -- .openspec.yaml | Defines an OpenSpec configuration file with schema version and creation date metadata -- design.md | Design document for making a web-based terminal mobile-friendly by addressing virtual keyboard handling, maximizing screen real estate, and providing special key access without adding new dependencies. | dep: React, xterm.js, browser APIs (Visual Viewport API, Clipboard API, WebSocket) -- proposal.md | Proposes a mobile-optimized terminal interface with special keys toolbar, dynamic viewport handling, and touch gestures to make terminal sessions usable on mobile devices. | dep: xterm.js, React, visualViewport API -- tasks.md | Task tracking checklist for implementing a mobile-responsive terminal interface with WebSocket connectivity, touch-friendly controls, and virtual keyboard handling. | dep: React, Visual Viewport API, WebSocket, Visibility API, localStorage, CSS transitions, npm +- .openspec.yaml | Defines an OpenSpec schema configuration file with metadata +- design.md | Design document outlining mobile terminal UX improvements for a web-based xterm.js terminal application | dep: xterm.js, React, browser APIs (Visual Viewport API, Clipboard API, WebSocket), CSS +- proposal.md | Proposes a mobile-optimized terminal user experience with touch-friendly controls, dynamic viewport handling, and special keys toolbar | dep: xterm.js, React, visualViewport API +- tasks.md | This file is a task checklist tracking the implementation of mobile terminal support for a web-based terminal application. | dep: React, WebSocket, Visual Viewport API, localStorage, CSS, TypeScript ## arch -Documentation-driven specification with OpenSpec schema validation, structured design/proposal/task artifacts, and WebSocket-based real-time terminal connectivity with pure CSS/JavaScript touch gesture handling. +Specification-driven development using OpenSpec schema configuration with structured design/proposal/task documentation tracking implementation progress. ## tags -terminal, mobile, design, handling, react, .openspec, friendly, virtual +terminal, design, mobile, xterm, react, .openspec, web, application ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/.pi-map.index.md index a30f253..018a8e2 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/.pi-map.index.md @@ -1,25 +1,25 @@ -# 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs (index) -dir: 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs +# openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs ## role -Contains archived mobile terminal user experience specifications from a completed June 2026 project phase. +Archive of completed mobile terminal UX specification changes from June 12, 2026, serving as historical record for the openspec project. ## parent -index: 2026-06-12-completed-changes-archive/mobile-terminal-ux/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/mobile-terminal-ux/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/.pi-map.md ## children -- 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/frontend-foundation - index: 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/frontend-foundation/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/frontend-foundation/.pi-map.md -- 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/mobile-terminal-ux - index: 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/mobile-terminal-ux/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/mobile-terminal-ux/.pi-map.md -- 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/tool-terminal - index: 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/tool-terminal/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/tool-terminal/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/frontend-foundation + index: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/frontend-foundation/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/frontend-foundation/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/mobile-terminal-ux + index: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/mobile-terminal-ux/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/mobile-terminal-ux/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/tool-terminal + index: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/tool-terminal/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/tool-terminal/.pi-map.md ## files ## links -index: 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/.pi-map.md index e8c76eb..35845e8 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/.pi-map.md @@ -1,13 +1,13 @@ -# 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs -dir: 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs +# openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs -index: 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/.pi-map.index.md ## role -Contains archived mobile terminal user experience specifications from a completed June 2026 project phase. +Archive of completed mobile terminal UX specification changes from June 12, 2026, serving as historical record for the openspec project. ## files ## arch -Document-based specification storage with date-versioned archival structure for historical reference. +Flat directory structure using date-based versioning with descriptive naming convention for change tracking and specification immutability. ## tags - ## symbols diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/frontend-foundation/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/frontend-foundation/.pi-map.index.md index 445d127..1414878 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/frontend-foundation/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/frontend-foundation/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/frontend-foundation (index) -dir: 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/frontend-foundation +# openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/frontend-foundation (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/frontend-foundation ## role -Defines frontend UI requirements for responsive layout components with mobile/desktop adaptations and specialized mobile terminal headers. +Defines frontend foundation specifications for responsive application layout components supporting desktop, mobile, and specialized terminal mobile interfaces. ## parent -index: 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/frontend-foundation/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/frontend-foundation/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/frontend-foundation/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/frontend-foundation/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/frontend-foundation/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/frontend-foundation/.pi-map.md index b219ccf..4a6e261 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/frontend-foundation/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/frontend-foundation/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/frontend-foundation -dir: 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/frontend-foundation +# openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/frontend-foundation +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/frontend-foundation -index: 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/frontend-foundation/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/frontend-foundation/.pi-map.index.md ## role -Defines frontend UI requirements for responsive layout components with mobile/desktop adaptations and specialized mobile terminal headers. +Defines frontend foundation specifications for responsive application layout components supporting desktop, mobile, and specialized terminal mobile interfaces. ## files -- spec.md | Defines modified requirements for a responsive application layout component with desktop/mobile adaptations and a specialized minimal header for mobile terminal pages. +- spec.md | Defines modified requirements for a responsive application layout component with desktop and mobile variants including a specialized terminal page mobile layout ## arch -Specification-driven design with responsive breakpoint patterns, conditional rendering strategies, and mobile-first progressive enhancement. +Specification-driven architecture with responsive design patterns, platform-specific layout variants, and mobile-first terminal UX adaptations. ## tags -mobile, spec, defines, modified, requirements, responsive, application, layout +layout, mobile, spec, defines, modified, requirements, responsive, application ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/mobile-terminal-ux/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/mobile-terminal-ux/.pi-map.index.md index 2ab9b1b..986d5b3 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/mobile-terminal-ux/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/mobile-terminal-ux/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/mobile-terminal-ux (index) -dir: 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/mobile-terminal-ux +# openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/mobile-terminal-ux (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/mobile-terminal-ux ## role -Defines UI/UX specifications for a web-based mobile terminal interface with responsive design, touch interactions, and accessibility features. +Defines user experience specifications for a touch-optimized mobile terminal interface with adaptive input handling. ## parent -index: 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/mobile-terminal-ux/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/mobile-terminal-ux/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/mobile-terminal-ux/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/mobile-terminal-ux/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/mobile-terminal-ux/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/mobile-terminal-ux/.pi-map.md index 7e8ab87..fcb925a 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/mobile-terminal-ux/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/mobile-terminal-ux/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/mobile-terminal-ux -dir: 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/mobile-terminal-ux +# openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/mobile-terminal-ux +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/mobile-terminal-ux -index: 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/mobile-terminal-ux/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/mobile-terminal-ux/.pi-map.index.md ## role -Defines UI/UX specifications for a web-based mobile terminal interface with responsive design, touch interactions, and accessibility features. +Defines user experience specifications for a touch-optimized mobile terminal interface with adaptive input handling. ## files -- spec.md | Specifies mobile terminal UI/UX requirements including responsive layout, special keys toolbar, virtual keyboard handling, touch gestures, screen orientation, copy/paste, and font scaling for a web-based terminal application. | dep: WebSocket, xterm.js, Visual Viewport API, localStorage +- spec.md | Specifies requirements for a mobile-responsive terminal interface with touch gestures, virtual keyboard handling, special keys toolbar, and adaptive layout. | dep: xterm.js, WebSocket, Visual Viewport API, localStorage, AppShell ## arch -Specification-driven design using requirements documents to define cross-platform mobile terminal behavior without implementation code. +Requirements-driven specification document using feature-based decomposition (gestures, keyboard, toolbar, layout) with responsive design patterns for cross-device compatibility. ## tags -terminal, spec, specifies, mobile, requirements, including, responsive, layout +spec, specifies, requirements, mobile, responsive, terminal, interface, touch ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/tool-terminal/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/tool-terminal/.pi-map.index.md index f29fdd5..604283a 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/tool-terminal/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/tool-terminal/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/tool-terminal (index) -dir: 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/tool-terminal +# openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/tool-terminal (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/tool-terminal ## role -Defines functional and UX requirements for a touch-optimized mobile terminal interface using WebSocket communication +Defines specifications for a mobile-responsive web terminal interface with WebSocket connectivity, touch gesture support, and special key handling for mobile devices. ## parent -index: 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/tool-terminal/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/tool-terminal/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/tool-terminal/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/tool-terminal/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/tool-terminal/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/tool-terminal/.pi-map.md index be132bb..9d22aef 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/tool-terminal/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/tool-terminal/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/tool-terminal -dir: 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/tool-terminal +# openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/tool-terminal +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/tool-terminal -index: 2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/tool-terminal/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/mobile-terminal-ux/specs/tool-terminal/.pi-map.index.md ## role -Defines functional and UX requirements for a touch-optimized mobile terminal interface using WebSocket communication +Defines specifications for a mobile-responsive web terminal interface with WebSocket connectivity, touch gesture support, and special key handling for mobile devices. ## files -- spec.md | Specifies requirements for a mobile-responsive WebSocket terminal application with touch gestures, special keys, and adaptive layout | dep: xterm.js, WebSocket, browser clipboard API, localStorage, viewport meta tag +- spec.md | Define requirements for a mobile-responsive web terminal with WebSocket connectivity, touch gestures, and special key handling | dep: xterm.js, WebSocket, browser clipboard API, localStorage, viewport/meta tags ## arch -Specification-driven design with mobile-first responsive layout, gesture-based interaction patterns, and adaptive UI for varying screen sizes/orientations +Specification-driven design using markdown-based requirements documentation, likely feeding into a broader design-to-implementation pipeline for mobile terminal UX components. ## tags -websocket, spec, specifies, requirements, mobile, responsive, terminal, application +websocket, spec, define, requirements, mobile, responsive, web, terminal ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/mount-specificity-ordering/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/mount-specificity-ordering/.pi-map.index.md index dea344f..ad97cba 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/mount-specificity-ordering/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/mount-specificity-ordering/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-12-completed-changes-archive/mount-specificity-ordering (index) -dir: 2026-06-12-completed-changes-archive/mount-specificity-ordering +# openspec/changes/archive/2026-06-12-completed-changes-archive/mount-specificity-ordering (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/mount-specificity-ordering ## role -Archives a completed specification for fixing mount specificity ordering behavior in the system. +Preserves a completed specification archive for a high-priority fix related to mount specificity ordering logic. ## parent -index: 2026-06-12-completed-changes-archive/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.md ## children - ## files - .openspec.yaml ## links -index: 2026-06-12-completed-changes-archive/mount-specificity-ordering/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/mount-specificity-ordering/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/mount-specificity-ordering/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/mount-specificity-ordering/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/mount-specificity-ordering/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/mount-specificity-ordering/.pi-map.md index 446b84d..1783914 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/mount-specificity-ordering/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/mount-specificity-ordering/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-12-completed-changes-archive/mount-specificity-ordering -dir: 2026-06-12-completed-changes-archive/mount-specificity-ordering +# openspec/changes/archive/2026-06-12-completed-changes-archive/mount-specificity-ordering +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/mount-specificity-ordering -index: 2026-06-12-completed-changes-archive/mount-specificity-ordering/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/mount-specificity-ordering/.pi-map.index.md ## role -Archives a completed specification for fixing mount specificity ordering behavior in the system. +Preserves a completed specification archive for a high-priority fix related to mount specificity ordering logic. ## files -- .openspec.yaml | Defines an OpenSpec specification for a completed high-priority fix related to mount specificity ordering +- .openspec.yaml | Defines a completed high-priority fix specification named "mount-specificity-ordering" ## arch -Simple documentation archive using OpenSpec YAML format with no active code or runtime components. +Specification-as-code pattern using YAML-based change tracking with dated archival directory structure for immutable change history. ## tags -.openspec, defines, openspec, specification, completed, high, priority, fix +.openspec, defines, completed, high, priority, fix, specification, named ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/multi-session-terminal-ux/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/multi-session-terminal-ux/.pi-map.index.md index 8819587..b052d15 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/multi-session-terminal-ux/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/multi-session-terminal-ux/.pi-map.index.md @@ -1,11 +1,11 @@ -# 2026-06-12-completed-changes-archive/multi-session-terminal-ux (index) -dir: 2026-06-12-completed-changes-archive/multi-session-terminal-ux +# openspec/changes/archive/2026-06-12-completed-changes-archive/multi-session-terminal-ux (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/multi-session-terminal-ux ## role -Archive of completed design documents and implementation specifications for adding multi-session terminal support to an existing tool instance platform. +Archive of completed specification documents for a multi-session terminal UX feature that enables up to 5 concurrent terminal sessions per tool instance with tabbed UI, WebSocket routing, and hybrid storage. ## parent -index: 2026-06-12-completed-changes-archive/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.md ## children - ## files @@ -18,8 +18,8 @@ map: 2026-06-12-completed-changes-archive/.pi-map.md - proposal.md - tasks.md ## links -index: 2026-06-12-completed-changes-archive/multi-session-terminal-ux/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/multi-session-terminal-ux/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/multi-session-terminal-ux/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/multi-session-terminal-ux/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/multi-session-terminal-ux/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/multi-session-terminal-ux/.pi-map.md index f48779f..6fef808 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/multi-session-terminal-ux/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/multi-session-terminal-ux/.pi-map.md @@ -1,23 +1,23 @@ -# 2026-06-12-completed-changes-archive/multi-session-terminal-ux -dir: 2026-06-12-completed-changes-archive/multi-session-terminal-ux +# openspec/changes/archive/2026-06-12-completed-changes-archive/multi-session-terminal-ux +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/multi-session-terminal-ux -index: 2026-06-12-completed-changes-archive/multi-session-terminal-ux/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/multi-session-terminal-ux/.pi-map.index.md ## role -Archive of completed design documents and implementation specifications for adding multi-session terminal support to an existing tool instance platform. +Archive of completed specification documents for a multi-session terminal UX feature that enables up to 5 concurrent terminal sessions per tool instance with tabbed UI, WebSocket routing, and hybrid storage. ## files - .openspec.yaml | Defines metadata for a completed project specification named "multi-session-terminal-ux" -- apply-pr1.md | Documents the implementation of database schema, Alembic migration, and TerminalManager multi-session core for a multi-session terminal UX feature. | dep: Alembic, SQLAlchemy, aiosqlite, asyncio, pytest, TerminalSession, TerminalManager, UUIDPrimaryKeyMixin, TimestampMixin, SessionLocal -- apply-pr2.md | Documents the implementation of a multi-session terminal UX with WebSocket routing, REST CRUD endpoints, frontend API client/hook, and auth-focused tests, while maintaining backward compatibility with legacy single-session endpoints. | dep: WebSocket, REST API, React hooks, Python pytest, Docker/PTY, terminal session manager -- apply-pr3.md | Documents a pull request implementing a frontend multi-session terminal UI with tabbed management, fullscreen mode, keyboard shortcuts, and mobile support. | dep: React, TypeScript, WebSocket, CSS, Python (backend terminal manager), testing framework -- design.md | Software design document specifying architecture and implementation for adding multi-session terminal support (up to 5 concurrent sessions) to an existing tool instance platform | dep: FastAPI, SQLAlchemy, Alembic, React, xterm.js, WebSocket, PTY, docker exec, Python, TypeScript -- explore.md | Explores architectural options for adding multi-session terminal support to an existing persistent terminal system, evaluating backend, frontend, protocol, and database design choices with recommendations for MVP implementation. | dep: TerminalManager, TerminalSession, TerminalComponent, TerminalPage, MobileTerminalWrapper, xterm.js, FastAPI, SQLAlchemy, alembic -- proposal.md | Proposes architectural changes to support multiple concurrent terminal sessions per tool instance with improved UI/UX features | dep: TerminalManager, TerminalSession, api/terminal.py, TerminalComponent, terminal.tsx, WebSocket protocol, database schema -- tasks.md | A software design document specifying 12 implementation tasks for adding multi-session terminal UX support across backend (Python/FastAPI) and frontend (React/TypeScript) with detailed acceptance criteria, file changes, and TDD testing steps. | dep: Alembic, FastAPI, WebSocket, React, TypeScript, xterm.js (implied), pytest, Jest/npm test +- apply-pr1.md | Documents the implementation of database schema, Alembic migration, and multi-session terminal management core for a multi-session terminal UX feature in a backend API. | dep: Alembic, SQLAlchemy, aiosqlite, asyncio, pytest, WebSocket, TerminalSessionModel, UUIDPrimaryKeyMixin, TimestampMixin, SessionLocal +- apply-pr2.md | Documents the implementation of multi-session terminal WebSocket and REST API backend with frontend client/hook, including test results and deviations from original design. | dep: WebSocket, REST API, Python pytest, React/TypeScript (frontend hooks), Docker (implied for full integration), terminal PTY manager +- apply-pr3.md | Documents a frontend pull request implementing multi-session terminal UI with tabbed management, fullscreen mode, keyboard shortcuts, and mobile integration. | dep: React, TypeScript, WebSocket, CSS, Python (backend service) +- design.md | Software design document specifying a multi-session terminal UX architecture with up to 5 concurrent sessions per tool instance, using hybrid in-memory/DB storage and WebSocket-per-session routing. | dep: React, FastAPI, WebSocket, xterm.js, SQLAlchemy, Alembic, Docker PTY, Python asyncio +- explore.md | A software design document exploring the architecture, options, and feasibility for adding multi-session terminal support to an existing persistent terminal system. | dep: TerminalManager, TerminalSession, TerminalComponent, TerminalPage, MobileTerminalWrapper, xterm.js, FastAPI, WebSocket, docker exec, SQLAlchemy, alembic +- proposal.md | Proposes architectural changes to support multiple concurrent terminal sessions per tool instance with improved UI/UX features | dep: TerminalSession, TerminalManager, TerminalComponent, terminal.tsx, WebSocket, database +- tasks.md | Defines a detailed software development plan for implementing multi-session terminal UX across backend and frontend, broken into 12 tasks across 3 stacked PRs with TDD acceptance criteria. | dep: Alembic, SQLAlchemy, FastAPI, WebSocket, React, xterm.js, PTY, UUID, pytest, React Testing Library ## arch -Design-driven development with phased PR implementation (backend core → API/WebSocket → frontend UI), using FastAPI/WebSocket backend and React/TypeScript frontend, with explicit architectural exploration and task breakdown before coding. +Specification-driven development using stacked PR planning (3 PRs: backend schema/API, WebSocket/REST integration, frontend UI), hybrid in-memory/database session storage, WebSocket-per-session routing, and TDD acceptance criteria with documented design deviations. ## tags -terminal, session, multi, apply, implementation, alembic, websocket, support +terminal, session, websocket, multi, apply, alembic, design, sqlalchemy ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/notification-center/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/notification-center/.pi-map.index.md index ac0d868..213dc79 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/notification-center/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/notification-center/.pi-map.index.md @@ -1,11 +1,11 @@ -# 2026-06-12-completed-changes-archive/notification-center (index) -dir: 2026-06-12-completed-changes-archive/notification-center +# openspec/changes/archive/2026-06-12-completed-changes-archive/notification-center (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/notification-center ## role -Archive of completed implementation artifacts for a full-stack Notification Center feature that added persistent, user-scoped notifications with REST API, React frontend, and toast coordination to an existing application. +Defines and documents a full-stack persistent notification center system replacing ephemeral toasts, with backend storage, REST API, React frontend, and user preference management. ## parent -index: 2026-06-12-completed-changes-archive/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.md ## children - ## files @@ -21,8 +21,8 @@ map: 2026-06-12-completed-changes-archive/.pi-map.md - spec.md - tasks.md ## links -index: 2026-06-12-completed-changes-archive/notification-center/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/notification-center/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/notification-center/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/notification-center/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/notification-center/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/notification-center/.pi-map.md index 56fdf31..8b06061 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/notification-center/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/notification-center/.pi-map.md @@ -1,26 +1,26 @@ -# 2026-06-12-completed-changes-archive/notification-center -dir: 2026-06-12-completed-changes-archive/notification-center +# openspec/changes/archive/2026-06-12-completed-changes-archive/notification-center +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/notification-center -index: 2026-06-12-completed-changes-archive/notification-center/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/notification-center/.pi-map.index.md ## role -Archive of completed implementation artifacts for a full-stack Notification Center feature that added persistent, user-scoped notifications with REST API, React frontend, and toast coordination to an existing application. +Defines and documents a full-stack persistent notification center system replacing ephemeral toasts, with backend storage, REST API, React frontend, and user preference management. ## files - .openspec.yaml | Defines an OpenAPI specification metadata file for a notification center service -- apply-pr1.md | Documents the implementation, testing, and validation of a backend notification center system for a FastAPI/SQLAlchemy application. | dep: FastAPI, SQLAlchemy, Alembic, Pydantic, pytest, ruff, SQLite/PostgreSQL -- apply-pr2.md | This file is a completion report documenting the implementation of backend integration for a Notification Center (PR-2), covering wiring lifecycle hooks and health monitoring to a notification service, extending user configuration schemas, and validating through TDD with integration tests. | dep: notification_service, event_bus, lifecycle_hooks, health_monitor, user_config, Pydantic, pytest, unittest.mock, ruff, Alembic -- apply-pr3.md | Documents the implementation, testing, and validation of a frontend Notification Center feature (PR-3) including React components, hooks, state management, API client, and CSS styles. | dep: React, @phosphor-icons/react, vitest, testing-library, TypeScript, ESLint, CSS variables -- apply-pr4.md | Documents the implementation of toast notification coordination with user-configurable preferences for a notification center system. | dep: React, TypeScript, Vitest, UserConfig API, PATCH /user-config, tsc, eslint -- apply-progress.md | Documents the TDD-driven implementation progress of a full-stack Notification Center feature across 4 PRs, including backend API, frontend components, and toast coordination, with test evidence, file changes, and technical decisions. | dep: FastAPI, SQLAlchemy, Alembic, Pydantic, React, TypeScript, Vitest, pytest, ruff, ESLint, tsc, @phosphor-icons/react, unittest.mock -- design.md | Design document for a cross-cutting notification center system with backend FastAPI service, frontend React components, and event producer integration. | dep: FastAPI, SQLAlchemy/AsyncSession, Alembic, Pydantic, React/Context, SSE/event bus, Phosphor icons, lifecycle hooks, health monitor -- explore.md | Exploratory design document for adding a persistent, user-scoped Notification Center to an existing toast-only notification system, covering current state analysis, gaps, integration points, risks, and phased implementation roadmap. | dep: FastAPI, SQLAlchemy, Alembic, React, SSE/EventSource, Phosphor Icons, InstanceEventBus, HealthMonitor, LifecycleHooks, Toast System, Event Bridge -- proposal.md | This is a software design document (SDD) proposal for building a persistent, user-scoped notification center with REST API, database storage, and React frontend components, replacing ephemeral SSE-driven toasts. | dep: SQLAlchemy, Alembic, React, FastAPI/REST, PhosphorIcons, SSE (existing), UserConfig system, InstanceEventBus, HealthMonitor, lifecycle_hooks -- spec.md | Defines a full-stack notification center system with per-user persistent notifications, REST API, frontend UI, and user-scoped preferences for category muting and toast suppression. | dep: FastAPI, SQLAlchemy, Alembic, PostgreSQL, React/frontend, SSE/EventToastBridge, Phosphor icons, UserConfig, lifecycle_hooks, health_monitor -- tasks.md | Defines a detailed task breakdown for implementing a Notification Center feature across 4 stacked PRs, covering backend core, backend integration, frontend core, and toast coordination with specific acceptance criteria, dependencies, and effort estimates. | dep: Alembic, SQLAlchemy, FastAPI, Pydantic, pytest, SQLite/PostgreSQL, AsyncSession, UUIDPrimaryKeyMixin, UserConfig, lifecycle_hooks, health_monitor, InstanceEventBus +- apply-pr1.md | Documents the implementation, testing, and validation of PR-1 backend core for a Notification Center system including database migrations, service layer, API endpoints, and comprehensive tests. | dep: Alembic, SQLAlchemy, FastAPI, Pydantic, SQLite, PostgreSQL, pytest, ruff +- apply-pr2.md | Documents the completion of PR-2 backend integration for a Notification Center, wiring lifecycle hooks and health monitoring to a notification service, extending user config schemas, and adding integration tests with TDD evidence. | dep: notification_service, event_bus, lifecycle_hooks, health_monitor, user_config, Pydantic, pytest, unittest.mock, ruff +- apply-pr3.md | Documents the implementation of a frontend notification center feature with bell icon, dropdown panel, polling, optimistic updates, and comprehensive tests. | dep: React, @phosphor-icons/react, vitest, testing-library, TypeScript, CSS variables +- apply-pr4.md | Documents the implementation of toast notification coordination for a notification center, including preference checks, category/severity mapping, settings UI, and comprehensive tests. | dep: React, UserConfig API, PATCH /user-config, vitest, TypeScript, ESLint +- apply-progress.md | Documents the TDD-driven implementation progress of a Notification Center feature across 4 PRs, covering backend CRUD/API, event producer integration, frontend React components/hooks, and toast coordination with user preferences. | dep: FastAPI, SQLAlchemy, Alembic, Pydantic, React, Vitest, pytest, ruff, eslint, TypeScript, unittest.mock, @phosphor-icons/react +- design.md | Design specification for a cross-cutting notification center system with backend persistence service, FastAPI endpoints, and React frontend components for user notifications. | dep: FastAPI, SQLAlchemy, AsyncSession, Alembic, Pydantic, React, Phosphor Icons, SSE/Event Bus, lifecycle_hooks, health_monitor, event-toast-bridge, UserConfig +- explore.md | Design document exploring the transition from an ephemeral toast-only notification system to a full persistent notification center with backend storage, user-scoped filtering, and a frontend UI component. | dep: FastAPI, SQLAlchemy, Alembic, React, SSE, Phosphor Icons, InstanceEventBus, HealthMonitor, LifecycleHooks, EventContext, Toast System, AppShell +- proposal.md | Proposes a system design for adding a persistent, per-user notification center with REST API, UI components, and toast coordination to replace ephemeral SSE-driven toasts. | dep: SQLAlchemy, Alembic, React, PhosphorIcons, FastAPI/REST, SSE, UserConfig, InstanceEventBus, HealthMonitor, lifecycle_hooks +- spec.md | Defines a full-stack notification center system with per-user persistent notifications, REST API, frontend UI, and user-scoped preferences for muting and toast suppression. | dep: SQLAlchemy, FastAPI, Alembic, PostgreSQL, React/frontend (implied), SSE/EventToastBridge, Phosphor icons, UserConfig, lifecycle_hooks, health_monitor +- tasks.md | Defines a detailed task breakdown for implementing a Notification Center feature across 4 stacked PRs, covering backend core, backend integration, frontend core, and toast coordination with specific acceptance criteria and dependencies. | dep: Alembic, SQLAlchemy, FastAPI, Pydantic, pytest, AsyncSession, UUIDPrimaryKeyMixin, UserConfig, InstanceEventBus, lifecycle_hooks, health_monitor ## arch -Phased TDD-driven implementation across 4 stacked PRs (backend core → backend integration → frontend core → toast coordination) using FastAPI/SQLAlchemy backend, React/TypeScript frontend, OpenAPI specs, and comprehensive design documentation with acceptance criteria. +Specification-driven incremental development using 4 stacked PRs (backend core → backend integration → frontend core → toast coordination) with TDD, OpenAPI contracts, FastAPI service layer, React hooks/components, and event-driven lifecycle integration with health monitoring. ## tags -notification, react, center, apply, fastapi, sqlalchemy, alembic, user +notification, center, react, apply, fastapi, user, backend, alembic ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/.pi-map.index.md index 4de1e29..7fc4046 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/.pi-map.index.md @@ -1,23 +1,23 @@ -# 2026-06-12-completed-changes-archive/persistent-terminal-sessions (index) -dir: 2026-06-12-completed-changes-archive/persistent-terminal-sessions +# openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions ## role -Implements persistent WebSocket terminal sessions that survive disconnections and reconnect to existing docker exec processes rather than spawning new ones. +Design specification package for persistent WebSocket terminal sessions that survive reconnections by reattaching to existing docker exec processes rather than spawning new ones. ## parent -index: 2026-06-12-completed-changes-archive/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.md ## children -- 2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs - index: 2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs + index: openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/.pi-map.md ## files - .openspec.yaml - design.md - proposal.md - tasks.md ## links -index: 2026-06-12-completed-changes-archive/persistent-terminal-sessions/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/persistent-terminal-sessions/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/.pi-map.md index 9ed16c6..1707e58 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/.pi-map.md @@ -1,19 +1,19 @@ -# 2026-06-12-completed-changes-archive/persistent-terminal-sessions -dir: 2026-06-12-completed-changes-archive/persistent-terminal-sessions +# openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions -index: 2026-06-12-completed-changes-archive/persistent-terminal-sessions/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/.pi-map.index.md ## role -Implements persistent WebSocket terminal sessions that survive disconnections and reconnect to existing docker exec processes rather than spawning new ones. +Design specification package for persistent WebSocket terminal sessions that survive reconnections by reattaching to existing docker exec processes rather than spawning new ones. ## files -- .openspec.yaml | Defines an OpenSpec configuration file with schema version and creation date metadata -- design.md | Design document for implementing persistent terminal sessions that survive WebSocket disconnections while maintaining shell state and allowing reconnection to the same docker exec process. | dep: TerminalManager, TerminalSession, WebSocket, docker exec, PTY -- proposal.md | Proposes architectural changes to make WebSocket terminal sessions persistent across reconnections instead of spawning new docker exec processes each time | dep: docker exec, WebSocket, TerminalManager, terminal_session.py, terminal.tsx, use-terminal.ts -- tasks.md | This file is a project task list tracking the implementation of persistent terminal sessions with WebSocket reconnection, reset functionality, and idle timeout management across backend and frontend components. | dep: TerminalSession, TerminalManager, WebSocket, docker exec, API endpoints, frontend terminal component, terminal hook +- .openspec.yaml | Defines an OpenSpec schema configuration file with metadata +- design.md | Design document for implementing persistent terminal sessions that survive WebSocket disconnections while maintaining shell state and allowing reconnection to the same docker exec process. | dep: WebSocket, docker exec, TerminalManager, TerminalSession, PTY, background task scheduler +- proposal.md | Design proposal for implementing persistent WebSocket terminal sessions that survive reconnections by reattaching to existing docker exec processes instead of spawning new ones. | dep: docker exec, WebSocket, TerminalManager, terminal_session.py, terminal.py, terminal.tsx, use-terminal.ts +- tasks.md | A task tracking document outlining the refactoring of a terminal session system to support persistent, reconnectable WebSocket connections with circular output buffers, idle timeouts, and reset functionality across backend and frontend components. | dep: WebSocket, Docker, API backend, React/frontend terminal component ## arch -Event-driven architecture with WebSocket connection management, process state persistence, session lifecycle handling (reconnection/reset/idle timeout), and cross-layer backend-frontend coordination. +Specification-driven design using OpenSpec schema configuration with layered documentation (proposal → design → tasks) following a structured change-archive pattern for tracking system evolution across backend (Go circular buffers, idle timeouts, process reattachment) and frontend (WebSocket reconnection, reset functionality) components. ## tags -websocket, terminal, design, persistent, sessions, terminalmanager, docker exec, .openspec +terminal, websocket, design, persistent, docker, proposal, .openspec, document ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/.pi-map.index.md index e45a21d..d2b20cb 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/.pi-map.index.md @@ -1,19 +1,19 @@ -# 2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs (index) -dir: 2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs +# openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs ## role -Contains archived specification documents for a persistent terminal sessions feature that was completed on June 12, 2026. +Archive of completed specification documents for persistent terminal sessions feature from June 12, 2026. ## parent -index: 2026-06-12-completed-changes-archive/persistent-terminal-sessions/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/persistent-terminal-sessions/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/.pi-map.md ## children -- 2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal - index: 2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal + index: openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal/.pi-map.md ## files ## links -index: 2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/.pi-map.md index 9dc094b..cd9312c 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/.pi-map.md @@ -1,13 +1,13 @@ -# 2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs -dir: 2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs +# openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs -index: 2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/.pi-map.index.md ## role -Contains archived specification documents for a persistent terminal sessions feature that was completed on June 12, 2026. +Archive of completed specification documents for persistent terminal sessions feature from June 12, 2026. ## files ## arch -Documentation-only archive directory with no active code; stores historical design specs for completed terminal session persistence functionality. +Flat directory structure storing finalized markdown specification files as historical project documentation. ## tags - ## symbols diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal/.pi-map.index.md index 8bc33c0..03a7a11 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal (index) -dir: 2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal +# openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal ## role -Defines specifications for persistent WebSocket terminal sessions that maintain state across reconnections with buffered output, reset controls, and idle timeout management. +Defines requirements for persistent WebSocket terminal sessions with reconnection, output buffering, reset, and idle timeout capabilities ## parent -index: 2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal/.pi-map.md index cabf958..c5c27db 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal -dir: 2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal +# openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal -index: 2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal/.pi-map.index.md ## role -Defines specifications for persistent WebSocket terminal sessions that maintain state across reconnections with buffered output, reset controls, and idle timeout management. +Defines requirements for persistent WebSocket terminal sessions with reconnection, output buffering, reset, and idle timeout capabilities ## files -- spec.md | Defines requirements for persistent WebSocket terminal sessions with reconnection, output buffering, reset, and idle timeout capabilities +- spec.md | Defines requirements for persistent WebSocket terminal sessions with reconnection, output buffering, reset, and idle timeout capabilities | dep: WebSocket, docker exec, terminal session management ## arch -Specification-driven architecture using a single requirements document to define session persistence, WebSocket transport, circular output buffering, and state machine behaviors (active/idle/closed) with explicit client-server protocol semantics. +Specification-driven requirements document using markdown-based specification format with functional requirements, constraints, and capability definitions ## tags -spec, defines, requirements, persistent, websocket, terminal, sessions, reconnection +websocket, spec, defines, requirements, persistent, terminal, sessions, reconnection ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/reorganize-long-files/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/reorganize-long-files/.pi-map.index.md index b7267e1..8336298 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/reorganize-long-files/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/reorganize-long-files/.pi-map.index.md @@ -1,11 +1,11 @@ -# 2026-06-12-completed-changes-archive/reorganize-long-files (index) -dir: 2026-06-12-completed-changes-archive/reorganize-long-files +# openspec/changes/archive/2026-06-12-completed-changes-archive/reorganize-long-files (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/reorganize-long-files ## role -This is an archived project planning directory documenting a completed structural refactoring initiative to decompose monolithic frontend pages and backend routers into thinner, more maintainable modules. +This package archives the completed specification for a structural refactoring initiative that decomposed monolithic frontend pages and backend routers into smaller, focused components and services. ## parent -index: 2026-06-12-completed-changes-archive/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.md ## children - ## files @@ -14,8 +14,8 @@ map: 2026-06-12-completed-changes-archive/.pi-map.md - spec.md - tasks.md ## links -index: 2026-06-12-completed-changes-archive/reorganize-long-files/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/reorganize-long-files/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/reorganize-long-files/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/reorganize-long-files/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/reorganize-long-files/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/reorganize-long-files/.pi-map.md index aefd5d1..7befa4f 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/reorganize-long-files/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/reorganize-long-files/.pi-map.md @@ -1,19 +1,19 @@ -# 2026-06-12-completed-changes-archive/reorganize-long-files -dir: 2026-06-12-completed-changes-archive/reorganize-long-files +# openspec/changes/archive/2026-06-12-completed-changes-archive/reorganize-long-files +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/reorganize-long-files -index: 2026-06-12-completed-changes-archive/reorganize-long-files/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/reorganize-long-files/.pi-map.index.md ## role -This is an archived project planning directory documenting a completed structural refactoring initiative to decompose monolithic frontend pages and backend routers into thinner, more maintainable modules. +This package archives the completed specification for a structural refactoring initiative that decomposed monolithic frontend pages and backend routers into smaller, focused components and services. ## files -- .openspec.yaml | Configuration file tracking a completed project task for reorganizing long files -- proposal.md | Proposes a structural refactoring to split monolithic frontend pages and backend routers into thinner orchestrators with extracted components/services, restoring a thin-page/thin-router/fat-component pattern. | dep: React components, FastAPI routers, WebSocket, Docker, git services -- spec.md | A specification document defining a pure structural refactoring to split monolithic frontend pages/backend routers and CSS into smaller, focused components and services without changing any behavior or API contracts. | dep: React, CSS Modules, WebSocket, FastAPI/Flask routers, TypeScript, Vite -- tasks.md | Tracks the completion status of a codebase reorganization initiative to slim long files by extracting components and services into dedicated modules. +- .openspec.yaml | Defines a completed project specification named "reorganize-long-files" with start and completion dates +- proposal.md | Proposes a structural refactoring to split monolithic frontend pages and backend routers into thin orchestrators and extracted components/services, restoring a thin-page/thin-router/fat-component pattern. +- spec.md | This file specifies a pure structural refactoring plan to decompose monolithic frontend pages, CSS, and backend routers into smaller, focused components and services without changing any behavior or API contracts. | dep: React, React Router, CSS Modules, WebSocket, FastAPI, Python services architecture +- tasks.md | Tracks the completion status of a code reorganization initiative to slim down long backend routers and frontend pages by extracting components and services into dedicated files. | dep: spec.md, api/tool/tool_instances.py, api/tool/tool_lifecycle.py, api/system/terminal.py, services/git/operations.py, services/config/crud_service.py, services/config/resolver_service.py, pages/ToolWorkshopPage.tsx, pages/ConfigProfilesPage.tsx, pages/TerminalPage.tsx, pages/WorkspaceDetailPage.tsx, components/features/terminal/, components/features/workspace/, main.py ## arch -Task-driven documentation pattern using YAML configuration, markdown specs (proposal/spec/tasks), and a strict separation of planning artifacts from implementation, following a "thin orchestrator/fat component" modular decomposition strategy with zero-behavior-change refactoring constraints. +Specification-driven refactoring using a proposal-spec-tasks workflow pattern with YAML metadata tracking, mandating pure structural decomposition (thin orchestrators, fat extracted components) while preserving all behavioral and API contracts. ## tags -components, services, long, .openspec, structural, refactoring, split, monolithic +pages, py, services, components, api, tsx, frontend, backend ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/.pi-map.index.md index 87f418f..9855345 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/.pi-map.index.md @@ -1,23 +1,23 @@ -# 2026-06-12-completed-changes-archive/session-list-overhaul (index) -dir: 2026-06-12-completed-changes-archive/session-list-overhaul +# openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul ## role -This package archives the completed design documentation and planning artifacts for a frontend refactoring initiative that unified duplicated session list rendering logic across dashboard and sessions pages into reusable components. +Archive of a completed 2026 UI refactoring project that unified duplicated session list components across dashboard and sessions pages into reusable React components. ## parent -index: 2026-06-12-completed-changes-archive/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.md ## children -- 2026-06-12-completed-changes-archive/session-list-overhaul/specs - index: 2026-06-12-completed-changes-archive/session-list-overhaul/specs/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/session-list-overhaul/specs/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs + index: openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs/.pi-map.md ## files - .openspec.yaml - design.md - proposal.md - tasks.md ## links -index: 2026-06-12-completed-changes-archive/session-list-overhaul/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/session-list-overhaul/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/.pi-map.md index c5ab8e4..b7027b4 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/.pi-map.md @@ -1,19 +1,19 @@ -# 2026-06-12-completed-changes-archive/session-list-overhaul -dir: 2026-06-12-completed-changes-archive/session-list-overhaul +# openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul -index: 2026-06-12-completed-changes-archive/session-list-overhaul/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/.pi-map.index.md ## role -This package archives the completed design documentation and planning artifacts for a frontend refactoring initiative that unified duplicated session list rendering logic across dashboard and sessions pages into reusable components. +Archive of a completed 2026 UI refactoring project that unified duplicated session list components across dashboard and sessions pages into reusable React components. ## files -- .openspec.yaml | Defines an OpenSpec configuration file with schema version and creation date metadata -- design.md | Design document for refactoring duplicated session list rendering logic into unified reusable components across dashboard and sessions pages. | dep: dashboard.tsx, sessions.tsx, SessionCard, SessionList +- .openspec.yaml | Defines an OpenSpec schema configuration file with metadata +- design.md | Design document proposing a UI refactoring to unify duplicated session list rendering logic across dashboard and sessions pages into reusable components | dep: dashboard.tsx, sessions.tsx, SessionCard, SessionList - proposal.md | Proposes a frontend refactoring to unify session list UI components across dashboard and sessions pages | dep: React components, CSS styling, dashboard.tsx, sessions.tsx -- tasks.md | Task tracking checklist for refactoring session UI components in a web application dashboard +- tasks.md | A task tracking document for refactoring session UI components in a web application, detailing implementation steps for SessionCard and SessionList components with dashboard and sessions page updates. | dep: React, TypeScript, CSS, ESLint ## arch -Documentation-driven waterfall planning with structured design docs (design.md, proposal.md, tasks.md) and OpenSpec schema configuration, using markdown-based task tracking and formal proposal/approval process before implementation. +Documentation-driven development with structured planning artifacts (design doc, proposal, tasks) using OpenSpec schema configuration for tracking frontend component refactoring work. ## tags -dashboard, sessions, tsx, design, refactoring, session, components, .openspec +dashboard, sessions, components, tsx, design, refactoring, session, .openspec ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs/.pi-map.index.md index 3a1d01d..a3c8738 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs/.pi-map.index.md @@ -1,19 +1,19 @@ -# 2026-06-12-completed-changes-archive/session-list-overhaul/specs (index) -dir: 2026-06-12-completed-changes-archive/session-list-overhaul/specs +# openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs ## role -Contains archived specification documents for the completed session list overhaul feature from June 12, 2026. +Contains archived specification documents for the session list overhaul feature completed on June 12, 2026. ## parent -index: 2026-06-12-completed-changes-archive/session-list-overhaul/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/session-list-overhaul/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/.pi-map.md ## children -- 2026-06-12-completed-changes-archive/session-list-overhaul/specs/session-list-ui - index: 2026-06-12-completed-changes-archive/session-list-overhaul/specs/session-list-ui/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/session-list-overhaul/specs/session-list-ui/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs/session-list-ui + index: openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs/session-list-ui/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs/session-list-ui/.pi-map.md ## files ## links -index: 2026-06-12-completed-changes-archive/session-list-overhaul/specs/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/session-list-overhaul/specs/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs/.pi-map.md index cfc230d..7f42df5 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs/.pi-map.md @@ -1,13 +1,13 @@ -# 2026-06-12-completed-changes-archive/session-list-overhaul/specs -dir: 2026-06-12-completed-changes-archive/session-list-overhaul/specs +# openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs -index: 2026-06-12-completed-changes-archive/session-list-overhaul/specs/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs/.pi-map.index.md ## role -Contains archived specification documents for the completed session list overhaul feature from June 12, 2026. +Contains archived specification documents for the session list overhaul feature completed on June 12, 2026. ## files ## arch -Documentation/archive pattern using date-prefixed directory naming for historical change tracking with specification-driven development artifacts. +Flat directory structure storing dated, completed change specifications as static documentation artifacts with no active code or dynamic patterns. ## tags - ## symbols diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs/session-list-ui/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs/session-list-ui/.pi-map.index.md index 27f67d3..a57a36c 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs/session-list-ui/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs/session-list-ui/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-12-completed-changes-archive/session-list-overhaul/specs/session-list-ui (index) -dir: 2026-06-12-completed-changes-archive/session-list-overhaul/specs/session-list-ui +# openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs/session-list-ui (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs/session-list-ui ## role -Defines UI specifications for unified session card components with display, controls, grouping, and filtering capabilities across dashboard and sessions pages. +Defines UI specifications for a redesigned session list component with card-based layout, management controls, and cross-page unification. ## parent -index: 2026-06-12-completed-changes-archive/session-list-overhaul/specs/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/session-list-overhaul/specs/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-12-completed-changes-archive/session-list-overhaul/specs/session-list-ui/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/session-list-overhaul/specs/session-list-ui/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs/session-list-ui/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs/session-list-ui/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs/session-list-ui/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs/session-list-ui/.pi-map.md index d436e84..0eb8d75 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs/session-list-ui/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs/session-list-ui/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-12-completed-changes-archive/session-list-overhaul/specs/session-list-ui -dir: 2026-06-12-completed-changes-archive/session-list-overhaul/specs/session-list-ui +# openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs/session-list-ui +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs/session-list-ui -index: 2026-06-12-completed-changes-archive/session-list-overhaul/specs/session-list-ui/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/session-list-overhaul/specs/session-list-ui/.pi-map.index.md ## role -Defines UI specifications for unified session card components with display, controls, grouping, and filtering capabilities across dashboard and sessions pages. +Defines UI specifications for a redesigned session list component with card-based layout, management controls, and cross-page unification. ## files -- spec.md | Specifies UI requirements for session card display, control actions, list grouping/filtering, and component unification across dashboard and sessions pages. +- spec.md | Define requirements for a session management UI with card-based display, control actions, grouping/filtering, and unified components across dashboard and sessions pages ## arch -Specification-driven design using requirements documentation to standardize component behavior and visual presentation across multiple page contexts. +Specification-driven design using requirement documents to formalize UI/UX patterns before implementation. ## tags -spec, specifies, requirements, session, card, display, control, actions +spec, define, requirements, session, management, card, display, control ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/ssh-key-mounting/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/ssh-key-mounting/.pi-map.index.md index 7046db9..d2385e3 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/ssh-key-mounting/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/ssh-key-mounting/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-12-completed-changes-archive/ssh-key-mounting (index) -dir: 2026-06-12-completed-changes-archive/ssh-key-mounting +# openspec/changes/archive/2026-06-12-completed-changes-archive/ssh-key-mounting (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/ssh-key-mounting ## role -Defines requirements specification for mounting SSH keys into tool instances to enable secure authentication. +Defines an archived OpenSpec specification for SSH key mounting functionality in tool instance lifecycle operations. ## parent -index: 2026-06-12-completed-changes-archive/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.md ## children - ## files - .openspec.yaml ## links -index: 2026-06-12-completed-changes-archive/ssh-key-mounting/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/ssh-key-mounting/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/ssh-key-mounting/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/ssh-key-mounting/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/ssh-key-mounting/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/ssh-key-mounting/.pi-map.md index 53806ad..fa64f23 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/ssh-key-mounting/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/ssh-key-mounting/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-12-completed-changes-archive/ssh-key-mounting -dir: 2026-06-12-completed-changes-archive/ssh-key-mounting +# openspec/changes/archive/2026-06-12-completed-changes-archive/ssh-key-mounting +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/ssh-key-mounting -index: 2026-06-12-completed-changes-archive/ssh-key-mounting/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/ssh-key-mounting/.pi-map.index.md ## role -Defines requirements specification for mounting SSH keys into tool instances to enable secure authentication. +Defines an archived OpenSpec specification for SSH key mounting functionality in tool instance lifecycle operations. ## files -- .openspec.yaml | Specification document defining requirements for SSH key mounting feature in tool instances +- .openspec.yaml | Defines an OpenSpec specification for implementing SSH key mounting functionality when creating/starting tool instances ## arch -Requirements-as-code pattern using OpenSpec YAML format for declarative feature specification. +Specification-driven API design using OpenSpec YAML configuration for declarative feature requirements. ## tags -.openspec, specification, document, defining, requirements, ssh, key, mounting +.openspec, defines, openspec, specification, implementing, ssh, key, mounting ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/terminal-fullscreen-unified-header/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/terminal-fullscreen-unified-header/.pi-map.index.md index a90e418..08402be 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/terminal-fullscreen-unified-header/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/terminal-fullscreen-unified-header/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-12-completed-changes-archive/terminal-fullscreen-unified-header (index) -dir: 2026-06-12-completed-changes-archive/terminal-fullscreen-unified-header +# openspec/changes/archive/2026-06-12-completed-changes-archive/terminal-fullscreen-unified-header (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/terminal-fullscreen-unified-header ## role -Archives a completed bugfix specification for unifying terminal fullscreen mode header UI elements. +Archives a completed bugfix specification for unifying terminal fullscreen header UI elements. ## parent -index: 2026-06-12-completed-changes-archive/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.md ## children - ## files - .openspec.yaml ## links -index: 2026-06-12-completed-changes-archive/terminal-fullscreen-unified-header/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/terminal-fullscreen-unified-header/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/terminal-fullscreen-unified-header/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/terminal-fullscreen-unified-header/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/terminal-fullscreen-unified-header/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/terminal-fullscreen-unified-header/.pi-map.md index f5ec25c..5c132a6 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/terminal-fullscreen-unified-header/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/terminal-fullscreen-unified-header/.pi-map.md @@ -1,14 +1,14 @@ -# 2026-06-12-completed-changes-archive/terminal-fullscreen-unified-header -dir: 2026-06-12-completed-changes-archive/terminal-fullscreen-unified-header +# openspec/changes/archive/2026-06-12-completed-changes-archive/terminal-fullscreen-unified-header +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/terminal-fullscreen-unified-header -index: 2026-06-12-completed-changes-archive/terminal-fullscreen-unified-header/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/terminal-fullscreen-unified-header/.pi-map.index.md ## role -Archives a completed bugfix specification for unifying terminal fullscreen mode header UI elements. +Archives a completed bugfix specification for unifying terminal fullscreen header UI elements. ## files -- .openspec.yaml | Defines a completed bugfix specification for unifying terminal fullscreen mode header elements +- .openspec.yaml | Defines a completed bugfix specification for unifying terminal fullscreen header elements ## arch -Specification-driven change tracking using YAML-based open specifications for completed work documentation. +Specification-driven change tracking using YAML metadata files in dated archive directories for completed work items. ## tags .openspec, defines, completed, bugfix, specification, unifying, terminal, fullscreen ## symbols diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-config-mount-cleanup/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-config-mount-cleanup/.pi-map.index.md index 0835d12..7912b66 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-config-mount-cleanup/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-config-mount-cleanup/.pi-map.index.md @@ -1,11 +1,11 @@ -# 2026-06-12-completed-changes-archive/tool-config-mount-cleanup (index) -dir: 2026-06-12-completed-changes-archive/tool-config-mount-cleanup +# openspec/changes/archive/2026-06-12-completed-changes-archive/tool-config-mount-cleanup (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-config-mount-cleanup ## role -Completed change archive documenting the removal of configuration/state mounts from built-in tool definitions to enable config-profile-based user-specific configuration. +Archive record of a completed engineering task to refactor tool configuration mount handling by removing user-configurable mounts from built-in tool definitions. ## parent -index: 2026-06-12-completed-changes-archive/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.md ## children - ## files @@ -13,8 +13,8 @@ map: 2026-06-12-completed-changes-archive/.pi-map.md - proposal.md - tasks.md ## links -index: 2026-06-12-completed-changes-archive/tool-config-mount-cleanup/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/tool-config-mount-cleanup/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-config-mount-cleanup/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-config-mount-cleanup/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-config-mount-cleanup/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-config-mount-cleanup/.pi-map.md index f378249..a2343ed 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-config-mount-cleanup/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-config-mount-cleanup/.pi-map.md @@ -1,18 +1,18 @@ -# 2026-06-12-completed-changes-archive/tool-config-mount-cleanup -dir: 2026-06-12-completed-changes-archive/tool-config-mount-cleanup +# openspec/changes/archive/2026-06-12-completed-changes-archive/tool-config-mount-cleanup +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-config-mount-cleanup -index: 2026-06-12-completed-changes-archive/tool-config-mount-cleanup/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-config-mount-cleanup/.pi-map.index.md ## role -Completed change archive documenting the removal of configuration/state mounts from built-in tool definitions to enable config-profile-based user-specific configuration. +Archive record of a completed engineering task to refactor tool configuration mount handling by removing user-configurable mounts from built-in tool definitions. ## files -- .openspec.yaml | Defines a completed OpenSpec configuration for a tool named "tool-config-mount-cleanup" -- proposal.md | Proposes removing configuration and state mounts from built-in tool definitions to separate tool setup from user-specific configuration handled by config profiles. -- tasks.md | This is a completed task checklist for modifying built-in tool configurations and database migrations in a codebase. | dep: alembic, pytest, opencode, pi-agent +- .openspec.yaml | Defines an OpenSpec project configuration file tracking a completed task named "tool-config-mount-cleanup" with start and completion dates. +- proposal.md | Proposes removing user configuration and state mounts from built-in tool definitions to enforce separation between tool setup and user-configurable profiles. +- tasks.md | This file is a task checklist tracking the completion of a multi-step engineering task involving removing specific mounts and volumes from tool configurations and data migrations. | dep: Alembic, pytest, py_compile, pi-agent, opencode, apps/api ## arch -Specification-driven migration pattern using OpenSpec for declarative tool configuration, with separation of concerns between built-in tool setup and user-configurable profiles, plus database migration coordination. +Specification-driven change tracking using YAML metadata with Markdown-based proposal and task documentation, following a structured archive pattern with dated directories for completed work. ## tags -tool, configuration, completed, config, .openspec, proposal, tasks, defines +tool, task, configuration, tracking, completion, .openspec, removing, user ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/.pi-map.index.md index 5b58cbf..c162cc7 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/.pi-map.index.md @@ -1,23 +1,23 @@ -# 2026-06-12-completed-changes-archive/tool-session-progress-and-updates (index) -dir: 2026-06-12-completed-changes-archive/tool-session-progress-and-updates +# openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates ## role -Archives documentation for a completed frontend refactoring that added real-time session progress tracking via SSE events and shared React state. +Archive of completed design documents for a frontend refactoring that replaced blocking loading states with real-time SSE-driven progress tracking across tool session lifecycles. ## parent -index: 2026-06-12-completed-changes-archive/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.md ## children -- 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs - index: 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs + index: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/.pi-map.md ## files - .openspec.yaml - design.md - proposal.md - tasks.md ## links -index: 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/.pi-map.md index ad2ecf2..252eb22 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/.pi-map.md @@ -1,19 +1,19 @@ -# 2026-06-12-completed-changes-archive/tool-session-progress-and-updates -dir: 2026-06-12-completed-changes-archive/tool-session-progress-and-updates +# openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates -index: 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/.pi-map.index.md ## role -Archives documentation for a completed frontend refactoring that added real-time session progress tracking via SSE events and shared React state. +Archive of completed design documents for a frontend refactoring that replaced blocking loading states with real-time SSE-driven progress tracking across tool session lifecycles. ## files -- .openspec.yaml | Defines an OpenAPI specification metadata file with schema type and creation date -- design.md | Design document for frontend-only refactoring of session lifecycle progress tracking and live UI updates using SSE events and shared React context. | dep: React, SSE (useEvents), SessionsContext, SessionOperationsContext, AppShell, DashboardPage, SessionsPage, CreateSessionForm, InstanceList, useInstanceActions, ToolStarter, StartToolFAB, EventToastBridge -- proposal.md | Proposes a frontend architecture change to add real-time session progress tracking via SSE and shared state across the application. | dep: React, SSE events, state management, AppShell, DashboardPage, SessionsPage, use-instance-actions, CreateSessionForm, SessionCard, InstanceCard -- tasks.md | A completed task checklist tracking implementation of shared session state, global progress panel, optimistic UI updates, and removal of legacy progress overlays in a React frontend application. | dep: React, state/sessions.tsx, state/session-operations.tsx, useEvents, hooks/use-instance-actions.ts, AppShell, SessionsPage, DashboardPage, components/features/session/session-progress-panel.tsx, components/features/tool/tool-starter.tsx, components/features/tool/start-tool-fab.tsx, components/features/tool/instance-list.tsx, components/features/session/create-session-form.tsx, components/features/session/session-card.tsx +- .openspec.yaml | Defines an OpenSpec configuration file with schema version and creation date metadata +- design.md | Design document for frontend-only refactoring of session lifecycle progress tracking and live UI updates using SSE events and shared React context. | dep: React, SSE (Server-Sent Events), SessionsContext, useEvents, AppShell, DashboardPage, SessionsPage, CreateSessionForm, InstanceList, useInstanceActions, ToolStarter, StartToolFAB, EventToastBridge +- proposal.md | Proposes a frontend architecture change to replace blocking loading states with a global SSE-driven progress panel and shared session state for immediate UI updates across tool session lifecycle actions. | dep: React, SSE event stream, existing session state management, AppShell, DashboardPage, SessionsPage, CreateSessionForm, SessionCard, InstanceCard, use-instance-actions hook +- tasks.md | This is a task tracking document for a frontend refactoring project focused on implementing shared session state, a global progress panel, and removing legacy loading overlays in a React web application. | dep: React, state/sessions.tsx, state/session-operations.tsx, useEvents, hooks/use-instance-actions.ts, AppShell, SessionsPage, DashboardPage, components/features/session/session-progress-panel.tsx, components/features/tool/tool-starter.tsx, components/features/tool/start-tool-fab.tsx, components/features/tool/instance-list.tsx ## arch -Event-driven frontend architecture using Server-Sent Events (SSE) for live updates, shared React context for global session state, optimistic UI patterns, and a centralized progress panel replacing legacy overlay components. +Event-driven frontend architecture using Server-Sent Events (SSE) for live progress streaming, shared React context for global session state management, and a non-blocking global progress panel replacing legacy modal loading overlays. ## tags -session, tsx, components, features, progress, react, tool, state +session, tool, tsx, react, progress, state, components, features ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/.pi-map.index.md index f0ee6c1..70f542d 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/.pi-map.index.md @@ -1,22 +1,22 @@ -# 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs (index) -dir: 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs +# openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs ## role -This directory serves as a specification archive for completed tool session progress and updates, storing historical design documents and requirements for past changes. +Contains archived specification documents for tracking tool session progress and updates from June 12, 2026. ## parent -index: 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/.pi-map.md ## children -- 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/session-lifecycle-ux - index: 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/session-lifecycle-ux/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/session-lifecycle-ux/.pi-map.md -- 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/sessions-hub - index: 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/sessions-hub/.pi-map.index.md - map: 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/sessions-hub/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/session-lifecycle-ux + index: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/session-lifecycle-ux/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/session-lifecycle-ux/.pi-map.md +- openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/sessions-hub + index: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/sessions-hub/.pi-map.index.md + map: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/sessions-hub/.pi-map.md ## files ## links -index: 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/.pi-map.md index 533b51a..7b3d16b 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/.pi-map.md @@ -1,13 +1,13 @@ -# 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs -dir: 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs +# openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs -index: 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/.pi-map.index.md ## role -This directory serves as a specification archive for completed tool session progress and updates, storing historical design documents and requirements for past changes. +Contains archived specification documents for tracking tool session progress and updates from June 12, 2026. ## files ## arch -Simple archival directory structure with no active architecture; likely contains flat-file documentation or markdown specs organized by date for historical reference and audit trails. +Archive directory structure preserving historical change specifications with date-based versioning for completed project milestones. ## tags - ## symbols diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/session-lifecycle-ux/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/session-lifecycle-ux/.pi-map.index.md index 919f929..9d22a83 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/session-lifecycle-ux/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/session-lifecycle-ux/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/session-lifecycle-ux (index) -dir: 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/session-lifecycle-ux +# openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/session-lifecycle-ux (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/session-lifecycle-ux ## role -Defines UI/UX specifications for real-time progress feedback and optimistic state updates during asynchronous session operations. +Defines UI/UX requirements for non-blocking progress indicators and optimistic deletion patterns in a session management system. ## parent -index: 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/session-lifecycle-ux/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/session-lifecycle-ux/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/session-lifecycle-ux/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/session-lifecycle-ux/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/session-lifecycle-ux/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/session-lifecycle-ux/.pi-map.md index 9166ea3..1acdc4e 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/session-lifecycle-ux/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/session-lifecycle-ux/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/session-lifecycle-ux -dir: 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/session-lifecycle-ux +# openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/session-lifecycle-ux +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/session-lifecycle-ux -index: 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/session-lifecycle-ux/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/session-lifecycle-ux/.pi-map.index.md ## role -Defines UI/UX specifications for real-time progress feedback and optimistic state updates during asynchronous session operations. +Defines UI/UX requirements for non-blocking progress indicators and optimistic deletion patterns in a session management system. ## files -- spec.md | Specifies UI/UX requirements for non-blocking progress indicators and optimistic updates for session lifecycle actions using SSE events. | dep: SSE, global progress indicator, shared state management, API +- spec.md | Defines UI/UX requirements for non-blocking progress indicators and optimistic deletion patterns in a session management system. | dep: SSE (Server-Sent Events), shared state management, API layer ## arch -Event-driven reactive UI pattern using Server-Sent Events (SSE) for streaming progress updates, with optimistic UI state management for non-blocking user experience. +Specification-driven design using markdown-based requirements documentation with focus on asynchronous user experience patterns and optimistic UI state management. ## tags -sse, spec, specifies, requirements, non, blocking, progress, indicators +spec, defines, requirements, non, blocking, progress, indicators, optimistic ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/sessions-hub/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/sessions-hub/.pi-map.index.md index 2a442fa..2bf1e76 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/sessions-hub/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/sessions-hub/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/sessions-hub (index) -dir: 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/sessions-hub +# openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/sessions-hub (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/sessions-hub ## role -Defines requirements for a shared global session state system that enables real-time UI synchronization across dashboard, sessions page, and navigation components when session data changes. +Defines requirements for a shared session state system that synchronizes real-time UI updates across multiple application views when session data changes. ## parent -index: 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/sessions-hub/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/sessions-hub/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/sessions-hub/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/sessions-hub/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/sessions-hub/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/sessions-hub/.pi-map.md index 576398f..16949c5 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/sessions-hub/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/sessions-hub/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/sessions-hub -dir: 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/sessions-hub +# openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/sessions-hub +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/sessions-hub -index: 2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/sessions-hub/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/tool-session-progress-and-updates/specs/sessions-hub/.pi-map.index.md ## role -Defines requirements for a shared global session state system that enables real-time UI synchronization across dashboard, sessions page, and navigation components when session data changes. +Defines requirements for a shared session state system that synchronizes real-time UI updates across multiple application views when session data changes. ## files -- spec.md | Defines requirements for implementing a shared global session state across dashboard, sessions page, and navigation to enable immediate UI updates when sessions are created or modified. | dep: SessionsContext, React Context API, sessions API (`/users/me/sessions`) +- spec.md | Specifies requirements for a shared session state system that ensures immediate UI updates across navigation, dashboard, and sessions page when sessions are created or modified. | dep: React Context API, SessionsContext, session creation API, /users/me/sessions endpoint ## arch -Specification-driven architecture using a centralized session state hub with reactive update propagation to multiple UI surfaces. +Specification-driven requirements document using a hub-and-spoke pattern where a centralized sessions hub propagates state changes to distributed UI components (navigation, dashboard, sessions page) via reactive updates. ## tags -sessions, spec, defines, requirements, implementing, shared, global, session +sessions, spec, specifies, requirements, shared, session, state, system ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/working-copies/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/working-copies/.pi-map.index.md index 1b09707..f704bbf 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/working-copies/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/working-copies/.pi-map.index.md @@ -1,11 +1,11 @@ -# 2026-06-12-completed-changes-archive/working-copies (index) -dir: 2026-06-12-completed-changes-archive/working-copies +# openspec/changes/archive/2026-06-12-completed-changes-archive/working-copies (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/working-copies ## role -Archive of completed design documents for a project that replaced direct repository mounting/cloning with persistent, shared Git workspace copies for tool instances. +Archive of completed design and specification documents for implementing workspace-based git working copies to replace direct repository mounting in tool instances. ## parent -index: 2026-06-12-completed-changes-archive/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.md ## children - ## files @@ -16,8 +16,8 @@ map: 2026-06-12-completed-changes-archive/.pi-map.md - spec.md - tasks.md ## links -index: 2026-06-12-completed-changes-archive/working-copies/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/working-copies/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/working-copies/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/working-copies/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/working-copies/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/working-copies/.pi-map.md index ac54305..f3e780d 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/working-copies/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/working-copies/.pi-map.md @@ -1,21 +1,21 @@ -# 2026-06-12-completed-changes-archive/working-copies -dir: 2026-06-12-completed-changes-archive/working-copies +# openspec/changes/archive/2026-06-12-completed-changes-archive/working-copies +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/working-copies -index: 2026-06-12-completed-changes-archive/working-copies/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/working-copies/.pi-map.index.md ## role -Archive of completed design documents for a project that replaced direct repository mounting/cloning with persistent, shared Git workspace copies for tool instances. +Archive of completed design and specification documents for implementing workspace-based git working copies to replace direct repository mounting in tool instances. ## files -- .openspec.yaml | Defines metadata for a completed project named "working-copies" with timeline tracking -- design.md | Design document for implementing workspace-based tool instances that replace direct repository mounting with isolated git working copies | dep: FastAPI, SQLAlchemy, Alembic, Docker Compose, Git, React/TypeScript, asyncio subprocess -- explore.md | Design document proposing "Working Copies" (named "Workspace") as persistent writable clones of repositories to replace direct repo mounting/cloning in tool instances | dep: GitRepository, ToolInstance, Project, User, database, compose generation, filesystem mount system -- proposal.md | Proposes a new "Workspace" entity to replace the confusing mount/clone mode dichotomy for tool instances, enabling persistent writable repository clones that multiple tools can share. -- spec.md | Technical specification for implementing persistent workspace-based tool instances that replace mount/clone modes with explicit Git repository workspaces | dep: Git, PostgreSQL, REST API, React/TypeScript frontend, Docker containers, Python backend -- tasks.md | Project task tracking document for implementing workspace-based tool instances across backend and frontend in a multi-PR phased approach | dep: Alembic, FastAPI, SQLAlchemy, React, TypeScript, pytest, ruff, ESLint, Git, Docker Compose +- .openspec.yaml | Defines metadata for a completed project named "working-copies" with start and completion dates +- design.md | Design document for implementing workspace-based tool instances that replace direct repository mounting with isolated git working copies | dep: FastAPI, SQLAlchemy, Alembic, Docker Compose, React/TypeScript, Git, asyncio, uuid, datetime +- explore.md | Proposes a "Working Copy" (Workspace) entity architecture to replace direct repository mounting/cloning in tool instances, enabling persistent writable clones shared across multiple tool instances. | dep: GitRepository, ToolInstance, database/ORM, container compose generation, filesystem mount/bind-mount, UI/sidebar navigation +- proposal.md | Proposes a workspace-based architecture to replace mount/clone modes for tool instances with persistent, writable local repository clones +- spec.md | Technical specification document defining a workspace-based architecture for persistent, writable Git repository clones that replace mount/clone modes for tool instances. | dep: Git, PostgreSQL, REST API, Python, TypeScript, React/frontend framework, container runtime +- tasks.md | Tracks implementation tasks for a workspace-based tool instance feature across 4 sequential PRs, covering backend foundation, backend integration, frontend core, and frontend integration with acceptance criteria and verification steps. | dep: Alembic, FastAPI, SQLAlchemy models, GitService, WorkspaceManager, pytest, ruff, TypeScript, React hooks/components, React Router, ESLint, npm, Docker compose templates ## arch -Design-driven development with layered specification documents (exploration → proposal → design → spec → tasks) documenting a phased multi-PR implementation across backend and frontend systems. +Documentation-driven specification with layered architecture (exploration → proposal → design → spec → tasks) defining a workspace entity pattern with persistent writable git clones shared across isolated tool instances, replacing mount/clone modes. ## tags -workspace, tool, instances, git, design, replace, project, working +tool, workspace, instances, replace, repository, git, working, design ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/workspace-first-ui/.pi-map.index.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/workspace-first-ui/.pi-map.index.md index 50eafd2..6c41c60 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/workspace-first-ui/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/workspace-first-ui/.pi-map.index.md @@ -1,11 +1,11 @@ -# 2026-06-12-completed-changes-archive/workspace-first-ui (index) -dir: 2026-06-12-completed-changes-archive/workspace-first-ui +# openspec/changes/archive/2026-06-12-completed-changes-archive/workspace-first-ui (index) +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/workspace-first-ui ## role -Archive of completed design and planning documents for a workspace-first UI navigation redesign that shifts from repository-centric to workspace-centric project interaction. +Archive of completed design and planning documents for a workspace-first UI redesign that shifted the product from repository-centric to workspace-centric navigation. ## parent -index: 2026-06-12-completed-changes-archive/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/.pi-map.md ## children - ## files @@ -15,8 +15,8 @@ map: 2026-06-12-completed-changes-archive/.pi-map.md - spec.md - tasks.md ## links -index: 2026-06-12-completed-changes-archive/workspace-first-ui/.pi-map.index.md -map: 2026-06-12-completed-changes-archive/workspace-first-ui/.pi-map.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/workspace-first-ui/.pi-map.index.md +map: openspec/changes/archive/2026-06-12-completed-changes-archive/workspace-first-ui/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-12-completed-changes-archive/workspace-first-ui/.pi-map.md b/openspec/changes/archive/2026-06-12-completed-changes-archive/workspace-first-ui/.pi-map.md index 64f04fe..393e9fb 100644 --- a/openspec/changes/archive/2026-06-12-completed-changes-archive/workspace-first-ui/.pi-map.md +++ b/openspec/changes/archive/2026-06-12-completed-changes-archive/workspace-first-ui/.pi-map.md @@ -1,20 +1,20 @@ -# 2026-06-12-completed-changes-archive/workspace-first-ui -dir: 2026-06-12-completed-changes-archive/workspace-first-ui +# openspec/changes/archive/2026-06-12-completed-changes-archive/workspace-first-ui +dir: openspec/changes/archive/2026-06-12-completed-changes-archive/workspace-first-ui -index: 2026-06-12-completed-changes-archive/workspace-first-ui/.pi-map.index.md +index: openspec/changes/archive/2026-06-12-completed-changes-archive/workspace-first-ui/.pi-map.index.md ## role -Archive of completed design and planning documents for a workspace-first UI navigation redesign that shifts from repository-centric to workspace-centric project interaction. +Archive of completed design and planning documents for a workspace-first UI redesign that shifted the product from repository-centric to workspace-centric navigation. ## files -- .openspec.yaml | Defines metadata for a completed project specification named "workspace-first-ui" -- design.md | Design document for a workspace-first UI refresh, detailing backend API/services and frontend components for file management, git operations, and tool instances scoped to workspaces. | dep: FastAPI, SQLAlchemy/AsyncSession, React, React Router, asyncio, subprocess, os -- proposal.md | Proposes a UI refresh to replace the old repository workspace with a workspace-first navigation model centered around persistent writable clones. -- spec.md | Product specification document defining a workspace-first UI refresh that replaces direct repository file browsing with workspace-centric navigation, new routes, and redesigned pages for projects and workspace details. | dep: React/Next.js (implied by .tsx, routing), REST API backend, database (existing workspaces table), TypeScript, ruff, eslint -- tasks.md | Project task tracking document for a workspace-first UI refresh, breaking work into 3 sequential PRs with backend endpoints, frontend workspace detail page, and projects page refresh with routing changes. | dep: markdown, pytest, ruff, TypeScript compiler, eslint, npm, git, python +- .openspec.yaml | Defines metadata for a completed UI project workspace in OpenSpec format +- design.md | Design document for a workspace-first UI refresh, defining backend API/services and frontend components for file management, git operations, and tool instances scoped to workspaces. | dep: FastAPI, SQLAlchemy/AsyncSession, React, React Router, TypeScript, asyncio, subprocess, os +- proposal.md | Proposes a UI redesign to replace the old repository workspace with a workspace-first navigation model centered on persistent workspace clones | dep: Working Copies Spec, repo-workspace.tsx, workspaces.tsx, pages/repo-workspace.tsx +- spec.md | Product specification document defining a workspace-first UI refresh that replaces direct repository file browsing with workspace-centric navigation, detail pages, and project organization. +- tasks.md | Documents the task breakdown, implementation order, and verification steps for a workspace-first UI refresh project across three sequential PRs (backend endpoints, workspace detail page, projects page refresh). ## arch -Documentation-heavy package using sequential PR-based task decomposition (backend → workspace detail → projects page) with layered specification hierarchy (proposal → design → spec → tasks) and OpenSpec metadata tracking. +Specification-driven development with phased PR implementation (backend → workspace detail → projects page), using OpenSpec metadata format and structured documentation hierarchy (proposal → design → spec → tasks). ## tags -workspace, first, refresh, design, document, project, specification, .openspec +workspace, first, refresh, project, design, tsx, .openspec, document ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md index 138579c..3efe35d 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md @@ -1,119 +1,119 @@ -# 2026-06-14-completed-specs-archive (index) -dir: 2026-06-14-completed-specs-archive +# openspec/changes/archive/2026-06-14-completed-specs-archive (index) +dir: openspec/changes/archive/2026-06-14-completed-specs-archive ## role -Historical archive for completed and audited OpenSpec specifications that are no longer active in the project. +Historical archive of completed and audited OpenSpec specifications for reference tracking. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md ## children -- 2026-06-14-completed-specs-archive/api-documentation - index: 2026-06-14-completed-specs-archive/api-documentation/.pi-map.index.md - map: 2026-06-14-completed-specs-archive/api-documentation/.pi-map.md -- 2026-06-14-completed-specs-archive/auth-oauth - index: 2026-06-14-completed-specs-archive/auth-oauth/.pi-map.index.md - map: 2026-06-14-completed-specs-archive/auth-oauth/.pi-map.md -- 2026-06-14-completed-specs-archive/database-models - index: 2026-06-14-completed-specs-archive/database-models/.pi-map.index.md - map: 2026-06-14-completed-specs-archive/database-models/.pi-map.md -- 2026-06-14-completed-specs-archive/docker-infrastructure - index: 2026-06-14-completed-specs-archive/docker-infrastructure/.pi-map.index.md - map: 2026-06-14-completed-specs-archive/docker-infrastructure/.pi-map.md -- 2026-06-14-completed-specs-archive/frontend-foundation - index: 2026-06-14-completed-specs-archive/frontend-foundation/.pi-map.index.md - map: 2026-06-14-completed-specs-archive/frontend-foundation/.pi-map.md -- 2026-06-14-completed-specs-archive/git-repo - index: 2026-06-14-completed-specs-archive/git-repo/.pi-map.index.md - map: 2026-06-14-completed-specs-archive/git-repo/.pi-map.md -- 2026-06-14-completed-specs-archive/instance-proxy - index: 2026-06-14-completed-specs-archive/instance-proxy/.pi-map.index.md - map: 2026-06-14-completed-specs-archive/instance-proxy/.pi-map.md -- 2026-06-14-completed-specs-archive/instance-runtime-health - index: 2026-06-14-completed-specs-archive/instance-runtime-health/.pi-map.index.md - map: 2026-06-14-completed-specs-archive/instance-runtime-health/.pi-map.md -- 2026-06-14-completed-specs-archive/instance-startup-health - index: 2026-06-14-completed-specs-archive/instance-startup-health/.pi-map.index.md - map: 2026-06-14-completed-specs-archive/instance-startup-health/.pi-map.md -- 2026-06-14-completed-specs-archive/mobile-list-detail - index: 2026-06-14-completed-specs-archive/mobile-list-detail/.pi-map.index.md - map: 2026-06-14-completed-specs-archive/mobile-list-detail/.pi-map.md -- 2026-06-14-completed-specs-archive/mobile-navigation - index: 2026-06-14-completed-specs-archive/mobile-navigation/.pi-map.index.md - map: 2026-06-14-completed-specs-archive/mobile-navigation/.pi-map.md -- 2026-06-14-completed-specs-archive/mobile-repo-workspace - index: 2026-06-14-completed-specs-archive/mobile-repo-workspace/.pi-map.index.md - map: 2026-06-14-completed-specs-archive/mobile-repo-workspace/.pi-map.md -- 2026-06-14-completed-specs-archive/mobile-tools-navigation - index: 2026-06-14-completed-specs-archive/mobile-tools-navigation/.pi-map.index.md - map: 2026-06-14-completed-specs-archive/mobile-tools-navigation/.pi-map.md -- 2026-06-14-completed-specs-archive/opencode-web-server - index: 2026-06-14-completed-specs-archive/opencode-web-server/.pi-map.index.md - map: 2026-06-14-completed-specs-archive/opencode-web-server/.pi-map.md -- 2026-06-14-completed-specs-archive/project-management - index: 2026-06-14-completed-specs-archive/project-management/.pi-map.index.md - map: 2026-06-14-completed-specs-archive/project-management/.pi-map.md -- 2026-06-14-completed-specs-archive/readiness-probe-integration - index: 2026-06-14-completed-specs-archive/readiness-probe-integration/.pi-map.index.md - map: 2026-06-14-completed-specs-archive/readiness-probe-integration/.pi-map.md -- 2026-06-14-completed-specs-archive/repo-clone-mode - index: 2026-06-14-completed-specs-archive/repo-clone-mode/.pi-map.index.md - map: 2026-06-14-completed-specs-archive/repo-clone-mode/.pi-map.md -- 2026-06-14-completed-specs-archive/session-lifecycle-ux - index: 2026-06-14-completed-specs-archive/session-lifecycle-ux/.pi-map.index.md - map: 2026-06-14-completed-specs-archive/session-lifecycle-ux/.pi-map.md -- 2026-06-14-completed-specs-archive/sessions-hub - index: 2026-06-14-completed-specs-archive/sessions-hub/.pi-map.index.md - map: 2026-06-14-completed-specs-archive/sessions-hub/.pi-map.md -- 2026-06-14-completed-specs-archive/smart-tunnel-recovery - index: 2026-06-14-completed-specs-archive/smart-tunnel-recovery/.pi-map.index.md - map: 2026-06-14-completed-specs-archive/smart-tunnel-recovery/.pi-map.md -- 2026-06-14-completed-specs-archive/ssh-keys - index: 2026-06-14-completed-specs-archive/ssh-keys/.pi-map.index.md - map: 2026-06-14-completed-specs-archive/ssh-keys/.pi-map.md -- 2026-06-14-completed-specs-archive/tool-config-management - index: 2026-06-14-completed-specs-archive/tool-config-management/.pi-map.index.md - map: 2026-06-14-completed-specs-archive/tool-config-management/.pi-map.md -- 2026-06-14-completed-specs-archive/tool-instances - index: 2026-06-14-completed-specs-archive/tool-instances/.pi-map.index.md - map: 2026-06-14-completed-specs-archive/tool-instances/.pi-map.md -- 2026-06-14-completed-specs-archive/tool-port-configuration - index: 2026-06-14-completed-specs-archive/tool-port-configuration/.pi-map.index.md - map: 2026-06-14-completed-specs-archive/tool-port-configuration/.pi-map.md -- 2026-06-14-completed-specs-archive/tool-terminal - index: 2026-06-14-completed-specs-archive/tool-terminal/.pi-map.index.md - map: 2026-06-14-completed-specs-archive/tool-terminal/.pi-map.md -- 2026-06-14-completed-specs-archive/tool-terminal-startup-command - index: 2026-06-14-completed-specs-archive/tool-terminal-startup-command/.pi-map.index.md - map: 2026-06-14-completed-specs-archive/tool-terminal-startup-command/.pi-map.md -- 2026-06-14-completed-specs-archive/tool-type-port-visibility - index: 2026-06-14-completed-specs-archive/tool-type-port-visibility/.pi-map.index.md - map: 2026-06-14-completed-specs-archive/tool-type-port-visibility/.pi-map.md -- 2026-06-14-completed-specs-archive/tool-type-single-interface - index: 2026-06-14-completed-specs-archive/tool-type-single-interface/.pi-map.index.md - map: 2026-06-14-completed-specs-archive/tool-type-single-interface/.pi-map.md -- 2026-06-14-completed-specs-archive/tool-types - index: 2026-06-14-completed-specs-archive/tool-types/.pi-map.index.md - map: 2026-06-14-completed-specs-archive/tool-types/.pi-map.md -- 2026-06-14-completed-specs-archive/tool-types-definition - index: 2026-06-14-completed-specs-archive/tool-types-definition/.pi-map.index.md - map: 2026-06-14-completed-specs-archive/tool-types-definition/.pi-map.md -- 2026-06-14-completed-specs-archive/traefik-deployment - index: 2026-06-14-completed-specs-archive/traefik-deployment/.pi-map.index.md - map: 2026-06-14-completed-specs-archive/traefik-deployment/.pi-map.md -- 2026-06-14-completed-specs-archive/tunnel-health-monitoring - index: 2026-06-14-completed-specs-archive/tunnel-health-monitoring/.pi-map.index.md - map: 2026-06-14-completed-specs-archive/tunnel-health-monitoring/.pi-map.md -- 2026-06-14-completed-specs-archive/user-config - index: 2026-06-14-completed-specs-archive/user-config/.pi-map.index.md - map: 2026-06-14-completed-specs-archive/user-config/.pi-map.md -- 2026-06-14-completed-specs-archive/user-profile - index: 2026-06-14-completed-specs-archive/user-profile/.pi-map.index.md - map: 2026-06-14-completed-specs-archive/user-profile/.pi-map.md +- openspec/changes/archive/2026-06-14-completed-specs-archive/api-documentation + index: openspec/changes/archive/2026-06-14-completed-specs-archive/api-documentation/.pi-map.index.md + map: openspec/changes/archive/2026-06-14-completed-specs-archive/api-documentation/.pi-map.md +- openspec/changes/archive/2026-06-14-completed-specs-archive/auth-oauth + index: openspec/changes/archive/2026-06-14-completed-specs-archive/auth-oauth/.pi-map.index.md + map: openspec/changes/archive/2026-06-14-completed-specs-archive/auth-oauth/.pi-map.md +- openspec/changes/archive/2026-06-14-completed-specs-archive/database-models + index: openspec/changes/archive/2026-06-14-completed-specs-archive/database-models/.pi-map.index.md + map: openspec/changes/archive/2026-06-14-completed-specs-archive/database-models/.pi-map.md +- openspec/changes/archive/2026-06-14-completed-specs-archive/docker-infrastructure + index: openspec/changes/archive/2026-06-14-completed-specs-archive/docker-infrastructure/.pi-map.index.md + map: openspec/changes/archive/2026-06-14-completed-specs-archive/docker-infrastructure/.pi-map.md +- openspec/changes/archive/2026-06-14-completed-specs-archive/frontend-foundation + index: openspec/changes/archive/2026-06-14-completed-specs-archive/frontend-foundation/.pi-map.index.md + map: openspec/changes/archive/2026-06-14-completed-specs-archive/frontend-foundation/.pi-map.md +- openspec/changes/archive/2026-06-14-completed-specs-archive/git-repo + index: openspec/changes/archive/2026-06-14-completed-specs-archive/git-repo/.pi-map.index.md + map: openspec/changes/archive/2026-06-14-completed-specs-archive/git-repo/.pi-map.md +- openspec/changes/archive/2026-06-14-completed-specs-archive/instance-proxy + index: openspec/changes/archive/2026-06-14-completed-specs-archive/instance-proxy/.pi-map.index.md + map: openspec/changes/archive/2026-06-14-completed-specs-archive/instance-proxy/.pi-map.md +- openspec/changes/archive/2026-06-14-completed-specs-archive/instance-runtime-health + index: openspec/changes/archive/2026-06-14-completed-specs-archive/instance-runtime-health/.pi-map.index.md + map: openspec/changes/archive/2026-06-14-completed-specs-archive/instance-runtime-health/.pi-map.md +- openspec/changes/archive/2026-06-14-completed-specs-archive/instance-startup-health + index: openspec/changes/archive/2026-06-14-completed-specs-archive/instance-startup-health/.pi-map.index.md + map: openspec/changes/archive/2026-06-14-completed-specs-archive/instance-startup-health/.pi-map.md +- openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-list-detail + index: openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-list-detail/.pi-map.index.md + map: openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-list-detail/.pi-map.md +- openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-navigation + index: openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-navigation/.pi-map.index.md + map: openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-navigation/.pi-map.md +- openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-repo-workspace + index: openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-repo-workspace/.pi-map.index.md + map: openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-repo-workspace/.pi-map.md +- openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-tools-navigation + index: openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-tools-navigation/.pi-map.index.md + map: openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-tools-navigation/.pi-map.md +- openspec/changes/archive/2026-06-14-completed-specs-archive/opencode-web-server + index: openspec/changes/archive/2026-06-14-completed-specs-archive/opencode-web-server/.pi-map.index.md + map: openspec/changes/archive/2026-06-14-completed-specs-archive/opencode-web-server/.pi-map.md +- openspec/changes/archive/2026-06-14-completed-specs-archive/project-management + index: openspec/changes/archive/2026-06-14-completed-specs-archive/project-management/.pi-map.index.md + map: openspec/changes/archive/2026-06-14-completed-specs-archive/project-management/.pi-map.md +- openspec/changes/archive/2026-06-14-completed-specs-archive/readiness-probe-integration + index: openspec/changes/archive/2026-06-14-completed-specs-archive/readiness-probe-integration/.pi-map.index.md + map: openspec/changes/archive/2026-06-14-completed-specs-archive/readiness-probe-integration/.pi-map.md +- openspec/changes/archive/2026-06-14-completed-specs-archive/repo-clone-mode + index: openspec/changes/archive/2026-06-14-completed-specs-archive/repo-clone-mode/.pi-map.index.md + map: openspec/changes/archive/2026-06-14-completed-specs-archive/repo-clone-mode/.pi-map.md +- openspec/changes/archive/2026-06-14-completed-specs-archive/session-lifecycle-ux + index: openspec/changes/archive/2026-06-14-completed-specs-archive/session-lifecycle-ux/.pi-map.index.md + map: openspec/changes/archive/2026-06-14-completed-specs-archive/session-lifecycle-ux/.pi-map.md +- openspec/changes/archive/2026-06-14-completed-specs-archive/sessions-hub + index: openspec/changes/archive/2026-06-14-completed-specs-archive/sessions-hub/.pi-map.index.md + map: openspec/changes/archive/2026-06-14-completed-specs-archive/sessions-hub/.pi-map.md +- openspec/changes/archive/2026-06-14-completed-specs-archive/smart-tunnel-recovery + index: openspec/changes/archive/2026-06-14-completed-specs-archive/smart-tunnel-recovery/.pi-map.index.md + map: openspec/changes/archive/2026-06-14-completed-specs-archive/smart-tunnel-recovery/.pi-map.md +- openspec/changes/archive/2026-06-14-completed-specs-archive/ssh-keys + index: openspec/changes/archive/2026-06-14-completed-specs-archive/ssh-keys/.pi-map.index.md + map: openspec/changes/archive/2026-06-14-completed-specs-archive/ssh-keys/.pi-map.md +- openspec/changes/archive/2026-06-14-completed-specs-archive/tool-config-management + index: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-config-management/.pi-map.index.md + map: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-config-management/.pi-map.md +- openspec/changes/archive/2026-06-14-completed-specs-archive/tool-instances + index: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-instances/.pi-map.index.md + map: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-instances/.pi-map.md +- openspec/changes/archive/2026-06-14-completed-specs-archive/tool-port-configuration + index: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-port-configuration/.pi-map.index.md + map: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-port-configuration/.pi-map.md +- openspec/changes/archive/2026-06-14-completed-specs-archive/tool-terminal + index: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-terminal/.pi-map.index.md + map: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-terminal/.pi-map.md +- openspec/changes/archive/2026-06-14-completed-specs-archive/tool-terminal-startup-command + index: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-terminal-startup-command/.pi-map.index.md + map: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-terminal-startup-command/.pi-map.md +- openspec/changes/archive/2026-06-14-completed-specs-archive/tool-type-port-visibility + index: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-type-port-visibility/.pi-map.index.md + map: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-type-port-visibility/.pi-map.md +- openspec/changes/archive/2026-06-14-completed-specs-archive/tool-type-single-interface + index: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-type-single-interface/.pi-map.index.md + map: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-type-single-interface/.pi-map.md +- openspec/changes/archive/2026-06-14-completed-specs-archive/tool-types + index: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-types/.pi-map.index.md + map: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-types/.pi-map.md +- openspec/changes/archive/2026-06-14-completed-specs-archive/tool-types-definition + index: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-types-definition/.pi-map.index.md + map: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-types-definition/.pi-map.md +- openspec/changes/archive/2026-06-14-completed-specs-archive/traefik-deployment + index: openspec/changes/archive/2026-06-14-completed-specs-archive/traefik-deployment/.pi-map.index.md + map: openspec/changes/archive/2026-06-14-completed-specs-archive/traefik-deployment/.pi-map.md +- openspec/changes/archive/2026-06-14-completed-specs-archive/tunnel-health-monitoring + index: openspec/changes/archive/2026-06-14-completed-specs-archive/tunnel-health-monitoring/.pi-map.index.md + map: openspec/changes/archive/2026-06-14-completed-specs-archive/tunnel-health-monitoring/.pi-map.md +- openspec/changes/archive/2026-06-14-completed-specs-archive/user-config + index: openspec/changes/archive/2026-06-14-completed-specs-archive/user-config/.pi-map.index.md + map: openspec/changes/archive/2026-06-14-completed-specs-archive/user-config/.pi-map.md +- openspec/changes/archive/2026-06-14-completed-specs-archive/user-profile + index: openspec/changes/archive/2026-06-14-completed-specs-archive/user-profile/.pi-map.index.md + map: openspec/changes/archive/2026-06-14-completed-specs-archive/user-profile/.pi-map.md ## files - README.md ## links -index: 2026-06-14-completed-specs-archive/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md index 06cc3d2..4311e12 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md @@ -1,14 +1,14 @@ -# 2026-06-14-completed-specs-archive -dir: 2026-06-14-completed-specs-archive +# openspec/changes/archive/2026-06-14-completed-specs-archive +dir: openspec/changes/archive/2026-06-14-completed-specs-archive -index: 2026-06-14-completed-specs-archive/.pi-map.index.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md ## role -Historical archive for completed and audited OpenSpec specifications that are no longer active in the project. +Historical archive of completed and audited OpenSpec specifications for reference tracking. ## files -- README.md | Documents archived OpenSpec specifications that have been audited against the source tree and moved to historical reference. +- README.md | Documents archived OpenSpec specifications that have been audited against the source tree, tracking their implementation status for historical reference. ## arch -Simple archival directory structure with README-based documentation; no active code or runtime architecture. +Simple flat-file documentation archive with no active code patterns, serving as read-only audit trail storage. ## tags readme, documents, archived, openspec, specifications, have, been, audited ## symbols diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/api-documentation/.pi-map.index.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/api-documentation/.pi-map.index.md index 961e217..77ac3b9 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/api-documentation/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/api-documentation/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-14-completed-specs-archive/api-documentation (index) -dir: 2026-06-14-completed-specs-archive/api-documentation +# openspec/changes/archive/2026-06-14-completed-specs-archive/api-documentation (index) +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/api-documentation ## role -Defines API documentation, health monitoring, and developer onboarding requirements for a FastAPI-based system. +Defines API documentation and health monitoring requirements for a FastAPI-based system ## parent -index: 2026-06-14-completed-specs-archive/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-14-completed-specs-archive/api-documentation/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/api-documentation/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/api-documentation/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/api-documentation/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/api-documentation/.pi-map.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/api-documentation/.pi-map.md index 8874554..a4e1afb 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/api-documentation/.pi-map.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/api-documentation/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-14-completed-specs-archive/api-documentation -dir: 2026-06-14-completed-specs-archive/api-documentation +# openspec/changes/archive/2026-06-14-completed-specs-archive/api-documentation +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/api-documentation -index: 2026-06-14-completed-specs-archive/api-documentation/.pi-map.index.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/api-documentation/.pi-map.index.md ## role -Defines API documentation, health monitoring, and developer onboarding requirements for a FastAPI-based system. +Defines API documentation and health monitoring requirements for a FastAPI-based system ## files -- spec.md | Define API documentation, health monitoring, and developer onboarding requirements for a FastAPI-based system. | dep: FastAPI, Pydantic v2, Swagger UI, Database, Redis +- spec.md | Define API documentation and health monitoring requirements for a FastAPI-based system | dep: FastAPI, Pydantic v2 ## arch -Specification-driven documentation architecture using markdown-based requirements definition for API standards, health check endpoints, and onboarding workflows. +Specification-driven documentation using Markdown-based requirements definition with FastAPI OpenAPI/Swagger integration patterns ## tags -fastapi, spec, define, api, documentation, health, monitoring, developer +fastapi, spec, define, api, documentation, health, monitoring, requirements ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/auth-oauth/.pi-map.index.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/auth-oauth/.pi-map.index.md index d61794a..7fbf18f 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/auth-oauth/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/auth-oauth/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-14-completed-specs-archive/auth-oauth (index) -dir: 2026-06-14-completed-specs-archive/auth-oauth +# openspec/changes/archive/2026-06-14-completed-specs-archive/auth-oauth (index) +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/auth-oauth ## role -Defines authentication and authorization specifications for OAuth2/OIDC integration with Authentik identity provider. +Defines authentication and authorization requirements for an OAuth2/OIDC-based system using Authentik as the identity provider. ## parent -index: 2026-06-14-completed-specs-archive/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-14-completed-specs-archive/auth-oauth/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/auth-oauth/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/auth-oauth/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/auth-oauth/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/auth-oauth/.pi-map.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/auth-oauth/.pi-map.md index e7f60b0..759e8a5 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/auth-oauth/.pi-map.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/auth-oauth/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-14-completed-specs-archive/auth-oauth -dir: 2026-06-14-completed-specs-archive/auth-oauth +# openspec/changes/archive/2026-06-14-completed-specs-archive/auth-oauth +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/auth-oauth -index: 2026-06-14-completed-specs-archive/auth-oauth/.pi-map.index.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/auth-oauth/.pi-map.index.md ## role -Defines authentication and authorization specifications for OAuth2/OIDC integration with Authentik identity provider. +Defines authentication and authorization requirements for an OAuth2/OIDC-based system using Authentik as the identity provider. ## files -- spec.md | Specifies OAuth2/OIDC authentication requirements using Authentik with secure session handling, token refresh, and logout functionality | dep: Authentik OIDC provider, Database (User model), pytest, mypy, ruff +- spec.md | Specifies authentication requirements for an OAuth2/OIDC system using Authentik with secure session handling, token refresh, and logout | dep: Authentik OIDC provider, Database (User model), pytest, mypy, ruff ## arch -Security-focused specification document outlining token-based authentication flow with session management, refresh mechanisms, and secure logout procedures. +Specification-driven security architecture using standard OAuth2/OIDC flows with session management, token lifecycle handling, and secure logout patterns. ## tags -spec, specifies, oauth2, oidc, authentication, requirements, authentik, secure +spec, specifies, authentication, requirements, oauth2, oidc, system, authentik ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/database-models/.pi-map.index.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/database-models/.pi-map.index.md index 1cfc02c..37927ee 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/database-models/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/database-models/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-14-completed-specs-archive/database-models (index) -dir: 2026-06-14-completed-specs-archive/database-models +# openspec/changes/archive/2026-06-14-completed-specs-archive/database-models (index) +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/database-models ## role -Defines the database schema, SQLAlchemy 2.0 async ORM models, Alembic migrations, and seeding logic for six core entities in the Headquarter platform. +Defines the database schema and SQLAlchemy 2.0 async ORM models for the Headquarter platform's core entities including users, projects, git repositories, SSH keys, and user configuration, with Alembic migration and seeding support. ## parent -index: 2026-06-14-completed-specs-archive/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-14-completed-specs-archive/database-models/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/database-models/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/database-models/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/database-models/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/database-models/.pi-map.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/database-models/.pi-map.md index f81207d..30fb88c 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/database-models/.pi-map.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/database-models/.pi-map.md @@ -1,14 +1,14 @@ -# 2026-06-14-completed-specs-archive/database-models -dir: 2026-06-14-completed-specs-archive/database-models +# openspec/changes/archive/2026-06-14-completed-specs-archive/database-models +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/database-models -index: 2026-06-14-completed-specs-archive/database-models/.pi-map.index.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/database-models/.pi-map.index.md ## role -Defines the database schema, SQLAlchemy 2.0 async ORM models, Alembic migrations, and seeding logic for six core entities in the Headquarter platform. +Defines the database schema and SQLAlchemy 2.0 async ORM models for the Headquarter platform's core entities including users, projects, git repositories, SSH keys, and user configuration, with Alembic migration and seeding support. ## files -- spec.md | Define database schema and SQLAlchemy 2.0 async models for the Headquarter platform with six core entities, Alembic migrations, and seeding. | dep: PostgreSQL, SQLAlchemy 2.0, asyncpg, Alembic, Fernet, pytest, mypy, ruff +- spec.md | Define database schema and SQLAlchemy 2.0 async models for the Headquarter platform including users, projects, git repositories, SSH keys, and user configuration with Alembic migrations and seeding. | dep: SQLAlchemy 2.0, asyncpg, Alembic, PostgreSQL, Fernet cryptography, pytest, mypy, ruff ## arch -Async SQLAlchemy 2.0 declarative ORM with Alembic for migrations, supporting PostgreSQL with structured seeding and six interconnected domain entities. +Async SQLAlchemy 2.0 declarative ORM with Alembic migrations, seeding utilities, and comprehensive entity relationship modeling for a multi-tenant platform with git integration and SSH key management. ## tags alembic, spec, define, database, schema, sqlalchemy, async, models ## symbols diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/docker-infrastructure/.pi-map.index.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/docker-infrastructure/.pi-map.index.md index 335ffcf..6ad854b 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/docker-infrastructure/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/docker-infrastructure/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-14-completed-specs-archive/docker-infrastructure (index) -dir: 2026-06-14-completed-specs-archive/docker-infrastructure +# openspec/changes/archive/2026-06-14-completed-specs-archive/docker-infrastructure (index) +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/docker-infrastructure ## role -Defines Docker-based infrastructure specifications for multi-service development and production deployment environments. +Defines Docker containerization specifications for deploying a multi-service application stack across development and production environments. ## parent -index: 2026-06-14-completed-specs-archive/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-14-completed-specs-archive/docker-infrastructure/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/docker-infrastructure/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/docker-infrastructure/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/docker-infrastructure/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/docker-infrastructure/.pi-map.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/docker-infrastructure/.pi-map.md index 83390b5..94e6d01 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/docker-infrastructure/.pi-map.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/docker-infrastructure/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-14-completed-specs-archive/docker-infrastructure -dir: 2026-06-14-completed-specs-archive/docker-infrastructure +# openspec/changes/archive/2026-06-14-completed-specs-archive/docker-infrastructure +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/docker-infrastructure -index: 2026-06-14-completed-specs-archive/docker-infrastructure/.pi-map.index.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/docker-infrastructure/.pi-map.index.md ## role -Defines Docker-based infrastructure specifications for multi-service development and production deployment environments. +Defines Docker containerization specifications for deploying a multi-service application stack across development and production environments. ## files -- spec.md | Define Docker-based infrastructure specifications for a multi-service development and production deployment environment | dep: Docker, Docker Compose, Make, Python 3.11, Node.js 20+, nginx, Traefik, Vite, Authentik, Redis, PostgreSQL +- spec.md | Define Docker infrastructure requirements for a multi-service development and production deployment environment with API, web frontend, and supporting services | dep: Docker, Docker Compose, Make, Python 3.11, Node.js 20, Vite, nginx, Traefik, Authentik, Redis, PostgreSQL ## arch -Specification-driven architecture using markdown-based documentation to define container orchestration patterns for cross-environment parity. +Container-based microservices architecture using Docker with service separation (API, web frontend, supporting services), environment-specific configurations, and orchestrated multi-container deployment patterns. ## tags -docker, spec, define, infrastructure, specifications, multi, service, development +docker, spec, define, infrastructure, requirements, multi, service, development ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/frontend-foundation/.pi-map.index.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/frontend-foundation/.pi-map.index.md index 1e82477..cdba0f9 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/frontend-foundation/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/frontend-foundation/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-14-completed-specs-archive/frontend-foundation (index) -dir: 2026-06-14-completed-specs-archive/frontend-foundation +# openspec/changes/archive/2026-06-14-completed-specs-archive/frontend-foundation (index) +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/frontend-foundation ## role -Defines the technical specification for a modern React 18+ TypeScript frontend foundation with build tooling, routing, styling, and core UI features. +Defines frontend foundation specifications for a modern React 18+ TypeScript application including routing, styling, layout, auth, and form behaviors. ## parent -index: 2026-06-14-completed-specs-archive/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-14-completed-specs-archive/frontend-foundation/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/frontend-foundation/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/frontend-foundation/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/frontend-foundation/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/frontend-foundation/.pi-map.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/frontend-foundation/.pi-map.md index eb2ebca..cb19cb3 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/frontend-foundation/.pi-map.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/frontend-foundation/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-14-completed-specs-archive/frontend-foundation -dir: 2026-06-14-completed-specs-archive/frontend-foundation +# openspec/changes/archive/2026-06-14-completed-specs-archive/frontend-foundation +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/frontend-foundation -index: 2026-06-14-completed-specs-archive/frontend-foundation/.pi-map.index.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/frontend-foundation/.pi-map.index.md ## role -Defines the technical specification for a modern React 18+ TypeScript frontend foundation with build tooling, routing, styling, and core UI features. +Defines frontend foundation specifications for a modern React 18+ TypeScript application including routing, styling, layout, auth, and form behaviors. ## files -- spec.md | Define a specification for a modern React 18+ TypeScript frontend with Vite, React Router, Tailwind CSS, authenticated routing, responsive layout, and dashboard/tool workshop features. | dep: React 18+, TypeScript 5+, Vite, React Router, Tailwind CSS, Axios +- spec.md | Define frontend foundation specifications for a modern React 18+ TypeScript application with routing, Tailwind CSS styling, responsive layout, authentication guards, and tool workshop form behaviors. | dep: React 18+, TypeScript 5+, Vite, React Router, Tailwind CSS, Axios ## arch -Specification-driven architecture using Vite for bundling, React Router for client-side navigation with authenticated route guards, Tailwind CSS for utility-first styling, and a component-based layout structure supporting responsive dashboards and tool workshops. +Specification-driven architecture using markdown-based requirements documentation for a React 18+ SPA with Tailwind CSS, client-side routing, responsive design patterns, authentication guards, and form handling conventions. ## tags -react, vite, spec, define, specification, modern, typescript, frontend +spec, define, frontend, foundation, specifications, modern, react, typescript ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/git-repo/.pi-map.index.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/git-repo/.pi-map.index.md index 5fb9d0d..d16ca07 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/git-repo/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/git-repo/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-14-completed-specs-archive/git-repo (index) -dir: 2026-06-14-completed-specs-archive/git-repo +# openspec/changes/archive/2026-06-14-completed-specs-archive/git-repo (index) +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/git-repo ## role -Defines specifications for a bare git repository management service that bridges filesystem storage with database-backed metadata and SSH key integration. +Defines requirements for a git repository management system with bare repo lifecycle operations, SSH key integration, and duplicate prevention. ## parent -index: 2026-06-14-completed-specs-archive/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-14-completed-specs-archive/git-repo/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/git-repo/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/git-repo/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/git-repo/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/git-repo/.pi-map.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/git-repo/.pi-map.md index ef1173f..f0ac080 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/git-repo/.pi-map.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/git-repo/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-14-completed-specs-archive/git-repo -dir: 2026-06-14-completed-specs-archive/git-repo +# openspec/changes/archive/2026-06-14-completed-specs-archive/git-repo +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/git-repo -index: 2026-06-14-completed-specs-archive/git-repo/.pi-map.index.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/git-repo/.pi-map.index.md ## role -Defines specifications for a bare git repository management service that bridges filesystem storage with database-backed metadata and SSH key integration. +Defines requirements for a git repository management system with bare repo lifecycle operations, SSH key integration, and duplicate prevention. ## files -- spec.md | Specifies requirements for managing bare git repositories on disk with database metadata, including creation, SSH key association, cloning, listing, deletion, and duplicate prevention. | dep: Database models (GitRepository, Project, User), Docker volume for repo storage +- spec.md | Defines requirements for a git repository management system that handles bare repository creation, SSH key association, cloning, listing, deletion, and duplicate prevention with on-disk storage and database metadata. | dep: GitRepository, Project, User, Docker volume, SSH key system, pytest, mypy, ruff, npm ## arch -Specification-driven domain design with clear separation between storage operations (create/clone/delete), metadata persistence, and access control (SSH keys), emphasizing idempotency and duplicate prevention constraints. +Specification-driven design using markdown-based requirements documentation with clear functional boundaries between storage layers (filesystem + database) and explicit constraint definitions. ## tags -spec, specifies, requirements, managing, bare, git, repositories, disk +repository, spec, defines, requirements, git, management, system, handles ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/instance-proxy/.pi-map.index.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/instance-proxy/.pi-map.index.md index 0173c0d..928235f 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/instance-proxy/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/instance-proxy/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-14-completed-specs-archive/instance-proxy (index) -dir: 2026-06-14-completed-specs-archive/instance-proxy +# openspec/changes/archive/2026-06-14-completed-specs-archive/instance-proxy (index) +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/instance-proxy ## role -Defines the API contract for a secure proxy service that routes HTTP/WebSocket traffic to running tool instances with owner-based access control. +Defines API requirements for proxying HTTP and WebSocket traffic from authenticated users to running tool instances with owner-based access control ## parent -index: 2026-06-14-completed-specs-archive/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-14-completed-specs-archive/instance-proxy/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/instance-proxy/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/instance-proxy/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/instance-proxy/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/instance-proxy/.pi-map.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/instance-proxy/.pi-map.md index f3e5c1d..d47b21e 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/instance-proxy/.pi-map.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/instance-proxy/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-14-completed-specs-archive/instance-proxy -dir: 2026-06-14-completed-specs-archive/instance-proxy +# openspec/changes/archive/2026-06-14-completed-specs-archive/instance-proxy +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/instance-proxy -index: 2026-06-14-completed-specs-archive/instance-proxy/.pi-map.index.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/instance-proxy/.pi-map.index.md ## role -Defines the API contract for a secure proxy service that routes HTTP/WebSocket traffic to running tool instances with owner-based access control. +Defines API requirements for proxying HTTP and WebSocket traffic from authenticated users to running tool instances with owner-based access control ## files -- spec.md | Specifies API requirements for an HTTP/WebSocket proxy endpoint that forwards requests to running tool instances with owner-based access control +- spec.md | Specifies API requirements for proxying HTTP and WebSocket traffic from authenticated users to running tool instances with owner-based access control ## arch -API specification using markdown-based documentation; defines REST/WebSocket endpoint patterns with authentication/authorization requirements, request forwarding semantics, and ownership-based access control policies. +API specification document using requirement-based specification pattern with authentication and authorization constraints ## tags -spec, specifies, api, requirements, http, websocket, proxy, endpoint +spec, specifies, api, requirements, proxying, http, websocket, traffic ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/instance-runtime-health/.pi-map.index.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/instance-runtime-health/.pi-map.index.md index 1ee655d..61b4668 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/instance-runtime-health/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/instance-runtime-health/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-14-completed-specs-archive/instance-runtime-health (index) -dir: 2026-06-14-completed-specs-archive/instance-runtime-health +# openspec/changes/archive/2026-06-14-completed-specs-archive/instance-runtime-health (index) +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/instance-runtime-health ## role -Defines requirements for monitoring container health states and synchronizing runtime status between instances and a central control plane. +Defines system requirements for runtime health monitoring, frontend health polling, and container state synchronization for instances with web and terminal access modes. ## parent -index: 2026-06-14-completed-specs-archive/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-14-completed-specs-archive/instance-runtime-health/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/instance-runtime-health/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/instance-runtime-health/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/instance-runtime-health/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/instance-runtime-health/.pi-map.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/instance-runtime-health/.pi-map.md index 9f9cbf0..d895b84 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/instance-runtime-health/.pi-map.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/instance-runtime-health/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-14-completed-specs-archive/instance-runtime-health -dir: 2026-06-14-completed-specs-archive/instance-runtime-health +# openspec/changes/archive/2026-06-14-completed-specs-archive/instance-runtime-health +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/instance-runtime-health -index: 2026-06-14-completed-specs-archive/instance-runtime-health/.pi-map.index.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/instance-runtime-health/.pi-map.index.md ## role -Defines requirements for monitoring container health states and synchronizing runtime status between instances and a central control plane. +Defines system requirements for runtime health monitoring, frontend health polling, and container state synchronization for instances with web and terminal access modes. ## files -- spec.md | Specification document defining health monitoring, polling, and container state synchronization requirements for a container/instance management system | dep: Docker, HTTP tunneling, REST API +- spec.md | Defines system requirements for runtime health monitoring, frontend health polling, and container state synchronization for instances with web and terminal access modes. | dep: Docker, HTTP tunnel, frontend UI, health probe system ## arch -Specification-driven contract pattern with event-based polling architecture, health state machine transitions, and asynchronous status reconciliation between distributed agents and centralized coordinator. +Specification-driven requirements document using system-level functional decomposition with separate concerns for health monitoring, polling mechanisms, and state synchronization across multiple access modes. ## tags -container, spec, specification, document, defining, health, monitoring, polling +health, spec, defines, system, requirements, runtime, monitoring, frontend ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/instance-startup-health/.pi-map.index.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/instance-startup-health/.pi-map.index.md index 4adde0b..1f834b9 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/instance-startup-health/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/instance-startup-health/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-14-completed-specs-archive/instance-startup-health (index) -dir: 2026-06-14-completed-specs-archive/instance-startup-health +# openspec/changes/archive/2026-06-14-completed-specs-archive/instance-startup-health (index) +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/instance-startup-health ## role -Defines requirements for container startup verification, readiness probe execution, and health monitoring for a tool instance management system using Docker Compose. +Defines system requirements for container lifecycle management including startup verification, readiness probes, and health monitoring for Docker-based tool instances. ## parent -index: 2026-06-14-completed-specs-archive/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-14-completed-specs-archive/instance-startup-health/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/instance-startup-health/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/instance-startup-health/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/instance-startup-health/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/instance-startup-health/.pi-map.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/instance-startup-health/.pi-map.md index 5cdfd39..4779bac 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/instance-startup-health/.pi-map.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/instance-startup-health/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-14-completed-specs-archive/instance-startup-health -dir: 2026-06-14-completed-specs-archive/instance-startup-health +# openspec/changes/archive/2026-06-14-completed-specs-archive/instance-startup-health +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/instance-startup-health -index: 2026-06-14-completed-specs-archive/instance-startup-health/.pi-map.index.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/instance-startup-health/.pi-map.index.md ## role -Defines requirements for container startup verification, readiness probe execution, and health monitoring for a tool instance management system using Docker Compose. +Defines system requirements for container lifecycle management including startup verification, readiness probes, and health monitoring for Docker-based tool instances. ## files -- spec.md | Defines requirements for container startup verification, readiness probe execution, and health monitoring for a tool instance management system using Docker Compose | dep: docker compose, docker ps, readiness probes, tunnels, health endpoints, database +- spec.md | Defines system requirements for container lifecycle management including startup verification, readiness probes, and health monitoring for Docker-based tool instances. | dep: Docker, docker compose, database ## arch -Specification-driven requirements document using Markdown format with structured sections for overview, requirements, and behavior definitions, following a declarative specification pattern for system behavior documentation. +Specification-driven architecture using markdown-based requirements documentation for container health checking patterns with startup, readiness, and liveness probe semantics. ## tags -spec, defines, requirements, container, startup, verification, readiness, probe +docker, spec, defines, system, requirements, container, lifecycle, management ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-list-detail/.pi-map.index.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-list-detail/.pi-map.index.md index 056f0c6..b7d2b08 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-list-detail/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-list-detail/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-14-completed-specs-archive/mobile-list-detail (index) -dir: 2026-06-14-completed-specs-archive/mobile-list-detail +# openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-list-detail (index) +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-list-detail ## role -Defines mobile UI specifications for list-detail CRUD screens managing tool types and configuration profiles. +Specification document defining mobile UI requirements for list-detail CRUD workflows in a configuration management application. ## parent -index: 2026-06-14-completed-specs-archive/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-14-completed-specs-archive/mobile-list-detail/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/mobile-list-detail/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-list-detail/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-list-detail/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-list-detail/.pi-map.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-list-detail/.pi-map.md index 124e7f3..9cee3da 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-list-detail/.pi-map.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-list-detail/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-14-completed-specs-archive/mobile-list-detail -dir: 2026-06-14-completed-specs-archive/mobile-list-detail +# openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-list-detail +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-list-detail -index: 2026-06-14-completed-specs-archive/mobile-list-detail/.pi-map.index.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-list-detail/.pi-map.index.md ## role -Defines mobile UI specifications for list-detail CRUD screens managing tool types and configuration profiles. +Specification document defining mobile UI requirements for list-detail CRUD workflows in a configuration management application. ## files -- spec.md | Defines mobile UI requirements for a configuration management system with list views, detail views, editing, and CRUD operations for tool types and config profiles. +- spec.md | Mobile UI requirements specification for a configuration management application featuring list views, detail views, editing workflows, and CRUD operations for tool types and config profiles. ## arch -Specification-driven documentation using structured markdown with user stories, acceptance criteria, and screen flow definitions for mobile configuration management interfaces. +Markdown-based requirements specification following a feature-driven documentation pattern with sections for overview, requirements, user stories, and detailed UI/UX specifications for mobile interfaces. ## tags -views, spec, defines, mobile, requirements, configuration, management, system +views, spec, mobile, requirements, specification, configuration, management, application ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-navigation/.pi-map.index.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-navigation/.pi-map.index.md index e455464..a124eae 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-navigation/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-navigation/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-14-completed-specs-archive/mobile-navigation (index) -dir: 2026-06-14-completed-specs-archive/mobile-navigation +# openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-navigation (index) +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-navigation ## role -Archives completed mobile bottom navigation specification with grouped items and submenu behavior. +Defines mobile bottom navigation UI requirements for organizing related pages into expandable sub-menu groups. ## parent -index: 2026-06-14-completed-specs-archive/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-14-completed-specs-archive/mobile-navigation/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/mobile-navigation/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-navigation/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-navigation/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-navigation/.pi-map.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-navigation/.pi-map.md index 7227d7d..1834753 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-navigation/.pi-map.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-navigation/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-14-completed-specs-archive/mobile-navigation -dir: 2026-06-14-completed-specs-archive/mobile-navigation +# openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-navigation +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-navigation -index: 2026-06-14-completed-specs-archive/mobile-navigation/.pi-map.index.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-navigation/.pi-map.index.md ## role -Archives completed mobile bottom navigation specification with grouped items and submenu behavior. +Defines mobile bottom navigation UI requirements for organizing related pages into expandable sub-menu groups. ## files -- spec.md | Defines requirements for grouped bottom navigation with submenu behavior on mobile +- spec.md | Defines mobile bottom navigation requirements for grouping related pages under expandable sub-menu items ## arch -Specification document archive with no active code architecture; serves as historical reference for mobile UI pattern requirements. +Specification-driven design using markdown-based requirements documentation with date-versioned archival structure. ## tags -spec, defines, requirements, grouped, bottom, navigation, submenu, behavior +spec, defines, mobile, bottom, navigation, requirements, grouping, related ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-repo-workspace/.pi-map.index.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-repo-workspace/.pi-map.index.md index 7265dcc..1251015 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-repo-workspace/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-repo-workspace/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-14-completed-specs-archive/mobile-repo-workspace (index) -dir: 2026-06-14-completed-specs-archive/mobile-repo-workspace +# openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-repo-workspace (index) +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-repo-workspace ## role -Defines mobile UI requirements for a repository workspace featuring file tree navigation, editor, git, and terminal views +Defines mobile UI specifications for a repository workspace interface with file tree, editor, git, and terminal views. ## parent -index: 2026-06-14-completed-specs-archive/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-14-completed-specs-archive/mobile-repo-workspace/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/mobile-repo-workspace/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-repo-workspace/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-repo-workspace/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-repo-workspace/.pi-map.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-repo-workspace/.pi-map.md index 8056282..9ca0970 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-repo-workspace/.pi-map.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-repo-workspace/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-14-completed-specs-archive/mobile-repo-workspace -dir: 2026-06-14-completed-specs-archive/mobile-repo-workspace +# openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-repo-workspace +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-repo-workspace -index: 2026-06-14-completed-specs-archive/mobile-repo-workspace/.pi-map.index.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-repo-workspace/.pi-map.index.md ## role -Defines mobile UI requirements for a repository workspace featuring file tree navigation, editor, git, and terminal views +Defines mobile UI specifications for a repository workspace interface with file tree, editor, git, and terminal views. ## files -- spec.md | Define mobile UI requirements for a repository workspace featuring file tree navigation, editor, git, and terminal views +- spec.md | Defines mobile UI requirements for a repository workspace with file tree, editor, git, and terminal views ## arch -Specification document using markdown-based requirements definition with view-based modular decomposition +Specification document using markdown-based requirements definition with dated archival organization. ## tags -spec, define, mobile, requirements, repository, workspace, featuring, tree +spec, defines, mobile, requirements, repository, workspace, tree, editor ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-tools-navigation/.pi-map.index.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-tools-navigation/.pi-map.index.md index b340da7..9b7ed54 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-tools-navigation/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-tools-navigation/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-14-completed-specs-archive/mobile-tools-navigation (index) -dir: 2026-06-14-completed-specs-archive/mobile-tools-navigation +# openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-tools-navigation (index) +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-tools-navigation ## role -Defines mobile UI requirements for a grouped "Tools" bottom navigation with a bottom sheet menu and active state indication. +Defines mobile UI specification for a grouped "Tools" entry in bottom navigation with bottom sheet interaction pattern and active state visualization. ## parent -index: 2026-06-14-completed-specs-archive/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-14-completed-specs-archive/mobile-tools-navigation/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/mobile-tools-navigation/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-tools-navigation/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-tools-navigation/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-tools-navigation/.pi-map.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-tools-navigation/.pi-map.md index 18d3c9f..62705c7 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-tools-navigation/.pi-map.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-tools-navigation/.pi-map.md @@ -1,14 +1,14 @@ -# 2026-06-14-completed-specs-archive/mobile-tools-navigation -dir: 2026-06-14-completed-specs-archive/mobile-tools-navigation +# openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-tools-navigation +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-tools-navigation -index: 2026-06-14-completed-specs-archive/mobile-tools-navigation/.pi-map.index.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/mobile-tools-navigation/.pi-map.index.md ## role -Defines mobile UI requirements for a grouped "Tools" bottom navigation with a bottom sheet menu and active state indication. +Defines mobile UI specification for a grouped "Tools" entry in bottom navigation with bottom sheet interaction pattern and active state visualization. ## files -- spec.md | Defines mobile UI requirements for a grouped "Tools" bottom navigation with a bottom sheet menu and active state indication +- spec.md | Defines mobile UI requirements for a grouped "Tools" bottom navigation entry with bottom sheet behavior and active state indication ## arch -Specification-driven documentation pattern using Markdown-based requirements documents with no executable code. +Specification document using markdown-based requirements definition with behavioral state descriptions and UI interaction patterns. ## tags bottom, spec, defines, mobile, requirements, grouped, tools, navigation ## symbols diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/opencode-web-server/.pi-map.index.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/opencode-web-server/.pi-map.index.md index 0247e40..17af6a8 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/opencode-web-server/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/opencode-web-server/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-14-completed-specs-archive/opencode-web-server (index) -dir: 2026-06-14-completed-specs-archive/opencode-web-server +# openspec/changes/archive/2026-06-14-completed-specs-archive/opencode-web-server (index) +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/opencode-web-server ## role -Defines specifications for a web-based terminal server feature that enables remote container access through browser-based tmux and ranger interfaces. +Defines containerized web server specifications for OpenCode's browser-based terminal interface with tmux and ranger integration. ## parent -index: 2026-06-14-completed-specs-archive/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-14-completed-specs-archive/opencode-web-server/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/opencode-web-server/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/opencode-web-server/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/opencode-web-server/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/opencode-web-server/.pi-map.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/opencode-web-server/.pi-map.md index cd8a4d8..8fbf690 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/opencode-web-server/.pi-map.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/opencode-web-server/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-14-completed-specs-archive/opencode-web-server -dir: 2026-06-14-completed-specs-archive/opencode-web-server +# openspec/changes/archive/2026-06-14-completed-specs-archive/opencode-web-server +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/opencode-web-server -index: 2026-06-14-completed-specs-archive/opencode-web-server/.pi-map.index.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/opencode-web-server/.pi-map.index.md ## role -Defines specifications for a web-based terminal server feature that enables remote container access through browser-based tmux and ranger interfaces. +Defines containerized web server specifications for OpenCode's browser-based terminal interface with tmux and ranger integration. ## files -- spec.md | Specifies requirements for OpenCode containers to run a web terminal server on port 3000 with tmux and ranger, exposed through tunnels and UI buttons +- spec.md | Defines requirements for OpenCode containers to run a web server on port 3000 serving a web terminal interface with tmux and ranger support ## arch -Requirements-driven specification document using feature-based organization with functional requirements (port 3000, tmux, ranger), integration patterns (tunnel exposure, UI buttons), and containerized deployment constraints. +Specification-driven architecture using markdown-based requirements document defining container runtime constraints (port 3000), service dependencies (tmux, ranger), and web terminal UI capabilities. ## tags -spec, specifies, requirements, opencode, containers, run, web, terminal +web, spec, defines, requirements, opencode, containers, run, server ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/project-management/.pi-map.index.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/project-management/.pi-map.index.md index 29a1cae..1f7702a 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/project-management/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/project-management/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-14-completed-specs-archive/project-management (index) -dir: 2026-06-14-completed-specs-archive/project-management +# openspec/changes/archive/2026-06-14-completed-specs-archive/project-management (index) +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/project-management ## role -Defines requirements for a project management system that groups repositories with ownership, access control, and SSH key management. +Defines archived specification requirements for a project management system with repository grouping, ownership, and SSH key management. ## parent -index: 2026-06-14-completed-specs-archive/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-14-completed-specs-archive/project-management/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/project-management/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/project-management/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/project-management/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/project-management/.pi-map.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/project-management/.pi-map.md index 004b639..f5630a2 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/project-management/.pi-map.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/project-management/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-14-completed-specs-archive/project-management -dir: 2026-06-14-completed-specs-archive/project-management +# openspec/changes/archive/2026-06-14-completed-specs-archive/project-management +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/project-management -index: 2026-06-14-completed-specs-archive/project-management/.pi-map.index.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/project-management/.pi-map.index.md ## role -Defines requirements for a project management system that groups repositories with ownership, access control, and SSH key management. +Defines archived specification requirements for a project management system with repository grouping, ownership, and SSH key management. ## files -- spec.md | Defines requirements for a project management system that groups repositories with ownership, access control, and SSH key management. | dep: Project, User, GitRepository, SSHKey, git-repo, ssh-keys +- spec.md | Defines requirements for a project management system that groups repositories with ownership, CRUD operations, and SSH key management. | dep: Database models (Project, User, GitRepository, SSHKey), git-repo, ssh-keys ## arch -Specification-driven requirements document using Markdown format to define functional and non-functional requirements for a repository grouping and access control system. +Specification document using Markdown-based requirements definition with no active code architecture. ## tags -project, management, ssh, spec, defines, requirements, system, groups +management, ssh, spec, defines, requirements, project, system, groups ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/readiness-probe-integration/.pi-map.index.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/readiness-probe-integration/.pi-map.index.md index 08c6724..beb54cf 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/readiness-probe-integration/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/readiness-probe-integration/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-14-completed-specs-archive/readiness-probe-integration (index) -dir: 2026-06-14-completed-specs-archive/readiness-probe-integration +# openspec/changes/archive/2026-06-14-completed-specs-archive/readiness-probe-integration (index) +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/readiness-probe-integration ## role -Defines specifications for container readiness probe integration during instance startup to determine when services are ready to receive traffic. +Defines the specification for integrating container readiness probes to determine instance startup completion and health status. ## parent -index: 2026-06-14-completed-specs-archive/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-14-completed-specs-archive/readiness-probe-integration/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/readiness-probe-integration/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/readiness-probe-integration/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/readiness-probe-integration/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/readiness-probe-integration/.pi-map.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/readiness-probe-integration/.pi-map.md index 8ebd258..59d417d 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/readiness-probe-integration/.pi-map.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/readiness-probe-integration/.pi-map.md @@ -1,14 +1,14 @@ -# 2026-06-14-completed-specs-archive/readiness-probe-integration -dir: 2026-06-14-completed-specs-archive/readiness-probe-integration +# openspec/changes/archive/2026-06-14-completed-specs-archive/readiness-probe-integration +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/readiness-probe-integration -index: 2026-06-14-completed-specs-archive/readiness-probe-integration/.pi-map.index.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/readiness-probe-integration/.pi-map.index.md ## role -Defines specifications for container readiness probe integration during instance startup to determine when services are ready to receive traffic. +Defines the specification for integrating container readiness probes to determine instance startup completion and health status. ## files -- spec.md | Defines requirements for container readiness probe configuration, execution, and result storage during instance startup | dep: docker, container orchestration, health endpoint, logging system +- spec.md | Defines requirements for container readiness probe configuration, execution, and result storage during instance startup | dep: docker, containers, health endpoint, logging system ## arch -Specification-driven documentation pattern with requirements organized around configuration, execution, and storage concerns. +Specification-driven requirements document using structured markdown with sections for overview, requirements, and implementation details. ## tags spec, defines, requirements, container, readiness, probe, configuration, execution ## symbols diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/repo-clone-mode/.pi-map.index.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/repo-clone-mode/.pi-map.index.md index 2972352..07dc4af 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/repo-clone-mode/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/repo-clone-mode/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-14-completed-specs-archive/repo-clone-mode (index) -dir: 2026-06-14-completed-specs-archive/repo-clone-mode +# openspec/changes/archive/2026-06-14-completed-specs-archive/repo-clone-mode (index) +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/repo-clone-mode ## role -Defines host-side git repository cloning requirements with SSH key preparation and dirty state detection for containerized tool instances. +Defines requirements for cloning git repositories into host environments with SSH setup and dirty-state detection for containerized tooling workflows. ## parent -index: 2026-06-14-completed-specs-archive/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-14-completed-specs-archive/repo-clone-mode/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/repo-clone-mode/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/repo-clone-mode/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/repo-clone-mode/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/repo-clone-mode/.pi-map.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/repo-clone-mode/.pi-map.md index 9af14cf..5c977bd 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/repo-clone-mode/.pi-map.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/repo-clone-mode/.pi-map.md @@ -1,14 +1,14 @@ -# 2026-06-14-completed-specs-archive/repo-clone-mode -dir: 2026-06-14-completed-specs-archive/repo-clone-mode +# openspec/changes/archive/2026-06-14-completed-specs-archive/repo-clone-mode +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/repo-clone-mode -index: 2026-06-14-completed-specs-archive/repo-clone-mode/.pi-map.index.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/repo-clone-mode/.pi-map.index.md ## role -Defines host-side git repository cloning requirements with SSH key preparation and dirty state detection for containerized tool instances. +Defines requirements for cloning git repositories into host environments with SSH setup and dirty-state detection for containerized tooling workflows. ## files -- spec.md | Specifies requirements for host-side git repository cloning with SSH key preparation and dirty state detection for containerized tool instances. | dep: GitRepository, ToolInstance, SSHKey, Docker Compose, Git, pytest, mypy, ruff, npm +- spec.md | Specifies requirements for host-side git repository cloning with SSH key preparation and dirty state detection for containerized tool instances | dep: GitRepository, ToolInstance, SSHKey, Docker Compose, Git ## arch -Specification-driven architecture using markdown-based requirements document with clear functional boundaries for host/container interaction patterns. +Specification-driven design with clear separation of concerns between SSH key preparation, repository state detection, and clone operation orchestration. ## tags git, spec, specifies, requirements, host, side, repository, cloning ## symbols diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/session-lifecycle-ux/.pi-map.index.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/session-lifecycle-ux/.pi-map.index.md index 0d885c6..8e97968 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/session-lifecycle-ux/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/session-lifecycle-ux/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-14-completed-specs-archive/session-lifecycle-ux (index) -dir: 2026-06-14-completed-specs-archive/session-lifecycle-ux +# openspec/changes/archive/2026-06-14-completed-specs-archive/session-lifecycle-ux (index) +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/session-lifecycle-ux ## role -Defines UI/UX requirements for session lifecycle management including confirmation flows and real-time deletion feedback. +Archives a completed specification for session lifecycle UI behaviors including stop confirmation and immediate delete feedback. ## parent -index: 2026-06-14-completed-specs-archive/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-14-completed-specs-archive/session-lifecycle-ux/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/session-lifecycle-ux/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/session-lifecycle-ux/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/session-lifecycle-ux/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/session-lifecycle-ux/.pi-map.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/session-lifecycle-ux/.pi-map.md index 608231e..b02f43c 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/session-lifecycle-ux/.pi-map.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/session-lifecycle-ux/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-14-completed-specs-archive/session-lifecycle-ux -dir: 2026-06-14-completed-specs-archive/session-lifecycle-ux +# openspec/changes/archive/2026-06-14-completed-specs-archive/session-lifecycle-ux +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/session-lifecycle-ux -index: 2026-06-14-completed-specs-archive/session-lifecycle-ux/.pi-map.index.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/session-lifecycle-ux/.pi-map.index.md ## role -Defines UI/UX requirements for session lifecycle management including confirmation flows and real-time deletion feedback. +Archives a completed specification for session lifecycle UI behaviors including stop confirmation and immediate delete feedback. ## files -- spec.md | Defines software requirements for session management UI behaviors including stop confirmation dialogs and immediate deletion updates +- spec.md | Defines software requirements and user scenarios for session management UI behaviors including stop confirmation and immediate delete feedback. ## arch -Specification-driven design using requirements documentation with behavioral definitions for user-facing state transitions. +Document-based specification archive with dated snapshot organization for versioned requirements tracking. ## tags -spec, defines, software, requirements, session, management, behaviors, including +spec, defines, software, requirements, user, scenarios, session, management ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/sessions-hub/.pi-map.index.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/sessions-hub/.pi-map.index.md index 4adb9a8..b8c3825 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/sessions-hub/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/sessions-hub/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-14-completed-specs-archive/sessions-hub (index) -dir: 2026-06-14-completed-specs-archive/sessions-hub +# openspec/changes/archive/2026-06-14-completed-specs-archive/sessions-hub (index) +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/sessions-hub ## role -Defines technical specifications for a "Sessions Hub" feature that manages user sessions in a web application. +Archive of a completed specification for a Sessions Hub feature that provides centralized management of active development sessions with real-time status indicators and quick access capabilities. ## parent -index: 2026-06-14-completed-specs-archive/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-14-completed-specs-archive/sessions-hub/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/sessions-hub/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/sessions-hub/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/sessions-hub/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/sessions-hub/.pi-map.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/sessions-hub/.pi-map.md index 2624a15..b0586f9 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/sessions-hub/.pi-map.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/sessions-hub/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-14-completed-specs-archive/sessions-hub -dir: 2026-06-14-completed-specs-archive/sessions-hub +# openspec/changes/archive/2026-06-14-completed-specs-archive/sessions-hub +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/sessions-hub -index: 2026-06-14-completed-specs-archive/sessions-hub/.pi-map.index.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/sessions-hub/.pi-map.index.md ## role -Defines technical specifications for a "Sessions Hub" feature that manages user sessions in a web application. +Archive of a completed specification for a Sessions Hub feature that provides centralized management of active development sessions with real-time status indicators and quick access capabilities. ## files -- spec.md | Defines technical specifications for a "Sessions Hub" feature including requirements, API endpoints, UI layouts, state management, and quality gates for managing user sessions in a web application. | dep: REST API, TypeScript, React/frontend framework (implied by UI specs and quality gates), polling-based state management, Pydantic/BaseModel +- spec.md | Specification document for a "Sessions Hub" feature that adds a new navigation tab for managing running development sessions with real-time badge counts, quick creation, and persistence of last accessed session | dep: Users API, Projects API, Repositories API, Instances API, Tool Types API, User Config API, Sessions Context (existing polling system) ## arch -Specification-driven architecture using requirements documentation, API endpoint definitions, UI layout diagrams, state management patterns, and quality gate checklists. +Specification-driven feature design using markdown-based documentation with requirements for real-time UI updates (badge counts), persistent user state (last accessed session), and streamlined workflow integration (quick creation from navigation). ## tags -sessions, spec, defines, technical, specifications, hub, feature, including +sessions, spec, specification, document, hub, feature, adds, new ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/smart-tunnel-recovery/.pi-map.index.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/smart-tunnel-recovery/.pi-map.index.md index aa254ff..be6cc20 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/smart-tunnel-recovery/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/smart-tunnel-recovery/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-14-completed-specs-archive/smart-tunnel-recovery (index) -dir: 2026-06-14-completed-specs-archive/smart-tunnel-recovery +# openspec/changes/archive/2026-06-14-completed-specs-archive/smart-tunnel-recovery (index) +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/smart-tunnel-recovery ## role -Defines classification logic and recovery behavior for distinguishing infrastructure tunnel failures from application-level errors in health monitoring. +Defines health-check classification rules to distinguish tunnel failures from application errors for automated tunnel recovery decisions. ## parent -index: 2026-06-14-completed-specs-archive/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-14-completed-specs-archive/smart-tunnel-recovery/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/smart-tunnel-recovery/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/smart-tunnel-recovery/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/smart-tunnel-recovery/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/smart-tunnel-recovery/.pi-map.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/smart-tunnel-recovery/.pi-map.md index dfbe93c..05db947 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/smart-tunnel-recovery/.pi-map.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/smart-tunnel-recovery/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-14-completed-specs-archive/smart-tunnel-recovery -dir: 2026-06-14-completed-specs-archive/smart-tunnel-recovery +# openspec/changes/archive/2026-06-14-completed-specs-archive/smart-tunnel-recovery +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/smart-tunnel-recovery -index: 2026-06-14-completed-specs-archive/smart-tunnel-recovery/.pi-map.index.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/smart-tunnel-recovery/.pi-map.index.md ## role -Defines classification logic and recovery behavior for distinguishing infrastructure tunnel failures from application-level errors in health monitoring. +Defines health-check classification rules to distinguish tunnel failures from application errors for automated tunnel recovery decisions. ## files -- spec.md | Specifies requirements for classifying tunnel failures versus application errors in a health check system with different UI behaviors and recovery actions. +- spec.md | Specifies requirements for classifying tunnel failures versus application errors in a health check system to determine when tunnel recreation is appropriate | dep: cloudflared, health check system, frontend UI ## arch -Specification-driven requirements document with decision-tree logic mapping error classifications to distinct UI states and automated recovery actions. +Specification-driven requirements document using structured markdown with clear categorization of failure modes and decision criteria. ## tags -spec, specifies, requirements, classifying, tunnel, failures, versus, application +tunnel, spec, specifies, requirements, classifying, failures, versus, application ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/ssh-keys/.pi-map.index.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/ssh-keys/.pi-map.index.md index 35688c3..d24df0e 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/ssh-keys/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/ssh-keys/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-14-completed-specs-archive/ssh-keys (index) -dir: 2026-06-14-completed-specs-archive/ssh-keys +# openspec/changes/archive/2026-06-14-completed-specs-archive/ssh-keys (index) +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/ssh-keys ## role -Defines security specifications for SSH key generation and access control for git operations. +Defines the specification for SSH key lifecycle management to enable secure Git authentication with external providers. ## parent -index: 2026-06-14-completed-specs-archive/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-14-completed-specs-archive/ssh-keys/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/ssh-keys/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/ssh-keys/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/ssh-keys/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/ssh-keys/.pi-map.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/ssh-keys/.pi-map.md index e5cd11d..e59b9d5 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/ssh-keys/.pi-map.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/ssh-keys/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-14-completed-specs-archive/ssh-keys -dir: 2026-06-14-completed-specs-archive/ssh-keys +# openspec/changes/archive/2026-06-14-completed-specs-archive/ssh-keys +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/ssh-keys -index: 2026-06-14-completed-specs-archive/ssh-keys/.pi-map.index.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/ssh-keys/.pi-map.index.md ## role -Defines security specifications for SSH key generation and access control for git operations. +Defines the specification for SSH key lifecycle management to enable secure Git authentication with external providers. ## files -- spec.md | Specifies requirements for generating, managing, and securing Ed25519 SSH keys for git operations with project-scoped access control. | dep: SSHKey, User, Project, cryptography, pytest, mypy, ruff, npm +- spec.md | Specifies requirements for generating, managing, and associating Ed25519 SSH keys for git operations with external providers. | dep: Database models (SSHKey, User, Project), cryptography library, pytest, mypy, ruff, npm typecheck/lint ## arch -Security specification document establishing Ed25519 cryptographic standards with project-scoped access control patterns. +Requirements specification document using structured markdown with functional requirements, constraints, and operational procedures. ## tags -project, spec, specifies, requirements, generating, managing, securing, ed25519 +spec, specifies, requirements, generating, managing, associating, ed25519, ssh ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-config-management/.pi-map.index.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-config-management/.pi-map.index.md index a221c1a..bd586e0 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-config-management/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-config-management/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-14-completed-specs-archive/tool-config-management (index) -dir: 2026-06-14-completed-specs-archive/tool-config-management +# openspec/changes/archive/2026-06-14-completed-specs-archive/tool-config-management (index) +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-config-management ## role -Defines requirements for a tool configuration management system with runtime fields, split-pane UI, JSON editors, and validation. +Defines requirements for a tool configuration management system with runtime-editable fields, split-pane UI, and JSON editing capabilities. ## parent -index: 2026-06-14-completed-specs-archive/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-14-completed-specs-archive/tool-config-management/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/tool-config-management/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-config-management/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-config-management/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-config-management/.pi-map.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-config-management/.pi-map.md index 4fcf78c..e41053e 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-config-management/.pi-map.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-config-management/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-14-completed-specs-archive/tool-config-management -dir: 2026-06-14-completed-specs-archive/tool-config-management +# openspec/changes/archive/2026-06-14-completed-specs-archive/tool-config-management +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-config-management -index: 2026-06-14-completed-specs-archive/tool-config-management/.pi-map.index.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-config-management/.pi-map.index.md ## role -Defines requirements for a tool configuration management system with runtime fields, split-pane UI, JSON editors, and validation. +Defines requirements for a tool configuration management system with runtime-editable fields, split-pane UI, and JSON editing capabilities. ## files -- spec.md | Defines requirements for a tool configuration system with runtime fields, split-pane UI, JSON editors, and validation +- spec.md | Specifies requirements for a tool configuration management system with runtime fields, split-pane UI, JSON editors, and validation ## arch -Specification-driven architecture with split-pane UI pattern, JSON-based configuration with schema validation, and runtime field computation. +Specification-driven architecture with clear separation between UI presentation layer (split-pane layout, JSON editors) and validation layer, emphasizing runtime configuration mutability and user-friendly field editing patterns. ## tags -spec, defines, requirements, tool, configuration, system, runtime, fields +spec, specifies, requirements, tool, configuration, management, system, runtime ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-instances/.pi-map.index.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-instances/.pi-map.index.md index 0cff76b..c79a3a4 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-instances/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-instances/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-14-completed-specs-archive/tool-instances (index) -dir: 2026-06-14-completed-specs-archive/tool-instances +# openspec/changes/archive/2026-06-14-completed-specs-archive/tool-instances (index) +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-instances ## role -Defines requirements for a tool instance management system handling lifecycle, networking, and operational state of deployed tool environments. +Defines technical requirements for a tool instance management system that handles container lifecycle, health monitoring, and git-based workspace provisioning. ## parent -index: 2026-06-14-completed-specs-archive/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-14-completed-specs-archive/tool-instances/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/tool-instances/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-instances/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-instances/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-instances/.pi-map.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-instances/.pi-map.md index ba6e843..598e310 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-instances/.pi-map.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-instances/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-14-completed-specs-archive/tool-instances -dir: 2026-06-14-completed-specs-archive/tool-instances +# openspec/changes/archive/2026-06-14-completed-specs-archive/tool-instances +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-instances -index: 2026-06-14-completed-specs-archive/tool-instances/.pi-map.index.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-instances/.pi-map.index.md ## role -Defines requirements for a tool instance management system handling lifecycle, networking, and operational state of deployed tool environments. +Defines technical requirements for a tool instance management system that handles container lifecycle, health monitoring, and git-based workspace provisioning. ## files -- spec.md | Define modified and added requirements for a tool instance management system including status monitoring, health checks, tunnel management, clone mode operations, and SSH key handling +- spec.md | Technical specification document defining requirements for a tool instance management system with container status tracking, health monitoring, tunnel management, and git clone/mount modes. | dep: Docker containers, HTTP API endpoints, SSH keys, git operations, tunneling service, compose files ## arch -Specification-driven requirements document using structured markdown with sections for functional requirements, status definitions, health check protocols, tunnel/clone/SSH subsystems, and explicit "do not implement" exclusions. +Specification-driven architecture with four core subsystems (container status tracking, health monitoring, tunnel management, git clone/mount modes) designed for infrastructure-as-code deployment patterns. ## tags -management, spec, define, modified, added, requirements, tool, instance +management, spec, technical, specification, document, defining, requirements, tool ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-port-configuration/.pi-map.index.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-port-configuration/.pi-map.index.md index 71fc66d..346b478 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-port-configuration/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-port-configuration/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-14-completed-specs-archive/tool-port-configuration (index) -dir: 2026-06-14-completed-specs-archive/tool-port-configuration +# openspec/changes/archive/2026-06-14-completed-specs-archive/tool-port-configuration (index) +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-port-configuration ## role -Defines specifications for validating tool port configurations, including default ports, Docker Compose template exposure, and multi-interface support. +Defines requirements for a tool type system with port configuration, validation, and multi-interface support for containerized deployments. ## parent -index: 2026-06-14-completed-specs-archive/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-14-completed-specs-archive/tool-port-configuration/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/tool-port-configuration/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-port-configuration/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-port-configuration/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-port-configuration/.pi-map.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-port-configuration/.pi-map.md index 4addad1..4349199 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-port-configuration/.pi-map.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-port-configuration/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-14-completed-specs-archive/tool-port-configuration -dir: 2026-06-14-completed-specs-archive/tool-port-configuration +# openspec/changes/archive/2026-06-14-completed-specs-archive/tool-port-configuration +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-port-configuration -index: 2026-06-14-completed-specs-archive/tool-port-configuration/.pi-map.index.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-port-configuration/.pi-map.index.md ## role -Defines specifications for validating tool port configurations, including default ports, Docker Compose template exposure, and multi-interface support. +Defines requirements for a tool type system with port configuration, validation, and multi-interface support for containerized deployments. ## files -- spec.md | Defines requirements for tool type validation including default ports, compose template port exposure, and multiple interface support +- spec.md | Defines requirements for a tool type system including default port validation, compose template port exposure, and multiple interface support ## arch -Specification-driven requirements documentation with structured constraints for port validation rules and template-based configuration patterns. +Specification-driven architecture using markdown-based requirements documents with structured sections for overview, requirements, and port configuration rules. ## tags -spec, defines, requirements, tool, type, validation, including, default +port, spec, defines, requirements, tool, type, system, including ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-terminal-startup-command/.pi-map.index.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-terminal-startup-command/.pi-map.index.md index 3650af2..752f16e 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-terminal-startup-command/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-terminal-startup-command/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-14-completed-specs-archive/tool-terminal-startup-command (index) -dir: 2026-06-14-completed-specs-archive/tool-terminal-startup-command +# openspec/changes/archive/2026-06-14-completed-specs-archive/tool-terminal-startup-command (index) +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-terminal-startup-command ## role -Defines requirements for a pre-execution command feature in terminal tool sessions that runs before the interactive shell starts. +Defines requirements for a terminal tool feature that runs a startup command before interactive shell sessions begin. ## parent -index: 2026-06-14-completed-specs-archive/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-14-completed-specs-archive/tool-terminal-startup-command/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/tool-terminal-startup-command/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-terminal-startup-command/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-terminal-startup-command/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-terminal-startup-command/.pi-map.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-terminal-startup-command/.pi-map.md index 4078f29..15badbe 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-terminal-startup-command/.pi-map.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-terminal-startup-command/.pi-map.md @@ -1,14 +1,14 @@ -# 2026-06-14-completed-specs-archive/tool-terminal-startup-command -dir: 2026-06-14-completed-specs-archive/tool-terminal-startup-command +# openspec/changes/archive/2026-06-14-completed-specs-archive/tool-terminal-startup-command +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-terminal-startup-command -index: 2026-06-14-completed-specs-archive/tool-terminal-startup-command/.pi-map.index.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-terminal-startup-command/.pi-map.index.md ## role -Defines requirements for a pre-execution command feature in terminal tool sessions that runs before the interactive shell starts. +Defines requirements for a terminal tool feature that runs a startup command before interactive shell sessions begin. ## files -- spec.md | Specifies requirements for adding an optional `startup_command` field to terminal tool types that executes before the interactive shell in new terminal sessions. | dep: tool-types-definition, tool-terminal +- spec.md | Specifies requirements for adding an optional `startup_command` field to terminal tool types that executes before the interactive shell in new terminal sessions | dep: tool-types-definition, tool-terminal ## arch -Specification document using requirement-driven design with field-based configuration pattern for tool type extensions. +Specification-driven design using a single markdown document to capture functional requirements for a configuration field extension to terminal tool types. ## tags terminal, tool, types, spec, specifies, requirements, adding, optional ## symbols diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-terminal/.pi-map.index.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-terminal/.pi-map.index.md index 187e7e9..c6a75e6 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-terminal/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-terminal/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-14-completed-specs-archive/tool-terminal (index) -dir: 2026-06-14-completed-specs-archive/tool-terminal +# openspec/changes/archive/2026-06-14-completed-specs-archive/tool-terminal (index) +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-terminal ## role -Defines requirements for a browser-based WebSocket terminal interface that enables secure, session-managed access to running Docker containers with bidirectional I/O streaming. +Defines requirements for a browser-based WebSocket terminal system providing shell access to running Docker containers with session management, I/O streaming, and access control. ## parent -index: 2026-06-14-completed-specs-archive/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-14-completed-specs-archive/tool-terminal/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/tool-terminal/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-terminal/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-terminal/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-terminal/.pi-map.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-terminal/.pi-map.md index ca4479c..f0e87e3 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-terminal/.pi-map.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-terminal/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-14-completed-specs-archive/tool-terminal -dir: 2026-06-14-completed-specs-archive/tool-terminal +# openspec/changes/archive/2026-06-14-completed-specs-archive/tool-terminal +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-terminal -index: 2026-06-14-completed-specs-archive/tool-terminal/.pi-map.index.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-terminal/.pi-map.index.md ## role -Defines requirements for a browser-based WebSocket terminal interface that enables secure, session-managed access to running Docker containers with bidirectional I/O streaming. +Defines requirements for a browser-based WebSocket terminal system providing shell access to running Docker containers with session management, I/O streaming, and access control. ## files -- spec.md | Specifies requirements for a browser-based WebSocket terminal system for accessing running Docker containers with session management, I/O streaming, and access control. | dep: tool-instances, auth-oauth, xterm.js, ptyprocess +- spec.md | Specifies requirements for a browser-based WebSocket terminal system that provides shell access to running Docker containers with session management, I/O streaming, and access control. | dep: tool-instances, auth-oauth, xterm.js, ptyprocess ## arch -Event-driven WebSocket architecture with session-based multiplexing, container-attach abstraction layer, and token-based access control for real-time bidirectional streaming between browser clients and Docker container TTY/stdout/stderr interfaces. +Specification-driven architecture using markdown-based requirements document defining a real-time bidirectional communication system with WebSocket protocol, session state management, and containerized runtime integration. ## tags -spec, specifies, requirements, browser, websocket, terminal, system, accessing +access, spec, specifies, requirements, browser, websocket, terminal, system ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-type-port-visibility/.pi-map.index.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-type-port-visibility/.pi-map.index.md index 6a82be5..3b4e511 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-type-port-visibility/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-type-port-visibility/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-14-completed-specs-archive/tool-type-port-visibility (index) -dir: 2026-06-14-completed-specs-archive/tool-type-port-visibility +# openspec/changes/archive/2026-06-14-completed-specs-archive/tool-type-port-visibility (index) +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-type-port-visibility ## role -Defines requirements for conditionally showing/hiding port configuration fields and validating port values based on whether a tool type requires network port access. +Defines requirements for dynamically showing/hiding port configuration fields based on tool type requirements. ## parent -index: 2026-06-14-completed-specs-archive/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-14-completed-specs-archive/tool-type-port-visibility/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/tool-type-port-visibility/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-type-port-visibility/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-type-port-visibility/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-type-port-visibility/.pi-map.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-type-port-visibility/.pi-map.md index b54eede..35c1e68 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-type-port-visibility/.pi-map.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-type-port-visibility/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-14-completed-specs-archive/tool-type-port-visibility -dir: 2026-06-14-completed-specs-archive/tool-type-port-visibility +# openspec/changes/archive/2026-06-14-completed-specs-archive/tool-type-port-visibility +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-type-port-visibility -index: 2026-06-14-completed-specs-archive/tool-type-port-visibility/.pi-map.index.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-type-port-visibility/.pi-map.index.md ## role -Defines requirements for conditionally showing/hiding port configuration fields and validating port values based on whether a tool type requires network port access. +Defines requirements for dynamically showing/hiding port configuration fields based on tool type requirements. ## files -- spec.md | Defines requirements for conditional port configuration visibility and validation based on a tool type's `requires_port` flag +- spec.md | Specifies requirements for conditional port configuration visibility and validation based on a `requires_port` flag for different tool types in a system with UI and API components. ## arch -Specification-driven validation pattern using boolean flag (`requires_port`) to control dynamic UI field visibility and conditional form validation rules. +Specification-driven validation with conditional UI/API field visibility toggled by a boolean flag per tool type. ## tags -port, spec, defines, requirements, conditional, configuration, visibility, validation +port, spec, specifies, requirements, conditional, configuration, visibility, validation ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-type-single-interface/.pi-map.index.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-type-single-interface/.pi-map.index.md index 5766389..30a2361 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-type-single-interface/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-type-single-interface/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-14-completed-specs-archive/tool-type-single-interface (index) -dir: 2026-06-14-completed-specs-archive/tool-type-single-interface +# openspec/changes/archive/2026-06-14-completed-specs-archive/tool-type-single-interface (index) +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-type-single-interface ## role -Defines specifications for a tool type system that enforces single interface constraints, validates allowed values, and handles legacy data migration. +Defines requirements for standardizing tool type interfaces to a single interface pattern with validation and legacy data migration. ## parent -index: 2026-06-14-completed-specs-archive/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-14-completed-specs-archive/tool-type-single-interface/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/tool-type-single-interface/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-type-single-interface/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-type-single-interface/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-type-single-interface/.pi-map.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-type-single-interface/.pi-map.md index 7d3a339..6652fd1 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-type-single-interface/.pi-map.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-type-single-interface/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-14-completed-specs-archive/tool-type-single-interface -dir: 2026-06-14-completed-specs-archive/tool-type-single-interface +# openspec/changes/archive/2026-06-14-completed-specs-archive/tool-type-single-interface +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-type-single-interface -index: 2026-06-14-completed-specs-archive/tool-type-single-interface/.pi-map.index.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-type-single-interface/.pi-map.index.md ## role -Defines specifications for a tool type system that enforces single interface constraints, validates allowed values, and handles legacy data migration. +Defines requirements for standardizing tool type interfaces to a single interface pattern with validation and legacy data migration. ## files -- spec.md | Defines requirements for enforcing single interface types, validating allowed values, and migrating legacy data for a tool type system +- spec.md | Specification document defining requirements for enforcing single interface types, validating allowed values, and migrating legacy data in a tool type system ## arch -Requirements specification document using a constraint-based validation pattern with explicit migration rules for backward compatibility. +Specification-driven architecture using markdown-based requirements documentation with explicit validation rules, allowed value constraints, and phased migration strategy for backward compatibility. ## tags -spec, defines, requirements, enforcing, single, interface, types, validating +spec, specification, document, defining, requirements, enforcing, single, interface ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-types-definition/.pi-map.index.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-types-definition/.pi-map.index.md index 9568de8..de8c1b6 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-types-definition/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-types-definition/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-14-completed-specs-archive/tool-types-definition (index) -dir: 2026-06-14-completed-specs-archive/tool-types-definition +# openspec/changes/archive/2026-06-14-completed-specs-archive/tool-types-definition (index) +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-types-definition ## role -Defines specifications for a tool type management system that enables CRUD operations, Docker template validation, and variable substitution for development environments. +Defines software requirements for a Tool Type management system that enables CRUD operations, Docker template validation, and variable substitution for containerized tool definitions. ## parent -index: 2026-06-14-completed-specs-archive/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-14-completed-specs-archive/tool-types-definition/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/tool-types-definition/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-types-definition/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-types-definition/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-types-definition/.pi-map.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-types-definition/.pi-map.md index bad1168..774e369 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-types-definition/.pi-map.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-types-definition/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-14-completed-specs-archive/tool-types-definition -dir: 2026-06-14-completed-specs-archive/tool-types-definition +# openspec/changes/archive/2026-06-14-completed-specs-archive/tool-types-definition +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-types-definition -index: 2026-06-14-completed-specs-archive/tool-types-definition/.pi-map.index.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-types-definition/.pi-map.index.md ## role -Defines specifications for a tool type management system that enables CRUD operations, Docker template validation, and variable substitution for development environments. +Defines software requirements for a Tool Type management system that enables CRUD operations, Docker template validation, and variable substitution for containerized tool definitions. ## files -- spec.md | Defines requirements for a tool type management system with CRUD API, Docker template validation, and variable substitution for development environments. | dep: REST API, Docker Compose, YAML parser, authentication/authorization system, database ORM +- spec.md | Software specification document defining requirements for a Tool Type management system with CRUD API, Docker template validation, and variable substitution | dep: REST API, Docker Compose, YAML parser, UUID, database/ORM, authentication/authorization system ## arch -Specification-driven architecture with requirements documented in a single markdown file, focusing on API design, template validation, and environment configuration patterns. +Specification-driven architecture using markdown-based requirements documentation with RESTful API patterns, Docker containerization templates, and string-templating variable substitution mechanisms. ## tags -spec, defines, requirements, tool, type, management, system, crud +spec, software, specification, document, defining, requirements, tool, type ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-types/.pi-map.index.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-types/.pi-map.index.md index 2c6e937..ffe85ca 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-types/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-types/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-14-completed-specs-archive/tool-types (index) -dir: 2026-06-14-completed-specs-archive/tool-types +# openspec/changes/archive/2026-06-14-completed-specs-archive/tool-types (index) +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-types ## role -Defines requirements for migrating tool type definitions from code to database storage with validation and migration capabilities. +Defines system requirements for migrating tool types to database-backed storage with Docker Compose validation capabilities. ## parent -index: 2026-06-14-completed-specs-archive/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-14-completed-specs-archive/tool-types/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/tool-types/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-types/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-types/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-types/.pi-map.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-types/.pi-map.md index 52089a9..b4f2a0d 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-types/.pi-map.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/tool-types/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-14-completed-specs-archive/tool-types -dir: 2026-06-14-completed-specs-archive/tool-types +# openspec/changes/archive/2026-06-14-completed-specs-archive/tool-types +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-types -index: 2026-06-14-completed-specs-archive/tool-types/.pi-map.index.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/tool-types/.pi-map.index.md ## role -Defines requirements for migrating tool type definitions from code to database storage with validation and migration capabilities. +Defines system requirements for migrating tool types to database-backed storage with Docker Compose validation capabilities. ## files -- spec.md | Defines modified requirements for a tool type management system with database-stored definitions, Docker Compose template validation, and migration of built-in tools to regular records. | dep: database, docker compose validation, migration system +- spec.md | Defines modified system requirements for a tool type management system with database-stored definitions, Docker Compose template validation, and migration of built-in tools to regular records. ## arch -Specification-driven architecture using markdown-based requirements with Docker Compose template validation and database-backed configuration management. +Specification-driven requirements document using markdown-based documentation pattern with no executable code architecture. ## tags -database, spec, defines, modified, requirements, tool, type, management +system, spec, defines, modified, requirements, tool, type, management ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/traefik-deployment/.pi-map.index.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/traefik-deployment/.pi-map.index.md index 777a445..865b8ef 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/traefik-deployment/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/traefik-deployment/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-14-completed-specs-archive/traefik-deployment (index) -dir: 2026-06-14-completed-specs-archive/traefik-deployment +# openspec/changes/archive/2026-06-14-completed-specs-archive/traefik-deployment (index) +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/traefik-deployment ## role -Defines deployment specifications for the Traefik reverse proxy/load balancer using Docker Compose +Defines infrastructure requirements for deploying Traefik reverse proxy via Docker Compose with environment-specific domain routing rules. ## parent -index: 2026-06-14-completed-specs-archive/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-14-completed-specs-archive/traefik-deployment/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/traefik-deployment/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/traefik-deployment/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/traefik-deployment/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/traefik-deployment/.pi-map.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/traefik-deployment/.pi-map.md index faf77fb..768ace4 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/traefik-deployment/.pi-map.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/traefik-deployment/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-14-completed-specs-archive/traefik-deployment -dir: 2026-06-14-completed-specs-archive/traefik-deployment +# openspec/changes/archive/2026-06-14-completed-specs-archive/traefik-deployment +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/traefik-deployment -index: 2026-06-14-completed-specs-archive/traefik-deployment/.pi-map.index.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/traefik-deployment/.pi-map.index.md ## role -Defines deployment specifications for the Traefik reverse proxy/load balancer using Docker Compose +Defines infrastructure requirements for deploying Traefik reverse proxy via Docker Compose with environment-specific domain routing rules. ## files -- spec.md | Specifies requirements for Traefik Docker Compose deployment configuration and environment variable documentation | dep: Traefik, Docker Compose, Authentik, OIDC +- spec.md | Defines requirements for Traefik Docker Compose deployment configuration with environment-based domain routing | dep: Docker Compose, Traefik, Authentik, OIDC ## arch -Infrastructure-as-code pattern with containerized reverse proxy, environment-based configuration, and declarative service specification +Specification-as-code pattern using markdown-based documentation to capture deployment configuration requirements for containerized ingress controller infrastructure. ## tags -traefik, spec, specifies, requirements, docker, compose, deployment, configuration +traefik, spec, defines, requirements, docker, compose, deployment, configuration ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/tunnel-health-monitoring/.pi-map.index.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/tunnel-health-monitoring/.pi-map.index.md index e47d7f7..4deeba9 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/tunnel-health-monitoring/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/tunnel-health-monitoring/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-14-completed-specs-archive/tunnel-health-monitoring (index) -dir: 2026-06-14-completed-specs-archive/tunnel-health-monitoring +# openspec/changes/archive/2026-06-14-completed-specs-archive/tunnel-health-monitoring (index) +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/tunnel-health-monitoring ## role -Defines specifications for automated health monitoring and recovery of cloudflared tunnels to ensure persistent connectivity for running instances. +Defines requirements for monitoring cloudflared tunnel health and automatically recreating broken tunnels ## parent -index: 2026-06-14-completed-specs-archive/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-14-completed-specs-archive/tunnel-health-monitoring/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/tunnel-health-monitoring/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/tunnel-health-monitoring/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/tunnel-health-monitoring/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/tunnel-health-monitoring/.pi-map.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/tunnel-health-monitoring/.pi-map.md index 2ee20c3..f063baf 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/tunnel-health-monitoring/.pi-map.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/tunnel-health-monitoring/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-14-completed-specs-archive/tunnel-health-monitoring -dir: 2026-06-14-completed-specs-archive/tunnel-health-monitoring +# openspec/changes/archive/2026-06-14-completed-specs-archive/tunnel-health-monitoring +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/tunnel-health-monitoring -index: 2026-06-14-completed-specs-archive/tunnel-health-monitoring/.pi-map.index.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/tunnel-health-monitoring/.pi-map.index.md ## role -Defines specifications for automated health monitoring and recovery of cloudflared tunnels to ensure persistent connectivity for running instances. +Defines requirements for monitoring cloudflared tunnel health and automatically recreating broken tunnels ## files -- spec.md | Defines requirements for monitoring and recreating cloudflared tunnels for running instances | dep: cloudflared, HTTP health checks, UI components +- spec.md | Specifies requirements for tunnel health monitoring and broken tunnel recreation functionality in a system using cloudflared tunnels | dep: cloudflared, HTTP, UI ## arch -Requirements-driven specification document using prose-based system design with functional requirements, success criteria, and operational parameters for a tunnel health monitoring subsystem. +Specification-driven requirements document using markdown-based technical specification pattern with functional requirements decomposition ## tags -cloudflared, spec, defines, requirements, monitoring, recreating, tunnels, running +tunnel, cloudflared, spec, specifies, requirements, health, monitoring, broken ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/user-config/.pi-map.index.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/user-config/.pi-map.index.md index 8dc06f6..3ad9922 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/user-config/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/user-config/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-14-completed-specs-archive/user-config (index) -dir: 2026-06-14-completed-specs-archive/user-config +# openspec/changes/archive/2026-06-14-completed-specs-archive/user-config (index) +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/user-config ## role -Defines data specifications for a JSONB-based user preference configuration system with frontend theme integration. +Defines a user configuration system specification for storing user preferences as JSONB key-value pairs with frontend integration ## parent -index: 2026-06-14-completed-specs-archive/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-14-completed-specs-archive/user-config/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/user-config/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/user-config/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/user-config/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/user-config/.pi-map.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/user-config/.pi-map.md index cddcc49..1ecc6e1 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/user-config/.pi-map.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/user-config/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-14-completed-specs-archive/user-config -dir: 2026-06-14-completed-specs-archive/user-config +# openspec/changes/archive/2026-06-14-completed-specs-archive/user-config +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/user-config -index: 2026-06-14-completed-specs-archive/user-config/.pi-map.index.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/user-config/.pi-map.index.md ## role -Defines data specifications for a JSONB-based user preference configuration system with frontend theme integration. +Defines a user configuration system specification for storing user preferences as JSONB key-value pairs with frontend integration ## files -- spec.md | Defines specifications for a user configuration system that stores JSONB key-value preferences, supports specific config keys, and integrates with frontend theme application. | dep: UserConfig, User, auth-oauth, pytest, mypy, ruff, npm +- spec.md | Defines specification for a user configuration system that stores preferences as JSONB key-value pairs with frontend integration | dep: Database models (UserConfig, User), auth-oauth, pytest, mypy, ruff, npm typecheck, npm lint ## arch -Specification-driven schema design using JSONB key-value store with enumerated config keys and frontend theme mapping pattern. +Specification-driven architecture using JSONB flexible schema pattern for key-value storage with frontend-backend contract definition ## tags -user, spec, defines, specifications, configuration, system, stores, jsonb +spec, defines, specification, user, configuration, system, stores, preferences ## symbols - ## workflows diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/user-profile/.pi-map.index.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/user-profile/.pi-map.index.md index 395d4f8..3248e66 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/user-profile/.pi-map.index.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/user-profile/.pi-map.index.md @@ -1,18 +1,18 @@ -# 2026-06-14-completed-specs-archive/user-profile (index) -dir: 2026-06-14-completed-specs-archive/user-profile +# openspec/changes/archive/2026-06-14-completed-specs-archive/user-profile (index) +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/user-profile ## role -Defines functional specifications for user profile retrieval, updates, and local avatar storage. +Defines archived specification requirements for user profile management functionality including data retrieval, updates, and local avatar storage. ## parent -index: 2026-06-14-completed-specs-archive/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/.pi-map.md ## children - ## files - spec.md ## links -index: 2026-06-14-completed-specs-archive/user-profile/.pi-map.index.md -map: 2026-06-14-completed-specs-archive/user-profile/.pi-map.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/user-profile/.pi-map.index.md +map: openspec/changes/archive/2026-06-14-completed-specs-archive/user-profile/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/archive/2026-06-14-completed-specs-archive/user-profile/.pi-map.md b/openspec/changes/archive/2026-06-14-completed-specs-archive/user-profile/.pi-map.md index 603213b..051fb88 100644 --- a/openspec/changes/archive/2026-06-14-completed-specs-archive/user-profile/.pi-map.md +++ b/openspec/changes/archive/2026-06-14-completed-specs-archive/user-profile/.pi-map.md @@ -1,16 +1,16 @@ -# 2026-06-14-completed-specs-archive/user-profile -dir: 2026-06-14-completed-specs-archive/user-profile +# openspec/changes/archive/2026-06-14-completed-specs-archive/user-profile +dir: openspec/changes/archive/2026-06-14-completed-specs-archive/user-profile -index: 2026-06-14-completed-specs-archive/user-profile/.pi-map.index.md +index: openspec/changes/archive/2026-06-14-completed-specs-archive/user-profile/.pi-map.index.md ## role -Defines functional specifications for user profile retrieval, updates, and local avatar storage. +Defines archived specification requirements for user profile management functionality including data retrieval, updates, and local avatar storage. ## files -- spec.md | Defines functional specifications for a user profile management system including profile retrieval, updates, and local avatar storage | dep: auth-oauth, User database model, pytest, mypy, ruff, npm/typecheck, npm/lint +- spec.md | Specifies requirements for user profile management including retrieval, updates, and local avatar storage | dep: auth-oauth, User database model, pytest, mypy, ruff, npm typecheck, npm lint ## arch -Specification-driven design with clear functional requirements documentation. +Specification-driven architecture using markdown-based requirements documentation with dated archival organization for completed feature specifications. ## tags -profile, npm, spec, defines, functional, specifications, user, management +spec, specifies, requirements, user, profile, management, including, retrieval ## symbols - ## workflows diff --git a/openspec/changes/archive/web-ui-spacing-typography-rework/.pi-map.index.md b/openspec/changes/archive/web-ui-spacing-typography-rework/.pi-map.index.md new file mode 100644 index 0000000..9cbe11a --- /dev/null +++ b/openspec/changes/archive/web-ui-spacing-typography-rework/.pi-map.index.md @@ -0,0 +1,26 @@ +# openspec/changes/archive/web-ui-spacing-typography-rework (index) +dir: openspec/changes/archive/web-ui-spacing-typography-rework + +## role +Archive directory containing historical web UI spacing and typography rework changes that were preserved for reference but are no longer active in the project. +## parent +index: openspec/changes/archive/.pi-map.index.md +map: openspec/changes/archive/.pi-map.md +## children +- openspec/changes/archive/web-ui-spacing-typography-rework/proposals + index: openspec/changes/archive/web-ui-spacing-typography-rework/proposals/.pi-map.index.md + map: openspec/changes/archive/web-ui-spacing-typography-rework/proposals/.pi-map.md +- openspec/changes/archive/web-ui-spacing-typography-rework/specs + index: openspec/changes/archive/web-ui-spacing-typography-rework/specs/.pi-map.index.md + map: openspec/changes/archive/web-ui-spacing-typography-rework/specs/.pi-map.md +- openspec/changes/archive/web-ui-spacing-typography-rework/tasks + index: openspec/changes/archive/web-ui-spacing-typography-rework/tasks/.pi-map.index.md + map: openspec/changes/archive/web-ui-spacing-typography-rework/tasks/.pi-map.md +## files +## links +index: openspec/changes/archive/web-ui-spacing-typography-rework/.pi-map.index.md +map: openspec/changes/archive/web-ui-spacing-typography-rework/.pi-map.md +## workflows +- +## dirty +- diff --git a/openspec/changes/archive/web-ui-spacing-typography-rework/.pi-map.md b/openspec/changes/archive/web-ui-spacing-typography-rework/.pi-map.md new file mode 100644 index 0000000..42f8e15 --- /dev/null +++ b/openspec/changes/archive/web-ui-spacing-typography-rework/.pi-map.md @@ -0,0 +1,18 @@ +# openspec/changes/archive/web-ui-spacing-typography-rework +dir: openspec/changes/archive/web-ui-spacing-typography-rework + +index: openspec/changes/archive/web-ui-spacing-typography-rework/.pi-map.index.md + +## role +Archive directory containing historical web UI spacing and typography rework changes that were preserved for reference but are no longer active in the project. +## files +## arch +Flat archive structure with no active code files, serving as a version-controlled snapshot of past design system modifications. +## tags +- +## symbols +- +## workflows +- +## dirty +- diff --git a/openspec/changes/archive/web-ui-spacing-typography-rework/proposals/.pi-map.index.md b/openspec/changes/archive/web-ui-spacing-typography-rework/proposals/.pi-map.index.md new file mode 100644 index 0000000..7d146de --- /dev/null +++ b/openspec/changes/archive/web-ui-spacing-typography-rework/proposals/.pi-map.index.md @@ -0,0 +1,19 @@ +# openspec/changes/archive/web-ui-spacing-typography-rework/proposals (index) +dir: openspec/changes/archive/web-ui-spacing-typography-rework/proposals + +## role +Contains a design proposal for systematically refactoring web UI spacing, typography, and visual rhythm to resolve accumulated CSS technical debt. +## parent +index: openspec/changes/archive/web-ui-spacing-typography-rework/.pi-map.index.md +map: openspec/changes/archive/web-ui-spacing-typography-rework/.pi-map.md +## children +- +## files +- web-ui-spacing-typography-rework.md +## links +index: openspec/changes/archive/web-ui-spacing-typography-rework/proposals/.pi-map.index.md +map: openspec/changes/archive/web-ui-spacing-typography-rework/proposals/.pi-map.md +## workflows +- +## dirty +- diff --git a/openspec/changes/archive/web-ui-spacing-typography-rework/proposals/.pi-map.md b/openspec/changes/archive/web-ui-spacing-typography-rework/proposals/.pi-map.md new file mode 100644 index 0000000..f136470 --- /dev/null +++ b/openspec/changes/archive/web-ui-spacing-typography-rework/proposals/.pi-map.md @@ -0,0 +1,19 @@ +# openspec/changes/archive/web-ui-spacing-typography-rework/proposals +dir: openspec/changes/archive/web-ui-spacing-typography-rework/proposals + +index: openspec/changes/archive/web-ui-spacing-typography-rework/proposals/.pi-map.index.md + +## role +Contains a design proposal for systematically refactoring web UI spacing, typography, and visual rhythm to resolve accumulated CSS technical debt. +## files +- web-ui-spacing-typography-rework.md | A software design document proposing a three-phase rework of web UI spacing, typography, and visual rhythm to fix systemic CSS issues including missing styles, mobile layout collisions, inconsistent tokens, and duplicated patterns. | dep: CSS modules, Tailwind (existing but not replacing), tokens.css, global.css, utilities.css, TSX/JSX components, Scout audit system +## arch +Document-driven proposal pattern using phased rollout (three phases) with problem/solution structure targeting design token standardization and mobile-first responsive fixes. +## tags +css, rework, web, spacing, typography, tokens, ui, software +## symbols +- +## workflows +- +## dirty +- diff --git a/openspec/changes/archive/web-ui-spacing-typography-rework/specs/.pi-map.index.md b/openspec/changes/archive/web-ui-spacing-typography-rework/specs/.pi-map.index.md new file mode 100644 index 0000000..5ea89b4 --- /dev/null +++ b/openspec/changes/archive/web-ui-spacing-typography-rework/specs/.pi-map.index.md @@ -0,0 +1,21 @@ +# openspec/changes/archive/web-ui-spacing-typography-rework/specs (index) +dir: openspec/changes/archive/web-ui-spacing-typography-rework/specs + +## role +Archive of technical specifications for a phased web UI design system modernization initiative focused on spacing, typography, and component standardization. +## parent +index: openspec/changes/archive/web-ui-spacing-typography-rework/.pi-map.index.md +map: openspec/changes/archive/web-ui-spacing-typography-rework/.pi-map.md +## children +- +## files +- web-ui-spacing-typography-rework-pass2.md +- web-ui-spacing-typography-rework-pass3.md +- web-ui-spacing-typography-rework.md +## links +index: openspec/changes/archive/web-ui-spacing-typography-rework/specs/.pi-map.index.md +map: openspec/changes/archive/web-ui-spacing-typography-rework/specs/.pi-map.md +## workflows +- +## dirty +- diff --git a/openspec/changes/archive/web-ui-spacing-typography-rework/specs/.pi-map.md b/openspec/changes/archive/web-ui-spacing-typography-rework/specs/.pi-map.md new file mode 100644 index 0000000..dff38dd --- /dev/null +++ b/openspec/changes/archive/web-ui-spacing-typography-rework/specs/.pi-map.md @@ -0,0 +1,21 @@ +# openspec/changes/archive/web-ui-spacing-typography-rework/specs +dir: openspec/changes/archive/web-ui-spacing-typography-rework/specs + +index: openspec/changes/archive/web-ui-spacing-typography-rework/specs/.pi-map.index.md + +## role +Archive of technical specifications for a phased web UI design system modernization initiative focused on spacing, typography, and component standardization. +## files +- web-ui-spacing-typography-rework-pass2.md | Technical specification for Pass 2 of a web UI cleanup initiative, detailing the refactoring of inline styles into CSS utility classes, token standardization, and component pattern unification across six target components. | dep: CSS custom properties (variables), React/TSX components, utility-first CSS architecture, OpenSpec proposal system +- web-ui-spacing-typography-rework-pass3.md | Defines Pass 3 of a web UI design system consolidation, unifying modal/dialog components, standardizing card patterns and responsive breakpoints, adding token documentation, and establishing a code review checklist. | dep: CSS, global.css, tokens.css, OpenSpec, apps/web, sdd-apply +- web-ui-spacing-typography-rework.md | Defines CSS token additions and primitive component style specifications for a web UI foundations rework (Pass 1), covering spacing, typography, mobile view fixes, and focus states. | dep: CSS custom properties, env(safe-area-inset-bottom), color-mix(), IBM Plex Mono font +## arch +Document-driven specification architecture using iterative pass-based approach (3 passes) with incremental scope expansion from foundations (tokens/primitives) → component refactoring (utility classes) → pattern unification (modals/cards/responsive) and governance (checklists/docs). +## tags +web, spacing, typography, rework, ui, css, pass, token +## symbols +- +## workflows +- +## dirty +- diff --git a/openspec/changes/archive/web-ui-spacing-typography-rework/tasks/.pi-map.index.md b/openspec/changes/archive/web-ui-spacing-typography-rework/tasks/.pi-map.index.md new file mode 100644 index 0000000..0e3e1b8 --- /dev/null +++ b/openspec/changes/archive/web-ui-spacing-typography-rework/tasks/.pi-map.index.md @@ -0,0 +1,21 @@ +# openspec/changes/archive/web-ui-spacing-typography-rework/tasks (index) +dir: openspec/changes/archive/web-ui-spacing-typography-rework/tasks + +## role +Archive of phased task specifications for a systematic UI standardization effort to replace ad-hoc styling with design system tokens and utility classes. +## parent +index: openspec/changes/archive/web-ui-spacing-typography-rework/.pi-map.index.md +map: openspec/changes/archive/web-ui-spacing-typography-rework/.pi-map.md +## children +- +## files +- web-ui-spacing-typography-rework-pass2.md +- web-ui-spacing-typography-rework-pass3.md +- web-ui-spacing-typography-rework.md +## links +index: openspec/changes/archive/web-ui-spacing-typography-rework/tasks/.pi-map.index.md +map: openspec/changes/archive/web-ui-spacing-typography-rework/tasks/.pi-map.md +## workflows +- +## dirty +- diff --git a/openspec/changes/archive/web-ui-spacing-typography-rework/tasks/.pi-map.md b/openspec/changes/archive/web-ui-spacing-typography-rework/tasks/.pi-map.md new file mode 100644 index 0000000..11041ca --- /dev/null +++ b/openspec/changes/archive/web-ui-spacing-typography-rework/tasks/.pi-map.md @@ -0,0 +1,21 @@ +# openspec/changes/archive/web-ui-spacing-typography-rework/tasks +dir: openspec/changes/archive/web-ui-spacing-typography-rework/tasks + +index: openspec/changes/archive/web-ui-spacing-typography-rework/tasks/.pi-map.index.md + +## role +Archive of phased task specifications for a systematic UI standardization effort to replace ad-hoc styling with design system tokens and utility classes. +## files +- web-ui-spacing-typography-rework-pass2.md | Defines implementation tasks for a second pass of web UI cleanup focused on replacing inline styles with utility classes, standardizing forms, buttons, and badges across React components. | dep: React, CSS utilities, CSS custom properties, TypeScript, npm tooling (typecheck, lint) +- web-ui-spacing-typography-rework-pass3.md | Task specification document for third pass of web UI consolidation, focusing on unifying modals/dialogs, standardizing card patterns, cleaning up breakpoints, and adding documentation. +- web-ui-spacing-typography-rework.md | Specification document defining implementation tasks for a web UI foundations rework focused on spacing, typography, and visual rhythm CSS token/primitive additions. | dep: CSS custom properties, React/TSX components (ConfigProfileListSidebar), npm tooling (typecheck, lint), apps/web/src/styles (tokens.css, global.css, utilities.css) +## arch +Incremental migration pattern organized in passes (foundations → components → patterns) with markdown-based task tracking for cross-functional coordination. +## tags +web, spacing, typography, rework, ui, react, css, implementation +## symbols +- +## workflows +- +## dirty +- diff --git a/openspec/changes/fix-container-status-false-positive/.pi-map.index.md b/openspec/changes/fix-container-status-false-positive/.pi-map.index.md index 884168f..1ffa091 100644 --- a/openspec/changes/fix-container-status-false-positive/.pi-map.index.md +++ b/openspec/changes/fix-container-status-false-positive/.pi-map.index.md @@ -2,7 +2,7 @@ dir: openspec/changes/fix-container-status-false-positive ## role -Documents a bug fix for correcting container status false positives where failed containers incorrectly appeared as running in a dashboard/monitoring system. +Documents a bug fix for correcting false-positive container running status in a monitoring dashboard. ## parent index: openspec/changes/.pi-map.index.md map: openspec/changes/.pi-map.md diff --git a/openspec/changes/fix-container-status-false-positive/.pi-map.md b/openspec/changes/fix-container-status-false-positive/.pi-map.md index 9c740ae..cc0a959 100644 --- a/openspec/changes/fix-container-status-false-positive/.pi-map.md +++ b/openspec/changes/fix-container-status-false-positive/.pi-map.md @@ -4,14 +4,14 @@ dir: openspec/changes/fix-container-status-false-positive index: openspec/changes/fix-container-status-false-positive/.pi-map.index.md ## role -Documents a bug fix for correcting container status false positives where failed containers incorrectly appeared as running in a dashboard/monitoring system. +Documents a bug fix for correcting false-positive container running status in a monitoring dashboard. ## files -- change.md | Documents a bug fix for failed containers incorrectly displaying as running on a dashboard, detailing root cause analysis and the fix implementation across multiple files. -- tasks.md | Track progress of fixing a false-positive running status bug in a container/system management system +- change.md | Documents a bug fix for failed containers being incorrectly displayed as running on the dashboard, including root cause analysis and the fix implementation. +- tasks.md | Tracks bug-fix tasks for resolving a false-positive "running" status in a container/system monitoring application ## arch -Issue-tracking documentation pattern using markdown files (change.md for technical specification, tasks.md for progress tracking) to manage a bug fix across multiple system components. +Simple documentation-only package using markdown files for change tracking and task management without code implementation. ## tags -bug, fix, running, change, system, tasks, documents, failed +fix, tasks, bug, running, change, documents, failed, containers ## symbols - ## workflows diff --git a/openspec/changes/fix-pi-container-mount-permissions/.pi-map.index.md b/openspec/changes/fix-pi-container-mount-permissions/.pi-map.index.md index 36d0748..5821f66 100644 --- a/openspec/changes/fix-pi-container-mount-permissions/.pi-map.index.md +++ b/openspec/changes/fix-pi-container-mount-permissions/.pi-map.index.md @@ -2,7 +2,7 @@ dir: openspec/changes/fix-pi-container-mount-permissions ## role -Documents a bug fix for container filesystem permission issues affecting Pi agent repository mounts and npm operations in containerized development environments. +Contains documentation and task tracking for a bug fix addressing container mount path permissions and npm update access in a pi-agent development environment. ## parent index: openspec/changes/.pi-map.index.md map: openspec/changes/.pi-map.md diff --git a/openspec/changes/fix-pi-container-mount-permissions/.pi-map.md b/openspec/changes/fix-pi-container-mount-permissions/.pi-map.md index 90663da..cd41031 100644 --- a/openspec/changes/fix-pi-container-mount-permissions/.pi-map.md +++ b/openspec/changes/fix-pi-container-mount-permissions/.pi-map.md @@ -4,14 +4,14 @@ dir: openspec/changes/fix-pi-container-mount-permissions index: openspec/changes/fix-pi-container-mount-permissions/.pi-map.index.md ## role -Documents a bug fix for container filesystem permission issues affecting Pi agent repository mounts and npm operations in containerized development environments. +Contains documentation and task tracking for a bug fix addressing container mount path permissions and npm update access in a pi-agent development environment. ## files -- change.md | Documents a bug fix for pi-agent container repository mounting paths and npm update permissions in a containerized development environment. | dep: Alembic, Docker, npm, git, pytest, ruff, mypy -- tasks.md | Task tracking document for fixing Pi container repository mount paths and npm update permission issues in a containerized agent system | dep: Alembic, manifest_compiler.py, instance_service.py, pytest, ruff, mypy +- change.md | Documents a bug fix for pi-agent container repository mount paths and npm update permissions in a containerized development environment. | dep: Alembic, manifest_compiler.py, instance_service.py, workspace_manager.py, pytest, ruff, mypy, npm +- tasks.md | Tracks completed and pending tasks for fixing Pi container repository mount paths and npm update permissions in a software project ## arch -Documentation-only package using markdown-based change tracking (change.md for specifications, tasks.md for execution tracking) without active code artifacts. +Simple markdown-based project management structure using change documentation (change.md) and task tracking (tasks.md) without code implementation. ## tags -npm, agent, container, repository, paths, update, containerized, alembic +npm, py, tasks, container, repository, mount, paths, update ## symbols - ## workflows diff --git a/openspec/changes/fix-terminal-container-overflow/.pi-map.index.md b/openspec/changes/fix-terminal-container-overflow/.pi-map.index.md index 76f1886..c029091 100644 --- a/openspec/changes/fix-terminal-container-overflow/.pi-map.index.md +++ b/openspec/changes/fix-terminal-container-overflow/.pi-map.index.md @@ -1,19 +1,19 @@ -# changes/fix-terminal-container-overflow (index) -dir: changes/fix-terminal-container-overflow +# openspec/changes/fix-terminal-container-overflow (index) +dir: openspec/changes/fix-terminal-container-overflow ## role -CSS bug fix for terminal container overflow issue on desktop viewports +Contains documentation and task tracking for a UI bug fix addressing terminal container overflow in a desktop web application. ## parent -index: changes/.pi-map.index.md -map: changes/.pi-map.md +index: openspec/changes/.pi-map.index.md +map: openspec/changes/.pi-map.md ## children - ## files - change.md - tasks.md ## links -index: changes/fix-terminal-container-overflow/.pi-map.index.md -map: changes/fix-terminal-container-overflow/.pi-map.md +index: openspec/changes/fix-terminal-container-overflow/.pi-map.index.md +map: openspec/changes/fix-terminal-container-overflow/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/fix-terminal-container-overflow/.pi-map.md b/openspec/changes/fix-terminal-container-overflow/.pi-map.md index a6e803d..04805a9 100644 --- a/openspec/changes/fix-terminal-container-overflow/.pi-map.md +++ b/openspec/changes/fix-terminal-container-overflow/.pi-map.md @@ -1,17 +1,17 @@ -# changes/fix-terminal-container-overflow -dir: changes/fix-terminal-container-overflow +# openspec/changes/fix-terminal-container-overflow +dir: openspec/changes/fix-terminal-container-overflow -index: changes/fix-terminal-container-overflow/.pi-map.index.md +index: openspec/changes/fix-terminal-container-overflow/.pi-map.index.md ## role -CSS bug fix for terminal container overflow issue on desktop viewports +Contains documentation and task tracking for a UI bug fix addressing terminal container overflow in a desktop web application. ## files -- change.md | Documents a CSS flexbox bug fix for terminal container overflow on desktop by adding min-height: 0 to prevent intrinsic content expansion | dep: CSS flexbox, xterm.js, apps/web/src/styles/utilities.css -- tasks.md | Tracks completed tasks for fixing a terminal container overflow bug on desktop via CSS adjustments. +- change.md | Documents a CSS flexbox bug fix for terminal container overflow on desktop by adding min-height:0 to prevent nested flex items from expanding beyond their allocated tracks | dep: CSS, xterm.js, flexbox +- tasks.md | A task checklist documenting completed steps to fix terminal container overflow on desktop in a web application. ## arch -Simple documentation-only change package using markdown files to track a single CSS flexbox fix (min-height: 0) with no code implementation files present +Simple documentation-only package using markdown files for change specification and task management without any code implementation. ## tags -css, tasks, bug, terminal, container, overflow, desktop, change +css, flexbox, fix, terminal, container, overflow, desktop, change ## symbols - ## workflows diff --git a/openspec/changes/fix-tmux-mouse-config/.pi-map.index.md b/openspec/changes/fix-tmux-mouse-config/.pi-map.index.md index 95f4e76..31b7cf6 100644 --- a/openspec/changes/fix-tmux-mouse-config/.pi-map.index.md +++ b/openspec/changes/fix-tmux-mouse-config/.pi-map.index.md @@ -1,19 +1,19 @@ -# changes/fix-tmux-mouse-config (index) -dir: changes/fix-tmux-mouse-config +# openspec/changes/fix-tmux-mouse-config (index) +dir: openspec/changes/fix-tmux-mouse-config ## role -Documents a bug fix for tmux mouse configuration in Pi Agent Docker images where single-quoted echo strings prevented newline interpretation. +Documents a bug fix for tmux mouse configuration formatting in Pi Agent Docker images. ## parent -index: changes/.pi-map.index.md -map: changes/.pi-map.md +index: openspec/changes/.pi-map.index.md +map: openspec/changes/.pi-map.md ## children - ## files - change.md - tasks.md ## links -index: changes/fix-tmux-mouse-config/.pi-map.index.md -map: changes/fix-tmux-mouse-config/.pi-map.md +index: openspec/changes/fix-tmux-mouse-config/.pi-map.index.md +map: openspec/changes/fix-tmux-mouse-config/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/fix-tmux-mouse-config/.pi-map.md b/openspec/changes/fix-tmux-mouse-config/.pi-map.md index db07ea9..cea7ba9 100644 --- a/openspec/changes/fix-tmux-mouse-config/.pi-map.md +++ b/openspec/changes/fix-tmux-mouse-config/.pi-map.md @@ -1,17 +1,17 @@ -# changes/fix-tmux-mouse-config -dir: changes/fix-tmux-mouse-config +# openspec/changes/fix-tmux-mouse-config +dir: openspec/changes/fix-tmux-mouse-config -index: changes/fix-tmux-mouse-config/.pi-map.index.md +index: openspec/changes/fix-tmux-mouse-config/.pi-map.index.md ## role -Documents a bug fix for tmux mouse configuration in Pi Agent Docker images where single-quoted echo strings prevented newline interpretation. +Documents a bug fix for tmux mouse configuration formatting in Pi Agent Docker images. ## files -- change.md | Documents a bug fix for tmux mouse mode configuration in Pi Agent Docker images caused by single-quoted echo strings preventing newline interpretation of \n. | dep: tmux, Docker, Python, Alembic, xterm.js -- tasks.md | Track completion of tasks to fix tmux mouse mode configuration by replacing literal `\n` with proper newlines in Pi Agent dockerfiles and migration files. +- change.md | Documents a bug fix for tmux mouse mode configuration in Pi Agent Docker images where single-quoted echo commands prevented newline interpretation, causing malformed `.tmux.conf` files and broken mouse scrolling behavior. +- tasks.md | A task checklist tracking the fix of literal `\n` bugs in tmux configuration file creation across Dockerfiles and database migrations for Pi Agent images. ## arch -Simple documentation-based change tracking using markdown files (change.md for problem description, tasks.md for task checklist) to coordinate a configuration fix across dockerfiles and migration files. +Change documentation package using markdown-based issue tracking with separate problem description and task checklist files. ## tags -tmux, tasks, fix, mouse, mode, configuration, agent, docker +tmux, fix, mouse, configuration, agent, images, change, tasks ## symbols - ## workflows diff --git a/openspec/changes/mobile-config-profiles-ui/.pi-map.index.md b/openspec/changes/mobile-config-profiles-ui/.pi-map.index.md index c224fdb..4fb74a3 100644 --- a/openspec/changes/mobile-config-profiles-ui/.pi-map.index.md +++ b/openspec/changes/mobile-config-profiles-ui/.pi-map.index.md @@ -1,19 +1,19 @@ -# changes/mobile-config-profiles-ui (index) -dir: changes/mobile-config-profiles-ui +# openspec/changes/mobile-config-profiles-ui (index) +dir: openspec/changes/mobile-config-profiles-ui ## role -Product specification and task tracking for a mobile UI rework of configuration profiles to achieve desktop feature parity. +Defines requirements and tracks implementation of a mobile Config Profiles UI redesign to achieve feature parity with the desktop version. ## parent -index: changes/.pi-map.index.md -map: changes/.pi-map.md +index: openspec/changes/.pi-map.index.md +map: openspec/changes/.pi-map.md ## children - ## files - change.md - tasks.md ## links -index: changes/mobile-config-profiles-ui/.pi-map.index.md -map: changes/mobile-config-profiles-ui/.pi-map.md +index: openspec/changes/mobile-config-profiles-ui/.pi-map.index.md +map: openspec/changes/mobile-config-profiles-ui/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/mobile-config-profiles-ui/.pi-map.md b/openspec/changes/mobile-config-profiles-ui/.pi-map.md index 504c242..58d4902 100644 --- a/openspec/changes/mobile-config-profiles-ui/.pi-map.md +++ b/openspec/changes/mobile-config-profiles-ui/.pi-map.md @@ -1,17 +1,17 @@ -# changes/mobile-config-profiles-ui -dir: changes/mobile-config-profiles-ui +# openspec/changes/mobile-config-profiles-ui +dir: openspec/changes/mobile-config-profiles-ui -index: changes/mobile-config-profiles-ui/.pi-map.index.md +index: openspec/changes/mobile-config-profiles-ui/.pi-map.index.md ## role -Product specification and task tracking for a mobile UI rework of configuration profiles to achieve desktop feature parity. +Defines requirements and tracks implementation of a mobile Config Profiles UI redesign to achieve feature parity with the desktop version. ## files -- change.md | This file is a product specification document defining a UI rework task to bring mobile Config Profiles pages to parity with desktop functionality. -- tasks.md | Task checklist tracking the completion of a mobile UI rework for configuration profiles. +- change.md | Defines requirements for redesigning mobile Config Profiles UI to match desktop functionality +- tasks.md | Tracks completed development tasks for reworking a mobile UI configuration profiles feature with full desktop parity. ## arch -Documentation-driven project management with markdown-based specification (change.md) and checklist-based task tracking (tasks.md). +Documentation-driven development with requirement specification (change.md) and task tracking (tasks.md) for a cross-platform UI unification effort. ## tags -rework, task, mobile, profiles, change, tasks, product, specification +tasks, mobile, profiles, desktop, change, defines, requirements, redesigning ## symbols - ## workflows diff --git a/openspec/changes/mobile-edit-default-bottom-actions/.pi-map.index.md b/openspec/changes/mobile-edit-default-bottom-actions/.pi-map.index.md index 0bcc9b0..6c5723a 100644 --- a/openspec/changes/mobile-edit-default-bottom-actions/.pi-map.index.md +++ b/openspec/changes/mobile-edit-default-bottom-actions/.pi-map.index.md @@ -1,19 +1,19 @@ -# changes/mobile-edit-default-bottom-actions (index) -dir: changes/mobile-edit-default-bottom-actions +# openspec/changes/mobile-edit-default-bottom-actions (index) +dir: openspec/changes/mobile-edit-default-bottom-actions ## role -Implements a mobile UX pattern change that makes edit mode the default view with persistent bottom action bars for saving and deleting items. +Documents a mobile UI/UX change request to make edit mode the default view with sticky bottom action bars for config profiles and tool types. ## parent -index: changes/.pi-map.index.md -map: changes/.pi-map.md +index: openspec/changes/.pi-map.index.md +map: openspec/changes/.pi-map.md ## children - ## files - change.md - tasks.md ## links -index: changes/mobile-edit-default-bottom-actions/.pi-map.index.md -map: changes/mobile-edit-default-bottom-actions/.pi-map.md +index: openspec/changes/mobile-edit-default-bottom-actions/.pi-map.index.md +map: openspec/changes/mobile-edit-default-bottom-actions/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/mobile-edit-default-bottom-actions/.pi-map.md b/openspec/changes/mobile-edit-default-bottom-actions/.pi-map.md index 960a328..046aad0 100644 --- a/openspec/changes/mobile-edit-default-bottom-actions/.pi-map.md +++ b/openspec/changes/mobile-edit-default-bottom-actions/.pi-map.md @@ -1,17 +1,17 @@ -# changes/mobile-edit-default-bottom-actions -dir: changes/mobile-edit-default-bottom-actions +# openspec/changes/mobile-edit-default-bottom-actions +dir: openspec/changes/mobile-edit-default-bottom-actions -index: changes/mobile-edit-default-bottom-actions/.pi-map.index.md +index: openspec/changes/mobile-edit-default-bottom-actions/.pi-map.index.md ## role -Implements a mobile UX pattern change that makes edit mode the default view with persistent bottom action bars for saving and deleting items. +Documents a mobile UI/UX change request to make edit mode the default view with sticky bottom action bars for config profiles and tool types. ## files -- change.md | Documents a mobile UX change that makes edit mode the default view for config profiles and tool types, with sticky bottom action bars for Save/Delete buttons. -- tasks.md | Task checklist for implementing mobile edit-as-default UI pattern with sticky bottom action bars across multiple views | dep: MobileEditView, ConfigProfilesMobileView, ToolWorkshopMobileView, CSS modules, npm tooling +- change.md | This file documents a mobile UI/UX change request that makes edit mode the default view for config profiles and tool types, with sticky bottom action bars for Save/Delete buttons. | dep: ConfigProfilesMobileView, ToolWorkshopMobileView, MobileEditView, utilities.css +- tasks.md | Task list tracking implementation of mobile edit-as-default UI with sticky bottom actions across multiple views | dep: MobileEditView, ConfigProfilesMobileView, ToolWorkshopMobileView, CSS modules, npm tooling ## arch -UX pattern migration using sticky bottom action bars as a consistent cross-view mobile UI component for primary actions. +Specification-driven change management using markdown-based documentation (change request + task tracking) without executable code. ## tags -change, mobile, edit, default, sticky, bottom, action, bars +change, mobile, edit, default, sticky, bottom, configprofilesmobileview, toolworkshopmobileview ## symbols - ## workflows diff --git a/openspec/changes/mobile-list-delete-button/.pi-map.index.md b/openspec/changes/mobile-list-delete-button/.pi-map.index.md index 48d9965..d50258c 100644 --- a/openspec/changes/mobile-list-delete-button/.pi-map.index.md +++ b/openspec/changes/mobile-list-delete-button/.pi-map.index.md @@ -1,19 +1,19 @@ -# changes/mobile-list-delete-button (index) -dir: changes/mobile-list-delete-button +# openspec/changes/mobile-list-delete-button (index) +dir: openspec/changes/mobile-list-delete-button ## role -Implements mobile UI fixes to restore missing delete/duplicate buttons in list views and correct sticky action bar positioning above mobile navigation. +Documents UI bug fixes for mobile list view controls and sticky action bar positioning in a mobile web application. ## parent -index: changes/.pi-map.index.md -map: changes/.pi-map.md +index: openspec/changes/.pi-map.index.md +map: openspec/changes/.pi-map.md ## children - ## files - change.md - tasks.md ## links -index: changes/mobile-list-delete-button/.pi-map.index.md -map: changes/mobile-list-delete-button/.pi-map.md +index: openspec/changes/mobile-list-delete-button/.pi-map.index.md +map: openspec/changes/mobile-list-delete-button/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/mobile-list-delete-button/.pi-map.md b/openspec/changes/mobile-list-delete-button/.pi-map.md index 38c35c2..bacde09 100644 --- a/openspec/changes/mobile-list-delete-button/.pi-map.md +++ b/openspec/changes/mobile-list-delete-button/.pi-map.md @@ -1,17 +1,17 @@ -# changes/mobile-list-delete-button -dir: changes/mobile-list-delete-button +# openspec/changes/mobile-list-delete-button +dir: openspec/changes/mobile-list-delete-button -index: changes/mobile-list-delete-button/.pi-map.index.md +index: openspec/changes/mobile-list-delete-button/.pi-map.index.md ## role -Implements mobile UI fixes to restore missing delete/duplicate buttons in list views and correct sticky action bar positioning above mobile navigation. +Documents UI bug fixes for mobile list view controls and sticky action bar positioning in a mobile web application. ## files -- change.md | Documents UI fixes to restore delete/duplicate buttons in mobile list views and reposition a sticky action bar above mobile navigation. | dep: MobileListView, MobileEditView, ToolWorkshopMobileView, ConfigProfilesMobileView, utilities.css -- tasks.md | Task checklist documenting implementation of mobile UI fixes for list view delete/duplicate buttons and edit view sticky action bar positioning. +- change.md | Documents UI bug fixes for restoring delete/duplicate buttons in mobile list views and fixing z-index positioning of the mobile edit view's sticky action bar. | dep: MobileListView, MobileEditView, ToolWorkshopMobileView, ConfigProfilesMobileView, utilities.css +- tasks.md | This file documents a completed set of development tasks to restore delete/duplicate buttons in mobile list views and fix a sticky action bar positioning bug in a mobile web application. | dep: MobileListView, ToolWorkshopMobileView, ConfigProfilesMobileView, MobileEditView, utilities.css, npm ## arch -Documentation-driven change tracking using markdown-based design documents (change.md for requirements, tasks.md for implementation checklist) without actual source code in this directory. +Change-tracking documentation using markdown-based task records (openspec changes format) to capture completed UI/UX fixes without containing actual implementation code. ## tags -mobile, fixes, delete, duplicate, buttons, list, sticky, action +mobile, tasks, documents, bug, delete, duplicate, buttons, list ## symbols - ## workflows diff --git a/openspec/changes/mobile-tool-profile-ui/.pi-map.index.md b/openspec/changes/mobile-tool-profile-ui/.pi-map.index.md index 98e570b..f2e5fc1 100644 --- a/openspec/changes/mobile-tool-profile-ui/.pi-map.index.md +++ b/openspec/changes/mobile-tool-profile-ui/.pi-map.index.md @@ -1,19 +1,19 @@ -# changes/mobile-tool-profile-ui (index) -dir: changes/mobile-tool-profile-ui +# openspec/changes/mobile-tool-profile-ui (index) +dir: openspec/changes/mobile-tool-profile-ui ## role -Mobile UI modernization package for adapting Tool Workshop and Profile pages to responsive/mobile-first design while maintaining desktop compatibility. +Defines and tracks the implementation of responsive mobile UI redesign for Tool Workshop and Profile pages while maintaining desktop compatibility. ## parent -index: changes/.pi-map.index.md -map: changes/.pi-map.md +index: openspec/changes/.pi-map.index.md +map: openspec/changes/.pi-map.md ## children - ## files - change.md - tasks.md ## links -index: changes/mobile-tool-profile-ui/.pi-map.index.md -map: changes/mobile-tool-profile-ui/.pi-map.md +index: openspec/changes/mobile-tool-profile-ui/.pi-map.index.md +map: openspec/changes/mobile-tool-profile-ui/.pi-map.md ## workflows - ## dirty diff --git a/openspec/changes/mobile-tool-profile-ui/.pi-map.md b/openspec/changes/mobile-tool-profile-ui/.pi-map.md index f27c25b..7c1fe60 100644 --- a/openspec/changes/mobile-tool-profile-ui/.pi-map.md +++ b/openspec/changes/mobile-tool-profile-ui/.pi-map.md @@ -1,17 +1,17 @@ -# changes/mobile-tool-profile-ui -dir: changes/mobile-tool-profile-ui +# openspec/changes/mobile-tool-profile-ui +dir: openspec/changes/mobile-tool-profile-ui -index: changes/mobile-tool-profile-ui/.pi-map.index.md +index: openspec/changes/mobile-tool-profile-ui/.pi-map.index.md ## role -Mobile UI modernization package for adapting Tool Workshop and Profile pages to responsive/mobile-first design while maintaining desktop compatibility. +Defines and tracks the implementation of responsive mobile UI redesign for Tool Workshop and Profile pages while maintaining desktop compatibility. ## files -- change.md | Requirements specification for reworking mobile UI of Tool Workshop and Profile pages while preserving desktop functionality -- tasks.md | This file is a completed task checklist documenting the rework of mobile UI components for a tool workshop and profile page in a web application. +- change.md | Defines requirements for reworking mobile UI for Tool Workshop and Profile pages while preserving desktop functionality +- tasks.md | Task checklist tracking completion of mobile UI components for tool workshop and profile pages. ## arch -Requirements-driven incremental migration pattern with task-based completion tracking, separating mobile-specific component rework from preserved desktop functionality through feature-parallel development workflow. +Requirements-driven development with task-based progress tracking, using change documentation for specifications and separate task checklist for implementation status. ## tags -mobile, tool, workshop, profile, change, tasks, requirements, specification +mobile, tool, workshop, profile, pages, change, tasks, defines ## symbols - ## workflows diff --git a/openspec/designs/.pi-map.index.md b/openspec/designs/.pi-map.index.md index 67df3b1..d11cae3 100644 --- a/openspec/designs/.pi-map.index.md +++ b/openspec/designs/.pi-map.index.md @@ -1,11 +1,11 @@ -# designs (index) -dir: designs +# openspec/designs (index) +dir: openspec/designs ## role -Contains architectural design documents specifying features for containerized development environments, mount configurations, and terminal infrastructure. +Contains architectural design documents and ADRs for planned features and improvements across the containerized development environment platform. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/.pi-map.index.md +map: openspec/.pi-map.md ## children - ## files @@ -16,8 +16,8 @@ map: ./.pi-map.md - tool-container-home-directory.md - tool-definition-manifest.md ## links -index: designs/.pi-map.index.md -map: designs/.pi-map.md +index: openspec/designs/.pi-map.index.md +map: openspec/designs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/designs/.pi-map.md b/openspec/designs/.pi-map.md index c6eb578..8ca8c1b 100644 --- a/openspec/designs/.pi-map.md +++ b/openspec/designs/.pi-map.md @@ -1,21 +1,21 @@ -# designs -dir: designs +# openspec/designs +dir: openspec/designs -index: designs/.pi-map.index.md +index: openspec/designs/.pi-map.index.md ## role -Contains architectural design documents specifying features for containerized development environments, mount configurations, and terminal infrastructure. +Contains architectural design documents and ADRs for planned features and improvements across the containerized development environment platform. ## files -- config-profile-multi-repo-mounts.md | Design document for extending git mount configuration to support multiple source-to-target mappings per repository in a config profile system. | dep: JSONB, Python, TypeScript, React, os.path, glob expansion, config profile API, tool instances API -- home-path-expansion.md | Design document for implementing `~` and `$HOME` expansion in container mount paths based on manifest user configuration | dep: config_profile_resolver.py, manifest_compiler.py, tool_instances.py, os -- mount-specificity-ordering.md | Defines a design for sorting Docker volume mounts by target path depth to ensure more specific mounts take precedence, with duplicate detection warnings. | dep: docker.py, manifest_compiler.py, tool_instances.py, collections.Counter, logging -- terminal-responsiveness.md | Design document for a high-performance web terminal rewrite using asyncio-native I/O, binary WebSocket frames, output batching, flow control, and WebGL rendering. | dep: asyncio, pty, os, time, collections.deque, xterm.js, xterm-addon-webgl, WebSocket, docker, JSON -- tool-container-home-directory.md | Proposes a design for standardizing tool container home directories to `/home/user` with configurable paths, meaningful repo mounts, and backward-compatible `/workspace` symlinks. | dep: ToolType model, manifest schema, Alembic, Docker/dockerfile, compose, config-profile mounts, git mounts, entrypoint permission fixer, home-path-expansion -- tool-definition-manifest.md | Defines a system for creating, validating, and compiling tool definition manifests into Dockerfiles, Docker Compose files, and entrypoint scripts for containerized development environments. | dep: Docker, PostgreSQL, Python (json, hashlib, shlex, yaml, subprocess), JSON Schema, deb/nodesource package repositories +- config-profile-multi-repo-mounts.md | Design document for adding multi-directory mapping support to git mounts in config profiles, allowing a single repository to mount multiple source paths to different target paths. | dep: os, JSONB database column, git cloning utilities, React/TypeScript frontend components, config profile API +- home-path-expansion.md | Design document specifying how to expand ~ and $HOME variables in container mount paths based on manifest-defined user or default /root | dep: config_profile_resolver.py, manifest_compiler.py, tool_instances.py, os +- mount-specificity-ordering.md | Design document specifying a helper function to sort Docker volume mounts by target path depth to ensure correct mount specificity ordering | dep: docker.py, manifest_compiler.py, tool_instances.py, collections.Counter, logging +- terminal-responsiveness.md | Design document for a high-performance web terminal rewrite using asyncio-native I/O, binary WebSocket frames, output batching, flow control, and WebGL rendering | dep: asyncio, pty, os, docker, xterm.js, xterm-addon-webgl, WebSocket, JSON +- tool-container-home-directory.md | Proposes a design/ADR for standardizing and making configurable the home directory in tool containers, defaulting to `/home/user`, with repository mounts under meaningful paths and a backward-compatible `/workspace` symlink. | dep: dockerfile, compose, ToolType model, manifest schema, Alembic, base.dockerfile, entrypoint permission fixer, config-profile mounts, git mounts +- tool-definition-manifest.md | Design document for a JSON-based manifest system that defines, validates, compiles, and deploys containerized development tools via Docker and Docker Compose | dep: Docker, Docker Compose, PostgreSQL, Python (json, hashlib, shlex, yaml, subprocess) ## arch -Design-driven specification pattern using Markdown RFCs covering config systems, path resolution, mount ordering, async I/O with WebSocket/WebGL, and container manifest compilation pipelines. +Markdown-based design documentation repository using lightweight ADR pattern with no code, focused on cross-cutting concerns spanning container orchestration, filesystem mounts, terminal I/O, and tool manifest systems. ## tags -home, py, docker, tool, design, path, mounts, mount +home, design, py, docker, document, mounts, mount, tool ## symbols - ## workflows diff --git a/openspec/docs/.pi-map.index.md b/openspec/docs/.pi-map.index.md index 1c7d9b3..523fed0 100644 --- a/openspec/docs/.pi-map.index.md +++ b/openspec/docs/.pi-map.index.md @@ -1,18 +1,18 @@ -# docs (index) -dir: docs +# openspec/docs (index) +dir: openspec/docs ## role -End-user documentation for the platform's tool type system, explaining how to create and manage container-based tools. +End-user documentation for the Tool Workshop feature that enables container tool type definition and management in Headquarter. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/.pi-map.index.md +map: openspec/.pi-map.md ## children - ## files - tool-workshop-guide.md ## links -index: docs/.pi-map.index.md -map: docs/.pi-map.md +index: openspec/docs/.pi-map.index.md +map: openspec/docs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/docs/.pi-map.md b/openspec/docs/.pi-map.md index 01a7829..748ed49 100644 --- a/openspec/docs/.pi-map.md +++ b/openspec/docs/.pi-map.md @@ -1,16 +1,16 @@ -# docs -dir: docs +# openspec/docs +dir: openspec/docs -index: docs/.pi-map.index.md +index: openspec/docs/.pi-map.index.md ## role -End-user documentation for the platform's tool type system, explaining how to create and manage container-based tools. +End-user documentation for the Tool Workshop feature that enables container tool type definition and management in Headquarter. ## files -- tool-workshop-guide.md | User guide for defining and managing container-based tool types in a platform called Headquarter using legacy (Compose/Dockerfile) or recommended declarative manifest approaches. | dep: Docker, Docker Compose, JSON, apt, npm, pip, Node.js, git, ssh +- tool-workshop-guide.md | User guide for the Tool Workshop feature that defines and manages container tool types in Headquarter via Compose, Dockerfile, or declarative manifest formats. | dep: Docker, Docker Compose, Headquarter platform ## arch -Static markdown documentation with tutorial-style instructional content, covering both legacy (Docker Compose/Dockerfile) and modern declarative manifest approaches. +Markdown-based static documentation following a single-file user guide pattern for feature-specific instructional content. ## tags -guide, tool, workshop, user, defining, managing, container, types +tool, guide, workshop, user, feature, defines, manages, container ## symbols - ## workflows diff --git a/openspec/explorations/.pi-map.index.md b/openspec/explorations/.pi-map.index.md index 32fce27..b6b3755 100644 --- a/openspec/explorations/.pi-map.index.md +++ b/openspec/explorations/.pi-map.index.md @@ -1,11 +1,11 @@ -# explorations (index) -dir: explorations +# openspec/explorations (index) +dir: openspec/explorations ## role -Contains design exploration documents for proposed features and architectural improvements in a container instance management system. +Contains exploratory design documents and architectural proposals for future enhancements and bug fixes across the container runtime, configuration system, and developer experience. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/.pi-map.index.md +map: openspec/.pi-map.md ## children - ## files @@ -17,8 +17,8 @@ map: ./.pi-map.md - streamline-tool-container-definitions.md - terminal-responsiveness.md ## links -index: explorations/.pi-map.index.md -map: explorations/.pi-map.md +index: openspec/explorations/.pi-map.index.md +map: openspec/explorations/.pi-map.md ## workflows - ## dirty diff --git a/openspec/explorations/.pi-map.md b/openspec/explorations/.pi-map.md index 7ec7c6a..7950589 100644 --- a/openspec/explorations/.pi-map.md +++ b/openspec/explorations/.pi-map.md @@ -1,22 +1,22 @@ -# explorations -dir: explorations +# openspec/explorations +dir: openspec/explorations -index: explorations/.pi-map.index.md +index: openspec/explorations/.pi-map.index.md ## role -Contains design exploration documents for proposed features and architectural improvements in a container instance management system. +Contains exploratory design documents and architectural proposals for future enhancements and bug fixes across the container runtime, configuration system, and developer experience. ## files -- config-profile-multi-repo-mounts.md | Proposes a design for supporting multiple directory mounts from a single git repository clone in config profiles, avoiding redundant clones. -- home-path-expansion.md | Explores design options for expanding `~` and `$HOME` in container mount paths based on target container user context | dep: config_profile_resolver.py, tool_instances.py, manifest_compiler.py, Docker Compose -- mount-file-level-overlays.md | Explains a bug where directory-level bind mounts hide sibling files and proposes file-level bind mounts as the solution for overlaying individual files without affecting their parent directories. | dep: Docker, os -- mount-specificity-ordering.md | Design document proposing a solution to fix Docker mount ordering where broader parent-path mounts hide more specific child-path mounts by sorting volumes by target path depth | dep: Docker Compose, Linux mount system, manifest_compiler.py, tool_instances.py -- ssh-key-mounting.md | Design document for adding SSH key mounting capability to config profiles in a container instance management system | dep: ssh_keys table, GitRepository, ConfigProfile, compose volume mounts, alembic migrations, React frontend -- streamline-tool-container-definitions.md | Explores architectural redesign of a tool container definition system to replace monolithic Dockerfile strings and ad-hoc compose generation with a layered, declarative approach | dep: Docker, Docker Compose, SQLAlchemy, Python f-strings/Jinja, Ubuntu base images, Cloudflare tunnels, PTY/WebSocket terminals -- terminal-responsiveness.md | Explores architectural improvements to achieve low-latency terminal I/O performance comparable to VS Code Server by identifying bottlenecks and proposing optimizations for a WebSocket-based web terminal. | dep: xterm.js, WebSocket, asyncio, select, docker, Python, TypeScript, React, node-pty, libuv, Docker Engine API +- config-profile-multi-repo-mounts.md | Design document proposing a schema enhancement to allow multiple directory mounts from a single git repository clone in config profiles. +- home-path-expansion.md | Design document for implementing `~` and `$HOME` expansion in container mount paths with manifest-aware home directory resolution | dep: Docker Compose, manifest system, config profile resolver, git mount mappings, tool instances API +- mount-file-level-overlays.md | Documents a bug fix for file-level mount overlays in Docker volume mounts to prevent directory replacement from hiding sibling files | dep: Docker, os, pathlib +- mount-specificity-ordering.md | Explores a bug where Docker volume mount ordering causes broader parent mounts to hide more specific child mounts, and recommends sorting mounts by path depth to fix it. | dep: Docker Compose, manifest_compiler.py, tool_instances.py, Linux mount system +- ssh-key-mounting.md | Design document proposing to add SSH key mounting capability to ConfigProfile for all instance types, decoupling SSH keys from repositories | dep: config_profile, ssh_keys, GitRepository, instance_dir/mounts, compose, alembic, config_profile_resolver, config_profiles API/web +- streamline-tool-container-definitions.md | Explores architectural redesign of a tool container definition system to replace monolithic Dockerfile strings and ad-hoc compose generation with a layered, declarative approach | dep: Docker, Docker Compose, SQLAlchemy, Python f-string templating, Jinja-like templating, PTY/WebSocket terminal sessions, Cloudflare tunneling +- terminal-responsiveness.md | A software design document analyzing terminal I/O latency bottlenecks and proposing optimizations to achieve VS Code Server-level responsiveness in a web-based terminal. | dep: docker, xterm.js, WebSocket, asyncio, Python os/select, node-pty (reference), Docker SDK ## arch -Markdown-based design documents following an RFC/exploration pattern, each analyzing a specific technical problem space, evaluating alternatives, and proposing solutions across mount systems, config profiles, container definitions, and terminal I/O performance. +Markdown-based RFC/ADR pattern with no executable code; each document independently analyzes a specific problem space, evaluates trade-offs, and proposes solutions using structured software design document format with problem statements, options analysis, and recommendations. ## tags -mounts, container, mount, py, path, design, config, level +mounts, mount, docker, design, document, home, container, level ## symbols - ## workflows diff --git a/openspec/proposals/.pi-map.index.md b/openspec/proposals/.pi-map.index.md index 65ff70d..b0b5c42 100644 --- a/openspec/proposals/.pi-map.index.md +++ b/openspec/proposals/.pi-map.index.md @@ -1,22 +1,24 @@ -# proposals (index) -dir: proposals +# openspec/proposals (index) +dir: openspec/proposals ## role -Houses architectural design proposals for future system enhancements and refinements. +Contains design proposals and specifications for new features, architectural improvements, and UI/UX enhancements across the platform. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/.pi-map.index.md +map: openspec/.pi-map.md ## children - ## files - config-profile-multi-repo-mounts.md - home-path-expansion.md - mount-specificity-ordering.md +- project-pane-rework.md - streamline-tool-container-definitions.md - terminal-responsiveness.md +- ui-polish-round-config-sections-home-projects.md ## links -index: proposals/.pi-map.index.md -map: proposals/.pi-map.md +index: openspec/proposals/.pi-map.index.md +map: openspec/proposals/.pi-map.md ## workflows - ## dirty diff --git a/openspec/proposals/.pi-map.md b/openspec/proposals/.pi-map.md index 01d91b5..ee80692 100644 --- a/openspec/proposals/.pi-map.md +++ b/openspec/proposals/.pi-map.md @@ -1,20 +1,22 @@ -# proposals -dir: proposals +# openspec/proposals +dir: openspec/proposals -index: proposals/.pi-map.index.md +index: openspec/proposals/.pi-map.index.md ## role -Houses architectural design proposals for future system enhancements and refinements. +Contains design proposals and specifications for new features, architectural improvements, and UI/UX enhancements across the platform. ## files -- config-profile-multi-repo-mounts.md | Proposes a backward-compatible extension to Config Profiles' git_mounts to support multiple source/target mappings per repository clone, enabling efficient monorepo directory mounting. -- home-path-expansion.md | Proposes expanding `~` and `$HOME` in container mount target paths to the appropriate home directory based on tool manifest user configuration during Docker Compose generation. | dep: Docker Compose, tool manifest, Dockerfile generation, git mounts +- config-profile-multi-repo-mounts.md | Proposes a backward-compatible extension to Config Profile git_mounts to support multiple source/target mappings from a single repository clone +- home-path-expansion.md | Propose expanding `~` and `$HOME` in container mount target paths to the appropriate home directory based on tool manifest user configuration at compose generation time. | dep: Docker Compose, tool manifest, Dockerfile generation, git mount system - mount-specificity-ordering.md | Proposes sorting Docker Compose volume mounts by target path depth to prevent broader mounts from hiding more specific ones | dep: Docker Compose, manifest_compiler.py, tool_instances.py -- streamline-tool-container-definitions.md | Proposes a declarative YAML manifest system to replace hand-written Dockerfiles and Compose files for defining tool containers, with automatic compilation into Docker/Compose artifacts and compatibility with existing ConfigProfile mounts. | dep: Docker, Docker Compose, YAML/JSON parsing, database (PostgreSQL implied by JSONB), Python (implied by syntax examples), Node.js/npm, apt, git -- terminal-responsiveness.md | Proposes architectural improvements to reduce web terminal latency and increase rendering performance through asyncio I/O, WebGL rendering, and WebSocket optimizations. | dep: docker, asyncio, WebSocket, WebGL, PTY, Docker Engine API +- project-pane-rework.md | A software design proposal for reworking the Projects page UI from expandable cards to a flat list showing project→repo→workspace→tool hierarchy with direct navigation. | dep: React/frontend, useProjects hook, useSessions hook, ProjectsPage.tsx, ProjectCard component, CSS/styles, routing/navigation +- streamline-tool-container-definitions.md | Proposes a declarative YAML/JSON manifest system to replace hand-written Dockerfiles and Compose files for tool container definitions, with automatic compilation and ConfigProfile compatibility. | dep: Docker, Docker Compose, YAML/JSON parsing, database (PostgreSQL with JSONB), existing ConfigProfile mount system, Node.js/apt/pip package managers +- terminal-responsiveness.md | Proposes architectural changes to improve web terminal performance by reducing latency, increasing throughput, and adding GPU rendering with async I/O. | dep: asyncio, WebSocket, Docker, WebGL, PTY, Docker Engine API +- ui-polish-round-config-sections-home-projects.md | Proposes UI polish changes to standardize config section styling, fix home page padding, and improve project repository layout alignment. | dep: global.css, manifest-editor.tsx, ConfigProfileEditorPanel.tsx, ProjectCard.tsx, styles/pages/projects.css ## arch -Markdown-based RFC-style documentation with no executable code, organized by independent feature proposals spanning configuration, containerization, and performance domains. +Markdown-based RFC/proposal system using flat-file documentation with no code implementation; covers config extensions, compose generation, container definitions, UI redesigns, and performance optimizations. ## tags -mounts, proposes, docker, home, tool, compose, config, target +home, config, proposes, mounts, tool, container, projects, project ## symbols - ## workflows diff --git a/openspec/specs/.pi-map.index.md b/openspec/specs/.pi-map.index.md index 3d77fb9..3f84883 100644 --- a/openspec/specs/.pi-map.index.md +++ b/openspec/specs/.pi-map.index.md @@ -1,22 +1,24 @@ -# specs (index) -dir: specs +# openspec/specs (index) +dir: openspec/specs ## role -Defines formal specifications and requirements for core system features including container configuration, terminal I/O, and build tooling. +Contains technical specification documents defining requirements, APIs, and implementation strategies for cross-functional features spanning configuration, containerization, UI/UX, and terminal infrastructure. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/.pi-map.index.md +map: openspec/.pi-map.md ## children - ## files - config-profile-multi-repo-mounts.md - home-path-expansion.md - mount-specificity-ordering.md +- project-pane-rework.md - terminal-responsiveness.md - tool-definition-manifest.md +- ui-polish-round-config-sections-home-projects.md ## links -index: specs/.pi-map.index.md -map: specs/.pi-map.md +index: openspec/specs/.pi-map.index.md +map: openspec/specs/.pi-map.md ## workflows - ## dirty diff --git a/openspec/specs/.pi-map.md b/openspec/specs/.pi-map.md index ead525c..737bf04 100644 --- a/openspec/specs/.pi-map.md +++ b/openspec/specs/.pi-map.md @@ -1,20 +1,22 @@ -# specs -dir: specs +# openspec/specs +dir: openspec/specs -index: specs/.pi-map.index.md +index: openspec/specs/.pi-map.index.md ## role -Defines formal specifications and requirements for core system features including container configuration, terminal I/O, and build tooling. +Contains technical specification documents defining requirements, APIs, and implementation strategies for cross-functional features spanning configuration, containerization, UI/UX, and terminal infrastructure. ## files -- config-profile-multi-repo-mounts.md | Specifies requirements, API contracts, and test strategy for supporting multiple directory mappings per git repository mount in configuration profiles -- home-path-expansion.md | Specifies requirements for expanding `~` and `$HOME` in container mount paths during Docker compose generation based on manifest user configuration. -- mount-specificity-ordering.md | Specifies requirements and algorithm for sorting Docker volume mounts by target path depth to ensure parent mounts are applied before child mounts | dep: manifest_compiler.py, tool_instances.py, logging -- terminal-responsiveness.md | Specification document for a high-performance web terminal I/O pipeline rewrite targeting sub-frame latency with event-driven PTY reading, output batching, flow control, and WebGL rendering. | dep: asyncio, pty, docker, WebSocket, xterm.js, WebGL, TypeScript, Python -- tool-definition-manifest.md | Specifies a declarative manifest system for defining tool containers without Dockerfiles, including compilation to Docker/Compose, versioning, permission policies, and backward compatibility. | dep: Docker, Docker Compose, JSON Schema, database (PostgreSQL with JSONB), Alembic, Python/FastAPI (implied by paths) +- config-profile-multi-repo-mounts.md | Specifies requirements, API contracts, and test strategy for supporting multiple directory mappings per git repository mount in configuration profiles. | dep: Docker, Git, JSONB, config_profiles +- home-path-expansion.md | Specification document defining requirements for expanding `~` and `$HOME` in container mount paths during compose generation. +- mount-specificity-ordering.md | Defines requirements and algorithm for sorting Docker volume mounts by target path depth to ensure parent mounts are applied before child mounts +- project-pane-rework.md | Specifies a UI rework of the desktop Projects page from card-based layout to a flat list showing projects with horizontally arranged repositories, workspaces, and running tools. | dep: React, React Router, TypeScript, CSS custom properties, sessions state hook, existing types (ProjectWithRepos, RepositorySummary, WorkspaceSummary, Session), existing components (Icon, Link) +- terminal-responsiveness.md | Technical specification for a high-performance web terminal I/O pipeline rewrite targeting sub-frame latency and smooth rendering via PTY-based docker exec, WebSocket binary frames, output batching, and flow control. | dep: asyncio, pty, docker, WebSocket, xterm.js, WebGL, Python, TypeScript, Docker +- tool-definition-manifest.md | Specifies a declarative manifest system for defining tool containers without writing Dockerfiles or Compose files, including compilation, versioning, and runtime configuration. | dep: Docker, Docker Compose, JSON Schema, database (PostgreSQL implied), Python/FastAPI (implied by file paths), Alembic +- ui-polish-round-config-sections-home-projects.md | Defines UI polish specifications for unifying config sections, restoring home page paddings, and improving project repository layout in a web application. | dep: React, CSS custom properties, global.css, projects.css, manifest-editor.tsx, ConfigProfileEditorPanel.tsx, ProjectCard.tsx ## arch -Document-driven specification pattern with Markdown-based RFCs covering API contracts, algorithms, and test strategies for cross-functional alignment before implementation. +Markdown-based specification repository using one-document-per-feature pattern, with each spec following a consistent structure of requirements, API contracts, algorithms, and test strategies; serves as the single source of truth for design decisions before implementation. ## tags -mounts, docker, specifies, mount, manifest, requirements, home, path +docker, home, config, mounts, projects, mount, manifest, specifies ## symbols - ## workflows diff --git a/openspec/tasks/.pi-map.index.md b/openspec/tasks/.pi-map.index.md index 811a84a..7cdbd08 100644 --- a/openspec/tasks/.pi-map.index.md +++ b/openspec/tasks/.pi-map.index.md @@ -1,22 +1,24 @@ -# tasks (index) -dir: tasks +# openspec/tasks (index) +dir: openspec/tasks ## role -This directory contains technical specification and design documents tracking pending engineering tasks for a containerized development environment platform. +Contains engineering task specifications and implementation tracking documents for various cross-functional features spanning backend infrastructure, Docker containerization, UI/UX redesign, and developer tooling. ## parent -index: ./.pi-map.index.md -map: ./.pi-map.md +index: openspec/.pi-map.index.md +map: openspec/.pi-map.md ## children - ## files - config-profile-multi-repo-mounts.md - home-path-expansion.md - mount-specificity-ordering.md +- project-pane-rework.md - terminal-responsiveness.md - tool-definition-manifest.md +- ui-polish-round-config-sections-home-projects.md ## links -index: tasks/.pi-map.index.md -map: tasks/.pi-map.md +index: openspec/tasks/.pi-map.index.md +map: openspec/tasks/.pi-map.md ## workflows - ## dirty diff --git a/openspec/tasks/.pi-map.md b/openspec/tasks/.pi-map.md index ff1fa0e..bb19a78 100644 --- a/openspec/tasks/.pi-map.md +++ b/openspec/tasks/.pi-map.md @@ -1,20 +1,22 @@ -# tasks -dir: tasks +# openspec/tasks +dir: openspec/tasks -index: tasks/.pi-map.index.md +index: openspec/tasks/.pi-map.index.md ## role -This directory contains technical specification and design documents tracking pending engineering tasks for a containerized development environment platform. +Contains engineering task specifications and implementation tracking documents for various cross-functional features spanning backend infrastructure, Docker containerization, UI/UX redesign, and developer tooling. ## files -- config-profile-multi-repo-mounts.md | Technical specification for refactoring git mount configuration to support multiple repository mappings per mount instead of single source/target pairs | dep: git, docker compose, react/typescript, pytest, npm, fastapi -- home-path-expansion.md | Design and implementation plan for adding configurable home/workspace directory support to tool containers in an API application. | dep: SQLAlchemy/Alembic, Docker, Docker Compose, pytest, PostgreSQL, Node.js/npm -- mount-specificity-ordering.md | Tracks completion status of a project task for implementing mount specificity ordering in Docker volume handling | dep: docker.py, pytest, tsc -- terminal-responsiveness.md | A technical specification document outlining 7 pending tasks to improve web terminal performance through asyncio-native I/O, binary WebSocket frames, WebGL rendering, flow control, and comprehensive benchmarking. | dep: asyncio, WebSocket, xterm-addon-webgl, docker, pytest -- tool-definition-manifest.md | A project task specification document defining a multi-PR system for implementing a Tool Definition Manifest System with backend manifest compilation, frontend workshop UI, and legacy migration support. | dep: SQLAlchemy, Alembic, Docker, Docker Compose, FastAPI/REST API, React/TypeScript frontend +- config-profile-multi-repo-mounts.md | Engineering task specification for refactoring git mount configuration to support multiple repository mappings per clone in a full-stack application | dep: Python (FastAPI/Flask), TypeScript/React, Git, Docker Compose, pytest, npm +- home-path-expansion.md | Tracks implementation tasks for adding configurable home/workspace directories to tool containers, including schema migrations, manifest compilation, legacy instance generation, and permission handling. | dep: SQLAlchemy, Alembic, Docker, Docker Compose, pytest, PostgreSQL, Jinja2 templating +- mount-specificity-ordering.md | Tracks completion of a task to implement mount specificity ordering in Docker volume handling | dep: docker.py, compose compilation system, pytest, tsc +- project-pane-rework.md | Defines implementation tasks for reworking the project pane UI from card-based to flat list layout with horizontal repo display and vertical workspace/tool lists. | dep: React, useSessions hook, ProjectRepoItem, SessionToolLink, ProjectCard, CSS modules, TypeScript, npm +- terminal-responsiveness.md | Project task list for rewriting a web terminal system to use asyncio-native I/O, binary WebSocket frames, WebGL rendering, and performance benchmarks | dep: asyncio, xterm.js, WebSocket, WebGL, docker, pytest +- tool-definition-manifest.md | Defines a multi-phase project roadmap for building a tool definition manifest system that enables declarative Docker-based tool configuration through a backend compiler, frontend workshop UI, and legacy migration support. | dep: SQLAlchemy, Alembic, FastAPI/HTTP API, Docker, Docker Compose, React/TypeScript frontend, Node.js, npm, apt +- ui-polish-round-config-sections-home-projects.md | Defines implementation tasks for a UI polish round focusing on standardizing config sections, fixing home page paddings, and improving project repository layouts. | dep: global.css, manifest-editor.tsx, ConfigProfileEditorPanel.tsx, ProjectCard.tsx, projects.css, npm, OpenSpec ## arch -Markdown-based task tracking system using single-file specifications per feature, covering API/backend services, frontend UI, Docker/container infrastructure, and performance optimization workstreams. +Markdown-based project management artifacts using informal task-tracking pattern with no code architecture; documents follow a consistent structure of problem statement, implementation phases, and acceptance criteria for coordinating full-stack feature development. ## tags -mount, docker, pytest, tool, manifest, specification, support, docker compose +home, tool, docker, project, config, manifest, mount, pytest ## symbols - ## workflows diff --git a/scripts/.pi-map.index.md b/scripts/.pi-map.index.md index 83d798d..2b3f7c0 100644 --- a/scripts/.pi-map.index.md +++ b/scripts/.pi-map.index.md @@ -2,7 +2,7 @@ dir: scripts ## role -Operational utility scripts for database maintenance and security management in containerized production environments. +Provides operational utilities for database maintenance and security management in containerized deployments. ## parent index: ./.pi-map.index.md map: ./.pi-map.md diff --git a/scripts/.pi-map.md b/scripts/.pi-map.md index b5cb387..9fd3cfe 100644 --- a/scripts/.pi-map.md +++ b/scripts/.pi-map.md @@ -4,14 +4,14 @@ dir: scripts index: scripts/.pi-map.index.md ## role -Operational utility scripts for database maintenance and security management in containerized production environments. +Provides operational utilities for database maintenance and security management in containerized deployments. ## files -- fix_ghost_migration.sh | Diagnoses a "ghost" Alembic migration issue by checking for orphaned migration files, database version state, and column existence in a production environment. | dep: bash, find, psql, grep -- update_db_password.py | Securely update the PostgreSQL password for the 'headquarter' database user via a Docker container | exp: func:main() → None, call:getpass.getpass, call:print, call:sys.exit, call:subprocess.run, call:result.stdout.strip | dep: getpass, subprocess, sys +- fix_ghost_migration.sh | Diagnoses a ghost Alembic migration issue by checking for orphaned migration files, current database version, column existence, and known migration heads. | dep: bash, find, psql, grep +- update_db_password.py | Securely updates the PostgreSQL password for the 'headquarter' database user via a Docker container without exposing the password in shell history. | exp: func:main() → None, call:getpass.getpass, call:print, call:sys.exit, call:subprocess.run, call:result.stdout.strip | dep: getpass, subprocess, sys ## arch -Standalone imperative shell scripts and Python scripts using subprocess calls to Docker CLI for container orchestration, with direct database connectivity via SQLAlchemy/Alembic for schema introspection and PostgreSQL for credential updates. +Shell and Python scripts using Docker exec for container interaction, environment variable injection for secrets management, and Alembic introspection for migration state diagnosis. ## tags -migration, ghost, update, password, database, fix, main, call:getpass.getpass +migration, password, ghost, database, fix, main, call:getpass.getpass, call:print ## symbols - main - call:getpass.getpass diff --git a/tool-images/.pi-map.index.md b/tool-images/.pi-map.index.md index d0d6588..4ac3abd 100644 --- a/tool-images/.pi-map.index.md +++ b/tool-images/.pi-map.index.md @@ -2,7 +2,7 @@ dir: tool-images ## role -Provides containerized development environment templates for AI coding agents and IDE tools used in the Headquarter platform. +Provides containerized development environment templates for various IDE and coding agent tools used in the Headquarter platform. ## parent index: ./.pi-map.index.md map: ./.pi-map.md diff --git a/tool-images/.pi-map.md b/tool-images/.pi-map.md index 1eb34df..613b46b 100644 --- a/tool-images/.pi-map.md +++ b/tool-images/.pi-map.md @@ -4,18 +4,18 @@ dir: tool-images index: tool-images/.pi-map.index.md ## role -Provides containerized development environment templates for AI coding agents and IDE tools used in the Headquarter platform. +Provides containerized development environment templates for various IDE and coding agent tools used in the Headquarter platform. ## files -- README.md | Documents a directory of Dockerfile templates for base tool types used in the Headquarter platform | dep: Docker, git, neovim, ranger, tmux, htop, tree, jq, Node.js 20, Pi Coding Agent -- base.dockerfile | Defines a base Docker development image with common CLI tools, Node.js, and a non-root user with sudo privileges for bind-mounted directory permission fixes. | dep: ubuntu:24.04, curl, wget, git, neovim, ranger, tmux, htop, tree, jq, ca-certificates, sudo, nodejs +- README.md | Documents a collection of Dockerfile templates for base tool types used in the Headquarter platform | dep: Docker, git, neovim, ranger, tmux, htop, tree, jq, Node.js 20, VS Code, Jupyter, OpenCode, Pi Coding Agent +- base.dockerfile | Base Docker image for development environments with common CLI tools, Node.js, and a non-root user with sudo permissions. | dep: ubuntu:24.04, apt, curl, nodejs, git, sudo - code-server.dockerfile | Builds a Docker image for browser-based VS Code with additional development tools and Node.js | dep: linuxserver/code-server, git, neovim, ranger, tmux, htop, tree, jq, Node.js 20 -- jupyter.dockerfile | Builds a Docker image for Jupyter Notebook/Lab with additional CLI tools and git configuration | dep: jupyter/scipy-notebook, apt, git, neovim, ranger, tmux, htop, tree, jq -- opencode.dockerfile | Builds a Docker container for running the OpenCode AI agent as a server | dep: ubuntu:24.04, nodejs, npm, python3, git, opencode -- pi-agent.dockerfile | Builds a Docker container providing a terminal-based development environment with the Pi coding agent and supporting tools (neovim, tmux, ranger, etc.) | dep: ubuntu:24.04, nodejs, npm, @earendil-works/pi-coding-agent, git, tmux, neovim, ranger, python3, build-essential +- jupyter.dockerfile | Builds a Docker image for Jupyter Notebook/Lab with additional CLI tools and git configuration | dep: jupyter/scipy-notebook, git, neovim, ranger, tmux, htop, tree, jq +- opencode.dockerfile | Builds a Docker container for running the OpenCode agent as a server with a pre-configured development environment | dep: ubuntu:24.04, nodejs, npm, opencode, python3, git, neovim, tmux, various CLI tools +- pi-agent.dockerfile | Builds a Docker image for a terminal-based coding environment with the Pi Coding Agent and various developer tools | dep: ubuntu:24.04, nodejs, npm, python3, git, neovim, tmux, ranger, @earendil-works/pi-coding-agent ## arch -Multi-flavored Dockerfile pattern with shared base layer (common CLI tools, Node.js, non-root user) and specialized downstream images for distinct tool types (VS Code, Jupyter, OpenCode, Pi agent). +Template-based Docker image hierarchy with a shared base layer (common CLI tools, Node.js, non-root user) and specialized downstream images for specific tools (VS Code Server, Jupyter, OpenCode agent, Pi agent), following a single inheritance pattern from base.dockerfile. ## tags -git, docker, neovim, ranger, tmux, agent, base, htop +git, docker, neovim, tmux, jupyter, opencode, agent, base ## symbols - ## workflows