@compilr-dev/cli 0.5.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +236 -68
- package/dist/.tsbuildinfo.app +1 -0
- package/dist/.tsbuildinfo.data +1 -0
- package/dist/.tsbuildinfo.domain +1 -0
- package/dist/.tsbuildinfo.foundation +1 -0
- package/dist/agent.d.ts +61 -4
- package/dist/agent.js +241 -245
- package/dist/anchors/index.d.ts +1 -1
- package/dist/anchors/index.js +1 -1
- package/dist/anchors/project-anchors.d.ts +2 -2
- package/dist/anchors/project-anchors.js +1 -1
- package/dist/auth/api-client.d.ts +124 -0
- package/dist/auth/api-client.js +261 -0
- package/dist/auth/index.d.ts +172 -0
- package/dist/auth/index.js +545 -0
- package/dist/auth/storage.d.ts +52 -0
- package/dist/auth/storage.js +118 -0
- package/dist/changelog/index.d.ts +16 -0
- package/dist/changelog/index.js +24 -0
- package/dist/changelog/releases.d.ts +17 -0
- package/dist/changelog/releases.js +63 -0
- package/dist/commands-v2/handlers/auth.d.ts +10 -0
- package/dist/commands-v2/handlers/auth.js +118 -0
- package/dist/commands-v2/handlers/background.d.ts +14 -0
- package/dist/commands-v2/handlers/background.js +276 -0
- package/dist/commands-v2/handlers/context.js +266 -81
- package/dist/commands-v2/handlers/core.d.ts +1 -0
- package/dist/commands-v2/handlers/core.js +133 -8
- package/dist/commands-v2/handlers/debug.js +18 -0
- package/dist/commands-v2/handlers/delegations.d.ts +8 -0
- package/dist/commands-v2/handlers/delegations.js +29 -0
- package/dist/commands-v2/handlers/files.d.ts +8 -0
- package/dist/commands-v2/handlers/files.js +162 -0
- package/dist/commands-v2/handlers/filter.d.ts +9 -0
- package/dist/commands-v2/handlers/filter.js +130 -0
- package/dist/commands-v2/handlers/games.d.ts +7 -0
- package/dist/commands-v2/handlers/games.js +57 -0
- package/dist/commands-v2/handlers/index.d.ts +13 -0
- package/dist/commands-v2/handlers/index.js +39 -0
- package/dist/commands-v2/handlers/mcp.d.ts +8 -0
- package/dist/commands-v2/handlers/mcp.js +39 -0
- package/dist/commands-v2/handlers/notifications.d.ts +9 -0
- package/dist/commands-v2/handlers/notifications.js +34 -0
- package/dist/commands-v2/handlers/project.js +244 -23
- package/dist/commands-v2/handlers/reset.d.ts +11 -0
- package/dist/commands-v2/handlers/reset.js +118 -0
- package/dist/commands-v2/handlers/session.d.ts +161 -0
- package/dist/commands-v2/handlers/session.js +805 -0
- package/dist/commands-v2/handlers/settings.d.ts +2 -0
- package/dist/commands-v2/handlers/settings.js +217 -35
- package/dist/commands-v2/handlers/tasks.d.ts +5 -0
- package/dist/commands-v2/handlers/tasks.js +36 -0
- package/dist/commands-v2/handlers/team.d.ts +9 -0
- package/dist/commands-v2/handlers/team.js +549 -0
- package/dist/commands-v2/handlers/terminals.d.ts +9 -0
- package/dist/commands-v2/handlers/terminals.js +34 -0
- package/dist/commands-v2/index.d.ts +3 -2
- package/dist/commands-v2/index.js +4 -1
- package/dist/commands-v2/registry.d.ts +15 -0
- package/dist/commands-v2/registry.js +34 -0
- package/dist/commands-v2/types.d.ts +81 -3
- package/dist/commands.js +13 -0
- package/dist/compilr-diff-companion.vsix +0 -0
- package/dist/db/index.js +98 -4
- package/dist/db/repositories/document-repository.d.ts +2 -0
- package/dist/db/repositories/document-repository.js +5 -1
- package/dist/db/repositories/index.d.ts +2 -0
- package/dist/db/repositories/index.js +1 -0
- package/dist/db/repositories/plan-repository.d.ts +101 -0
- package/dist/db/repositories/plan-repository.js +275 -0
- package/dist/db/repositories/project-repository.d.ts +6 -0
- package/dist/db/repositories/project-repository.js +41 -0
- package/dist/db/repositories/work-item-repository.d.ts +15 -0
- package/dist/db/repositories/work-item-repository.js +69 -4
- package/dist/db/schema.d.ts +40 -3
- package/dist/db/schema.js +66 -3
- package/dist/episodes/index.d.ts +20 -0
- package/dist/episodes/index.js +27 -0
- package/dist/episodes/recorder.d.ts +51 -0
- package/dist/episodes/recorder.js +195 -0
- package/dist/episodes/significant-work.d.ts +21 -0
- package/dist/episodes/significant-work.js +56 -0
- package/dist/episodes/store.d.ts +38 -0
- package/dist/episodes/store.js +199 -0
- package/dist/episodes/types.d.ts +35 -0
- package/dist/episodes/types.js +6 -0
- package/dist/episodes/work-at-risk.d.ts +12 -0
- package/dist/episodes/work-at-risk.js +38 -0
- package/dist/episodes/work-summary-anchor.d.ts +23 -0
- package/dist/episodes/work-summary-anchor.js +73 -0
- package/dist/games/coins.d.ts +66 -0
- package/dist/games/coins.js +165 -0
- package/dist/games/game-base.d.ts +84 -0
- package/dist/games/game-base.js +204 -0
- package/dist/games/index.d.ts +16 -0
- package/dist/games/index.js +49 -0
- package/dist/games/scores.d.ts +69 -0
- package/dist/games/scores.js +191 -0
- package/dist/games/tetris/board.d.ts +59 -0
- package/dist/games/tetris/board.js +170 -0
- package/dist/games/tetris/index.d.ts +109 -0
- package/dist/games/tetris/index.js +610 -0
- package/dist/games/tetris/pieces.d.ts +44 -0
- package/dist/games/tetris/pieces.js +271 -0
- package/dist/games/tetris/renderer.d.ts +26 -0
- package/dist/games/tetris/renderer.js +77 -0
- package/dist/guide/guide-content.d.ts +23 -0
- package/dist/guide/guide-content.js +196 -0
- package/dist/guide/index.d.ts +8 -0
- package/dist/guide/index.js +7 -0
- package/dist/guide/shared-content.d.ts +37 -0
- package/dist/guide/shared-content.js +1272 -0
- package/dist/guide/tutorial-helpers.d.ts +57 -0
- package/dist/guide/tutorial-helpers.js +147 -0
- package/dist/handlers/ask-user-handlers.d.ts +32 -0
- package/dist/handlers/ask-user-handlers.js +104 -0
- package/dist/handlers/delegation-handlers.d.ts +34 -0
- package/dist/handlers/delegation-handlers.js +291 -0
- package/dist/handlers/permission-handler.d.ts +30 -0
- package/dist/handlers/permission-handler.js +205 -0
- package/dist/index.d.ts +11 -1
- package/dist/index.js +448 -271
- package/dist/input-handlers/memory-handler.d.ts +1 -1
- package/dist/input-handlers/memory-handler.js +2 -1
- package/dist/models/index.d.ts +10 -0
- package/dist/models/index.js +12 -0
- package/dist/models/model-registry.d.ts +38 -0
- package/dist/models/model-registry.js +69 -0
- package/dist/models/model-tiers.d.ts +28 -0
- package/dist/models/model-tiers.js +71 -0
- package/dist/models/model-validation.d.ts +25 -0
- package/dist/models/model-validation.js +291 -0
- package/dist/models/ollama-models.d.ts +73 -0
- package/dist/models/ollama-models.js +178 -0
- package/dist/models/provider-types.d.ts +6 -0
- package/dist/models/provider-types.js +1 -0
- package/dist/models/providers.d.ts +35 -0
- package/dist/models/providers.js +58 -0
- package/dist/models/types.d.ts +4 -0
- package/dist/models/types.js +4 -0
- package/dist/multi-agent/activity.d.ts +21 -0
- package/dist/multi-agent/activity.js +34 -0
- package/dist/multi-agent/agent-selection.d.ts +55 -0
- package/dist/multi-agent/agent-selection.js +90 -0
- package/dist/multi-agent/artifacts.d.ts +197 -0
- package/dist/multi-agent/artifacts.js +379 -0
- package/dist/multi-agent/checkpointer.d.ts +138 -0
- package/dist/multi-agent/checkpointer.js +471 -0
- package/dist/multi-agent/collision-utils.d.ts +16 -0
- package/dist/multi-agent/collision-utils.js +28 -0
- package/dist/multi-agent/context-resolver.d.ts +97 -0
- package/dist/multi-agent/context-resolver.js +316 -0
- package/dist/multi-agent/custom-agents.d.ts +83 -0
- package/dist/multi-agent/custom-agents.js +227 -0
- package/dist/multi-agent/delegation-tracker.d.ts +157 -0
- package/dist/multi-agent/delegation-tracker.js +243 -0
- package/dist/multi-agent/file-lock-hook.d.ts +29 -0
- package/dist/multi-agent/file-lock-hook.js +97 -0
- package/dist/multi-agent/file-locks.d.ts +58 -0
- package/dist/multi-agent/file-locks.js +194 -0
- package/dist/multi-agent/index.d.ts +24 -0
- package/dist/multi-agent/index.js +30 -0
- package/dist/multi-agent/mention-parser.d.ts +64 -0
- package/dist/multi-agent/mention-parser.js +146 -0
- package/dist/multi-agent/notification-manager.d.ts +84 -0
- package/dist/multi-agent/notification-manager.js +224 -0
- package/dist/multi-agent/pending-requests.d.ts +122 -0
- package/dist/multi-agent/pending-requests.js +155 -0
- package/dist/multi-agent/session-registry.d.ts +139 -0
- package/dist/multi-agent/session-registry.js +514 -0
- package/dist/multi-agent/shared-context.d.ts +293 -0
- package/dist/multi-agent/shared-context.js +671 -0
- package/dist/multi-agent/skill-requirements.d.ts +66 -0
- package/dist/multi-agent/skill-requirements.js +178 -0
- package/dist/multi-agent/task-assignment.d.ts +69 -0
- package/dist/multi-agent/task-assignment.js +123 -0
- package/dist/multi-agent/task-suggestion.d.ts +31 -0
- package/dist/multi-agent/task-suggestion.js +72 -0
- package/dist/multi-agent/team-agent.d.ts +201 -0
- package/dist/multi-agent/team-agent.js +488 -0
- package/dist/multi-agent/team.d.ts +286 -0
- package/dist/multi-agent/team.js +610 -0
- package/dist/multi-agent/tool-config.d.ts +110 -0
- package/dist/multi-agent/tool-config.js +661 -0
- package/dist/multi-agent/types.d.ts +211 -0
- package/dist/multi-agent/types.js +617 -0
- package/dist/prompts/plan-mode-prompt.d.ts +11 -0
- package/dist/prompts/plan-mode-prompt.js +95 -0
- package/dist/repl-helpers.js +3 -2
- package/dist/repl-v2.d.ts +401 -2
- package/dist/repl-v2.js +2577 -65
- package/dist/session/index.d.ts +6 -0
- package/dist/session/index.js +6 -0
- package/dist/session/project-session-manager.d.ts +158 -0
- package/dist/session/project-session-manager.js +650 -0
- package/dist/settings/index.d.ts +133 -13
- package/dist/settings/index.js +329 -24
- package/dist/settings/mcp-config.d.ts +76 -0
- package/dist/settings/mcp-config.js +143 -0
- package/dist/settings/paths.d.ts +4 -0
- package/dist/settings/paths.js +6 -0
- package/dist/shared-handlers.d.ts +62 -0
- package/dist/shared-handlers.js +48 -0
- package/dist/system-prompt/builder.d.ts +5 -0
- package/dist/system-prompt/builder.js +4 -0
- package/dist/system-prompt/index.d.ts +18 -0
- package/dist/system-prompt/index.js +18 -0
- package/dist/system-prompt/modules.d.ts +5 -0
- package/dist/system-prompt/modules.js +4 -0
- package/dist/tabbed-menu.js +2 -1
- package/dist/templates/compilr-md-import.d.ts +16 -0
- package/dist/templates/compilr-md-import.js +241 -0
- package/dist/templates/compilr-md.js +10 -61
- package/dist/templates/config-json.d.ts +1 -25
- package/dist/templates/index.d.ts +2 -0
- package/dist/templates/index.js +34 -73
- package/dist/tool-names.d.ts +108 -0
- package/dist/tool-names.js +227 -0
- package/dist/tools/anchor-tools.d.ts +4 -4
- package/dist/tools/anchor-tools.js +1 -1
- package/dist/tools/artifact-tools.d.ts +42 -0
- package/dist/tools/artifact-tools.js +328 -0
- package/dist/tools/ask-user-simple.d.ts +1 -1
- package/dist/tools/ask-user-simple.js +2 -1
- package/dist/tools/ask-user.d.ts +1 -1
- package/dist/tools/ask-user.js +2 -1
- package/dist/tools/backlog-wrappers.d.ts +5 -3
- package/dist/tools/backlog-wrappers.js +16 -1
- package/dist/tools/backlog.d.ts +2 -2
- package/dist/tools/backlog.js +1 -1
- package/dist/tools/db-tools.d.ts +8 -61
- package/dist/tools/db-tools.js +8 -13
- package/dist/tools/delegate-background.d.ts +27 -0
- package/dist/tools/delegate-background.js +115 -0
- package/dist/tools/delegate.d.ts +22 -0
- package/dist/tools/delegate.js +97 -0
- package/dist/tools/delegation-status.d.ts +16 -0
- package/dist/tools/delegation-status.js +128 -0
- package/dist/tools/document-db.d.ts +5 -5
- package/dist/tools/document-db.js +1 -1
- package/dist/tools/guide-tool.d.ts +12 -0
- package/dist/tools/guide-tool.js +59 -0
- package/dist/tools/handoff.d.ts +25 -0
- package/dist/tools/handoff.js +99 -0
- package/dist/tools/meta-tools.d.ts +26 -0
- package/dist/tools/meta-tools.js +47 -0
- package/dist/tools/plan-tools.d.ts +54 -0
- package/dist/tools/plan-tools.js +338 -0
- package/dist/tools/platform-adapter.d.ts +29 -0
- package/dist/tools/platform-adapter.js +394 -0
- package/dist/tools/project-db.d.ts +5 -73
- package/dist/tools/project-db.js +5 -336
- package/dist/tools/recall-work-tool.d.ts +18 -0
- package/dist/tools/recall-work-tool.js +82 -0
- package/dist/tools/workitem-db.d.ts +43 -11
- package/dist/tools/workitem-db.js +186 -5
- package/dist/tools.d.ts +67 -2
- package/dist/tools.js +237 -47
- package/dist/ui/autocomplete-controller.d.ts +42 -0
- package/dist/ui/autocomplete-controller.js +384 -0
- package/dist/ui/base/index.d.ts +1 -1
- package/dist/ui/base/index.js +1 -1
- package/dist/ui/base/overlay-base-v2.d.ts +10 -0
- package/dist/ui/base/overlay-base-v2.js +14 -0
- package/dist/ui/base/render-utils.d.ts +19 -0
- package/dist/ui/base/render-utils.js +25 -0
- package/dist/ui/base/tabbed-list-overlay-v2.d.ts +16 -1
- package/dist/ui/base/tabbed-list-overlay-v2.js +19 -1
- package/dist/ui/constants/labels.d.ts +14 -0
- package/dist/ui/constants/labels.js +51 -0
- package/dist/ui/conversation-store.d.ts +55 -0
- package/dist/ui/conversation-store.js +107 -0
- package/dist/ui/conversation.js +11 -13
- package/dist/ui/diff.d.ts +7 -1
- package/dist/ui/diff.js +85 -48
- package/dist/ui/ephemeral.js +3 -9
- package/dist/ui/file-autocomplete.d.ts +24 -0
- package/dist/ui/file-autocomplete.js +56 -0
- package/dist/ui/footer-renderer.d.ts +69 -0
- package/dist/ui/footer-renderer.js +431 -0
- package/dist/ui/footer.d.ts +74 -7
- package/dist/ui/footer.js +173 -16
- package/dist/ui/input-controller.d.ts +51 -0
- package/dist/ui/input-controller.js +176 -0
- package/dist/ui/input-prompt.d.ts +19 -0
- package/dist/ui/input-prompt.js +206 -14
- package/dist/ui/keyboard-handler.d.ts +57 -0
- package/dist/ui/keyboard-handler.js +557 -0
- package/dist/ui/live-region-facade.d.ts +42 -0
- package/dist/ui/live-region-facade.js +205 -0
- package/dist/ui/live-region.d.ts +0 -4
- package/dist/ui/live-region.js +6 -14
- package/dist/ui/mascot/renderer.d.ts +1 -1
- package/dist/ui/mascot/renderer.js +37 -2
- package/dist/ui/overlay/data/tutorial-content.d.ts +9 -0
- package/dist/ui/overlay/data/tutorial-content.js +9 -0
- package/dist/ui/overlay/data/tutorial-registry.d.ts +12 -0
- package/dist/ui/overlay/data/tutorial-registry.js +116 -0
- package/dist/ui/overlay/data/tutorial-types.d.ts +35 -0
- package/dist/ui/overlay/data/tutorial-types.js +6 -0
- package/dist/ui/overlay/data/tutorials/basics/first-conversation.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/basics/first-conversation.js +220 -0
- package/dist/ui/overlay/data/tutorials/basics/first-project.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/basics/first-project.js +284 -0
- package/dist/ui/overlay/data/tutorials/basics/navigation.d.ts +8 -0
- package/dist/ui/overlay/data/tutorials/basics/navigation.js +22 -0
- package/dist/ui/overlay/data/tutorials/basics/welcome.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/basics/welcome.js +174 -0
- package/dist/ui/overlay/data/tutorials/config/context-management.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/config/context-management.js +158 -0
- package/dist/ui/overlay/data/tutorials/config/mcp-servers.d.ts +8 -0
- package/dist/ui/overlay/data/tutorials/config/mcp-servers.js +155 -0
- package/dist/ui/overlay/data/tutorials/config/model-selection.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/config/model-selection.js +162 -0
- package/dist/ui/overlay/data/tutorials/config/permissions-safety.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/config/permissions-safety.js +163 -0
- package/dist/ui/overlay/data/tutorials/config/settings-config.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/config/settings-config.js +166 -0
- package/dist/ui/overlay/data/tutorials/planning/arch.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/arch.js +168 -0
- package/dist/ui/overlay/data/tutorials/planning/backlog.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/backlog.js +103 -0
- package/dist/ui/overlay/data/tutorials/planning/build.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/build.js +173 -0
- package/dist/ui/overlay/data/tutorials/planning/design.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/design.js +205 -0
- package/dist/ui/overlay/data/tutorials/planning/docs.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/docs.js +143 -0
- package/dist/ui/overlay/data/tutorials/planning/prd.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/prd.js +173 -0
- package/dist/ui/overlay/data/tutorials/planning/scaffold.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/scaffold.js +164 -0
- package/dist/ui/overlay/data/tutorials/planning/sketch.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/sketch.js +58 -0
- package/dist/ui/overlay/data/tutorials/projects/anchors.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/projects/anchors.js +248 -0
- package/dist/ui/overlay/data/tutorials/projects/import-project.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/projects/import-project.js +172 -0
- package/dist/ui/overlay/data/tutorials/projects/managing-projects.d.ts +8 -0
- package/dist/ui/overlay/data/tutorials/projects/managing-projects.js +212 -0
- package/dist/ui/overlay/data/tutorials/projects/new-project.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/projects/new-project.js +251 -0
- package/dist/ui/overlay/data/tutorials/projects/session-management.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/projects/session-management.js +169 -0
- package/dist/ui/overlay/data/tutorials/teams/background-execution.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/teams/background-execution.js +171 -0
- package/dist/ui/overlay/data/tutorials/teams/multi-terminal.d.ts +8 -0
- package/dist/ui/overlay/data/tutorials/teams/multi-terminal.js +147 -0
- package/dist/ui/overlay/data/tutorials/teams/task-assignment.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/teams/task-assignment.js +204 -0
- package/dist/ui/overlay/data/tutorials/teams/team-overview.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/teams/team-overview.js +165 -0
- package/dist/ui/overlay/data/tutorials/teams/working-with-agents.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/teams/working-with-agents.js +172 -0
- package/dist/ui/overlay/impl/agents-overlay-v2.js +6 -17
- package/dist/ui/overlay/impl/anchors-overlay-v2.js +30 -64
- package/dist/ui/overlay/impl/artifact-detail-overlay-v2.d.ts +43 -0
- package/dist/ui/overlay/impl/artifact-detail-overlay-v2.js +232 -0
- package/dist/ui/overlay/impl/artifact-overlay-v2.d.ts +40 -0
- package/dist/ui/overlay/impl/artifact-overlay-v2.js +115 -0
- package/dist/ui/overlay/impl/ask-user-overlay-v2.js +2 -5
- package/dist/ui/overlay/impl/background-overlay-v2.d.ts +40 -0
- package/dist/ui/overlay/impl/background-overlay-v2.js +147 -0
- package/dist/ui/overlay/impl/backlog-overlay-v2.d.ts +4 -1
- package/dist/ui/overlay/impl/backlog-overlay-v2.js +55 -16
- package/dist/ui/overlay/impl/changelog-overlay-v2.d.ts +44 -0
- package/dist/ui/overlay/impl/changelog-overlay-v2.js +165 -0
- package/dist/ui/overlay/impl/commands-overlay-v2.js +4 -6
- package/dist/ui/overlay/impl/config-overlay-v2.d.ts +12 -1
- package/dist/ui/overlay/impl/config-overlay-v2.js +164 -100
- package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.d.ts +83 -0
- package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.js +711 -0
- package/dist/ui/overlay/impl/dashboard-overlay-v2.d.ts +2 -0
- package/dist/ui/overlay/impl/dashboard-overlay-v2.js +26 -3
- package/dist/ui/overlay/impl/delegations-overlay-v2.d.ts +28 -0
- package/dist/ui/overlay/impl/delegations-overlay-v2.js +279 -0
- package/dist/ui/overlay/impl/docs-overlay-v2.js +12 -9
- package/dist/ui/overlay/impl/document-detail-overlay-v2.d.ts +7 -0
- package/dist/ui/overlay/impl/document-detail-overlay-v2.js +119 -78
- package/dist/ui/overlay/impl/filter-overlay-v2.d.ts +41 -0
- package/dist/ui/overlay/impl/filter-overlay-v2.js +110 -0
- package/dist/ui/overlay/impl/games-overlay-v2.d.ts +31 -0
- package/dist/ui/overlay/impl/games-overlay-v2.js +135 -0
- package/dist/ui/overlay/impl/help-overlay-v2.d.ts +26 -3
- package/dist/ui/overlay/impl/help-overlay-v2.js +20 -42
- package/dist/ui/overlay/impl/login-overlay-v2.d.ts +49 -0
- package/dist/ui/overlay/impl/login-overlay-v2.js +277 -0
- package/dist/ui/overlay/impl/mcp-overlay-v2.d.ts +63 -0
- package/dist/ui/overlay/impl/mcp-overlay-v2.js +907 -0
- package/dist/ui/overlay/impl/model-overlay-v2.d.ts +57 -13
- package/dist/ui/overlay/impl/model-overlay-v2.js +1086 -61
- package/dist/ui/overlay/impl/new-overlay-v2.d.ts +37 -6
- package/dist/ui/overlay/impl/new-overlay-v2.js +715 -65
- package/dist/ui/overlay/impl/notifications-overlay-v2.d.ts +20 -0
- package/dist/ui/overlay/impl/notifications-overlay-v2.js +116 -0
- package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.d.ts +76 -0
- package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.js +728 -0
- package/dist/ui/overlay/impl/pending-overlay-v2.d.ts +51 -0
- package/dist/ui/overlay/impl/pending-overlay-v2.js +445 -0
- package/dist/ui/overlay/impl/permission-overlay-v2.js +5 -5
- package/dist/ui/overlay/impl/permissions-overlay-v2.d.ts +85 -0
- package/dist/ui/overlay/impl/permissions-overlay-v2.js +820 -0
- package/dist/ui/overlay/impl/plan-approval-overlay-v2.d.ts +35 -0
- package/dist/ui/overlay/impl/plan-approval-overlay-v2.js +181 -0
- package/dist/ui/overlay/impl/project-edit-overlay-v2.d.ts +36 -0
- package/dist/ui/overlay/impl/project-edit-overlay-v2.js +195 -0
- package/dist/ui/overlay/impl/projects-overlay-v2.d.ts +1 -0
- package/dist/ui/overlay/impl/projects-overlay-v2.js +278 -44
- package/dist/ui/overlay/impl/reset-overlay-v2.d.ts +39 -0
- package/dist/ui/overlay/impl/reset-overlay-v2.js +107 -0
- package/dist/ui/overlay/impl/resume-overlay-v2.d.ts +60 -0
- package/dist/ui/overlay/impl/resume-overlay-v2.js +414 -0
- package/dist/ui/overlay/impl/session-mode-overlay-v2.d.ts +43 -0
- package/dist/ui/overlay/impl/session-mode-overlay-v2.js +124 -0
- package/dist/ui/overlay/impl/tasks-overlay-v2.d.ts +28 -0
- package/dist/ui/overlay/impl/tasks-overlay-v2.js +283 -0
- package/dist/ui/overlay/impl/team-overlay-v2.d.ts +86 -0
- package/dist/ui/overlay/impl/team-overlay-v2.js +692 -0
- package/dist/ui/overlay/impl/terminals-overlay-v2.d.ts +26 -0
- package/dist/ui/overlay/impl/terminals-overlay-v2.js +217 -0
- package/dist/ui/overlay/impl/tools-overlay-v2.js +3 -7
- package/dist/ui/overlay/impl/tutorial-overlay-v2.d.ts +30 -16
- package/dist/ui/overlay/impl/tutorial-overlay-v2.js +133 -956
- package/dist/ui/overlay/impl/workflow-overlay-v2.js +5 -1
- package/dist/ui/overlay/index.d.ts +20 -1
- package/dist/ui/overlay/index.js +19 -0
- package/dist/ui/overlay/types.d.ts +5 -0
- package/dist/ui/overlay-manager.d.ts +43 -0
- package/dist/ui/overlay-manager.js +238 -0
- package/dist/ui/overlays.js +4 -16
- package/dist/ui/permission-overlay.js +6 -5
- package/dist/ui/status-bar-controller.d.ts +33 -0
- package/dist/ui/status-bar-controller.js +99 -0
- package/dist/ui/subagent-renderer.js +3 -19
- package/dist/ui/terminal-autocomplete-utils.d.ts +23 -0
- package/dist/ui/terminal-autocomplete-utils.js +83 -0
- package/dist/ui/terminal-line-builders.d.ts +17 -0
- package/dist/ui/terminal-line-builders.js +42 -0
- package/dist/ui/terminal-render-item.d.ts +16 -0
- package/dist/ui/terminal-render-item.js +267 -0
- package/dist/ui/terminal-renderer.d.ts +7 -8
- package/dist/ui/terminal-renderer.js +7 -8
- package/dist/ui/terminal-types.d.ts +179 -0
- package/dist/ui/terminal-types.js +34 -0
- package/dist/ui/terminal-ui.d.ts +144 -276
- package/dist/ui/terminal-ui.js +384 -1861
- package/dist/ui/todo-zone.d.ts +19 -1
- package/dist/ui/todo-zone.js +71 -13
- package/dist/ui/tool-formatters.js +512 -1
- package/dist/ui/turn-metrics.d.ts +56 -0
- package/dist/ui/turn-metrics.js +75 -0
- package/dist/ui/types.d.ts +28 -0
- package/dist/ui/types.js +1 -0
- package/dist/ui/vscode-diff-ipc.d.ts +102 -0
- package/dist/ui/vscode-diff-ipc.js +385 -0
- package/dist/utils/credentials.d.ts +24 -5
- package/dist/utils/credentials.js +123 -9
- package/dist/utils/format-tokens.d.ts +13 -0
- package/dist/utils/format-tokens.js +18 -0
- package/dist/utils/git-config.d.ts +26 -0
- package/dist/utils/git-config.js +54 -0
- package/dist/utils/message-utils.d.ts +61 -0
- package/dist/utils/message-utils.js +72 -0
- package/dist/utils/model-tiers.d.ts +8 -1
- package/dist/utils/model-tiers.js +38 -16
- package/dist/utils/open-browser.d.ts +5 -0
- package/dist/utils/open-browser.js +32 -0
- package/dist/utils/path-safety.js +3 -2
- package/dist/utils/project-detection.d.ts +58 -0
- package/dist/utils/project-detection.js +424 -0
- package/dist/utils/project-memory.js +2 -1
- package/dist/utils/project-status.d.ts +2 -2
- package/dist/utils/startup-perf.d.ts +18 -0
- package/dist/utils/startup-perf.js +60 -0
- package/dist/utils/token-tracker.d.ts +62 -0
- package/dist/utils/token-tracker.js +150 -0
- package/dist/utils/token-types.d.ts +23 -0
- package/dist/utils/token-types.js +18 -0
- package/dist/utils/types/config-types.d.ts +32 -0
- package/dist/utils/types/config-types.js +8 -0
- package/dist/utils/update-checker.d.ts +28 -0
- package/dist/utils/update-checker.js +106 -0
- package/dist/utils/version.d.ts +7 -0
- package/dist/utils/version.js +10 -0
- package/dist/utils/vscode-detect.d.ts +39 -0
- package/dist/utils/vscode-detect.js +137 -0
- package/package.json +25 -12
- package/dist/commands/handler-types.d.ts +0 -68
- package/dist/commands/handler-types.js +0 -8
- package/dist/commands/handlers/agent-commands.d.ts +0 -13
- package/dist/commands/handlers/agent-commands.js +0 -305
- package/dist/commands/handlers/design-commands.d.ts +0 -15
- package/dist/commands/handlers/design-commands.js +0 -334
- package/dist/commands/handlers/index.d.ts +0 -20
- package/dist/commands/handlers/index.js +0 -43
- package/dist/commands/handlers/overlay-commands.d.ts +0 -21
- package/dist/commands/handlers/overlay-commands.js +0 -287
- package/dist/commands/handlers/project-commands.d.ts +0 -11
- package/dist/commands/handlers/project-commands.js +0 -167
- package/dist/commands/handlers/simple-commands.d.ts +0 -19
- package/dist/commands/handlers/simple-commands.js +0 -144
- package/dist/commands/registry.d.ts +0 -50
- package/dist/commands/registry.js +0 -75
- package/dist/index.old.d.ts +0 -7
- package/dist/index.old.js +0 -1014
- package/dist/repl.d.ts +0 -149
- package/dist/repl.js +0 -1151
- package/dist/templates/claude-md.d.ts +0 -7
- package/dist/templates/claude-md.js +0 -189
- package/dist/test-autocomplete.d.ts +0 -7
- package/dist/test-autocomplete.js +0 -85
- package/dist/test-tabbed-menu.d.ts +0 -7
- package/dist/test-tabbed-menu.js +0 -25
- package/dist/tool-selector.d.ts +0 -71
- package/dist/tool-selector.js +0 -184
- package/dist/ui/agents-overlay-v2.d.ts +0 -43
- package/dist/ui/agents-overlay-v2.js +0 -809
- package/dist/ui/agents-overlay.d.ts +0 -12
- package/dist/ui/agents-overlay.js +0 -863
- package/dist/ui/anchors-overlay.d.ts +0 -12
- package/dist/ui/anchors-overlay.js +0 -775
- package/dist/ui/arch-type-overlay.d.ts +0 -15
- package/dist/ui/arch-type-overlay.js +0 -201
- package/dist/ui/ask-user-overlay-v2.d.ts +0 -26
- package/dist/ui/ask-user-overlay-v2.js +0 -555
- package/dist/ui/ask-user-simple-overlay-v2.d.ts +0 -25
- package/dist/ui/ask-user-simple-overlay-v2.js +0 -215
- package/dist/ui/backlog-overlay.d.ts +0 -32
- package/dist/ui/backlog-overlay.js +0 -652
- package/dist/ui/commands-overlay-v2.d.ts +0 -33
- package/dist/ui/commands-overlay-v2.js +0 -441
- package/dist/ui/commands-overlay.d.ts +0 -16
- package/dist/ui/commands-overlay.js +0 -439
- package/dist/ui/config-overlay.d.ts +0 -35
- package/dist/ui/config-overlay.js +0 -707
- package/dist/ui/docs-overlay.d.ts +0 -17
- package/dist/ui/docs-overlay.js +0 -303
- package/dist/ui/footer-v2.d.ts +0 -222
- package/dist/ui/footer-v2.js +0 -1349
- package/dist/ui/help-overlay-v2.d.ts +0 -34
- package/dist/ui/help-overlay-v2.js +0 -309
- package/dist/ui/help-overlay.d.ts +0 -16
- package/dist/ui/help-overlay.js +0 -316
- package/dist/ui/init-overlay-v2.d.ts +0 -34
- package/dist/ui/init-overlay-v2.js +0 -600
- package/dist/ui/init-overlay.d.ts +0 -34
- package/dist/ui/init-overlay.js +0 -604
- package/dist/ui/input-prompt-v2.d.ts +0 -180
- package/dist/ui/input-prompt-v2.js +0 -999
- package/dist/ui/iteration-limit-overlay-v2.d.ts +0 -21
- package/dist/ui/iteration-limit-overlay-v2.js +0 -114
- package/dist/ui/keys-overlay-v2.d.ts +0 -41
- package/dist/ui/keys-overlay-v2.js +0 -248
- package/dist/ui/mascot-overlay-v2.d.ts +0 -41
- package/dist/ui/mascot-overlay-v2.js +0 -138
- package/dist/ui/mascot-overlay.d.ts +0 -21
- package/dist/ui/mascot-overlay.js +0 -146
- package/dist/ui/model-overlay-v2.d.ts +0 -49
- package/dist/ui/model-overlay-v2.js +0 -118
- package/dist/ui/model-overlay.d.ts +0 -27
- package/dist/ui/model-overlay.js +0 -221
- package/dist/ui/model-warning-overlay.d.ts +0 -30
- package/dist/ui/model-warning-overlay.js +0 -169
- package/dist/ui/new-overlay.d.ts +0 -34
- package/dist/ui/new-overlay.js +0 -604
- package/dist/ui/overlay/impl/init-overlay-v2.d.ts +0 -77
- package/dist/ui/overlay/impl/init-overlay-v2.js +0 -593
- package/dist/ui/overlay/overlay-types.d.ts +0 -128
- package/dist/ui/overlay/overlay-types.js +0 -22
- package/dist/ui/overlays/help-overlay-v2.d.ts +0 -28
- package/dist/ui/overlays/help-overlay-v2.js +0 -198
- package/dist/ui/overlays/index.d.ts +0 -11
- package/dist/ui/overlays/index.js +0 -11
- package/dist/ui/permission-overlay-v2.d.ts +0 -36
- package/dist/ui/permission-overlay-v2.js +0 -380
- package/dist/ui/projects-overlay.d.ts +0 -19
- package/dist/ui/projects-overlay.js +0 -484
- package/dist/ui/theme-overlay-v2.d.ts +0 -42
- package/dist/ui/theme-overlay-v2.js +0 -135
- package/dist/ui/theme-overlay.d.ts +0 -24
- package/dist/ui/theme-overlay.js +0 -127
- package/dist/ui/tools-overlay-v2.d.ts +0 -47
- package/dist/ui/tools-overlay-v2.js +0 -218
- package/dist/ui/tools-overlay.d.ts +0 -34
- package/dist/ui/tools-overlay.js +0 -230
- package/dist/ui/tutorial-overlay-v2.d.ts +0 -31
- package/dist/ui/tutorial-overlay-v2.js +0 -1035
- package/dist/ui/tutorial-overlay.d.ts +0 -11
- package/dist/ui/tutorial-overlay.js +0 -1034
- package/dist/ui/workflow-overlay.d.ts +0 -22
- package/dist/ui/workflow-overlay.js +0 -636
package/dist/ui/theme-overlay.js
DELETED
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Theme Overlay
|
|
3
|
-
*
|
|
4
|
-
* Standalone theme selection overlay using TabbedListOverlay.
|
|
5
|
-
* Accessible via /theme command or from Config overlay.
|
|
6
|
-
*
|
|
7
|
-
* Features:
|
|
8
|
-
* - Tabs: Curated (top picks), All, Dark, Light
|
|
9
|
-
* - Search mode with / toggle
|
|
10
|
-
* - Live preview with syntax highlighting
|
|
11
|
-
* - Quick select with number keys (1-9,0) in Curated tab
|
|
12
|
-
* - Persists selection to settings
|
|
13
|
-
*/
|
|
14
|
-
import chalk from 'chalk';
|
|
15
|
-
import { TabbedListOverlay, isEnter, isSpace, } from './base/index.js';
|
|
16
|
-
import { getCuratedThemes, getCurrentTheme, setCurrentTheme, getAllThemes, getThemeCount, clearStyleCache, } from '../themes/index.js';
|
|
17
|
-
// =============================================================================
|
|
18
|
-
// Constants
|
|
19
|
-
// =============================================================================
|
|
20
|
-
const PAGE_SIZE = 10;
|
|
21
|
-
const TABS = [
|
|
22
|
-
{ id: 'curated', label: 'Curated' },
|
|
23
|
-
{ id: 'all', label: 'All' },
|
|
24
|
-
{ id: 'dark', label: 'Dark' },
|
|
25
|
-
{ id: 'light', label: 'Light' },
|
|
26
|
-
];
|
|
27
|
-
// =============================================================================
|
|
28
|
-
// Helper Functions
|
|
29
|
-
// =============================================================================
|
|
30
|
-
function renderPreview(theme, styles) {
|
|
31
|
-
const lines = [];
|
|
32
|
-
const colors = theme.colors;
|
|
33
|
-
lines.push(styles.muted(' Preview:'));
|
|
34
|
-
// Use chalk for hex colors in preview
|
|
35
|
-
const primary = chalk.hex(colors.primary);
|
|
36
|
-
const secondary = chalk.hex(colors.secondary || colors.primary);
|
|
37
|
-
const muted = chalk.hex(colors.muted);
|
|
38
|
-
const fg = chalk.hex(colors.foreground);
|
|
39
|
-
lines.push(' ' + primary.bold('function') + ' ' + secondary('greet') + fg('() {'));
|
|
40
|
-
lines.push(' ' + muted('// Say hello'));
|
|
41
|
-
lines.push(' ' + fg('console.') + secondary('log') + fg('("Hello, ') + primary('World') + fg('!");'));
|
|
42
|
-
lines.push(' ' + fg('}'));
|
|
43
|
-
return lines;
|
|
44
|
-
}
|
|
45
|
-
// =============================================================================
|
|
46
|
-
// Theme Overlay Class
|
|
47
|
-
// =============================================================================
|
|
48
|
-
class ThemeOverlay extends TabbedListOverlay {
|
|
49
|
-
currentThemeId;
|
|
50
|
-
curatedIds;
|
|
51
|
-
constructor(options = {}) {
|
|
52
|
-
const currentTheme = getCurrentTheme();
|
|
53
|
-
const currentThemeId = options.currentThemeId ?? currentTheme.id;
|
|
54
|
-
const curatedThemes = getCuratedThemes();
|
|
55
|
-
const curatedIds = new Set(curatedThemes.map(t => t.id));
|
|
56
|
-
const allThemes = getAllThemes();
|
|
57
|
-
const counts = getThemeCount();
|
|
58
|
-
const config = {
|
|
59
|
-
title: `Select Theme (${String(counts.total)})`,
|
|
60
|
-
tabs: TABS,
|
|
61
|
-
items: allThemes,
|
|
62
|
-
pageSize: PAGE_SIZE,
|
|
63
|
-
showCount: false, // We show count in title
|
|
64
|
-
filterByTab: (theme, tabId) => {
|
|
65
|
-
switch (tabId) {
|
|
66
|
-
case 'curated':
|
|
67
|
-
return curatedIds.has(theme.id);
|
|
68
|
-
case 'dark':
|
|
69
|
-
return theme.type === 'dark';
|
|
70
|
-
case 'light':
|
|
71
|
-
return theme.type === 'light';
|
|
72
|
-
default:
|
|
73
|
-
return true; // 'all'
|
|
74
|
-
}
|
|
75
|
-
},
|
|
76
|
-
getSearchText: (theme) => {
|
|
77
|
-
return `${theme.name} ${theme.id}`;
|
|
78
|
-
},
|
|
79
|
-
renderItem: (theme, isSelected, styles) => {
|
|
80
|
-
const isCurrent = theme.id === currentThemeId;
|
|
81
|
-
const prefix = isSelected ? styles.primary('❯ ') : ' ';
|
|
82
|
-
const icon = theme.type === 'dark' ? '🌙' : '☀️';
|
|
83
|
-
const checkmark = isCurrent ? styles.success(' ✓') : '';
|
|
84
|
-
const label = isSelected ? styles.primary(theme.name) : theme.name;
|
|
85
|
-
return ` ${prefix}${label.padEnd(33)}${icon}${checkmark}`;
|
|
86
|
-
},
|
|
87
|
-
renderSelectedPreview: (theme, styles) => {
|
|
88
|
-
return renderPreview(theme, styles);
|
|
89
|
-
},
|
|
90
|
-
footerHints: (searchMode) => {
|
|
91
|
-
if (searchMode) {
|
|
92
|
-
return 'Type to filter · ↑↓/jk Navigate · Enter Select · Esc Exit search';
|
|
93
|
-
}
|
|
94
|
-
return 'Tab Filter · ↑↓/jk · ←→/hl Pages · / Search · Enter Select · q/Esc Close';
|
|
95
|
-
},
|
|
96
|
-
emptyMessage: 'No themes available.',
|
|
97
|
-
noResultsMessage: 'No themes match the search.',
|
|
98
|
-
};
|
|
99
|
-
super(config);
|
|
100
|
-
this.currentThemeId = currentThemeId;
|
|
101
|
-
this.curatedIds = curatedIds;
|
|
102
|
-
}
|
|
103
|
-
handleKey(data) {
|
|
104
|
-
// Handle Enter/Space to select theme
|
|
105
|
-
if ((isEnter(data) || isSpace(data)) && this.state.filteredItems.length > 0) {
|
|
106
|
-
const theme = this.state.filteredItems[this.state.selectedIndex];
|
|
107
|
-
this.selectTheme(theme);
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
// Let parent handle other keys (including number keys for tab switching)
|
|
111
|
-
super.handleKey(data);
|
|
112
|
-
}
|
|
113
|
-
selectTheme(theme) {
|
|
114
|
-
setCurrentTheme(theme.id);
|
|
115
|
-
clearStyleCache();
|
|
116
|
-
this.close({
|
|
117
|
-
themeChanged: theme.id,
|
|
118
|
-
themeName: theme.name,
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
// =============================================================================
|
|
123
|
-
// Export Function
|
|
124
|
-
// =============================================================================
|
|
125
|
-
export async function showThemeOverlay(options = {}) {
|
|
126
|
-
return new ThemeOverlay(options).show();
|
|
127
|
-
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tools Overlay V2
|
|
3
|
-
*
|
|
4
|
-
* Displays available agent tools in a categorized, searchable list.
|
|
5
|
-
* Uses TabbedListOverlayV2 for the new Overlay interface.
|
|
6
|
-
*
|
|
7
|
-
* Features:
|
|
8
|
-
* - Tabs: All, Files, Code, Git, Project, Agent
|
|
9
|
-
* - Search with / toggle
|
|
10
|
-
* - Detail view for full tool information
|
|
11
|
-
* - Works with TerminalUI's overlay management
|
|
12
|
-
*/
|
|
13
|
-
import { TabbedListOverlayV2, BaseScreen } from './base/index.js';
|
|
14
|
-
export interface ToolParameter {
|
|
15
|
-
name: string;
|
|
16
|
-
type: string;
|
|
17
|
-
description?: string;
|
|
18
|
-
required: boolean;
|
|
19
|
-
}
|
|
20
|
-
export interface ToolPermissionInfo {
|
|
21
|
-
level: 'once' | 'always' | 'session';
|
|
22
|
-
description: string;
|
|
23
|
-
}
|
|
24
|
-
export interface ToolInfo {
|
|
25
|
-
name: string;
|
|
26
|
-
description?: string;
|
|
27
|
-
parameters?: ToolParameter[];
|
|
28
|
-
permission?: ToolPermissionInfo;
|
|
29
|
-
}
|
|
30
|
-
export interface ToolsOverlayV2Options {
|
|
31
|
-
/** List of available tools */
|
|
32
|
-
tools: ToolInfo[];
|
|
33
|
-
}
|
|
34
|
-
export interface ToolsOverlayV2Result {
|
|
35
|
-
/** Whether the overlay was dismissed without action */
|
|
36
|
-
dismissed: boolean;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Tools overlay using the new Overlay interface.
|
|
40
|
-
* Displays available tools in a searchable, tabbed list.
|
|
41
|
-
*/
|
|
42
|
-
export declare class ToolsOverlayV2 extends TabbedListOverlayV2<ToolInfo, ToolsOverlayV2Result> {
|
|
43
|
-
readonly type: "inline";
|
|
44
|
-
readonly id = "tools-overlay-v2";
|
|
45
|
-
constructor(options: ToolsOverlayV2Options);
|
|
46
|
-
protected createDetailScreen(tool: ToolInfo): BaseScreen | null;
|
|
47
|
-
}
|
|
@@ -1,218 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tools Overlay V2
|
|
3
|
-
*
|
|
4
|
-
* Displays available agent tools in a categorized, searchable list.
|
|
5
|
-
* Uses TabbedListOverlayV2 for the new Overlay interface.
|
|
6
|
-
*
|
|
7
|
-
* Features:
|
|
8
|
-
* - Tabs: All, Files, Code, Git, Project, Agent
|
|
9
|
-
* - Search with / toggle
|
|
10
|
-
* - Detail view for full tool information
|
|
11
|
-
* - Works with TerminalUI's overlay management
|
|
12
|
-
*/
|
|
13
|
-
import * as terminal from './terminal.js';
|
|
14
|
-
import { TabbedListOverlayV2, BaseScreen, stay, popScreen, closeOverlay, isEscape, isCtrlC, isClose, renderBorder, wrapText, } from './base/index.js';
|
|
15
|
-
// =============================================================================
|
|
16
|
-
// Tab Definitions & Tool Categories
|
|
17
|
-
// =============================================================================
|
|
18
|
-
const TOOL_TABS = [
|
|
19
|
-
{ id: 'all', label: 'All' },
|
|
20
|
-
{ id: 'files', label: 'Files' },
|
|
21
|
-
{ id: 'code', label: 'Code' },
|
|
22
|
-
{ id: 'git', label: 'Git' },
|
|
23
|
-
{ id: 'project', label: 'Project' },
|
|
24
|
-
{ id: 'agent', label: 'Agent' },
|
|
25
|
-
];
|
|
26
|
-
/**
|
|
27
|
-
* Tool category mappings.
|
|
28
|
-
* Uses exact names or prefix patterns (ending with *).
|
|
29
|
-
*/
|
|
30
|
-
const TOOL_CATEGORIES = {
|
|
31
|
-
all: null, // No filter - show all tools
|
|
32
|
-
files: ['read_file', 'write_file', 'edit', 'glob', 'readFile', 'writeFile'],
|
|
33
|
-
code: ['grep', 'bash', 'bashOutput', 'run_tests', 'run_lint', 'detect_project', 'find_project_root', 'detectProject', 'findProjectRoot'],
|
|
34
|
-
git: ['git_*', 'gitStatus', 'gitDiff', 'gitLog', 'gitCommit', 'gitBranch'],
|
|
35
|
-
project: ['project_*', 'workitem_*', 'document_*', 'anchor_*'],
|
|
36
|
-
agent: ['task', 'todo_write', 'todo_read', 'todoWrite', 'todoRead', 'suggest', 'ask_user', 'ask_user_simple', 'askUser', 'askUserSimple', 'webFetch'],
|
|
37
|
-
};
|
|
38
|
-
/**
|
|
39
|
-
* Check if a tool matches a category filter.
|
|
40
|
-
*/
|
|
41
|
-
function toolMatchesCategory(toolName, categoryId) {
|
|
42
|
-
const patterns = TOOL_CATEGORIES[categoryId];
|
|
43
|
-
if (patterns === null)
|
|
44
|
-
return true; // 'all' category
|
|
45
|
-
for (const pattern of patterns) {
|
|
46
|
-
if (pattern.endsWith('*')) {
|
|
47
|
-
// Prefix match
|
|
48
|
-
const prefix = pattern.slice(0, -1);
|
|
49
|
-
if (toolName.startsWith(prefix))
|
|
50
|
-
return true;
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
// Exact match
|
|
54
|
-
if (toolName === pattern)
|
|
55
|
-
return true;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
return false;
|
|
59
|
-
}
|
|
60
|
-
// =============================================================================
|
|
61
|
-
// Constants
|
|
62
|
-
// =============================================================================
|
|
63
|
-
const PAGE_SIZE = 12;
|
|
64
|
-
const NAME_WIDTH = 26;
|
|
65
|
-
const MAX_DESCRIPTION_LENGTH = 300;
|
|
66
|
-
const MAX_PARAMETERS_SHOWN = 5;
|
|
67
|
-
/**
|
|
68
|
-
* Normalize text by replacing newlines with spaces (for single-line display)
|
|
69
|
-
*/
|
|
70
|
-
function normalizeText(text) {
|
|
71
|
-
return text.replace(/\n+/g, ' ').replace(/\s+/g, ' ').trim();
|
|
72
|
-
}
|
|
73
|
-
// =============================================================================
|
|
74
|
-
// Detail Screen
|
|
75
|
-
// =============================================================================
|
|
76
|
-
/**
|
|
77
|
-
* Detail screen - shows full information for selected tool
|
|
78
|
-
*/
|
|
79
|
-
class ToolDetailScreen extends BaseScreen {
|
|
80
|
-
tool;
|
|
81
|
-
styles;
|
|
82
|
-
constructor(tool, styles) {
|
|
83
|
-
super();
|
|
84
|
-
this.tool = tool;
|
|
85
|
-
this.styles = styles;
|
|
86
|
-
}
|
|
87
|
-
render() {
|
|
88
|
-
const s = this.styles;
|
|
89
|
-
const cols = terminal.getTerminalWidth();
|
|
90
|
-
const border = renderBorder(cols, s);
|
|
91
|
-
const lines = [];
|
|
92
|
-
// Header
|
|
93
|
-
lines.push(border);
|
|
94
|
-
lines.push(` ${s.primaryBold('Tool Details')}`);
|
|
95
|
-
lines.push('');
|
|
96
|
-
// Tool name
|
|
97
|
-
lines.push(` ${s.muted('Name:')} ${s.primaryBold(this.tool.name)}`);
|
|
98
|
-
lines.push('');
|
|
99
|
-
// Permission info
|
|
100
|
-
if (this.tool.permission) {
|
|
101
|
-
const levelColor = this.tool.permission.level === 'once' ? s.warning : s.muted;
|
|
102
|
-
lines.push(` ${s.muted('Permission:')} ${levelColor(this.tool.permission.level)} ${s.muted(`(${this.tool.permission.description})`)}`);
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
lines.push(` ${s.muted('Permission:')} ${s.success('always')} ${s.muted('(no approval required)')}`);
|
|
106
|
-
}
|
|
107
|
-
lines.push('');
|
|
108
|
-
// Description (normalize newlines for proper wrapping)
|
|
109
|
-
lines.push(` ${s.muted('Description:')}`);
|
|
110
|
-
let description = normalizeText(this.tool.description ?? 'No description available.');
|
|
111
|
-
if (description.length > MAX_DESCRIPTION_LENGTH) {
|
|
112
|
-
description = description.slice(0, MAX_DESCRIPTION_LENGTH).trim() + '...';
|
|
113
|
-
}
|
|
114
|
-
const wrappedDesc = wrapText(description, cols - 6);
|
|
115
|
-
for (const line of wrappedDesc) {
|
|
116
|
-
lines.push(` ${s.secondary(line)}`);
|
|
117
|
-
}
|
|
118
|
-
lines.push('');
|
|
119
|
-
// Parameters
|
|
120
|
-
if (this.tool.parameters && this.tool.parameters.length > 0) {
|
|
121
|
-
// Sort: required first, then optional
|
|
122
|
-
const sorted = [...this.tool.parameters].sort((a, b) => {
|
|
123
|
-
if (a.required && !b.required)
|
|
124
|
-
return -1;
|
|
125
|
-
if (!a.required && b.required)
|
|
126
|
-
return 1;
|
|
127
|
-
return 0;
|
|
128
|
-
});
|
|
129
|
-
const shown = sorted.slice(0, MAX_PARAMETERS_SHOWN);
|
|
130
|
-
const hidden = sorted.length - shown.length;
|
|
131
|
-
lines.push(` ${s.muted('Parameters:')}`);
|
|
132
|
-
for (const param of shown) {
|
|
133
|
-
const requiredBadge = param.required ? s.warning('*') : ' ';
|
|
134
|
-
const typeStr = s.muted(`(${param.type})`);
|
|
135
|
-
lines.push(` ${requiredBadge} ${s.secondary(param.name)} ${typeStr}`);
|
|
136
|
-
}
|
|
137
|
-
if (hidden > 0) {
|
|
138
|
-
lines.push(` ${s.muted(` + ${String(hidden)} more optional parameters`)}`);
|
|
139
|
-
}
|
|
140
|
-
lines.push('');
|
|
141
|
-
lines.push(` ${s.muted('* = required')}`);
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
144
|
-
lines.push(` ${s.muted('Parameters:')} ${s.muted('None')}`);
|
|
145
|
-
}
|
|
146
|
-
// Footer
|
|
147
|
-
lines.push(border);
|
|
148
|
-
lines.push(` ${s.muted('q/Esc Back')}`);
|
|
149
|
-
lines.push(border);
|
|
150
|
-
return lines;
|
|
151
|
-
}
|
|
152
|
-
handleKey(data) {
|
|
153
|
-
// Ctrl+C closes overlay completely
|
|
154
|
-
if (isCtrlC(data)) {
|
|
155
|
-
return closeOverlay({ dismissed: true });
|
|
156
|
-
}
|
|
157
|
-
// Esc or q goes back to list
|
|
158
|
-
if (isEscape(data) || isClose(data)) {
|
|
159
|
-
return popScreen();
|
|
160
|
-
}
|
|
161
|
-
return stay(false);
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* Minimum height for stable rendering.
|
|
165
|
-
*/
|
|
166
|
-
getMinHeight() {
|
|
167
|
-
return 20;
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
// =============================================================================
|
|
171
|
-
// Tools Overlay V2 Class
|
|
172
|
-
// =============================================================================
|
|
173
|
-
/**
|
|
174
|
-
* Tools overlay using the new Overlay interface.
|
|
175
|
-
* Displays available tools in a searchable, tabbed list.
|
|
176
|
-
*/
|
|
177
|
-
export class ToolsOverlayV2 extends TabbedListOverlayV2 {
|
|
178
|
-
type = 'inline';
|
|
179
|
-
id = 'tools-overlay-v2';
|
|
180
|
-
constructor(options) {
|
|
181
|
-
// Sort tools alphabetically
|
|
182
|
-
const sortedTools = [...options.tools].sort((a, b) => a.name.localeCompare(b.name));
|
|
183
|
-
super({
|
|
184
|
-
title: 'Available Tools',
|
|
185
|
-
tabs: TOOL_TABS,
|
|
186
|
-
items: sortedTools,
|
|
187
|
-
pageSize: PAGE_SIZE,
|
|
188
|
-
filterByTab: (tool, tabId) => toolMatchesCategory(tool.name, tabId),
|
|
189
|
-
getSearchText: (tool) => `${tool.name} ${tool.description ?? ''}`,
|
|
190
|
-
renderItem: (tool, isSelected, styles) => {
|
|
191
|
-
const cols = terminal.getTerminalWidth();
|
|
192
|
-
const descWidth = Math.max(20, cols - NAME_WIDTH - 10);
|
|
193
|
-
const cursor = isSelected ? styles.primary('> ') : ' ';
|
|
194
|
-
const name = isSelected
|
|
195
|
-
? styles.primary(tool.name.padEnd(NAME_WIDTH))
|
|
196
|
-
: styles.muted(tool.name.padEnd(NAME_WIDTH));
|
|
197
|
-
// Normalize and truncate description
|
|
198
|
-
const normalizedDesc = normalizeText(tool.description ?? '');
|
|
199
|
-
const desc = normalizedDesc.length > descWidth
|
|
200
|
-
? normalizedDesc.slice(0, descWidth - 1) + '...'
|
|
201
|
-
: normalizedDesc;
|
|
202
|
-
const descColor = isSelected ? styles.secondary(desc) : styles.muted(desc);
|
|
203
|
-
return ` ${cursor}${name} ${descColor}`;
|
|
204
|
-
},
|
|
205
|
-
footerHints: (searchMode) => {
|
|
206
|
-
if (searchMode) {
|
|
207
|
-
return 'Type to filter · ↑↓/jk Navigate · Enter Details · Esc Exit search';
|
|
208
|
-
}
|
|
209
|
-
return 'Tab Filter · ↑↓/jk · ←→/hl Pages · / Search · Enter Details · q/Esc Close';
|
|
210
|
-
},
|
|
211
|
-
emptyMessage: 'No tools available.',
|
|
212
|
-
noResultsMessage: 'No tools match the current filter.',
|
|
213
|
-
});
|
|
214
|
-
}
|
|
215
|
-
createDetailScreen(tool) {
|
|
216
|
-
return new ToolDetailScreen(tool, this.getStyles());
|
|
217
|
-
}
|
|
218
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tools Overlay
|
|
3
|
-
*
|
|
4
|
-
* Displays available agent tools in a categorized, searchable list.
|
|
5
|
-
* Uses TabbedListOverlay for consistent UX patterns.
|
|
6
|
-
*
|
|
7
|
-
* Features:
|
|
8
|
-
* - Tabs: All, Files, Code, Git, Project, Agent
|
|
9
|
-
* - Search with / toggle
|
|
10
|
-
* - Detail view for full tool information
|
|
11
|
-
*/
|
|
12
|
-
export interface ToolParameter {
|
|
13
|
-
name: string;
|
|
14
|
-
type: string;
|
|
15
|
-
description?: string;
|
|
16
|
-
required: boolean;
|
|
17
|
-
}
|
|
18
|
-
export interface ToolPermissionInfo {
|
|
19
|
-
level: 'once' | 'always' | 'session';
|
|
20
|
-
description: string;
|
|
21
|
-
}
|
|
22
|
-
export interface ToolInfo {
|
|
23
|
-
name: string;
|
|
24
|
-
description?: string;
|
|
25
|
-
parameters?: ToolParameter[];
|
|
26
|
-
permission?: ToolPermissionInfo;
|
|
27
|
-
}
|
|
28
|
-
export interface ToolsOverlayResult {
|
|
29
|
-
dismissed: boolean;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Show the tools overlay
|
|
33
|
-
*/
|
|
34
|
-
export declare function showToolsOverlay(tools: ToolInfo[]): Promise<ToolsOverlayResult>;
|
package/dist/ui/tools-overlay.js
DELETED
|
@@ -1,230 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tools Overlay
|
|
3
|
-
*
|
|
4
|
-
* Displays available agent tools in a categorized, searchable list.
|
|
5
|
-
* Uses TabbedListOverlay for consistent UX patterns.
|
|
6
|
-
*
|
|
7
|
-
* Features:
|
|
8
|
-
* - Tabs: All, Files, Code, Git, Project, Agent
|
|
9
|
-
* - Search with / toggle
|
|
10
|
-
* - Detail view for full tool information
|
|
11
|
-
*/
|
|
12
|
-
import * as terminal from './terminal.js';
|
|
13
|
-
import { TabbedListOverlay, BaseScreen, stay, popScreen, closeOverlay, isCtrlC, isClose, isEscape, renderBorder, } from './base/index.js';
|
|
14
|
-
// =============================================================================
|
|
15
|
-
// Tab Definitions & Tool Categories
|
|
16
|
-
// =============================================================================
|
|
17
|
-
const TOOL_TABS = [
|
|
18
|
-
{ id: 'all', label: 'All' },
|
|
19
|
-
{ id: 'files', label: 'Files' },
|
|
20
|
-
{ id: 'code', label: 'Code' },
|
|
21
|
-
{ id: 'git', label: 'Git' },
|
|
22
|
-
{ id: 'project', label: 'Project' },
|
|
23
|
-
{ id: 'agent', label: 'Agent' },
|
|
24
|
-
];
|
|
25
|
-
/**
|
|
26
|
-
* Tool category mappings.
|
|
27
|
-
* Uses exact names or prefix patterns (ending with *).
|
|
28
|
-
*/
|
|
29
|
-
const TOOL_CATEGORIES = {
|
|
30
|
-
all: null, // No filter - show all tools
|
|
31
|
-
files: ['read_file', 'write_file', 'edit', 'glob', 'readFile', 'writeFile'],
|
|
32
|
-
code: ['grep', 'bash', 'bashOutput', 'run_tests', 'run_lint', 'detect_project', 'find_project_root', 'detectProject', 'findProjectRoot'],
|
|
33
|
-
git: ['git_*', 'gitStatus', 'gitDiff', 'gitLog', 'gitCommit', 'gitBranch'],
|
|
34
|
-
project: ['project_*', 'workitem_*', 'document_*', 'anchor_*'],
|
|
35
|
-
agent: ['task', 'todo_write', 'todo_read', 'todoWrite', 'todoRead', 'suggest', 'ask_user', 'ask_user_simple', 'askUser', 'askUserSimple', 'webFetch'],
|
|
36
|
-
};
|
|
37
|
-
/**
|
|
38
|
-
* Check if a tool matches a category filter.
|
|
39
|
-
*/
|
|
40
|
-
function toolMatchesCategory(toolName, categoryId) {
|
|
41
|
-
const patterns = TOOL_CATEGORIES[categoryId];
|
|
42
|
-
if (patterns === null)
|
|
43
|
-
return true; // 'all' category
|
|
44
|
-
for (const pattern of patterns) {
|
|
45
|
-
if (pattern.endsWith('*')) {
|
|
46
|
-
// Prefix match
|
|
47
|
-
const prefix = pattern.slice(0, -1);
|
|
48
|
-
if (toolName.startsWith(prefix))
|
|
49
|
-
return true;
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
// Exact match
|
|
53
|
-
if (toolName === pattern)
|
|
54
|
-
return true;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
return false;
|
|
58
|
-
}
|
|
59
|
-
// =============================================================================
|
|
60
|
-
// Constants
|
|
61
|
-
// =============================================================================
|
|
62
|
-
const PAGE_SIZE = 12;
|
|
63
|
-
const NAME_WIDTH = 26;
|
|
64
|
-
const MAX_DESCRIPTION_LENGTH = 300;
|
|
65
|
-
const MAX_PARAMETERS_SHOWN = 5;
|
|
66
|
-
/**
|
|
67
|
-
* Normalize text by replacing newlines with spaces (for single-line display)
|
|
68
|
-
*/
|
|
69
|
-
function normalizeText(text) {
|
|
70
|
-
return text.replace(/\n+/g, ' ').replace(/\s+/g, ' ').trim();
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Detail screen - shows full information for selected tool
|
|
74
|
-
*/
|
|
75
|
-
class ToolDetailScreen extends BaseScreen {
|
|
76
|
-
tool;
|
|
77
|
-
styles;
|
|
78
|
-
constructor(tool, styles) {
|
|
79
|
-
super();
|
|
80
|
-
this.tool = tool;
|
|
81
|
-
this.styles = styles;
|
|
82
|
-
}
|
|
83
|
-
render() {
|
|
84
|
-
const s = this.styles;
|
|
85
|
-
const cols = terminal.getTerminalWidth();
|
|
86
|
-
const border = renderBorder(cols, s);
|
|
87
|
-
const lines = [];
|
|
88
|
-
// Header
|
|
89
|
-
lines.push(border);
|
|
90
|
-
lines.push(` ${s.primaryBold('Tool Details')}`);
|
|
91
|
-
lines.push('');
|
|
92
|
-
// Tool name
|
|
93
|
-
lines.push(` ${s.muted('Name:')} ${s.primaryBold(this.tool.name)}`);
|
|
94
|
-
lines.push('');
|
|
95
|
-
// Permission info
|
|
96
|
-
if (this.tool.permission) {
|
|
97
|
-
const levelColor = this.tool.permission.level === 'once' ? s.warning : s.muted;
|
|
98
|
-
lines.push(` ${s.muted('Permission:')} ${levelColor(this.tool.permission.level)} ${s.muted(`(${this.tool.permission.description})`)}`);
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
lines.push(` ${s.muted('Permission:')} ${s.success('always')} ${s.muted('(no approval required)')}`);
|
|
102
|
-
}
|
|
103
|
-
lines.push('');
|
|
104
|
-
// Description (normalize newlines for proper wrapping)
|
|
105
|
-
lines.push(` ${s.muted('Description:')}`);
|
|
106
|
-
let description = normalizeText(this.tool.description ?? 'No description available.');
|
|
107
|
-
if (description.length > MAX_DESCRIPTION_LENGTH) {
|
|
108
|
-
description = description.slice(0, MAX_DESCRIPTION_LENGTH).trim() + '...';
|
|
109
|
-
}
|
|
110
|
-
const wrappedDesc = this.wrapText(description, cols - 6);
|
|
111
|
-
for (const line of wrappedDesc) {
|
|
112
|
-
lines.push(` ${s.secondary(line)}`);
|
|
113
|
-
}
|
|
114
|
-
lines.push('');
|
|
115
|
-
// Parameters
|
|
116
|
-
if (this.tool.parameters && this.tool.parameters.length > 0) {
|
|
117
|
-
// Sort: required first, then optional
|
|
118
|
-
const sorted = [...this.tool.parameters].sort((a, b) => {
|
|
119
|
-
if (a.required && !b.required)
|
|
120
|
-
return -1;
|
|
121
|
-
if (!a.required && b.required)
|
|
122
|
-
return 1;
|
|
123
|
-
return 0;
|
|
124
|
-
});
|
|
125
|
-
const shown = sorted.slice(0, MAX_PARAMETERS_SHOWN);
|
|
126
|
-
const hidden = sorted.length - shown.length;
|
|
127
|
-
lines.push(` ${s.muted('Parameters:')}`);
|
|
128
|
-
for (const param of shown) {
|
|
129
|
-
const requiredBadge = param.required ? s.warning('*') : ' ';
|
|
130
|
-
const typeStr = s.muted(`(${param.type})`);
|
|
131
|
-
lines.push(` ${requiredBadge} ${s.secondary(param.name)} ${typeStr}`);
|
|
132
|
-
}
|
|
133
|
-
if (hidden > 0) {
|
|
134
|
-
lines.push(` ${s.muted(` + ${String(hidden)} more optional parameters`)}`);
|
|
135
|
-
}
|
|
136
|
-
lines.push('');
|
|
137
|
-
lines.push(` ${s.muted('* = required')}`);
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
lines.push(` ${s.muted('Parameters:')} ${s.muted('None')}`);
|
|
141
|
-
}
|
|
142
|
-
// Footer
|
|
143
|
-
lines.push(border);
|
|
144
|
-
lines.push(` ${s.muted('q/Esc Back')}`);
|
|
145
|
-
lines.push(border);
|
|
146
|
-
return lines;
|
|
147
|
-
}
|
|
148
|
-
handleKey(data) {
|
|
149
|
-
// Ctrl+C closes overlay completely
|
|
150
|
-
if (isCtrlC(data)) {
|
|
151
|
-
return closeOverlay({ dismissed: true });
|
|
152
|
-
}
|
|
153
|
-
// Esc or q goes back to list
|
|
154
|
-
if (isEscape(data) || isClose(data)) {
|
|
155
|
-
return popScreen();
|
|
156
|
-
}
|
|
157
|
-
return stay(false);
|
|
158
|
-
}
|
|
159
|
-
wrapText(text, maxWidth) {
|
|
160
|
-
const words = text.split(' ');
|
|
161
|
-
const resultLines = [];
|
|
162
|
-
let currentLine = '';
|
|
163
|
-
for (const word of words) {
|
|
164
|
-
if (currentLine.length + word.length + 1 <= maxWidth) {
|
|
165
|
-
currentLine += (currentLine ? ' ' : '') + word;
|
|
166
|
-
}
|
|
167
|
-
else {
|
|
168
|
-
if (currentLine)
|
|
169
|
-
resultLines.push(currentLine);
|
|
170
|
-
currentLine = word;
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
if (currentLine)
|
|
174
|
-
resultLines.push(currentLine);
|
|
175
|
-
return resultLines;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
// =============================================================================
|
|
179
|
-
// Tools Overlay Class
|
|
180
|
-
// =============================================================================
|
|
181
|
-
class ToolsOverlay extends TabbedListOverlay {
|
|
182
|
-
constructor(tools) {
|
|
183
|
-
// Sort tools alphabetically
|
|
184
|
-
const sortedTools = [...tools].sort((a, b) => a.name.localeCompare(b.name));
|
|
185
|
-
super({
|
|
186
|
-
title: 'Available Tools',
|
|
187
|
-
tabs: TOOL_TABS,
|
|
188
|
-
items: sortedTools,
|
|
189
|
-
pageSize: PAGE_SIZE,
|
|
190
|
-
filterByTab: (tool, tabId) => toolMatchesCategory(tool.name, tabId),
|
|
191
|
-
getSearchText: (tool) => `${tool.name} ${tool.description ?? ''}`,
|
|
192
|
-
renderItem: (tool, isSelected, styles) => {
|
|
193
|
-
const cols = terminal.getTerminalWidth();
|
|
194
|
-
const descWidth = Math.max(20, cols - NAME_WIDTH - 10);
|
|
195
|
-
const cursor = isSelected ? styles.primary('❯ ') : ' ';
|
|
196
|
-
const name = isSelected
|
|
197
|
-
? styles.primaryBold(tool.name.padEnd(NAME_WIDTH))
|
|
198
|
-
: styles.secondary(tool.name.padEnd(NAME_WIDTH));
|
|
199
|
-
// Normalize and truncate description
|
|
200
|
-
const normalizedDesc = normalizeText(tool.description ?? '');
|
|
201
|
-
const desc = normalizedDesc.length > descWidth
|
|
202
|
-
? normalizedDesc.slice(0, descWidth - 1) + '…'
|
|
203
|
-
: normalizedDesc;
|
|
204
|
-
const descColor = isSelected ? styles.secondary(desc) : styles.muted(desc);
|
|
205
|
-
return ` ${cursor}${name} ${descColor}`;
|
|
206
|
-
},
|
|
207
|
-
footerHints: (searchMode) => {
|
|
208
|
-
if (searchMode) {
|
|
209
|
-
return 'Type to filter · ↑↓/jk Navigate · Enter Details · Esc Exit search';
|
|
210
|
-
}
|
|
211
|
-
return 'Tab Filter · ↑↓/jk · ←→/hl Pages · / Search · Enter Details · q/Esc Close';
|
|
212
|
-
},
|
|
213
|
-
emptyMessage: 'No tools available.',
|
|
214
|
-
noResultsMessage: 'No tools match the current filter.',
|
|
215
|
-
detailScreensFullScreen: false,
|
|
216
|
-
});
|
|
217
|
-
}
|
|
218
|
-
createDetailScreen(tool) {
|
|
219
|
-
return new ToolDetailScreen(tool, this.styles);
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
// =============================================================================
|
|
223
|
-
// Export Function
|
|
224
|
-
// =============================================================================
|
|
225
|
-
/**
|
|
226
|
-
* Show the tools overlay
|
|
227
|
-
*/
|
|
228
|
-
export async function showToolsOverlay(tools) {
|
|
229
|
-
return new ToolsOverlay(tools).show();
|
|
230
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tutorial Overlay V2
|
|
3
|
-
*
|
|
4
|
-
* Interactive tutorial using the new Overlay interface.
|
|
5
|
-
* Supports guided sequential tour and topic-based navigation.
|
|
6
|
-
*/
|
|
7
|
-
import { BaseOverlayV2 } from './base/index.js';
|
|
8
|
-
import type { RenderContext, OverlayAction, KeyEvent } from './overlay/index.js';
|
|
9
|
-
export interface TutorialOverlayV2Result {
|
|
10
|
-
completed: boolean;
|
|
11
|
-
}
|
|
12
|
-
interface TutorialState {
|
|
13
|
-
topicListIndex: number;
|
|
14
|
-
currentTopicIndex: number;
|
|
15
|
-
currentPageIndex: number;
|
|
16
|
-
isGuidedMode: boolean;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Tutorial overlay using the new Overlay interface.
|
|
20
|
-
* Multi-screen overlay for interactive tutorial.
|
|
21
|
-
*/
|
|
22
|
-
export declare class TutorialOverlayV2 extends BaseOverlayV2<TutorialState, TutorialOverlayV2Result> {
|
|
23
|
-
readonly type: "inline";
|
|
24
|
-
readonly id = "tutorial-overlay-v2";
|
|
25
|
-
private readonly screenStack;
|
|
26
|
-
private topics;
|
|
27
|
-
constructor();
|
|
28
|
-
protected renderContent(context: RenderContext): string[];
|
|
29
|
-
handleKey(key: KeyEvent): OverlayAction<TutorialOverlayV2Result>;
|
|
30
|
-
}
|
|
31
|
-
export {};
|