agent-tempo 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +213 -0
- package/LICENSE +21 -0
- package/README.md +289 -0
- package/assets/icon-32.png +0 -0
- package/assets/icon-512.png +0 -0
- package/assets/icon-64.png +0 -0
- package/assets/icon-dark-32.png +0 -0
- package/assets/icon-dark-64.png +0 -0
- package/assets/icon-dark.svg +9 -0
- package/assets/icon.svg +9 -0
- package/assets/logo-dark.svg +11 -0
- package/assets/logo-light.svg +11 -0
- package/dashboard/README.md +91 -0
- package/dashboard/dist/assets/index-CB78ToNE.css +2 -0
- package/dashboard/dist/assets/index-_5jV0Znu.js +62 -0
- package/dashboard/dist/assets/index-_5jV0Znu.js.map +1 -0
- package/dashboard/dist/index.html +21 -0
- package/dashboard/package.json +47 -0
- package/dist/activities/hard-terminate.d.ts +32 -0
- package/dist/activities/hard-terminate.js +460 -0
- package/dist/activities/maestro.d.ts +72 -0
- package/dist/activities/maestro.js +254 -0
- package/dist/activities/outbox.d.ts +188 -0
- package/dist/activities/outbox.js +849 -0
- package/dist/activities/resolve.d.ts +64 -0
- package/dist/activities/resolve.js +129 -0
- package/dist/activities/schedule-fire.d.ts +36 -0
- package/dist/activities/schedule-fire.js +147 -0
- package/dist/adapters/base.d.ts +426 -0
- package/dist/adapters/base.js +1270 -0
- package/dist/adapters/claude-api/adapter.d.ts +168 -0
- package/dist/adapters/claude-api/adapter.js +797 -0
- package/dist/adapters/claude-api/api-error.d.ts +96 -0
- package/dist/adapters/claude-api/api-error.js +191 -0
- package/dist/adapters/claude-api/index.d.ts +16 -0
- package/dist/adapters/claude-api/index.js +21 -0
- package/dist/adapters/claude-api/mcp-bridge.d.ts +50 -0
- package/dist/adapters/claude-api/mcp-bridge.js +157 -0
- package/dist/adapters/claude-code/adapter.d.ts +133 -0
- package/dist/adapters/claude-code/adapter.js +274 -0
- package/dist/adapters/claude-code/index.d.ts +15 -0
- package/dist/adapters/claude-code/index.js +20 -0
- package/dist/adapters/claude-code-headless/adapter.d.ts +131 -0
- package/dist/adapters/claude-code-headless/adapter.js +710 -0
- package/dist/adapters/claude-code-headless/error-mapper.d.ts +107 -0
- package/dist/adapters/claude-code-headless/error-mapper.js +281 -0
- package/dist/adapters/claude-code-headless/index.d.ts +17 -0
- package/dist/adapters/claude-code-headless/index.js +26 -0
- package/dist/adapters/claude-code-headless/pre-flight.d.ts +51 -0
- package/dist/adapters/claude-code-headless/pre-flight.js +207 -0
- package/dist/adapters/claude-code-headless/prompt.d.ts +93 -0
- package/dist/adapters/claude-code-headless/prompt.js +79 -0
- package/dist/adapters/claude-code-headless/stream-json.d.ts +242 -0
- package/dist/adapters/claude-code-headless/stream-json.js +208 -0
- package/dist/adapters/claude-code-headless/types.d.ts +28 -0
- package/dist/adapters/claude-code-headless/types.js +36 -0
- package/dist/adapters/copilot/adapter.d.ts +100 -0
- package/dist/adapters/copilot/adapter.js +730 -0
- package/dist/adapters/copilot/index.d.ts +15 -0
- package/dist/adapters/copilot/index.js +20 -0
- package/dist/adapters/index.d.ts +42 -0
- package/dist/adapters/index.js +115 -0
- package/dist/adapters/opencode/adapter.d.ts +82 -0
- package/dist/adapters/opencode/adapter.js +710 -0
- package/dist/adapters/opencode/config.d.ts +90 -0
- package/dist/adapters/opencode/config.js +137 -0
- package/dist/adapters/opencode/helpers.d.ts +40 -0
- package/dist/adapters/opencode/helpers.js +144 -0
- package/dist/adapters/opencode/index.d.ts +12 -0
- package/dist/adapters/opencode/index.js +17 -0
- package/dist/adapters/opencode/server-bridge.d.ts +124 -0
- package/dist/adapters/opencode/server-bridge.js +216 -0
- package/dist/adapters/sdk/base.d.ts +95 -0
- package/dist/adapters/sdk/base.js +134 -0
- package/dist/adapters/sdk/system-prompt.d.ts +64 -0
- package/dist/adapters/sdk/system-prompt.js +78 -0
- package/dist/adapters/terminal-error.d.ts +27 -0
- package/dist/adapters/terminal-error.js +39 -0
- package/dist/channel.d.ts +3 -0
- package/dist/channel.js +48 -0
- package/dist/cli/commands.d.ts +245 -0
- package/dist/cli/commands.js +2438 -0
- package/dist/cli/config-command.d.ts +8 -0
- package/dist/cli/config-command.js +254 -0
- package/dist/cli/daemon-command.d.ts +57 -0
- package/dist/cli/daemon-command.js +493 -0
- package/dist/cli/daemon.d.ts +217 -0
- package/dist/cli/daemon.js +632 -0
- package/dist/cli/dashboard-command.d.ts +20 -0
- package/dist/cli/dashboard-command.js +241 -0
- package/dist/cli/dev-banner.d.ts +107 -0
- package/dist/cli/dev-banner.js +190 -0
- package/dist/cli/dev-mode-bootstrap.d.ts +29 -0
- package/dist/cli/dev-mode-bootstrap.js +36 -0
- package/dist/cli/dev-verbs.d.ts +43 -0
- package/dist/cli/dev-verbs.js +254 -0
- package/dist/cli/help-text.d.ts +1 -0
- package/dist/cli/help-text.js +158 -0
- package/dist/cli/legacy-migration.d.ts +35 -0
- package/dist/cli/legacy-migration.js +335 -0
- package/dist/cli/mcp.d.ts +8 -0
- package/dist/cli/mcp.js +63 -0
- package/dist/cli/output.d.ts +12 -0
- package/dist/cli/output.js +37 -0
- package/dist/cli/preflight.d.ts +9 -0
- package/dist/cli/preflight.js +96 -0
- package/dist/cli/removed-verbs.d.ts +9 -0
- package/dist/cli/removed-verbs.js +78 -0
- package/dist/cli/sa-preflight.d.ts +99 -0
- package/dist/cli/sa-preflight.js +183 -0
- package/dist/cli/scenarios-command.d.ts +6 -0
- package/dist/cli/scenarios-command.js +167 -0
- package/dist/cli/startup.d.ts +112 -0
- package/dist/cli/startup.js +641 -0
- package/dist/cli/upgrade-command.d.ts +5 -0
- package/dist/cli/upgrade-command.js +240 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +680 -0
- package/dist/client/core.d.ts +33 -0
- package/dist/client/core.js +1260 -0
- package/dist/client/ensure-conductor-spawned.d.ts +35 -0
- package/dist/client/ensure-conductor-spawned.js +48 -0
- package/dist/client/index.d.ts +32 -0
- package/dist/client/index.js +22 -0
- package/dist/client/interface.d.ts +461 -0
- package/dist/client/interface.js +2 -0
- package/dist/client/subscribe.d.ts +108 -0
- package/dist/client/subscribe.js +598 -0
- package/dist/client/with-spawn.d.ts +27 -0
- package/dist/client/with-spawn.js +87 -0
- package/dist/config.d.ts +323 -0
- package/dist/config.js +593 -0
- package/dist/connection.d.ts +7 -0
- package/dist/connection.js +46 -0
- package/dist/constants.d.ts +50 -0
- package/dist/constants.js +74 -0
- package/dist/copilot-bridge.d.ts +22 -0
- package/dist/copilot-bridge.js +565 -0
- package/dist/daemon-adapter-versions.d.ts +52 -0
- package/dist/daemon-adapter-versions.js +170 -0
- package/dist/daemon.d.ts +275 -0
- package/dist/daemon.js +989 -0
- package/dist/ensemble/agent-types.d.ts +23 -0
- package/dist/ensemble/agent-types.js +132 -0
- package/dist/ensemble/loader.d.ts +14 -0
- package/dist/ensemble/loader.js +140 -0
- package/dist/ensemble/saver.d.ts +49 -0
- package/dist/ensemble/saver.js +201 -0
- package/dist/ensemble/schema.d.ts +71 -0
- package/dist/ensemble/schema.js +3 -0
- package/dist/git-info.d.ts +4 -0
- package/dist/git-info.js +29 -0
- package/dist/http/aggregate.d.ts +319 -0
- package/dist/http/aggregate.js +684 -0
- package/dist/http/auth.d.ts +67 -0
- package/dist/http/auth.js +177 -0
- package/dist/http/body.d.ts +71 -0
- package/dist/http/body.js +121 -0
- package/dist/http/catalog.d.ts +67 -0
- package/dist/http/catalog.js +209 -0
- package/dist/http/cors.d.ts +42 -0
- package/dist/http/cors.js +111 -0
- package/dist/http/dashboard-pair.d.ts +94 -0
- package/dist/http/dashboard-pair.js +148 -0
- package/dist/http/dashboard.d.ts +20 -0
- package/dist/http/dashboard.js +160 -0
- package/dist/http/event-bus.d.ts +217 -0
- package/dist/http/event-bus.js +365 -0
- package/dist/http/event-id.d.ts +77 -0
- package/dist/http/event-id.js +117 -0
- package/dist/http/event-types.d.ts +348 -0
- package/dist/http/event-types.js +36 -0
- package/dist/http/fixtures/chat-stress.d.ts +8 -0
- package/dist/http/fixtures/chat-stress.js +63 -0
- package/dist/http/fixtures/conductor-leaving.d.ts +8 -0
- package/dist/http/fixtures/conductor-leaving.js +80 -0
- package/dist/http/fixtures/constants.d.ts +10 -0
- package/dist/http/fixtures/constants.js +13 -0
- package/dist/http/fixtures/eight-player-broadcast.d.ts +10 -0
- package/dist/http/fixtures/eight-player-broadcast.js +81 -0
- package/dist/http/fixtures/empty-ensemble.d.ts +6 -0
- package/dist/http/fixtures/empty-ensemble.js +26 -0
- package/dist/http/fixtures/index.d.ts +55 -0
- package/dist/http/fixtures/index.js +110 -0
- package/dist/http/fixtures/single-conductor.d.ts +7 -0
- package/dist/http/fixtures/single-conductor.js +46 -0
- package/dist/http/fixtures/sse-reconnect.d.ts +8 -0
- package/dist/http/fixtures/sse-reconnect.js +77 -0
- package/dist/http/index.d.ts +21 -0
- package/dist/http/index.js +61 -0
- package/dist/http/port-file.d.ts +22 -0
- package/dist/http/port-file.js +132 -0
- package/dist/http/responses.d.ts +27 -0
- package/dist/http/responses.js +40 -0
- package/dist/http/ring-buffer.d.ts +41 -0
- package/dist/http/ring-buffer.js +80 -0
- package/dist/http/server.d.ts +122 -0
- package/dist/http/server.js +459 -0
- package/dist/http/snapshot.d.ts +85 -0
- package/dist/http/snapshot.js +180 -0
- package/dist/http/sse-handler.d.ts +87 -0
- package/dist/http/sse-handler.js +294 -0
- package/dist/http/writes.d.ts +55 -0
- package/dist/http/writes.js +240 -0
- package/dist/palette/index.d.ts +138 -0
- package/dist/palette/index.js +221 -0
- package/dist/reconcile/orphans.d.ts +255 -0
- package/dist/reconcile/orphans.js +340 -0
- package/dist/scripts/258-spotcheck.js +303 -0
- package/dist/scripts/check-components-css-sync.js +199 -0
- package/dist/scripts/run-shard.js +121 -0
- package/dist/scripts/verify-daemon-isolation-guard.js +128 -0
- package/dist/server-tools.d.ts +87 -0
- package/dist/server-tools.js +146 -0
- package/dist/server.d.ts +2 -0
- package/dist/server.js +366 -0
- package/dist/spawn.d.ts +296 -0
- package/dist/spawn.js +747 -0
- package/dist/tools/agent-types.d.ts +2 -0
- package/dist/tools/agent-types.js +21 -0
- package/dist/tools/attachment-info.d.ts +4 -0
- package/dist/tools/attachment-info.js +48 -0
- package/dist/tools/broadcast.d.ts +4 -0
- package/dist/tools/broadcast.js +76 -0
- package/dist/tools/cancel-stage.d.ts +3 -0
- package/dist/tools/cancel-stage.js +20 -0
- package/dist/tools/clear-state.d.ts +3 -0
- package/dist/tools/clear-state.js +37 -0
- package/dist/tools/coat-check-evict.d.ts +4 -0
- package/dist/tools/coat-check-evict.js +43 -0
- package/dist/tools/coat-check-get.d.ts +4 -0
- package/dist/tools/coat-check-get.js +56 -0
- package/dist/tools/coat-check-list.d.ts +4 -0
- package/dist/tools/coat-check-list.js +60 -0
- package/dist/tools/coat-check-put.d.ts +4 -0
- package/dist/tools/coat-check-put.js +53 -0
- package/dist/tools/cue.d.ts +44 -0
- package/dist/tools/cue.js +201 -0
- package/dist/tools/destroy.d.ts +4 -0
- package/dist/tools/destroy.js +188 -0
- package/dist/tools/detach.d.ts +4 -0
- package/dist/tools/detach.js +45 -0
- package/dist/tools/encore.d.ts +4 -0
- package/dist/tools/encore.js +31 -0
- package/dist/tools/ensemble.d.ts +32 -0
- package/dist/tools/ensemble.js +198 -0
- package/dist/tools/evaluate-gate.d.ts +3 -0
- package/dist/tools/evaluate-gate.js +32 -0
- package/dist/tools/fetch-state.d.ts +13 -0
- package/dist/tools/fetch-state.js +78 -0
- package/dist/tools/gates.d.ts +3 -0
- package/dist/tools/gates.js +41 -0
- package/dist/tools/helpers.d.ts +21 -0
- package/dist/tools/helpers.js +25 -0
- package/dist/tools/hosts.d.ts +4 -0
- package/dist/tools/hosts.js +40 -0
- package/dist/tools/listen.d.ts +3 -0
- package/dist/tools/listen.js +22 -0
- package/dist/tools/load-lineup.d.ts +5 -0
- package/dist/tools/load-lineup.js +381 -0
- package/dist/tools/migrate.d.ts +4 -0
- package/dist/tools/migrate.js +60 -0
- package/dist/tools/pause-ensemble.d.ts +4 -0
- package/dist/tools/pause-ensemble.js +58 -0
- package/dist/tools/pause.d.ts +4 -0
- package/dist/tools/pause.js +36 -0
- package/dist/tools/play.d.ts +4 -0
- package/dist/tools/play.js +57 -0
- package/dist/tools/quality-gate.d.ts +3 -0
- package/dist/tools/quality-gate.js +26 -0
- package/dist/tools/recall.d.ts +3 -0
- package/dist/tools/recall.js +32 -0
- package/dist/tools/recruit.d.ts +38 -0
- package/dist/tools/recruit.js +447 -0
- package/dist/tools/release.d.ts +4 -0
- package/dist/tools/release.js +98 -0
- package/dist/tools/report.d.ts +3 -0
- package/dist/tools/report.js +29 -0
- package/dist/tools/resolve.d.ts +1 -0
- package/dist/tools/resolve.js +7 -0
- package/dist/tools/restart.d.ts +35 -0
- package/dist/tools/restart.js +131 -0
- package/dist/tools/restore.d.ts +4 -0
- package/dist/tools/restore.js +107 -0
- package/dist/tools/resume-ensemble.d.ts +4 -0
- package/dist/tools/resume-ensemble.js +79 -0
- package/dist/tools/save-lineup.d.ts +4 -0
- package/dist/tools/save-lineup.js +36 -0
- package/dist/tools/save-state.d.ts +3 -0
- package/dist/tools/save-state.js +57 -0
- package/dist/tools/schedule.d.ts +4 -0
- package/dist/tools/schedule.js +152 -0
- package/dist/tools/schedules.d.ts +4 -0
- package/dist/tools/schedules.js +54 -0
- package/dist/tools/set-ensemble-description.d.ts +4 -0
- package/dist/tools/set-ensemble-description.js +37 -0
- package/dist/tools/set-name.d.ts +4 -0
- package/dist/tools/set-name.js +45 -0
- package/dist/tools/set-part.d.ts +3 -0
- package/dist/tools/set-part.js +20 -0
- package/dist/tools/shutdown.d.ts +4 -0
- package/dist/tools/shutdown.js +54 -0
- package/dist/tools/stage.d.ts +3 -0
- package/dist/tools/stage.js +28 -0
- package/dist/tools/stages.d.ts +3 -0
- package/dist/tools/stages.js +35 -0
- package/dist/tools/stop.d.ts +4 -0
- package/dist/tools/stop.js +29 -0
- package/dist/tools/unschedule.d.ts +4 -0
- package/dist/tools/unschedule.js +35 -0
- package/dist/tools/who-am-i.d.ts +3 -0
- package/dist/tools/who-am-i.js +34 -0
- package/dist/tools/worktree.d.ts +4 -0
- package/dist/tools/worktree.js +181 -0
- package/dist/tui/App.d.ts +85 -0
- package/dist/tui/App.js +1791 -0
- package/dist/tui/bootstrap-types.d.ts +46 -0
- package/dist/tui/bootstrap-types.js +7 -0
- package/dist/tui/client.d.ts +6 -0
- package/dist/tui/client.js +9 -0
- package/dist/tui/commands.d.ts +71 -0
- package/dist/tui/commands.js +1375 -0
- package/dist/tui/components/ActivityLog.d.ts +16 -0
- package/dist/tui/components/ActivityLog.js +36 -0
- package/dist/tui/components/ChatView.d.ts +35 -0
- package/dist/tui/components/ChatView.js +54 -0
- package/dist/tui/components/CommandOverlay.d.ts +15 -0
- package/dist/tui/components/CommandOverlay.js +34 -0
- package/dist/tui/components/CommandPalette.d.ts +21 -0
- package/dist/tui/components/CommandPalette.js +67 -0
- package/dist/tui/components/ConductorChat.d.ts +16 -0
- package/dist/tui/components/ConductorChat.js +32 -0
- package/dist/tui/components/ConversationStream.d.ts +114 -0
- package/dist/tui/components/ConversationStream.js +307 -0
- package/dist/tui/components/CreateEnsembleWizard.d.ts +19 -0
- package/dist/tui/components/CreateEnsembleWizard.js +223 -0
- package/dist/tui/components/DestroyConfirmModal.d.ts +17 -0
- package/dist/tui/components/DestroyConfirmModal.js +62 -0
- package/dist/tui/components/EnsembleListView.d.ts +14 -0
- package/dist/tui/components/EnsembleListView.js +32 -0
- package/dist/tui/components/EnsemblePanel.d.ts +12 -0
- package/dist/tui/components/EnsemblePanel.js +40 -0
- package/dist/tui/components/ErrorView.d.ts +31 -0
- package/dist/tui/components/ErrorView.js +129 -0
- package/dist/tui/components/HomeView.d.ts +54 -0
- package/dist/tui/components/HomeView.js +306 -0
- package/dist/tui/components/InputBar.d.ts +13 -0
- package/dist/tui/components/InputBar.js +58 -0
- package/dist/tui/components/LoadLineupModal.d.ts +18 -0
- package/dist/tui/components/LoadLineupModal.js +79 -0
- package/dist/tui/components/MainView.d.ts +21 -0
- package/dist/tui/components/MainView.js +107 -0
- package/dist/tui/components/NewEnsembleModal.d.ts +9 -0
- package/dist/tui/components/NewEnsembleModal.js +73 -0
- package/dist/tui/components/Picker.d.ts +23 -0
- package/dist/tui/components/Picker.js +70 -0
- package/dist/tui/components/PlayerDetailView.d.ts +26 -0
- package/dist/tui/components/PlayerDetailView.js +118 -0
- package/dist/tui/components/PromptArea.d.ts +50 -0
- package/dist/tui/components/PromptArea.js +303 -0
- package/dist/tui/components/RecruitWizard.d.ts +17 -0
- package/dist/tui/components/RecruitWizard.js +221 -0
- package/dist/tui/components/RestoreConfirmModal.d.ts +18 -0
- package/dist/tui/components/RestoreConfirmModal.js +71 -0
- package/dist/tui/components/ScheduleOverlay.d.ts +13 -0
- package/dist/tui/components/ScheduleOverlay.js +113 -0
- package/dist/tui/components/ScheduleWizard.d.ts +19 -0
- package/dist/tui/components/ScheduleWizard.js +259 -0
- package/dist/tui/components/Splash.d.ts +23 -0
- package/dist/tui/components/Splash.js +221 -0
- package/dist/tui/components/StatusBar.d.ts +48 -0
- package/dist/tui/components/StatusBar.js +128 -0
- package/dist/tui/components/StatusOverlay.d.ts +15 -0
- package/dist/tui/components/StatusOverlay.js +76 -0
- package/dist/tui/components/TitleBar.d.ts +10 -0
- package/dist/tui/components/TitleBar.js +21 -0
- package/dist/tui/components/TopBar.d.ts +12 -0
- package/dist/tui/components/TopBar.js +15 -0
- package/dist/tui/core-api.d.ts +26 -0
- package/dist/tui/core-api.js +67 -0
- package/dist/tui/hooks/useEnsembleDiscovery.d.ts +3 -0
- package/dist/tui/hooks/useEnsembleDiscovery.js +30 -0
- package/dist/tui/hooks/useMaestroPoller.d.ts +3 -0
- package/dist/tui/hooks/useMaestroPoller.js +36 -0
- package/dist/tui/hooks/useSendCommand.d.ts +7 -0
- package/dist/tui/hooks/useSendCommand.js +29 -0
- package/dist/tui/index.d.ts +15 -0
- package/dist/tui/index.js +156 -0
- package/dist/tui/ink-context.d.ts +18 -0
- package/dist/tui/ink-context.js +59 -0
- package/dist/tui/ink-loader.d.ts +26 -0
- package/dist/tui/ink-loader.js +42 -0
- package/dist/tui/removed-commands.d.ts +9 -0
- package/dist/tui/removed-commands.js +22 -0
- package/dist/tui/sse-handler.d.ts +52 -0
- package/dist/tui/sse-handler.js +157 -0
- package/dist/tui/store.d.ts +598 -0
- package/dist/tui/store.js +753 -0
- package/dist/tui/utils/format.d.ts +56 -0
- package/dist/tui/utils/format.js +155 -0
- package/dist/tui/utils/fullscreen.d.ts +23 -0
- package/dist/tui/utils/fullscreen.js +71 -0
- package/dist/tui/utils/history.d.ts +10 -0
- package/dist/tui/utils/history.js +85 -0
- package/dist/tui/utils/platform.d.ts +45 -0
- package/dist/tui/utils/platform.js +258 -0
- package/dist/tui/utils/theme.d.ts +21 -0
- package/dist/tui/utils/theme.js +24 -0
- package/dist/types.d.ts +1020 -0
- package/dist/types.js +39 -0
- package/dist/utils/attachment-format.d.ts +22 -0
- package/dist/utils/attachment-format.js +32 -0
- package/dist/utils/default-part.d.ts +43 -0
- package/dist/utils/default-part.js +104 -0
- package/dist/utils/duration.d.ts +30 -0
- package/dist/utils/duration.js +69 -0
- package/dist/utils/ensemble-ops.d.ts +61 -0
- package/dist/utils/ensemble-ops.js +77 -0
- package/dist/utils/format-hosts.d.ts +21 -0
- package/dist/utils/format-hosts.js +73 -0
- package/dist/utils/hosts.d.ts +113 -0
- package/dist/utils/hosts.js +265 -0
- package/dist/utils/parent-death-watchdog.d.ts +1 -0
- package/dist/utils/parent-death-watchdog.js +47 -0
- package/dist/utils/query-timeout.d.ts +103 -0
- package/dist/utils/query-timeout.js +113 -0
- package/dist/utils/recall-format.d.ts +78 -0
- package/dist/utils/recall-format.js +105 -0
- package/dist/utils/restore-format.d.ts +49 -0
- package/dist/utils/restore-format.js +91 -0
- package/dist/utils/safe-path.d.ts +10 -0
- package/dist/utils/safe-path.js +43 -0
- package/dist/utils/sdk-probe.d.ts +9 -0
- package/dist/utils/sdk-probe.js +45 -0
- package/dist/utils/search-attributes.d.ts +76 -0
- package/dist/utils/search-attributes.js +86 -0
- package/dist/utils/validation.d.ts +113 -0
- package/dist/utils/validation.js +163 -0
- package/dist/utils/visibility-deadline.d.ts +186 -0
- package/dist/utils/visibility-deadline.js +158 -0
- package/dist/utils/worktree.d.ts +103 -0
- package/dist/utils/worktree.js +327 -0
- package/dist/worker.d.ts +14 -0
- package/dist/worker.js +146 -0
- package/dist/workflows/attachment-math.d.ts +56 -0
- package/dist/workflows/attachment-math.js +47 -0
- package/dist/workflows/index.d.ts +3 -0
- package/dist/workflows/index.js +11 -0
- package/dist/workflows/maestro-signals.d.ts +217 -0
- package/dist/workflows/maestro-signals.js +155 -0
- package/dist/workflows/maestro.d.ts +3 -0
- package/dist/workflows/maestro.js +812 -0
- package/dist/workflows/scheduler-signals.d.ts +10 -0
- package/dist/workflows/scheduler-signals.js +14 -0
- package/dist/workflows/scheduler.d.ts +17 -0
- package/dist/workflows/scheduler.js +143 -0
- package/dist/workflows/session.d.ts +2 -0
- package/dist/workflows/session.js +1638 -0
- package/dist/workflows/signals.d.ts +297 -0
- package/dist/workflows/signals.js +239 -0
- package/examples/agents/tempo-composer.md +56 -0
- package/examples/agents/tempo-conductor.md +117 -0
- package/examples/agents/tempo-critic.md +73 -0
- package/examples/agents/tempo-improv.md +74 -0
- package/examples/agents/tempo-liner.md +75 -0
- package/examples/agents/tempo-roadie.md +61 -0
- package/examples/agents/tempo-soloist.md +71 -0
- package/examples/agents/tempo-tuner.md +94 -0
- package/examples/ensembles/tempo-big-band.yaml +146 -0
- package/examples/ensembles/tempo-dev-team.yaml +58 -0
- package/examples/ensembles/tempo-headless-jam.yaml +77 -0
- package/examples/ensembles/tempo-jam-session.yaml +41 -0
- package/examples/ensembles/tempo-mock-jam.yaml +79 -0
- package/examples/ensembles/tempo-review-squad.yaml +32 -0
- package/package.json +172 -0
- package/packaging/launchd/com.agent.tempo.plist +46 -0
- package/packaging/systemd/agent-tempo.service +32 -0
- package/packaging/windows/install-task.ps1 +71 -0
- package/scenarios/conductor-recruit-mock.yaml +33 -0
- package/scenarios/echo-roundtrip.yaml +15 -0
- package/scenarios/multi-player-handoff.yaml +38 -0
- package/scenarios/recruit-cascade.yaml +38 -0
- package/scenarios/two-player-conversation.yaml +33 -0
- package/workflow-bundle.js +14146 -0
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Stream-JSON frame parser for `claude -p --output-format stream-json`.
|
|
4
|
+
*
|
|
5
|
+
* Issue #520 PR-3. Parses the newline-delimited JSON envelope the Claude
|
|
6
|
+
* Code CLI emits during a per-turn invocation, accumulating the bits the
|
|
7
|
+
* adapter needs (assembled assistant text, stop reason, usage, cost, plus
|
|
8
|
+
* the fatal-/transient-classifier inputs).
|
|
9
|
+
*
|
|
10
|
+
* **Schema is grounded in the §11.1 spike fixtures** captured against
|
|
11
|
+
* `claude --version` 2.1.126 — see `tests/adapters/fixtures/claude-code-headless/`.
|
|
12
|
+
* Three deltas vs design §5.3 (documented in §16 spike-findings appendix):
|
|
13
|
+
*
|
|
14
|
+
* 1. **`result` frame has a `subtype: 'success' | 'error'`** — design listed
|
|
15
|
+
* `result` as a top-level type. Reality: `subtype` distinguishes success
|
|
16
|
+
* vs error envelopes. Bonus: `is_error: boolean` + `api_error_status:
|
|
17
|
+
* number | null` are clean classifier inputs (see {@link ResultFrame}).
|
|
18
|
+
* 2. **`system/hook_started` + `system/hook_response` + `system/status`** —
|
|
19
|
+
* not in design. Emitted whenever the host has Claude Code hooks
|
|
20
|
+
* configured (most operators do — SessionStart hooks for project
|
|
21
|
+
* context). The `output`/`stdout` fields can carry arbitrary user
|
|
22
|
+
* content, so we IGNORE them outright (the fixture corpus shows a
|
|
23
|
+
* 107KB SessionStart hook body in real captures).
|
|
24
|
+
* 3. **`rate_limit_event` is a top-level type** — design assumed it was
|
|
25
|
+
* a `system/api_retry` subtype. Reality: it's its own frame. AND it
|
|
26
|
+
* carries TWO signal modes (informational vs action-required) on the
|
|
27
|
+
* same wire shape, distinguished by `rate_limit_info.status`. See
|
|
28
|
+
* {@link RateLimitEvent}.
|
|
29
|
+
*
|
|
30
|
+
* Pure code; no I/O; trivially unit-testable with synthesized + captured
|
|
31
|
+
* fixtures. The error classifier (`./error-mapper.ts`) consumes the
|
|
32
|
+
* accumulator state to emit a single `ApiErrorCategory` per turn.
|
|
33
|
+
*/
|
|
34
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
+
exports.StreamJsonReader = void 0;
|
|
36
|
+
exports.newTurnAccumulator = newTurnAccumulator;
|
|
37
|
+
exports.applyFrame = applyFrame;
|
|
38
|
+
/** Build a fresh accumulator. */
|
|
39
|
+
function newTurnAccumulator() {
|
|
40
|
+
return {
|
|
41
|
+
assembledText: '',
|
|
42
|
+
stopReason: null,
|
|
43
|
+
usage: null,
|
|
44
|
+
totalCostUsd: null,
|
|
45
|
+
resultIsError: null,
|
|
46
|
+
resultApiErrorStatus: null,
|
|
47
|
+
resultSubtype: null,
|
|
48
|
+
resultFrameSeen: false,
|
|
49
|
+
apiRetryEvents: [],
|
|
50
|
+
rateLimitEvents: [],
|
|
51
|
+
pluginErrors: [],
|
|
52
|
+
initModel: null,
|
|
53
|
+
initApiKeySource: null,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Fold one stream-json frame into the accumulator. Pure mutation — return
|
|
58
|
+
* the same instance for chaining.
|
|
59
|
+
*
|
|
60
|
+
* Unknown frame types are silently passed through (the parser is tolerant
|
|
61
|
+
* by design — Claude Code may add new frame types between minor versions
|
|
62
|
+
* and we don't want to crash on them; the adapter only ever acts on the
|
|
63
|
+
* categories we recognize).
|
|
64
|
+
*
|
|
65
|
+
* The hook + status frames are explicitly enumerated as IGNORED rather
|
|
66
|
+
* than falling through `default`, so future readers don't think the
|
|
67
|
+
* pass-through is accidental.
|
|
68
|
+
*/
|
|
69
|
+
function applyFrame(state, frame) {
|
|
70
|
+
switch (frame.type) {
|
|
71
|
+
case 'system':
|
|
72
|
+
switch (frame.subtype) {
|
|
73
|
+
case 'init': {
|
|
74
|
+
const init = frame;
|
|
75
|
+
state.initModel = init.model ?? null;
|
|
76
|
+
state.initApiKeySource = init.apiKeySource ?? null;
|
|
77
|
+
if (init.plugin_errors && init.plugin_errors.length > 0) {
|
|
78
|
+
state.pluginErrors = init.plugin_errors;
|
|
79
|
+
}
|
|
80
|
+
return state;
|
|
81
|
+
}
|
|
82
|
+
case 'api_retry':
|
|
83
|
+
state.apiRetryEvents.push(frame);
|
|
84
|
+
return state;
|
|
85
|
+
case 'hook_started':
|
|
86
|
+
case 'hook_response':
|
|
87
|
+
case 'status':
|
|
88
|
+
// Delta #2 — explicitly ignored. Hook output may carry arbitrary
|
|
89
|
+
// operator content (107KB+ in real captures); we don't need it.
|
|
90
|
+
return state;
|
|
91
|
+
default:
|
|
92
|
+
return state;
|
|
93
|
+
}
|
|
94
|
+
case 'rate_limit_event':
|
|
95
|
+
// Delta #3 — top-level frame, NOT a system subtype. Two signal modes
|
|
96
|
+
// overloaded on one type: informational (every turn) vs action-required
|
|
97
|
+
// (when capped). Classifier distinguishes by `rate_limit_info.status`.
|
|
98
|
+
state.rateLimitEvents.push(frame);
|
|
99
|
+
return state;
|
|
100
|
+
case 'assistant': {
|
|
101
|
+
// Telemetry only — the canonical assembled text comes from the closing
|
|
102
|
+
// `result` frame's `result` field. Architect-locked: assistant-frame
|
|
103
|
+
// text accumulator is observed-only; `result.result` wins.
|
|
104
|
+
//
|
|
105
|
+
// We DO opportunistically accumulate text-block content as a fallback
|
|
106
|
+
// for the case where the subprocess exits without a `result` frame
|
|
107
|
+
// (turn aborted mid-stream) — better to surface partial output than
|
|
108
|
+
// nothing. Filter on `c.type === 'text'` to skip thinking + tool_use
|
|
109
|
+
// blocks (Delta #1 bonus finding — Opus 4.7 emits 'thinking' blocks).
|
|
110
|
+
const a = frame;
|
|
111
|
+
const blocks = a.message?.content ?? [];
|
|
112
|
+
for (const block of blocks) {
|
|
113
|
+
if (block && block.type === 'text' && typeof block.text === 'string') {
|
|
114
|
+
state.assembledText += block.text;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return state;
|
|
118
|
+
}
|
|
119
|
+
case 'user':
|
|
120
|
+
case 'stream_event':
|
|
121
|
+
// Tool-result + token-delta frames — telemetry only. We let Claude
|
|
122
|
+
// Code own the entire tool-dispatch loop (it speaks MCP natively
|
|
123
|
+
// with the inline --mcp-config we synthesize); the adapter only
|
|
124
|
+
// observes the conversation, never participates in tool dispatch.
|
|
125
|
+
return state;
|
|
126
|
+
case 'result': {
|
|
127
|
+
const r = frame;
|
|
128
|
+
state.resultFrameSeen = true;
|
|
129
|
+
state.resultSubtype = r.subtype ?? null;
|
|
130
|
+
state.resultIsError = typeof r.is_error === 'boolean' ? r.is_error : null;
|
|
131
|
+
state.resultApiErrorStatus = typeof r.api_error_status === 'number' ? r.api_error_status : null;
|
|
132
|
+
if (typeof r.result === 'string') {
|
|
133
|
+
// Result frame's `result` field is the canonical assembled text.
|
|
134
|
+
// Overwrites the assistant-frame fallback we accumulated above —
|
|
135
|
+
// the CLI may have applied final formatting / truncation.
|
|
136
|
+
state.assembledText = r.result;
|
|
137
|
+
}
|
|
138
|
+
state.stopReason = r.stop_reason ?? state.stopReason;
|
|
139
|
+
if (r.usage)
|
|
140
|
+
state.usage = r.usage;
|
|
141
|
+
if (typeof r.total_cost_usd === 'number')
|
|
142
|
+
state.totalCostUsd = r.total_cost_usd;
|
|
143
|
+
return state;
|
|
144
|
+
}
|
|
145
|
+
default:
|
|
146
|
+
// Unknown frame type — defensive default. Future CLI versions may
|
|
147
|
+
// add new types and we don't want to crash; just observe and move on.
|
|
148
|
+
return state;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Stateful line-buffered stream-json reader. Feed it raw stdout chunks;
|
|
153
|
+
* call `flush()` after subprocess exit to emit any trailing partial line.
|
|
154
|
+
*
|
|
155
|
+
* Exposed as a class so the adapter can wire it to the `claude -p`
|
|
156
|
+
* subprocess's `stdout.on('data', ...)` event without needing a
|
|
157
|
+
* Transform stream subclass — keeps the dep surface minimal.
|
|
158
|
+
*
|
|
159
|
+
* Malformed JSON lines are skipped with a logged warning (defensive —
|
|
160
|
+
* shouldn't happen in practice but a single bad line shouldn't crash
|
|
161
|
+
* the turn).
|
|
162
|
+
*/
|
|
163
|
+
class StreamJsonReader {
|
|
164
|
+
buffer = '';
|
|
165
|
+
state = newTurnAccumulator();
|
|
166
|
+
onParseError;
|
|
167
|
+
constructor(opts = {}) {
|
|
168
|
+
this.onParseError = opts.onParseError;
|
|
169
|
+
}
|
|
170
|
+
/** Feed a chunk of stdout. Triggers `applyFrame` for every complete line. */
|
|
171
|
+
feed(chunk) {
|
|
172
|
+
this.buffer += typeof chunk === 'string' ? chunk : chunk.toString('utf8');
|
|
173
|
+
let nl;
|
|
174
|
+
while ((nl = this.buffer.indexOf('\n')) !== -1) {
|
|
175
|
+
const line = this.buffer.slice(0, nl).trim();
|
|
176
|
+
this.buffer = this.buffer.slice(nl + 1);
|
|
177
|
+
this.parseLine(line);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
/** Process any trailing line that didn't end with a newline. Idempotent. */
|
|
181
|
+
flush() {
|
|
182
|
+
const trailing = this.buffer.trim();
|
|
183
|
+
this.buffer = '';
|
|
184
|
+
this.parseLine(trailing);
|
|
185
|
+
}
|
|
186
|
+
/** Snapshot of the current accumulator. Caller may freely mutate. */
|
|
187
|
+
snapshot() {
|
|
188
|
+
return this.state;
|
|
189
|
+
}
|
|
190
|
+
parseLine(line) {
|
|
191
|
+
if (!line)
|
|
192
|
+
return;
|
|
193
|
+
let frame;
|
|
194
|
+
try {
|
|
195
|
+
frame = JSON.parse(line);
|
|
196
|
+
}
|
|
197
|
+
catch (err) {
|
|
198
|
+
this.onParseError?.(line, err);
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
if (!frame || typeof frame !== 'object' || typeof frame.type !== 'string') {
|
|
202
|
+
this.onParseError?.(line, new Error('frame missing required `type` field'));
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
this.state = applyFrame(this.state, frame);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
exports.StreamJsonReader = StreamJsonReader;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure-constant types for the claude-code-headless adapter.
|
|
3
|
+
*
|
|
4
|
+
* Lives in its own file so consumers (the adapter class, the spawn
|
|
5
|
+
* helper, the recruit tool's Zod schema, the `RecruitOutboxEntry` shape,
|
|
6
|
+
* the `SpawnProcessInput` shape) can import the canonical permission-mode
|
|
7
|
+
* tuple WITHOUT dragging in `@temporalio/client` (which the adapter class
|
|
8
|
+
* needs but the others don't). DRY single-source-of-truth — adding a new
|
|
9
|
+
* permission mode means editing exactly one tuple. Addresses QA Nit 3
|
|
10
|
+
* from PR-1's review.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Permission-mode tuple accepted by `claude -p --permission-mode`. Single
|
|
14
|
+
* source of truth — all of:
|
|
15
|
+
*
|
|
16
|
+
* - `ClaudeCodeHeadlessPermissionMode` type (this file)
|
|
17
|
+
* - `recruit` MCP tool Zod enum
|
|
18
|
+
* - `RecruitOutboxEntry.permissionMode`
|
|
19
|
+
* - `SpawnProcessInput.permissionMode`
|
|
20
|
+
* - `ClaudeCodeHeadlessAdapterOpts.permissionMode` (spawn helper)
|
|
21
|
+
* - `ClaudeCodeHeadlessAdapterOptions.permissionMode` (adapter class)
|
|
22
|
+
*
|
|
23
|
+
* import / re-derive from this tuple. Adding a new mode requires editing
|
|
24
|
+
* only this tuple; the type + Zod enum + every consumer's schema follow.
|
|
25
|
+
*/
|
|
26
|
+
export declare const CLAUDE_CODE_PERMISSION_MODES: readonly ["acceptEdits", "auto", "bypassPermissions", "default", "dontAsk", "plan"];
|
|
27
|
+
/** Permission mode for `claude -p --permission-mode`. Derived from {@link CLAUDE_CODE_PERMISSION_MODES}. */
|
|
28
|
+
export type ClaudeCodeHeadlessPermissionMode = typeof CLAUDE_CODE_PERMISSION_MODES[number];
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Pure-constant types for the claude-code-headless adapter.
|
|
4
|
+
*
|
|
5
|
+
* Lives in its own file so consumers (the adapter class, the spawn
|
|
6
|
+
* helper, the recruit tool's Zod schema, the `RecruitOutboxEntry` shape,
|
|
7
|
+
* the `SpawnProcessInput` shape) can import the canonical permission-mode
|
|
8
|
+
* tuple WITHOUT dragging in `@temporalio/client` (which the adapter class
|
|
9
|
+
* needs but the others don't). DRY single-source-of-truth — adding a new
|
|
10
|
+
* permission mode means editing exactly one tuple. Addresses QA Nit 3
|
|
11
|
+
* from PR-1's review.
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.CLAUDE_CODE_PERMISSION_MODES = void 0;
|
|
15
|
+
/**
|
|
16
|
+
* Permission-mode tuple accepted by `claude -p --permission-mode`. Single
|
|
17
|
+
* source of truth — all of:
|
|
18
|
+
*
|
|
19
|
+
* - `ClaudeCodeHeadlessPermissionMode` type (this file)
|
|
20
|
+
* - `recruit` MCP tool Zod enum
|
|
21
|
+
* - `RecruitOutboxEntry.permissionMode`
|
|
22
|
+
* - `SpawnProcessInput.permissionMode`
|
|
23
|
+
* - `ClaudeCodeHeadlessAdapterOpts.permissionMode` (spawn helper)
|
|
24
|
+
* - `ClaudeCodeHeadlessAdapterOptions.permissionMode` (adapter class)
|
|
25
|
+
*
|
|
26
|
+
* import / re-derive from this tuple. Adding a new mode requires editing
|
|
27
|
+
* only this tuple; the type + Zod enum + every consumer's schema follow.
|
|
28
|
+
*/
|
|
29
|
+
exports.CLAUDE_CODE_PERMISSION_MODES = [
|
|
30
|
+
'acceptEdits',
|
|
31
|
+
'auto',
|
|
32
|
+
'bypassPermissions',
|
|
33
|
+
'default',
|
|
34
|
+
'dontAsk',
|
|
35
|
+
'plan',
|
|
36
|
+
];
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copilot adapter — SDK class.
|
|
3
|
+
*
|
|
4
|
+
* Content lifted verbatim from `src/copilot-bridge.ts` into a class wrapper as
|
|
5
|
+
* part of PR-B (v0.25 rebuild step 2/7). Zero behavior change: the same
|
|
6
|
+
* createSession / event-logger / poll / sendAndWait / cleanup flow runs, and
|
|
7
|
+
* the PR-A compat shim in `src/workflows/session.ts` translates
|
|
8
|
+
* `updateMetadata({ status })` onto the attachment phase machine.
|
|
9
|
+
*
|
|
10
|
+
* Dual-purpose file:
|
|
11
|
+
* - `import { CopilotSdkAttachment } from '.../adapter'` → class reference for
|
|
12
|
+
* the adapter registry. `run()` is NOT invoked.
|
|
13
|
+
* - `node .../adapter.js` (or `ts-node .../adapter.ts`) → executes `run()` as
|
|
14
|
+
* the spawned subprocess entry point, gated by `require.main === module`.
|
|
15
|
+
*
|
|
16
|
+
* PR-C rewrites this adapter against the v0.25 attachment wire protocol —
|
|
17
|
+
* `claimAttachment` + heartbeat, `processingStart`/`End` via SdkAttachment.deliver()
|
|
18
|
+
* wrapper, `onSuperseded` cancellation hook. Until then, the bridge runs its
|
|
19
|
+
* lifecycle stand-alone.
|
|
20
|
+
*
|
|
21
|
+
* Usage (dev / prod):
|
|
22
|
+
* npx ts-node src/adapters/copilot/adapter.ts
|
|
23
|
+
* node dist/adapters/copilot/adapter.js
|
|
24
|
+
*
|
|
25
|
+
* Environment variables:
|
|
26
|
+
* AGENT_TEMPO_ENSEMBLE — ensemble name (default: "default")
|
|
27
|
+
* AGENT_TEMPO_PLAYER_NAME — player ID for workflow registration (set by spawner for deterministic workflow IDs)
|
|
28
|
+
* COPILOT_BRIDGE_NAME — player name for set_name (optional)
|
|
29
|
+
* COPILOT_BRIDGE_MODEL — model to use (optional)
|
|
30
|
+
* COPILOT_BRIDGE_SESSION_ID — deterministic session ID for resumable sessions (optional)
|
|
31
|
+
* GITHUB_TOKEN — GitHub auth token (optional, uses logged-in user by default)
|
|
32
|
+
*
|
|
33
|
+
* Design reference: docs/design/session-lifecycle-rebuild-v2.md §6 (Class 2 —
|
|
34
|
+
* SDK), §4.2, §4.4.
|
|
35
|
+
*/
|
|
36
|
+
import type { AdapterDescriptor } from '../../types';
|
|
37
|
+
import { SdkAttachment } from '../sdk/base';
|
|
38
|
+
/**
|
|
39
|
+
* Descriptor for the copilot adapter. Kept colocated with the class so
|
|
40
|
+
* `adapter.ts` has no import dependency on `index.ts` (breaks the circular
|
|
41
|
+
* module-graph cycle flagged in QA review of PR-B). `index.ts` re-exports
|
|
42
|
+
* this constant alongside the class.
|
|
43
|
+
*
|
|
44
|
+
* Design reference: docs/design/session-lifecycle-rebuild-v2.md §4.2–4.3.
|
|
45
|
+
*/
|
|
46
|
+
export declare const copilotDescriptor: AdapterDescriptor;
|
|
47
|
+
/**
|
|
48
|
+
* SDK-class adapter for the GitHub Copilot CLI.
|
|
49
|
+
*
|
|
50
|
+
* Delivery model is pull-based (blocks on LLM turn): the bridge polls the
|
|
51
|
+
* workflow for pending messages, injects them as prompts via the Copilot SDK's
|
|
52
|
+
* `session.sendAndWait`, then marks them delivered. `processingStart`/`End` are
|
|
53
|
+
* paired around each blocking call so the workflow's stale detection doesn't
|
|
54
|
+
* misclassify a long tool execution as a dead session (fix for #99).
|
|
55
|
+
*
|
|
56
|
+
* PR-B lands this as a verbatim lift from the old `src/copilot-bridge.ts`.
|
|
57
|
+
* PR-C moves the processingStart/End wrapping up into SdkAttachment.deliver()
|
|
58
|
+
* and introduces `claimAttachment` + heartbeat + `onSuperseded` hooks.
|
|
59
|
+
*/
|
|
60
|
+
export declare class CopilotSdkAttachment extends SdkAttachment {
|
|
61
|
+
readonly descriptor: AdapterDescriptor;
|
|
62
|
+
/**
|
|
63
|
+
* The currently-active Copilot SDK session, stashed here so the
|
|
64
|
+
* `onSuperseded` hook can disconnect it on lease revocation. Populated in
|
|
65
|
+
* `run()` after `copilotClient.createSession(...)` and refreshed on each
|
|
66
|
+
* successful `recreateSession()`. `undefined` before the session is created
|
|
67
|
+
* and after shutdown.
|
|
68
|
+
*/
|
|
69
|
+
private activeSession?;
|
|
70
|
+
/**
|
|
71
|
+
* Split-brain cancellation hook (§9.3). Called by `SdkAttachment` when the
|
|
72
|
+
* base-class phase watcher detects that our `attachmentId` no longer matches
|
|
73
|
+
* the current attachment on the workflow — i.e., another claimant stole the
|
|
74
|
+
* lease. We tear down the active Copilot session: it's the only
|
|
75
|
+
* cancellation primitive the SDK exposes, and the adapter is about to exit
|
|
76
|
+
* anyway.
|
|
77
|
+
*
|
|
78
|
+
* Residual ghost-reply window: if `sendAndWait` is already producing a reply
|
|
79
|
+
* over the network, disconnect may race the response. The reply is dropped
|
|
80
|
+
* (processingEnd will throw `AttachmentMismatch`, markDelivered never fires)
|
|
81
|
+
* so delivery semantics stay at-most-once. One LLM turn is wasted; this is
|
|
82
|
+
* documented in the adapter README per §9.3's guidance.
|
|
83
|
+
*/
|
|
84
|
+
protected onSuperseded(): void;
|
|
85
|
+
/**
|
|
86
|
+
* Entry point for the bridge subprocess.
|
|
87
|
+
*
|
|
88
|
+
* Kept as a single async method (instead of being broken up into lifecycle
|
|
89
|
+
* hooks) to preserve the exact behavior of the pre-PR-B `main()` function.
|
|
90
|
+
* The bridge claims the attachment via `startV2Lifecycle`, drives
|
|
91
|
+
* `deliver()` through `SdkAttachment` (synchronous processingStart/End
|
|
92
|
+
* per §7.1, `expectedAttachmentId` carried on both), and installs
|
|
93
|
+
* `onSuperseded` to disconnect the Copilot session on lease revocation.
|
|
94
|
+
*
|
|
95
|
+
* PR-H (#132): the legacy fire-and-forget processingStart/End path
|
|
96
|
+
* gated on `AGENT_TEMPO_LIFECYCLE_V2=0` has been removed. V2 is the
|
|
97
|
+
* only path.
|
|
98
|
+
*/
|
|
99
|
+
run(): Promise<void>;
|
|
100
|
+
}
|