@compilr-dev/cli 0.5.0 → 0.5.2
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/LICENSE +108 -0
- package/README.md +237 -69
- 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 +61 -4
- package/dist/agent.js +241 -245
- package/dist/anchors/index.d.ts +1 -1
- package/dist/anchors/index.js +1 -1
- package/dist/anchors/project-anchors.d.ts +2 -2
- package/dist/anchors/project-anchors.js +1 -1
- 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-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.js +286 -81
- package/dist/commands-v2/handlers/core.d.ts +1 -0
- package/dist/commands-v2/handlers/core.js +133 -8
- package/dist/commands-v2/handlers/debug.js +18 -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 +13 -0
- package/dist/commands-v2/handlers/index.js +39 -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.js +295 -31
- 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 +2 -0
- package/dist/commands-v2/handlers/settings.js +217 -35
- 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 +3 -2
- package/dist/commands-v2/index.js +4 -1
- package/dist/commands-v2/registry.d.ts +15 -0
- package/dist/commands-v2/registry.js +34 -0
- package/dist/commands-v2/types.d.ts +81 -3
- package/dist/commands.js +13 -0
- 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 +6 -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 +448 -271
- package/dist/input-handlers/memory-handler.d.ts +1 -1
- package/dist/input-handlers/memory-handler.js +2 -1
- 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.js +5 -2
- package/dist/repl-v2.d.ts +401 -2
- package/dist/repl-v2.js +2588 -65
- 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 +133 -13
- package/dist/settings/index.js +329 -24
- package/dist/settings/mcp-config.d.ts +76 -0
- package/dist/settings/mcp-config.js +143 -0
- package/dist/settings/paths.d.ts +4 -0
- package/dist/settings/paths.js +6 -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 -61
- package/dist/templates/config-json.d.ts +1 -25
- package/dist/templates/index.d.ts +2 -0
- package/dist/templates/index.js +34 -73
- package/dist/tool-names.d.ts +113 -0
- package/dist/tool-names.js +239 -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.d.ts +2 -2
- package/dist/tools/backlog.js +1 -1
- package/dist/tools/db-tools.d.ts +13 -61
- package/dist/tools/db-tools.js +12 -13
- 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/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/platform-adapter.d.ts +35 -0
- package/dist/tools/platform-adapter.js +404 -0
- package/dist/tools/project-db.d.ts +5 -73
- package/dist/tools/project-db.js +5 -336
- package/dist/tools.d.ts +67 -2
- package/dist/tools.js +240 -48
- package/dist/ui/autocomplete-controller.d.ts +42 -0
- package/dist/ui/autocomplete-controller.js +384 -0
- package/dist/ui/base/index.d.ts +1 -1
- package/dist/ui/base/index.js +1 -1
- package/dist/ui/base/overlay-base-v2.d.ts +10 -0
- package/dist/ui/base/overlay-base-v2.js +14 -0
- package/dist/ui/base/render-utils.d.ts +19 -0
- package/dist/ui/base/render-utils.js +25 -0
- package/dist/ui/base/tabbed-list-overlay-v2.d.ts +16 -1
- package/dist/ui/base/tabbed-list-overlay-v2.js +19 -1
- package/dist/ui/constants/labels.d.ts +14 -0
- package/dist/ui/constants/labels.js +52 -0
- package/dist/ui/conversation-store.d.ts +55 -0
- package/dist/ui/conversation-store.js +107 -0
- package/dist/ui/conversation.js +11 -13
- package/dist/ui/diff.d.ts +7 -1
- package/dist/ui/diff.js +85 -48
- package/dist/ui/ephemeral.js +3 -9
- 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 +74 -7
- package/dist/ui/footer.js +173 -16
- package/dist/ui/input-controller.d.ts +51 -0
- package/dist/ui/input-controller.js +176 -0
- package/dist/ui/input-prompt.d.ts +19 -0
- package/dist/ui/input-prompt.js +206 -14
- package/dist/ui/keyboard-handler.d.ts +57 -0
- package/dist/ui/keyboard-handler.js +557 -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 +0 -4
- package/dist/ui/live-region.js +6 -14
- package/dist/ui/mascot/renderer.d.ts +1 -1
- package/dist/ui/mascot/renderer.js +37 -2
- 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.js +6 -17
- package/dist/ui/overlay/impl/anchors-overlay-v2.js +30 -64
- 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.js +2 -5
- 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 +4 -1
- package/dist/ui/overlay/impl/backlog-overlay-v2.js +55 -16
- 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.js +4 -6
- package/dist/ui/overlay/impl/config-overlay-v2.d.ts +12 -1
- package/dist/ui/overlay/impl/config-overlay-v2.js +164 -100
- 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 +2 -0
- package/dist/ui/overlay/impl/dashboard-overlay-v2.js +26 -3
- 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.js +12 -9
- package/dist/ui/overlay/impl/document-detail-overlay-v2.d.ts +7 -0
- package/dist/ui/overlay/impl/document-detail-overlay-v2.js +119 -78
- 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/help-overlay-v2.d.ts +26 -3
- package/dist/ui/overlay/impl/help-overlay-v2.js +20 -42
- 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/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 +57 -13
- package/dist/ui/overlay/impl/model-overlay-v2.js +1086 -61
- package/dist/ui/overlay/impl/new-overlay-v2.d.ts +37 -6
- package/dist/ui/overlay/impl/new-overlay-v2.js +715 -65
- 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.js +5 -5
- 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 +1 -0
- package/dist/ui/overlay/impl/projects-overlay-v2.js +278 -44
- 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/tools-overlay-v2.js +3 -7
- package/dist/ui/overlay/impl/tutorial-overlay-v2.d.ts +30 -16
- package/dist/ui/overlay/impl/tutorial-overlay-v2.js +133 -956
- package/dist/ui/overlay/impl/workflow-overlay-v2.d.ts +1 -0
- package/dist/ui/overlay/impl/workflow-overlay-v2.js +10 -4
- package/dist/ui/overlay/index.d.ts +20 -1
- package/dist/ui/overlay/index.js +19 -0
- package/dist/ui/overlay/types.d.ts +5 -0
- package/dist/ui/overlay-manager.d.ts +43 -0
- package/dist/ui/overlay-manager.js +238 -0
- package/dist/ui/overlays.js +4 -16
- package/dist/ui/permission-overlay.js +6 -5
- package/dist/ui/status-bar-controller.d.ts +33 -0
- package/dist/ui/status-bar-controller.js +99 -0
- package/dist/ui/subagent-renderer.js +3 -19
- package/dist/ui/terminal-autocomplete-utils.d.ts +23 -0
- package/dist/ui/terminal-autocomplete-utils.js +83 -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 +7 -8
- package/dist/ui/terminal-renderer.js +7 -8
- package/dist/ui/terminal-types.d.ts +179 -0
- package/dist/ui/terminal-types.js +34 -0
- package/dist/ui/terminal-ui.d.ts +144 -276
- package/dist/ui/terminal-ui.js +384 -1861
- package/dist/ui/todo-zone.d.ts +19 -1
- package/dist/ui/todo-zone.js +71 -13
- package/dist/ui/tool-formatters.js +696 -1
- 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/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 +38 -16
- package/dist/utils/open-browser.d.ts +5 -0
- package/dist/utils/open-browser.js +32 -0
- package/dist/utils/path-safety.js +3 -2
- 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/package.json +27 -13
- package/dist/commands/handler-types.d.ts +0 -68
- package/dist/commands/handler-types.js +0 -8
- package/dist/commands/handlers/agent-commands.d.ts +0 -13
- package/dist/commands/handlers/agent-commands.js +0 -305
- package/dist/commands/handlers/design-commands.d.ts +0 -15
- package/dist/commands/handlers/design-commands.js +0 -334
- package/dist/commands/handlers/index.d.ts +0 -20
- package/dist/commands/handlers/index.js +0 -43
- package/dist/commands/handlers/overlay-commands.d.ts +0 -21
- package/dist/commands/handlers/overlay-commands.js +0 -287
- package/dist/commands/handlers/project-commands.d.ts +0 -11
- package/dist/commands/handlers/project-commands.js +0 -167
- package/dist/commands/handlers/simple-commands.d.ts +0 -19
- package/dist/commands/handlers/simple-commands.js +0 -144
- package/dist/commands/registry.d.ts +0 -50
- package/dist/commands/registry.js +0 -75
- package/dist/index.old.d.ts +0 -7
- package/dist/index.old.js +0 -1014
- package/dist/repl.d.ts +0 -149
- package/dist/repl.js +0 -1151
- 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/tools/anchor-tools.d.ts +0 -31
- package/dist/tools/anchor-tools.js +0 -255
- package/dist/tools/backlog-wrappers.d.ts +0 -54
- package/dist/tools/backlog-wrappers.js +0 -338
- package/dist/tools/document-db.d.ts +0 -43
- package/dist/tools/document-db.js +0 -220
- package/dist/tools/workitem-db.d.ts +0 -103
- package/dist/tools/workitem-db.js +0 -549
- package/dist/ui/agents-overlay-v2.d.ts +0 -43
- package/dist/ui/agents-overlay-v2.js +0 -809
- package/dist/ui/agents-overlay.d.ts +0 -12
- package/dist/ui/agents-overlay.js +0 -863
- package/dist/ui/anchors-overlay.d.ts +0 -12
- package/dist/ui/anchors-overlay.js +0 -775
- package/dist/ui/arch-type-overlay.d.ts +0 -15
- package/dist/ui/arch-type-overlay.js +0 -201
- package/dist/ui/ask-user-overlay-v2.d.ts +0 -26
- package/dist/ui/ask-user-overlay-v2.js +0 -555
- package/dist/ui/ask-user-simple-overlay-v2.d.ts +0 -25
- package/dist/ui/ask-user-simple-overlay-v2.js +0 -215
- package/dist/ui/backlog-overlay.d.ts +0 -32
- package/dist/ui/backlog-overlay.js +0 -652
- package/dist/ui/commands-overlay-v2.d.ts +0 -33
- package/dist/ui/commands-overlay-v2.js +0 -441
- package/dist/ui/commands-overlay.d.ts +0 -16
- package/dist/ui/commands-overlay.js +0 -439
- package/dist/ui/config-overlay.d.ts +0 -35
- package/dist/ui/config-overlay.js +0 -707
- package/dist/ui/docs-overlay.d.ts +0 -17
- package/dist/ui/docs-overlay.js +0 -303
- package/dist/ui/footer-v2.d.ts +0 -222
- package/dist/ui/footer-v2.js +0 -1349
- package/dist/ui/help-overlay-v2.d.ts +0 -34
- package/dist/ui/help-overlay-v2.js +0 -309
- package/dist/ui/help-overlay.d.ts +0 -16
- package/dist/ui/help-overlay.js +0 -316
- package/dist/ui/init-overlay-v2.d.ts +0 -34
- package/dist/ui/init-overlay-v2.js +0 -600
- package/dist/ui/init-overlay.d.ts +0 -34
- package/dist/ui/init-overlay.js +0 -604
- package/dist/ui/input-prompt-v2.d.ts +0 -180
- package/dist/ui/input-prompt-v2.js +0 -999
- package/dist/ui/iteration-limit-overlay-v2.d.ts +0 -21
- package/dist/ui/iteration-limit-overlay-v2.js +0 -114
- package/dist/ui/keys-overlay-v2.d.ts +0 -41
- package/dist/ui/keys-overlay-v2.js +0 -248
- package/dist/ui/mascot-overlay-v2.d.ts +0 -41
- package/dist/ui/mascot-overlay-v2.js +0 -138
- package/dist/ui/mascot-overlay.d.ts +0 -21
- package/dist/ui/mascot-overlay.js +0 -146
- package/dist/ui/model-overlay-v2.d.ts +0 -49
- package/dist/ui/model-overlay-v2.js +0 -118
- package/dist/ui/model-overlay.d.ts +0 -27
- package/dist/ui/model-overlay.js +0 -221
- package/dist/ui/model-warning-overlay.d.ts +0 -30
- package/dist/ui/model-warning-overlay.js +0 -169
- package/dist/ui/new-overlay.d.ts +0 -34
- package/dist/ui/new-overlay.js +0 -604
- package/dist/ui/overlay/impl/init-overlay-v2.d.ts +0 -77
- package/dist/ui/overlay/impl/init-overlay-v2.js +0 -593
- package/dist/ui/overlay/overlay-types.d.ts +0 -128
- package/dist/ui/overlay/overlay-types.js +0 -22
- package/dist/ui/overlays/help-overlay-v2.d.ts +0 -28
- package/dist/ui/overlays/help-overlay-v2.js +0 -198
- package/dist/ui/overlays/index.d.ts +0 -11
- package/dist/ui/overlays/index.js +0 -11
- package/dist/ui/permission-overlay-v2.d.ts +0 -36
- package/dist/ui/permission-overlay-v2.js +0 -380
- package/dist/ui/projects-overlay.d.ts +0 -19
- package/dist/ui/projects-overlay.js +0 -484
- package/dist/ui/theme-overlay-v2.d.ts +0 -42
- package/dist/ui/theme-overlay-v2.js +0 -135
- package/dist/ui/theme-overlay.d.ts +0 -24
- package/dist/ui/theme-overlay.js +0 -127
- package/dist/ui/tools-overlay-v2.d.ts +0 -47
- package/dist/ui/tools-overlay-v2.js +0 -218
- package/dist/ui/tools-overlay.d.ts +0 -34
- package/dist/ui/tools-overlay.js +0 -230
- package/dist/ui/tutorial-overlay-v2.d.ts +0 -31
- package/dist/ui/tutorial-overlay-v2.js +0 -1035
- package/dist/ui/tutorial-overlay.d.ts +0 -11
- package/dist/ui/tutorial-overlay.js +0 -1034
- package/dist/ui/workflow-overlay.d.ts +0 -22
- package/dist/ui/workflow-overlay.js +0 -636
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pending Requests Overlay V2
|
|
3
|
+
*
|
|
4
|
+
* Modal overlay for viewing and responding to pending requests from background agents.
|
|
5
|
+
* Users can approve, deny, or view details of each request.
|
|
6
|
+
*
|
|
7
|
+
* Phase 3b: Background Agents
|
|
8
|
+
*/
|
|
9
|
+
import { BaseOverlayV2 } from '../../base/index.js';
|
|
10
|
+
import type { RenderContext, OverlayAction, KeyEvent } from '../index.js';
|
|
11
|
+
import { type PendingRequest } from '../../../multi-agent/index.js';
|
|
12
|
+
export type PendingOverlayResult = {
|
|
13
|
+
type: 'closed';
|
|
14
|
+
} | {
|
|
15
|
+
type: 'respond';
|
|
16
|
+
request: PendingRequest;
|
|
17
|
+
};
|
|
18
|
+
interface PendingOverlayState {
|
|
19
|
+
/** Currently selected request index */
|
|
20
|
+
selectedIndex: number;
|
|
21
|
+
/** Requests snapshot at render time */
|
|
22
|
+
requests: PendingRequest[];
|
|
23
|
+
/** Whether we're showing a diff detail view */
|
|
24
|
+
showingDiff: boolean;
|
|
25
|
+
/** Scroll offset in diff view */
|
|
26
|
+
diffScrollOffset: number;
|
|
27
|
+
/** Pre-rendered diff lines (colored) */
|
|
28
|
+
diffLines: string[];
|
|
29
|
+
/** Which request the diff is for */
|
|
30
|
+
diffRequestId: string;
|
|
31
|
+
}
|
|
32
|
+
export declare class PendingOverlayV2 extends BaseOverlayV2<PendingOverlayState, PendingOverlayResult> {
|
|
33
|
+
readonly type: "inline";
|
|
34
|
+
readonly id = "pending-overlay-v2";
|
|
35
|
+
/** Active VS Code diff watchers, keyed by pending request ID */
|
|
36
|
+
private readonly vsDiffWatchers;
|
|
37
|
+
constructor();
|
|
38
|
+
protected renderContent(context: RenderContext): string[];
|
|
39
|
+
private renderListView;
|
|
40
|
+
private renderDiffView;
|
|
41
|
+
handleKey(key: KeyEvent): OverlayAction<PendingOverlayResult>;
|
|
42
|
+
private handleListKey;
|
|
43
|
+
/**
|
|
44
|
+
* Cancel an active VS Code diff for a pending request (if any).
|
|
45
|
+
* Called when the request is resolved from the terminal.
|
|
46
|
+
*/
|
|
47
|
+
private cancelVSDiffForRequest;
|
|
48
|
+
private handleDiffKey;
|
|
49
|
+
getCloseSummary(result: PendingOverlayResult): string | null;
|
|
50
|
+
}
|
|
51
|
+
export {};
|
|
@@ -0,0 +1,445 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pending Requests Overlay V2
|
|
3
|
+
*
|
|
4
|
+
* Modal overlay for viewing and responding to pending requests from background agents.
|
|
5
|
+
* Users can approve, deny, or view details of each request.
|
|
6
|
+
*
|
|
7
|
+
* Phase 3b: Background Agents
|
|
8
|
+
*/
|
|
9
|
+
import chalk from 'chalk';
|
|
10
|
+
import { getStyles } from '../../../themes/index.js';
|
|
11
|
+
import { BaseOverlayV2, truncate } from '../../base/index.js';
|
|
12
|
+
import * as terminal from '../../terminal.js';
|
|
13
|
+
import * as diff from '../../diff.js';
|
|
14
|
+
import { isVSDiffAvailable } from '../../../utils/vscode-detect.js';
|
|
15
|
+
import { openVSCodeDiffForTool, cancelDiffRequest, waitForDiffResponse, } from '../../vscode-diff-ipc.js';
|
|
16
|
+
import { getPendingRequestsManager, } from '../../../multi-agent/index.js';
|
|
17
|
+
// Fixed height for diff view content area
|
|
18
|
+
const DIFF_VIEW_CONTENT_LINES = 15;
|
|
19
|
+
// Tool names that support diff viewing
|
|
20
|
+
const DIFFABLE_TOOLS = new Set(['edit', 'write_file', 'write']);
|
|
21
|
+
// =============================================================================
|
|
22
|
+
// Helpers
|
|
23
|
+
// =============================================================================
|
|
24
|
+
/**
|
|
25
|
+
* Check if a pending request has a diffable tool
|
|
26
|
+
*/
|
|
27
|
+
function isDiffableRequest(req) {
|
|
28
|
+
if (req.type !== 'permission' || !req.context)
|
|
29
|
+
return false;
|
|
30
|
+
const ctx = req.context;
|
|
31
|
+
return typeof ctx.toolName === 'string' && DIFFABLE_TOOLS.has(ctx.toolName);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Generate diff lines for a pending request.
|
|
35
|
+
* Returns an array of formatted lines, or null if diff can't be generated.
|
|
36
|
+
*/
|
|
37
|
+
function generateDiffForRequest(req) {
|
|
38
|
+
if (!req.context)
|
|
39
|
+
return null;
|
|
40
|
+
const ctx = req.context;
|
|
41
|
+
if (!ctx.toolName || !ctx.input)
|
|
42
|
+
return null;
|
|
43
|
+
const s = getStyles();
|
|
44
|
+
const toolName = ctx.toolName;
|
|
45
|
+
const input = ctx.input;
|
|
46
|
+
if (toolName === 'edit') {
|
|
47
|
+
const filePath = (input.filePath ?? input.file_path ?? input.path ?? '');
|
|
48
|
+
const oldText = (input.oldString ?? input.old_string ?? input.old_text ?? '');
|
|
49
|
+
const newText = (input.newString ?? input.new_string ?? input.new_text ?? '');
|
|
50
|
+
const replaceAll = Boolean(input.replaceAll ?? input.replace_all);
|
|
51
|
+
if (!filePath || !oldText)
|
|
52
|
+
return null;
|
|
53
|
+
const editDiff = diff.generateEditDiff(filePath, oldText, newText, replaceAll);
|
|
54
|
+
if (!editDiff) {
|
|
55
|
+
// Fallback: show raw old/new text
|
|
56
|
+
const lines = [];
|
|
57
|
+
lines.push(s.primary(`File: ${filePath}`));
|
|
58
|
+
lines.push('');
|
|
59
|
+
lines.push(s.muted('Could not read file to generate diff.'));
|
|
60
|
+
lines.push('');
|
|
61
|
+
lines.push(s.muted('Old text:'));
|
|
62
|
+
for (const line of oldText.split('\n').slice(0, 20)) {
|
|
63
|
+
lines.push(' ' + line);
|
|
64
|
+
}
|
|
65
|
+
lines.push('');
|
|
66
|
+
lines.push(s.muted('New text:'));
|
|
67
|
+
for (const line of newText.split('\n').slice(0, 20)) {
|
|
68
|
+
lines.push(' ' + line);
|
|
69
|
+
}
|
|
70
|
+
return lines;
|
|
71
|
+
}
|
|
72
|
+
const header = diff.formatDiffHeader(filePath, editDiff.additions, editDiff.removals);
|
|
73
|
+
return [header, '', ...editDiff.lines];
|
|
74
|
+
}
|
|
75
|
+
if (toolName === 'write_file' || toolName === 'write') {
|
|
76
|
+
const filePath = (input.path ?? input.file_path ?? input.filePath ?? '');
|
|
77
|
+
const content = (input.content ?? '');
|
|
78
|
+
if (!filePath || !content)
|
|
79
|
+
return null;
|
|
80
|
+
const writeDiff = diff.generateWriteDiff(filePath, content, true);
|
|
81
|
+
const header = diff.formatWriteHeader(filePath, writeDiff.additions, true);
|
|
82
|
+
return [header, '', ...writeDiff.lines];
|
|
83
|
+
}
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
// =============================================================================
|
|
87
|
+
// Pending Overlay V2 Class
|
|
88
|
+
// =============================================================================
|
|
89
|
+
export class PendingOverlayV2 extends BaseOverlayV2 {
|
|
90
|
+
type = 'inline';
|
|
91
|
+
id = 'pending-overlay-v2';
|
|
92
|
+
/** Active VS Code diff watchers, keyed by pending request ID */
|
|
93
|
+
vsDiffWatchers = new Map();
|
|
94
|
+
constructor() {
|
|
95
|
+
const manager = getPendingRequestsManager();
|
|
96
|
+
const requests = manager.getAll();
|
|
97
|
+
super({
|
|
98
|
+
selectedIndex: 0,
|
|
99
|
+
requests,
|
|
100
|
+
showingDiff: false,
|
|
101
|
+
diffScrollOffset: 0,
|
|
102
|
+
diffLines: [],
|
|
103
|
+
diffRequestId: '',
|
|
104
|
+
});
|
|
105
|
+
// Set minimum height for stable rendering
|
|
106
|
+
this.minHeight = 10;
|
|
107
|
+
}
|
|
108
|
+
renderContent(context) {
|
|
109
|
+
if (this.state.showingDiff) {
|
|
110
|
+
return this.renderDiffView(context);
|
|
111
|
+
}
|
|
112
|
+
return this.renderListView(context);
|
|
113
|
+
}
|
|
114
|
+
renderListView(context) {
|
|
115
|
+
const s = context.styles;
|
|
116
|
+
const lines = [];
|
|
117
|
+
const cols = terminal.getTerminalWidth();
|
|
118
|
+
const border = s.muted('─'.repeat(Math.max(1, cols - 1)));
|
|
119
|
+
// Refresh requests each render
|
|
120
|
+
const manager = getPendingRequestsManager();
|
|
121
|
+
this.state.requests = manager.getAll();
|
|
122
|
+
// Header
|
|
123
|
+
lines.push(border);
|
|
124
|
+
lines.push(' ' + chalk.bold('Pending Requests') + s.muted(` (${String(this.state.requests.length)} total)`));
|
|
125
|
+
lines.push(border);
|
|
126
|
+
lines.push('');
|
|
127
|
+
if (this.state.requests.length === 0) {
|
|
128
|
+
lines.push(s.muted(' No pending requests from background agents.'));
|
|
129
|
+
lines.push('');
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
// Render each request
|
|
133
|
+
for (let i = 0; i < this.state.requests.length; i++) {
|
|
134
|
+
const req = this.state.requests[i];
|
|
135
|
+
const isSelected = i === this.state.selectedIndex;
|
|
136
|
+
const prefix = isSelected ? ' ❯ ' : ' ';
|
|
137
|
+
// Request header: [mascot] agent: prompt
|
|
138
|
+
const header = `${req.mascot} $${req.agentId}: ${req.prompt}`;
|
|
139
|
+
const maxHeaderLen = cols - 6;
|
|
140
|
+
const truncHeader = truncate(header, maxHeaderLen);
|
|
141
|
+
if (isSelected) {
|
|
142
|
+
lines.push(s.primary(prefix + `${String(i + 1)}. ${truncHeader}`));
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
lines.push(s.muted(prefix + `${String(i + 1)}. ${truncHeader}`));
|
|
146
|
+
}
|
|
147
|
+
// Type indicator
|
|
148
|
+
const typeLabel = req.type === 'permission' ? 'Permission request' : 'Question';
|
|
149
|
+
lines.push(s.muted(` Type: ${typeLabel}`));
|
|
150
|
+
// Actions line (only for selected)
|
|
151
|
+
if (isSelected) {
|
|
152
|
+
if (req.type === 'question') {
|
|
153
|
+
lines.push(s.info(' [r]espond · [d]eny/skip'));
|
|
154
|
+
}
|
|
155
|
+
else if (isDiffableRequest(req)) {
|
|
156
|
+
lines.push(s.info(' [a]pprove [d]eny [v] diff'));
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
lines.push(s.info(' [a]pprove [d]eny'));
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
lines.push('');
|
|
164
|
+
}
|
|
165
|
+
lines.push('');
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// Footer
|
|
169
|
+
lines.push(border);
|
|
170
|
+
if (this.state.requests.length > 0) {
|
|
171
|
+
// Check if selected request is a question
|
|
172
|
+
const selectedReq = this.state.requests[this.state.selectedIndex];
|
|
173
|
+
if (selectedReq && selectedReq.type === 'question') {
|
|
174
|
+
lines.push(s.muted(' ↑↓ Navigate · r/Enter Respond · d Deny/Skip · Esc Close'));
|
|
175
|
+
}
|
|
176
|
+
else if (selectedReq && isDiffableRequest(selectedReq)) {
|
|
177
|
+
lines.push(s.muted(' ↑↓ Navigate · a Approve · d Deny · v View diff · Esc Close'));
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
lines.push(s.muted(' ↑↓ Navigate · a Approve · d Deny · Esc Close'));
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
lines.push(s.muted(' Esc Close'));
|
|
185
|
+
}
|
|
186
|
+
return lines;
|
|
187
|
+
}
|
|
188
|
+
renderDiffView(context) {
|
|
189
|
+
const s = context.styles;
|
|
190
|
+
const cols = terminal.getTerminalWidth();
|
|
191
|
+
const lines = [];
|
|
192
|
+
const border = s.muted('─'.repeat(Math.max(1, cols - 1)));
|
|
193
|
+
// Refresh requests each render
|
|
194
|
+
const manager = getPendingRequestsManager();
|
|
195
|
+
this.state.requests = manager.getAll();
|
|
196
|
+
// Find the request this diff is for (may have been resolved externally via VS Code)
|
|
197
|
+
const req = this.state.requests.find(r => r.id === this.state.diffRequestId);
|
|
198
|
+
if (!req) {
|
|
199
|
+
// Request was resolved externally — return to list view
|
|
200
|
+
this.state.showingDiff = false;
|
|
201
|
+
return this.renderListView(context);
|
|
202
|
+
}
|
|
203
|
+
const agentLabel = `$${req.agentId}`;
|
|
204
|
+
const ctx = req.context;
|
|
205
|
+
const filePath = ctx?.input
|
|
206
|
+
? (ctx.input.filePath ?? ctx.input.file_path ?? ctx.input.path ?? '')
|
|
207
|
+
: '';
|
|
208
|
+
const fileName = filePath.split('/').pop() || filePath;
|
|
209
|
+
// Header
|
|
210
|
+
lines.push(border);
|
|
211
|
+
lines.push(' ' + chalk.bold('Diff: ') + s.primary(fileName) + s.muted(agentLabel ? ` (${agentLabel})` : ''));
|
|
212
|
+
lines.push(border);
|
|
213
|
+
lines.push('');
|
|
214
|
+
// Content with scroll
|
|
215
|
+
const contentLines = this.state.diffLines;
|
|
216
|
+
const visibleLines = DIFF_VIEW_CONTENT_LINES;
|
|
217
|
+
const endLine = Math.min(this.state.diffScrollOffset + visibleLines, contentLines.length);
|
|
218
|
+
for (let i = this.state.diffScrollOffset; i < endLine; i++) {
|
|
219
|
+
const line = contentLines[i];
|
|
220
|
+
const safeLine = truncate(line, cols - 2);
|
|
221
|
+
lines.push(' ' + safeLine);
|
|
222
|
+
}
|
|
223
|
+
// Pad to fixed height
|
|
224
|
+
const renderedLines = endLine - this.state.diffScrollOffset;
|
|
225
|
+
for (let i = renderedLines; i < DIFF_VIEW_CONTENT_LINES; i++) {
|
|
226
|
+
lines.push('');
|
|
227
|
+
}
|
|
228
|
+
// Footer with scroll indicator
|
|
229
|
+
lines.push('');
|
|
230
|
+
const scrollInfo = contentLines.length > visibleLines
|
|
231
|
+
? s.muted(` [${String(this.state.diffScrollOffset + 1)}-${String(endLine)}/${String(contentLines.length)}]`)
|
|
232
|
+
: '';
|
|
233
|
+
lines.push(border);
|
|
234
|
+
lines.push(s.muted(' ↑↓/PgUp/PgDn Scroll · a Approve · d Deny · Esc Back') + scrollInfo);
|
|
235
|
+
return lines;
|
|
236
|
+
}
|
|
237
|
+
handleKey(key) {
|
|
238
|
+
if (this.state.showingDiff) {
|
|
239
|
+
return this.handleDiffKey(key);
|
|
240
|
+
}
|
|
241
|
+
return this.handleListKey(key);
|
|
242
|
+
}
|
|
243
|
+
handleListKey(key) {
|
|
244
|
+
// Escape or Ctrl+C = close
|
|
245
|
+
if (key.name === 'escape' || (key.ctrl && key.name === 'c')) {
|
|
246
|
+
// Cancel all active VS Code diff watchers
|
|
247
|
+
for (const [, watcher] of this.vsDiffWatchers) {
|
|
248
|
+
watcher.abort();
|
|
249
|
+
cancelDiffRequest(watcher.diffReqId);
|
|
250
|
+
}
|
|
251
|
+
this.vsDiffWatchers.clear();
|
|
252
|
+
return this.close({ type: 'closed' });
|
|
253
|
+
}
|
|
254
|
+
// No requests - just allow closing
|
|
255
|
+
if (this.state.requests.length === 0) {
|
|
256
|
+
return this.rerender();
|
|
257
|
+
}
|
|
258
|
+
const keyStr = key.char?.toLowerCase() ?? '';
|
|
259
|
+
// Arrow navigation
|
|
260
|
+
if (key.name === 'up') {
|
|
261
|
+
this.state.selectedIndex = Math.max(0, this.state.selectedIndex - 1);
|
|
262
|
+
return this.rerender();
|
|
263
|
+
}
|
|
264
|
+
if (key.name === 'down') {
|
|
265
|
+
this.state.selectedIndex = Math.min(this.state.requests.length - 1, this.state.selectedIndex + 1);
|
|
266
|
+
return this.rerender();
|
|
267
|
+
}
|
|
268
|
+
// View diff (for permission-type with diffable tool)
|
|
269
|
+
if (keyStr === 'v') {
|
|
270
|
+
const req = this.state.requests[this.state.selectedIndex];
|
|
271
|
+
if (req && isDiffableRequest(req)) {
|
|
272
|
+
// Open VS Code diff if available
|
|
273
|
+
if (isVSDiffAvailable() && !this.vsDiffWatchers.has(req.id)) {
|
|
274
|
+
const ctx = req.context;
|
|
275
|
+
const diffReqId = openVSCodeDiffForTool({
|
|
276
|
+
toolName: ctx.toolName,
|
|
277
|
+
input: ctx.input,
|
|
278
|
+
agentId: req.agentId,
|
|
279
|
+
});
|
|
280
|
+
if (diffReqId) {
|
|
281
|
+
// Start background watcher for VS Code approve/deny response
|
|
282
|
+
const { promise, abort } = waitForDiffResponse(diffReqId, 120_000);
|
|
283
|
+
this.vsDiffWatchers.set(req.id, { abort, diffReqId });
|
|
284
|
+
promise.then((response) => {
|
|
285
|
+
if (response && !response.cancelled) {
|
|
286
|
+
const manager = getPendingRequestsManager();
|
|
287
|
+
const pending = manager.getAll().find(r => r.id === req.id);
|
|
288
|
+
if (pending) {
|
|
289
|
+
manager.respond(req.id, { approved: response.accepted });
|
|
290
|
+
// Trigger overlay re-render to reflect the change
|
|
291
|
+
this.requestRender();
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
this.vsDiffWatchers.delete(req.id);
|
|
295
|
+
}).catch(() => {
|
|
296
|
+
this.vsDiffWatchers.delete(req.id);
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
// Also show terminal diff view (for terminal-based approve/deny)
|
|
301
|
+
const terminalDiffLines = generateDiffForRequest(req);
|
|
302
|
+
if (terminalDiffLines) {
|
|
303
|
+
this.state.showingDiff = true;
|
|
304
|
+
this.state.diffScrollOffset = 0;
|
|
305
|
+
this.state.diffLines = terminalDiffLines;
|
|
306
|
+
this.state.diffRequestId = req.id;
|
|
307
|
+
return this.rerender();
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
return this.rerender();
|
|
311
|
+
}
|
|
312
|
+
// Approve selected request (for permission-type only)
|
|
313
|
+
if (keyStr === 'a') {
|
|
314
|
+
const req = this.state.requests[this.state.selectedIndex];
|
|
315
|
+
if (req && req.type === 'permission') {
|
|
316
|
+
this.cancelVSDiffForRequest(req.id);
|
|
317
|
+
const manager = getPendingRequestsManager();
|
|
318
|
+
manager.respond(req.id, { approved: true });
|
|
319
|
+
// Auto-close if no requests remain
|
|
320
|
+
if (manager.getCount() === 0) {
|
|
321
|
+
return this.close({ type: 'closed' });
|
|
322
|
+
}
|
|
323
|
+
// Update selection if needed
|
|
324
|
+
if (this.state.selectedIndex >= this.state.requests.length - 1) {
|
|
325
|
+
this.state.selectedIndex = Math.max(0, this.state.selectedIndex - 1);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
return this.rerender();
|
|
329
|
+
}
|
|
330
|
+
// Deny selected request
|
|
331
|
+
if (keyStr === 'd') {
|
|
332
|
+
const req = this.state.requests[this.state.selectedIndex];
|
|
333
|
+
if (req) {
|
|
334
|
+
this.cancelVSDiffForRequest(req.id);
|
|
335
|
+
const manager = getPendingRequestsManager();
|
|
336
|
+
manager.respond(req.id, { approved: false });
|
|
337
|
+
// Auto-close if no requests remain
|
|
338
|
+
if (manager.getCount() === 0) {
|
|
339
|
+
return this.close({ type: 'closed' });
|
|
340
|
+
}
|
|
341
|
+
// Update selection if needed
|
|
342
|
+
if (this.state.selectedIndex >= this.state.requests.length - 1) {
|
|
343
|
+
this.state.selectedIndex = Math.max(0, this.state.selectedIndex - 1);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
return this.rerender();
|
|
347
|
+
}
|
|
348
|
+
// Respond to question with standard overlay (r or Enter)
|
|
349
|
+
if (keyStr === 'r' || key.name === 'return') {
|
|
350
|
+
const req = this.state.requests[this.state.selectedIndex];
|
|
351
|
+
if (req && req.type === 'question') {
|
|
352
|
+
// Close overlay and return the request to show standard overlay
|
|
353
|
+
return this.close({ type: 'respond', request: req });
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
return this.rerender();
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Cancel an active VS Code diff for a pending request (if any).
|
|
360
|
+
* Called when the request is resolved from the terminal.
|
|
361
|
+
*/
|
|
362
|
+
cancelVSDiffForRequest(pendingReqId) {
|
|
363
|
+
const watcher = this.vsDiffWatchers.get(pendingReqId);
|
|
364
|
+
if (watcher) {
|
|
365
|
+
watcher.abort();
|
|
366
|
+
cancelDiffRequest(watcher.diffReqId);
|
|
367
|
+
this.vsDiffWatchers.delete(pendingReqId);
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
handleDiffKey(key) {
|
|
371
|
+
const keyStr = key.char?.toLowerCase() ?? '';
|
|
372
|
+
// Escape or q = go back to list view
|
|
373
|
+
if (key.name === 'escape' || keyStr === 'q') {
|
|
374
|
+
this.state.showingDiff = false;
|
|
375
|
+
return this.rerender();
|
|
376
|
+
}
|
|
377
|
+
// Approve from diff view
|
|
378
|
+
if (keyStr === 'a') {
|
|
379
|
+
const req = this.state.requests.find(r => r.id === this.state.diffRequestId);
|
|
380
|
+
if (req && req.type === 'permission') {
|
|
381
|
+
this.cancelVSDiffForRequest(req.id);
|
|
382
|
+
const manager = getPendingRequestsManager();
|
|
383
|
+
manager.respond(req.id, { approved: true });
|
|
384
|
+
this.state.showingDiff = false;
|
|
385
|
+
// Auto-close if no requests remain
|
|
386
|
+
if (manager.getCount() === 0) {
|
|
387
|
+
return this.close({ type: 'closed' });
|
|
388
|
+
}
|
|
389
|
+
// Update selection if needed
|
|
390
|
+
if (this.state.selectedIndex >= this.state.requests.length - 1) {
|
|
391
|
+
this.state.selectedIndex = Math.max(0, this.state.selectedIndex - 1);
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
return this.rerender();
|
|
395
|
+
}
|
|
396
|
+
// Deny from diff view
|
|
397
|
+
if (keyStr === 'd') {
|
|
398
|
+
const req = this.state.requests.find(r => r.id === this.state.diffRequestId);
|
|
399
|
+
if (req) {
|
|
400
|
+
this.cancelVSDiffForRequest(req.id);
|
|
401
|
+
const manager = getPendingRequestsManager();
|
|
402
|
+
manager.respond(req.id, { approved: false });
|
|
403
|
+
this.state.showingDiff = false;
|
|
404
|
+
// Auto-close if no requests remain
|
|
405
|
+
if (manager.getCount() === 0) {
|
|
406
|
+
return this.close({ type: 'closed' });
|
|
407
|
+
}
|
|
408
|
+
// Update selection if needed
|
|
409
|
+
if (this.state.selectedIndex >= this.state.requests.length - 1) {
|
|
410
|
+
this.state.selectedIndex = Math.max(0, this.state.selectedIndex - 1);
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
return this.rerender();
|
|
414
|
+
}
|
|
415
|
+
// Scroll
|
|
416
|
+
const visibleLines = DIFF_VIEW_CONTENT_LINES;
|
|
417
|
+
const maxOffset = Math.max(0, this.state.diffLines.length - visibleLines);
|
|
418
|
+
if (key.name === 'up') {
|
|
419
|
+
this.state.diffScrollOffset = Math.max(0, this.state.diffScrollOffset - 1);
|
|
420
|
+
}
|
|
421
|
+
else if (key.name === 'pageup') {
|
|
422
|
+
this.state.diffScrollOffset = Math.max(0, this.state.diffScrollOffset - visibleLines);
|
|
423
|
+
}
|
|
424
|
+
else if (key.name === 'down') {
|
|
425
|
+
this.state.diffScrollOffset = Math.min(maxOffset, this.state.diffScrollOffset + 1);
|
|
426
|
+
}
|
|
427
|
+
else if (key.name === 'pagedown') {
|
|
428
|
+
this.state.diffScrollOffset = Math.min(maxOffset, this.state.diffScrollOffset + visibleLines);
|
|
429
|
+
}
|
|
430
|
+
return this.rerender();
|
|
431
|
+
}
|
|
432
|
+
getCloseSummary(result) {
|
|
433
|
+
// Don't show summary if we're responding to a question (will show overlay)
|
|
434
|
+
if (result.type === 'respond') {
|
|
435
|
+
return null;
|
|
436
|
+
}
|
|
437
|
+
const s = getStyles();
|
|
438
|
+
const manager = getPendingRequestsManager();
|
|
439
|
+
const remaining = manager.getCount();
|
|
440
|
+
if (remaining > 0) {
|
|
441
|
+
return s.muted(`Pending requests: ${String(remaining)} remaining`);
|
|
442
|
+
}
|
|
443
|
+
return s.success('All pending requests resolved.');
|
|
444
|
+
}
|
|
445
|
+
}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import chalk from 'chalk';
|
|
8
8
|
import { getStyles } from '../../../themes/index.js';
|
|
9
|
-
import { BaseOverlayV2 } from '../../base/index.js';
|
|
9
|
+
import { BaseOverlayV2, truncate } from '../../base/index.js';
|
|
10
10
|
import * as terminal from '../../terminal.js';
|
|
11
11
|
// =============================================================================
|
|
12
12
|
// Helpers
|
|
@@ -18,7 +18,7 @@ import * as terminal from '../../terminal.js';
|
|
|
18
18
|
function formatValue(value, maxLen) {
|
|
19
19
|
if (typeof value === 'string') {
|
|
20
20
|
const singleLine = value.replace(/\r?\n|\r/g, '↵');
|
|
21
|
-
return singleLine
|
|
21
|
+
return truncate(singleLine, maxLen);
|
|
22
22
|
}
|
|
23
23
|
if (typeof value === 'boolean' || typeof value === 'number') {
|
|
24
24
|
return String(value);
|
|
@@ -76,7 +76,7 @@ function formatArgs(toolName, args, maxWidth) {
|
|
|
76
76
|
else {
|
|
77
77
|
lines.push(prefix);
|
|
78
78
|
const maxCmdLength = availableWidth * 3;
|
|
79
|
-
const truncatedCmd = cmd
|
|
79
|
+
const truncatedCmd = truncate(cmd, maxCmdLength);
|
|
80
80
|
lines.push(' ' + truncatedCmd);
|
|
81
81
|
}
|
|
82
82
|
return lines;
|
|
@@ -242,7 +242,7 @@ export class PermissionOverlayV2 extends BaseOverlayV2 {
|
|
|
242
242
|
const maxArgWidth = cols - 6;
|
|
243
243
|
const argLines = formatArgs(this.options.toolName, this.options.args, maxArgWidth);
|
|
244
244
|
for (const argLine of argLines) {
|
|
245
|
-
const safeArg = argLine
|
|
245
|
+
const safeArg = truncate(argLine, maxArgWidth);
|
|
246
246
|
lines.push(' ' + s.muted(safeArg));
|
|
247
247
|
}
|
|
248
248
|
lines.push('');
|
|
@@ -282,7 +282,7 @@ export class PermissionOverlayV2 extends BaseOverlayV2 {
|
|
|
282
282
|
const endLine = Math.min(this.state.detailScrollOffset + visibleLines, contentLines.length);
|
|
283
283
|
for (let i = this.state.detailScrollOffset; i < endLine; i++) {
|
|
284
284
|
const line = contentLines[i];
|
|
285
|
-
const safeLine = line
|
|
285
|
+
const safeLine = truncate(line, cols - 4);
|
|
286
286
|
lines.push(' ' + safeLine);
|
|
287
287
|
}
|
|
288
288
|
// Pad to fixed height
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Permissions Overlay V2
|
|
3
|
+
*
|
|
4
|
+
* Modal overlay for managing tool permissions.
|
|
5
|
+
* 3 tabs:
|
|
6
|
+
* - Rules: View/edit permission rules (add, edit, delete, wildcards)
|
|
7
|
+
* - Mode: Set global permission mode
|
|
8
|
+
* - Session: View/revoke session grants, toggle auto-accept
|
|
9
|
+
*
|
|
10
|
+
* Uses BaseOverlayV2 for the new Overlay interface.
|
|
11
|
+
*/
|
|
12
|
+
import { BaseOverlayV2 } from '../../base/index.js';
|
|
13
|
+
import type { RenderContext, OverlayAction, KeyEvent } from '../index.js';
|
|
14
|
+
import { type PermissionRule, type PermissionLevel, type PermissionMode } from '../../../settings/index.js';
|
|
15
|
+
interface SessionGrant {
|
|
16
|
+
toolName: string;
|
|
17
|
+
grantedAt: Date;
|
|
18
|
+
}
|
|
19
|
+
type EditMode = 'none' | 'edit-level' | 'add-step1' | 'add-step2' | 'add-step3' | 'confirm-reset' | 'confirm-delete' | 'confirm-mode-change';
|
|
20
|
+
interface PermissionsState {
|
|
21
|
+
currentTab: number;
|
|
22
|
+
rules: PermissionRule[];
|
|
23
|
+
rulesSelectedIndex: number;
|
|
24
|
+
rulesScrollOffset: number;
|
|
25
|
+
editMode: EditMode;
|
|
26
|
+
editLevelIndex: number;
|
|
27
|
+
addInput: string;
|
|
28
|
+
addLevel: PermissionLevel;
|
|
29
|
+
addDescription: string;
|
|
30
|
+
modeSelectedIndex: number;
|
|
31
|
+
pendingMode: PermissionMode | null;
|
|
32
|
+
clearGrantsOnModeChange: boolean;
|
|
33
|
+
sessionGrants: SessionGrant[];
|
|
34
|
+
sessionSelectedIndex: number;
|
|
35
|
+
autoAcceptMode: boolean;
|
|
36
|
+
settingsChanged: boolean;
|
|
37
|
+
}
|
|
38
|
+
export interface PermissionsOverlayV2Result {
|
|
39
|
+
settingsChanged: boolean;
|
|
40
|
+
}
|
|
41
|
+
export interface PermissionsOverlayV2Options {
|
|
42
|
+
/** Session grants from PermissionManager */
|
|
43
|
+
sessionGrants?: Map<string, Date>;
|
|
44
|
+
/** Current auto-accept mode state */
|
|
45
|
+
autoAcceptMode?: boolean;
|
|
46
|
+
/** Callback to revoke a session grant */
|
|
47
|
+
onRevokeGrant?: (toolName: string) => void;
|
|
48
|
+
/** Callback to clear all session grants */
|
|
49
|
+
onClearGrants?: () => void;
|
|
50
|
+
/** Callback to toggle auto-accept mode */
|
|
51
|
+
onToggleAutoAccept?: (enabled: boolean) => void;
|
|
52
|
+
/** Callback to sync UI mode when permission mode changes */
|
|
53
|
+
onModeChange?: (newMode: PermissionMode) => void;
|
|
54
|
+
}
|
|
55
|
+
export declare class PermissionsOverlayV2 extends BaseOverlayV2<PermissionsState, PermissionsOverlayV2Result> {
|
|
56
|
+
readonly type: "inline";
|
|
57
|
+
readonly id = "permissions-overlay-v2";
|
|
58
|
+
protected minHeight: number;
|
|
59
|
+
private readonly options;
|
|
60
|
+
constructor(options?: PermissionsOverlayV2Options);
|
|
61
|
+
protected renderContent(context: RenderContext): string[];
|
|
62
|
+
private renderTabHeader;
|
|
63
|
+
private renderRulesTab;
|
|
64
|
+
private renderEditLevelMode;
|
|
65
|
+
private renderAddWizard;
|
|
66
|
+
private renderConfirmReset;
|
|
67
|
+
private renderConfirmDelete;
|
|
68
|
+
private getLevelDescription;
|
|
69
|
+
private renderModeTab;
|
|
70
|
+
private getModeDescription;
|
|
71
|
+
private renderModeChangeConfirm;
|
|
72
|
+
private renderSessionTab;
|
|
73
|
+
private formatTime;
|
|
74
|
+
private renderTabFooter;
|
|
75
|
+
handleKey(key: KeyEvent): OverlayAction<PermissionsOverlayV2Result>;
|
|
76
|
+
private handleRulesTabKey;
|
|
77
|
+
private handleEditLevelKey;
|
|
78
|
+
private handleAddWizardKey;
|
|
79
|
+
private handleConfirmResetKey;
|
|
80
|
+
private handleConfirmDeleteKey;
|
|
81
|
+
private handleModeTabKey;
|
|
82
|
+
private handleModeChangeConfirmKey;
|
|
83
|
+
private handleSessionTabKey;
|
|
84
|
+
}
|
|
85
|
+
export {};
|