@compilr-dev/cli 0.5.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +236 -68
- package/dist/.tsbuildinfo.app +1 -0
- package/dist/.tsbuildinfo.data +1 -0
- package/dist/.tsbuildinfo.domain +1 -0
- package/dist/.tsbuildinfo.foundation +1 -0
- package/dist/agent.d.ts +61 -4
- package/dist/agent.js +241 -245
- package/dist/anchors/index.d.ts +1 -1
- package/dist/anchors/index.js +1 -1
- package/dist/anchors/project-anchors.d.ts +2 -2
- package/dist/anchors/project-anchors.js +1 -1
- package/dist/auth/api-client.d.ts +124 -0
- package/dist/auth/api-client.js +261 -0
- package/dist/auth/index.d.ts +172 -0
- package/dist/auth/index.js +545 -0
- package/dist/auth/storage.d.ts +52 -0
- package/dist/auth/storage.js +118 -0
- package/dist/changelog/index.d.ts +16 -0
- package/dist/changelog/index.js +24 -0
- package/dist/changelog/releases.d.ts +17 -0
- package/dist/changelog/releases.js +63 -0
- package/dist/commands-v2/handlers/auth.d.ts +10 -0
- package/dist/commands-v2/handlers/auth.js +118 -0
- package/dist/commands-v2/handlers/background.d.ts +14 -0
- package/dist/commands-v2/handlers/background.js +276 -0
- package/dist/commands-v2/handlers/context.js +266 -81
- package/dist/commands-v2/handlers/core.d.ts +1 -0
- package/dist/commands-v2/handlers/core.js +133 -8
- package/dist/commands-v2/handlers/debug.js +18 -0
- package/dist/commands-v2/handlers/delegations.d.ts +8 -0
- package/dist/commands-v2/handlers/delegations.js +29 -0
- package/dist/commands-v2/handlers/files.d.ts +8 -0
- package/dist/commands-v2/handlers/files.js +162 -0
- package/dist/commands-v2/handlers/filter.d.ts +9 -0
- package/dist/commands-v2/handlers/filter.js +130 -0
- package/dist/commands-v2/handlers/games.d.ts +7 -0
- package/dist/commands-v2/handlers/games.js +57 -0
- package/dist/commands-v2/handlers/index.d.ts +13 -0
- package/dist/commands-v2/handlers/index.js +39 -0
- package/dist/commands-v2/handlers/mcp.d.ts +8 -0
- package/dist/commands-v2/handlers/mcp.js +39 -0
- package/dist/commands-v2/handlers/notifications.d.ts +9 -0
- package/dist/commands-v2/handlers/notifications.js +34 -0
- package/dist/commands-v2/handlers/project.js +244 -23
- package/dist/commands-v2/handlers/reset.d.ts +11 -0
- package/dist/commands-v2/handlers/reset.js +118 -0
- package/dist/commands-v2/handlers/session.d.ts +161 -0
- package/dist/commands-v2/handlers/session.js +805 -0
- package/dist/commands-v2/handlers/settings.d.ts +2 -0
- package/dist/commands-v2/handlers/settings.js +217 -35
- package/dist/commands-v2/handlers/tasks.d.ts +5 -0
- package/dist/commands-v2/handlers/tasks.js +36 -0
- package/dist/commands-v2/handlers/team.d.ts +9 -0
- package/dist/commands-v2/handlers/team.js +549 -0
- package/dist/commands-v2/handlers/terminals.d.ts +9 -0
- package/dist/commands-v2/handlers/terminals.js +34 -0
- package/dist/commands-v2/index.d.ts +3 -2
- package/dist/commands-v2/index.js +4 -1
- package/dist/commands-v2/registry.d.ts +15 -0
- package/dist/commands-v2/registry.js +34 -0
- package/dist/commands-v2/types.d.ts +81 -3
- package/dist/commands.js +13 -0
- package/dist/compilr-diff-companion.vsix +0 -0
- package/dist/db/index.js +98 -4
- package/dist/db/repositories/document-repository.d.ts +2 -0
- package/dist/db/repositories/document-repository.js +5 -1
- package/dist/db/repositories/index.d.ts +2 -0
- package/dist/db/repositories/index.js +1 -0
- package/dist/db/repositories/plan-repository.d.ts +101 -0
- package/dist/db/repositories/plan-repository.js +275 -0
- package/dist/db/repositories/project-repository.d.ts +6 -0
- package/dist/db/repositories/project-repository.js +41 -0
- package/dist/db/repositories/work-item-repository.d.ts +15 -0
- package/dist/db/repositories/work-item-repository.js +69 -4
- package/dist/db/schema.d.ts +40 -3
- package/dist/db/schema.js +66 -3
- package/dist/episodes/index.d.ts +20 -0
- package/dist/episodes/index.js +27 -0
- package/dist/episodes/recorder.d.ts +51 -0
- package/dist/episodes/recorder.js +195 -0
- package/dist/episodes/significant-work.d.ts +21 -0
- package/dist/episodes/significant-work.js +56 -0
- package/dist/episodes/store.d.ts +38 -0
- package/dist/episodes/store.js +199 -0
- package/dist/episodes/types.d.ts +35 -0
- package/dist/episodes/types.js +6 -0
- package/dist/episodes/work-at-risk.d.ts +12 -0
- package/dist/episodes/work-at-risk.js +38 -0
- package/dist/episodes/work-summary-anchor.d.ts +23 -0
- package/dist/episodes/work-summary-anchor.js +73 -0
- package/dist/games/coins.d.ts +66 -0
- package/dist/games/coins.js +165 -0
- package/dist/games/game-base.d.ts +84 -0
- package/dist/games/game-base.js +204 -0
- package/dist/games/index.d.ts +16 -0
- package/dist/games/index.js +49 -0
- package/dist/games/scores.d.ts +69 -0
- package/dist/games/scores.js +191 -0
- package/dist/games/tetris/board.d.ts +59 -0
- package/dist/games/tetris/board.js +170 -0
- package/dist/games/tetris/index.d.ts +109 -0
- package/dist/games/tetris/index.js +610 -0
- package/dist/games/tetris/pieces.d.ts +44 -0
- package/dist/games/tetris/pieces.js +271 -0
- package/dist/games/tetris/renderer.d.ts +26 -0
- package/dist/games/tetris/renderer.js +77 -0
- package/dist/guide/guide-content.d.ts +23 -0
- package/dist/guide/guide-content.js +196 -0
- package/dist/guide/index.d.ts +8 -0
- package/dist/guide/index.js +7 -0
- package/dist/guide/shared-content.d.ts +37 -0
- package/dist/guide/shared-content.js +1272 -0
- package/dist/guide/tutorial-helpers.d.ts +57 -0
- package/dist/guide/tutorial-helpers.js +147 -0
- package/dist/handlers/ask-user-handlers.d.ts +32 -0
- package/dist/handlers/ask-user-handlers.js +104 -0
- package/dist/handlers/delegation-handlers.d.ts +34 -0
- package/dist/handlers/delegation-handlers.js +291 -0
- package/dist/handlers/permission-handler.d.ts +30 -0
- package/dist/handlers/permission-handler.js +205 -0
- package/dist/index.d.ts +11 -1
- package/dist/index.js +448 -271
- package/dist/input-handlers/memory-handler.d.ts +1 -1
- package/dist/input-handlers/memory-handler.js +2 -1
- package/dist/models/index.d.ts +10 -0
- package/dist/models/index.js +12 -0
- package/dist/models/model-registry.d.ts +38 -0
- package/dist/models/model-registry.js +69 -0
- package/dist/models/model-tiers.d.ts +28 -0
- package/dist/models/model-tiers.js +71 -0
- package/dist/models/model-validation.d.ts +25 -0
- package/dist/models/model-validation.js +291 -0
- package/dist/models/ollama-models.d.ts +73 -0
- package/dist/models/ollama-models.js +178 -0
- package/dist/models/provider-types.d.ts +6 -0
- package/dist/models/provider-types.js +1 -0
- package/dist/models/providers.d.ts +35 -0
- package/dist/models/providers.js +58 -0
- package/dist/models/types.d.ts +4 -0
- package/dist/models/types.js +4 -0
- package/dist/multi-agent/activity.d.ts +21 -0
- package/dist/multi-agent/activity.js +34 -0
- package/dist/multi-agent/agent-selection.d.ts +55 -0
- package/dist/multi-agent/agent-selection.js +90 -0
- package/dist/multi-agent/artifacts.d.ts +197 -0
- package/dist/multi-agent/artifacts.js +379 -0
- package/dist/multi-agent/checkpointer.d.ts +138 -0
- package/dist/multi-agent/checkpointer.js +471 -0
- package/dist/multi-agent/collision-utils.d.ts +16 -0
- package/dist/multi-agent/collision-utils.js +28 -0
- package/dist/multi-agent/context-resolver.d.ts +97 -0
- package/dist/multi-agent/context-resolver.js +316 -0
- package/dist/multi-agent/custom-agents.d.ts +83 -0
- package/dist/multi-agent/custom-agents.js +227 -0
- package/dist/multi-agent/delegation-tracker.d.ts +157 -0
- package/dist/multi-agent/delegation-tracker.js +243 -0
- package/dist/multi-agent/file-lock-hook.d.ts +29 -0
- package/dist/multi-agent/file-lock-hook.js +97 -0
- package/dist/multi-agent/file-locks.d.ts +58 -0
- package/dist/multi-agent/file-locks.js +194 -0
- package/dist/multi-agent/index.d.ts +24 -0
- package/dist/multi-agent/index.js +30 -0
- package/dist/multi-agent/mention-parser.d.ts +64 -0
- package/dist/multi-agent/mention-parser.js +146 -0
- package/dist/multi-agent/notification-manager.d.ts +84 -0
- package/dist/multi-agent/notification-manager.js +224 -0
- package/dist/multi-agent/pending-requests.d.ts +122 -0
- package/dist/multi-agent/pending-requests.js +155 -0
- package/dist/multi-agent/session-registry.d.ts +139 -0
- package/dist/multi-agent/session-registry.js +514 -0
- package/dist/multi-agent/shared-context.d.ts +293 -0
- package/dist/multi-agent/shared-context.js +671 -0
- package/dist/multi-agent/skill-requirements.d.ts +66 -0
- package/dist/multi-agent/skill-requirements.js +178 -0
- package/dist/multi-agent/task-assignment.d.ts +69 -0
- package/dist/multi-agent/task-assignment.js +123 -0
- package/dist/multi-agent/task-suggestion.d.ts +31 -0
- package/dist/multi-agent/task-suggestion.js +72 -0
- package/dist/multi-agent/team-agent.d.ts +201 -0
- package/dist/multi-agent/team-agent.js +488 -0
- package/dist/multi-agent/team.d.ts +286 -0
- package/dist/multi-agent/team.js +610 -0
- package/dist/multi-agent/tool-config.d.ts +110 -0
- package/dist/multi-agent/tool-config.js +661 -0
- package/dist/multi-agent/types.d.ts +211 -0
- package/dist/multi-agent/types.js +617 -0
- package/dist/prompts/plan-mode-prompt.d.ts +11 -0
- package/dist/prompts/plan-mode-prompt.js +95 -0
- package/dist/repl-helpers.js +3 -2
- package/dist/repl-v2.d.ts +401 -2
- package/dist/repl-v2.js +2577 -65
- package/dist/session/index.d.ts +6 -0
- package/dist/session/index.js +6 -0
- package/dist/session/project-session-manager.d.ts +158 -0
- package/dist/session/project-session-manager.js +650 -0
- package/dist/settings/index.d.ts +133 -13
- package/dist/settings/index.js +329 -24
- package/dist/settings/mcp-config.d.ts +76 -0
- package/dist/settings/mcp-config.js +143 -0
- package/dist/settings/paths.d.ts +4 -0
- package/dist/settings/paths.js +6 -0
- package/dist/shared-handlers.d.ts +62 -0
- package/dist/shared-handlers.js +48 -0
- package/dist/system-prompt/builder.d.ts +5 -0
- package/dist/system-prompt/builder.js +4 -0
- package/dist/system-prompt/index.d.ts +18 -0
- package/dist/system-prompt/index.js +18 -0
- package/dist/system-prompt/modules.d.ts +5 -0
- package/dist/system-prompt/modules.js +4 -0
- package/dist/tabbed-menu.js +2 -1
- package/dist/templates/compilr-md-import.d.ts +16 -0
- package/dist/templates/compilr-md-import.js +241 -0
- package/dist/templates/compilr-md.js +10 -61
- package/dist/templates/config-json.d.ts +1 -25
- package/dist/templates/index.d.ts +2 -0
- package/dist/templates/index.js +34 -73
- package/dist/tool-names.d.ts +108 -0
- package/dist/tool-names.js +227 -0
- package/dist/tools/anchor-tools.d.ts +4 -4
- package/dist/tools/anchor-tools.js +1 -1
- package/dist/tools/artifact-tools.d.ts +42 -0
- package/dist/tools/artifact-tools.js +328 -0
- package/dist/tools/ask-user-simple.d.ts +1 -1
- package/dist/tools/ask-user-simple.js +2 -1
- package/dist/tools/ask-user.d.ts +1 -1
- package/dist/tools/ask-user.js +2 -1
- package/dist/tools/backlog-wrappers.d.ts +5 -3
- package/dist/tools/backlog-wrappers.js +16 -1
- package/dist/tools/backlog.d.ts +2 -2
- package/dist/tools/backlog.js +1 -1
- package/dist/tools/db-tools.d.ts +8 -61
- package/dist/tools/db-tools.js +8 -13
- package/dist/tools/delegate-background.d.ts +27 -0
- package/dist/tools/delegate-background.js +115 -0
- package/dist/tools/delegate.d.ts +22 -0
- package/dist/tools/delegate.js +97 -0
- package/dist/tools/delegation-status.d.ts +16 -0
- package/dist/tools/delegation-status.js +128 -0
- package/dist/tools/document-db.d.ts +5 -5
- package/dist/tools/document-db.js +1 -1
- package/dist/tools/guide-tool.d.ts +12 -0
- package/dist/tools/guide-tool.js +59 -0
- package/dist/tools/handoff.d.ts +25 -0
- package/dist/tools/handoff.js +99 -0
- package/dist/tools/meta-tools.d.ts +26 -0
- package/dist/tools/meta-tools.js +47 -0
- package/dist/tools/plan-tools.d.ts +54 -0
- package/dist/tools/plan-tools.js +338 -0
- package/dist/tools/platform-adapter.d.ts +29 -0
- package/dist/tools/platform-adapter.js +394 -0
- package/dist/tools/project-db.d.ts +5 -73
- package/dist/tools/project-db.js +5 -336
- package/dist/tools/recall-work-tool.d.ts +18 -0
- package/dist/tools/recall-work-tool.js +82 -0
- package/dist/tools/workitem-db.d.ts +43 -11
- package/dist/tools/workitem-db.js +186 -5
- package/dist/tools.d.ts +67 -2
- package/dist/tools.js +237 -47
- package/dist/ui/autocomplete-controller.d.ts +42 -0
- package/dist/ui/autocomplete-controller.js +384 -0
- package/dist/ui/base/index.d.ts +1 -1
- package/dist/ui/base/index.js +1 -1
- package/dist/ui/base/overlay-base-v2.d.ts +10 -0
- package/dist/ui/base/overlay-base-v2.js +14 -0
- package/dist/ui/base/render-utils.d.ts +19 -0
- package/dist/ui/base/render-utils.js +25 -0
- package/dist/ui/base/tabbed-list-overlay-v2.d.ts +16 -1
- package/dist/ui/base/tabbed-list-overlay-v2.js +19 -1
- package/dist/ui/constants/labels.d.ts +14 -0
- package/dist/ui/constants/labels.js +51 -0
- package/dist/ui/conversation-store.d.ts +55 -0
- package/dist/ui/conversation-store.js +107 -0
- package/dist/ui/conversation.js +11 -13
- package/dist/ui/diff.d.ts +7 -1
- package/dist/ui/diff.js +85 -48
- package/dist/ui/ephemeral.js +3 -9
- package/dist/ui/file-autocomplete.d.ts +24 -0
- package/dist/ui/file-autocomplete.js +56 -0
- package/dist/ui/footer-renderer.d.ts +69 -0
- package/dist/ui/footer-renderer.js +431 -0
- package/dist/ui/footer.d.ts +74 -7
- package/dist/ui/footer.js +173 -16
- package/dist/ui/input-controller.d.ts +51 -0
- package/dist/ui/input-controller.js +176 -0
- package/dist/ui/input-prompt.d.ts +19 -0
- package/dist/ui/input-prompt.js +206 -14
- package/dist/ui/keyboard-handler.d.ts +57 -0
- package/dist/ui/keyboard-handler.js +557 -0
- package/dist/ui/live-region-facade.d.ts +42 -0
- package/dist/ui/live-region-facade.js +205 -0
- package/dist/ui/live-region.d.ts +0 -4
- package/dist/ui/live-region.js +6 -14
- package/dist/ui/mascot/renderer.d.ts +1 -1
- package/dist/ui/mascot/renderer.js +37 -2
- package/dist/ui/overlay/data/tutorial-content.d.ts +9 -0
- package/dist/ui/overlay/data/tutorial-content.js +9 -0
- package/dist/ui/overlay/data/tutorial-registry.d.ts +12 -0
- package/dist/ui/overlay/data/tutorial-registry.js +116 -0
- package/dist/ui/overlay/data/tutorial-types.d.ts +35 -0
- package/dist/ui/overlay/data/tutorial-types.js +6 -0
- package/dist/ui/overlay/data/tutorials/basics/first-conversation.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/basics/first-conversation.js +220 -0
- package/dist/ui/overlay/data/tutorials/basics/first-project.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/basics/first-project.js +284 -0
- package/dist/ui/overlay/data/tutorials/basics/navigation.d.ts +8 -0
- package/dist/ui/overlay/data/tutorials/basics/navigation.js +22 -0
- package/dist/ui/overlay/data/tutorials/basics/welcome.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/basics/welcome.js +174 -0
- package/dist/ui/overlay/data/tutorials/config/context-management.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/config/context-management.js +158 -0
- package/dist/ui/overlay/data/tutorials/config/mcp-servers.d.ts +8 -0
- package/dist/ui/overlay/data/tutorials/config/mcp-servers.js +155 -0
- package/dist/ui/overlay/data/tutorials/config/model-selection.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/config/model-selection.js +162 -0
- package/dist/ui/overlay/data/tutorials/config/permissions-safety.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/config/permissions-safety.js +163 -0
- package/dist/ui/overlay/data/tutorials/config/settings-config.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/config/settings-config.js +166 -0
- package/dist/ui/overlay/data/tutorials/planning/arch.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/arch.js +168 -0
- package/dist/ui/overlay/data/tutorials/planning/backlog.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/backlog.js +103 -0
- package/dist/ui/overlay/data/tutorials/planning/build.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/build.js +173 -0
- package/dist/ui/overlay/data/tutorials/planning/design.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/design.js +205 -0
- package/dist/ui/overlay/data/tutorials/planning/docs.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/docs.js +143 -0
- package/dist/ui/overlay/data/tutorials/planning/prd.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/prd.js +173 -0
- package/dist/ui/overlay/data/tutorials/planning/scaffold.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/scaffold.js +164 -0
- package/dist/ui/overlay/data/tutorials/planning/sketch.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/sketch.js +58 -0
- package/dist/ui/overlay/data/tutorials/projects/anchors.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/projects/anchors.js +248 -0
- package/dist/ui/overlay/data/tutorials/projects/import-project.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/projects/import-project.js +172 -0
- package/dist/ui/overlay/data/tutorials/projects/managing-projects.d.ts +8 -0
- package/dist/ui/overlay/data/tutorials/projects/managing-projects.js +212 -0
- package/dist/ui/overlay/data/tutorials/projects/new-project.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/projects/new-project.js +251 -0
- package/dist/ui/overlay/data/tutorials/projects/session-management.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/projects/session-management.js +169 -0
- package/dist/ui/overlay/data/tutorials/teams/background-execution.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/teams/background-execution.js +171 -0
- package/dist/ui/overlay/data/tutorials/teams/multi-terminal.d.ts +8 -0
- package/dist/ui/overlay/data/tutorials/teams/multi-terminal.js +147 -0
- package/dist/ui/overlay/data/tutorials/teams/task-assignment.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/teams/task-assignment.js +204 -0
- package/dist/ui/overlay/data/tutorials/teams/team-overview.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/teams/team-overview.js +165 -0
- package/dist/ui/overlay/data/tutorials/teams/working-with-agents.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/teams/working-with-agents.js +172 -0
- package/dist/ui/overlay/impl/agents-overlay-v2.js +6 -17
- package/dist/ui/overlay/impl/anchors-overlay-v2.js +30 -64
- package/dist/ui/overlay/impl/artifact-detail-overlay-v2.d.ts +43 -0
- package/dist/ui/overlay/impl/artifact-detail-overlay-v2.js +232 -0
- package/dist/ui/overlay/impl/artifact-overlay-v2.d.ts +40 -0
- package/dist/ui/overlay/impl/artifact-overlay-v2.js +115 -0
- package/dist/ui/overlay/impl/ask-user-overlay-v2.js +2 -5
- package/dist/ui/overlay/impl/background-overlay-v2.d.ts +40 -0
- package/dist/ui/overlay/impl/background-overlay-v2.js +147 -0
- package/dist/ui/overlay/impl/backlog-overlay-v2.d.ts +4 -1
- package/dist/ui/overlay/impl/backlog-overlay-v2.js +55 -16
- package/dist/ui/overlay/impl/changelog-overlay-v2.d.ts +44 -0
- package/dist/ui/overlay/impl/changelog-overlay-v2.js +165 -0
- package/dist/ui/overlay/impl/commands-overlay-v2.js +4 -6
- package/dist/ui/overlay/impl/config-overlay-v2.d.ts +12 -1
- package/dist/ui/overlay/impl/config-overlay-v2.js +164 -100
- package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.d.ts +83 -0
- package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.js +711 -0
- package/dist/ui/overlay/impl/dashboard-overlay-v2.d.ts +2 -0
- package/dist/ui/overlay/impl/dashboard-overlay-v2.js +26 -3
- package/dist/ui/overlay/impl/delegations-overlay-v2.d.ts +28 -0
- package/dist/ui/overlay/impl/delegations-overlay-v2.js +279 -0
- package/dist/ui/overlay/impl/docs-overlay-v2.js +12 -9
- package/dist/ui/overlay/impl/document-detail-overlay-v2.d.ts +7 -0
- package/dist/ui/overlay/impl/document-detail-overlay-v2.js +119 -78
- package/dist/ui/overlay/impl/filter-overlay-v2.d.ts +41 -0
- package/dist/ui/overlay/impl/filter-overlay-v2.js +110 -0
- package/dist/ui/overlay/impl/games-overlay-v2.d.ts +31 -0
- package/dist/ui/overlay/impl/games-overlay-v2.js +135 -0
- package/dist/ui/overlay/impl/help-overlay-v2.d.ts +26 -3
- package/dist/ui/overlay/impl/help-overlay-v2.js +20 -42
- package/dist/ui/overlay/impl/login-overlay-v2.d.ts +49 -0
- package/dist/ui/overlay/impl/login-overlay-v2.js +277 -0
- package/dist/ui/overlay/impl/mcp-overlay-v2.d.ts +63 -0
- package/dist/ui/overlay/impl/mcp-overlay-v2.js +907 -0
- package/dist/ui/overlay/impl/model-overlay-v2.d.ts +57 -13
- package/dist/ui/overlay/impl/model-overlay-v2.js +1086 -61
- package/dist/ui/overlay/impl/new-overlay-v2.d.ts +37 -6
- package/dist/ui/overlay/impl/new-overlay-v2.js +715 -65
- package/dist/ui/overlay/impl/notifications-overlay-v2.d.ts +20 -0
- package/dist/ui/overlay/impl/notifications-overlay-v2.js +116 -0
- package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.d.ts +76 -0
- package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.js +728 -0
- package/dist/ui/overlay/impl/pending-overlay-v2.d.ts +51 -0
- package/dist/ui/overlay/impl/pending-overlay-v2.js +445 -0
- package/dist/ui/overlay/impl/permission-overlay-v2.js +5 -5
- package/dist/ui/overlay/impl/permissions-overlay-v2.d.ts +85 -0
- package/dist/ui/overlay/impl/permissions-overlay-v2.js +820 -0
- package/dist/ui/overlay/impl/plan-approval-overlay-v2.d.ts +35 -0
- package/dist/ui/overlay/impl/plan-approval-overlay-v2.js +181 -0
- package/dist/ui/overlay/impl/project-edit-overlay-v2.d.ts +36 -0
- package/dist/ui/overlay/impl/project-edit-overlay-v2.js +195 -0
- package/dist/ui/overlay/impl/projects-overlay-v2.d.ts +1 -0
- package/dist/ui/overlay/impl/projects-overlay-v2.js +278 -44
- package/dist/ui/overlay/impl/reset-overlay-v2.d.ts +39 -0
- package/dist/ui/overlay/impl/reset-overlay-v2.js +107 -0
- package/dist/ui/overlay/impl/resume-overlay-v2.d.ts +60 -0
- package/dist/ui/overlay/impl/resume-overlay-v2.js +414 -0
- package/dist/ui/overlay/impl/session-mode-overlay-v2.d.ts +43 -0
- package/dist/ui/overlay/impl/session-mode-overlay-v2.js +124 -0
- package/dist/ui/overlay/impl/tasks-overlay-v2.d.ts +28 -0
- package/dist/ui/overlay/impl/tasks-overlay-v2.js +283 -0
- package/dist/ui/overlay/impl/team-overlay-v2.d.ts +86 -0
- package/dist/ui/overlay/impl/team-overlay-v2.js +692 -0
- package/dist/ui/overlay/impl/terminals-overlay-v2.d.ts +26 -0
- package/dist/ui/overlay/impl/terminals-overlay-v2.js +217 -0
- package/dist/ui/overlay/impl/tools-overlay-v2.js +3 -7
- package/dist/ui/overlay/impl/tutorial-overlay-v2.d.ts +30 -16
- package/dist/ui/overlay/impl/tutorial-overlay-v2.js +133 -956
- package/dist/ui/overlay/impl/workflow-overlay-v2.js +5 -1
- package/dist/ui/overlay/index.d.ts +20 -1
- package/dist/ui/overlay/index.js +19 -0
- package/dist/ui/overlay/types.d.ts +5 -0
- package/dist/ui/overlay-manager.d.ts +43 -0
- package/dist/ui/overlay-manager.js +238 -0
- package/dist/ui/overlays.js +4 -16
- package/dist/ui/permission-overlay.js +6 -5
- package/dist/ui/status-bar-controller.d.ts +33 -0
- package/dist/ui/status-bar-controller.js +99 -0
- package/dist/ui/subagent-renderer.js +3 -19
- package/dist/ui/terminal-autocomplete-utils.d.ts +23 -0
- package/dist/ui/terminal-autocomplete-utils.js +83 -0
- package/dist/ui/terminal-line-builders.d.ts +17 -0
- package/dist/ui/terminal-line-builders.js +42 -0
- package/dist/ui/terminal-render-item.d.ts +16 -0
- package/dist/ui/terminal-render-item.js +267 -0
- package/dist/ui/terminal-renderer.d.ts +7 -8
- package/dist/ui/terminal-renderer.js +7 -8
- package/dist/ui/terminal-types.d.ts +179 -0
- package/dist/ui/terminal-types.js +34 -0
- package/dist/ui/terminal-ui.d.ts +144 -276
- package/dist/ui/terminal-ui.js +384 -1861
- package/dist/ui/todo-zone.d.ts +19 -1
- package/dist/ui/todo-zone.js +71 -13
- package/dist/ui/tool-formatters.js +512 -1
- package/dist/ui/turn-metrics.d.ts +56 -0
- package/dist/ui/turn-metrics.js +75 -0
- package/dist/ui/types.d.ts +28 -0
- package/dist/ui/types.js +1 -0
- package/dist/ui/vscode-diff-ipc.d.ts +102 -0
- package/dist/ui/vscode-diff-ipc.js +385 -0
- package/dist/utils/credentials.d.ts +24 -5
- package/dist/utils/credentials.js +123 -9
- package/dist/utils/format-tokens.d.ts +13 -0
- package/dist/utils/format-tokens.js +18 -0
- package/dist/utils/git-config.d.ts +26 -0
- package/dist/utils/git-config.js +54 -0
- package/dist/utils/message-utils.d.ts +61 -0
- package/dist/utils/message-utils.js +72 -0
- package/dist/utils/model-tiers.d.ts +8 -1
- package/dist/utils/model-tiers.js +38 -16
- package/dist/utils/open-browser.d.ts +5 -0
- package/dist/utils/open-browser.js +32 -0
- package/dist/utils/path-safety.js +3 -2
- package/dist/utils/project-detection.d.ts +58 -0
- package/dist/utils/project-detection.js +424 -0
- package/dist/utils/project-memory.js +2 -1
- package/dist/utils/project-status.d.ts +2 -2
- package/dist/utils/startup-perf.d.ts +18 -0
- package/dist/utils/startup-perf.js +60 -0
- package/dist/utils/token-tracker.d.ts +62 -0
- package/dist/utils/token-tracker.js +150 -0
- package/dist/utils/token-types.d.ts +23 -0
- package/dist/utils/token-types.js +18 -0
- package/dist/utils/types/config-types.d.ts +32 -0
- package/dist/utils/types/config-types.js +8 -0
- package/dist/utils/update-checker.d.ts +28 -0
- package/dist/utils/update-checker.js +106 -0
- package/dist/utils/version.d.ts +7 -0
- package/dist/utils/version.js +10 -0
- package/dist/utils/vscode-detect.d.ts +39 -0
- package/dist/utils/vscode-detect.js +137 -0
- package/package.json +25 -12
- package/dist/commands/handler-types.d.ts +0 -68
- package/dist/commands/handler-types.js +0 -8
- package/dist/commands/handlers/agent-commands.d.ts +0 -13
- package/dist/commands/handlers/agent-commands.js +0 -305
- package/dist/commands/handlers/design-commands.d.ts +0 -15
- package/dist/commands/handlers/design-commands.js +0 -334
- package/dist/commands/handlers/index.d.ts +0 -20
- package/dist/commands/handlers/index.js +0 -43
- package/dist/commands/handlers/overlay-commands.d.ts +0 -21
- package/dist/commands/handlers/overlay-commands.js +0 -287
- package/dist/commands/handlers/project-commands.d.ts +0 -11
- package/dist/commands/handlers/project-commands.js +0 -167
- package/dist/commands/handlers/simple-commands.d.ts +0 -19
- package/dist/commands/handlers/simple-commands.js +0 -144
- package/dist/commands/registry.d.ts +0 -50
- package/dist/commands/registry.js +0 -75
- package/dist/index.old.d.ts +0 -7
- package/dist/index.old.js +0 -1014
- package/dist/repl.d.ts +0 -149
- package/dist/repl.js +0 -1151
- package/dist/templates/claude-md.d.ts +0 -7
- package/dist/templates/claude-md.js +0 -189
- package/dist/test-autocomplete.d.ts +0 -7
- package/dist/test-autocomplete.js +0 -85
- package/dist/test-tabbed-menu.d.ts +0 -7
- package/dist/test-tabbed-menu.js +0 -25
- package/dist/tool-selector.d.ts +0 -71
- package/dist/tool-selector.js +0 -184
- package/dist/ui/agents-overlay-v2.d.ts +0 -43
- package/dist/ui/agents-overlay-v2.js +0 -809
- package/dist/ui/agents-overlay.d.ts +0 -12
- package/dist/ui/agents-overlay.js +0 -863
- package/dist/ui/anchors-overlay.d.ts +0 -12
- package/dist/ui/anchors-overlay.js +0 -775
- package/dist/ui/arch-type-overlay.d.ts +0 -15
- package/dist/ui/arch-type-overlay.js +0 -201
- package/dist/ui/ask-user-overlay-v2.d.ts +0 -26
- package/dist/ui/ask-user-overlay-v2.js +0 -555
- package/dist/ui/ask-user-simple-overlay-v2.d.ts +0 -25
- package/dist/ui/ask-user-simple-overlay-v2.js +0 -215
- package/dist/ui/backlog-overlay.d.ts +0 -32
- package/dist/ui/backlog-overlay.js +0 -652
- package/dist/ui/commands-overlay-v2.d.ts +0 -33
- package/dist/ui/commands-overlay-v2.js +0 -441
- package/dist/ui/commands-overlay.d.ts +0 -16
- package/dist/ui/commands-overlay.js +0 -439
- package/dist/ui/config-overlay.d.ts +0 -35
- package/dist/ui/config-overlay.js +0 -707
- package/dist/ui/docs-overlay.d.ts +0 -17
- package/dist/ui/docs-overlay.js +0 -303
- package/dist/ui/footer-v2.d.ts +0 -222
- package/dist/ui/footer-v2.js +0 -1349
- package/dist/ui/help-overlay-v2.d.ts +0 -34
- package/dist/ui/help-overlay-v2.js +0 -309
- package/dist/ui/help-overlay.d.ts +0 -16
- package/dist/ui/help-overlay.js +0 -316
- package/dist/ui/init-overlay-v2.d.ts +0 -34
- package/dist/ui/init-overlay-v2.js +0 -600
- package/dist/ui/init-overlay.d.ts +0 -34
- package/dist/ui/init-overlay.js +0 -604
- package/dist/ui/input-prompt-v2.d.ts +0 -180
- package/dist/ui/input-prompt-v2.js +0 -999
- package/dist/ui/iteration-limit-overlay-v2.d.ts +0 -21
- package/dist/ui/iteration-limit-overlay-v2.js +0 -114
- package/dist/ui/keys-overlay-v2.d.ts +0 -41
- package/dist/ui/keys-overlay-v2.js +0 -248
- package/dist/ui/mascot-overlay-v2.d.ts +0 -41
- package/dist/ui/mascot-overlay-v2.js +0 -138
- package/dist/ui/mascot-overlay.d.ts +0 -21
- package/dist/ui/mascot-overlay.js +0 -146
- package/dist/ui/model-overlay-v2.d.ts +0 -49
- package/dist/ui/model-overlay-v2.js +0 -118
- package/dist/ui/model-overlay.d.ts +0 -27
- package/dist/ui/model-overlay.js +0 -221
- package/dist/ui/model-warning-overlay.d.ts +0 -30
- package/dist/ui/model-warning-overlay.js +0 -169
- package/dist/ui/new-overlay.d.ts +0 -34
- package/dist/ui/new-overlay.js +0 -604
- package/dist/ui/overlay/impl/init-overlay-v2.d.ts +0 -77
- package/dist/ui/overlay/impl/init-overlay-v2.js +0 -593
- package/dist/ui/overlay/overlay-types.d.ts +0 -128
- package/dist/ui/overlay/overlay-types.js +0 -22
- package/dist/ui/overlays/help-overlay-v2.d.ts +0 -28
- package/dist/ui/overlays/help-overlay-v2.js +0 -198
- package/dist/ui/overlays/index.d.ts +0 -11
- package/dist/ui/overlays/index.js +0 -11
- package/dist/ui/permission-overlay-v2.d.ts +0 -36
- package/dist/ui/permission-overlay-v2.js +0 -380
- package/dist/ui/projects-overlay.d.ts +0 -19
- package/dist/ui/projects-overlay.js +0 -484
- package/dist/ui/theme-overlay-v2.d.ts +0 -42
- package/dist/ui/theme-overlay-v2.js +0 -135
- package/dist/ui/theme-overlay.d.ts +0 -24
- package/dist/ui/theme-overlay.js +0 -127
- package/dist/ui/tools-overlay-v2.d.ts +0 -47
- package/dist/ui/tools-overlay-v2.js +0 -218
- package/dist/ui/tools-overlay.d.ts +0 -34
- package/dist/ui/tools-overlay.js +0 -230
- package/dist/ui/tutorial-overlay-v2.d.ts +0 -31
- package/dist/ui/tutorial-overlay-v2.js +0 -1035
- package/dist/ui/tutorial-overlay.d.ts +0 -11
- package/dist/ui/tutorial-overlay.js +0 -1034
- package/dist/ui/workflow-overlay.d.ts +0 -22
- package/dist/ui/workflow-overlay.js +0 -636
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Games Command Handler
|
|
3
|
+
*
|
|
4
|
+
* Hidden easter egg - terminal arcade games!
|
|
5
|
+
*/
|
|
6
|
+
import { GamesOverlayV2 } from '../../ui/overlay/index.js';
|
|
7
|
+
import { checkDailyBonus } from '../../games/index.js';
|
|
8
|
+
// =============================================================================
|
|
9
|
+
// Games Command
|
|
10
|
+
// =============================================================================
|
|
11
|
+
export const gamesCommand = {
|
|
12
|
+
name: 'games',
|
|
13
|
+
aliases: ['arcade', 'play'],
|
|
14
|
+
description: 'Open the arcade',
|
|
15
|
+
details: 'Hidden easter egg! Play classic arcade games. Earn coins by being productive with the CLI.',
|
|
16
|
+
examples: [
|
|
17
|
+
{ code: '/games', description: 'Open the arcade menu' },
|
|
18
|
+
{ code: '/arcade', description: 'Alias' },
|
|
19
|
+
],
|
|
20
|
+
interactions: [
|
|
21
|
+
'↑/↓ to select a game',
|
|
22
|
+
'Enter to play (costs 1 coin)',
|
|
23
|
+
'Q to exit',
|
|
24
|
+
],
|
|
25
|
+
// Note: Easter egg - could add hidden flag to CommandHandlerV2 if needed
|
|
26
|
+
async execute(_args, ctx) {
|
|
27
|
+
// Check for daily bonus (only on first open)
|
|
28
|
+
let gotDailyBonus = checkDailyBonus();
|
|
29
|
+
let keepPlaying = true;
|
|
30
|
+
// Loop: show arcade, play game, return to arcade
|
|
31
|
+
while (keepPlaying) {
|
|
32
|
+
// Show overlay (displays coins, bonus notification, and game selection)
|
|
33
|
+
const overlay = new GamesOverlayV2({ gotDailyBonus });
|
|
34
|
+
const result = await ctx.ui.showOverlay(overlay);
|
|
35
|
+
// Clear daily bonus notification after first display
|
|
36
|
+
gotDailyBonus = false;
|
|
37
|
+
if (result?.action === 'play' && result.game) {
|
|
38
|
+
// Pause the UI completely - game will take over stdin
|
|
39
|
+
ctx.ui.pauseAnimation();
|
|
40
|
+
try {
|
|
41
|
+
// Play the game (runs in alternate screen with its own input handling)
|
|
42
|
+
await result.game.play();
|
|
43
|
+
}
|
|
44
|
+
finally {
|
|
45
|
+
// Resume UI input handling
|
|
46
|
+
ctx.ui.resumeAnimation();
|
|
47
|
+
}
|
|
48
|
+
// After game ends, loop back to show arcade again
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
// User closed arcade (pressed Q or Escape)
|
|
52
|
+
keepPlaying = false;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return true;
|
|
56
|
+
},
|
|
57
|
+
};
|
|
@@ -9,4 +9,17 @@ export * from './settings.js';
|
|
|
9
9
|
export * from './context.js';
|
|
10
10
|
export * from './project.js';
|
|
11
11
|
export * from './debug.js';
|
|
12
|
+
export * from './session.js';
|
|
13
|
+
export * from './reset.js';
|
|
14
|
+
export * from './team.js';
|
|
15
|
+
export * from './games.js';
|
|
16
|
+
export * from './tasks.js';
|
|
17
|
+
export * from './background.js';
|
|
18
|
+
export * from './filter.js';
|
|
19
|
+
export * from './auth.js';
|
|
20
|
+
export * from './files.js';
|
|
21
|
+
export * from './terminals.js';
|
|
22
|
+
export * from './notifications.js';
|
|
23
|
+
export * from './mcp.js';
|
|
24
|
+
export * from './delegations.js';
|
|
12
25
|
export declare const allCommands: CommandHandlerV2[];
|
|
@@ -8,12 +8,38 @@ import { settingsCommands } from './settings.js';
|
|
|
8
8
|
import { contextCommands } from './context.js';
|
|
9
9
|
import { projectCommands } from './project.js';
|
|
10
10
|
import { debugCommands } from './debug.js';
|
|
11
|
+
import { sessionCommands } from './session.js';
|
|
12
|
+
import { resetCommands } from './reset.js';
|
|
13
|
+
import { teamCommands } from './team.js';
|
|
14
|
+
import { gamesCommand } from './games.js';
|
|
15
|
+
import { tasksCommand } from './tasks.js';
|
|
16
|
+
import { backgroundCommands } from './background.js';
|
|
17
|
+
import { filterCommands } from './filter.js';
|
|
18
|
+
import { authCommands } from './auth.js';
|
|
19
|
+
import { filesCommands } from './files.js';
|
|
20
|
+
import { terminalsCommands } from './terminals.js';
|
|
21
|
+
import { notificationsCommands } from './notifications.js';
|
|
22
|
+
import { mcpCommands } from './mcp.js';
|
|
23
|
+
import { delegationsCommands } from './delegations.js';
|
|
11
24
|
// Re-export individual modules
|
|
12
25
|
export * from './core.js';
|
|
13
26
|
export * from './settings.js';
|
|
14
27
|
export * from './context.js';
|
|
15
28
|
export * from './project.js';
|
|
16
29
|
export * from './debug.js';
|
|
30
|
+
export * from './session.js';
|
|
31
|
+
export * from './reset.js';
|
|
32
|
+
export * from './team.js';
|
|
33
|
+
export * from './games.js';
|
|
34
|
+
export * from './tasks.js';
|
|
35
|
+
export * from './background.js';
|
|
36
|
+
export * from './filter.js';
|
|
37
|
+
export * from './auth.js';
|
|
38
|
+
export * from './files.js';
|
|
39
|
+
export * from './terminals.js';
|
|
40
|
+
export * from './notifications.js';
|
|
41
|
+
export * from './mcp.js';
|
|
42
|
+
export * from './delegations.js';
|
|
17
43
|
// All commands combined
|
|
18
44
|
export const allCommands = [
|
|
19
45
|
...coreCommands,
|
|
@@ -21,4 +47,17 @@ export const allCommands = [
|
|
|
21
47
|
...contextCommands,
|
|
22
48
|
...projectCommands,
|
|
23
49
|
...debugCommands,
|
|
50
|
+
...sessionCommands,
|
|
51
|
+
...resetCommands,
|
|
52
|
+
...teamCommands,
|
|
53
|
+
gamesCommand,
|
|
54
|
+
tasksCommand,
|
|
55
|
+
...backgroundCommands,
|
|
56
|
+
...filterCommands,
|
|
57
|
+
...authCommands,
|
|
58
|
+
...filesCommands,
|
|
59
|
+
...terminalsCommands,
|
|
60
|
+
...notificationsCommands,
|
|
61
|
+
...mcpCommands,
|
|
62
|
+
...delegationsCommands,
|
|
24
63
|
];
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Command for REPL V2
|
|
3
|
+
*
|
|
4
|
+
* Shows the MCP servers overlay for viewing connected servers,
|
|
5
|
+
* their tools, and managing connections.
|
|
6
|
+
*/
|
|
7
|
+
import { MCPOverlayV2 } from '../../ui/overlay/impl/mcp-overlay-v2.js';
|
|
8
|
+
import { getMCPManager, ensureMCPManager } from '../../index.js';
|
|
9
|
+
import { getMCPConfigPath } from '../../settings/mcp-config.js';
|
|
10
|
+
import { getActiveProject } from '../../tools/project-db.js';
|
|
11
|
+
// =============================================================================
|
|
12
|
+
// /mcp Command
|
|
13
|
+
// =============================================================================
|
|
14
|
+
const mcpCommand = {
|
|
15
|
+
name: 'mcp',
|
|
16
|
+
description: 'View MCP servers and tools',
|
|
17
|
+
details: 'Opens the MCP (Model Context Protocol) servers overlay. ' +
|
|
18
|
+
'View connected servers, their discovered tools, and manage connections. ' +
|
|
19
|
+
`Configure servers in ${getMCPConfigPath()}.`,
|
|
20
|
+
examples: [
|
|
21
|
+
{ code: '/mcp', description: 'Show MCP servers dashboard' },
|
|
22
|
+
],
|
|
23
|
+
interactions: [
|
|
24
|
+
'Enter to view server details and tools',
|
|
25
|
+
'a to add a new server',
|
|
26
|
+
'r to restart a server',
|
|
27
|
+
'd to disconnect a server',
|
|
28
|
+
'/ to search',
|
|
29
|
+
'Esc to close',
|
|
30
|
+
],
|
|
31
|
+
async execute(_args, ctx) {
|
|
32
|
+
const manager = getMCPManager();
|
|
33
|
+
const project = getActiveProject();
|
|
34
|
+
const overlay = new MCPOverlayV2(manager, ctx.agent ?? null, ensureMCPManager, project?.path);
|
|
35
|
+
await ctx.ui.showOverlay(overlay);
|
|
36
|
+
return true;
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
export const mcpCommands = [mcpCommand];
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Notifications Command Handler
|
|
3
|
+
*
|
|
4
|
+
* Shows cross-session notifications from other terminals.
|
|
5
|
+
* Opens an interactive overlay when unread notifications exist.
|
|
6
|
+
*/
|
|
7
|
+
import type { CommandHandlerV2 } from '../types.js';
|
|
8
|
+
export declare const notificationsCommand: CommandHandlerV2;
|
|
9
|
+
export declare const notificationsCommands: CommandHandlerV2[];
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Notifications Command Handler
|
|
3
|
+
*
|
|
4
|
+
* Shows cross-session notifications from other terminals.
|
|
5
|
+
* Opens an interactive overlay when unread notifications exist.
|
|
6
|
+
*/
|
|
7
|
+
import { getNotificationManager } from '../../multi-agent/notification-manager.js';
|
|
8
|
+
import { NotificationsOverlayV2 } from '../../ui/overlay/impl/notifications-overlay-v2.js';
|
|
9
|
+
export const notificationsCommand = {
|
|
10
|
+
name: 'notifications',
|
|
11
|
+
aliases: ['notif'],
|
|
12
|
+
description: 'Show cross-session notifications',
|
|
13
|
+
details: 'Lists unread notifications from other terminal sessions (e.g. background agent completions, pending approval requests).',
|
|
14
|
+
examples: [
|
|
15
|
+
{ code: '/notifications', description: 'View unread notifications' },
|
|
16
|
+
{ code: '/notif', description: 'Alias for /notifications' },
|
|
17
|
+
],
|
|
18
|
+
async execute(_args, ctx) {
|
|
19
|
+
const manager = getNotificationManager();
|
|
20
|
+
if (!manager) {
|
|
21
|
+
ctx.ui.print({ type: 'info', message: 'Notification manager not available.' });
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
const count = manager.getUnreadCount();
|
|
25
|
+
if (count === 0) {
|
|
26
|
+
ctx.ui.print({ type: 'info', message: 'No unread notifications.' });
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
const overlay = new NotificationsOverlayV2();
|
|
30
|
+
await ctx.ui.showOverlay(overlay);
|
|
31
|
+
return true;
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
export const notificationsCommands = [notificationsCommand];
|
|
@@ -4,11 +4,12 @@
|
|
|
4
4
|
* Commands for project management: init, backlog, workflow, anchors, design, sketch, refine
|
|
5
5
|
*/
|
|
6
6
|
import { executeCommand } from '../registry.js';
|
|
7
|
-
import { BacklogOverlayV2, WorkflowOverlayV2, DocsOverlayV2, DocumentDetailOverlayV2, AnchorsOverlayV2, ProjectsOverlayV2, NewProjectOverlayV2,
|
|
7
|
+
import { BacklogOverlayV2, WorkflowOverlayV2, DocsOverlayV2, DocumentDetailOverlayV2, AnchorsOverlayV2, ProjectsOverlayV2, NewProjectOverlayV2, OnboardingWizardOverlayV2, KeysOverlayV2, ArchTypeOverlayV2, ModelWarningOverlayV2 } from '../../ui/overlay/index.js';
|
|
8
8
|
import { projectRepository, workItemRepository } from '../../db/repositories/index.js';
|
|
9
9
|
import { setCurrentProject, getCurrentProject } from '../../tools/project-db.js';
|
|
10
10
|
import { getSkillPrompt } from '../../repl-helpers.js';
|
|
11
11
|
import { getModelTier, modelMeetsTier } from '../../utils/model-tiers.js';
|
|
12
|
+
import { getCurrentProjectIdForTracking, handleProjectSwitch } from './session.js';
|
|
12
13
|
// =============================================================================
|
|
13
14
|
// Helper Functions
|
|
14
15
|
// =============================================================================
|
|
@@ -26,33 +27,80 @@ function syncFooterWithCurrentProject(ctx) {
|
|
|
26
27
|
export const newCommand = {
|
|
27
28
|
name: 'new',
|
|
28
29
|
description: 'Create a new project',
|
|
30
|
+
details: 'Interactive wizard to scaffold a new project. Asks about project name, type, tech stack, and documentation preferences. Creates project structure with COMPILR.md, backlog, and optional separate docs repo.',
|
|
31
|
+
examples: [{ code: '/new' }],
|
|
32
|
+
interactions: [
|
|
33
|
+
'8-step wizard (0-7)',
|
|
34
|
+
'↑/↓ for selection steps, type for input steps',
|
|
35
|
+
'Enter to confirm, Esc to go back',
|
|
36
|
+
],
|
|
29
37
|
async execute(_args, ctx) {
|
|
38
|
+
// Track project ID before overlay (for session/team switch handling)
|
|
39
|
+
const oldProjectId = getCurrentProjectIdForTracking();
|
|
30
40
|
const newProjectOverlay = new NewProjectOverlayV2();
|
|
31
41
|
const result = await ctx.ui.showOverlay(newProjectOverlay);
|
|
32
42
|
// User cancelled
|
|
33
43
|
if (!result?.created) {
|
|
34
44
|
return true;
|
|
35
45
|
}
|
|
36
|
-
//
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
46
|
+
// Check if this was an import or new project
|
|
47
|
+
const isImport = result.imported === true;
|
|
48
|
+
// Show success message
|
|
49
|
+
if (isImport) {
|
|
50
|
+
ctx.ui.print({ type: 'success', message: `Project imported: ${result.projectPath ?? ''}` });
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
ctx.ui.print({ type: 'success', message: `Project created: ${result.projectPath ?? ''}` });
|
|
54
|
+
if (result.docsPath) {
|
|
55
|
+
ctx.ui.print({ type: 'success', message: `Docs repo created: ${result.docsPath}` });
|
|
56
|
+
}
|
|
40
57
|
}
|
|
41
58
|
// Register project in database if tracking is enabled
|
|
42
59
|
if (result.trackInDatabase && result.projectName && result.projectPath) {
|
|
43
60
|
try {
|
|
61
|
+
// Determine display name - for imports, use detected name; for new projects, prettify
|
|
62
|
+
const displayName = result.detectedProject?.displayName
|
|
63
|
+
?? result.projectName.replace(/-/g, ' ').replace(/\b\w/g, (c) => c.toUpperCase());
|
|
44
64
|
const project = projectRepository.create({
|
|
45
65
|
name: result.projectName,
|
|
46
|
-
display_name:
|
|
66
|
+
display_name: displayName,
|
|
47
67
|
description: result.description,
|
|
48
68
|
path: result.projectPath,
|
|
49
69
|
type: 'general',
|
|
50
70
|
workflow_mode: result.workflowMode ?? 'flexible',
|
|
71
|
+
git_remote: result.gitRemote,
|
|
72
|
+
// For imports, include detected language and framework
|
|
73
|
+
language: result.detectedProject?.language ?? undefined,
|
|
74
|
+
framework: result.detectedProject?.framework ?? undefined,
|
|
75
|
+
package_manager: result.detectedProject?.packageManager ?? undefined,
|
|
51
76
|
});
|
|
77
|
+
// For imports, set lifecycle to 'active' immediately
|
|
78
|
+
if (isImport) {
|
|
79
|
+
projectRepository.update(project.id, { lifecycle_state: 'active' });
|
|
80
|
+
}
|
|
52
81
|
setCurrentProject({ id: project.id, name: project.name, displayName: project.displayName, path: project.path });
|
|
53
82
|
ctx.ui.setProjectName(project.displayName);
|
|
54
83
|
ctx.ui.print({ type: 'success', message: `Project tracked in database (${result.workflowMode ?? 'flexible'} mode)` });
|
|
55
84
|
ctx.ui.print({ type: 'success', message: `"${project.displayName}" is now the current project` });
|
|
85
|
+
// Handle project switch - saves old session/team and creates fresh team for new project
|
|
86
|
+
const switchResult = await handleProjectSwitch(oldProjectId, ctx.agent ?? null, ctx.team && ctx.agentFactory ? {
|
|
87
|
+
team: ctx.team,
|
|
88
|
+
agentFactory: ctx.agentFactory,
|
|
89
|
+
} : undefined);
|
|
90
|
+
if (switchResult?.switched) {
|
|
91
|
+
// Update the team if a new one was created
|
|
92
|
+
if (switchResult.newTeam && ctx.setTeam) {
|
|
93
|
+
ctx.setTeam(switchResult.newTeam);
|
|
94
|
+
// Update footer with new active agent
|
|
95
|
+
const active = switchResult.newTeam.getActive();
|
|
96
|
+
ctx.ui.setActiveTeamAgent({
|
|
97
|
+
id: active.id,
|
|
98
|
+
displayName: active.displayName,
|
|
99
|
+
mascot: active.mascot,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
ctx.ui.print({ type: 'info', message: 'Fresh team and session started for project.' });
|
|
103
|
+
}
|
|
56
104
|
}
|
|
57
105
|
catch (dbError) {
|
|
58
106
|
ctx.ui.print({ type: 'warning', message: `Could not register in database: ${dbError.message}` });
|
|
@@ -60,17 +108,29 @@ export const newCommand = {
|
|
|
60
108
|
}
|
|
61
109
|
// Show next steps
|
|
62
110
|
ctx.ui.print({ type: 'info', message: '' });
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
111
|
+
if (isImport) {
|
|
112
|
+
// Import-specific next steps
|
|
113
|
+
ctx.ui.print({ type: 'info', message: 'Next steps:' });
|
|
114
|
+
ctx.ui.print({ type: 'info', message: ' Review the generated COMPILR.md' });
|
|
115
|
+
ctx.ui.print({ type: 'info', message: ' Add existing work items with /backlog' });
|
|
116
|
+
ctx.ui.print({ type: 'info', message: ' Or ask the agent to explore the codebase' });
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
// New project next steps
|
|
120
|
+
ctx.ui.print({ type: 'info', message: 'Next steps:' });
|
|
121
|
+
ctx.ui.print({ type: 'info', message: ` cd ${result.projectPath?.split('/').pop() ?? 'project'}` });
|
|
122
|
+
ctx.ui.print({ type: 'info', message: ' npm install' });
|
|
123
|
+
ctx.ui.print({ type: 'info', message: ' npm run dev' });
|
|
124
|
+
}
|
|
67
125
|
ctx.ui.print({ type: 'info', message: '' });
|
|
68
126
|
// Hint for agent interaction
|
|
69
127
|
const compilrMdPath = result.docsPath
|
|
70
128
|
? `${result.docsPath}/COMPILR.md`
|
|
71
129
|
: `${result.projectPath ?? '.'}/COMPILR.md`;
|
|
72
130
|
ctx.ui.print({ type: 'info', message: `Tip: Ask the agent to read ${compilrMdPath} to get started!` });
|
|
73
|
-
|
|
131
|
+
if (!isImport) {
|
|
132
|
+
ctx.ui.print({ type: 'info', message: 'When ready to define requirements, type /design' });
|
|
133
|
+
}
|
|
74
134
|
return true;
|
|
75
135
|
},
|
|
76
136
|
};
|
|
@@ -79,10 +139,30 @@ export const newCommand = {
|
|
|
79
139
|
// =============================================================================
|
|
80
140
|
export const initCommand = {
|
|
81
141
|
name: 'init',
|
|
82
|
-
description: '
|
|
142
|
+
description: 'Run the CLI setup wizard',
|
|
143
|
+
details: 'Opens the onboarding wizard to configure API keys, git settings, and CLI preferences. Re-runnable anytime to update settings.',
|
|
144
|
+
examples: [{ code: '/init' }],
|
|
145
|
+
interactions: [
|
|
146
|
+
'↑/↓ to navigate wizard steps',
|
|
147
|
+
'Enter to confirm, Esc to go back',
|
|
148
|
+
'Type to enter values in input steps',
|
|
149
|
+
],
|
|
83
150
|
async execute(_args, ctx) {
|
|
84
|
-
|
|
85
|
-
|
|
151
|
+
// Show onboarding wizard (same as first-run experience)
|
|
152
|
+
// Loop if user chooses to configure keys
|
|
153
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
154
|
+
while (true) {
|
|
155
|
+
const wizard = new OnboardingWizardOverlayV2();
|
|
156
|
+
const result = await ctx.ui.showOverlay(wizard);
|
|
157
|
+
if (result?.openKeys) {
|
|
158
|
+
// User chose to configure keys - show keys overlay then loop back
|
|
159
|
+
const keysOverlay = new KeysOverlayV2();
|
|
160
|
+
await ctx.ui.showOverlay(keysOverlay);
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
163
|
+
// Done (completed or cancelled)
|
|
164
|
+
break;
|
|
165
|
+
}
|
|
86
166
|
return true;
|
|
87
167
|
},
|
|
88
168
|
};
|
|
@@ -92,8 +172,19 @@ export const initCommand = {
|
|
|
92
172
|
export const backlogCommand = {
|
|
93
173
|
name: 'backlog',
|
|
94
174
|
description: 'View and manage project backlog',
|
|
175
|
+
details: 'Opens an interactive overlay to browse, filter, and manage backlog items. You can add new items, change status/priority, search, and view details.',
|
|
176
|
+
examples: [{ code: '/backlog' }],
|
|
177
|
+
interactions: [
|
|
178
|
+
'Tab cycles: All → Feature → Bug → Tech-Debt → Chore → Active',
|
|
179
|
+
'↑/↓ to navigate, ←/→ for pages',
|
|
180
|
+
'Enter for details, Space to toggle status',
|
|
181
|
+
'/ to search, n for new item',
|
|
182
|
+
'Esc to close',
|
|
183
|
+
],
|
|
95
184
|
async execute(_args, ctx) {
|
|
96
|
-
|
|
185
|
+
// Get team agent IDs for owner selection in detail screen
|
|
186
|
+
const teamAgentIds = ctx.team?.getAgentIds() ?? [];
|
|
187
|
+
const backlogOverlay = new BacklogOverlayV2(undefined, teamAgentIds);
|
|
97
188
|
const result = await ctx.ui.showOverlay(backlogOverlay);
|
|
98
189
|
if (result?.modified) {
|
|
99
190
|
ctx.ui.print({ type: 'success', message: 'Backlog updated.' });
|
|
@@ -107,9 +198,42 @@ export const backlogCommand = {
|
|
|
107
198
|
export const workflowCommand = {
|
|
108
199
|
name: 'workflow',
|
|
109
200
|
description: 'View project workflow dashboard',
|
|
201
|
+
details: 'Displays the current project workflow status, progress through phases (init → design → backlog → scaffold → build), and recommended next actions. Helps you understand where you are in the development process.',
|
|
202
|
+
examples: [{ code: '/workflow' }],
|
|
203
|
+
interactions: [
|
|
204
|
+
'↑/↓ to navigate actions',
|
|
205
|
+
'Enter to run selected action',
|
|
206
|
+
'Esc to close',
|
|
207
|
+
],
|
|
110
208
|
async execute(_args, ctx) {
|
|
209
|
+
// Track project ID before overlay (for session switch handling)
|
|
210
|
+
const oldProjectId = getCurrentProjectIdForTracking();
|
|
111
211
|
const workflowOverlay = new WorkflowOverlayV2();
|
|
112
212
|
const result = await ctx.ui.showOverlay(workflowOverlay);
|
|
213
|
+
// Handle project switch if it occurred (includes team switching)
|
|
214
|
+
const switchResult = await handleProjectSwitch(oldProjectId, ctx.agent ?? null, ctx.team && ctx.agentFactory ? {
|
|
215
|
+
team: ctx.team,
|
|
216
|
+
agentFactory: ctx.agentFactory,
|
|
217
|
+
} : undefined);
|
|
218
|
+
if (switchResult?.switched) {
|
|
219
|
+
// Update the team if a new one was created/loaded
|
|
220
|
+
if (switchResult.newTeam && ctx.setTeam) {
|
|
221
|
+
ctx.setTeam(switchResult.newTeam);
|
|
222
|
+
// Update footer with new active agent
|
|
223
|
+
const active = switchResult.newTeam.getActive();
|
|
224
|
+
ctx.ui.setActiveTeamAgent({
|
|
225
|
+
id: active.id,
|
|
226
|
+
displayName: active.displayName,
|
|
227
|
+
mascot: active.mascot,
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
if (switchResult.sessionRestored) {
|
|
231
|
+
ctx.ui.print({ type: 'info', message: `Session restored (${String(switchResult.messageCount)} messages).` });
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
ctx.ui.print({ type: 'info', message: 'Started fresh session for this project.' });
|
|
235
|
+
}
|
|
236
|
+
}
|
|
113
237
|
// Handle workflow result - execute command if returned
|
|
114
238
|
if (result?.command) {
|
|
115
239
|
// Strip leading slash and execute the command
|
|
@@ -127,6 +251,16 @@ export const workflowCommand = {
|
|
|
127
251
|
export const anchorsCommand = {
|
|
128
252
|
name: 'anchors',
|
|
129
253
|
description: 'View and manage anchors (persistent context)',
|
|
254
|
+
details: 'Anchors are critical pieces of information that survive context compaction. They are always included at the top of the context window. Manage both global anchors and project-specific anchors.',
|
|
255
|
+
examples: [{ code: '/anchors' }],
|
|
256
|
+
interactions: [
|
|
257
|
+
'↑/↓ to navigate anchors',
|
|
258
|
+
'[a] Add new anchor',
|
|
259
|
+
'[e] or Enter to edit',
|
|
260
|
+
'[d] to delete',
|
|
261
|
+
'[r] to refresh',
|
|
262
|
+
'Esc to close',
|
|
263
|
+
],
|
|
130
264
|
async execute(_args, ctx) {
|
|
131
265
|
const anchorsOverlay = new AnchorsOverlayV2();
|
|
132
266
|
const result = await ctx.ui.showOverlay(anchorsOverlay);
|
|
@@ -142,6 +276,8 @@ export const anchorsCommand = {
|
|
|
142
276
|
export const designCommand = {
|
|
143
277
|
name: 'design',
|
|
144
278
|
description: 'Agent-driven requirements gathering',
|
|
279
|
+
details: 'Comprehensive requirements gathering workflow. The agent guides you through vision, features, and technical context phases, then creates a PRD and populates the backlog with 5-15 items. Best used after /new.',
|
|
280
|
+
examples: [{ code: '/design' }],
|
|
145
281
|
async execute(_args, ctx) {
|
|
146
282
|
// Check if a project is set
|
|
147
283
|
const currentProject = getCurrentProject();
|
|
@@ -217,6 +353,8 @@ Please start by using todo_write to track the design phases, then begin with Pha
|
|
|
217
353
|
export const sketchCommand = {
|
|
218
354
|
name: 'sketch',
|
|
219
355
|
description: 'Quick 6-question project outline',
|
|
356
|
+
details: 'Lightweight alternative to /design. Asks 6 quick questions and creates 3-8 backlog items. Good for small projects or when you want to get started quickly.',
|
|
357
|
+
examples: [{ code: '/sketch' }],
|
|
220
358
|
execute(_args, ctx) {
|
|
221
359
|
// Check if a project is set
|
|
222
360
|
const currentProject = getCurrentProject();
|
|
@@ -263,6 +401,11 @@ Please start by asking me about the type of application I'm building using the a
|
|
|
263
401
|
export const refineCommand = {
|
|
264
402
|
name: 'refine',
|
|
265
403
|
description: 'Iterative refinement of requirements',
|
|
404
|
+
details: 'Iteratively refine backlog items. Can focus on a specific item or let the agent suggest what to refine. Useful for breaking down large items or adding acceptance criteria.',
|
|
405
|
+
examples: [
|
|
406
|
+
{ code: '/refine', description: 'Agent picks item to refine' },
|
|
407
|
+
{ code: '/refine REQ-003', description: 'Refine specific item' },
|
|
408
|
+
],
|
|
266
409
|
async execute(args, ctx) {
|
|
267
410
|
// Check if a project is set
|
|
268
411
|
const currentProject = getCurrentProject();
|
|
@@ -353,7 +496,13 @@ ${agentInstructions}`;
|
|
|
353
496
|
// =============================================================================
|
|
354
497
|
export const buildCommand = {
|
|
355
498
|
name: 'build',
|
|
356
|
-
description: '
|
|
499
|
+
description: 'Implement a backlog item',
|
|
500
|
+
details: 'Picks the highest priority backlog item (or a specific one) and guides the agent through implementing it. Includes planning, coding, testing, and committing. Auto-detects if project scaffold is needed first.',
|
|
501
|
+
examples: [
|
|
502
|
+
{ code: '/build', description: 'Pick highest priority item' },
|
|
503
|
+
{ code: '/build REQ-003', description: 'Build specific item' },
|
|
504
|
+
{ code: '/build scaffold', description: 'Create project structure first' },
|
|
505
|
+
],
|
|
357
506
|
async execute(args, ctx) {
|
|
358
507
|
const argTrimmed = args.trim();
|
|
359
508
|
// Handle `/build scaffold` - redirect to scaffold command
|
|
@@ -499,7 +648,12 @@ Please start by:
|
|
|
499
648
|
// =============================================================================
|
|
500
649
|
export const noteCommand = {
|
|
501
650
|
name: 'note',
|
|
502
|
-
description: 'Create a session note',
|
|
651
|
+
description: 'Create a session note capturing work done',
|
|
652
|
+
details: 'Creates a structured markdown note summarizing the current session including changes made, decisions, blockers, and next steps. Optionally provide a title.',
|
|
653
|
+
examples: [
|
|
654
|
+
{ code: '/note', description: 'Auto-generated title' },
|
|
655
|
+
{ code: '/note "Fixed auth bug"', description: 'Custom title' },
|
|
656
|
+
],
|
|
503
657
|
execute(args, ctx) {
|
|
504
658
|
// Check if a project is set
|
|
505
659
|
const currentProject = getCurrentProject();
|
|
@@ -551,7 +705,13 @@ Review the conversation context to understand what was accomplished, then create
|
|
|
551
705
|
// =============================================================================
|
|
552
706
|
export const prdCommand = {
|
|
553
707
|
name: 'prd',
|
|
554
|
-
description: '
|
|
708
|
+
description: 'Amend or enhance the Product Requirements Document',
|
|
709
|
+
details: 'Update or refine the PRD created during /design. The agent reads the existing PRD and guides you through updating specific sections.',
|
|
710
|
+
examples: [
|
|
711
|
+
{ code: '/prd', description: 'Interactive section selection' },
|
|
712
|
+
{ code: '/prd vision', description: 'Update vision section' },
|
|
713
|
+
{ code: '/prd scope', description: 'Update scope section' },
|
|
714
|
+
],
|
|
555
715
|
execute(args, ctx) {
|
|
556
716
|
// Check if a project is set
|
|
557
717
|
const currentProject = getCurrentProject();
|
|
@@ -585,7 +745,7 @@ ${prdPrompt}
|
|
|
585
745
|
|
|
586
746
|
${sectionInstruction}
|
|
587
747
|
|
|
588
|
-
Start by reading the existing PRD.
|
|
748
|
+
Start by reading the existing PRD from the database using project_document_get({ doc_type: "prd" }). If no document exists yet, create a new one.`;
|
|
589
749
|
// Queue message for agent
|
|
590
750
|
ctx.queueAgentMessage({
|
|
591
751
|
message: fullMessage,
|
|
@@ -601,7 +761,9 @@ Start by reading the existing PRD.md file to understand current state.`;
|
|
|
601
761
|
// =============================================================================
|
|
602
762
|
export const scaffoldCommand = {
|
|
603
763
|
name: 'scaffold',
|
|
604
|
-
description: 'Create project
|
|
764
|
+
description: 'Create project foundation/structure',
|
|
765
|
+
details: 'Creates the base project structure (folders, config files, dependencies) based on tech stack from COMPILR.md. Use this before implementing features if starting from scratch. Alias for /build scaffold.',
|
|
766
|
+
examples: [{ code: '/scaffold' }],
|
|
605
767
|
async execute(_args, ctx) {
|
|
606
768
|
// Check if a project is set
|
|
607
769
|
const currentProject = getCurrentProject();
|
|
@@ -692,7 +854,18 @@ Please start by reading the project documents from the database using project_do
|
|
|
692
854
|
// =============================================================================
|
|
693
855
|
export const archCommand = {
|
|
694
856
|
name: 'arch',
|
|
695
|
-
description: 'Create architecture documentation',
|
|
857
|
+
description: 'Create architecture documentation (ADRs, diagrams, etc.)',
|
|
858
|
+
details: 'Guides you through creating architecture documentation. Choose from ADRs (Architecture Decision Records), system diagrams, data models, or API designs. The agent asks questions and generates properly formatted documentation.',
|
|
859
|
+
examples: [
|
|
860
|
+
{ code: '/arch', description: 'Interactive type selection' },
|
|
861
|
+
{ code: '/arch decision', description: 'Create ADR directly' },
|
|
862
|
+
{ code: '/arch diagram', description: 'Create system diagram' },
|
|
863
|
+
],
|
|
864
|
+
interactions: [
|
|
865
|
+
'↑/↓ or 1-5 to select type',
|
|
866
|
+
'Enter to confirm',
|
|
867
|
+
'Esc to cancel',
|
|
868
|
+
],
|
|
696
869
|
async execute(_args, ctx) {
|
|
697
870
|
// Check if a project is set (use database, not filesystem)
|
|
698
871
|
const currentProject = getCurrentProject();
|
|
@@ -755,7 +928,17 @@ Please start by using project_document_list to find any existing PRD, and workit
|
|
|
755
928
|
// =============================================================================
|
|
756
929
|
export const docsCommand = {
|
|
757
930
|
name: 'docs',
|
|
758
|
-
description: 'View project documents (PRD, architecture,
|
|
931
|
+
description: 'View project documents (PRD, architecture, etc.)',
|
|
932
|
+
details: 'Opens an overlay to browse and read documents stored in the database for the active project. Documents are created by /design, /arch, and other workflow commands.',
|
|
933
|
+
examples: [
|
|
934
|
+
{ code: '/docs', description: 'List all documents' },
|
|
935
|
+
],
|
|
936
|
+
interactions: [
|
|
937
|
+
'↑/↓ or j/k to navigate',
|
|
938
|
+
'Enter to view document',
|
|
939
|
+
'↑/↓ to scroll content',
|
|
940
|
+
'Esc to go back or close',
|
|
941
|
+
],
|
|
759
942
|
async execute(_args, ctx) {
|
|
760
943
|
// Loop: show list → detail → back to list (until user cancels list or Ctrl+C from detail)
|
|
761
944
|
let showList = true;
|
|
@@ -783,10 +966,48 @@ export const docsCommand = {
|
|
|
783
966
|
// =============================================================================
|
|
784
967
|
export const projectsCommand = {
|
|
785
968
|
name: 'projects',
|
|
786
|
-
description: 'View and manage
|
|
969
|
+
description: 'View and manage projects',
|
|
970
|
+
details: 'Opens an interactive overlay to browse, filter, and manage projects tracked in the database. You can view details, open projects, archive, restore, or delete them.',
|
|
971
|
+
examples: [{ code: '/projects' }],
|
|
972
|
+
interactions: [
|
|
973
|
+
'Tab cycles: All → Active → Paused → Completed → Archived',
|
|
974
|
+
'↑/↓ or j/k to navigate',
|
|
975
|
+
'Enter to view details and actions',
|
|
976
|
+
'x to archive/restore project',
|
|
977
|
+
'd to delete project',
|
|
978
|
+
'a to show/hide archived',
|
|
979
|
+
'Esc to close',
|
|
980
|
+
],
|
|
787
981
|
async execute(_args, ctx) {
|
|
982
|
+
// Track project ID before overlay (for session switch handling)
|
|
983
|
+
const oldProjectId = getCurrentProjectIdForTracking();
|
|
788
984
|
const projectsOverlay = new ProjectsOverlayV2();
|
|
789
985
|
await ctx.ui.showOverlay(projectsOverlay);
|
|
986
|
+
// Handle project switch if it occurred (includes team switching)
|
|
987
|
+
const switchResult = await handleProjectSwitch(oldProjectId, ctx.agent ?? null, ctx.team && ctx.agentFactory ? {
|
|
988
|
+
team: ctx.team,
|
|
989
|
+
agentFactory: ctx.agentFactory,
|
|
990
|
+
} : undefined);
|
|
991
|
+
if (switchResult?.switched) {
|
|
992
|
+
const current = getCurrentProject();
|
|
993
|
+
// Update the team if a new one was created/loaded
|
|
994
|
+
if (switchResult.newTeam && ctx.setTeam) {
|
|
995
|
+
ctx.setTeam(switchResult.newTeam);
|
|
996
|
+
// Update footer with new active agent
|
|
997
|
+
const active = switchResult.newTeam.getActive();
|
|
998
|
+
ctx.ui.setActiveTeamAgent({
|
|
999
|
+
id: active.id,
|
|
1000
|
+
displayName: active.displayName,
|
|
1001
|
+
mascot: active.mascot,
|
|
1002
|
+
});
|
|
1003
|
+
}
|
|
1004
|
+
if (switchResult.sessionRestored) {
|
|
1005
|
+
ctx.ui.print({ type: 'success', message: `Switched to "${current?.displayName ?? 'project'}" - session restored (${String(switchResult.messageCount)} messages).` });
|
|
1006
|
+
}
|
|
1007
|
+
else {
|
|
1008
|
+
ctx.ui.print({ type: 'success', message: `Switched to "${current?.displayName ?? 'project'}" - fresh session.` });
|
|
1009
|
+
}
|
|
1010
|
+
}
|
|
790
1011
|
// Sync footer with current project (may have changed during overlay)
|
|
791
1012
|
syncFooterWithCurrentProject(ctx);
|
|
792
1013
|
return true;
|