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,254 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.DEV_VERBS = void 0;
|
|
37
|
+
exports.dispatchDevVerb = dispatchDevVerb;
|
|
38
|
+
/**
|
|
39
|
+
* Dev-mode scriptable CLI verbs (#432).
|
|
40
|
+
*
|
|
41
|
+
* Five thin shell-scriptable wrappers over the MCP tool surface, available
|
|
42
|
+
* only when `--dev` / `AGENT_TEMPO_DEV_MODE=1` is active. Production CLI
|
|
43
|
+
* was collapsed to TUI/MCP-only in #288; this module restores
|
|
44
|
+
* shell-scriptable access for autonomous E2E validation harnesses without
|
|
45
|
+
* re-introducing the public surface that #288 retired.
|
|
46
|
+
*
|
|
47
|
+
* ## Allowlist discipline
|
|
48
|
+
*
|
|
49
|
+
* `DEV_VERBS` is an explicit `ReadonlySet<string>`, NOT derived from
|
|
50
|
+
* `REMOVED_VERBS` keys. Promoting a removed verb to a dev-mode verb must
|
|
51
|
+
* be a deliberate, code-reviewed action. The mechanical-enforcement test
|
|
52
|
+
* in `test/cli-dev-verbs.test.ts` asserts the DEV_VERBS ↔ REMOVED_VERBS
|
|
53
|
+
* ↔ `cli.ts` switch invariants.
|
|
54
|
+
*
|
|
55
|
+
* ## NOT crash-proof
|
|
56
|
+
*
|
|
57
|
+
* This module touches Temporal directly. It is deliberately excluded from
|
|
58
|
+
* `test/cli-crash-proof-isolation.test.ts`'s `CRASH_PROOF_MODULES` allowlist
|
|
59
|
+
* — dev mode requires Temporal anyway.
|
|
60
|
+
*/
|
|
61
|
+
const config_1 = require("../config");
|
|
62
|
+
const resolve_1 = require("../activities/resolve");
|
|
63
|
+
const maestro_signals_1 = require("../workflows/maestro-signals");
|
|
64
|
+
const signals_1 = require("../workflows/signals");
|
|
65
|
+
const ensemble_ops_1 = require("../utils/ensemble-ops");
|
|
66
|
+
const validation_1 = require("../utils/validation");
|
|
67
|
+
const commands_1 = require("./commands");
|
|
68
|
+
const out = __importStar(require("./output"));
|
|
69
|
+
/** Allowlist of verbs accepted in dev mode. Single source of truth. */
|
|
70
|
+
exports.DEV_VERBS = new Set([
|
|
71
|
+
'cue',
|
|
72
|
+
'pause',
|
|
73
|
+
'play',
|
|
74
|
+
'release',
|
|
75
|
+
'set-ensemble-description',
|
|
76
|
+
]);
|
|
77
|
+
async function cueCommand(args) {
|
|
78
|
+
const playerId = args.positional[1];
|
|
79
|
+
const message = args.positional.slice(2).join(' ');
|
|
80
|
+
if (!playerId || !message) {
|
|
81
|
+
out.error('Usage: agent-tempo --dev cue <player> <message>');
|
|
82
|
+
process.exit(1);
|
|
83
|
+
}
|
|
84
|
+
const nameError = (0, validation_1.validatePlayerName)(playerId);
|
|
85
|
+
if (nameError) {
|
|
86
|
+
out.error(nameError);
|
|
87
|
+
process.exit(1);
|
|
88
|
+
}
|
|
89
|
+
if (message.length > validation_1.MESSAGE_MAX) {
|
|
90
|
+
out.error(`Message exceeds max length (${validation_1.MESSAGE_MAX}).`);
|
|
91
|
+
process.exit(1);
|
|
92
|
+
}
|
|
93
|
+
const { connection, client } = await (0, commands_1.verbClient)(args);
|
|
94
|
+
try {
|
|
95
|
+
const handle = await (0, resolve_1.resolveSession)(client, args.ensemble, playerId);
|
|
96
|
+
if (!handle) {
|
|
97
|
+
// Throw rather than exit — `connection.close()` in finally must run
|
|
98
|
+
// first; `process.exit()` skips finally blocks.
|
|
99
|
+
throw new Error(`No active session named "${playerId}" in ensemble "${args.ensemble}".`);
|
|
100
|
+
}
|
|
101
|
+
await handle.signal(signals_1.receiveMessageSignal, { from: 'cli', text: message });
|
|
102
|
+
out.success(`Cued ${playerId}.`);
|
|
103
|
+
}
|
|
104
|
+
finally {
|
|
105
|
+
await connection.close();
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
async function pauseCommand(args) {
|
|
109
|
+
const { connection, client } = await (0, commands_1.verbClient)(args);
|
|
110
|
+
try {
|
|
111
|
+
const [toggle, sessions] = await Promise.all([
|
|
112
|
+
(0, ensemble_ops_1.pauseMaestroAndScheduler)(client, args.ensemble),
|
|
113
|
+
(0, ensemble_ops_1.signalAllSessions)(client, args.ensemble, signals_1.setPausedSignal.name, true),
|
|
114
|
+
]);
|
|
115
|
+
out.log(` ${out.dim('paused')} ${sessions.sent} session${sessions.sent !== 1 ? 's' : ''}`);
|
|
116
|
+
if (toggle.maestro)
|
|
117
|
+
out.log(` ${out.dim('paused')} maestro`);
|
|
118
|
+
if (toggle.scheduler)
|
|
119
|
+
out.log(` ${out.dim('paused')} scheduler`);
|
|
120
|
+
if (sessions.failed > 0) {
|
|
121
|
+
out.warn(`${sessions.failed} session pause signal${sessions.failed !== 1 ? 's' : ''} failed.`);
|
|
122
|
+
}
|
|
123
|
+
out.success(`Ensemble "${args.ensemble}" paused.`);
|
|
124
|
+
}
|
|
125
|
+
finally {
|
|
126
|
+
await connection.close();
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
async function playCommand(args) {
|
|
130
|
+
const { connection, client } = await (0, commands_1.verbClient)(args);
|
|
131
|
+
try {
|
|
132
|
+
const [toggle, sessions] = await Promise.all([
|
|
133
|
+
(0, ensemble_ops_1.unpauseMaestroAndScheduler)(client, args.ensemble),
|
|
134
|
+
(0, ensemble_ops_1.signalAllSessions)(client, args.ensemble, signals_1.setPausedSignal.name, false),
|
|
135
|
+
]);
|
|
136
|
+
out.log(` ${out.dim('resumed')} ${sessions.sent} session${sessions.sent !== 1 ? 's' : ''}`);
|
|
137
|
+
if (toggle.maestro)
|
|
138
|
+
out.log(` ${out.dim('resumed')} maestro`);
|
|
139
|
+
if (toggle.scheduler)
|
|
140
|
+
out.log(` ${out.dim('resumed')} scheduler`);
|
|
141
|
+
if (sessions.failed > 0) {
|
|
142
|
+
out.warn(`${sessions.failed} session resume signal${sessions.failed !== 1 ? 's' : ''} failed.`);
|
|
143
|
+
}
|
|
144
|
+
out.success(`Ensemble "${args.ensemble}" resumed.`);
|
|
145
|
+
}
|
|
146
|
+
finally {
|
|
147
|
+
await connection.close();
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* `release [<player>]` — with `<player>`, signals one session directly.
|
|
152
|
+
* Without, scans the ensemble and signals every session whose outbox is
|
|
153
|
+
* currently locked (matches the production `release` semantics in
|
|
154
|
+
* `commands.ts`).
|
|
155
|
+
*/
|
|
156
|
+
async function releaseCommand(args) {
|
|
157
|
+
const player = args.positional[1];
|
|
158
|
+
const { connection, client } = await (0, commands_1.verbClient)(args);
|
|
159
|
+
try {
|
|
160
|
+
if (player) {
|
|
161
|
+
const nameError = (0, validation_1.validatePlayerName)(player);
|
|
162
|
+
if (nameError)
|
|
163
|
+
throw new Error(nameError);
|
|
164
|
+
const handle = await (0, resolve_1.resolveSession)(client, args.ensemble, player);
|
|
165
|
+
if (!handle) {
|
|
166
|
+
throw new Error(`No active session named "${player}" in ensemble "${args.ensemble}".`);
|
|
167
|
+
}
|
|
168
|
+
await handle.signal(signals_1.releaseHeldSignal);
|
|
169
|
+
out.success(`Released ${player}.`);
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
// Ensemble-wide — same algorithm as `release()` in commands.ts.
|
|
173
|
+
const sanitized = args.ensemble.replace(/["\\\n\r]/g, '');
|
|
174
|
+
const query = `WorkflowType = "agentSessionWorkflow" AND ExecutionStatus = "Running" AND AgentTempoEnsemble = "${sanitized}"`;
|
|
175
|
+
let released = 0;
|
|
176
|
+
for await (const wf of client.workflow.list({ query })) {
|
|
177
|
+
try {
|
|
178
|
+
const handle = client.workflow.getHandle(wf.workflowId);
|
|
179
|
+
const locked = await handle.query(signals_1.outboxLockedQuery);
|
|
180
|
+
if (locked) {
|
|
181
|
+
await handle.signal(signals_1.releaseHeldSignal);
|
|
182
|
+
released++;
|
|
183
|
+
const sa = wf.searchAttributes || {};
|
|
184
|
+
const playerId = Array.isArray(sa.AgentTempoPlayerId) ? String(sa.AgentTempoPlayerId[0]) : wf.workflowId;
|
|
185
|
+
out.log(` ${out.dim('released')} ${playerId}`);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
catch {
|
|
189
|
+
// Skip failed queries (terminated workflows, etc.)
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
if (released > 0) {
|
|
193
|
+
out.success(`Released ${released} player${released !== 1 ? 's' : ''}.`);
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
out.log('No held players found.');
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
finally {
|
|
200
|
+
await connection.close();
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
async function setEnsembleDescriptionCommand(args) {
|
|
204
|
+
if (args.positional.length < 2) {
|
|
205
|
+
out.error('Usage: agent-tempo --dev set-ensemble-description "<description>" (use "" to clear)');
|
|
206
|
+
process.exit(1);
|
|
207
|
+
}
|
|
208
|
+
const description = args.positional.slice(1).join(' ');
|
|
209
|
+
if (description.length > validation_1.ENSEMBLE_DESCRIPTION_MAX) {
|
|
210
|
+
out.error(`Description exceeds max length (${validation_1.ENSEMBLE_DESCRIPTION_MAX}).`);
|
|
211
|
+
process.exit(1);
|
|
212
|
+
}
|
|
213
|
+
const { connection, client } = await (0, commands_1.verbClient)(args);
|
|
214
|
+
try {
|
|
215
|
+
const handle = client.workflow.getHandle((0, config_1.maestroWorkflowId)(args.ensemble));
|
|
216
|
+
await handle.signal(maestro_signals_1.setEnsembleDescriptionSignal.name, description);
|
|
217
|
+
if (description.trim().length === 0) {
|
|
218
|
+
out.success(`Ensemble "${args.ensemble}" description cleared.`);
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
out.success(`Ensemble "${args.ensemble}" description updated: "${description}"`);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
finally {
|
|
225
|
+
await connection.close();
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Dispatch a dev-mode verb. Caller (`cli.ts`) gates on `isDevMode()` +
|
|
230
|
+
* `DEV_VERBS.has(verb)` before calling. Throws `Error` for unknown verbs
|
|
231
|
+
* — the mechanical test in `cli-dev-verbs.test.ts` asserts that this
|
|
232
|
+
* is unreachable in practice.
|
|
233
|
+
*/
|
|
234
|
+
async function dispatchDevVerb(verb, args) {
|
|
235
|
+
switch (verb) {
|
|
236
|
+
case 'cue':
|
|
237
|
+
await cueCommand(args);
|
|
238
|
+
return;
|
|
239
|
+
case 'pause':
|
|
240
|
+
await pauseCommand(args);
|
|
241
|
+
return;
|
|
242
|
+
case 'play':
|
|
243
|
+
await playCommand(args);
|
|
244
|
+
return;
|
|
245
|
+
case 'release':
|
|
246
|
+
await releaseCommand(args);
|
|
247
|
+
return;
|
|
248
|
+
case 'set-ensemble-description':
|
|
249
|
+
await setEnsembleDescriptionCommand(args);
|
|
250
|
+
return;
|
|
251
|
+
default:
|
|
252
|
+
throw new Error(`dispatchDevVerb: unknown dev verb "${verb}" (not in DEV_VERBS allowlist)`);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function printHelp(): void;
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.printHelp = printHelp;
|
|
37
|
+
/**
|
|
38
|
+
* Help-text module for `agent-tempo help` / `--help` / `-h`.
|
|
39
|
+
*
|
|
40
|
+
* **Critical constraint**: this module must NOT import from `@temporalio/*`,
|
|
41
|
+
* `../workflows/*`, `../adapters/*`, `../spawn`, `../client`, `./commands`,
|
|
42
|
+
* `./preflight`, `./config-command`, or any module that transitively pulls in
|
|
43
|
+
* the Temporal SDK. The `help` command must remain operable when the Temporal
|
|
44
|
+
* SDK itself is broken (see issue #157 PR C — users need to be able to read
|
|
45
|
+
* help to find the recovery path).
|
|
46
|
+
*
|
|
47
|
+
* Kept in its own file (instead of inlined in `src/cli.ts`) so the static
|
|
48
|
+
* help string doesn't bloat the CLI entrypoint. The test
|
|
49
|
+
* `test/cli-crash-proof-isolation.test.ts` enumerates this module and asserts
|
|
50
|
+
* its `require.cache` has no Temporal-adjacent leaks.
|
|
51
|
+
*/
|
|
52
|
+
const out = __importStar(require("./output"));
|
|
53
|
+
const types_1 = require("../types");
|
|
54
|
+
// `AGENT_TYPES` lives in `src/types.ts`, which the crash-proof contract
|
|
55
|
+
// (#157) explicitly permits — it's pure-types-only with no `@temporalio/*`
|
|
56
|
+
// imports. Composing the help string from the canonical tuple means
|
|
57
|
+
// adding a new adapter automatically updates this surface.
|
|
58
|
+
const AGENT_OPTIONS = types_1.AGENT_TYPES.join('|');
|
|
59
|
+
function printHelp() {
|
|
60
|
+
console.log(`
|
|
61
|
+
${out.bold('agent-tempo')} — Multi-session Claude Code coordination via Temporal
|
|
62
|
+
|
|
63
|
+
${out.bold('Getting started:')}
|
|
64
|
+
${out.cyan('agent-tempo up')} Start infrastructure, then launch the TUI with ${out.dim('agent-tempo')}
|
|
65
|
+
|
|
66
|
+
${out.bold('Usage:')}
|
|
67
|
+
agent-tempo Launch the TUI (auto-provisions + opens home view)
|
|
68
|
+
agent-tempo <ensemble> Launch the TUI directly into an ensemble view
|
|
69
|
+
agent-tempo <command> [options]
|
|
70
|
+
|
|
71
|
+
${out.bold('Commands:')}
|
|
72
|
+
${out.cyan('up')} Start infrastructure only — Temporal, daemon, MCP registration
|
|
73
|
+
${out.cyan('down')} Stop infrastructure; workflows stay parked for the next ${out.dim('up')}
|
|
74
|
+
${out.cyan('down --destroy [-y]')} Terminate every workflow across every ensemble, then stop infrastructure
|
|
75
|
+
${out.cyan('server')} Start the Temporal dev server and register search attributes
|
|
76
|
+
${out.cyan('status')} [ensemble] Show active sessions and Temporal health
|
|
77
|
+
${out.cyan('ensemble')} <sub> Manage saved ensemble lineups (save/list/show)
|
|
78
|
+
${out.cyan('broadcast')} <message> Send a message to all active players
|
|
79
|
+
${out.cyan('destroy')} <ensemble> [-y] Terminate every workflow in one ensemble (typed confirmation)
|
|
80
|
+
${out.cyan('attachment-info')} <name> Inspect the V2 attachment phase + current holder
|
|
81
|
+
${out.cyan('recall')} <name> Read a player's message history (--limit/--offset/--preview/--from/--since/--include-sent/--json)
|
|
82
|
+
${out.cyan('hosts')} List daemons polling this Temporal namespace with advertised capabilities (--all/--json)
|
|
83
|
+
${out.cyan('refresh-host-profile')} Re-advertise this daemon's capability profile to the global Maestro
|
|
84
|
+
${out.cyan('restore')} <ensemble> Restore orphaned sessions in one ensemble on this host (--all-hosts for cluster-view listing)
|
|
85
|
+
${out.cyan('release')} [ensemble] Release all held players (unlock outbox, deliver messages)
|
|
86
|
+
${out.cyan('agent-types')} <sub> Manage player type definitions (list/show/init)
|
|
87
|
+
${out.cyan('daemon')} <sub> Manage the worker daemon (start/stop/status/logs)
|
|
88
|
+
${out.cyan('dashboard')} Open the web dashboard (--no-open / --pair / --json)
|
|
89
|
+
${out.cyan('upgrade')} [version] Upgrade agent-tempo to latest (or specific version)
|
|
90
|
+
${out.cyan('config')} Configure Temporal connection settings
|
|
91
|
+
${out.cyan('init')} Register MCP server globally (or --project for .mcp.json)
|
|
92
|
+
${out.cyan('preflight')} Run preflight checks only
|
|
93
|
+
${out.cyan('help')} Show this help message
|
|
94
|
+
|
|
95
|
+
${out.bold('Removed — use the TUI:')}
|
|
96
|
+
${out.dim('stop / restart / detach / migrate')} → ${out.dim('/destroy · /restart · /shutdown')}
|
|
97
|
+
${out.dim('conduct / start / recruit / disband')} → ${out.dim('launch `agent-tempo` · /recruit · /destroy')}
|
|
98
|
+
${out.dim('resume')} → ${out.dim('/play')}
|
|
99
|
+
See https://github.com/vinceblank/agent-tempo/issues/285 for the full migration table.
|
|
100
|
+
|
|
101
|
+
${out.bold('Connection options (all commands):')}
|
|
102
|
+
--temporal-address <addr> Temporal server address (default: localhost:7233)
|
|
103
|
+
--temporal-namespace <ns> Temporal namespace (default: default)
|
|
104
|
+
--temporal-api-key <key> Temporal API key (for Temporal Cloud)
|
|
105
|
+
--temporal-tls-cert <path> Path to TLS client certificate
|
|
106
|
+
--temporal-tls-key <path> Path to TLS client key
|
|
107
|
+
|
|
108
|
+
${out.bold('Other options:')}
|
|
109
|
+
--name <name> Set session window name (up only)
|
|
110
|
+
--agent <name> Agent type to spawn — ${AGENT_OPTIONS} (default: from config; up)
|
|
111
|
+
--dev Use the dev profile (~/.agent-tempo-dev, port 8474, namespace agent-tempo-dev)
|
|
112
|
+
--skip-preflight Skip preflight checks
|
|
113
|
+
--background Run Temporal in background (server only)
|
|
114
|
+
--project Use per-project .mcp.json instead of global (init only)
|
|
115
|
+
--keep-mcp Don't remove MCP config (down only)
|
|
116
|
+
--keep-daemon Don't stop the worker daemon (down only)
|
|
117
|
+
--destroy Also terminate every workflow (down only)
|
|
118
|
+
--kill-shared-temporal Tear down the Temporal dev server even if the other profile is active (down only, #423)
|
|
119
|
+
-y, --yes Skip confirmation prompt (down --destroy, destroy)
|
|
120
|
+
--lineup <name|file> Load ensemble lineup by name or file path (up)
|
|
121
|
+
--scenario <name|path> Force every mock player in the lineup into mockMode:scripted with this scenario (dev-mode-only, up + --lineup)
|
|
122
|
+
--no-hold Skip startup hold (requires --lineup on up)
|
|
123
|
+
--ensemble <name> Target a specific ensemble (broadcast, destroy, restore)
|
|
124
|
+
--all-hosts List cross-host orphans across the whole namespace (restore — read-only, #151)
|
|
125
|
+
-d, --dir <path> Target directory (default: cwd)
|
|
126
|
+
|
|
127
|
+
${out.bold('Config command:')}
|
|
128
|
+
${out.dim('agent-tempo config')} Interactive connection setup
|
|
129
|
+
${out.dim('agent-tempo config show')} Show resolved config
|
|
130
|
+
${out.dim('agent-tempo config set <k> <v>')} Set a config value
|
|
131
|
+
|
|
132
|
+
Settings are saved to ~/.agent-tempo/config.json.
|
|
133
|
+
Also reads ~/.config/temporalio/temporal.yaml as a fallback.
|
|
134
|
+
|
|
135
|
+
${out.bold('Resolution order:')} CLI flag > env var > config file > temporal CLI config > default
|
|
136
|
+
|
|
137
|
+
${out.bold('First time? Run this:')}
|
|
138
|
+
${out.dim('cd your-project')}
|
|
139
|
+
${out.dim('agent-tempo up')}
|
|
140
|
+
${out.dim('agent-tempo')} # Launch the TUI
|
|
141
|
+
|
|
142
|
+
${out.bold('Typical workflow:')}
|
|
143
|
+
${out.dim('agent-tempo up')} Start infrastructure (once per host)
|
|
144
|
+
${out.dim('agent-tempo')} Launch the TUI
|
|
145
|
+
${out.dim('agent-tempo status myband')} Check who's active in an ensemble
|
|
146
|
+
|
|
147
|
+
${out.bold('Environment:')}
|
|
148
|
+
AGENT_TEMPO_ENSEMBLE Default ensemble name (fallback: "default")
|
|
149
|
+
TEMPORAL_ADDRESS Default Temporal address (fallback: localhost:7233)
|
|
150
|
+
TEMPORAL_NAMESPACE Default Temporal namespace (fallback: "default")
|
|
151
|
+
TEMPORAL_API_KEY Temporal API key
|
|
152
|
+
TEMPORAL_TLS_CERT_PATH Path to TLS client certificate
|
|
153
|
+
TEMPORAL_TLS_KEY_PATH Path to TLS client key
|
|
154
|
+
AGENT_TEMPO_DEFAULT_AGENT Default agent type: claude or copilot (fallback: claude)
|
|
155
|
+
AGENT_TEMPO_DEV_MODE Set to "1" or "true" to enable the dev profile (alternative to --dev)
|
|
156
|
+
AGENT_TEMPO_HOME_OVERRIDE Override the home dir entirely (escape hatch for triple-isolated envs)
|
|
157
|
+
`);
|
|
158
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/** Marker file name dropped in the new home post-migration. */
|
|
2
|
+
export declare const MIGRATION_MARKER_FILENAME = ".migrated-from-claude-tempo";
|
|
3
|
+
export type MigrationStatus = 'no-legacy' | 'already-migrated' | 'migrated' | 'skipped' | 'failed';
|
|
4
|
+
export interface LegacyMigrationResult {
|
|
5
|
+
status: MigrationStatus;
|
|
6
|
+
legacyHome?: string;
|
|
7
|
+
newHome?: string;
|
|
8
|
+
/** Relative paths inside the new home that were copied this run. */
|
|
9
|
+
copiedFiles?: string[];
|
|
10
|
+
/** Errors collected during partial-copy resume; populated when status === 'failed'. */
|
|
11
|
+
errors?: string[];
|
|
12
|
+
/** Set when status === 'skipped' to explain why. */
|
|
13
|
+
reason?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface LegacyMigrationOpts {
|
|
16
|
+
/** Don't write anything; report what would happen. */
|
|
17
|
+
dryRun?: boolean;
|
|
18
|
+
/** Override the conflict guard (existing new-home without marker) AND the volatile-state guard. */
|
|
19
|
+
force?: boolean;
|
|
20
|
+
/** Which profile to migrate. `'prod'` = `~/.claude-tempo` → `~/.agent-tempo`; `'dev'` = `-dev` variants. Default `'prod'`. */
|
|
21
|
+
profile?: 'prod' | 'dev';
|
|
22
|
+
/** Test seam — override `homedir()`. */
|
|
23
|
+
homeDir?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* One-shot legacy home migration. See module doc-comment for the full
|
|
27
|
+
* contract. Never throws — all error paths return a structured
|
|
28
|
+
* {@link LegacyMigrationResult}.
|
|
29
|
+
*/
|
|
30
|
+
export declare function migrateLegacyHome(opts?: LegacyMigrationOpts): Promise<LegacyMigrationResult>;
|
|
31
|
+
/**
|
|
32
|
+
* Format a {@link LegacyMigrationResult} for human display (CLI verb output
|
|
33
|
+
* + bootstrap step `notes`).
|
|
34
|
+
*/
|
|
35
|
+
export declare function formatMigrationResult(r: LegacyMigrationResult): string;
|