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,87 @@
|
|
|
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.createTempoClientWithSpawn = createTempoClientWithSpawn;
|
|
37
|
+
const core_1 = require("./core");
|
|
38
|
+
/**
|
|
39
|
+
* Invoke the `agent-tempo` CLI as a child process. The lazy
|
|
40
|
+
* `child_process` import keeps the dependency out of `core.ts` so
|
|
41
|
+
* `TempoClientCore` consumers never pay for it. Shared by the two spawn
|
|
42
|
+
* methods so they have identical process semantics (cwd default,
|
|
43
|
+
* timeout, shell-quoted args).
|
|
44
|
+
*/
|
|
45
|
+
async function runTempoCli(args, workDir) {
|
|
46
|
+
const { execFile } = await Promise.resolve().then(() => __importStar(require('child_process')));
|
|
47
|
+
await new Promise((resolve, reject) => {
|
|
48
|
+
execFile('agent-tempo', args, {
|
|
49
|
+
cwd: workDir ?? process.cwd(),
|
|
50
|
+
timeout: 60_000,
|
|
51
|
+
shell: true,
|
|
52
|
+
}, (err, _stdout, stderr) => {
|
|
53
|
+
if (err)
|
|
54
|
+
reject(new Error(stderr?.toString().trim() || err.message || `agent-tempo ${args[0]} failed`));
|
|
55
|
+
else
|
|
56
|
+
resolve();
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Build a `TempoClientWithSpawn` over a configured Temporal `Client`.
|
|
62
|
+
* Composes {@link createTempoClientCore} and adds the two TTY-bound
|
|
63
|
+
* spawn methods. Use this for TUI-side consumers; headless callers
|
|
64
|
+
* should use {@link createTempoClientCore} directly.
|
|
65
|
+
*
|
|
66
|
+
* `opts` (e.g. `subscribeDeps`) is forwarded to the Core factory.
|
|
67
|
+
*/
|
|
68
|
+
function createTempoClientWithSpawn(client, opts = {}) {
|
|
69
|
+
const core = (0, core_1.createTempoClientCore)(client, opts);
|
|
70
|
+
return {
|
|
71
|
+
...core,
|
|
72
|
+
async createEnsemble(opts) {
|
|
73
|
+
const args = opts.lineup
|
|
74
|
+
? ['up', opts.ensemble, '--lineup', opts.lineup]
|
|
75
|
+
: ['up', opts.ensemble];
|
|
76
|
+
await runTempoCli(args, opts.workDir);
|
|
77
|
+
},
|
|
78
|
+
async spawnConductor(opts) {
|
|
79
|
+
// `agent-tempo up <ensemble>` is idempotent at the workflow layer —
|
|
80
|
+
// re-invoking it on a live ensemble reuses the existing conductor
|
|
81
|
+
// workflow (deterministic workflow ID). Distinct from
|
|
82
|
+
// `createEnsemble` so call sites read as "make sure the conductor
|
|
83
|
+
// terminal is running", not "create a new ensemble".
|
|
84
|
+
await runTempoCli(['up', opts.ensemble], opts.workDir);
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { AgentType } from './types';
|
|
3
|
+
/** Environment variable name constants — use these instead of string literals. */
|
|
4
|
+
export declare const ENV: {
|
|
5
|
+
readonly ENSEMBLE: "AGENT_TEMPO_ENSEMBLE";
|
|
6
|
+
readonly CONDUCTOR: "AGENT_TEMPO_CONDUCTOR";
|
|
7
|
+
readonly PLAYER_NAME: "AGENT_TEMPO_PLAYER_NAME";
|
|
8
|
+
readonly TASK_QUEUE: "AGENT_TEMPO_TASK_QUEUE";
|
|
9
|
+
readonly BRIDGE_NAME: "COPILOT_BRIDGE_NAME";
|
|
10
|
+
readonly BRIDGE_MODE: "AGENT_TEMPO_BRIDGE_MODE";
|
|
11
|
+
readonly BRIDGE_MODEL: "COPILOT_BRIDGE_MODEL";
|
|
12
|
+
readonly BRIDGE_SESSION_ID: "COPILOT_BRIDGE_SESSION_ID";
|
|
13
|
+
readonly TEMPORAL_ADDRESS: "TEMPORAL_ADDRESS";
|
|
14
|
+
readonly TEMPORAL_NAMESPACE: "TEMPORAL_NAMESPACE";
|
|
15
|
+
readonly TEMPORAL_API_KEY: "TEMPORAL_API_KEY";
|
|
16
|
+
readonly TEMPORAL_TLS_CERT_PATH: "TEMPORAL_TLS_CERT_PATH";
|
|
17
|
+
readonly TEMPORAL_TLS_KEY_PATH: "TEMPORAL_TLS_KEY_PATH";
|
|
18
|
+
readonly DEFAULT_AGENT: "AGENT_TEMPO_DEFAULT_AGENT";
|
|
19
|
+
readonly PLAYER_TYPE: "AGENT_TEMPO_PLAYER_TYPE";
|
|
20
|
+
readonly CLAUDE_BIN: "AGENT_TEMPO_CLAUDE_BIN";
|
|
21
|
+
/**
|
|
22
|
+
* #131 Phase C — claude-api adapter model override. Recruit-arg takes
|
|
23
|
+
* precedence; this env var is the next fallback before the constants-pinned
|
|
24
|
+
* default (`claude-opus-4-7`). Ignored by other adapters.
|
|
25
|
+
*/
|
|
26
|
+
readonly API_MODEL: "AGENT_TEMPO_API_MODEL";
|
|
27
|
+
/**
|
|
28
|
+
* #449 Phase C — opencode adapter model override. Distinct from
|
|
29
|
+
* `API_MODEL` to keep namespaces clean: claude-api is Anthropic-only
|
|
30
|
+
* with bare model ids (`claude-opus-4-7`); opencode takes combined
|
|
31
|
+
* `provider/model` strings (`anthropic/claude-opus-4-7`,
|
|
32
|
+
* `openai/gpt-4o`, `ollama/llama3`, …). Recruit-arg precedence:
|
|
33
|
+
* recruit `model` arg → this env var → `DEFAULT_MODEL` constant.
|
|
34
|
+
*/
|
|
35
|
+
readonly OPENCODE_MODEL: "AGENT_TEMPO_OPENCODE_MODEL";
|
|
36
|
+
/**
|
|
37
|
+
* #520 — claude-code-headless permission mode. Forwarded to `claude -p
|
|
38
|
+
* --permission-mode <mode>`. Recruit-arg `permissionMode` takes precedence;
|
|
39
|
+
* this env var is the fallback before the constants-pinned default
|
|
40
|
+
* (`'acceptEdits'`). Mutually exclusive with
|
|
41
|
+
* {@link DANGEROUSLY_SKIP_PERMISSIONS}.
|
|
42
|
+
*/
|
|
43
|
+
readonly PERMISSION_MODE: "AGENT_TEMPO_PERMISSION_MODE";
|
|
44
|
+
/**
|
|
45
|
+
* #520 — claude-code-headless dangerous-skip-permissions opt-in. When set
|
|
46
|
+
* to `'1'`, the adapter passes `--dangerously-skip-permissions` to
|
|
47
|
+
* `claude -p` instead of `--permission-mode`. Use only in trusted /
|
|
48
|
+
* sandboxed contexts. Mutually exclusive with {@link PERMISSION_MODE}.
|
|
49
|
+
*/
|
|
50
|
+
readonly DANGEROUSLY_SKIP_PERMISSIONS: "AGENT_TEMPO_DANGEROUSLY_SKIP_PERMISSIONS";
|
|
51
|
+
/**
|
|
52
|
+
* v0.25 PR-D attachment resume plumbing. When `restart` / `migrate`
|
|
53
|
+
* enqueues a spawn outbox entry, the workflow passes the pre-claimed
|
|
54
|
+
* `attachmentId` + pinned `runId` + resolved `adapterId` through the spawn
|
|
55
|
+
* activity into the child process env. The child's adapter reads these in
|
|
56
|
+
* `startV2Lifecycle` to renew (rather than freshly claim) the existing lease,
|
|
57
|
+
* so there is no race window between the workflow's claim and the adapter
|
|
58
|
+
* boot. Absent on first-recruit spawn (fresh claim path).
|
|
59
|
+
*/
|
|
60
|
+
readonly ATTACHMENT_ID: "AGENT_TEMPO_ATTACHMENT_ID";
|
|
61
|
+
readonly ATTACHMENT_RUN_ID: "AGENT_TEMPO_ATTACHMENT_RUN_ID";
|
|
62
|
+
readonly ADAPTER_ID: "AGENT_TEMPO_ADAPTER_ID";
|
|
63
|
+
/**
|
|
64
|
+
* Daemon HTTP/SSE event source (#94, #95). See SSE-PROTOCOL.md §1, §3.
|
|
65
|
+
* `HTTP_BIND` defaults to `127.0.0.1`. Setting to `0.0.0.0` forces
|
|
66
|
+
* bearer mode. `DAEMON_PORT` defaults to `8473` (the `t-e-m-p-o`
|
|
67
|
+
* mnemonic; not IANA-registered). `CORS_ORIGINS` is a comma-separated
|
|
68
|
+
* explicit allowlist (no wildcards) — only consulted in bearer mode.
|
|
69
|
+
* `SSE_MAX_CONNECTIONS` caps live SSE subscribers (PR-2; defaults 100).
|
|
70
|
+
*/
|
|
71
|
+
readonly HTTP_BIND: "AGENT_TEMPO_HTTP_BIND";
|
|
72
|
+
readonly DAEMON_PORT: "AGENT_TEMPO_DAEMON_PORT";
|
|
73
|
+
readonly CORS_ORIGINS: "AGENT_TEMPO_CORS_ORIGINS";
|
|
74
|
+
readonly SSE_MAX_CONNECTIONS: "AGENT_TEMPO_SSE_MAX_CONNECTIONS";
|
|
75
|
+
/**
|
|
76
|
+
* Dev profile gate (ADR 0014 §5.2). One source of truth — every layer
|
|
77
|
+
* (paths, namespace, port, task queue, banner, registry gating) consults
|
|
78
|
+
* `isDevMode()` rather than reading the env var directly. The `--dev`
|
|
79
|
+
* top-level CLI flag in `src/cli.ts` sets this to `'1'` before any other
|
|
80
|
+
* module loads (see `src/cli/dev-mode-bootstrap.ts`).
|
|
81
|
+
*/
|
|
82
|
+
readonly DEV_MODE: "AGENT_TEMPO_DEV_MODE";
|
|
83
|
+
/**
|
|
84
|
+
* Escape hatch for triple-isolated environments (ADR 0014 §5.3). When
|
|
85
|
+
* set, `resolveTempoHome()` returns this path verbatim — bypassing both
|
|
86
|
+
* the production default and the dev-mode default. Lets a power user
|
|
87
|
+
* coordinate three or more parallel agent-tempo profiles on one box.
|
|
88
|
+
*/
|
|
89
|
+
readonly DEV_HOME_OVERRIDE: "AGENT_TEMPO_HOME_OVERRIDE";
|
|
90
|
+
};
|
|
91
|
+
export interface Config {
|
|
92
|
+
temporalAddress: string;
|
|
93
|
+
temporalNamespace: string;
|
|
94
|
+
temporalApiKey?: string;
|
|
95
|
+
temporalTlsCertPath?: string;
|
|
96
|
+
temporalTlsKeyPath?: string;
|
|
97
|
+
defaultAgent: AgentType;
|
|
98
|
+
claudeBin?: string;
|
|
99
|
+
taskQueue: string;
|
|
100
|
+
ensemble: string;
|
|
101
|
+
}
|
|
102
|
+
/** Persisted config file fields (stored in ~/.agent-tempo/config.json). */
|
|
103
|
+
export interface PersistedConfig {
|
|
104
|
+
temporalAddress?: string;
|
|
105
|
+
temporalNamespace?: string;
|
|
106
|
+
temporalApiKey?: string;
|
|
107
|
+
temporalTlsCertPath?: string;
|
|
108
|
+
temporalTlsKeyPath?: string;
|
|
109
|
+
defaultAgent?: AgentType;
|
|
110
|
+
claudeBin?: string;
|
|
111
|
+
/**
|
|
112
|
+
* Bearer token for the daemon's HTTP/SSE event source (#94, #95,
|
|
113
|
+
* SSE-PROTOCOL.md §3.1). Auto-generated on first daemon boot when
|
|
114
|
+
* bearer mode is required (`AGENT_TEMPO_HTTP_BIND` non-loopback OR
|
|
115
|
+
* a request with a non-loopback `Origin`) and no token is set:
|
|
116
|
+
* `crypto.randomBytes(32).toString('base64url')`, 0600 on POSIX.
|
|
117
|
+
* Rotation = delete this field; next daemon boot regenerates.
|
|
118
|
+
*/
|
|
119
|
+
httpToken?: string;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Dev profile defaults — one switch (`--dev` top-level flag, or
|
|
123
|
+
* `AGENT_TEMPO_DEV_MODE=1` env var) flips four isolation axes at once
|
|
124
|
+
* (ADR 0014 §5.1). Production stays on the existing defaults.
|
|
125
|
+
*/
|
|
126
|
+
export declare const DEV_HOME_DIR_NAME = ".agent-tempo-dev";
|
|
127
|
+
export declare const PROD_HOME_DIR_NAME = ".agent-tempo";
|
|
128
|
+
export declare const DEV_TEMPORAL_NAMESPACE = "agent-tempo-dev";
|
|
129
|
+
export declare const PROD_TEMPORAL_NAMESPACE = "default";
|
|
130
|
+
export declare const DEV_TASK_QUEUE = "agent-tempo-dev";
|
|
131
|
+
export declare const PROD_TASK_QUEUE = "agent-tempo";
|
|
132
|
+
export declare const DEV_DAEMON_PORT = 8474;
|
|
133
|
+
export declare const PROD_DAEMON_PORT = 8473;
|
|
134
|
+
/**
|
|
135
|
+
* Single source of truth for the dev profile gate (ADR 0014 §5.2).
|
|
136
|
+
* Every layer that needs to switch behaviour consults this helper; future
|
|
137
|
+
* staging/ci/demo profiles would follow the same `isStagingMode()` pattern.
|
|
138
|
+
*
|
|
139
|
+
* Recognises `'1'` and `'true'` (case-insensitive) so users can write
|
|
140
|
+
* either `AGENT_TEMPO_DEV_MODE=1` or `AGENT_TEMPO_DEV_MODE=true`. Any
|
|
141
|
+
* other value (including the empty string) is treated as production.
|
|
142
|
+
*
|
|
143
|
+
* **Important**: when the `--dev` CLI flag is used, the env var must be
|
|
144
|
+
* set BEFORE `src/config.ts` is first imported (see
|
|
145
|
+
* `src/cli/dev-mode-bootstrap.ts`) so the module-load-time `AGENT_TEMPO_HOME`
|
|
146
|
+
* constant resolves to the dev profile.
|
|
147
|
+
*/
|
|
148
|
+
export declare function isDevMode(): boolean;
|
|
149
|
+
/**
|
|
150
|
+
* Resolve the agent-tempo home directory. Three-tier precedence:
|
|
151
|
+
* 1. `AGENT_TEMPO_HOME_OVERRIDE` env — explicit override (multi-isolation
|
|
152
|
+
* escape hatch; ADR 0014 §5.3).
|
|
153
|
+
* 2. Dev mode (`AGENT_TEMPO_DEV_MODE=1`): `~/.agent-tempo-dev/`.
|
|
154
|
+
* 3. Production default: `~/.agent-tempo/`.
|
|
155
|
+
*
|
|
156
|
+
* Evaluated once at module load time; downstream callers consume the
|
|
157
|
+
* exported `AGENT_TEMPO_HOME` constant. The bootstrap module guarantees
|
|
158
|
+
* the env var is set before this function first runs.
|
|
159
|
+
*
|
|
160
|
+
* Exported (rather than file-private) so unit tests can exercise the
|
|
161
|
+
* three-tier precedence directly without resorting to `vi.resetModules()`
|
|
162
|
+
* gymnastics. Production code should consume {@link AGENT_TEMPO_HOME}
|
|
163
|
+
* — calling this helper per-request would re-read env on every call.
|
|
164
|
+
*/
|
|
165
|
+
export declare function resolveTempoHome(): string;
|
|
166
|
+
export declare const AGENT_TEMPO_HOME: string;
|
|
167
|
+
export declare const CONFIG_FILE_PATH: string;
|
|
168
|
+
/**
|
|
169
|
+
* Daemon-level configuration persisted in `~/.agent-tempo/config.json`
|
|
170
|
+
* alongside the existing `PersistedConfig` fields.
|
|
171
|
+
*
|
|
172
|
+
* `restorePolicy` is the effective off-switch for daemon reconcile-on-boot
|
|
173
|
+
* auto-restore — there is no feature flag. `"never"` disables all automatic
|
|
174
|
+
* restoration and leaves the CLI `restore` command as the sole revive path.
|
|
175
|
+
*/
|
|
176
|
+
export declare const CleanupPolicySchema: z.ZodDefault<z.ZodObject<{
|
|
177
|
+
detachedMaxAgeDays: z.ZodDefault<z.ZodNumber>;
|
|
178
|
+
destroyedMaxAgeDays: z.ZodDefault<z.ZodNumber>;
|
|
179
|
+
}, "strip", z.ZodTypeAny, {
|
|
180
|
+
detachedMaxAgeDays: number;
|
|
181
|
+
destroyedMaxAgeDays: number;
|
|
182
|
+
}, {
|
|
183
|
+
detachedMaxAgeDays?: number | undefined;
|
|
184
|
+
destroyedMaxAgeDays?: number | undefined;
|
|
185
|
+
}>>;
|
|
186
|
+
export declare const DaemonConfigSchema: z.ZodDefault<z.ZodObject<{
|
|
187
|
+
restorePolicy: z.ZodDefault<z.ZodEnum<["auto", "prompt", "never"]>>;
|
|
188
|
+
autoRestoreMaxAgeHours: z.ZodDefault<z.ZodNumber>;
|
|
189
|
+
/**
|
|
190
|
+
* Ensemble allowlist for `auto` restore. Empty array means "all ensembles
|
|
191
|
+
* allowed". Each entry is a simple prefix match: trailing `*` is stripped
|
|
192
|
+
* and the remaining string is compared with `String.startsWith()`. Entries
|
|
193
|
+
* without trailing `*` are exact matches. See {@link matchEnsembleGlob}.
|
|
194
|
+
*/
|
|
195
|
+
autoRestoreEnsembles: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
196
|
+
cleanupPolicy: z.ZodDefault<z.ZodObject<{
|
|
197
|
+
detachedMaxAgeDays: z.ZodDefault<z.ZodNumber>;
|
|
198
|
+
destroyedMaxAgeDays: z.ZodDefault<z.ZodNumber>;
|
|
199
|
+
}, "strip", z.ZodTypeAny, {
|
|
200
|
+
detachedMaxAgeDays: number;
|
|
201
|
+
destroyedMaxAgeDays: number;
|
|
202
|
+
}, {
|
|
203
|
+
detachedMaxAgeDays?: number | undefined;
|
|
204
|
+
destroyedMaxAgeDays?: number | undefined;
|
|
205
|
+
}>>;
|
|
206
|
+
}, "strip", z.ZodTypeAny, {
|
|
207
|
+
restorePolicy: "auto" | "prompt" | "never";
|
|
208
|
+
autoRestoreMaxAgeHours: number;
|
|
209
|
+
autoRestoreEnsembles: string[];
|
|
210
|
+
cleanupPolicy: {
|
|
211
|
+
detachedMaxAgeDays: number;
|
|
212
|
+
destroyedMaxAgeDays: number;
|
|
213
|
+
};
|
|
214
|
+
}, {
|
|
215
|
+
restorePolicy?: "auto" | "prompt" | "never" | undefined;
|
|
216
|
+
autoRestoreMaxAgeHours?: number | undefined;
|
|
217
|
+
autoRestoreEnsembles?: string[] | undefined;
|
|
218
|
+
cleanupPolicy?: {
|
|
219
|
+
detachedMaxAgeDays?: number | undefined;
|
|
220
|
+
destroyedMaxAgeDays?: number | undefined;
|
|
221
|
+
} | undefined;
|
|
222
|
+
}>>;
|
|
223
|
+
/** Inferred config type matching {@link DaemonConfigSchema}. */
|
|
224
|
+
export type DaemonConfig = z.infer<typeof DaemonConfigSchema>;
|
|
225
|
+
/**
|
|
226
|
+
* Load `~/.agent-tempo/config.json` and extract the daemon-level fields.
|
|
227
|
+
* Returns fully-defaulted `DaemonConfig` if the file is missing, unreadable,
|
|
228
|
+
* or contains no daemon fields. Partial configs (user sets one field only)
|
|
229
|
+
* merge with defaults via Zod's `.default()` per-field behaviour.
|
|
230
|
+
*
|
|
231
|
+
* Invalid JSON logs a warning and falls back to defaults rather than
|
|
232
|
+
* crashing — the daemon must boot even if the user has a mangled config.
|
|
233
|
+
*/
|
|
234
|
+
export declare function loadDaemonConfig(): DaemonConfig;
|
|
235
|
+
/**
|
|
236
|
+
* Simple-prefix ensemble match — PR-E §8 answer 5. No glob library dep.
|
|
237
|
+
*
|
|
238
|
+
* - Pattern ends with `*` → strip the `*`, match by `ensemble.startsWith(prefix)`.
|
|
239
|
+
* - Pattern without trailing `*` → exact equality.
|
|
240
|
+
* - Empty pattern list → allow all (caller decides; this helper returns `false`).
|
|
241
|
+
*/
|
|
242
|
+
export declare function matchEnsembleGlob(ensemble: string, pattern: string): boolean;
|
|
243
|
+
/**
|
|
244
|
+
* Check an ensemble name against a list of patterns.
|
|
245
|
+
* Empty list → allow all (returns `true`).
|
|
246
|
+
* Any matching pattern → allow (returns `true`).
|
|
247
|
+
* No matches → deny (returns `false`).
|
|
248
|
+
*/
|
|
249
|
+
export declare function isEnsembleAllowed(ensemble: string, allowlist: string[]): boolean;
|
|
250
|
+
/** Load ~/.agent-tempo/config.json if it exists. */
|
|
251
|
+
export declare function loadConfigFile(): PersistedConfig;
|
|
252
|
+
/** Save config to ~/.agent-tempo/config.json with restrictive permissions. */
|
|
253
|
+
export declare function saveConfigFile(config: PersistedConfig): void;
|
|
254
|
+
/**
|
|
255
|
+
* Load Temporal CLI config from ~/.config/temporalio/temporal.yaml as a fallback.
|
|
256
|
+
* The Temporal CLI stores named environments there. We read the active environment
|
|
257
|
+
* or the first one we find.
|
|
258
|
+
*
|
|
259
|
+
* Format is simple YAML — we parse it with basic string operations.
|
|
260
|
+
*/
|
|
261
|
+
export declare function loadTemporalCliConfig(): PersistedConfig;
|
|
262
|
+
/**
|
|
263
|
+
* Minimal YAML parser for Temporal CLI config files.
|
|
264
|
+
* Handles the subset of YAML used by the Temporal CLI:
|
|
265
|
+
* active-env: local
|
|
266
|
+
* env:
|
|
267
|
+
* local:
|
|
268
|
+
* address: localhost:7233
|
|
269
|
+
* namespace: default
|
|
270
|
+
* api-key: ...
|
|
271
|
+
* tls-cert-path: ...
|
|
272
|
+
* tls-key-path: ...
|
|
273
|
+
*/
|
|
274
|
+
export declare function parseTemporalYaml(content: string): PersistedConfig;
|
|
275
|
+
/**
|
|
276
|
+
* Parse an agent value against the {@link AgentType} union.
|
|
277
|
+
* Throws when `value` is present but not a valid agent; returns `'claude'`
|
|
278
|
+
* for empty/unset values so callers can use it as a source-aware default.
|
|
279
|
+
*/
|
|
280
|
+
export declare function parseAgent(value: string | undefined, source: ConfigSource): AgentType;
|
|
281
|
+
/** CLI flag overrides — passed down from the arg parser. */
|
|
282
|
+
export interface CliOverrides {
|
|
283
|
+
temporalAddress?: string;
|
|
284
|
+
temporalNamespace?: string;
|
|
285
|
+
temporalApiKey?: string;
|
|
286
|
+
temporalTlsCertPath?: string;
|
|
287
|
+
temporalTlsKeyPath?: string;
|
|
288
|
+
defaultAgent?: AgentType;
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Build a resolved Config using the priority chain:
|
|
292
|
+
* CLI flag > env var > agent-tempo config file > temporal CLI config > defaults
|
|
293
|
+
*
|
|
294
|
+
* In dev mode, `TEMPORAL_NAMESPACE` and `TEMPORAL_ADDRESS` env vars are
|
|
295
|
+
* dropped from the chain — see {@link DEV_ENV_CARVE_OUT}.
|
|
296
|
+
*/
|
|
297
|
+
export declare function getConfig(overrides?: CliOverrides): Config;
|
|
298
|
+
export type ConfigSource = 'flag' | 'env' | 'config' | 'temporal-cli' | 'default' | 'none';
|
|
299
|
+
export interface ConfigWithSources {
|
|
300
|
+
config: Config;
|
|
301
|
+
sources: Record<string, ConfigSource>;
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Like getConfig(), but also returns which source each value came from.
|
|
305
|
+
* Used by `agent-tempo config show` to help users debug.
|
|
306
|
+
*
|
|
307
|
+
* Mirrors {@link getConfig}'s dev-mode env-var carve-out — without this
|
|
308
|
+
* parity the user would see `env: TEMPORAL_NAMESPACE=default` in
|
|
309
|
+
* `config show` while the daemon happily ignores it.
|
|
310
|
+
*/
|
|
311
|
+
export declare function getConfigWithSources(overrides?: CliOverrides): ConfigWithSources;
|
|
312
|
+
/** Build a per-host task queue name for cross-machine activities: {taskQueue}-{hostname} */
|
|
313
|
+
export declare function hostTaskQueue(taskQueue: string, hostname: string): string;
|
|
314
|
+
/** Build a workflow ID for a player session: agent-session-{ensemble}-{playerId} */
|
|
315
|
+
export declare function sessionWorkflowId(ensemble: string, playerId: string): string;
|
|
316
|
+
/** Build a workflow ID for a conductor: agent-session-{ensemble}-conductor */
|
|
317
|
+
export declare function conductorWorkflowId(ensemble: string): string;
|
|
318
|
+
/** Build a workflow ID for the scheduler: agent-scheduler-{ensemble} */
|
|
319
|
+
export declare function schedulerWorkflowId(ensemble: string): string;
|
|
320
|
+
/** Build a workflow ID for the Maestro: agent-maestro-{ensemble} */
|
|
321
|
+
export declare function maestroWorkflowId(ensemble: string): string;
|
|
322
|
+
/** Workflow ID for the single global Maestro instance. */
|
|
323
|
+
export declare const GLOBAL_MAESTRO_WORKFLOW_ID = "agent-maestro-global";
|