macro-agent 0.0.10 → 0.0.12

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 (518) hide show
  1. package/.macro-agent/teams/self-driving/prompts/grinder.md +27 -0
  2. package/.macro-agent/teams/self-driving/prompts/judge.md +27 -0
  3. package/.macro-agent/teams/self-driving/prompts/planner.md +33 -0
  4. package/.macro-agent/teams/self-driving/roles/grinder.yaml +17 -0
  5. package/.macro-agent/teams/self-driving/roles/judge.yaml +24 -0
  6. package/.macro-agent/teams/self-driving/roles/planner.yaml +18 -0
  7. package/.macro-agent/teams/self-driving/team.yaml +103 -0
  8. package/.macro-agent/teams/structured/prompts/developer.md +26 -0
  9. package/.macro-agent/teams/structured/prompts/lead.md +25 -0
  10. package/.macro-agent/teams/structured/prompts/reviewer.md +24 -0
  11. package/.macro-agent/teams/structured/roles/developer.yaml +12 -0
  12. package/.macro-agent/teams/structured/roles/lead.yaml +11 -0
  13. package/.macro-agent/teams/structured/roles/reviewer.yaml +19 -0
  14. package/.macro-agent/teams/structured/team.yaml +89 -0
  15. package/.sudocode/issues.jsonl +56 -51
  16. package/.sudocode/specs.jsonl +8 -1
  17. package/CLAUDE.md +121 -30
  18. package/README.md +60 -3
  19. package/dist/acp/macro-agent.d.ts +4 -0
  20. package/dist/acp/macro-agent.d.ts.map +1 -1
  21. package/dist/acp/macro-agent.js +50 -4
  22. package/dist/acp/macro-agent.js.map +1 -1
  23. package/dist/acp/session-mapper.d.ts +20 -1
  24. package/dist/acp/session-mapper.d.ts.map +1 -1
  25. package/dist/acp/session-mapper.js +90 -1
  26. package/dist/acp/session-mapper.js.map +1 -1
  27. package/dist/acp/types.d.ts +24 -1
  28. package/dist/acp/types.d.ts.map +1 -1
  29. package/dist/acp/types.js.map +1 -1
  30. package/dist/agent/agent-manager.d.ts +40 -1
  31. package/dist/agent/agent-manager.d.ts.map +1 -1
  32. package/dist/agent/agent-manager.js +172 -8
  33. package/dist/agent/agent-manager.js.map +1 -1
  34. package/dist/agent/types.d.ts +22 -0
  35. package/dist/agent/types.d.ts.map +1 -1
  36. package/dist/agent/types.js.map +1 -1
  37. package/dist/agent/wake.d.ts +15 -0
  38. package/dist/agent/wake.d.ts.map +1 -1
  39. package/dist/agent/wake.js +15 -0
  40. package/dist/agent/wake.js.map +1 -1
  41. package/dist/agent-detection/command-builder.d.ts +30 -0
  42. package/dist/agent-detection/command-builder.d.ts.map +1 -0
  43. package/dist/agent-detection/command-builder.js +71 -0
  44. package/dist/agent-detection/command-builder.js.map +1 -0
  45. package/dist/agent-detection/detector.d.ts +84 -0
  46. package/dist/agent-detection/detector.d.ts.map +1 -0
  47. package/dist/agent-detection/detector.js +240 -0
  48. package/dist/agent-detection/detector.js.map +1 -0
  49. package/dist/agent-detection/index.d.ts +12 -0
  50. package/dist/agent-detection/index.d.ts.map +1 -0
  51. package/dist/agent-detection/index.js +14 -0
  52. package/dist/agent-detection/index.js.map +1 -0
  53. package/dist/agent-detection/registry.d.ts +53 -0
  54. package/dist/agent-detection/registry.d.ts.map +1 -0
  55. package/dist/agent-detection/registry.js +177 -0
  56. package/dist/agent-detection/registry.js.map +1 -0
  57. package/dist/agent-detection/types.d.ts +121 -0
  58. package/dist/agent-detection/types.d.ts.map +1 -0
  59. package/dist/agent-detection/types.js +20 -0
  60. package/dist/agent-detection/types.js.map +1 -0
  61. package/dist/api/server.d.ts +5 -1
  62. package/dist/api/server.d.ts.map +1 -1
  63. package/dist/api/server.js +362 -0
  64. package/dist/api/server.js.map +1 -1
  65. package/dist/api/types.d.ts +50 -1
  66. package/dist/api/types.d.ts.map +1 -1
  67. package/dist/cli/acp.d.ts +2 -0
  68. package/dist/cli/acp.d.ts.map +1 -1
  69. package/dist/cli/acp.js +8 -1
  70. package/dist/cli/acp.js.map +1 -1
  71. package/dist/cli/index.js +29 -0
  72. package/dist/cli/index.js.map +1 -1
  73. package/dist/cli/mcp.js +38 -0
  74. package/dist/cli/mcp.js.map +1 -1
  75. package/dist/config/index.d.ts +2 -0
  76. package/dist/config/index.d.ts.map +1 -0
  77. package/dist/config/index.js +2 -0
  78. package/dist/config/index.js.map +1 -0
  79. package/dist/config/project-config.d.ts +46 -0
  80. package/dist/config/project-config.d.ts.map +1 -0
  81. package/dist/config/project-config.js +68 -0
  82. package/dist/config/project-config.js.map +1 -0
  83. package/dist/lifecycle/cascade.d.ts +1 -1
  84. package/dist/lifecycle/cascade.d.ts.map +1 -1
  85. package/dist/lifecycle/handlers/index.d.ts +4 -0
  86. package/dist/lifecycle/handlers/index.d.ts.map +1 -1
  87. package/dist/lifecycle/handlers/index.js +2 -0
  88. package/dist/lifecycle/handlers/index.js.map +1 -1
  89. package/dist/lifecycle/handlers/worker.d.ts +4 -0
  90. package/dist/lifecycle/handlers/worker.d.ts.map +1 -1
  91. package/dist/lifecycle/handlers/worker.js +35 -3
  92. package/dist/lifecycle/handlers/worker.js.map +1 -1
  93. package/dist/mail/conversation-map.d.ts +33 -0
  94. package/dist/mail/conversation-map.d.ts.map +1 -0
  95. package/dist/mail/conversation-map.js +61 -0
  96. package/dist/mail/conversation-map.js.map +1 -0
  97. package/dist/mail/index.d.ts +11 -0
  98. package/dist/mail/index.d.ts.map +1 -0
  99. package/dist/mail/index.js +11 -0
  100. package/dist/mail/index.js.map +1 -0
  101. package/dist/mail/mail-service.d.ts +85 -0
  102. package/dist/mail/mail-service.d.ts.map +1 -0
  103. package/dist/mail/mail-service.js +121 -0
  104. package/dist/mail/mail-service.js.map +1 -0
  105. package/dist/mail/stores/eventstore-conversation-store.d.ts +40 -0
  106. package/dist/mail/stores/eventstore-conversation-store.d.ts.map +1 -0
  107. package/dist/mail/stores/eventstore-conversation-store.js +131 -0
  108. package/dist/mail/stores/eventstore-conversation-store.js.map +1 -0
  109. package/dist/mail/stores/eventstore-participant-store.d.ts +43 -0
  110. package/dist/mail/stores/eventstore-participant-store.d.ts.map +1 -0
  111. package/dist/mail/stores/eventstore-participant-store.js +145 -0
  112. package/dist/mail/stores/eventstore-participant-store.js.map +1 -0
  113. package/dist/mail/stores/eventstore-thread-store.d.ts +46 -0
  114. package/dist/mail/stores/eventstore-thread-store.d.ts.map +1 -0
  115. package/dist/mail/stores/eventstore-thread-store.js +118 -0
  116. package/dist/mail/stores/eventstore-thread-store.js.map +1 -0
  117. package/dist/mail/stores/eventstore-turn-store.d.ts +47 -0
  118. package/dist/mail/stores/eventstore-turn-store.d.ts.map +1 -0
  119. package/dist/mail/stores/eventstore-turn-store.js +153 -0
  120. package/dist/mail/stores/eventstore-turn-store.js.map +1 -0
  121. package/dist/mail/stores/index.d.ts +12 -0
  122. package/dist/mail/stores/index.d.ts.map +1 -0
  123. package/dist/mail/stores/index.js +12 -0
  124. package/dist/mail/stores/index.js.map +1 -0
  125. package/dist/mail/stores/types.d.ts +146 -0
  126. package/dist/mail/stores/types.d.ts.map +1 -0
  127. package/dist/mail/stores/types.js +13 -0
  128. package/dist/mail/stores/types.js.map +1 -0
  129. package/dist/mail/turn-recorder.d.ts +30 -0
  130. package/dist/mail/turn-recorder.d.ts.map +1 -0
  131. package/dist/mail/turn-recorder.js +98 -0
  132. package/dist/mail/turn-recorder.js.map +1 -0
  133. package/dist/map/adapter/acp-over-map.d.ts.map +1 -1
  134. package/dist/map/adapter/acp-over-map.js +32 -2
  135. package/dist/map/adapter/acp-over-map.js.map +1 -1
  136. package/dist/map/adapter/event-translator.d.ts.map +1 -1
  137. package/dist/map/adapter/event-translator.js +4 -0
  138. package/dist/map/adapter/event-translator.js.map +1 -1
  139. package/dist/map/adapter/extensions/agent-detection.d.ts +49 -0
  140. package/dist/map/adapter/extensions/agent-detection.d.ts.map +1 -0
  141. package/dist/map/adapter/extensions/agent-detection.js +91 -0
  142. package/dist/map/adapter/extensions/agent-detection.js.map +1 -0
  143. package/dist/map/adapter/extensions/index.d.ts +10 -1
  144. package/dist/map/adapter/extensions/index.d.ts.map +1 -1
  145. package/dist/map/adapter/extensions/index.js +39 -0
  146. package/dist/map/adapter/extensions/index.js.map +1 -1
  147. package/dist/map/adapter/extensions/resume.d.ts +47 -0
  148. package/dist/map/adapter/extensions/resume.d.ts.map +1 -0
  149. package/dist/map/adapter/extensions/resume.js +59 -0
  150. package/dist/map/adapter/extensions/resume.js.map +1 -0
  151. package/dist/map/adapter/extensions/workspace-files.d.ts +42 -0
  152. package/dist/map/adapter/extensions/workspace-files.d.ts.map +1 -0
  153. package/dist/map/adapter/extensions/workspace-files.js +338 -0
  154. package/dist/map/adapter/extensions/workspace-files.js.map +1 -0
  155. package/dist/map/adapter/mail-handler-adapter.d.ts +27 -0
  156. package/dist/map/adapter/mail-handler-adapter.d.ts.map +1 -0
  157. package/dist/map/adapter/mail-handler-adapter.js +292 -0
  158. package/dist/map/adapter/mail-handler-adapter.js.map +1 -0
  159. package/dist/map/adapter/map-adapter.d.ts +34 -10
  160. package/dist/map/adapter/map-adapter.d.ts.map +1 -1
  161. package/dist/map/adapter/map-adapter.js +110 -14
  162. package/dist/map/adapter/map-adapter.js.map +1 -1
  163. package/dist/map/adapter/rpc-handler.d.ts +4 -1
  164. package/dist/map/adapter/rpc-handler.d.ts.map +1 -1
  165. package/dist/map/adapter/rpc-handler.js +6 -0
  166. package/dist/map/adapter/rpc-handler.js.map +1 -1
  167. package/dist/map/index.d.ts +1 -0
  168. package/dist/map/index.d.ts.map +1 -1
  169. package/dist/map/index.js +2 -0
  170. package/dist/map/index.js.map +1 -1
  171. package/dist/map/types.d.ts +3 -1
  172. package/dist/map/types.d.ts.map +1 -1
  173. package/dist/map/types.js.map +1 -1
  174. package/dist/mcp/mcp-server.d.ts +6 -0
  175. package/dist/mcp/mcp-server.d.ts.map +1 -1
  176. package/dist/mcp/mcp-server.js +45 -0
  177. package/dist/mcp/mcp-server.js.map +1 -1
  178. package/dist/mcp/tools/claim_task.d.ts +35 -0
  179. package/dist/mcp/tools/claim_task.d.ts.map +1 -0
  180. package/dist/mcp/tools/claim_task.js +58 -0
  181. package/dist/mcp/tools/claim_task.js.map +1 -0
  182. package/dist/mcp/tools/done.d.ts +15 -2
  183. package/dist/mcp/tools/done.d.ts.map +1 -1
  184. package/dist/mcp/tools/done.js +45 -10
  185. package/dist/mcp/tools/done.js.map +1 -1
  186. package/dist/mcp/tools/list_claimable_tasks.d.ts +38 -0
  187. package/dist/mcp/tools/list_claimable_tasks.d.ts.map +1 -0
  188. package/dist/mcp/tools/list_claimable_tasks.js +63 -0
  189. package/dist/mcp/tools/list_claimable_tasks.js.map +1 -0
  190. package/dist/mcp/tools/unclaim_task.d.ts +31 -0
  191. package/dist/mcp/tools/unclaim_task.d.ts.map +1 -0
  192. package/dist/mcp/tools/unclaim_task.js +47 -0
  193. package/dist/mcp/tools/unclaim_task.js.map +1 -0
  194. package/dist/metrics/index.d.ts +2 -0
  195. package/dist/metrics/index.d.ts.map +1 -0
  196. package/dist/metrics/index.js +2 -0
  197. package/dist/metrics/index.js.map +1 -0
  198. package/dist/metrics/metrics.d.ts +79 -0
  199. package/dist/metrics/metrics.d.ts.map +1 -0
  200. package/dist/metrics/metrics.js +166 -0
  201. package/dist/metrics/metrics.js.map +1 -0
  202. package/dist/roles/capabilities.d.ts +1 -0
  203. package/dist/roles/capabilities.d.ts.map +1 -1
  204. package/dist/roles/capabilities.js +3 -0
  205. package/dist/roles/capabilities.js.map +1 -1
  206. package/dist/roles/types.d.ts +1 -1
  207. package/dist/roles/types.d.ts.map +1 -1
  208. package/dist/router/channels.d.ts +2 -4
  209. package/dist/router/channels.d.ts.map +1 -1
  210. package/dist/router/channels.js.map +1 -1
  211. package/dist/router/message-router.d.ts +85 -9
  212. package/dist/router/message-router.d.ts.map +1 -1
  213. package/dist/router/message-router.js +203 -14
  214. package/dist/router/message-router.js.map +1 -1
  215. package/dist/router/role-resolver.d.ts +10 -1
  216. package/dist/router/role-resolver.d.ts.map +1 -1
  217. package/dist/router/role-resolver.js +15 -1
  218. package/dist/router/role-resolver.js.map +1 -1
  219. package/dist/router/types.d.ts +30 -1
  220. package/dist/router/types.d.ts.map +1 -1
  221. package/dist/router/types.js.map +1 -1
  222. package/dist/server/combined-server.d.ts +6 -0
  223. package/dist/server/combined-server.d.ts.map +1 -1
  224. package/dist/server/combined-server.js +24 -2
  225. package/dist/server/combined-server.js.map +1 -1
  226. package/dist/store/event-store.d.ts +14 -1
  227. package/dist/store/event-store.d.ts.map +1 -1
  228. package/dist/store/event-store.js +456 -4
  229. package/dist/store/event-store.js.map +1 -1
  230. package/dist/store/types/agents.d.ts +1 -1
  231. package/dist/store/types/agents.d.ts.map +1 -1
  232. package/dist/store/types/conversations.d.ts +91 -0
  233. package/dist/store/types/conversations.d.ts.map +1 -0
  234. package/dist/store/types/conversations.js +8 -0
  235. package/dist/store/types/conversations.js.map +1 -0
  236. package/dist/store/types/events.d.ts +1 -1
  237. package/dist/store/types/events.d.ts.map +1 -1
  238. package/dist/store/types/events.js.map +1 -1
  239. package/dist/store/types/index.d.ts +2 -0
  240. package/dist/store/types/index.d.ts.map +1 -1
  241. package/dist/store/types/index.js +2 -0
  242. package/dist/store/types/index.js.map +1 -1
  243. package/dist/store/types/sessions.d.ts +44 -0
  244. package/dist/store/types/sessions.d.ts.map +1 -0
  245. package/dist/store/types/sessions.js +9 -0
  246. package/dist/store/types/sessions.js.map +1 -0
  247. package/dist/store/types/tasks.d.ts +2 -0
  248. package/dist/store/types/tasks.d.ts.map +1 -1
  249. package/dist/task/backend/memory.d.ts +4 -1
  250. package/dist/task/backend/memory.d.ts.map +1 -1
  251. package/dist/task/backend/memory.js +81 -0
  252. package/dist/task/backend/memory.js.map +1 -1
  253. package/dist/task/backend/types.d.ts +30 -0
  254. package/dist/task/backend/types.d.ts.map +1 -1
  255. package/dist/task/backend/types.js.map +1 -1
  256. package/dist/teams/index.d.ts +4 -0
  257. package/dist/teams/index.d.ts.map +1 -0
  258. package/dist/teams/index.js +4 -0
  259. package/dist/teams/index.js.map +1 -0
  260. package/dist/teams/team-loader.d.ts +20 -0
  261. package/dist/teams/team-loader.d.ts.map +1 -0
  262. package/dist/teams/team-loader.js +293 -0
  263. package/dist/teams/team-loader.js.map +1 -0
  264. package/dist/teams/team-runtime.d.ts +139 -0
  265. package/dist/teams/team-runtime.d.ts.map +1 -0
  266. package/dist/teams/team-runtime.js +613 -0
  267. package/dist/teams/team-runtime.js.map +1 -0
  268. package/dist/teams/types.d.ts +266 -0
  269. package/dist/teams/types.d.ts.map +1 -0
  270. package/dist/teams/types.js +20 -0
  271. package/dist/teams/types.js.map +1 -0
  272. package/dist/trigger/router/trigger-router.d.ts +30 -3
  273. package/dist/trigger/router/trigger-router.d.ts.map +1 -1
  274. package/dist/trigger/router/trigger-router.js +30 -3
  275. package/dist/trigger/router/trigger-router.js.map +1 -1
  276. package/dist/trigger/wake/types.d.ts +31 -5
  277. package/dist/trigger/wake/types.d.ts.map +1 -1
  278. package/dist/trigger/wake/types.js +19 -0
  279. package/dist/trigger/wake/types.js.map +1 -1
  280. package/dist/workspace/dataplane-adapter.d.ts +1 -1
  281. package/dist/workspace/dataplane-adapter.d.ts.map +1 -1
  282. package/dist/workspace/dataplane-adapter.js +1 -1
  283. package/dist/workspace/dataplane-adapter.js.map +1 -1
  284. package/dist/workspace/index.d.ts +1 -1
  285. package/dist/workspace/index.d.ts.map +1 -1
  286. package/dist/workspace/strategies/index.d.ts +6 -0
  287. package/dist/workspace/strategies/index.d.ts.map +1 -0
  288. package/dist/workspace/strategies/index.js +5 -0
  289. package/dist/workspace/strategies/index.js.map +1 -0
  290. package/dist/workspace/strategies/optimistic.d.ts +26 -0
  291. package/dist/workspace/strategies/optimistic.d.ts.map +1 -0
  292. package/dist/workspace/strategies/optimistic.js +121 -0
  293. package/dist/workspace/strategies/optimistic.js.map +1 -0
  294. package/dist/workspace/strategies/queue.d.ts +26 -0
  295. package/dist/workspace/strategies/queue.d.ts.map +1 -0
  296. package/dist/workspace/strategies/queue.js +67 -0
  297. package/dist/workspace/strategies/queue.js.map +1 -0
  298. package/dist/workspace/strategies/registry.d.ts +37 -0
  299. package/dist/workspace/strategies/registry.d.ts.map +1 -0
  300. package/dist/workspace/strategies/registry.js +63 -0
  301. package/dist/workspace/strategies/registry.js.map +1 -0
  302. package/dist/workspace/strategies/trunk.d.ts +20 -0
  303. package/dist/workspace/strategies/trunk.d.ts.map +1 -0
  304. package/dist/workspace/strategies/trunk.js +108 -0
  305. package/dist/workspace/strategies/trunk.js.map +1 -0
  306. package/dist/workspace/strategies/types.d.ts +104 -0
  307. package/dist/workspace/strategies/types.d.ts.map +1 -0
  308. package/dist/workspace/strategies/types.js +11 -0
  309. package/dist/workspace/strategies/types.js.map +1 -0
  310. package/dist/workspace/types.d.ts +1 -1
  311. package/dist/workspace/types.d.ts.map +1 -1
  312. package/dist/workspace/workspace-manager.d.ts +1 -1
  313. package/dist/workspace/workspace-manager.d.ts.map +1 -1
  314. package/docs/implementation-details.md +1127 -0
  315. package/docs/implementation-summary.md +448 -0
  316. package/docs/mail-integration.md +608 -0
  317. package/docs/plan-self-driving-support.md +433 -0
  318. package/docs/spec-self-driving-support.md +462 -0
  319. package/docs/team-templates.md +860 -0
  320. package/docs/teams.md +233 -0
  321. package/package.json +5 -3
  322. package/src/acp/__tests__/integration.test.ts +161 -1
  323. package/src/acp/__tests__/macro-agent.test.ts +95 -0
  324. package/src/acp/__tests__/session-persistence.test.ts +276 -0
  325. package/src/acp/macro-agent.ts +79 -7
  326. package/src/acp/session-mapper.ts +108 -1
  327. package/src/acp/types.ts +33 -1
  328. package/src/agent/agent-manager.ts +278 -6
  329. package/src/agent/types.ts +27 -0
  330. package/src/agent/wake.ts +15 -0
  331. package/src/agent-detection/__tests__/command-builder.test.ts +336 -0
  332. package/src/agent-detection/__tests__/detector.test.ts +768 -0
  333. package/src/agent-detection/__tests__/registry.test.ts +254 -0
  334. package/src/agent-detection/command-builder.ts +90 -0
  335. package/src/agent-detection/detector.ts +307 -0
  336. package/src/agent-detection/index.ts +36 -0
  337. package/src/agent-detection/registry.ts +200 -0
  338. package/src/agent-detection/types.ts +184 -0
  339. package/src/api/__tests__/conversation-api.test.ts +468 -0
  340. package/src/api/server.ts +425 -1
  341. package/src/api/types.ts +64 -1
  342. package/src/cli/acp.ts +9 -1
  343. package/src/cli/index.ts +44 -0
  344. package/src/cli/mcp.ts +47 -0
  345. package/src/config/index.ts +9 -0
  346. package/src/config/project-config.ts +107 -0
  347. package/src/lifecycle/cascade.ts +1 -1
  348. package/src/lifecycle/handlers/index.ts +8 -0
  349. package/src/lifecycle/handlers/worker.ts +48 -3
  350. package/src/mail/__tests__/conversation-lifecycle.test.ts +409 -0
  351. package/src/mail/__tests__/eventstore-stores.test.ts +1073 -0
  352. package/src/mail/__tests__/mail-full-agent.e2e.test.ts +575 -0
  353. package/src/mail/__tests__/mail-integration.test.ts +759 -0
  354. package/src/mail/__tests__/mail-map-protocol.e2e.test.ts +1068 -0
  355. package/src/mail/__tests__/mail-service.test.ts +506 -0
  356. package/src/mail/__tests__/turn-recorder.test.ts +328 -0
  357. package/src/mail/conversation-map.ts +107 -0
  358. package/src/mail/index.ts +25 -0
  359. package/src/mail/mail-service.ts +257 -0
  360. package/src/mail/stores/eventstore-conversation-store.ts +146 -0
  361. package/src/mail/stores/eventstore-participant-store.ts +172 -0
  362. package/src/mail/stores/eventstore-thread-store.ts +129 -0
  363. package/src/mail/stores/eventstore-turn-store.ts +173 -0
  364. package/src/mail/stores/index.ts +12 -0
  365. package/src/mail/stores/types.ts +160 -0
  366. package/src/mail/turn-recorder.ts +124 -0
  367. package/src/map/README.md +79 -0
  368. package/src/map/adapter/__tests__/extensions.test.ts +359 -0
  369. package/src/map/adapter/__tests__/map-adapter.test.ts +90 -0
  370. package/src/map/adapter/__tests__/workspace-files.test.ts +673 -0
  371. package/src/map/adapter/acp-over-map.ts +45 -2
  372. package/src/map/adapter/event-translator.ts +4 -0
  373. package/src/map/adapter/extensions/agent-detection.ts +201 -0
  374. package/src/map/adapter/extensions/index.ts +63 -0
  375. package/src/map/adapter/extensions/resume.ts +114 -0
  376. package/src/map/adapter/extensions/workspace-files.ts +449 -0
  377. package/src/map/adapter/mail-handler-adapter.ts +429 -0
  378. package/src/map/adapter/map-adapter.ts +173 -27
  379. package/src/map/adapter/rpc-handler.ts +8 -1
  380. package/src/map/index.ts +3 -0
  381. package/src/map/types.ts +3 -1
  382. package/src/mcp/mcp-server.ts +67 -0
  383. package/src/mcp/tools/claim_task.ts +86 -0
  384. package/src/mcp/tools/done.ts +59 -10
  385. package/src/mcp/tools/list_claimable_tasks.ts +93 -0
  386. package/src/mcp/tools/unclaim_task.ts +71 -0
  387. package/src/metrics/index.ts +9 -0
  388. package/src/metrics/metrics.ts +280 -0
  389. package/src/roles/capabilities.ts +3 -0
  390. package/src/roles/types.ts +2 -1
  391. package/src/router/README.md +120 -0
  392. package/src/router/__tests__/message-router.test.ts +561 -0
  393. package/src/router/channels.ts +3 -4
  394. package/src/router/message-router.ts +308 -22
  395. package/src/router/role-resolver.ts +22 -1
  396. package/src/router/types.ts +36 -1
  397. package/src/server/combined-server.ts +36 -2
  398. package/src/store/README.md +134 -0
  399. package/src/store/event-store.ts +546 -3
  400. package/src/store/types/agents.ts +1 -1
  401. package/src/store/types/conversations.ts +129 -0
  402. package/src/store/types/events.ts +5 -1
  403. package/src/store/types/index.ts +2 -0
  404. package/src/store/types/sessions.ts +53 -0
  405. package/src/store/types/tasks.ts +3 -0
  406. package/src/task/backend/memory.ts +116 -0
  407. package/src/task/backend/types.ts +43 -0
  408. package/src/teams/__tests__/cross-subsystem.integration.test.ts +983 -0
  409. package/src/teams/__tests__/e2e/team-runtime.e2e.test.ts +553 -0
  410. package/src/teams/__tests__/team-system.test.ts +1280 -0
  411. package/src/teams/index.ts +13 -0
  412. package/src/teams/team-loader.ts +434 -0
  413. package/src/teams/team-runtime.ts +727 -0
  414. package/src/teams/types.ts +377 -0
  415. package/src/trigger/router/trigger-router.ts +30 -3
  416. package/src/trigger/wake/types.ts +32 -5
  417. package/src/trigger/wake/wake-manager.ts +2 -2
  418. package/src/workspace/dataplane-adapter.ts +1 -1
  419. package/src/workspace/index.ts +1 -1
  420. package/src/workspace/strategies/index.ts +18 -0
  421. package/src/workspace/strategies/optimistic.ts +136 -0
  422. package/src/workspace/strategies/queue.ts +81 -0
  423. package/src/workspace/strategies/registry.ts +89 -0
  424. package/src/workspace/strategies/trunk.ts +123 -0
  425. package/src/workspace/strategies/types.ts +145 -0
  426. package/src/workspace/types.ts +1 -1
  427. package/src/workspace/workspace-manager.ts +1 -1
  428. package/.claude/settings.local.json +0 -59
  429. package/dist/map/utils/address-translation.d.ts +0 -99
  430. package/dist/map/utils/address-translation.d.ts.map +0 -1
  431. package/dist/map/utils/address-translation.js +0 -285
  432. package/dist/map/utils/address-translation.js.map +0 -1
  433. package/dist/map/utils/index.d.ts +0 -7
  434. package/dist/map/utils/index.d.ts.map +0 -1
  435. package/dist/map/utils/index.js +0 -7
  436. package/dist/map/utils/index.js.map +0 -1
  437. package/openspec/AGENTS.md +0 -456
  438. package/openspec/changes/archive/2025-12-21-add-mvp-foundation/design.md +0 -128
  439. package/openspec/changes/archive/2025-12-21-add-mvp-foundation/proposal.md +0 -49
  440. package/openspec/changes/archive/2025-12-21-add-mvp-foundation/specs/agent-manager/spec.md +0 -150
  441. package/openspec/changes/archive/2025-12-21-add-mvp-foundation/specs/cli-api/spec.md +0 -258
  442. package/openspec/changes/archive/2025-12-21-add-mvp-foundation/specs/event-store/spec.md +0 -160
  443. package/openspec/changes/archive/2025-12-21-add-mvp-foundation/specs/mcp-tools/spec.md +0 -224
  444. package/openspec/changes/archive/2025-12-21-add-mvp-foundation/specs/message-router/spec.md +0 -153
  445. package/openspec/changes/archive/2025-12-21-add-mvp-foundation/specs/task-manager/spec.md +0 -136
  446. package/openspec/changes/archive/2025-12-21-add-mvp-foundation/tasks.md +0 -147
  447. package/openspec/project.md +0 -31
  448. package/openspec/specs/agent-manager/spec.md +0 -154
  449. package/openspec/specs/cli-api/spec.md +0 -262
  450. package/openspec/specs/event-store/spec.md +0 -164
  451. package/openspec/specs/mcp-tools/spec.md +0 -228
  452. package/openspec/specs/message-router/spec.md +0 -157
  453. package/openspec/specs/task-manager/spec.md +0 -140
  454. package/references/acp-factory-ref/CHANGELOG.md +0 -33
  455. package/references/acp-factory-ref/LICENSE +0 -21
  456. package/references/acp-factory-ref/README.md +0 -341
  457. package/references/acp-factory-ref/package-lock.json +0 -3102
  458. package/references/acp-factory-ref/package.json +0 -96
  459. package/references/acp-factory-ref/python/CHANGELOG.md +0 -33
  460. package/references/acp-factory-ref/python/LICENSE +0 -21
  461. package/references/acp-factory-ref/python/Makefile +0 -57
  462. package/references/acp-factory-ref/python/README.md +0 -253
  463. package/references/acp-factory-ref/python/pyproject.toml +0 -73
  464. package/references/acp-factory-ref/python/tests/__init__.py +0 -0
  465. package/references/acp-factory-ref/python/tests/e2e/__init__.py +0 -1
  466. package/references/acp-factory-ref/python/tests/e2e/test_codex_e2e.py +0 -349
  467. package/references/acp-factory-ref/python/tests/e2e/test_gemini_e2e.py +0 -165
  468. package/references/acp-factory-ref/python/tests/e2e/test_opencode_e2e.py +0 -296
  469. package/references/acp-factory-ref/python/tests/test_client_handler.py +0 -543
  470. package/references/acp-factory-ref/python/tests/test_pushable.py +0 -199
  471. package/references/claude-code-acp/.github/workflows/ci.yml +0 -45
  472. package/references/claude-code-acp/.github/workflows/publish.yml +0 -34
  473. package/references/claude-code-acp/.prettierrc.json +0 -4
  474. package/references/claude-code-acp/CHANGELOG.md +0 -249
  475. package/references/claude-code-acp/LICENSE +0 -222
  476. package/references/claude-code-acp/README.md +0 -53
  477. package/references/claude-code-acp/docs/RELEASES.md +0 -24
  478. package/references/claude-code-acp/eslint.config.js +0 -48
  479. package/references/claude-code-acp/package-lock.json +0 -4570
  480. package/references/claude-code-acp/package.json +0 -88
  481. package/references/claude-code-acp/scripts/release.sh +0 -119
  482. package/references/claude-code-acp/src/acp-agent.ts +0 -2065
  483. package/references/claude-code-acp/src/index.ts +0 -26
  484. package/references/claude-code-acp/src/lib.ts +0 -38
  485. package/references/claude-code-acp/src/mcp-server.ts +0 -911
  486. package/references/claude-code-acp/src/settings.ts +0 -522
  487. package/references/claude-code-acp/src/tests/.claude/commands/quick-math.md +0 -5
  488. package/references/claude-code-acp/src/tests/.claude/commands/say-hello.md +0 -6
  489. package/references/claude-code-acp/src/tests/acp-agent-fork.test.ts +0 -479
  490. package/references/claude-code-acp/src/tests/acp-agent.test.ts +0 -1502
  491. package/references/claude-code-acp/src/tests/extract-lines.test.ts +0 -103
  492. package/references/claude-code-acp/src/tests/fork-session.test.ts +0 -335
  493. package/references/claude-code-acp/src/tests/replace-and-calculate-location.test.ts +0 -334
  494. package/references/claude-code-acp/src/tests/settings.test.ts +0 -617
  495. package/references/claude-code-acp/src/tests/skills-options.test.ts +0 -187
  496. package/references/claude-code-acp/src/tests/tools.test.ts +0 -318
  497. package/references/claude-code-acp/src/tests/typescript-declarations.test.ts +0 -558
  498. package/references/claude-code-acp/src/tools.ts +0 -819
  499. package/references/claude-code-acp/src/utils.ts +0 -171
  500. package/references/claude-code-acp/tsconfig.json +0 -18
  501. package/references/claude-code-acp/vitest.config.ts +0 -19
  502. package/references/multi-agent-protocol/.sudocode/issues.jsonl +0 -82
  503. package/references/multi-agent-protocol/.sudocode/specs.jsonl +0 -9
  504. package/references/multi-agent-protocol/LICENSE +0 -21
  505. package/references/multi-agent-protocol/README.md +0 -113
  506. package/references/multi-agent-protocol/docs/00-design-specification.md +0 -460
  507. package/references/multi-agent-protocol/docs/01-open-questions.md +0 -1050
  508. package/references/multi-agent-protocol/docs/02-wire-protocol.md +0 -296
  509. package/references/multi-agent-protocol/docs/03-streaming-semantics.md +0 -252
  510. package/references/multi-agent-protocol/docs/04-error-handling.md +0 -231
  511. package/references/multi-agent-protocol/docs/05-connection-model.md +0 -244
  512. package/references/multi-agent-protocol/docs/06-visibility-permissions.md +0 -243
  513. package/references/multi-agent-protocol/docs/07-federation.md +0 -259
  514. package/references/multi-agent-protocol/docs/08-macro-agent-migration.md +0 -253
  515. package/references/multi-agent-protocol/package-lock.json +0 -3239
  516. package/references/multi-agent-protocol/package.json +0 -56
  517. package/references/multi-agent-protocol/schema/meta.json +0 -337
  518. package/references/multi-agent-protocol/schema/schema.json +0 -1828
@@ -0,0 +1,58 @@
1
+ /**
2
+ * claim_task() MCP Tool
3
+ *
4
+ * Allows agents with `task.claim` capability to claim the next available task.
5
+ * Used in the pull model where agents autonomously pick up work.
6
+ *
7
+ * @module mcp/tools/claim_task
8
+ */
9
+ import { z } from "zod";
10
+ // =============================================================================
11
+ // Schema
12
+ // =============================================================================
13
+ export const ClaimTaskSchema = {
14
+ tags: z
15
+ .array(z.string())
16
+ .optional()
17
+ .describe("Only claim tasks with at least one matching tag"),
18
+ root_tasks_only: z
19
+ .boolean()
20
+ .optional()
21
+ .describe("Only claim root tasks (no parent)"),
22
+ };
23
+ export function createClaimTaskHandler(context, deps) {
24
+ return async (args) => {
25
+ if (!deps.taskBackend.claim) {
26
+ return {
27
+ claimed: false,
28
+ message: "Task backend does not support claim operations",
29
+ };
30
+ }
31
+ const filter = {};
32
+ if (args.tags)
33
+ filter.tags = args.tags;
34
+ if (args.root_tasks_only)
35
+ filter.rootTasksOnly = args.root_tasks_only;
36
+ const task = await deps.taskBackend.claim(context.agent_id, filter);
37
+ if (!task) {
38
+ return {
39
+ claimed: false,
40
+ message: "No claimable tasks available",
41
+ };
42
+ }
43
+ return {
44
+ claimed: true,
45
+ task,
46
+ message: `Claimed task ${task.id}: ${task.description}`,
47
+ };
48
+ };
49
+ }
50
+ // =============================================================================
51
+ // Tool Info
52
+ // =============================================================================
53
+ export const CLAIM_TASK_TOOL_INFO = {
54
+ name: "claim_task",
55
+ description: "Claim the next available task from the task pool. Returns the claimed task or null if none available. Requires task.claim capability.",
56
+ schema: ClaimTaskSchema,
57
+ };
58
+ //# sourceMappingURL=claim_task.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim_task.js","sourceRoot":"","sources":["../../../src/mcp/tools/claim_task.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,gFAAgF;AAChF,SAAS;AACT,gFAAgF;AAEhF,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,CAAC;SACJ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CAAC,iDAAiD,CAAC;IAC9D,eAAe,EAAE,CAAC;SACf,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,mCAAmC,CAAC;CACjD,CAAC;AAUF,MAAM,UAAU,sBAAsB,CACpC,OAAoB,EACpB,IAAmB;IAEnB,OAAO,KAAK,EAAE,IAGb,EAIE,EAAE;QACH,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YAC5B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,gDAAgD;aAC1D,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAgB,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,IAAI;YAAE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvC,IAAI,IAAI,CAAC,eAAe;YAAE,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC;QAEtE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAEpE,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,8BAA8B;aACxC,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI;YACJ,OAAO,EAAE,gBAAgB,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE;SACxD,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,IAAI,EAAE,YAAY;IAClB,WAAW,EACT,uIAAuI;IACzI,MAAM,EAAE,eAAe;CACxB,CAAC"}
@@ -47,11 +47,24 @@ export interface DoneToolDeps {
47
47
  /** Get merge queue for coordinating worker merges */
48
48
  getMergeQueue?(): AllHandlerDeps["mergeQueue"];
49
49
  };
50
+ /** Optional RoleRegistry for capability-based done() checks */
51
+ roleRegistry?: import("../../roles/types.js").RoleRegistry;
52
+ /** Optional MailService for recording completion turns */
53
+ mailService?: import("../../mail/mail-service.js").MailService;
54
+ /** Optional ConversationMap for agent-to-conversation lookup */
55
+ conversationMap?: import("../../mail/conversation-map.js").ConversationMap;
56
+ /** Optional integration strategy (from team config) */
57
+ integrationStrategy?: import("../../workspace/strategies/types.js").IntegrationStrategy;
58
+ /** Optional task mode from team config */
59
+ taskMode?: "push" | "pull";
50
60
  }
51
61
  /**
52
- * Check if an agent has the lifecycle.done capability
62
+ * Check if an agent has the lifecycle.done capability.
63
+ *
64
+ * Uses RoleRegistry for capability resolution, supporting both built-in
65
+ * roles and team-defined roles that extend them.
53
66
  */
54
- export declare function hasLifecycleDoneCapability(eventStore: EventStore, agentId: string): {
67
+ export declare function hasLifecycleDoneCapability(eventStore: EventStore, agentId: string, roleRegistry?: import("../../roles/types.js").RoleRegistry): {
55
68
  hasCapability: boolean;
56
69
  role: string;
57
70
  };
@@ -1 +1 @@
1
- {"version":3,"file":"done.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/done.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAY,UAAU,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEvF,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAMtF;;GAEG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;CAgBtB,CAAC;AAMF;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;IAC7B,WAAW,EAAE,WAAW,CAAC;IACzB,gBAAgB,CAAC,EAAE;QACjB,iCAAiC;QACjC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG;YAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;YAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,GAAG,IAAI,CAAC;QACT,qDAAqD;QACrD,aAAa,CAAC,IAAI,cAAc,CAAC,YAAY,CAAC,CAAC;KAChD,CAAC;CACH;AAMD;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,MAAM,GACd;IAAE,aAAa,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CA2B1C;AAMD;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,MAAM,EACZ,gBAAgB,CAAC,EAAE,YAAY,CAAC,kBAAkB,CAAC,GAClD,gBAAgB,CAwBlB;AAMD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,IAC1D,MAAM;IAClB,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,KAAG,OAAO,CAAC,UAAU,CAAC,CAmHxB;AAMD;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;CAK1B,CAAC"}
1
+ {"version":3,"file":"done.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/done.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAY,UAAU,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEvF,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAMtF;;GAEG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;CAgBtB,CAAC;AAMF;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;IAC7B,WAAW,EAAE,WAAW,CAAC;IACzB,gBAAgB,CAAC,EAAE;QACjB,iCAAiC;QACjC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG;YAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;YAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,GAAG,IAAI,CAAC;QACT,qDAAqD;QACrD,aAAa,CAAC,IAAI,cAAc,CAAC,YAAY,CAAC,CAAC;KAChD,CAAC;IACF,+DAA+D;IAC/D,YAAY,CAAC,EAAE,OAAO,sBAAsB,EAAE,YAAY,CAAC;IAC3D,0DAA0D;IAC1D,WAAW,CAAC,EAAE,OAAO,4BAA4B,EAAE,WAAW,CAAC;IAC/D,gEAAgE;IAChE,eAAe,CAAC,EAAE,OAAO,gCAAgC,EAAE,eAAe,CAAC;IAC3E,uDAAuD;IACvD,mBAAmB,CAAC,EAAE,OAAO,qCAAqC,EAAE,mBAAmB,CAAC;IACxF,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC5B;AAMD;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,OAAO,sBAAsB,EAAE,YAAY,GACzD;IAAE,aAAa,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CA4B1C;AAMD;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,MAAM,EACZ,gBAAgB,CAAC,EAAE,YAAY,CAAC,kBAAkB,CAAC,GAClD,gBAAgB,CAwBlB;AAMD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,IAC1D,MAAM;IAClB,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,KAAG,OAAO,CAAC,UAAU,CAAC,CAqJxB;AAMD;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;CAK1B,CAAC"}
@@ -37,27 +37,30 @@ export const DoneSchema = {
37
37
  // Capability Check
38
38
  // =============================================================================
39
39
  /**
40
- * Check if an agent has the lifecycle.done capability
40
+ * Check if an agent has the lifecycle.done capability.
41
+ *
42
+ * Uses RoleRegistry for capability resolution, supporting both built-in
43
+ * roles and team-defined roles that extend them.
41
44
  */
42
- export function hasLifecycleDoneCapability(eventStore, agentId) {
45
+ export function hasLifecycleDoneCapability(eventStore, agentId, roleRegistry) {
43
46
  // Get the agent to find their role
44
47
  const agent = eventStore.getAgent(agentId);
45
48
  if (!agent) {
46
49
  return { hasCapability: false, role: "unknown" };
47
50
  }
48
- // Get the agent's role (set at spawn time) or default to "worker"
49
- // In the future, this should query the RoleRegistry for full capability lookup
50
51
  const role = agent.role ?? "worker";
51
- // Check if the role has lifecycle.done capability
52
- // For now, we check based on known roles that have this capability
53
- // In the future, this should query the RoleRegistry
52
+ // Use RoleRegistry for capability lookup when available
53
+ if (roleRegistry) {
54
+ const hasCapability = roleRegistry.hasCapability(role, "lifecycle.done");
55
+ return { hasCapability, role };
56
+ }
57
+ // Fallback: check base role via prefix match against known built-in roles
54
58
  const rolesWithDoneCapability = new Set([
55
59
  "worker",
56
60
  "worker.resolver",
57
61
  "integrator",
58
62
  "monitor",
59
63
  ]);
60
- // Check exact match or prefix match
61
64
  const hasCapability = rolesWithDoneCapability.has(role) ||
62
65
  rolesWithDoneCapability.has(role.split(".")[0]);
63
66
  return { hasCapability, role };
@@ -99,11 +102,11 @@ export function buildLifecycleContext(toolContext, eventStore, role, workspaceMa
99
102
  */
100
103
  export function createDoneHandler(context, deps) {
101
104
  return async (args) => {
102
- const { eventStore, agentManager, messageRouter, taskManager, workspaceManager } = deps;
105
+ const { eventStore, agentManager, messageRouter, taskManager, workspaceManager, roleRegistry, mailService, conversationMap } = deps;
103
106
  // ─────────────────────────────────────────────────────────────────────────
104
107
  // Step 1: Check capability
105
108
  // ─────────────────────────────────────────────────────────────────────────
106
- const { hasCapability, role } = hasLifecycleDoneCapability(eventStore, context.agent_id);
109
+ const { hasCapability, role } = hasLifecycleDoneCapability(eventStore, context.agent_id, roleRegistry);
107
110
  if (!hasCapability) {
108
111
  return {
109
112
  success: false,
@@ -156,6 +159,36 @@ export function createDoneHandler(context, deps) {
156
159
  // Continue even if emit fails
157
160
  }
158
161
  // ─────────────────────────────────────────────────────────────────────────
162
+ // Step 4b: Record completion turn and close conversation (Mail)
163
+ // ─────────────────────────────────────────────────────────────────────────
164
+ if (mailService && conversationMap) {
165
+ try {
166
+ const convId = conversationMap.getAgentConversation(context.agent_id);
167
+ if (convId) {
168
+ // Record completion turn
169
+ mailService.recordTurn({
170
+ conversationId: convId,
171
+ participant: context.agent_id,
172
+ contentType: "event",
173
+ content: {
174
+ event: `agent.${args.status}`,
175
+ summary: args.summary,
176
+ details: args.details,
177
+ },
178
+ });
179
+ // Close the conversation
180
+ mailService.closeConversation({
181
+ conversationId: convId,
182
+ closedBy: context.agent_id,
183
+ reason: args.status,
184
+ });
185
+ }
186
+ }
187
+ catch {
188
+ // Never fail done() due to mail errors
189
+ }
190
+ }
191
+ // ─────────────────────────────────────────────────────────────────────────
159
192
  // Step 5: Dispatch to role-specific handler
160
193
  // ─────────────────────────────────────────────────────────────────────────
161
194
  const doneArgs = {
@@ -171,6 +204,8 @@ export function createDoneHandler(context, deps) {
171
204
  getWorkspacePath: workspaceManager
172
205
  ? (agentId) => workspaceManager.getWorkspace(agentId)?.path
173
206
  : undefined,
207
+ integrationStrategy: deps.integrationStrategy,
208
+ taskMode: deps.taskMode,
174
209
  };
175
210
  const handlerResult = await dispatchDone(lifecycleContext, doneArgs, cleanupStatus, handlerDeps);
176
211
  // ─────────────────────────────────────────────────────────────────────────
@@ -1 +1 @@
1
- {"version":3,"file":"done.js","sourceRoot":"","sources":["../../../src/mcp/tools/done.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"done.js","sourceRoot":"","sources":["../../../src/mcp/tools/done.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * list_claimable_tasks() MCP Tool
3
+ *
4
+ * Lists tasks available for claiming. Allows agents to preview
5
+ * what's in the task pool before claiming.
6
+ *
7
+ * @module mcp/tools/list_claimable_tasks
8
+ */
9
+ import { z } from "zod";
10
+ import type { TaskBackend, ExtendedTask } from "../../task/backend/types.js";
11
+ import type { ToolContext } from "../types.js";
12
+ export declare const ListClaimableTasksSchema: {
13
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
14
+ root_tasks_only: z.ZodOptional<z.ZodBoolean>;
15
+ limit: z.ZodOptional<z.ZodNumber>;
16
+ };
17
+ export interface ListClaimableTasksDeps {
18
+ taskBackend: TaskBackend;
19
+ }
20
+ export declare function createListClaimableTasksHandler(_context: ToolContext, deps: ListClaimableTasksDeps): (args: {
21
+ tags?: string[];
22
+ root_tasks_only?: boolean;
23
+ limit?: number;
24
+ }) => Promise<{
25
+ tasks: ExtendedTask[];
26
+ count: number;
27
+ message: string;
28
+ }>;
29
+ export declare const LIST_CLAIMABLE_TASKS_TOOL_INFO: {
30
+ name: string;
31
+ description: string;
32
+ schema: {
33
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
34
+ root_tasks_only: z.ZodOptional<z.ZodBoolean>;
35
+ limit: z.ZodOptional<z.ZodNumber>;
36
+ };
37
+ };
38
+ //# sourceMappingURL=list_claimable_tasks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list_claimable_tasks.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/list_claimable_tasks.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,WAAW,EAAe,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC1F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAM/C,eAAO,MAAM,wBAAwB;;;;CAapC,CAAC;AAMF,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,WAAW,EACrB,IAAI,EAAE,sBAAsB,IAEd,MAAM;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,KAAG,OAAO,CAAC;IACV,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CA6BH;AAMD,eAAO,MAAM,8BAA8B;;;;;;;;CAK1C,CAAC"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * list_claimable_tasks() MCP Tool
3
+ *
4
+ * Lists tasks available for claiming. Allows agents to preview
5
+ * what's in the task pool before claiming.
6
+ *
7
+ * @module mcp/tools/list_claimable_tasks
8
+ */
9
+ import { z } from "zod";
10
+ // =============================================================================
11
+ // Schema
12
+ // =============================================================================
13
+ export const ListClaimableTasksSchema = {
14
+ tags: z
15
+ .array(z.string())
16
+ .optional()
17
+ .describe("Only list tasks with at least one matching tag"),
18
+ root_tasks_only: z
19
+ .boolean()
20
+ .optional()
21
+ .describe("Only list root tasks (no parent)"),
22
+ limit: z
23
+ .number()
24
+ .optional()
25
+ .describe("Maximum number of tasks to return (default: 20)"),
26
+ };
27
+ export function createListClaimableTasksHandler(_context, deps) {
28
+ return async (args) => {
29
+ if (!deps.taskBackend.listClaimable) {
30
+ return {
31
+ tasks: [],
32
+ count: 0,
33
+ message: "Task backend does not support listClaimable operations",
34
+ };
35
+ }
36
+ const filter = {};
37
+ if (args.tags)
38
+ filter.tags = args.tags;
39
+ if (args.root_tasks_only)
40
+ filter.rootTasksOnly = args.root_tasks_only;
41
+ let tasks = await deps.taskBackend.listClaimable(filter);
42
+ const limit = args.limit ?? 20;
43
+ if (tasks.length > limit) {
44
+ tasks = tasks.slice(0, limit);
45
+ }
46
+ return {
47
+ tasks,
48
+ count: tasks.length,
49
+ message: tasks.length > 0
50
+ ? `Found ${tasks.length} claimable task(s)`
51
+ : "No claimable tasks available",
52
+ };
53
+ };
54
+ }
55
+ // =============================================================================
56
+ // Tool Info
57
+ // =============================================================================
58
+ export const LIST_CLAIMABLE_TASKS_TOOL_INFO = {
59
+ name: "list_claimable_tasks",
60
+ description: "List tasks available for claiming. Shows pending, unblocked, unassigned tasks. Requires task.claim capability.",
61
+ schema: ListClaimableTasksSchema,
62
+ };
63
+ //# sourceMappingURL=list_claimable_tasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list_claimable_tasks.js","sourceRoot":"","sources":["../../../src/mcp/tools/list_claimable_tasks.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,gFAAgF;AAChF,SAAS;AACT,gFAAgF;AAEhF,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,IAAI,EAAE,CAAC;SACJ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CAAC,gDAAgD,CAAC;IAC7D,eAAe,EAAE,CAAC;SACf,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,kCAAkC,CAAC;IAC/C,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,iDAAiD,CAAC;CAC/D,CAAC;AAUF,MAAM,UAAU,+BAA+B,CAC7C,QAAqB,EACrB,IAA4B;IAE5B,OAAO,KAAK,EAAE,IAIb,EAIE,EAAE;QACH,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;YACpC,OAAO;gBACL,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE,CAAC;gBACR,OAAO,EAAE,wDAAwD;aAClE,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAgB,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,IAAI;YAAE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvC,IAAI,IAAI,CAAC,eAAe;YAAE,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC;QAEtE,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAEzD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QAC/B,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;YACzB,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAChC,CAAC;QAED,OAAO;YACL,KAAK;YACL,KAAK,EAAE,KAAK,CAAC,MAAM;YACnB,OAAO,EACL,KAAK,CAAC,MAAM,GAAG,CAAC;gBACd,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,oBAAoB;gBAC3C,CAAC,CAAC,8BAA8B;SACrC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EACT,gHAAgH;IAClH,MAAM,EAAE,wBAAwB;CACjC,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * unclaim_task() MCP Tool
3
+ *
4
+ * Allows agents with `task.claim` capability to release a claimed task
5
+ * back to the pending pool.
6
+ *
7
+ * @module mcp/tools/unclaim_task
8
+ */
9
+ import { z } from "zod";
10
+ import type { TaskBackend } from "../../task/backend/types.js";
11
+ import type { ToolContext } from "../types.js";
12
+ export declare const UnclaimTaskSchema: {
13
+ task_id: z.ZodString;
14
+ };
15
+ export interface UnclaimTaskDeps {
16
+ taskBackend: TaskBackend;
17
+ }
18
+ export declare function createUnclaimTaskHandler(_context: ToolContext, deps: UnclaimTaskDeps): (args: {
19
+ task_id: string;
20
+ }) => Promise<{
21
+ success: boolean;
22
+ message: string;
23
+ }>;
24
+ export declare const UNCLAIM_TASK_TOOL_INFO: {
25
+ name: string;
26
+ description: string;
27
+ schema: {
28
+ task_id: z.ZodString;
29
+ };
30
+ };
31
+ //# sourceMappingURL=unclaim_task.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unclaim_task.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/unclaim_task.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAM/C,eAAO,MAAM,iBAAiB;;CAE7B,CAAC;AAMF,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,WAAW,EACrB,IAAI,EAAE,eAAe,IAEP,MAAM;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,KAAG,OAAO,CAAC;IACV,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CAqBH;AAMD,eAAO,MAAM,sBAAsB;;;;;;CAKlC,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * unclaim_task() MCP Tool
3
+ *
4
+ * Allows agents with `task.claim` capability to release a claimed task
5
+ * back to the pending pool.
6
+ *
7
+ * @module mcp/tools/unclaim_task
8
+ */
9
+ import { z } from "zod";
10
+ // =============================================================================
11
+ // Schema
12
+ // =============================================================================
13
+ export const UnclaimTaskSchema = {
14
+ task_id: z.string().describe("ID of the task to unclaim"),
15
+ };
16
+ export function createUnclaimTaskHandler(_context, deps) {
17
+ return async (args) => {
18
+ if (!deps.taskBackend.unclaim) {
19
+ return {
20
+ success: false,
21
+ message: "Task backend does not support unclaim operations",
22
+ };
23
+ }
24
+ try {
25
+ await deps.taskBackend.unclaim(args.task_id);
26
+ return {
27
+ success: true,
28
+ message: `Task ${args.task_id} unclaimed and returned to pending pool`,
29
+ };
30
+ }
31
+ catch (error) {
32
+ return {
33
+ success: false,
34
+ message: `Failed to unclaim task: ${error instanceof Error ? error.message : String(error)}`,
35
+ };
36
+ }
37
+ };
38
+ }
39
+ // =============================================================================
40
+ // Tool Info
41
+ // =============================================================================
42
+ export const UNCLAIM_TASK_TOOL_INFO = {
43
+ name: "unclaim_task",
44
+ description: "Release a claimed task back to the pending pool so another agent can pick it up. Requires task.claim capability.",
45
+ schema: UnclaimTaskSchema,
46
+ };
47
+ //# sourceMappingURL=unclaim_task.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unclaim_task.js","sourceRoot":"","sources":["../../../src/mcp/tools/unclaim_task.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,gFAAgF;AAChF,SAAS;AACT,gFAAgF;AAEhF,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;CAC1D,CAAC;AAUF,MAAM,UAAU,wBAAwB,CACtC,QAAqB,EACrB,IAAqB;IAErB,OAAO,KAAK,EAAE,IAEb,EAGE,EAAE;QACH,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YAC9B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,kDAAkD;aAC5D,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7C,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,QAAQ,IAAI,CAAC,OAAO,yCAAyC;aACvE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,2BAA2B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;aAC7F,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,IAAI,EAAE,cAAc;IACpB,WAAW,EACT,kHAAkH;IACpH,MAAM,EAAE,iBAAiB;CAC1B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { getThroughputMetrics, getUtilizationMetrics, getErrorMetrics, type ThroughputMetrics, type UtilizationMetrics, type ErrorMetrics, type ErrorEntry, } from "./metrics.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/metrics/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,UAAU,GAChB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { getThroughputMetrics, getUtilizationMetrics, getErrorMetrics, } from "./metrics.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/metrics/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,GAKhB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Metrics Module
3
+ *
4
+ * Computes throughput, utilization, and error metrics from EventStore data.
5
+ * No new events needed — aggregates existing spawn, terminate, task, and
6
+ * status events.
7
+ *
8
+ * @module metrics/metrics
9
+ */
10
+ import type { EventStore } from "../store/event-store.js";
11
+ export interface ThroughputMetrics {
12
+ /** Tasks completed in the time window */
13
+ tasksCompleted: number;
14
+ /** Tasks failed in the time window */
15
+ tasksFailed: number;
16
+ /** Total tasks created in the time window */
17
+ tasksCreated: number;
18
+ /** Average completion time in ms (completed tasks only) */
19
+ avgCompletionTimeMs: number | null;
20
+ /** Tasks per minute (completed) */
21
+ completedPerMinute: number;
22
+ /** Time window start */
23
+ windowStart: number;
24
+ /** Time window end */
25
+ windowEnd: number;
26
+ }
27
+ export interface UtilizationMetrics {
28
+ /** Currently running agents */
29
+ activeAgents: number;
30
+ /** Total agents spawned in the time window */
31
+ totalSpawned: number;
32
+ /** Total agents stopped in the time window */
33
+ totalStopped: number;
34
+ /** Agents by role */
35
+ agentsByRole: Record<string, number>;
36
+ /** Agents by state */
37
+ agentsByState: Record<string, number>;
38
+ }
39
+ export interface ErrorMetrics {
40
+ /** Total errors in the time window */
41
+ totalErrors: number;
42
+ /** Errors by type */
43
+ errorsByType: Record<string, number>;
44
+ /** Recent errors (last N) */
45
+ recentErrors: ErrorEntry[];
46
+ }
47
+ export interface ErrorEntry {
48
+ /** Timestamp */
49
+ timestamp: number;
50
+ /** Agent ID */
51
+ agentId: string;
52
+ /** Error type/category */
53
+ type: string;
54
+ /** Error summary */
55
+ summary: string;
56
+ }
57
+ /**
58
+ * Compute throughput metrics for a time window.
59
+ *
60
+ * @param eventStore - EventStore to query
61
+ * @param windowMs - Time window in milliseconds (default: 5 minutes)
62
+ */
63
+ export declare function getThroughputMetrics(eventStore: EventStore, windowMs?: number): ThroughputMetrics;
64
+ /**
65
+ * Compute utilization metrics (current snapshot + window).
66
+ *
67
+ * @param eventStore - EventStore to query
68
+ * @param windowMs - Time window for spawn/stop counts (default: 5 minutes)
69
+ */
70
+ export declare function getUtilizationMetrics(eventStore: EventStore, windowMs?: number): UtilizationMetrics;
71
+ /**
72
+ * Compute error metrics for a time window.
73
+ *
74
+ * @param eventStore - EventStore to query
75
+ * @param windowMs - Time window in milliseconds (default: 30 minutes)
76
+ * @param maxRecent - Maximum recent errors to return (default: 20)
77
+ */
78
+ export declare function getErrorMetrics(eventStore: EventStore, windowMs?: number, maxRecent?: number): ErrorMetrics;
79
+ //# sourceMappingURL=metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/metrics/metrics.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAO1D,MAAM,WAAW,iBAAiB;IAChC,yCAAyC;IACzC,cAAc,EAAE,MAAM,CAAC;IAEvB,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAC;IAEpB,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IAErB,2DAA2D;IAC3D,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnC,mCAAmC;IACnC,kBAAkB,EAAE,MAAM,CAAC;IAE3B,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAC;IAEpB,sBAAsB;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,+BAA+B;IAC/B,YAAY,EAAE,MAAM,CAAC;IAErB,8CAA8C;IAC9C,YAAY,EAAE,MAAM,CAAC;IAErB,8CAA8C;IAC9C,YAAY,EAAE,MAAM,CAAC;IAErB,qBAAqB;IACrB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAErC,sBAAsB;IACtB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,YAAY;IAC3B,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAC;IAEpB,qBAAqB;IACrB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAErC,6BAA6B;IAC7B,YAAY,EAAE,UAAU,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,gBAAgB;IAChB,SAAS,EAAE,MAAM,CAAC;IAElB,eAAe;IACf,OAAO,EAAE,MAAM,CAAC;IAEhB,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IAEb,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,UAAU,EACtB,QAAQ,GAAE,MAAsB,GAC/B,iBAAiB,CAqDnB;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,UAAU,EACtB,QAAQ,GAAE,MAAsB,GAC/B,kBAAkB,CAwCpB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,UAAU,EACtB,QAAQ,GAAE,MAAuB,EACjC,SAAS,GAAE,MAAW,GACrB,YAAY,CAmEd"}