@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
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Mascot Overlay
|
|
3
|
-
*
|
|
4
|
-
* Standalone mascot selection overlay.
|
|
5
|
-
* Accessible via /mascot command or from Config overlay.
|
|
6
|
-
*
|
|
7
|
-
* Features:
|
|
8
|
-
* - All mascot expressions
|
|
9
|
-
* - Live preview
|
|
10
|
-
* - Persists selection to settings
|
|
11
|
-
*/
|
|
12
|
-
import * as terminal from './terminal.js';
|
|
13
|
-
import { BaseOverlay, isEscape, isEnter, isSpace, isCtrlC, isNavigateUp, isNavigateDown, isClose, renderBorder, } from './base/index.js';
|
|
14
|
-
import { getSettings, setSetting } from '../settings/index.js';
|
|
15
|
-
import { MASCOT_OPTIONS, MASCOT_LABELS, EXPRESSIONS, } from './mascot/index.js';
|
|
16
|
-
// =============================================================================
|
|
17
|
-
// Mascot Overlay Class
|
|
18
|
-
// =============================================================================
|
|
19
|
-
class MascotOverlay extends BaseOverlay {
|
|
20
|
-
constructor(options = {}) {
|
|
21
|
-
const currentMascot = options.currentMascot ?? getSettings().mascot;
|
|
22
|
-
// Find current mascot in options list
|
|
23
|
-
let selectedIndex = 0;
|
|
24
|
-
const mascotIndex = MASCOT_OPTIONS.findIndex(m => m === currentMascot);
|
|
25
|
-
if (mascotIndex >= 0) {
|
|
26
|
-
selectedIndex = mascotIndex;
|
|
27
|
-
}
|
|
28
|
-
const initialState = {
|
|
29
|
-
lineCount: 0,
|
|
30
|
-
maxLineCount: 0,
|
|
31
|
-
selectedIndex,
|
|
32
|
-
currentMascot,
|
|
33
|
-
};
|
|
34
|
-
super(initialState, { minHeight: 18 });
|
|
35
|
-
}
|
|
36
|
-
render() {
|
|
37
|
-
const s = this.styles;
|
|
38
|
-
const cols = terminal.getTerminalWidth();
|
|
39
|
-
const border = renderBorder(cols, s);
|
|
40
|
-
const lines = [];
|
|
41
|
-
// Get preview lines for side-by-side layout
|
|
42
|
-
const selectedOption = MASCOT_OPTIONS[this.state.selectedIndex];
|
|
43
|
-
let previewLines = [];
|
|
44
|
-
let previewLabel = '';
|
|
45
|
-
if (selectedOption === 'none') {
|
|
46
|
-
previewLabel = '(No mascot)';
|
|
47
|
-
previewLines = ['', '', '', '', '', ''];
|
|
48
|
-
}
|
|
49
|
-
else if (selectedOption === 'random') {
|
|
50
|
-
previewLabel = '(Random on startup)';
|
|
51
|
-
previewLines = EXPRESSIONS.neutral;
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
previewLabel = MASCOT_LABELS[selectedOption];
|
|
55
|
-
previewLines = EXPRESSIONS[selectedOption];
|
|
56
|
-
}
|
|
57
|
-
// Header
|
|
58
|
-
lines.push(border);
|
|
59
|
-
lines.push(` ${s.primaryBold('Select Mascot')}`);
|
|
60
|
-
lines.push('');
|
|
61
|
-
// Column widths
|
|
62
|
-
const listColWidth = 28; // Space for list items
|
|
63
|
-
const gap = 4; // Gap between columns
|
|
64
|
-
const previewColStart = listColWidth + gap;
|
|
65
|
-
// Build side-by-side layout
|
|
66
|
-
// Options list on left, preview on right
|
|
67
|
-
const optionCount = MASCOT_OPTIONS.length;
|
|
68
|
-
const previewHeight = previewLines.length;
|
|
69
|
-
// Calculate where to start the preview (vertically center it with the list)
|
|
70
|
-
const previewStartRow = Math.max(0, Math.floor((optionCount - previewHeight) / 2));
|
|
71
|
-
for (let i = 0; i < Math.max(optionCount, previewStartRow + previewHeight + 1); i++) {
|
|
72
|
-
let leftPart = '';
|
|
73
|
-
let rightPart = '';
|
|
74
|
-
// Left column: option list
|
|
75
|
-
if (i < optionCount) {
|
|
76
|
-
const option = MASCOT_OPTIONS[i];
|
|
77
|
-
const isSelected = i === this.state.selectedIndex;
|
|
78
|
-
const isCurrent = option === this.state.currentMascot;
|
|
79
|
-
const prefix = isSelected ? s.primary('❯ ') : ' ';
|
|
80
|
-
const num = `${(i + 1).toString().padStart(2)}. `;
|
|
81
|
-
const checkmark = isCurrent ? s.success(' ✓') : '';
|
|
82
|
-
const label = isSelected ? s.primary(MASCOT_LABELS[option]) : MASCOT_LABELS[option];
|
|
83
|
-
leftPart = ` ${prefix}${num}${label}${checkmark}`;
|
|
84
|
-
}
|
|
85
|
-
// Right column: preview
|
|
86
|
-
const previewRow = i - previewStartRow;
|
|
87
|
-
if (previewRow === -1) {
|
|
88
|
-
// Preview label above the mascot
|
|
89
|
-
rightPart = s.muted(previewLabel);
|
|
90
|
-
}
|
|
91
|
-
else if (previewRow >= 0 && previewRow < previewHeight) {
|
|
92
|
-
rightPart = s.secondary(previewLines[previewRow]);
|
|
93
|
-
}
|
|
94
|
-
// Combine columns with proper spacing
|
|
95
|
-
// Strip ANSI codes for width calculation
|
|
96
|
-
// eslint-disable-next-line no-control-regex
|
|
97
|
-
const leftPlain = leftPart.replace(/\x1b\[[0-9;]*m/g, '');
|
|
98
|
-
const padding = ' '.repeat(Math.max(0, previewColStart - leftPlain.length));
|
|
99
|
-
lines.push(leftPart + padding + rightPart);
|
|
100
|
-
}
|
|
101
|
-
// Footer
|
|
102
|
-
lines.push('');
|
|
103
|
-
lines.push(border);
|
|
104
|
-
lines.push(` ${s.muted('↑↓/jk Navigate · Enter/Space Select · q/Esc Close')}`);
|
|
105
|
-
lines.push(border);
|
|
106
|
-
return lines;
|
|
107
|
-
}
|
|
108
|
-
handleKey(data) {
|
|
109
|
-
const maxIndex = MASCOT_OPTIONS.length - 1;
|
|
110
|
-
// Ctrl+C always closes
|
|
111
|
-
if (isCtrlC(data)) {
|
|
112
|
-
this.close({});
|
|
113
|
-
return;
|
|
114
|
-
}
|
|
115
|
-
// q or Esc closes
|
|
116
|
-
if (isEscape(data) || isClose(data)) {
|
|
117
|
-
this.close({});
|
|
118
|
-
return;
|
|
119
|
-
}
|
|
120
|
-
// Navigation
|
|
121
|
-
if (isNavigateUp(data) && this.state.selectedIndex > 0) {
|
|
122
|
-
this.state.selectedIndex--;
|
|
123
|
-
this.update();
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
if (isNavigateDown(data) && this.state.selectedIndex < maxIndex) {
|
|
127
|
-
this.state.selectedIndex++;
|
|
128
|
-
this.update();
|
|
129
|
-
return;
|
|
130
|
-
}
|
|
131
|
-
// Enter/Space to select
|
|
132
|
-
if (isEnter(data) || isSpace(data)) {
|
|
133
|
-
const selectedMascot = MASCOT_OPTIONS[this.state.selectedIndex];
|
|
134
|
-
setSetting('mascot', selectedMascot);
|
|
135
|
-
this.close({
|
|
136
|
-
mascotChanged: selectedMascot,
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
// =============================================================================
|
|
142
|
-
// Export Function
|
|
143
|
-
// =============================================================================
|
|
144
|
-
export async function showMascotOverlay(options = {}) {
|
|
145
|
-
return new MascotOverlay(options).show();
|
|
146
|
-
}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Model Overlay V2
|
|
3
|
-
*
|
|
4
|
-
* Model selection overlay using TabbedListOverlayV2 for the new Overlay interface.
|
|
5
|
-
* Works with TerminalUI's overlay management.
|
|
6
|
-
*
|
|
7
|
-
* Features:
|
|
8
|
-
* - Tabs by provider (Claude, OpenAI, Gemini, Ollama)
|
|
9
|
-
* - Hot-swap detection (same provider = immediate, different = restart)
|
|
10
|
-
* - API key status checking
|
|
11
|
-
* - Persists selection to settings
|
|
12
|
-
*/
|
|
13
|
-
import { TabbedListOverlayV2 } from './base/index.js';
|
|
14
|
-
interface ModelOption {
|
|
15
|
-
id: string;
|
|
16
|
-
name: string;
|
|
17
|
-
description: string;
|
|
18
|
-
provider: string;
|
|
19
|
-
}
|
|
20
|
-
export interface ModelOverlayV2Options {
|
|
21
|
-
/** Current model ID */
|
|
22
|
-
currentModel?: string;
|
|
23
|
-
/** Current provider (for hot-swap detection) */
|
|
24
|
-
currentProvider?: string;
|
|
25
|
-
}
|
|
26
|
-
export interface ModelOverlayV2Result {
|
|
27
|
-
/** Selected model ID (if changed) */
|
|
28
|
-
modelChanged?: string;
|
|
29
|
-
/** Selected provider */
|
|
30
|
-
provider?: string;
|
|
31
|
-
/** Whether restart is required (different provider) */
|
|
32
|
-
requiresRestart?: boolean;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Model selection overlay using the new Overlay interface.
|
|
36
|
-
* Displays available models in a tabbed list by provider.
|
|
37
|
-
*/
|
|
38
|
-
export declare class ModelOverlayV2 extends TabbedListOverlayV2<ModelOption, ModelOverlayV2Result> {
|
|
39
|
-
readonly type: "inline";
|
|
40
|
-
readonly id = "model-overlay-v2";
|
|
41
|
-
private readonly currentModel;
|
|
42
|
-
private readonly currentProvider;
|
|
43
|
-
constructor(options?: ModelOverlayV2Options);
|
|
44
|
-
/**
|
|
45
|
-
* Override to handle model selection on Enter.
|
|
46
|
-
*/
|
|
47
|
-
protected onItemSelected(item: ModelOption): ModelOverlayV2Result | undefined;
|
|
48
|
-
}
|
|
49
|
-
export {};
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Model Overlay V2
|
|
3
|
-
*
|
|
4
|
-
* Model selection overlay using TabbedListOverlayV2 for the new Overlay interface.
|
|
5
|
-
* Works with TerminalUI's overlay management.
|
|
6
|
-
*
|
|
7
|
-
* Features:
|
|
8
|
-
* - Tabs by provider (Claude, OpenAI, Gemini, Ollama)
|
|
9
|
-
* - Hot-swap detection (same provider = immediate, different = restart)
|
|
10
|
-
* - API key status checking
|
|
11
|
-
* - Persists selection to settings
|
|
12
|
-
*/
|
|
13
|
-
import { TabbedListOverlayV2, } from './base/index.js';
|
|
14
|
-
import { setSetting } from '../settings/index.js';
|
|
15
|
-
import { hasApiKey, settingsProviderToCredentialKey } from '../utils/credentials.js';
|
|
16
|
-
// =============================================================================
|
|
17
|
-
// Constants
|
|
18
|
-
// =============================================================================
|
|
19
|
-
const PAGE_SIZE = 10;
|
|
20
|
-
const PROVIDER_TABS = [
|
|
21
|
-
{ id: 'claude', label: 'Claude' },
|
|
22
|
-
{ id: 'openai', label: 'OpenAI' },
|
|
23
|
-
{ id: 'gemini', label: 'Gemini' },
|
|
24
|
-
{ id: 'ollama', label: 'Ollama' },
|
|
25
|
-
];
|
|
26
|
-
const MODEL_OPTIONS = [
|
|
27
|
-
// Claude
|
|
28
|
-
{ id: 'claude-sonnet-4-20250514', name: 'Sonnet 4', description: 'Best for everyday tasks', provider: 'claude' },
|
|
29
|
-
{ id: 'claude-opus-4-20250514', name: 'Opus 4', description: 'Most capable for complex work', provider: 'claude' },
|
|
30
|
-
{ id: 'claude-3-5-haiku-20241022', name: 'Haiku 3.5', description: 'Fastest for quick answers', provider: 'claude' },
|
|
31
|
-
// OpenAI
|
|
32
|
-
{ id: 'gpt-4o', name: 'GPT-4o', description: 'Best overall', provider: 'openai' },
|
|
33
|
-
{ id: 'gpt-4o-mini', name: 'GPT-4o Mini', description: 'Fast and affordable', provider: 'openai' },
|
|
34
|
-
// Gemini
|
|
35
|
-
{ id: 'gemini-2.0-flash', name: 'Gemini 2.0 Flash', description: 'Fast multimodal', provider: 'gemini' },
|
|
36
|
-
{ id: 'gemini-2.5-flash', name: 'Gemini 2.5 Flash', description: 'Latest stable flash', provider: 'gemini' },
|
|
37
|
-
{ id: 'gemini-2.5-pro', name: 'Gemini 2.5 Pro', description: 'Most capable Gemini', provider: 'gemini' },
|
|
38
|
-
// Ollama
|
|
39
|
-
{ id: 'llama3.2', name: 'Llama 3.2', description: 'Local model', provider: 'ollama' },
|
|
40
|
-
{ id: 'mistral', name: 'Mistral', description: 'Local model', provider: 'ollama' },
|
|
41
|
-
{ id: 'codellama', name: 'Code Llama', description: 'Code-focused local model', provider: 'ollama' },
|
|
42
|
-
];
|
|
43
|
-
// =============================================================================
|
|
44
|
-
// Model Overlay V2 Class
|
|
45
|
-
// =============================================================================
|
|
46
|
-
/**
|
|
47
|
-
* Model selection overlay using the new Overlay interface.
|
|
48
|
-
* Displays available models in a tabbed list by provider.
|
|
49
|
-
*/
|
|
50
|
-
export class ModelOverlayV2 extends TabbedListOverlayV2 {
|
|
51
|
-
type = 'inline';
|
|
52
|
-
id = 'model-overlay-v2';
|
|
53
|
-
currentModel;
|
|
54
|
-
currentProvider;
|
|
55
|
-
constructor(options = {}) {
|
|
56
|
-
const currentModel = options.currentModel ?? 'claude-sonnet-4-20250514';
|
|
57
|
-
const currentProvider = options.currentProvider ?? 'claude';
|
|
58
|
-
// Find the initial tab based on current provider
|
|
59
|
-
const initialTabIndex = PROVIDER_TABS.findIndex((t) => t.id === currentProvider);
|
|
60
|
-
super({
|
|
61
|
-
title: 'Select Model',
|
|
62
|
-
tabs: PROVIDER_TABS,
|
|
63
|
-
items: MODEL_OPTIONS,
|
|
64
|
-
pageSize: PAGE_SIZE,
|
|
65
|
-
filterByTab: (item, tabId) => item.provider === tabId,
|
|
66
|
-
getSearchText: (item) => `${item.name} ${item.description} ${item.id}`,
|
|
67
|
-
renderItem: (item, isSelected, styles) => {
|
|
68
|
-
const isCurrent = item.id === currentModel;
|
|
69
|
-
const prefix = isSelected ? styles.primary(' > ') : ' ';
|
|
70
|
-
// Check API key status for this provider
|
|
71
|
-
const providerType = item.provider;
|
|
72
|
-
const credKey = settingsProviderToCredentialKey(providerType);
|
|
73
|
-
const hasKey = item.provider === 'ollama' || hasApiKey(credKey);
|
|
74
|
-
const keyIndicator = hasKey ? styles.success('●') : styles.error('○');
|
|
75
|
-
const name = isSelected
|
|
76
|
-
? styles.primary(item.name.padEnd(18))
|
|
77
|
-
: styles.muted(item.name.padEnd(18));
|
|
78
|
-
const desc = styles.muted(item.description);
|
|
79
|
-
const currentBadge = isCurrent ? styles.success(' (current)') : '';
|
|
80
|
-
return `${prefix}${keyIndicator} ${name}${desc}${currentBadge}`;
|
|
81
|
-
},
|
|
82
|
-
footerHints: (searchMode) => {
|
|
83
|
-
if (searchMode) {
|
|
84
|
-
return 'Type to filter · ↑↓/jk Navigate · Enter Select · Esc Exit search';
|
|
85
|
-
}
|
|
86
|
-
return 'Tab Provider · ↑↓/jk · / Search · Enter Select · q/Esc Close';
|
|
87
|
-
},
|
|
88
|
-
emptyMessage: 'No models available for this provider.',
|
|
89
|
-
noResultsMessage: 'No models match the search.',
|
|
90
|
-
});
|
|
91
|
-
this.currentModel = currentModel;
|
|
92
|
-
this.currentProvider = currentProvider;
|
|
93
|
-
// Set initial tab based on current provider
|
|
94
|
-
if (initialTabIndex >= 0) {
|
|
95
|
-
this.state.currentTab = initialTabIndex;
|
|
96
|
-
// Re-filter items for the selected tab
|
|
97
|
-
this.state.filteredItems = MODEL_OPTIONS.filter((item) => item.provider === PROVIDER_TABS[initialTabIndex]?.id);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Override to handle model selection on Enter.
|
|
102
|
-
*/
|
|
103
|
-
onItemSelected(item) {
|
|
104
|
-
if (item.id === this.currentModel) {
|
|
105
|
-
// Same model, no change
|
|
106
|
-
return undefined;
|
|
107
|
-
}
|
|
108
|
-
// Save to settings
|
|
109
|
-
setSetting('defaultModel', item.id);
|
|
110
|
-
setSetting('defaultProvider', item.provider);
|
|
111
|
-
const requiresRestart = item.provider !== this.currentProvider;
|
|
112
|
-
return {
|
|
113
|
-
modelChanged: item.id,
|
|
114
|
-
provider: item.provider,
|
|
115
|
-
requiresRestart,
|
|
116
|
-
};
|
|
117
|
-
}
|
|
118
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Model Overlay
|
|
3
|
-
*
|
|
4
|
-
* Standalone model selection overlay with tabbed provider interface.
|
|
5
|
-
* Accessible via /model command or from Config overlay.
|
|
6
|
-
*
|
|
7
|
-
* Features:
|
|
8
|
-
* - Tabbed by provider (Claude, OpenAI, Gemini, Ollama)
|
|
9
|
-
* - Hot-swap detection (same provider = immediate, different = restart)
|
|
10
|
-
* - API key status checking
|
|
11
|
-
* - Persists selection to settings
|
|
12
|
-
*/
|
|
13
|
-
export interface ModelOverlayOptions {
|
|
14
|
-
/** Current model ID */
|
|
15
|
-
currentModel?: string;
|
|
16
|
-
/** Current provider (for hot-swap detection) */
|
|
17
|
-
currentProvider?: string;
|
|
18
|
-
}
|
|
19
|
-
export interface ModelOverlayResult {
|
|
20
|
-
/** Selected model ID (if changed) */
|
|
21
|
-
modelChanged?: string;
|
|
22
|
-
/** Selected provider */
|
|
23
|
-
provider?: string;
|
|
24
|
-
/** Whether restart is required (different provider) */
|
|
25
|
-
requiresRestart?: boolean;
|
|
26
|
-
}
|
|
27
|
-
export declare function showModelOverlay(options?: ModelOverlayOptions): Promise<ModelOverlayResult>;
|
package/dist/ui/model-overlay.js
DELETED
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Model Overlay
|
|
3
|
-
*
|
|
4
|
-
* Standalone model selection overlay with tabbed provider interface.
|
|
5
|
-
* Accessible via /model command or from Config overlay.
|
|
6
|
-
*
|
|
7
|
-
* Features:
|
|
8
|
-
* - Tabbed by provider (Claude, OpenAI, Gemini, Ollama)
|
|
9
|
-
* - Hot-swap detection (same provider = immediate, different = restart)
|
|
10
|
-
* - API key status checking
|
|
11
|
-
* - Persists selection to settings
|
|
12
|
-
*/
|
|
13
|
-
import * as terminal from './terminal.js';
|
|
14
|
-
import { BaseOverlay, isEscape, isTab, isShiftTab, isEnter, isCtrlC, isNavigateUp, isNavigateDown, isClose, extractPrintable, renderBorder, } from './base/index.js';
|
|
15
|
-
import { TabFeature } from './features/tab-feature.js';
|
|
16
|
-
import { setSetting } from '../settings/index.js';
|
|
17
|
-
import { hasApiKey, settingsProviderToCredentialKey } from '../utils/credentials.js';
|
|
18
|
-
// =============================================================================
|
|
19
|
-
// Constants
|
|
20
|
-
// =============================================================================
|
|
21
|
-
const PROVIDER_TABS = [
|
|
22
|
-
{ id: 'claude', label: 'Claude' },
|
|
23
|
-
{ id: 'openai', label: 'OpenAI' },
|
|
24
|
-
{ id: 'gemini', label: 'Gemini' },
|
|
25
|
-
{ id: 'ollama', label: 'Ollama' },
|
|
26
|
-
];
|
|
27
|
-
const MODEL_OPTIONS = [
|
|
28
|
-
// Claude
|
|
29
|
-
{ id: 'claude-sonnet-4-20250514', name: 'Sonnet 4', description: 'Best for everyday tasks', provider: 'claude' },
|
|
30
|
-
{ id: 'claude-opus-4-20250514', name: 'Opus 4', description: 'Most capable for complex work', provider: 'claude' },
|
|
31
|
-
{ id: 'claude-3-5-haiku-20241022', name: 'Haiku 3.5', description: 'Fastest for quick answers', provider: 'claude' },
|
|
32
|
-
// OpenAI
|
|
33
|
-
{ id: 'gpt-4o', name: 'GPT-4o', description: 'Best overall', provider: 'openai' },
|
|
34
|
-
{ id: 'gpt-4o-mini', name: 'GPT-4o Mini', description: 'Fast and affordable', provider: 'openai' },
|
|
35
|
-
// Gemini
|
|
36
|
-
{ id: 'gemini-2.0-flash', name: 'Gemini 2.0 Flash', description: 'Fast multimodal', provider: 'gemini' },
|
|
37
|
-
{ id: 'gemini-2.5-flash', name: 'Gemini 2.5 Flash', description: 'Latest stable flash', provider: 'gemini' },
|
|
38
|
-
{ id: 'gemini-2.5-pro', name: 'Gemini 2.5 Pro', description: 'Most capable Gemini', provider: 'gemini' },
|
|
39
|
-
// Ollama
|
|
40
|
-
{ id: 'llama3.2', name: 'Llama 3.2', description: 'Local model', provider: 'ollama' },
|
|
41
|
-
{ id: 'mistral', name: 'Mistral', description: 'Local model', provider: 'ollama' },
|
|
42
|
-
{ id: 'codellama', name: 'Code Llama', description: 'Code-focused local model', provider: 'ollama' },
|
|
43
|
-
];
|
|
44
|
-
// =============================================================================
|
|
45
|
-
// Helper Functions
|
|
46
|
-
// =============================================================================
|
|
47
|
-
function getModelsForProvider(providerId) {
|
|
48
|
-
return MODEL_OPTIONS.filter(m => m.provider === providerId);
|
|
49
|
-
}
|
|
50
|
-
function findModelById(modelId) {
|
|
51
|
-
return MODEL_OPTIONS.find(m => m.id === modelId);
|
|
52
|
-
}
|
|
53
|
-
function getProviderTabIndex(providerId) {
|
|
54
|
-
const index = PROVIDER_TABS.findIndex(p => p.id === providerId);
|
|
55
|
-
return index >= 0 ? index : 0;
|
|
56
|
-
}
|
|
57
|
-
// =============================================================================
|
|
58
|
-
// Model Overlay Class
|
|
59
|
-
// =============================================================================
|
|
60
|
-
class ModelOverlay extends BaseOverlay {
|
|
61
|
-
tabFeature;
|
|
62
|
-
constructor(options = {}) {
|
|
63
|
-
const currentModel = findModelById(options.currentModel ?? '');
|
|
64
|
-
const currentProvider = options.currentProvider ?? currentModel?.provider ?? 'claude';
|
|
65
|
-
// Find initial tab and model index
|
|
66
|
-
const initialTab = getProviderTabIndex(currentProvider);
|
|
67
|
-
const providerModels = getModelsForProvider(PROVIDER_TABS[initialTab].id);
|
|
68
|
-
const modelIndex = currentModel
|
|
69
|
-
? providerModels.findIndex(m => m.id === currentModel.id)
|
|
70
|
-
: 0;
|
|
71
|
-
const initialState = {
|
|
72
|
-
lineCount: 0,
|
|
73
|
-
maxLineCount: 0,
|
|
74
|
-
selectedIndex: modelIndex >= 0 ? modelIndex : 0,
|
|
75
|
-
currentTab: initialTab,
|
|
76
|
-
activeProvider: currentProvider,
|
|
77
|
-
currentModelId: options.currentModel ?? '',
|
|
78
|
-
};
|
|
79
|
-
super(initialState, { minHeight: 16 });
|
|
80
|
-
this.tabFeature = new TabFeature(PROVIDER_TABS, () => {
|
|
81
|
-
// Reset selection when tab changes
|
|
82
|
-
this.state.selectedIndex = 0;
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
render() {
|
|
86
|
-
const s = this.styles;
|
|
87
|
-
const cols = terminal.getTerminalWidth();
|
|
88
|
-
const border = renderBorder(cols, s);
|
|
89
|
-
const lines = [];
|
|
90
|
-
const currentProviderTab = PROVIDER_TABS[this.state.currentTab];
|
|
91
|
-
const providerModels = getModelsForProvider(currentProviderTab.id);
|
|
92
|
-
const isActiveProvider = currentProviderTab.id === this.state.activeProvider;
|
|
93
|
-
// Header
|
|
94
|
-
lines.push(border);
|
|
95
|
-
lines.push(` ${s.primaryBold('Select Model')}`);
|
|
96
|
-
lines.push('');
|
|
97
|
-
// Provider tabs with checkmark on active
|
|
98
|
-
let tabLine = ' ';
|
|
99
|
-
for (let i = 0; i < PROVIDER_TABS.length; i++) {
|
|
100
|
-
const tab = PROVIDER_TABS[i];
|
|
101
|
-
const isActive = tab.id === this.state.activeProvider;
|
|
102
|
-
const indicator = isActive ? ' ✓' : '';
|
|
103
|
-
if (i === this.state.currentTab) {
|
|
104
|
-
tabLine += s.selected(` ${tab.label}${indicator} `) + ' ';
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
tabLine += s.muted(` ${tab.label}${indicator} `) + ' ';
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
tabLine += s.muted('(Tab · 1-4)');
|
|
111
|
-
lines.push(tabLine);
|
|
112
|
-
lines.push('');
|
|
113
|
-
// Provider status message
|
|
114
|
-
if (isActiveProvider) {
|
|
115
|
-
lines.push(` ${s.success('Current provider - changes apply immediately')}`);
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
lines.push(` ${s.warning('Different provider - restart required to apply')}`);
|
|
119
|
-
}
|
|
120
|
-
// API key status (not needed for Ollama)
|
|
121
|
-
if (currentProviderTab.id !== 'ollama') {
|
|
122
|
-
const credKey = settingsProviderToCredentialKey(currentProviderTab.id);
|
|
123
|
-
if (!hasApiKey(credKey)) {
|
|
124
|
-
lines.push(` ${s.error('⚠ No API key configured - use /keys to set it')}`);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
lines.push('');
|
|
128
|
-
// Model list
|
|
129
|
-
for (let i = 0; i < providerModels.length; i++) {
|
|
130
|
-
const model = providerModels[i];
|
|
131
|
-
const isSelected = i === this.state.selectedIndex;
|
|
132
|
-
const isCurrent = model.id === this.state.currentModelId;
|
|
133
|
-
const prefix = isSelected ? s.primary('❯ ') : ' ';
|
|
134
|
-
const checkmark = isCurrent ? s.success(' ✓') : '';
|
|
135
|
-
const label = isSelected ? s.primary(model.name) : model.name;
|
|
136
|
-
const desc = s.muted(` · ${model.description}`);
|
|
137
|
-
lines.push(` ${prefix}${label.padEnd(20)}${desc}${checkmark}`);
|
|
138
|
-
}
|
|
139
|
-
// Pad for consistent height
|
|
140
|
-
const minModelLines = 4;
|
|
141
|
-
for (let i = providerModels.length; i < minModelLines; i++) {
|
|
142
|
-
lines.push('');
|
|
143
|
-
}
|
|
144
|
-
// Footer
|
|
145
|
-
lines.push('');
|
|
146
|
-
lines.push(border);
|
|
147
|
-
lines.push(` ${s.muted('Tab/1-4 Provider · ↑↓/jk Model · Enter Select · q/Esc Close')}`);
|
|
148
|
-
lines.push(border);
|
|
149
|
-
return lines;
|
|
150
|
-
}
|
|
151
|
-
handleKey(data) {
|
|
152
|
-
const currentProviderTab = PROVIDER_TABS[this.state.currentTab];
|
|
153
|
-
const providerModels = getModelsForProvider(currentProviderTab.id);
|
|
154
|
-
const maxModelIndex = providerModels.length - 1;
|
|
155
|
-
// Ctrl+C always closes
|
|
156
|
-
if (isCtrlC(data)) {
|
|
157
|
-
this.close({});
|
|
158
|
-
return;
|
|
159
|
-
}
|
|
160
|
-
// q or Esc closes
|
|
161
|
-
if (isEscape(data) || isClose(data)) {
|
|
162
|
-
this.close({});
|
|
163
|
-
return;
|
|
164
|
-
}
|
|
165
|
-
// Tab switching: Tab for next, Shift+Tab for previous
|
|
166
|
-
if (isTab(data)) {
|
|
167
|
-
this.state.currentTab = (this.state.currentTab + 1) % PROVIDER_TABS.length;
|
|
168
|
-
this.state.selectedIndex = 0;
|
|
169
|
-
this.update();
|
|
170
|
-
return;
|
|
171
|
-
}
|
|
172
|
-
if (isShiftTab(data)) {
|
|
173
|
-
this.state.currentTab = (this.state.currentTab - 1 + PROVIDER_TABS.length) % PROVIDER_TABS.length;
|
|
174
|
-
this.state.selectedIndex = 0;
|
|
175
|
-
this.update();
|
|
176
|
-
return;
|
|
177
|
-
}
|
|
178
|
-
// Number keys 1-4 for provider tabs
|
|
179
|
-
const char = extractPrintable(data);
|
|
180
|
-
if (char && char >= '1' && char <= '4') {
|
|
181
|
-
const tabNum = parseInt(char, 10) - 1;
|
|
182
|
-
if (tabNum < PROVIDER_TABS.length) {
|
|
183
|
-
this.state.currentTab = tabNum;
|
|
184
|
-
this.state.selectedIndex = 0;
|
|
185
|
-
this.update();
|
|
186
|
-
}
|
|
187
|
-
return;
|
|
188
|
-
}
|
|
189
|
-
// Navigation (↑↓ or j/k)
|
|
190
|
-
if (isNavigateUp(data) && this.state.selectedIndex > 0) {
|
|
191
|
-
this.state.selectedIndex--;
|
|
192
|
-
this.update();
|
|
193
|
-
return;
|
|
194
|
-
}
|
|
195
|
-
if (isNavigateDown(data) && this.state.selectedIndex < maxModelIndex) {
|
|
196
|
-
this.state.selectedIndex++;
|
|
197
|
-
this.update();
|
|
198
|
-
return;
|
|
199
|
-
}
|
|
200
|
-
// Enter - select model
|
|
201
|
-
if (isEnter(data) && providerModels.length > 0) {
|
|
202
|
-
const selectedModel = providerModels[this.state.selectedIndex];
|
|
203
|
-
const isCurrentProvider = selectedModel.provider === this.state.activeProvider;
|
|
204
|
-
// Persist to settings
|
|
205
|
-
setSetting('defaultProvider', selectedModel.provider);
|
|
206
|
-
setSetting('defaultModel', selectedModel.id);
|
|
207
|
-
this.close({
|
|
208
|
-
modelChanged: selectedModel.id,
|
|
209
|
-
provider: selectedModel.provider,
|
|
210
|
-
requiresRestart: !isCurrentProvider,
|
|
211
|
-
});
|
|
212
|
-
return;
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
// =============================================================================
|
|
217
|
-
// Export Function
|
|
218
|
-
// =============================================================================
|
|
219
|
-
export async function showModelOverlay(options = {}) {
|
|
220
|
-
return new ModelOverlay(options).show();
|
|
221
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Model Warning Overlay
|
|
3
|
-
*
|
|
4
|
-
* Shows a warning when the user runs a command that requires
|
|
5
|
-
* a larger model than they're currently using.
|
|
6
|
-
*
|
|
7
|
-
* Offers options to:
|
|
8
|
-
* - Switch to a recommended model
|
|
9
|
-
* - Use a simpler alternative command
|
|
10
|
-
* - Continue anyway
|
|
11
|
-
* - Cancel
|
|
12
|
-
*/
|
|
13
|
-
import type { TierLevel } from '../utils/model-tiers.js';
|
|
14
|
-
export interface ModelWarningOptions {
|
|
15
|
-
/** The command being run (e.g., '/design') */
|
|
16
|
-
command: string;
|
|
17
|
-
/** Current model ID */
|
|
18
|
-
currentModel: string;
|
|
19
|
-
/** Current model's tier */
|
|
20
|
-
currentTier: TierLevel;
|
|
21
|
-
/** Suggested upgrade model (if available) */
|
|
22
|
-
suggestedModel?: string;
|
|
23
|
-
/** Alternative simpler command (e.g., '/sketch') */
|
|
24
|
-
alternativeCommand?: string;
|
|
25
|
-
}
|
|
26
|
-
export type ModelWarningChoice = 'switch' | 'alternative' | 'continue' | 'cancel';
|
|
27
|
-
/**
|
|
28
|
-
* Show the model warning overlay and return the user's choice.
|
|
29
|
-
*/
|
|
30
|
-
export declare function showModelWarningOverlay(options: ModelWarningOptions): Promise<ModelWarningChoice>;
|