@compilr-dev/cli 0.5.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +236 -68
- package/dist/.tsbuildinfo.app +1 -0
- package/dist/.tsbuildinfo.data +1 -0
- package/dist/.tsbuildinfo.domain +1 -0
- package/dist/.tsbuildinfo.foundation +1 -0
- package/dist/agent.d.ts +61 -4
- package/dist/agent.js +241 -245
- package/dist/anchors/index.d.ts +1 -1
- package/dist/anchors/index.js +1 -1
- package/dist/anchors/project-anchors.d.ts +2 -2
- package/dist/anchors/project-anchors.js +1 -1
- package/dist/auth/api-client.d.ts +124 -0
- package/dist/auth/api-client.js +261 -0
- package/dist/auth/index.d.ts +172 -0
- package/dist/auth/index.js +545 -0
- package/dist/auth/storage.d.ts +52 -0
- package/dist/auth/storage.js +118 -0
- package/dist/changelog/index.d.ts +16 -0
- package/dist/changelog/index.js +24 -0
- package/dist/changelog/releases.d.ts +17 -0
- package/dist/changelog/releases.js +63 -0
- package/dist/commands-v2/handlers/auth.d.ts +10 -0
- package/dist/commands-v2/handlers/auth.js +118 -0
- package/dist/commands-v2/handlers/background.d.ts +14 -0
- package/dist/commands-v2/handlers/background.js +276 -0
- package/dist/commands-v2/handlers/context.js +266 -81
- package/dist/commands-v2/handlers/core.d.ts +1 -0
- package/dist/commands-v2/handlers/core.js +133 -8
- package/dist/commands-v2/handlers/debug.js +18 -0
- package/dist/commands-v2/handlers/delegations.d.ts +8 -0
- package/dist/commands-v2/handlers/delegations.js +29 -0
- package/dist/commands-v2/handlers/files.d.ts +8 -0
- package/dist/commands-v2/handlers/files.js +162 -0
- package/dist/commands-v2/handlers/filter.d.ts +9 -0
- package/dist/commands-v2/handlers/filter.js +130 -0
- package/dist/commands-v2/handlers/games.d.ts +7 -0
- package/dist/commands-v2/handlers/games.js +57 -0
- package/dist/commands-v2/handlers/index.d.ts +13 -0
- package/dist/commands-v2/handlers/index.js +39 -0
- package/dist/commands-v2/handlers/mcp.d.ts +8 -0
- package/dist/commands-v2/handlers/mcp.js +39 -0
- package/dist/commands-v2/handlers/notifications.d.ts +9 -0
- package/dist/commands-v2/handlers/notifications.js +34 -0
- package/dist/commands-v2/handlers/project.js +244 -23
- package/dist/commands-v2/handlers/reset.d.ts +11 -0
- package/dist/commands-v2/handlers/reset.js +118 -0
- package/dist/commands-v2/handlers/session.d.ts +161 -0
- package/dist/commands-v2/handlers/session.js +805 -0
- package/dist/commands-v2/handlers/settings.d.ts +2 -0
- package/dist/commands-v2/handlers/settings.js +217 -35
- package/dist/commands-v2/handlers/tasks.d.ts +5 -0
- package/dist/commands-v2/handlers/tasks.js +36 -0
- package/dist/commands-v2/handlers/team.d.ts +9 -0
- package/dist/commands-v2/handlers/team.js +549 -0
- package/dist/commands-v2/handlers/terminals.d.ts +9 -0
- package/dist/commands-v2/handlers/terminals.js +34 -0
- package/dist/commands-v2/index.d.ts +3 -2
- package/dist/commands-v2/index.js +4 -1
- package/dist/commands-v2/registry.d.ts +15 -0
- package/dist/commands-v2/registry.js +34 -0
- package/dist/commands-v2/types.d.ts +81 -3
- package/dist/commands.js +13 -0
- package/dist/compilr-diff-companion.vsix +0 -0
- package/dist/db/index.js +98 -4
- package/dist/db/repositories/document-repository.d.ts +2 -0
- package/dist/db/repositories/document-repository.js +5 -1
- package/dist/db/repositories/index.d.ts +2 -0
- package/dist/db/repositories/index.js +1 -0
- package/dist/db/repositories/plan-repository.d.ts +101 -0
- package/dist/db/repositories/plan-repository.js +275 -0
- package/dist/db/repositories/project-repository.d.ts +6 -0
- package/dist/db/repositories/project-repository.js +41 -0
- package/dist/db/repositories/work-item-repository.d.ts +15 -0
- package/dist/db/repositories/work-item-repository.js +69 -4
- package/dist/db/schema.d.ts +40 -3
- package/dist/db/schema.js +66 -3
- package/dist/episodes/index.d.ts +20 -0
- package/dist/episodes/index.js +27 -0
- package/dist/episodes/recorder.d.ts +51 -0
- package/dist/episodes/recorder.js +195 -0
- package/dist/episodes/significant-work.d.ts +21 -0
- package/dist/episodes/significant-work.js +56 -0
- package/dist/episodes/store.d.ts +38 -0
- package/dist/episodes/store.js +199 -0
- package/dist/episodes/types.d.ts +35 -0
- package/dist/episodes/types.js +6 -0
- package/dist/episodes/work-at-risk.d.ts +12 -0
- package/dist/episodes/work-at-risk.js +38 -0
- package/dist/episodes/work-summary-anchor.d.ts +23 -0
- package/dist/episodes/work-summary-anchor.js +73 -0
- package/dist/games/coins.d.ts +66 -0
- package/dist/games/coins.js +165 -0
- package/dist/games/game-base.d.ts +84 -0
- package/dist/games/game-base.js +204 -0
- package/dist/games/index.d.ts +16 -0
- package/dist/games/index.js +49 -0
- package/dist/games/scores.d.ts +69 -0
- package/dist/games/scores.js +191 -0
- package/dist/games/tetris/board.d.ts +59 -0
- package/dist/games/tetris/board.js +170 -0
- package/dist/games/tetris/index.d.ts +109 -0
- package/dist/games/tetris/index.js +610 -0
- package/dist/games/tetris/pieces.d.ts +44 -0
- package/dist/games/tetris/pieces.js +271 -0
- package/dist/games/tetris/renderer.d.ts +26 -0
- package/dist/games/tetris/renderer.js +77 -0
- package/dist/guide/guide-content.d.ts +23 -0
- package/dist/guide/guide-content.js +196 -0
- package/dist/guide/index.d.ts +8 -0
- package/dist/guide/index.js +7 -0
- package/dist/guide/shared-content.d.ts +37 -0
- package/dist/guide/shared-content.js +1272 -0
- package/dist/guide/tutorial-helpers.d.ts +57 -0
- package/dist/guide/tutorial-helpers.js +147 -0
- package/dist/handlers/ask-user-handlers.d.ts +32 -0
- package/dist/handlers/ask-user-handlers.js +104 -0
- package/dist/handlers/delegation-handlers.d.ts +34 -0
- package/dist/handlers/delegation-handlers.js +291 -0
- package/dist/handlers/permission-handler.d.ts +30 -0
- package/dist/handlers/permission-handler.js +205 -0
- package/dist/index.d.ts +11 -1
- package/dist/index.js +448 -271
- package/dist/input-handlers/memory-handler.d.ts +1 -1
- package/dist/input-handlers/memory-handler.js +2 -1
- package/dist/models/index.d.ts +10 -0
- package/dist/models/index.js +12 -0
- package/dist/models/model-registry.d.ts +38 -0
- package/dist/models/model-registry.js +69 -0
- package/dist/models/model-tiers.d.ts +28 -0
- package/dist/models/model-tiers.js +71 -0
- package/dist/models/model-validation.d.ts +25 -0
- package/dist/models/model-validation.js +291 -0
- package/dist/models/ollama-models.d.ts +73 -0
- package/dist/models/ollama-models.js +178 -0
- package/dist/models/provider-types.d.ts +6 -0
- package/dist/models/provider-types.js +1 -0
- package/dist/models/providers.d.ts +35 -0
- package/dist/models/providers.js +58 -0
- package/dist/models/types.d.ts +4 -0
- package/dist/models/types.js +4 -0
- package/dist/multi-agent/activity.d.ts +21 -0
- package/dist/multi-agent/activity.js +34 -0
- package/dist/multi-agent/agent-selection.d.ts +55 -0
- package/dist/multi-agent/agent-selection.js +90 -0
- package/dist/multi-agent/artifacts.d.ts +197 -0
- package/dist/multi-agent/artifacts.js +379 -0
- package/dist/multi-agent/checkpointer.d.ts +138 -0
- package/dist/multi-agent/checkpointer.js +471 -0
- package/dist/multi-agent/collision-utils.d.ts +16 -0
- package/dist/multi-agent/collision-utils.js +28 -0
- package/dist/multi-agent/context-resolver.d.ts +97 -0
- package/dist/multi-agent/context-resolver.js +316 -0
- package/dist/multi-agent/custom-agents.d.ts +83 -0
- package/dist/multi-agent/custom-agents.js +227 -0
- package/dist/multi-agent/delegation-tracker.d.ts +157 -0
- package/dist/multi-agent/delegation-tracker.js +243 -0
- package/dist/multi-agent/file-lock-hook.d.ts +29 -0
- package/dist/multi-agent/file-lock-hook.js +97 -0
- package/dist/multi-agent/file-locks.d.ts +58 -0
- package/dist/multi-agent/file-locks.js +194 -0
- package/dist/multi-agent/index.d.ts +24 -0
- package/dist/multi-agent/index.js +30 -0
- package/dist/multi-agent/mention-parser.d.ts +64 -0
- package/dist/multi-agent/mention-parser.js +146 -0
- package/dist/multi-agent/notification-manager.d.ts +84 -0
- package/dist/multi-agent/notification-manager.js +224 -0
- package/dist/multi-agent/pending-requests.d.ts +122 -0
- package/dist/multi-agent/pending-requests.js +155 -0
- package/dist/multi-agent/session-registry.d.ts +139 -0
- package/dist/multi-agent/session-registry.js +514 -0
- package/dist/multi-agent/shared-context.d.ts +293 -0
- package/dist/multi-agent/shared-context.js +671 -0
- package/dist/multi-agent/skill-requirements.d.ts +66 -0
- package/dist/multi-agent/skill-requirements.js +178 -0
- package/dist/multi-agent/task-assignment.d.ts +69 -0
- package/dist/multi-agent/task-assignment.js +123 -0
- package/dist/multi-agent/task-suggestion.d.ts +31 -0
- package/dist/multi-agent/task-suggestion.js +72 -0
- package/dist/multi-agent/team-agent.d.ts +201 -0
- package/dist/multi-agent/team-agent.js +488 -0
- package/dist/multi-agent/team.d.ts +286 -0
- package/dist/multi-agent/team.js +610 -0
- package/dist/multi-agent/tool-config.d.ts +110 -0
- package/dist/multi-agent/tool-config.js +661 -0
- package/dist/multi-agent/types.d.ts +211 -0
- package/dist/multi-agent/types.js +617 -0
- package/dist/prompts/plan-mode-prompt.d.ts +11 -0
- package/dist/prompts/plan-mode-prompt.js +95 -0
- package/dist/repl-helpers.js +3 -2
- package/dist/repl-v2.d.ts +401 -2
- package/dist/repl-v2.js +2577 -65
- package/dist/session/index.d.ts +6 -0
- package/dist/session/index.js +6 -0
- package/dist/session/project-session-manager.d.ts +158 -0
- package/dist/session/project-session-manager.js +650 -0
- package/dist/settings/index.d.ts +133 -13
- package/dist/settings/index.js +329 -24
- package/dist/settings/mcp-config.d.ts +76 -0
- package/dist/settings/mcp-config.js +143 -0
- package/dist/settings/paths.d.ts +4 -0
- package/dist/settings/paths.js +6 -0
- package/dist/shared-handlers.d.ts +62 -0
- package/dist/shared-handlers.js +48 -0
- package/dist/system-prompt/builder.d.ts +5 -0
- package/dist/system-prompt/builder.js +4 -0
- package/dist/system-prompt/index.d.ts +18 -0
- package/dist/system-prompt/index.js +18 -0
- package/dist/system-prompt/modules.d.ts +5 -0
- package/dist/system-prompt/modules.js +4 -0
- package/dist/tabbed-menu.js +2 -1
- package/dist/templates/compilr-md-import.d.ts +16 -0
- package/dist/templates/compilr-md-import.js +241 -0
- package/dist/templates/compilr-md.js +10 -61
- package/dist/templates/config-json.d.ts +1 -25
- package/dist/templates/index.d.ts +2 -0
- package/dist/templates/index.js +34 -73
- package/dist/tool-names.d.ts +108 -0
- package/dist/tool-names.js +227 -0
- package/dist/tools/anchor-tools.d.ts +4 -4
- package/dist/tools/anchor-tools.js +1 -1
- package/dist/tools/artifact-tools.d.ts +42 -0
- package/dist/tools/artifact-tools.js +328 -0
- package/dist/tools/ask-user-simple.d.ts +1 -1
- package/dist/tools/ask-user-simple.js +2 -1
- package/dist/tools/ask-user.d.ts +1 -1
- package/dist/tools/ask-user.js +2 -1
- package/dist/tools/backlog-wrappers.d.ts +5 -3
- package/dist/tools/backlog-wrappers.js +16 -1
- package/dist/tools/backlog.d.ts +2 -2
- package/dist/tools/backlog.js +1 -1
- package/dist/tools/db-tools.d.ts +8 -61
- package/dist/tools/db-tools.js +8 -13
- package/dist/tools/delegate-background.d.ts +27 -0
- package/dist/tools/delegate-background.js +115 -0
- package/dist/tools/delegate.d.ts +22 -0
- package/dist/tools/delegate.js +97 -0
- package/dist/tools/delegation-status.d.ts +16 -0
- package/dist/tools/delegation-status.js +128 -0
- package/dist/tools/document-db.d.ts +5 -5
- package/dist/tools/document-db.js +1 -1
- package/dist/tools/guide-tool.d.ts +12 -0
- package/dist/tools/guide-tool.js +59 -0
- package/dist/tools/handoff.d.ts +25 -0
- package/dist/tools/handoff.js +99 -0
- package/dist/tools/meta-tools.d.ts +26 -0
- package/dist/tools/meta-tools.js +47 -0
- package/dist/tools/plan-tools.d.ts +54 -0
- package/dist/tools/plan-tools.js +338 -0
- package/dist/tools/platform-adapter.d.ts +29 -0
- package/dist/tools/platform-adapter.js +394 -0
- package/dist/tools/project-db.d.ts +5 -73
- package/dist/tools/project-db.js +5 -336
- package/dist/tools/recall-work-tool.d.ts +18 -0
- package/dist/tools/recall-work-tool.js +82 -0
- package/dist/tools/workitem-db.d.ts +43 -11
- package/dist/tools/workitem-db.js +186 -5
- package/dist/tools.d.ts +67 -2
- package/dist/tools.js +237 -47
- package/dist/ui/autocomplete-controller.d.ts +42 -0
- package/dist/ui/autocomplete-controller.js +384 -0
- package/dist/ui/base/index.d.ts +1 -1
- package/dist/ui/base/index.js +1 -1
- package/dist/ui/base/overlay-base-v2.d.ts +10 -0
- package/dist/ui/base/overlay-base-v2.js +14 -0
- package/dist/ui/base/render-utils.d.ts +19 -0
- package/dist/ui/base/render-utils.js +25 -0
- package/dist/ui/base/tabbed-list-overlay-v2.d.ts +16 -1
- package/dist/ui/base/tabbed-list-overlay-v2.js +19 -1
- package/dist/ui/constants/labels.d.ts +14 -0
- package/dist/ui/constants/labels.js +51 -0
- package/dist/ui/conversation-store.d.ts +55 -0
- package/dist/ui/conversation-store.js +107 -0
- package/dist/ui/conversation.js +11 -13
- package/dist/ui/diff.d.ts +7 -1
- package/dist/ui/diff.js +85 -48
- package/dist/ui/ephemeral.js +3 -9
- package/dist/ui/file-autocomplete.d.ts +24 -0
- package/dist/ui/file-autocomplete.js +56 -0
- package/dist/ui/footer-renderer.d.ts +69 -0
- package/dist/ui/footer-renderer.js +431 -0
- package/dist/ui/footer.d.ts +74 -7
- package/dist/ui/footer.js +173 -16
- package/dist/ui/input-controller.d.ts +51 -0
- package/dist/ui/input-controller.js +176 -0
- package/dist/ui/input-prompt.d.ts +19 -0
- package/dist/ui/input-prompt.js +206 -14
- package/dist/ui/keyboard-handler.d.ts +57 -0
- package/dist/ui/keyboard-handler.js +557 -0
- package/dist/ui/live-region-facade.d.ts +42 -0
- package/dist/ui/live-region-facade.js +205 -0
- package/dist/ui/live-region.d.ts +0 -4
- package/dist/ui/live-region.js +6 -14
- package/dist/ui/mascot/renderer.d.ts +1 -1
- package/dist/ui/mascot/renderer.js +37 -2
- package/dist/ui/overlay/data/tutorial-content.d.ts +9 -0
- package/dist/ui/overlay/data/tutorial-content.js +9 -0
- package/dist/ui/overlay/data/tutorial-registry.d.ts +12 -0
- package/dist/ui/overlay/data/tutorial-registry.js +116 -0
- package/dist/ui/overlay/data/tutorial-types.d.ts +35 -0
- package/dist/ui/overlay/data/tutorial-types.js +6 -0
- package/dist/ui/overlay/data/tutorials/basics/first-conversation.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/basics/first-conversation.js +220 -0
- package/dist/ui/overlay/data/tutorials/basics/first-project.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/basics/first-project.js +284 -0
- package/dist/ui/overlay/data/tutorials/basics/navigation.d.ts +8 -0
- package/dist/ui/overlay/data/tutorials/basics/navigation.js +22 -0
- package/dist/ui/overlay/data/tutorials/basics/welcome.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/basics/welcome.js +174 -0
- package/dist/ui/overlay/data/tutorials/config/context-management.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/config/context-management.js +158 -0
- package/dist/ui/overlay/data/tutorials/config/mcp-servers.d.ts +8 -0
- package/dist/ui/overlay/data/tutorials/config/mcp-servers.js +155 -0
- package/dist/ui/overlay/data/tutorials/config/model-selection.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/config/model-selection.js +162 -0
- package/dist/ui/overlay/data/tutorials/config/permissions-safety.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/config/permissions-safety.js +163 -0
- package/dist/ui/overlay/data/tutorials/config/settings-config.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/config/settings-config.js +166 -0
- package/dist/ui/overlay/data/tutorials/planning/arch.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/arch.js +168 -0
- package/dist/ui/overlay/data/tutorials/planning/backlog.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/backlog.js +103 -0
- package/dist/ui/overlay/data/tutorials/planning/build.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/build.js +173 -0
- package/dist/ui/overlay/data/tutorials/planning/design.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/design.js +205 -0
- package/dist/ui/overlay/data/tutorials/planning/docs.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/docs.js +143 -0
- package/dist/ui/overlay/data/tutorials/planning/prd.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/prd.js +173 -0
- package/dist/ui/overlay/data/tutorials/planning/scaffold.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/scaffold.js +164 -0
- package/dist/ui/overlay/data/tutorials/planning/sketch.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/sketch.js +58 -0
- package/dist/ui/overlay/data/tutorials/projects/anchors.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/projects/anchors.js +248 -0
- package/dist/ui/overlay/data/tutorials/projects/import-project.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/projects/import-project.js +172 -0
- package/dist/ui/overlay/data/tutorials/projects/managing-projects.d.ts +8 -0
- package/dist/ui/overlay/data/tutorials/projects/managing-projects.js +212 -0
- package/dist/ui/overlay/data/tutorials/projects/new-project.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/projects/new-project.js +251 -0
- package/dist/ui/overlay/data/tutorials/projects/session-management.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/projects/session-management.js +169 -0
- package/dist/ui/overlay/data/tutorials/teams/background-execution.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/teams/background-execution.js +171 -0
- package/dist/ui/overlay/data/tutorials/teams/multi-terminal.d.ts +8 -0
- package/dist/ui/overlay/data/tutorials/teams/multi-terminal.js +147 -0
- package/dist/ui/overlay/data/tutorials/teams/task-assignment.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/teams/task-assignment.js +204 -0
- package/dist/ui/overlay/data/tutorials/teams/team-overview.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/teams/team-overview.js +165 -0
- package/dist/ui/overlay/data/tutorials/teams/working-with-agents.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/teams/working-with-agents.js +172 -0
- package/dist/ui/overlay/impl/agents-overlay-v2.js +6 -17
- package/dist/ui/overlay/impl/anchors-overlay-v2.js +30 -64
- package/dist/ui/overlay/impl/artifact-detail-overlay-v2.d.ts +43 -0
- package/dist/ui/overlay/impl/artifact-detail-overlay-v2.js +232 -0
- package/dist/ui/overlay/impl/artifact-overlay-v2.d.ts +40 -0
- package/dist/ui/overlay/impl/artifact-overlay-v2.js +115 -0
- package/dist/ui/overlay/impl/ask-user-overlay-v2.js +2 -5
- package/dist/ui/overlay/impl/background-overlay-v2.d.ts +40 -0
- package/dist/ui/overlay/impl/background-overlay-v2.js +147 -0
- package/dist/ui/overlay/impl/backlog-overlay-v2.d.ts +4 -1
- package/dist/ui/overlay/impl/backlog-overlay-v2.js +55 -16
- package/dist/ui/overlay/impl/changelog-overlay-v2.d.ts +44 -0
- package/dist/ui/overlay/impl/changelog-overlay-v2.js +165 -0
- package/dist/ui/overlay/impl/commands-overlay-v2.js +4 -6
- package/dist/ui/overlay/impl/config-overlay-v2.d.ts +12 -1
- package/dist/ui/overlay/impl/config-overlay-v2.js +164 -100
- package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.d.ts +83 -0
- package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.js +711 -0
- package/dist/ui/overlay/impl/dashboard-overlay-v2.d.ts +2 -0
- package/dist/ui/overlay/impl/dashboard-overlay-v2.js +26 -3
- package/dist/ui/overlay/impl/delegations-overlay-v2.d.ts +28 -0
- package/dist/ui/overlay/impl/delegations-overlay-v2.js +279 -0
- package/dist/ui/overlay/impl/docs-overlay-v2.js +12 -9
- package/dist/ui/overlay/impl/document-detail-overlay-v2.d.ts +7 -0
- package/dist/ui/overlay/impl/document-detail-overlay-v2.js +119 -78
- package/dist/ui/overlay/impl/filter-overlay-v2.d.ts +41 -0
- package/dist/ui/overlay/impl/filter-overlay-v2.js +110 -0
- package/dist/ui/overlay/impl/games-overlay-v2.d.ts +31 -0
- package/dist/ui/overlay/impl/games-overlay-v2.js +135 -0
- package/dist/ui/overlay/impl/help-overlay-v2.d.ts +26 -3
- package/dist/ui/overlay/impl/help-overlay-v2.js +20 -42
- package/dist/ui/overlay/impl/login-overlay-v2.d.ts +49 -0
- package/dist/ui/overlay/impl/login-overlay-v2.js +277 -0
- package/dist/ui/overlay/impl/mcp-overlay-v2.d.ts +63 -0
- package/dist/ui/overlay/impl/mcp-overlay-v2.js +907 -0
- package/dist/ui/overlay/impl/model-overlay-v2.d.ts +57 -13
- package/dist/ui/overlay/impl/model-overlay-v2.js +1086 -61
- package/dist/ui/overlay/impl/new-overlay-v2.d.ts +37 -6
- package/dist/ui/overlay/impl/new-overlay-v2.js +715 -65
- package/dist/ui/overlay/impl/notifications-overlay-v2.d.ts +20 -0
- package/dist/ui/overlay/impl/notifications-overlay-v2.js +116 -0
- package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.d.ts +76 -0
- package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.js +728 -0
- package/dist/ui/overlay/impl/pending-overlay-v2.d.ts +51 -0
- package/dist/ui/overlay/impl/pending-overlay-v2.js +445 -0
- package/dist/ui/overlay/impl/permission-overlay-v2.js +5 -5
- package/dist/ui/overlay/impl/permissions-overlay-v2.d.ts +85 -0
- package/dist/ui/overlay/impl/permissions-overlay-v2.js +820 -0
- package/dist/ui/overlay/impl/plan-approval-overlay-v2.d.ts +35 -0
- package/dist/ui/overlay/impl/plan-approval-overlay-v2.js +181 -0
- package/dist/ui/overlay/impl/project-edit-overlay-v2.d.ts +36 -0
- package/dist/ui/overlay/impl/project-edit-overlay-v2.js +195 -0
- package/dist/ui/overlay/impl/projects-overlay-v2.d.ts +1 -0
- package/dist/ui/overlay/impl/projects-overlay-v2.js +278 -44
- package/dist/ui/overlay/impl/reset-overlay-v2.d.ts +39 -0
- package/dist/ui/overlay/impl/reset-overlay-v2.js +107 -0
- package/dist/ui/overlay/impl/resume-overlay-v2.d.ts +60 -0
- package/dist/ui/overlay/impl/resume-overlay-v2.js +414 -0
- package/dist/ui/overlay/impl/session-mode-overlay-v2.d.ts +43 -0
- package/dist/ui/overlay/impl/session-mode-overlay-v2.js +124 -0
- package/dist/ui/overlay/impl/tasks-overlay-v2.d.ts +28 -0
- package/dist/ui/overlay/impl/tasks-overlay-v2.js +283 -0
- package/dist/ui/overlay/impl/team-overlay-v2.d.ts +86 -0
- package/dist/ui/overlay/impl/team-overlay-v2.js +692 -0
- package/dist/ui/overlay/impl/terminals-overlay-v2.d.ts +26 -0
- package/dist/ui/overlay/impl/terminals-overlay-v2.js +217 -0
- package/dist/ui/overlay/impl/tools-overlay-v2.js +3 -7
- package/dist/ui/overlay/impl/tutorial-overlay-v2.d.ts +30 -16
- package/dist/ui/overlay/impl/tutorial-overlay-v2.js +133 -956
- package/dist/ui/overlay/impl/workflow-overlay-v2.js +5 -1
- package/dist/ui/overlay/index.d.ts +20 -1
- package/dist/ui/overlay/index.js +19 -0
- package/dist/ui/overlay/types.d.ts +5 -0
- package/dist/ui/overlay-manager.d.ts +43 -0
- package/dist/ui/overlay-manager.js +238 -0
- package/dist/ui/overlays.js +4 -16
- package/dist/ui/permission-overlay.js +6 -5
- package/dist/ui/status-bar-controller.d.ts +33 -0
- package/dist/ui/status-bar-controller.js +99 -0
- package/dist/ui/subagent-renderer.js +3 -19
- package/dist/ui/terminal-autocomplete-utils.d.ts +23 -0
- package/dist/ui/terminal-autocomplete-utils.js +83 -0
- package/dist/ui/terminal-line-builders.d.ts +17 -0
- package/dist/ui/terminal-line-builders.js +42 -0
- package/dist/ui/terminal-render-item.d.ts +16 -0
- package/dist/ui/terminal-render-item.js +267 -0
- package/dist/ui/terminal-renderer.d.ts +7 -8
- package/dist/ui/terminal-renderer.js +7 -8
- package/dist/ui/terminal-types.d.ts +179 -0
- package/dist/ui/terminal-types.js +34 -0
- package/dist/ui/terminal-ui.d.ts +144 -276
- package/dist/ui/terminal-ui.js +384 -1861
- package/dist/ui/todo-zone.d.ts +19 -1
- package/dist/ui/todo-zone.js +71 -13
- package/dist/ui/tool-formatters.js +512 -1
- package/dist/ui/turn-metrics.d.ts +56 -0
- package/dist/ui/turn-metrics.js +75 -0
- package/dist/ui/types.d.ts +28 -0
- package/dist/ui/types.js +1 -0
- package/dist/ui/vscode-diff-ipc.d.ts +102 -0
- package/dist/ui/vscode-diff-ipc.js +385 -0
- package/dist/utils/credentials.d.ts +24 -5
- package/dist/utils/credentials.js +123 -9
- package/dist/utils/format-tokens.d.ts +13 -0
- package/dist/utils/format-tokens.js +18 -0
- package/dist/utils/git-config.d.ts +26 -0
- package/dist/utils/git-config.js +54 -0
- package/dist/utils/message-utils.d.ts +61 -0
- package/dist/utils/message-utils.js +72 -0
- package/dist/utils/model-tiers.d.ts +8 -1
- package/dist/utils/model-tiers.js +38 -16
- package/dist/utils/open-browser.d.ts +5 -0
- package/dist/utils/open-browser.js +32 -0
- package/dist/utils/path-safety.js +3 -2
- package/dist/utils/project-detection.d.ts +58 -0
- package/dist/utils/project-detection.js +424 -0
- package/dist/utils/project-memory.js +2 -1
- package/dist/utils/project-status.d.ts +2 -2
- package/dist/utils/startup-perf.d.ts +18 -0
- package/dist/utils/startup-perf.js +60 -0
- package/dist/utils/token-tracker.d.ts +62 -0
- package/dist/utils/token-tracker.js +150 -0
- package/dist/utils/token-types.d.ts +23 -0
- package/dist/utils/token-types.js +18 -0
- package/dist/utils/types/config-types.d.ts +32 -0
- package/dist/utils/types/config-types.js +8 -0
- package/dist/utils/update-checker.d.ts +28 -0
- package/dist/utils/update-checker.js +106 -0
- package/dist/utils/version.d.ts +7 -0
- package/dist/utils/version.js +10 -0
- package/dist/utils/vscode-detect.d.ts +39 -0
- package/dist/utils/vscode-detect.js +137 -0
- package/package.json +25 -12
- package/dist/commands/handler-types.d.ts +0 -68
- package/dist/commands/handler-types.js +0 -8
- package/dist/commands/handlers/agent-commands.d.ts +0 -13
- package/dist/commands/handlers/agent-commands.js +0 -305
- package/dist/commands/handlers/design-commands.d.ts +0 -15
- package/dist/commands/handlers/design-commands.js +0 -334
- package/dist/commands/handlers/index.d.ts +0 -20
- package/dist/commands/handlers/index.js +0 -43
- package/dist/commands/handlers/overlay-commands.d.ts +0 -21
- package/dist/commands/handlers/overlay-commands.js +0 -287
- package/dist/commands/handlers/project-commands.d.ts +0 -11
- package/dist/commands/handlers/project-commands.js +0 -167
- package/dist/commands/handlers/simple-commands.d.ts +0 -19
- package/dist/commands/handlers/simple-commands.js +0 -144
- package/dist/commands/registry.d.ts +0 -50
- package/dist/commands/registry.js +0 -75
- package/dist/index.old.d.ts +0 -7
- package/dist/index.old.js +0 -1014
- package/dist/repl.d.ts +0 -149
- package/dist/repl.js +0 -1151
- package/dist/templates/claude-md.d.ts +0 -7
- package/dist/templates/claude-md.js +0 -189
- package/dist/test-autocomplete.d.ts +0 -7
- package/dist/test-autocomplete.js +0 -85
- package/dist/test-tabbed-menu.d.ts +0 -7
- package/dist/test-tabbed-menu.js +0 -25
- package/dist/tool-selector.d.ts +0 -71
- package/dist/tool-selector.js +0 -184
- package/dist/ui/agents-overlay-v2.d.ts +0 -43
- package/dist/ui/agents-overlay-v2.js +0 -809
- package/dist/ui/agents-overlay.d.ts +0 -12
- package/dist/ui/agents-overlay.js +0 -863
- package/dist/ui/anchors-overlay.d.ts +0 -12
- package/dist/ui/anchors-overlay.js +0 -775
- package/dist/ui/arch-type-overlay.d.ts +0 -15
- package/dist/ui/arch-type-overlay.js +0 -201
- package/dist/ui/ask-user-overlay-v2.d.ts +0 -26
- package/dist/ui/ask-user-overlay-v2.js +0 -555
- package/dist/ui/ask-user-simple-overlay-v2.d.ts +0 -25
- package/dist/ui/ask-user-simple-overlay-v2.js +0 -215
- package/dist/ui/backlog-overlay.d.ts +0 -32
- package/dist/ui/backlog-overlay.js +0 -652
- package/dist/ui/commands-overlay-v2.d.ts +0 -33
- package/dist/ui/commands-overlay-v2.js +0 -441
- package/dist/ui/commands-overlay.d.ts +0 -16
- package/dist/ui/commands-overlay.js +0 -439
- package/dist/ui/config-overlay.d.ts +0 -35
- package/dist/ui/config-overlay.js +0 -707
- package/dist/ui/docs-overlay.d.ts +0 -17
- package/dist/ui/docs-overlay.js +0 -303
- package/dist/ui/footer-v2.d.ts +0 -222
- package/dist/ui/footer-v2.js +0 -1349
- package/dist/ui/help-overlay-v2.d.ts +0 -34
- package/dist/ui/help-overlay-v2.js +0 -309
- package/dist/ui/help-overlay.d.ts +0 -16
- package/dist/ui/help-overlay.js +0 -316
- package/dist/ui/init-overlay-v2.d.ts +0 -34
- package/dist/ui/init-overlay-v2.js +0 -600
- package/dist/ui/init-overlay.d.ts +0 -34
- package/dist/ui/init-overlay.js +0 -604
- package/dist/ui/input-prompt-v2.d.ts +0 -180
- package/dist/ui/input-prompt-v2.js +0 -999
- package/dist/ui/iteration-limit-overlay-v2.d.ts +0 -21
- package/dist/ui/iteration-limit-overlay-v2.js +0 -114
- package/dist/ui/keys-overlay-v2.d.ts +0 -41
- package/dist/ui/keys-overlay-v2.js +0 -248
- package/dist/ui/mascot-overlay-v2.d.ts +0 -41
- package/dist/ui/mascot-overlay-v2.js +0 -138
- package/dist/ui/mascot-overlay.d.ts +0 -21
- package/dist/ui/mascot-overlay.js +0 -146
- package/dist/ui/model-overlay-v2.d.ts +0 -49
- package/dist/ui/model-overlay-v2.js +0 -118
- package/dist/ui/model-overlay.d.ts +0 -27
- package/dist/ui/model-overlay.js +0 -221
- package/dist/ui/model-warning-overlay.d.ts +0 -30
- package/dist/ui/model-warning-overlay.js +0 -169
- package/dist/ui/new-overlay.d.ts +0 -34
- package/dist/ui/new-overlay.js +0 -604
- package/dist/ui/overlay/impl/init-overlay-v2.d.ts +0 -77
- package/dist/ui/overlay/impl/init-overlay-v2.js +0 -593
- package/dist/ui/overlay/overlay-types.d.ts +0 -128
- package/dist/ui/overlay/overlay-types.js +0 -22
- package/dist/ui/overlays/help-overlay-v2.d.ts +0 -28
- package/dist/ui/overlays/help-overlay-v2.js +0 -198
- package/dist/ui/overlays/index.d.ts +0 -11
- package/dist/ui/overlays/index.js +0 -11
- package/dist/ui/permission-overlay-v2.d.ts +0 -36
- package/dist/ui/permission-overlay-v2.js +0 -380
- package/dist/ui/projects-overlay.d.ts +0 -19
- package/dist/ui/projects-overlay.js +0 -484
- package/dist/ui/theme-overlay-v2.d.ts +0 -42
- package/dist/ui/theme-overlay-v2.js +0 -135
- package/dist/ui/theme-overlay.d.ts +0 -24
- package/dist/ui/theme-overlay.js +0 -127
- package/dist/ui/tools-overlay-v2.d.ts +0 -47
- package/dist/ui/tools-overlay-v2.js +0 -218
- package/dist/ui/tools-overlay.d.ts +0 -34
- package/dist/ui/tools-overlay.js +0 -230
- package/dist/ui/tutorial-overlay-v2.d.ts +0 -31
- package/dist/ui/tutorial-overlay-v2.js +0 -1035
- package/dist/ui/tutorial-overlay.d.ts +0 -11
- package/dist/ui/tutorial-overlay.js +0 -1034
- package/dist/ui/workflow-overlay.d.ts +0 -22
- package/dist/ui/workflow-overlay.js +0 -636
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Conversation history and filtering.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from TerminalUI — owns conversation data, restored history,
|
|
5
|
+
* and agent-based filtering. Rendering orchestration stays on TerminalUI.
|
|
6
|
+
*/
|
|
7
|
+
import type { PrintableItem } from './terminal-types.js';
|
|
8
|
+
export declare class ConversationStore {
|
|
9
|
+
/** All printed items (stored for re-rendering on config change). */
|
|
10
|
+
history: PrintableItem[];
|
|
11
|
+
/** Session history for Ctrl+R replay. */
|
|
12
|
+
restoredHistory: PrintableItem[];
|
|
13
|
+
/** Agent-based conversation filter. */
|
|
14
|
+
private filter;
|
|
15
|
+
/** Add an item to conversation history. */
|
|
16
|
+
addItem(item: PrintableItem): void;
|
|
17
|
+
/** Get a copy of conversation history. */
|
|
18
|
+
getHistory(): PrintableItem[];
|
|
19
|
+
/** Clear all conversation history. */
|
|
20
|
+
clearHistory(): void;
|
|
21
|
+
/** Store restored conversation items for Ctrl+R history view. */
|
|
22
|
+
setRestoredHistory(items: PrintableItem[]): void;
|
|
23
|
+
/** Check if there is restored history available. */
|
|
24
|
+
hasRestoredHistory(): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Set conversation filter to show only specific agents.
|
|
27
|
+
* Pass empty array to show all agents.
|
|
28
|
+
*/
|
|
29
|
+
setFilter(agentIds: string[]): void;
|
|
30
|
+
/** Clear conversation filter (show all agents). */
|
|
31
|
+
clearFilter(): void;
|
|
32
|
+
/** Get current conversation filter state. */
|
|
33
|
+
getFilter(): {
|
|
34
|
+
agentIds: string[];
|
|
35
|
+
isActive: boolean;
|
|
36
|
+
};
|
|
37
|
+
/** Whether the filter is currently active. */
|
|
38
|
+
get isFilterActive(): boolean;
|
|
39
|
+
/** Get the set of filtered agent IDs (for display). */
|
|
40
|
+
get filterAgentIds(): ReadonlySet<string>;
|
|
41
|
+
/**
|
|
42
|
+
* Add an agent to the conversation filter (auto-expand).
|
|
43
|
+
* Returns true if agent was added, false if filter not active or agent already included.
|
|
44
|
+
*/
|
|
45
|
+
addToFilter(agentId: string): boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Check if an agent is in the current filter (or filter is inactive).
|
|
48
|
+
* Returns true if messages from this agent would be shown.
|
|
49
|
+
*/
|
|
50
|
+
isAgentInFilter(agentId: string): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Check if an item should be shown based on current filter.
|
|
53
|
+
*/
|
|
54
|
+
shouldShowItem(item: PrintableItem): boolean;
|
|
55
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Conversation history and filtering.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from TerminalUI — owns conversation data, restored history,
|
|
5
|
+
* and agent-based filtering. Rendering orchestration stays on TerminalUI.
|
|
6
|
+
*/
|
|
7
|
+
export class ConversationStore {
|
|
8
|
+
/** All printed items (stored for re-rendering on config change). */
|
|
9
|
+
history = [];
|
|
10
|
+
/** Session history for Ctrl+R replay. */
|
|
11
|
+
restoredHistory = [];
|
|
12
|
+
/** Agent-based conversation filter. */
|
|
13
|
+
filter = {
|
|
14
|
+
agentIds: new Set(),
|
|
15
|
+
isActive: false,
|
|
16
|
+
};
|
|
17
|
+
// ===========================================================================
|
|
18
|
+
// History
|
|
19
|
+
// ===========================================================================
|
|
20
|
+
/** Add an item to conversation history. */
|
|
21
|
+
addItem(item) {
|
|
22
|
+
this.history.push(item);
|
|
23
|
+
}
|
|
24
|
+
/** Get a copy of conversation history. */
|
|
25
|
+
getHistory() {
|
|
26
|
+
return [...this.history];
|
|
27
|
+
}
|
|
28
|
+
/** Clear all conversation history. */
|
|
29
|
+
clearHistory() {
|
|
30
|
+
this.history = [];
|
|
31
|
+
}
|
|
32
|
+
// ===========================================================================
|
|
33
|
+
// Restored History (Ctrl+R)
|
|
34
|
+
// ===========================================================================
|
|
35
|
+
/** Store restored conversation items for Ctrl+R history view. */
|
|
36
|
+
setRestoredHistory(items) {
|
|
37
|
+
this.restoredHistory = items;
|
|
38
|
+
}
|
|
39
|
+
/** Check if there is restored history available. */
|
|
40
|
+
hasRestoredHistory() {
|
|
41
|
+
return this.restoredHistory.length > 0;
|
|
42
|
+
}
|
|
43
|
+
// ===========================================================================
|
|
44
|
+
// Conversation Filter
|
|
45
|
+
// ===========================================================================
|
|
46
|
+
/**
|
|
47
|
+
* Set conversation filter to show only specific agents.
|
|
48
|
+
* Pass empty array to show all agents.
|
|
49
|
+
*/
|
|
50
|
+
setFilter(agentIds) {
|
|
51
|
+
this.filter = {
|
|
52
|
+
agentIds: new Set(agentIds),
|
|
53
|
+
isActive: agentIds.length > 0,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/** Clear conversation filter (show all agents). */
|
|
57
|
+
clearFilter() {
|
|
58
|
+
this.filter = { agentIds: new Set(), isActive: false };
|
|
59
|
+
}
|
|
60
|
+
/** Get current conversation filter state. */
|
|
61
|
+
getFilter() {
|
|
62
|
+
return {
|
|
63
|
+
agentIds: [...this.filter.agentIds],
|
|
64
|
+
isActive: this.filter.isActive,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/** Whether the filter is currently active. */
|
|
68
|
+
get isFilterActive() {
|
|
69
|
+
return this.filter.isActive;
|
|
70
|
+
}
|
|
71
|
+
/** Get the set of filtered agent IDs (for display). */
|
|
72
|
+
get filterAgentIds() {
|
|
73
|
+
return this.filter.agentIds;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Add an agent to the conversation filter (auto-expand).
|
|
77
|
+
* Returns true if agent was added, false if filter not active or agent already included.
|
|
78
|
+
*/
|
|
79
|
+
addToFilter(agentId) {
|
|
80
|
+
if (!this.filter.isActive)
|
|
81
|
+
return false;
|
|
82
|
+
if (this.filter.agentIds.has(agentId))
|
|
83
|
+
return false;
|
|
84
|
+
this.filter.agentIds.add(agentId);
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Check if an agent is in the current filter (or filter is inactive).
|
|
89
|
+
* Returns true if messages from this agent would be shown.
|
|
90
|
+
*/
|
|
91
|
+
isAgentInFilter(agentId) {
|
|
92
|
+
if (!this.filter.isActive)
|
|
93
|
+
return true;
|
|
94
|
+
return this.filter.agentIds.has(agentId);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Check if an item should be shown based on current filter.
|
|
98
|
+
*/
|
|
99
|
+
shouldShowItem(item) {
|
|
100
|
+
if (!this.filter.isActive)
|
|
101
|
+
return true;
|
|
102
|
+
const agentId = 'agentId' in item ? item.agentId : undefined;
|
|
103
|
+
if (!agentId)
|
|
104
|
+
return true;
|
|
105
|
+
return this.filter.agentIds.has(agentId);
|
|
106
|
+
}
|
|
107
|
+
}
|
package/dist/ui/conversation.js
CHANGED
|
@@ -15,6 +15,7 @@ import * as terminal from './terminal.js';
|
|
|
15
15
|
import { isVerboseEnabled, getMascotSetting } from '../settings/index.js';
|
|
16
16
|
import { detectProjectStatus, getWorkflowStage } from '../utils/project-status.js';
|
|
17
17
|
import { renderMascotWithLogo } from './mascot/index.js';
|
|
18
|
+
import { formatTokens, truncate } from './base/index.js';
|
|
18
19
|
// =============================================================================
|
|
19
20
|
// Renderer Integration
|
|
20
21
|
// =============================================================================
|
|
@@ -126,6 +127,7 @@ function postProcessFormatting(text) {
|
|
|
126
127
|
const chalk = new Chalk({ level: 3 });
|
|
127
128
|
const colors = getThemeColors();
|
|
128
129
|
const primary = chalk.hex(colors.primary);
|
|
130
|
+
const secondary = chalk.hex(colors.secondary || colors.primary);
|
|
129
131
|
let result = text;
|
|
130
132
|
// Handle **`code`** (bold code) - common pattern in tool docs
|
|
131
133
|
result = result.replace(/\*\*`([^`]+)`\*\*/g, (_match, code) => chalk.bold(primary(code)));
|
|
@@ -133,6 +135,9 @@ function postProcessFormatting(text) {
|
|
|
133
135
|
result = result.replace(/`([^`]+)`/g, (_match, code) => primary(code));
|
|
134
136
|
// Handle remaining **bold**
|
|
135
137
|
result = result.replace(/\*\*([^*]+)\*\*/g, (_match, content) => chalk.bold(content));
|
|
138
|
+
// Handle $agent references - bold + secondary color
|
|
139
|
+
// Match $word at word boundaries (not inside other text)
|
|
140
|
+
result = result.replace(/(?<![$\w])\$([a-zA-Z_][a-zA-Z0-9_]*)\b/g, (_match, agentId) => chalk.bold(secondary(`$${agentId}`)));
|
|
136
141
|
return result;
|
|
137
142
|
}
|
|
138
143
|
// =============================================================================
|
|
@@ -196,6 +201,8 @@ export function renderInlineMarkdown(text) {
|
|
|
196
201
|
result = result.replace(/(?<![*\s])\*(\S+)\*(?!\*)/g, (_match, word) => chalkWithColors.italic(word));
|
|
197
202
|
// Handle `code` - use theme primary color
|
|
198
203
|
result = result.replace(/`([^`]+)`/g, (_match, code) => s.primary(code));
|
|
204
|
+
// Handle $agent references - bold + secondary color
|
|
205
|
+
result = result.replace(/(?<![$\w])\$([a-zA-Z_][a-zA-Z0-9_]*)\b/g, (_match, agentId) => chalkWithColors.bold(s.secondary(`$${agentId}`)));
|
|
199
206
|
return result;
|
|
200
207
|
}
|
|
201
208
|
// =============================================================================
|
|
@@ -244,8 +251,8 @@ export function formatToolResult(result) {
|
|
|
244
251
|
if (nonEmptyLines > 3) {
|
|
245
252
|
return s.muted(`${String(nonEmptyLines)} lines`);
|
|
246
253
|
}
|
|
247
|
-
const
|
|
248
|
-
return s.muted(
|
|
254
|
+
const singleLine = result.replace(/\n/g, ' ');
|
|
255
|
+
return s.muted(truncate(singleLine, 80));
|
|
249
256
|
}
|
|
250
257
|
}
|
|
251
258
|
// Array result - show count and type hint
|
|
@@ -452,7 +459,7 @@ export function formatToolExecution(name, args, result) {
|
|
|
452
459
|
const lines = [];
|
|
453
460
|
let displayArgs = args;
|
|
454
461
|
if (args && !verbose && args.length > 60) {
|
|
455
|
-
displayArgs = args
|
|
462
|
+
displayArgs = truncate(args, 60);
|
|
456
463
|
}
|
|
457
464
|
const toolHeader = displayArgs
|
|
458
465
|
? s.warning(`● ${name}`) + s.secondary(`(${displayArgs})`)
|
|
@@ -560,15 +567,6 @@ function formatDuration(ms) {
|
|
|
560
567
|
const remainingSeconds = Math.floor(seconds % 60);
|
|
561
568
|
return `${String(minutes)}m ${String(remainingSeconds)}s`;
|
|
562
569
|
}
|
|
563
|
-
/**
|
|
564
|
-
* Format token count (e.g., "18.1k", "500")
|
|
565
|
-
*/
|
|
566
|
-
function formatTokens(tokens) {
|
|
567
|
-
if (tokens >= 1000) {
|
|
568
|
-
return `${(tokens / 1000).toFixed(1)}k`;
|
|
569
|
-
}
|
|
570
|
-
return tokens.toString();
|
|
571
|
-
}
|
|
572
570
|
/**
|
|
573
571
|
* Print sub-agent completion summary
|
|
574
572
|
* Format matches the footer's subagent zone when done:
|
|
@@ -716,6 +714,6 @@ function printWorkflowGuidance(status, stage) {
|
|
|
716
714
|
*/
|
|
717
715
|
export function formatPendingMessage(content) {
|
|
718
716
|
const s = getStyles();
|
|
719
|
-
const truncated = content
|
|
717
|
+
const truncated = truncate(content, 60);
|
|
720
718
|
return s.muted('⏳ ') + s.muted(truncated);
|
|
721
719
|
}
|
package/dist/ui/diff.d.ts
CHANGED
|
@@ -28,10 +28,16 @@ export declare function generateEditDiff(filePath: string, oldText: string, newT
|
|
|
28
28
|
* Format a diff header showing what changed
|
|
29
29
|
*/
|
|
30
30
|
export declare function formatDiffHeader(filePath: string, additions: number, removals: number): string;
|
|
31
|
+
/**
|
|
32
|
+
* Compute the full modified file content after applying an edit.
|
|
33
|
+
* For edit: reads file, applies text replacement, returns full modified content.
|
|
34
|
+
* Returns null if the file can't be read or the old text isn't found.
|
|
35
|
+
*/
|
|
36
|
+
export declare function computeModifiedContent(filePath: string, oldText: string, newText: string, replaceAll?: boolean): string | null;
|
|
31
37
|
/**
|
|
32
38
|
* Generate a simple diff for write_file operations (new content only)
|
|
33
39
|
*/
|
|
34
|
-
export declare function generateWriteDiff(
|
|
40
|
+
export declare function generateWriteDiff(_filePath: string, content: string, _isNew: boolean): DiffResult;
|
|
35
41
|
/**
|
|
36
42
|
* Format header for write_file operations
|
|
37
43
|
*/
|
package/dist/ui/diff.js
CHANGED
|
@@ -36,65 +36,77 @@ export function generateEditDiff(filePath, oldText, newText, replaceAll = false)
|
|
|
36
36
|
// File doesn't exist yet or can't be read
|
|
37
37
|
return null;
|
|
38
38
|
}
|
|
39
|
-
//
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
39
|
+
// Find all occurrences of oldText in the file (supports multi-line)
|
|
40
|
+
const occurrences = [];
|
|
41
|
+
let searchFrom = 0;
|
|
42
|
+
let idx = fileContent.indexOf(oldText, searchFrom);
|
|
43
|
+
while (idx !== -1) {
|
|
44
|
+
occurrences.push(idx);
|
|
45
|
+
if (!replaceAll)
|
|
46
|
+
break;
|
|
47
|
+
searchFrom = idx + oldText.length;
|
|
48
|
+
idx = fileContent.indexOf(oldText, searchFrom);
|
|
49
49
|
}
|
|
50
|
-
if (
|
|
51
|
-
// Old text not found
|
|
50
|
+
if (occurrences.length === 0) {
|
|
52
51
|
return null;
|
|
53
52
|
}
|
|
53
|
+
const lines = fileContent.split('\n');
|
|
54
|
+
// Convert character offset to line number
|
|
55
|
+
const charOffsetToLine = (offset) => {
|
|
56
|
+
let chars = 0;
|
|
57
|
+
for (let i = 0; i < lines.length; i++) {
|
|
58
|
+
if (offset <= chars + lines[i].length)
|
|
59
|
+
return i;
|
|
60
|
+
chars += lines[i].length + 1; // +1 for \n
|
|
61
|
+
}
|
|
62
|
+
return lines.length - 1;
|
|
63
|
+
};
|
|
64
|
+
const oldLines = oldText.split('\n');
|
|
65
|
+
const newLines = newText.split('\n');
|
|
54
66
|
// Build the diff output
|
|
55
67
|
const diffLines = [];
|
|
56
68
|
let additions = 0;
|
|
57
69
|
let removals = 0;
|
|
58
|
-
// Track which context lines have been shown
|
|
59
70
|
const shownContextLines = new Set();
|
|
60
71
|
let lastShownLine = -999;
|
|
61
|
-
for (let
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
const contextStart = Math.max(0,
|
|
65
|
-
const contextEnd = Math.min(lines.length - 1,
|
|
66
|
-
// Add separator if there's a gap
|
|
72
|
+
for (let occIdx = 0; occIdx < occurrences.length; occIdx++) {
|
|
73
|
+
const startLine = charOffsetToLine(occurrences[occIdx]);
|
|
74
|
+
const endLine = startLine + oldLines.length - 1;
|
|
75
|
+
const contextStart = Math.max(0, startLine - CONTEXT_LINES);
|
|
76
|
+
const contextEnd = Math.min(lines.length - 1, endLine + CONTEXT_LINES);
|
|
77
|
+
// Add separator if there's a gap
|
|
67
78
|
const s = getStyles();
|
|
68
79
|
if (lastShownLine >= 0 && contextStart > lastShownLine + 1) {
|
|
69
80
|
diffLines.push(s.muted(' ...'));
|
|
70
81
|
}
|
|
71
|
-
//
|
|
72
|
-
for (let i = contextStart; i <
|
|
82
|
+
// Context lines before
|
|
83
|
+
for (let i = contextStart; i < startLine; i++) {
|
|
73
84
|
if (!shownContextLines.has(i)) {
|
|
74
|
-
|
|
75
|
-
diffLines.push(formatContextLine(lineNumStr, lines[i]));
|
|
85
|
+
diffLines.push(formatContextLine(String(i + 1).padStart(6), lines[i]));
|
|
76
86
|
shownContextLines.add(i);
|
|
77
87
|
lastShownLine = i;
|
|
78
88
|
}
|
|
79
89
|
}
|
|
80
|
-
//
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
90
|
+
// Removed lines (old text)
|
|
91
|
+
for (let i = 0; i < oldLines.length; i++) {
|
|
92
|
+
const lineNum = startLine + i;
|
|
93
|
+
diffLines.push(formatRemovedLine(String(lineNum + 1).padStart(6), lines[lineNum]));
|
|
94
|
+
shownContextLines.add(lineNum);
|
|
95
|
+
lastShownLine = lineNum;
|
|
96
|
+
}
|
|
97
|
+
removals += oldLines.length;
|
|
98
|
+
// Added lines (new text)
|
|
99
|
+
for (let i = 0; i < newLines.length; i++) {
|
|
100
|
+
diffLines.push(formatAddedLine(String(startLine + 1).padStart(6), newLines[i]));
|
|
101
|
+
}
|
|
102
|
+
additions += newLines.length;
|
|
103
|
+
// Context lines after
|
|
104
|
+
const nextStartLine = occIdx < occurrences.length - 1
|
|
105
|
+
? charOffsetToLine(occurrences[occIdx + 1])
|
|
106
|
+
: Infinity;
|
|
107
|
+
for (let i = endLine + 1; i <= contextEnd && i < nextStartLine; i++) {
|
|
95
108
|
if (!shownContextLines.has(i)) {
|
|
96
|
-
|
|
97
|
-
diffLines.push(formatContextLine(ctxLineNumStr, lines[i]));
|
|
109
|
+
diffLines.push(formatContextLine(String(i + 1).padStart(6), lines[i]));
|
|
98
110
|
shownContextLines.add(i);
|
|
99
111
|
lastShownLine = i;
|
|
100
112
|
}
|
|
@@ -147,24 +159,49 @@ function formatAddedLine(lineNum, content) {
|
|
|
147
159
|
return `${s.muted(lineNum)} ${chalk.bgGreen.black('+')} ${chalk.bgGreen.black(content)}`;
|
|
148
160
|
}
|
|
149
161
|
// =============================================================================
|
|
162
|
+
// Modified Content Generation (for VS Code diff view)
|
|
163
|
+
// =============================================================================
|
|
164
|
+
/**
|
|
165
|
+
* Compute the full modified file content after applying an edit.
|
|
166
|
+
* For edit: reads file, applies text replacement, returns full modified content.
|
|
167
|
+
* Returns null if the file can't be read or the old text isn't found.
|
|
168
|
+
*/
|
|
169
|
+
export function computeModifiedContent(filePath, oldText, newText, replaceAll) {
|
|
170
|
+
let fileContent;
|
|
171
|
+
try {
|
|
172
|
+
fileContent = fs.readFileSync(filePath, 'utf-8');
|
|
173
|
+
}
|
|
174
|
+
catch {
|
|
175
|
+
return null;
|
|
176
|
+
}
|
|
177
|
+
// Check that oldText exists in the file
|
|
178
|
+
if (!fileContent.includes(oldText)) {
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
if (replaceAll) {
|
|
182
|
+
// Replace all occurrences
|
|
183
|
+
let result = fileContent;
|
|
184
|
+
while (result.includes(oldText)) {
|
|
185
|
+
result = result.replace(oldText, newText);
|
|
186
|
+
}
|
|
187
|
+
return result;
|
|
188
|
+
}
|
|
189
|
+
// Replace first occurrence only
|
|
190
|
+
return fileContent.replace(oldText, newText);
|
|
191
|
+
}
|
|
192
|
+
// =============================================================================
|
|
150
193
|
// Write File Diff (for new files or complete overwrites)
|
|
151
194
|
// =============================================================================
|
|
152
195
|
/**
|
|
153
196
|
* Generate a simple diff for write_file operations (new content only)
|
|
154
197
|
*/
|
|
155
|
-
export function generateWriteDiff(
|
|
198
|
+
export function generateWriteDiff(_filePath, content, _isNew) {
|
|
156
199
|
const lines = content.split('\n');
|
|
157
200
|
const diffLines = [];
|
|
158
|
-
|
|
159
|
-
const previewLines = Math.min(lines.length, 10);
|
|
160
|
-
for (let i = 0; i < previewLines; i++) {
|
|
201
|
+
for (let i = 0; i < lines.length; i++) {
|
|
161
202
|
const lineNum = String(i + 1).padStart(6);
|
|
162
203
|
diffLines.push(formatAddedLine(lineNum, lines[i]));
|
|
163
204
|
}
|
|
164
|
-
if (lines.length > previewLines) {
|
|
165
|
-
const s = getStyles();
|
|
166
|
-
diffLines.push(s.muted(` ... ${String(lines.length - previewLines)} more lines`));
|
|
167
|
-
}
|
|
168
205
|
return {
|
|
169
206
|
lines: diffLines,
|
|
170
207
|
additions: lines.length,
|
package/dist/ui/ephemeral.js
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
import chalk from 'chalk';
|
|
12
12
|
import { getStyles } from '../themes/index.js';
|
|
13
13
|
import * as terminal from './terminal.js';
|
|
14
|
+
import { formatTokens } from './base/index.js';
|
|
14
15
|
import { formatPendingMessage } from './conversation.js';
|
|
15
16
|
// Note: This file is deprecated but kept for reference.
|
|
16
17
|
// All pc.* calls below have been converted to use getStyles() for theme support.
|
|
@@ -59,15 +60,6 @@ function formatDuration(ms) {
|
|
|
59
60
|
const remainingSeconds = seconds % 60;
|
|
60
61
|
return `${String(minutes)}m ${String(remainingSeconds)}s`;
|
|
61
62
|
}
|
|
62
|
-
/**
|
|
63
|
-
* Format token count (e.g., "1.2k", "500")
|
|
64
|
-
*/
|
|
65
|
-
function formatTokens(tokens) {
|
|
66
|
-
if (tokens >= 1000) {
|
|
67
|
-
return `${(tokens / 1000).toFixed(1)}k`;
|
|
68
|
-
}
|
|
69
|
-
return tokens.toString();
|
|
70
|
-
}
|
|
71
63
|
/**
|
|
72
64
|
* Render todo list with visual styling
|
|
73
65
|
*/
|
|
@@ -129,6 +121,8 @@ export class EphemeralZone {
|
|
|
129
121
|
this.state.spinner = {
|
|
130
122
|
text: this.thinkingWord,
|
|
131
123
|
tokens: 0,
|
|
124
|
+
inputTokens: 0,
|
|
125
|
+
outputTokens: 0,
|
|
132
126
|
startTime: Date.now(),
|
|
133
127
|
};
|
|
134
128
|
// Start animation
|
|
@@ -39,6 +39,30 @@ export declare function replaceAtMention(input: string, cursorPos: number, compl
|
|
|
39
39
|
input: string;
|
|
40
40
|
cursorPos: number;
|
|
41
41
|
};
|
|
42
|
+
/**
|
|
43
|
+
* Extract the $ mention being typed at the cursor position
|
|
44
|
+
* Returns the partial text after $ if in a $ context, null otherwise
|
|
45
|
+
*
|
|
46
|
+
* @param input - The current line text
|
|
47
|
+
* @param cursorPos - Current cursor position within the line
|
|
48
|
+
* @returns The partial agent name after $, or null if not in $ context
|
|
49
|
+
*/
|
|
50
|
+
export declare function extractDollarMention(input: string, cursorPos: number): {
|
|
51
|
+
partial: string;
|
|
52
|
+
startPos: number;
|
|
53
|
+
} | null;
|
|
54
|
+
/**
|
|
55
|
+
* Replace the $ mention with completed agent name
|
|
56
|
+
*
|
|
57
|
+
* @param input - Full input text
|
|
58
|
+
* @param cursorPos - Current cursor position
|
|
59
|
+
* @param agentId - The completed agent ID to insert
|
|
60
|
+
* @returns New input text and new cursor position
|
|
61
|
+
*/
|
|
62
|
+
export declare function replaceDollarMention(input: string, cursorPos: number, agentId: string): {
|
|
63
|
+
input: string;
|
|
64
|
+
cursorPos: number;
|
|
65
|
+
};
|
|
42
66
|
/**
|
|
43
67
|
* Clear the file cache (call when cwd changes)
|
|
44
68
|
*/
|
|
@@ -228,6 +228,62 @@ export function replaceAtMention(input, cursorPos, completedPath) {
|
|
|
228
228
|
const newCursorPos = atPos + 1 + completedPath.length;
|
|
229
229
|
return { input: newInput, cursorPos: newCursorPos };
|
|
230
230
|
}
|
|
231
|
+
/**
|
|
232
|
+
* Extract the $ mention being typed at the cursor position
|
|
233
|
+
* Returns the partial text after $ if in a $ context, null otherwise
|
|
234
|
+
*
|
|
235
|
+
* @param input - The current line text
|
|
236
|
+
* @param cursorPos - Current cursor position within the line
|
|
237
|
+
* @returns The partial agent name after $, or null if not in $ context
|
|
238
|
+
*/
|
|
239
|
+
export function extractDollarMention(input, cursorPos) {
|
|
240
|
+
// Look backwards from cursor to find $
|
|
241
|
+
let start = cursorPos - 1;
|
|
242
|
+
while (start >= 0) {
|
|
243
|
+
const char = input[start];
|
|
244
|
+
// Found $
|
|
245
|
+
if (char === '$') {
|
|
246
|
+
// Make sure it's at start or after whitespace
|
|
247
|
+
if (start === 0 || /\s/.test(input[start - 1])) {
|
|
248
|
+
return {
|
|
249
|
+
partial: input.slice(start + 1, cursorPos),
|
|
250
|
+
startPos: start,
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
return null;
|
|
254
|
+
}
|
|
255
|
+
// Hit whitespace without finding $ - not in $ context
|
|
256
|
+
if (/\s/.test(char)) {
|
|
257
|
+
return null;
|
|
258
|
+
}
|
|
259
|
+
start--;
|
|
260
|
+
}
|
|
261
|
+
return null;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Replace the $ mention with completed agent name
|
|
265
|
+
*
|
|
266
|
+
* @param input - Full input text
|
|
267
|
+
* @param cursorPos - Current cursor position
|
|
268
|
+
* @param agentId - The completed agent ID to insert
|
|
269
|
+
* @returns New input text and new cursor position
|
|
270
|
+
*/
|
|
271
|
+
export function replaceDollarMention(input, cursorPos, agentId) {
|
|
272
|
+
// Find the $ position
|
|
273
|
+
let dollarPos = cursorPos - 1;
|
|
274
|
+
while (dollarPos >= 0 && input[dollarPos] !== '$') {
|
|
275
|
+
dollarPos--;
|
|
276
|
+
}
|
|
277
|
+
if (dollarPos < 0) {
|
|
278
|
+
return { input, cursorPos };
|
|
279
|
+
}
|
|
280
|
+
// Replace from $ to cursor with the completed agent + space
|
|
281
|
+
const before = input.slice(0, dollarPos);
|
|
282
|
+
const after = input.slice(cursorPos);
|
|
283
|
+
const newInput = `${before}$${agentId} ${after}`;
|
|
284
|
+
const newCursorPos = dollarPos + 1 + agentId.length + 1; // +1 for $ +1 for space
|
|
285
|
+
return { input: newInput, cursorPos: newCursorPos };
|
|
286
|
+
}
|
|
231
287
|
/**
|
|
232
288
|
* Clear the file cache (call when cwd changes)
|
|
233
289
|
*/
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Footer renderer.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from TerminalUI — owns render state (line height tracking,
|
|
5
|
+
* spinner animation) and the render pipeline (clear, render, line builders).
|
|
6
|
+
* Reads application state through the host's getRenderData() snapshot.
|
|
7
|
+
*/
|
|
8
|
+
import type { TodoItem, AgentMode } from './types.js';
|
|
9
|
+
import type { TerminalUIConfig } from './terminal-types.js';
|
|
10
|
+
import type { TurnMetrics } from './turn-metrics.js';
|
|
11
|
+
import type { StatusBarController } from './status-bar-controller.js';
|
|
12
|
+
import type { AutocompleteController } from './autocomplete-controller.js';
|
|
13
|
+
import type { LiveRegion } from './live-region.js';
|
|
14
|
+
export interface FooterRendererHost {
|
|
15
|
+
/** Check if footer rendering should proceed. */
|
|
16
|
+
isFooterRenderAllowed(): boolean;
|
|
17
|
+
/** Build a snapshot of application state for the render pipeline. */
|
|
18
|
+
getRenderData(): FooterRenderData;
|
|
19
|
+
}
|
|
20
|
+
export interface FooterRenderData {
|
|
21
|
+
liveRegion: LiveRegion;
|
|
22
|
+
liveVerbose: boolean;
|
|
23
|
+
agentRunning: boolean;
|
|
24
|
+
currentTool: string | null;
|
|
25
|
+
spinnerText: string | null;
|
|
26
|
+
activeBashInfo: {
|
|
27
|
+
toolUseId: string;
|
|
28
|
+
startTime: number;
|
|
29
|
+
} | null;
|
|
30
|
+
turnMetrics: TurnMetrics;
|
|
31
|
+
todos: TodoItem[];
|
|
32
|
+
showTodos: boolean;
|
|
33
|
+
lines: readonly string[];
|
|
34
|
+
currentLine: number;
|
|
35
|
+
cursorPos: number;
|
|
36
|
+
queuedInputs: readonly string[];
|
|
37
|
+
suggestion: string | null;
|
|
38
|
+
promptPrefix: string;
|
|
39
|
+
promptPrefixLen: number;
|
|
40
|
+
ac: AutocompleteController;
|
|
41
|
+
statusBar: StatusBarController;
|
|
42
|
+
mode: AgentMode;
|
|
43
|
+
activePlanName: string | null;
|
|
44
|
+
activeTeamAgent: {
|
|
45
|
+
id: string;
|
|
46
|
+
displayName: string;
|
|
47
|
+
mascot: string;
|
|
48
|
+
} | null;
|
|
49
|
+
projectName: string | null;
|
|
50
|
+
conversationFilterActive: boolean;
|
|
51
|
+
hasRestoredHistory: boolean;
|
|
52
|
+
config: TerminalUIConfig;
|
|
53
|
+
}
|
|
54
|
+
export declare class FooterRenderer {
|
|
55
|
+
private lastRenderHeight;
|
|
56
|
+
private cursorLineFromBottom;
|
|
57
|
+
private spinnerFrame;
|
|
58
|
+
private spinnerTimer;
|
|
59
|
+
private readonly spinnerFrames;
|
|
60
|
+
private readonly host;
|
|
61
|
+
constructor(host: FooterRendererHost);
|
|
62
|
+
clear(): void;
|
|
63
|
+
render(): void;
|
|
64
|
+
resetRenderState(): void;
|
|
65
|
+
startSpinnerAnimation(onTick: () => void): void;
|
|
66
|
+
stopSpinnerAnimation(): void;
|
|
67
|
+
private buildSpinnerLine;
|
|
68
|
+
private buildModeLine;
|
|
69
|
+
}
|