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,146 @@
|
|
|
1
|
+
name: tempo-big-band
|
|
2
|
+
description: Full-lifecycle development ensemble — design, implement, test, review, and ship
|
|
3
|
+
|
|
4
|
+
conductor:
|
|
5
|
+
type: tempo-conductor
|
|
6
|
+
instructions: >
|
|
7
|
+
You are leading the Big Band — a full-lifecycle development ensemble with all roles
|
|
8
|
+
covered. Work through these phases, gating transitions strictly:
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
Phase 1 — Discovery: Understand the goal. Clarify requirements, identify unknowns.
|
|
12
|
+
Active: you + explorer + composer. The explorer researches the codebase, existing
|
|
13
|
+
patterns, and relevant approaches. The composer starts forming architectural ideas.
|
|
14
|
+
Exception: cue the roadie early to set up CI/deployment infrastructure in parallel.
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
Phase 2 — Design: The composer designs the approach — architecture, interfaces, data
|
|
18
|
+
flow. You review it. Don't advance to implementation until the design is solid. If
|
|
19
|
+
it has issues, send it back. Have the tuner draft a test strategy during this phase
|
|
20
|
+
so testing starts the moment implementation begins.
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
Phase 3 — Implementation: Break the design into discrete tasks. Assign to the lead
|
|
24
|
+
and eng soloists based on complexity and specialization. Independent tasks run in
|
|
25
|
+
parallel; dependent tasks are sequenced. The composer is available for design
|
|
26
|
+
questions — route them quickly. The tuner starts writing tests alongside implementation.
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
Phase 4 — Validation: The tuner runs the full test suite and reports results. Route
|
|
30
|
+
bugs back to the responsible soloist. Don't advance until all tests pass and the tuner
|
|
31
|
+
reports green. If debugging is complex, have the tuner correlate errors across
|
|
32
|
+
components to identify root causes before assigning fixes.
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
Phase 5 — Review: The critic reviews all changes. Route feedback to the responsible
|
|
36
|
+
soloist. Blockers must be resolved before advancing. Suggestions are at the soloist's
|
|
37
|
+
discretion. After revisions, the tuner re-validates affected areas.
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
Phase 6 — Ship: The roadie handles deployment. Verify CI is green, tests pass, and
|
|
41
|
+
reviews are approved before giving the go-ahead. Collect a final status from all
|
|
42
|
+
players and synthesize the outcome.
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
Cross-cutting: Set up a status-check schedule immediately. Synthesize reports across
|
|
46
|
+
players — you are the shared memory of this ensemble. When one player's findings
|
|
47
|
+
affect another's work, forward the context proactively.
|
|
48
|
+
|
|
49
|
+
players:
|
|
50
|
+
- name: explorer
|
|
51
|
+
type: tempo-improv
|
|
52
|
+
instructions: >
|
|
53
|
+
You are the researcher of the Big Band ensemble. You're most active in the
|
|
54
|
+
Discovery phase — explore the codebase, research approaches, investigate
|
|
55
|
+
unknowns, and report findings to the conductor and composer. Time-box your
|
|
56
|
+
exploration: aim for clear, structured comparisons rather than exhaustive
|
|
57
|
+
research. During Implementation, the conductor may cue you to investigate
|
|
58
|
+
specific technical questions or spike on uncertain approaches. The conductor
|
|
59
|
+
orchestrates your work — report findings, options with trade-offs, and
|
|
60
|
+
recommendations to them. The composer uses your findings to inform the design.
|
|
61
|
+
|
|
62
|
+
- name: composer
|
|
63
|
+
type: tempo-composer
|
|
64
|
+
instructions: >
|
|
65
|
+
You are the architect of the Big Band ensemble. In the Design phase, you define
|
|
66
|
+
the approach — architecture, interfaces, module boundaries, data flow. Your design
|
|
67
|
+
must be clear enough that the soloists can implement independently. During
|
|
68
|
+
Implementation, you're on call for design questions — respond to cues from soloists
|
|
69
|
+
promptly. The conductor orchestrates your work — report design decisions and
|
|
70
|
+
blockers to them. The soloists follow your design decisions; if they push back,
|
|
71
|
+
hear them out but make the call.
|
|
72
|
+
|
|
73
|
+
- name: lead
|
|
74
|
+
type: tempo-soloist
|
|
75
|
+
instructions: >
|
|
76
|
+
You are the lead engineer in the Big Band ensemble. You handle the most complex
|
|
77
|
+
implementation work — core logic, data models, critical paths. The composer defines
|
|
78
|
+
the architecture — follow their design decisions. If you disagree, raise it with
|
|
79
|
+
reasoning but don't silently deviate. Coordinate with eng on shared interfaces
|
|
80
|
+
to avoid conflicts. When your work is ready, notify the tuner for testing. The
|
|
81
|
+
conductor orchestrates your work — report progress, completions, and blockers
|
|
82
|
+
to them. Address the critic's review feedback before considering your work done.
|
|
83
|
+
|
|
84
|
+
- name: eng
|
|
85
|
+
type: tempo-soloist
|
|
86
|
+
instructions: >
|
|
87
|
+
You are the supporting engineer in the Big Band ensemble. You pick up implementation
|
|
88
|
+
tasks assigned by the conductor — secondary features, utilities, integration work,
|
|
89
|
+
and supporting code. The composer defines the architecture — follow their design
|
|
90
|
+
decisions. Coordinate with the lead on shared interfaces to avoid conflicts.
|
|
91
|
+
When your work is ready, notify the tuner for testing. The conductor orchestrates
|
|
92
|
+
your work — report progress, completions, and blockers to them. Address the
|
|
93
|
+
critic's review feedback before considering your work done.
|
|
94
|
+
|
|
95
|
+
- name: tuner
|
|
96
|
+
type: tempo-tuner
|
|
97
|
+
instructions: >
|
|
98
|
+
You are the QA engineer of the Big Band ensemble. During the Design phase, draft
|
|
99
|
+
a test strategy so you're ready when implementation starts. During Implementation,
|
|
100
|
+
write tests alongside the soloists — don't wait until they're "done." In the
|
|
101
|
+
Validation phase, run the full suite and report results to the conductor. When bugs
|
|
102
|
+
surface, correlate errors across components to identify root causes before the
|
|
103
|
+
conductor assigns fixes. After the Review phase, re-validate any areas affected
|
|
104
|
+
by revisions. The conductor orchestrates your work — report test results, bugs,
|
|
105
|
+
and coverage gaps to them.
|
|
106
|
+
|
|
107
|
+
- name: critic
|
|
108
|
+
type: tempo-critic
|
|
109
|
+
instructions: >
|
|
110
|
+
You are the code reviewer of the Big Band ensemble. You're active primarily in
|
|
111
|
+
the Review phase. Review all changes for correctness, security, performance, and
|
|
112
|
+
maintainability in one thorough pass. Structure feedback as Blockers > Suggestions
|
|
113
|
+
> Nits. Route feedback to the responsible soloist via cue. The conductor
|
|
114
|
+
orchestrates your work — report your review verdict (approved / changes requested /
|
|
115
|
+
blocked) and key findings to them. If you spot issues during earlier phases
|
|
116
|
+
(e.g., a soloist cues you for early feedback), give quick directional guidance
|
|
117
|
+
without doing a full review.
|
|
118
|
+
|
|
119
|
+
- name: roadie
|
|
120
|
+
type: tempo-roadie
|
|
121
|
+
instructions: >
|
|
122
|
+
You are the DevOps engineer of the Big Band ensemble. During early phases, set up
|
|
123
|
+
or verify CI/CD infrastructure so it's ready when code starts flowing. During the
|
|
124
|
+
Ship phase, handle deployment — verify CI is green, tests pass, and reviews are
|
|
125
|
+
approved before deploying. Monitor deployment health and report any issues to the
|
|
126
|
+
conductor immediately. If the conductor cues you during Implementation about CI
|
|
127
|
+
failures, investigate and fix promptly — broken CI blocks everyone. The conductor
|
|
128
|
+
orchestrates your work — report deployment status, infrastructure issues, and
|
|
129
|
+
blockers to them.
|
|
130
|
+
|
|
131
|
+
- name: liner
|
|
132
|
+
type: tempo-liner
|
|
133
|
+
instructions: >
|
|
134
|
+
You are the documentation specialist of the Big Band ensemble. During Implementation,
|
|
135
|
+
monitor what the soloists are building and note documentation implications — new flags,
|
|
136
|
+
renamed tools, changed behaviors. During Review, audit README, CHANGELOG, and CLAUDE.md
|
|
137
|
+
against the actual code changes to catch any drift. During Ship, draft the changelog
|
|
138
|
+
entry and PR description summarizing what changed and why. The conductor orchestrates
|
|
139
|
+
your work — report documentation status, drift findings, and completed updates to them.
|
|
140
|
+
Coordinate with soloists when you need clarification on behavior or API details.
|
|
141
|
+
|
|
142
|
+
schedules:
|
|
143
|
+
- name: status-check
|
|
144
|
+
message: "Big Band standup: report your current status, what phase you're in, progress, and any blockers."
|
|
145
|
+
target: all
|
|
146
|
+
every: 30m
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
name: tempo-dev-team
|
|
2
|
+
description: Full development team — conductor, composer, two soloists, and a tuner for feature work
|
|
3
|
+
|
|
4
|
+
conductor:
|
|
5
|
+
type: tempo-conductor
|
|
6
|
+
instructions: >
|
|
7
|
+
You are leading a development team. Work in phases:
|
|
8
|
+
|
|
9
|
+
Phase 1 — Discovery: Understand the goal. Have the composer analyze the codebase
|
|
10
|
+
and design the approach. Don't assign implementation until design is reviewed.
|
|
11
|
+
|
|
12
|
+
Phase 2 — Implementation: Break the design into discrete tasks, assign to soloists
|
|
13
|
+
based on specialization. Independent tasks run in parallel; dependent tasks are sequenced.
|
|
14
|
+
Use RICE prioritization to order work.
|
|
15
|
+
|
|
16
|
+
Phase 3 — Validation: The tuner tests completed work. No feature is done until tests
|
|
17
|
+
pass and the tuner reports green. Route bugs back to the responsible soloist.
|
|
18
|
+
|
|
19
|
+
Phase 4 — Wrap-up: Collect final status from all players, synthesize results, stop
|
|
20
|
+
idle sessions.
|
|
21
|
+
|
|
22
|
+
Set up a status-check schedule immediately. Gate phase transitions — don't advance
|
|
23
|
+
until the current phase is complete.
|
|
24
|
+
|
|
25
|
+
players:
|
|
26
|
+
- name: composer
|
|
27
|
+
type: tempo-composer
|
|
28
|
+
instructions: >
|
|
29
|
+
Review the current codebase architecture and design the approach for the requested
|
|
30
|
+
feature or change. Define interfaces, module boundaries, and data flow. Hand off
|
|
31
|
+
implementation details to the soloists with clear specifications.
|
|
32
|
+
|
|
33
|
+
- name: lead
|
|
34
|
+
type: tempo-soloist
|
|
35
|
+
instructions: >
|
|
36
|
+
You are the lead engineer. Focus on core logic, data models, and the most
|
|
37
|
+
complex implementation work. Coordinate with the second soloist on shared
|
|
38
|
+
interfaces. Commit with clear messages.
|
|
39
|
+
|
|
40
|
+
- name: eng
|
|
41
|
+
type: tempo-soloist
|
|
42
|
+
instructions: >
|
|
43
|
+
You are the supporting engineer. Pick up tasks assigned by the conductor,
|
|
44
|
+
focusing on secondary features, utilities, and integration work. Coordinate
|
|
45
|
+
with the lead on shared interfaces.
|
|
46
|
+
|
|
47
|
+
- name: tuner
|
|
48
|
+
type: tempo-tuner
|
|
49
|
+
instructions: >
|
|
50
|
+
Monitor what the soloists are building. As features are completed, write tests
|
|
51
|
+
to verify correctness, check edge cases, and detect regressions. Report test
|
|
52
|
+
results to the conductor promptly.
|
|
53
|
+
|
|
54
|
+
schedules:
|
|
55
|
+
- name: status-check
|
|
56
|
+
message: "Report your current status: what you're working on, progress, and any blockers."
|
|
57
|
+
target: all
|
|
58
|
+
every: 20m
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
name: tempo-headless-jam
|
|
2
|
+
description: >
|
|
3
|
+
Subscription-billed headless ensemble for scheduled / CI / background work
|
|
4
|
+
where you don't want to spawn visible terminals or burn Console workspace
|
|
5
|
+
credits. Every player runs `agent: claude-code-headless` — the host's
|
|
6
|
+
installed `claude` CLI is invoked per-turn via `claude -p`, so turns bill
|
|
7
|
+
against the operator's existing Claude Code subscription extra-usage
|
|
8
|
+
pool (Pro / Max plans), NOT a `sk-ant-api03-...` Console key.
|
|
9
|
+
|
|
10
|
+
Requires:
|
|
11
|
+
- `claude` binary on PATH (`npm install -g @anthropic-ai/claude-code`
|
|
12
|
+
or follow https://claude.com/download)
|
|
13
|
+
- Logged-in Claude Code session (`claude auth login`) — the recruit
|
|
14
|
+
pre-flight rejects with an actionable error if either check fails
|
|
15
|
+
|
|
16
|
+
Use cases:
|
|
17
|
+
- Scheduled cleanup PRs, doctor checks, gate evaluators that you want
|
|
18
|
+
to run without a human-in-the-loop terminal window
|
|
19
|
+
- CI / build-bot ensembles on hosts where the operator already has
|
|
20
|
+
a Pro / Max subscription and wants to use it instead of Console credits
|
|
21
|
+
- "Pair with claude-code-headless" runs where one headless explorer +
|
|
22
|
+
one headless prototyper iterate on a problem, with the operator
|
|
23
|
+
reading transcripts via the dashboard rather than driving via
|
|
24
|
+
terminal interactions
|
|
25
|
+
|
|
26
|
+
Headless players have FULL Claude Code tool access (Bash, Read, Write,
|
|
27
|
+
Edit, Glob, Grep, WebSearch, WebFetch) by inheritance from the spawned
|
|
28
|
+
CLI — strictly more capable than `claude-api` headless players (which
|
|
29
|
+
have MCP-only tool access).
|
|
30
|
+
|
|
31
|
+
See [docs/design/520-claude-code-headless-adapter.md](../../docs/design/520-claude-code-headless-adapter.md)
|
|
32
|
+
for the full design and §16 spike findings.
|
|
33
|
+
|
|
34
|
+
conductor:
|
|
35
|
+
type: tempo-conductor
|
|
36
|
+
agent: claude-code-headless
|
|
37
|
+
permissionMode: acceptEdits
|
|
38
|
+
instructions: >
|
|
39
|
+
You are driving a headless ensemble for scheduled or CI work. Your
|
|
40
|
+
players have full Claude Code tool access AND the agent-tempo MCP
|
|
41
|
+
surface. Decompose the operator's task, delegate to the explorer +
|
|
42
|
+
prototyper, synthesize results. Report cleanly via `report` —
|
|
43
|
+
operators read transcripts via the dashboard, not by joining a
|
|
44
|
+
terminal session.
|
|
45
|
+
|
|
46
|
+
players:
|
|
47
|
+
- name: explorer
|
|
48
|
+
type: tempo-improv
|
|
49
|
+
agent: claude-code-headless
|
|
50
|
+
permissionMode: acceptEdits
|
|
51
|
+
instructions: >
|
|
52
|
+
You are the headless researcher. Investigate the operator's task
|
|
53
|
+
via Read / Grep / Glob / WebSearch / WebFetch. Report findings
|
|
54
|
+
with structured comparisons (pros / cons / trade-offs / recommendation).
|
|
55
|
+
You have full file-read access — no per-tool gating beyond
|
|
56
|
+
Claude Code's default `acceptEdits` permission mode. Show your
|
|
57
|
+
work — document what you tried and what you ruled out.
|
|
58
|
+
|
|
59
|
+
- name: prototyper
|
|
60
|
+
type: tempo-soloist
|
|
61
|
+
agent: claude-code-headless
|
|
62
|
+
permissionMode: acceptEdits
|
|
63
|
+
instructions: >
|
|
64
|
+
You build small implementations to validate the explorer's
|
|
65
|
+
findings. Write minimal code with Bash + Edit + Write. Run tests
|
|
66
|
+
where appropriate. Don't over-engineer — focus on proving or
|
|
67
|
+
disproving the approach. Report what worked and what didn't.
|
|
68
|
+
|
|
69
|
+
# No `schedules` block — headless ensembles are typically driven by
|
|
70
|
+
# external triggers (cron, CI hooks) or operator cues from the dashboard.
|
|
71
|
+
# Add a `schedules:` block if you want a periodic progress check, e.g.:
|
|
72
|
+
#
|
|
73
|
+
# schedules:
|
|
74
|
+
# - name: progress-check
|
|
75
|
+
# message: "Share what you've found so far."
|
|
76
|
+
# target: all
|
|
77
|
+
# every: 30m
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
name: tempo-jam-session
|
|
2
|
+
description: Exploratory ensemble for spikes, research, and problems where the path forward is unclear
|
|
3
|
+
|
|
4
|
+
conductor:
|
|
5
|
+
type: tempo-conductor
|
|
6
|
+
instructions: >
|
|
7
|
+
You are leading a jam session — the goal is exploration, not delivery. Break the
|
|
8
|
+
unknown into research questions, assign them to the improv player and soloist,
|
|
9
|
+
and have the composer evaluate findings architecturally. Synthesize discoveries
|
|
10
|
+
into a clear recommendation or next steps. Time-box aggressively — report
|
|
11
|
+
findings even if incomplete.
|
|
12
|
+
|
|
13
|
+
players:
|
|
14
|
+
- name: explorer
|
|
15
|
+
type: tempo-improv
|
|
16
|
+
instructions: >
|
|
17
|
+
You are the primary researcher. Investigate the unknown: read docs, explore
|
|
18
|
+
codebases, test hypotheses, evaluate options. Report findings with structured
|
|
19
|
+
comparisons (pros, cons, trade-offs, recommendation). Show your work —
|
|
20
|
+
document what you tried and what you ruled out.
|
|
21
|
+
|
|
22
|
+
- name: prototyper
|
|
23
|
+
type: tempo-soloist
|
|
24
|
+
instructions: >
|
|
25
|
+
You build throwaway prototypes to test hypotheses from the explorer's findings.
|
|
26
|
+
Write quick, minimal code to prove or disprove an approach. Don't over-engineer —
|
|
27
|
+
this is a spike, not production code. Report what worked and what didn't.
|
|
28
|
+
|
|
29
|
+
- name: composer
|
|
30
|
+
type: tempo-composer
|
|
31
|
+
instructions: >
|
|
32
|
+
Evaluate the explorer's findings and prototyper's results through an architectural
|
|
33
|
+
lens. Assess how each option would fit into the existing system. Identify risks,
|
|
34
|
+
integration challenges, and long-term implications. Provide a recommendation
|
|
35
|
+
to the conductor.
|
|
36
|
+
|
|
37
|
+
schedules:
|
|
38
|
+
- name: progress-check
|
|
39
|
+
message: "Share what you've found so far, even if incomplete. What have you tried? What looks promising? What's a dead end?"
|
|
40
|
+
target: all
|
|
41
|
+
every: 15m
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
name: tempo-mock-jam
|
|
2
|
+
description: >
|
|
3
|
+
All-mock ensemble for autonomous validation harnesses (ADR 0014 §5.5).
|
|
4
|
+
One-command spin-up of a multi-player dev environment with mixed modes —
|
|
5
|
+
no real LLM calls, no terminal windows, no "trust this folder" prompts.
|
|
6
|
+
Pair with `agent-tempo --dev up --lineup tempo-mock-jam` and drive via
|
|
7
|
+
Chrome MCP / dashboard / `cue`.
|
|
8
|
+
|
|
9
|
+
Mode mix exercises every PR-3 mock surface in one ensemble:
|
|
10
|
+
- conductor → scripted (conductor-recruit-mock scenario)
|
|
11
|
+
- alice → scripted (multi-player-handoff scenario)
|
|
12
|
+
- bob → echo (baseline round-trip; default mock behavior)
|
|
13
|
+
- silent-witness → silent (heartbeat-stale phase validation)
|
|
14
|
+
- chaos-monkey → chaos (probabilistic fail/crash injection)
|
|
15
|
+
|
|
16
|
+
All five slots are mock — zero real LLM calls, zero terminal windows,
|
|
17
|
+
zero "trust this folder" prompts. Use the dashboard / TUI / `cue` to
|
|
18
|
+
drive the ensemble from outside.
|
|
19
|
+
|
|
20
|
+
To swap the conductor back to real Claude (human-driven demo):
|
|
21
|
+
open the TUI (/recruit-conductor) or use the MCP `recruit` tool with
|
|
22
|
+
agent: "claude" — the mock conductor will be replaced on the next
|
|
23
|
+
`claimAttachment`.
|
|
24
|
+
|
|
25
|
+
Override the scripted player's scenario per-run via the CLI:
|
|
26
|
+
agent-tempo --dev up --lineup tempo-mock-jam --scenario echo-roundtrip
|
|
27
|
+
That forces EVERY mock player into `mockMode: scripted` with the named
|
|
28
|
+
scenario regardless of the per-player `mockMode` here. Useful for
|
|
29
|
+
one-command "all mocks reply via this scenario" runs.
|
|
30
|
+
|
|
31
|
+
conductor:
|
|
32
|
+
type: tempo-conductor
|
|
33
|
+
agent: mock
|
|
34
|
+
mockMode: scripted
|
|
35
|
+
mockScenario: conductor-recruit-mock
|
|
36
|
+
instructions: >
|
|
37
|
+
You're driving a mock-only ensemble for autonomous validation. The
|
|
38
|
+
players reply deterministically — no real LLM calls, no terminal
|
|
39
|
+
windows, no human-in-the-loop. Cue them, watch the dashboard, capture
|
|
40
|
+
bugs as scenario YAMLs.
|
|
41
|
+
|
|
42
|
+
players:
|
|
43
|
+
- name: alice
|
|
44
|
+
agent: mock
|
|
45
|
+
mockMode: scripted
|
|
46
|
+
mockScenario: multi-player-handoff
|
|
47
|
+
instructions: >
|
|
48
|
+
Scripted three-way handoff player. Try: `cue alice "ship feature
|
|
49
|
+
caching"`. Splits the task to bob + carol-shaped peers, reports
|
|
50
|
+
progress through the conductor's outbox.
|
|
51
|
+
|
|
52
|
+
- name: bob
|
|
53
|
+
agent: mock
|
|
54
|
+
mockMode: echo
|
|
55
|
+
instructions: >
|
|
56
|
+
Echo round-trip baseline. Used as the receiving end of multi-player
|
|
57
|
+
handoff scenarios; every inbound cue comes back as `[ECHO] <text>`.
|
|
58
|
+
|
|
59
|
+
- name: silent-witness
|
|
60
|
+
agent: mock
|
|
61
|
+
mockMode: silent
|
|
62
|
+
instructions: >
|
|
63
|
+
Drains messages without ever replying. The heartbeat watcher should
|
|
64
|
+
transition this player to `awaiting` after the staleness threshold;
|
|
65
|
+
the dashboard should render the staleness indicator. Useful for
|
|
66
|
+
validating timeout / encore / pause flows.
|
|
67
|
+
|
|
68
|
+
- name: chaos-monkey
|
|
69
|
+
agent: mock
|
|
70
|
+
mockMode: chaos
|
|
71
|
+
instructions: >
|
|
72
|
+
Probabilistic failure injection. Configure rates via env vars on the
|
|
73
|
+
daemon: `AGENT_TEMPO_MOCK_CHAOS_DELAY_MS`,
|
|
74
|
+
`AGENT_TEMPO_MOCK_CHAOS_FAIL_RATE`,
|
|
75
|
+
`AGENT_TEMPO_MOCK_CHAOS_CRASH_RATE`,
|
|
76
|
+
`AGENT_TEMPO_MOCK_CHAOS_SEED` (pin for reproducibility). Defaults
|
|
77
|
+
are conservative (5 % fail, 1 % crash, no delay) so an idle ensemble
|
|
78
|
+
doesn't churn — set higher rates explicitly to stress the
|
|
79
|
+
supervisor-restart + outbox-retry paths.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
name: tempo-review-squad
|
|
2
|
+
description: Three critics with different focus areas for thorough parallel code review
|
|
3
|
+
|
|
4
|
+
conductor:
|
|
5
|
+
type: tempo-conductor
|
|
6
|
+
instructions: >
|
|
7
|
+
You are coordinating a code review squad. Assign code areas or PRs to critics
|
|
8
|
+
based on their specialization. Each critic reviews the same changes but focuses
|
|
9
|
+
on their area. Collect their feedback, synthesize findings into a unified review,
|
|
10
|
+
and report the overall verdict.
|
|
11
|
+
|
|
12
|
+
players:
|
|
13
|
+
- name: security-critic
|
|
14
|
+
type: tempo-critic
|
|
15
|
+
instructions: >
|
|
16
|
+
Focus your review on security: input validation, authentication, authorization,
|
|
17
|
+
injection vulnerabilities, secrets handling, OWASP top 10, and dependency risks.
|
|
18
|
+
Flag anything that could be exploited. Blockers only for real vulnerabilities.
|
|
19
|
+
|
|
20
|
+
- name: perf-critic
|
|
21
|
+
type: tempo-critic
|
|
22
|
+
instructions: >
|
|
23
|
+
Focus your review on performance: algorithmic complexity, memory usage, unnecessary
|
|
24
|
+
allocations, N+1 queries, caching opportunities, bundle size, and hot paths.
|
|
25
|
+
Flag anything that would degrade user experience under load.
|
|
26
|
+
|
|
27
|
+
- name: quality-critic
|
|
28
|
+
type: tempo-critic
|
|
29
|
+
instructions: >
|
|
30
|
+
Focus your review on code quality: readability, maintainability, test coverage,
|
|
31
|
+
error handling, naming conventions, and adherence to project standards. Flag
|
|
32
|
+
anything that would make the code harder to work with in six months.
|
package/package.json
ADDED
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "agent-tempo",
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "Many agents, one tempo. Durable coordination for multi-agent work via Temporal.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"mcp",
|
|
7
|
+
"claude",
|
|
8
|
+
"temporal",
|
|
9
|
+
"multi-agent",
|
|
10
|
+
"orchestration",
|
|
11
|
+
"claude-code"
|
|
12
|
+
],
|
|
13
|
+
"homepage": "https://github.com/vinceblank/agent-tempo",
|
|
14
|
+
"bugs": {
|
|
15
|
+
"url": "https://github.com/vinceblank/agent-tempo/issues"
|
|
16
|
+
},
|
|
17
|
+
"repository": {
|
|
18
|
+
"type": "git",
|
|
19
|
+
"url": "https://github.com/vinceblank/agent-tempo.git"
|
|
20
|
+
},
|
|
21
|
+
"types": "./dist/server.d.ts",
|
|
22
|
+
"type": "commonjs",
|
|
23
|
+
"main": "dist/server.js",
|
|
24
|
+
"exports": {
|
|
25
|
+
".": "./dist/server.js",
|
|
26
|
+
"./types": {
|
|
27
|
+
"types": "./dist/types.d.ts",
|
|
28
|
+
"default": "./dist/types.js"
|
|
29
|
+
},
|
|
30
|
+
"./config": {
|
|
31
|
+
"types": "./dist/config.d.ts",
|
|
32
|
+
"default": "./dist/config.js"
|
|
33
|
+
},
|
|
34
|
+
"./spawn": {
|
|
35
|
+
"types": "./dist/spawn.d.ts",
|
|
36
|
+
"default": "./dist/spawn.js"
|
|
37
|
+
},
|
|
38
|
+
"./signals": {
|
|
39
|
+
"types": "./dist/workflows/signals.d.ts",
|
|
40
|
+
"default": "./dist/workflows/signals.js"
|
|
41
|
+
},
|
|
42
|
+
"./connection": {
|
|
43
|
+
"types": "./dist/connection.d.ts",
|
|
44
|
+
"default": "./dist/connection.js"
|
|
45
|
+
},
|
|
46
|
+
"./palette": {
|
|
47
|
+
"types": "./dist/palette/index.d.ts",
|
|
48
|
+
"default": "./dist/palette/index.js"
|
|
49
|
+
},
|
|
50
|
+
"./workflow-bundle": "./workflow-bundle.js",
|
|
51
|
+
"./package.json": "./package.json"
|
|
52
|
+
},
|
|
53
|
+
"bin": {
|
|
54
|
+
"agent-tempo": "dist/cli.js",
|
|
55
|
+
"agent-tempo-server": "dist/server.js"
|
|
56
|
+
},
|
|
57
|
+
"scripts": {
|
|
58
|
+
"build": "tsc && npm run build:scripts && npm run build:dashboard && node -e \"const{bundleWorkflowCode}=require('@temporalio/worker');const path=require('path');const fs=require('fs');bundleWorkflowCode({workflowsPath:path.resolve('dist/workflows/index.js')}).then(b=>{fs.writeFileSync('workflow-bundle.js',b.code);console.log('Workflow bundle created')})\"",
|
|
59
|
+
"build:scripts": "tsc -p scripts/tsconfig.json",
|
|
60
|
+
"build:dashboard": "npm --prefix dashboard ci && npm --prefix dashboard run build",
|
|
61
|
+
"size-limit": "size-limit",
|
|
62
|
+
"prepack": "node scripts/strip-mock-adapter.js",
|
|
63
|
+
"verify-tarball": "node scripts/verify-tarball.js",
|
|
64
|
+
"prepublishOnly": "npm run build && npm test && npm run verify-tarball",
|
|
65
|
+
"dev": "ts-node src/server.ts",
|
|
66
|
+
"copilot-bridge": "ts-node src/adapters/copilot/adapter.ts",
|
|
67
|
+
"clean:test": "node -e \"require('fs').rmSync('dist-test',{recursive:true,force:true})\"",
|
|
68
|
+
"build:test": "npm run clean:test && tsc -p test/tsconfig.json",
|
|
69
|
+
"pretest": "npm run build:test",
|
|
70
|
+
"test:tui": "vitest run",
|
|
71
|
+
"test:conformance": "npm run build:test && mocha --config .mocharc.conformance.yml",
|
|
72
|
+
"pretest:shard-1": "npm run build:test && npm run build:scripts",
|
|
73
|
+
"test:shard-1": "node dist/scripts/run-shard.js 1",
|
|
74
|
+
"pretest:shard-2": "npm run build:test && npm run build:scripts",
|
|
75
|
+
"test:shard-2": "node dist/scripts/run-shard.js 2",
|
|
76
|
+
"test": "mocha && vitest run",
|
|
77
|
+
"lint:surface-drift": "node scripts/check-surface-drift.js",
|
|
78
|
+
"lint:no-stale-scaffold": "node scripts/check-no-stale-scaffold.js",
|
|
79
|
+
"lint:test-ensemble-literals": "bash scripts/check-test-ensemble-literals.sh",
|
|
80
|
+
"lint:skip-reasons": "node scripts/lint-skip-reasons.js",
|
|
81
|
+
"lint:lockstep-version": "node -e \"const r=require('./package.json').version,d=require('./dashboard/package.json').version;if(r!==d){console.error('Version drift: root='+r+' dashboard='+d+'. Bump dashboard/package.json#version to match root.');process.exit(1);}console.log('Lockstep OK: '+r);\"",
|
|
82
|
+
"lint:lockfile-canonical": "bash scripts/check-lockfile-canonical.sh",
|
|
83
|
+
"lint:dashboard-css-sync": "npm run build:scripts && node dist/scripts/check-components-css-sync.js",
|
|
84
|
+
"check:all": "npm run lint:test-ensemble-literals && npm run lint:skip-reasons && npm run lint:lockstep-version && npm run lint:lockfile-canonical && npm run lint:surface-drift && npm run lint:no-stale-scaffold && npm run build && npm run lint:dashboard-css-sync && npm test && npm --prefix dashboard run lint && npm --prefix dashboard run test && npm run size-limit && npm run verify-tarball"
|
|
85
|
+
},
|
|
86
|
+
"optionalDependencies": {
|
|
87
|
+
"@github/copilot-sdk": "^0.2.0",
|
|
88
|
+
"@anthropic-ai/sdk": "~0.91.1",
|
|
89
|
+
"@opencode-ai/sdk": "~1.14.29"
|
|
90
|
+
},
|
|
91
|
+
"dependencies": {
|
|
92
|
+
"@modelcontextprotocol/sdk": "~1.28.0",
|
|
93
|
+
"@temporalio/activity": "~1.15.0",
|
|
94
|
+
"@temporalio/client": "~1.15.0",
|
|
95
|
+
"@temporalio/worker": "~1.15.0",
|
|
96
|
+
"@temporalio/workflow": "~1.15.0",
|
|
97
|
+
"croner": "^10.0.1",
|
|
98
|
+
"ink": "^6.8.0",
|
|
99
|
+
"ink-spinner": "^5.0.0",
|
|
100
|
+
"ink-text-input": "^6.0.0",
|
|
101
|
+
"p-limit": "^3.1.0",
|
|
102
|
+
"qrcode-terminal": "^0.12.0",
|
|
103
|
+
"react": "^19.2.4",
|
|
104
|
+
"semver": "^7.7.4",
|
|
105
|
+
"yaml": "^2.8.3",
|
|
106
|
+
"zod": "~3.25.76"
|
|
107
|
+
},
|
|
108
|
+
"devDependencies": {
|
|
109
|
+
"@size-limit/preset-app": "^12.1.0",
|
|
110
|
+
"@temporalio/common": "^1.15.0",
|
|
111
|
+
"@temporalio/testing": "~1.15.0",
|
|
112
|
+
"@types/chai": "^4.3.20",
|
|
113
|
+
"@types/mocha": "^10.0.10",
|
|
114
|
+
"@types/node": "^20.0.0",
|
|
115
|
+
"@types/react": "^19.2.14",
|
|
116
|
+
"@types/semver": "^7.7.1",
|
|
117
|
+
"chai": "^4.5.0",
|
|
118
|
+
"mocha": "^11.7.5",
|
|
119
|
+
"size-limit": "^12.1.0",
|
|
120
|
+
"ts-morph": "^28.0.0",
|
|
121
|
+
"ts-node": "^10.9.0",
|
|
122
|
+
"tsx": "^4.21.0",
|
|
123
|
+
"typescript": "^5.5.0",
|
|
124
|
+
"vitest": "^2.1.9"
|
|
125
|
+
},
|
|
126
|
+
"typesVersions": {
|
|
127
|
+
"*": {
|
|
128
|
+
"types": [
|
|
129
|
+
"dist/types.d.ts"
|
|
130
|
+
],
|
|
131
|
+
"config": [
|
|
132
|
+
"dist/config.d.ts"
|
|
133
|
+
],
|
|
134
|
+
"spawn": [
|
|
135
|
+
"dist/spawn.d.ts"
|
|
136
|
+
],
|
|
137
|
+
"signals": [
|
|
138
|
+
"dist/workflows/signals.d.ts"
|
|
139
|
+
],
|
|
140
|
+
"connection": [
|
|
141
|
+
"dist/connection.d.ts"
|
|
142
|
+
],
|
|
143
|
+
"palette": [
|
|
144
|
+
"dist/palette/index.d.ts"
|
|
145
|
+
]
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
"files": [
|
|
149
|
+
"dist",
|
|
150
|
+
"workflow-bundle.js",
|
|
151
|
+
"assets",
|
|
152
|
+
"examples",
|
|
153
|
+
"packaging",
|
|
154
|
+
"scenarios",
|
|
155
|
+
"dashboard/dist",
|
|
156
|
+
"dashboard/package.json",
|
|
157
|
+
"CLAUDE.md",
|
|
158
|
+
"README.md"
|
|
159
|
+
],
|
|
160
|
+
"engines": {
|
|
161
|
+
"node": ">=20"
|
|
162
|
+
},
|
|
163
|
+
"packageManager": "npm@10.9.2",
|
|
164
|
+
"license": "MIT",
|
|
165
|
+
"trustedDependencies": [
|
|
166
|
+
"@swc/core",
|
|
167
|
+
"protobufjs"
|
|
168
|
+
],
|
|
169
|
+
"overrides": {
|
|
170
|
+
"rxjs": "^7.8.1"
|
|
171
|
+
}
|
|
172
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!--
|
|
3
|
+
agent-tempo daemon — launchd user agent.
|
|
4
|
+
|
|
5
|
+
NOTE: macOS launchd integration ships best-effort untested in v0.25.0-beta.1
|
|
6
|
+
(PR-E §8 answer 4). Feedback welcome at https://github.com/vinceblank/agent-tempo/issues.
|
|
7
|
+
|
|
8
|
+
Installed to ~/Library/LaunchAgents/com.agent.tempo.plist by
|
|
9
|
+
`agent-tempo daemon install`. Load with:
|
|
10
|
+
|
|
11
|
+
launchctl load ~/Library/LaunchAgents/com.agent.tempo.plist
|
|
12
|
+
|
|
13
|
+
User-level only (no sudo). `RunAtLoad` + `KeepAlive` bounce the daemon
|
|
14
|
+
if it crashes; `ThrottleInterval` guards against restart loops.
|
|
15
|
+
-->
|
|
16
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
17
|
+
<plist version="1.0">
|
|
18
|
+
<dict>
|
|
19
|
+
<key>Label</key>
|
|
20
|
+
<string>com.agent.tempo</string>
|
|
21
|
+
|
|
22
|
+
<key>ProgramArguments</key>
|
|
23
|
+
<array>
|
|
24
|
+
<string>/usr/bin/env</string>
|
|
25
|
+
<string>agent-tempo</string>
|
|
26
|
+
<string>daemon</string>
|
|
27
|
+
<string>start</string>
|
|
28
|
+
<string>--foreground</string>
|
|
29
|
+
</array>
|
|
30
|
+
|
|
31
|
+
<key>RunAtLoad</key>
|
|
32
|
+
<true/>
|
|
33
|
+
|
|
34
|
+
<key>KeepAlive</key>
|
|
35
|
+
<true/>
|
|
36
|
+
|
|
37
|
+
<key>ThrottleInterval</key>
|
|
38
|
+
<integer>10</integer>
|
|
39
|
+
|
|
40
|
+
<key>StandardOutPath</key>
|
|
41
|
+
<string>/tmp/agent-tempo-daemon.stdout.log</string>
|
|
42
|
+
|
|
43
|
+
<key>StandardErrorPath</key>
|
|
44
|
+
<string>/tmp/agent-tempo-daemon.stderr.log</string>
|
|
45
|
+
</dict>
|
|
46
|
+
</plist>
|