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.
Files changed (484) hide show
  1. package/CLAUDE.md +213 -0
  2. package/LICENSE +21 -0
  3. package/README.md +289 -0
  4. package/assets/icon-32.png +0 -0
  5. package/assets/icon-512.png +0 -0
  6. package/assets/icon-64.png +0 -0
  7. package/assets/icon-dark-32.png +0 -0
  8. package/assets/icon-dark-64.png +0 -0
  9. package/assets/icon-dark.svg +9 -0
  10. package/assets/icon.svg +9 -0
  11. package/assets/logo-dark.svg +11 -0
  12. package/assets/logo-light.svg +11 -0
  13. package/dashboard/README.md +91 -0
  14. package/dashboard/dist/assets/index-CB78ToNE.css +2 -0
  15. package/dashboard/dist/assets/index-_5jV0Znu.js +62 -0
  16. package/dashboard/dist/assets/index-_5jV0Znu.js.map +1 -0
  17. package/dashboard/dist/index.html +21 -0
  18. package/dashboard/package.json +47 -0
  19. package/dist/activities/hard-terminate.d.ts +32 -0
  20. package/dist/activities/hard-terminate.js +460 -0
  21. package/dist/activities/maestro.d.ts +72 -0
  22. package/dist/activities/maestro.js +254 -0
  23. package/dist/activities/outbox.d.ts +188 -0
  24. package/dist/activities/outbox.js +849 -0
  25. package/dist/activities/resolve.d.ts +64 -0
  26. package/dist/activities/resolve.js +129 -0
  27. package/dist/activities/schedule-fire.d.ts +36 -0
  28. package/dist/activities/schedule-fire.js +147 -0
  29. package/dist/adapters/base.d.ts +426 -0
  30. package/dist/adapters/base.js +1270 -0
  31. package/dist/adapters/claude-api/adapter.d.ts +168 -0
  32. package/dist/adapters/claude-api/adapter.js +797 -0
  33. package/dist/adapters/claude-api/api-error.d.ts +96 -0
  34. package/dist/adapters/claude-api/api-error.js +191 -0
  35. package/dist/adapters/claude-api/index.d.ts +16 -0
  36. package/dist/adapters/claude-api/index.js +21 -0
  37. package/dist/adapters/claude-api/mcp-bridge.d.ts +50 -0
  38. package/dist/adapters/claude-api/mcp-bridge.js +157 -0
  39. package/dist/adapters/claude-code/adapter.d.ts +133 -0
  40. package/dist/adapters/claude-code/adapter.js +274 -0
  41. package/dist/adapters/claude-code/index.d.ts +15 -0
  42. package/dist/adapters/claude-code/index.js +20 -0
  43. package/dist/adapters/claude-code-headless/adapter.d.ts +131 -0
  44. package/dist/adapters/claude-code-headless/adapter.js +710 -0
  45. package/dist/adapters/claude-code-headless/error-mapper.d.ts +107 -0
  46. package/dist/adapters/claude-code-headless/error-mapper.js +281 -0
  47. package/dist/adapters/claude-code-headless/index.d.ts +17 -0
  48. package/dist/adapters/claude-code-headless/index.js +26 -0
  49. package/dist/adapters/claude-code-headless/pre-flight.d.ts +51 -0
  50. package/dist/adapters/claude-code-headless/pre-flight.js +207 -0
  51. package/dist/adapters/claude-code-headless/prompt.d.ts +93 -0
  52. package/dist/adapters/claude-code-headless/prompt.js +79 -0
  53. package/dist/adapters/claude-code-headless/stream-json.d.ts +242 -0
  54. package/dist/adapters/claude-code-headless/stream-json.js +208 -0
  55. package/dist/adapters/claude-code-headless/types.d.ts +28 -0
  56. package/dist/adapters/claude-code-headless/types.js +36 -0
  57. package/dist/adapters/copilot/adapter.d.ts +100 -0
  58. package/dist/adapters/copilot/adapter.js +730 -0
  59. package/dist/adapters/copilot/index.d.ts +15 -0
  60. package/dist/adapters/copilot/index.js +20 -0
  61. package/dist/adapters/index.d.ts +42 -0
  62. package/dist/adapters/index.js +115 -0
  63. package/dist/adapters/opencode/adapter.d.ts +82 -0
  64. package/dist/adapters/opencode/adapter.js +710 -0
  65. package/dist/adapters/opencode/config.d.ts +90 -0
  66. package/dist/adapters/opencode/config.js +137 -0
  67. package/dist/adapters/opencode/helpers.d.ts +40 -0
  68. package/dist/adapters/opencode/helpers.js +144 -0
  69. package/dist/adapters/opencode/index.d.ts +12 -0
  70. package/dist/adapters/opencode/index.js +17 -0
  71. package/dist/adapters/opencode/server-bridge.d.ts +124 -0
  72. package/dist/adapters/opencode/server-bridge.js +216 -0
  73. package/dist/adapters/sdk/base.d.ts +95 -0
  74. package/dist/adapters/sdk/base.js +134 -0
  75. package/dist/adapters/sdk/system-prompt.d.ts +64 -0
  76. package/dist/adapters/sdk/system-prompt.js +78 -0
  77. package/dist/adapters/terminal-error.d.ts +27 -0
  78. package/dist/adapters/terminal-error.js +39 -0
  79. package/dist/channel.d.ts +3 -0
  80. package/dist/channel.js +48 -0
  81. package/dist/cli/commands.d.ts +245 -0
  82. package/dist/cli/commands.js +2438 -0
  83. package/dist/cli/config-command.d.ts +8 -0
  84. package/dist/cli/config-command.js +254 -0
  85. package/dist/cli/daemon-command.d.ts +57 -0
  86. package/dist/cli/daemon-command.js +493 -0
  87. package/dist/cli/daemon.d.ts +217 -0
  88. package/dist/cli/daemon.js +632 -0
  89. package/dist/cli/dashboard-command.d.ts +20 -0
  90. package/dist/cli/dashboard-command.js +241 -0
  91. package/dist/cli/dev-banner.d.ts +107 -0
  92. package/dist/cli/dev-banner.js +190 -0
  93. package/dist/cli/dev-mode-bootstrap.d.ts +29 -0
  94. package/dist/cli/dev-mode-bootstrap.js +36 -0
  95. package/dist/cli/dev-verbs.d.ts +43 -0
  96. package/dist/cli/dev-verbs.js +254 -0
  97. package/dist/cli/help-text.d.ts +1 -0
  98. package/dist/cli/help-text.js +158 -0
  99. package/dist/cli/legacy-migration.d.ts +35 -0
  100. package/dist/cli/legacy-migration.js +335 -0
  101. package/dist/cli/mcp.d.ts +8 -0
  102. package/dist/cli/mcp.js +63 -0
  103. package/dist/cli/output.d.ts +12 -0
  104. package/dist/cli/output.js +37 -0
  105. package/dist/cli/preflight.d.ts +9 -0
  106. package/dist/cli/preflight.js +96 -0
  107. package/dist/cli/removed-verbs.d.ts +9 -0
  108. package/dist/cli/removed-verbs.js +78 -0
  109. package/dist/cli/sa-preflight.d.ts +99 -0
  110. package/dist/cli/sa-preflight.js +183 -0
  111. package/dist/cli/scenarios-command.d.ts +6 -0
  112. package/dist/cli/scenarios-command.js +167 -0
  113. package/dist/cli/startup.d.ts +112 -0
  114. package/dist/cli/startup.js +641 -0
  115. package/dist/cli/upgrade-command.d.ts +5 -0
  116. package/dist/cli/upgrade-command.js +240 -0
  117. package/dist/cli.d.ts +2 -0
  118. package/dist/cli.js +680 -0
  119. package/dist/client/core.d.ts +33 -0
  120. package/dist/client/core.js +1260 -0
  121. package/dist/client/ensure-conductor-spawned.d.ts +35 -0
  122. package/dist/client/ensure-conductor-spawned.js +48 -0
  123. package/dist/client/index.d.ts +32 -0
  124. package/dist/client/index.js +22 -0
  125. package/dist/client/interface.d.ts +461 -0
  126. package/dist/client/interface.js +2 -0
  127. package/dist/client/subscribe.d.ts +108 -0
  128. package/dist/client/subscribe.js +598 -0
  129. package/dist/client/with-spawn.d.ts +27 -0
  130. package/dist/client/with-spawn.js +87 -0
  131. package/dist/config.d.ts +323 -0
  132. package/dist/config.js +593 -0
  133. package/dist/connection.d.ts +7 -0
  134. package/dist/connection.js +46 -0
  135. package/dist/constants.d.ts +50 -0
  136. package/dist/constants.js +74 -0
  137. package/dist/copilot-bridge.d.ts +22 -0
  138. package/dist/copilot-bridge.js +565 -0
  139. package/dist/daemon-adapter-versions.d.ts +52 -0
  140. package/dist/daemon-adapter-versions.js +170 -0
  141. package/dist/daemon.d.ts +275 -0
  142. package/dist/daemon.js +989 -0
  143. package/dist/ensemble/agent-types.d.ts +23 -0
  144. package/dist/ensemble/agent-types.js +132 -0
  145. package/dist/ensemble/loader.d.ts +14 -0
  146. package/dist/ensemble/loader.js +140 -0
  147. package/dist/ensemble/saver.d.ts +49 -0
  148. package/dist/ensemble/saver.js +201 -0
  149. package/dist/ensemble/schema.d.ts +71 -0
  150. package/dist/ensemble/schema.js +3 -0
  151. package/dist/git-info.d.ts +4 -0
  152. package/dist/git-info.js +29 -0
  153. package/dist/http/aggregate.d.ts +319 -0
  154. package/dist/http/aggregate.js +684 -0
  155. package/dist/http/auth.d.ts +67 -0
  156. package/dist/http/auth.js +177 -0
  157. package/dist/http/body.d.ts +71 -0
  158. package/dist/http/body.js +121 -0
  159. package/dist/http/catalog.d.ts +67 -0
  160. package/dist/http/catalog.js +209 -0
  161. package/dist/http/cors.d.ts +42 -0
  162. package/dist/http/cors.js +111 -0
  163. package/dist/http/dashboard-pair.d.ts +94 -0
  164. package/dist/http/dashboard-pair.js +148 -0
  165. package/dist/http/dashboard.d.ts +20 -0
  166. package/dist/http/dashboard.js +160 -0
  167. package/dist/http/event-bus.d.ts +217 -0
  168. package/dist/http/event-bus.js +365 -0
  169. package/dist/http/event-id.d.ts +77 -0
  170. package/dist/http/event-id.js +117 -0
  171. package/dist/http/event-types.d.ts +348 -0
  172. package/dist/http/event-types.js +36 -0
  173. package/dist/http/fixtures/chat-stress.d.ts +8 -0
  174. package/dist/http/fixtures/chat-stress.js +63 -0
  175. package/dist/http/fixtures/conductor-leaving.d.ts +8 -0
  176. package/dist/http/fixtures/conductor-leaving.js +80 -0
  177. package/dist/http/fixtures/constants.d.ts +10 -0
  178. package/dist/http/fixtures/constants.js +13 -0
  179. package/dist/http/fixtures/eight-player-broadcast.d.ts +10 -0
  180. package/dist/http/fixtures/eight-player-broadcast.js +81 -0
  181. package/dist/http/fixtures/empty-ensemble.d.ts +6 -0
  182. package/dist/http/fixtures/empty-ensemble.js +26 -0
  183. package/dist/http/fixtures/index.d.ts +55 -0
  184. package/dist/http/fixtures/index.js +110 -0
  185. package/dist/http/fixtures/single-conductor.d.ts +7 -0
  186. package/dist/http/fixtures/single-conductor.js +46 -0
  187. package/dist/http/fixtures/sse-reconnect.d.ts +8 -0
  188. package/dist/http/fixtures/sse-reconnect.js +77 -0
  189. package/dist/http/index.d.ts +21 -0
  190. package/dist/http/index.js +61 -0
  191. package/dist/http/port-file.d.ts +22 -0
  192. package/dist/http/port-file.js +132 -0
  193. package/dist/http/responses.d.ts +27 -0
  194. package/dist/http/responses.js +40 -0
  195. package/dist/http/ring-buffer.d.ts +41 -0
  196. package/dist/http/ring-buffer.js +80 -0
  197. package/dist/http/server.d.ts +122 -0
  198. package/dist/http/server.js +459 -0
  199. package/dist/http/snapshot.d.ts +85 -0
  200. package/dist/http/snapshot.js +180 -0
  201. package/dist/http/sse-handler.d.ts +87 -0
  202. package/dist/http/sse-handler.js +294 -0
  203. package/dist/http/writes.d.ts +55 -0
  204. package/dist/http/writes.js +240 -0
  205. package/dist/palette/index.d.ts +138 -0
  206. package/dist/palette/index.js +221 -0
  207. package/dist/reconcile/orphans.d.ts +255 -0
  208. package/dist/reconcile/orphans.js +340 -0
  209. package/dist/scripts/258-spotcheck.js +303 -0
  210. package/dist/scripts/check-components-css-sync.js +199 -0
  211. package/dist/scripts/run-shard.js +121 -0
  212. package/dist/scripts/verify-daemon-isolation-guard.js +128 -0
  213. package/dist/server-tools.d.ts +87 -0
  214. package/dist/server-tools.js +146 -0
  215. package/dist/server.d.ts +2 -0
  216. package/dist/server.js +366 -0
  217. package/dist/spawn.d.ts +296 -0
  218. package/dist/spawn.js +747 -0
  219. package/dist/tools/agent-types.d.ts +2 -0
  220. package/dist/tools/agent-types.js +21 -0
  221. package/dist/tools/attachment-info.d.ts +4 -0
  222. package/dist/tools/attachment-info.js +48 -0
  223. package/dist/tools/broadcast.d.ts +4 -0
  224. package/dist/tools/broadcast.js +76 -0
  225. package/dist/tools/cancel-stage.d.ts +3 -0
  226. package/dist/tools/cancel-stage.js +20 -0
  227. package/dist/tools/clear-state.d.ts +3 -0
  228. package/dist/tools/clear-state.js +37 -0
  229. package/dist/tools/coat-check-evict.d.ts +4 -0
  230. package/dist/tools/coat-check-evict.js +43 -0
  231. package/dist/tools/coat-check-get.d.ts +4 -0
  232. package/dist/tools/coat-check-get.js +56 -0
  233. package/dist/tools/coat-check-list.d.ts +4 -0
  234. package/dist/tools/coat-check-list.js +60 -0
  235. package/dist/tools/coat-check-put.d.ts +4 -0
  236. package/dist/tools/coat-check-put.js +53 -0
  237. package/dist/tools/cue.d.ts +44 -0
  238. package/dist/tools/cue.js +201 -0
  239. package/dist/tools/destroy.d.ts +4 -0
  240. package/dist/tools/destroy.js +188 -0
  241. package/dist/tools/detach.d.ts +4 -0
  242. package/dist/tools/detach.js +45 -0
  243. package/dist/tools/encore.d.ts +4 -0
  244. package/dist/tools/encore.js +31 -0
  245. package/dist/tools/ensemble.d.ts +32 -0
  246. package/dist/tools/ensemble.js +198 -0
  247. package/dist/tools/evaluate-gate.d.ts +3 -0
  248. package/dist/tools/evaluate-gate.js +32 -0
  249. package/dist/tools/fetch-state.d.ts +13 -0
  250. package/dist/tools/fetch-state.js +78 -0
  251. package/dist/tools/gates.d.ts +3 -0
  252. package/dist/tools/gates.js +41 -0
  253. package/dist/tools/helpers.d.ts +21 -0
  254. package/dist/tools/helpers.js +25 -0
  255. package/dist/tools/hosts.d.ts +4 -0
  256. package/dist/tools/hosts.js +40 -0
  257. package/dist/tools/listen.d.ts +3 -0
  258. package/dist/tools/listen.js +22 -0
  259. package/dist/tools/load-lineup.d.ts +5 -0
  260. package/dist/tools/load-lineup.js +381 -0
  261. package/dist/tools/migrate.d.ts +4 -0
  262. package/dist/tools/migrate.js +60 -0
  263. package/dist/tools/pause-ensemble.d.ts +4 -0
  264. package/dist/tools/pause-ensemble.js +58 -0
  265. package/dist/tools/pause.d.ts +4 -0
  266. package/dist/tools/pause.js +36 -0
  267. package/dist/tools/play.d.ts +4 -0
  268. package/dist/tools/play.js +57 -0
  269. package/dist/tools/quality-gate.d.ts +3 -0
  270. package/dist/tools/quality-gate.js +26 -0
  271. package/dist/tools/recall.d.ts +3 -0
  272. package/dist/tools/recall.js +32 -0
  273. package/dist/tools/recruit.d.ts +38 -0
  274. package/dist/tools/recruit.js +447 -0
  275. package/dist/tools/release.d.ts +4 -0
  276. package/dist/tools/release.js +98 -0
  277. package/dist/tools/report.d.ts +3 -0
  278. package/dist/tools/report.js +29 -0
  279. package/dist/tools/resolve.d.ts +1 -0
  280. package/dist/tools/resolve.js +7 -0
  281. package/dist/tools/restart.d.ts +35 -0
  282. package/dist/tools/restart.js +131 -0
  283. package/dist/tools/restore.d.ts +4 -0
  284. package/dist/tools/restore.js +107 -0
  285. package/dist/tools/resume-ensemble.d.ts +4 -0
  286. package/dist/tools/resume-ensemble.js +79 -0
  287. package/dist/tools/save-lineup.d.ts +4 -0
  288. package/dist/tools/save-lineup.js +36 -0
  289. package/dist/tools/save-state.d.ts +3 -0
  290. package/dist/tools/save-state.js +57 -0
  291. package/dist/tools/schedule.d.ts +4 -0
  292. package/dist/tools/schedule.js +152 -0
  293. package/dist/tools/schedules.d.ts +4 -0
  294. package/dist/tools/schedules.js +54 -0
  295. package/dist/tools/set-ensemble-description.d.ts +4 -0
  296. package/dist/tools/set-ensemble-description.js +37 -0
  297. package/dist/tools/set-name.d.ts +4 -0
  298. package/dist/tools/set-name.js +45 -0
  299. package/dist/tools/set-part.d.ts +3 -0
  300. package/dist/tools/set-part.js +20 -0
  301. package/dist/tools/shutdown.d.ts +4 -0
  302. package/dist/tools/shutdown.js +54 -0
  303. package/dist/tools/stage.d.ts +3 -0
  304. package/dist/tools/stage.js +28 -0
  305. package/dist/tools/stages.d.ts +3 -0
  306. package/dist/tools/stages.js +35 -0
  307. package/dist/tools/stop.d.ts +4 -0
  308. package/dist/tools/stop.js +29 -0
  309. package/dist/tools/unschedule.d.ts +4 -0
  310. package/dist/tools/unschedule.js +35 -0
  311. package/dist/tools/who-am-i.d.ts +3 -0
  312. package/dist/tools/who-am-i.js +34 -0
  313. package/dist/tools/worktree.d.ts +4 -0
  314. package/dist/tools/worktree.js +181 -0
  315. package/dist/tui/App.d.ts +85 -0
  316. package/dist/tui/App.js +1791 -0
  317. package/dist/tui/bootstrap-types.d.ts +46 -0
  318. package/dist/tui/bootstrap-types.js +7 -0
  319. package/dist/tui/client.d.ts +6 -0
  320. package/dist/tui/client.js +9 -0
  321. package/dist/tui/commands.d.ts +71 -0
  322. package/dist/tui/commands.js +1375 -0
  323. package/dist/tui/components/ActivityLog.d.ts +16 -0
  324. package/dist/tui/components/ActivityLog.js +36 -0
  325. package/dist/tui/components/ChatView.d.ts +35 -0
  326. package/dist/tui/components/ChatView.js +54 -0
  327. package/dist/tui/components/CommandOverlay.d.ts +15 -0
  328. package/dist/tui/components/CommandOverlay.js +34 -0
  329. package/dist/tui/components/CommandPalette.d.ts +21 -0
  330. package/dist/tui/components/CommandPalette.js +67 -0
  331. package/dist/tui/components/ConductorChat.d.ts +16 -0
  332. package/dist/tui/components/ConductorChat.js +32 -0
  333. package/dist/tui/components/ConversationStream.d.ts +114 -0
  334. package/dist/tui/components/ConversationStream.js +307 -0
  335. package/dist/tui/components/CreateEnsembleWizard.d.ts +19 -0
  336. package/dist/tui/components/CreateEnsembleWizard.js +223 -0
  337. package/dist/tui/components/DestroyConfirmModal.d.ts +17 -0
  338. package/dist/tui/components/DestroyConfirmModal.js +62 -0
  339. package/dist/tui/components/EnsembleListView.d.ts +14 -0
  340. package/dist/tui/components/EnsembleListView.js +32 -0
  341. package/dist/tui/components/EnsemblePanel.d.ts +12 -0
  342. package/dist/tui/components/EnsemblePanel.js +40 -0
  343. package/dist/tui/components/ErrorView.d.ts +31 -0
  344. package/dist/tui/components/ErrorView.js +129 -0
  345. package/dist/tui/components/HomeView.d.ts +54 -0
  346. package/dist/tui/components/HomeView.js +306 -0
  347. package/dist/tui/components/InputBar.d.ts +13 -0
  348. package/dist/tui/components/InputBar.js +58 -0
  349. package/dist/tui/components/LoadLineupModal.d.ts +18 -0
  350. package/dist/tui/components/LoadLineupModal.js +79 -0
  351. package/dist/tui/components/MainView.d.ts +21 -0
  352. package/dist/tui/components/MainView.js +107 -0
  353. package/dist/tui/components/NewEnsembleModal.d.ts +9 -0
  354. package/dist/tui/components/NewEnsembleModal.js +73 -0
  355. package/dist/tui/components/Picker.d.ts +23 -0
  356. package/dist/tui/components/Picker.js +70 -0
  357. package/dist/tui/components/PlayerDetailView.d.ts +26 -0
  358. package/dist/tui/components/PlayerDetailView.js +118 -0
  359. package/dist/tui/components/PromptArea.d.ts +50 -0
  360. package/dist/tui/components/PromptArea.js +303 -0
  361. package/dist/tui/components/RecruitWizard.d.ts +17 -0
  362. package/dist/tui/components/RecruitWizard.js +221 -0
  363. package/dist/tui/components/RestoreConfirmModal.d.ts +18 -0
  364. package/dist/tui/components/RestoreConfirmModal.js +71 -0
  365. package/dist/tui/components/ScheduleOverlay.d.ts +13 -0
  366. package/dist/tui/components/ScheduleOverlay.js +113 -0
  367. package/dist/tui/components/ScheduleWizard.d.ts +19 -0
  368. package/dist/tui/components/ScheduleWizard.js +259 -0
  369. package/dist/tui/components/Splash.d.ts +23 -0
  370. package/dist/tui/components/Splash.js +221 -0
  371. package/dist/tui/components/StatusBar.d.ts +48 -0
  372. package/dist/tui/components/StatusBar.js +128 -0
  373. package/dist/tui/components/StatusOverlay.d.ts +15 -0
  374. package/dist/tui/components/StatusOverlay.js +76 -0
  375. package/dist/tui/components/TitleBar.d.ts +10 -0
  376. package/dist/tui/components/TitleBar.js +21 -0
  377. package/dist/tui/components/TopBar.d.ts +12 -0
  378. package/dist/tui/components/TopBar.js +15 -0
  379. package/dist/tui/core-api.d.ts +26 -0
  380. package/dist/tui/core-api.js +67 -0
  381. package/dist/tui/hooks/useEnsembleDiscovery.d.ts +3 -0
  382. package/dist/tui/hooks/useEnsembleDiscovery.js +30 -0
  383. package/dist/tui/hooks/useMaestroPoller.d.ts +3 -0
  384. package/dist/tui/hooks/useMaestroPoller.js +36 -0
  385. package/dist/tui/hooks/useSendCommand.d.ts +7 -0
  386. package/dist/tui/hooks/useSendCommand.js +29 -0
  387. package/dist/tui/index.d.ts +15 -0
  388. package/dist/tui/index.js +156 -0
  389. package/dist/tui/ink-context.d.ts +18 -0
  390. package/dist/tui/ink-context.js +59 -0
  391. package/dist/tui/ink-loader.d.ts +26 -0
  392. package/dist/tui/ink-loader.js +42 -0
  393. package/dist/tui/removed-commands.d.ts +9 -0
  394. package/dist/tui/removed-commands.js +22 -0
  395. package/dist/tui/sse-handler.d.ts +52 -0
  396. package/dist/tui/sse-handler.js +157 -0
  397. package/dist/tui/store.d.ts +598 -0
  398. package/dist/tui/store.js +753 -0
  399. package/dist/tui/utils/format.d.ts +56 -0
  400. package/dist/tui/utils/format.js +155 -0
  401. package/dist/tui/utils/fullscreen.d.ts +23 -0
  402. package/dist/tui/utils/fullscreen.js +71 -0
  403. package/dist/tui/utils/history.d.ts +10 -0
  404. package/dist/tui/utils/history.js +85 -0
  405. package/dist/tui/utils/platform.d.ts +45 -0
  406. package/dist/tui/utils/platform.js +258 -0
  407. package/dist/tui/utils/theme.d.ts +21 -0
  408. package/dist/tui/utils/theme.js +24 -0
  409. package/dist/types.d.ts +1020 -0
  410. package/dist/types.js +39 -0
  411. package/dist/utils/attachment-format.d.ts +22 -0
  412. package/dist/utils/attachment-format.js +32 -0
  413. package/dist/utils/default-part.d.ts +43 -0
  414. package/dist/utils/default-part.js +104 -0
  415. package/dist/utils/duration.d.ts +30 -0
  416. package/dist/utils/duration.js +69 -0
  417. package/dist/utils/ensemble-ops.d.ts +61 -0
  418. package/dist/utils/ensemble-ops.js +77 -0
  419. package/dist/utils/format-hosts.d.ts +21 -0
  420. package/dist/utils/format-hosts.js +73 -0
  421. package/dist/utils/hosts.d.ts +113 -0
  422. package/dist/utils/hosts.js +265 -0
  423. package/dist/utils/parent-death-watchdog.d.ts +1 -0
  424. package/dist/utils/parent-death-watchdog.js +47 -0
  425. package/dist/utils/query-timeout.d.ts +103 -0
  426. package/dist/utils/query-timeout.js +113 -0
  427. package/dist/utils/recall-format.d.ts +78 -0
  428. package/dist/utils/recall-format.js +105 -0
  429. package/dist/utils/restore-format.d.ts +49 -0
  430. package/dist/utils/restore-format.js +91 -0
  431. package/dist/utils/safe-path.d.ts +10 -0
  432. package/dist/utils/safe-path.js +43 -0
  433. package/dist/utils/sdk-probe.d.ts +9 -0
  434. package/dist/utils/sdk-probe.js +45 -0
  435. package/dist/utils/search-attributes.d.ts +76 -0
  436. package/dist/utils/search-attributes.js +86 -0
  437. package/dist/utils/validation.d.ts +113 -0
  438. package/dist/utils/validation.js +163 -0
  439. package/dist/utils/visibility-deadline.d.ts +186 -0
  440. package/dist/utils/visibility-deadline.js +158 -0
  441. package/dist/utils/worktree.d.ts +103 -0
  442. package/dist/utils/worktree.js +327 -0
  443. package/dist/worker.d.ts +14 -0
  444. package/dist/worker.js +146 -0
  445. package/dist/workflows/attachment-math.d.ts +56 -0
  446. package/dist/workflows/attachment-math.js +47 -0
  447. package/dist/workflows/index.d.ts +3 -0
  448. package/dist/workflows/index.js +11 -0
  449. package/dist/workflows/maestro-signals.d.ts +217 -0
  450. package/dist/workflows/maestro-signals.js +155 -0
  451. package/dist/workflows/maestro.d.ts +3 -0
  452. package/dist/workflows/maestro.js +812 -0
  453. package/dist/workflows/scheduler-signals.d.ts +10 -0
  454. package/dist/workflows/scheduler-signals.js +14 -0
  455. package/dist/workflows/scheduler.d.ts +17 -0
  456. package/dist/workflows/scheduler.js +143 -0
  457. package/dist/workflows/session.d.ts +2 -0
  458. package/dist/workflows/session.js +1638 -0
  459. package/dist/workflows/signals.d.ts +297 -0
  460. package/dist/workflows/signals.js +239 -0
  461. package/examples/agents/tempo-composer.md +56 -0
  462. package/examples/agents/tempo-conductor.md +117 -0
  463. package/examples/agents/tempo-critic.md +73 -0
  464. package/examples/agents/tempo-improv.md +74 -0
  465. package/examples/agents/tempo-liner.md +75 -0
  466. package/examples/agents/tempo-roadie.md +61 -0
  467. package/examples/agents/tempo-soloist.md +71 -0
  468. package/examples/agents/tempo-tuner.md +94 -0
  469. package/examples/ensembles/tempo-big-band.yaml +146 -0
  470. package/examples/ensembles/tempo-dev-team.yaml +58 -0
  471. package/examples/ensembles/tempo-headless-jam.yaml +77 -0
  472. package/examples/ensembles/tempo-jam-session.yaml +41 -0
  473. package/examples/ensembles/tempo-mock-jam.yaml +79 -0
  474. package/examples/ensembles/tempo-review-squad.yaml +32 -0
  475. package/package.json +172 -0
  476. package/packaging/launchd/com.agent.tempo.plist +46 -0
  477. package/packaging/systemd/agent-tempo.service +32 -0
  478. package/packaging/windows/install-task.ps1 +71 -0
  479. package/scenarios/conductor-recruit-mock.yaml +33 -0
  480. package/scenarios/echo-roundtrip.yaml +15 -0
  481. package/scenarios/multi-player-handoff.yaml +38 -0
  482. package/scenarios/recruit-cascade.yaml +38 -0
  483. package/scenarios/two-player-conversation.yaml +33 -0
  484. 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>