@stoneforge/smithy 0.1.0

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 (497) hide show
  1. package/LICENSE +13 -0
  2. package/README.md +114 -0
  3. package/dist/api/index.d.ts +7 -0
  4. package/dist/api/index.d.ts.map +1 -0
  5. package/dist/api/index.js +7 -0
  6. package/dist/api/index.js.map +1 -0
  7. package/dist/api/orchestrator-api.d.ts +153 -0
  8. package/dist/api/orchestrator-api.d.ts.map +1 -0
  9. package/dist/api/orchestrator-api.js +374 -0
  10. package/dist/api/orchestrator-api.js.map +1 -0
  11. package/dist/bin/sf.d.ts +3 -0
  12. package/dist/bin/sf.d.ts.map +1 -0
  13. package/dist/bin/sf.js +10 -0
  14. package/dist/bin/sf.js.map +1 -0
  15. package/dist/cli/commands/agent.d.ts +20 -0
  16. package/dist/cli/commands/agent.d.ts.map +1 -0
  17. package/dist/cli/commands/agent.js +861 -0
  18. package/dist/cli/commands/agent.js.map +1 -0
  19. package/dist/cli/commands/daemon.d.ts +14 -0
  20. package/dist/cli/commands/daemon.d.ts.map +1 -0
  21. package/dist/cli/commands/daemon.js +272 -0
  22. package/dist/cli/commands/daemon.js.map +1 -0
  23. package/dist/cli/commands/dispatch.d.ts +9 -0
  24. package/dist/cli/commands/dispatch.d.ts.map +1 -0
  25. package/dist/cli/commands/dispatch.js +128 -0
  26. package/dist/cli/commands/dispatch.js.map +1 -0
  27. package/dist/cli/commands/merge.d.ts +11 -0
  28. package/dist/cli/commands/merge.d.ts.map +1 -0
  29. package/dist/cli/commands/merge.js +246 -0
  30. package/dist/cli/commands/merge.js.map +1 -0
  31. package/dist/cli/commands/pool.d.ts +21 -0
  32. package/dist/cli/commands/pool.d.ts.map +1 -0
  33. package/dist/cli/commands/pool.js +762 -0
  34. package/dist/cli/commands/pool.js.map +1 -0
  35. package/dist/cli/commands/serve.d.ts +54 -0
  36. package/dist/cli/commands/serve.d.ts.map +1 -0
  37. package/dist/cli/commands/serve.js +57 -0
  38. package/dist/cli/commands/serve.js.map +1 -0
  39. package/dist/cli/commands/task.d.ts +36 -0
  40. package/dist/cli/commands/task.d.ts.map +1 -0
  41. package/dist/cli/commands/task.js +889 -0
  42. package/dist/cli/commands/task.js.map +1 -0
  43. package/dist/cli/commands/test-orchestration.d.ts +32 -0
  44. package/dist/cli/commands/test-orchestration.d.ts.map +1 -0
  45. package/dist/cli/commands/test-orchestration.js +392 -0
  46. package/dist/cli/commands/test-orchestration.js.map +1 -0
  47. package/dist/cli/index.d.ts +13 -0
  48. package/dist/cli/index.d.ts.map +1 -0
  49. package/dist/cli/index.js +15 -0
  50. package/dist/cli/index.js.map +1 -0
  51. package/dist/cli/plugin.d.ts +23 -0
  52. package/dist/cli/plugin.d.ts.map +1 -0
  53. package/dist/cli/plugin.js +36 -0
  54. package/dist/cli/plugin.js.map +1 -0
  55. package/dist/git/index.d.ts +10 -0
  56. package/dist/git/index.d.ts.map +1 -0
  57. package/dist/git/index.js +12 -0
  58. package/dist/git/index.js.map +1 -0
  59. package/dist/git/merge.d.ts +79 -0
  60. package/dist/git/merge.d.ts.map +1 -0
  61. package/dist/git/merge.js +254 -0
  62. package/dist/git/merge.js.map +1 -0
  63. package/dist/git/worktree-manager.d.ts +299 -0
  64. package/dist/git/worktree-manager.d.ts.map +1 -0
  65. package/dist/git/worktree-manager.js +744 -0
  66. package/dist/git/worktree-manager.js.map +1 -0
  67. package/dist/index.d.ts +24 -0
  68. package/dist/index.d.ts.map +1 -0
  69. package/dist/index.js +31 -0
  70. package/dist/index.js.map +1 -0
  71. package/dist/prompts/director.md +272 -0
  72. package/dist/prompts/index.d.ts +100 -0
  73. package/dist/prompts/index.d.ts.map +1 -0
  74. package/dist/prompts/index.js +294 -0
  75. package/dist/prompts/index.js.map +1 -0
  76. package/dist/prompts/message-triage.md +50 -0
  77. package/dist/prompts/persistent-worker.md +240 -0
  78. package/dist/prompts/steward-base.md +64 -0
  79. package/dist/prompts/steward-docs.md +118 -0
  80. package/dist/prompts/steward-health.md +39 -0
  81. package/dist/prompts/steward-merge.md +168 -0
  82. package/dist/prompts/steward-ops.md +28 -0
  83. package/dist/prompts/steward-reminder.md +26 -0
  84. package/dist/prompts/worker.md +282 -0
  85. package/dist/providers/claude/headless.d.ts +18 -0
  86. package/dist/providers/claude/headless.d.ts.map +1 -0
  87. package/dist/providers/claude/headless.js +307 -0
  88. package/dist/providers/claude/headless.js.map +1 -0
  89. package/dist/providers/claude/index.d.ts +24 -0
  90. package/dist/providers/claude/index.d.ts.map +1 -0
  91. package/dist/providers/claude/index.js +80 -0
  92. package/dist/providers/claude/index.js.map +1 -0
  93. package/dist/providers/claude/interactive.d.ts +21 -0
  94. package/dist/providers/claude/interactive.d.ts.map +1 -0
  95. package/dist/providers/claude/interactive.js +142 -0
  96. package/dist/providers/claude/interactive.js.map +1 -0
  97. package/dist/providers/codex/event-mapper.d.ts +91 -0
  98. package/dist/providers/codex/event-mapper.d.ts.map +1 -0
  99. package/dist/providers/codex/event-mapper.js +299 -0
  100. package/dist/providers/codex/event-mapper.js.map +1 -0
  101. package/dist/providers/codex/headless.d.ts +20 -0
  102. package/dist/providers/codex/headless.d.ts.map +1 -0
  103. package/dist/providers/codex/headless.js +174 -0
  104. package/dist/providers/codex/headless.js.map +1 -0
  105. package/dist/providers/codex/index.d.ts +30 -0
  106. package/dist/providers/codex/index.d.ts.map +1 -0
  107. package/dist/providers/codex/index.js +55 -0
  108. package/dist/providers/codex/index.js.map +1 -0
  109. package/dist/providers/codex/interactive.d.ts +21 -0
  110. package/dist/providers/codex/interactive.d.ts.map +1 -0
  111. package/dist/providers/codex/interactive.js +141 -0
  112. package/dist/providers/codex/interactive.js.map +1 -0
  113. package/dist/providers/codex/jsonrpc-client.d.ts +52 -0
  114. package/dist/providers/codex/jsonrpc-client.d.ts.map +1 -0
  115. package/dist/providers/codex/jsonrpc-client.js +141 -0
  116. package/dist/providers/codex/jsonrpc-client.js.map +1 -0
  117. package/dist/providers/codex/server-manager.d.ts +100 -0
  118. package/dist/providers/codex/server-manager.d.ts.map +1 -0
  119. package/dist/providers/codex/server-manager.js +153 -0
  120. package/dist/providers/codex/server-manager.js.map +1 -0
  121. package/dist/providers/index.d.ts +15 -0
  122. package/dist/providers/index.d.ts.map +1 -0
  123. package/dist/providers/index.js +19 -0
  124. package/dist/providers/index.js.map +1 -0
  125. package/dist/providers/opencode/async-queue.d.ts +21 -0
  126. package/dist/providers/opencode/async-queue.d.ts.map +1 -0
  127. package/dist/providers/opencode/async-queue.js +51 -0
  128. package/dist/providers/opencode/async-queue.js.map +1 -0
  129. package/dist/providers/opencode/event-mapper.d.ts +132 -0
  130. package/dist/providers/opencode/event-mapper.d.ts.map +1 -0
  131. package/dist/providers/opencode/event-mapper.js +204 -0
  132. package/dist/providers/opencode/event-mapper.js.map +1 -0
  133. package/dist/providers/opencode/headless.d.ts +25 -0
  134. package/dist/providers/opencode/headless.d.ts.map +1 -0
  135. package/dist/providers/opencode/headless.js +190 -0
  136. package/dist/providers/opencode/headless.js.map +1 -0
  137. package/dist/providers/opencode/index.d.ts +33 -0
  138. package/dist/providers/opencode/index.d.ts.map +1 -0
  139. package/dist/providers/opencode/index.js +42 -0
  140. package/dist/providers/opencode/index.js.map +1 -0
  141. package/dist/providers/opencode/interactive.d.ts +21 -0
  142. package/dist/providers/opencode/interactive.d.ts.map +1 -0
  143. package/dist/providers/opencode/interactive.js +135 -0
  144. package/dist/providers/opencode/interactive.js.map +1 -0
  145. package/dist/providers/opencode/server-manager.d.ts +145 -0
  146. package/dist/providers/opencode/server-manager.d.ts.map +1 -0
  147. package/dist/providers/opencode/server-manager.js +163 -0
  148. package/dist/providers/opencode/server-manager.js.map +1 -0
  149. package/dist/providers/registry.d.ts +38 -0
  150. package/dist/providers/registry.d.ts.map +1 -0
  151. package/dist/providers/registry.js +82 -0
  152. package/dist/providers/registry.js.map +1 -0
  153. package/dist/providers/types.d.ts +144 -0
  154. package/dist/providers/types.d.ts.map +1 -0
  155. package/dist/providers/types.js +25 -0
  156. package/dist/providers/types.js.map +1 -0
  157. package/dist/runtime/event-utils.d.ts +8 -0
  158. package/dist/runtime/event-utils.d.ts.map +1 -0
  159. package/dist/runtime/event-utils.js +23 -0
  160. package/dist/runtime/event-utils.js.map +1 -0
  161. package/dist/runtime/handoff.d.ts +195 -0
  162. package/dist/runtime/handoff.d.ts.map +1 -0
  163. package/dist/runtime/handoff.js +332 -0
  164. package/dist/runtime/handoff.js.map +1 -0
  165. package/dist/runtime/index.d.ts +17 -0
  166. package/dist/runtime/index.d.ts.map +1 -0
  167. package/dist/runtime/index.js +60 -0
  168. package/dist/runtime/index.js.map +1 -0
  169. package/dist/runtime/message-mapper.d.ts +99 -0
  170. package/dist/runtime/message-mapper.d.ts.map +1 -0
  171. package/dist/runtime/message-mapper.js +202 -0
  172. package/dist/runtime/message-mapper.js.map +1 -0
  173. package/dist/runtime/predecessor-query.d.ts +212 -0
  174. package/dist/runtime/predecessor-query.d.ts.map +1 -0
  175. package/dist/runtime/predecessor-query.js +283 -0
  176. package/dist/runtime/predecessor-query.js.map +1 -0
  177. package/dist/runtime/session-manager.d.ts +466 -0
  178. package/dist/runtime/session-manager.d.ts.map +1 -0
  179. package/dist/runtime/session-manager.js +986 -0
  180. package/dist/runtime/session-manager.js.map +1 -0
  181. package/dist/runtime/spawner.d.ts +407 -0
  182. package/dist/runtime/spawner.d.ts.map +1 -0
  183. package/dist/runtime/spawner.js +781 -0
  184. package/dist/runtime/spawner.js.map +1 -0
  185. package/dist/server/config.d.ts +22 -0
  186. package/dist/server/config.d.ts.map +1 -0
  187. package/dist/server/config.js +59 -0
  188. package/dist/server/config.js.map +1 -0
  189. package/dist/server/daemon-state.d.ts +50 -0
  190. package/dist/server/daemon-state.d.ts.map +1 -0
  191. package/dist/server/daemon-state.js +100 -0
  192. package/dist/server/daemon-state.js.map +1 -0
  193. package/dist/server/events-websocket.d.ts +32 -0
  194. package/dist/server/events-websocket.d.ts.map +1 -0
  195. package/dist/server/events-websocket.js +96 -0
  196. package/dist/server/events-websocket.js.map +1 -0
  197. package/dist/server/formatters.d.ts +94 -0
  198. package/dist/server/formatters.d.ts.map +1 -0
  199. package/dist/server/formatters.js +142 -0
  200. package/dist/server/formatters.js.map +1 -0
  201. package/dist/server/index.d.ts +17 -0
  202. package/dist/server/index.d.ts.map +1 -0
  203. package/dist/server/index.js +153 -0
  204. package/dist/server/index.js.map +1 -0
  205. package/dist/server/lsp-websocket.d.ts +33 -0
  206. package/dist/server/lsp-websocket.d.ts.map +1 -0
  207. package/dist/server/lsp-websocket.js +161 -0
  208. package/dist/server/lsp-websocket.js.map +1 -0
  209. package/dist/server/routes/agents.d.ts +9 -0
  210. package/dist/server/routes/agents.d.ts.map +1 -0
  211. package/dist/server/routes/agents.js +369 -0
  212. package/dist/server/routes/agents.js.map +1 -0
  213. package/dist/server/routes/daemon.d.ts +13 -0
  214. package/dist/server/routes/daemon.d.ts.map +1 -0
  215. package/dist/server/routes/daemon.js +187 -0
  216. package/dist/server/routes/daemon.js.map +1 -0
  217. package/dist/server/routes/events.d.ts +23 -0
  218. package/dist/server/routes/events.d.ts.map +1 -0
  219. package/dist/server/routes/events.js +282 -0
  220. package/dist/server/routes/events.js.map +1 -0
  221. package/dist/server/routes/extensions.d.ts +9 -0
  222. package/dist/server/routes/extensions.d.ts.map +1 -0
  223. package/dist/server/routes/extensions.js +202 -0
  224. package/dist/server/routes/extensions.js.map +1 -0
  225. package/dist/server/routes/health.d.ts +7 -0
  226. package/dist/server/routes/health.d.ts.map +1 -0
  227. package/dist/server/routes/health.js +33 -0
  228. package/dist/server/routes/health.js.map +1 -0
  229. package/dist/server/routes/index.d.ts +21 -0
  230. package/dist/server/routes/index.d.ts.map +1 -0
  231. package/dist/server/routes/index.js +21 -0
  232. package/dist/server/routes/index.js.map +1 -0
  233. package/dist/server/routes/lsp.d.ts +9 -0
  234. package/dist/server/routes/lsp.d.ts.map +1 -0
  235. package/dist/server/routes/lsp.js +50 -0
  236. package/dist/server/routes/lsp.js.map +1 -0
  237. package/dist/server/routes/plugins.d.ts +9 -0
  238. package/dist/server/routes/plugins.d.ts.map +1 -0
  239. package/dist/server/routes/plugins.js +109 -0
  240. package/dist/server/routes/plugins.js.map +1 -0
  241. package/dist/server/routes/pools.d.ts +9 -0
  242. package/dist/server/routes/pools.d.ts.map +1 -0
  243. package/dist/server/routes/pools.js +189 -0
  244. package/dist/server/routes/pools.js.map +1 -0
  245. package/dist/server/routes/scheduler.d.ts +9 -0
  246. package/dist/server/routes/scheduler.d.ts.map +1 -0
  247. package/dist/server/routes/scheduler.js +162 -0
  248. package/dist/server/routes/scheduler.js.map +1 -0
  249. package/dist/server/routes/sessions.d.ts +27 -0
  250. package/dist/server/routes/sessions.d.ts.map +1 -0
  251. package/dist/server/routes/sessions.js +773 -0
  252. package/dist/server/routes/sessions.js.map +1 -0
  253. package/dist/server/routes/tasks.d.ts +9 -0
  254. package/dist/server/routes/tasks.d.ts.map +1 -0
  255. package/dist/server/routes/tasks.js +954 -0
  256. package/dist/server/routes/tasks.js.map +1 -0
  257. package/dist/server/routes/upload.d.ts +8 -0
  258. package/dist/server/routes/upload.d.ts.map +1 -0
  259. package/dist/server/routes/upload.js +40 -0
  260. package/dist/server/routes/upload.js.map +1 -0
  261. package/dist/server/routes/workflows.d.ts +9 -0
  262. package/dist/server/routes/workflows.d.ts.map +1 -0
  263. package/dist/server/routes/workflows.js +532 -0
  264. package/dist/server/routes/workflows.js.map +1 -0
  265. package/dist/server/routes/workspace-files.d.ts +12 -0
  266. package/dist/server/routes/workspace-files.d.ts.map +1 -0
  267. package/dist/server/routes/workspace-files.js +520 -0
  268. package/dist/server/routes/workspace-files.js.map +1 -0
  269. package/dist/server/routes/worktrees.d.ts +9 -0
  270. package/dist/server/routes/worktrees.d.ts.map +1 -0
  271. package/dist/server/routes/worktrees.js +94 -0
  272. package/dist/server/routes/worktrees.js.map +1 -0
  273. package/dist/server/server.d.ts +14 -0
  274. package/dist/server/server.d.ts.map +1 -0
  275. package/dist/server/server.js +258 -0
  276. package/dist/server/server.js.map +1 -0
  277. package/dist/server/services/lsp-manager.d.ts +93 -0
  278. package/dist/server/services/lsp-manager.d.ts.map +1 -0
  279. package/dist/server/services/lsp-manager.js +291 -0
  280. package/dist/server/services/lsp-manager.js.map +1 -0
  281. package/dist/server/services/session-messages.d.ts +61 -0
  282. package/dist/server/services/session-messages.d.ts.map +1 -0
  283. package/dist/server/services/session-messages.js +101 -0
  284. package/dist/server/services/session-messages.js.map +1 -0
  285. package/dist/server/services.d.ts +35 -0
  286. package/dist/server/services.d.ts.map +1 -0
  287. package/dist/server/services.js +159 -0
  288. package/dist/server/services.js.map +1 -0
  289. package/dist/server/static.d.ts +18 -0
  290. package/dist/server/static.d.ts.map +1 -0
  291. package/dist/server/static.js +71 -0
  292. package/dist/server/static.js.map +1 -0
  293. package/dist/server/types.d.ts +20 -0
  294. package/dist/server/types.d.ts.map +1 -0
  295. package/dist/server/types.js +7 -0
  296. package/dist/server/types.js.map +1 -0
  297. package/dist/server/websocket.d.ts +16 -0
  298. package/dist/server/websocket.d.ts.map +1 -0
  299. package/dist/server/websocket.js +143 -0
  300. package/dist/server/websocket.js.map +1 -0
  301. package/dist/services/agent-pool-service.d.ts +181 -0
  302. package/dist/services/agent-pool-service.d.ts.map +1 -0
  303. package/dist/services/agent-pool-service.js +590 -0
  304. package/dist/services/agent-pool-service.js.map +1 -0
  305. package/dist/services/agent-registry.d.ts +185 -0
  306. package/dist/services/agent-registry.d.ts.map +1 -0
  307. package/dist/services/agent-registry.js +432 -0
  308. package/dist/services/agent-registry.js.map +1 -0
  309. package/dist/services/dispatch-daemon.d.ts +429 -0
  310. package/dist/services/dispatch-daemon.d.ts.map +1 -0
  311. package/dist/services/dispatch-daemon.js +1833 -0
  312. package/dist/services/dispatch-daemon.js.map +1 -0
  313. package/dist/services/dispatch-service.d.ts +148 -0
  314. package/dist/services/dispatch-service.d.ts.map +1 -0
  315. package/dist/services/dispatch-service.js +170 -0
  316. package/dist/services/dispatch-service.js.map +1 -0
  317. package/dist/services/docs-steward-service.d.ts +199 -0
  318. package/dist/services/docs-steward-service.d.ts.map +1 -0
  319. package/dist/services/docs-steward-service.js +599 -0
  320. package/dist/services/docs-steward-service.js.map +1 -0
  321. package/dist/services/health-steward-service.d.ts +446 -0
  322. package/dist/services/health-steward-service.d.ts.map +1 -0
  323. package/dist/services/health-steward-service.js +866 -0
  324. package/dist/services/health-steward-service.js.map +1 -0
  325. package/dist/services/index.d.ts +26 -0
  326. package/dist/services/index.d.ts.map +1 -0
  327. package/dist/services/index.js +111 -0
  328. package/dist/services/index.js.map +1 -0
  329. package/dist/services/merge-request-provider.d.ts +59 -0
  330. package/dist/services/merge-request-provider.d.ts.map +1 -0
  331. package/dist/services/merge-request-provider.js +89 -0
  332. package/dist/services/merge-request-provider.js.map +1 -0
  333. package/dist/services/merge-steward-service.d.ts +268 -0
  334. package/dist/services/merge-steward-service.d.ts.map +1 -0
  335. package/dist/services/merge-steward-service.js +568 -0
  336. package/dist/services/merge-steward-service.js.map +1 -0
  337. package/dist/services/plugin-executor.d.ts +247 -0
  338. package/dist/services/plugin-executor.d.ts.map +1 -0
  339. package/dist/services/plugin-executor.js +451 -0
  340. package/dist/services/plugin-executor.js.map +1 -0
  341. package/dist/services/role-definition-service.d.ts +117 -0
  342. package/dist/services/role-definition-service.d.ts.map +1 -0
  343. package/dist/services/role-definition-service.js +289 -0
  344. package/dist/services/role-definition-service.js.map +1 -0
  345. package/dist/services/steward-scheduler.d.ts +336 -0
  346. package/dist/services/steward-scheduler.d.ts.map +1 -0
  347. package/dist/services/steward-scheduler.js +732 -0
  348. package/dist/services/steward-scheduler.js.map +1 -0
  349. package/dist/services/task-assignment-service.d.ts +291 -0
  350. package/dist/services/task-assignment-service.d.ts.map +1 -0
  351. package/dist/services/task-assignment-service.js +454 -0
  352. package/dist/services/task-assignment-service.js.map +1 -0
  353. package/dist/services/worker-task-service.d.ts +202 -0
  354. package/dist/services/worker-task-service.d.ts.map +1 -0
  355. package/dist/services/worker-task-service.js +228 -0
  356. package/dist/services/worker-task-service.js.map +1 -0
  357. package/dist/testing/index.d.ts +13 -0
  358. package/dist/testing/index.d.ts.map +1 -0
  359. package/dist/testing/index.js +17 -0
  360. package/dist/testing/index.js.map +1 -0
  361. package/dist/testing/orchestration-tests.d.ts +62 -0
  362. package/dist/testing/orchestration-tests.d.ts.map +1 -0
  363. package/dist/testing/orchestration-tests.js +1115 -0
  364. package/dist/testing/orchestration-tests.js.map +1 -0
  365. package/dist/testing/test-context.d.ts +171 -0
  366. package/dist/testing/test-context.d.ts.map +1 -0
  367. package/dist/testing/test-context.js +665 -0
  368. package/dist/testing/test-context.js.map +1 -0
  369. package/dist/testing/test-prompts.d.ts +46 -0
  370. package/dist/testing/test-prompts.d.ts.map +1 -0
  371. package/dist/testing/test-prompts.js +140 -0
  372. package/dist/testing/test-prompts.js.map +1 -0
  373. package/dist/testing/test-utils.d.ts +200 -0
  374. package/dist/testing/test-utils.d.ts.map +1 -0
  375. package/dist/testing/test-utils.js +378 -0
  376. package/dist/testing/test-utils.js.map +1 -0
  377. package/dist/types/agent-pool.d.ts +215 -0
  378. package/dist/types/agent-pool.d.ts.map +1 -0
  379. package/dist/types/agent-pool.js +143 -0
  380. package/dist/types/agent-pool.js.map +1 -0
  381. package/dist/types/agent.d.ts +265 -0
  382. package/dist/types/agent.d.ts.map +1 -0
  383. package/dist/types/agent.js +127 -0
  384. package/dist/types/agent.js.map +1 -0
  385. package/dist/types/index.d.ts +11 -0
  386. package/dist/types/index.d.ts.map +1 -0
  387. package/dist/types/index.js +40 -0
  388. package/dist/types/index.js.map +1 -0
  389. package/dist/types/message-types.d.ts +294 -0
  390. package/dist/types/message-types.d.ts.map +1 -0
  391. package/dist/types/message-types.js +354 -0
  392. package/dist/types/message-types.js.map +1 -0
  393. package/dist/types/role-definition.d.ts +272 -0
  394. package/dist/types/role-definition.d.ts.map +1 -0
  395. package/dist/types/role-definition.js +144 -0
  396. package/dist/types/role-definition.js.map +1 -0
  397. package/dist/types/task-meta.d.ts +248 -0
  398. package/dist/types/task-meta.d.ts.map +1 -0
  399. package/dist/types/task-meta.js +213 -0
  400. package/dist/types/task-meta.js.map +1 -0
  401. package/package.json +120 -0
  402. package/web/assets/abap-BrgZPUOV.js +6 -0
  403. package/web/assets/apex-DyP6w7ZV.js +6 -0
  404. package/web/assets/azcli-BaLxmfj-.js +6 -0
  405. package/web/assets/bat-CFOPXBzS.js +6 -0
  406. package/web/assets/bicep-BfEKNvv3.js +7 -0
  407. package/web/assets/cameligo-BFG1Mk7z.js +6 -0
  408. package/web/assets/clojure-DTECt2xU.js +6 -0
  409. package/web/assets/codicon-DCmgc-ay.ttf +0 -0
  410. package/web/assets/coffee-CDGzqUPQ.js +6 -0
  411. package/web/assets/cpp-CLLBncYj.js +6 -0
  412. package/web/assets/csharp-dUCx_-0o.js +6 -0
  413. package/web/assets/csp-5Rap-vPy.js +6 -0
  414. package/web/assets/css-D3h14YRZ.js +8 -0
  415. package/web/assets/cssMode-DMo-5YLA.js +9 -0
  416. package/web/assets/cypher-DrQuvNYM.js +6 -0
  417. package/web/assets/dart-CFKIUWau.js +6 -0
  418. package/web/assets/dockerfile-Zznr-cwX.js +6 -0
  419. package/web/assets/ecl-Ce3n6wWz.js +6 -0
  420. package/web/assets/elixir-deUWdS0T.js +6 -0
  421. package/web/assets/flow9-i9-g7ZhI.js +6 -0
  422. package/web/assets/freemarker2-D4qgkQzN.js +8 -0
  423. package/web/assets/fsharp-CzKuDChf.js +6 -0
  424. package/web/assets/go-Cphgjts3.js +6 -0
  425. package/web/assets/graphql-Cg7bfA9N.js +6 -0
  426. package/web/assets/handlebars-CXFvNjQC.js +6 -0
  427. package/web/assets/hcl-0cvrggvQ.js +6 -0
  428. package/web/assets/html-oyuB_D-B.js +6 -0
  429. package/web/assets/htmlMode-iWuZ24-r.js +9 -0
  430. package/web/assets/index-DqP-_E4F.css +32 -0
  431. package/web/assets/index-R1cylSgw.js +1665 -0
  432. package/web/assets/ini-Drc7WvVn.js +6 -0
  433. package/web/assets/java-B_fMsGYe.js +6 -0
  434. package/web/assets/javascript-CRIkN2Pg.js +6 -0
  435. package/web/assets/jsonMode-DVDkDgex.js +15 -0
  436. package/web/assets/julia-Bqgm2twL.js +6 -0
  437. package/web/assets/kotlin-BSkB5QuD.js +6 -0
  438. package/web/assets/less-BsTHnhdd.js +7 -0
  439. package/web/assets/lexon-YWi4-JPR.js +6 -0
  440. package/web/assets/liquid-CSfldbB5.js +6 -0
  441. package/web/assets/lua-nf6ki56Z.js +6 -0
  442. package/web/assets/m3-Cpb6xl2v.js +6 -0
  443. package/web/assets/markdown-DSZPf7rp.js +6 -0
  444. package/web/assets/mdx-Dd58iymR.js +6 -0
  445. package/web/assets/mips-B_c3zf-v.js +6 -0
  446. package/web/assets/monaco-editor-B4lwqA13.js +751 -0
  447. package/web/assets/monaco-editor-CQpyCxOA.css +1 -0
  448. package/web/assets/msdax-rUNN04Wq.js +6 -0
  449. package/web/assets/mysql-DDwshQtU.js +6 -0
  450. package/web/assets/objective-c-B5zXfXm9.js +6 -0
  451. package/web/assets/pascal-CXOwvkN_.js +6 -0
  452. package/web/assets/pascaligo-Bc-ZgV77.js +6 -0
  453. package/web/assets/perl-CwNk8-XU.js +6 -0
  454. package/web/assets/pgsql-tGk8EFnU.js +6 -0
  455. package/web/assets/php-CpIb_Oan.js +6 -0
  456. package/web/assets/pla-B03wrqEc.js +6 -0
  457. package/web/assets/postiats-BKlk5iyT.js +6 -0
  458. package/web/assets/powerquery-Bhzvs7bI.js +6 -0
  459. package/web/assets/powershell-Dd3NCNK9.js +6 -0
  460. package/web/assets/protobuf-COyEY5Pt.js +7 -0
  461. package/web/assets/pug-BaJupSGV.js +6 -0
  462. package/web/assets/python-XWrMqdhO.js +6 -0
  463. package/web/assets/qsharp-DXyYeYxl.js +6 -0
  464. package/web/assets/r-CdQndTaG.js +6 -0
  465. package/web/assets/razor-DPlhCpIs.js +6 -0
  466. package/web/assets/redis-CVwtpugi.js +6 -0
  467. package/web/assets/redshift-25W9uPmb.js +6 -0
  468. package/web/assets/restructuredtext-DfzH4Xui.js +6 -0
  469. package/web/assets/router-vendor-DHlGizSU.js +41 -0
  470. package/web/assets/ruby-Cp1zYvxS.js +6 -0
  471. package/web/assets/rust-D5C2fndG.js +6 -0
  472. package/web/assets/sb-CDntyWJ8.js +6 -0
  473. package/web/assets/scala-BoFRg7Ot.js +6 -0
  474. package/web/assets/scheme-Bio4gycK.js +6 -0
  475. package/web/assets/scss-4Ik7cdeQ.js +8 -0
  476. package/web/assets/shell-CX-rkNHf.js +6 -0
  477. package/web/assets/solidity-Tw7wswEv.js +6 -0
  478. package/web/assets/sophia-C5WLch3f.js +6 -0
  479. package/web/assets/sparql-DHaeiCBh.js +6 -0
  480. package/web/assets/sql-CCSDG5nI.js +6 -0
  481. package/web/assets/st-pnP8ivHi.js +6 -0
  482. package/web/assets/swift-DwJ7jVG9.js +8 -0
  483. package/web/assets/systemverilog-B9Xyijhd.js +6 -0
  484. package/web/assets/tcl-DnHyzjbg.js +6 -0
  485. package/web/assets/tsMode-BbA1Jbf3.js +16 -0
  486. package/web/assets/twig-CPajHgWi.js +6 -0
  487. package/web/assets/typescript-DcLHYzvH.js +6 -0
  488. package/web/assets/typespec-D-MeaMDU.js +6 -0
  489. package/web/assets/ui-vendor-BSco96uv.js +51 -0
  490. package/web/assets/utils-vendor-DaJ2Dubl.js +911 -0
  491. package/web/assets/vb-DgyLZaXg.js +6 -0
  492. package/web/assets/wgsl-DYQUnd45.js +303 -0
  493. package/web/assets/xml-xKYS3dO6.js +6 -0
  494. package/web/assets/yaml-CNmlXqzH.js +6 -0
  495. package/web/favicon.ico +0 -0
  496. package/web/index.html +22 -0
  497. package/web/logo.png +0 -0
@@ -0,0 +1,378 @@
1
+ /**
2
+ * Test Utilities for Orchestration E2E Tests
3
+ *
4
+ * Provides helper functions for waiting, polling, and assertions
5
+ * used across the orchestration test suite.
6
+ *
7
+ * @module
8
+ */
9
+ // ============================================================================
10
+ // Polling Utilities
11
+ // ============================================================================
12
+ /**
13
+ * Waits for a condition to become true, polling at regular intervals.
14
+ *
15
+ * @param condition - Async function that returns truthy when condition is met
16
+ * @param options - Wait options
17
+ * @returns The truthy value returned by the condition
18
+ * @throws Error if timeout is reached before condition is met
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * const task = await waitFor(async () => {
23
+ * const tasks = await api.listTasks({ status: 'open' });
24
+ * return tasks.find(t => t.title.includes('health'));
25
+ * }, { timeout: 90000, interval: 2000 });
26
+ * ```
27
+ */
28
+ export async function waitFor(condition, options = {}) {
29
+ const timeout = options.timeout ?? 30000;
30
+ const interval = options.interval ?? 1000;
31
+ const description = options.description ?? 'condition';
32
+ const startTime = Date.now();
33
+ while (Date.now() - startTime < timeout) {
34
+ const result = await condition();
35
+ if (result) {
36
+ return result;
37
+ }
38
+ await sleep(interval);
39
+ }
40
+ throw new Error(`Timeout waiting for ${description} after ${timeout}ms`);
41
+ }
42
+ /**
43
+ * Waits for a value to change from its initial state.
44
+ *
45
+ * @param getValue - Function that returns the current value
46
+ * @param initialValue - The initial value to compare against
47
+ * @param options - Wait options
48
+ * @returns The new value after it changes
49
+ */
50
+ export async function waitForChange(getValue, initialValue, options = {}) {
51
+ return waitFor(async () => {
52
+ const current = await getValue();
53
+ return current !== initialValue ? current : null;
54
+ }, options);
55
+ }
56
+ /**
57
+ * Waits for multiple conditions to all become true.
58
+ *
59
+ * @param conditions - Array of condition functions
60
+ * @param options - Wait options
61
+ * @returns Array of results from all conditions
62
+ */
63
+ export async function waitForAll(conditions, options = {}) {
64
+ const timeout = options.timeout ?? 30000;
65
+ const interval = options.interval ?? 1000;
66
+ const startTime = Date.now();
67
+ const results = new Array(conditions.length).fill(null);
68
+ const resolved = new Set();
69
+ while (Date.now() - startTime < timeout) {
70
+ for (let i = 0; i < conditions.length; i++) {
71
+ if (resolved.has(i))
72
+ continue;
73
+ const result = await conditions[i]();
74
+ if (result) {
75
+ results[i] = result;
76
+ resolved.add(i);
77
+ }
78
+ }
79
+ if (resolved.size === conditions.length) {
80
+ return results;
81
+ }
82
+ await sleep(interval);
83
+ }
84
+ const missing = conditions.length - resolved.size;
85
+ throw new Error(`Timeout: ${missing} of ${conditions.length} conditions not met after ${timeout}ms`);
86
+ }
87
+ // ============================================================================
88
+ // Timing Utilities
89
+ // ============================================================================
90
+ /**
91
+ * Sleeps for a specified number of milliseconds.
92
+ */
93
+ export function sleep(ms) {
94
+ return new Promise(resolve => setTimeout(resolve, ms));
95
+ }
96
+ /**
97
+ * Measures the execution time of an async function.
98
+ *
99
+ * @param fn - Function to measure
100
+ * @returns Object with result and duration in milliseconds
101
+ */
102
+ export async function measure(fn) {
103
+ const start = Date.now();
104
+ const result = await fn();
105
+ return { result, durationMs: Date.now() - start };
106
+ }
107
+ /**
108
+ * Creates a timeout promise that rejects after specified milliseconds.
109
+ */
110
+ export function timeout(ms, message) {
111
+ return new Promise((_, reject) => setTimeout(() => reject(new Error(message ?? `Timeout after ${ms}ms`)), ms));
112
+ }
113
+ /**
114
+ * Races a promise against a timeout.
115
+ *
116
+ * @param promise - The promise to race
117
+ * @param ms - Timeout in milliseconds
118
+ * @param message - Optional timeout error message
119
+ */
120
+ export function withTimeout(promise, ms, message) {
121
+ return Promise.race([promise, timeout(ms, message)]);
122
+ }
123
+ // ============================================================================
124
+ // Assertion Utilities
125
+ // ============================================================================
126
+ /**
127
+ * Creates an assertion result
128
+ */
129
+ function createAssertionResult(passed, message, actual, expected) {
130
+ return { passed, message, actual, expected };
131
+ }
132
+ /**
133
+ * Asserts that a value is defined (not null or undefined).
134
+ */
135
+ export function assertDefined(value, name) {
136
+ if (value === null || value === undefined) {
137
+ return createAssertionResult(false, `Expected ${name} to be defined, got ${value}`, value, 'defined');
138
+ }
139
+ return createAssertionResult(true, `${name} is defined`);
140
+ }
141
+ /**
142
+ * Asserts that two values are equal.
143
+ */
144
+ export function assertEqual(actual, expected, name) {
145
+ if (actual !== expected) {
146
+ return createAssertionResult(false, `Expected ${name} to be ${JSON.stringify(expected)}, got ${JSON.stringify(actual)}`, actual, expected);
147
+ }
148
+ return createAssertionResult(true, `${name} equals ${JSON.stringify(expected)}`);
149
+ }
150
+ /**
151
+ * Asserts that a string contains a substring.
152
+ */
153
+ export function assertContains(str, substring, name) {
154
+ if (!str.includes(substring)) {
155
+ return createAssertionResult(false, `Expected ${name} to contain "${substring}"`, str, `contains "${substring}"`);
156
+ }
157
+ return createAssertionResult(true, `${name} contains "${substring}"`);
158
+ }
159
+ /**
160
+ * Asserts that a value matches a regular expression.
161
+ */
162
+ export function assertMatches(str, pattern, name) {
163
+ if (!pattern.test(str)) {
164
+ return createAssertionResult(false, `Expected ${name} to match ${pattern}`, str, pattern.toString());
165
+ }
166
+ return createAssertionResult(true, `${name} matches ${pattern}`);
167
+ }
168
+ /**
169
+ * Asserts that an array has a specific length.
170
+ */
171
+ export function assertLength(arr, length, name) {
172
+ if (arr.length !== length) {
173
+ return createAssertionResult(false, `Expected ${name} to have length ${length}, got ${arr.length}`, arr.length, length);
174
+ }
175
+ return createAssertionResult(true, `${name} has length ${length}`);
176
+ }
177
+ /**
178
+ * Asserts that an array contains at least one item.
179
+ */
180
+ export function assertNotEmpty(arr, name) {
181
+ if (arr.length === 0) {
182
+ return createAssertionResult(false, `Expected ${name} to not be empty`, arr.length, '>0');
183
+ }
184
+ return createAssertionResult(true, `${name} is not empty (${arr.length} items)`);
185
+ }
186
+ /**
187
+ * Asserts that a condition is true.
188
+ */
189
+ export function assertTrue(condition, message) {
190
+ if (!condition) {
191
+ return createAssertionResult(false, message, false, true);
192
+ }
193
+ return createAssertionResult(true, message);
194
+ }
195
+ /**
196
+ * Creates a passing test result
197
+ */
198
+ export function pass(message, details) {
199
+ return {
200
+ passed: true,
201
+ message,
202
+ duration: 0, // Will be set by runner
203
+ details,
204
+ };
205
+ }
206
+ /**
207
+ * Creates a failing test result
208
+ */
209
+ export function fail(message, details) {
210
+ return {
211
+ passed: false,
212
+ message,
213
+ duration: 0, // Will be set by runner
214
+ details,
215
+ };
216
+ }
217
+ // ============================================================================
218
+ // String Utilities
219
+ // ============================================================================
220
+ /**
221
+ * Generates a random string for unique identifiers.
222
+ */
223
+ export function randomString(length = 8) {
224
+ const chars = 'abcdefghijklmnopqrstuvwxyz0123456789';
225
+ let result = '';
226
+ for (let i = 0; i < length; i++) {
227
+ result += chars.charAt(Math.floor(Math.random() * chars.length));
228
+ }
229
+ return result;
230
+ }
231
+ /**
232
+ * Generates a unique test identifier.
233
+ */
234
+ export function uniqueId(prefix = 'test') {
235
+ return `${prefix}-${Date.now()}-${randomString(4)}`;
236
+ }
237
+ /**
238
+ * Retries an operation on failure.
239
+ *
240
+ * @param fn - Function to retry
241
+ * @param options - Retry options
242
+ * @returns Result of the function
243
+ */
244
+ export async function retry(fn, options = {}) {
245
+ const maxAttempts = options.maxAttempts ?? 3;
246
+ const delay = options.delay ?? 1000;
247
+ const exponentialBackoff = options.exponentialBackoff ?? false;
248
+ const isRetryable = options.isRetryable ?? (() => true);
249
+ let lastError;
250
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) {
251
+ try {
252
+ return await fn();
253
+ }
254
+ catch (error) {
255
+ lastError = error instanceof Error ? error : new Error(String(error));
256
+ if (attempt === maxAttempts || !isRetryable(lastError)) {
257
+ throw lastError;
258
+ }
259
+ const waitTime = exponentialBackoff
260
+ ? delay * Math.pow(2, attempt - 1)
261
+ : delay;
262
+ await sleep(waitTime);
263
+ }
264
+ }
265
+ throw lastError ?? new Error('Retry failed');
266
+ }
267
+ /**
268
+ * Waits for a task to reach a specific status.
269
+ */
270
+ export async function waitForTaskStatus(api, taskId, targetStatus, opts = {}) {
271
+ return waitFor(async () => {
272
+ const task = await api.get(taskId);
273
+ if (!task)
274
+ return null;
275
+ return task.status === targetStatus ? task : null;
276
+ }, {
277
+ timeout: opts.timeout ?? 60000,
278
+ interval: opts.interval ?? 2000,
279
+ description: `task ${taskId} to reach status '${targetStatus}'`,
280
+ });
281
+ }
282
+ /**
283
+ * Waits for a task to be assigned to any agent.
284
+ */
285
+ export async function waitForTaskAssignment(api, taskId, opts = {}) {
286
+ return waitFor(async () => {
287
+ const task = await api.get(taskId);
288
+ if (!task)
289
+ return null;
290
+ return task.assignee ? task : null;
291
+ }, {
292
+ timeout: opts.timeout ?? 60000,
293
+ interval: opts.interval ?? 2000,
294
+ description: `task ${taskId} to be assigned`,
295
+ });
296
+ }
297
+ /**
298
+ * Waits for a session to start for a given agent.
299
+ */
300
+ export async function waitForSessionStart(sessionManager, agentId, opts = {}) {
301
+ return waitFor(async () => {
302
+ const session = sessionManager.getActiveSession(agentId);
303
+ return session ?? null;
304
+ }, {
305
+ timeout: opts.timeout ?? 60000,
306
+ interval: opts.interval ?? 2000,
307
+ description: `session start for agent ${agentId}`,
308
+ });
309
+ }
310
+ /**
311
+ * Waits for a session to end (terminate or suspend).
312
+ */
313
+ export async function waitForSessionEnd(sessionManager, sessionId, opts = {}) {
314
+ return waitFor(async () => {
315
+ const session = sessionManager.getSession(sessionId);
316
+ if (!session)
317
+ return null;
318
+ return session.status === 'terminated' || session.status === 'suspended'
319
+ ? session
320
+ : null;
321
+ }, {
322
+ timeout: opts.timeout ?? 120000,
323
+ interval: opts.interval ?? 3000,
324
+ description: `session ${sessionId} to end`,
325
+ });
326
+ }
327
+ /**
328
+ * Waits for task orchestrator metadata to satisfy a predicate.
329
+ */
330
+ export async function waitForTaskMeta(api, taskId, predicate, opts = {}) {
331
+ return waitFor(async () => {
332
+ const meta = await api.getTaskOrchestratorMeta(taskId);
333
+ if (!meta)
334
+ return null;
335
+ return predicate(meta)
336
+ ? meta
337
+ : null;
338
+ }, {
339
+ timeout: opts.timeout ?? 60000,
340
+ interval: opts.interval ?? 2000,
341
+ description: `task ${taskId} metadata to match predicate`,
342
+ });
343
+ }
344
+ /**
345
+ * Waits for a git commit to appear in a worktree directory.
346
+ * Returns the commit hash of the most recent commit.
347
+ */
348
+ export async function waitForGitCommit(worktreePath, opts = {}) {
349
+ const { execSync } = await import('node:child_process');
350
+ return waitFor(async () => {
351
+ try {
352
+ // Check if there's at least one commit beyond the initial
353
+ const log = execSync('git log --oneline -2', {
354
+ cwd: worktreePath,
355
+ encoding: 'utf8',
356
+ stdio: 'pipe',
357
+ }).trim();
358
+ const lines = log.split('\n');
359
+ if (lines.length >= 2) {
360
+ // There's at least 2 commits, return the latest hash
361
+ return execSync('git rev-parse HEAD', {
362
+ cwd: worktreePath,
363
+ encoding: 'utf8',
364
+ stdio: 'pipe',
365
+ }).trim();
366
+ }
367
+ return null;
368
+ }
369
+ catch {
370
+ return null;
371
+ }
372
+ }, {
373
+ timeout: opts.timeout ?? 120000,
374
+ interval: opts.interval ?? 3000,
375
+ description: `git commit in ${worktreePath}`,
376
+ });
377
+ }
378
+ //# sourceMappingURL=test-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../../src/testing/test-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,215 @@
1
+ /**
2
+ * Agent Pool Types - Pool configuration for controlling agent concurrency
3
+ *
4
+ * Agent pools provide a way to limit the maximum number of agents running
5
+ * concurrently across one or more agent types. The dispatch daemon respects
6
+ * pool limits when spawning agents, and pools can have configurable priority
7
+ * for each agent type to determine spawn order when there are multiple pending
8
+ * tasks/resources.
9
+ *
10
+ * Key concepts:
11
+ * - Pool size: Maximum number of concurrent agents across all types in the pool
12
+ * - Agent type slots: Which agent types (worker, steward) can occupy pool slots
13
+ * - Priority scores: Per-type priority for tie-breaking when multiple tasks are ready
14
+ *
15
+ * @module
16
+ */
17
+ import type { EntityId, ElementId, Timestamp } from '@stoneforge/core';
18
+ import type { AgentRole, WorkerMode, StewardFocus } from './agent.js';
19
+ /**
20
+ * Configuration for a specific agent type within a pool.
21
+ * Defines which agents can occupy pool slots and their priority.
22
+ */
23
+ export interface PoolAgentTypeConfig {
24
+ /** The agent role (worker, steward) */
25
+ readonly role: Exclude<AgentRole, 'director'>;
26
+ /** Worker mode filter (only for role='worker') */
27
+ readonly workerMode?: WorkerMode;
28
+ /** Steward focus filter (only for role='steward') */
29
+ readonly stewardFocus?: StewardFocus;
30
+ /**
31
+ * Priority score for this agent type (higher = higher priority).
32
+ * Used to determine which type of agent to spawn when there are
33
+ * multiple pending tasks/resources and only one pool slot available.
34
+ * Default: 0
35
+ */
36
+ readonly priority?: number;
37
+ /**
38
+ * Maximum slots this agent type can occupy within the pool.
39
+ * If not set, this type can occupy all available pool slots.
40
+ * Must be <= pool maxSize.
41
+ */
42
+ readonly maxSlots?: number;
43
+ }
44
+ /**
45
+ * Agent Pool configuration stored as element metadata.
46
+ * Pools are not a separate element type - they are stored as a configuration
47
+ * in workspace settings or as a specialized Entity.
48
+ */
49
+ export interface AgentPoolConfig {
50
+ /** Unique pool name */
51
+ readonly name: string;
52
+ /** Human-readable description */
53
+ readonly description?: string;
54
+ /**
55
+ * Maximum number of concurrent agents in this pool.
56
+ * The dispatch daemon will not spawn new agents if the pool is full.
57
+ */
58
+ readonly maxSize: number;
59
+ /**
60
+ * Agent types that can occupy slots in this pool.
61
+ * If empty, all ephemeral workers and stewards are included.
62
+ */
63
+ readonly agentTypes: PoolAgentTypeConfig[];
64
+ /** Whether the pool is enabled (default: true) */
65
+ readonly enabled?: boolean;
66
+ /** Tags for categorization */
67
+ readonly tags?: string[];
68
+ }
69
+ /**
70
+ * Runtime status of an agent pool
71
+ */
72
+ export interface AgentPoolStatus {
73
+ /** Current number of active agents in the pool */
74
+ readonly activeCount: number;
75
+ /** Number of available slots (maxSize - activeCount) */
76
+ readonly availableSlots: number;
77
+ /** Breakdown of active agents by type */
78
+ readonly activeByType: Record<string, number>;
79
+ /** Agents currently occupying pool slots */
80
+ readonly activeAgentIds: EntityId[];
81
+ /** Timestamp when status was last updated */
82
+ readonly lastUpdatedAt: Timestamp;
83
+ }
84
+ /**
85
+ * Full agent pool with configuration and runtime status
86
+ */
87
+ export interface AgentPool {
88
+ /** Pool ID (element ID if stored as entity, or generated) */
89
+ readonly id: ElementId;
90
+ /** Pool configuration */
91
+ readonly config: AgentPoolConfig;
92
+ /** Current runtime status */
93
+ readonly status: AgentPoolStatus;
94
+ /** Pool creation timestamp */
95
+ readonly createdAt: Timestamp;
96
+ /** Entity that created this pool */
97
+ readonly createdBy: EntityId;
98
+ }
99
+ /**
100
+ * Filter options for querying pools
101
+ */
102
+ export interface AgentPoolFilter {
103
+ /** Filter by enabled status */
104
+ readonly enabled?: boolean;
105
+ /** Filter by name pattern (substring match) */
106
+ readonly nameContains?: string;
107
+ /** Filter by tags (any match) */
108
+ readonly tags?: string[];
109
+ /** Filter to pools with available slots */
110
+ readonly hasAvailableSlots?: boolean;
111
+ }
112
+ /**
113
+ * Input for creating a new pool
114
+ */
115
+ export interface CreatePoolInput {
116
+ /** Unique pool name */
117
+ readonly name: string;
118
+ /** Human-readable description */
119
+ readonly description?: string;
120
+ /** Maximum concurrent agents */
121
+ readonly maxSize: number;
122
+ /** Agent type configurations */
123
+ readonly agentTypes?: PoolAgentTypeConfig[];
124
+ /** Whether pool is enabled (default: true) */
125
+ readonly enabled?: boolean;
126
+ /** Tags for categorization */
127
+ readonly tags?: string[];
128
+ /** Entity creating the pool */
129
+ readonly createdBy: EntityId;
130
+ }
131
+ /**
132
+ * Input for updating a pool
133
+ */
134
+ export interface UpdatePoolInput {
135
+ /** Updated description */
136
+ readonly description?: string;
137
+ /** Updated max size (must be >= current activeCount) */
138
+ readonly maxSize?: number;
139
+ /** Updated agent type configurations */
140
+ readonly agentTypes?: PoolAgentTypeConfig[];
141
+ /** Updated enabled status */
142
+ readonly enabled?: boolean;
143
+ /** Updated tags */
144
+ readonly tags?: string[];
145
+ }
146
+ /**
147
+ * Result of checking if an agent can be spawned within pool constraints
148
+ */
149
+ export interface PoolSpawnCheck {
150
+ /** Whether the agent can be spawned */
151
+ readonly canSpawn: boolean;
152
+ /** The pool that governs this decision (if any) */
153
+ readonly poolId?: ElementId;
154
+ /** The pool name for display */
155
+ readonly poolName?: string;
156
+ /** Reason if canSpawn is false */
157
+ readonly reason?: string;
158
+ /** Number of slots that would be used after spawn */
159
+ readonly slotsAfterSpawn?: number;
160
+ /** Maximum slots in the pool */
161
+ readonly maxSlots?: number;
162
+ }
163
+ /**
164
+ * Agent spawn request for pool consideration
165
+ */
166
+ export interface PoolSpawnRequest {
167
+ /** The agent role */
168
+ readonly role: Exclude<AgentRole, 'director'>;
169
+ /** Worker mode (for workers) */
170
+ readonly workerMode?: WorkerMode;
171
+ /** Steward focus (for stewards) */
172
+ readonly stewardFocus?: StewardFocus;
173
+ /** The agent ID to spawn */
174
+ readonly agentId: EntityId;
175
+ }
176
+ /**
177
+ * Validates a pool name
178
+ */
179
+ export declare function isValidPoolName(value: unknown): value is string;
180
+ /**
181
+ * Validates a pool max size
182
+ */
183
+ export declare function isValidPoolSize(value: unknown): value is number;
184
+ /**
185
+ * Validates a priority score
186
+ */
187
+ export declare function isValidPriorityScore(value: unknown): value is number;
188
+ /**
189
+ * Validates a pool agent type configuration
190
+ */
191
+ export declare function isValidPoolAgentTypeConfig(value: unknown): value is PoolAgentTypeConfig;
192
+ /**
193
+ * Validates a pool configuration
194
+ */
195
+ export declare function isValidPoolConfig(value: unknown): value is AgentPoolConfig;
196
+ /**
197
+ * Type guard to check if a value is an AgentPool
198
+ */
199
+ export declare function isAgentPool(value: unknown): value is AgentPool;
200
+ /**
201
+ * Default pool configuration values
202
+ */
203
+ export declare const POOL_DEFAULTS: {
204
+ /** Default pool max size */
205
+ readonly maxSize: 5;
206
+ /** Default enabled status */
207
+ readonly enabled: true;
208
+ /** Default priority for agent types */
209
+ readonly defaultPriority: 0;
210
+ };
211
+ /**
212
+ * Pool metadata key for storing pool config in Entity metadata
213
+ */
214
+ export declare const POOL_METADATA_KEY: "agentPool";
215
+ //# sourceMappingURL=agent-pool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-pool.d.ts","sourceRoot":"","sources":["../../src/types/agent-pool.ts"],"names":[],"mappings":"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"}