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,254 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createMaestroActivities = createMaestroActivities;
4
+ const activity_1 = require("@temporalio/activity");
5
+ const config_1 = require("../config");
6
+ const types_1 = require("../types");
7
+ const resolve_1 = require("./resolve");
8
+ const visibility_deadline_1 = require("../utils/visibility-deadline");
9
+ const log = (...args) => console.error('[agent-tempo:maestro]', ...args);
10
+ /**
11
+ * Create the Maestro activity implementations bound to a Temporal client.
12
+ * Registered with the shared worker.
13
+ */
14
+ function createMaestroActivities(client) {
15
+ return {
16
+ async refreshEnsembleState(ensemble) {
17
+ try {
18
+ const sessions = await (0, resolve_1.scanEnsembleSessions)(client, ensemble);
19
+ return sessions.map((s) => ({
20
+ playerId: s.playerId,
21
+ ensemble,
22
+ part: s.part,
23
+ hostname: s.hostname,
24
+ workDir: s.workDir,
25
+ gitRoot: s.gitRoot,
26
+ gitBranch: s.gitBranch,
27
+ isConductor: s.isConductor,
28
+ agentType: s.agentType,
29
+ playerType: s.playerType,
30
+ phase: s.phase,
31
+ // #399 W1 — forward the activity-counter pair so the maestro's
32
+ // tempo bucket can diff across refreshes.
33
+ activityCount: s.activityCount,
34
+ lastActivityAt: s.lastActivityAt,
35
+ }));
36
+ }
37
+ catch (err) {
38
+ log('refreshEnsembleState failed:', err);
39
+ throw activity_1.ApplicationFailure.nonRetryable(`Failed to scan ensemble: ${err instanceof Error ? err.message : String(err)}`);
40
+ }
41
+ },
42
+ async fetchConductorHistory(input) {
43
+ try {
44
+ const wfId = (0, config_1.conductorWorkflowId)(input.ensemble);
45
+ const handle = client.workflow.getHandle(wfId);
46
+ const history = await handle.query('history');
47
+ return { success: true, history };
48
+ }
49
+ catch (err) {
50
+ // ContinueAsNew transient errors and missing conductor are soft failures
51
+ const msg = err instanceof Error ? err.message : String(err);
52
+ log('fetchConductorHistory failed (soft):', msg);
53
+ return { success: false, history: [], error: msg };
54
+ }
55
+ },
56
+ async relayCommandToConductor(input) {
57
+ try {
58
+ const wfId = (0, config_1.conductorWorkflowId)(input.ensemble);
59
+ const handle = client.workflow.getHandle(wfId);
60
+ await handle.signal('command', {
61
+ text: input.text,
62
+ source: input.source,
63
+ ...(input.replyTo ? { replyTo: input.replyTo } : {}),
64
+ });
65
+ return { success: true };
66
+ }
67
+ catch (err) {
68
+ const msg = err instanceof Error ? err.message : String(err);
69
+ log('relayCommandToConductor failed:', msg);
70
+ return { success: false, error: msg };
71
+ }
72
+ },
73
+ async discoverEnsembles() {
74
+ // #336/#529 — bounded visibility iterator. On deadline, return
75
+ // the partial result rather than aborting; the maestro retries on
76
+ // its own schedule, so a truncated enumeration this tick self-heals
77
+ // on the next.
78
+ const ensembles = new Set();
79
+ const query = `WorkflowType = "agentSessionWorkflow" AND ExecutionStatus = "Running"`;
80
+ try {
81
+ for await (const wf of (0, visibility_deadline_1.iterateWithDeadline)(client.workflow.list({ query }), visibility_deadline_1.VISIBILITY_DEADLINES_MS.discoverEnsembles, 'discoverEnsembles')) {
82
+ try {
83
+ const handle = client.workflow.getHandle(wf.workflowId);
84
+ const metadata = await handle.query('getMetadata');
85
+ if (metadata.ensemble) {
86
+ ensembles.add(metadata.ensemble);
87
+ }
88
+ }
89
+ catch {
90
+ // Workflow may have completed — skip
91
+ }
92
+ }
93
+ return Array.from(ensembles).sort();
94
+ }
95
+ catch (err) {
96
+ if ((0, visibility_deadline_1.isVisibilityTimeout)(err)) {
97
+ log(`discoverEnsembles: ${err.message} — returning partial (${ensembles.size} ensembles)`);
98
+ return Array.from(ensembles).sort();
99
+ }
100
+ // Discovery failures are typically transient (network, server restart) — allow retry
101
+ log('discoverEnsembles failed:', err);
102
+ throw new Error(`Failed to discover ensembles: ${err instanceof Error ? err.message : String(err)}`);
103
+ }
104
+ },
105
+ async deliverMaestroMessage(input) {
106
+ try {
107
+ const handle = await (0, resolve_1.resolveSession)(client, input.ensemble, input.to);
108
+ if (!handle) {
109
+ return { success: false, error: `Player '${input.to}' not found in ensemble '${input.ensemble}'` };
110
+ }
111
+ await handle.signal('receiveMessage', {
112
+ from: input.source,
113
+ text: input.text,
114
+ isMaestro: true,
115
+ });
116
+ return { success: true };
117
+ }
118
+ catch (err) {
119
+ const msg = err instanceof Error ? err.message : String(err);
120
+ log('deliverMaestroMessage failed:', msg);
121
+ return { success: false, error: msg };
122
+ }
123
+ },
124
+ async fetchPlayerMessages(input) {
125
+ try {
126
+ const handle = await (0, resolve_1.resolveSession)(client, input.ensemble, input.playerId);
127
+ if (!handle) {
128
+ return { success: false, messages: [], error: `Player '${input.playerId}' not found in ensemble '${input.ensemble}'` };
129
+ }
130
+ const received = await handle.query('allMessages');
131
+ const sent = await handle.query('allSentMessages');
132
+ // Merge into a single timeline sorted by timestamp
133
+ const merged = [
134
+ ...received.map((m) => ({ ...m, direction: 'received' })),
135
+ ...sent.map((m) => ({ ...m, direction: 'sent' })),
136
+ ];
137
+ merged.sort((a, b) => a.timestamp.localeCompare(b.timestamp));
138
+ return { success: true, messages: merged };
139
+ }
140
+ catch (err) {
141
+ const msg = err instanceof Error ? err.message : String(err);
142
+ log('fetchPlayerMessages failed (soft):', msg);
143
+ return { success: false, messages: [], error: msg };
144
+ }
145
+ },
146
+ async fetchEnsembleChat(input) {
147
+ const { ensemble, knownCounts } = input;
148
+ const hw = knownCounts ?? types_1.ZERO_CHAT_HIGH_WATER;
149
+ const TRUNC = 500;
150
+ const truncate = (t) => t.length > TRUNC ? t.slice(0, TRUNC - 1) + '...' : t;
151
+ try {
152
+ const maestroHandle = client.workflow.getHandle((0, config_1.sessionWorkflowId)(ensemble, 'maestro'));
153
+ let conductorHandle = null;
154
+ let conductorId = '';
155
+ const sessions = await (0, resolve_1.scanEnsembleSessions)(client, ensemble);
156
+ const conductorSession = sessions.find(s => s.isConductor);
157
+ if (conductorSession) {
158
+ conductorHandle = client.workflow.getHandle(conductorSession.workflowId);
159
+ conductorId = conductorSession.playerId;
160
+ }
161
+ const [maestroRecvRes, maestroSentRes, condRecvRes, condSentRes] = await Promise.allSettled([
162
+ maestroHandle.query('allMessages'),
163
+ maestroHandle.query('allSentMessages'),
164
+ conductorHandle ? conductorHandle.query('allMessages') : Promise.resolve([]),
165
+ conductorHandle ? conductorHandle.query('allSentMessages') : Promise.resolve([]),
166
+ ]);
167
+ const maestroRecv = maestroRecvRes.status === 'fulfilled' ? maestroRecvRes.value : [];
168
+ const maestroSent = maestroSentRes.status === 'fulfilled' ? maestroSentRes.value : [];
169
+ const condRecv = condRecvRes.status === 'fulfilled' ? condRecvRes.value : [];
170
+ const condSent = condSentRes.status === 'fulfilled' ? condSentRes.value : [];
171
+ const newMessages = [];
172
+ // #357: each push site forwards the source's broadcastId (when
173
+ // present) onto the projected EnsembleChatMessage so the TUI's
174
+ // ConversationStream can fold fan-out deliveries into one row.
175
+ const maybeBroadcast = (m) => m.broadcastId !== undefined ? { broadcastId: m.broadcastId } : {};
176
+ for (const m of maestroRecv.slice(hw.maestroRecv)) {
177
+ newMessages.push({
178
+ id: m.id,
179
+ from: m.from,
180
+ to: 'maestro',
181
+ text: m.text,
182
+ timestamp: m.timestamp,
183
+ role: 'maestro-in',
184
+ ...maybeBroadcast(m),
185
+ });
186
+ }
187
+ for (const m of maestroSent.slice(hw.maestroSent)) {
188
+ newMessages.push({
189
+ id: m.id,
190
+ from: 'maestro',
191
+ to: m.to,
192
+ text: m.text,
193
+ timestamp: m.timestamp,
194
+ role: 'maestro-out',
195
+ ...maybeBroadcast(m),
196
+ });
197
+ }
198
+ for (const m of condRecv.slice(hw.conductorRecv)) {
199
+ if (m.from === 'maestro' || m.isMaestro)
200
+ continue; // Skip maestro<->conductor (already covered)
201
+ // Conductor self-reports (e.g. `tempo-conductor` calling `report`) land in the
202
+ // conductor's own `messages` array. Re-target them as inbound-to-maestro so the
203
+ // chat renders "tempo-conductor → maestro" instead of a confusing self-loop.
204
+ const isConductorSelfReport = m.from === conductorId;
205
+ newMessages.push({
206
+ id: `cond-${m.id}`,
207
+ from: m.from,
208
+ to: isConductorSelfReport ? 'maestro' : conductorId,
209
+ text: truncate(m.text),
210
+ timestamp: m.timestamp,
211
+ role: isConductorSelfReport ? 'maestro-in' : 'conductor-in',
212
+ ...maybeBroadcast(m),
213
+ });
214
+ }
215
+ for (const m of condSent.slice(hw.conductorSent)) {
216
+ if (m.to === 'maestro')
217
+ continue; // Skip conductor->maestro (already covered)
218
+ newMessages.push({
219
+ id: `cond-${m.id}`,
220
+ from: conductorId,
221
+ to: m.to,
222
+ text: truncate(m.text),
223
+ timestamp: m.timestamp,
224
+ role: 'conductor-out',
225
+ ...maybeBroadcast(m),
226
+ });
227
+ }
228
+ newMessages.sort((a, b) => a.timestamp.localeCompare(b.timestamp));
229
+ return {
230
+ success: true,
231
+ newMessages,
232
+ currentCounts: {
233
+ maestroRecv: maestroRecv.length,
234
+ maestroSent: maestroSent.length,
235
+ conductorRecv: condRecv.length,
236
+ conductorSent: condSent.length,
237
+ },
238
+ hasConductor: !!conductorHandle,
239
+ };
240
+ }
241
+ catch (err) {
242
+ const msg = err instanceof Error ? err.message : String(err);
243
+ log('fetchEnsembleChat failed:', msg);
244
+ return {
245
+ success: false,
246
+ newMessages: [],
247
+ currentCounts: hw,
248
+ hasConductor: false,
249
+ error: msg,
250
+ };
251
+ }
252
+ },
253
+ };
254
+ }
@@ -0,0 +1,188 @@
1
+ import { Client } from '@temporalio/client';
2
+ import { Config } from '../config';
3
+ import { AgentType, MockMode, DetachReason } from '../types';
4
+ import type { ClaudeCodeHeadlessPermissionMode } from '../adapters/claude-code-headless/types';
5
+ import { type HardTerminateInput, type HardTerminateResult } from './hard-terminate';
6
+ export interface DeliverCueInput {
7
+ ensemble: string;
8
+ fromPlayerId: string;
9
+ targetPlayerId: string;
10
+ message: string;
11
+ /**
12
+ * #357: Stable id shared across every fan-out target of one
13
+ * `broadcast` invocation. Threaded through to the target's
14
+ * `receiveMessage` signal so the stored Message carries it for
15
+ * later TUI grouping. `undefined` for non-broadcast direct cues.
16
+ */
17
+ broadcastId?: string;
18
+ /**
19
+ * #318: Coat-check ticket referencing content stashed via
20
+ * `coat_check_put`. Threaded through to the target's `receiveMessage`
21
+ * signal so the stored `Message` carries it and the recipient can
22
+ * pull the body via `coat_check_get`. `undefined` for cues without an
23
+ * attachment.
24
+ */
25
+ attachmentTicket?: string;
26
+ }
27
+ export interface DeliverReportInput {
28
+ ensemble: string;
29
+ fromPlayerId: string;
30
+ text: string;
31
+ reportType: 'result' | 'blocker' | 'question' | 'update';
32
+ }
33
+ export interface TerminateSessionInput {
34
+ ensemble: string;
35
+ targetPlayerId: string;
36
+ terminatedBy: string;
37
+ }
38
+ export interface StartRecruitedSessionInput {
39
+ ensemble: string;
40
+ targetName: string;
41
+ workDir: string;
42
+ isConductor: boolean;
43
+ initialMessage?: string;
44
+ fromPlayerId: string;
45
+ agent: AgentType;
46
+ systemPrompt?: string;
47
+ taskQueue: string;
48
+ agentDefinition?: string;
49
+ agentDefinitionDescription?: string;
50
+ allowedTools?: string[];
51
+ /** Custom claude binary path (from config.claudeBin). */
52
+ claudeBin?: string;
53
+ /** When true, spawn process but lock outbox and defer initial message until release (warm hold). */
54
+ held?: boolean;
55
+ /**
56
+ * #131 Phase C — model id for the claude-api adapter (e.g.
57
+ * `claude-opus-4-7`). Persisted onto `SessionMetadata.model` so restart
58
+ * can recover the original choice. Ignored when `agent !== 'claude-api'`.
59
+ */
60
+ model?: string;
61
+ }
62
+ export interface ReleasePlayerInput {
63
+ ensemble: string;
64
+ targetPlayerId: string;
65
+ }
66
+ export interface DeliverDetachInput {
67
+ ensemble: string;
68
+ targetPlayerId: string;
69
+ reason?: DetachReason;
70
+ deadlineMs?: number;
71
+ }
72
+ export interface DeliverDestroyInput {
73
+ ensemble: string;
74
+ targetPlayerId: string;
75
+ reason?: string;
76
+ terminatedBy: string;
77
+ notifyConductor?: boolean;
78
+ }
79
+ export interface DeliverRestartInput {
80
+ ensemble: string;
81
+ targetPlayerId: string;
82
+ invokerPlayerId: string;
83
+ force?: boolean;
84
+ host?: string;
85
+ fresh?: boolean;
86
+ contextMessages?: number;
87
+ /** #334 PR-2 — see {@link RestartOutboxEntry.loadFromState}. */
88
+ loadFromState?: boolean | string;
89
+ /** #334 PR-2 — see {@link RestartOutboxEntry.transcript}. */
90
+ transcript?: 'suppress' | 'replay';
91
+ }
92
+ export interface SpawnProcessInput {
93
+ targetName: string;
94
+ workDir: string;
95
+ isConductor: boolean;
96
+ agent: AgentType;
97
+ systemPrompt?: string;
98
+ ensemble: string;
99
+ temporalAddress: string;
100
+ temporalNamespace: string;
101
+ agentDefinition?: string;
102
+ agentDefinitionPath?: string;
103
+ nativeResolvable?: boolean;
104
+ /** When true, use --resume instead of -n (reconnect to existing session). */
105
+ resume?: boolean;
106
+ /** Session UUID — used for Copilot SDK sessionId and Claude Code --resume/--session-id. */
107
+ sessionId?: string;
108
+ /** Tool restrictions from the agent definition frontmatter. */
109
+ allowedTools?: string[];
110
+ /** Custom claude binary path (from config.claudeBin). */
111
+ claudeBin?: string;
112
+ /**
113
+ * PR-D attachment-lease handoff. When present, the workflow has already
114
+ * called `claimAttachment` and the child process should boot and invoke
115
+ * `startV2Lifecycle(workflowId, attachmentId)` to renew (rather than fresh-claim)
116
+ * the lease using the pre-assigned id. See design §8.2 step 5.
117
+ */
118
+ attachmentId?: string;
119
+ /** Pinned runId returned by `claimAttachment`; passed to the adapter for handle pinning. */
120
+ attachmentRunId?: string;
121
+ /** Resolved adapter descriptor id (e.g. 'claude-code', 'copilot'); mirrors SessionMetadata.adapterId. */
122
+ adapterId?: string;
123
+ /**
124
+ * Mock-adapter configuration (ADR 0014 §4.2). Only present when `agent === 'mock'`.
125
+ * Forwarded into the spawned subprocess as `AGENT_TEMPO_MOCK_MODE` /
126
+ * `AGENT_TEMPO_MOCK_SCENARIO` env vars. Chaos mode also reads
127
+ * `AGENT_TEMPO_MOCK_CHAOS_*` from the daemon's env (inherited via spawn).
128
+ */
129
+ mockMode?: MockMode;
130
+ mockScenario?: string;
131
+ /**
132
+ * #131 / #449 Phase C — model id for the headless adapters.
133
+ * - `claude-api`: bare Anthropic id (e.g. `claude-opus-4-7`); forwarded
134
+ * as `AGENT_TEMPO_API_MODEL`.
135
+ * - `opencode`: combined provider/model (e.g. `anthropic/claude-opus-4-7`,
136
+ * `openai/gpt-4o`); forwarded as `AGENT_TEMPO_OPENCODE_MODEL`.
137
+ * The spawn dispatcher inspects `agent` to pick the right env var. Only
138
+ * meaningful for those two adapters; ignored otherwise. Falls back inside
139
+ * the adapter to its respective env var → constants-pinned default.
140
+ */
141
+ model?: string;
142
+ /**
143
+ * #520 — claude-code-headless permission mode. Forwarded as
144
+ * `AGENT_TEMPO_PERMISSION_MODE` to the spawned adapter; the adapter
145
+ * passes it through to per-turn `claude -p --permission-mode <mode>`.
146
+ * Only meaningful when `agent === 'claude-code-headless'`. Mutually
147
+ * exclusive with {@link dangerouslySkipPermissions}. Type imported from
148
+ * the canonical {@link ClaudeCodeHeadlessPermissionMode} tuple.
149
+ */
150
+ permissionMode?: ClaudeCodeHeadlessPermissionMode;
151
+ /**
152
+ * #520 — claude-code-headless dangerous-skip-permissions opt-in.
153
+ * Forwarded as `AGENT_TEMPO_DANGEROUSLY_SKIP_PERMISSIONS=1`. Only
154
+ * meaningful when `agent === 'claude-code-headless'`. Mutually
155
+ * exclusive with {@link permissionMode}.
156
+ */
157
+ dangerouslySkipPermissions?: boolean;
158
+ }
159
+ export interface OutboxActivityResult {
160
+ success: boolean;
161
+ error?: string;
162
+ }
163
+ export interface RecruitResult extends OutboxActivityResult {
164
+ /** Session UUID assigned at recruit time. */
165
+ sessionId?: string;
166
+ }
167
+ export interface OutboxActivities {
168
+ deliverCue(input: DeliverCueInput): Promise<OutboxActivityResult>;
169
+ deliverReport(input: DeliverReportInput): Promise<OutboxActivityResult>;
170
+ terminateSession(input: TerminateSessionInput): Promise<OutboxActivityResult>;
171
+ startRecruitedSession(input: StartRecruitedSessionInput): Promise<RecruitResult>;
172
+ spawnProcess(input: SpawnProcessInput): Promise<OutboxActivityResult>;
173
+ releasePlayer(input: ReleasePlayerInput): Promise<OutboxActivityResult>;
174
+ deliverDetach(input: DeliverDetachInput): Promise<OutboxActivityResult>;
175
+ deliverDestroy(input: DeliverDestroyInput): Promise<OutboxActivityResult>;
176
+ deliverRestart(input: DeliverRestartInput): Promise<OutboxActivityResult>;
177
+ /**
178
+ * OS-level child-process-tree kill for the target session. Runs on the per-host
179
+ * task queue (`agent-tempo-{hostname}`) so the kill happens where the process
180
+ * actually lives. See `src/activities/hard-terminate.ts` and issue #159 Gap 2.
181
+ */
182
+ hardTerminateAttachment(input: HardTerminateInput): Promise<HardTerminateResult>;
183
+ }
184
+ /**
185
+ * Create outbox delivery activities bound to a Temporal client and config.
186
+ * The returned object is registered with the worker as activities.
187
+ */
188
+ export declare function createOutboxActivities(client: Client, config: Config): OutboxActivities;