@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
|
@@ -0,0 +1,384 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Autocomplete controller for command, file, and agent autocomplete.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from TerminalUI — owns all three autocomplete states and their
|
|
5
|
+
* management methods. Input state is passed in as parameters; accept() returns
|
|
6
|
+
* new input state instead of mutating directly.
|
|
7
|
+
*/
|
|
8
|
+
import { getStyles } from '../themes/index.js';
|
|
9
|
+
import { getVisibleLength } from './line-utils.js';
|
|
10
|
+
import { MAX_VISIBLE_COMMANDS, } from './terminal-types.js';
|
|
11
|
+
import { filterCommands } from './terminal-autocomplete-utils.js';
|
|
12
|
+
import { getFileMatches, extractAtMention, replaceAtMention, extractDollarMention, replaceDollarMention, } from './file-autocomplete.js';
|
|
13
|
+
export class AutocompleteController {
|
|
14
|
+
command = {
|
|
15
|
+
active: false,
|
|
16
|
+
matches: [],
|
|
17
|
+
selectedIndex: 0,
|
|
18
|
+
scrollOffset: 0,
|
|
19
|
+
};
|
|
20
|
+
file = {
|
|
21
|
+
active: false,
|
|
22
|
+
matches: [],
|
|
23
|
+
selectedIndex: 0,
|
|
24
|
+
scrollOffset: 0,
|
|
25
|
+
partial: '',
|
|
26
|
+
};
|
|
27
|
+
agent = {
|
|
28
|
+
active: false,
|
|
29
|
+
matches: [],
|
|
30
|
+
selectedIndex: 0,
|
|
31
|
+
scrollOffset: 0,
|
|
32
|
+
partial: '',
|
|
33
|
+
startPos: 0,
|
|
34
|
+
lineIndex: 0,
|
|
35
|
+
};
|
|
36
|
+
getAgentSuggestions;
|
|
37
|
+
getCommands;
|
|
38
|
+
/** Whether any autocomplete is currently active. */
|
|
39
|
+
isActive() {
|
|
40
|
+
return this.command.active || this.file.active || this.agent.active;
|
|
41
|
+
}
|
|
42
|
+
// ===========================================================================
|
|
43
|
+
// Update (called when input changes)
|
|
44
|
+
// ===========================================================================
|
|
45
|
+
/**
|
|
46
|
+
* Detect and activate autocomplete based on current input state.
|
|
47
|
+
* Priority: @ file > $ agent > / command
|
|
48
|
+
*/
|
|
49
|
+
update(lines, currentLine, cursorPos) {
|
|
50
|
+
const currentLineContent = lines[currentLine];
|
|
51
|
+
// Check for @ file path autocomplete first (works on any line)
|
|
52
|
+
const atMention = extractAtMention(currentLineContent, cursorPos);
|
|
53
|
+
if (atMention !== null) {
|
|
54
|
+
// File autocomplete mode - disable other autocompletes
|
|
55
|
+
this.command.active = false;
|
|
56
|
+
this.command.matches = [];
|
|
57
|
+
this.command.selectedIndex = 0;
|
|
58
|
+
this.command.scrollOffset = 0;
|
|
59
|
+
this.agent.active = false;
|
|
60
|
+
this.agent.matches = [];
|
|
61
|
+
// Enable file autocomplete
|
|
62
|
+
this.file.active = true;
|
|
63
|
+
this.file.partial = atMention;
|
|
64
|
+
this.file.matches = getFileMatches(atMention);
|
|
65
|
+
if (this.file.selectedIndex >= this.file.matches.length) {
|
|
66
|
+
this.file.selectedIndex = Math.max(0, this.file.matches.length - 1);
|
|
67
|
+
this.file.scrollOffset = 0;
|
|
68
|
+
}
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
// Reset file autocomplete
|
|
72
|
+
this.file.active = false;
|
|
73
|
+
this.file.matches = [];
|
|
74
|
+
this.file.selectedIndex = 0;
|
|
75
|
+
this.file.scrollOffset = 0;
|
|
76
|
+
this.file.partial = '';
|
|
77
|
+
// Check for $ agent autocomplete (anywhere in the current line)
|
|
78
|
+
if (this.getAgentSuggestions) {
|
|
79
|
+
const dollarMention = extractDollarMention(currentLineContent, cursorPos);
|
|
80
|
+
if (dollarMention !== null) {
|
|
81
|
+
const partial = dollarMention.partial.toLowerCase();
|
|
82
|
+
const allAgents = this.getAgentSuggestions();
|
|
83
|
+
// Filter agents by partial match
|
|
84
|
+
const matches = allAgents.filter(a => a.id.toLowerCase().startsWith(partial) ||
|
|
85
|
+
a.displayName.toLowerCase().includes(partial));
|
|
86
|
+
if (matches.length > 0) {
|
|
87
|
+
this.agent.active = true;
|
|
88
|
+
this.agent.partial = partial;
|
|
89
|
+
this.agent.matches = matches;
|
|
90
|
+
this.agent.startPos = dollarMention.startPos;
|
|
91
|
+
this.agent.lineIndex = currentLine;
|
|
92
|
+
if (this.agent.selectedIndex >= matches.length) {
|
|
93
|
+
this.agent.selectedIndex = Math.max(0, matches.length - 1);
|
|
94
|
+
this.agent.scrollOffset = 0;
|
|
95
|
+
}
|
|
96
|
+
// Reset command autocomplete
|
|
97
|
+
this.command.active = false;
|
|
98
|
+
this.command.matches = [];
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// Reset agent autocomplete
|
|
104
|
+
this.agent.active = false;
|
|
105
|
+
this.agent.matches = [];
|
|
106
|
+
this.agent.selectedIndex = 0;
|
|
107
|
+
this.agent.scrollOffset = 0;
|
|
108
|
+
this.agent.partial = '';
|
|
109
|
+
this.agent.startPos = 0;
|
|
110
|
+
this.agent.lineIndex = 0;
|
|
111
|
+
// Activate command autocomplete when first line starts with /
|
|
112
|
+
const firstLine = lines[0];
|
|
113
|
+
if (currentLine === 0 && firstLine.startsWith('/')) {
|
|
114
|
+
this.command.active = true;
|
|
115
|
+
const freshCommands = this.getCommands?.() ?? [];
|
|
116
|
+
this.command.matches = filterCommands(firstLine, freshCommands);
|
|
117
|
+
// Reset selection if it's out of bounds
|
|
118
|
+
if (this.command.selectedIndex >= this.command.matches.length) {
|
|
119
|
+
this.command.selectedIndex = Math.max(0, this.command.matches.length - 1);
|
|
120
|
+
this.command.scrollOffset = 0;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
this.command.active = false;
|
|
125
|
+
this.command.matches = [];
|
|
126
|
+
this.command.selectedIndex = 0;
|
|
127
|
+
this.command.scrollOffset = 0;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
// ===========================================================================
|
|
131
|
+
// Accept (apply selected autocomplete)
|
|
132
|
+
// ===========================================================================
|
|
133
|
+
/**
|
|
134
|
+
* Apply the selected autocomplete match.
|
|
135
|
+
* Returns new input state if something was accepted, null otherwise.
|
|
136
|
+
* Caller must also call update() after applying the result for file autocomplete
|
|
137
|
+
* (directory selection may trigger continued autocomplete).
|
|
138
|
+
*/
|
|
139
|
+
accept(lines, currentLine, cursorPos) {
|
|
140
|
+
// Agent autocomplete takes highest priority
|
|
141
|
+
if (this.agent.active && this.agent.matches.length > 0) {
|
|
142
|
+
const selectedAgent = this.agent.matches[this.agent.selectedIndex];
|
|
143
|
+
const lineIdx = this.agent.lineIndex;
|
|
144
|
+
const line = lines[lineIdx];
|
|
145
|
+
const result = replaceDollarMention(line, cursorPos, selectedAgent.id);
|
|
146
|
+
const newLines = [...lines];
|
|
147
|
+
newLines[lineIdx] = result.input;
|
|
148
|
+
this.agent.active = false;
|
|
149
|
+
this.agent.matches = [];
|
|
150
|
+
this.agent.selectedIndex = 0;
|
|
151
|
+
this.agent.scrollOffset = 0;
|
|
152
|
+
this.agent.partial = '';
|
|
153
|
+
this.agent.startPos = 0;
|
|
154
|
+
this.agent.lineIndex = 0;
|
|
155
|
+
return { lines: newLines, currentLine: lineIdx, cursorPos: result.cursorPos };
|
|
156
|
+
}
|
|
157
|
+
// File autocomplete takes priority (works on current line)
|
|
158
|
+
if (this.file.active && this.file.matches.length > 0) {
|
|
159
|
+
const selectedFile = this.file.matches[this.file.selectedIndex];
|
|
160
|
+
const currentLineContent = lines[currentLine];
|
|
161
|
+
const result = replaceAtMention(currentLineContent, cursorPos, selectedFile.path);
|
|
162
|
+
const newLines = [...lines];
|
|
163
|
+
newLines[currentLine] = result.input;
|
|
164
|
+
this.file.active = false;
|
|
165
|
+
this.file.matches = [];
|
|
166
|
+
this.file.selectedIndex = 0;
|
|
167
|
+
this.file.scrollOffset = 0;
|
|
168
|
+
this.file.partial = '';
|
|
169
|
+
return { lines: newLines, currentLine, cursorPos: result.cursorPos };
|
|
170
|
+
}
|
|
171
|
+
// Command autocomplete (works on first line only)
|
|
172
|
+
if (this.command.active && this.command.matches.length > 0) {
|
|
173
|
+
const selected = this.command.matches[this.command.selectedIndex];
|
|
174
|
+
const newLines = [...lines];
|
|
175
|
+
newLines[0] = selected.command;
|
|
176
|
+
this.command.active = false;
|
|
177
|
+
this.command.matches = [];
|
|
178
|
+
this.command.selectedIndex = 0;
|
|
179
|
+
this.command.scrollOffset = 0;
|
|
180
|
+
return { lines: newLines, currentLine: 0, cursorPos: selected.command.length };
|
|
181
|
+
}
|
|
182
|
+
return null;
|
|
183
|
+
}
|
|
184
|
+
// ===========================================================================
|
|
185
|
+
// Close / Navigate
|
|
186
|
+
// ===========================================================================
|
|
187
|
+
close() {
|
|
188
|
+
this.agent.active = false;
|
|
189
|
+
this.agent.matches = [];
|
|
190
|
+
this.agent.selectedIndex = 0;
|
|
191
|
+
this.agent.scrollOffset = 0;
|
|
192
|
+
this.agent.partial = '';
|
|
193
|
+
this.agent.startPos = 0;
|
|
194
|
+
this.agent.lineIndex = 0;
|
|
195
|
+
this.file.active = false;
|
|
196
|
+
this.file.matches = [];
|
|
197
|
+
this.file.selectedIndex = 0;
|
|
198
|
+
this.file.scrollOffset = 0;
|
|
199
|
+
this.file.partial = '';
|
|
200
|
+
this.command.active = false;
|
|
201
|
+
this.command.matches = [];
|
|
202
|
+
this.command.selectedIndex = 0;
|
|
203
|
+
this.command.scrollOffset = 0;
|
|
204
|
+
}
|
|
205
|
+
navigateUp() {
|
|
206
|
+
if (this.agent.active && this.agent.matches.length > 0) {
|
|
207
|
+
if (this.agent.selectedIndex > 0) {
|
|
208
|
+
this.agent.selectedIndex--;
|
|
209
|
+
if (this.agent.selectedIndex < this.agent.scrollOffset) {
|
|
210
|
+
this.agent.scrollOffset = this.agent.selectedIndex;
|
|
211
|
+
}
|
|
212
|
+
return true;
|
|
213
|
+
}
|
|
214
|
+
return false;
|
|
215
|
+
}
|
|
216
|
+
if (this.file.active && this.file.matches.length > 0) {
|
|
217
|
+
if (this.file.selectedIndex > 0) {
|
|
218
|
+
this.file.selectedIndex--;
|
|
219
|
+
if (this.file.selectedIndex < this.file.scrollOffset) {
|
|
220
|
+
this.file.scrollOffset = this.file.selectedIndex;
|
|
221
|
+
}
|
|
222
|
+
return true;
|
|
223
|
+
}
|
|
224
|
+
return false;
|
|
225
|
+
}
|
|
226
|
+
if (!this.command.active || this.command.matches.length === 0) {
|
|
227
|
+
return false;
|
|
228
|
+
}
|
|
229
|
+
if (this.command.selectedIndex > 0) {
|
|
230
|
+
this.command.selectedIndex--;
|
|
231
|
+
if (this.command.selectedIndex < this.command.scrollOffset) {
|
|
232
|
+
this.command.scrollOffset = this.command.selectedIndex;
|
|
233
|
+
}
|
|
234
|
+
return true;
|
|
235
|
+
}
|
|
236
|
+
return false;
|
|
237
|
+
}
|
|
238
|
+
navigateDown() {
|
|
239
|
+
if (this.agent.active && this.agent.matches.length > 0) {
|
|
240
|
+
if (this.agent.selectedIndex < this.agent.matches.length - 1) {
|
|
241
|
+
this.agent.selectedIndex++;
|
|
242
|
+
const maxVisibleIndex = this.agent.scrollOffset + MAX_VISIBLE_COMMANDS - 1;
|
|
243
|
+
if (this.agent.selectedIndex > maxVisibleIndex) {
|
|
244
|
+
this.agent.scrollOffset = this.agent.selectedIndex - MAX_VISIBLE_COMMANDS + 1;
|
|
245
|
+
}
|
|
246
|
+
return true;
|
|
247
|
+
}
|
|
248
|
+
return false;
|
|
249
|
+
}
|
|
250
|
+
if (this.file.active && this.file.matches.length > 0) {
|
|
251
|
+
if (this.file.selectedIndex < this.file.matches.length - 1) {
|
|
252
|
+
this.file.selectedIndex++;
|
|
253
|
+
const maxVisibleIndex = this.file.scrollOffset + MAX_VISIBLE_COMMANDS - 1;
|
|
254
|
+
if (this.file.selectedIndex > maxVisibleIndex) {
|
|
255
|
+
this.file.scrollOffset = this.file.selectedIndex - MAX_VISIBLE_COMMANDS + 1;
|
|
256
|
+
}
|
|
257
|
+
return true;
|
|
258
|
+
}
|
|
259
|
+
return false;
|
|
260
|
+
}
|
|
261
|
+
if (!this.command.active || this.command.matches.length === 0) {
|
|
262
|
+
return false;
|
|
263
|
+
}
|
|
264
|
+
if (this.command.selectedIndex < this.command.matches.length - 1) {
|
|
265
|
+
this.command.selectedIndex++;
|
|
266
|
+
const maxVisibleIndex = this.command.scrollOffset + MAX_VISIBLE_COMMANDS - 1;
|
|
267
|
+
if (this.command.selectedIndex > maxVisibleIndex) {
|
|
268
|
+
this.command.scrollOffset = this.command.selectedIndex - MAX_VISIBLE_COMMANDS + 1;
|
|
269
|
+
}
|
|
270
|
+
return true;
|
|
271
|
+
}
|
|
272
|
+
return false;
|
|
273
|
+
}
|
|
274
|
+
// ===========================================================================
|
|
275
|
+
// Build lines (for footer rendering)
|
|
276
|
+
// ===========================================================================
|
|
277
|
+
buildCommandLines(termWidth) {
|
|
278
|
+
if (!this.command.active || this.command.matches.length === 0) {
|
|
279
|
+
return [];
|
|
280
|
+
}
|
|
281
|
+
const s = getStyles();
|
|
282
|
+
const lines = [];
|
|
283
|
+
const { matches, selectedIndex, scrollOffset } = this.command;
|
|
284
|
+
const visible = matches.slice(scrollOffset, scrollOffset + MAX_VISIBLE_COMMANDS);
|
|
285
|
+
const total = matches.length;
|
|
286
|
+
if (scrollOffset > 0) {
|
|
287
|
+
lines.push(s.muted(` ↑ ${String(scrollOffset)} more above`));
|
|
288
|
+
}
|
|
289
|
+
for (let i = 0; i < visible.length; i++) {
|
|
290
|
+
const cmd = visible[i];
|
|
291
|
+
const actualIndex = scrollOffset + i;
|
|
292
|
+
const isSelected = actualIndex === selectedIndex;
|
|
293
|
+
const prefix = isSelected ? s.primary('❯ ') : ' ';
|
|
294
|
+
const name = isSelected ? s.primaryBold(cmd.command) : cmd.command;
|
|
295
|
+
const baseLen = getVisibleLength(prefix) + getVisibleLength(name) + 3;
|
|
296
|
+
const maxDescLen = termWidth - baseLen - 2;
|
|
297
|
+
const truncatedDesc = cmd.description.length > maxDescLen
|
|
298
|
+
? cmd.description.slice(0, maxDescLen - 1) + '…'
|
|
299
|
+
: cmd.description;
|
|
300
|
+
lines.push(`${prefix}${name} ${s.muted('- ' + truncatedDesc)}`);
|
|
301
|
+
}
|
|
302
|
+
const belowCount = total - scrollOffset - visible.length;
|
|
303
|
+
if (belowCount > 0) {
|
|
304
|
+
lines.push(s.muted(` ↓ ${String(belowCount)} more below`));
|
|
305
|
+
}
|
|
306
|
+
return lines;
|
|
307
|
+
}
|
|
308
|
+
buildFileLines(termWidth) {
|
|
309
|
+
if (!this.file.active || this.file.matches.length === 0) {
|
|
310
|
+
return [];
|
|
311
|
+
}
|
|
312
|
+
const s = getStyles();
|
|
313
|
+
const lines = [];
|
|
314
|
+
const { matches, selectedIndex, scrollOffset } = this.file;
|
|
315
|
+
const visible = matches.slice(scrollOffset, scrollOffset + MAX_VISIBLE_COMMANDS);
|
|
316
|
+
const total = matches.length;
|
|
317
|
+
if (scrollOffset > 0) {
|
|
318
|
+
lines.push(s.muted(` ↑ ${String(scrollOffset)} more above`));
|
|
319
|
+
}
|
|
320
|
+
for (let i = 0; i < visible.length; i++) {
|
|
321
|
+
const file = visible[i];
|
|
322
|
+
const actualIndex = scrollOffset + i;
|
|
323
|
+
const isSelected = actualIndex === selectedIndex;
|
|
324
|
+
const prefix = isSelected ? s.primary('❯ ') : ' ';
|
|
325
|
+
const icon = file.isDirectory ? '📁 ' : '📄 ';
|
|
326
|
+
const name = isSelected ? s.primaryBold(file.path) : file.path;
|
|
327
|
+
const baseLen = getVisibleLength(prefix) + 3 + getVisibleLength(file.path);
|
|
328
|
+
if (baseLen > termWidth - 2) {
|
|
329
|
+
const maxLen = termWidth - getVisibleLength(prefix) - 5;
|
|
330
|
+
const truncatedPath = file.path.length > maxLen
|
|
331
|
+
? '…' + file.path.slice(-(maxLen - 1))
|
|
332
|
+
: file.path;
|
|
333
|
+
const truncatedName = isSelected ? s.primaryBold(truncatedPath) : truncatedPath;
|
|
334
|
+
lines.push(`${prefix}${icon}${truncatedName}`);
|
|
335
|
+
}
|
|
336
|
+
else {
|
|
337
|
+
lines.push(`${prefix}${icon}${name}`);
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
const belowCount = total - scrollOffset - visible.length;
|
|
341
|
+
if (belowCount > 0) {
|
|
342
|
+
lines.push(s.muted(` ↓ ${String(belowCount)} more below`));
|
|
343
|
+
}
|
|
344
|
+
return lines;
|
|
345
|
+
}
|
|
346
|
+
buildAgentLines(termWidth) {
|
|
347
|
+
if (!this.agent.active || this.agent.matches.length === 0) {
|
|
348
|
+
return [];
|
|
349
|
+
}
|
|
350
|
+
const s = getStyles();
|
|
351
|
+
const lines = [];
|
|
352
|
+
const { matches, selectedIndex, scrollOffset } = this.agent;
|
|
353
|
+
const visible = matches.slice(scrollOffset, scrollOffset + MAX_VISIBLE_COMMANDS);
|
|
354
|
+
const total = matches.length;
|
|
355
|
+
if (scrollOffset > 0) {
|
|
356
|
+
lines.push(s.muted(` ↑ ${String(scrollOffset)} more above`));
|
|
357
|
+
}
|
|
358
|
+
for (let i = 0; i < visible.length; i++) {
|
|
359
|
+
const agentItem = visible[i];
|
|
360
|
+
const actualIndex = scrollOffset + i;
|
|
361
|
+
const isSelected = actualIndex === selectedIndex;
|
|
362
|
+
const prefix = isSelected ? s.primary('❯ ') : ' ';
|
|
363
|
+
const mascot = agentItem.mascot + ' ';
|
|
364
|
+
const name = isSelected ? s.primaryBold('$' + agentItem.id) : '$' + agentItem.id;
|
|
365
|
+
const desc = s.muted(' - ' + agentItem.displayName);
|
|
366
|
+
const baseLen = getVisibleLength(prefix) + 6 + agentItem.id.length + 3 + agentItem.displayName.length;
|
|
367
|
+
if (baseLen > termWidth - 2) {
|
|
368
|
+
const maxDescLen = termWidth - getVisibleLength(prefix) - 6 - agentItem.id.length - 5;
|
|
369
|
+
const truncatedDesc = agentItem.displayName.length > maxDescLen
|
|
370
|
+
? s.muted(' - ' + agentItem.displayName.slice(0, maxDescLen - 1) + '…')
|
|
371
|
+
: desc;
|
|
372
|
+
lines.push(`${prefix}${mascot}${name}${truncatedDesc}`);
|
|
373
|
+
}
|
|
374
|
+
else {
|
|
375
|
+
lines.push(`${prefix}${mascot}${name}${desc}`);
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
const belowCount = total - scrollOffset - visible.length;
|
|
379
|
+
if (belowCount > 0) {
|
|
380
|
+
lines.push(s.muted(` ↓ ${String(belowCount)} more below`));
|
|
381
|
+
}
|
|
382
|
+
return lines;
|
|
383
|
+
}
|
|
384
|
+
}
|
package/dist/ui/base/index.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ export { OverlayLifecycle, setupOverlay } from './overlay-lifecycle.js';
|
|
|
16
16
|
export type { KeyHandler } from './overlay-lifecycle.js';
|
|
17
17
|
export { BaseOverlay } from './overlay-base.js';
|
|
18
18
|
export { BaseScreen, ScreenStack, stay, pushScreen, popScreen, closeOverlay, } from './screen-stack.js';
|
|
19
|
-
export { renderBorder, wrapText, truncate, truncateAnsi, normalizeText, padToHeight, emptyLines, } from './render-utils.js';
|
|
19
|
+
export { renderBorder, wrapText, truncate, truncateAnsi, normalizeText, padToHeight, emptyLines, renderProgressBar, formatTokens, } from './render-utils.js';
|
|
20
20
|
export { TabbedListOverlay } from './tabbed-list-overlay.js';
|
|
21
21
|
export type { TabbedListConfig, TabbedListState } from './tabbed-list-overlay.js';
|
|
22
22
|
export { BaseOverlayV2 } from './overlay-base-v2.js';
|
package/dist/ui/base/index.js
CHANGED
|
@@ -21,7 +21,7 @@ export { BaseOverlay } from './overlay-base.js';
|
|
|
21
21
|
// Screen stack for multi-screen overlays
|
|
22
22
|
export { BaseScreen, ScreenStack, stay, pushScreen, popScreen, closeOverlay, } from './screen-stack.js';
|
|
23
23
|
// Render utilities
|
|
24
|
-
export { renderBorder, wrapText, truncate, truncateAnsi, normalizeText, padToHeight, emptyLines, } from './render-utils.js';
|
|
24
|
+
export { renderBorder, wrapText, truncate, truncateAnsi, normalizeText, padToHeight, emptyLines, renderProgressBar, formatTokens, } from './render-utils.js';
|
|
25
25
|
// Tabbed list overlay base
|
|
26
26
|
export { TabbedListOverlay } from './tabbed-list-overlay.js';
|
|
27
27
|
// V2 Overlay base classes (new Overlay interface)
|
|
@@ -63,12 +63,22 @@ export declare abstract class BaseOverlayV2<TState = unknown, TResult = void> im
|
|
|
63
63
|
protected termWidth: number;
|
|
64
64
|
/** Minimum height for stable rendering (prevents visual jitter) */
|
|
65
65
|
protected minHeight: number;
|
|
66
|
+
/** Callback to request re-render from async operations */
|
|
67
|
+
protected renderCallback: (() => void) | null;
|
|
66
68
|
/**
|
|
67
69
|
* Create a new overlay instance.
|
|
68
70
|
*
|
|
69
71
|
* @param initialState - Initial state
|
|
70
72
|
*/
|
|
71
73
|
constructor(initialState: TState);
|
|
74
|
+
/**
|
|
75
|
+
* Set the render callback. Called by TerminalUI when mounting.
|
|
76
|
+
*/
|
|
77
|
+
setRenderCallback(callback: () => void): void;
|
|
78
|
+
/**
|
|
79
|
+
* Request a re-render. Call from async operations.
|
|
80
|
+
*/
|
|
81
|
+
protected requestRender(): void;
|
|
72
82
|
/**
|
|
73
83
|
* Get current state.
|
|
74
84
|
*/
|
|
@@ -60,6 +60,8 @@ export class BaseOverlayV2 {
|
|
|
60
60
|
termWidth = 80;
|
|
61
61
|
/** Minimum height for stable rendering (prevents visual jitter) */
|
|
62
62
|
minHeight = 0;
|
|
63
|
+
/** Callback to request re-render from async operations */
|
|
64
|
+
renderCallback = null;
|
|
63
65
|
/**
|
|
64
66
|
* Create a new overlay instance.
|
|
65
67
|
*
|
|
@@ -68,6 +70,18 @@ export class BaseOverlayV2 {
|
|
|
68
70
|
constructor(initialState) {
|
|
69
71
|
this.state = initialState;
|
|
70
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* Set the render callback. Called by TerminalUI when mounting.
|
|
75
|
+
*/
|
|
76
|
+
setRenderCallback(callback) {
|
|
77
|
+
this.renderCallback = callback;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Request a re-render. Call from async operations.
|
|
81
|
+
*/
|
|
82
|
+
requestRender() {
|
|
83
|
+
this.renderCallback?.();
|
|
84
|
+
}
|
|
71
85
|
// ===========================================================================
|
|
72
86
|
// Overlay Interface Implementation
|
|
73
87
|
// ===========================================================================
|
|
@@ -6,3 +6,22 @@
|
|
|
6
6
|
*/
|
|
7
7
|
export { renderBorder, wrapText, truncatePlain, truncateAnsi, normalizeText, padToHeight, emptyLines, padToWidth, } from '@compilr-dev/ui-core/utils';
|
|
8
8
|
export { truncatePlain as truncate } from '@compilr-dev/ui-core/utils';
|
|
9
|
+
import type { ThemeStyleFunctions } from '../../themes/index.js';
|
|
10
|
+
/**
|
|
11
|
+
* Render a progress bar with color coding.
|
|
12
|
+
*
|
|
13
|
+
* Color thresholds: >0.8 = error, >0.6 = warning, else success.
|
|
14
|
+
*
|
|
15
|
+
* @param ratio - Fill ratio (0-1, clamped)
|
|
16
|
+
* @param width - Width of the bar in characters
|
|
17
|
+
* @param s - Theme style functions for coloring
|
|
18
|
+
* @returns Colored bar string (no percentage text appended — caller adds if needed)
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```ts
|
|
22
|
+
* const bar = renderProgressBar(0.75, 20, styles);
|
|
23
|
+
* // Returns: "████████████████░░░░" (colored based on ratio)
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare function renderProgressBar(ratio: number, width: number, s: ThemeStyleFunctions): string;
|
|
27
|
+
export { formatTokens } from '../../utils/format-tokens.js';
|
|
@@ -9,3 +9,28 @@ export { renderBorder, wrapText, truncatePlain, truncateAnsi, normalizeText, pad
|
|
|
9
9
|
// (ui-core's truncate in ansi.ts is ANSI-aware with '...' suffix,
|
|
10
10
|
// CLI expects plain text truncate with '…' suffix)
|
|
11
11
|
export { truncatePlain as truncate } from '@compilr-dev/ui-core/utils';
|
|
12
|
+
/**
|
|
13
|
+
* Render a progress bar with color coding.
|
|
14
|
+
*
|
|
15
|
+
* Color thresholds: >0.8 = error, >0.6 = warning, else success.
|
|
16
|
+
*
|
|
17
|
+
* @param ratio - Fill ratio (0-1, clamped)
|
|
18
|
+
* @param width - Width of the bar in characters
|
|
19
|
+
* @param s - Theme style functions for coloring
|
|
20
|
+
* @returns Colored bar string (no percentage text appended — caller adds if needed)
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```ts
|
|
24
|
+
* const bar = renderProgressBar(0.75, 20, styles);
|
|
25
|
+
* // Returns: "████████████████░░░░" (colored based on ratio)
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export function renderProgressBar(ratio, width, s) {
|
|
29
|
+
const clamped = Math.max(0, Math.min(1, ratio));
|
|
30
|
+
const filled = Math.round(clamped * width);
|
|
31
|
+
const empty = width - filled;
|
|
32
|
+
const colorFn = clamped > 0.8 ? s.error : clamped > 0.6 ? s.warning : s.success;
|
|
33
|
+
return colorFn('█'.repeat(filled)) + s.muted('░'.repeat(empty));
|
|
34
|
+
}
|
|
35
|
+
// Re-export formatTokens from utils for backward compatibility
|
|
36
|
+
export { formatTokens } from '../../utils/format-tokens.js';
|
|
@@ -50,12 +50,27 @@ export interface TabbedListConfigV2<TItem> {
|
|
|
50
50
|
/** Custom no-results message */
|
|
51
51
|
noResultsMessage?: string;
|
|
52
52
|
/** Custom footer hints */
|
|
53
|
-
footerHints?: (searchMode: boolean) => string;
|
|
53
|
+
footerHints?: (searchMode: boolean, activeTabId?: string) => string;
|
|
54
54
|
/**
|
|
55
55
|
* Render preview content for the selected item.
|
|
56
56
|
* Displayed between the list and footer.
|
|
57
57
|
*/
|
|
58
58
|
renderSelectedPreview?: (item: TItem, styles: ThemeStyleFunctions) => string[];
|
|
59
|
+
/**
|
|
60
|
+
* Render sub-header content below the tab bar.
|
|
61
|
+
* Useful for showing status info like API key status.
|
|
62
|
+
*/
|
|
63
|
+
renderSubHeader?: (tabId: string, styles: ThemeStyleFunctions) => string[];
|
|
64
|
+
/**
|
|
65
|
+
* Handle custom key presses before default handling.
|
|
66
|
+
* Return { handled: true, render: boolean } to consume the key.
|
|
67
|
+
* Return { handled: false } to let default handling proceed.
|
|
68
|
+
*/
|
|
69
|
+
handleCustomKey?: (key: Buffer, tabId: string) => {
|
|
70
|
+
handled: boolean;
|
|
71
|
+
render?: boolean;
|
|
72
|
+
pushScreen?: BaseScreen;
|
|
73
|
+
};
|
|
59
74
|
}
|
|
60
75
|
/**
|
|
61
76
|
* State for TabbedListOverlayV2.
|
|
@@ -91,6 +91,12 @@ class ListScreenV2 extends BaseScreen {
|
|
|
91
91
|
const tabHint = s.muted(`(${this.tabFeature.renderHints()})`);
|
|
92
92
|
lines.push(` ${tabBar} ${tabHint}`);
|
|
93
93
|
lines.push('');
|
|
94
|
+
// Sub-header (if provided) - e.g., API key status
|
|
95
|
+
if (this.config.renderSubHeader) {
|
|
96
|
+
const tabId = this.tabFeature.getCurrentTabId(this.state);
|
|
97
|
+
const subHeaderLines = this.config.renderSubHeader(tabId, s);
|
|
98
|
+
lines.push(...subHeaderLines);
|
|
99
|
+
}
|
|
94
100
|
// Search box (if in search mode)
|
|
95
101
|
if (this.state.searchMode) {
|
|
96
102
|
const query = this.state.searchQuery;
|
|
@@ -143,7 +149,8 @@ class ListScreenV2 extends BaseScreen {
|
|
|
143
149
|
}
|
|
144
150
|
getFooterHints() {
|
|
145
151
|
if (this.config.footerHints) {
|
|
146
|
-
|
|
152
|
+
const activeTab = this.config.tabs[this.state.currentTab];
|
|
153
|
+
return this.config.footerHints(this.state.searchMode, activeTab.id);
|
|
147
154
|
}
|
|
148
155
|
if (this.state.searchMode) {
|
|
149
156
|
return 'Type to filter · ↑↓/jk Navigate · Enter Details · Esc Exit search';
|
|
@@ -179,6 +186,17 @@ class ListScreenV2 extends BaseScreen {
|
|
|
179
186
|
return { action: 'stay', render: false };
|
|
180
187
|
}
|
|
181
188
|
// Not in search mode
|
|
189
|
+
// Custom key handling (before default handling)
|
|
190
|
+
if (this.config.handleCustomKey) {
|
|
191
|
+
const tabId = this.tabFeature.getCurrentTabId(this.state);
|
|
192
|
+
const customResult = this.config.handleCustomKey(data, tabId);
|
|
193
|
+
if (customResult.handled) {
|
|
194
|
+
if (customResult.pushScreen) {
|
|
195
|
+
return { action: 'push', screen: customResult.pushScreen };
|
|
196
|
+
}
|
|
197
|
+
return { action: 'stay', render: customResult.render ?? false };
|
|
198
|
+
}
|
|
199
|
+
}
|
|
182
200
|
if (isSlash(data)) {
|
|
183
201
|
this.state.searchMode = true;
|
|
184
202
|
return { action: 'stay', render: true };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Label Constants
|
|
3
|
+
*
|
|
4
|
+
* Centralized display labels for domain types used across multiple overlays.
|
|
5
|
+
*/
|
|
6
|
+
import type { ArtifactType } from '../../multi-agent/index.js';
|
|
7
|
+
import type { DocumentType, PlanStatus } from '../../db/schema.js';
|
|
8
|
+
export declare const ARTIFACT_TYPE_LABELS: Record<ArtifactType, string>;
|
|
9
|
+
export declare const DOC_TYPE_LABELS: Record<DocumentType, string>;
|
|
10
|
+
/** Icon-only labels for compact display (e.g., list views) */
|
|
11
|
+
export declare const PLAN_STATUS_ICONS: Record<PlanStatus, string>;
|
|
12
|
+
/** Icon + text labels for detailed display (e.g., detail views) */
|
|
13
|
+
export declare const PLAN_STATUS_LABELS: Record<PlanStatus, string>;
|
|
14
|
+
export declare const PLAN_STATUS_COLORS: Record<PlanStatus, 'muted' | 'warning' | 'primary' | 'success' | 'error'>;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Label Constants
|
|
3
|
+
*
|
|
4
|
+
* Centralized display labels for domain types used across multiple overlays.
|
|
5
|
+
*/
|
|
6
|
+
// =============================================================================
|
|
7
|
+
// Artifact Labels
|
|
8
|
+
// =============================================================================
|
|
9
|
+
export const ARTIFACT_TYPE_LABELS = {
|
|
10
|
+
'design': 'DESIGN',
|
|
11
|
+
'plan': 'PLAN',
|
|
12
|
+
'review': 'REVIEW',
|
|
13
|
+
'decision': 'DECISION',
|
|
14
|
+
'note': 'NOTE',
|
|
15
|
+
};
|
|
16
|
+
// =============================================================================
|
|
17
|
+
// Document Labels
|
|
18
|
+
// =============================================================================
|
|
19
|
+
export const DOC_TYPE_LABELS = {
|
|
20
|
+
'prd': 'PRD',
|
|
21
|
+
'architecture': 'ARCH',
|
|
22
|
+
'design': 'DESIGN',
|
|
23
|
+
'notes': 'NOTES',
|
|
24
|
+
'plan': 'PLAN',
|
|
25
|
+
'app-model': 'MODEL',
|
|
26
|
+
};
|
|
27
|
+
// =============================================================================
|
|
28
|
+
// Plan Status Labels
|
|
29
|
+
// =============================================================================
|
|
30
|
+
/** Icon-only labels for compact display (e.g., list views) */
|
|
31
|
+
export const PLAN_STATUS_ICONS = {
|
|
32
|
+
'draft': '○',
|
|
33
|
+
'approved': '◐',
|
|
34
|
+
'in_progress': '◑',
|
|
35
|
+
'completed': '●',
|
|
36
|
+
'abandoned': '✗',
|
|
37
|
+
};
|
|
38
|
+
/** Icon + text labels for detailed display (e.g., detail views) */
|
|
39
|
+
export const PLAN_STATUS_LABELS = {
|
|
40
|
+
'draft': '○ Draft',
|
|
41
|
+
'approved': '◐ Approved',
|
|
42
|
+
'in_progress': '◑ In Progress',
|
|
43
|
+
'completed': '● Completed',
|
|
44
|
+
'abandoned': '✗ Abandoned',
|
|
45
|
+
};
|
|
46
|
+
export const PLAN_STATUS_COLORS = {
|
|
47
|
+
'draft': 'muted',
|
|
48
|
+
'approved': 'warning',
|
|
49
|
+
'in_progress': 'primary',
|
|
50
|
+
'completed': 'success',
|
|
51
|
+
'abandoned': 'error',
|
|
52
|
+
};
|