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,8 @@
|
|
|
1
|
+
/** Interactive config setup: `agent-tempo config` */
|
|
2
|
+
export declare function configInteractive(): Promise<void>;
|
|
3
|
+
/** Non-interactive: `agent-tempo config set <key> <value>` */
|
|
4
|
+
export declare function configSet(key: string, value: string): void;
|
|
5
|
+
/** Show current config: `agent-tempo config show` */
|
|
6
|
+
export declare function configShow(): void;
|
|
7
|
+
/** Route `agent-tempo config [subcommand] [args...]` */
|
|
8
|
+
export declare function configCommand(positional: string[]): Promise<void>;
|
|
@@ -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.configInteractive = configInteractive;
|
|
37
|
+
exports.configSet = configSet;
|
|
38
|
+
exports.configShow = configShow;
|
|
39
|
+
exports.configCommand = configCommand;
|
|
40
|
+
const readline = __importStar(require("readline"));
|
|
41
|
+
const config_1 = require("../config");
|
|
42
|
+
const config_2 = require("../config");
|
|
43
|
+
const out = __importStar(require("./output"));
|
|
44
|
+
// NOTE: `createTemporalConnection` is dynamic-imported inside `configInteractive`'s
|
|
45
|
+
// connection-test step (issue #157 PR C). Top-level static import would pull in
|
|
46
|
+
// `@temporalio/client`, defeating the crash-proof property of `config show` /
|
|
47
|
+
// `config set` — both of which are pure fs operations and must remain operable
|
|
48
|
+
// under a broken Temporal SDK install.
|
|
49
|
+
const SECRET_KEYS = new Set(['temporalApiKey']);
|
|
50
|
+
/** Read a line from stdin with a prompt and optional default value. */
|
|
51
|
+
function ask(prompt, defaultVal, mask = false) {
|
|
52
|
+
return new Promise((resolve) => {
|
|
53
|
+
const rl = readline.createInterface({
|
|
54
|
+
input: process.stdin,
|
|
55
|
+
output: process.stdout,
|
|
56
|
+
});
|
|
57
|
+
const display = defaultVal ? `${prompt} (${defaultVal}): ` : `${prompt}: `;
|
|
58
|
+
if (mask) {
|
|
59
|
+
// For secret input: write prompt manually, mute output
|
|
60
|
+
process.stdout.write(`? ${display}`);
|
|
61
|
+
const stdin = process.stdin;
|
|
62
|
+
const wasRaw = stdin.isRaw;
|
|
63
|
+
if (stdin.setRawMode)
|
|
64
|
+
stdin.setRawMode(true);
|
|
65
|
+
let input = '';
|
|
66
|
+
const onData = (ch) => {
|
|
67
|
+
const c = ch.toString();
|
|
68
|
+
if (c === '\n' || c === '\r') {
|
|
69
|
+
if (stdin.setRawMode)
|
|
70
|
+
stdin.setRawMode(wasRaw ?? false);
|
|
71
|
+
stdin.removeListener('data', onData);
|
|
72
|
+
process.stdout.write('\n');
|
|
73
|
+
rl.close();
|
|
74
|
+
resolve(input || defaultVal || '');
|
|
75
|
+
}
|
|
76
|
+
else if (c === '\u0003') {
|
|
77
|
+
// Ctrl+C
|
|
78
|
+
rl.close();
|
|
79
|
+
process.exit(0);
|
|
80
|
+
}
|
|
81
|
+
else if (c === '\u007f' || c === '\b') {
|
|
82
|
+
// Backspace
|
|
83
|
+
if (input.length > 0) {
|
|
84
|
+
input = input.slice(0, -1);
|
|
85
|
+
process.stdout.write('\b \b');
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
input += c;
|
|
90
|
+
process.stdout.write('*');
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
stdin.on('data', onData);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
rl.question(`? ${display}`, (answer) => {
|
|
97
|
+
rl.close();
|
|
98
|
+
resolve(answer.trim() || defaultVal || '');
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
/** Ask user to choose from a list of options. Returns the selected option. */
|
|
104
|
+
async function choose(prompt, options) {
|
|
105
|
+
console.log(`? ${prompt}:`);
|
|
106
|
+
for (let i = 0; i < options.length; i++) {
|
|
107
|
+
console.log(` ${i + 1}. ${options[i]}`);
|
|
108
|
+
}
|
|
109
|
+
const answer = await ask('Choice', '1');
|
|
110
|
+
const idx = parseInt(answer, 10) - 1;
|
|
111
|
+
if (idx >= 0 && idx < options.length)
|
|
112
|
+
return options[idx];
|
|
113
|
+
return options[0];
|
|
114
|
+
}
|
|
115
|
+
/** Interactive config setup: `agent-tempo config` */
|
|
116
|
+
async function configInteractive() {
|
|
117
|
+
out.heading('agent-tempo config');
|
|
118
|
+
const existing = (0, config_1.loadConfigFile)();
|
|
119
|
+
const address = await ask('Temporal address', existing.temporalAddress || 'localhost:7233');
|
|
120
|
+
const namespace = await ask('Temporal namespace', existing.temporalNamespace || 'default');
|
|
121
|
+
const authMethod = await choose('Auth method', ['None', 'API key', 'mTLS']);
|
|
122
|
+
const config = {
|
|
123
|
+
temporalAddress: address,
|
|
124
|
+
temporalNamespace: namespace,
|
|
125
|
+
};
|
|
126
|
+
if (authMethod === 'API key') {
|
|
127
|
+
config.temporalApiKey = await ask('API key', existing.temporalApiKey, true);
|
|
128
|
+
}
|
|
129
|
+
else if (authMethod === 'mTLS') {
|
|
130
|
+
config.temporalTlsCertPath = await ask('TLS cert path', existing.temporalTlsCertPath);
|
|
131
|
+
config.temporalTlsKeyPath = await ask('TLS key path', existing.temporalTlsKeyPath);
|
|
132
|
+
}
|
|
133
|
+
// Default agent type
|
|
134
|
+
const agentChoice = await choose('Default agent', ['claude', 'copilot']);
|
|
135
|
+
if (agentChoice === 'copilot') {
|
|
136
|
+
config.defaultAgent = 'copilot';
|
|
137
|
+
}
|
|
138
|
+
// Don't set defaultAgent if claude — it's the default, keeps config clean
|
|
139
|
+
(0, config_1.saveConfigFile)(config);
|
|
140
|
+
out.success(`Saved to ${config_1.CONFIG_FILE_PATH}`);
|
|
141
|
+
// Test connection
|
|
142
|
+
try {
|
|
143
|
+
const resolved = (0, config_2.getConfig)({
|
|
144
|
+
temporalAddress: config.temporalAddress,
|
|
145
|
+
temporalNamespace: config.temporalNamespace,
|
|
146
|
+
temporalApiKey: config.temporalApiKey,
|
|
147
|
+
temporalTlsCertPath: config.temporalTlsCertPath,
|
|
148
|
+
temporalTlsKeyPath: config.temporalTlsKeyPath,
|
|
149
|
+
});
|
|
150
|
+
// Dynamic import keeps `config show` / `config set` crash-proof under
|
|
151
|
+
// a broken Temporal SDK install (#157 PR C). Interactive setup's
|
|
152
|
+
// connection test is the only path that actually needs the SDK.
|
|
153
|
+
const { createTemporalConnection } = await Promise.resolve().then(() => __importStar(require('../connection')));
|
|
154
|
+
const conn = await Promise.race([
|
|
155
|
+
createTemporalConnection(resolved),
|
|
156
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error('timeout')), 5000)),
|
|
157
|
+
]);
|
|
158
|
+
await conn.close();
|
|
159
|
+
out.success('Connected successfully');
|
|
160
|
+
}
|
|
161
|
+
catch (err) {
|
|
162
|
+
out.warn(`Could not connect: ${err?.message || err}`);
|
|
163
|
+
out.log(` Config was saved — you can fix the connection and re-run ${out.dim('agent-tempo config')}`);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/** Non-interactive: `agent-tempo config set <key> <value>` */
|
|
167
|
+
function configSet(key, value) {
|
|
168
|
+
const config = (0, config_1.loadConfigFile)();
|
|
169
|
+
const keyMap = {
|
|
170
|
+
temporalAddress: 'temporalAddress',
|
|
171
|
+
'temporal-address': 'temporalAddress',
|
|
172
|
+
temporalNamespace: 'temporalNamespace',
|
|
173
|
+
'temporal-namespace': 'temporalNamespace',
|
|
174
|
+
temporalApiKey: 'temporalApiKey',
|
|
175
|
+
'temporal-api-key': 'temporalApiKey',
|
|
176
|
+
temporalTlsCertPath: 'temporalTlsCertPath',
|
|
177
|
+
'temporal-tls-cert': 'temporalTlsCertPath',
|
|
178
|
+
'temporal-tls-cert-path': 'temporalTlsCertPath',
|
|
179
|
+
temporalTlsKeyPath: 'temporalTlsKeyPath',
|
|
180
|
+
'temporal-tls-key': 'temporalTlsKeyPath',
|
|
181
|
+
'temporal-tls-key-path': 'temporalTlsKeyPath',
|
|
182
|
+
defaultAgent: 'defaultAgent',
|
|
183
|
+
'default-agent': 'defaultAgent',
|
|
184
|
+
claudeBin: 'claudeBin',
|
|
185
|
+
'claude-bin': 'claudeBin',
|
|
186
|
+
};
|
|
187
|
+
const configKey = keyMap[key];
|
|
188
|
+
if (!configKey) {
|
|
189
|
+
out.error(`Unknown config key: "${key}"`);
|
|
190
|
+
out.log(` Valid keys: ${Object.keys(keyMap).join(', ')}`);
|
|
191
|
+
process.exit(1);
|
|
192
|
+
}
|
|
193
|
+
// Validate agent type
|
|
194
|
+
if (configKey === 'defaultAgent' && value !== 'claude' && value !== 'copilot') {
|
|
195
|
+
out.error(`Invalid agent type: "${value}". Must be "claude" or "copilot".`);
|
|
196
|
+
process.exit(1);
|
|
197
|
+
}
|
|
198
|
+
config[configKey] = value;
|
|
199
|
+
(0, config_1.saveConfigFile)(config);
|
|
200
|
+
out.success(`Set ${configKey} = ${configKey.includes('Key') ? '****' : value}`);
|
|
201
|
+
}
|
|
202
|
+
/** Show current config: `agent-tempo config show` */
|
|
203
|
+
function configShow() {
|
|
204
|
+
out.heading('agent-tempo config');
|
|
205
|
+
const { config, sources } = (0, config_1.getConfigWithSources)();
|
|
206
|
+
const keys = [
|
|
207
|
+
{ key: 'temporalAddress', configKey: 'temporalAddress' },
|
|
208
|
+
{ key: 'temporalNamespace', configKey: 'temporalNamespace' },
|
|
209
|
+
{ key: 'temporalApiKey', configKey: 'temporalApiKey' },
|
|
210
|
+
{ key: 'temporalTlsCertPath', configKey: 'temporalTlsCertPath' },
|
|
211
|
+
{ key: 'temporalTlsKeyPath', configKey: 'temporalTlsKeyPath' },
|
|
212
|
+
{ key: 'defaultAgent', configKey: 'defaultAgent' },
|
|
213
|
+
{ key: 'claudeBin', configKey: 'claudeBin' },
|
|
214
|
+
];
|
|
215
|
+
out.log(` Config file: ${out.dim(config_1.CONFIG_FILE_PATH)}`);
|
|
216
|
+
console.log();
|
|
217
|
+
out.log(` ${'Key'.padEnd(22)} ${'Value'.padEnd(30)} ${out.dim('Source')}`);
|
|
218
|
+
out.log(` ${'─'.repeat(22)} ${'─'.repeat(30)} ${'─'.repeat(15)}`);
|
|
219
|
+
for (const { key, configKey } of keys) {
|
|
220
|
+
const value = config[configKey];
|
|
221
|
+
const source = sources[configKey];
|
|
222
|
+
const isSecret = SECRET_KEYS.has(key);
|
|
223
|
+
const display = !value ? '(not set)' : isSecret ? '****' : value;
|
|
224
|
+
out.log(` ${key.padEnd(22)} ${display.padEnd(30)} ${out.dim(source)}`);
|
|
225
|
+
}
|
|
226
|
+
console.log();
|
|
227
|
+
}
|
|
228
|
+
/** Route `agent-tempo config [subcommand] [args...]` */
|
|
229
|
+
async function configCommand(positional) {
|
|
230
|
+
const sub = positional[1]; // positional[0] is "config"
|
|
231
|
+
if (!sub) {
|
|
232
|
+
// Interactive setup
|
|
233
|
+
await configInteractive();
|
|
234
|
+
}
|
|
235
|
+
else if (sub === 'set') {
|
|
236
|
+
const key = positional[2];
|
|
237
|
+
const value = positional[3];
|
|
238
|
+
if (!key || !value) {
|
|
239
|
+
out.error('Usage: agent-tempo config set <key> <value>');
|
|
240
|
+
process.exit(1);
|
|
241
|
+
}
|
|
242
|
+
configSet(key, value);
|
|
243
|
+
}
|
|
244
|
+
else if (sub === 'show') {
|
|
245
|
+
configShow();
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
out.error(`Unknown config subcommand: "${sub}"`);
|
|
249
|
+
out.log(` Usage: ${out.dim('agent-tempo config')} Interactive setup`);
|
|
250
|
+
out.log(` ${out.dim('agent-tempo config show')} Show current config`);
|
|
251
|
+
out.log(` ${out.dim('agent-tempo config set <k> <v>')} Set a config value`);
|
|
252
|
+
process.exit(1);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { CliOverrides } from '../config';
|
|
2
|
+
import { type DaemonProcessInfo, type DaemonStatus } from './daemon';
|
|
3
|
+
/**
|
|
4
|
+
* Discriminated union describing the outcome of the `daemon start` pre-flight
|
|
5
|
+
* check. Exported for direct unit testing of the decision logic — the handler
|
|
6
|
+
* just maps these actions to console output + `process.exit` / spawn.
|
|
7
|
+
*
|
|
8
|
+
* already-running — pid file is valid, no-op (not an error)
|
|
9
|
+
* abort — orphan daemons detected and `force` is false; caller
|
|
10
|
+
* should print the list + exit 1
|
|
11
|
+
* spawn — safe to proceed with `startDaemon`; caller should
|
|
12
|
+
* delete a stale pid file first when `cleanupStalePid`
|
|
13
|
+
* is true (only set on the `force` path)
|
|
14
|
+
*
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
17
|
+
export type StartPreflight = {
|
|
18
|
+
action: 'already-running';
|
|
19
|
+
pid: number;
|
|
20
|
+
} | {
|
|
21
|
+
action: 'abort';
|
|
22
|
+
orphans: DaemonProcessInfo[];
|
|
23
|
+
} | {
|
|
24
|
+
action: 'spawn';
|
|
25
|
+
cleanupStalePid: boolean;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Pure decision function for `daemon start`. Given a scanner result and the
|
|
29
|
+
* current daemon status, computes whether to no-op, abort with orphans, or
|
|
30
|
+
* spawn. `force` bypasses the orphan check and signals that a stale pid file
|
|
31
|
+
* (if any) should be cleared before the spawn.
|
|
32
|
+
*
|
|
33
|
+
* `otherProfilePid` is the live PID (if any) of the opposite profile's
|
|
34
|
+
* daemon (dev's prod sibling, or prod's dev sibling). Including it in the
|
|
35
|
+
* known-PID set keeps cross-profile coexistence working (ADR 0014 §5.6) —
|
|
36
|
+
* starting the dev daemon must not flag the prod daemon as an orphan, and
|
|
37
|
+
* vice versa.
|
|
38
|
+
*
|
|
39
|
+
* @internal — exported for unit tests in test/daemon-start-orphan-check.test.ts.
|
|
40
|
+
*/
|
|
41
|
+
export declare function evaluateStartPreflight(scanned: DaemonProcessInfo[], status: DaemonStatus, force: boolean, otherProfilePid?: number): StartPreflight;
|
|
42
|
+
export interface DaemonOpts extends CliOverrides {
|
|
43
|
+
subcommand?: string;
|
|
44
|
+
/**
|
|
45
|
+
* Only meaningful for the `start` subcommand. Skips the orphan-process
|
|
46
|
+
* pre-flight check and spawns a daemon even if scanner-matched processes
|
|
47
|
+
* are found. Also cleans up a stale pid file if present. Use only when
|
|
48
|
+
* you've verified no conflicting agent-tempo daemons exist — or in CI
|
|
49
|
+
* scripts where idempotent-start is required (see `daemon status` first).
|
|
50
|
+
*/
|
|
51
|
+
force?: boolean;
|
|
52
|
+
}
|
|
53
|
+
export declare function daemon(opts: DaemonOpts): Promise<void>;
|
|
54
|
+
/** Pretty-print a byte count as MB (rounded). Pure helper, exported for tests. */
|
|
55
|
+
export declare function formatBytesAsMb(n: unknown): string;
|
|
56
|
+
/** Pretty-print a millisecond uptime as `Xh Ym Zs`. Pure helper, exported for tests. */
|
|
57
|
+
export declare function formatUptime(ms: unknown): string;
|