@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,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tutorial Helpers
|
|
3
|
+
*
|
|
4
|
+
* Functions to convert shared content into styled tutorial pages.
|
|
5
|
+
* These helpers apply consistent styling to plain text content.
|
|
6
|
+
*/
|
|
7
|
+
import type { ThemeStyleFunctions } from '../themes/index.js';
|
|
8
|
+
import type { TutorialPage } from '../ui/overlay/data/tutorial-types.js';
|
|
9
|
+
import type { ContentTopic, ContentSection } from './shared-content.js';
|
|
10
|
+
/**
|
|
11
|
+
* Style a command (e.g., /help, /design).
|
|
12
|
+
*/
|
|
13
|
+
export declare function styleCommand(text: string, s: ThemeStyleFunctions): string;
|
|
14
|
+
/**
|
|
15
|
+
* Style a keyboard shortcut (e.g., [n], Esc, Tab).
|
|
16
|
+
*/
|
|
17
|
+
export declare function styleShortcut(text: string, s: ThemeStyleFunctions): string;
|
|
18
|
+
/**
|
|
19
|
+
* Style an agent reference (e.g., $arch, $pm).
|
|
20
|
+
*/
|
|
21
|
+
export declare function styleAgent(text: string, s: ThemeStyleFunctions): string;
|
|
22
|
+
/**
|
|
23
|
+
* Style a file reference (e.g., @src/index.ts).
|
|
24
|
+
*/
|
|
25
|
+
export declare function styleFileRef(text: string, s: ThemeStyleFunctions): string;
|
|
26
|
+
/**
|
|
27
|
+
* Style a path or filename.
|
|
28
|
+
*/
|
|
29
|
+
export declare function stylePath(text: string, s: ThemeStyleFunctions): string;
|
|
30
|
+
/**
|
|
31
|
+
* Apply all styling to a line of text.
|
|
32
|
+
*/
|
|
33
|
+
export declare function styleLine(text: string, s: ThemeStyleFunctions): string;
|
|
34
|
+
/**
|
|
35
|
+
* Convert a content section to styled lines.
|
|
36
|
+
*/
|
|
37
|
+
export declare function sectionToLines(section: ContentSection, s: ThemeStyleFunctions, indent?: string): string[];
|
|
38
|
+
/**
|
|
39
|
+
* Convert a content topic to a single tutorial page.
|
|
40
|
+
*/
|
|
41
|
+
export declare function topicToPage(topic: ContentTopic, s: ThemeStyleFunctions): TutorialPage;
|
|
42
|
+
/**
|
|
43
|
+
* Convert a content topic to multiple tutorial pages (one per section).
|
|
44
|
+
*/
|
|
45
|
+
export declare function topicToPages(topic: ContentTopic, s: ThemeStyleFunctions): TutorialPage[];
|
|
46
|
+
/**
|
|
47
|
+
* Convert multiple content topics to a single tutorial page each.
|
|
48
|
+
*/
|
|
49
|
+
export declare function topicsToPages(topicIds: string[], topics: ContentTopic[], s: ThemeStyleFunctions): TutorialPage[];
|
|
50
|
+
/**
|
|
51
|
+
* Build a tutorial page with custom styling on top of shared content.
|
|
52
|
+
* Allows mixing shared content with custom tutorial-specific elements.
|
|
53
|
+
*/
|
|
54
|
+
export declare function buildHybridPage(title: string, sections: ContentSection[], s: ThemeStyleFunctions, options?: {
|
|
55
|
+
prefix?: string[];
|
|
56
|
+
suffix?: string[];
|
|
57
|
+
}): TutorialPage;
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tutorial Helpers
|
|
3
|
+
*
|
|
4
|
+
* Functions to convert shared content into styled tutorial pages.
|
|
5
|
+
* These helpers apply consistent styling to plain text content.
|
|
6
|
+
*/
|
|
7
|
+
// =============================================================================
|
|
8
|
+
// Text Styling Helpers
|
|
9
|
+
// =============================================================================
|
|
10
|
+
/**
|
|
11
|
+
* Style a command (e.g., /help, /design).
|
|
12
|
+
*/
|
|
13
|
+
export function styleCommand(text, s) {
|
|
14
|
+
return text.replace(/\/\w+/g, (match) => s.primary(match));
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Style a keyboard shortcut (e.g., [n], Esc, Tab).
|
|
18
|
+
*/
|
|
19
|
+
export function styleShortcut(text, s) {
|
|
20
|
+
// Style bracketed shortcuts like [n], [p]
|
|
21
|
+
let result = text.replace(/\[([a-z0-9])\]/gi, (_, key) => s.primary(`[${key}]`));
|
|
22
|
+
// Style named keys like Esc, Tab, Enter
|
|
23
|
+
result = result.replace(/\b(Esc|Tab|Enter|↑|↓|←|→)\b/g, (match) => s.primary(match));
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Style an agent reference (e.g., $arch, $pm).
|
|
28
|
+
*/
|
|
29
|
+
export function styleAgent(text, s) {
|
|
30
|
+
return text.replace(/\$\w+/g, (match) => s.primary(match));
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Style a file reference (e.g., @src/index.ts).
|
|
34
|
+
*/
|
|
35
|
+
export function styleFileRef(text, s) {
|
|
36
|
+
return text.replace(/@[\w/.]+/g, (match) => s.primary(match));
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Style a path or filename.
|
|
40
|
+
*/
|
|
41
|
+
export function stylePath(text, s) {
|
|
42
|
+
// Style paths like COMPILR.md, .compilr/, src/
|
|
43
|
+
return text.replace(/(?:\.?[\w-]+\/)+[\w.-]*|[\w-]+\.(md|ts|js|json)/g, (match) => s.primary(match));
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Apply all styling to a line of text.
|
|
47
|
+
*/
|
|
48
|
+
export function styleLine(text, s) {
|
|
49
|
+
let result = text;
|
|
50
|
+
result = styleCommand(result, s);
|
|
51
|
+
result = styleShortcut(result, s);
|
|
52
|
+
result = styleAgent(result, s);
|
|
53
|
+
result = styleFileRef(result, s);
|
|
54
|
+
result = stylePath(result, s);
|
|
55
|
+
// Style "TIP:" prefix
|
|
56
|
+
if (result.startsWith('TIP:')) {
|
|
57
|
+
result = s.warning('TIP:') + result.slice(4);
|
|
58
|
+
}
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
// =============================================================================
|
|
62
|
+
// Section to Lines Conversion
|
|
63
|
+
// =============================================================================
|
|
64
|
+
/**
|
|
65
|
+
* Convert a content section to styled lines.
|
|
66
|
+
*/
|
|
67
|
+
export function sectionToLines(section, s, indent = ' ') {
|
|
68
|
+
const lines = [];
|
|
69
|
+
if (section.title) {
|
|
70
|
+
lines.push(` ${s.secondary(section.title)}`);
|
|
71
|
+
lines.push('');
|
|
72
|
+
}
|
|
73
|
+
for (const item of section.items) {
|
|
74
|
+
const styledItem = styleLine(item, s);
|
|
75
|
+
lines.push(`${indent}${styledItem}`);
|
|
76
|
+
}
|
|
77
|
+
return lines;
|
|
78
|
+
}
|
|
79
|
+
// =============================================================================
|
|
80
|
+
// Topic to Tutorial Page Conversion
|
|
81
|
+
// =============================================================================
|
|
82
|
+
/**
|
|
83
|
+
* Convert a content topic to a single tutorial page.
|
|
84
|
+
*/
|
|
85
|
+
export function topicToPage(topic, s) {
|
|
86
|
+
const lines = [''];
|
|
87
|
+
for (const section of topic.sections) {
|
|
88
|
+
lines.push(...sectionToLines(section, s));
|
|
89
|
+
lines.push('');
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
title: topic.title,
|
|
93
|
+
lines,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Convert a content topic to multiple tutorial pages (one per section).
|
|
98
|
+
*/
|
|
99
|
+
export function topicToPages(topic, s) {
|
|
100
|
+
const pages = [];
|
|
101
|
+
for (let i = 0; i < topic.sections.length; i++) {
|
|
102
|
+
const section = topic.sections[i];
|
|
103
|
+
const lines = ['', ...sectionToLines(section, s), ''];
|
|
104
|
+
pages.push({
|
|
105
|
+
title: section.title || topic.title,
|
|
106
|
+
lines,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
return pages;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Convert multiple content topics to a single tutorial page each.
|
|
113
|
+
*/
|
|
114
|
+
export function topicsToPages(topicIds, topics, s) {
|
|
115
|
+
const pages = [];
|
|
116
|
+
for (const id of topicIds) {
|
|
117
|
+
const topic = topics.find((t) => t.id === id);
|
|
118
|
+
if (topic) {
|
|
119
|
+
pages.push(topicToPage(topic, s));
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return pages;
|
|
123
|
+
}
|
|
124
|
+
// =============================================================================
|
|
125
|
+
// Hybrid Page Builder
|
|
126
|
+
// =============================================================================
|
|
127
|
+
/**
|
|
128
|
+
* Build a tutorial page with custom styling on top of shared content.
|
|
129
|
+
* Allows mixing shared content with custom tutorial-specific elements.
|
|
130
|
+
*/
|
|
131
|
+
export function buildHybridPage(title, sections, s, options) {
|
|
132
|
+
const lines = [''];
|
|
133
|
+
// Add prefix lines
|
|
134
|
+
if (options?.prefix) {
|
|
135
|
+
lines.push(...options.prefix, '');
|
|
136
|
+
}
|
|
137
|
+
// Add sections
|
|
138
|
+
for (const section of sections) {
|
|
139
|
+
lines.push(...sectionToLines(section, s));
|
|
140
|
+
lines.push('');
|
|
141
|
+
}
|
|
142
|
+
// Add suffix lines
|
|
143
|
+
if (options?.suffix) {
|
|
144
|
+
lines.push(...options.suffix, '');
|
|
145
|
+
}
|
|
146
|
+
return { title, lines };
|
|
147
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ask-user handler factories — extracted from index.ts.
|
|
3
|
+
*
|
|
4
|
+
* Registers the `ask_user` and `ask_user_simple` handlers.
|
|
5
|
+
* The deps object is SharedState passed by reference, so live mutations
|
|
6
|
+
* (e.g. overlay callbacks wired after REPL starts) work exactly as before.
|
|
7
|
+
*/
|
|
8
|
+
import { type AskUserQuestion } from '../shared-handlers.js';
|
|
9
|
+
export interface AskUserHandlerDeps {
|
|
10
|
+
flushTextBuffer?: () => void;
|
|
11
|
+
getActiveBackgroundAgentId?: () => string | null;
|
|
12
|
+
isBackgroundAgent?: (agentId?: string) => boolean;
|
|
13
|
+
getBackgroundAgentInfo?: (agentId: string) => {
|
|
14
|
+
mascot: string;
|
|
15
|
+
} | null;
|
|
16
|
+
showAskUserOverlayV2?: (options: {
|
|
17
|
+
questions: AskUserQuestion[];
|
|
18
|
+
context?: string;
|
|
19
|
+
}) => Promise<{
|
|
20
|
+
answers: Record<string, string | string[]>;
|
|
21
|
+
skipped: string[];
|
|
22
|
+
}>;
|
|
23
|
+
showAskUserSimpleOverlayV2?: (options: {
|
|
24
|
+
question: string;
|
|
25
|
+
options?: string[];
|
|
26
|
+
allowCustom?: boolean;
|
|
27
|
+
}) => Promise<{
|
|
28
|
+
answer: string;
|
|
29
|
+
skipped: boolean;
|
|
30
|
+
}>;
|
|
31
|
+
}
|
|
32
|
+
export declare function registerAskUserHandlers(deps: AskUserHandlerDeps): void;
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ask-user handler factories — extracted from index.ts.
|
|
3
|
+
*
|
|
4
|
+
* Registers the `ask_user` and `ask_user_simple` handlers.
|
|
5
|
+
* The deps object is SharedState passed by reference, so live mutations
|
|
6
|
+
* (e.g. overlay callbacks wired after REPL starts) work exactly as before.
|
|
7
|
+
*/
|
|
8
|
+
import { registerAskUserHandler, registerAskUserSimpleHandler, } from '../shared-handlers.js';
|
|
9
|
+
import { getPendingRequestsManager } from '../multi-agent/index.js';
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
// Factory
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
export function registerAskUserHandlers(deps) {
|
|
14
|
+
// Register ask_user handler that coordinates with footer
|
|
15
|
+
registerAskUserHandler(async (input) => {
|
|
16
|
+
// Wait for event loop to process any pending tool_end events
|
|
17
|
+
await new Promise((resolve) => setImmediate(resolve));
|
|
18
|
+
// Flush any accumulated text BEFORE showing the overlay
|
|
19
|
+
deps.flushTextBuffer?.();
|
|
20
|
+
// Phase 3b: Background agent question handling
|
|
21
|
+
// If this request comes from a background agent, enqueue it instead of showing overlay
|
|
22
|
+
const backgroundAgentId = deps.getActiveBackgroundAgentId?.();
|
|
23
|
+
if (backgroundAgentId && deps.isBackgroundAgent?.(backgroundAgentId)) {
|
|
24
|
+
const agentInfo = deps.getBackgroundAgentInfo?.(backgroundAgentId);
|
|
25
|
+
const pendingManager = getPendingRequestsManager();
|
|
26
|
+
// Build prompt from all questions for display in /pending
|
|
27
|
+
const questionTexts = input.questions.map(q => q.question);
|
|
28
|
+
const prompt = questionTexts.length === 1
|
|
29
|
+
? questionTexts[0]
|
|
30
|
+
: questionTexts.map((q, i) => `${String(i + 1)}. ${q}`).join(' | ');
|
|
31
|
+
try {
|
|
32
|
+
const response = await pendingManager.enqueue({
|
|
33
|
+
agentId: backgroundAgentId,
|
|
34
|
+
mascot: agentInfo?.mascot ?? '[•_•]',
|
|
35
|
+
type: 'question',
|
|
36
|
+
prompt,
|
|
37
|
+
context: {
|
|
38
|
+
toolType: 'ask_user',
|
|
39
|
+
originalInput: input,
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
// Response comes from the standard overlay shown via /pending
|
|
43
|
+
return response.overlayResult;
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
// Request was cancelled/rejected - skip all questions
|
|
47
|
+
return {
|
|
48
|
+
answers: {},
|
|
49
|
+
skipped: input.questions.map(q => q.id),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// Use TerminalUI overlay system
|
|
54
|
+
if (!deps.showAskUserOverlayV2) {
|
|
55
|
+
throw new Error('ask_user overlay not initialized');
|
|
56
|
+
}
|
|
57
|
+
return deps.showAskUserOverlayV2({
|
|
58
|
+
questions: input.questions,
|
|
59
|
+
context: input.context,
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
// Register ask_user_simple handler for smaller models (flat schema)
|
|
63
|
+
registerAskUserSimpleHandler(async (input) => {
|
|
64
|
+
// Wait for event loop to process any pending tool_end events
|
|
65
|
+
await new Promise((resolve) => setImmediate(resolve));
|
|
66
|
+
// Flush any accumulated text BEFORE showing the overlay
|
|
67
|
+
deps.flushTextBuffer?.();
|
|
68
|
+
// Phase 3b: Background agent question handling
|
|
69
|
+
// If this request comes from a background agent, enqueue it instead of showing overlay
|
|
70
|
+
const backgroundAgentId = deps.getActiveBackgroundAgentId?.();
|
|
71
|
+
if (backgroundAgentId && deps.isBackgroundAgent?.(backgroundAgentId)) {
|
|
72
|
+
const agentInfo = deps.getBackgroundAgentInfo?.(backgroundAgentId);
|
|
73
|
+
const pendingManager = getPendingRequestsManager();
|
|
74
|
+
try {
|
|
75
|
+
const response = await pendingManager.enqueue({
|
|
76
|
+
agentId: backgroundAgentId,
|
|
77
|
+
mascot: agentInfo?.mascot ?? '[•_•]',
|
|
78
|
+
type: 'question',
|
|
79
|
+
prompt: input.question,
|
|
80
|
+
options: input.options,
|
|
81
|
+
context: {
|
|
82
|
+
toolType: 'ask_user_simple',
|
|
83
|
+
originalInput: input,
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
// Response comes from the standard overlay shown via /pending
|
|
87
|
+
return response.overlayResult;
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
// Request was cancelled/rejected
|
|
91
|
+
return { answer: '', skipped: true };
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// Use TerminalUI overlay system
|
|
95
|
+
if (!deps.showAskUserSimpleOverlayV2) {
|
|
96
|
+
throw new Error('ask_user_simple overlay not initialized');
|
|
97
|
+
}
|
|
98
|
+
return deps.showAskUserSimpleOverlayV2({
|
|
99
|
+
question: input.question,
|
|
100
|
+
options: input.options,
|
|
101
|
+
allowCustom: input.allowCustom,
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Delegation handler factories — extracted from index.ts.
|
|
3
|
+
*
|
|
4
|
+
* Registers the `delegate`, `delegate_background`, and `handoff` handlers.
|
|
5
|
+
* The deps object is SharedState passed by reference, so live mutations
|
|
6
|
+
* (e.g. team set after REPL starts) work exactly as before.
|
|
7
|
+
*/
|
|
8
|
+
import type { AgentTeam } from '../multi-agent/index.js';
|
|
9
|
+
export interface DelegationHandlerDeps {
|
|
10
|
+
flushTextBuffer?: () => void;
|
|
11
|
+
team?: AgentTeam;
|
|
12
|
+
pendingDelegation?: {
|
|
13
|
+
agentId: string;
|
|
14
|
+
task: string;
|
|
15
|
+
} | null;
|
|
16
|
+
showDelegateOverlayV2?: (options: {
|
|
17
|
+
agentId: string;
|
|
18
|
+
agentDisplayName: string;
|
|
19
|
+
task: string;
|
|
20
|
+
reason?: string;
|
|
21
|
+
}) => Promise<{
|
|
22
|
+
approved: boolean;
|
|
23
|
+
}>;
|
|
24
|
+
showAskUserSimpleOverlayV2?: (options: {
|
|
25
|
+
question: string;
|
|
26
|
+
options?: string[];
|
|
27
|
+
allowCustom?: boolean;
|
|
28
|
+
}) => Promise<{
|
|
29
|
+
answer: string;
|
|
30
|
+
skipped: boolean;
|
|
31
|
+
}>;
|
|
32
|
+
runBackgroundDelegation?: (agentId: string, message: string) => 'running' | 'queued' | null;
|
|
33
|
+
}
|
|
34
|
+
export declare function registerDelegationHandlers(deps: DelegationHandlerDeps): void;
|
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Delegation handler factories — extracted from index.ts.
|
|
3
|
+
*
|
|
4
|
+
* Registers the `delegate`, `delegate_background`, and `handoff` handlers.
|
|
5
|
+
* The deps object is SharedState passed by reference, so live mutations
|
|
6
|
+
* (e.g. team set after REPL starts) work exactly as before.
|
|
7
|
+
*/
|
|
8
|
+
import { registerDelegateHandler, registerDelegateBackgroundHandler, registerHandoffHandler, } from '../shared-handlers.js';
|
|
9
|
+
import { getDelegationTracker } from '../multi-agent/delegation-tracker.js';
|
|
10
|
+
import chalk from 'chalk';
|
|
11
|
+
import { truncate } from '../ui/base/index.js';
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
// Factory
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
export function registerDelegationHandlers(deps) {
|
|
16
|
+
// Register delegate handler for multi-agent delegation
|
|
17
|
+
registerDelegateHandler(async (input) => {
|
|
18
|
+
// Wait for event loop to process any pending tool_end events
|
|
19
|
+
await new Promise((resolve) => setImmediate(resolve));
|
|
20
|
+
// Flush any accumulated text BEFORE showing the overlay
|
|
21
|
+
deps.flushTextBuffer?.();
|
|
22
|
+
// Validate team exists
|
|
23
|
+
if (!deps.team) {
|
|
24
|
+
return {
|
|
25
|
+
success: false,
|
|
26
|
+
declined: false,
|
|
27
|
+
error: 'Multi-agent team not initialized. Delegation requires an active team.',
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
// Validate target agent exists
|
|
31
|
+
const targetAgent = deps.team.get(input.agentId);
|
|
32
|
+
if (!targetAgent) {
|
|
33
|
+
return {
|
|
34
|
+
success: false,
|
|
35
|
+
declined: false,
|
|
36
|
+
error: `Agent '${input.agentId}' not found in team. Available agents: ${deps.team.getAgentIds().join(', ')}`,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
// Validate coordinator is active (only coordinator can delegate)
|
|
40
|
+
if (!deps.team.isActiveCoordinator()) {
|
|
41
|
+
return {
|
|
42
|
+
success: false,
|
|
43
|
+
declined: false,
|
|
44
|
+
error: 'Only the coordinator can delegate tasks. Use $<agent> to switch agents manually.',
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
// V2 mode: use TerminalUI overlay for approval
|
|
48
|
+
if (deps.showDelegateOverlayV2) {
|
|
49
|
+
const result = await deps.showDelegateOverlayV2({
|
|
50
|
+
agentId: input.agentId,
|
|
51
|
+
agentDisplayName: targetAgent.displayName,
|
|
52
|
+
task: input.task,
|
|
53
|
+
reason: input.reason,
|
|
54
|
+
});
|
|
55
|
+
if (!result.approved) {
|
|
56
|
+
return {
|
|
57
|
+
success: false,
|
|
58
|
+
declined: true,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
// Set pending delegation - REPL will handle the switch after agent finishes
|
|
62
|
+
deps.pendingDelegation = {
|
|
63
|
+
agentId: input.agentId,
|
|
64
|
+
task: input.task,
|
|
65
|
+
};
|
|
66
|
+
return {
|
|
67
|
+
success: true,
|
|
68
|
+
declined: false,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
// Fallback: no V2 overlay available, use simple ask_user_simple handler
|
|
72
|
+
const askHandler = deps.showAskUserSimpleOverlayV2;
|
|
73
|
+
if (askHandler) {
|
|
74
|
+
const question = input.reason
|
|
75
|
+
? `Delegate to $${input.agentId} (${targetAgent.displayName})?\n${chalk.dim(`Reason: ${input.reason}`)}\n${chalk.dim(`Task: ${truncate(input.task, 100)}`)}`
|
|
76
|
+
: `Delegate to $${input.agentId} (${targetAgent.displayName})?\n${chalk.dim(`Task: ${truncate(input.task, 100)}`)}`;
|
|
77
|
+
const result = await askHandler({
|
|
78
|
+
question,
|
|
79
|
+
options: ['Yes', 'No'],
|
|
80
|
+
allowCustom: false,
|
|
81
|
+
});
|
|
82
|
+
if (result.skipped || result.answer === 'No') {
|
|
83
|
+
return {
|
|
84
|
+
success: false,
|
|
85
|
+
declined: true,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
// Set pending delegation
|
|
89
|
+
deps.pendingDelegation = {
|
|
90
|
+
agentId: input.agentId,
|
|
91
|
+
task: input.task,
|
|
92
|
+
};
|
|
93
|
+
return {
|
|
94
|
+
success: true,
|
|
95
|
+
declined: false,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
// No handler available
|
|
99
|
+
return {
|
|
100
|
+
success: false,
|
|
101
|
+
declined: false,
|
|
102
|
+
error: 'Delegation UI not available. Ensure you are running in interactive mode.',
|
|
103
|
+
};
|
|
104
|
+
});
|
|
105
|
+
// Register delegate_background handler for coordinator mode
|
|
106
|
+
registerDelegateBackgroundHandler(async (input) => {
|
|
107
|
+
// Yield to event loop (consistent with delegate handler pattern)
|
|
108
|
+
await new Promise((resolve) => setImmediate(resolve));
|
|
109
|
+
// Validate team exists
|
|
110
|
+
if (!deps.team) {
|
|
111
|
+
return {
|
|
112
|
+
delegationId: '',
|
|
113
|
+
status: 'running',
|
|
114
|
+
error: 'Multi-agent team not initialized. Background delegation requires an active team.',
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
// Validate target agent exists
|
|
118
|
+
const targetAgent = deps.team.get(input.agentId);
|
|
119
|
+
if (!targetAgent) {
|
|
120
|
+
return {
|
|
121
|
+
delegationId: '',
|
|
122
|
+
status: 'running',
|
|
123
|
+
error: `Agent '${input.agentId}' not found in team. Available agents: ${deps.team.getAgentIds().join(', ')}`,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
// Validate coordinator is active
|
|
127
|
+
if (!deps.team.isActiveCoordinator()) {
|
|
128
|
+
return {
|
|
129
|
+
delegationId: '',
|
|
130
|
+
status: 'running',
|
|
131
|
+
error: 'Only the coordinator can use delegate_background.',
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
// Validate background delegation callback is available
|
|
135
|
+
if (!deps.runBackgroundDelegation) {
|
|
136
|
+
return {
|
|
137
|
+
delegationId: '',
|
|
138
|
+
status: 'running',
|
|
139
|
+
error: 'Background delegation not available. Ensure REPL is initialized.',
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
// Create delegation in tracker
|
|
143
|
+
const tracker = getDelegationTracker();
|
|
144
|
+
const delegation = tracker.create({
|
|
145
|
+
coordinatorId: 'default',
|
|
146
|
+
targetAgentId: input.agentId,
|
|
147
|
+
task: input.task,
|
|
148
|
+
expectedOutput: input.expectedOutput,
|
|
149
|
+
todoIndex: input.todoIndex,
|
|
150
|
+
});
|
|
151
|
+
// Build delegation preamble
|
|
152
|
+
const preambleLines = [
|
|
153
|
+
'[DELEGATION from coordinator]',
|
|
154
|
+
`Delegation ID: ${delegation.id}`,
|
|
155
|
+
];
|
|
156
|
+
if (input.todoIndex !== undefined) {
|
|
157
|
+
preambleLines.push(`Associated todo: #${String(input.todoIndex)}`);
|
|
158
|
+
}
|
|
159
|
+
if (input.expectedOutput) {
|
|
160
|
+
preambleLines.push(`Expected output: ${input.expectedOutput}`);
|
|
161
|
+
}
|
|
162
|
+
preambleLines.push('', 'SCOPE: Focus ONLY on the task below. Do NOT pick up, start, or ask about', 'other tasks from the todo list, even if they appear unassigned. When your', 'task is complete, report your results and stop.', '', 'Task:', input.task, '', 'When done, save your key output as an artifact so the coordinator can reference it.');
|
|
163
|
+
if (input.todoIndex !== undefined) {
|
|
164
|
+
preambleLines.push(`When complete, mark todo #${String(input.todoIndex)} as done using the todo_update tool.`);
|
|
165
|
+
}
|
|
166
|
+
const message = preambleLines.join('\n');
|
|
167
|
+
// Run the specialist in background (or queue if busy)
|
|
168
|
+
const runResult = deps.runBackgroundDelegation(input.agentId, message);
|
|
169
|
+
if (runResult === null) {
|
|
170
|
+
tracker.fail(delegation.id, 'Failed to start background agent');
|
|
171
|
+
return {
|
|
172
|
+
delegationId: delegation.id,
|
|
173
|
+
status: 'running',
|
|
174
|
+
error: 'Failed to start background agent. Agent may not be available.',
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
// Update delegation status
|
|
178
|
+
if (runResult === 'running') {
|
|
179
|
+
tracker.updateStatus(delegation.id, 'running');
|
|
180
|
+
}
|
|
181
|
+
// 'queued' stays as 'pending' in the tracker
|
|
182
|
+
return {
|
|
183
|
+
delegationId: delegation.id,
|
|
184
|
+
status: runResult,
|
|
185
|
+
};
|
|
186
|
+
});
|
|
187
|
+
// Register handoff handler for specialist-to-specialist handoff
|
|
188
|
+
registerHandoffHandler(async (input) => {
|
|
189
|
+
// Wait for event loop to process any pending tool_end events
|
|
190
|
+
await new Promise((resolve) => setImmediate(resolve));
|
|
191
|
+
// Flush any accumulated text BEFORE showing the overlay
|
|
192
|
+
deps.flushTextBuffer?.();
|
|
193
|
+
// Validate team exists
|
|
194
|
+
if (!deps.team) {
|
|
195
|
+
return {
|
|
196
|
+
success: false,
|
|
197
|
+
declined: false,
|
|
198
|
+
error: 'Multi-agent team not initialized. Handoff requires an active team.',
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
// Validate target agent exists
|
|
202
|
+
const targetAgent = deps.team.get(input.agentId);
|
|
203
|
+
if (!targetAgent) {
|
|
204
|
+
return {
|
|
205
|
+
success: false,
|
|
206
|
+
declined: false,
|
|
207
|
+
error: `Agent '${input.agentId}' not found in team. Available agents: ${deps.team.getAgentIds().join(', ')}`,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
// Determine source agent (the one performing the handoff)
|
|
211
|
+
const sourceAgentId = deps.team.activeAgentId;
|
|
212
|
+
// Cannot hand off to yourself
|
|
213
|
+
if (input.agentId === sourceAgentId) {
|
|
214
|
+
return {
|
|
215
|
+
success: false,
|
|
216
|
+
declined: false,
|
|
217
|
+
error: 'Cannot hand off to yourself.',
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
// One-hop rule: if this agent was itself handed a task, deny re-handoff
|
|
221
|
+
// Exception: handing back to coordinator (default) is always allowed
|
|
222
|
+
const isCoordinatorTarget = deps.team.isCoordinator(input.agentId);
|
|
223
|
+
if (deps.team.wasHandedTo(sourceAgentId) && !isCoordinatorTarget) {
|
|
224
|
+
const handoffSource = deps.team.getHandoffSource(sourceAgentId);
|
|
225
|
+
return {
|
|
226
|
+
success: false,
|
|
227
|
+
declined: false,
|
|
228
|
+
error: `You were handed this task by $${handoffSource ?? 'unknown'}. ` +
|
|
229
|
+
'Complete it or hand it back to the coordinator ($default). ' +
|
|
230
|
+
'You cannot re-hand off to another specialist.',
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
// Check auto-approve: if the source agent has autoApproveHandoff, skip overlay
|
|
234
|
+
const sourceTeamAgent = deps.team.get(sourceAgentId);
|
|
235
|
+
const autoApprove = sourceTeamAgent?.autoApproveHandoff === true;
|
|
236
|
+
if (!autoApprove) {
|
|
237
|
+
// Show approval overlay (reuse delegate overlay)
|
|
238
|
+
if (deps.showDelegateOverlayV2) {
|
|
239
|
+
const result = await deps.showDelegateOverlayV2({
|
|
240
|
+
agentId: input.agentId,
|
|
241
|
+
agentDisplayName: targetAgent.displayName,
|
|
242
|
+
task: input.task,
|
|
243
|
+
reason: input.reason,
|
|
244
|
+
});
|
|
245
|
+
if (!result.approved) {
|
|
246
|
+
return {
|
|
247
|
+
success: false,
|
|
248
|
+
declined: true,
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
else if (deps.showAskUserSimpleOverlayV2) {
|
|
253
|
+
// Fallback: use simple ask_user_simple handler
|
|
254
|
+
const question = input.reason
|
|
255
|
+
? `Hand off to $${input.agentId} (${targetAgent.displayName})?\n${chalk.dim(`Reason: ${input.reason}`)}\n${chalk.dim(`Task: ${truncate(input.task, 100)}`)}`
|
|
256
|
+
: `Hand off to $${input.agentId} (${targetAgent.displayName})?\n${chalk.dim(`Task: ${truncate(input.task, 100)}`)}`;
|
|
257
|
+
const result = await deps.showAskUserSimpleOverlayV2({
|
|
258
|
+
question,
|
|
259
|
+
options: ['Yes', 'No'],
|
|
260
|
+
allowCustom: false,
|
|
261
|
+
});
|
|
262
|
+
if (result.skipped || result.answer === 'No') {
|
|
263
|
+
return {
|
|
264
|
+
success: false,
|
|
265
|
+
declined: true,
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
// No handler available
|
|
271
|
+
return {
|
|
272
|
+
success: false,
|
|
273
|
+
declined: false,
|
|
274
|
+
error: 'Handoff UI not available. Ensure you are running in interactive mode.',
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
// Record the handoff for one-hop tracking
|
|
279
|
+
deps.team.recordHandoff(input.agentId, sourceAgentId);
|
|
280
|
+
// Set pending delegation - REPL will handle the switch after agent finishes
|
|
281
|
+
// Reuses the same pendingDelegation mechanism as delegate
|
|
282
|
+
deps.pendingDelegation = {
|
|
283
|
+
agentId: input.agentId,
|
|
284
|
+
task: input.task,
|
|
285
|
+
};
|
|
286
|
+
return {
|
|
287
|
+
success: true,
|
|
288
|
+
declined: false,
|
|
289
|
+
};
|
|
290
|
+
});
|
|
291
|
+
}
|