@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
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
*/
|
|
21
21
|
import { getStyles } from '../themes/index.js';
|
|
22
22
|
import { debugRender } from '../utils/debug-log.js';
|
|
23
|
+
import { formatTokens, truncate } from './base/index.js';
|
|
23
24
|
// =============================================================================
|
|
24
25
|
// Formatting Helpers
|
|
25
26
|
// =============================================================================
|
|
@@ -35,29 +36,12 @@ function formatDuration(ms) {
|
|
|
35
36
|
const remainingSeconds = Math.floor(seconds % 60);
|
|
36
37
|
return `${String(minutes)}m ${String(remainingSeconds)}s`;
|
|
37
38
|
}
|
|
38
|
-
/**
|
|
39
|
-
* Format token count (e.g., "18.1k", "500")
|
|
40
|
-
*/
|
|
41
|
-
function formatTokens(tokens) {
|
|
42
|
-
if (tokens >= 1000) {
|
|
43
|
-
return `${(tokens / 1000).toFixed(1)}k`;
|
|
44
|
-
}
|
|
45
|
-
return tokens.toString();
|
|
46
|
-
}
|
|
47
39
|
/**
|
|
48
40
|
* Capitalize first letter
|
|
49
41
|
*/
|
|
50
42
|
function capitalize(str) {
|
|
51
43
|
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
52
44
|
}
|
|
53
|
-
/**
|
|
54
|
-
* Truncate string to max length with ellipsis
|
|
55
|
-
*/
|
|
56
|
-
function truncate(str, maxLen) {
|
|
57
|
-
if (str.length <= maxLen)
|
|
58
|
-
return str;
|
|
59
|
-
return str.slice(0, maxLen - 1) + '…';
|
|
60
|
-
}
|
|
61
45
|
// =============================================================================
|
|
62
46
|
// Tree Characters (Unicode box drawing)
|
|
63
47
|
// =============================================================================
|
|
@@ -264,7 +248,7 @@ export class SubagentRenderer {
|
|
|
264
248
|
if (agent.toolCount > 1) {
|
|
265
249
|
lines.push(s.muted(` +${String(agent.toolCount - 1)} more tool uses (ctrl+o to expand)`));
|
|
266
250
|
}
|
|
267
|
-
|
|
251
|
+
// ctrl+b background: coming soon
|
|
268
252
|
}
|
|
269
253
|
return lines;
|
|
270
254
|
}
|
|
@@ -317,7 +301,7 @@ export class SubagentRenderer {
|
|
|
317
301
|
}
|
|
318
302
|
// Footer hint for running agents
|
|
319
303
|
if (counts.running > 0) {
|
|
320
|
-
|
|
304
|
+
// ctrl+b background: coming soon
|
|
321
305
|
}
|
|
322
306
|
return lines;
|
|
323
307
|
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Standalone utility functions for input text formatting and autocomplete.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from terminal-ui.ts for modularity.
|
|
5
|
+
* These are pure functions with no class dependencies.
|
|
6
|
+
*/
|
|
7
|
+
import type { CommandOption } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Format input text with syntax highlighting for special prefixes.
|
|
10
|
+
* - $agent references: bold + secondary color
|
|
11
|
+
* - @path references: secondary color
|
|
12
|
+
* - /commands: primary color
|
|
13
|
+
*/
|
|
14
|
+
export declare function formatInputText(text: string): string;
|
|
15
|
+
/**
|
|
16
|
+
* Calculate fuzzy match score for a query against a target string.
|
|
17
|
+
* Higher score = better match. Returns -1 if no match.
|
|
18
|
+
*/
|
|
19
|
+
export declare function fuzzyMatchScore(query: string, target: string): number;
|
|
20
|
+
/**
|
|
21
|
+
* Filter and rank commands matching input using fuzzy matching
|
|
22
|
+
*/
|
|
23
|
+
export declare function filterCommands(input: string, commands: CommandOption[]): CommandOption[];
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Standalone utility functions for input text formatting and autocomplete.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from terminal-ui.ts for modularity.
|
|
5
|
+
* These are pure functions with no class dependencies.
|
|
6
|
+
*/
|
|
7
|
+
import { Chalk } from 'chalk';
|
|
8
|
+
import { getStyles } from '../themes/index.js';
|
|
9
|
+
// Force color output (level 3 = 24-bit true color)
|
|
10
|
+
const chalk = new Chalk({ level: 3 });
|
|
11
|
+
// =============================================================================
|
|
12
|
+
// Input Text Formatting
|
|
13
|
+
// =============================================================================
|
|
14
|
+
/**
|
|
15
|
+
* Format input text with syntax highlighting for special prefixes.
|
|
16
|
+
* - $agent references: bold + secondary color
|
|
17
|
+
* - @path references: secondary color
|
|
18
|
+
* - /commands: primary color
|
|
19
|
+
*/
|
|
20
|
+
export function formatInputText(text) {
|
|
21
|
+
const s = getStyles();
|
|
22
|
+
let result = text;
|
|
23
|
+
// Format $agent references - bold + secondary
|
|
24
|
+
// Match $word at word boundaries (not inside other text)
|
|
25
|
+
result = result.replace(/(?<![$\w])\$([a-zA-Z_][a-zA-Z0-9_]*)\b/g, (_match, agentId) => chalk.bold(s.secondary(`$${agentId}`)));
|
|
26
|
+
// Format @path references - secondary (not bold, paths can be long)
|
|
27
|
+
// Match @word or @path/to/file patterns
|
|
28
|
+
result = result.replace(/(?<![@\w])@([\w./-]+)/g, (_match, path) => s.secondary(`@${path}`));
|
|
29
|
+
// Format /commands at start of input - primary color
|
|
30
|
+
// Only match at start of line (after optional whitespace)
|
|
31
|
+
result = result.replace(/^(\s*)(\/[a-zA-Z][a-zA-Z0-9_-]*)/g, (_match, space, cmd) => space + s.primary(cmd));
|
|
32
|
+
return result;
|
|
33
|
+
}
|
|
34
|
+
// =============================================================================
|
|
35
|
+
// Fuzzy Matching
|
|
36
|
+
// =============================================================================
|
|
37
|
+
/**
|
|
38
|
+
* Calculate fuzzy match score for a query against a target string.
|
|
39
|
+
* Higher score = better match. Returns -1 if no match.
|
|
40
|
+
*/
|
|
41
|
+
export function fuzzyMatchScore(query, target) {
|
|
42
|
+
const queryLower = query.toLowerCase();
|
|
43
|
+
const targetLower = target.toLowerCase();
|
|
44
|
+
// Exact prefix match - highest priority (score 1000+)
|
|
45
|
+
if (targetLower.startsWith(queryLower)) {
|
|
46
|
+
return 1000 + (100 - target.length); // Shorter commands rank higher
|
|
47
|
+
}
|
|
48
|
+
// Contiguous substring match - high priority (score 500+)
|
|
49
|
+
if (targetLower.includes(queryLower)) {
|
|
50
|
+
const index = targetLower.indexOf(queryLower);
|
|
51
|
+
return 500 + (100 - index); // Earlier matches rank higher
|
|
52
|
+
}
|
|
53
|
+
// Fuzzy match - characters appear in order (score 100+)
|
|
54
|
+
let queryIdx = 0;
|
|
55
|
+
let consecutiveBonus = 0;
|
|
56
|
+
let lastMatchIdx = -1;
|
|
57
|
+
for (let i = 0; i < targetLower.length && queryIdx < queryLower.length; i++) {
|
|
58
|
+
if (targetLower[i] === queryLower[queryIdx]) {
|
|
59
|
+
if (lastMatchIdx === i - 1) {
|
|
60
|
+
consecutiveBonus += 10;
|
|
61
|
+
}
|
|
62
|
+
lastMatchIdx = i;
|
|
63
|
+
queryIdx++;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
if (queryIdx === queryLower.length) {
|
|
67
|
+
return 100 + consecutiveBonus + (100 - target.length);
|
|
68
|
+
}
|
|
69
|
+
return -1;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Filter and rank commands matching input using fuzzy matching
|
|
73
|
+
*/
|
|
74
|
+
export function filterCommands(input, commands) {
|
|
75
|
+
const scored = commands
|
|
76
|
+
.map((cmd) => ({
|
|
77
|
+
cmd,
|
|
78
|
+
score: fuzzyMatchScore(input, cmd.command),
|
|
79
|
+
}))
|
|
80
|
+
.filter((item) => item.score >= 0);
|
|
81
|
+
scored.sort((a, b) => b.score - a.score);
|
|
82
|
+
return scored.map((item) => item.cmd);
|
|
83
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure line-building utility functions for TerminalUI.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from terminal-ui.ts for modularity.
|
|
5
|
+
* These are pure functions with no class dependencies.
|
|
6
|
+
*/
|
|
7
|
+
import type { TodoItem } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Format a duration in milliseconds to a human-readable string.
|
|
10
|
+
* e.g. 5000 → "5s", 90000 → "1m 30s"
|
|
11
|
+
*/
|
|
12
|
+
export declare function formatDuration(ms: number): string;
|
|
13
|
+
/**
|
|
14
|
+
* Build a single todo line with task number prefix, icon, content,
|
|
15
|
+
* optional owner badge, and blocked-by suffix.
|
|
16
|
+
*/
|
|
17
|
+
export declare function buildTodoLine(todo: TodoItem, taskNumber?: number): string;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure line-building utility functions for TerminalUI.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from terminal-ui.ts for modularity.
|
|
5
|
+
* These are pure functions with no class dependencies.
|
|
6
|
+
*/
|
|
7
|
+
import { getStyles } from '../themes/index.js';
|
|
8
|
+
/**
|
|
9
|
+
* Format a duration in milliseconds to a human-readable string.
|
|
10
|
+
* e.g. 5000 → "5s", 90000 → "1m 30s"
|
|
11
|
+
*/
|
|
12
|
+
export function formatDuration(ms) {
|
|
13
|
+
const seconds = Math.floor(ms / 1000);
|
|
14
|
+
if (seconds < 60) {
|
|
15
|
+
return `${String(seconds)}s`;
|
|
16
|
+
}
|
|
17
|
+
const minutes = Math.floor(seconds / 60);
|
|
18
|
+
const remainingSeconds = seconds % 60;
|
|
19
|
+
return `${String(minutes)}m ${String(remainingSeconds)}s`;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Build a single todo line with task number prefix, icon, content,
|
|
23
|
+
* optional owner badge, and blocked-by suffix.
|
|
24
|
+
*/
|
|
25
|
+
export function buildTodoLine(todo, taskNumber) {
|
|
26
|
+
const s = getStyles();
|
|
27
|
+
const icon = todo.status === 'completed' ? '✓' :
|
|
28
|
+
todo.status === 'in_progress' ? '→' : '☐';
|
|
29
|
+
const style = todo.status === 'completed' ? s.muted :
|
|
30
|
+
todo.status === 'in_progress' ? s.info : s.muted;
|
|
31
|
+
// Task number prefix (e.g., "#1 ")
|
|
32
|
+
const prefix = taskNumber != null ? `#${String(taskNumber)} ` : '';
|
|
33
|
+
// Owner badge (skip for completed items)
|
|
34
|
+
const ownerBadge = todo.owner && todo.status !== 'completed'
|
|
35
|
+
? s.muted(` @${todo.owner}`)
|
|
36
|
+
: '';
|
|
37
|
+
// Blocked-by suffix (skip for completed items)
|
|
38
|
+
const blockedSuffix = todo.blockedBy && todo.blockedBy.length > 0 && todo.status !== 'completed'
|
|
39
|
+
? s.muted(` › blocked by ${todo.blockedBy.map((n) => `#${String(n)}`).join(', ')}`)
|
|
40
|
+
: '';
|
|
41
|
+
return style(`${prefix}${icon} ${todo.content}`) + ownerBadge + blockedSuffix;
|
|
42
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Render a single PrintableItem to the console.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from terminal-ui.ts for modularity.
|
|
5
|
+
* This is a nearly-pure function — the only side effect is console.log output.
|
|
6
|
+
* The 'interrupted' case returns a suggestion string instead of calling setSuggestion().
|
|
7
|
+
*/
|
|
8
|
+
import type { PrintableItem, TerminalUIConfig } from './terminal-types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Render a single item to the console.
|
|
11
|
+
* Config-aware: respects verbose, showMascot settings.
|
|
12
|
+
*
|
|
13
|
+
* @returns suggestion string for 'interrupted' items, null otherwise.
|
|
14
|
+
* Caller should pass the suggestion to setSuggestion() if non-null.
|
|
15
|
+
*/
|
|
16
|
+
export declare function renderItem(item: PrintableItem, config: TerminalUIConfig): string | null;
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Render a single PrintableItem to the console.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from terminal-ui.ts for modularity.
|
|
5
|
+
* This is a nearly-pure function — the only side effect is console.log output.
|
|
6
|
+
* The 'interrupted' case returns a suggestion string instead of calling setSuggestion().
|
|
7
|
+
*/
|
|
8
|
+
import * as terminal from './terminal.js';
|
|
9
|
+
import { getStyles } from '../themes/index.js';
|
|
10
|
+
import { renderMarkdown } from './conversation.js';
|
|
11
|
+
import { MASCOT } from './terminal-types.js';
|
|
12
|
+
/**
|
|
13
|
+
* Render a single item to the console.
|
|
14
|
+
* Config-aware: respects verbose, showMascot settings.
|
|
15
|
+
*
|
|
16
|
+
* @returns suggestion string for 'interrupted' items, null otherwise.
|
|
17
|
+
* Caller should pass the suggestion to setSuggestion() if non-null.
|
|
18
|
+
*/
|
|
19
|
+
export function renderItem(item, config) {
|
|
20
|
+
const s = getStyles();
|
|
21
|
+
switch (item.type) {
|
|
22
|
+
case 'user-message':
|
|
23
|
+
console.log('');
|
|
24
|
+
console.log(s.primaryBold('> ') + item.text);
|
|
25
|
+
console.log(''); // Trailing blank for separation
|
|
26
|
+
break;
|
|
27
|
+
case 'agent-text': {
|
|
28
|
+
// Render markdown for proper formatting (headers, lists, bold, code, etc.)
|
|
29
|
+
const rendered = renderMarkdown(item.text);
|
|
30
|
+
// Prefix agent messages with mascot expression (if enabled)
|
|
31
|
+
if (config.showMascot) {
|
|
32
|
+
// Expression can be a key ('success', 'neutral') or a direct mascot string ('[◈_◈]')
|
|
33
|
+
let expr;
|
|
34
|
+
if (!item.expression) {
|
|
35
|
+
expr = MASCOT.neutral;
|
|
36
|
+
}
|
|
37
|
+
else if (item.expression.startsWith('[')) {
|
|
38
|
+
// Direct mascot string from team agent
|
|
39
|
+
expr = item.expression;
|
|
40
|
+
}
|
|
41
|
+
else if (item.expression in MASCOT) {
|
|
42
|
+
// Key lookup in MASCOT object
|
|
43
|
+
expr = MASCOT[item.expression];
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
// Unknown expression key, use neutral
|
|
47
|
+
expr = MASCOT.neutral;
|
|
48
|
+
}
|
|
49
|
+
// Only prefix the first line with mascot
|
|
50
|
+
const lines = rendered.split('\n');
|
|
51
|
+
if (lines.length > 0) {
|
|
52
|
+
console.log(s.primary(expr) + s.muted(' > ') + lines[0]);
|
|
53
|
+
for (let i = 1; i < lines.length; i++) {
|
|
54
|
+
console.log(lines[i]);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
console.log(rendered);
|
|
60
|
+
}
|
|
61
|
+
console.log(''); // Trailing blank for separation
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
case 'thinking':
|
|
65
|
+
// Only show thinking in verbose mode
|
|
66
|
+
if (config.verbose) {
|
|
67
|
+
console.log(s.muted(`∴ Thinking…`));
|
|
68
|
+
console.log('');
|
|
69
|
+
// Indent thinking text
|
|
70
|
+
const lines = item.text.split('\n');
|
|
71
|
+
for (const line of lines) {
|
|
72
|
+
console.log(s.muted(` ${line}`));
|
|
73
|
+
}
|
|
74
|
+
console.log('');
|
|
75
|
+
}
|
|
76
|
+
// If not verbose, skip entirely (but still stored in history)
|
|
77
|
+
break;
|
|
78
|
+
case 'tool-start': {
|
|
79
|
+
// Truncate long params (e.g., long bash commands)
|
|
80
|
+
const maxLen = Math.min(60, terminal.getTerminalWidth() - 15);
|
|
81
|
+
let params = item.params;
|
|
82
|
+
// Handle multi-line params
|
|
83
|
+
const nlIdx = params.indexOf('\n');
|
|
84
|
+
if (nlIdx !== -1) {
|
|
85
|
+
const first = params.slice(0, nlIdx).trim();
|
|
86
|
+
const count = params.split('\n').length;
|
|
87
|
+
params = first.length > 0 ? `${first}… (${String(count)} lines)` : `(${String(count)} line script)`;
|
|
88
|
+
}
|
|
89
|
+
// Truncate if still too long
|
|
90
|
+
if (params.length > maxLen) {
|
|
91
|
+
params = params.slice(0, maxLen) + '…';
|
|
92
|
+
}
|
|
93
|
+
console.log(s.info(`● ${item.name}`) + s.muted(`(${params})`));
|
|
94
|
+
break;
|
|
95
|
+
}
|
|
96
|
+
case 'tool-result': {
|
|
97
|
+
// Truncate long params (e.g., long bash commands)
|
|
98
|
+
const maxParamsLen = Math.min(60, terminal.getTerminalWidth() - 15);
|
|
99
|
+
let paramsDisplay = item.params;
|
|
100
|
+
// Handle multi-line params (show first line + count)
|
|
101
|
+
const newlineIdx = paramsDisplay.indexOf('\n');
|
|
102
|
+
if (newlineIdx !== -1) {
|
|
103
|
+
const firstLine = paramsDisplay.slice(0, newlineIdx).trim();
|
|
104
|
+
const lineCount = paramsDisplay.split('\n').length;
|
|
105
|
+
paramsDisplay = firstLine.length > 0
|
|
106
|
+
? `${firstLine}… (${String(lineCount)} lines)`
|
|
107
|
+
: `(${String(lineCount)} line script)`;
|
|
108
|
+
}
|
|
109
|
+
// Truncate if still too long
|
|
110
|
+
if (paramsDisplay.length > maxParamsLen) {
|
|
111
|
+
paramsDisplay = paramsDisplay.slice(0, maxParamsLen) + '…';
|
|
112
|
+
}
|
|
113
|
+
console.log(s.info(`● ${item.name}`) + s.muted(`(${paramsDisplay})`));
|
|
114
|
+
// Diff lines: render directly (already ANSI-formatted by diff.ts)
|
|
115
|
+
if (item.diffLines && item.diffLines.length > 0) {
|
|
116
|
+
const maxDiffPreview = 10;
|
|
117
|
+
if (config.verbose || item.diffLines.length <= maxDiffPreview) {
|
|
118
|
+
for (const line of item.diffLines) {
|
|
119
|
+
console.log(` ${line}`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
for (let i = 0; i < maxDiffPreview; i++) {
|
|
124
|
+
console.log(` ${item.diffLines[i]}`);
|
|
125
|
+
}
|
|
126
|
+
const hidden = item.diffLines.length - maxDiffPreview;
|
|
127
|
+
console.log(s.muted(` … +${String(hidden)} lines (ctrl+o to expand)`));
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
else if (item.content) {
|
|
131
|
+
const contentLines = item.content.split('\n').filter((l) => l.length > 0);
|
|
132
|
+
const maxPreviewLines = 3;
|
|
133
|
+
if (config.verbose) {
|
|
134
|
+
// Verbose: show all lines
|
|
135
|
+
for (const line of contentLines) {
|
|
136
|
+
console.log(s.muted(` ⎿ ${line}`));
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
else if (contentLines.length > 0) {
|
|
140
|
+
// Compact: show first few lines + hidden count
|
|
141
|
+
const previewLines = contentLines.slice(0, maxPreviewLines);
|
|
142
|
+
const hiddenCount = contentLines.length - maxPreviewLines;
|
|
143
|
+
for (let i = 0; i < previewLines.length; i++) {
|
|
144
|
+
if (i === 0) {
|
|
145
|
+
console.log(s.muted(` ⎿ ${previewLines[i]}`));
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
console.log(s.muted(` ${previewLines[i]}`));
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
if (hiddenCount > 0) {
|
|
152
|
+
console.log(s.muted(` … +${String(hiddenCount)} lines`) + s.muted(' (ctrl+o to expand)'));
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
// No output lines
|
|
157
|
+
const expandHint = s.muted(' (ctrl+o to expand)');
|
|
158
|
+
if (item.success === false) {
|
|
159
|
+
console.log(s.error(` ⎿ ${item.summary}`) + expandHint);
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
console.log(s.muted(` ⎿ ${item.summary}`) + expandHint);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
// No content, just show summary
|
|
168
|
+
if (item.success === false) {
|
|
169
|
+
console.log(s.error(` ⎿ ${item.summary}`));
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
console.log(s.muted(` ⎿ ${item.summary}`));
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
console.log('');
|
|
176
|
+
break;
|
|
177
|
+
}
|
|
178
|
+
case 'tool-error': {
|
|
179
|
+
// Truncate long params
|
|
180
|
+
const maxErrLen = Math.min(60, terminal.getTerminalWidth() - 15);
|
|
181
|
+
let errParams = item.params;
|
|
182
|
+
const errNlIdx = errParams.indexOf('\n');
|
|
183
|
+
if (errNlIdx !== -1) {
|
|
184
|
+
const errFirst = errParams.slice(0, errNlIdx).trim();
|
|
185
|
+
const errCount = errParams.split('\n').length;
|
|
186
|
+
errParams = errFirst.length > 0 ? `${errFirst}… (${String(errCount)} lines)` : `(${String(errCount)} line script)`;
|
|
187
|
+
}
|
|
188
|
+
if (errParams.length > maxErrLen) {
|
|
189
|
+
errParams = errParams.slice(0, maxErrLen) + '…';
|
|
190
|
+
}
|
|
191
|
+
console.log(s.info(`● ${item.name}`) + s.muted(`(${errParams})`));
|
|
192
|
+
console.log(s.error(` ⎿ Error: ${item.error}`));
|
|
193
|
+
console.log('');
|
|
194
|
+
break;
|
|
195
|
+
}
|
|
196
|
+
case 'interrupted': {
|
|
197
|
+
// Show what was ongoing (if provided)
|
|
198
|
+
if (item.action) {
|
|
199
|
+
console.log(s.info(`● ${item.action}`));
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
// No action means interrupted right after user message.
|
|
203
|
+
// Move cursor up to consume the trailing blank from user-message.
|
|
204
|
+
//
|
|
205
|
+
// ⚠️ WARNING: This cursor manipulation is fragile!
|
|
206
|
+
// It assumes the previous item was user-message which adds a trailing blank.
|
|
207
|
+
// If we add items that don't add trailing blanks, or if the rendering
|
|
208
|
+
// order changes, this could cause visual artifacts (overwriting content).
|
|
209
|
+
// If issues arise, consider tracking the last printed item type instead.
|
|
210
|
+
process.stdout.write('\x1b[1A'); // Move up one line
|
|
211
|
+
}
|
|
212
|
+
// Show interrupted line with mascot
|
|
213
|
+
const suggestion = item.suggestion ?? 'What should I do instead?';
|
|
214
|
+
console.log(s.warning(` ⎿ ${MASCOT.confused} Interrupted - ${suggestion}`));
|
|
215
|
+
console.log('');
|
|
216
|
+
// Return suggestion so caller can set it as ghost text
|
|
217
|
+
return suggestion;
|
|
218
|
+
}
|
|
219
|
+
case 'error':
|
|
220
|
+
console.log(s.error(`${MASCOT.error} ${item.message}`));
|
|
221
|
+
console.log('');
|
|
222
|
+
break;
|
|
223
|
+
case 'success':
|
|
224
|
+
console.log(s.success(`${MASCOT.success} ${item.message}`));
|
|
225
|
+
console.log('');
|
|
226
|
+
break;
|
|
227
|
+
case 'info':
|
|
228
|
+
console.log(s.info(item.message));
|
|
229
|
+
console.log('');
|
|
230
|
+
break;
|
|
231
|
+
case 'warning':
|
|
232
|
+
console.log(s.warning(item.message));
|
|
233
|
+
console.log('');
|
|
234
|
+
break;
|
|
235
|
+
case 'turn-summary': {
|
|
236
|
+
// Compact summary line: ── 45s · ↓ 2.3k ↑ 1.1k · 5 tools ──
|
|
237
|
+
const line = s.muted(`── ${item.parts.join(' · ')} ──`);
|
|
238
|
+
console.log(line);
|
|
239
|
+
console.log('');
|
|
240
|
+
break;
|
|
241
|
+
}
|
|
242
|
+
case 'raw':
|
|
243
|
+
console.log(item.text);
|
|
244
|
+
break;
|
|
245
|
+
case 'raw-lines':
|
|
246
|
+
for (const line of item.lines) {
|
|
247
|
+
console.log(line);
|
|
248
|
+
}
|
|
249
|
+
break;
|
|
250
|
+
case 'background-agent': {
|
|
251
|
+
// Background agent output with mascot label
|
|
252
|
+
// Format: [◈_◈] $arch: text - mascot followed by agent reference
|
|
253
|
+
const bgLabel = s.muted(`${item.mascot} $${item.agentId}:`);
|
|
254
|
+
// Render markdown for proper formatting
|
|
255
|
+
const bgRendered = renderMarkdown(item.text);
|
|
256
|
+
const bgLines = bgRendered.split('\n');
|
|
257
|
+
if (bgLines.length > 0) {
|
|
258
|
+
console.log(`${bgLabel} ${bgLines[0]}`);
|
|
259
|
+
for (let i = 1; i < bgLines.length; i++) {
|
|
260
|
+
console.log(bgLines[i]);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
break;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
return null;
|
|
267
|
+
}
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
+
* @deprecated DEAD CODE — This class is never instantiated. Do NOT modify this file.
|
|
3
|
+
*
|
|
4
|
+
* The active render pipeline is in TerminalUI (src/ui/terminal-ui.ts).
|
|
5
|
+
* TerminalUI handles all rendering, keyboard input, overlays, and footer display.
|
|
6
|
+
* All UI changes should go there.
|
|
7
|
+
*
|
|
8
|
+
* --- Original description ---
|
|
2
9
|
* Terminal Renderer
|
|
3
10
|
*
|
|
4
11
|
* Single point of terminal output. All rendering goes through this class.
|
|
5
12
|
* Eliminates race conditions by ensuring only one writer.
|
|
6
|
-
*
|
|
7
|
-
* Key responsibilities:
|
|
8
|
-
* - Manage render modes (MENU, REPL, OVERLAY)
|
|
9
|
-
* - Set up and manage scroll regions (REPL mode)
|
|
10
|
-
* - Collect content from providers
|
|
11
|
-
* - Write to terminal (single writer)
|
|
12
|
-
* - Handle resize events
|
|
13
|
-
* - Route keyboard input
|
|
14
13
|
*/
|
|
15
14
|
import { EventEmitter } from 'events';
|
|
16
15
|
import { RenderMode, type ModeTransition } from './render-modes.js';
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
+
* @deprecated DEAD CODE — This class is never instantiated. Do NOT modify this file.
|
|
3
|
+
*
|
|
4
|
+
* The active render pipeline is in TerminalUI (src/ui/terminal-ui.ts).
|
|
5
|
+
* TerminalUI handles all rendering, keyboard input, overlays, and footer display.
|
|
6
|
+
* All UI changes should go there.
|
|
7
|
+
*
|
|
8
|
+
* --- Original description ---
|
|
2
9
|
* Terminal Renderer
|
|
3
10
|
*
|
|
4
11
|
* Single point of terminal output. All rendering goes through this class.
|
|
5
12
|
* Eliminates race conditions by ensuring only one writer.
|
|
6
|
-
*
|
|
7
|
-
* Key responsibilities:
|
|
8
|
-
* - Manage render modes (MENU, REPL, OVERLAY)
|
|
9
|
-
* - Set up and manage scroll regions (REPL mode)
|
|
10
|
-
* - Collect content from providers
|
|
11
|
-
* - Write to terminal (single writer)
|
|
12
|
-
* - Handle resize events
|
|
13
|
-
* - Route keyboard input
|
|
14
13
|
*/
|
|
15
14
|
import { EventEmitter } from 'events';
|
|
16
15
|
import { RenderMode, isValidTransition } from './render-modes.js';
|