@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,194 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tab Feature
|
|
3
|
+
*
|
|
4
|
+
* Composable feature for tab/filter navigation.
|
|
5
|
+
* Handles Tab/Shift+Tab and number keys for tab switching.
|
|
6
|
+
*
|
|
7
|
+
* Note: Arrow keys (←→/hl) are NOT used for tabs - they are reserved
|
|
8
|
+
* for page navigation in paginated overlays. This ensures consistent
|
|
9
|
+
* keyboard behavior across all overlays.
|
|
10
|
+
*
|
|
11
|
+
* Usage:
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const TABS = [
|
|
14
|
+
* { id: 'all', label: 'All' },
|
|
15
|
+
* { id: 'active', label: 'Active' },
|
|
16
|
+
* { id: 'completed', label: 'Completed' },
|
|
17
|
+
* ];
|
|
18
|
+
*
|
|
19
|
+
* interface MyState extends OverlayState, TabState {
|
|
20
|
+
* // ...
|
|
21
|
+
* }
|
|
22
|
+
*
|
|
23
|
+
* class MyOverlay extends BaseOverlay<MyState, void> {
|
|
24
|
+
* private tabFeature = new TabFeature(TABS, (tabId) => {
|
|
25
|
+
* this.onTabChange(tabId);
|
|
26
|
+
* });
|
|
27
|
+
*
|
|
28
|
+
* handleKey(data: Buffer): void {
|
|
29
|
+
* const result = this.tabFeature.handleKey(data, this.state);
|
|
30
|
+
* if (result?.handled) {
|
|
31
|
+
* if (result.action === 'render') this.update();
|
|
32
|
+
* return;
|
|
33
|
+
* }
|
|
34
|
+
* // ... other key handling
|
|
35
|
+
* }
|
|
36
|
+
*
|
|
37
|
+
* render(): string[] {
|
|
38
|
+
* return [
|
|
39
|
+
* ...this.renderHeader('My Overlay'),
|
|
40
|
+
* ' ' + this.tabFeature.renderTabs(this.state, this.styles),
|
|
41
|
+
* '',
|
|
42
|
+
* // ... content
|
|
43
|
+
* ...this.renderFooter(this.tabFeature.renderHints() + ' · ↑↓/jk Navigate')
|
|
44
|
+
* ];
|
|
45
|
+
* }
|
|
46
|
+
* }
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
import type { KeyResult, TabState, TabDefinition } from '../base/overlay-types.js';
|
|
50
|
+
/**
|
|
51
|
+
* Configuration for TabFeature.
|
|
52
|
+
*/
|
|
53
|
+
export interface TabFeatureConfig {
|
|
54
|
+
/**
|
|
55
|
+
* Tab definitions.
|
|
56
|
+
*/
|
|
57
|
+
tabs: TabDefinition[];
|
|
58
|
+
/**
|
|
59
|
+
* Callback when tab changes.
|
|
60
|
+
* @param tabId - ID of the new tab
|
|
61
|
+
* @param index - Index of the new tab
|
|
62
|
+
*/
|
|
63
|
+
onChange?: (tabId: string, index: number) => void;
|
|
64
|
+
/**
|
|
65
|
+
* Whether to use number keys (1-9) for direct tab selection.
|
|
66
|
+
* Default: true (if tabs.length <= 9)
|
|
67
|
+
*/
|
|
68
|
+
useNumberKeys?: boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Whether navigation wraps at boundaries.
|
|
71
|
+
* Default: true
|
|
72
|
+
*/
|
|
73
|
+
wrapNavigation?: boolean;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Feature for tab/filter navigation.
|
|
77
|
+
*
|
|
78
|
+
* Handles:
|
|
79
|
+
* - Tab/Shift+Tab for cycling tabs
|
|
80
|
+
* - Number keys 1-9 for direct selection (optional)
|
|
81
|
+
*
|
|
82
|
+
* Note: Arrow keys are NOT handled - they are reserved for pagination.
|
|
83
|
+
*/
|
|
84
|
+
export declare class TabFeature {
|
|
85
|
+
private readonly config;
|
|
86
|
+
/**
|
|
87
|
+
* Create a new TabFeature.
|
|
88
|
+
*
|
|
89
|
+
* @param tabs - Tab definitions
|
|
90
|
+
* @param onChange - Optional callback when tab changes
|
|
91
|
+
*/
|
|
92
|
+
constructor(tabs: TabDefinition[], onChange?: (tabId: string, index: number) => void);
|
|
93
|
+
/**
|
|
94
|
+
* Create from config object (alternative constructor).
|
|
95
|
+
*/
|
|
96
|
+
static fromConfig(config: TabFeatureConfig): TabFeature;
|
|
97
|
+
/**
|
|
98
|
+
* Handle a key press.
|
|
99
|
+
*
|
|
100
|
+
* @param data - Raw key buffer
|
|
101
|
+
* @param state - State containing currentTab
|
|
102
|
+
* @returns KeyResult if handled, null otherwise
|
|
103
|
+
*/
|
|
104
|
+
handleKey(data: Buffer, state: TabState): KeyResult | null;
|
|
105
|
+
/**
|
|
106
|
+
* Render tabs in a row.
|
|
107
|
+
*
|
|
108
|
+
* @param state - State containing currentTab
|
|
109
|
+
* @param styles - Theme styles
|
|
110
|
+
* @returns Rendered tab bar string
|
|
111
|
+
*/
|
|
112
|
+
renderTabs(state: TabState, styles: {
|
|
113
|
+
selected: (s: string) => string;
|
|
114
|
+
muted: (s: string) => string;
|
|
115
|
+
}): string;
|
|
116
|
+
/**
|
|
117
|
+
* Render tabs with number key hints.
|
|
118
|
+
*
|
|
119
|
+
* @param state - State containing currentTab
|
|
120
|
+
* @param styles - Theme styles
|
|
121
|
+
* @returns Rendered tab bar string with numbers
|
|
122
|
+
*/
|
|
123
|
+
renderTabsWithNumbers(state: TabState, styles: {
|
|
124
|
+
selected: (s: string) => string;
|
|
125
|
+
muted: (s: string) => string;
|
|
126
|
+
}): string;
|
|
127
|
+
/**
|
|
128
|
+
* Render tabs with custom separator.
|
|
129
|
+
*
|
|
130
|
+
* @param state - State containing currentTab
|
|
131
|
+
* @param styles - Theme styles
|
|
132
|
+
* @param separator - Separator between tabs (default: '')
|
|
133
|
+
* @returns Rendered tab bar string
|
|
134
|
+
*/
|
|
135
|
+
renderTabsWithSeparator(state: TabState, styles: {
|
|
136
|
+
selected: (s: string) => string;
|
|
137
|
+
muted: (s: string) => string;
|
|
138
|
+
}, separator?: string): string;
|
|
139
|
+
/**
|
|
140
|
+
* Render keyboard hints for tabs.
|
|
141
|
+
*
|
|
142
|
+
* @returns Hint string like "Tab Switch · 1-5 Jump"
|
|
143
|
+
*/
|
|
144
|
+
renderHints(): string;
|
|
145
|
+
/**
|
|
146
|
+
* Get the current tab definition.
|
|
147
|
+
*
|
|
148
|
+
* @param state - State containing currentTab
|
|
149
|
+
* @returns Current tab or undefined
|
|
150
|
+
*/
|
|
151
|
+
getCurrentTab(state: TabState): TabDefinition | undefined;
|
|
152
|
+
/**
|
|
153
|
+
* Get the current tab ID.
|
|
154
|
+
*
|
|
155
|
+
* @param state - State containing currentTab
|
|
156
|
+
* @returns Current tab ID or empty string
|
|
157
|
+
*/
|
|
158
|
+
getCurrentTabId(state: TabState): string;
|
|
159
|
+
/**
|
|
160
|
+
* Get the number of tabs.
|
|
161
|
+
*/
|
|
162
|
+
getTabCount(): number;
|
|
163
|
+
/**
|
|
164
|
+
* Find tab index by ID.
|
|
165
|
+
*
|
|
166
|
+
* @param tabId - Tab ID to find
|
|
167
|
+
* @returns Index or -1 if not found
|
|
168
|
+
*/
|
|
169
|
+
findTabIndex(tabId: string): number;
|
|
170
|
+
/**
|
|
171
|
+
* Set current tab by ID.
|
|
172
|
+
*
|
|
173
|
+
* @param state - State to modify
|
|
174
|
+
* @param tabId - Tab ID to select
|
|
175
|
+
* @returns true if tab was found and selected
|
|
176
|
+
*/
|
|
177
|
+
setTabById(state: TabState, tabId: string): boolean;
|
|
178
|
+
private notifyChange;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Create tab definitions from an array of strings.
|
|
182
|
+
* IDs are lowercase versions of labels.
|
|
183
|
+
*
|
|
184
|
+
* @param labels - Tab labels
|
|
185
|
+
* @returns Tab definitions
|
|
186
|
+
*/
|
|
187
|
+
export declare function createTabsFromLabels(labels: string[]): TabDefinition[];
|
|
188
|
+
/**
|
|
189
|
+
* Create filter tabs (common pattern).
|
|
190
|
+
*
|
|
191
|
+
* @param filters - Array of filter names
|
|
192
|
+
* @returns Tab definitions with 'all' as first tab
|
|
193
|
+
*/
|
|
194
|
+
export declare function createFilterTabs(filters: string[]): TabDefinition[];
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tab Feature
|
|
3
|
+
*
|
|
4
|
+
* Composable feature for tab/filter navigation.
|
|
5
|
+
* Handles Tab/Shift+Tab and number keys for tab switching.
|
|
6
|
+
*
|
|
7
|
+
* Note: Arrow keys (←→/hl) are NOT used for tabs - they are reserved
|
|
8
|
+
* for page navigation in paginated overlays. This ensures consistent
|
|
9
|
+
* keyboard behavior across all overlays.
|
|
10
|
+
*
|
|
11
|
+
* Usage:
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const TABS = [
|
|
14
|
+
* { id: 'all', label: 'All' },
|
|
15
|
+
* { id: 'active', label: 'Active' },
|
|
16
|
+
* { id: 'completed', label: 'Completed' },
|
|
17
|
+
* ];
|
|
18
|
+
*
|
|
19
|
+
* interface MyState extends OverlayState, TabState {
|
|
20
|
+
* // ...
|
|
21
|
+
* }
|
|
22
|
+
*
|
|
23
|
+
* class MyOverlay extends BaseOverlay<MyState, void> {
|
|
24
|
+
* private tabFeature = new TabFeature(TABS, (tabId) => {
|
|
25
|
+
* this.onTabChange(tabId);
|
|
26
|
+
* });
|
|
27
|
+
*
|
|
28
|
+
* handleKey(data: Buffer): void {
|
|
29
|
+
* const result = this.tabFeature.handleKey(data, this.state);
|
|
30
|
+
* if (result?.handled) {
|
|
31
|
+
* if (result.action === 'render') this.update();
|
|
32
|
+
* return;
|
|
33
|
+
* }
|
|
34
|
+
* // ... other key handling
|
|
35
|
+
* }
|
|
36
|
+
*
|
|
37
|
+
* render(): string[] {
|
|
38
|
+
* return [
|
|
39
|
+
* ...this.renderHeader('My Overlay'),
|
|
40
|
+
* ' ' + this.tabFeature.renderTabs(this.state, this.styles),
|
|
41
|
+
* '',
|
|
42
|
+
* // ... content
|
|
43
|
+
* ...this.renderFooter(this.tabFeature.renderHints() + ' · ↑↓/jk Navigate')
|
|
44
|
+
* ];
|
|
45
|
+
* }
|
|
46
|
+
* }
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
import { isTab, isShiftTab, getNumberKey, } from '../base/key-utils.js';
|
|
50
|
+
// =============================================================================
|
|
51
|
+
// TabFeature Class
|
|
52
|
+
// =============================================================================
|
|
53
|
+
/**
|
|
54
|
+
* Feature for tab/filter navigation.
|
|
55
|
+
*
|
|
56
|
+
* Handles:
|
|
57
|
+
* - Tab/Shift+Tab for cycling tabs
|
|
58
|
+
* - Number keys 1-9 for direct selection (optional)
|
|
59
|
+
*
|
|
60
|
+
* Note: Arrow keys are NOT handled - they are reserved for pagination.
|
|
61
|
+
*/
|
|
62
|
+
export class TabFeature {
|
|
63
|
+
config;
|
|
64
|
+
/**
|
|
65
|
+
* Create a new TabFeature.
|
|
66
|
+
*
|
|
67
|
+
* @param tabs - Tab definitions
|
|
68
|
+
* @param onChange - Optional callback when tab changes
|
|
69
|
+
*/
|
|
70
|
+
constructor(tabs, onChange) {
|
|
71
|
+
this.config = {
|
|
72
|
+
tabs,
|
|
73
|
+
onChange,
|
|
74
|
+
useNumberKeys: tabs.length <= 9,
|
|
75
|
+
wrapNavigation: true,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Create from config object (alternative constructor).
|
|
80
|
+
*/
|
|
81
|
+
static fromConfig(config) {
|
|
82
|
+
const feature = new TabFeature(config.tabs, config.onChange);
|
|
83
|
+
if (config.useNumberKeys !== undefined) {
|
|
84
|
+
feature.config.useNumberKeys = config.useNumberKeys;
|
|
85
|
+
}
|
|
86
|
+
if (config.wrapNavigation !== undefined) {
|
|
87
|
+
feature.config.wrapNavigation = config.wrapNavigation;
|
|
88
|
+
}
|
|
89
|
+
return feature;
|
|
90
|
+
}
|
|
91
|
+
// ===========================================================================
|
|
92
|
+
// Key Handling
|
|
93
|
+
// ===========================================================================
|
|
94
|
+
/**
|
|
95
|
+
* Handle a key press.
|
|
96
|
+
*
|
|
97
|
+
* @param data - Raw key buffer
|
|
98
|
+
* @param state - State containing currentTab
|
|
99
|
+
* @returns KeyResult if handled, null otherwise
|
|
100
|
+
*/
|
|
101
|
+
handleKey(data, state) {
|
|
102
|
+
const tabCount = this.config.tabs.length;
|
|
103
|
+
if (tabCount === 0) {
|
|
104
|
+
return null; // No tabs
|
|
105
|
+
}
|
|
106
|
+
// Tab - next tab
|
|
107
|
+
if (isTab(data)) {
|
|
108
|
+
const newIndex = this.config.wrapNavigation
|
|
109
|
+
? (state.currentTab + 1) % tabCount
|
|
110
|
+
: Math.min(state.currentTab + 1, tabCount - 1);
|
|
111
|
+
if (newIndex !== state.currentTab) {
|
|
112
|
+
state.currentTab = newIndex;
|
|
113
|
+
this.notifyChange(state);
|
|
114
|
+
return { handled: true, action: 'render' };
|
|
115
|
+
}
|
|
116
|
+
return { handled: true }; // At end, consume but no change
|
|
117
|
+
}
|
|
118
|
+
// Shift+Tab - previous tab
|
|
119
|
+
if (isShiftTab(data)) {
|
|
120
|
+
const newIndex = this.config.wrapNavigation
|
|
121
|
+
? (state.currentTab - 1 + tabCount) % tabCount
|
|
122
|
+
: Math.max(state.currentTab - 1, 0);
|
|
123
|
+
if (newIndex !== state.currentTab) {
|
|
124
|
+
state.currentTab = newIndex;
|
|
125
|
+
this.notifyChange(state);
|
|
126
|
+
return { handled: true, action: 'render' };
|
|
127
|
+
}
|
|
128
|
+
return { handled: true }; // At start, consume but no change
|
|
129
|
+
}
|
|
130
|
+
// Number keys 1-9 for direct selection
|
|
131
|
+
if (this.config.useNumberKeys) {
|
|
132
|
+
const num = getNumberKey(data);
|
|
133
|
+
if (num !== null && num >= 1 && num <= tabCount) {
|
|
134
|
+
const newIndex = num - 1;
|
|
135
|
+
if (newIndex !== state.currentTab) {
|
|
136
|
+
state.currentTab = newIndex;
|
|
137
|
+
this.notifyChange(state);
|
|
138
|
+
return { handled: true, action: 'render' };
|
|
139
|
+
}
|
|
140
|
+
return { handled: true }; // Already on this tab
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return null; // Not handled
|
|
144
|
+
}
|
|
145
|
+
// ===========================================================================
|
|
146
|
+
// Rendering
|
|
147
|
+
// ===========================================================================
|
|
148
|
+
/**
|
|
149
|
+
* Render tabs in a row.
|
|
150
|
+
*
|
|
151
|
+
* @param state - State containing currentTab
|
|
152
|
+
* @param styles - Theme styles
|
|
153
|
+
* @returns Rendered tab bar string
|
|
154
|
+
*/
|
|
155
|
+
renderTabs(state, styles) {
|
|
156
|
+
return this.config.tabs
|
|
157
|
+
.map((tab, index) => {
|
|
158
|
+
const label = ` ${tab.label} `;
|
|
159
|
+
return index === state.currentTab
|
|
160
|
+
? styles.selected(label)
|
|
161
|
+
: styles.muted(label);
|
|
162
|
+
})
|
|
163
|
+
.join('');
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Render tabs with number key hints.
|
|
167
|
+
*
|
|
168
|
+
* @param state - State containing currentTab
|
|
169
|
+
* @param styles - Theme styles
|
|
170
|
+
* @returns Rendered tab bar string with numbers
|
|
171
|
+
*/
|
|
172
|
+
renderTabsWithNumbers(state, styles) {
|
|
173
|
+
return this.config.tabs
|
|
174
|
+
.map((tab, index) => {
|
|
175
|
+
const num = String(index + 1);
|
|
176
|
+
const label = ` ${num}:${tab.label} `;
|
|
177
|
+
return index === state.currentTab
|
|
178
|
+
? styles.selected(label)
|
|
179
|
+
: styles.muted(label);
|
|
180
|
+
})
|
|
181
|
+
.join('');
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Render tabs with custom separator.
|
|
185
|
+
*
|
|
186
|
+
* @param state - State containing currentTab
|
|
187
|
+
* @param styles - Theme styles
|
|
188
|
+
* @param separator - Separator between tabs (default: '')
|
|
189
|
+
* @returns Rendered tab bar string
|
|
190
|
+
*/
|
|
191
|
+
renderTabsWithSeparator(state, styles, separator = '') {
|
|
192
|
+
return this.config.tabs
|
|
193
|
+
.map((tab, index) => {
|
|
194
|
+
const label = ` ${tab.label} `;
|
|
195
|
+
return index === state.currentTab
|
|
196
|
+
? styles.selected(label)
|
|
197
|
+
: styles.muted(label);
|
|
198
|
+
})
|
|
199
|
+
.join(separator);
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Render keyboard hints for tabs.
|
|
203
|
+
*
|
|
204
|
+
* @returns Hint string like "Tab Switch · 1-5 Jump"
|
|
205
|
+
*/
|
|
206
|
+
renderHints() {
|
|
207
|
+
const tabCount = this.config.tabs.length;
|
|
208
|
+
if (tabCount === 0) {
|
|
209
|
+
return '';
|
|
210
|
+
}
|
|
211
|
+
if (this.config.useNumberKeys && tabCount <= 9) {
|
|
212
|
+
return `Tab Switch · 1-${String(tabCount)} Jump`;
|
|
213
|
+
}
|
|
214
|
+
return 'Tab Switch';
|
|
215
|
+
}
|
|
216
|
+
// ===========================================================================
|
|
217
|
+
// Utilities
|
|
218
|
+
// ===========================================================================
|
|
219
|
+
/**
|
|
220
|
+
* Get the current tab definition.
|
|
221
|
+
*
|
|
222
|
+
* @param state - State containing currentTab
|
|
223
|
+
* @returns Current tab or undefined
|
|
224
|
+
*/
|
|
225
|
+
getCurrentTab(state) {
|
|
226
|
+
return this.config.tabs[state.currentTab];
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Get the current tab ID.
|
|
230
|
+
*
|
|
231
|
+
* @param state - State containing currentTab
|
|
232
|
+
* @returns Current tab ID or empty string
|
|
233
|
+
*/
|
|
234
|
+
getCurrentTabId(state) {
|
|
235
|
+
return this.config.tabs[state.currentTab]?.id ?? '';
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Get the number of tabs.
|
|
239
|
+
*/
|
|
240
|
+
getTabCount() {
|
|
241
|
+
return this.config.tabs.length;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Find tab index by ID.
|
|
245
|
+
*
|
|
246
|
+
* @param tabId - Tab ID to find
|
|
247
|
+
* @returns Index or -1 if not found
|
|
248
|
+
*/
|
|
249
|
+
findTabIndex(tabId) {
|
|
250
|
+
return this.config.tabs.findIndex((t) => t.id === tabId);
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Set current tab by ID.
|
|
254
|
+
*
|
|
255
|
+
* @param state - State to modify
|
|
256
|
+
* @param tabId - Tab ID to select
|
|
257
|
+
* @returns true if tab was found and selected
|
|
258
|
+
*/
|
|
259
|
+
setTabById(state, tabId) {
|
|
260
|
+
const index = this.findTabIndex(tabId);
|
|
261
|
+
if (index >= 0) {
|
|
262
|
+
state.currentTab = index;
|
|
263
|
+
return true;
|
|
264
|
+
}
|
|
265
|
+
return false;
|
|
266
|
+
}
|
|
267
|
+
// ===========================================================================
|
|
268
|
+
// Private Methods
|
|
269
|
+
// ===========================================================================
|
|
270
|
+
notifyChange(state) {
|
|
271
|
+
if (this.config.onChange) {
|
|
272
|
+
const tab = this.config.tabs[state.currentTab];
|
|
273
|
+
this.config.onChange(tab.id, state.currentTab);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
// =============================================================================
|
|
278
|
+
// Helper Functions
|
|
279
|
+
// =============================================================================
|
|
280
|
+
/**
|
|
281
|
+
* Create tab definitions from an array of strings.
|
|
282
|
+
* IDs are lowercase versions of labels.
|
|
283
|
+
*
|
|
284
|
+
* @param labels - Tab labels
|
|
285
|
+
* @returns Tab definitions
|
|
286
|
+
*/
|
|
287
|
+
export function createTabsFromLabels(labels) {
|
|
288
|
+
return labels.map((label) => ({
|
|
289
|
+
id: label.toLowerCase().replace(/\s+/g, '-'),
|
|
290
|
+
label,
|
|
291
|
+
}));
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Create filter tabs (common pattern).
|
|
295
|
+
*
|
|
296
|
+
* @param filters - Array of filter names
|
|
297
|
+
* @returns Tab definitions with 'all' as first tab
|
|
298
|
+
*/
|
|
299
|
+
export function createFilterTabs(filters) {
|
|
300
|
+
return [
|
|
301
|
+
{ id: 'all', label: 'All' },
|
|
302
|
+
...filters.map((f) => ({
|
|
303
|
+
id: f.toLowerCase().replace(/\s+/g, '-'),
|
|
304
|
+
label: f,
|
|
305
|
+
})),
|
|
306
|
+
];
|
|
307
|
+
}
|
|
@@ -39,6 +39,30 @@ export declare function replaceAtMention(input: string, cursorPos: number, compl
|
|
|
39
39
|
input: string;
|
|
40
40
|
cursorPos: number;
|
|
41
41
|
};
|
|
42
|
+
/**
|
|
43
|
+
* Extract the $ mention being typed at the cursor position
|
|
44
|
+
* Returns the partial text after $ if in a $ context, null otherwise
|
|
45
|
+
*
|
|
46
|
+
* @param input - The current line text
|
|
47
|
+
* @param cursorPos - Current cursor position within the line
|
|
48
|
+
* @returns The partial agent name after $, or null if not in $ context
|
|
49
|
+
*/
|
|
50
|
+
export declare function extractDollarMention(input: string, cursorPos: number): {
|
|
51
|
+
partial: string;
|
|
52
|
+
startPos: number;
|
|
53
|
+
} | null;
|
|
54
|
+
/**
|
|
55
|
+
* Replace the $ mention with completed agent name
|
|
56
|
+
*
|
|
57
|
+
* @param input - Full input text
|
|
58
|
+
* @param cursorPos - Current cursor position
|
|
59
|
+
* @param agentId - The completed agent ID to insert
|
|
60
|
+
* @returns New input text and new cursor position
|
|
61
|
+
*/
|
|
62
|
+
export declare function replaceDollarMention(input: string, cursorPos: number, agentId: string): {
|
|
63
|
+
input: string;
|
|
64
|
+
cursorPos: number;
|
|
65
|
+
};
|
|
42
66
|
/**
|
|
43
67
|
* Clear the file cache (call when cwd changes)
|
|
44
68
|
*/
|
|
@@ -228,6 +228,62 @@ export function replaceAtMention(input, cursorPos, completedPath) {
|
|
|
228
228
|
const newCursorPos = atPos + 1 + completedPath.length;
|
|
229
229
|
return { input: newInput, cursorPos: newCursorPos };
|
|
230
230
|
}
|
|
231
|
+
/**
|
|
232
|
+
* Extract the $ mention being typed at the cursor position
|
|
233
|
+
* Returns the partial text after $ if in a $ context, null otherwise
|
|
234
|
+
*
|
|
235
|
+
* @param input - The current line text
|
|
236
|
+
* @param cursorPos - Current cursor position within the line
|
|
237
|
+
* @returns The partial agent name after $, or null if not in $ context
|
|
238
|
+
*/
|
|
239
|
+
export function extractDollarMention(input, cursorPos) {
|
|
240
|
+
// Look backwards from cursor to find $
|
|
241
|
+
let start = cursorPos - 1;
|
|
242
|
+
while (start >= 0) {
|
|
243
|
+
const char = input[start];
|
|
244
|
+
// Found $
|
|
245
|
+
if (char === '$') {
|
|
246
|
+
// Make sure it's at start or after whitespace
|
|
247
|
+
if (start === 0 || /\s/.test(input[start - 1])) {
|
|
248
|
+
return {
|
|
249
|
+
partial: input.slice(start + 1, cursorPos),
|
|
250
|
+
startPos: start,
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
return null;
|
|
254
|
+
}
|
|
255
|
+
// Hit whitespace without finding $ - not in $ context
|
|
256
|
+
if (/\s/.test(char)) {
|
|
257
|
+
return null;
|
|
258
|
+
}
|
|
259
|
+
start--;
|
|
260
|
+
}
|
|
261
|
+
return null;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Replace the $ mention with completed agent name
|
|
265
|
+
*
|
|
266
|
+
* @param input - Full input text
|
|
267
|
+
* @param cursorPos - Current cursor position
|
|
268
|
+
* @param agentId - The completed agent ID to insert
|
|
269
|
+
* @returns New input text and new cursor position
|
|
270
|
+
*/
|
|
271
|
+
export function replaceDollarMention(input, cursorPos, agentId) {
|
|
272
|
+
// Find the $ position
|
|
273
|
+
let dollarPos = cursorPos - 1;
|
|
274
|
+
while (dollarPos >= 0 && input[dollarPos] !== '$') {
|
|
275
|
+
dollarPos--;
|
|
276
|
+
}
|
|
277
|
+
if (dollarPos < 0) {
|
|
278
|
+
return { input, cursorPos };
|
|
279
|
+
}
|
|
280
|
+
// Replace from $ to cursor with the completed agent + space
|
|
281
|
+
const before = input.slice(0, dollarPos);
|
|
282
|
+
const after = input.slice(cursorPos);
|
|
283
|
+
const newInput = `${before}$${agentId} ${after}`;
|
|
284
|
+
const newCursorPos = dollarPos + 1 + agentId.length + 1; // +1 for $ +1 for space
|
|
285
|
+
return { input: newInput, cursorPos: newCursorPos };
|
|
286
|
+
}
|
|
231
287
|
/**
|
|
232
288
|
* Clear the file cache (call when cwd changes)
|
|
233
289
|
*/
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Footer renderer.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from TerminalUI — owns render state (line height tracking,
|
|
5
|
+
* spinner animation) and the render pipeline (clear, render, line builders).
|
|
6
|
+
* Reads application state through the host's getRenderData() snapshot.
|
|
7
|
+
*/
|
|
8
|
+
import type { TodoItem, AgentMode } from './types.js';
|
|
9
|
+
import type { TerminalUIConfig } from './terminal-types.js';
|
|
10
|
+
import type { TurnMetrics } from './turn-metrics.js';
|
|
11
|
+
import type { StatusBarController } from './status-bar-controller.js';
|
|
12
|
+
import type { AutocompleteController } from './autocomplete-controller.js';
|
|
13
|
+
import type { LiveRegion } from './live-region.js';
|
|
14
|
+
export interface FooterRendererHost {
|
|
15
|
+
/** Check if footer rendering should proceed. */
|
|
16
|
+
isFooterRenderAllowed(): boolean;
|
|
17
|
+
/** Build a snapshot of application state for the render pipeline. */
|
|
18
|
+
getRenderData(): FooterRenderData;
|
|
19
|
+
}
|
|
20
|
+
export interface FooterRenderData {
|
|
21
|
+
liveRegion: LiveRegion;
|
|
22
|
+
liveVerbose: boolean;
|
|
23
|
+
agentRunning: boolean;
|
|
24
|
+
currentTool: string | null;
|
|
25
|
+
spinnerText: string | null;
|
|
26
|
+
activeBashInfo: {
|
|
27
|
+
toolUseId: string;
|
|
28
|
+
startTime: number;
|
|
29
|
+
} | null;
|
|
30
|
+
turnMetrics: TurnMetrics;
|
|
31
|
+
todos: TodoItem[];
|
|
32
|
+
showTodos: boolean;
|
|
33
|
+
lines: readonly string[];
|
|
34
|
+
currentLine: number;
|
|
35
|
+
cursorPos: number;
|
|
36
|
+
queuedInputs: readonly string[];
|
|
37
|
+
suggestion: string | null;
|
|
38
|
+
promptPrefix: string;
|
|
39
|
+
promptPrefixLen: number;
|
|
40
|
+
ac: AutocompleteController;
|
|
41
|
+
statusBar: StatusBarController;
|
|
42
|
+
mode: AgentMode;
|
|
43
|
+
activePlanName: string | null;
|
|
44
|
+
activeTeamAgent: {
|
|
45
|
+
id: string;
|
|
46
|
+
displayName: string;
|
|
47
|
+
mascot: string;
|
|
48
|
+
} | null;
|
|
49
|
+
projectName: string | null;
|
|
50
|
+
conversationFilterActive: boolean;
|
|
51
|
+
hasRestoredHistory: boolean;
|
|
52
|
+
config: TerminalUIConfig;
|
|
53
|
+
}
|
|
54
|
+
export declare class FooterRenderer {
|
|
55
|
+
private lastRenderHeight;
|
|
56
|
+
private cursorLineFromBottom;
|
|
57
|
+
private spinnerFrame;
|
|
58
|
+
private spinnerTimer;
|
|
59
|
+
private readonly spinnerFrames;
|
|
60
|
+
private readonly host;
|
|
61
|
+
constructor(host: FooterRendererHost);
|
|
62
|
+
clear(): void;
|
|
63
|
+
render(): void;
|
|
64
|
+
resetRenderState(): void;
|
|
65
|
+
startSpinnerAnimation(onTick: () => void): void;
|
|
66
|
+
stopSpinnerAnimation(): void;
|
|
67
|
+
private buildSpinnerLine;
|
|
68
|
+
private buildModeLine;
|
|
69
|
+
}
|