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,87 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.createTempoClientWithSpawn = createTempoClientWithSpawn;
37
+ const core_1 = require("./core");
38
+ /**
39
+ * Invoke the `agent-tempo` CLI as a child process. The lazy
40
+ * `child_process` import keeps the dependency out of `core.ts` so
41
+ * `TempoClientCore` consumers never pay for it. Shared by the two spawn
42
+ * methods so they have identical process semantics (cwd default,
43
+ * timeout, shell-quoted args).
44
+ */
45
+ async function runTempoCli(args, workDir) {
46
+ const { execFile } = await Promise.resolve().then(() => __importStar(require('child_process')));
47
+ await new Promise((resolve, reject) => {
48
+ execFile('agent-tempo', args, {
49
+ cwd: workDir ?? process.cwd(),
50
+ timeout: 60_000,
51
+ shell: true,
52
+ }, (err, _stdout, stderr) => {
53
+ if (err)
54
+ reject(new Error(stderr?.toString().trim() || err.message || `agent-tempo ${args[0]} failed`));
55
+ else
56
+ resolve();
57
+ });
58
+ });
59
+ }
60
+ /**
61
+ * Build a `TempoClientWithSpawn` over a configured Temporal `Client`.
62
+ * Composes {@link createTempoClientCore} and adds the two TTY-bound
63
+ * spawn methods. Use this for TUI-side consumers; headless callers
64
+ * should use {@link createTempoClientCore} directly.
65
+ *
66
+ * `opts` (e.g. `subscribeDeps`) is forwarded to the Core factory.
67
+ */
68
+ function createTempoClientWithSpawn(client, opts = {}) {
69
+ const core = (0, core_1.createTempoClientCore)(client, opts);
70
+ return {
71
+ ...core,
72
+ async createEnsemble(opts) {
73
+ const args = opts.lineup
74
+ ? ['up', opts.ensemble, '--lineup', opts.lineup]
75
+ : ['up', opts.ensemble];
76
+ await runTempoCli(args, opts.workDir);
77
+ },
78
+ async spawnConductor(opts) {
79
+ // `agent-tempo up <ensemble>` is idempotent at the workflow layer —
80
+ // re-invoking it on a live ensemble reuses the existing conductor
81
+ // workflow (deterministic workflow ID). Distinct from
82
+ // `createEnsemble` so call sites read as "make sure the conductor
83
+ // terminal is running", not "create a new ensemble".
84
+ await runTempoCli(['up', opts.ensemble], opts.workDir);
85
+ },
86
+ };
87
+ }
@@ -0,0 +1,323 @@
1
+ import { z } from 'zod';
2
+ import { AgentType } from './types';
3
+ /** Environment variable name constants — use these instead of string literals. */
4
+ export declare const ENV: {
5
+ readonly ENSEMBLE: "AGENT_TEMPO_ENSEMBLE";
6
+ readonly CONDUCTOR: "AGENT_TEMPO_CONDUCTOR";
7
+ readonly PLAYER_NAME: "AGENT_TEMPO_PLAYER_NAME";
8
+ readonly TASK_QUEUE: "AGENT_TEMPO_TASK_QUEUE";
9
+ readonly BRIDGE_NAME: "COPILOT_BRIDGE_NAME";
10
+ readonly BRIDGE_MODE: "AGENT_TEMPO_BRIDGE_MODE";
11
+ readonly BRIDGE_MODEL: "COPILOT_BRIDGE_MODEL";
12
+ readonly BRIDGE_SESSION_ID: "COPILOT_BRIDGE_SESSION_ID";
13
+ readonly TEMPORAL_ADDRESS: "TEMPORAL_ADDRESS";
14
+ readonly TEMPORAL_NAMESPACE: "TEMPORAL_NAMESPACE";
15
+ readonly TEMPORAL_API_KEY: "TEMPORAL_API_KEY";
16
+ readonly TEMPORAL_TLS_CERT_PATH: "TEMPORAL_TLS_CERT_PATH";
17
+ readonly TEMPORAL_TLS_KEY_PATH: "TEMPORAL_TLS_KEY_PATH";
18
+ readonly DEFAULT_AGENT: "AGENT_TEMPO_DEFAULT_AGENT";
19
+ readonly PLAYER_TYPE: "AGENT_TEMPO_PLAYER_TYPE";
20
+ readonly CLAUDE_BIN: "AGENT_TEMPO_CLAUDE_BIN";
21
+ /**
22
+ * #131 Phase C — claude-api adapter model override. Recruit-arg takes
23
+ * precedence; this env var is the next fallback before the constants-pinned
24
+ * default (`claude-opus-4-7`). Ignored by other adapters.
25
+ */
26
+ readonly API_MODEL: "AGENT_TEMPO_API_MODEL";
27
+ /**
28
+ * #449 Phase C — opencode adapter model override. Distinct from
29
+ * `API_MODEL` to keep namespaces clean: claude-api is Anthropic-only
30
+ * with bare model ids (`claude-opus-4-7`); opencode takes combined
31
+ * `provider/model` strings (`anthropic/claude-opus-4-7`,
32
+ * `openai/gpt-4o`, `ollama/llama3`, …). Recruit-arg precedence:
33
+ * recruit `model` arg → this env var → `DEFAULT_MODEL` constant.
34
+ */
35
+ readonly OPENCODE_MODEL: "AGENT_TEMPO_OPENCODE_MODEL";
36
+ /**
37
+ * #520 — claude-code-headless permission mode. Forwarded to `claude -p
38
+ * --permission-mode <mode>`. Recruit-arg `permissionMode` takes precedence;
39
+ * this env var is the fallback before the constants-pinned default
40
+ * (`'acceptEdits'`). Mutually exclusive with
41
+ * {@link DANGEROUSLY_SKIP_PERMISSIONS}.
42
+ */
43
+ readonly PERMISSION_MODE: "AGENT_TEMPO_PERMISSION_MODE";
44
+ /**
45
+ * #520 — claude-code-headless dangerous-skip-permissions opt-in. When set
46
+ * to `'1'`, the adapter passes `--dangerously-skip-permissions` to
47
+ * `claude -p` instead of `--permission-mode`. Use only in trusted /
48
+ * sandboxed contexts. Mutually exclusive with {@link PERMISSION_MODE}.
49
+ */
50
+ readonly DANGEROUSLY_SKIP_PERMISSIONS: "AGENT_TEMPO_DANGEROUSLY_SKIP_PERMISSIONS";
51
+ /**
52
+ * v0.25 PR-D attachment resume plumbing. When `restart` / `migrate`
53
+ * enqueues a spawn outbox entry, the workflow passes the pre-claimed
54
+ * `attachmentId` + pinned `runId` + resolved `adapterId` through the spawn
55
+ * activity into the child process env. The child's adapter reads these in
56
+ * `startV2Lifecycle` to renew (rather than freshly claim) the existing lease,
57
+ * so there is no race window between the workflow's claim and the adapter
58
+ * boot. Absent on first-recruit spawn (fresh claim path).
59
+ */
60
+ readonly ATTACHMENT_ID: "AGENT_TEMPO_ATTACHMENT_ID";
61
+ readonly ATTACHMENT_RUN_ID: "AGENT_TEMPO_ATTACHMENT_RUN_ID";
62
+ readonly ADAPTER_ID: "AGENT_TEMPO_ADAPTER_ID";
63
+ /**
64
+ * Daemon HTTP/SSE event source (#94, #95). See SSE-PROTOCOL.md §1, §3.
65
+ * `HTTP_BIND` defaults to `127.0.0.1`. Setting to `0.0.0.0` forces
66
+ * bearer mode. `DAEMON_PORT` defaults to `8473` (the `t-e-m-p-o`
67
+ * mnemonic; not IANA-registered). `CORS_ORIGINS` is a comma-separated
68
+ * explicit allowlist (no wildcards) — only consulted in bearer mode.
69
+ * `SSE_MAX_CONNECTIONS` caps live SSE subscribers (PR-2; defaults 100).
70
+ */
71
+ readonly HTTP_BIND: "AGENT_TEMPO_HTTP_BIND";
72
+ readonly DAEMON_PORT: "AGENT_TEMPO_DAEMON_PORT";
73
+ readonly CORS_ORIGINS: "AGENT_TEMPO_CORS_ORIGINS";
74
+ readonly SSE_MAX_CONNECTIONS: "AGENT_TEMPO_SSE_MAX_CONNECTIONS";
75
+ /**
76
+ * Dev profile gate (ADR 0014 §5.2). One source of truth — every layer
77
+ * (paths, namespace, port, task queue, banner, registry gating) consults
78
+ * `isDevMode()` rather than reading the env var directly. The `--dev`
79
+ * top-level CLI flag in `src/cli.ts` sets this to `'1'` before any other
80
+ * module loads (see `src/cli/dev-mode-bootstrap.ts`).
81
+ */
82
+ readonly DEV_MODE: "AGENT_TEMPO_DEV_MODE";
83
+ /**
84
+ * Escape hatch for triple-isolated environments (ADR 0014 §5.3). When
85
+ * set, `resolveTempoHome()` returns this path verbatim — bypassing both
86
+ * the production default and the dev-mode default. Lets a power user
87
+ * coordinate three or more parallel agent-tempo profiles on one box.
88
+ */
89
+ readonly DEV_HOME_OVERRIDE: "AGENT_TEMPO_HOME_OVERRIDE";
90
+ };
91
+ export interface Config {
92
+ temporalAddress: string;
93
+ temporalNamespace: string;
94
+ temporalApiKey?: string;
95
+ temporalTlsCertPath?: string;
96
+ temporalTlsKeyPath?: string;
97
+ defaultAgent: AgentType;
98
+ claudeBin?: string;
99
+ taskQueue: string;
100
+ ensemble: string;
101
+ }
102
+ /** Persisted config file fields (stored in ~/.agent-tempo/config.json). */
103
+ export interface PersistedConfig {
104
+ temporalAddress?: string;
105
+ temporalNamespace?: string;
106
+ temporalApiKey?: string;
107
+ temporalTlsCertPath?: string;
108
+ temporalTlsKeyPath?: string;
109
+ defaultAgent?: AgentType;
110
+ claudeBin?: string;
111
+ /**
112
+ * Bearer token for the daemon's HTTP/SSE event source (#94, #95,
113
+ * SSE-PROTOCOL.md §3.1). Auto-generated on first daemon boot when
114
+ * bearer mode is required (`AGENT_TEMPO_HTTP_BIND` non-loopback OR
115
+ * a request with a non-loopback `Origin`) and no token is set:
116
+ * `crypto.randomBytes(32).toString('base64url')`, 0600 on POSIX.
117
+ * Rotation = delete this field; next daemon boot regenerates.
118
+ */
119
+ httpToken?: string;
120
+ }
121
+ /**
122
+ * Dev profile defaults — one switch (`--dev` top-level flag, or
123
+ * `AGENT_TEMPO_DEV_MODE=1` env var) flips four isolation axes at once
124
+ * (ADR 0014 §5.1). Production stays on the existing defaults.
125
+ */
126
+ export declare const DEV_HOME_DIR_NAME = ".agent-tempo-dev";
127
+ export declare const PROD_HOME_DIR_NAME = ".agent-tempo";
128
+ export declare const DEV_TEMPORAL_NAMESPACE = "agent-tempo-dev";
129
+ export declare const PROD_TEMPORAL_NAMESPACE = "default";
130
+ export declare const DEV_TASK_QUEUE = "agent-tempo-dev";
131
+ export declare const PROD_TASK_QUEUE = "agent-tempo";
132
+ export declare const DEV_DAEMON_PORT = 8474;
133
+ export declare const PROD_DAEMON_PORT = 8473;
134
+ /**
135
+ * Single source of truth for the dev profile gate (ADR 0014 §5.2).
136
+ * Every layer that needs to switch behaviour consults this helper; future
137
+ * staging/ci/demo profiles would follow the same `isStagingMode()` pattern.
138
+ *
139
+ * Recognises `'1'` and `'true'` (case-insensitive) so users can write
140
+ * either `AGENT_TEMPO_DEV_MODE=1` or `AGENT_TEMPO_DEV_MODE=true`. Any
141
+ * other value (including the empty string) is treated as production.
142
+ *
143
+ * **Important**: when the `--dev` CLI flag is used, the env var must be
144
+ * set BEFORE `src/config.ts` is first imported (see
145
+ * `src/cli/dev-mode-bootstrap.ts`) so the module-load-time `AGENT_TEMPO_HOME`
146
+ * constant resolves to the dev profile.
147
+ */
148
+ export declare function isDevMode(): boolean;
149
+ /**
150
+ * Resolve the agent-tempo home directory. Three-tier precedence:
151
+ * 1. `AGENT_TEMPO_HOME_OVERRIDE` env — explicit override (multi-isolation
152
+ * escape hatch; ADR 0014 §5.3).
153
+ * 2. Dev mode (`AGENT_TEMPO_DEV_MODE=1`): `~/.agent-tempo-dev/`.
154
+ * 3. Production default: `~/.agent-tempo/`.
155
+ *
156
+ * Evaluated once at module load time; downstream callers consume the
157
+ * exported `AGENT_TEMPO_HOME` constant. The bootstrap module guarantees
158
+ * the env var is set before this function first runs.
159
+ *
160
+ * Exported (rather than file-private) so unit tests can exercise the
161
+ * three-tier precedence directly without resorting to `vi.resetModules()`
162
+ * gymnastics. Production code should consume {@link AGENT_TEMPO_HOME}
163
+ * — calling this helper per-request would re-read env on every call.
164
+ */
165
+ export declare function resolveTempoHome(): string;
166
+ export declare const AGENT_TEMPO_HOME: string;
167
+ export declare const CONFIG_FILE_PATH: string;
168
+ /**
169
+ * Daemon-level configuration persisted in `~/.agent-tempo/config.json`
170
+ * alongside the existing `PersistedConfig` fields.
171
+ *
172
+ * `restorePolicy` is the effective off-switch for daemon reconcile-on-boot
173
+ * auto-restore — there is no feature flag. `"never"` disables all automatic
174
+ * restoration and leaves the CLI `restore` command as the sole revive path.
175
+ */
176
+ export declare const CleanupPolicySchema: z.ZodDefault<z.ZodObject<{
177
+ detachedMaxAgeDays: z.ZodDefault<z.ZodNumber>;
178
+ destroyedMaxAgeDays: z.ZodDefault<z.ZodNumber>;
179
+ }, "strip", z.ZodTypeAny, {
180
+ detachedMaxAgeDays: number;
181
+ destroyedMaxAgeDays: number;
182
+ }, {
183
+ detachedMaxAgeDays?: number | undefined;
184
+ destroyedMaxAgeDays?: number | undefined;
185
+ }>>;
186
+ export declare const DaemonConfigSchema: z.ZodDefault<z.ZodObject<{
187
+ restorePolicy: z.ZodDefault<z.ZodEnum<["auto", "prompt", "never"]>>;
188
+ autoRestoreMaxAgeHours: z.ZodDefault<z.ZodNumber>;
189
+ /**
190
+ * Ensemble allowlist for `auto` restore. Empty array means "all ensembles
191
+ * allowed". Each entry is a simple prefix match: trailing `*` is stripped
192
+ * and the remaining string is compared with `String.startsWith()`. Entries
193
+ * without trailing `*` are exact matches. See {@link matchEnsembleGlob}.
194
+ */
195
+ autoRestoreEnsembles: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
196
+ cleanupPolicy: z.ZodDefault<z.ZodObject<{
197
+ detachedMaxAgeDays: z.ZodDefault<z.ZodNumber>;
198
+ destroyedMaxAgeDays: z.ZodDefault<z.ZodNumber>;
199
+ }, "strip", z.ZodTypeAny, {
200
+ detachedMaxAgeDays: number;
201
+ destroyedMaxAgeDays: number;
202
+ }, {
203
+ detachedMaxAgeDays?: number | undefined;
204
+ destroyedMaxAgeDays?: number | undefined;
205
+ }>>;
206
+ }, "strip", z.ZodTypeAny, {
207
+ restorePolicy: "auto" | "prompt" | "never";
208
+ autoRestoreMaxAgeHours: number;
209
+ autoRestoreEnsembles: string[];
210
+ cleanupPolicy: {
211
+ detachedMaxAgeDays: number;
212
+ destroyedMaxAgeDays: number;
213
+ };
214
+ }, {
215
+ restorePolicy?: "auto" | "prompt" | "never" | undefined;
216
+ autoRestoreMaxAgeHours?: number | undefined;
217
+ autoRestoreEnsembles?: string[] | undefined;
218
+ cleanupPolicy?: {
219
+ detachedMaxAgeDays?: number | undefined;
220
+ destroyedMaxAgeDays?: number | undefined;
221
+ } | undefined;
222
+ }>>;
223
+ /** Inferred config type matching {@link DaemonConfigSchema}. */
224
+ export type DaemonConfig = z.infer<typeof DaemonConfigSchema>;
225
+ /**
226
+ * Load `~/.agent-tempo/config.json` and extract the daemon-level fields.
227
+ * Returns fully-defaulted `DaemonConfig` if the file is missing, unreadable,
228
+ * or contains no daemon fields. Partial configs (user sets one field only)
229
+ * merge with defaults via Zod's `.default()` per-field behaviour.
230
+ *
231
+ * Invalid JSON logs a warning and falls back to defaults rather than
232
+ * crashing — the daemon must boot even if the user has a mangled config.
233
+ */
234
+ export declare function loadDaemonConfig(): DaemonConfig;
235
+ /**
236
+ * Simple-prefix ensemble match — PR-E §8 answer 5. No glob library dep.
237
+ *
238
+ * - Pattern ends with `*` → strip the `*`, match by `ensemble.startsWith(prefix)`.
239
+ * - Pattern without trailing `*` → exact equality.
240
+ * - Empty pattern list → allow all (caller decides; this helper returns `false`).
241
+ */
242
+ export declare function matchEnsembleGlob(ensemble: string, pattern: string): boolean;
243
+ /**
244
+ * Check an ensemble name against a list of patterns.
245
+ * Empty list → allow all (returns `true`).
246
+ * Any matching pattern → allow (returns `true`).
247
+ * No matches → deny (returns `false`).
248
+ */
249
+ export declare function isEnsembleAllowed(ensemble: string, allowlist: string[]): boolean;
250
+ /** Load ~/.agent-tempo/config.json if it exists. */
251
+ export declare function loadConfigFile(): PersistedConfig;
252
+ /** Save config to ~/.agent-tempo/config.json with restrictive permissions. */
253
+ export declare function saveConfigFile(config: PersistedConfig): void;
254
+ /**
255
+ * Load Temporal CLI config from ~/.config/temporalio/temporal.yaml as a fallback.
256
+ * The Temporal CLI stores named environments there. We read the active environment
257
+ * or the first one we find.
258
+ *
259
+ * Format is simple YAML — we parse it with basic string operations.
260
+ */
261
+ export declare function loadTemporalCliConfig(): PersistedConfig;
262
+ /**
263
+ * Minimal YAML parser for Temporal CLI config files.
264
+ * Handles the subset of YAML used by the Temporal CLI:
265
+ * active-env: local
266
+ * env:
267
+ * local:
268
+ * address: localhost:7233
269
+ * namespace: default
270
+ * api-key: ...
271
+ * tls-cert-path: ...
272
+ * tls-key-path: ...
273
+ */
274
+ export declare function parseTemporalYaml(content: string): PersistedConfig;
275
+ /**
276
+ * Parse an agent value against the {@link AgentType} union.
277
+ * Throws when `value` is present but not a valid agent; returns `'claude'`
278
+ * for empty/unset values so callers can use it as a source-aware default.
279
+ */
280
+ export declare function parseAgent(value: string | undefined, source: ConfigSource): AgentType;
281
+ /** CLI flag overrides — passed down from the arg parser. */
282
+ export interface CliOverrides {
283
+ temporalAddress?: string;
284
+ temporalNamespace?: string;
285
+ temporalApiKey?: string;
286
+ temporalTlsCertPath?: string;
287
+ temporalTlsKeyPath?: string;
288
+ defaultAgent?: AgentType;
289
+ }
290
+ /**
291
+ * Build a resolved Config using the priority chain:
292
+ * CLI flag > env var > agent-tempo config file > temporal CLI config > defaults
293
+ *
294
+ * In dev mode, `TEMPORAL_NAMESPACE` and `TEMPORAL_ADDRESS` env vars are
295
+ * dropped from the chain — see {@link DEV_ENV_CARVE_OUT}.
296
+ */
297
+ export declare function getConfig(overrides?: CliOverrides): Config;
298
+ export type ConfigSource = 'flag' | 'env' | 'config' | 'temporal-cli' | 'default' | 'none';
299
+ export interface ConfigWithSources {
300
+ config: Config;
301
+ sources: Record<string, ConfigSource>;
302
+ }
303
+ /**
304
+ * Like getConfig(), but also returns which source each value came from.
305
+ * Used by `agent-tempo config show` to help users debug.
306
+ *
307
+ * Mirrors {@link getConfig}'s dev-mode env-var carve-out — without this
308
+ * parity the user would see `env: TEMPORAL_NAMESPACE=default` in
309
+ * `config show` while the daemon happily ignores it.
310
+ */
311
+ export declare function getConfigWithSources(overrides?: CliOverrides): ConfigWithSources;
312
+ /** Build a per-host task queue name for cross-machine activities: {taskQueue}-{hostname} */
313
+ export declare function hostTaskQueue(taskQueue: string, hostname: string): string;
314
+ /** Build a workflow ID for a player session: agent-session-{ensemble}-{playerId} */
315
+ export declare function sessionWorkflowId(ensemble: string, playerId: string): string;
316
+ /** Build a workflow ID for a conductor: agent-session-{ensemble}-conductor */
317
+ export declare function conductorWorkflowId(ensemble: string): string;
318
+ /** Build a workflow ID for the scheduler: agent-scheduler-{ensemble} */
319
+ export declare function schedulerWorkflowId(ensemble: string): string;
320
+ /** Build a workflow ID for the Maestro: agent-maestro-{ensemble} */
321
+ export declare function maestroWorkflowId(ensemble: string): string;
322
+ /** Workflow ID for the single global Maestro instance. */
323
+ export declare const GLOBAL_MAESTRO_WORKFLOW_ID = "agent-maestro-global";