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,217 @@
|
|
|
1
|
+
import { Config } from '../config';
|
|
2
|
+
export declare const DAEMON_PID_PATH: string;
|
|
3
|
+
export declare const DAEMON_LOG_PATH: string;
|
|
4
|
+
/**
|
|
5
|
+
* Path to the daemon heartbeat file. The running daemon touches this file
|
|
6
|
+
* on a {@link HEARTBEAT_INTERVAL_MS} cadence so `daemon status` can
|
|
7
|
+
* distinguish "pid is alive AND main loop is serving" from "pid is alive
|
|
8
|
+
* but something hung" (#157 diagnostic improvement).
|
|
9
|
+
*/
|
|
10
|
+
export declare const DAEMON_HEARTBEAT_PATH: string;
|
|
11
|
+
/** How often the daemon touches {@link DAEMON_HEARTBEAT_PATH}. */
|
|
12
|
+
export declare const HEARTBEAT_INTERVAL_MS = 60000;
|
|
13
|
+
/**
|
|
14
|
+
* Multiplier applied to {@link HEARTBEAT_INTERVAL_MS} to decide whether a
|
|
15
|
+
* heartbeat is stale. A 2x buffer tolerates one missed tick (brief GC pause,
|
|
16
|
+
* synchronous activity) without false-flagging a healthy daemon.
|
|
17
|
+
*/
|
|
18
|
+
export declare const HEARTBEAT_STALE_MULTIPLIER = 2;
|
|
19
|
+
export interface DaemonStatus {
|
|
20
|
+
running: boolean;
|
|
21
|
+
pid?: number;
|
|
22
|
+
/**
|
|
23
|
+
* Milliseconds since the daemon last touched {@link DAEMON_HEARTBEAT_PATH}.
|
|
24
|
+
* `null` when no heartbeat file exists (fresh daemon hasn't ticked yet, or
|
|
25
|
+
* pre-heartbeat daemon). `undefined` when the daemon is not running at all.
|
|
26
|
+
* See {@link HEARTBEAT_STALE_MULTIPLIER} for the staleness threshold.
|
|
27
|
+
*/
|
|
28
|
+
heartbeatAge?: number | null;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Check if the daemon is running by reading the PID file and probing the process.
|
|
32
|
+
* Cleans up stale PID files automatically.
|
|
33
|
+
*/
|
|
34
|
+
export declare function isDaemonRunning(): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Get daemon status: running state and PID (if available).
|
|
37
|
+
*/
|
|
38
|
+
export declare function getDaemonStatus(): DaemonStatus;
|
|
39
|
+
/**
|
|
40
|
+
* @internal — exported for unit testing {@link DAEMON_CMDLINE_RE} edge cases
|
|
41
|
+
* without needing to spin up a real child process. Filters a scanner result
|
|
42
|
+
* to the "orphan" subset: matching processes that aren't tracked by any
|
|
43
|
+
* known PID file. Used by `daemon start`'s pre-flight check (#157 PR B).
|
|
44
|
+
*
|
|
45
|
+
* Accepts a single tracked PID (existing call shape) OR an array of known
|
|
46
|
+
* PIDs (ADR 0014 §5.6 — the dev profile passes the prod profile's PID
|
|
47
|
+
* here too so dev + prod daemons can coexist on the same machine without
|
|
48
|
+
* either misclassifying the other as an orphan).
|
|
49
|
+
*/
|
|
50
|
+
export declare function selectOrphans(scanned: DaemonProcessInfo[], trackedPid: number | undefined | ReadonlyArray<number | undefined>): DaemonProcessInfo[];
|
|
51
|
+
/**
|
|
52
|
+
* Resolve the OPPOSITE profile's home directory. Used by cross-profile
|
|
53
|
+
* coexistence checks (ADR 0014 §5.6). Returns the prod home in dev mode
|
|
54
|
+
* and the dev home in prod mode.
|
|
55
|
+
*
|
|
56
|
+
* Exported so tests can verify the swap logic without fixture homedirs.
|
|
57
|
+
*/
|
|
58
|
+
export declare function otherProfileHome(): string;
|
|
59
|
+
/**
|
|
60
|
+
* Return the live PID (if any) of the OPPOSITE profile's daemon.
|
|
61
|
+
*
|
|
62
|
+
* In dev mode, this returns the prod daemon's PID; in prod mode, the dev
|
|
63
|
+
* daemon's PID. Used by orphan detection to keep dev and prod daemons
|
|
64
|
+
* from misclassifying each other (ADR 0014 §5.6 — "they naturally
|
|
65
|
+
* coexist"). Returns `undefined` when no PID file exists, the contents
|
|
66
|
+
* are unparseable, or the recorded process is dead.
|
|
67
|
+
*
|
|
68
|
+
* Exported for unit testing — can be stubbed alongside `getDaemonStatus`
|
|
69
|
+
* in `evaluateStartPreflight` tests.
|
|
70
|
+
*/
|
|
71
|
+
export declare function getOtherProfilePid(): number | undefined;
|
|
72
|
+
/**
|
|
73
|
+
* Best-effort signal that the OPPOSITE profile may have a running daemon
|
|
74
|
+
* even if we couldn't pin a PID. Used by `stopDaemon` to suppress the
|
|
75
|
+
* zombie reaper when there's a non-trivial chance of cross-profile
|
|
76
|
+
* collateral damage (ADR 0014 §5.6).
|
|
77
|
+
*
|
|
78
|
+
* Returns true when either:
|
|
79
|
+
* - `daemon.pid` exists in the other profile's home AND contains a
|
|
80
|
+
* parseable, live PID (the strict case, also reported by
|
|
81
|
+
* {@link getOtherProfilePid}).
|
|
82
|
+
* - `daemon.port` exists in the other profile's home (weak signal:
|
|
83
|
+
* the file is written on daemon HTTP listener startup; it may
|
|
84
|
+
* linger across an uncleaned crash, but that's exactly the case
|
|
85
|
+
* where conservative behaviour matters).
|
|
86
|
+
*
|
|
87
|
+
* The heuristic deliberately errs on the side of NOT reaping. A false
|
|
88
|
+
* positive (port file exists, daemon long dead) costs zombie cleanup;
|
|
89
|
+
* a false negative (process killed because we missed evidence) costs
|
|
90
|
+
* the user their other profile's daemon.
|
|
91
|
+
*/
|
|
92
|
+
export declare function isOtherProfileLikelyRunning(): boolean;
|
|
93
|
+
/**
|
|
94
|
+
* Start the daemon process. If already running, returns the existing PID.
|
|
95
|
+
*
|
|
96
|
+
* The daemon is spawned as a detached child process with stdout/stderr
|
|
97
|
+
* redirected to a log file. Config is passed via environment variables.
|
|
98
|
+
*/
|
|
99
|
+
/** Lock file path for preventing concurrent daemon starts. */
|
|
100
|
+
export declare const DAEMON_LOCK_PATH: string;
|
|
101
|
+
/**
|
|
102
|
+
* How long a start lock can sit on disk before we treat it as abandoned
|
|
103
|
+
* regardless of whether the recorded PID appears alive. Daemon startup
|
|
104
|
+
* should never take this long; longer values just delay recovery after a
|
|
105
|
+
* crashed starter (see issue #182).
|
|
106
|
+
*/
|
|
107
|
+
export declare const STALE_LOCK_MS = 30000;
|
|
108
|
+
/**
|
|
109
|
+
* Timeout for waiting on another starter's PID file — generous window for
|
|
110
|
+
* cold-start slack on fresh installs (npm-global, uncompiled native deps).
|
|
111
|
+
* Bumped from 10s per researcher recommendation for issue #182.
|
|
112
|
+
*/
|
|
113
|
+
export declare const DAEMON_START_TIMEOUT_MS = 30000;
|
|
114
|
+
/** Shape of the JSON persisted inside the start lock. */
|
|
115
|
+
export interface LockFileContent {
|
|
116
|
+
/** PID of the process that acquired the lock. */
|
|
117
|
+
pid: number;
|
|
118
|
+
/** ms-since-epoch when the lock was acquired — used for age-based staleness. */
|
|
119
|
+
mtime: number;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Attempt to atomically create the start lock with {pid, mtime} contents.
|
|
123
|
+
*
|
|
124
|
+
* Returns `true` on success, `false` if the lock already exists. Any other
|
|
125
|
+
* error (EACCES, ENOSPC, …) propagates. Exported for unit testing the
|
|
126
|
+
* acquire path without spawning a real daemon.
|
|
127
|
+
*/
|
|
128
|
+
export declare function tryAcquireLockFile(lockPath: string, pid?: number, now?: number): boolean;
|
|
129
|
+
/**
|
|
130
|
+
* Inspect a start lock and decide whether it's abandoned.
|
|
131
|
+
*
|
|
132
|
+
* A lock is stale when any of:
|
|
133
|
+
* - the file is missing (treat as stale so callers retry immediately)
|
|
134
|
+
* - the contents are malformed (not JSON, missing pid/mtime)
|
|
135
|
+
* - mtime is older than {@link STALE_LOCK_MS}
|
|
136
|
+
* - `process.kill(pid, 0)` reports ESRCH (or anything other than EPERM)
|
|
137
|
+
*
|
|
138
|
+
* EPERM on the PID probe is treated as "alive" to match
|
|
139
|
+
* {@link getDaemonStatus} — on Windows, UAC-isolated foreign processes
|
|
140
|
+
* return EPERM for a running PID, so we must not interpret it as dead.
|
|
141
|
+
*
|
|
142
|
+
* Exported for unit testing.
|
|
143
|
+
*/
|
|
144
|
+
export declare function checkLockFileStale(lockPath: string, now?: number): {
|
|
145
|
+
stale: boolean;
|
|
146
|
+
reason: string;
|
|
147
|
+
content: LockFileContent | null;
|
|
148
|
+
};
|
|
149
|
+
export declare function startDaemon(config: Config): Promise<number>;
|
|
150
|
+
/**
|
|
151
|
+
* Info about a running agent-tempo daemon process discovered via OS process
|
|
152
|
+
* listing. Returned by {@link scanAgentTempoDaemons}.
|
|
153
|
+
*/
|
|
154
|
+
export interface DaemonProcessInfo {
|
|
155
|
+
pid: number;
|
|
156
|
+
/** Full command line as reported by the OS. */
|
|
157
|
+
commandLine: string;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Shell out to the platform process list and return any matching daemon
|
|
161
|
+
* processes. Hand-rolled per-platform to avoid a new dependency:
|
|
162
|
+
* - Windows: PowerShell `Get-CimInstance Win32_Process` (modern, robust) with a
|
|
163
|
+
* `tasklist` fallback for environments without PowerShell on PATH
|
|
164
|
+
* - POSIX: `ps -eo pid,command` (portable across macOS + Linux)
|
|
165
|
+
*
|
|
166
|
+
* Returns `[]` on any scanner failure — this is a best-effort observability
|
|
167
|
+
* helper, not a correctness guarantee. Errors are swallowed so a broken
|
|
168
|
+
* scanner can't itself take down `daemon status`.
|
|
169
|
+
*
|
|
170
|
+
* Exported for testing with a stubbed executor.
|
|
171
|
+
*/
|
|
172
|
+
export declare function scanAgentTempoDaemons(exec?: (cmd: string, args: readonly string[]) => string, platform?: NodeJS.Platform): DaemonProcessInfo[];
|
|
173
|
+
/**
|
|
174
|
+
* Options for {@link stopDaemon} — exported for unit tests so we can inject
|
|
175
|
+
* a stub scanner and killer without spawning real processes. Production
|
|
176
|
+
* callers should pass no arguments and accept the defaults (real OS scan +
|
|
177
|
+
* `process.kill`).
|
|
178
|
+
*
|
|
179
|
+
* @internal
|
|
180
|
+
*/
|
|
181
|
+
export interface StopDaemonOpts {
|
|
182
|
+
/** Process scanner — defaults to {@link scanAgentTempoDaemons}. */
|
|
183
|
+
scan?: () => DaemonProcessInfo[];
|
|
184
|
+
/** Signal sender — defaults to `process.kill`. */
|
|
185
|
+
killer?: (pid: number, signal?: NodeJS.Signals | number) => void;
|
|
186
|
+
/** Platform override — defaults to `process.platform`. */
|
|
187
|
+
platform?: NodeJS.Platform;
|
|
188
|
+
/**
|
|
189
|
+
* Cross-profile coexistence probe — defaults to
|
|
190
|
+
* {@link isOtherProfileLikelyRunning}. Tests stub this so the zombie
|
|
191
|
+
* reaper logic can be exercised without depending on disk state of the
|
|
192
|
+
* developer's home dir.
|
|
193
|
+
*/
|
|
194
|
+
isOtherProfileLikelyRunning?: () => boolean;
|
|
195
|
+
/**
|
|
196
|
+
* Cross-profile PID lookup — defaults to {@link getOtherProfilePid}.
|
|
197
|
+
* Tests stub it for the same reason as `isOtherProfileLikelyRunning`.
|
|
198
|
+
*/
|
|
199
|
+
getOtherProfilePid?: () => number | undefined;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Stop the daemon process by sending SIGTERM (or killing on Windows). In
|
|
203
|
+
* addition to the daemon tracked by the PID file, this also reaps any
|
|
204
|
+
* **zombie** daemons — `node dist/daemon.js` processes detected by
|
|
205
|
+
* {@link scanAgentTempoDaemons} that the PID file doesn't know about.
|
|
206
|
+
*
|
|
207
|
+
* Why reap zombies on every stop? When a prior daemon loses PID-file
|
|
208
|
+
* tracking (crashed `daemon stop`, manual PID-file delete, surviving across
|
|
209
|
+
* a `down --destroy` from before this fix), the orphan keeps polling
|
|
210
|
+
* Temporal task queues and executing activities — sometimes with stale code
|
|
211
|
+
* from before the most recent rebuild. That has caused real user-visible
|
|
212
|
+
* incidents where activities ran the pre-fix `resume: true` spawn path
|
|
213
|
+
* because a zombie daemon held the cached pre-rebuild code in memory.
|
|
214
|
+
*
|
|
215
|
+
* Returns `true` if at least one process (tracked or zombie) was stopped.
|
|
216
|
+
*/
|
|
217
|
+
export declare function stopDaemon(opts?: StopDaemonOpts): boolean;
|