@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,384 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Autocomplete controller for command, file, and agent autocomplete.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from TerminalUI — owns all three autocomplete states and their
|
|
5
|
+
* management methods. Input state is passed in as parameters; accept() returns
|
|
6
|
+
* new input state instead of mutating directly.
|
|
7
|
+
*/
|
|
8
|
+
import { getStyles } from '../themes/index.js';
|
|
9
|
+
import { getVisibleLength } from './line-utils.js';
|
|
10
|
+
import { MAX_VISIBLE_COMMANDS, } from './terminal-types.js';
|
|
11
|
+
import { filterCommands } from './terminal-autocomplete-utils.js';
|
|
12
|
+
import { getFileMatches, extractAtMention, replaceAtMention, extractDollarMention, replaceDollarMention, } from './file-autocomplete.js';
|
|
13
|
+
export class AutocompleteController {
|
|
14
|
+
command = {
|
|
15
|
+
active: false,
|
|
16
|
+
matches: [],
|
|
17
|
+
selectedIndex: 0,
|
|
18
|
+
scrollOffset: 0,
|
|
19
|
+
};
|
|
20
|
+
file = {
|
|
21
|
+
active: false,
|
|
22
|
+
matches: [],
|
|
23
|
+
selectedIndex: 0,
|
|
24
|
+
scrollOffset: 0,
|
|
25
|
+
partial: '',
|
|
26
|
+
};
|
|
27
|
+
agent = {
|
|
28
|
+
active: false,
|
|
29
|
+
matches: [],
|
|
30
|
+
selectedIndex: 0,
|
|
31
|
+
scrollOffset: 0,
|
|
32
|
+
partial: '',
|
|
33
|
+
startPos: 0,
|
|
34
|
+
lineIndex: 0,
|
|
35
|
+
};
|
|
36
|
+
getAgentSuggestions;
|
|
37
|
+
getCommands;
|
|
38
|
+
/** Whether any autocomplete is currently active. */
|
|
39
|
+
isActive() {
|
|
40
|
+
return this.command.active || this.file.active || this.agent.active;
|
|
41
|
+
}
|
|
42
|
+
// ===========================================================================
|
|
43
|
+
// Update (called when input changes)
|
|
44
|
+
// ===========================================================================
|
|
45
|
+
/**
|
|
46
|
+
* Detect and activate autocomplete based on current input state.
|
|
47
|
+
* Priority: @ file > $ agent > / command
|
|
48
|
+
*/
|
|
49
|
+
update(lines, currentLine, cursorPos) {
|
|
50
|
+
const currentLineContent = lines[currentLine];
|
|
51
|
+
// Check for @ file path autocomplete first (works on any line)
|
|
52
|
+
const atMention = extractAtMention(currentLineContent, cursorPos);
|
|
53
|
+
if (atMention !== null) {
|
|
54
|
+
// File autocomplete mode - disable other autocompletes
|
|
55
|
+
this.command.active = false;
|
|
56
|
+
this.command.matches = [];
|
|
57
|
+
this.command.selectedIndex = 0;
|
|
58
|
+
this.command.scrollOffset = 0;
|
|
59
|
+
this.agent.active = false;
|
|
60
|
+
this.agent.matches = [];
|
|
61
|
+
// Enable file autocomplete
|
|
62
|
+
this.file.active = true;
|
|
63
|
+
this.file.partial = atMention;
|
|
64
|
+
this.file.matches = getFileMatches(atMention);
|
|
65
|
+
if (this.file.selectedIndex >= this.file.matches.length) {
|
|
66
|
+
this.file.selectedIndex = Math.max(0, this.file.matches.length - 1);
|
|
67
|
+
this.file.scrollOffset = 0;
|
|
68
|
+
}
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
// Reset file autocomplete
|
|
72
|
+
this.file.active = false;
|
|
73
|
+
this.file.matches = [];
|
|
74
|
+
this.file.selectedIndex = 0;
|
|
75
|
+
this.file.scrollOffset = 0;
|
|
76
|
+
this.file.partial = '';
|
|
77
|
+
// Check for $ agent autocomplete (anywhere in the current line)
|
|
78
|
+
if (this.getAgentSuggestions) {
|
|
79
|
+
const dollarMention = extractDollarMention(currentLineContent, cursorPos);
|
|
80
|
+
if (dollarMention !== null) {
|
|
81
|
+
const partial = dollarMention.partial.toLowerCase();
|
|
82
|
+
const allAgents = this.getAgentSuggestions();
|
|
83
|
+
// Filter agents by partial match
|
|
84
|
+
const matches = allAgents.filter(a => a.id.toLowerCase().startsWith(partial) ||
|
|
85
|
+
a.displayName.toLowerCase().includes(partial));
|
|
86
|
+
if (matches.length > 0) {
|
|
87
|
+
this.agent.active = true;
|
|
88
|
+
this.agent.partial = partial;
|
|
89
|
+
this.agent.matches = matches;
|
|
90
|
+
this.agent.startPos = dollarMention.startPos;
|
|
91
|
+
this.agent.lineIndex = currentLine;
|
|
92
|
+
if (this.agent.selectedIndex >= matches.length) {
|
|
93
|
+
this.agent.selectedIndex = Math.max(0, matches.length - 1);
|
|
94
|
+
this.agent.scrollOffset = 0;
|
|
95
|
+
}
|
|
96
|
+
// Reset command autocomplete
|
|
97
|
+
this.command.active = false;
|
|
98
|
+
this.command.matches = [];
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// Reset agent autocomplete
|
|
104
|
+
this.agent.active = false;
|
|
105
|
+
this.agent.matches = [];
|
|
106
|
+
this.agent.selectedIndex = 0;
|
|
107
|
+
this.agent.scrollOffset = 0;
|
|
108
|
+
this.agent.partial = '';
|
|
109
|
+
this.agent.startPos = 0;
|
|
110
|
+
this.agent.lineIndex = 0;
|
|
111
|
+
// Activate command autocomplete when first line starts with /
|
|
112
|
+
const firstLine = lines[0];
|
|
113
|
+
if (currentLine === 0 && firstLine.startsWith('/')) {
|
|
114
|
+
this.command.active = true;
|
|
115
|
+
const freshCommands = this.getCommands?.() ?? [];
|
|
116
|
+
this.command.matches = filterCommands(firstLine, freshCommands);
|
|
117
|
+
// Reset selection if it's out of bounds
|
|
118
|
+
if (this.command.selectedIndex >= this.command.matches.length) {
|
|
119
|
+
this.command.selectedIndex = Math.max(0, this.command.matches.length - 1);
|
|
120
|
+
this.command.scrollOffset = 0;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
this.command.active = false;
|
|
125
|
+
this.command.matches = [];
|
|
126
|
+
this.command.selectedIndex = 0;
|
|
127
|
+
this.command.scrollOffset = 0;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
// ===========================================================================
|
|
131
|
+
// Accept (apply selected autocomplete)
|
|
132
|
+
// ===========================================================================
|
|
133
|
+
/**
|
|
134
|
+
* Apply the selected autocomplete match.
|
|
135
|
+
* Returns new input state if something was accepted, null otherwise.
|
|
136
|
+
* Caller must also call update() after applying the result for file autocomplete
|
|
137
|
+
* (directory selection may trigger continued autocomplete).
|
|
138
|
+
*/
|
|
139
|
+
accept(lines, currentLine, cursorPos) {
|
|
140
|
+
// Agent autocomplete takes highest priority
|
|
141
|
+
if (this.agent.active && this.agent.matches.length > 0) {
|
|
142
|
+
const selectedAgent = this.agent.matches[this.agent.selectedIndex];
|
|
143
|
+
const lineIdx = this.agent.lineIndex;
|
|
144
|
+
const line = lines[lineIdx];
|
|
145
|
+
const result = replaceDollarMention(line, cursorPos, selectedAgent.id);
|
|
146
|
+
const newLines = [...lines];
|
|
147
|
+
newLines[lineIdx] = result.input;
|
|
148
|
+
this.agent.active = false;
|
|
149
|
+
this.agent.matches = [];
|
|
150
|
+
this.agent.selectedIndex = 0;
|
|
151
|
+
this.agent.scrollOffset = 0;
|
|
152
|
+
this.agent.partial = '';
|
|
153
|
+
this.agent.startPos = 0;
|
|
154
|
+
this.agent.lineIndex = 0;
|
|
155
|
+
return { lines: newLines, currentLine: lineIdx, cursorPos: result.cursorPos };
|
|
156
|
+
}
|
|
157
|
+
// File autocomplete takes priority (works on current line)
|
|
158
|
+
if (this.file.active && this.file.matches.length > 0) {
|
|
159
|
+
const selectedFile = this.file.matches[this.file.selectedIndex];
|
|
160
|
+
const currentLineContent = lines[currentLine];
|
|
161
|
+
const result = replaceAtMention(currentLineContent, cursorPos, selectedFile.path);
|
|
162
|
+
const newLines = [...lines];
|
|
163
|
+
newLines[currentLine] = result.input;
|
|
164
|
+
this.file.active = false;
|
|
165
|
+
this.file.matches = [];
|
|
166
|
+
this.file.selectedIndex = 0;
|
|
167
|
+
this.file.scrollOffset = 0;
|
|
168
|
+
this.file.partial = '';
|
|
169
|
+
return { lines: newLines, currentLine, cursorPos: result.cursorPos };
|
|
170
|
+
}
|
|
171
|
+
// Command autocomplete (works on first line only)
|
|
172
|
+
if (this.command.active && this.command.matches.length > 0) {
|
|
173
|
+
const selected = this.command.matches[this.command.selectedIndex];
|
|
174
|
+
const newLines = [...lines];
|
|
175
|
+
newLines[0] = selected.command;
|
|
176
|
+
this.command.active = false;
|
|
177
|
+
this.command.matches = [];
|
|
178
|
+
this.command.selectedIndex = 0;
|
|
179
|
+
this.command.scrollOffset = 0;
|
|
180
|
+
return { lines: newLines, currentLine: 0, cursorPos: selected.command.length };
|
|
181
|
+
}
|
|
182
|
+
return null;
|
|
183
|
+
}
|
|
184
|
+
// ===========================================================================
|
|
185
|
+
// Close / Navigate
|
|
186
|
+
// ===========================================================================
|
|
187
|
+
close() {
|
|
188
|
+
this.agent.active = false;
|
|
189
|
+
this.agent.matches = [];
|
|
190
|
+
this.agent.selectedIndex = 0;
|
|
191
|
+
this.agent.scrollOffset = 0;
|
|
192
|
+
this.agent.partial = '';
|
|
193
|
+
this.agent.startPos = 0;
|
|
194
|
+
this.agent.lineIndex = 0;
|
|
195
|
+
this.file.active = false;
|
|
196
|
+
this.file.matches = [];
|
|
197
|
+
this.file.selectedIndex = 0;
|
|
198
|
+
this.file.scrollOffset = 0;
|
|
199
|
+
this.file.partial = '';
|
|
200
|
+
this.command.active = false;
|
|
201
|
+
this.command.matches = [];
|
|
202
|
+
this.command.selectedIndex = 0;
|
|
203
|
+
this.command.scrollOffset = 0;
|
|
204
|
+
}
|
|
205
|
+
navigateUp() {
|
|
206
|
+
if (this.agent.active && this.agent.matches.length > 0) {
|
|
207
|
+
if (this.agent.selectedIndex > 0) {
|
|
208
|
+
this.agent.selectedIndex--;
|
|
209
|
+
if (this.agent.selectedIndex < this.agent.scrollOffset) {
|
|
210
|
+
this.agent.scrollOffset = this.agent.selectedIndex;
|
|
211
|
+
}
|
|
212
|
+
return true;
|
|
213
|
+
}
|
|
214
|
+
return false;
|
|
215
|
+
}
|
|
216
|
+
if (this.file.active && this.file.matches.length > 0) {
|
|
217
|
+
if (this.file.selectedIndex > 0) {
|
|
218
|
+
this.file.selectedIndex--;
|
|
219
|
+
if (this.file.selectedIndex < this.file.scrollOffset) {
|
|
220
|
+
this.file.scrollOffset = this.file.selectedIndex;
|
|
221
|
+
}
|
|
222
|
+
return true;
|
|
223
|
+
}
|
|
224
|
+
return false;
|
|
225
|
+
}
|
|
226
|
+
if (!this.command.active || this.command.matches.length === 0) {
|
|
227
|
+
return false;
|
|
228
|
+
}
|
|
229
|
+
if (this.command.selectedIndex > 0) {
|
|
230
|
+
this.command.selectedIndex--;
|
|
231
|
+
if (this.command.selectedIndex < this.command.scrollOffset) {
|
|
232
|
+
this.command.scrollOffset = this.command.selectedIndex;
|
|
233
|
+
}
|
|
234
|
+
return true;
|
|
235
|
+
}
|
|
236
|
+
return false;
|
|
237
|
+
}
|
|
238
|
+
navigateDown() {
|
|
239
|
+
if (this.agent.active && this.agent.matches.length > 0) {
|
|
240
|
+
if (this.agent.selectedIndex < this.agent.matches.length - 1) {
|
|
241
|
+
this.agent.selectedIndex++;
|
|
242
|
+
const maxVisibleIndex = this.agent.scrollOffset + MAX_VISIBLE_COMMANDS - 1;
|
|
243
|
+
if (this.agent.selectedIndex > maxVisibleIndex) {
|
|
244
|
+
this.agent.scrollOffset = this.agent.selectedIndex - MAX_VISIBLE_COMMANDS + 1;
|
|
245
|
+
}
|
|
246
|
+
return true;
|
|
247
|
+
}
|
|
248
|
+
return false;
|
|
249
|
+
}
|
|
250
|
+
if (this.file.active && this.file.matches.length > 0) {
|
|
251
|
+
if (this.file.selectedIndex < this.file.matches.length - 1) {
|
|
252
|
+
this.file.selectedIndex++;
|
|
253
|
+
const maxVisibleIndex = this.file.scrollOffset + MAX_VISIBLE_COMMANDS - 1;
|
|
254
|
+
if (this.file.selectedIndex > maxVisibleIndex) {
|
|
255
|
+
this.file.scrollOffset = this.file.selectedIndex - MAX_VISIBLE_COMMANDS + 1;
|
|
256
|
+
}
|
|
257
|
+
return true;
|
|
258
|
+
}
|
|
259
|
+
return false;
|
|
260
|
+
}
|
|
261
|
+
if (!this.command.active || this.command.matches.length === 0) {
|
|
262
|
+
return false;
|
|
263
|
+
}
|
|
264
|
+
if (this.command.selectedIndex < this.command.matches.length - 1) {
|
|
265
|
+
this.command.selectedIndex++;
|
|
266
|
+
const maxVisibleIndex = this.command.scrollOffset + MAX_VISIBLE_COMMANDS - 1;
|
|
267
|
+
if (this.command.selectedIndex > maxVisibleIndex) {
|
|
268
|
+
this.command.scrollOffset = this.command.selectedIndex - MAX_VISIBLE_COMMANDS + 1;
|
|
269
|
+
}
|
|
270
|
+
return true;
|
|
271
|
+
}
|
|
272
|
+
return false;
|
|
273
|
+
}
|
|
274
|
+
// ===========================================================================
|
|
275
|
+
// Build lines (for footer rendering)
|
|
276
|
+
// ===========================================================================
|
|
277
|
+
buildCommandLines(termWidth) {
|
|
278
|
+
if (!this.command.active || this.command.matches.length === 0) {
|
|
279
|
+
return [];
|
|
280
|
+
}
|
|
281
|
+
const s = getStyles();
|
|
282
|
+
const lines = [];
|
|
283
|
+
const { matches, selectedIndex, scrollOffset } = this.command;
|
|
284
|
+
const visible = matches.slice(scrollOffset, scrollOffset + MAX_VISIBLE_COMMANDS);
|
|
285
|
+
const total = matches.length;
|
|
286
|
+
if (scrollOffset > 0) {
|
|
287
|
+
lines.push(s.muted(` ↑ ${String(scrollOffset)} more above`));
|
|
288
|
+
}
|
|
289
|
+
for (let i = 0; i < visible.length; i++) {
|
|
290
|
+
const cmd = visible[i];
|
|
291
|
+
const actualIndex = scrollOffset + i;
|
|
292
|
+
const isSelected = actualIndex === selectedIndex;
|
|
293
|
+
const prefix = isSelected ? s.primary('❯ ') : ' ';
|
|
294
|
+
const name = isSelected ? s.primaryBold(cmd.command) : cmd.command;
|
|
295
|
+
const baseLen = getVisibleLength(prefix) + getVisibleLength(name) + 3;
|
|
296
|
+
const maxDescLen = termWidth - baseLen - 2;
|
|
297
|
+
const truncatedDesc = cmd.description.length > maxDescLen
|
|
298
|
+
? cmd.description.slice(0, maxDescLen - 1) + '…'
|
|
299
|
+
: cmd.description;
|
|
300
|
+
lines.push(`${prefix}${name} ${s.muted('- ' + truncatedDesc)}`);
|
|
301
|
+
}
|
|
302
|
+
const belowCount = total - scrollOffset - visible.length;
|
|
303
|
+
if (belowCount > 0) {
|
|
304
|
+
lines.push(s.muted(` ↓ ${String(belowCount)} more below`));
|
|
305
|
+
}
|
|
306
|
+
return lines;
|
|
307
|
+
}
|
|
308
|
+
buildFileLines(termWidth) {
|
|
309
|
+
if (!this.file.active || this.file.matches.length === 0) {
|
|
310
|
+
return [];
|
|
311
|
+
}
|
|
312
|
+
const s = getStyles();
|
|
313
|
+
const lines = [];
|
|
314
|
+
const { matches, selectedIndex, scrollOffset } = this.file;
|
|
315
|
+
const visible = matches.slice(scrollOffset, scrollOffset + MAX_VISIBLE_COMMANDS);
|
|
316
|
+
const total = matches.length;
|
|
317
|
+
if (scrollOffset > 0) {
|
|
318
|
+
lines.push(s.muted(` ↑ ${String(scrollOffset)} more above`));
|
|
319
|
+
}
|
|
320
|
+
for (let i = 0; i < visible.length; i++) {
|
|
321
|
+
const file = visible[i];
|
|
322
|
+
const actualIndex = scrollOffset + i;
|
|
323
|
+
const isSelected = actualIndex === selectedIndex;
|
|
324
|
+
const prefix = isSelected ? s.primary('❯ ') : ' ';
|
|
325
|
+
const icon = file.isDirectory ? '📁 ' : '📄 ';
|
|
326
|
+
const name = isSelected ? s.primaryBold(file.path) : file.path;
|
|
327
|
+
const baseLen = getVisibleLength(prefix) + 3 + getVisibleLength(file.path);
|
|
328
|
+
if (baseLen > termWidth - 2) {
|
|
329
|
+
const maxLen = termWidth - getVisibleLength(prefix) - 5;
|
|
330
|
+
const truncatedPath = file.path.length > maxLen
|
|
331
|
+
? '…' + file.path.slice(-(maxLen - 1))
|
|
332
|
+
: file.path;
|
|
333
|
+
const truncatedName = isSelected ? s.primaryBold(truncatedPath) : truncatedPath;
|
|
334
|
+
lines.push(`${prefix}${icon}${truncatedName}`);
|
|
335
|
+
}
|
|
336
|
+
else {
|
|
337
|
+
lines.push(`${prefix}${icon}${name}`);
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
const belowCount = total - scrollOffset - visible.length;
|
|
341
|
+
if (belowCount > 0) {
|
|
342
|
+
lines.push(s.muted(` ↓ ${String(belowCount)} more below`));
|
|
343
|
+
}
|
|
344
|
+
return lines;
|
|
345
|
+
}
|
|
346
|
+
buildAgentLines(termWidth) {
|
|
347
|
+
if (!this.agent.active || this.agent.matches.length === 0) {
|
|
348
|
+
return [];
|
|
349
|
+
}
|
|
350
|
+
const s = getStyles();
|
|
351
|
+
const lines = [];
|
|
352
|
+
const { matches, selectedIndex, scrollOffset } = this.agent;
|
|
353
|
+
const visible = matches.slice(scrollOffset, scrollOffset + MAX_VISIBLE_COMMANDS);
|
|
354
|
+
const total = matches.length;
|
|
355
|
+
if (scrollOffset > 0) {
|
|
356
|
+
lines.push(s.muted(` ↑ ${String(scrollOffset)} more above`));
|
|
357
|
+
}
|
|
358
|
+
for (let i = 0; i < visible.length; i++) {
|
|
359
|
+
const agentItem = visible[i];
|
|
360
|
+
const actualIndex = scrollOffset + i;
|
|
361
|
+
const isSelected = actualIndex === selectedIndex;
|
|
362
|
+
const prefix = isSelected ? s.primary('❯ ') : ' ';
|
|
363
|
+
const mascot = agentItem.mascot + ' ';
|
|
364
|
+
const name = isSelected ? s.primaryBold('$' + agentItem.id) : '$' + agentItem.id;
|
|
365
|
+
const desc = s.muted(' - ' + agentItem.displayName);
|
|
366
|
+
const baseLen = getVisibleLength(prefix) + 6 + agentItem.id.length + 3 + agentItem.displayName.length;
|
|
367
|
+
if (baseLen > termWidth - 2) {
|
|
368
|
+
const maxDescLen = termWidth - getVisibleLength(prefix) - 6 - agentItem.id.length - 5;
|
|
369
|
+
const truncatedDesc = agentItem.displayName.length > maxDescLen
|
|
370
|
+
? s.muted(' - ' + agentItem.displayName.slice(0, maxDescLen - 1) + '…')
|
|
371
|
+
: desc;
|
|
372
|
+
lines.push(`${prefix}${mascot}${name}${truncatedDesc}`);
|
|
373
|
+
}
|
|
374
|
+
else {
|
|
375
|
+
lines.push(`${prefix}${mascot}${name}${desc}`);
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
const belowCount = total - scrollOffset - visible.length;
|
|
379
|
+
if (belowCount > 0) {
|
|
380
|
+
lines.push(s.muted(` ↓ ${String(belowCount)} more below`));
|
|
381
|
+
}
|
|
382
|
+
return lines;
|
|
383
|
+
}
|
|
384
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base UI Utilities
|
|
3
|
+
*
|
|
4
|
+
* Shared utilities for consistent overlay behavior.
|
|
5
|
+
*
|
|
6
|
+
* Components:
|
|
7
|
+
* - key-utils: Key detection functions
|
|
8
|
+
* - overlay-types: Core interfaces and types
|
|
9
|
+
* - overlay-lifecycle: Lifecycle management
|
|
10
|
+
* - overlay-base: BaseOverlay abstract class
|
|
11
|
+
* - screen-stack: Navigation stack for multi-screen overlays
|
|
12
|
+
*/
|
|
13
|
+
export * from './key-utils.js';
|
|
14
|
+
export * from './overlay-types.js';
|
|
15
|
+
export { OverlayLifecycle, setupOverlay } from './overlay-lifecycle.js';
|
|
16
|
+
export type { KeyHandler } from './overlay-lifecycle.js';
|
|
17
|
+
export { BaseOverlay } from './overlay-base.js';
|
|
18
|
+
export { BaseScreen, ScreenStack, stay, pushScreen, popScreen, closeOverlay, } from './screen-stack.js';
|
|
19
|
+
export { renderBorder, wrapText, truncate, truncateAnsi, normalizeText, padToHeight, emptyLines, renderProgressBar, formatTokens, } from './render-utils.js';
|
|
20
|
+
export { TabbedListOverlay } from './tabbed-list-overlay.js';
|
|
21
|
+
export type { TabbedListConfig, TabbedListState } from './tabbed-list-overlay.js';
|
|
22
|
+
export { BaseOverlayV2 } from './overlay-base-v2.js';
|
|
23
|
+
export { TabbedListOverlayV2 } from './tabbed-list-overlay-v2.js';
|
|
24
|
+
export type { TabbedListConfigV2, TabbedListStateV2, } from './tabbed-list-overlay-v2.js';
|
|
25
|
+
export { createInlineOverlayContext, inlineSetup, inlineCleanup, inlineCleanupWithSummary, inlineClearPrevious, inlinePadLines, inlineRenderLines, inlineRender, inlineUpdateContext, isEscapeKey, isCtrlCKey, isEnterKey, isBackspaceKey, isUpArrowKey, isDownArrowKey, isLeftArrowKey, isRightArrowKey, isTabKey, isSpaceKey, isPrintableChar, getPrintableChar, isNumberKey, getNumberKey, getNumberKeyIndex, } from './inline-overlay-utils.js';
|
|
26
|
+
export type { InlineOverlayContext } from './inline-overlay-utils.js';
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base UI Utilities
|
|
3
|
+
*
|
|
4
|
+
* Shared utilities for consistent overlay behavior.
|
|
5
|
+
*
|
|
6
|
+
* Components:
|
|
7
|
+
* - key-utils: Key detection functions
|
|
8
|
+
* - overlay-types: Core interfaces and types
|
|
9
|
+
* - overlay-lifecycle: Lifecycle management
|
|
10
|
+
* - overlay-base: BaseOverlay abstract class
|
|
11
|
+
* - screen-stack: Navigation stack for multi-screen overlays
|
|
12
|
+
*/
|
|
13
|
+
// Key detection utilities
|
|
14
|
+
export * from './key-utils.js';
|
|
15
|
+
// Core types and interfaces
|
|
16
|
+
export * from './overlay-types.js';
|
|
17
|
+
// Lifecycle management
|
|
18
|
+
export { OverlayLifecycle, setupOverlay } from './overlay-lifecycle.js';
|
|
19
|
+
// Base overlay class
|
|
20
|
+
export { BaseOverlay } from './overlay-base.js';
|
|
21
|
+
// Screen stack for multi-screen overlays
|
|
22
|
+
export { BaseScreen, ScreenStack, stay, pushScreen, popScreen, closeOverlay, } from './screen-stack.js';
|
|
23
|
+
// Render utilities
|
|
24
|
+
export { renderBorder, wrapText, truncate, truncateAnsi, normalizeText, padToHeight, emptyLines, renderProgressBar, formatTokens, } from './render-utils.js';
|
|
25
|
+
// Tabbed list overlay base
|
|
26
|
+
export { TabbedListOverlay } from './tabbed-list-overlay.js';
|
|
27
|
+
// V2 Overlay base classes (new Overlay interface)
|
|
28
|
+
export { BaseOverlayV2 } from './overlay-base-v2.js';
|
|
29
|
+
export { TabbedListOverlayV2 } from './tabbed-list-overlay-v2.js';
|
|
30
|
+
// Inline overlay utilities (for in-conversation overlays)
|
|
31
|
+
export { createInlineOverlayContext, inlineSetup, inlineCleanup, inlineCleanupWithSummary, inlineClearPrevious, inlinePadLines, inlineRenderLines, inlineRender, inlineUpdateContext,
|
|
32
|
+
// Key detection (also available from key-utils)
|
|
33
|
+
isEscapeKey, isCtrlCKey, isEnterKey, isBackspaceKey, isUpArrowKey, isDownArrowKey, isLeftArrowKey, isRightArrowKey, isTabKey, isSpaceKey, isPrintableChar, getPrintableChar, isNumberKey, getNumberKey, getNumberKeyIndex, } from './inline-overlay-utils.js';
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inline Overlay Utilities
|
|
3
|
+
*
|
|
4
|
+
* Shared utilities for "in-conversation" overlays that render above the footer.
|
|
5
|
+
* These overlays differ from full-screen overlays (BaseOverlay) in that they:
|
|
6
|
+
* - Render inline within the conversation
|
|
7
|
+
* - Use line-based clearing (clearLinesAbove) instead of full screen clear
|
|
8
|
+
* - Track line counts to prevent ghost lines and cursor drift
|
|
9
|
+
*
|
|
10
|
+
* CANONICAL PATTERN for inline overlays:
|
|
11
|
+
*
|
|
12
|
+
* ```typescript
|
|
13
|
+
* export async function showMyOverlay(options: Options): Promise<Result> {
|
|
14
|
+
* const state = { ... };
|
|
15
|
+
* const ctx = createInlineOverlayContext();
|
|
16
|
+
*
|
|
17
|
+
* // Setup
|
|
18
|
+
* // NOTE: Footer should be paused by CALLER (index.ts), not here
|
|
19
|
+
* // This prevents double-pause issues with agent tool overlays
|
|
20
|
+
* inlineSetup(ctx);
|
|
21
|
+
*
|
|
22
|
+
* // Initial render
|
|
23
|
+
* ctx.lineCount = renderMyOverlay(options, state, ctx);
|
|
24
|
+
* ctx.maxLineCount = Math.max(ctx.maxLineCount, ctx.lineCount);
|
|
25
|
+
*
|
|
26
|
+
* return new Promise((resolve) => {
|
|
27
|
+
* const cleanup = (result: Result) => {
|
|
28
|
+
* inlineCleanup(ctx);
|
|
29
|
+
* process.stdin.removeListener('data', handleData);
|
|
30
|
+
* resolve(result);
|
|
31
|
+
* };
|
|
32
|
+
*
|
|
33
|
+
* const handleData = (data: Buffer) => {
|
|
34
|
+
* // Handle keys, update state
|
|
35
|
+
* // ...
|
|
36
|
+
*
|
|
37
|
+
* // Re-render (always use maxLineCount for both clearing and target)
|
|
38
|
+
* ctx.lineCount = renderMyOverlay(options, state, ctx);
|
|
39
|
+
* ctx.maxLineCount = Math.max(ctx.maxLineCount, ctx.lineCount);
|
|
40
|
+
* };
|
|
41
|
+
*
|
|
42
|
+
* process.stdin.on('data', handleData);
|
|
43
|
+
* });
|
|
44
|
+
* }
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* RENDER FUNCTION pattern:
|
|
48
|
+
*
|
|
49
|
+
* ```typescript
|
|
50
|
+
* function renderMyOverlay(
|
|
51
|
+
* options: Options,
|
|
52
|
+
* state: State,
|
|
53
|
+
* ctx: InlineOverlayContext
|
|
54
|
+
* ): number {
|
|
55
|
+
* const lines: string[] = [];
|
|
56
|
+
*
|
|
57
|
+
* // Clear previous render
|
|
58
|
+
* if (ctx.maxLineCount > 0) {
|
|
59
|
+
* terminal.clearLinesAbove(ctx.maxLineCount);
|
|
60
|
+
* }
|
|
61
|
+
*
|
|
62
|
+
* // Build lines array
|
|
63
|
+
* lines.push(...);
|
|
64
|
+
*
|
|
65
|
+
* // Pad to consistent height (prevents cursor drift)
|
|
66
|
+
* while (lines.length < ctx.maxLineCount) {
|
|
67
|
+
* lines.push('');
|
|
68
|
+
* }
|
|
69
|
+
*
|
|
70
|
+
* // Render
|
|
71
|
+
* terminal.write(lines.join('\n'));
|
|
72
|
+
*
|
|
73
|
+
* return lines.length;
|
|
74
|
+
* }
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
/**
|
|
78
|
+
* Context for tracking inline overlay render state.
|
|
79
|
+
* This prevents ghost lines and cursor drift.
|
|
80
|
+
*/
|
|
81
|
+
export interface InlineOverlayContext {
|
|
82
|
+
/** Current number of lines rendered */
|
|
83
|
+
lineCount: number;
|
|
84
|
+
/** Maximum lines ever rendered (used for clearing) */
|
|
85
|
+
maxLineCount: number;
|
|
86
|
+
/** Whether raw mode was enabled before overlay */
|
|
87
|
+
wasRawMode: boolean;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Create a new inline overlay context.
|
|
91
|
+
* Call this at the start of showXxxOverlay().
|
|
92
|
+
*/
|
|
93
|
+
export declare function createInlineOverlayContext(): InlineOverlayContext;
|
|
94
|
+
/**
|
|
95
|
+
* Standard setup for inline overlays.
|
|
96
|
+
* Call this after creating the context.
|
|
97
|
+
*
|
|
98
|
+
* NOTE: Footer pause should be handled by the CALLER (index.ts),
|
|
99
|
+
* not by the overlay itself. This prevents double-pause issues
|
|
100
|
+
* when overlays are triggered by agent tools.
|
|
101
|
+
*/
|
|
102
|
+
export declare function inlineSetup(ctx: InlineOverlayContext): void;
|
|
103
|
+
/**
|
|
104
|
+
* Standard cleanup for inline overlays.
|
|
105
|
+
* Call this before resolving the promise.
|
|
106
|
+
*
|
|
107
|
+
* NOTE: Footer resume should be handled by the CALLER (index.ts),
|
|
108
|
+
* not by the overlay itself.
|
|
109
|
+
*/
|
|
110
|
+
export declare function inlineCleanup(ctx: InlineOverlayContext): void;
|
|
111
|
+
/**
|
|
112
|
+
* Cleanup with a result summary line.
|
|
113
|
+
* Some overlays show a brief result after closing.
|
|
114
|
+
*/
|
|
115
|
+
export declare function inlineCleanupWithSummary(ctx: InlineOverlayContext, summaryLine: string): void;
|
|
116
|
+
/**
|
|
117
|
+
* Clear previous render and prepare for new render.
|
|
118
|
+
* Call this at the start of your render function.
|
|
119
|
+
*
|
|
120
|
+
* @param ctx - The overlay context
|
|
121
|
+
*/
|
|
122
|
+
export declare function inlineClearPrevious(ctx: InlineOverlayContext): void;
|
|
123
|
+
/**
|
|
124
|
+
* Pad lines array to target height (prevents cursor drift).
|
|
125
|
+
* Call this before rendering.
|
|
126
|
+
*
|
|
127
|
+
* @param lines - Array of lines to pad
|
|
128
|
+
* @param targetLineCount - Target number of lines (usually ctx.maxLineCount)
|
|
129
|
+
*/
|
|
130
|
+
export declare function inlinePadLines(lines: string[], targetLineCount: number): void;
|
|
131
|
+
/**
|
|
132
|
+
* Render lines and return the line count.
|
|
133
|
+
* Call this at the end of your render function.
|
|
134
|
+
*
|
|
135
|
+
* @param lines - Array of lines to render
|
|
136
|
+
* @returns Number of lines rendered
|
|
137
|
+
*/
|
|
138
|
+
export declare function inlineRenderLines(lines: string[]): number;
|
|
139
|
+
/**
|
|
140
|
+
* Complete render helper that clears, pads, and renders.
|
|
141
|
+
* Use this for simpler overlays.
|
|
142
|
+
*
|
|
143
|
+
* @param lines - Array of lines to render
|
|
144
|
+
* @param ctx - The overlay context
|
|
145
|
+
* @returns Number of lines rendered
|
|
146
|
+
*/
|
|
147
|
+
export declare function inlineRender(lines: string[], ctx: InlineOverlayContext): number;
|
|
148
|
+
/**
|
|
149
|
+
* Update context after render.
|
|
150
|
+
* Call this after your render function returns.
|
|
151
|
+
*
|
|
152
|
+
* @param ctx - The overlay context
|
|
153
|
+
* @param newLineCount - Number of lines just rendered
|
|
154
|
+
*/
|
|
155
|
+
export declare function inlineUpdateContext(ctx: InlineOverlayContext, newLineCount: number): void;
|
|
156
|
+
/**
|
|
157
|
+
* Check if buffer is Escape key
|
|
158
|
+
*/
|
|
159
|
+
export declare function isEscapeKey(data: Buffer): boolean;
|
|
160
|
+
/**
|
|
161
|
+
* Check if buffer is Ctrl+C
|
|
162
|
+
*/
|
|
163
|
+
export declare function isCtrlCKey(data: Buffer): boolean;
|
|
164
|
+
/**
|
|
165
|
+
* Check if buffer is Enter key
|
|
166
|
+
*/
|
|
167
|
+
export declare function isEnterKey(data: Buffer): boolean;
|
|
168
|
+
/**
|
|
169
|
+
* Check if buffer is Backspace key
|
|
170
|
+
*/
|
|
171
|
+
export declare function isBackspaceKey(data: Buffer): boolean;
|
|
172
|
+
/**
|
|
173
|
+
* Check if buffer is Up arrow
|
|
174
|
+
*/
|
|
175
|
+
export declare function isUpArrowKey(data: Buffer): boolean;
|
|
176
|
+
/**
|
|
177
|
+
* Check if buffer is Down arrow
|
|
178
|
+
*/
|
|
179
|
+
export declare function isDownArrowKey(data: Buffer): boolean;
|
|
180
|
+
/**
|
|
181
|
+
* Check if buffer is Left arrow
|
|
182
|
+
*/
|
|
183
|
+
export declare function isLeftArrowKey(data: Buffer): boolean;
|
|
184
|
+
/**
|
|
185
|
+
* Check if buffer is Right arrow
|
|
186
|
+
*/
|
|
187
|
+
export declare function isRightArrowKey(data: Buffer): boolean;
|
|
188
|
+
/**
|
|
189
|
+
* Check if buffer is Tab key
|
|
190
|
+
*/
|
|
191
|
+
export declare function isTabKey(data: Buffer): boolean;
|
|
192
|
+
/**
|
|
193
|
+
* Check if buffer is Space key
|
|
194
|
+
*/
|
|
195
|
+
export declare function isSpaceKey(data: Buffer): boolean;
|
|
196
|
+
/**
|
|
197
|
+
* Check if buffer is a printable ASCII character
|
|
198
|
+
*/
|
|
199
|
+
export declare function isPrintableChar(data: Buffer): boolean;
|
|
200
|
+
/**
|
|
201
|
+
* Get printable character from buffer, or null if not printable
|
|
202
|
+
*/
|
|
203
|
+
export declare function getPrintableChar(data: Buffer): string | null;
|
|
204
|
+
/**
|
|
205
|
+
* Check if buffer is a number key (1-9)
|
|
206
|
+
*/
|
|
207
|
+
export declare function isNumberKey(data: Buffer): boolean;
|
|
208
|
+
/**
|
|
209
|
+
* Get number from number key (1-9), or null if not a number key
|
|
210
|
+
* Returns 1-9 (not 0-8)
|
|
211
|
+
*/
|
|
212
|
+
export declare function getNumberKey(data: Buffer): number | null;
|
|
213
|
+
/**
|
|
214
|
+
* Get 0-indexed number from number key, or null if not a number key
|
|
215
|
+
* Returns 0-8 (for use as array index)
|
|
216
|
+
*/
|
|
217
|
+
export declare function getNumberKeyIndex(data: Buffer): number | null;
|