@compilr-dev/cli 0.4.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 +254 -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 +134 -4
- package/dist/agent.js +345 -166
- package/dist/anchors/index.d.ts +9 -0
- package/dist/anchors/index.js +9 -0
- package/dist/anchors/project-anchors.d.ts +79 -0
- package/dist/anchors/project-anchors.js +202 -0
- 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/index.d.ts +2 -1
- 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.d.ts +13 -0
- package/dist/commands-v2/handlers/context.js +533 -0
- package/dist/commands-v2/handlers/core.d.ts +14 -0
- package/dist/commands-v2/handlers/core.js +290 -0
- package/dist/commands-v2/handlers/debug.d.ts +11 -0
- package/dist/commands-v2/handlers/debug.js +177 -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 +25 -0
- package/dist/commands-v2/handlers/index.js +63 -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.d.ts +22 -0
- package/dist/commands-v2/handlers/project.js +1035 -0
- 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 +17 -0
- package/dist/commands-v2/handlers/settings.js +417 -0
- 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 +14 -0
- package/dist/commands-v2/index.js +18 -0
- package/dist/commands-v2/registry.d.ts +52 -0
- package/dist/commands-v2/registry.js +114 -0
- package/dist/commands-v2/types.d.ts +153 -0
- package/dist/commands-v2/types.js +7 -0
- package/dist/commands.js +123 -7
- 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 +615 -179
- package/dist/input-handlers/index.d.ts +7 -0
- package/dist/input-handlers/index.js +7 -0
- package/dist/input-handlers/memory-handler.d.ts +26 -0
- package/dist/input-handlers/memory-handler.js +69 -0
- 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.d.ts +63 -0
- package/dist/repl-helpers.js +319 -0
- package/dist/repl-v2.d.ts +554 -0
- package/dist/repl-v2.js +3286 -0
- 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 +156 -13
- package/dist/settings/index.js +377 -24
- package/dist/settings/mcp-config.d.ts +76 -0
- package/dist/settings/mcp-config.js +143 -0
- package/dist/settings/paths.d.ts +114 -0
- package/dist/settings/paths.js +270 -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 -58
- package/dist/templates/config-json.d.ts +1 -25
- package/dist/templates/index.d.ts +2 -0
- package/dist/templates/index.js +35 -75
- package/dist/themes/colors.js +3 -1
- package/dist/themes/registry.d.ts +5 -36
- package/dist/themes/registry.js +11 -95
- package/dist/themes/types.d.ts +3 -38
- package/dist/themes/types.js +2 -2
- package/dist/tool-names.d.ts +108 -0
- package/dist/tool-names.js +227 -0
- package/dist/tools/anchor-tools.d.ts +31 -0
- package/dist/tools/anchor-tools.js +255 -0
- 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 +56 -0
- package/dist/tools/backlog-wrappers.js +353 -0
- package/dist/tools/backlog.d.ts +2 -2
- package/dist/tools/backlog.js +2 -2
- package/dist/tools/db-tools.d.ts +12 -0
- package/dist/tools/db-tools.js +14 -0
- 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 +43 -0
- package/dist/tools/document-db.js +220 -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/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 +34 -0
- package/dist/tools/project-db.js +39 -0
- 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 +135 -0
- package/dist/tools/workitem-db.js +730 -0
- package/dist/tools.d.ts +67 -2
- package/dist/tools.js +238 -38
- package/dist/ui/ask-user-overlay.d.ts +2 -2
- package/dist/ui/ask-user-overlay.js +443 -535
- package/dist/ui/ask-user-simple-overlay.d.ts +2 -2
- package/dist/ui/ask-user-simple-overlay.js +182 -209
- package/dist/ui/autocomplete-controller.d.ts +42 -0
- package/dist/ui/autocomplete-controller.js +384 -0
- package/dist/ui/base/index.d.ts +26 -0
- package/dist/ui/base/index.js +33 -0
- package/dist/ui/base/inline-overlay-utils.d.ts +217 -0
- package/dist/ui/base/inline-overlay-utils.js +320 -0
- package/dist/ui/base/inline-overlay.d.ts +159 -0
- package/dist/ui/base/inline-overlay.js +257 -0
- package/dist/ui/base/key-utils.d.ts +15 -0
- package/dist/ui/base/key-utils.js +30 -0
- package/dist/ui/base/overlay-base-v2.d.ts +203 -0
- package/dist/ui/base/overlay-base-v2.js +260 -0
- package/dist/ui/base/overlay-base.d.ts +156 -0
- package/dist/ui/base/overlay-base.js +238 -0
- package/dist/ui/base/overlay-lifecycle.d.ts +65 -0
- package/dist/ui/base/overlay-lifecycle.js +159 -0
- package/dist/ui/base/overlay-types.d.ts +185 -0
- package/dist/ui/base/overlay-types.js +7 -0
- package/dist/ui/base/render-utils.d.ts +27 -0
- package/dist/ui/base/render-utils.js +36 -0
- package/dist/ui/base/screen-stack.d.ts +148 -0
- package/dist/ui/base/screen-stack.js +184 -0
- package/dist/ui/base/tabbed-list-overlay-v2.d.ts +118 -0
- package/dist/ui/base/tabbed-list-overlay-v2.js +335 -0
- package/dist/ui/base/tabbed-list-overlay.d.ts +153 -0
- package/dist/ui/base/tabbed-list-overlay.js +369 -0
- 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.d.ts +75 -4
- package/dist/ui/conversation.js +376 -165
- package/dist/ui/diff.d.ts +7 -1
- package/dist/ui/diff.js +85 -48
- package/dist/ui/ephemeral.d.ts +1 -1
- package/dist/ui/ephemeral.js +4 -10
- package/dist/ui/features/index.d.ts +34 -0
- package/dist/ui/features/index.js +34 -0
- package/dist/ui/features/input-feature.d.ts +85 -0
- package/dist/ui/features/input-feature.js +238 -0
- package/dist/ui/features/list-feature.d.ts +155 -0
- package/dist/ui/features/list-feature.js +244 -0
- package/dist/ui/features/pagination-feature.d.ts +154 -0
- package/dist/ui/features/pagination-feature.js +238 -0
- package/dist/ui/features/search-feature.d.ts +148 -0
- package/dist/ui/features/search-feature.js +185 -0
- package/dist/ui/features/tab-feature.d.ts +194 -0
- package/dist/ui/features/tab-feature.js +307 -0
- 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 +181 -7
- package/dist/ui/footer.js +523 -74
- package/dist/ui/guardrail-overlay.d.ts +29 -0
- package/dist/ui/guardrail-overlay.js +145 -0
- package/dist/ui/index.d.ts +1 -1
- package/dist/ui/index.js +1 -3
- package/dist/ui/input-controller.d.ts +51 -0
- package/dist/ui/input-controller.js +176 -0
- package/dist/ui/input-prompt.d.ts +135 -33
- package/dist/ui/input-prompt.js +728 -337
- package/dist/ui/iteration-limit-overlay.d.ts +2 -2
- package/dist/ui/iteration-limit-overlay.js +92 -128
- package/dist/ui/keyboard-handler.d.ts +57 -0
- package/dist/ui/keyboard-handler.js +557 -0
- package/dist/ui/keys-overlay.d.ts +1 -0
- package/dist/ui/keys-overlay.js +203 -141
- package/dist/ui/line-utils.d.ts +88 -0
- package/dist/ui/line-utils.js +150 -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 +157 -0
- package/dist/ui/live-region.js +379 -0
- package/dist/ui/mascot/expressions.d.ts +32 -0
- package/dist/ui/mascot/expressions.js +213 -0
- package/dist/ui/mascot/index.d.ts +8 -0
- package/dist/ui/mascot/index.js +8 -0
- package/dist/ui/mascot/renderer.d.ts +19 -0
- package/dist/ui/mascot/renderer.js +132 -0
- 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.d.ts +45 -0
- package/dist/ui/overlay/impl/agents-overlay-v2.js +814 -0
- package/dist/ui/overlay/impl/anchors-overlay-v2.d.ts +47 -0
- package/dist/ui/overlay/impl/anchors-overlay-v2.js +749 -0
- package/dist/ui/overlay/impl/arch-type-overlay-v2.d.ts +37 -0
- package/dist/ui/overlay/impl/arch-type-overlay-v2.js +240 -0
- 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.d.ts +72 -0
- package/dist/ui/overlay/impl/ask-user-overlay-v2.js +581 -0
- package/dist/ui/overlay/impl/ask-user-simple-overlay-v2.d.ts +46 -0
- package/dist/ui/overlay/impl/ask-user-simple-overlay-v2.js +204 -0
- 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 +52 -0
- package/dist/ui/overlay/impl/backlog-overlay-v2.js +681 -0
- 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.d.ts +33 -0
- package/dist/ui/overlay/impl/commands-overlay-v2.js +439 -0
- package/dist/ui/overlay/impl/config-overlay-v2.d.ts +111 -0
- package/dist/ui/overlay/impl/config-overlay-v2.js +718 -0
- 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 +57 -0
- package/dist/ui/overlay/impl/dashboard-overlay-v2.js +382 -0
- 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.d.ts +45 -0
- package/dist/ui/overlay/impl/docs-overlay-v2.js +117 -0
- package/dist/ui/overlay/impl/document-detail-overlay-v2.d.ts +84 -0
- package/dist/ui/overlay/impl/document-detail-overlay-v2.js +1112 -0
- 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/guardrail-overlay-v2.d.ts +43 -0
- package/dist/ui/overlay/impl/guardrail-overlay-v2.js +114 -0
- package/dist/ui/overlay/impl/help-overlay-v2.d.ts +57 -0
- package/dist/ui/overlay/impl/help-overlay-v2.js +287 -0
- package/dist/ui/overlay/impl/init-setup-overlay-v2.d.ts +25 -0
- package/dist/ui/overlay/impl/init-setup-overlay-v2.js +97 -0
- package/dist/ui/overlay/impl/iteration-limit-overlay-v2.d.ts +35 -0
- package/dist/ui/overlay/impl/iteration-limit-overlay-v2.js +105 -0
- package/dist/ui/overlay/impl/keys-overlay-v2.d.ts +41 -0
- package/dist/ui/overlay/impl/keys-overlay-v2.js +248 -0
- 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/mascot-overlay-v2.d.ts +41 -0
- package/dist/ui/overlay/impl/mascot-overlay-v2.js +138 -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 +93 -0
- package/dist/ui/overlay/impl/model-overlay-v2.js +1143 -0
- package/dist/ui/overlay/impl/model-warning-overlay-v2.d.ts +46 -0
- package/dist/ui/overlay/impl/model-warning-overlay-v2.js +132 -0
- package/dist/ui/overlay/impl/new-overlay-v2.d.ts +108 -0
- package/dist/ui/overlay/impl/new-overlay-v2.js +1243 -0
- 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.d.ts +36 -0
- package/dist/ui/overlay/impl/permission-overlay-v2.js +380 -0
- 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 +37 -0
- package/dist/ui/overlay/impl/projects-overlay-v2.js +733 -0
- 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/theme-overlay-v2.d.ts +42 -0
- package/dist/ui/overlay/impl/theme-overlay-v2.js +135 -0
- package/dist/ui/overlay/impl/tools-overlay-v2.d.ts +47 -0
- package/dist/ui/overlay/impl/tools-overlay-v2.js +214 -0
- package/dist/ui/overlay/impl/tutorial-overlay-v2.d.ts +45 -0
- package/dist/ui/overlay/impl/tutorial-overlay-v2.js +212 -0
- package/dist/ui/overlay/impl/workflow-overlay-v2.d.ts +80 -0
- package/dist/ui/overlay/impl/workflow-overlay-v2.js +641 -0
- package/dist/ui/overlay/index.d.ts +52 -0
- package/dist/ui/overlay/index.js +54 -0
- package/dist/ui/overlay/key-utils.d.ts +6 -0
- package/dist/ui/overlay/key-utils.js +6 -0
- package/dist/ui/overlay/types.d.ts +140 -0
- package/dist/ui/overlay/types.js +22 -0
- package/dist/ui/overlay-manager.d.ts +43 -0
- package/dist/ui/overlay-manager.js +238 -0
- package/dist/ui/overlays.d.ts +0 -4
- package/dist/ui/overlays.js +4 -460
- package/dist/ui/permission-overlay.d.ts +1 -1
- package/dist/ui/permission-overlay.js +189 -300
- package/dist/ui/providers/types.d.ts +178 -0
- package/dist/ui/providers/types.js +9 -0
- package/dist/ui/render-modes.d.ts +36 -0
- package/dist/ui/render-modes.js +44 -0
- package/dist/ui/startup-menu.d.ts +36 -0
- package/dist/ui/startup-menu.js +236 -0
- package/dist/ui/status-bar-controller.d.ts +33 -0
- package/dist/ui/status-bar-controller.js +99 -0
- package/dist/ui/subagent-renderer.d.ts +117 -0
- package/dist/ui/subagent-renderer.js +318 -0
- package/dist/ui/terminal-autocomplete-utils.d.ts +23 -0
- package/dist/ui/terminal-autocomplete-utils.js +83 -0
- package/dist/ui/terminal-codes.d.ts +94 -0
- package/dist/ui/terminal-codes.js +124 -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 +220 -0
- package/dist/ui/terminal-renderer.js +750 -0
- package/dist/ui/terminal-types.d.ts +179 -0
- package/dist/ui/terminal-types.js +34 -0
- package/dist/ui/terminal-ui.d.ts +331 -0
- package/dist/ui/terminal-ui.js +819 -0
- package/dist/ui/terminal.d.ts +20 -0
- package/dist/ui/terminal.js +72 -0
- package/dist/ui/todo-zone.d.ts +19 -1
- package/dist/ui/todo-zone.js +124 -38
- package/dist/ui/tool-formatters.d.ts +16 -0
- package/dist/ui/tool-formatters.js +1027 -0
- 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/debug-log.d.ts +28 -0
- package/dist/utils/debug-log.js +57 -0
- 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 +39 -17
- package/dist/utils/open-browser.d.ts +5 -0
- package/dist/utils/open-browser.js +32 -0
- package/dist/utils/path-safety.d.ts +56 -0
- package/dist/utils/path-safety.js +240 -0
- 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/dist/workflow/guided-mode-injector.d.ts +42 -0
- package/dist/workflow/guided-mode-injector.js +191 -0
- package/dist/workflow/index.d.ts +8 -0
- package/dist/workflow/index.js +8 -0
- package/dist/workflow/step-criteria.d.ts +62 -0
- package/dist/workflow/step-criteria.js +150 -0
- package/dist/workflow/step-tracker.d.ts +92 -0
- package/dist/workflow/step-tracker.js +141 -0
- package/package.json +32 -12
- package/dist/index.old.d.ts +0 -7
- package/dist/index.old.js +0 -1014
- package/dist/repl.d.ts +0 -121
- package/dist/repl.js +0 -1878
- 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.d.ts +0 -12
- package/dist/ui/agents-overlay.js +0 -501
- package/dist/ui/arch-type-overlay.d.ts +0 -20
- package/dist/ui/arch-type-overlay.js +0 -229
- package/dist/ui/backlog-overlay.d.ts +0 -17
- package/dist/ui/backlog-overlay.js +0 -786
- package/dist/ui/commands-overlay.d.ts +0 -11
- package/dist/ui/commands-overlay.js +0 -410
- package/dist/ui/config-overlay.d.ts +0 -34
- package/dist/ui/config-overlay.js +0 -977
- package/dist/ui/init-overlay.d.ts +0 -24
- package/dist/ui/init-overlay.js +0 -525
- package/dist/ui/input-prompt-v2.d.ts +0 -179
- package/dist/ui/input-prompt-v2.js +0 -991
- package/dist/ui/model-warning-overlay.d.ts +0 -30
- package/dist/ui/model-warning-overlay.js +0 -171
- package/dist/ui/tools-overlay.d.ts +0 -26
- package/dist/ui/tools-overlay.js +0 -278
- package/dist/ui/tutorial-overlay.d.ts +0 -10
- package/dist/ui/tutorial-overlay.js +0 -936
package/dist/ui/conversation.js
CHANGED
|
@@ -2,81 +2,165 @@
|
|
|
2
2
|
* Conversation Renderer
|
|
3
3
|
*
|
|
4
4
|
* Handles the scrolling zone - prints conversation messages.
|
|
5
|
-
*
|
|
5
|
+
* When TerminalRenderer is connected (scroll region mode), uses appendToScrollZone().
|
|
6
|
+
* Otherwise falls back to console.log() for legacy mode.
|
|
6
7
|
*/
|
|
7
|
-
import
|
|
8
|
+
import { Chalk } from 'chalk';
|
|
8
9
|
import { marked } from 'marked';
|
|
9
10
|
import { markedTerminal } from 'marked-terminal';
|
|
10
11
|
import { highlight } from 'cli-highlight';
|
|
11
12
|
import { getStyles } from '../themes/index.js';
|
|
13
|
+
import { getThemeColors } from '../themes/index.js';
|
|
12
14
|
import * as terminal from './terminal.js';
|
|
13
|
-
import { isVerboseEnabled } from '../settings/index.js';
|
|
15
|
+
import { isVerboseEnabled, getMascotSetting } from '../settings/index.js';
|
|
14
16
|
import { detectProjectStatus, getWorkflowStage } from '../utils/project-status.js';
|
|
17
|
+
import { renderMascotWithLogo } from './mascot/index.js';
|
|
18
|
+
import { formatTokens, truncate } from './base/index.js';
|
|
19
|
+
// =============================================================================
|
|
20
|
+
// Renderer Integration
|
|
21
|
+
// =============================================================================
|
|
22
|
+
/** Module-level renderer reference for scroll region mode */
|
|
23
|
+
let rendererInstance = null;
|
|
24
|
+
/**
|
|
25
|
+
* Set the TerminalRenderer instance for scroll region output
|
|
26
|
+
* When set, output goes through renderer.appendToScrollZone()
|
|
27
|
+
* When null, falls back to console.log (legacy mode)
|
|
28
|
+
*/
|
|
29
|
+
export function setRenderer(renderer) {
|
|
30
|
+
rendererInstance = renderer;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Get the current renderer instance
|
|
34
|
+
*/
|
|
35
|
+
export function getRenderer() {
|
|
36
|
+
return rendererInstance;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Output lines to the scroll zone
|
|
40
|
+
* Uses renderer if connected (scroll region mode), otherwise console.log
|
|
41
|
+
*/
|
|
42
|
+
function outputLines(lines) {
|
|
43
|
+
if (rendererInstance) {
|
|
44
|
+
rendererInstance.appendToScrollZone(lines);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
for (const line of lines) {
|
|
48
|
+
console.log(line);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Output a single line to the scroll zone
|
|
54
|
+
*/
|
|
55
|
+
function outputLine(line) {
|
|
56
|
+
outputLines([line]);
|
|
57
|
+
}
|
|
15
58
|
// Create chalk instance with colors forced on for our direct usage
|
|
16
59
|
// Note: FORCE_COLOR=3 is set in index.ts for global chalk-based libraries
|
|
17
60
|
const chalkWithColors = new Chalk({ level: 3 });
|
|
18
|
-
//
|
|
19
|
-
//
|
|
20
|
-
//
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
//
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
61
|
+
// =============================================================================
|
|
62
|
+
// Theme-Aware Markdown Options (using markedTerminal)
|
|
63
|
+
// =============================================================================
|
|
64
|
+
/**
|
|
65
|
+
* Get markedTerminal options configured with current theme colors.
|
|
66
|
+
*/
|
|
67
|
+
function getThemedMarkedOptions() {
|
|
68
|
+
const colors = getThemeColors();
|
|
69
|
+
const chalk = new Chalk({ level: 3 });
|
|
70
|
+
// Create chalk instances with theme colors
|
|
71
|
+
const primaryColor = chalk.hex(colors.primary);
|
|
72
|
+
const secondaryColor = chalk.hex(colors.secondary || colors.primary);
|
|
73
|
+
const fgColor = chalk.hex(colors.foreground);
|
|
74
|
+
const mutedColor = chalk.hex(colors.muted);
|
|
75
|
+
const borderColor = chalk.hex(colors.border);
|
|
76
|
+
return {
|
|
77
|
+
reflowText: true,
|
|
78
|
+
width: Math.min(100, terminal.getTerminalWidth() - 4),
|
|
79
|
+
unescape: true,
|
|
80
|
+
tab: 2,
|
|
81
|
+
showSectionPrefix: false,
|
|
82
|
+
// Theme-aware styling
|
|
83
|
+
heading: primaryColor.bold,
|
|
84
|
+
firstHeading: primaryColor.bold,
|
|
85
|
+
strong: fgColor.bold,
|
|
86
|
+
em: fgColor.italic,
|
|
87
|
+
link: secondaryColor,
|
|
88
|
+
href: secondaryColor.underline,
|
|
89
|
+
blockquote: mutedColor.italic,
|
|
90
|
+
del: mutedColor.strikethrough,
|
|
91
|
+
hr: borderColor,
|
|
92
|
+
codespan: primaryColor,
|
|
93
|
+
code: secondaryColor,
|
|
94
|
+
html: mutedColor,
|
|
95
|
+
table: fgColor,
|
|
96
|
+
listitem: fgColor,
|
|
97
|
+
paragraph: fgColor,
|
|
98
|
+
tableOptions: {
|
|
99
|
+
style: { head: ['bold'], border: [] },
|
|
100
|
+
chars: {
|
|
101
|
+
'top': '─', 'top-mid': '─', 'top-left': '─', 'top-right': '─',
|
|
102
|
+
'bottom': '─', 'bottom-mid': '─', 'bottom-left': '─', 'bottom-right': '─',
|
|
103
|
+
'left': ' ', 'left-mid': ' ', 'mid': '─', 'mid-mid': '─',
|
|
104
|
+
'right': ' ', 'right-mid': ' ', 'middle': ' ',
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Preprocess markdown before parsing.
|
|
111
|
+
*/
|
|
112
|
+
function preprocessMarkdown(content) {
|
|
113
|
+
const lines = content.split('\n');
|
|
114
|
+
return lines.map((line) => {
|
|
115
|
+
// Normalize bullet lists: "* " -> "- "
|
|
116
|
+
if (/^\s*\* /.test(line)) {
|
|
117
|
+
return line.replace(/^(\s*)\* /, '$1- ');
|
|
118
|
+
}
|
|
119
|
+
return line;
|
|
120
|
+
}).join('\n');
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Post-process to catch formatting that markedTerminal missed.
|
|
124
|
+
* Handles: **bold**, `code`, and **`bold code`** patterns.
|
|
125
|
+
*/
|
|
126
|
+
function postProcessFormatting(text) {
|
|
127
|
+
const chalk = new Chalk({ level: 3 });
|
|
128
|
+
const colors = getThemeColors();
|
|
129
|
+
const primary = chalk.hex(colors.primary);
|
|
130
|
+
const secondary = chalk.hex(colors.secondary || colors.primary);
|
|
131
|
+
let result = text;
|
|
132
|
+
// Handle **`code`** (bold code) - common pattern in tool docs
|
|
133
|
+
result = result.replace(/\*\*`([^`]+)`\*\*/g, (_match, code) => chalk.bold(primary(code)));
|
|
134
|
+
// Handle remaining `code` spans
|
|
135
|
+
result = result.replace(/`([^`]+)`/g, (_match, code) => primary(code));
|
|
136
|
+
// Handle remaining **bold**
|
|
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}`)));
|
|
141
|
+
return result;
|
|
142
|
+
}
|
|
33
143
|
// =============================================================================
|
|
34
144
|
// Markdown Rendering
|
|
35
145
|
// =============================================================================
|
|
36
146
|
/**
|
|
37
|
-
* Render markdown text for terminal display
|
|
147
|
+
* Render markdown text for terminal display with theme colors.
|
|
148
|
+
* Uses markedTerminal with theme-aware options.
|
|
38
149
|
*/
|
|
39
150
|
export function renderMarkdown(text) {
|
|
40
151
|
try {
|
|
41
|
-
// Preprocess
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
}
|
|
54
|
-
return line;
|
|
55
|
-
});
|
|
56
|
-
const processed = processedLines.join('\n');
|
|
57
|
-
// marked.parse returns string synchronously with these options
|
|
58
|
-
let rendered = marked.parse(processed, { async: false });
|
|
59
|
-
// Post-process: marked-terminal doesn't always render bold/italic inside list items
|
|
60
|
-
// Convert remaining **bold** and *italic* to ANSI codes
|
|
61
|
-
// Use chalkWithColors to ensure ANSI codes are always generated
|
|
62
|
-
const s = getStyles();
|
|
63
|
-
// Handle **`code`** (bold code) - common pattern
|
|
64
|
-
rendered = rendered.replace(/\*\*`([^`]+)`\*\*/g, (_match, code) => chalkWithColors.bold(s.primary(code)));
|
|
65
|
-
// Handle `code` inside **bold** - e.g., **some `code` here**
|
|
66
|
-
rendered = rendered.replace(/\*\*([^*]*)`([^`]+)`([^*]*)\*\*/g, (_match, before, code, after) => chalkWithColors.bold(`${before}${s.primary(code)}${after}`));
|
|
67
|
-
// Handle **bold** (not already processed)
|
|
68
|
-
rendered = rendered.replace(/\*\*([^*]+)\*\*/g, (_match, boldText) => chalkWithColors.bold(boldText));
|
|
69
|
-
// Handle *italic* - must not be at start of line (bullet) and not part of **
|
|
70
|
-
// Match *text* but not * (bullet with spaces) and not **
|
|
71
|
-
rendered = rendered.replace(/(?<![*\n])\*([^*\s][^*]*[^*\s])\*(?!\*)/g, (_match, italicText) => chalkWithColors.italic(italicText));
|
|
72
|
-
// Also handle single-word italic: *word*
|
|
73
|
-
rendered = rendered.replace(/(?<![*\n])\*(\S+)\*(?!\*)/g, (_match, word) => chalkWithColors.italic(word));
|
|
74
|
-
// Handle `code` (inline code) - use theme primary color
|
|
75
|
-
rendered = rendered.replace(/`([^`]+)`/g, (_match, code) => s.primary(code));
|
|
76
|
-
// Handle numbered lists that weren't processed (e.g., "1. text")
|
|
77
|
-
rendered = rendered.replace(/^(\d+)\.\s{2,}/gm, (_match, num) => chalkWithColors.bold(`${num}. `));
|
|
78
|
-
// Remove trailing newlines that marked adds
|
|
79
|
-
return rendered.replace(/\n+$/, '');
|
|
152
|
+
// Preprocess markdown
|
|
153
|
+
const preprocessed = preprocessMarkdown(text);
|
|
154
|
+
// Configure marked with theme-aware options
|
|
155
|
+
const options = getThemedMarkedOptions();
|
|
156
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any
|
|
157
|
+
marked.use(markedTerminal(options));
|
|
158
|
+
// Parse
|
|
159
|
+
const rendered = marked.parse(preprocessed, { async: false });
|
|
160
|
+
// Post-process for any remaining formatting that markedTerminal missed
|
|
161
|
+
const postProcessed = postProcessFormatting(rendered);
|
|
162
|
+
// Remove excessive trailing newlines
|
|
163
|
+
return postProcessed.replace(/\n{3,}/g, '\n\n').replace(/\n+$/, '');
|
|
80
164
|
}
|
|
81
165
|
catch {
|
|
82
166
|
return text; // Fallback to raw text
|
|
@@ -117,6 +201,8 @@ export function renderInlineMarkdown(text) {
|
|
|
117
201
|
result = result.replace(/(?<![*\s])\*(\S+)\*(?!\*)/g, (_match, word) => chalkWithColors.italic(word));
|
|
118
202
|
// Handle `code` - use theme primary color
|
|
119
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}`)));
|
|
120
206
|
return result;
|
|
121
207
|
}
|
|
122
208
|
// =============================================================================
|
|
@@ -132,6 +218,20 @@ export function formatToolResult(result) {
|
|
|
132
218
|
if (result === null || result === undefined) {
|
|
133
219
|
return '';
|
|
134
220
|
}
|
|
221
|
+
// DEBUG: Log type to understand what's coming in (uncomment if needed)
|
|
222
|
+
// console.error(`[DEBUG formatToolResult] type=${typeof result}, isArray=${Array.isArray(result)}, preview=${String(result).slice(0, 100)}`);
|
|
223
|
+
// Handle JSON strings - parse and format as object
|
|
224
|
+
if (typeof result === 'string' && (result.startsWith('{') || result.startsWith('['))) {
|
|
225
|
+
try {
|
|
226
|
+
const parsed = JSON.parse(result);
|
|
227
|
+
if (typeof parsed === 'object' && parsed !== null) {
|
|
228
|
+
return formatToolResult(parsed); // Recursively format the parsed object
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
catch {
|
|
232
|
+
// Not valid JSON, continue with string handling
|
|
233
|
+
}
|
|
234
|
+
}
|
|
135
235
|
// String result - count lines or truncate
|
|
136
236
|
if (typeof result === 'string') {
|
|
137
237
|
const allLines = result.split('\n');
|
|
@@ -151,8 +251,8 @@ export function formatToolResult(result) {
|
|
|
151
251
|
if (nonEmptyLines > 3) {
|
|
152
252
|
return s.muted(`${String(nonEmptyLines)} lines`);
|
|
153
253
|
}
|
|
154
|
-
const
|
|
155
|
-
return s.muted(
|
|
254
|
+
const singleLine = result.replace(/\n/g, ' ');
|
|
255
|
+
return s.muted(truncate(singleLine, 80));
|
|
156
256
|
}
|
|
157
257
|
}
|
|
158
258
|
// Array result - show count and type hint
|
|
@@ -214,6 +314,40 @@ export function formatToolResult(result) {
|
|
|
214
314
|
const branches = obj.branches;
|
|
215
315
|
return s.muted(`${String(branches?.length ?? 0)} branches`);
|
|
216
316
|
}
|
|
317
|
+
// Backlog/workitem pattern - { items: [...], total: N, filtered: N }
|
|
318
|
+
if ('items' in obj && Array.isArray(obj.items) && 'total' in obj) {
|
|
319
|
+
const items = obj.items;
|
|
320
|
+
const total = obj.total;
|
|
321
|
+
const filtered = 'filtered' in obj ? obj.filtered : items.length;
|
|
322
|
+
if (items.length === 0) {
|
|
323
|
+
return s.muted('no items');
|
|
324
|
+
}
|
|
325
|
+
if (verbose) {
|
|
326
|
+
// Verbose mode: show item summaries
|
|
327
|
+
const lines = [];
|
|
328
|
+
const maxItems = Math.min(items.length, 10);
|
|
329
|
+
for (let i = 0; i < maxItems; i++) {
|
|
330
|
+
const item = items[i];
|
|
331
|
+
const id = item.id || '?';
|
|
332
|
+
const title = (item.title || 'Untitled').slice(0, 50);
|
|
333
|
+
const status = item.status || '?';
|
|
334
|
+
const priority = item.priority ? `[${item.priority}]` : '';
|
|
335
|
+
lines.push(` ${id}: ${title} (${status}) ${priority}`);
|
|
336
|
+
}
|
|
337
|
+
if (items.length > maxItems) {
|
|
338
|
+
lines.push(` ... and ${String(items.length - maxItems)} more`);
|
|
339
|
+
}
|
|
340
|
+
const summary = filtered < total
|
|
341
|
+
? `${String(filtered)} of ${String(total)} items:`
|
|
342
|
+
: `${String(total)} items:`;
|
|
343
|
+
return s.muted(summary + '\n' + lines.join('\n'));
|
|
344
|
+
}
|
|
345
|
+
// Non-verbose: show count summary
|
|
346
|
+
const summary = filtered < total
|
|
347
|
+
? `${String(filtered)} of ${String(total)} items`
|
|
348
|
+
: `${String(total)} items`;
|
|
349
|
+
return s.muted(summary);
|
|
350
|
+
}
|
|
217
351
|
// File read pattern
|
|
218
352
|
if ('content' in obj) {
|
|
219
353
|
const content = String(obj.content);
|
|
@@ -281,28 +415,122 @@ export function formatToolResult(result) {
|
|
|
281
415
|
return s.muted(resultStr.slice(0, 60));
|
|
282
416
|
}
|
|
283
417
|
// =============================================================================
|
|
284
|
-
// Message
|
|
418
|
+
// Message Formatting (return string[] for TerminalRenderer)
|
|
419
|
+
// =============================================================================
|
|
420
|
+
/**
|
|
421
|
+
* Format user message for display
|
|
422
|
+
* Returns: [primary "❯ " + message content, ""]
|
|
423
|
+
*/
|
|
424
|
+
export function formatUserMessage(content) {
|
|
425
|
+
const s = getStyles();
|
|
426
|
+
return [s.primary('❯ ') + content, ''];
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* Format assistant message for display
|
|
430
|
+
* Renders markdown (code blocks, bold, etc.)
|
|
431
|
+
*/
|
|
432
|
+
export function formatAssistantMessage(content) {
|
|
433
|
+
if (!content.trim())
|
|
434
|
+
return [];
|
|
435
|
+
const s = getStyles();
|
|
436
|
+
const lines = [];
|
|
437
|
+
lines.push(s.success('Agent: '));
|
|
438
|
+
lines.push(renderMarkdown(content));
|
|
439
|
+
lines.push('');
|
|
440
|
+
return lines;
|
|
441
|
+
}
|
|
442
|
+
/**
|
|
443
|
+
* Format assistant response (event-based rendering)
|
|
444
|
+
* Used when text is accumulated between tool calls.
|
|
445
|
+
*/
|
|
446
|
+
export function formatAssistantResponse(content) {
|
|
447
|
+
if (!content.trim())
|
|
448
|
+
return [];
|
|
449
|
+
const s = getStyles();
|
|
450
|
+
const rendered = renderInlineMarkdown(content);
|
|
451
|
+
return [s.primary('● ') + rendered];
|
|
452
|
+
}
|
|
453
|
+
/**
|
|
454
|
+
* Format tool execution for display
|
|
455
|
+
*/
|
|
456
|
+
export function formatToolExecution(name, args, result) {
|
|
457
|
+
const s = getStyles();
|
|
458
|
+
const verbose = isVerboseEnabled();
|
|
459
|
+
const lines = [];
|
|
460
|
+
let displayArgs = args;
|
|
461
|
+
if (args && !verbose && args.length > 60) {
|
|
462
|
+
displayArgs = truncate(args, 60);
|
|
463
|
+
}
|
|
464
|
+
const toolHeader = displayArgs
|
|
465
|
+
? s.warning(`● ${name}`) + s.secondary(`(${displayArgs})`)
|
|
466
|
+
: s.warning(`● ${name}`);
|
|
467
|
+
lines.push(toolHeader);
|
|
468
|
+
if (result) {
|
|
469
|
+
lines.push(s.muted(' ⎿ ') + result);
|
|
470
|
+
}
|
|
471
|
+
lines.push('');
|
|
472
|
+
return lines;
|
|
473
|
+
}
|
|
474
|
+
/**
|
|
475
|
+
* Format sub-agent completion summary
|
|
476
|
+
*/
|
|
477
|
+
export function formatSubagentResponse(stats) {
|
|
478
|
+
const s = getStyles();
|
|
479
|
+
const lines = [];
|
|
480
|
+
const typeLabel = stats.type.charAt(0).toUpperCase() + stats.type.slice(1);
|
|
481
|
+
lines.push(s.primary(`● ${typeLabel}(${stats.description})`));
|
|
482
|
+
const duration = formatDuration(stats.durationMs);
|
|
483
|
+
const tokens = formatTokens(stats.tokenCount);
|
|
484
|
+
const toolUses = stats.toolCount === 1 ? '1 tool use' : `${String(stats.toolCount)} tool uses`;
|
|
485
|
+
const statsLine = `${toolUses} · ${tokens} tokens · ${duration}`;
|
|
486
|
+
lines.push(s.muted(` ⎿ Done (${statsLine})`));
|
|
487
|
+
lines.push('');
|
|
488
|
+
return lines;
|
|
489
|
+
}
|
|
490
|
+
/**
|
|
491
|
+
* Format error message
|
|
492
|
+
*/
|
|
493
|
+
export function formatError(message) {
|
|
494
|
+
const s = getStyles();
|
|
495
|
+
return [s.error('✖ ') + message, ''];
|
|
496
|
+
}
|
|
497
|
+
/**
|
|
498
|
+
* Format info message
|
|
499
|
+
*/
|
|
500
|
+
export function formatInfo(message) {
|
|
501
|
+
const s = getStyles();
|
|
502
|
+
return [s.muted(message)];
|
|
503
|
+
}
|
|
504
|
+
/**
|
|
505
|
+
* Format success message
|
|
506
|
+
*/
|
|
507
|
+
export function formatSuccess(message) {
|
|
508
|
+
const s = getStyles();
|
|
509
|
+
return [s.success('✔ ') + message, ''];
|
|
510
|
+
}
|
|
511
|
+
/**
|
|
512
|
+
* Format warning message
|
|
513
|
+
*/
|
|
514
|
+
export function formatWarning(message) {
|
|
515
|
+
const s = getStyles();
|
|
516
|
+
return [s.warning('⚠ ') + message, ''];
|
|
517
|
+
}
|
|
518
|
+
// =============================================================================
|
|
519
|
+
// Message Printing (wrappers for backward compatibility)
|
|
285
520
|
// =============================================================================
|
|
286
521
|
/**
|
|
287
522
|
* Print user message to conversation
|
|
288
523
|
* Format: primary "❯ " + message content
|
|
289
524
|
*/
|
|
290
525
|
export function printUserMessage(content) {
|
|
291
|
-
|
|
292
|
-
console.log(s.primary('❯ ') + content);
|
|
293
|
-
console.log(''); // Blank line after
|
|
526
|
+
outputLines(formatUserMessage(content));
|
|
294
527
|
}
|
|
295
528
|
/**
|
|
296
529
|
* Print assistant message to conversation
|
|
297
530
|
* Renders markdown (code blocks, bold, etc.)
|
|
298
531
|
*/
|
|
299
532
|
export function printAssistantMessage(content) {
|
|
300
|
-
|
|
301
|
-
return;
|
|
302
|
-
const s = getStyles();
|
|
303
|
-
console.log(s.success('Agent: '));
|
|
304
|
-
console.log(renderMarkdown(content));
|
|
305
|
-
console.log(''); // Blank line after
|
|
533
|
+
outputLines(formatAssistantMessage(content));
|
|
306
534
|
}
|
|
307
535
|
/**
|
|
308
536
|
* Print assistant response (event-based rendering)
|
|
@@ -310,13 +538,7 @@ export function printAssistantMessage(content) {
|
|
|
310
538
|
* Format: "● " prefix + rendered markdown with syntax highlighting
|
|
311
539
|
*/
|
|
312
540
|
export function printAssistantResponse(content) {
|
|
313
|
-
|
|
314
|
-
return;
|
|
315
|
-
const s = getStyles();
|
|
316
|
-
// Use bullet prefix (consistent with tool output style)
|
|
317
|
-
// Apply renderInlineMarkdown which handles code blocks with syntax highlighting
|
|
318
|
-
const rendered = renderInlineMarkdown(content);
|
|
319
|
-
console.log(s.primary('● ') + rendered);
|
|
541
|
+
outputLines(formatAssistantResponse(content));
|
|
320
542
|
}
|
|
321
543
|
/**
|
|
322
544
|
* Print tool execution log
|
|
@@ -324,75 +546,63 @@ export function printAssistantResponse(content) {
|
|
|
324
546
|
* When verbose mode is enabled, shows full args
|
|
325
547
|
*/
|
|
326
548
|
export function printToolLog(tool) {
|
|
327
|
-
|
|
328
|
-
const verbose = isVerboseEnabled();
|
|
329
|
-
// In verbose mode, show full args; otherwise truncate
|
|
330
|
-
let displayArgs = tool.args;
|
|
331
|
-
if (tool.args && !verbose && tool.args.length > 60) {
|
|
332
|
-
displayArgs = tool.args.slice(0, 57) + '...';
|
|
333
|
-
}
|
|
334
|
-
const toolHeader = displayArgs
|
|
335
|
-
? s.warning(`● ${tool.name}`) + s.secondary(`(${displayArgs})`)
|
|
336
|
-
: s.warning(`● ${tool.name}`);
|
|
337
|
-
console.log(toolHeader);
|
|
338
|
-
if (tool.result) {
|
|
339
|
-
console.log(s.muted(' ⎿ ') + tool.result);
|
|
340
|
-
}
|
|
341
|
-
console.log(''); // Blank line after
|
|
549
|
+
outputLines(formatToolExecution(tool.name, tool.args, tool.result));
|
|
342
550
|
}
|
|
343
551
|
/**
|
|
344
552
|
* Print tool execution inline (without creating ToolMessage)
|
|
345
553
|
* When verbose mode is enabled, shows full args instead of truncated
|
|
346
554
|
*/
|
|
347
555
|
export function printToolExecution(name, args, result) {
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
?
|
|
357
|
-
: s.warning(`● ${name}`);
|
|
358
|
-
console.log(toolHeader);
|
|
359
|
-
if (result) {
|
|
360
|
-
console.log(s.muted(' ⎿ ') + result);
|
|
556
|
+
outputLines(formatToolExecution(name, args, result));
|
|
557
|
+
}
|
|
558
|
+
/**
|
|
559
|
+
* Format duration in human-readable format (e.g., "1m 23s", "45s", "19.2s")
|
|
560
|
+
*/
|
|
561
|
+
function formatDuration(ms) {
|
|
562
|
+
const seconds = ms / 1000;
|
|
563
|
+
if (seconds < 60) {
|
|
564
|
+
return seconds < 10 ? `${seconds.toFixed(1)}s` : `${String(Math.floor(seconds))}s`;
|
|
361
565
|
}
|
|
362
|
-
|
|
566
|
+
const minutes = Math.floor(seconds / 60);
|
|
567
|
+
const remainingSeconds = Math.floor(seconds % 60);
|
|
568
|
+
return `${String(minutes)}m ${String(remainingSeconds)}s`;
|
|
569
|
+
}
|
|
570
|
+
/**
|
|
571
|
+
* Print sub-agent completion summary
|
|
572
|
+
* Format matches the footer's subagent zone when done:
|
|
573
|
+
* ● Explore(Find CLI entry points)
|
|
574
|
+
* ⎿ Done (6 tool uses · 38.8k tokens · 19s)
|
|
575
|
+
*/
|
|
576
|
+
export function printSubagentResponse(stats) {
|
|
577
|
+
outputLines(formatSubagentResponse(stats));
|
|
363
578
|
}
|
|
364
579
|
/**
|
|
365
580
|
* Print error message
|
|
366
581
|
* Format: error "✖ " + message
|
|
367
582
|
*/
|
|
368
583
|
export function printError(message) {
|
|
369
|
-
|
|
370
|
-
console.log(s.error('✖ ') + message);
|
|
371
|
-
console.log('');
|
|
584
|
+
outputLines(formatError(message));
|
|
372
585
|
}
|
|
373
586
|
/**
|
|
374
587
|
* Print info message
|
|
375
588
|
* Format: muted text
|
|
376
589
|
*/
|
|
377
590
|
export function printInfo(message) {
|
|
378
|
-
|
|
379
|
-
console.log(s.muted(message));
|
|
591
|
+
outputLines(formatInfo(message));
|
|
380
592
|
}
|
|
381
593
|
/**
|
|
382
594
|
* Print success message
|
|
383
595
|
* Format: success "✔ " + message
|
|
384
596
|
*/
|
|
385
597
|
export function printSuccess(message) {
|
|
386
|
-
|
|
387
|
-
console.log(s.success('✔ ') + message);
|
|
598
|
+
outputLines(formatSuccess(message));
|
|
388
599
|
}
|
|
389
600
|
/**
|
|
390
601
|
* Print warning message
|
|
391
602
|
* Format: warning "⚠ " + message
|
|
392
603
|
*/
|
|
393
604
|
export function printWarning(message) {
|
|
394
|
-
|
|
395
|
-
console.log(s.warning('⚠ ') + message);
|
|
605
|
+
outputLines(formatWarning(message));
|
|
396
606
|
}
|
|
397
607
|
// =============================================================================
|
|
398
608
|
// Welcome Banner
|
|
@@ -400,43 +610,34 @@ export function printWarning(message) {
|
|
|
400
610
|
/**
|
|
401
611
|
* Print just the ASCII logo (for startup before full welcome)
|
|
402
612
|
*/
|
|
403
|
-
export function printLogo(version) {
|
|
404
|
-
const s = getStyles();
|
|
613
|
+
export function printLogo(version, projectName) {
|
|
405
614
|
terminal.clearScreen();
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
console.log(s.primary(' |_|') + s.muted(` v${version}`));
|
|
413
|
-
console.log('');
|
|
414
|
-
console.log(chalk.bold('@compilr-dev/cli') + s.muted(' - AI-powered coding assistant'));
|
|
415
|
-
console.log('');
|
|
615
|
+
outputLine('');
|
|
616
|
+
// Get mascot setting and render mascot + logo
|
|
617
|
+
const mascotSetting = getMascotSetting();
|
|
618
|
+
const lines = renderMascotWithLogo(mascotSetting, version, projectName);
|
|
619
|
+
outputLines(lines);
|
|
620
|
+
outputLine('');
|
|
416
621
|
}
|
|
417
622
|
/**
|
|
418
623
|
* Print welcome banner with ASCII logo and contextual guidance
|
|
419
624
|
*/
|
|
420
|
-
export function printWelcome(model, version) {
|
|
625
|
+
export function printWelcome(model, version, projectName) {
|
|
421
626
|
const s = getStyles();
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
console.log(chalk.bold('@compilr-dev/cli') + s.muted(' - AI-powered coding assistant'));
|
|
431
|
-
console.log('');
|
|
432
|
-
console.log(s.muted(`Model: ${model}`));
|
|
433
|
-
console.log('');
|
|
627
|
+
outputLine('');
|
|
628
|
+
// Get mascot setting and render mascot + logo
|
|
629
|
+
const mascotSetting = getMascotSetting();
|
|
630
|
+
const lines = renderMascotWithLogo(mascotSetting, version, projectName);
|
|
631
|
+
outputLines(lines);
|
|
632
|
+
outputLine('');
|
|
633
|
+
outputLine(s.muted(`Model: ${model}`));
|
|
634
|
+
outputLine('');
|
|
434
635
|
// Detect project status and show contextual guidance
|
|
435
636
|
const status = detectProjectStatus();
|
|
436
637
|
const stage = getWorkflowStage(status);
|
|
437
638
|
printWorkflowGuidance(status, stage);
|
|
438
|
-
|
|
439
|
-
|
|
639
|
+
outputLine(s.muted('Type /help for commands, /exit to quit'));
|
|
640
|
+
outputLine('');
|
|
440
641
|
}
|
|
441
642
|
/**
|
|
442
643
|
* Print workflow guidance based on project status
|
|
@@ -446,28 +647,34 @@ function printWorkflowGuidance(status, stage) {
|
|
|
446
647
|
switch (stage) {
|
|
447
648
|
case 'new':
|
|
448
649
|
// Brand new directory, nothing exists
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
650
|
+
outputLines([
|
|
651
|
+
s.muted('Get started:'),
|
|
652
|
+
s.muted(' /new ') + s.secondary('Create project structure'),
|
|
653
|
+
s.muted(' /sketch ') + s.secondary('Quick 6-question outline'),
|
|
654
|
+
s.muted(' /tutorial ') + s.secondary('Learn the workflow'),
|
|
655
|
+
'',
|
|
656
|
+
]);
|
|
454
657
|
break;
|
|
455
658
|
case 'initialized':
|
|
456
659
|
// Existing project, but no compilr setup
|
|
457
660
|
if (status.isExistingProject && !status.hasMemory) {
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
661
|
+
outputLines([
|
|
662
|
+
s.muted(`Detected ${status.projectType || 'existing'} project. Define requirements:`),
|
|
663
|
+
s.muted(' /design ') + s.secondary('Agent-driven requirements'),
|
|
664
|
+
s.muted(' /sketch ') + s.secondary('Quick project outline'),
|
|
665
|
+
s.muted(' /tutorial ') + s.secondary('Learn the workflow'),
|
|
666
|
+
'',
|
|
667
|
+
]);
|
|
463
668
|
}
|
|
464
669
|
break;
|
|
465
670
|
case 'designing':
|
|
466
671
|
// Has PRD or initialized, but no backlog yet
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
672
|
+
outputLines([
|
|
673
|
+
s.muted('Project initialized. Create your backlog:'),
|
|
674
|
+
s.muted(' /design ') + s.secondary('Refine requirements'),
|
|
675
|
+
s.muted(' /backlog ') + s.secondary('View/manage tasks'),
|
|
676
|
+
'',
|
|
677
|
+
]);
|
|
471
678
|
break;
|
|
472
679
|
case 'building':
|
|
473
680
|
// Has backlog with pending items
|
|
@@ -476,20 +683,24 @@ function printWorkflowGuidance(status, stage) {
|
|
|
476
683
|
const taskInfo = inProgress > 0
|
|
477
684
|
? `${String(inProgress)} in progress, ${String(pending)} pending`
|
|
478
685
|
: `${String(pending)} tasks pending`;
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
686
|
+
outputLines([
|
|
687
|
+
s.muted(`Backlog: ${taskInfo}`),
|
|
688
|
+
s.muted(' /backlog ') + s.secondary('View tasks'),
|
|
689
|
+
s.muted(' "build next item" ') + s.secondary('Start working'),
|
|
690
|
+
'',
|
|
691
|
+
]);
|
|
483
692
|
}
|
|
484
693
|
break;
|
|
485
694
|
case 'maintaining':
|
|
486
695
|
// Most items completed
|
|
487
696
|
if (status.backlogStats) {
|
|
488
697
|
const { total, completed } = status.backlogStats;
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
698
|
+
outputLines([
|
|
699
|
+
s.muted(`Backlog: ${String(completed)}/${String(total)} completed`),
|
|
700
|
+
s.muted(' /backlog ') + s.secondary('View tasks'),
|
|
701
|
+
s.muted(' /refine ') + s.secondary('Add new requirements'),
|
|
702
|
+
'',
|
|
703
|
+
]);
|
|
493
704
|
}
|
|
494
705
|
break;
|
|
495
706
|
}
|
|
@@ -503,6 +714,6 @@ function printWorkflowGuidance(status, stage) {
|
|
|
503
714
|
*/
|
|
504
715
|
export function formatPendingMessage(content) {
|
|
505
716
|
const s = getStyles();
|
|
506
|
-
const truncated = content
|
|
717
|
+
const truncated = truncate(content, 60);
|
|
507
718
|
return s.muted('⏳ ') + s.muted(truncated);
|
|
508
719
|
}
|