@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
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Delegations Overlay V2 - View delegation status and history
|
|
3
|
+
*
|
|
4
|
+
* Shows delegations from the coordinator to background specialists.
|
|
5
|
+
* List view with detail drill-down, clear completed, status indicators.
|
|
6
|
+
*/
|
|
7
|
+
import { BaseOverlayV2 } from '../../base/overlay-base-v2.js';
|
|
8
|
+
import { wrapText, truncate } from '../../base/render-utils.js';
|
|
9
|
+
import { getDelegationTracker, } from '../../../multi-agent/delegation-tracker.js';
|
|
10
|
+
export class DelegationsOverlayV2 extends BaseOverlayV2 {
|
|
11
|
+
type = 'inline';
|
|
12
|
+
id = 'delegations-overlay';
|
|
13
|
+
constructor() {
|
|
14
|
+
super({
|
|
15
|
+
selectedIndex: 0,
|
|
16
|
+
screen: 'list',
|
|
17
|
+
detailId: null,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
renderContent(context) {
|
|
21
|
+
this.minHeight = this.state.screen === 'detail' ? 18 : 14;
|
|
22
|
+
if (this.state.screen === 'detail') {
|
|
23
|
+
return this.renderDetail(context);
|
|
24
|
+
}
|
|
25
|
+
return this.renderList(context);
|
|
26
|
+
}
|
|
27
|
+
// ===========================================================================
|
|
28
|
+
// List View
|
|
29
|
+
// ===========================================================================
|
|
30
|
+
renderList(context) {
|
|
31
|
+
const s = context.styles;
|
|
32
|
+
const lines = [];
|
|
33
|
+
const innerWidth = context.width - 4;
|
|
34
|
+
lines.push(...this.renderHeader('Delegations'));
|
|
35
|
+
const tracker = getDelegationTracker();
|
|
36
|
+
const delegations = this.getSortedDelegations();
|
|
37
|
+
const stats = tracker.getStats();
|
|
38
|
+
// Stats line
|
|
39
|
+
const statParts = [];
|
|
40
|
+
if (stats.pending > 0 || stats.running > 0) {
|
|
41
|
+
statParts.push(s.warning(`Active: ${String(stats.pending + stats.running)}`));
|
|
42
|
+
}
|
|
43
|
+
if (stats.completed > 0) {
|
|
44
|
+
statParts.push(s.success(`Completed: ${String(stats.completed)}`));
|
|
45
|
+
}
|
|
46
|
+
if (stats.failed > 0) {
|
|
47
|
+
statParts.push(s.error(`Failed: ${String(stats.failed)}`));
|
|
48
|
+
}
|
|
49
|
+
if (statParts.length > 0) {
|
|
50
|
+
lines.push(` ${statParts.join(' ')}`);
|
|
51
|
+
lines.push('');
|
|
52
|
+
}
|
|
53
|
+
// Ensure selected index is valid
|
|
54
|
+
if (this.state.selectedIndex >= delegations.length) {
|
|
55
|
+
this.state.selectedIndex = Math.max(0, delegations.length - 1);
|
|
56
|
+
}
|
|
57
|
+
if (delegations.length === 0) {
|
|
58
|
+
lines.push(s.muted(' No delegations yet.'));
|
|
59
|
+
lines.push('');
|
|
60
|
+
lines.push(s.muted(' The coordinator uses delegate_background to'));
|
|
61
|
+
lines.push(s.muted(' assign tasks to specialist agents.'));
|
|
62
|
+
lines.push('');
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
for (let i = 0; i < delegations.length; i++) {
|
|
66
|
+
const d = delegations[i];
|
|
67
|
+
const isSelected = i === this.state.selectedIndex;
|
|
68
|
+
const line = this.formatDelegationLine(d, innerWidth - 4, s);
|
|
69
|
+
if (isSelected) {
|
|
70
|
+
lines.push(s.selected(` ${s.primary('›')} ${line} `));
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
lines.push(` ${line}`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
lines.push('');
|
|
77
|
+
}
|
|
78
|
+
// Footer
|
|
79
|
+
if (delegations.length > 0) {
|
|
80
|
+
lines.push(...this.renderFooter('↑↓ navigate · Enter details · c clear done · q close'));
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
lines.push(...this.renderFooter('q close'));
|
|
84
|
+
}
|
|
85
|
+
return lines;
|
|
86
|
+
}
|
|
87
|
+
formatDelegationLine(d, maxWidth, s) {
|
|
88
|
+
const { icon, colorFn } = this.getStatusStyle(d.status, s);
|
|
89
|
+
const duration = this.formatDuration(d.createdAt, d.completedAt);
|
|
90
|
+
const agent = `$${d.targetAgentId}`;
|
|
91
|
+
// Columns: icon(2) + id(12) + agent(8) + task(flex) + status/duration(12)
|
|
92
|
+
const fixedWidth = 2 + 12 + 8 + 12;
|
|
93
|
+
const taskMaxLen = Math.max(10, maxWidth - fixedWidth);
|
|
94
|
+
const task = truncate(d.task, taskMaxLen);
|
|
95
|
+
const statusText = d.status === 'completed' || d.status === 'failed'
|
|
96
|
+
? duration
|
|
97
|
+
: d.status;
|
|
98
|
+
return `${colorFn(icon)} ${s.muted(d.id.padEnd(12))}${s.secondary(agent.padEnd(8))}${task.padEnd(taskMaxLen)}${s.muted(statusText)}`;
|
|
99
|
+
}
|
|
100
|
+
// ===========================================================================
|
|
101
|
+
// Detail View
|
|
102
|
+
// ===========================================================================
|
|
103
|
+
renderDetail(context) {
|
|
104
|
+
const s = context.styles;
|
|
105
|
+
const lines = [];
|
|
106
|
+
const innerWidth = context.width - 4;
|
|
107
|
+
const tracker = getDelegationTracker();
|
|
108
|
+
const d = this.state.detailId ? tracker.get(this.state.detailId) : undefined;
|
|
109
|
+
lines.push(...this.renderHeader(this.state.detailId ?? 'Delegation'));
|
|
110
|
+
if (!d) {
|
|
111
|
+
lines.push(s.error(' Delegation not found.'));
|
|
112
|
+
lines.push('');
|
|
113
|
+
lines.push(...this.renderFooter('Esc back'));
|
|
114
|
+
return lines;
|
|
115
|
+
}
|
|
116
|
+
const { icon, colorFn } = this.getStatusStyle(d.status, s);
|
|
117
|
+
// Info fields
|
|
118
|
+
lines.push(` ${s.primaryBold('Status:')} ${colorFn(`${icon} ${d.status}`)}`);
|
|
119
|
+
lines.push(` ${s.primaryBold('Agent:')} ${s.secondary(`$${d.targetAgentId}`)}`);
|
|
120
|
+
lines.push(` ${s.primaryBold('Created:')} ${s.muted(d.createdAt.toLocaleTimeString())}`);
|
|
121
|
+
lines.push(` ${s.primaryBold('Duration:')} ${s.muted(this.formatDuration(d.createdAt, d.completedAt))}`);
|
|
122
|
+
if (d.todoIndex !== undefined) {
|
|
123
|
+
lines.push(` ${s.primaryBold('Todo:')} ${s.muted(`#${String(d.todoIndex)}`)}`);
|
|
124
|
+
}
|
|
125
|
+
lines.push('');
|
|
126
|
+
// Task
|
|
127
|
+
lines.push(` ${s.primaryBold('Task:')}`);
|
|
128
|
+
const taskLines = wrapText(d.task, innerWidth - 4);
|
|
129
|
+
for (const tl of taskLines) {
|
|
130
|
+
lines.push(` ${tl}`);
|
|
131
|
+
}
|
|
132
|
+
if (d.expectedOutput) {
|
|
133
|
+
lines.push('');
|
|
134
|
+
lines.push(` ${s.primaryBold('Expected Output:')}`);
|
|
135
|
+
const expectedLines = wrapText(d.expectedOutput, innerWidth - 4);
|
|
136
|
+
for (const el of expectedLines) {
|
|
137
|
+
lines.push(` ${s.muted(el)}`);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
// Result
|
|
141
|
+
lines.push('');
|
|
142
|
+
if (d.result) {
|
|
143
|
+
lines.push(` ${s.primaryBold('Result:')}`);
|
|
144
|
+
const summaryLines = wrapText(d.result.summary, innerWidth - 4);
|
|
145
|
+
for (const sl of summaryLines) {
|
|
146
|
+
lines.push(` ${d.result.success ? s.success(sl) : s.error(sl)}`);
|
|
147
|
+
}
|
|
148
|
+
if (d.result.artifactIds.length > 0) {
|
|
149
|
+
lines.push(` ${s.primaryBold('Artifacts:')} ${s.muted(d.result.artifactIds.join(', '))}`);
|
|
150
|
+
}
|
|
151
|
+
if (d.result.error) {
|
|
152
|
+
lines.push(` ${s.primaryBold('Error:')} ${s.error(d.result.error)}`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
lines.push(` ${s.muted('(still running)')}`);
|
|
157
|
+
}
|
|
158
|
+
lines.push('');
|
|
159
|
+
lines.push(...this.renderFooter('Esc back · q close'));
|
|
160
|
+
return lines;
|
|
161
|
+
}
|
|
162
|
+
// ===========================================================================
|
|
163
|
+
// Key Handling
|
|
164
|
+
// ===========================================================================
|
|
165
|
+
handleKey(key) {
|
|
166
|
+
if (this.isCloseKey(key)) {
|
|
167
|
+
if (this.state.screen === 'detail') {
|
|
168
|
+
this.state.screen = 'list';
|
|
169
|
+
this.state.detailId = null;
|
|
170
|
+
return this.rerender();
|
|
171
|
+
}
|
|
172
|
+
return this.close(undefined);
|
|
173
|
+
}
|
|
174
|
+
if (this.state.screen === 'detail') {
|
|
175
|
+
return this.noAction();
|
|
176
|
+
}
|
|
177
|
+
return this.handleListKey(key);
|
|
178
|
+
}
|
|
179
|
+
handleListKey(key) {
|
|
180
|
+
const delegations = this.getSortedDelegations();
|
|
181
|
+
if (this.isUpKey(key)) {
|
|
182
|
+
if (this.state.selectedIndex > 0) {
|
|
183
|
+
this.state.selectedIndex--;
|
|
184
|
+
}
|
|
185
|
+
return this.rerender();
|
|
186
|
+
}
|
|
187
|
+
if (this.isDownKey(key)) {
|
|
188
|
+
if (this.state.selectedIndex < delegations.length - 1) {
|
|
189
|
+
this.state.selectedIndex++;
|
|
190
|
+
}
|
|
191
|
+
return this.rerender();
|
|
192
|
+
}
|
|
193
|
+
if (this.isEnterKey(key)) {
|
|
194
|
+
if (delegations.length > 0 && delegations[this.state.selectedIndex]) {
|
|
195
|
+
this.state.screen = 'detail';
|
|
196
|
+
this.state.detailId = delegations[this.state.selectedIndex].id;
|
|
197
|
+
}
|
|
198
|
+
return this.rerender();
|
|
199
|
+
}
|
|
200
|
+
// 'c' for clear completed/failed/cancelled
|
|
201
|
+
if (key.name === 'c') {
|
|
202
|
+
const tracker = getDelegationTracker();
|
|
203
|
+
const all = tracker.getAll();
|
|
204
|
+
for (const d of all) {
|
|
205
|
+
if (d.status === 'completed' || d.status === 'failed' || d.status === 'cancelled') {
|
|
206
|
+
// Remove from tracker by clearing and re-adding actives
|
|
207
|
+
// DelegationTracker doesn't have a remove method, so we clear all
|
|
208
|
+
// Note: This is a simplification — only clear if there are no active delegations
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
// For now, clear the entire tracker if no active delegations remain
|
|
212
|
+
const stats = tracker.getStats();
|
|
213
|
+
if (stats.pending === 0 && stats.running === 0) {
|
|
214
|
+
tracker.clear();
|
|
215
|
+
}
|
|
216
|
+
this.state.selectedIndex = 0;
|
|
217
|
+
return this.rerender();
|
|
218
|
+
}
|
|
219
|
+
return this.noAction();
|
|
220
|
+
}
|
|
221
|
+
// ===========================================================================
|
|
222
|
+
// Helpers
|
|
223
|
+
// ===========================================================================
|
|
224
|
+
getSortedDelegations() {
|
|
225
|
+
const tracker = getDelegationTracker();
|
|
226
|
+
const delegations = tracker.getAll();
|
|
227
|
+
// Sort: running first, then pending, then completed/failed by time desc
|
|
228
|
+
delegations.sort((a, b) => {
|
|
229
|
+
const statusOrder = (status) => {
|
|
230
|
+
switch (status) {
|
|
231
|
+
case 'running': return 0;
|
|
232
|
+
case 'pending': return 1;
|
|
233
|
+
case 'completed': return 2;
|
|
234
|
+
case 'failed': return 3;
|
|
235
|
+
case 'cancelled': return 4;
|
|
236
|
+
default: return 5;
|
|
237
|
+
}
|
|
238
|
+
};
|
|
239
|
+
const orderDiff = statusOrder(a.status) - statusOrder(b.status);
|
|
240
|
+
if (orderDiff !== 0)
|
|
241
|
+
return orderDiff;
|
|
242
|
+
// Within same status, newest first
|
|
243
|
+
return b.createdAt.getTime() - a.createdAt.getTime();
|
|
244
|
+
});
|
|
245
|
+
return delegations;
|
|
246
|
+
}
|
|
247
|
+
getStatusStyle(status, s) {
|
|
248
|
+
switch (status) {
|
|
249
|
+
case 'running':
|
|
250
|
+
return { icon: '●', colorFn: s.warning };
|
|
251
|
+
case 'pending':
|
|
252
|
+
return { icon: '●', colorFn: s.muted };
|
|
253
|
+
case 'completed':
|
|
254
|
+
return { icon: '✓', colorFn: s.success };
|
|
255
|
+
case 'failed':
|
|
256
|
+
return { icon: '✗', colorFn: s.error };
|
|
257
|
+
case 'cancelled':
|
|
258
|
+
return { icon: '⊘', colorFn: s.muted };
|
|
259
|
+
default:
|
|
260
|
+
return { icon: '?', colorFn: s.muted };
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
formatDuration(from, to) {
|
|
264
|
+
const endTime = to ?? new Date();
|
|
265
|
+
const ms = endTime.getTime() - from.getTime();
|
|
266
|
+
const seconds = Math.floor(ms / 1000);
|
|
267
|
+
const minutes = Math.floor(seconds / 60);
|
|
268
|
+
const hours = Math.floor(minutes / 60);
|
|
269
|
+
if (hours > 0) {
|
|
270
|
+
return `${String(hours)}h ${String(minutes % 60)}m`;
|
|
271
|
+
}
|
|
272
|
+
else if (minutes > 0) {
|
|
273
|
+
return `${String(minutes)}m ${String(seconds % 60)}s`;
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
return `${String(seconds)}s`;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Docs Overlay V2
|
|
3
|
+
*
|
|
4
|
+
* Document browser for project documents (PRD, architecture, design, notes).
|
|
5
|
+
* Uses TabbedListOverlayV2 for consistent list/tab/search behavior.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Tabbed filtering by document type
|
|
9
|
+
* - Search with / toggle
|
|
10
|
+
* - Paginated list
|
|
11
|
+
* - Returns selected document for viewing in separate fullscreen overlay
|
|
12
|
+
*/
|
|
13
|
+
import { TabbedListOverlayV2 } from '../../base/tabbed-list-overlay-v2.js';
|
|
14
|
+
import type { OverlayAction, KeyEvent } from '../types.js';
|
|
15
|
+
import { type ProjectDocument } from '../../../db/repositories/document-repository.js';
|
|
16
|
+
export interface DocsOverlayV2Result {
|
|
17
|
+
/** Selected document to view (if any) */
|
|
18
|
+
selectedDocument?: ProjectDocument;
|
|
19
|
+
/** Whether user cancelled (Ctrl+C or Esc) */
|
|
20
|
+
cancelled: boolean;
|
|
21
|
+
}
|
|
22
|
+
export declare class DocsOverlayV2 extends TabbedListOverlayV2<ProjectDocument, DocsOverlayV2Result> {
|
|
23
|
+
readonly type: "inline";
|
|
24
|
+
readonly id = "docs-overlay-v2";
|
|
25
|
+
private readonly projectName;
|
|
26
|
+
/**
|
|
27
|
+
* @param projectId - Optional project ID to view documents for.
|
|
28
|
+
* If not provided, uses the active project.
|
|
29
|
+
* Pass this when opening from workflow overlay for a specific project.
|
|
30
|
+
*/
|
|
31
|
+
constructor(projectId?: number);
|
|
32
|
+
/**
|
|
33
|
+
* Override to render project name in header
|
|
34
|
+
*/
|
|
35
|
+
protected renderHeader(title: string, subtitle?: string): string[];
|
|
36
|
+
/**
|
|
37
|
+
* Override to handle item selection.
|
|
38
|
+
* Returns the selected document so the command handler can show it in a fullscreen overlay.
|
|
39
|
+
*/
|
|
40
|
+
protected onItemSelected(doc: ProjectDocument): DocsOverlayV2Result | undefined;
|
|
41
|
+
/**
|
|
42
|
+
* Override to return result on close
|
|
43
|
+
*/
|
|
44
|
+
handleKey(key: KeyEvent): OverlayAction<DocsOverlayV2Result>;
|
|
45
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Docs Overlay V2
|
|
3
|
+
*
|
|
4
|
+
* Document browser for project documents (PRD, architecture, design, notes).
|
|
5
|
+
* Uses TabbedListOverlayV2 for consistent list/tab/search behavior.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Tabbed filtering by document type
|
|
9
|
+
* - Search with / toggle
|
|
10
|
+
* - Paginated list
|
|
11
|
+
* - Returns selected document for viewing in separate fullscreen overlay
|
|
12
|
+
*/
|
|
13
|
+
import { TabbedListOverlayV2 } from '../../base/tabbed-list-overlay-v2.js';
|
|
14
|
+
import { documentRepository } from '../../../db/repositories/document-repository.js';
|
|
15
|
+
import { getActiveProject } from '../../../tools/project-db.js';
|
|
16
|
+
import { DOC_TYPE_LABELS, PLAN_STATUS_ICONS } from '../../constants/labels.js';
|
|
17
|
+
// =============================================================================
|
|
18
|
+
// Constants
|
|
19
|
+
// =============================================================================
|
|
20
|
+
const PAGE_SIZE = 10;
|
|
21
|
+
// Status badges for plans (icon-only for compact list view)
|
|
22
|
+
const PLAN_STATUS_LABELS = PLAN_STATUS_ICONS;
|
|
23
|
+
const TABS = [
|
|
24
|
+
{ id: 'all', label: 'All' },
|
|
25
|
+
{ id: 'prd', label: 'PRD' },
|
|
26
|
+
{ id: 'architecture', label: 'ARCH' },
|
|
27
|
+
{ id: 'design', label: 'DESIGN' },
|
|
28
|
+
{ id: 'notes', label: 'NOTES' },
|
|
29
|
+
{ id: 'plan', label: 'PLANS' },
|
|
30
|
+
];
|
|
31
|
+
// =============================================================================
|
|
32
|
+
// Docs Overlay V2
|
|
33
|
+
// =============================================================================
|
|
34
|
+
export class DocsOverlayV2 extends TabbedListOverlayV2 {
|
|
35
|
+
type = 'inline';
|
|
36
|
+
id = 'docs-overlay-v2';
|
|
37
|
+
projectName;
|
|
38
|
+
/**
|
|
39
|
+
* @param projectId - Optional project ID to view documents for.
|
|
40
|
+
* If not provided, uses the active project.
|
|
41
|
+
* Pass this when opening from workflow overlay for a specific project.
|
|
42
|
+
*/
|
|
43
|
+
constructor(projectId) {
|
|
44
|
+
// Use provided projectId, or fall back to active project
|
|
45
|
+
const activeProject = getActiveProject();
|
|
46
|
+
const resolvedProjectId = projectId ?? activeProject?.id ?? null;
|
|
47
|
+
const projectName = projectId
|
|
48
|
+
? null // Will be loaded if needed, but we don't have it here
|
|
49
|
+
: activeProject?.displayName ?? null;
|
|
50
|
+
// Load documents
|
|
51
|
+
const documents = resolvedProjectId !== null
|
|
52
|
+
? documentRepository.listByProject(resolvedProjectId)
|
|
53
|
+
: [];
|
|
54
|
+
super({
|
|
55
|
+
title: 'Documents',
|
|
56
|
+
tabs: TABS,
|
|
57
|
+
items: documents,
|
|
58
|
+
pageSize: PAGE_SIZE,
|
|
59
|
+
filterByTab: (doc, tabId) => {
|
|
60
|
+
if (tabId === 'all')
|
|
61
|
+
return true;
|
|
62
|
+
return doc.docType === tabId;
|
|
63
|
+
},
|
|
64
|
+
getSearchText: (doc) => `${doc.title} ${doc.docType}`,
|
|
65
|
+
renderItem: (doc, isSelected, styles) => {
|
|
66
|
+
const prefix = isSelected ? styles.primary('❯ ') : ' ';
|
|
67
|
+
const typeLabel = (DOC_TYPE_LABELS[doc.docType] || doc.docType).padEnd(8);
|
|
68
|
+
// For plans, show status badge before title
|
|
69
|
+
let titleDisplay = doc.title.slice(0, 50);
|
|
70
|
+
if (doc.docType === 'plan' && doc.status) {
|
|
71
|
+
const statusBadge = PLAN_STATUS_LABELS[doc.status] || '?';
|
|
72
|
+
titleDisplay = `${statusBadge} ${titleDisplay}`;
|
|
73
|
+
}
|
|
74
|
+
if (isSelected) {
|
|
75
|
+
return `${prefix}${styles.primaryBold(typeLabel)} ${styles.primary(titleDisplay)}`;
|
|
76
|
+
}
|
|
77
|
+
return `${prefix}${styles.muted(typeLabel)} ${styles.secondary(titleDisplay)}`;
|
|
78
|
+
},
|
|
79
|
+
showCount: true,
|
|
80
|
+
emptyMessage: resolvedProjectId === null
|
|
81
|
+
? 'No active project. Use /projects to select one.'
|
|
82
|
+
: 'No documents found. Use /design or /arch to create documents.',
|
|
83
|
+
noResultsMessage: 'No documents match the search.',
|
|
84
|
+
});
|
|
85
|
+
this.projectName = projectName;
|
|
86
|
+
this.minHeight = 20;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Override to render project name in header
|
|
90
|
+
*/
|
|
91
|
+
renderHeader(title, subtitle) {
|
|
92
|
+
const displaySubtitle = this.projectName || subtitle;
|
|
93
|
+
return super.renderHeader(title, displaySubtitle);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Override to handle item selection.
|
|
97
|
+
* Returns the selected document so the command handler can show it in a fullscreen overlay.
|
|
98
|
+
*/
|
|
99
|
+
onItemSelected(doc) {
|
|
100
|
+
return { selectedDocument: doc, cancelled: false };
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Override to return result on close
|
|
104
|
+
*/
|
|
105
|
+
handleKey(key) {
|
|
106
|
+
// Check for close keys first
|
|
107
|
+
if (this.isInterruptKey(key)) {
|
|
108
|
+
return this.close({ cancelled: true });
|
|
109
|
+
}
|
|
110
|
+
if (this.isCloseKey(key) && !this.state.searchMode) {
|
|
111
|
+
return this.close({ cancelled: true });
|
|
112
|
+
}
|
|
113
|
+
// Let parent handle everything else (including Enter → onItemSelected)
|
|
114
|
+
// Parent will return the result from onItemSelected, so pass it through
|
|
115
|
+
return super.handleKey(key);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Document Detail Overlay V2
|
|
3
|
+
*
|
|
4
|
+
* Fullscreen markdown document viewer AND editor with vim-style navigation.
|
|
5
|
+
* Separate from DocsOverlayV2 (inline list) to allow proper fullscreen rendering.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Full-screen document viewing with markdown rendering
|
|
9
|
+
* - Vim-style navigation (j/k, g/G, PgUp/PgDn)
|
|
10
|
+
* - Edit mode with raw markdown editing
|
|
11
|
+
* - Save to database (Ctrl+S)
|
|
12
|
+
* - Dirty check with save prompt on exit
|
|
13
|
+
*/
|
|
14
|
+
import { BaseOverlayV2 } from '../../base/overlay-base-v2.js';
|
|
15
|
+
import type { RenderContext, OverlayAction, KeyEvent } from '../types.js';
|
|
16
|
+
import { type ProjectDocument } from '../../../db/repositories/document-repository.js';
|
|
17
|
+
import type { PlanStatus } from '../../../db/schema.js';
|
|
18
|
+
export interface DocumentDetailResult {
|
|
19
|
+
/** Whether to go back to the document list */
|
|
20
|
+
goBack: boolean;
|
|
21
|
+
}
|
|
22
|
+
interface DocumentDetailState {
|
|
23
|
+
contentLines: string[];
|
|
24
|
+
scrollOffset: number;
|
|
25
|
+
isEditMode: boolean;
|
|
26
|
+
rawLines: string[];
|
|
27
|
+
cursorLine: number;
|
|
28
|
+
cursorColumn: number;
|
|
29
|
+
editScrollOffset: number;
|
|
30
|
+
isDirty: boolean;
|
|
31
|
+
originalContent: string;
|
|
32
|
+
showSavePrompt: boolean;
|
|
33
|
+
saveMessage: string | null;
|
|
34
|
+
planStatus: PlanStatus | null;
|
|
35
|
+
showStatusMenu: boolean;
|
|
36
|
+
statusMenuIndex: number;
|
|
37
|
+
availableStatuses: PlanStatus[];
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Fullscreen document viewer and editor overlay.
|
|
41
|
+
* Shows a single document with vim-style scrolling navigation.
|
|
42
|
+
* Supports edit mode for modifying raw markdown content.
|
|
43
|
+
*/
|
|
44
|
+
export declare class DocumentDetailOverlayV2 extends BaseOverlayV2<DocumentDetailState, DocumentDetailResult> {
|
|
45
|
+
private readonly document;
|
|
46
|
+
readonly type: "inline";
|
|
47
|
+
readonly id = "document-detail-overlay-v2";
|
|
48
|
+
readonly usesAlternateScreen = true;
|
|
49
|
+
constructor(document: ProjectDocument);
|
|
50
|
+
/**
|
|
51
|
+
* Enter alternate screen buffer when overlay mounts.
|
|
52
|
+
* This preserves the main screen content.
|
|
53
|
+
*/
|
|
54
|
+
onMount(): void;
|
|
55
|
+
/**
|
|
56
|
+
* Exit alternate screen buffer when overlay unmounts.
|
|
57
|
+
* This restores the main screen content.
|
|
58
|
+
*/
|
|
59
|
+
onUnmount(): void;
|
|
60
|
+
protected renderContent(context: RenderContext): string[];
|
|
61
|
+
private renderViewMode;
|
|
62
|
+
private renderEditMode;
|
|
63
|
+
private renderLineWithCursor;
|
|
64
|
+
private ensureCursorVisible;
|
|
65
|
+
handleKey(key: KeyEvent): OverlayAction<DocumentDetailResult>;
|
|
66
|
+
private handleViewModeKey;
|
|
67
|
+
private handleEditModeKey;
|
|
68
|
+
private handleSavePromptKey;
|
|
69
|
+
private handleStatusMenuKey;
|
|
70
|
+
private changeStatus;
|
|
71
|
+
private moveCursorUp;
|
|
72
|
+
private moveCursorDown;
|
|
73
|
+
private moveCursorLeft;
|
|
74
|
+
private moveCursorRight;
|
|
75
|
+
private clampCursorColumn;
|
|
76
|
+
private getCurrentLine;
|
|
77
|
+
private insertText;
|
|
78
|
+
private handleBackspace;
|
|
79
|
+
private handleDelete;
|
|
80
|
+
private handleEnter;
|
|
81
|
+
private saveDocument;
|
|
82
|
+
private exitEditMode;
|
|
83
|
+
}
|
|
84
|
+
export {};
|