@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,232 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Artifact Detail Overlay V2
|
|
3
|
+
*
|
|
4
|
+
* Fullscreen markdown artifact viewer with vim-style navigation.
|
|
5
|
+
*
|
|
6
|
+
* Features:
|
|
7
|
+
* - Full-screen artifact viewing with markdown rendering
|
|
8
|
+
* - Vim-style navigation (j/k, g/G, PgUp/PgDn)
|
|
9
|
+
* - Metadata display (type, agent, version, timestamps)
|
|
10
|
+
*/
|
|
11
|
+
import chalk from 'chalk';
|
|
12
|
+
import { marked } from 'marked';
|
|
13
|
+
import { markedTerminal } from 'marked-terminal';
|
|
14
|
+
import { BaseOverlayV2 } from '../../base/overlay-base-v2.js';
|
|
15
|
+
import { getCurrentTheme } from '../../../themes/index.js';
|
|
16
|
+
import * as terminal from '../../terminal.js';
|
|
17
|
+
import { ARTIFACT_TYPE_LABELS } from '../../constants/labels.js';
|
|
18
|
+
// =============================================================================
|
|
19
|
+
// Alternate Screen Buffer Management
|
|
20
|
+
// =============================================================================
|
|
21
|
+
let inAlternateScreen = false;
|
|
22
|
+
function enterAlternateScreen() {
|
|
23
|
+
if (inAlternateScreen)
|
|
24
|
+
return;
|
|
25
|
+
process.stdout.write('\x1b[?1049h'); // Switch to alternate screen
|
|
26
|
+
process.stdout.write('\x1b[H'); // Move cursor to home
|
|
27
|
+
inAlternateScreen = true;
|
|
28
|
+
}
|
|
29
|
+
function exitAlternateScreen() {
|
|
30
|
+
if (!inAlternateScreen)
|
|
31
|
+
return;
|
|
32
|
+
process.stdout.write('\x1b[?1049l'); // Switch back to main screen
|
|
33
|
+
inAlternateScreen = false;
|
|
34
|
+
}
|
|
35
|
+
// Ensure we exit alternate screen on process termination
|
|
36
|
+
function setupAlternateScreenCleanup() {
|
|
37
|
+
const cleanup = () => {
|
|
38
|
+
exitAlternateScreen();
|
|
39
|
+
};
|
|
40
|
+
process.on('exit', cleanup);
|
|
41
|
+
process.on('SIGINT', () => {
|
|
42
|
+
cleanup();
|
|
43
|
+
process.exit(130);
|
|
44
|
+
});
|
|
45
|
+
process.on('SIGTERM', () => {
|
|
46
|
+
cleanup();
|
|
47
|
+
process.exit(143);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
setupAlternateScreenCleanup();
|
|
51
|
+
// =============================================================================
|
|
52
|
+
// Constants
|
|
53
|
+
// =============================================================================
|
|
54
|
+
const TYPE_LABELS = ARTIFACT_TYPE_LABELS;
|
|
55
|
+
// =============================================================================
|
|
56
|
+
// Markdown Rendering Helper
|
|
57
|
+
// =============================================================================
|
|
58
|
+
function getThemedMarkedOptions(termWidth) {
|
|
59
|
+
const theme = getCurrentTheme();
|
|
60
|
+
const primaryColor = chalk.hex(theme.colors.primary);
|
|
61
|
+
const secondaryColor = chalk.hex(theme.colors.secondary || theme.colors.primary);
|
|
62
|
+
const mutedColor = chalk.hex(theme.colors.muted);
|
|
63
|
+
const borderColor = chalk.hex(theme.colors.border);
|
|
64
|
+
const fgColor = chalk.hex(theme.colors.foreground);
|
|
65
|
+
return {
|
|
66
|
+
showSectionPrefix: false,
|
|
67
|
+
reflowText: false,
|
|
68
|
+
width: Math.min(100, termWidth - 4),
|
|
69
|
+
unescape: true,
|
|
70
|
+
tab: 2,
|
|
71
|
+
heading: primaryColor.bold,
|
|
72
|
+
firstHeading: primaryColor.bold,
|
|
73
|
+
strong: fgColor.bold,
|
|
74
|
+
em: fgColor.italic,
|
|
75
|
+
link: secondaryColor,
|
|
76
|
+
href: secondaryColor.underline,
|
|
77
|
+
blockquote: mutedColor.italic,
|
|
78
|
+
del: mutedColor.strikethrough,
|
|
79
|
+
hr: borderColor,
|
|
80
|
+
codespan: secondaryColor,
|
|
81
|
+
code: secondaryColor,
|
|
82
|
+
html: mutedColor,
|
|
83
|
+
table: fgColor,
|
|
84
|
+
listitem: fgColor,
|
|
85
|
+
paragraph: fgColor,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
function renderMarkdownSync(content, termWidth) {
|
|
89
|
+
const options = getThemedMarkedOptions(termWidth);
|
|
90
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any
|
|
91
|
+
marked.use(markedTerminal(options));
|
|
92
|
+
const rendered = marked.parse(content, { async: false });
|
|
93
|
+
return rendered.split('\n');
|
|
94
|
+
}
|
|
95
|
+
// =============================================================================
|
|
96
|
+
// Artifact Detail Overlay V2
|
|
97
|
+
// =============================================================================
|
|
98
|
+
export class ArtifactDetailOverlayV2 extends BaseOverlayV2 {
|
|
99
|
+
// Use 'inline' type so terminal-ui doesn't clear screen - we manage alternate screen ourselves
|
|
100
|
+
type = 'inline';
|
|
101
|
+
id = 'artifact-detail-overlay-v2';
|
|
102
|
+
// Tell terminal-ui we manage our own screen buffer - skip clearing on close
|
|
103
|
+
usesAlternateScreen = true;
|
|
104
|
+
artifact;
|
|
105
|
+
constructor(artifact) {
|
|
106
|
+
// Build header with metadata
|
|
107
|
+
const theme = getCurrentTheme();
|
|
108
|
+
const termWidth = terminal.getTerminalWidth();
|
|
109
|
+
const header = [];
|
|
110
|
+
header.push(chalk.bold.hex(theme.colors.primary)(`"${artifact.name}"`));
|
|
111
|
+
header.push('');
|
|
112
|
+
const typeLabel = TYPE_LABELS[artifact.type] || artifact.type;
|
|
113
|
+
const meta = [
|
|
114
|
+
`Type: ${chalk.bold(typeLabel)}`,
|
|
115
|
+
`Agent: ${chalk.bold(`$${artifact.agent}`)}`,
|
|
116
|
+
`Version: ${String(artifact.version)}`,
|
|
117
|
+
];
|
|
118
|
+
header.push(meta.join(' | '));
|
|
119
|
+
const created = artifact.createdAt.toLocaleString();
|
|
120
|
+
const updated = artifact.updatedAt.toLocaleString();
|
|
121
|
+
header.push(chalk.hex(theme.colors.muted)(`Created: ${created} | Updated: ${updated}`));
|
|
122
|
+
header.push('');
|
|
123
|
+
if (artifact.summary) {
|
|
124
|
+
header.push(chalk.hex(theme.colors.muted)(`Summary: ${artifact.summary}`));
|
|
125
|
+
header.push('');
|
|
126
|
+
}
|
|
127
|
+
header.push(chalk.hex(theme.colors.muted)('─'.repeat(termWidth - 4)));
|
|
128
|
+
header.push('');
|
|
129
|
+
// Render markdown content
|
|
130
|
+
const contentLines = renderMarkdownSync(artifact.content, termWidth);
|
|
131
|
+
// Combine header and content
|
|
132
|
+
const renderedLines = [...header, ...contentLines];
|
|
133
|
+
super({
|
|
134
|
+
renderedLines,
|
|
135
|
+
scrollOffset: 0,
|
|
136
|
+
maxScroll: 0,
|
|
137
|
+
});
|
|
138
|
+
this.artifact = artifact;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Enter alternate screen buffer when overlay mounts.
|
|
142
|
+
*/
|
|
143
|
+
onMount() {
|
|
144
|
+
enterAlternateScreen();
|
|
145
|
+
terminal.hideCursor();
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Exit alternate screen buffer when overlay unmounts.
|
|
149
|
+
*/
|
|
150
|
+
onUnmount() {
|
|
151
|
+
exitAlternateScreen();
|
|
152
|
+
terminal.showCursor();
|
|
153
|
+
}
|
|
154
|
+
renderContent(context) {
|
|
155
|
+
const s = context.styles;
|
|
156
|
+
const cols = context.width;
|
|
157
|
+
const rows = context.height;
|
|
158
|
+
// Calculate visible area (reserve 2 lines for footer)
|
|
159
|
+
const contentHeight = rows - 2;
|
|
160
|
+
this.state.maxScroll = Math.max(0, this.state.renderedLines.length - contentHeight + 2);
|
|
161
|
+
// Build output
|
|
162
|
+
const output = [];
|
|
163
|
+
// Render visible content lines
|
|
164
|
+
for (let i = 0; i < contentHeight; i++) {
|
|
165
|
+
const lineIndex = this.state.scrollOffset + i;
|
|
166
|
+
if (lineIndex < this.state.renderedLines.length) {
|
|
167
|
+
const line = this.state.renderedLines[lineIndex];
|
|
168
|
+
// Truncate to terminal width
|
|
169
|
+
output.push(line.slice(0, cols));
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
output.push('');
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
// Render footer
|
|
176
|
+
const scrollInfo = this.state.maxScroll > 0
|
|
177
|
+
? ` [${String(this.state.scrollOffset + 1)}-${String(Math.min(this.state.scrollOffset + contentHeight, this.state.renderedLines.length))}/${String(this.state.renderedLines.length)}]`
|
|
178
|
+
: '';
|
|
179
|
+
output.push(s.inverse(` q/Esc: back j/k: scroll g/G: top/bottom PgUp/PgDn: page ${scrollInfo} `.padEnd(cols)));
|
|
180
|
+
return output;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Handle key events
|
|
184
|
+
*/
|
|
185
|
+
handleKey(key) {
|
|
186
|
+
const termHeight = terminal.getTerminalHeight();
|
|
187
|
+
const pageSize = termHeight - 4;
|
|
188
|
+
// Scroll down: j, Down
|
|
189
|
+
if (key.name === 'j' || key.name === 'down') {
|
|
190
|
+
if (this.state.scrollOffset < this.state.maxScroll) {
|
|
191
|
+
this.state.scrollOffset++;
|
|
192
|
+
}
|
|
193
|
+
return this.rerender();
|
|
194
|
+
}
|
|
195
|
+
// Scroll up: k, Up
|
|
196
|
+
if (key.name === 'k' || key.name === 'up') {
|
|
197
|
+
if (this.state.scrollOffset > 0) {
|
|
198
|
+
this.state.scrollOffset--;
|
|
199
|
+
}
|
|
200
|
+
return this.rerender();
|
|
201
|
+
}
|
|
202
|
+
// Page down: PgDn, Space, Ctrl+d
|
|
203
|
+
if (key.name === 'pagedown' || key.name === 'space' || (key.name === 'd' && key.ctrl)) {
|
|
204
|
+
this.state.scrollOffset = Math.min(this.state.maxScroll, this.state.scrollOffset + pageSize);
|
|
205
|
+
return this.rerender();
|
|
206
|
+
}
|
|
207
|
+
// Page up: PgUp, Ctrl+b
|
|
208
|
+
if (key.name === 'pageup' || (key.name === 'b' && key.ctrl)) {
|
|
209
|
+
this.state.scrollOffset = Math.max(0, this.state.scrollOffset - pageSize);
|
|
210
|
+
return this.rerender();
|
|
211
|
+
}
|
|
212
|
+
// Go to top: g, Home
|
|
213
|
+
if (key.name === 'g' || key.name === 'home') {
|
|
214
|
+
this.state.scrollOffset = 0;
|
|
215
|
+
return this.rerender();
|
|
216
|
+
}
|
|
217
|
+
// Go to bottom: G (shift+g), End
|
|
218
|
+
if ((key.name === 'g' && key.shift) || key.name === 'end') {
|
|
219
|
+
this.state.scrollOffset = this.state.maxScroll;
|
|
220
|
+
return this.rerender();
|
|
221
|
+
}
|
|
222
|
+
// Ctrl+C: exit completely
|
|
223
|
+
if (this.isInterruptKey(key)) {
|
|
224
|
+
return this.close({ goBack: false });
|
|
225
|
+
}
|
|
226
|
+
// q, Esc: go back to list
|
|
227
|
+
if (this.isCloseKey(key)) {
|
|
228
|
+
return this.close({ goBack: true });
|
|
229
|
+
}
|
|
230
|
+
return this.noAction();
|
|
231
|
+
}
|
|
232
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Artifact Overlay V2
|
|
3
|
+
*
|
|
4
|
+
* Browse and manage team artifacts.
|
|
5
|
+
* Uses TabbedListOverlayV2 for consistent list/tab/search behavior.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Tabbed filtering by artifact type
|
|
9
|
+
* - Search with / toggle
|
|
10
|
+
* - Paginated list
|
|
11
|
+
* - Returns selected artifact for viewing in separate fullscreen overlay
|
|
12
|
+
*/
|
|
13
|
+
import { TabbedListOverlayV2 } from '../../base/tabbed-list-overlay-v2.js';
|
|
14
|
+
import type { OverlayAction, KeyEvent } from '../types.js';
|
|
15
|
+
import { type Artifact } from '../../../multi-agent/index.js';
|
|
16
|
+
export interface ArtifactOverlayV2Result {
|
|
17
|
+
/** Selected artifact to view (if any) */
|
|
18
|
+
selectedArtifact?: Artifact;
|
|
19
|
+
/** Whether user cancelled (Ctrl+C or Esc) */
|
|
20
|
+
cancelled: boolean;
|
|
21
|
+
}
|
|
22
|
+
export declare class ArtifactOverlayV2 extends TabbedListOverlayV2<Artifact, ArtifactOverlayV2Result> {
|
|
23
|
+
readonly type: "inline";
|
|
24
|
+
readonly id = "artifact-overlay-v2";
|
|
25
|
+
private readonly projectName;
|
|
26
|
+
constructor();
|
|
27
|
+
/**
|
|
28
|
+
* Override to render project name in header
|
|
29
|
+
*/
|
|
30
|
+
protected renderHeader(title: string, subtitle?: string): string[];
|
|
31
|
+
/**
|
|
32
|
+
* Override to handle item selection.
|
|
33
|
+
* Returns the selected artifact so the command handler can show it in a fullscreen overlay.
|
|
34
|
+
*/
|
|
35
|
+
protected onItemSelected(artifact: Artifact): ArtifactOverlayV2Result | undefined;
|
|
36
|
+
/**
|
|
37
|
+
* Override to handle custom keys (delete)
|
|
38
|
+
*/
|
|
39
|
+
handleKey(key: KeyEvent): OverlayAction<ArtifactOverlayV2Result>;
|
|
40
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Artifact Overlay V2
|
|
3
|
+
*
|
|
4
|
+
* Browse and manage team artifacts.
|
|
5
|
+
* Uses TabbedListOverlayV2 for consistent list/tab/search behavior.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Tabbed filtering by artifact type
|
|
9
|
+
* - Search with / toggle
|
|
10
|
+
* - Paginated list
|
|
11
|
+
* - Returns selected artifact for viewing in separate fullscreen overlay
|
|
12
|
+
*/
|
|
13
|
+
import { TabbedListOverlayV2 } from '../../base/tabbed-list-overlay-v2.js';
|
|
14
|
+
import { getTeamCheckpointer, } from '../../../multi-agent/index.js';
|
|
15
|
+
import { getCurrentProject } from '../../../tools/project-db.js';
|
|
16
|
+
import { ARTIFACT_TYPE_LABELS } from '../../constants/labels.js';
|
|
17
|
+
// =============================================================================
|
|
18
|
+
// Constants
|
|
19
|
+
// =============================================================================
|
|
20
|
+
const PAGE_SIZE = 10;
|
|
21
|
+
const TYPE_LABELS = ARTIFACT_TYPE_LABELS;
|
|
22
|
+
const TYPE_ICONS = {
|
|
23
|
+
'design': '◇', // Diamond - architecture
|
|
24
|
+
'plan': '◆', // Filled diamond - task breakdown
|
|
25
|
+
'review': '○', // Circle - feedback
|
|
26
|
+
'decision': '●', // Filled circle - decisions
|
|
27
|
+
'note': '□', // Square - general notes
|
|
28
|
+
};
|
|
29
|
+
const TABS = [
|
|
30
|
+
{ id: 'all', label: 'All' },
|
|
31
|
+
{ id: 'design', label: 'Design' },
|
|
32
|
+
{ id: 'plan', label: 'Plan' },
|
|
33
|
+
{ id: 'review', label: 'Review' },
|
|
34
|
+
{ id: 'decision', label: 'Decision' },
|
|
35
|
+
{ id: 'note', label: 'Note' },
|
|
36
|
+
];
|
|
37
|
+
// =============================================================================
|
|
38
|
+
// Artifact Overlay V2
|
|
39
|
+
// =============================================================================
|
|
40
|
+
export class ArtifactOverlayV2 extends TabbedListOverlayV2 {
|
|
41
|
+
type = 'inline';
|
|
42
|
+
id = 'artifact-overlay-v2';
|
|
43
|
+
projectName;
|
|
44
|
+
constructor() {
|
|
45
|
+
const activeProject = getCurrentProject();
|
|
46
|
+
const projectId = activeProject?.id ?? null;
|
|
47
|
+
const projectName = activeProject?.displayName ?? null;
|
|
48
|
+
// Load artifacts from checkpointer
|
|
49
|
+
const checkpointer = getTeamCheckpointer();
|
|
50
|
+
const store = checkpointer.getArtifactStore(projectId);
|
|
51
|
+
const artifacts = store.list();
|
|
52
|
+
// Sort by most recently updated
|
|
53
|
+
artifacts.sort((a, b) => b.updatedAt.getTime() - a.updatedAt.getTime());
|
|
54
|
+
super({
|
|
55
|
+
title: 'Artifacts',
|
|
56
|
+
tabs: TABS,
|
|
57
|
+
items: artifacts,
|
|
58
|
+
pageSize: PAGE_SIZE,
|
|
59
|
+
filterByTab: (artifact, tabId) => {
|
|
60
|
+
if (tabId === 'all')
|
|
61
|
+
return true;
|
|
62
|
+
return artifact.type === tabId;
|
|
63
|
+
},
|
|
64
|
+
getSearchText: (artifact) => `${artifact.name} ${artifact.type} ${artifact.agent} ${artifact.summary}`,
|
|
65
|
+
renderItem: (artifact, isSelected, styles) => {
|
|
66
|
+
const prefix = isSelected ? styles.primary('> ') : ' ';
|
|
67
|
+
const icon = TYPE_ICONS[artifact.type] || '?';
|
|
68
|
+
const typeLabel = (TYPE_LABELS[artifact.type] || artifact.type).padEnd(9);
|
|
69
|
+
// Format: [icon] TYPE "Name" by $agent (v2)
|
|
70
|
+
const name = artifact.name.slice(0, 35);
|
|
71
|
+
const agent = `$${artifact.agent}`;
|
|
72
|
+
const version = artifact.version > 1 ? ` (v${String(artifact.version)})` : '';
|
|
73
|
+
if (isSelected) {
|
|
74
|
+
return `${prefix}${icon} ${styles.primaryBold(typeLabel)} ${styles.primary(`"${name}"`)} ${styles.muted(`by ${agent}${version}`)}`;
|
|
75
|
+
}
|
|
76
|
+
return `${prefix}${icon} ${styles.muted(typeLabel)} ${styles.secondary(`"${name}"`)} ${styles.muted(`by ${agent}${version}`)}`;
|
|
77
|
+
},
|
|
78
|
+
showCount: true,
|
|
79
|
+
emptyMessage: projectId === null
|
|
80
|
+
? 'No active project. Use /projects to select one.'
|
|
81
|
+
: 'No artifacts yet. Use artifact_save to create one.',
|
|
82
|
+
noResultsMessage: 'No artifacts match the search.',
|
|
83
|
+
});
|
|
84
|
+
this.projectName = projectName;
|
|
85
|
+
this.minHeight = 18;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Override to render project name in header
|
|
89
|
+
*/
|
|
90
|
+
renderHeader(title, subtitle) {
|
|
91
|
+
const displaySubtitle = this.projectName || subtitle;
|
|
92
|
+
return super.renderHeader(title, displaySubtitle);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Override to handle item selection.
|
|
96
|
+
* Returns the selected artifact so the command handler can show it in a fullscreen overlay.
|
|
97
|
+
*/
|
|
98
|
+
onItemSelected(artifact) {
|
|
99
|
+
return { selectedArtifact: artifact, cancelled: false };
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Override to handle custom keys (delete)
|
|
103
|
+
*/
|
|
104
|
+
handleKey(key) {
|
|
105
|
+
// Check for close keys first
|
|
106
|
+
if (this.isInterruptKey(key)) {
|
|
107
|
+
return this.close({ cancelled: true });
|
|
108
|
+
}
|
|
109
|
+
if (this.isCloseKey(key) && !this.state.searchMode) {
|
|
110
|
+
return this.close({ cancelled: true });
|
|
111
|
+
}
|
|
112
|
+
// Let parent handle everything else (including Enter → onItemSelected)
|
|
113
|
+
return super.handleKey(key);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
@@ -144,11 +144,8 @@ export class AskUserOverlayV2 extends BaseOverlayV2 {
|
|
|
144
144
|
const question = this.questions[this.state.currentQuestion];
|
|
145
145
|
const questionIndex = this.state.currentQuestion;
|
|
146
146
|
const totalQuestions = this.questions.length;
|
|
147
|
-
//
|
|
148
|
-
|
|
149
|
-
lines.push(s.muted(' ' + this.context));
|
|
150
|
-
lines.push('');
|
|
151
|
-
}
|
|
147
|
+
// Note: context field is deprecated - agent explanations should be streamed
|
|
148
|
+
// before the tool call, not displayed inside the overlay
|
|
152
149
|
// Question number and text
|
|
153
150
|
lines.push(chalk.bold(` [${String(questionIndex + 1)}/${String(totalQuestions)}] ${question.question}`));
|
|
154
151
|
lines.push('');
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Background Agents Overlay V2
|
|
3
|
+
*
|
|
4
|
+
* Modal overlay for viewing and managing background agents.
|
|
5
|
+
* Users can see status, bring to foreground, or kill agents.
|
|
6
|
+
*
|
|
7
|
+
* Phase 3c: Background Agents
|
|
8
|
+
*/
|
|
9
|
+
import { BaseOverlayV2 } from '../../base/index.js';
|
|
10
|
+
import type { RenderContext, OverlayAction, KeyEvent } from '../index.js';
|
|
11
|
+
import type { BackgroundSessionInfo } from '../../../multi-agent/types.js';
|
|
12
|
+
export type BackgroundOverlayResult = {
|
|
13
|
+
type: 'closed';
|
|
14
|
+
} | {
|
|
15
|
+
type: 'foreground';
|
|
16
|
+
agentId: string;
|
|
17
|
+
} | {
|
|
18
|
+
type: 'kill';
|
|
19
|
+
agentId: string;
|
|
20
|
+
};
|
|
21
|
+
interface BackgroundOverlayState {
|
|
22
|
+
/** Currently selected agent index */
|
|
23
|
+
selectedIndex: number;
|
|
24
|
+
/** Sessions snapshot */
|
|
25
|
+
sessions: BackgroundSessionInfo[];
|
|
26
|
+
}
|
|
27
|
+
export interface BackgroundOverlayOptions {
|
|
28
|
+
/** Function to get current background sessions */
|
|
29
|
+
getSessions: () => BackgroundSessionInfo[];
|
|
30
|
+
}
|
|
31
|
+
export declare class BackgroundOverlayV2 extends BaseOverlayV2<BackgroundOverlayState, BackgroundOverlayResult> {
|
|
32
|
+
readonly type: "inline";
|
|
33
|
+
readonly id = "background-overlay-v2";
|
|
34
|
+
private readonly getSessions;
|
|
35
|
+
constructor(options: BackgroundOverlayOptions);
|
|
36
|
+
protected renderContent(context: RenderContext): string[];
|
|
37
|
+
handleKey(key: KeyEvent): OverlayAction<BackgroundOverlayResult>;
|
|
38
|
+
getCloseSummary(result: BackgroundOverlayResult): string | null;
|
|
39
|
+
}
|
|
40
|
+
export {};
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Background Agents Overlay V2
|
|
3
|
+
*
|
|
4
|
+
* Modal overlay for viewing and managing background agents.
|
|
5
|
+
* Users can see status, bring to foreground, or kill agents.
|
|
6
|
+
*
|
|
7
|
+
* Phase 3c: Background Agents
|
|
8
|
+
*/
|
|
9
|
+
import chalk from 'chalk';
|
|
10
|
+
import { getStyles } from '../../../themes/index.js';
|
|
11
|
+
import { BaseOverlayV2 } from '../../base/index.js';
|
|
12
|
+
import * as terminal from '../../terminal.js';
|
|
13
|
+
// =============================================================================
|
|
14
|
+
// Background Overlay V2 Class
|
|
15
|
+
// =============================================================================
|
|
16
|
+
export class BackgroundOverlayV2 extends BaseOverlayV2 {
|
|
17
|
+
type = 'inline';
|
|
18
|
+
id = 'background-overlay-v2';
|
|
19
|
+
getSessions;
|
|
20
|
+
constructor(options) {
|
|
21
|
+
const sessions = options.getSessions();
|
|
22
|
+
super({
|
|
23
|
+
selectedIndex: 0,
|
|
24
|
+
sessions,
|
|
25
|
+
});
|
|
26
|
+
this.getSessions = options.getSessions;
|
|
27
|
+
this.minHeight = 10;
|
|
28
|
+
}
|
|
29
|
+
renderContent(context) {
|
|
30
|
+
const s = context.styles;
|
|
31
|
+
const lines = [];
|
|
32
|
+
const cols = terminal.getTerminalWidth();
|
|
33
|
+
const border = s.muted('─'.repeat(Math.max(1, cols - 1)));
|
|
34
|
+
// Refresh sessions each render
|
|
35
|
+
this.state.sessions = this.getSessions();
|
|
36
|
+
// Header
|
|
37
|
+
lines.push(border);
|
|
38
|
+
lines.push(' ' + chalk.bold('Background Agents') + s.muted(` (${String(this.state.sessions.length)} running)`));
|
|
39
|
+
lines.push(border);
|
|
40
|
+
lines.push('');
|
|
41
|
+
if (this.state.sessions.length === 0) {
|
|
42
|
+
lines.push(s.muted(' No background agents running.'));
|
|
43
|
+
lines.push('');
|
|
44
|
+
lines.push(s.muted(' Start an agent in background with:'));
|
|
45
|
+
lines.push(s.info(' $agent message &'));
|
|
46
|
+
lines.push(s.muted(' or:'));
|
|
47
|
+
lines.push(s.info(' message &'));
|
|
48
|
+
lines.push('');
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
// Render each agent
|
|
52
|
+
for (let i = 0; i < this.state.sessions.length; i++) {
|
|
53
|
+
const session = this.state.sessions[i];
|
|
54
|
+
const isSelected = i === this.state.selectedIndex;
|
|
55
|
+
const prefix = isSelected ? ' ❯ ' : ' ';
|
|
56
|
+
// Agent header: [mascot] $agent (displayName)
|
|
57
|
+
const header = `${session.mascot} $${session.agentId} (${session.displayName})`;
|
|
58
|
+
if (isSelected) {
|
|
59
|
+
lines.push(s.primary(prefix + header));
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
lines.push(s.muted(prefix + header));
|
|
63
|
+
}
|
|
64
|
+
// Status line
|
|
65
|
+
let statusText;
|
|
66
|
+
if (session.isBlocked) {
|
|
67
|
+
statusText = s.warning(`Status: blocked`) + s.muted(` · ${String(session.pendingCount)} pending request${session.pendingCount !== 1 ? 's' : ''}`);
|
|
68
|
+
}
|
|
69
|
+
else if (session.currentAction) {
|
|
70
|
+
statusText = s.success('Status: running') + s.muted(` · ${session.currentAction}`);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
statusText = s.success('Status: running');
|
|
74
|
+
}
|
|
75
|
+
// Add queue count if there are queued messages
|
|
76
|
+
if (session.queuedCount > 0) {
|
|
77
|
+
statusText += s.muted(` · ${String(session.queuedCount)} queued`);
|
|
78
|
+
}
|
|
79
|
+
lines.push(' ' + statusText);
|
|
80
|
+
// Actions line (only for selected)
|
|
81
|
+
if (isSelected) {
|
|
82
|
+
lines.push(s.info(' [f]oreground · [k]ill'));
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
lines.push('');
|
|
86
|
+
}
|
|
87
|
+
lines.push('');
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// Footer
|
|
91
|
+
lines.push(border);
|
|
92
|
+
if (this.state.sessions.length > 0) {
|
|
93
|
+
lines.push(s.muted(' ↑↓ Navigate · f Foreground · k Kill · Esc Close'));
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
lines.push(s.muted(' Esc Close'));
|
|
97
|
+
}
|
|
98
|
+
return lines;
|
|
99
|
+
}
|
|
100
|
+
handleKey(key) {
|
|
101
|
+
// Escape or Ctrl+C = close
|
|
102
|
+
if (key.name === 'escape' || (key.ctrl && key.name === 'c')) {
|
|
103
|
+
return this.close({ type: 'closed' });
|
|
104
|
+
}
|
|
105
|
+
// No sessions - just allow closing
|
|
106
|
+
if (this.state.sessions.length === 0) {
|
|
107
|
+
return this.rerender();
|
|
108
|
+
}
|
|
109
|
+
const keyStr = key.char?.toLowerCase() ?? '';
|
|
110
|
+
// Arrow navigation
|
|
111
|
+
if (key.name === 'up') {
|
|
112
|
+
this.state.selectedIndex = Math.max(0, this.state.selectedIndex - 1);
|
|
113
|
+
return this.rerender();
|
|
114
|
+
}
|
|
115
|
+
if (key.name === 'down') {
|
|
116
|
+
this.state.selectedIndex = Math.min(this.state.sessions.length - 1, this.state.selectedIndex + 1);
|
|
117
|
+
return this.rerender();
|
|
118
|
+
}
|
|
119
|
+
// Bring to foreground
|
|
120
|
+
if (keyStr === 'f') {
|
|
121
|
+
const session = this.state.sessions[this.state.selectedIndex];
|
|
122
|
+
if (session) {
|
|
123
|
+
return this.close({ type: 'foreground', agentId: session.agentId });
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// Kill agent
|
|
127
|
+
if (keyStr === 'k') {
|
|
128
|
+
const session = this.state.sessions[this.state.selectedIndex];
|
|
129
|
+
if (session) {
|
|
130
|
+
return this.close({ type: 'kill', agentId: session.agentId });
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return this.rerender();
|
|
134
|
+
}
|
|
135
|
+
getCloseSummary(result) {
|
|
136
|
+
if (result.type === 'foreground' || result.type === 'kill') {
|
|
137
|
+
// Action taken, no summary needed (action will print its own message)
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
const s = getStyles();
|
|
141
|
+
const count = this.state.sessions.length;
|
|
142
|
+
if (count > 0) {
|
|
143
|
+
return s.muted(`Background agents: ${String(count)} running`);
|
|
144
|
+
}
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
@@ -27,6 +27,7 @@ export interface BacklogItem {
|
|
|
27
27
|
title: string;
|
|
28
28
|
description: string;
|
|
29
29
|
commit?: string;
|
|
30
|
+
owner?: string;
|
|
30
31
|
}
|
|
31
32
|
export interface BacklogOverlayV2Result {
|
|
32
33
|
modified: boolean;
|
|
@@ -35,12 +36,14 @@ export declare class BacklogOverlayV2 extends TabbedListOverlayV2<BacklogItem, B
|
|
|
35
36
|
readonly type: "inline";
|
|
36
37
|
readonly id = "backlog-overlay-v2";
|
|
37
38
|
private readonly editState;
|
|
39
|
+
private readonly teamAgentIds;
|
|
38
40
|
/**
|
|
39
41
|
* @param projectId - Optional project ID to view backlog for.
|
|
40
42
|
* If not provided, uses the active project.
|
|
41
43
|
* Pass this when opening from workflow overlay for a specific project.
|
|
44
|
+
* @param teamAgentIds - List of agent IDs in the team for owner selection.
|
|
42
45
|
*/
|
|
43
|
-
constructor(projectId?: number);
|
|
46
|
+
constructor(projectId?: number, teamAgentIds?: string[]);
|
|
44
47
|
protected createDetailScreen(item: BacklogItem): BaseScreen | null;
|
|
45
48
|
/**
|
|
46
49
|
* Override handleKey to add custom behavior (Space toggle, 'a' add).
|