@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
|
@@ -65,10 +65,12 @@ setupAlternateScreenCleanup();
|
|
|
65
65
|
import { marked } from 'marked';
|
|
66
66
|
import { markedTerminal } from 'marked-terminal';
|
|
67
67
|
import { BaseOverlayV2 } from '../../base/overlay-base-v2.js';
|
|
68
|
-
import { renderBorder, isCtrlC, isClose } from '../../base/index.js';
|
|
68
|
+
import { renderBorder, isCtrlC, isClose, isNavigateUp, isNavigateDown, isUpArrow, isDownArrow, isLeftArrow, isRightArrow, isHome, isEnd, isPageUp, isPageDown, isSpace, isBackspace, isDelete, isEnter, isTab, isEscape, isE, getPrintableChar, } from '../../base/index.js';
|
|
69
69
|
import { documentRepository } from '../../../db/repositories/document-repository.js';
|
|
70
|
+
import { planRepository } from '../../../db/repositories/plan-repository.js';
|
|
70
71
|
import { getCurrentTheme } from '../../../themes/index.js';
|
|
71
72
|
import * as terminal from '../../terminal.js';
|
|
73
|
+
import { DOC_TYPE_LABELS, PLAN_STATUS_LABELS, PLAN_STATUS_COLORS } from '../../constants/labels.js';
|
|
72
74
|
// =============================================================================
|
|
73
75
|
// Register Additional Languages for Syntax Highlighting
|
|
74
76
|
// =============================================================================
|
|
@@ -168,11 +170,14 @@ hljs.registerAliases('graphviz', { languageName: 'dot' });
|
|
|
168
170
|
// =============================================================================
|
|
169
171
|
// Constants
|
|
170
172
|
// =============================================================================
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
'
|
|
175
|
-
'
|
|
173
|
+
// DOC_TYPE_LABELS, PLAN_STATUS_LABELS, PLAN_STATUS_COLORS imported from '../../constants/labels.js'
|
|
174
|
+
// Valid status transitions
|
|
175
|
+
const VALID_TRANSITIONS = {
|
|
176
|
+
draft: ['approved', 'abandoned'],
|
|
177
|
+
approved: ['in_progress', 'abandoned'],
|
|
178
|
+
in_progress: ['completed', 'abandoned'],
|
|
179
|
+
completed: [],
|
|
180
|
+
abandoned: ['draft'],
|
|
176
181
|
};
|
|
177
182
|
const TAB_SIZE = 2;
|
|
178
183
|
// =============================================================================
|
|
@@ -401,74 +406,16 @@ function highlightInlineMarkdown(text, theme) {
|
|
|
401
406
|
return result;
|
|
402
407
|
}
|
|
403
408
|
// =============================================================================
|
|
404
|
-
// Key Detection Helpers
|
|
409
|
+
// Key Detection Helpers (local functions not in ui-core)
|
|
405
410
|
// =============================================================================
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
return str === '\x1b[A' || str === 'k';
|
|
409
|
-
}
|
|
410
|
-
function isNavigateDown(data) {
|
|
411
|
-
const str = data.toString();
|
|
412
|
-
return str === '\x1b[B' || str === 'j';
|
|
413
|
-
}
|
|
414
|
-
function isArrowUp(data) {
|
|
415
|
-
return data.toString() === '\x1b[A';
|
|
416
|
-
}
|
|
417
|
-
function isArrowDown(data) {
|
|
418
|
-
return data.toString() === '\x1b[B';
|
|
419
|
-
}
|
|
420
|
-
function isArrowLeft(data) {
|
|
421
|
-
return data.toString() === '\x1b[D';
|
|
422
|
-
}
|
|
423
|
-
function isArrowRight(data) {
|
|
424
|
-
return data.toString() === '\x1b[C';
|
|
425
|
-
}
|
|
426
|
-
function isHome(data) {
|
|
427
|
-
const str = data.toString();
|
|
428
|
-
return str === '\x1b[H' || str === '\x1b[1~';
|
|
429
|
-
}
|
|
430
|
-
function isEnd(data) {
|
|
431
|
-
const str = data.toString();
|
|
432
|
-
return str === '\x1b[F' || str === '\x1b[4~';
|
|
433
|
-
}
|
|
434
|
-
function isPageUp(data) {
|
|
435
|
-
return data.toString() === '\x1b[5~';
|
|
436
|
-
}
|
|
437
|
-
function isPageDown(data) {
|
|
438
|
-
return data.toString() === '\x1b[6~';
|
|
439
|
-
}
|
|
440
|
-
function isSpace(data) {
|
|
441
|
-
return data.length === 1 && data[0] === 0x20;
|
|
442
|
-
}
|
|
443
|
-
function isBackspace(data) {
|
|
444
|
-
return data.length === 1 && (data[0] === 0x7f || data[0] === 0x08);
|
|
445
|
-
}
|
|
446
|
-
function isDelete(data) {
|
|
447
|
-
return data.toString() === '\x1b[3~';
|
|
448
|
-
}
|
|
449
|
-
function isEnter(data) {
|
|
450
|
-
return data.length === 1 && (data[0] === 0x0d || data[0] === 0x0a);
|
|
451
|
-
}
|
|
452
|
-
function isTab(data) {
|
|
453
|
-
return data.length === 1 && data[0] === 0x09;
|
|
454
|
-
}
|
|
411
|
+
// Most key detection functions are imported from '../../base/index.js'.
|
|
412
|
+
// Only custom/specialized ones are defined locally here.
|
|
455
413
|
function isCtrlS(data) {
|
|
456
414
|
return data.length === 1 && data[0] === 0x13;
|
|
457
415
|
}
|
|
458
|
-
function isEscape(data) {
|
|
459
|
-
return data.length === 1 && data[0] === 0x1b;
|
|
460
|
-
}
|
|
461
416
|
function isEditKey(data) {
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
: null;
|
|
465
|
-
return char === 'e' || char === 'i';
|
|
466
|
-
}
|
|
467
|
-
function isPrintableChar(data) {
|
|
468
|
-
if (data.length === 1 && data[0] >= 0x20 && data[0] < 0x7f) {
|
|
469
|
-
return String.fromCharCode(data[0]);
|
|
470
|
-
}
|
|
471
|
-
return null;
|
|
417
|
+
// Check if 'e' or 'i' key is pressed (to enter edit mode)
|
|
418
|
+
return isE(data) || (data.length === 1 && data[0] === 0x69); // 'i' = 0x69
|
|
472
419
|
}
|
|
473
420
|
// =============================================================================
|
|
474
421
|
// Document Detail Overlay V2
|
|
@@ -490,6 +437,10 @@ export class DocumentDetailOverlayV2 extends BaseOverlayV2 {
|
|
|
490
437
|
const termWidth = terminal.getTerminalWidth();
|
|
491
438
|
const contentLines = renderMarkdownSync(document.content, termWidth);
|
|
492
439
|
const rawLines = document.content.split('\n');
|
|
440
|
+
// Initialize plan-specific state
|
|
441
|
+
const isPlan = document.docType === 'plan';
|
|
442
|
+
const planStatus = isPlan ? document.status ?? 'draft' : null;
|
|
443
|
+
const availableStatuses = planStatus ? VALID_TRANSITIONS[planStatus] : [];
|
|
493
444
|
super({
|
|
494
445
|
contentLines,
|
|
495
446
|
scrollOffset: 0,
|
|
@@ -502,6 +453,10 @@ export class DocumentDetailOverlayV2 extends BaseOverlayV2 {
|
|
|
502
453
|
originalContent: document.content,
|
|
503
454
|
showSavePrompt: false,
|
|
504
455
|
saveMessage: null,
|
|
456
|
+
planStatus,
|
|
457
|
+
showStatusMenu: false,
|
|
458
|
+
statusMenuIndex: 0,
|
|
459
|
+
availableStatuses,
|
|
505
460
|
});
|
|
506
461
|
this.document = document;
|
|
507
462
|
}
|
|
@@ -537,7 +492,16 @@ export class DocumentDetailOverlayV2 extends BaseOverlayV2 {
|
|
|
537
492
|
// Header
|
|
538
493
|
const typeLabel = DOC_TYPE_LABELS[this.document.docType] || this.document.docType.toUpperCase();
|
|
539
494
|
lines.push(border);
|
|
540
|
-
|
|
495
|
+
// For plans, show status in header
|
|
496
|
+
if (this.state.planStatus) {
|
|
497
|
+
const statusLabel = PLAN_STATUS_LABELS[this.state.planStatus];
|
|
498
|
+
const statusColor = PLAN_STATUS_COLORS[this.state.planStatus];
|
|
499
|
+
const styledStatus = s[statusColor](statusLabel);
|
|
500
|
+
lines.push(` ${s.primaryBold(typeLabel)}${s.muted(' │ ')}${chalk.bold(this.document.title)} ${styledStatus}`);
|
|
501
|
+
}
|
|
502
|
+
else {
|
|
503
|
+
lines.push(` ${s.primaryBold(typeLabel)}${s.muted(' │ ')}${chalk.bold(this.document.title)}`);
|
|
504
|
+
}
|
|
541
505
|
lines.push(border);
|
|
542
506
|
// Calculate content area
|
|
543
507
|
const headerLines = 3;
|
|
@@ -579,7 +543,19 @@ export class DocumentDetailOverlayV2 extends BaseOverlayV2 {
|
|
|
579
543
|
? Math.round(((this.state.scrollOffset + contentHeight) / totalLines) * 100)
|
|
580
544
|
: 100;
|
|
581
545
|
lines.push(border);
|
|
582
|
-
|
|
546
|
+
// Show status menu if open
|
|
547
|
+
if (this.state.showStatusMenu && this.state.availableStatuses.length > 0) {
|
|
548
|
+
const statusOptions = this.state.availableStatuses.map((status, idx) => {
|
|
549
|
+
const label = PLAN_STATUS_LABELS[status];
|
|
550
|
+
return idx === this.state.statusMenuIndex ? s.primary(`[${label}]`) : s.muted(label);
|
|
551
|
+
}).join(' ');
|
|
552
|
+
lines.push(s.warning(' Change status: ') + statusOptions + s.muted(' ↑↓ Select · Enter Confirm · Esc Cancel'));
|
|
553
|
+
}
|
|
554
|
+
else {
|
|
555
|
+
// Normal footer with plan-specific hint
|
|
556
|
+
const planHint = this.state.planStatus && this.state.availableStatuses.length > 0 ? ' · s Status' : '';
|
|
557
|
+
lines.push(s.muted(` ${arrows} ${position} (${String(scrollPercent)}%) ↑↓/jk Scroll · e/i Edit${planHint} · q/Esc Back`));
|
|
558
|
+
}
|
|
583
559
|
lines.push(border);
|
|
584
560
|
return lines;
|
|
585
561
|
}
|
|
@@ -735,6 +711,10 @@ export class DocumentDetailOverlayV2 extends BaseOverlayV2 {
|
|
|
735
711
|
if (this.state.showSavePrompt) {
|
|
736
712
|
return this.handleSavePromptKey(data);
|
|
737
713
|
}
|
|
714
|
+
// Handle status menu
|
|
715
|
+
if (this.state.showStatusMenu) {
|
|
716
|
+
return this.handleStatusMenuKey(data);
|
|
717
|
+
}
|
|
738
718
|
// Handle edit mode
|
|
739
719
|
if (this.state.isEditMode) {
|
|
740
720
|
return this.handleEditModeKey(data);
|
|
@@ -746,7 +726,7 @@ export class DocumentDetailOverlayV2 extends BaseOverlayV2 {
|
|
|
746
726
|
// View Mode Key Handling
|
|
747
727
|
// ===========================================================================
|
|
748
728
|
handleViewModeKey(data) {
|
|
749
|
-
const char =
|
|
729
|
+
const char = getPrintableChar(data);
|
|
750
730
|
const keyStr = data.toString();
|
|
751
731
|
const rows = terminal.getTerminalHeight();
|
|
752
732
|
const contentHeight = rows - 6;
|
|
@@ -769,6 +749,12 @@ export class DocumentDetailOverlayV2 extends BaseOverlayV2 {
|
|
|
769
749
|
this.state.saveMessage = null;
|
|
770
750
|
return this.rerender();
|
|
771
751
|
}
|
|
752
|
+
// s - open status menu (plans only)
|
|
753
|
+
if (char === 's' && this.state.planStatus && this.state.availableStatuses.length > 0) {
|
|
754
|
+
this.state.showStatusMenu = true;
|
|
755
|
+
this.state.statusMenuIndex = 0;
|
|
756
|
+
return this.rerender();
|
|
757
|
+
}
|
|
772
758
|
// Up / k
|
|
773
759
|
if (isNavigateUp(data)) {
|
|
774
760
|
if (this.state.scrollOffset > 0) {
|
|
@@ -844,16 +830,16 @@ export class DocumentDetailOverlayV2 extends BaseOverlayV2 {
|
|
|
844
830
|
return this.exitEditMode();
|
|
845
831
|
}
|
|
846
832
|
// Navigation
|
|
847
|
-
if (
|
|
833
|
+
if (isUpArrow(data)) {
|
|
848
834
|
return this.moveCursorUp();
|
|
849
835
|
}
|
|
850
|
-
if (
|
|
836
|
+
if (isDownArrow(data)) {
|
|
851
837
|
return this.moveCursorDown();
|
|
852
838
|
}
|
|
853
|
-
if (
|
|
839
|
+
if (isLeftArrow(data)) {
|
|
854
840
|
return this.moveCursorLeft();
|
|
855
841
|
}
|
|
856
|
-
if (
|
|
842
|
+
if (isRightArrow(data)) {
|
|
857
843
|
return this.moveCursorRight();
|
|
858
844
|
}
|
|
859
845
|
if (isHome(data)) {
|
|
@@ -892,7 +878,7 @@ export class DocumentDetailOverlayV2 extends BaseOverlayV2 {
|
|
|
892
878
|
return this.insertText(' '.repeat(TAB_SIZE));
|
|
893
879
|
}
|
|
894
880
|
// Printable characters
|
|
895
|
-
const char =
|
|
881
|
+
const char = getPrintableChar(data);
|
|
896
882
|
if (char) {
|
|
897
883
|
return this.insertText(char);
|
|
898
884
|
}
|
|
@@ -902,7 +888,7 @@ export class DocumentDetailOverlayV2 extends BaseOverlayV2 {
|
|
|
902
888
|
// Save Prompt Key Handling
|
|
903
889
|
// ===========================================================================
|
|
904
890
|
handleSavePromptKey(data) {
|
|
905
|
-
const char =
|
|
891
|
+
const char = getPrintableChar(data);
|
|
906
892
|
// y = save and exit edit mode
|
|
907
893
|
if (char === 'y' || char === 'Y') {
|
|
908
894
|
this.saveDocument();
|
|
@@ -929,6 +915,61 @@ export class DocumentDetailOverlayV2 extends BaseOverlayV2 {
|
|
|
929
915
|
return this.noAction();
|
|
930
916
|
}
|
|
931
917
|
// ===========================================================================
|
|
918
|
+
// Status Menu Key Handling (Plans only)
|
|
919
|
+
// ===========================================================================
|
|
920
|
+
handleStatusMenuKey(data) {
|
|
921
|
+
// Ctrl+C closes everything
|
|
922
|
+
if (isCtrlC(data)) {
|
|
923
|
+
return this.close({ goBack: false });
|
|
924
|
+
}
|
|
925
|
+
// Escape - close status menu
|
|
926
|
+
if (isEscape(data)) {
|
|
927
|
+
this.state.showStatusMenu = false;
|
|
928
|
+
return this.rerender();
|
|
929
|
+
}
|
|
930
|
+
// Up arrow - previous status
|
|
931
|
+
if (isUpArrow(data)) {
|
|
932
|
+
if (this.state.statusMenuIndex > 0) {
|
|
933
|
+
this.state.statusMenuIndex--;
|
|
934
|
+
return this.rerender();
|
|
935
|
+
}
|
|
936
|
+
return this.noAction();
|
|
937
|
+
}
|
|
938
|
+
// Down arrow - next status
|
|
939
|
+
if (isDownArrow(data)) {
|
|
940
|
+
if (this.state.statusMenuIndex < this.state.availableStatuses.length - 1) {
|
|
941
|
+
this.state.statusMenuIndex++;
|
|
942
|
+
return this.rerender();
|
|
943
|
+
}
|
|
944
|
+
return this.noAction();
|
|
945
|
+
}
|
|
946
|
+
// Enter - confirm status change
|
|
947
|
+
if (isEnter(data)) {
|
|
948
|
+
const newStatus = this.state.availableStatuses[this.state.statusMenuIndex];
|
|
949
|
+
return this.changeStatus(newStatus);
|
|
950
|
+
}
|
|
951
|
+
return this.noAction();
|
|
952
|
+
}
|
|
953
|
+
changeStatus(newStatus) {
|
|
954
|
+
try {
|
|
955
|
+
// Update the plan status in the database
|
|
956
|
+
planRepository.update(this.document.id, { status: newStatus });
|
|
957
|
+
// Update local state
|
|
958
|
+
this.state.planStatus = newStatus;
|
|
959
|
+
this.state.availableStatuses = VALID_TRANSITIONS[newStatus];
|
|
960
|
+
this.state.showStatusMenu = false;
|
|
961
|
+
this.state.statusMenuIndex = 0;
|
|
962
|
+
// Also update the document's status field for consistency
|
|
963
|
+
this.document.status = newStatus;
|
|
964
|
+
return this.rerender();
|
|
965
|
+
}
|
|
966
|
+
catch {
|
|
967
|
+
// On error, just close the menu
|
|
968
|
+
this.state.showStatusMenu = false;
|
|
969
|
+
return this.rerender();
|
|
970
|
+
}
|
|
971
|
+
}
|
|
972
|
+
// ===========================================================================
|
|
932
973
|
// Cursor Movement
|
|
933
974
|
// ===========================================================================
|
|
934
975
|
moveCursorUp() {
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Filter Overlay V2
|
|
3
|
+
*
|
|
4
|
+
* Modal overlay for selecting which agents to show in conversation.
|
|
5
|
+
* The filter is display-only - full history is preserved.
|
|
6
|
+
*/
|
|
7
|
+
import { BaseOverlayV2 } from '../../base/index.js';
|
|
8
|
+
import type { RenderContext, OverlayAction, KeyEvent } from '../index.js';
|
|
9
|
+
export interface FilterOverlayV2Config {
|
|
10
|
+
/** All agents available for filtering */
|
|
11
|
+
agents: Array<{
|
|
12
|
+
id: string;
|
|
13
|
+
displayName: string;
|
|
14
|
+
mascot: string;
|
|
15
|
+
selected: boolean;
|
|
16
|
+
}>;
|
|
17
|
+
/** Currently filtered agent IDs (empty = show all) */
|
|
18
|
+
currentFilter: string[];
|
|
19
|
+
}
|
|
20
|
+
export type FilterOverlayV2Result = {
|
|
21
|
+
type: 'apply';
|
|
22
|
+
agentIds: string[];
|
|
23
|
+
} | {
|
|
24
|
+
type: 'cancelled';
|
|
25
|
+
};
|
|
26
|
+
interface FilterOverlayState {
|
|
27
|
+
/** Currently selected agent index */
|
|
28
|
+
selectedIndex: number;
|
|
29
|
+
/** Selection state for each agent */
|
|
30
|
+
selections: Map<string, boolean>;
|
|
31
|
+
/** Agent list */
|
|
32
|
+
agents: FilterOverlayV2Config['agents'];
|
|
33
|
+
}
|
|
34
|
+
export declare class FilterOverlayV2 extends BaseOverlayV2<FilterOverlayState, FilterOverlayV2Result> {
|
|
35
|
+
readonly type: "inline";
|
|
36
|
+
readonly id = "filter-overlay-v2";
|
|
37
|
+
constructor(config: FilterOverlayV2Config);
|
|
38
|
+
protected renderContent(context: RenderContext): string[];
|
|
39
|
+
handleKey(event: KeyEvent): OverlayAction<FilterOverlayV2Result>;
|
|
40
|
+
}
|
|
41
|
+
export {};
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Filter Overlay V2
|
|
3
|
+
*
|
|
4
|
+
* Modal overlay for selecting which agents to show in conversation.
|
|
5
|
+
* The filter is display-only - full history is preserved.
|
|
6
|
+
*/
|
|
7
|
+
import chalk from 'chalk';
|
|
8
|
+
import { BaseOverlayV2 } from '../../base/index.js';
|
|
9
|
+
import * as terminal from '../../terminal.js';
|
|
10
|
+
// =============================================================================
|
|
11
|
+
// Filter Overlay V2 Class
|
|
12
|
+
// =============================================================================
|
|
13
|
+
export class FilterOverlayV2 extends BaseOverlayV2 {
|
|
14
|
+
type = 'inline';
|
|
15
|
+
id = 'filter-overlay-v2';
|
|
16
|
+
constructor(config) {
|
|
17
|
+
// Initialize selections from config
|
|
18
|
+
const selections = new Map();
|
|
19
|
+
for (const agent of config.agents) {
|
|
20
|
+
selections.set(agent.id, agent.selected);
|
|
21
|
+
}
|
|
22
|
+
super({
|
|
23
|
+
selectedIndex: 0,
|
|
24
|
+
selections,
|
|
25
|
+
agents: config.agents,
|
|
26
|
+
});
|
|
27
|
+
this.minHeight = 8 + config.agents.length;
|
|
28
|
+
}
|
|
29
|
+
renderContent(context) {
|
|
30
|
+
const s = context.styles;
|
|
31
|
+
const lines = [];
|
|
32
|
+
const cols = terminal.getTerminalWidth();
|
|
33
|
+
const border = s.muted('─'.repeat(Math.max(1, cols - 1)));
|
|
34
|
+
// Header
|
|
35
|
+
lines.push(border);
|
|
36
|
+
lines.push(' ' + chalk.bold('Conversation Filter'));
|
|
37
|
+
lines.push(border);
|
|
38
|
+
lines.push('');
|
|
39
|
+
// Instructions
|
|
40
|
+
lines.push(s.muted(' Show messages from:'));
|
|
41
|
+
lines.push('');
|
|
42
|
+
// Agent list with checkboxes
|
|
43
|
+
for (let i = 0; i < this.state.agents.length; i++) {
|
|
44
|
+
const agent = this.state.agents[i];
|
|
45
|
+
const isSelected = i === this.state.selectedIndex;
|
|
46
|
+
const isChecked = this.state.selections.get(agent.id) ?? true;
|
|
47
|
+
const checkbox = isChecked ? s.success('[x]') : s.muted('[ ]');
|
|
48
|
+
const mascot = agent.mascot;
|
|
49
|
+
const id = `$${agent.id}`;
|
|
50
|
+
const name = `(${agent.displayName})`;
|
|
51
|
+
const line = ` ${checkbox} ${mascot} ${id} ${s.muted(name)}`;
|
|
52
|
+
if (isSelected) {
|
|
53
|
+
lines.push(s.primary(line));
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
lines.push(line);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
lines.push('');
|
|
60
|
+
// Footer with shortcuts
|
|
61
|
+
lines.push(border);
|
|
62
|
+
lines.push(s.muted(' ↑↓ Navigate · Space Toggle · a All · n None · Enter Apply · Esc Cancel'));
|
|
63
|
+
return lines;
|
|
64
|
+
}
|
|
65
|
+
handleKey(event) {
|
|
66
|
+
const { name, raw } = event;
|
|
67
|
+
// Navigation
|
|
68
|
+
if (name === 'up' || (raw.length === 3 && raw[0] === 0x1b && raw[1] === 0x5b && raw[2] === 0x41)) {
|
|
69
|
+
this.state.selectedIndex = Math.max(0, this.state.selectedIndex - 1);
|
|
70
|
+
return { type: 'render' };
|
|
71
|
+
}
|
|
72
|
+
if (name === 'down' || (raw.length === 3 && raw[0] === 0x1b && raw[1] === 0x5b && raw[2] === 0x42)) {
|
|
73
|
+
this.state.selectedIndex = Math.min(this.state.agents.length - 1, this.state.selectedIndex + 1);
|
|
74
|
+
return { type: 'render' };
|
|
75
|
+
}
|
|
76
|
+
// Toggle selection
|
|
77
|
+
if (name === 'space') {
|
|
78
|
+
const agent = this.state.agents[this.state.selectedIndex];
|
|
79
|
+
const current = this.state.selections.get(agent.id) ?? true;
|
|
80
|
+
this.state.selections.set(agent.id, !current);
|
|
81
|
+
return { type: 'render' };
|
|
82
|
+
}
|
|
83
|
+
// Select all
|
|
84
|
+
if (name === 'a') {
|
|
85
|
+
for (const agent of this.state.agents) {
|
|
86
|
+
this.state.selections.set(agent.id, true);
|
|
87
|
+
}
|
|
88
|
+
return { type: 'render' };
|
|
89
|
+
}
|
|
90
|
+
// Select none
|
|
91
|
+
if (name === 'n') {
|
|
92
|
+
for (const agent of this.state.agents) {
|
|
93
|
+
this.state.selections.set(agent.id, false);
|
|
94
|
+
}
|
|
95
|
+
return { type: 'render' };
|
|
96
|
+
}
|
|
97
|
+
// Apply
|
|
98
|
+
if (name === 'return' || name === 'enter') {
|
|
99
|
+
const selectedIds = this.state.agents
|
|
100
|
+
.filter(agent => this.state.selections.get(agent.id))
|
|
101
|
+
.map(agent => agent.id);
|
|
102
|
+
return { type: 'close', result: { type: 'apply', agentIds: selectedIds } };
|
|
103
|
+
}
|
|
104
|
+
// Cancel
|
|
105
|
+
if (name === 'escape') {
|
|
106
|
+
return { type: 'close', cancelled: true };
|
|
107
|
+
}
|
|
108
|
+
return { type: 'none' };
|
|
109
|
+
}
|
|
110
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Games Overlay V2
|
|
3
|
+
*
|
|
4
|
+
* Arcade menu for the games easter egg.
|
|
5
|
+
*/
|
|
6
|
+
import { BaseOverlayV2 } from '../../base/index.js';
|
|
7
|
+
import type { RenderContext, OverlayAction, KeyEvent } from '../types.js';
|
|
8
|
+
import { type GameInfo } from '../../../games/index.js';
|
|
9
|
+
export interface GamesOverlayV2Result {
|
|
10
|
+
action: 'close' | 'play';
|
|
11
|
+
game?: GameInfo;
|
|
12
|
+
}
|
|
13
|
+
interface GamesState {
|
|
14
|
+
selectedIndex: number;
|
|
15
|
+
showInsertCoin: boolean;
|
|
16
|
+
gameToPlay: GameInfo | null;
|
|
17
|
+
gotDailyBonus: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface GamesOverlayV2Options {
|
|
20
|
+
gotDailyBonus?: boolean;
|
|
21
|
+
}
|
|
22
|
+
export declare class GamesOverlayV2 extends BaseOverlayV2<GamesState, GamesOverlayV2Result> {
|
|
23
|
+
readonly type: "inline";
|
|
24
|
+
readonly id = "games";
|
|
25
|
+
constructor(options?: GamesOverlayV2Options);
|
|
26
|
+
protected renderContent(ctx: RenderContext): string[];
|
|
27
|
+
private renderGamesList;
|
|
28
|
+
private renderInsertCoinScreen;
|
|
29
|
+
handleKey(event: KeyEvent): OverlayAction<GamesOverlayV2Result>;
|
|
30
|
+
}
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Games Overlay V2
|
|
3
|
+
*
|
|
4
|
+
* Arcade menu for the games easter egg.
|
|
5
|
+
*/
|
|
6
|
+
import { BaseOverlayV2 } from '../../base/index.js';
|
|
7
|
+
import { getAvailableGames, getCoins, hasCoins, formatCoinsDisplay, getBestScore, formatScore, COIN_COST_START_GAME, } from '../../../games/index.js';
|
|
8
|
+
export class GamesOverlayV2 extends BaseOverlayV2 {
|
|
9
|
+
type = 'inline';
|
|
10
|
+
id = 'games';
|
|
11
|
+
constructor(options) {
|
|
12
|
+
super({
|
|
13
|
+
selectedIndex: 0,
|
|
14
|
+
showInsertCoin: false,
|
|
15
|
+
gameToPlay: null,
|
|
16
|
+
gotDailyBonus: options?.gotDailyBonus ?? false,
|
|
17
|
+
});
|
|
18
|
+
this.minHeight = 20;
|
|
19
|
+
}
|
|
20
|
+
renderContent(ctx) {
|
|
21
|
+
const s = ctx.styles;
|
|
22
|
+
const games = getAvailableGames();
|
|
23
|
+
const coins = getCoins();
|
|
24
|
+
if (this.state.showInsertCoin) {
|
|
25
|
+
return this.renderInsertCoinScreen(s, coins);
|
|
26
|
+
}
|
|
27
|
+
return this.renderGamesList(s, games, coins);
|
|
28
|
+
}
|
|
29
|
+
renderGamesList(s, games, coins) {
|
|
30
|
+
const lines = [];
|
|
31
|
+
// Title
|
|
32
|
+
lines.push('');
|
|
33
|
+
lines.push(s.primaryBold(' ╔═══════════════════════════════════════════════════╗'));
|
|
34
|
+
lines.push(s.primaryBold(' ║ A R C A D E ║'));
|
|
35
|
+
lines.push(s.primaryBold(' ╚═══════════════════════════════════════════════════╝'));
|
|
36
|
+
// Daily bonus notification
|
|
37
|
+
if (this.state.gotDailyBonus) {
|
|
38
|
+
lines.push(s.success(' 🎁 Daily bonus: +1 coin!'));
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
lines.push('');
|
|
42
|
+
}
|
|
43
|
+
// Games list
|
|
44
|
+
lines.push(s.muted(' ┌─────────────────────────────────────────────────┐'));
|
|
45
|
+
for (let i = 0; i < games.length; i++) {
|
|
46
|
+
const game = games[i];
|
|
47
|
+
const isSelected = i === this.state.selectedIndex;
|
|
48
|
+
const cursor = isSelected ? s.primary('❯') : ' ';
|
|
49
|
+
if (game.available) {
|
|
50
|
+
const bestScore = getBestScore(game.id);
|
|
51
|
+
const scoreText = bestScore ? `Best: ${formatScore(bestScore.score)}` : '';
|
|
52
|
+
if (isSelected) {
|
|
53
|
+
lines.push(` │ ${cursor} ${s.primaryBold(game.name.padEnd(18))} ${s.muted(scoreText.padStart(20))} │`);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
lines.push(` │ ${cursor} ${s.primary(game.name.padEnd(18))} ${s.muted(scoreText.padStart(20))} │`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
// Coming soon
|
|
61
|
+
lines.push(` │ ${cursor} ${s.muted(game.name.padEnd(18))} ${s.muted('Coming Soon...'.padStart(20))} │`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
lines.push(s.muted(' └─────────────────────────────────────────────────┘'));
|
|
65
|
+
lines.push('');
|
|
66
|
+
// Coins display
|
|
67
|
+
const coinsDisplay = formatCoinsDisplay(coins, 10);
|
|
68
|
+
lines.push(` ${s.warning('COINS:')} ${s.primary(coinsDisplay)} (${String(coins)})`);
|
|
69
|
+
lines.push('');
|
|
70
|
+
// Controls
|
|
71
|
+
lines.push(s.muted(' ↑↓ Select Enter Play Q Exit'));
|
|
72
|
+
lines.push('');
|
|
73
|
+
return lines;
|
|
74
|
+
}
|
|
75
|
+
renderInsertCoinScreen(s, coins) {
|
|
76
|
+
const lines = [];
|
|
77
|
+
lines.push('');
|
|
78
|
+
lines.push('');
|
|
79
|
+
lines.push('');
|
|
80
|
+
lines.push(s.warning(' ╔═════════════════════════════╗'));
|
|
81
|
+
lines.push(s.warning(' ║ ║'));
|
|
82
|
+
lines.push(s.warning(' ║ I N S E R T C O I N ║'));
|
|
83
|
+
lines.push(s.warning(' ║ ║'));
|
|
84
|
+
lines.push(s.warning(' ╚═════════════════════════════╝'));
|
|
85
|
+
lines.push('');
|
|
86
|
+
lines.push(` ${s.muted(`You have ${String(coins)} coin${coins !== 1 ? 's' : ''}.`)}`);
|
|
87
|
+
lines.push('');
|
|
88
|
+
lines.push(s.muted(' Earn coins by:'));
|
|
89
|
+
lines.push(s.muted(' • Completing work items'));
|
|
90
|
+
lines.push(s.muted(' • Creating projects'));
|
|
91
|
+
lines.push(s.muted(' • Daily usage'));
|
|
92
|
+
lines.push('');
|
|
93
|
+
lines.push(s.muted(' [Press any key to go back]'));
|
|
94
|
+
lines.push('');
|
|
95
|
+
return lines;
|
|
96
|
+
}
|
|
97
|
+
handleKey(event) {
|
|
98
|
+
const games = getAvailableGames();
|
|
99
|
+
// Handle insert coin screen
|
|
100
|
+
if (this.state.showInsertCoin) {
|
|
101
|
+
this.state.showInsertCoin = false;
|
|
102
|
+
return this.rerender();
|
|
103
|
+
}
|
|
104
|
+
// Navigation
|
|
105
|
+
if (this.isUpKey(event)) {
|
|
106
|
+
this.state.selectedIndex = Math.max(0, this.state.selectedIndex - 1);
|
|
107
|
+
return this.rerender();
|
|
108
|
+
}
|
|
109
|
+
if (this.isDownKey(event)) {
|
|
110
|
+
this.state.selectedIndex = Math.min(games.length - 1, this.state.selectedIndex + 1);
|
|
111
|
+
return this.rerender();
|
|
112
|
+
}
|
|
113
|
+
// Play game
|
|
114
|
+
if (this.isEnterKey(event)) {
|
|
115
|
+
const game = games[this.state.selectedIndex];
|
|
116
|
+
if (!game.available) {
|
|
117
|
+
// Game not available yet
|
|
118
|
+
return this.rerender();
|
|
119
|
+
}
|
|
120
|
+
// Check coins (but don't spend yet - game will spend when actually starting)
|
|
121
|
+
if (!hasCoins(COIN_COST_START_GAME)) {
|
|
122
|
+
this.state.showInsertCoin = true;
|
|
123
|
+
return this.rerender();
|
|
124
|
+
}
|
|
125
|
+
// Launch game (coin will be spent after pre-game screen)
|
|
126
|
+
this.state.gameToPlay = game;
|
|
127
|
+
return this.close({ action: 'play', game: game });
|
|
128
|
+
}
|
|
129
|
+
// Close
|
|
130
|
+
if (this.isCloseKey(event)) {
|
|
131
|
+
return this.close({ action: 'close' });
|
|
132
|
+
}
|
|
133
|
+
return this.noAction();
|
|
134
|
+
}
|
|
135
|
+
}
|
|
@@ -11,6 +11,28 @@
|
|
|
11
11
|
* - Works with TerminalUI's overlay management
|
|
12
12
|
*/
|
|
13
13
|
import { TabbedListOverlayV2, BaseScreen } from '../../base/index.js';
|
|
14
|
+
/** Command detail info returned by getCommand(). */
|
|
15
|
+
interface CommandDetail {
|
|
16
|
+
name: string;
|
|
17
|
+
description: string;
|
|
18
|
+
details?: string;
|
|
19
|
+
aliases?: string[];
|
|
20
|
+
examples?: {
|
|
21
|
+
code: string;
|
|
22
|
+
description?: string;
|
|
23
|
+
}[];
|
|
24
|
+
interactions?: string[];
|
|
25
|
+
}
|
|
26
|
+
/** Options for creating HelpOverlayV2. */
|
|
27
|
+
export interface HelpOverlayV2Options {
|
|
28
|
+
/** Get all commands for the help list. */
|
|
29
|
+
getHelpCommands: () => {
|
|
30
|
+
name: string;
|
|
31
|
+
description: string;
|
|
32
|
+
}[];
|
|
33
|
+
/** Get detailed info for a single command. */
|
|
34
|
+
getCommand: (name: string) => CommandDetail | undefined;
|
|
35
|
+
}
|
|
14
36
|
interface HelpItem {
|
|
15
37
|
name: string;
|
|
16
38
|
description: string;
|
|
@@ -18,8 +40,8 @@ interface HelpItem {
|
|
|
18
40
|
/** For custom commands */
|
|
19
41
|
prompt?: string;
|
|
20
42
|
location?: 'project' | 'personal';
|
|
21
|
-
/**
|
|
22
|
-
|
|
43
|
+
/** Command name for built-in commands (without leading /) */
|
|
44
|
+
commandName?: string;
|
|
23
45
|
}
|
|
24
46
|
/**
|
|
25
47
|
* Help overlay using the new Overlay interface.
|
|
@@ -28,7 +50,8 @@ interface HelpItem {
|
|
|
28
50
|
export declare class HelpOverlayV2 extends TabbedListOverlayV2<HelpItem> {
|
|
29
51
|
readonly type: "inline";
|
|
30
52
|
readonly id = "help-overlay-v2";
|
|
31
|
-
|
|
53
|
+
private readonly getCommandDetail;
|
|
54
|
+
constructor(options: HelpOverlayV2Options);
|
|
32
55
|
protected createDetailScreen(item: HelpItem): BaseScreen | null;
|
|
33
56
|
}
|
|
34
57
|
export {};
|