@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,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Guardrail Confirmation Overlay
|
|
3
|
+
*
|
|
4
|
+
* Shows when a guardrail with action='confirm' is triggered.
|
|
5
|
+
* User must approve or deny the risky operation.
|
|
6
|
+
*/
|
|
7
|
+
export interface GuardrailConfirmOptions {
|
|
8
|
+
/** Guardrail name */
|
|
9
|
+
name: string;
|
|
10
|
+
/** Guardrail description/message */
|
|
11
|
+
message: string;
|
|
12
|
+
/** Action type (for display) */
|
|
13
|
+
action: 'warn' | 'confirm' | 'block';
|
|
14
|
+
/** Tool that triggered the guardrail */
|
|
15
|
+
toolName: string;
|
|
16
|
+
/** The input that matched the pattern */
|
|
17
|
+
matchedInput: string;
|
|
18
|
+
/** Category (e.g., 'git', 'filesystem', 'database') */
|
|
19
|
+
category?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface GuardrailConfirmResult {
|
|
22
|
+
/** Whether to proceed with the operation */
|
|
23
|
+
approved: boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Show the guardrail confirmation overlay.
|
|
27
|
+
* Returns { approved: true } if user allows, { approved: false } if denied.
|
|
28
|
+
*/
|
|
29
|
+
export declare function showGuardrailOverlay(options: GuardrailConfirmOptions): Promise<GuardrailConfirmResult>;
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Guardrail Confirmation Overlay
|
|
3
|
+
*
|
|
4
|
+
* Shows when a guardrail with action='confirm' is triggered.
|
|
5
|
+
* User must approve or deny the risky operation.
|
|
6
|
+
*/
|
|
7
|
+
import chalk from 'chalk';
|
|
8
|
+
import { getStyles } from '../themes/index.js';
|
|
9
|
+
import { InlineOverlay } from './base/inline-overlay.js';
|
|
10
|
+
// =============================================================================
|
|
11
|
+
// Overlay Implementation
|
|
12
|
+
// =============================================================================
|
|
13
|
+
class GuardrailOverlayImpl extends InlineOverlay {
|
|
14
|
+
options;
|
|
15
|
+
constructor(options) {
|
|
16
|
+
super();
|
|
17
|
+
this.options = options;
|
|
18
|
+
}
|
|
19
|
+
getInitialState() {
|
|
20
|
+
return {
|
|
21
|
+
selectedIndex: 0, // Default to Deny (safer)
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
render() {
|
|
25
|
+
const s = getStyles();
|
|
26
|
+
const lines = [];
|
|
27
|
+
const cols = this.getTerminalWidth();
|
|
28
|
+
const border = s.muted('─'.repeat(Math.max(1, cols - 1)));
|
|
29
|
+
// Header with warning icon
|
|
30
|
+
lines.push(border);
|
|
31
|
+
lines.push(' ' + s.warning('⚠ Risky Operation Detected'));
|
|
32
|
+
lines.push('');
|
|
33
|
+
// Guardrail info
|
|
34
|
+
const category = this.options.category ? `[${this.options.category}]` : '';
|
|
35
|
+
lines.push(s.muted(` ${category} `) + chalk.bold(this.options.name));
|
|
36
|
+
lines.push('');
|
|
37
|
+
// Message
|
|
38
|
+
const msgLines = this.wrapText(this.options.message, cols - 4);
|
|
39
|
+
for (const line of msgLines) {
|
|
40
|
+
lines.push(' ' + s.muted(line));
|
|
41
|
+
}
|
|
42
|
+
lines.push('');
|
|
43
|
+
// Tool and matched input
|
|
44
|
+
lines.push(s.muted(' Tool: ') + s.primary(this.options.toolName));
|
|
45
|
+
// Show truncated matched input
|
|
46
|
+
const maxInputLen = cols - 12;
|
|
47
|
+
let displayInput = this.options.matchedInput;
|
|
48
|
+
if (displayInput.length > maxInputLen) {
|
|
49
|
+
displayInput = displayInput.substring(0, maxInputLen - 3) + '...';
|
|
50
|
+
}
|
|
51
|
+
// Replace newlines with visible markers
|
|
52
|
+
displayInput = displayInput.replace(/\n/g, '↵');
|
|
53
|
+
lines.push(s.muted(' Match: ') + s.warning(displayInput));
|
|
54
|
+
lines.push('');
|
|
55
|
+
// Action buttons
|
|
56
|
+
const denyLabel = this.state.selectedIndex === 0
|
|
57
|
+
? s.error(' ❯ Deny ')
|
|
58
|
+
: s.muted(' Deny ');
|
|
59
|
+
const allowLabel = this.state.selectedIndex === 1
|
|
60
|
+
? s.warning(' ❯ Allow ')
|
|
61
|
+
: s.muted(' Allow ');
|
|
62
|
+
lines.push(' ' + denyLabel + ' ' + allowLabel);
|
|
63
|
+
lines.push('');
|
|
64
|
+
// Footer
|
|
65
|
+
lines.push(s.muted(' ←/→ Select · Enter Confirm · Esc Deny'));
|
|
66
|
+
lines.push(border);
|
|
67
|
+
return lines;
|
|
68
|
+
}
|
|
69
|
+
handleKey(data) {
|
|
70
|
+
// Ctrl+C or Escape = Deny
|
|
71
|
+
if (this.isCtrlCKey(data) || this.isEscapeKey(data)) {
|
|
72
|
+
return { type: 'close', result: { approved: false } };
|
|
73
|
+
}
|
|
74
|
+
// Left/Right arrows or h/l for navigation
|
|
75
|
+
if (this.isLeftArrowKey(data) || data.toString() === 'h') {
|
|
76
|
+
this.state.selectedIndex = 0;
|
|
77
|
+
return { type: 'continue' };
|
|
78
|
+
}
|
|
79
|
+
if (this.isRightArrowKey(data) || data.toString() === 'l') {
|
|
80
|
+
this.state.selectedIndex = 1;
|
|
81
|
+
return { type: 'continue' };
|
|
82
|
+
}
|
|
83
|
+
// Tab to toggle
|
|
84
|
+
if (this.isTabKey(data)) {
|
|
85
|
+
this.state.selectedIndex = this.state.selectedIndex === 0 ? 1 : 0;
|
|
86
|
+
return { type: 'continue' };
|
|
87
|
+
}
|
|
88
|
+
// Enter to confirm selection
|
|
89
|
+
if (this.isEnterKey(data)) {
|
|
90
|
+
return {
|
|
91
|
+
type: 'close',
|
|
92
|
+
result: { approved: this.state.selectedIndex === 1 },
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
// 'd' or 'n' for Deny
|
|
96
|
+
const keyStr = data.toString().toLowerCase();
|
|
97
|
+
if (keyStr === 'd' || keyStr === 'n') {
|
|
98
|
+
return { type: 'close', result: { approved: false } };
|
|
99
|
+
}
|
|
100
|
+
// 'a' or 'y' for Allow
|
|
101
|
+
if (keyStr === 'a' || keyStr === 'y') {
|
|
102
|
+
return { type: 'close', result: { approved: true } };
|
|
103
|
+
}
|
|
104
|
+
return { type: 'continue' };
|
|
105
|
+
}
|
|
106
|
+
getCleanupSummary(result) {
|
|
107
|
+
const s = getStyles();
|
|
108
|
+
if (result.approved) {
|
|
109
|
+
return s.muted('Guardrail: ') + s.warning('Allowed ') + s.muted(this.options.name);
|
|
110
|
+
}
|
|
111
|
+
return s.muted('Guardrail: ') + s.error('Denied ') + s.muted(this.options.name);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Wrap text to fit within maxWidth
|
|
115
|
+
*/
|
|
116
|
+
wrapText(text, maxWidth) {
|
|
117
|
+
const words = text.split(' ');
|
|
118
|
+
const lines = [];
|
|
119
|
+
let currentLine = '';
|
|
120
|
+
for (const word of words) {
|
|
121
|
+
if (currentLine.length + word.length + 1 <= maxWidth) {
|
|
122
|
+
currentLine += (currentLine ? ' ' : '') + word;
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
if (currentLine)
|
|
126
|
+
lines.push(currentLine);
|
|
127
|
+
currentLine = word;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
if (currentLine)
|
|
131
|
+
lines.push(currentLine);
|
|
132
|
+
return lines;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
// =============================================================================
|
|
136
|
+
// Main Export
|
|
137
|
+
// =============================================================================
|
|
138
|
+
/**
|
|
139
|
+
* Show the guardrail confirmation overlay.
|
|
140
|
+
* Returns { approved: true } if user allows, { approved: false } if denied.
|
|
141
|
+
*/
|
|
142
|
+
export async function showGuardrailOverlay(options) {
|
|
143
|
+
const overlay = new GuardrailOverlayImpl(options);
|
|
144
|
+
return overlay.show();
|
|
145
|
+
}
|
package/dist/ui/index.d.ts
CHANGED
package/dist/ui/index.js
CHANGED
|
@@ -9,7 +9,5 @@ export * from './conversation.js';
|
|
|
9
9
|
export * from './overlays.js';
|
|
10
10
|
// Refactored components (event-driven, persistent footer)
|
|
11
11
|
export * from './todo-zone.js';
|
|
12
|
-
export * from './input-prompt
|
|
12
|
+
export * from './input-prompt.js';
|
|
13
13
|
export * from './footer.js';
|
|
14
|
-
// Note: ephemeral.js and input-prompt.js are legacy and not re-exported
|
|
15
|
-
// to avoid naming conflicts. Import directly if needed.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Input state controller.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from TerminalUI — owns all input state (lines, cursor,
|
|
5
|
+
* history, suggestion, queued inputs) and their manipulation methods.
|
|
6
|
+
* TerminalUI delegates to this controller via getter/setter wrappers.
|
|
7
|
+
*/
|
|
8
|
+
export declare class InputController {
|
|
9
|
+
lines: string[];
|
|
10
|
+
currentLine: number;
|
|
11
|
+
cursorPos: number;
|
|
12
|
+
readonly history: string[];
|
|
13
|
+
historyIndex: number;
|
|
14
|
+
savedInput: string;
|
|
15
|
+
suggestion: string | null;
|
|
16
|
+
queuedInputs: string[];
|
|
17
|
+
/** Get the full input value (all lines joined with newlines). */
|
|
18
|
+
getInputValue(): string;
|
|
19
|
+
/** Get the current line content. */
|
|
20
|
+
getCurrentLineContent(): string;
|
|
21
|
+
/** Clear input and reset to single empty line. */
|
|
22
|
+
clearInput(): void;
|
|
23
|
+
addToHistory(input: string): void;
|
|
24
|
+
/**
|
|
25
|
+
* Navigate to older history entry.
|
|
26
|
+
* @param isAutocompleteActive - when true, navigation is blocked
|
|
27
|
+
* @returns true if input changed
|
|
28
|
+
*/
|
|
29
|
+
navigateHistoryUp(isAutocompleteActive: boolean): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Navigate to newer history entry.
|
|
32
|
+
* @param isAutocompleteActive - when true, navigation is blocked
|
|
33
|
+
* @returns true if input changed
|
|
34
|
+
*/
|
|
35
|
+
navigateHistoryDown(isAutocompleteActive: boolean): boolean;
|
|
36
|
+
resetHistoryNavigation(): void;
|
|
37
|
+
/**
|
|
38
|
+
* Move cursor to previous word boundary (Option+Left).
|
|
39
|
+
* @returns true if cursor moved (caller should trigger render)
|
|
40
|
+
*/
|
|
41
|
+
moveWordLeft(): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Move cursor to next word boundary (Option+Right).
|
|
44
|
+
* @returns true if cursor moved (caller should trigger render)
|
|
45
|
+
*/
|
|
46
|
+
moveWordRight(): boolean;
|
|
47
|
+
getQueuedInputs(): string[];
|
|
48
|
+
popQueuedInput(): string | null;
|
|
49
|
+
hasQueuedInput(): boolean;
|
|
50
|
+
clearQueue(): void;
|
|
51
|
+
}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Input state controller.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from TerminalUI — owns all input state (lines, cursor,
|
|
5
|
+
* history, suggestion, queued inputs) and their manipulation methods.
|
|
6
|
+
* TerminalUI delegates to this controller via getter/setter wrappers.
|
|
7
|
+
*/
|
|
8
|
+
export class InputController {
|
|
9
|
+
// Core multiline input state
|
|
10
|
+
lines = [''];
|
|
11
|
+
currentLine = 0;
|
|
12
|
+
cursorPos = 0;
|
|
13
|
+
// Command history
|
|
14
|
+
history = [];
|
|
15
|
+
historyIndex = -1;
|
|
16
|
+
savedInput = '';
|
|
17
|
+
// Ghost text suggestion
|
|
18
|
+
suggestion = null;
|
|
19
|
+
// Queued user inputs (when agent is busy)
|
|
20
|
+
queuedInputs = [];
|
|
21
|
+
// ===========================================================================
|
|
22
|
+
// Input value helpers
|
|
23
|
+
// ===========================================================================
|
|
24
|
+
/** Get the full input value (all lines joined with newlines). */
|
|
25
|
+
getInputValue() {
|
|
26
|
+
return this.lines.join('\n');
|
|
27
|
+
}
|
|
28
|
+
/** Get the current line content. */
|
|
29
|
+
getCurrentLineContent() {
|
|
30
|
+
return this.lines[this.currentLine];
|
|
31
|
+
}
|
|
32
|
+
/** Clear input and reset to single empty line. */
|
|
33
|
+
clearInput() {
|
|
34
|
+
this.lines = [''];
|
|
35
|
+
this.currentLine = 0;
|
|
36
|
+
this.cursorPos = 0;
|
|
37
|
+
}
|
|
38
|
+
// ===========================================================================
|
|
39
|
+
// History
|
|
40
|
+
// ===========================================================================
|
|
41
|
+
addToHistory(input) {
|
|
42
|
+
const trimmed = input.trim();
|
|
43
|
+
// Don't add empty or duplicate consecutive entries
|
|
44
|
+
if (trimmed && (this.history.length === 0 || this.history[this.history.length - 1] !== trimmed)) {
|
|
45
|
+
this.history.push(trimmed);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Navigate to older history entry.
|
|
50
|
+
* @param isAutocompleteActive - when true, navigation is blocked
|
|
51
|
+
* @returns true if input changed
|
|
52
|
+
*/
|
|
53
|
+
navigateHistoryUp(isAutocompleteActive) {
|
|
54
|
+
if (isAutocompleteActive)
|
|
55
|
+
return false;
|
|
56
|
+
if (this.history.length === 0)
|
|
57
|
+
return false;
|
|
58
|
+
// Save current input when starting to navigate
|
|
59
|
+
if (this.historyIndex === -1) {
|
|
60
|
+
this.savedInput = this.getInputValue();
|
|
61
|
+
}
|
|
62
|
+
// Navigate to older entry
|
|
63
|
+
if (this.historyIndex < this.history.length - 1) {
|
|
64
|
+
this.historyIndex++;
|
|
65
|
+
const historyEntry = this.history[this.history.length - 1 - this.historyIndex];
|
|
66
|
+
// History entries are single-line (newlines stripped on save)
|
|
67
|
+
this.lines = [historyEntry];
|
|
68
|
+
this.currentLine = 0;
|
|
69
|
+
this.cursorPos = historyEntry.length;
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Navigate to newer history entry.
|
|
76
|
+
* @param isAutocompleteActive - when true, navigation is blocked
|
|
77
|
+
* @returns true if input changed
|
|
78
|
+
*/
|
|
79
|
+
navigateHistoryDown(isAutocompleteActive) {
|
|
80
|
+
if (isAutocompleteActive)
|
|
81
|
+
return false;
|
|
82
|
+
if (this.historyIndex < 0)
|
|
83
|
+
return false;
|
|
84
|
+
this.historyIndex--;
|
|
85
|
+
if (this.historyIndex === -1) {
|
|
86
|
+
// Restore saved input (may be multiline)
|
|
87
|
+
this.lines = this.savedInput.split('\n');
|
|
88
|
+
if (this.lines.length === 0)
|
|
89
|
+
this.lines = [''];
|
|
90
|
+
this.currentLine = this.lines.length - 1;
|
|
91
|
+
this.cursorPos = this.lines[this.currentLine].length;
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
// Navigate to newer entry
|
|
95
|
+
const historyEntry = this.history[this.history.length - 1 - this.historyIndex];
|
|
96
|
+
this.lines = [historyEntry];
|
|
97
|
+
this.currentLine = 0;
|
|
98
|
+
this.cursorPos = historyEntry.length;
|
|
99
|
+
}
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
resetHistoryNavigation() {
|
|
103
|
+
this.historyIndex = -1;
|
|
104
|
+
this.savedInput = '';
|
|
105
|
+
}
|
|
106
|
+
// ===========================================================================
|
|
107
|
+
// Word movement
|
|
108
|
+
// ===========================================================================
|
|
109
|
+
/**
|
|
110
|
+
* Move cursor to previous word boundary (Option+Left).
|
|
111
|
+
* @returns true if cursor moved (caller should trigger render)
|
|
112
|
+
*/
|
|
113
|
+
moveWordLeft() {
|
|
114
|
+
const line = this.lines[this.currentLine];
|
|
115
|
+
if (this.cursorPos > 0) {
|
|
116
|
+
let pos = this.cursorPos;
|
|
117
|
+
// Skip spaces
|
|
118
|
+
while (pos > 0 && line[pos - 1] === ' ')
|
|
119
|
+
pos--;
|
|
120
|
+
// Skip word
|
|
121
|
+
while (pos > 0 && line[pos - 1] !== ' ')
|
|
122
|
+
pos--;
|
|
123
|
+
this.cursorPos = pos;
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
else if (this.currentLine > 0) {
|
|
127
|
+
// Move to end of previous line
|
|
128
|
+
this.currentLine--;
|
|
129
|
+
this.cursorPos = this.lines[this.currentLine].length;
|
|
130
|
+
return true;
|
|
131
|
+
}
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Move cursor to next word boundary (Option+Right).
|
|
136
|
+
* @returns true if cursor moved (caller should trigger render)
|
|
137
|
+
*/
|
|
138
|
+
moveWordRight() {
|
|
139
|
+
const line = this.lines[this.currentLine];
|
|
140
|
+
if (this.cursorPos < line.length) {
|
|
141
|
+
let pos = this.cursorPos;
|
|
142
|
+
// Skip word
|
|
143
|
+
while (pos < line.length && line[pos] !== ' ')
|
|
144
|
+
pos++;
|
|
145
|
+
// Skip spaces
|
|
146
|
+
while (pos < line.length && line[pos] === ' ')
|
|
147
|
+
pos++;
|
|
148
|
+
this.cursorPos = pos;
|
|
149
|
+
return true;
|
|
150
|
+
}
|
|
151
|
+
else if (this.currentLine < this.lines.length - 1) {
|
|
152
|
+
// Move to start of next line
|
|
153
|
+
this.currentLine++;
|
|
154
|
+
this.cursorPos = 0;
|
|
155
|
+
return true;
|
|
156
|
+
}
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
// ===========================================================================
|
|
160
|
+
// Input queue
|
|
161
|
+
// ===========================================================================
|
|
162
|
+
getQueuedInputs() {
|
|
163
|
+
return [...this.queuedInputs];
|
|
164
|
+
}
|
|
165
|
+
popQueuedInput() {
|
|
166
|
+
if (this.queuedInputs.length === 0)
|
|
167
|
+
return null;
|
|
168
|
+
return this.queuedInputs.shift() ?? null;
|
|
169
|
+
}
|
|
170
|
+
hasQueuedInput() {
|
|
171
|
+
return this.queuedInputs.length > 0;
|
|
172
|
+
}
|
|
173
|
+
clearQueue() {
|
|
174
|
+
this.queuedInputs = [];
|
|
175
|
+
}
|
|
176
|
+
}
|
|
@@ -1,56 +1,137 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Input Prompt
|
|
2
|
+
* Input Prompt v2 (Event-Driven)
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Refactored input handling with event-driven architecture.
|
|
5
|
+
* - Emits events instead of blocking with getInput()
|
|
6
|
+
* - Supports queue mode for capturing input during agent execution
|
|
7
|
+
* - Always captures keystrokes (no blocking)
|
|
7
8
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
9
|
+
* Events:
|
|
10
|
+
* - 'submit' - User pressed Enter with input
|
|
11
|
+
* - 'command' - User submitted a slash command
|
|
12
|
+
* - 'cancel' - User pressed Ctrl+C
|
|
13
|
+
* - 'escape' - User pressed Esc (for aborting agent)
|
|
14
|
+
* - 'change' - Input text changed
|
|
10
15
|
*/
|
|
11
|
-
import
|
|
16
|
+
import { EventEmitter } from 'events';
|
|
17
|
+
import type { CommandOption } from './types.js';
|
|
12
18
|
export declare const DEFAULT_COMMANDS: CommandOption[];
|
|
13
19
|
/**
|
|
14
20
|
* Strip ANSI codes from string
|
|
21
|
+
* Uses unified line-utils for consistent behavior across components.
|
|
15
22
|
*/
|
|
16
23
|
export declare function stripAnsi(str: string): string;
|
|
24
|
+
/**
|
|
25
|
+
* Agent suggestion for $ autocomplete
|
|
26
|
+
*/
|
|
27
|
+
export interface AgentSuggestion {
|
|
28
|
+
id: string;
|
|
29
|
+
displayName: string;
|
|
30
|
+
mascot: string;
|
|
31
|
+
}
|
|
32
|
+
export interface InputPromptEvents {
|
|
33
|
+
submit: (input: string) => void;
|
|
34
|
+
command: (command: string, args: string) => void;
|
|
35
|
+
cancel: () => void;
|
|
36
|
+
escape: () => void;
|
|
37
|
+
change: (input: string) => void;
|
|
38
|
+
modeChange: () => void;
|
|
39
|
+
}
|
|
17
40
|
export interface InputPromptOptions {
|
|
18
41
|
prompt?: string;
|
|
19
42
|
showSeparators?: boolean;
|
|
20
43
|
commands?: CommandOption[];
|
|
21
|
-
|
|
44
|
+
/** Callback to get available team agents for $ autocomplete */
|
|
45
|
+
getAgentSuggestions?: () => AgentSuggestion[];
|
|
46
|
+
/** Callback to get available commands for / autocomplete */
|
|
47
|
+
getCommands?: () => CommandOption[];
|
|
22
48
|
}
|
|
23
|
-
export declare class InputPrompt {
|
|
24
|
-
private
|
|
25
|
-
private
|
|
49
|
+
export declare class InputPrompt extends EventEmitter {
|
|
50
|
+
private prompt;
|
|
51
|
+
private promptLen;
|
|
26
52
|
private readonly showSeparators;
|
|
27
53
|
private readonly commands;
|
|
28
|
-
private
|
|
54
|
+
private getAgentSuggestions?;
|
|
55
|
+
private readonly getCommands?;
|
|
29
56
|
private state;
|
|
30
57
|
private autocomplete;
|
|
58
|
+
private fileAutocomplete;
|
|
59
|
+
private agentAutocomplete;
|
|
31
60
|
private readonly history;
|
|
32
61
|
private historyIndex;
|
|
33
62
|
private savedInput;
|
|
63
|
+
private queueMode;
|
|
64
|
+
private queuedInputs;
|
|
34
65
|
private renderedLines;
|
|
35
66
|
private dropdownLines;
|
|
36
67
|
private linesAboveCursor;
|
|
37
68
|
private hasSeparators;
|
|
38
69
|
private isRunning;
|
|
39
|
-
private
|
|
70
|
+
private lastEscTime;
|
|
71
|
+
private readonly DOUBLE_ESC_THRESHOLD_MS;
|
|
72
|
+
private suggestion;
|
|
40
73
|
constructor(options?: InputPromptOptions);
|
|
41
74
|
/**
|
|
42
|
-
*
|
|
43
|
-
|
|
75
|
+
* Update the prompt string (for dynamic theme changes)
|
|
76
|
+
*/
|
|
77
|
+
setPrompt(prompt: string): void;
|
|
78
|
+
/**
|
|
79
|
+
* Set a suggestion for the next action (ghost text)
|
|
80
|
+
*/
|
|
81
|
+
setSuggestion(action: string | null): void;
|
|
82
|
+
/**
|
|
83
|
+
* Get the current suggestion
|
|
84
|
+
*/
|
|
85
|
+
getSuggestion(): string | null;
|
|
86
|
+
/**
|
|
87
|
+
* Clear the current suggestion
|
|
88
|
+
*/
|
|
89
|
+
clearSuggestion(): void;
|
|
90
|
+
/**
|
|
91
|
+
* Set the callback to get available team agents for $ autocomplete
|
|
44
92
|
*/
|
|
45
|
-
|
|
93
|
+
setAgentSuggestionsCallback(callback: (() => AgentSuggestion[]) | undefined): void;
|
|
46
94
|
/**
|
|
47
|
-
* Start input
|
|
95
|
+
* Start input capture (non-blocking, event-driven)
|
|
48
96
|
*/
|
|
49
97
|
start(): void;
|
|
50
98
|
/**
|
|
51
|
-
* Stop input
|
|
99
|
+
* Stop input capture
|
|
52
100
|
*/
|
|
53
101
|
stop(): void;
|
|
102
|
+
/**
|
|
103
|
+
* Check if running
|
|
104
|
+
*/
|
|
105
|
+
isActive(): boolean;
|
|
106
|
+
/**
|
|
107
|
+
* Enable/disable queue mode
|
|
108
|
+
* In queue mode, Enter adds to queue instead of emitting 'submit'
|
|
109
|
+
*/
|
|
110
|
+
setQueueMode(enabled: boolean): void;
|
|
111
|
+
/**
|
|
112
|
+
* Check if in queue mode
|
|
113
|
+
*/
|
|
114
|
+
isQueueMode(): boolean;
|
|
115
|
+
/**
|
|
116
|
+
* Get all queued inputs (FIFO order)
|
|
117
|
+
*/
|
|
118
|
+
getQueuedInputs(): string[];
|
|
119
|
+
/**
|
|
120
|
+
* Pop the first queued input
|
|
121
|
+
*/
|
|
122
|
+
popQueuedInput(): string | null;
|
|
123
|
+
/**
|
|
124
|
+
* Check if there are queued inputs
|
|
125
|
+
*/
|
|
126
|
+
hasQueuedInput(): boolean;
|
|
127
|
+
/**
|
|
128
|
+
* Get number of queued inputs
|
|
129
|
+
*/
|
|
130
|
+
getQueueLength(): number;
|
|
131
|
+
/**
|
|
132
|
+
* Clear the queue
|
|
133
|
+
*/
|
|
134
|
+
clearQueue(): void;
|
|
54
135
|
/**
|
|
55
136
|
* Get current buffer value
|
|
56
137
|
*/
|
|
@@ -60,28 +141,50 @@ export declare class InputPrompt {
|
|
|
60
141
|
*/
|
|
61
142
|
setValue(value: string): void;
|
|
62
143
|
/**
|
|
63
|
-
* Clear
|
|
144
|
+
* Clear input buffer
|
|
64
145
|
*/
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Get number of rendered lines
|
|
68
|
-
*/
|
|
69
|
-
getRenderedLines(): number;
|
|
146
|
+
clearInput(): void;
|
|
70
147
|
/**
|
|
71
148
|
* Add command to history
|
|
72
149
|
*/
|
|
73
150
|
addToHistory(input: string): void;
|
|
74
|
-
private resetState;
|
|
75
|
-
private updateAutocomplete;
|
|
76
151
|
/**
|
|
77
|
-
*
|
|
152
|
+
* Render the input prompt - returns array of lines
|
|
153
|
+
* Does NOT write to terminal (Footer handles that)
|
|
154
|
+
*/
|
|
155
|
+
render(): string[];
|
|
156
|
+
/**
|
|
157
|
+
* Get the cursor position info for rendering
|
|
158
|
+
*/
|
|
159
|
+
getCursorInfo(): {
|
|
160
|
+
row: number;
|
|
161
|
+
col: number;
|
|
162
|
+
};
|
|
163
|
+
/**
|
|
164
|
+
* Get autocomplete dropdown lines (if active)
|
|
78
165
|
*/
|
|
79
|
-
|
|
166
|
+
getAutocompleteLines(): string[];
|
|
167
|
+
/**
|
|
168
|
+
* Check if autocomplete is showing
|
|
169
|
+
*/
|
|
170
|
+
isAutocompleteActive(): boolean;
|
|
171
|
+
/**
|
|
172
|
+
* Get height of rendered content
|
|
173
|
+
*/
|
|
174
|
+
getHeight(): number;
|
|
175
|
+
/**
|
|
176
|
+
* @deprecated Use event-driven start() instead
|
|
177
|
+
* Kept for backwards compatibility during migration
|
|
178
|
+
*/
|
|
179
|
+
getInput(): Promise<{
|
|
180
|
+
action: string;
|
|
181
|
+
value?: string;
|
|
182
|
+
command?: string;
|
|
183
|
+
args?: string;
|
|
184
|
+
}>;
|
|
185
|
+
private resetState;
|
|
186
|
+
private updateAutocomplete;
|
|
80
187
|
private getSeparatorLine;
|
|
81
|
-
private renderTodos;
|
|
82
|
-
private render;
|
|
83
|
-
private renderDropdown;
|
|
84
|
-
private clearDropdown;
|
|
85
188
|
private readonly handleData;
|
|
86
189
|
private handleKey;
|
|
87
190
|
private handleEnter;
|
|
@@ -93,5 +196,4 @@ export declare class InputPrompt {
|
|
|
93
196
|
private handleWordLeft;
|
|
94
197
|
private handleWordRight;
|
|
95
198
|
private handleBackspace;
|
|
96
|
-
private finishInput;
|
|
97
199
|
}
|