@compilr-dev/cli 0.5.0 → 0.5.2
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/LICENSE +108 -0
- package/README.md +237 -69
- 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 +286 -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 +295 -31
- 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 +6 -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 +5 -2
- package/dist/repl-v2.d.ts +401 -2
- package/dist/repl-v2.js +2588 -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 +113 -0
- package/dist/tool-names.js +239 -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.d.ts +2 -2
- package/dist/tools/backlog.js +1 -1
- package/dist/tools/db-tools.d.ts +13 -61
- package/dist/tools/db-tools.js +12 -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/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/platform-adapter.d.ts +35 -0
- package/dist/tools/platform-adapter.js +404 -0
- package/dist/tools/project-db.d.ts +5 -73
- package/dist/tools/project-db.js +5 -336
- package/dist/tools.d.ts +67 -2
- package/dist/tools.js +240 -48
- 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 +52 -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.d.ts +1 -0
- package/dist/ui/overlay/impl/workflow-overlay-v2.js +10 -4
- 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 +696 -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 +27 -13
- 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/tools/anchor-tools.d.ts +0 -31
- package/dist/tools/anchor-tools.js +0 -255
- package/dist/tools/backlog-wrappers.d.ts +0 -54
- package/dist/tools/backlog-wrappers.js +0 -338
- package/dist/tools/document-db.d.ts +0 -43
- package/dist/tools/document-db.js +0 -220
- package/dist/tools/workitem-db.d.ts +0 -103
- package/dist/tools/workitem-db.js +0 -549
- 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
|
@@ -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,
|
|
8
|
-
import { projectRepository, workItemRepository } from '../../db/repositories/index.js';
|
|
7
|
+
import { BacklogOverlayV2, WorkflowOverlayV2, DocsOverlayV2, DocumentDetailOverlayV2, AnchorsOverlayV2, ProjectsOverlayV2, NewProjectOverlayV2, OnboardingWizardOverlayV2, KeysOverlayV2, ArchTypeOverlayV2, ModelWarningOverlayV2 } from '../../ui/overlay/index.js';
|
|
8
|
+
import { projectRepository, workItemRepository, documentRepository } 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: 'Smart project scaffolding. If an Application Model exists, generates a complete app via the factory. If the PRD mentions entities, offers to build a model first. Otherwise falls back to manual scaffolding.',
|
|
766
|
+
examples: [{ code: '/scaffold' }],
|
|
605
767
|
async execute(_args, ctx) {
|
|
606
768
|
// Check if a project is set
|
|
607
769
|
const currentProject = getCurrentProject();
|
|
@@ -645,14 +807,53 @@ export const scaffoldCommand = {
|
|
|
645
807
|
break;
|
|
646
808
|
}
|
|
647
809
|
}
|
|
648
|
-
//
|
|
649
|
-
|
|
810
|
+
// Check if an Application Model exists for this project
|
|
811
|
+
const appModelDoc = documentRepository.getByType(currentProject.id, 'app-model');
|
|
812
|
+
const hasAppModel = appModelDoc !== null;
|
|
813
|
+
let modelEntityCount = 0;
|
|
814
|
+
if (appModelDoc) {
|
|
815
|
+
try {
|
|
816
|
+
const parsed = JSON.parse(appModelDoc.content);
|
|
817
|
+
modelEntityCount = parsed.entities?.length ?? 0;
|
|
818
|
+
}
|
|
819
|
+
catch { /* invalid JSON — treat as no model */ }
|
|
820
|
+
}
|
|
821
|
+
// Check PRD for entity patterns (only if no model yet)
|
|
822
|
+
let prdMentionsEntities = false;
|
|
823
|
+
if (!hasAppModel) {
|
|
824
|
+
const prdDoc = documentRepository.getByType(currentProject.id, 'prd');
|
|
825
|
+
if (prdDoc) {
|
|
826
|
+
const lower = prdDoc.content.toLowerCase();
|
|
827
|
+
prdMentionsEntities = ['manage', 'track', 'crud', 'entities', 'database', 'table', 'records', 'list of', 'collection of']
|
|
828
|
+
.some(p => lower.includes(p));
|
|
829
|
+
}
|
|
830
|
+
}
|
|
831
|
+
// Choose skill: factory-scaffold if model exists or PRD has entities, else manual scaffold
|
|
832
|
+
let skillName;
|
|
833
|
+
let factoryContext = '';
|
|
834
|
+
if (hasAppModel && modelEntityCount > 0) {
|
|
835
|
+
skillName = 'factory-scaffold';
|
|
836
|
+
factoryContext = `\n## FACTORY CONTEXT\nAn Application Model exists with ${String(modelEntityCount)} entities. Use factory tools to scaffold from this model.\nIMPORTANT: Pass output_dir: "${currentProject.path}" to factory_scaffold.\n`;
|
|
837
|
+
ctx.ui.print({ type: 'info', message: `Application Model found (${String(modelEntityCount)} entities). Using factory generation.` });
|
|
838
|
+
}
|
|
839
|
+
else if (prdMentionsEntities) {
|
|
840
|
+
skillName = 'factory-scaffold';
|
|
841
|
+
factoryContext = `\n## FACTORY CONTEXT\nNo Application Model yet, but the PRD mentions entity patterns. Build the model first, then generate.\nIMPORTANT: Pass output_dir: "${currentProject.path}" to factory_scaffold.\n`;
|
|
842
|
+
ctx.ui.print({ type: 'info', message: 'Entity patterns detected in PRD. Using factory-assisted generation.' });
|
|
843
|
+
}
|
|
844
|
+
else {
|
|
845
|
+
skillName = 'scaffold';
|
|
846
|
+
}
|
|
847
|
+
// Get skill prompt and replace path placeholder
|
|
848
|
+
let scaffoldPrompt = getSkillPrompt(skillName);
|
|
650
849
|
if (!scaffoldPrompt) {
|
|
651
|
-
ctx.ui.print({ type: 'error', message:
|
|
850
|
+
ctx.ui.print({ type: 'error', message: `${skillName} skill not found.` });
|
|
652
851
|
return true;
|
|
653
852
|
}
|
|
654
|
-
// Replace {{projectPath}} placeholder with actual path
|
|
655
853
|
scaffoldPrompt = scaffoldPrompt.replace(/\{\{projectPath\}\}/g, currentProject.path);
|
|
854
|
+
const closingInstruction = skillName === 'factory-scaffold'
|
|
855
|
+
? 'Start by checking the Application Model with app_model_get. If no model exists, read the PRD with project_document_get and build the model incrementally using app_model_update. Then generate with factory_scaffold.'
|
|
856
|
+
: 'Start by reading the project documents from the database using project_document_list and project_document_get. Then create a plan with todo_write before generating files.';
|
|
656
857
|
// Build full message for agent with explicit project path context
|
|
657
858
|
const fullMessage = `I want to create the project scaffold/foundation.
|
|
658
859
|
|
|
@@ -660,7 +861,7 @@ export const scaffoldCommand = {
|
|
|
660
861
|
- Project Name: ${currentProject.name} (ID: ${String(currentProject.id)})
|
|
661
862
|
- **Project Directory: ${currentProject.path}**
|
|
662
863
|
- ALL files MUST be created in this directory
|
|
663
|
-
|
|
864
|
+
${factoryContext}
|
|
664
865
|
## TOOL RESTRICTIONS (CRITICAL)
|
|
665
866
|
- Do NOT use detect_project or find_project_root
|
|
666
867
|
- Do NOT scan filesystem to detect project type
|
|
@@ -678,11 +879,15 @@ When creating files:
|
|
|
678
879
|
|
|
679
880
|
${scaffoldPrompt}
|
|
680
881
|
|
|
681
|
-
|
|
882
|
+
${closingInstruction}`;
|
|
682
883
|
// Queue message for agent
|
|
683
884
|
ctx.queueAgentMessage({
|
|
684
885
|
message: fullMessage,
|
|
685
|
-
displayMessage:
|
|
886
|
+
displayMessage: hasAppModel
|
|
887
|
+
? 'Generate project from Application Model.'
|
|
888
|
+
: prdMentionsEntities
|
|
889
|
+
? 'Build model and generate project.'
|
|
890
|
+
: 'Create project scaffold.',
|
|
686
891
|
});
|
|
687
892
|
return true;
|
|
688
893
|
},
|
|
@@ -692,7 +897,18 @@ Please start by reading the project documents from the database using project_do
|
|
|
692
897
|
// =============================================================================
|
|
693
898
|
export const archCommand = {
|
|
694
899
|
name: 'arch',
|
|
695
|
-
description: 'Create architecture documentation',
|
|
900
|
+
description: 'Create architecture documentation (ADRs, diagrams, etc.)',
|
|
901
|
+
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.',
|
|
902
|
+
examples: [
|
|
903
|
+
{ code: '/arch', description: 'Interactive type selection' },
|
|
904
|
+
{ code: '/arch decision', description: 'Create ADR directly' },
|
|
905
|
+
{ code: '/arch diagram', description: 'Create system diagram' },
|
|
906
|
+
],
|
|
907
|
+
interactions: [
|
|
908
|
+
'↑/↓ or 1-5 to select type',
|
|
909
|
+
'Enter to confirm',
|
|
910
|
+
'Esc to cancel',
|
|
911
|
+
],
|
|
696
912
|
async execute(_args, ctx) {
|
|
697
913
|
// Check if a project is set (use database, not filesystem)
|
|
698
914
|
const currentProject = getCurrentProject();
|
|
@@ -755,7 +971,17 @@ Please start by using project_document_list to find any existing PRD, and workit
|
|
|
755
971
|
// =============================================================================
|
|
756
972
|
export const docsCommand = {
|
|
757
973
|
name: 'docs',
|
|
758
|
-
description: 'View project documents (PRD, architecture,
|
|
974
|
+
description: 'View project documents (PRD, architecture, etc.)',
|
|
975
|
+
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.',
|
|
976
|
+
examples: [
|
|
977
|
+
{ code: '/docs', description: 'List all documents' },
|
|
978
|
+
],
|
|
979
|
+
interactions: [
|
|
980
|
+
'↑/↓ or j/k to navigate',
|
|
981
|
+
'Enter to view document',
|
|
982
|
+
'↑/↓ to scroll content',
|
|
983
|
+
'Esc to go back or close',
|
|
984
|
+
],
|
|
759
985
|
async execute(_args, ctx) {
|
|
760
986
|
// Loop: show list → detail → back to list (until user cancels list or Ctrl+C from detail)
|
|
761
987
|
let showList = true;
|
|
@@ -783,10 +1009,48 @@ export const docsCommand = {
|
|
|
783
1009
|
// =============================================================================
|
|
784
1010
|
export const projectsCommand = {
|
|
785
1011
|
name: 'projects',
|
|
786
|
-
description: 'View and manage
|
|
1012
|
+
description: 'View and manage projects',
|
|
1013
|
+
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.',
|
|
1014
|
+
examples: [{ code: '/projects' }],
|
|
1015
|
+
interactions: [
|
|
1016
|
+
'Tab cycles: All → Active → Paused → Completed → Archived',
|
|
1017
|
+
'↑/↓ or j/k to navigate',
|
|
1018
|
+
'Enter to view details and actions',
|
|
1019
|
+
'x to archive/restore project',
|
|
1020
|
+
'd to delete project',
|
|
1021
|
+
'a to show/hide archived',
|
|
1022
|
+
'Esc to close',
|
|
1023
|
+
],
|
|
787
1024
|
async execute(_args, ctx) {
|
|
1025
|
+
// Track project ID before overlay (for session switch handling)
|
|
1026
|
+
const oldProjectId = getCurrentProjectIdForTracking();
|
|
788
1027
|
const projectsOverlay = new ProjectsOverlayV2();
|
|
789
1028
|
await ctx.ui.showOverlay(projectsOverlay);
|
|
1029
|
+
// Handle project switch if it occurred (includes team switching)
|
|
1030
|
+
const switchResult = await handleProjectSwitch(oldProjectId, ctx.agent ?? null, ctx.team && ctx.agentFactory ? {
|
|
1031
|
+
team: ctx.team,
|
|
1032
|
+
agentFactory: ctx.agentFactory,
|
|
1033
|
+
} : undefined);
|
|
1034
|
+
if (switchResult?.switched) {
|
|
1035
|
+
const current = getCurrentProject();
|
|
1036
|
+
// Update the team if a new one was created/loaded
|
|
1037
|
+
if (switchResult.newTeam && ctx.setTeam) {
|
|
1038
|
+
ctx.setTeam(switchResult.newTeam);
|
|
1039
|
+
// Update footer with new active agent
|
|
1040
|
+
const active = switchResult.newTeam.getActive();
|
|
1041
|
+
ctx.ui.setActiveTeamAgent({
|
|
1042
|
+
id: active.id,
|
|
1043
|
+
displayName: active.displayName,
|
|
1044
|
+
mascot: active.mascot,
|
|
1045
|
+
});
|
|
1046
|
+
}
|
|
1047
|
+
if (switchResult.sessionRestored) {
|
|
1048
|
+
ctx.ui.print({ type: 'success', message: `Switched to "${current?.displayName ?? 'project'}" - session restored (${String(switchResult.messageCount)} messages).` });
|
|
1049
|
+
}
|
|
1050
|
+
else {
|
|
1051
|
+
ctx.ui.print({ type: 'success', message: `Switched to "${current?.displayName ?? 'project'}" - fresh session.` });
|
|
1052
|
+
}
|
|
1053
|
+
}
|
|
790
1054
|
// Sync footer with current project (may have changed during overlay)
|
|
791
1055
|
syncFooterWithCurrentProject(ctx);
|
|
792
1056
|
return true;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reset Command for REPL V2
|
|
3
|
+
*
|
|
4
|
+
* Clears the conversation history while staying in the current project.
|
|
5
|
+
* Options:
|
|
6
|
+
* - Reset & reload context: Clear messages, refresh COMPILR.md
|
|
7
|
+
* - Reset only: Clear messages, keep current context
|
|
8
|
+
*/
|
|
9
|
+
import type { CommandHandlerV2 } from '../types.js';
|
|
10
|
+
export declare const resetCommand: CommandHandlerV2;
|
|
11
|
+
export declare const resetCommands: CommandHandlerV2[];
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reset Command for REPL V2
|
|
3
|
+
*
|
|
4
|
+
* Clears the conversation history while staying in the current project.
|
|
5
|
+
* Options:
|
|
6
|
+
* - Reset & reload context: Clear messages, refresh COMPILR.md
|
|
7
|
+
* - Reset only: Clear messages, keep current context
|
|
8
|
+
*/
|
|
9
|
+
import { ResetOverlayV2, } from '../../ui/overlay/impl/reset-overlay-v2.js';
|
|
10
|
+
import { getCurrentProject } from '../../tools/project-db.js';
|
|
11
|
+
import { getProjectSessionManager } from '../../session/index.js';
|
|
12
|
+
import { archiveCurrentSession } from './session.js';
|
|
13
|
+
// =============================================================================
|
|
14
|
+
// Reset Command
|
|
15
|
+
// =============================================================================
|
|
16
|
+
export const resetCommand = {
|
|
17
|
+
name: 'reset',
|
|
18
|
+
aliases: ['clear-context'],
|
|
19
|
+
description: 'Clear conversation and optionally reload project context',
|
|
20
|
+
details: 'Starts a fresh conversation within the current project. Previous session is archived to history. Use this when you want to start over without switching projects.',
|
|
21
|
+
examples: [{ code: '/reset' }],
|
|
22
|
+
interactions: [
|
|
23
|
+
'j/k to navigate options',
|
|
24
|
+
'Enter to select',
|
|
25
|
+
'Esc to cancel',
|
|
26
|
+
],
|
|
27
|
+
async execute(_args, ctx) {
|
|
28
|
+
if (!ctx.agent) {
|
|
29
|
+
ctx.ui.print({ type: 'error', message: 'No agent connected. Cannot reset.' });
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
// Get current project info
|
|
33
|
+
const currentProject = getCurrentProject();
|
|
34
|
+
const projectName = currentProject?.displayName ?? 'Global';
|
|
35
|
+
// Get current session stats
|
|
36
|
+
const history = ctx.agent.getHistory();
|
|
37
|
+
const messageCount = history.length;
|
|
38
|
+
const contextManager = ctx.agent.getContextManager();
|
|
39
|
+
const tokenCount = contextManager?.getTokenCount();
|
|
40
|
+
// Show reset overlay
|
|
41
|
+
const overlay = new ResetOverlayV2({
|
|
42
|
+
projectName,
|
|
43
|
+
messageCount,
|
|
44
|
+
tokenCount,
|
|
45
|
+
});
|
|
46
|
+
const result = await ctx.ui.showOverlay(overlay);
|
|
47
|
+
if (!result || result.option === 'cancel') {
|
|
48
|
+
ctx.ui.print({ type: 'info', message: 'Reset cancelled.' });
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
const projectId = currentProject?.id ?? null;
|
|
52
|
+
// Handle delete-history option separately
|
|
53
|
+
if (result.option === 'delete-history') {
|
|
54
|
+
const psm = getProjectSessionManager();
|
|
55
|
+
try {
|
|
56
|
+
const deletedCount = await psm.deleteProjectHistory(projectId, false);
|
|
57
|
+
if (deletedCount > 0) {
|
|
58
|
+
ctx.ui.print({ type: 'success', message: `Deleted ${String(deletedCount)} archived session${deletedCount !== 1 ? 's' : ''}.` });
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
ctx.ui.print({ type: 'info', message: 'No archived sessions to delete.' });
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
ctx.ui.print({ type: 'error', message: 'Failed to delete session history.' });
|
|
66
|
+
}
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
// Archive current session before resetting
|
|
70
|
+
try {
|
|
71
|
+
await archiveCurrentSession();
|
|
72
|
+
ctx.ui.print({ type: 'info', message: 'Previous session archived.' });
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
// Silently continue - archiving is best-effort
|
|
76
|
+
}
|
|
77
|
+
// Clear the agent history - both default agent and all team agents
|
|
78
|
+
ctx.agent.clearHistory();
|
|
79
|
+
// Clear restored history (Ctrl+R view)
|
|
80
|
+
ctx.ui.setRestoredHistory([]);
|
|
81
|
+
// If we have a team, clear all team agent histories too
|
|
82
|
+
if (ctx.team) {
|
|
83
|
+
ctx.team.clearAllHistories();
|
|
84
|
+
ctx.ui.print({ type: 'info', message: `Team context cleared (${String(ctx.team.size)} agents)` });
|
|
85
|
+
}
|
|
86
|
+
// Clear all message queues
|
|
87
|
+
if (ctx.clearAllQueues) {
|
|
88
|
+
const clearedCount = ctx.clearAllQueues();
|
|
89
|
+
if (clearedCount > 0) {
|
|
90
|
+
ctx.ui.print({ type: 'info', message: `${String(clearedCount)} queued message${clearedCount !== 1 ? 's' : ''} cleared` });
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (result.option === 'reset-reload') {
|
|
94
|
+
// Reset & reload context - need to refresh project context
|
|
95
|
+
// This is handled by creating a new agent with fresh context
|
|
96
|
+
// For now, we just clear history. Full context refresh requires
|
|
97
|
+
// recreating the agent (to be implemented in Phase 2 integration)
|
|
98
|
+
ctx.ui.print({ type: 'success', message: 'Conversation cleared. Project context refreshed.' });
|
|
99
|
+
ctx.ui.print({ type: 'info', message: 'Note: Full context reload requires CLI restart for now.' });
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
// Reset only - just clear messages
|
|
103
|
+
ctx.ui.print({ type: 'success', message: 'Conversation cleared. Context preserved.' });
|
|
104
|
+
}
|
|
105
|
+
// Save the fresh session state
|
|
106
|
+
const psm = getProjectSessionManager();
|
|
107
|
+
const state = ctx.agent.serialize();
|
|
108
|
+
await psm.saveProjectSession(projectId, currentProject?.displayName ?? null, state);
|
|
109
|
+
ctx.ui.print({ type: 'info', message: 'Ready for a fresh conversation.' });
|
|
110
|
+
return true;
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
// =============================================================================
|
|
114
|
+
// Export
|
|
115
|
+
// =============================================================================
|
|
116
|
+
export const resetCommands = [
|
|
117
|
+
resetCommand,
|
|
118
|
+
];
|