@makaio/framework 1.0.0-dev-1781034508425 → 1.0.0-dev-1781081952714

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 (346) hide show
  1. package/dist/.makaio-build.json +2 -2
  2. package/dist/adapters/config/index.d.mts +1 -1
  3. package/dist/adapters/config/index.mjs +1 -1
  4. package/dist/adapters/index.d.mts +24 -23
  5. package/dist/adapters/index.mjs +1 -1
  6. package/dist/adapters/node.d.mts +1 -1
  7. package/dist/adapters/node.mjs +1 -1
  8. package/dist/{ajv-B-geJci9.mjs → ajv-BJsabpMb.mjs} +2 -2
  9. package/dist/await-trigger-DREnXCEJ.mjs +1 -0
  10. package/dist/bus/index.d.mts +20 -20
  11. package/dist/{clients-namespace-DOr4mmmr.d.mts → clients-namespace-SFk7OTop.d.mts} +7 -7
  12. package/dist/contracts/adapter/index.d.mts +2 -2
  13. package/dist/contracts/adapter/schemas/session-lineage.d.mts +1 -1
  14. package/dist/contracts/artifact/index.d.mts +1 -1
  15. package/dist/contracts/client/index.d.mts +2 -2
  16. package/dist/contracts/common/index.d.mts +1 -1
  17. package/dist/contracts/config/index.d.mts +1 -1
  18. package/dist/contracts/extension/index.d.mts +3 -3
  19. package/dist/contracts/facet/index.d.mts +1 -1
  20. package/dist/contracts/harness/index.d.mts +1 -1
  21. package/dist/contracts/host/index.d.mts +1 -1
  22. package/dist/contracts/index.d.mts +343 -343
  23. package/dist/contracts/materialization/index.d.mts +3 -3
  24. package/dist/contracts/model-registry/index.d.mts +1 -1
  25. package/dist/contracts/native-session-supervisor/index.d.mts +1 -1
  26. package/dist/contracts/platform/index.d.mts +1 -1
  27. package/dist/contracts/provider/index.d.mts +2 -2
  28. package/dist/contracts/session/index.d.mts +2 -2
  29. package/dist/contracts/shared/index.d.mts +1 -1
  30. package/dist/contracts/skill/index.d.mts +1 -1
  31. package/dist/contracts/telemetry/index.d.mts +1 -1
  32. package/dist/contracts/timeout/index.d.mts +1 -1
  33. package/dist/contracts/variant/index.d.mts +1 -1
  34. package/dist/{definition-CWCNiH-q.d.mts → definition-BSghHJpQ.d.mts} +1 -1
  35. package/dist/{definition-BidQ9_x8.d.mts → definition-DqJOg6Lv.d.mts} +1 -1
  36. package/dist/{detached-extension-handle-Bo5Q06_g.mjs → detached-extension-handle-CxEBQnSa.mjs} +1 -1
  37. package/dist/drizzle/0000_charming_prowler.sql +443 -0
  38. package/dist/drizzle/0001_known_stephen_strange.sql +25 -0
  39. package/dist/drizzle/0002_woozy_gladiator.sql +1 -0
  40. package/dist/drizzle/0003_overjoyed_adam_destine.sql +1 -0
  41. package/dist/drizzle/0004_solid_goliath.sql +1 -0
  42. package/dist/drizzle/0005_round_calypso.sql +51 -0
  43. package/dist/drizzle/0006_free_tiger_shark.sql +4 -0
  44. package/dist/drizzle/0007_sparkling_terror.sql +2 -0
  45. package/dist/drizzle/0008_petite_deathstrike.sql +1 -0
  46. package/dist/drizzle/0009_lethal_malcolm_colcord.sql +6 -0
  47. package/dist/drizzle/0010_grey_chronomancer.sql +1 -0
  48. package/dist/drizzle/0011_solid_nomad.sql +1 -0
  49. package/dist/drizzle/meta/0000_snapshot.json +2813 -0
  50. package/dist/drizzle/meta/0001_snapshot.json +2820 -0
  51. package/dist/drizzle/meta/0002_snapshot.json +2827 -0
  52. package/dist/drizzle/meta/0003_snapshot.json +2834 -0
  53. package/dist/drizzle/meta/0004_snapshot.json +2842 -0
  54. package/dist/drizzle/meta/0005_snapshot.json +2849 -0
  55. package/dist/drizzle/meta/0006_snapshot.json +2865 -0
  56. package/dist/drizzle/meta/0007_snapshot.json +2879 -0
  57. package/dist/drizzle/meta/0008_snapshot.json +2886 -0
  58. package/dist/drizzle/meta/0009_snapshot.json +2901 -0
  59. package/dist/drizzle/meta/0010_snapshot.json +2908 -0
  60. package/dist/drizzle/meta/0011_snapshot.json +2915 -0
  61. package/dist/drizzle/meta/_journal.json +90 -0
  62. package/dist/extension--5Q190u_.mjs +1 -0
  63. package/dist/{filesystem-service-B9RbT-n-.mjs → filesystem-service-DH9zlxyd.mjs} +1 -1
  64. package/dist/git/index.mjs +1 -1
  65. package/dist/{globby-DPHEhf86.mjs → globby-4SrlyIlj.mjs} +1 -1
  66. package/dist/{handlers-Bl2Af8zt.mjs → handlers-Bev7-xjL.mjs} +1 -1
  67. package/dist/{index-BLmI8xDN.d.mts → index-BAhJKQLX.d.mts} +7 -7
  68. package/dist/{index-2mvEGCcP.d.mts → index-BCKRUuI2.d.mts} +2 -2
  69. package/dist/{index-ayGCeZ8t.d.mts → index-BYkOUd0x.d.mts} +24 -24
  70. package/dist/{index-j7hM0JEz.d.mts → index-Bibt5jAX.d.mts} +8 -8
  71. package/dist/{index-WZX3cU1L.d.mts → index-BmV60tMf.d.mts} +17 -17
  72. package/dist/{index-B-_F8N_E.d.mts → index-BpXX9WZJ.d.mts} +12 -12
  73. package/dist/{index-Dnd_-839.d.mts → index-BpniJgxu.d.mts} +4 -4
  74. package/dist/{index-o9__SHM7.d.mts → index-Bw_zL7Rs.d.mts} +1 -1
  75. package/dist/{index-Brlbx33t.d.mts → index-C3zfJg6s.d.mts} +27 -27
  76. package/dist/{index-B5lijQs7.d.mts → index-CNOTkyGw.d.mts} +289 -289
  77. package/dist/{index-BF8DYsOC.d.mts → index-CwKzQuIX.d.mts} +18 -18
  78. package/dist/{index-Bs5H4PFm.d.mts → index-D6bw4qJp.d.mts} +27 -27
  79. package/dist/{index-BXip2Nlo.d.mts → index-DETxgKS2.d.mts} +17 -17
  80. package/dist/{index-k7SK-A0P.d.mts → index-Db0uJ_Cg2.d.mts} +3 -3
  81. package/dist/{index-LbBWaNnT.d.mts → index-IekAD8Gp.d.mts} +126 -126
  82. package/dist/{index-BM7lYmmQ.d.mts → index-YDfOv0GT.d.mts} +1 -1
  83. package/dist/{index-B0bwOIpr.d.mts → index-fVgKVvta.d.mts} +3 -3
  84. package/dist/{index-DuIPU8sG.d.mts → index-jlQ4IhR5.d.mts} +431 -431
  85. package/dist/kernel/cli/index.d.mts +2 -95
  86. package/dist/kernel/cli/index.mjs +1 -1
  87. package/dist/kernel/cli/register.d.mts +2 -0
  88. package/dist/kernel/cli/register.mjs +1 -0
  89. package/dist/kernel/extension/index.d.mts +1 -1
  90. package/dist/kernel/extension/index.mjs +1 -1
  91. package/dist/kernel/index.d.mts +5 -5
  92. package/dist/kernel/index.mjs +1 -1
  93. package/dist/kernel/namespace/index.d.mts +1 -1
  94. package/dist/kernel/observability/index.d.mts +1 -1
  95. package/dist/kernel/providers/index.d.mts +1 -1
  96. package/dist/kernel/window/index.d.mts +1 -1
  97. package/dist/{lib-X80cqNZ5.mjs → lib-DPruLs5D.mjs} +1 -1
  98. package/dist/{lib--v_LnhHr.mjs → lib-aRogYLqg.mjs} +1 -1
  99. package/dist/{load-extensions-CESuhxma.mjs → load-extensions-C-TqCwzL.mjs} +1 -1
  100. package/dist/{load-extensions-t2rtaz1C.d.mts → load-extensions-D9nbDIiW.d.mts} +1 -1
  101. package/dist/mcp-http-server/index.mjs +4 -11
  102. package/dist/{namespace-l8A5zTPU2.d.mts → namespace-B60mn8J-2.d.mts} +6 -6
  103. package/dist/{namespace-sd3QrSzo.d.mts → namespace-BBVtD1gu.d.mts} +22 -22
  104. package/dist/namespace-BXqetkc3.mjs +1 -0
  105. package/dist/{namespace-B0l_lsLW.d.mts → namespace-BlS_i9KT.d.mts} +13 -13
  106. package/dist/{namespace-SD7Y-_iY.d.mts → namespace-ByyuIFpL.d.mts} +91 -91
  107. package/dist/{namespace-YsOUkmgE.d.mts → namespace-CHMszppN.d.mts} +6 -6
  108. package/dist/{namespace-BFM1kQbS.d.mts → namespace-CqUGzG53.d.mts} +2 -2
  109. package/dist/{namespace-BsmSZbub.d.mts → namespace-Ds6HkJEU.d.mts} +140 -140
  110. package/dist/namespace-DzVf1hVH.d.mts +96 -0
  111. package/dist/{namespace-DldKDPMI.d.mts → namespace-aBIAWxY3.d.mts} +18 -18
  112. package/dist/{namespace-eOeUjGPB.mjs → namespace-h0HIuqx0.mjs} +1 -1
  113. package/dist/node/bus-server/index.d.mts +1 -1
  114. package/dist/node/bus-server/index.mjs +1 -1
  115. package/dist/node/bus-server/server-lifecycle.d.mts +1 -1
  116. package/dist/node/bus-server/server-lifecycle.mjs +1 -1
  117. package/dist/{orchestrator-shared-DaPATFz1.mjs → orchestrator-shared-FnWrPS09.mjs} +1 -1
  118. package/dist/package-1DS4bXg5.mjs +1 -0
  119. package/dist/package-BSnp1zOR.d.mts +372 -0
  120. package/dist/package.json +5 -0
  121. package/dist/primitive-runtime-DcYYWy_6.mjs +8 -0
  122. package/dist/{provider-context-ClL5nCQg.mjs → provider-context-lfG0BpqX.mjs} +1 -1
  123. package/dist/rules/index.d.mts +1 -1
  124. package/dist/rules/schemas.d.mts +1 -1
  125. package/dist/runtime-bun/index.mjs +1 -1
  126. package/dist/runtime-node/extension-discovery.d.mts +1 -1
  127. package/dist/runtime-node/extension-validation.d.mts +1 -1
  128. package/dist/runtime-node/extension-validation.mjs +1 -1
  129. package/dist/runtime-node/index.d.mts +3 -3
  130. package/dist/runtime-node/index.mjs +29 -29
  131. package/dist/runtime-node/makaio-config.d.mts +3 -3
  132. package/dist/runtime-node/workflow-worker/index.d.mts +1 -1
  133. package/dist/runtime-node/workflow-worker/index.mjs +1 -1
  134. package/dist/runtime-node/workflow-worker/worker-entry.mjs +1 -1
  135. package/dist/{schema-BycLqlQI.d.mts → schema-CDL_pyyM.d.mts} +4 -4
  136. package/dist/{schema-DxHkeT-G.mjs → schema-DCJyzRHe.mjs} +1 -1
  137. package/dist/schema-introspection-CuRZPYEc.mjs +1 -0
  138. package/dist/{schemas-BI4gqRlW.d.mts → schemas-B5ToLwIs.d.mts} +19 -19
  139. package/dist/{schemas-C3wZhEAc.d.mts → schemas-Chyj6HuZ.d.mts} +5 -5
  140. package/dist/{schemas-BkeedMoC.d.mts → schemas-DZUaRcYl.d.mts} +7 -7
  141. package/dist/{schemas-CaeiaR4r2.d.mts → schemas-Exixg77V2.d.mts} +23 -23
  142. package/dist/{schemas-C4u2d8jR.d.mts → schemas-lqvZ6UpK.d.mts} +3 -3
  143. package/dist/{schemas-D7wxjmif.d.mts → schemas-on3_N5HP.d.mts} +140 -140
  144. package/dist/{schemas-mD6cFIJs.d.mts → schemas-t1VR6_b_.d.mts} +3 -3
  145. package/dist/services/adapter-runtime/index.d.mts +3 -3
  146. package/dist/services/adapter-runtime/index.mjs +1 -1
  147. package/dist/services/adapter-runtime/namespace.d.mts +1 -1
  148. package/dist/services/adapter-runtime/schemas.d.mts +1 -1
  149. package/dist/services/adapter-subsystem/index.d.mts +2 -2
  150. package/dist/services/adapter-subsystem/index.mjs +1 -1
  151. package/dist/services/adapter-subsystem/namespace.d.mts +1 -1
  152. package/dist/services/adapter-subsystem/namespace.mjs +1 -1
  153. package/dist/services/agent-runtime/index.d.mts +2 -2
  154. package/dist/services/agent-runtime/namespace.d.mts +1 -1
  155. package/dist/services/agent-runtime/schemas.d.mts +1 -1
  156. package/dist/services/capability/index.d.mts +1 -1
  157. package/dist/services/capability/index.mjs +1 -1
  158. package/dist/services/codebase/index.d.mts +2 -2
  159. package/dist/services/codebase/namespace.d.mts +1 -1
  160. package/dist/services/codebase/schemas.d.mts +1 -1
  161. package/dist/services/compression/index.d.mts +2 -2
  162. package/dist/services/compression/namespace.d.mts +1 -1
  163. package/dist/services/compression/schemas.d.mts +1 -1
  164. package/dist/services/context-rules/index.d.mts +7 -7
  165. package/dist/services/context-rules/index.mjs +1 -1
  166. package/dist/services/execution-target/index.d.mts +3 -3
  167. package/dist/services/execution-target/index.mjs +1 -1
  168. package/dist/services/execution-target/namespace.d.mts +1 -1
  169. package/dist/services/execution-target/schemas.d.mts +1 -1
  170. package/dist/services/filesystem/index.d.mts +1 -1
  171. package/dist/services/filesystem/index.mjs +1 -1
  172. package/dist/services/git/namespace.d.mts +4 -4
  173. package/dist/services/git/namespace.mjs +1 -1
  174. package/dist/services/git/schemas.d.mts +5 -5
  175. package/dist/services/git/schemas.mjs +1 -1
  176. package/dist/services/harness/index.d.mts +31 -31
  177. package/dist/services/harness/index.mjs +1 -1
  178. package/dist/services/harness/storage/schema.d.mts +4 -4
  179. package/dist/services/index.d.mts +166 -166
  180. package/dist/services/index.mjs +1 -1
  181. package/dist/services/log-import/browser.d.mts +2 -2
  182. package/dist/services/log-import/index.d.mts +3 -3
  183. package/dist/services/log-import/log-import.d.mts +1 -1
  184. package/dist/services/log-import/log-import.mjs +1 -1
  185. package/dist/services/log-import/namespace.d.mts +6 -6
  186. package/dist/services/log-import/namespace.mjs +1 -1
  187. package/dist/services/log-import/schemas.d.mts +3 -3
  188. package/dist/services/log-import/schemas.mjs +1 -1
  189. package/dist/services/model-registry/index.d.mts +1 -1
  190. package/dist/services/model-registry/index.mjs +1 -1
  191. package/dist/services/preferences/index.d.mts +2 -2
  192. package/dist/services/preferences/schemas.d.mts +1 -1
  193. package/dist/services/preferences/storage-namespace.d.mts +2 -2
  194. package/dist/services/provider-context/index.d.mts +1 -1
  195. package/dist/services/provider-context/index.mjs +1 -1
  196. package/dist/services/provider-runtime/index.mjs +1 -1
  197. package/dist/services/session/handlers/index.d.mts +1 -1
  198. package/dist/services/session/handlers/index.mjs +1 -1
  199. package/dist/services/session/index.d.mts +9 -9
  200. package/dist/services/session/index.mjs +1 -1
  201. package/dist/services/session/messages/namespace.d.mts +1 -1
  202. package/dist/services/session/messages/namespace.mjs +1 -1
  203. package/dist/services/session/orchestrator-testing/index.d.mts +1 -1
  204. package/dist/services/session/orchestrator-testing/index.mjs +1 -1
  205. package/dist/services/session/session-events/namespace.d.mts +1 -1
  206. package/dist/services/session/session-events/namespace.mjs +1 -1
  207. package/dist/services/session/storage/namespace.d.mts +1 -1
  208. package/dist/services/session/storage/schema.d.mts +1 -1
  209. package/dist/services/session/testing/index.mjs +1 -1
  210. package/dist/services/session/testing/orchestrator-shared.d.mts +1 -1
  211. package/dist/services/session/testing/orchestrator-shared.mjs +1 -1
  212. package/dist/services/session/turns/namespace.d.mts +1 -1
  213. package/dist/services/session/turns/namespace.mjs +1 -1
  214. package/dist/services/session-editor/index.d.mts +1 -1
  215. package/dist/services/session-editor/index.mjs +1 -1
  216. package/dist/services/settings/index.d.mts +3 -3
  217. package/dist/services/settings/index.mjs +1 -1
  218. package/dist/services/settings/namespace.d.mts +14 -14
  219. package/dist/services/settings/namespace.mjs +1 -1
  220. package/dist/services/settings/storage/clients-namespace.d.mts +1 -1
  221. package/dist/services/settings/storage/clients-namespace.mjs +1 -1
  222. package/dist/services/settings/storage/extension-configs/namespace.d.mts +6 -6
  223. package/dist/services/settings/storage/index.d.mts +3 -3
  224. package/dist/services/settings/storage/index.mjs +1 -1
  225. package/dist/services/settings/storage/providers-namespace.d.mts +1 -1
  226. package/dist/services/settings/storage/providers-namespace.mjs +1 -1
  227. package/dist/services/subagent/index.d.mts +1 -1
  228. package/dist/services/subagent/index.mjs +1 -1
  229. package/dist/services/subagent-template/index.d.mts +2 -2
  230. package/dist/services/subagent-template/namespace.d.mts +1 -1
  231. package/dist/services/subagent-template/schemas.d.mts +1 -1
  232. package/dist/services/tool-approval/index.d.mts +1 -1
  233. package/dist/services/tool-approval/index.mjs +1 -1
  234. package/dist/services/tools/index.d.mts +1 -1
  235. package/dist/services/tools/index.mjs +1 -1
  236. package/dist/services/tray-menu/index.d.mts +3 -3
  237. package/dist/services/tray-menu/index.mjs +1 -1
  238. package/dist/services/tray-menu/namespace.d.mts +1 -1
  239. package/dist/services/tray-menu/schemas.d.mts +1 -1
  240. package/dist/services/turn/index.d.mts +1 -1
  241. package/dist/services/turn/namespace.d.mts +1 -1
  242. package/dist/{session-DOGx_Qrm2.mjs → session-BnfsJoZi.mjs} +1 -1
  243. package/dist/{session-lineage-PY_8PUTH.d.mts → session-lineage-CKg6mErA.d.mts} +1 -1
  244. package/dist/{src-BdKH_3mM.mjs → src-Dvp41Cg2.mjs} +1 -1
  245. package/dist/storage/drizzle/client.d.mts +1 -1
  246. package/dist/storage/drizzle/index.d.mts +1 -1
  247. package/dist/storage/handlers/drizzle/index.d.mts +1 -1
  248. package/dist/storage/handlers/drizzle/index.mjs +1 -1
  249. package/dist/storage/handlers/index.d.mts +1 -1
  250. package/dist/storage/handlers/index.mjs +1 -1
  251. package/dist/{storage-namespace-DyOwnbQO.d.mts → storage-namespace-BXmMUd7a.d.mts} +10 -10
  252. package/dist/tool-approval-service-BgNcJvKx.mjs +1 -0
  253. package/dist/tools-DC4KrqI1.mjs +1 -0
  254. package/dist/{types-igF72H-P.d.mts → types-D0fPFh-D.d.mts} +1 -1
  255. package/dist/{types-BQB_1_Tv.d.mts → types-DiGqpZOD.d.mts} +252 -252
  256. package/dist/ui-kernel/index.d.mts +4 -4
  257. package/dist/ui-kernel/pages/namespace.d.mts +4 -4
  258. package/dist/ui-kernel/pages/schemas.d.mts +1 -1
  259. package/dist/workflow-engine/index.d.mts +6568 -0
  260. package/dist/workflow-engine/index.mjs +1 -0
  261. package/dist/workflow-engine/package.d.mts +2 -0
  262. package/dist/workflow-engine/package.mjs +1 -0
  263. package/dist/workflow-engine/workflow-orchestrator.d.mts +61 -0
  264. package/dist/workflow-engine/workflow-orchestrator.mjs +1 -0
  265. package/dist/workflow-worker-DvP753UN.mjs +1 -0
  266. package/package.json +13 -1
  267. package/dist/await-trigger-CmK_k2oe.mjs +0 -1
  268. package/dist/extension-CbCanyuh.mjs +0 -1
  269. package/dist/schema-introspection-A6FnQ1qg.mjs +0 -1
  270. package/dist/tool-approval-service-DRe1lqy-.mjs +0 -1
  271. package/dist/tools-BXEIs_Ur.mjs +0 -1
  272. package/dist/workflow-worker-BWoY_2ue.mjs +0 -1
  273. /package/dist/{base-orchestrator-D9E-Y8Kr.d.mts → base-orchestrator-M5mAB5-w.d.mts} +0 -0
  274. /package/dist/{capability-service-C2RapAHW.mjs → capability-service-jjrFLM6r.mjs} +0 -0
  275. /package/dist/{cleanEnvForAdapter-GVzUk_oB.mjs → cleanEnvForAdapter-BlpmyXYk.mjs} +0 -0
  276. /package/dist/{config-namespace-B5fFJwQj.d.mts → config-namespace-BzAvE2nY.d.mts} +0 -0
  277. /package/dist/{create-static-mount-Btee48F5.mjs → create-static-mount-CFGo91CI.mjs} +0 -0
  278. /package/dist/{cross-spawn-CTptpCy4.mjs → cross-spawn-BL6EvJBv.mjs} +0 -0
  279. /package/dist/{cursor-storage-BOsCO4oj.mjs → cursor-storage-C_WTAESV.mjs} +0 -0
  280. /package/dist/{definition-C4DLI1SC.d.mts → definition-q6iLw11H.d.mts} +0 -0
  281. /package/dist/{drizzle-YUDNFNbV.mjs → drizzle-DpjZFY_j.mjs} +0 -0
  282. /package/dist/{event-Ca2yUf5i.mjs → event-BEllCn16.mjs} +0 -0
  283. /package/dist/{execution-target-CRPTfZlc.mjs → execution-target-CQGYaaM2.mjs} +0 -0
  284. /package/dist/{extension-discovery-CffOPDvn.d.mts → extension-discovery-CkV_VRdJ.d.mts} +0 -0
  285. /package/dist/{fast-uri-DARKlakU.mjs → fast-uri-BF2Xuiop.mjs} +0 -0
  286. /package/dist/{filesystem-service-Cw4_S1bm.d.mts → filesystem-service-Ddngll0j.d.mts} +0 -0
  287. /package/dist/{identity-Cz2IeEtm.mjs → identity-Bmx-8fPa.mjs} +0 -0
  288. /package/dist/{index-CJt_4GQu.d.mts → index-9IDJUJ4X.d.mts} +0 -0
  289. /package/dist/{index-DOfnh3xf.d.mts → index-BBvcP-P0.d.mts} +0 -0
  290. /package/dist/{index-ChpYWZGc.d.mts → index-BKKNWqkP2.d.mts} +0 -0
  291. /package/dist/{index-DOAUskuB.d.mts → index-BMpRB6iE.d.mts} +0 -0
  292. /package/dist/{index-BKqJTm2-.d.mts → index-BbCjtc3h.d.mts} +0 -0
  293. /package/dist/{index-Bo6dMW5B.d.mts → index-BheaEhyI.d.mts} +0 -0
  294. /package/dist/{index-FjZOM4M0.d.mts → index-BnQSPC6c.d.mts} +0 -0
  295. /package/dist/{index-BPn5ODFL.d.mts → index-Bsp0O_sI.d.mts} +0 -0
  296. /package/dist/{index-CBW3XX7b.d.mts → index-Buo9H8RK.d.mts} +0 -0
  297. /package/dist/{index-BWA-Bf0T.d.mts → index-BxFA1XcP.d.mts} +0 -0
  298. /package/dist/{index-sQ-7cpgm2.d.mts → index-C33Tq1ei2.d.mts} +0 -0
  299. /package/dist/{index-BkKMwRJj.d.mts → index-C6BhKRnH.d.mts} +0 -0
  300. /package/dist/{index-CE2F0_8r.d.mts → index-CDU_s69P.d.mts} +0 -0
  301. /package/dist/{index-AJDF86bD2.d.mts → index-CGJjA-hR2.d.mts} +0 -0
  302. /package/dist/{index-B3SbibGM.d.mts → index-Clut1ljB.d.mts} +0 -0
  303. /package/dist/{index-Ksoed-mL.d.mts → index-Cz9JMjZK.d.mts} +0 -0
  304. /package/dist/{index-rQU8B-JX.d.mts → index-D0SUjZmU.d.mts} +0 -0
  305. /package/dist/{index-BZmLqP2a.d.mts → index-D6Iyvz9T.d.mts} +0 -0
  306. /package/dist/{index-8AU9itst2.d.mts → index-DOfq0qqv.d.mts} +0 -0
  307. /package/dist/{index-DYLb4v5z.d.mts → index-DSV1aFgK.d.mts} +0 -0
  308. /package/dist/{index-DpKxkrU8.d.mts → index-Dsq2zKvu.d.mts} +0 -0
  309. /package/dist/{jsonl-transport-DN1zyi6w.mjs → jsonl-transport-BxNXizIm.mjs} +0 -0
  310. /package/dist/{lib-DtXofYKC.mjs → lib-B9kVK_1_.mjs} +0 -0
  311. /package/dist/{model-registry-DdZrE4sa.mjs → model-registry-B0AIdj7O.mjs} +0 -0
  312. /package/dist/{namespace-BwzZJqTV.mjs → namespace-BgPoC46Q.mjs} +0 -0
  313. /package/dist/{namespace-Yna5-Pws.mjs → namespace-CDiM5Bcr.mjs} +0 -0
  314. /package/dist/{namespace-DzS4SSkr2.mjs → namespace-CUOGcGPG.mjs} +0 -0
  315. /package/dist/{namespace-CfqAh9gM.d.mts → namespace-D1Iw_d1P.d.mts} +0 -0
  316. /package/dist/{namespace-CCfEHbi9.mjs → namespace-D6X67cUk.mjs} +0 -0
  317. /package/dist/{namespace-BnVlQiRv.d.mts → namespace-DBKWNrk7.d.mts} +0 -0
  318. /package/dist/{namespace-BGGiHXkz.mjs → namespace-ENv7H7Na.mjs} +0 -0
  319. /package/dist/{namespace-oS2v7viW.d.mts → namespace-XTGCaSXj.d.mts} +0 -0
  320. /package/dist/{namespace-Buecxx19.d.mts → namespace-nlsvvMtD.d.mts} +0 -0
  321. /package/dist/{namespace-wYMkOtE0.d.mts → namespace-uuR0Fg5r.d.mts} +0 -0
  322. /package/dist/{orchestrator-shared-DXAvgseP.d.mts → orchestrator-shared-D91Wk7z-.d.mts} +0 -0
  323. /package/dist/{out-Rp-RSvc2.mjs → out-CvZYgczi.mjs} +0 -0
  324. /package/dist/{package-DKVlsMP3.mjs → package-OE9dMQsq.mjs} +0 -0
  325. /package/dist/{providers-namespace-BITpk8sN.d.mts → providers-namespace-BqWYkydw.d.mts} +0 -0
  326. /package/dist/{quick-lru-8GhFeKMZ.mjs → quick-lru-B9nWXbXI.mjs} +0 -0
  327. /package/dist/{schema-DdMn1KCD.mjs → schema-DOnJmAPw.mjs} +0 -0
  328. /package/dist/{schemas-CMyv6Mkq.d.mts → schemas-B77Gi8Xr.d.mts} +0 -0
  329. /package/dist/{schemas-B-Z4U9FN.mjs → schemas-BdAf5u58.mjs} +0 -0
  330. /package/dist/{schemas-WJ9OOsOF.d.mts → schemas-C792eVAZ.d.mts} +0 -0
  331. /package/dist/{schemas-PmHLOkr-.d.mts → schemas-Dyk7JuVl.d.mts} +0 -0
  332. /package/dist/{schemas-7y9O8b0X.d.mts → schemas-Kq33MTPY.d.mts} +0 -0
  333. /package/dist/{server-lifecycle-JX0MpLfX.d.mts → server-lifecycle-47mygK3E.d.mts} +0 -0
  334. /package/dist/{server-lifecycle-JTFuSJhg.mjs → server-lifecycle-Cg47L59Q.mjs} +0 -0
  335. /package/dist/{shared-schemas-CbbcM1GQ.mjs → shared-schemas-CKe2uN4-.mjs} +0 -0
  336. /package/dist/{src-CUlokMRL.mjs → src-Z3vAZJfw.mjs} +0 -0
  337. /package/dist/{storage-namespace-DecBVTzH.mjs → storage-namespace-BXO3lDVy.mjs} +0 -0
  338. /package/dist/{storage-namespace-definition-QTqbbw5b.d.mts → storage-namespace-definition-C3XbpiP8.d.mts} +0 -0
  339. /package/dist/{supports-color-CcNsYzyh.mjs → supports-color-fVsgozsi.mjs} +0 -0
  340. /package/dist/{tray-menu-service-CsaXURTf.mjs → tray-menu-service-B5YPK_YF.mjs} +0 -0
  341. /package/dist/{types-CycWG-_j.d.mts → types-5Gw3iVpK.d.mts} +0 -0
  342. /package/dist/{types-DVAi-qkD.d.mts → types-B0BtvVAq.d.mts} +0 -0
  343. /package/dist/{types-Bnf1bRcq.d.mts → types-BhXRffJ_.d.mts} +0 -0
  344. /package/dist/{types-CLojY5bP.d.mts → types-CmMesAgR.d.mts} +0 -0
  345. /package/dist/{types-C6R2eyMZ.d.mts → types-D-bP8RRE.d.mts} +0 -0
  346. /package/dist/{window-registry-r3VFP-_d.d.mts → window-registry-CfEi_Ji4.d.mts} +0 -0
@@ -0,0 +1 @@
1
+ import{f as e,p as t,s as n}from"../primitive-runtime-DcYYWy_6.mjs";import{a as r,i,n as a,o,r as s,t as c}from"../package-1DS4bXg5.mjs";import{JsonValueSchema as l,WorkflowFrameStateSchema as u}from"@makaio/framework/contracts";const d=new Set([...u.shape.status.options]);function f(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function p(e){if(!f(e))return!1;for(let t of Object.values(e))if(!f(t)||typeof t.status!=`string`||!d.has(t.status)||`result`in t&&t.result!==void 0&&!l.safeParse(t.result).success)return!1;return!0}function m(e){let t={trigger:f(e.trigger)?e.trigger:{},steps:p(e.steps)?e.steps:{},inputs:l.safeParse(e.inputs).success?e.inputs:{}};return`item`in e&&(t.item=e.item),typeof e.index==`number`&&(t.index=e.index),t}export{i as WorkflowEngineService,c as WorkflowEngineToken,r as WorkflowExecutor,e as WorkflowStorageNamespace,t as WorkflowStorageSubjects,m as buildWorkflowExpressionContextFromResolvedInputs,a as createWorkflowEnginePackage,o as registerDrizzleWorkflowStorage,n as runShellStep,s as workflowEnginePackage};
@@ -0,0 +1,2 @@
1
+ import { n as createWorkflowEnginePackage, r as workflowEnginePackage, t as WorkflowEngineToken } from "../package-BSnp1zOR.mjs";
2
+ export { WorkflowEngineToken, createWorkflowEnginePackage, workflowEnginePackage };
@@ -0,0 +1 @@
1
+ import{n as e,r as t,t as n}from"../package-1DS4bXg5.mjs";export{n as WorkflowEngineToken,e as createWorkflowEnginePackage,t as workflowEnginePackage};
@@ -0,0 +1,61 @@
1
+ import { IMakaioBus } from "@makaio/framework/bus";
2
+ import { StationHandler, WorkflowDefinition, WorkflowRunResult, WorkflowWorkerConfig, WorkflowZodSchemas } from "@makaio/framework/contracts";
3
+
4
+ //#region subsystems/workflow-engine/src/workflow-orchestrator.d.ts
5
+ /**
6
+ * The resolved workflow module produced by a workflow file loader.
7
+ *
8
+ * Contains the serializable workflow definition and the runtime handler map
9
+ * that the worker executor uses to dispatch station nodes.
10
+ */
11
+ interface LoadedWorkflow {
12
+ /** Serializable workflow definition (safe to persist or display in the UI). */
13
+ readonly definition: WorkflowDefinition;
14
+ /** Optional Zod schemas retained from file-loaded workflow builders. */
15
+ readonly zodSchemas?: WorkflowZodSchemas;
16
+ /**
17
+ * Runtime station handler functions keyed by node ID.
18
+ * Used by the orchestrator to dispatch `station`-type nodes.
19
+ */
20
+ readonly runtimeHandlers: ReadonlyMap<string, StationHandler>;
21
+ }
22
+ /**
23
+ * Input parameters for {@link runWorkflowOrchestrator}.
24
+ */
25
+ interface WorkflowOrchestratorParams {
26
+ /** Parsed and validated worker configuration. */
27
+ readonly config: WorkflowWorkerConfig;
28
+ /** Loaded workflow with definition and runtime handler map. */
29
+ readonly loaded: LoadedWorkflow;
30
+ /** Worker-local bus instance for emitting and subscribing to events. */
31
+ readonly bus: IMakaioBus;
32
+ /** Cancellation signal for cooperative abort. */
33
+ readonly signal: AbortSignal;
34
+ }
35
+ /**
36
+ * Orchestrate a full workflow execution inside an isolated worker.
37
+ *
38
+ * Builds an {@link ActiveExecution} from the worker config, persists the
39
+ * initial execution state, and delegates all scheduling to the
40
+ * primitive runtime ({@link executeSequence}), which handles:
41
+ * - Sequential node execution with `when`/`skip` condition evaluation
42
+ * - Parallel branch execution via `parallel` nodes
43
+ * - Iterate/iterate-chain for collection processing
44
+ * - Gate nodes with suspend/resume lifecycle
45
+ * - Station nodes dispatched via `runtimeHandlers`
46
+ *
47
+ * ### Cancellation
48
+ * When `signal` is already aborted before execution begins, returns a
49
+ * `cancelled` result immediately. In-flight nodes are cancelled cooperatively
50
+ * via the abort signal propagated through the `RuntimeContext`.
51
+ *
52
+ * ### Persistence contract
53
+ * The caller MUST ensure a {@link WorkflowStorageSubjects} handler is registered
54
+ * on the bus before calling this function. The orchestrator writes the initial
55
+ * execution record; the runtime writes frame state on each transition.
56
+ * @param params - Orchestrator parameters including config, loaded workflow, bus, and signal.
57
+ * @returns Workflow run result with status `completed`, `failed`, `cancelled`, or `paused`.
58
+ */
59
+ declare function runWorkflowOrchestrator(params: WorkflowOrchestratorParams): Promise<WorkflowRunResult>;
60
+ //#endregion
61
+ export { LoadedWorkflow, runWorkflowOrchestrator };
@@ -0,0 +1 @@
1
+ import{T as e,a as t,c as n,d as r,i,p as a,r as o,t as s}from"../primitive-runtime-DcYYWy_6.mjs";import{WORKFLOW_CANCELLED_REASON as c}from"@makaio/framework/contracts";async function l(t,n,r,i){let o=await m(t,n,r);return await t.request(a.setExecution,{execution:o}),r===`completed`?await t.emit(e.execution.completed,{executionId:n.executionId,workflowId:n.workflowId,totalDuration:0,completedAt:o.completedAt}):await t.emit(e.execution.cancelled,{executionId:n.executionId,workflowId:n.workflowId,reason:i,completedAt:o.completedAt}),r===`cancelled`?{executionId:n.executionId,workflowId:n.workflowId,status:`cancelled`,...i===void 0?{}:{reason:i}}:{executionId:n.executionId,workflowId:n.workflowId,status:`completed`}}function u(e,t){return t.status===`completed`?{executionId:e.executionId,workflowId:e.workflowId,status:`completed`,...t.artifact===void 0?{}:{artifact:t.artifact}}:t.status===`cancelled`?{executionId:e.executionId,workflowId:e.workflowId,status:`cancelled`,...t.reason===void 0?{}:{reason:t.reason}}:t.status===`paused`?{executionId:e.executionId,workflowId:e.workflowId,status:`paused`,pausedAtGateId:t.pausedAtGateId,pausedAtFrameId:t.pausedAtFrameId}:{executionId:e.executionId,workflowId:e.workflowId,status:`failed`,error:t.error}}function d(e){let t,i=()=>{t=n({bus:e.bus,activeExecutions:e.activeExecutions,shellAbortControllers:e.shellAbortControllers,activeRunnerSteps:e.activeRunnerSteps,cancelTimeoutMs:r.cancelTimeoutMs},e.executionId,c).catch(t=>(console.error(`[WorkflowOrchestrator] Failed to persist cancellation for ${e.executionId}:`,t),!1))};return e.signal.addEventListener(`abort`,i,{once:!0}),e.signal.aborted&&i(),async()=>(e.signal.removeEventListener(`abort`,i),t??!1)}async function f(e,t){let n=await e.requestOptional(a.getExecution,{executionId:t});return n.handled?n.data.execution?.startedAt??void 0:void 0}async function p(e,t){return{id:t.executionId,workflowId:t.workflowId,coordinatorSessionId:t.coordinatorSessionId,status:`running`,inputs:t.inputs,config:t.config??{},startedAt:await f(e,t.executionId)??Date.now(),triggerPayload:t.triggerPayload,scope:t.scope}}async function m(e,t,n){let r=Date.now();return{id:t.executionId,workflowId:t.workflowId,coordinatorSessionId:t.coordinatorSessionId,status:n,inputs:t.inputs,config:t.config??{},startedAt:await f(e,t.executionId)??r,completedAt:r,triggerPayload:t.triggerPayload,scope:t.scope}}async function h(e,n,r,a,o,l,u,d){let f=e.suspensionStrategy===`wait-in-process`?void 0:await g(e.executionId,l,{required:!0}),p=await i({definition:n,execution:r,runContext:a,zodSchema:d?.artifact,bus:l}),m=new t(e.executionId,e.workflowId,n,r,o,l,u,void 0,p,{context:e.context,env:e.env},{suspensionStrategy:e.suspensionStrategy,resumeFrames:f}),h=m.buildExpressionContext(),_=await s(n.root,m,h);return _.status===`failed`?{status:`failed`,error:_.error}:_.status===`paused`?{status:`paused`,pausedAtGateId:_.pausedAtGateId,pausedAtFrameId:_.pausedAtFrameId}:_.status===`cancelled`||u.aborted?{status:`cancelled`,reason:c}:{status:`completed`,artifact:p?.current}}async function g(e,t,n={}){try{let r=await t.requestOptional(a.listFrames,{executionId:e});if(!r.handled){if(n.required===!0)throw Error(`Frame storage handler is required to resume execution '${e}'.`);return}return r.data.frames.length===0?void 0:o(r.data.frames)}catch(e){if(n.required===!0)throw e;return}}function _(e,t){return{executionId:e.executionId,workflowId:e.workflowId,source:e.source,...e.source.kind===`definition`?{definitionSnapshot:e.definition??t}:{},workerManifest:{packages:[]},inputs:e.inputs,config:e.config??{},scope:e.scope,triggerPayload:e.triggerPayload,...e.artifactRef===void 0?{}:{artifactRef:e.artifactRef},...e.executionHints===void 0?{}:{executionHints:e.executionHints},coordinatorSessionId:e.coordinatorSessionId,cancelSubject:e.cancelSubject,context:e.context,env:e.env,createdAt:Date.now(),suspensionStrategy:e.suspensionStrategy}}async function v(t,n,r,i,o){r.status=`paused`,await t.request(a.setExecution,{execution:r}),await t.emit(e.execution.paused,{executionId:n.executionId,workflowId:n.workflowId,pausedAtGateId:i,pausedAtFrameId:o})}async function y(t,n,r,i,a,o){r===`completed`?await t.emit(e.execution.completed,{executionId:n.executionId,workflowId:n.workflowId,totalDuration:a-i.startedAt,completedAt:a}):r===`cancelled`?await t.emit(e.execution.cancelled,{executionId:n.executionId,workflowId:n.workflowId,reason:c,completedAt:a}):await t.emit(e.execution.failed,{executionId:n.executionId,workflowId:n.workflowId,error:o??`Workflow execution failed`,completedAt:a})}async function b(e){let{config:t,loaded:n,bus:r,signal:i}=e,{definition:o}=n;if(i.aborted)return l(r,t,`cancelled`,c);if(o.root.nodes.length===0)return l(r,t,`completed`);let s=await p(r,t);await r.request(a.setExecution,{execution:s});let f=new Map(n.runtimeHandlers),m=new Map,g=new Map,b=new Map,x=_(t,o);m.set(t.executionId,{execution:s,workflow:o,runContext:x,runtimeHandlers:f});let S=d({signal:i,executionId:t.executionId,bus:r,activeExecutions:m,shellAbortControllers:g,activeRunnerSteps:b}),C={status:`completed`},w=!1;try{C=await h(t,o,s,x,f,r,i,n.zodSchemas)}catch(e){C={status:`failed`,error:e instanceof Error?e.message:String(e)}}finally{w=await S(),m.clear()}if(w)return u(t,{status:`cancelled`,reason:c});if((i.aborted||s.status===`cancelled`)&&(C={status:`cancelled`,reason:c}),C.status===`paused`)return await v(r,t,s,C.pausedAtGateId,C.pausedAtFrameId),u(t,C);let T=Date.now(),E=C.status===`failed`?C.error:void 0;return s.status=C.status,s.completedAt=T,s.error=E,await r.request(a.setExecution,{execution:s}),await y(r,t,C.status,s,T,E),u(t,C)}export{b as runWorkflowOrchestrator};
@@ -0,0 +1 @@
1
+ import{i as e,o as t,t as n}from"./chunk-DTipWd-i.mjs";import{n as r,o as i,t as a}from"./await-trigger-DREnXCEJ.mjs";import{basename as o,join as s,resolve as c}from"node:path";import{WorkerNodeCapabilitiesSchema as l,WorkerNodeSubjects as u,WorkflowWorkerConfigSchema as d}from"@makaio/framework/contracts";import{runWorkflowOrchestrator as f}from"@makaio/framework/workflow-engine/workflow-orchestrator";var p=n(((e,t)=>{t.exports={name:`piscina`,version:`5.1.4`,description:`A fast, efficient Node.js Worker Thread Pool implementation`,main:`./dist/main.js`,types:`./dist/index.d.ts`,exports:{types:`./dist/index.d.ts`,import:`./dist/esm-wrapper.mjs`,require:`./dist/main.js`},engines:{node:`>=20.x`},scripts:{build:`tsc && gen-esm-wrapper . dist/esm-wrapper.mjs`,lint:`eslint`,test:`node scripts/run-tests.js --pattern='test/**/*test.ts'`,"test:ci":`npm run lint && npm run build && npm run test:coverage`,"test:coverage":`node scripts/run-tests.js --coverage --pattern='test/**/*test.ts'`,prepack:`npm run build`,benchmark:`node --allow-natives-syntax benchmark/index.js --scope all`,"benchmark:ci":`node --allow-natives-syntax benchmark/index.js --scope all --reporter json | jq '.[] | .name, .opsSec'`,"benchmark:simple":`node --allow-natives-syntax benchmark/index.js --scope simple:all`,"benchmark:simple:default":`node --allow-natives-syntax benchmark/index.js --scope simple`,"benchmark:simple:async":`node --allow-natives-syntax benchmark/index.js --scope simple:async`,"benchmark:startup":`node --allow-natives-syntax benchmark/index.js --scope startup`,"benchmark:queue":`node --allow-natives-syntax benchmark/index.js --scope queue`},repository:{type:`git`,url:`git+https://github.com/piscinajs/piscina.git`},keywords:[`fast`,`worker threads`,`thread pool`,`wade wilson`],author:`James M Snell <jasnell@gmail.com>`,contributors:[`Anna Henningsen <anna@addaleax.net>`,`Matteo Collina <matteo.collina@gmail.com>`,`Carlos Fuentes <me@metcoder.dev>`],license:`MIT`,devDependencies:{"@types/node":`^22.4.1`,"abort-controller":`^3.0.0`,"bench-node":`^0.7.0`,"concat-stream":`^2.0.0`,eslint:`^9.16.0`,"gen-esm-wrapper":`^1.1.1`,glob:`^11.0.2`,neostandard:`^0.12.0`,tsx:`^4.20.3`,typescript:`5.8.3`},optionalDependencies:{"@napi-rs/nice":`^1.0.4`},bugs:{url:`https://github.com/piscinajs/piscina/issues`},homepage:`https://github.com/piscinajs/piscina#readme`,directories:{example:`examples`,test:`test`}}})),m=n((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.kFieldCount=e.kResponseCountField=e.kRequestCountField=e.kQueueOptions=e.kValue=e.kTransferable=e.kWorkerData=e.kMovable=void 0,e.kMovable=Symbol(`Piscina.kMovable`),e.kWorkerData=Symbol(`Piscina.kWorkerData`),e.kTransferable=Symbol.for(`Piscina.transferable`),e.kValue=Symbol.for(`Piscina.valueOf`),e.kQueueOptions=Symbol.for(`Piscina.queueOptions`),e.kRequestCountField=0,e.kResponseCountField=1,e.kFieldCount=2})),h=n((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.AbortError=void 0,e.onabort=t,e.AbortError=class extends Error{constructor(e){super(`The task has been aborted`,{cause:e})}get name(){return`AbortError`}};function t(e,t){return`addEventListener`in e?(e.addEventListener(`abort`,t,{once:!0}),()=>e.removeEventListener(`abort`,t)):(e.once(`abort`,t),()=>e.removeListener(`abort`,t))}})),g=n((t=>{Object.defineProperty(t,`__esModule`,{value:!0}),t.commonState=t.READY=void 0,t.isTransferable=a,t.isMovable=o,t.markMovable=s,t.maybeFileURLToPath=c,t.getAvailableParallelism=l,t.promiseResolvers=u;let n=e(`node:url`),r=e(`node:os`),i=m();t.READY=`_WORKER_READY`;function a(e){return typeof e==`object`&&!!e&&i.kTransferable in e&&i.kValue in e}function o(e){return a(e)&&e[i.kMovable]===!0}function s(e){Object.defineProperty(e,i.kMovable,{enumerable:!1,configurable:!0,writable:!0,value:!0})}t.commonState={isWorkerThread:!1,workerData:void 0};function c(e){return e.startsWith(`file:`)?(0,n.fileURLToPath)(new n.URL(e)):e}function l(){return(0,r.availableParallelism)()}function u(){if(Promise.withResolvers!=null)return Promise.withResolvers();let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}})),_=n((t=>{var n=t&&t.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,`__esModule`,{value:!0}),t.ArrayTaskQueue=void 0;let r=n(e(`node:assert`));t.ArrayTaskQueue=class{constructor(){this.tasks=[]}get size(){return this.tasks.length}shift(){return this.tasks.shift()??null}push(e){this.tasks.push(e)}remove(e){let t=this.tasks.indexOf(e);r.default.notStrictEqual(t,-1),this.tasks.splice(t,1)}}})),v=n((t=>{var n=t&&t.__classPrivateFieldGet||function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},r=t&&t.__classPrivateFieldSet||function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},i=t&&t.__importDefault||function(e){return e&&e.__esModule?e:{default:e}},a;Object.defineProperty(t,`__esModule`,{value:!0}),t.FixedQueue=void 0;let o=i(e(`node:assert`)),s=2048,c=s-1;var l=class{constructor(){this.bottom=0,this.top=0,this.list=Array(s),this.next=null}isEmpty(){return this.top===this.bottom}isFull(){return(this.top+1&c)===this.bottom}push(e){this.list[this.top]=e,this.top=this.top+1&c}shift(){let e=this.list[this.bottom];return e===void 0?null:(this.list[this.bottom]=void 0,this.bottom=this.bottom+1&c,e)}remove(e){let t=this.list.indexOf(e);o.default.notStrictEqual(t,-1);let n=t;for(;;){let e=n+1&c;if(this.list[n]=this.list[e],this.list[n]===void 0)break;if(e===t){this.list[n]=void 0;break}n=e}this.top=this.top-1&c}};t.FixedQueue=class{constructor(){a.set(this,0),this.head=this.tail=new l}isEmpty(){return this.head.isEmpty()}push(e){var t;this.head.isFull()&&(this.head=this.head.next=new l),this.head.push(e),r(this,a,(t=n(this,a,`f`),t++,t),`f`)}shift(){var e;let t=this.tail,i=t.shift();return i!==null&&r(this,a,(e=n(this,a,`f`),e--,e),`f`),t.isEmpty()&&t.next!==null&&(this.tail=t.next,t.next=null),i}remove(e){var t;let i=null,o=this.tail;for(;;){if(o.list.includes(e)){o.remove(e),r(this,a,(t=n(this,a,`f`),t--,t),`f`);break}if(o.next===null)break;i=o,o=o.next}o.isEmpty()&&(i===null?o.next!==null&&(this.tail=o.next):o.next===null?this.head=i:i.next=o.next)}get size(){return n(this,a,`f`)}},a=new WeakMap})),y=n((t=>{Object.defineProperty(t,`__esModule`,{value:!0}),t.TaskInfo=t.FixedQueue=t.ArrayTaskQueue=void 0,t.isTaskQueue=l;let n=e(`node:perf_hooks`),r=e(`node:async_hooks`),i=h(),a=g(),o=m();var s=_();Object.defineProperty(t,`ArrayTaskQueue`,{enumerable:!0,get:function(){return s.ArrayTaskQueue}});var c=v();Object.defineProperty(t,`FixedQueue`,{enumerable:!0,get:function(){return c.FixedQueue}});function l(e){return typeof e==`object`&&!!e&&`size`in e&&typeof e.shift==`function`&&typeof e.remove==`function`&&typeof e.push==`function`}let u=0;t.TaskInfo=class extends r.AsyncResource{constructor({task:e,transferList:t,filename:r,name:i,abortSignal:s,triggerAsyncId:c},l){super(`Piscina.Task`,{requireManualDestroy:!0,triggerAsyncId:c}),this.workerInfo=null,this.aborted=!1,this._abortListener=()=>{this.aborted=!0},this._abortCleaner=null,this.callback=l,this.task=e,this.transferList=t,(0,a.isMovable)(e)&&(this.transferList??=[],this.transferList=this.transferList.concat(e[o.kTransferable]),this.task=e[o.kValue]),this.filename=r,this.name=i,this.taskId=u++,this.abortSignal=s,this.created=n.performance.now(),this.started=0}onAbort(e){this._abortListener=()=>{this.aborted=!0,e()}}setAbortListener(e){this._abortCleaner=(0,i.onabort)(e,this._abortListener)}releaseTask(){let e=this.task;return this.task=null,e}onResponse(e){}done(e,t){var n;this.runInAsyncScope(this.callback,null,e,t),this.emitDestroy(),(n=this._abortCleaner)==null||n.call(this)}get[o.kQueueOptions](){return this.task?.[o.kQueueOptions]??null}get interface(){return{taskId:this.taskId,filename:this.filename,name:this.name,created:this.created,isAbortable:this.abortSignal!==null,[o.kQueueOptions]:this[o.kQueueOptions]}}}})),b=n((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.Errors=void 0,e.Errors={ThreadTermination:()=>Error(`Terminating worker thread`),FilenameNotProvided:()=>Error(`filename must be provided to run() or in options object`),TaskQueueAtLimit:()=>Error(`Task queue is at limit`),NoTaskQueueAvailable:()=>Error(`No task queue available and all Workers are busy`),CloseTimeout:()=>Error(`Close operation timed out`)}})),x=n((t=>{var n=t&&t.__classPrivateFieldSet||function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},r=t&&t.__classPrivateFieldGet||function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},i,a;Object.defineProperty(t,`__esModule`,{value:!0}),t.PiscinaHistogramHandler=void 0;let o=e(`node:perf_hooks`);t.PiscinaHistogramHandler=class e{constructor(){i.set(this,void 0),a.set(this,void 0),n(this,i,(0,o.createHistogram)(),`f`),n(this,a,(0,o.createHistogram)(),`f`)}get runTimeSummary(){return e.createHistogramSummary(r(this,i,`f`))}get waitTimeSummary(){return e.createHistogramSummary(r(this,a,`f`))}get runTimeCount(){return r(this,i,`f`).count}recordRunTime(t){r(this,i,`f`).record(e.toHistogramIntegerNano(t))}recordWaitTime(t){r(this,a,`f`).record(e.toHistogramIntegerNano(t))}resetWaitTime(){r(this,a,`f`).reset()}resetRunTime(){r(this,i,`f`).reset()}static createHistogramSummary(e){let{mean:t,stddev:n,min:r,max:i}=e;return{average:t/1e3,mean:t/1e3,stddev:n/1e3,min:r/1e3,max:i/1e3,p0_001:e.percentile(.001)/1e3,p0_01:e.percentile(.01)/1e3,p0_1:e.percentile(.1)/1e3,p1:e.percentile(1)/1e3,p2_5:e.percentile(2.5)/1e3,p10:e.percentile(10)/1e3,p25:e.percentile(25)/1e3,p50:e.percentile(50)/1e3,p75:e.percentile(75)/1e3,p90:e.percentile(90)/1e3,p97_5:e.percentile(97.5)/1e3,p99:e.percentile(99)/1e3,p99_9:e.percentile(99.9)/1e3,p99_99:e.percentile(99.99)/1e3,p99_999:e.percentile(99.999)/1e3}}static toHistogramIntegerNano(e){return Math.max(1,Math.trunc(e*1e3))}},i=new WeakMap,a=new WeakMap})),S=n((t=>{var n=t&&t.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,`__esModule`,{value:!0}),t.AsynchronouslyCreatedResourcePool=t.AsynchronouslyCreatedResource=void 0;let r=n(e(`node:assert`));t.AsynchronouslyCreatedResource=class{constructor(){this.onreadyListeners=[],this.ondestroyListeners=[]}markAsReady(){let e=this.onreadyListeners;(0,r.default)(e!=null),this.onreadyListeners=null;for(let t of e)t()}isReady(){return this.onreadyListeners==null}onReady(e){if(this.onreadyListeners==null){e();return}this.onreadyListeners.push(e)}onDestroy(e){this.ondestroyListeners!=null&&this.ondestroyListeners.push(e)}markAsDestroyed(){let e=this.ondestroyListeners;(0,r.default)(e!=null),this.ondestroyListeners=null;for(let t of e)t()}isDestroyed(){return this.ondestroyListeners==null}},t.AsynchronouslyCreatedResourcePool=class{constructor(e){this.pendingItems=new Set,this.readyItems=new Set,this.maximumUsage=e,this.onAvailableListeners=[],this.onTaskDoneListeners=[]}add(e){this.pendingItems.add(e),e.onReady(()=>{this.pendingItems.has(e)&&(this.pendingItems.delete(e),this.readyItems.add(e),this.maybeAvailable(e))})}delete(e){this.pendingItems.delete(e),this.readyItems.delete(e)}*[Symbol.iterator](){yield*this.pendingItems,yield*this.readyItems}get size(){return this.pendingItems.size+this.readyItems.size}maybeAvailable(e){if(e.currentUsage()<this.maximumUsage)for(let t of this.onAvailableListeners)t(e)}onAvailable(e){this.onAvailableListeners.push(e)}taskDone(e){for(let t=0;t<this.onTaskDoneListeners.length;t++)this.onTaskDoneListeners[t](e)}onTaskDone(e){this.onTaskDoneListeners.push(e)}getCurrentUsage(){let e=0;for(let t of this.readyItems){let n=t.currentUsage();Number.isFinite(n)&&(e+=n)}return e}}})),C=n((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.LeastBusyBalancer=t;function t(e){let{maximumUsage:t}=e;return(e,n)=>{let r=null,i=t;for(let t of n){if(t.currentUsage===0){r=t;break}t.isRunningAbortableTask||e.isAbortable===!1&&t.currentUsage<i&&(r=t,i=t.currentUsage)}return r}}})),w=n((t=>{var n=t&&t.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),r=t&&t.__exportStar||function(e,t){for(var r in e)r!==`default`&&!Object.prototype.hasOwnProperty.call(t,r)&&n(t,e,r)},i=t&&t.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,`__esModule`,{value:!0}),t.AsynchronouslyCreatedResourcePool=t.WorkerInfo=void 0;let a=e(`node:worker_threads`),o=e(`node:perf_hooks`),s=i(e(`node:assert`)),c=b(),l=m(),u=x(),d=S();Object.defineProperty(t,`AsynchronouslyCreatedResourcePool`,{enumerable:!0,get:function(){return d.AsynchronouslyCreatedResourcePool}}),r(C(),t),t.WorkerInfo=class extends d.AsynchronouslyCreatedResource{constructor({worker:e,port:t,enableHistogram:n},r){super(),this.idleTimeout=null,this.lastSeenResponseCount=0,this.terminating=!1,this.destroyed=!1;let{filename:i,...s}=e;this.worker=new a.Worker(i,s),this.port=t,this.onMessage=r,this.port.on(`message`,this._handleResponse.bind(this)),this.taskInfos=new Map,this.sharedBuffer=new Int32Array(new SharedArrayBuffer(l.kFieldCount*Int32Array.BYTES_PER_ELEMENT)),this.histogram=n?(0,o.createHistogram)():null}get id(){return this.worker.threadId}onWorkerMessage(e){this.worker.on(`message`,e)}onWorkerError(e){this.worker.on(`error`,e)}onWorkerExit(e){this.worker.on(`exit`,e)}onPortClose(e){this.port.on(`close`,e)}init(e,t){return this.worker.postMessage(e,t),this}workerRef(){return this.worker.ref(),this}workerUnref(){return this.worker.unref(),this}destroy(){if(!(this.terminating||this.destroyed)){this.terminating=!0,this.clearIdleTimeout(),this.worker.terminate(),this.port.close();for(let e of this.taskInfos.values())e.done(c.Errors.ThreadTermination());this.taskInfos.clear(),this.terminating=!1,this.destroyed=!0,this.markAsDestroyed()}}setIdleTimeout(e,t,...n){this.idleTimeout=setTimeout(e,t,...n).unref()}clearIdleTimeout(){this.idleTimeout!=null&&(clearTimeout(this.idleTimeout),this.idleTimeout=null)}ref(){return this.port.ref(),this}unref(){return this.port.unref(),this}_handleResponse(e){var t;(t=this.histogram)==null||t.record(u.PiscinaHistogramHandler.toHistogramIntegerNano(e?.time)),this.onMessage(e),this.taskInfos.size===0&&this.unref()}postTask(e){(0,s.default)(!this.taskInfos.has(e.taskId)),(0,s.default)(!this.terminating&&!this.destroyed);let t={task:e.releaseTask(),taskId:e.taskId,filename:e.filename,name:e.name,histogramEnabled:this.histogram==null?0:1};try{this.port.postMessage(t,e.transferList),queueMicrotask(()=>this.clearIdleTimeout()),e.workerInfo=this,this.taskInfos.set(e.taskId,e),this.ref(),Atomics.add(this.sharedBuffer,l.kRequestCountField,1),Atomics.notify(this.sharedBuffer,l.kRequestCountField,1)}catch(t){e.done(t)}}processPendingMessages(){if(this.destroyed)return;let e=Atomics.load(this.sharedBuffer,l.kResponseCountField);if(e!==this.lastSeenResponseCount){this.lastSeenResponseCount=e;let t;for(;(t=(0,a.receiveMessageOnPort)(this.port))!=null;)this._handleResponse(t.message)}}isRunningAbortableTask(){if(this.taskInfos.size!==1)return!1;let[[,e]]=this.taskInfos;return e.abortSignal!=null}currentUsage(){return this.isRunningAbortableTask()?1/0:this.taskInfos.size}popTask(e){let t=this.taskInfos.get(e)??null;return t!=null&&this.taskInfos.delete(e),t}get interface(){let e=this;return{get id(){return e.worker.threadId},get currentUsage(){return e.currentUsage()},get isRunningAbortableTask(){return e.isRunningAbortableTask()},get histogram(){return e.histogram==null?null:u.PiscinaHistogramHandler.createHistogramSummary(e.histogram)},get terminating(){return e.terminating},get destroyed(){return e.destroyed},[l.kWorkerData]:e}}}})),T=n((t=>{var n=t&&t.__classPrivateFieldSet||function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},r=t&&t.__classPrivateFieldGet||function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},i,a,o,s;Object.defineProperty(t,`__esModule`,{value:!0}),t.ArrayTaskQueue=t.FixedQueue=t.version=t.queueOptionsSymbol=t.valueSymbol=t.transferableSymbol=t.Piscina=t.workerData=t.isWorkerThread=t.move=void 0;let c=e(`node:worker_threads`),l=e(`node:events`),u=e(`node:path`),d=e(`node:util`),f=e(`node:perf_hooks`),_=e(`node:timers/promises`),v=p();Object.defineProperty(t,`version`,{enumerable:!0,get:function(){return v.version}});let S=m();Object.defineProperty(t,`queueOptionsSymbol`,{enumerable:!0,get:function(){return S.kQueueOptions}}),Object.defineProperty(t,`transferableSymbol`,{enumerable:!0,get:function(){return S.kTransferable}}),Object.defineProperty(t,`valueSymbol`,{enumerable:!0,get:function(){return S.kValue}});let C=y();Object.defineProperty(t,`ArrayTaskQueue`,{enumerable:!0,get:function(){return C.ArrayTaskQueue}}),Object.defineProperty(t,`FixedQueue`,{enumerable:!0,get:function(){return C.FixedQueue}});let T=w(),E=h(),D=x(),O=b(),k=g(),A=(0,k.getAvailableParallelism)(),j={filename:null,name:`default`,minThreads:Math.max(Math.floor(A/2),1),maxThreads:A*1.5,idleTimeout:0,maxQueue:1/0,concurrentTasksPerWorker:1,atomics:`sync`,taskQueue:new C.ArrayTaskQueue,niceIncrement:0,trackUnmanagedFds:!0,closeTimeout:3e4,recordTiming:!0,workerHistogram:!1},M={transferList:void 0,filename:null,signal:null,name:null},N={force:!1};var P=class{constructor(e){i.set(this,void 0),n(this,i,e,`f`)}get[(i=new WeakMap,S.kTransferable)](){return r(this,i,`f`)}get[S.kValue](){return r(this,i,`f`)}},F=class{constructor(e){a.set(this,void 0),n(this,a,e,`f`)}get[(a=new WeakMap,S.kTransferable)](){return r(this,a,`f`).buffer}get[S.kValue](){return r(this,a,`f`)}},I=class{constructor(e,t){this.skipQueue=[],this.completed=0,this.histogram=null,this.start=f.performance.now(),this.inProcessPendingMessages=!1,this.startingUp=!1,this.closingUp=!1,this.workerFailsDuringBootstrap=!1,this.destroying=!1,this.publicInterface=e,this.taskQueue=t.taskQueue??new C.FixedQueue;let n=t.filename?(0,k.maybeFileURLToPath)(t.filename):null;this.options={...j,...t,filename:n,maxQueue:0},this.options.recordTiming&&(this.histogram=new D.PiscinaHistogramHandler),t.maxThreads!==void 0&&this.options.minThreads>=t.maxThreads&&(this.options.minThreads=t.maxThreads),t.minThreads!==void 0&&this.options.maxThreads<=t.minThreads&&(this.options.maxThreads=t.minThreads),t.maxQueue===`auto`?this.options.maxQueue=this.options.maxThreads**2:this.options.maxQueue=t.maxQueue??j.maxQueue,this.balancer=this.options.loadBalancer??(0,T.LeastBusyBalancer)({maximumUsage:this.options.concurrentTasksPerWorker}),this.workers=new T.AsynchronouslyCreatedResourcePool(this.options.concurrentTasksPerWorker),this.workers.onTaskDone(this._onWorkerTaskDone.bind(this)),this.maxCapacity=this.options.maxThreads*this.options.concurrentTasksPerWorker,this.startingUp=!0,this._ensureMinimumWorkers(),this.startingUp=!1,this._needsDrain=!1}_ensureMinimumWorkers(){if(!(this.closingUp||this.destroying))for(;this.workers.size<this.options.minThreads;)this._addNewWorker()}_addNewWorker(){if(this.closingUp===!0)return;let{port1:e,port2:t}=new c.MessageChannel,n=new T.WorkerInfo({worker:{filename:(0,u.resolve)(__dirname,`worker.js`),env:this.options.env,argv:this.options.argv,execArgv:this.options.execArgv,resourceLimits:this.options.resourceLimits,workerData:this.options.workerData,trackUnmanagedFds:this.options.trackUnmanagedFds},port:e,enableHistogram:this.options.workerHistogram},i.bind(this)),r={filename:this.options.filename,name:this.options.name,port:t,sharedBuffer:n.sharedBuffer,atomics:this.options.atomics,niceIncrement:this.options.niceIncrement};n.onDestroy(()=>{this.publicInterface.emit(`workerDestroy`,n.interface)}),n.onWorkerMessage(s.bind(this)),n.onWorkerError(l.bind(this)),n.onWorkerExit(f.bind(this)),n.onPortClose(()=>{n.workerRef()}),this.startingUp===!0?(n.markAsReady(),queueMicrotask(()=>{this.publicInterface.emit(`workerCreate`,n.interface),this._onWorkerReady(n)})):n.onReady(()=>{this.publicInterface.emit(`workerCreate`,n.interface),this._onWorkerReady(n)}),n.init(r,[t]).workerUnref(),this.workers.add(n);function i(e){let{taskId:t,result:r}=e,i=n.popTask(t);if(this.workers.taskDone(n),i==null){let t=Error(`Unexpected message from Worker: ${(0,d.inspect)(e)}`);this.publicInterface.emit(`error`,t)}else i.done(e.error,r);this._processPendingMessages()}function a(){n.currentUsage()===0&&n.unref(),n.isReady()===!1&&n.markAsReady()}function o(e){this.publicInterface.emit(`message`,e)}function s(e){e instanceof Object&&k.READY in e?a():o.call(this,e)}function l(e){this._onError(n,e,!1)}function f(e){if(this.destroying===!1){let t=Error(`worker exited with code: ${e}`);this._onError(n,t,!0)}}}_onError(e,t,n){let r=[...e.taskInfos.values()];if(e.taskInfos.clear(),this._removeWorker(e),e.isReady()&&!this.workerFailsDuringBootstrap?this._ensureMinimumWorkers():this.workerFailsDuringBootstrap=!0,r.length>0)for(let e of r)e.done(t,null);else n||this.publicInterface.emit(`error`,t)}_processPendingMessages(){if(!(this.inProcessPendingMessages||this.options.atomics===`disabled`)){this.inProcessPendingMessages=!0;try{for(let e of this.workers)e.processPendingMessages()}finally{this.inProcessPendingMessages=!1}}}_removeWorker(e){e.destroy(),this.workers.delete(e)}_onWorkerReady(e){this._onWorkerAvailable(e)}_onWorkerTaskDone(e){this._onWorkerAvailable(e)}_onWorkerAvailable(e){let t=null;for(;this.taskQueue.size>0||this.skipQueue.length>0;){let e=this.skipQueue.shift()||this.taskQueue.shift();if(t??=[...this.workers].map(e=>e.interface),!this._distributeTask(e,t))if(this.workers.size<this.options.maxThreads){this._addNewWorker();continue}else break}this.options.idleTimeout!==1/0&&e.currentUsage()===0&&this.workers.size>this.options.minThreads&&e.setIdleTimeout(()=>{e.currentUsage()===0&&this.workers.size>this.options.minThreads&&this._removeWorker(e)},this.options.idleTimeout)}_distributeTask(e,t){var n;if(e.aborted)return!0;let r=this.balancer(e.interface,t);if(r!=null&&r[S.kWorkerData]!=null){let t=f.performance.now();return(n=this.histogram)==null||n.recordWaitTime(t-e.created),e.started=t,r[S.kWorkerData].postTask(e),queueMicrotask(()=>this._maybeDrain()),!0}return e.abortSignal==null?this.taskQueue.push(e):this.skipQueue.push(e),!1}runTask(e,t){let{filename:n,name:r}=t,{transferList:i=[]}=t;if(n??=this.options.filename,r??=this.options.name,typeof n!=`string`)return Promise.reject(O.Errors.FilenameNotProvided());n=(0,k.maybeFileURLToPath)(n);let a;if(this.closingUp||this.destroying){let e=new AbortController;e.abort(`queue is being terminated`),a=e.signal}else a=t.signal??null;let{promise:o,resolve:s,reject:c}=(0,k.promiseResolvers)(),l=new C.TaskInfo({task:e,transferList:i,filename:n,name:r,abortSignal:a,triggerAsyncId:this.publicInterface.asyncResource.asyncId()},(e,t)=>{var n;this.completed++,l.started&&((n=this.histogram)==null||n.recordRunTime(f.performance.now()-l.started)),e===null?s(t):c(e),queueMicrotask(this._maybeDrain.bind(this))});if(a!=null){if(a.aborted)return c(new E.AbortError(a.reason)),o;l.onAbort(()=>{c(new E.AbortError(a.reason)),l.workerInfo==null?this.taskQueue.remove(l):(this._removeWorker(l.workerInfo),this._ensureMinimumWorkers())}),l.setAbortListener(a)}if(this.taskQueue.size>0){let e=this.options.maxQueue+this.pendingCapacity();return this.taskQueue.size>=e?this.options.maxQueue===0?c(O.Errors.NoTaskQueueAvailable()):c(O.Errors.TaskQueueAtLimit()):this.taskQueue.push(l),queueMicrotask(this._maybeDrain.bind(this)),o}let u=[...this.workers.readyItems].map(e=>e.interface);return this._distributeTask(l,u)||(this.workers.size<this.options.maxThreads&&this._addNewWorker(),this.options.maxQueue<=0&&this.pendingCapacity()===0&&c(O.Errors.NoTaskQueueAvailable())),queueMicrotask(this._maybeDrain.bind(this)),o}pendingCapacity(){return this.workers.pendingItems.size*this.options.concurrentTasksPerWorker}_maybeDrain(){let{maxCapacity:e}=this,t=this.workers.getCurrentUsage();e===t?(this._needsDrain=!0,queueMicrotask(()=>this.publicInterface.emit(`needsDrain`))):e>t&&this._needsDrain&&(this._needsDrain=!1,queueMicrotask(()=>this.publicInterface.emit(`drain`)))}async destroy(){for(this.destroying=!0;this.skipQueue.length>0;)this.skipQueue.shift().done(Error(`Terminating worker thread`));for(;this.taskQueue.size>0;)this.taskQueue.shift().done(Error(`Terminating worker thread`));let e=[];for(;this.workers.size>0;){let[t]=this.workers;e.push((0,l.once)(t.worker,`exit`)),this._removeWorker(t)}await Promise.allSettled(e),this.destroying=!1}async close(e){if(this.closingUp=!0,e.force){let e=this.skipQueue.length;for(let t=0;t<e;t++){let e=this.skipQueue.shift();e.workerInfo===null?e.done(new E.AbortError(`pool is closed`)):this.skipQueue.push(e)}let t=this.taskQueue.size;for(let e=0;e<t;e++){let e=this.taskQueue.shift();e.workerInfo===null?e.done(new E.AbortError(`pool is closed`)):this.taskQueue.push(e)}}let t=()=>new Promise(e=>{let t=this.workers.size;if(t===0){e();return}let n=0,r=r=>{r.taskInfos.size===0&&n++,t===n&&e()};this.workers.onTaskDone(r);for(let e of this.workers)r(e),this.workers.onTaskDone(r)}),n=async e=>{throw await(0,_.setTimeout)(e,null,{ref:!1}),O.Errors.CloseTimeout()};try{await Promise.race([t(),n(this.options.closeTimeout)])}catch(e){this.publicInterface.emit(`error`,e)}finally{await this.destroy(),this.publicInterface.emit(`close`),this.closingUp=!1}}},L=class e extends l.EventEmitterAsyncResource{constructor(e={}){if(super({...e,name:`Piscina`}),o.set(this,void 0),s.set(this,null),typeof e.filename!=`string`&&e.filename!=null)throw TypeError(`options.filename must be a string or null`);if(typeof e.name!=`string`&&e.name!=null)throw TypeError(`options.name must be a string or null`);if(e.minThreads!==void 0&&(typeof e.minThreads!=`number`||e.minThreads<0))throw TypeError(`options.minThreads must be a non-negative integer`);if(e.maxThreads!==void 0&&(typeof e.maxThreads!=`number`||e.maxThreads<1))throw TypeError(`options.maxThreads must be a positive integer`);if(e.minThreads!==void 0&&e.maxThreads!==void 0&&e.minThreads>e.maxThreads)throw RangeError(`options.minThreads and options.maxThreads must not conflict`);if(e.idleTimeout!==void 0&&(typeof e.idleTimeout!=`number`||e.idleTimeout<0))throw TypeError(`options.idleTimeout must be a non-negative integer`);if(e.maxQueue!==void 0&&e.maxQueue!==`auto`&&(typeof e.maxQueue!=`number`||e.maxQueue<0))throw TypeError(`options.maxQueue must be a non-negative integer`);if(e.concurrentTasksPerWorker!==void 0&&(typeof e.concurrentTasksPerWorker!=`number`||e.concurrentTasksPerWorker<1))throw TypeError(`options.concurrentTasksPerWorker must be a positive integer`);if(e.atomics!=null&&(typeof e.atomics!=`string`||![`sync`,`async`,`disabled`].includes(e.atomics)))throw TypeError(`options.atomics should be a value of sync, sync or disabled.`);if(e.resourceLimits!==void 0&&(typeof e.resourceLimits!=`object`||e.resourceLimits===null))throw TypeError(`options.resourceLimits must be an object`);if(e.taskQueue!==void 0&&!(0,C.isTaskQueue)(e.taskQueue))throw TypeError(`options.taskQueue must be a TaskQueue object`);if(e.niceIncrement!==void 0&&(typeof e.niceIncrement!=`number`||e.niceIncrement<0&&process.platform!==`win32`))throw TypeError(`options.niceIncrement must be a non-negative integer on Unix systems`);if(e.trackUnmanagedFds!==void 0&&typeof e.trackUnmanagedFds!=`boolean`)throw TypeError(`options.trackUnmanagedFds must be a boolean value`);if(e.closeTimeout!==void 0&&(typeof e.closeTimeout!=`number`||e.closeTimeout<0))throw TypeError(`options.closeTimeout must be a non-negative integer`);if(e.loadBalancer!==void 0&&(typeof e.loadBalancer!=`function`||e.loadBalancer.length<1))throw TypeError(`options.loadBalancer must be a function with at least two args`);if(e.workerHistogram!==void 0&&typeof e.workerHistogram!=`boolean`)throw TypeError(`options.workerHistogram must be a boolean`);n(this,o,new I(this,e),`f`)}run(e,t=M){if(typeof t!=`object`||!t)return Promise.reject(TypeError(`options must be an object`));let{transferList:n,filename:i,name:a,signal:s}=t;return n!==void 0&&!Array.isArray(n)?Promise.reject(TypeError(`transferList argument must be an Array`)):i!=null&&typeof i!=`string`?Promise.reject(TypeError(`filename argument must be a string`)):a!=null&&typeof a!=`string`?Promise.reject(TypeError(`name argument must be a string`)):s!=null&&typeof s!=`object`?Promise.reject(TypeError(`signal argument must be an object`)):r(this,o,`f`).runTask(e,{transferList:n,filename:i,name:a,signal:s})}async close(e=N){if(typeof e!=`object`||!e)throw TypeError(`options must be an object`);let{force:t}=e;return t!==void 0&&typeof t!=`boolean`?Promise.reject(TypeError(`force argument must be a boolean`)):(t??=N.force,r(this,o,`f`).close({force:t}))}destroy(){return r(this,o,`f`).destroy()}[(o=new WeakMap,s=new WeakMap,Symbol.dispose)](){this.close()}[Symbol.asyncDispose](){return this.close()}get maxThreads(){return r(this,o,`f`).options.maxThreads}get minThreads(){return r(this,o,`f`).options.minThreads}get options(){return r(this,o,`f`).options}get threads(){let e=[];for(let t of r(this,o,`f`).workers)e.push(t.worker);return e}get queueSize(){let e=r(this,o,`f`);return Math.max(e.taskQueue.size-e.pendingCapacity(),0)}get completed(){return r(this,o,`f`).completed}get histogram(){if(r(this,s,`f`)==null){let e={get runTime(){return this.histogram?.runTimeSummary},get waitTime(){return this.histogram?.waitTimeSummary},resetRunTime(){var e;(e=this.histogram)==null||e.resetRunTime()},resetWaitTime(){var e;(e=this.histogram)==null||e.resetWaitTime()}};Object.defineProperty(e,`histogram`,{value:r(this,o,`f`).histogram,writable:!1,enumerable:!1,configurable:!1}),n(this,s,e,`f`)}return r(this,s,`f`)}get utilization(){if(r(this,o,`f`).histogram==null)return 0;let e=r(this,o,`f`).histogram.runTimeCount;if(e===0)return 0;let t=this.duration*r(this,o,`f`).options.maxThreads;return r(this,o,`f`).histogram.runTimeSummary.mean/1e3*e/t}get duration(){return f.performance.now()-r(this,o,`f`).start}get needsDrain(){return r(this,o,`f`)._needsDrain}static get isWorkerThread(){return k.commonState.isWorkerThread}static get workerData(){return k.commonState.workerData}static get version(){return v.version}static get Piscina(){return e}static get FixedQueue(){return C.FixedQueue}static get ArrayTaskQueue(){return C.ArrayTaskQueue}static move(e){return typeof e==`object`&&e&&typeof e!=`function`&&((0,k.isTransferable)(e)||(e=d.types.isArrayBufferView(e)?new F(e):new P(e)),(0,k.markMovable)(e)),e}static get transferableSymbol(){return S.kTransferable}static get valueSymbol(){return S.kValue}static get queueOptionsSymbol(){return S.kQueueOptions}};t.default=L,t.Piscina=L,t.move=L.move,t.isWorkerThread=L.isWorkerThread,t.workerData=L.workerData})),E=t(n(((e,t)=>{t.exports=(e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}})(T()).default}))(),1),D=E.default;E.default.ArrayTaskQueue,E.default.FixedQueue,E.default.Piscina,E.default.isWorkerThread,E.default.move,E.default.queueOptionsSymbol,E.default.transferableSymbol,E.default.valueSymbol,E.default.version,E.default.workerData;var O=class{pool;constructor(e){this.pool=new D({filename:e.workerEntry,maxThreads:e.maxConcurrency??4,idleTimeout:e.idleTimeoutMs??3e4})}async run(e,t){return this.pool.run(e,{signal:t})}onMessage(e){return this.pool.on(`message`,e),()=>this.pool.off(`message`,e)}async dispose(){await this.pool.destroy()}},k=class{options;manifest;pool;constructor(e){this.options=e,this.manifest=e.manifest}async run(e,t,n){return this.pool??=new O(this.options),this.pool.run({config:e,manifest:n??this.manifest},t)}runWithReadiness(e,t,n){this.pool??=new O(this.options);let r=this.pool,a,o=!1,s,c=new Promise((t,n)=>{s=n,a=r.onMessage(n=>{i(n)&&(n.executionId!==e.executionId||n.cancelSubject!==e.cancelSubject||(o=!0,a?.(),t(n)))})}),l=r.run({config:e,manifest:n??this.manifest},t);return l.then(()=>{o||(o=!0,a?.(),s(Error(`Workflow worker completed before ready signal: ${e.executionId}`)))},e=>{o||(o=!0,a?.(),s(e instanceof Error?e:Error(String(e))))}),{result:l,ready:c}}async dispose(){await this.pool?.dispose()}};function A(e){return e.mode===`source`?s(e.packageRoot,`src`,`workflow-worker`,`worker-entry.ts`):s(e.packageRoot,`dist`,`workflow-worker`,`worker-entry.mjs`)}function j(e,t){let n=t.executionHints?.requirements?.capabilities??[];if(n.length===0)return e;let r=e?.customCapabilities??[];return{...e,customCapabilities:[...new Set([...r,...n])]}}var M=class{options;constructor(e){this.options=e}run(e,t,n,r){let i=n??this.options.manifest,a=j(this.options.requirements,e),o=r?.dispatchMetadata;return this.options.dispatch({config:e,...i!==void 0&&{manifest:i},...a!==void 0&&{requirements:a},...o!==void 0&&{metadata:o}},t)}},N=class{#e;constructor(e){this.#e=e.bus}async run(e,t,n){let i=d.parse(e),o=await r(i);return f({config:await a(i,o,this.#e,t),loaded:o,bus:this.#e,signal:t})}};function P(){return{packages:[]}}function F(e){let t=I({packageRoot:c(e.runtimeModuleDir,`..`),defaultWorkerEntryMode:o(e.runtimeModuleDir)===`src`?`source`:`dist`,runner:e.workflowRunner,bus:e.bus});return{...t!==void 0&&{workflowRunner:t},executorConfig:{busUrl:e.busUrl,busAuth:{kind:`none`},platformDefaults:e.platformDefaults,makaioHome:e.makaioHome}}}function I(e){let{runner:t}=e;if(t)switch(t.mode){case void 0:case`in-process`:if(e.bus===void 0)throw Error(`InProcessWorkflowRunner requires a bus instance. Pass 'bus' to createNodeWorkflowRunner when runner.mode is 'in-process'.`);return new N({bus:e.bus});case`worker-node`:{let n=e.bus,r=t.dispatch??(n===void 0?void 0:(e,t)=>n.request(u.dispatch,{config:e.config,manifest:e.manifest,requirements:e.requirements,metadata:e.metadata},{signal:t}));if(r===void 0)throw Error(`WorkerNodeRunner requires either a dispatch function or a bus instance. Pass 'bus' to createNodeWorkflowRunner when runner.mode is 'worker-node'.`);return new M({dispatch:r,...t.manifest!==void 0&&{manifest:t.manifest},...t.requirements!==void 0&&{requirements:t.requirements}})}case`piscina`:return new k({workerEntry:t.workerEntry??A({packageRoot:e.packageRoot,mode:t.workerEntryMode??e.defaultWorkerEntryMode}),manifest:t.manifest??P(),maxConcurrency:t.maxConcurrency,idleTimeoutMs:t.idleTimeoutMs})}}function L(e){return e instanceof Error?e:Error(String(e??`WorkerNode wait aborted`))}function R(e){return typeof e.runWithReadiness==`function`}const z={persistentStorage:!0,customCapabilities:[`workflow.local-runtime`,`workflow.thin-runner`],suspensionStrategy:`wait-in-process`};var B=class{options;environment=`piscina`;baseCapabilities;constructor(e){this.options=e,this.baseCapabilities=l.parse({...z,...e.baseCapabilities,suspensionStrategy:e.baseCapabilities?.suspensionStrategy??z.suspensionStrategy})}get id(){return this.options.id}get displayName(){return this.options.displayName}async provision(e){let t=new AbortController,n=R(this.options.runner)?this.options.runner.runWithReadiness(e.workerConfig,t.signal,e.workerManifest):{result:this.options.runner.run(e.workerConfig,t.signal,e.workerManifest),ready:void 0},r=n.result,i=n.ready?.then(e=>({adapters:e.adapters}));return i?.catch(()=>void 0),r.catch(()=>void 0),{nodeId:e.nodeId,...i!==void 0&&{ready:i},waitForResult:async e=>{if(e.aborted)return t.abort(e.reason),Promise.reject(L(e.reason));let n,i=new Promise((e,t)=>{n=t}),a=()=>{t.abort(e.reason),n(L(e.reason))};e.addEventListener(`abort`,a,{once:!0});try{return await Promise.race([r,i])}finally{e.removeEventListener(`abort`,a)}},cancel:e=>(t.abort(e??`WorkerNode cancelled`),Promise.resolve()),terminate:()=>(t.abort(`WorkerNode terminated`),Promise.resolve())}}};export{M as a,N as i,I as n,A as o,F as r,k as s,B as t};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@makaio/framework",
3
- "version": "1.0.0-dev-1781034508425",
3
+ "version": "1.0.0-dev-1781081952714",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/makaio-ai/makaio-framework.git",
@@ -435,6 +435,18 @@
435
435
  "types": "./dist/mcp-http-server/index.d.mts",
436
436
  "default": "./dist/mcp-http-server/index.mjs"
437
437
  },
438
+ "./workflow-engine": {
439
+ "types": "./dist/workflow-engine/index.d.mts",
440
+ "default": "./dist/workflow-engine/index.mjs"
441
+ },
442
+ "./workflow-engine/package": {
443
+ "types": "./dist/workflow-engine/package.d.mts",
444
+ "default": "./dist/workflow-engine/package.mjs"
445
+ },
446
+ "./workflow-engine/workflow-orchestrator": {
447
+ "types": "./dist/workflow-engine/workflow-orchestrator.d.mts",
448
+ "default": "./dist/workflow-engine/workflow-orchestrator.mjs"
449
+ },
438
450
  "./utils/health-probe": {
439
451
  "types": "./dist/utils/health-probe.d.mts",
440
452
  "default": "./dist/utils/health-probe.mjs"
@@ -1 +0,0 @@
1
- import{o as e}from"./chunk-DTipWd-i.mjs";import{t}from"./ajv-B-geJci9.mjs";import{z as n}from"zod";import"node:child_process";import{pathToFileURL as r}from"node:url";import{mkdir as i,rm as a,writeFile as o}from"node:fs/promises";import{basename as s,join as c}from"node:path";import{randomBytes as l}from"node:crypto";import{localSubject as u}from"@makaio/framework/core";import{NoHandlerError as d}from"@makaio/framework/bus";import{ArtifactSubjects as f,ExecutionLinkSchema as p,ExecutionListQuerySchema as m,ExecutionStatusSchema as h,SpanRecordSchema as g,SubagentSubjects as _,WORKFLOW_CANCELLED_REASON as v,WorkflowDefinitionSchema as y,WorkflowExecutionSchema as b,WorkflowFrameStateSchema as x,WorkflowGateInstanceSchema as S,WorkflowListQuerySchema as ee,WorkflowRunContextSchema as C,WorkflowSchemas as te,WorkflowSubjects as ne,WorkflowSubjects as w,createStepCancelSubject as re}from"@makaio/framework/contracts";import{index as T,integer as E,primaryKey as ie,real as D,sqliteTable as O,text as k,uniqueIndex as ae}from"drizzle-orm/sqlite-core";import{sql as oe}from"drizzle-orm";import{createStorageNamespaceDefinition as se}from"@makaio/framework/storage";import{evaluateSync as A,resolveTemplate as ce}from"@makaio/framework/expression";import*as le from"node:os";import{tmpdir as ue}from"node:os";function de(){return{scopeType:k(`scope_type`,{enum:[`global`,`workspace`,`session`,`external`]}).notNull().$type(),scopeKind:k(`scope_kind`).notNull().default(``),scopeId:k(`scope_id`).notNull().default(``)}}const fe=O(`workflow_definitions`,{id:k(`id`).primaryKey(),name:k(`name`).notNull(),description:k(`description`),root:k(`root`,{mode:`json`}).$type().notNull(),inputSchema:k(`input_schema`,{mode:`json`}).$type(),configSchema:k(`config_schema`,{mode:`json`}).$type(),outputSchema:k(`output_schema`,{mode:`json`}).$type(),artifact:k(`artifact`,{mode:`json`}).$type(),triggers:k(`triggers`,{mode:`json`}).$type(),...de(),createdAt:E(`created_at`).notNull(),updatedAt:E(`updated_at`).notNull(),canvasLayout:k(`canvas_layout`,{mode:`json`}).$type(),source:k(`source`,{mode:`json`}).$type(),executionHints:k(`execution_hints`,{mode:`json`}).$type()},e=>[ae(`uniq_workflow_definitions_name_scope`).on(e.name,e.scopeType,e.scopeKind,e.scopeId),T(`idx_workflow_definitions_scope`).on(e.scopeType,e.scopeKind,e.scopeId)]),j=O(`workflow_executions`,{id:k(`id`).primaryKey(),workflowId:k(`workflow_id`).notNull(),coordinatorSessionId:k(`coordinator_session_id`),status:k(`status`,{enum:[`pending`,`running`,`paused`,`completed`,`failed`,`cancelled`]}).notNull(),inputs:k(`inputs`,{mode:`json`}).$type(),error:k(`error`),reason:k(`reason`),startedAt:E(`started_at`).notNull(),completedAt:E(`completed_at`),triggerPayload:k(`trigger_payload`,{mode:`json`}).$type(),...de()},e=>[T(`idx_workflow_executions_status`).on(e.status),T(`idx_workflow_executions_scope_started`).on(e.scopeType,e.scopeKind,e.scopeId,e.startedAt),T(`idx_workflow_executions_workflow_started`).on(e.workflowId,e.startedAt)]),pe=O(`workflow_execution_frames`,{frameId:k(`frame_id`).primaryKey(),executionId:k(`execution_id`).notNull().references(()=>j.id,{onDelete:`cascade`}),nodeId:k(`node_id`).notNull(),nodeType:k(`node_type`).notNull().$type(),path:k(`path`,{mode:`json`}).$type().notNull(),parentFrameId:k(`parent_frame_id`),status:k(`status`).notNull().default(`pending`).$type(),attempt:E(`attempt`).notNull().default(0),iteration:E(`iteration`),branchKey:k(`branch_key`),output:k(`output`,{mode:`json`}).$type(),outputPresent:E(`output_present`,{mode:`boolean`}).notNull().default(!1),error:k(`error`),startedAt:E(`started_at`),completedAt:E(`completed_at`)},e=>[T(`idx_workflow_execution_frames_execution`).on(e.executionId),T(`idx_workflow_execution_frames_parent`).on(e.parentFrameId)]),me=O(`workflow_gate_instances`,{id:k(`id`).primaryKey(),executionId:k(`execution_id`).notNull().references(()=>j.id,{onDelete:`cascade`}),nodeId:k(`node_id`).notNull(),frameId:k(`frame_id`).notNull(),schema:k(`schema`,{mode:`json`}).$type().notNull(),prompt:k(`prompt`),status:k(`status`).notNull().default(`waiting`).$type(),autoAction:k(`auto_action`,{enum:[`approve`,`reject`]}).notNull().default(`reject`),timeoutMs:E(`timeout_ms`),resumeData:k(`resume_data`,{mode:`json`}).$type(),resumeDataPresent:E(`resume_data_present`,{mode:`boolean`}).notNull().default(!1),createdAt:E(`created_at`).notNull(),resolvedAt:E(`resolved_at`)},e=>[T(`idx_workflow_gate_instances_execution`).on(e.executionId),T(`idx_workflow_gate_instances_frame`).on(e.frameId)]),he=O(`workflow_step_spans`,{executionId:k(`execution_id`).notNull().references(()=>j.id,{onDelete:`cascade`}),frameId:k(`frame_id`).notNull(),stepId:k(`step_id`).notNull(),stepType:k(`step_type`).notNull(),status:k(`status`).$type().notNull(),startedAt:E(`started_at`),completedAt:E(`completed_at`),durationMs:E(`duration_ms`),inputTokens:E(`input_tokens`),outputTokens:E(`output_tokens`),estimatedCost:D(`estimated_cost`),toolCallCount:E(`tool_call_count`),input:k(`input`),output:k(`output`)},e=>[ie({columns:[e.executionId,e.frameId]}),T(`idx_workflow_step_spans_status`).on(e.status)]),ge=O(`workflow_execution_links`,{sourceExecutionId:k(`source_execution_id`).notNull().references(()=>j.id,{onDelete:`cascade`}),targetExecutionId:k(`target_execution_id`).notNull().references(()=>j.id,{onDelete:`cascade`}),linkType:k(`link_type`).$type().notNull(),metadata:k(`metadata`,{mode:`json`}).$type()},e=>[ie({columns:[e.sourceExecutionId,e.targetExecutionId]}),T(`idx_workflow_execution_links_target`).on(e.targetExecutionId)]),_e=O(`workflow_run_contexts`,{executionId:k(`execution_id`).primaryKey(),workflowId:k(`workflow_id`).notNull(),coordinatorSessionId:k(`coordinator_session_id`).notNull(),sourceKind:k(`source_kind`).notNull(),sourcePath:k(`source_path`),sourceFilename:k(`source_filename`),sourceCode:k(`source_code`),definitionSnapshot:k(`definition_snapshot`,{mode:`json`}).$type(),workerManifest:k(`worker_manifest`,{mode:`json`}).$type().notNull(),inputs:k(`inputs`,{mode:`json`}).$type(),config:k(`config`,{mode:`json`}).$type().notNull().default(oe`'{}'`),triggerPayload:k(`trigger_payload`,{mode:`json`}).$type().notNull(),artifactRef:k(`artifact_ref`,{mode:`json`}).$type(),executionHints:k(`execution_hints`,{mode:`json`}).$type(),dispatchMetadata:k(`dispatch_metadata`,{mode:`json`}).$type(),scopeType:k(`scope_type`,{enum:[`global`,`workspace`,`session`,`external`]}).notNull().default(`global`).$type(),scopeKind:k(`scope_kind`).notNull().default(``),scopeId:k(`scope_id`).notNull().default(``),cancelSubject:k(`cancel_subject`).notNull(),context:k(`context`,{mode:`json`}).$type().notNull(),env:k(`env`,{mode:`json`}).$type().notNull(),createdAt:E(`created_at`).notNull(),suspensionStrategy:k(`suspension_strategy`).$type()},e=>[T(`idx_run_contexts_workflow`).on(e.workflowId)]),ve=O(`worklog_summaries`,{executionId:k(`execution_id`).primaryKey(),workflowId:k(`workflow_id`).notNull(),workflowName:k(`workflow_name`),status:k(`status`,{enum:[`pending`,`running`,`paused`,`completed`,`failed`,`cancelled`]}).notNull(),startedAt:E(`started_at`).notNull(),completedAt:E(`completed_at`),durationMs:E(`duration_ms`),totalInputTokens:E(`total_input_tokens`),totalOutputTokens:E(`total_output_tokens`),totalEstimatedCost:D(`total_estimated_cost`),error:k(`error`),failedNodeId:k(`failed_node_id`)},e=>[T(`idx_worklog_summaries_workflow_started`).on(e.workflowId,e.startedAt),T(`idx_worklog_summaries_status`).on(e.status)]),ye=O(`worklog_frame_entries`,{frameId:k(`frame_id`).primaryKey(),executionId:k(`execution_id`).notNull().references(()=>j.id,{onDelete:`cascade`}),nodeId:k(`node_id`).notNull(),nodeType:k(`node_type`).notNull().$type(),path:k(`path`,{mode:`json`}).$type().notNull(),status:k(`status`,{enum:[`pending`,`running`,`waiting`,`completed`,`failed`,`skipped`,`cancelled`]}).notNull(),attempt:E(`attempt`).notNull().default(0),iteration:E(`iteration`),branchKey:k(`branch_key`),startedAt:E(`started_at`),completedAt:E(`completed_at`),durationMs:E(`duration_ms`),inputTokens:E(`input_tokens`),outputTokens:E(`output_tokens`),estimatedCost:D(`estimated_cost`),error:k(`error`)},e=>[T(`idx_worklog_frame_entries_execution`).on(e.executionId)]),be=O(`worklog_artifact_writes`,{id:k(`id`).primaryKey(),executionId:k(`execution_id`).notNull().references(()=>j.id,{onDelete:`cascade`}),frameId:k(`frame_id`).notNull(),nodeId:k(`node_id`).notNull(),artifact:k(`artifact`,{mode:`json`}).$type().notNull(),revision:k(`revision`),writtenAt:E(`written_at`).notNull()},e=>[T(`idx_worklog_artifact_writes_execution`).on(e.executionId)]),xe=O(`worklog_gate_events`,{id:k(`id`).primaryKey(),executionId:k(`execution_id`).notNull().references(()=>j.id,{onDelete:`cascade`}),nodeId:k(`node_id`).notNull(),frameId:k(`frame_id`).notNull(),status:k(`status`,{enum:[`waiting`,`resumed`,`rejected`,`timed-out`,`cancelled`]}).notNull().$type(),prompt:k(`prompt`),openedAt:E(`opened_at`).notNull(),resolvedAt:E(`resolved_at`),resumeData:k(`resume_data`,{mode:`json`}).$type()},e=>[T(`idx_worklog_gate_events_execution`).on(e.executionId),T(`idx_worklog_gate_events_status`).on(e.status)]),Se=n.object({sourceExecutionId:n.string().min(1).optional(),targetExecutionId:n.string().min(1).optional()}).refine(e=>e.sourceExecutionId!==void 0||e.targetExecutionId!==void 0,{message:`Either sourceExecutionId or targetExecutionId is required.`}),Ce=n.object({executionId:n.string().min(1),status:h.optional(),error:n.string().nullable().optional(),reason:n.string().nullable().optional(),completedAt:n.number().nullable().optional()}),we=se(`workflow`,{schemas:{get:{request:n.object({id:n.string()}),response:n.object({workflow:y.nullable()})},set:{request:n.object({workflow:y}),response:n.object({id:n.string()})},delete:{request:n.object({id:n.string()}),response:n.object({deleted:n.boolean()})},list:{request:ee,response:n.object({workflows:n.array(y)})},getExecution:{request:n.object({executionId:n.string()}),response:n.object({execution:b.nullable()})},setExecution:{request:n.object({execution:b}),response:n.object({id:n.string()})},setExecutionStart:{request:n.object({execution:b,runContext:C}),response:n.object({id:n.string(),executionId:n.string()})},updateExecution:{request:Ce,response:n.object({success:n.boolean()})},cancelPausedExecution:{request:n.object({executionId:n.string().min(1),completedAt:n.number(),reason:n.string().optional()}),response:n.object({cancelled:n.boolean(),gates:n.array(S.extend({status:n.literal(`cancelled`)}))})},listExecutions:{request:m,response:n.object({executions:n.array(b)})},setFrame:{request:n.object({executionId:n.string().min(1),frame:x}),response:n.object({frameId:n.string()})},getFrame:{request:n.object({frameId:n.string().min(1)}),response:n.object({frame:x.nullable()})},listFrames:{request:n.object({executionId:n.string().min(1)}),response:n.object({frames:n.array(x)})},setGateInstance:{request:n.object({gate:S}),response:n.object({id:n.string()})},resolveWaitingGateInstance:{request:n.object({gate:S.extend({status:n.enum([`resumed`,`rejected`])})}),response:n.object({accepted:n.boolean()})},restorePausedGateResumeState:{request:n.object({execution:b.extend({status:n.literal(`paused`)}),gate:S.extend({status:n.literal(`waiting`)})}),response:n.object({executionId:n.string(),gateId:n.string()})},getGateInstance:{request:n.object({executionId:n.string().min(1),nodeId:n.string().min(1),frameId:n.string().min(1).optional()}),response:n.object({gate:S.nullable()})},listGateInstances:{request:n.object({executionId:n.string().min(1)}),response:n.object({gates:n.array(S)})},listPausedGateTimeouts:u({request:n.object({}),response:n.object({gates:n.array(S)})}),setSpan:{request:n.object({span:g}),response:n.object({id:n.string()})},listSpans:{request:n.object({executionId:n.string()}),response:n.object({spans:n.array(g)})},setExecutionLink:{request:n.object({link:p}),response:n.object({id:n.string()})},listExecutionLinks:{request:Se,response:n.object({links:n.array(p)})},setRunContext:u({request:n.object({runContext:C}),response:n.object({executionId:n.string()})}),getRunContext:u({request:n.object({executionId:n.string().min(1)}),response:n.object({runContext:C.nullable()})})},extensions:{drizzle:{workflowDefinitions:fe,workflowExecutions:j,workflowExecutionFrames:pe,workflowGateInstances:me,workflowStepSpans:he,workflowExecutionLinks:ge,workflowRunContexts:_e,worklogSummaries:ve,worklogFrameEntries:ye,worklogArtifactWrites:be,worklogGateEvents:xe}}}),M=we.subjects,Te={stepTimeoutMs:300*1e3,stepCooldownMs:500,busAuth:{kind:`none`},platformDefaults:{cwd:process.cwd()},cancelTimeoutMs:1e4};async function N(e,t,n){if(!(await e.request(M.updateExecution,{executionId:t.id,status:n.status,error:n.error,reason:n.reason,completedAt:n.completedAt})).success)throw Error(`Workflow execution not found: ${t.id}`)}async function Ee(e,t,n,r){t.status=`completed`,t.completedAt=Date.now();try{await N(e.bus,t,{status:t.status,completedAt:t.completedAt}),await e.bus.emit(w.execution.completed,{executionId:n,workflowId:t.workflowId,totalDuration:t.completedAt-r,completedAt:t.completedAt})}finally{e.activeExecutions.delete(n)}}async function De(e,t,n,r,i){t.status=`failed`,t.error=r,t.completedAt=Date.now();try{await N(e.bus,t,{status:t.status,error:t.error,completedAt:t.completedAt});try{await i?.()}catch(e){console.error(`[WorkflowFinalizer] Failed to run failure pre-emit hook:`,e)}await e.bus.emit(w.execution.failed,{executionId:n,workflowId:t.workflowId,error:r,completedAt:t.completedAt})}finally{e.activeExecutions.delete(n)}}function Oe(e,t,n){let{activeRunnerSteps:r,bus:i}=e,a=`${t}:`;for(let[e,o]of r){if(!e.startsWith(a))continue;let r=e.slice(a.length);o.controller.abort(),i.emit(re(o.cancelSubject),{executionId:t,stepId:r,reason:n}).catch(t=>{console.error(`[WorkflowFinalizer] Failed to emit cancellation for ${e}:`,t)})}}async function ke(e,t,n){let r=await e.bus.request(M.getExecution,{executionId:t});if(r.execution==null)return!1;let i=r.execution.workflowId;if(i===void 0)throw Error(`Paused execution ${t} is missing stored workflowId`);let a=Date.now(),{cancelled:o,gates:s}=await e.bus.request(M.cancelPausedExecution,{executionId:t,completedAt:a,reason:n});if(!o)return!1;for(let n of s)await e.bus.emit(w.gate.resolved,{executionId:t,stepId:n.nodeId,stepType:`gate`,frameId:n.frameId,source:`cancelled`}).catch(e=>{console.error(`[WorkflowFinalizer] Failed to emit cancelled gate resolution for ${n.frameId}:`,e)});return await e.bus.emit(w.execution.cancelled,{executionId:t,workflowId:i,reason:n,completedAt:a}),e.activeExecutions.delete(t),!0}async function Ae(e,t,n){let r=e.activeExecutions.get(t);if(!r||r.execution.status!==`running`)return ke(e,t,n);let{execution:i}=r;i.status=`cancelled`,i.reason=n,i.completedAt=Date.now();try{for(let[n,r]of e.shellAbortControllers)n.startsWith(`${t}:`)&&(r.abort(),e.shellAbortControllers.delete(n));Oe(e,t,n),await N(e.bus,i,{status:i.status,reason:n,completedAt:i.completedAt}),await e.bus.emit(w.execution.cancelled,{executionId:t,workflowId:i.workflowId,reason:n,completedAt:i.completedAt})}finally{e.activeExecutions.delete(t)}return!0}function je(e){return`${e}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`}function Me(e){let t={};for(let[n,r]of Object.entries(e))r.status===`completed`?t[n]={status:`completed`,output:r.output}:r.status===`skipped`&&(t[n]={status:`skipped`});return t}function P(e){let t={...e,input:e.inputs,steps:e.frames};return{...t,ctx:t}}function Ne(){return{context:{repoPath:process.cwd(),makaioHome:process.env.MAKAIO_HOME??`${le.homedir()}/.makaio`,os:process.platform===`win32`?`win32`:process.platform===`darwin`?`darwin`:`linux`,arch:process.arch},env:{}}}function Pe(e){return{...e,path:[...e.path]}}function Fe(e){if(e===`station`||e===`delegate-agent`||e===`delegate-role`||e===`gate`)return e}function Ie(e,t){let n=Fe(t.nodeType);if(n===void 0||t.status!==`running`&&t.status!==`completed`&&t.status!==`failed`&&t.status!==`skipped`)return;let r=t.startedAt!==void 0&&t.completedAt!==void 0?Math.max(0,t.completedAt-t.startedAt):void 0;return{executionId:e,frameId:t.frameId,stepId:t.nodeId,stepType:n,status:t.status,...t.startedAt===void 0?{}:{startedAt:t.startedAt},...t.completedAt===void 0?{}:{completedAt:t.completedAt},...r===void 0?{}:{durationMs:r},...t.output===void 0?{}:{output:JSON.stringify(t.output)}}}var Le=class e{executionId;workflowId;definition;execution;runtimeHandlers;bus;signal;frameRegistry;framePersistenceTasks=new Map;artifactBinding;constructor(e,t,n,r,i,a,o,s,c,l=Ne(),u={}){this.executionId=e,this.workflowId=t,this.definition=n,this.execution=r,this.runtimeHandlers=i,this.bus=a,this.signal=o,this.frameRegistry=s??new Map,this.artifactBinding=c,this.platformContext=l.context,this.env=l.env,this.suspensionStrategy=u.suspensionStrategy??`wait-in-process`,this.resumeFrames=u.resumeFrames}platformContext;env;suspensionStrategy;resumeFrames;withSignal(t){return new e(this.executionId,this.workflowId,this.definition,this.execution,this.runtimeHandlers,this.bus,t,this.frameRegistry,this.artifactBinding,{context:this.platformContext,env:this.env},{suspensionStrategy:this.suspensionStrategy,resumeFrames:this.resumeFrames})}buildExpressionContext(){return{inputs:this.execution.inputs,config:this.execution.config??{},trigger:this.execution.triggerPayload??{},frames:{},previousSteps:{}}}createFrame(e){let t=je(`frm`),n=[...e.path,t],r={frameId:t,nodeId:e.nodeId,nodeType:e.nodeType,path:n,parentFrameId:e.parentFrameId,status:`pending`,attempt:0,iteration:e.iteration,branchKey:e.branchKey};return this.frameRegistry.set(t,r),this.persistFrame(r).catch(()=>void 0),r}async persistFrame(e,t={}){let n=t.requireFrameStorage===!0||this.suspensionStrategy!==`wait-in-process`,r=Pe(e),i=Ie(this.executionId,r),a=(this.framePersistenceTasks.get(e.frameId)??Promise.resolve()).catch(()=>void 0).then(async()=>{n?await this.bus.request(M.setFrame,{executionId:this.executionId,frame:r}):await this.bus.requestOptional(M.setFrame,{executionId:this.executionId,frame:r}),i!==void 0&&await this.bus.requestOptional(M.setSpan,{span:i})}).catch(t=>{if(n)throw t;console.warn(`[RuntimeContext] Failed to persist frame ${e.frameId}:`,t)});this.framePersistenceTasks.set(e.frameId,a);try{await a}finally{this.framePersistenceTasks.get(e.frameId)===a&&this.framePersistenceTasks.delete(e.frameId)}}async updateFrame(e,t,n={}){let r=this.frameRegistry.get(e);if(!r)throw Error(`Frame not found: ${e}`);Object.assign(r,t),await this.persistFrame(r,n)}getFrame(e){return this.frameRegistry.get(e)}getFramesByNodeId(e){let t=[];for(let n of this.frameRegistry.values())n.nodeId===e&&t.push(n);return t.sort((e,t)=>(e.startedAt??0)-(t.startedAt??0))}async emitFrameStarted(e){try{await this.bus.emit(w.frame.started,{executionId:this.executionId,frameId:e.frameId,nodeId:e.nodeId,nodeType:e.nodeType,path:e.path,parentFrameId:e.parentFrameId,startedAt:e.startedAt})}catch(t){console.error(`[RuntimeContext] frame.started observer failed for ${e.frameId}:`,t)}}async emitFrameCompleted(e,t){try{await this.bus.emit(w.frame.completed,{executionId:this.executionId,frameId:e.frameId,nodeId:e.nodeId,output:e.output,duration:t,completedAt:e.completedAt})}catch(t){console.error(`[RuntimeContext] frame.completed observer failed for ${e.frameId}:`,t)}}async emitFrameFailed(e,t,n){try{await this.bus.emit(w.frame.failed,{executionId:this.executionId,frameId:e.frameId,nodeId:e.nodeId,error:t,duration:n,completedAt:e.completedAt})}catch(t){console.error(`[RuntimeContext] frame.failed observer failed for ${e.frameId}:`,t)}}};function Re(e){return{kind:`workflow-execution`,id:e,displayName:`Workflow Engine`}}function ze(e,t,n){return{inputs:n.inputs,config:n.config??{},trigger:n.triggerPayload,scope:n.scope,context:n.context,env:n.env,execution:{id:t.id,workflowId:t.workflowId,scope:t.scope},workflow:{id:e.id,name:e.name,scope:e.scope}}}function Be(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Ve(e){if(e!=null){if(Be(e)&&typeof e.kind==`string`&&typeof e.id==`string`)return{kind:e.kind,id:e.id};throw Error(`Artifact resolve expression must return an object with string kind and id fields.`)}}function He(e){if(e!==void 0){if(Be(e))return e;throw Error(`Artifact create expression must return an object.`)}}async function Ue(e){let{bindingOptions:t,binding:n,existingArtifactRef:r,executionId:i,scope:a,initialData:o,bus:s}=e,c=null;if(r!==void 0){let e=await s.request(f.query,{kind:r.kind,ids:[r.id],currentOnly:!0});if(e.artifacts.length>0)c=e.artifacts[0];else return}else c=(await s.request(f.create,{kind:n.kind,schemaVersion:n.schemaVersion,scope:a??n.scope,data:o??{},relations:[],actor:Re(i)})).artifact;return{current:c,schemaVersion:n.schemaVersion,statusPath:t.statusPath,zodSchema:t.schema}}async function We(e){let{definition:t,execution:n,runContext:r,zodSchema:i,bus:a}=e,o=t.artifact;if(o===void 0)return;let s=ze(t,n,r),c=r.artifactRef??(o.resolve===void 0?void 0:Ve(A(o.resolve,s))),l=c===void 0&&o.create!==void 0?He(A(o.create,s)):void 0,u=await Ue({bindingOptions:{kind:o.kind,schemaVersion:o.schemaVersion,scope:o.scope,...o.resolve===void 0?{}:{resolve:o.resolve},...o.create===void 0?{}:{create:o.create},...o.statusPath===void 0?{}:{statusPath:o.statusPath},...i===void 0?{}:{schema:i}},binding:o,existingArtifactRef:c,executionId:n.id,scope:o.scope,initialData:l,bus:a});if(u===void 0)throw Error(`Workflow artifact binding could not be resolved for the configured artifact reference.`);return u}const Ge=new WeakMap;function Ke(e,t){let n=(Ge.get(e)??Promise.resolve()).catch(()=>void 0).then(t);return Ge.set(e,n.then(()=>void 0,()=>void 0)),n}function qe(e,t){switch(t.operation){case`set`:return t.data;case`merge`:return{...e,...t.data};case`append`:{let n={...e};for(let[r,i]of Object.entries(t.data)){let t=e[r];Array.isArray(t)&&Array.isArray(i)?n[r]=[...t,...i]:n[r]=i}return n}}}function Je(e,t,n){let[r,...i]=t;if(i.length===0)return{...e,[r]:n};let a=e[r]!==null&&typeof e[r]==`object`&&!Array.isArray(e[r])?e[r]:{};return{...e,[r]:Je(a,i,n)}}function Ye(e,t,n){return Je(e,t.startsWith(`/`)?t.slice(1).split(`/`):t.split(`.`),n)}function Xe(e,t,n){if(n===`set`||n===`functional`)return[];let r=[];for(let n of Object.keys(t))e[n]!==t[n]&&r.push(`/${n}`);return r}async function Ze(e,t){if(typeof t==`function`)return{nextData:await t(Object.freeze({...e})),operationLabel:`functional`,changedPaths:[]};let n=qe(e,t),r=Xe(e,n,t.operation);return{nextData:n,operationLabel:t.operation,changedPaths:r}}function Qe(e){let{executionId:t,frameId:n,bindingState:r,bus:i}=e,a=Object.freeze({...r.current.data}),o=async e=>Ke(r,async()=>{let a=r.current,{nextData:o,operationLabel:s,changedPaths:c}=await Ze(a.data,e);if(r.zodSchema!==void 0){let e=r.zodSchema.safeParse(o);if(!e.success)throw Error(`Artifact data validation failed: ${e.error.message}`)}let l=await i.request(f.revise,{previous:{refClass:`artifact`,kind:a.kind,id:a.id,revision:a.revision},revision:{kind:a.kind,schemaVersion:r.schemaVersion,scope:a.scope,data:o,relations:a.relations,actor:Re(t)}});r.current=l.artifact;let u=l.artifact.revision;return i.emit(ne.artifact.updated,{executionId:t,frameId:n,artifactRef:{kind:l.artifact.kind,id:l.artifact.id},paths:c,operation:s,revision:u}).catch(e=>{console.error(`[ArtifactContext] Failed to emit artifact.updated event:`,e)}),u});return{data:a,updateArtifact:o,updateStatus:async e=>{if(r.statusPath===void 0)throw Error(`updateStatus() called but no statusPath is configured on the artifact binding. Set statusPath in the .artifact() builder call to use updateStatus().`);let t=r.statusPath;return o(n=>Ye(n,t,e))}}}async function $e(e,t,n){if(t.signal.aborted)return{status:`cancelled`};let r=await t.bus.requestOptional(w.resolveRole,{roleId:e.roleId});if(!r.handled)return{status:`failed`,error:e.unresolvedRoleError};let i=ce(e.prompt,P(n));return et({...e,task:i,resolvedConfig:r.data},t)}async function et(e,t){if(t.signal.aborted)return{status:`cancelled`};let n=await t.bus.requestOptional(_.spawn,{parentSessionId:t.execution.coordinatorSessionId??t.executionId,depth:1,config:at(e.task,e.resolvedConfig,e.outputSchema)});if(!n.handled)return{status:`failed`,error:e.unavailableRuntimeError};let r=await tt(e,t,n.data.subagentId,{attempts:5}),i=await ot(e,t,n.data.subagentId);return i===`aborted`?{status:`cancelled`}:(r||await tt(e,t,n.data.subagentId,{attempts:1}),i.handled?t.signal.aborted||i.data.status===`cancelled`?{status:`cancelled`}:i.data.status===`completed`?{status:`completed`,output:i.data.result??null}:{status:`failed`,error:`${e.nodeLabel} '${e.nodeId}' subagent ${i.data.status}: ${i.data.error??`no result`}`}:{status:`failed`,error:e.unavailableAwaitError})}async function tt(e,t,n,r){if(e.frameId===void 0)return!0;try{let i=await nt(t,n,r.attempts);return i===void 0?!1:(await t.bus.emit(w.frame.sessionLinked,{executionId:t.executionId,frameId:e.frameId,sessionId:i}),!0)}catch(t){return console.warn(`[workflow-engine] Failed to emit frame.sessionLinked for frame '${e.frameId}' and subagent '${n}'`,t),!1}}async function nt(e,t,n){for(let r=0;r<n;r+=1){if(e.signal?.aborted)return;let i=await rt(e,t);if(i===void 0||!i.handled)return;if(i.data.childSessionId!==void 0)return i.data.childSessionId;if(r<n-1&&!await it(e.signal,20))return}}async function rt(e,t){try{return await e.bus.requestOptional(_.getStatus,{subagentId:t},{timeout:25,signal:e.signal})}catch{return}}function it(e,t){return e.aborted?Promise.resolve(!1):new Promise(n=>{let r,i=t=>{r!==void 0&&(clearTimeout(r),r=void 0),e.removeEventListener(`abort`,a),n(t)},a=()=>i(!1);r=setTimeout(()=>i(!0),t),e.addEventListener(`abort`,a,{once:!0}),e.aborted&&i(!1)})}function at(e,t,n){return{task:e,adapterName:t.adapterName,...t.model===void 0?{}:{model:t.model},...t.harnessId===void 0?{}:{harnessId:t.harnessId},...t.systemPrompt===void 0?{}:{systemPrompt:t.systemPrompt},...t.contextMode===void 0?{}:{contextMode:t.contextMode},...t.providerContext===void 0?{}:{providerContext:t.providerContext},...n===void 0?{}:{responseSchema:n}}}async function ot(e,t,n){if(t.signal.aborted)return await F(e,t,n),`aborted`;let r=t.bus.requestOptional(_.await,{subagentId:n,...e.timeoutMs===void 0?{}:{timeoutMs:e.timeoutMs}});if(t.signal.aborted)return await F(e,t,n),`aborted`;let i,a=new Promise(e=>{i=()=>e(`aborted`),t.signal.addEventListener(`abort`,i,{once:!0})}),o=await Promise.race([r,a]);return i!==void 0&&t.signal.removeEventListener(`abort`,i),o===`aborted`&&await F(e,t,n),o}async function F(e,t,n){try{await t.bus.requestOptional(_.kill,{subagentId:n,reason:`Workflow execution '${t.executionId}' cancelled ${e.cancellationLabel} '${e.nodeId}'`})}catch(t){console.warn(`[workflow-engine] Best-effort subagent kill failed for '${n}' (${e.cancellationLabel} '${e.nodeId}')`,t)}}async function st(e,t,n,r){if(t.signal.aborted)return{status:`cancelled`};let i=Me(n.frames),a=t.runtimeHandlers.get(e.id);if(a===void 0)return ct(e,t,n,r);let o=t.artifactBinding!==void 0&&r!==void 0?Qe({executionId:t.executionId,frameId:r,bindingState:t.artifactBinding,bus:t.bus}):void 0;async function s(n){if(r===void 0){console.warn(`[station-node] updateProgress called without frameId for node '${e.id}'; skipping emit`);return}let i=te[`execution.progress`].parse({executionId:t.executionId,workflowId:t.workflowId,frameId:r,nodeId:e.id,progress:n,emittedAt:Date.now()});try{await t.bus.emit(w.execution.progress,i)}catch(t){console.error(`[station-node] execution.progress observer failed for ${e.id}:`,t)}}let c;try{c=await a({...t.platformContext,env:t.env,executionId:t.executionId,workflowId:t.workflowId,inputs:t.execution.inputs,config:t.execution.config??{},trigger:t.execution.triggerPayload??{},previousSteps:i,...n.item!==void 0&&{item:n.item},...n.index!==void 0&&{index:n.index},...n.previous!==void 0&&{previous:n.previous},signal:t.signal,...o!==void 0&&{artifact:o},bus:t.bus,updateProgress:s})}catch(e){return{status:`failed`,error:e instanceof Error?e.message:String(e)}}return{status:`completed`,output:c}}async function ct(e,t,n,r){if(e.role===void 0)return{status:`failed`,error:`No handler registered for station node '${e.id}'`};let i=e.outputSchema===void 0?void 0:{schema:e.outputSchema};return $e({nodeId:e.id,nodeLabel:`Station node`,roleId:e.role,prompt:e.prompt,...i===void 0?{}:{outputSchema:i},...e.timeoutMs===void 0?{}:{timeoutMs:e.timeoutMs},unresolvedRoleError:`No runtime handler registered for station node '${e.id}', and role '${e.role}' could not be resolved`,unavailableRuntimeError:`Subagent runtime is not available for station node '${e.id}'`,unavailableAwaitError:`Subagent runtime cannot await station node '${e.id}'`,cancellationLabel:`station`,...r===void 0?{}:{frameId:r}},t,n)}async function lt(e,t,n,r){if(t.signal.aborted)return{status:`cancelled`};let i=await t.bus.requestOptional(w.resolveAgent,{agentId:e.agentId});if(!i.handled)return{status:`failed`,error:`Agent '${e.agentId}' could not be resolved for delegate-agent node '${e.id}'`};if(t.signal.aborted)return{status:`cancelled`};let a=dt(e,n);if(a.status===`failed`)return a;let o=e.outputSchema===void 0?void 0:{schema:e.outputSchema};return et({nodeId:e.id,nodeLabel:`Delegate-agent node`,task:a.task,resolvedConfig:i.data,...o===void 0?{}:{outputSchema:o},unavailableRuntimeError:`Subagent runtime is not available for delegate-agent node '${e.id}'`,unavailableAwaitError:`Subagent runtime cannot await delegate-agent node '${e.id}'`,cancellationLabel:`delegate-agent`,...r===void 0?{}:{frameId:r}},t)}async function ut(e,t,n,r){if(t.signal.aborted)return{status:`cancelled`};let i=e.outputSchema===void 0?void 0:{schema:e.outputSchema};return $e({nodeId:e.id,nodeLabel:`Delegate-role node`,roleId:e.role,prompt:e.prompt,...i===void 0?{}:{outputSchema:i},...e.timeoutMs===void 0?{}:{timeoutMs:e.timeoutMs},unresolvedRoleError:`Role '${e.role}' could not be resolved for delegate-role node '${e.id}'`,unavailableRuntimeError:`Subagent runtime is not available for delegate-role node '${e.id}'`,unavailableAwaitError:`Subagent runtime cannot await delegate-role node '${e.id}'`,cancellationLabel:`delegate-role`,...r===void 0?{}:{frameId:r}},t,n)}function dt(e,t){try{let n=P(t);return{status:`completed`,task:ft(e.inputExpression===void 0?n:A(e.inputExpression,n))}}catch(t){let n=t instanceof Error?t.message:String(t);return{status:`failed`,error:`delegate-agent node '${e.id}': input expression evaluation failed: ${n}`}}}function ft(e){if(typeof e==`string`)return e;if(e===void 0)return``;try{return JSON.stringify(e,null,2)??``}catch{return String(e)}}function pt(e,t,n,r){try{let i=A(n,P(r));return Array.isArray(i)?i:{status:`failed`,error:`${t} node '${e}': collection expression did not resolve to an array (got ${typeof i})`}}catch(n){return{status:`failed`,error:`${t} node '${e}': collection expression evaluation failed: ${n instanceof Error?n.message:String(n)}`}}}function mt(e,t,n){for(let r of[...e.nodes].reverse()){let e=n.getFramesByNodeId(r.id);for(let n of e)if(n.parentFrameId===t&&n.status===`completed`)return n.output}}function ht(e,t,n){return mt(e.body,t,n)}function gt(e){if(e.length===0)return;let t=new Map,n=new Map;for(let r of e){n.set(r.frameId,r);let e=t.get(r.nodeId)??[];e.push(r),t.set(r.nodeId,e)}return{byNodeId:t,byFrameId:n}}const _t=new Set([`completed`,`skipped`,`waiting`]);function I(e,t,n){let r=e?.byNodeId.get(t)??[],i=n.statuses??_t;return r.find(e=>e.parentFrameId===n.parentFrameId&&e.branchKey===n.branchKey&&e.iteration===n.iteration&&i.has(e.status))}function L(e,t,n){let r={...e.frames,[t]:n};return{...e,frames:r,previousSteps:Me(r),output:n.status===`completed`?n.output:e.output}}function R(e,t){if(typeof AbortSignal.any==`function`)return AbortSignal.any([e,t]);let n=new AbortController,r=()=>n.abort();return e.addEventListener(`abort`,r,{once:!0}),t.addEventListener(`abort`,r,{once:!0}),n.signal}const vt=new Set([`completed`,`running`]);function yt(e,t){return e.status===`running`&&t.pauseSignal?.aborted===!0&&!t.outerSignal.aborted}async function bt(e,t,n,r,i,a,o=`all-settled`){if(t.signal.aborted)return{status:`cancelled`};let s=Object.entries(e.branches);if(s.length===0)return{status:`completed`,output:z({},o)};let c=new AbortController,l=new AbortController,u=t.suspensionStrategy!==`wait-in-process`,d=o===`fail-fast`?R(c.signal,l.signal):u?l.signal:void 0,f=d===void 0?t.signal:R(t.signal,d),p=f===t.signal?t:t.withSignal(f),m=s.map(([s,c])=>xt(s,c,e,p,n,r,i,a,{outerSignal:t.signal,pauseSignal:o===`fail-fast`||u?l.signal:void 0}));if(o===`all-settled`){let e=await Promise.all(u?m.map(e=>e.then(e=>(e.status===`paused`&&l.abort(),e))):m),t=e.find(e=>e.status===`paused`);return t===void 0?{status:`completed`,output:z(Ct(s,e),o)}:t}let h=await St(s,m,c,l);return h.type===`cancelled`?{status:`cancelled`}:h.type===`paused`?h.outcome:h.type===`failed`?{status:`failed`,error:h.error}:{status:`completed`,output:z(Ct(s,h.outcomes),o)}}async function xt(e,t,n,r,i,a,o,s,c){if(r.signal.aborted)return{status:`cancelled`};let l=I(r.resumeFrames,n.id,{parentFrameId:o,branchKey:e,statuses:vt});if(l?.status===`completed`)return{status:`completed`,...l.output===void 0?{}:{output:l.output}};let u=l??r.createFrame({nodeId:n.id,nodeType:`parallel`,path:s,parentFrameId:o,branchKey:e});if(r.signal.aborted)return yt(u,c)||await X(u,r),{status:`cancelled`};l===void 0&&await K(u,r);let d;try{d=await a(t,r,i,u.frameId,u.path)}catch(e){let t=e instanceof Error?e.message:String(e);return await J(u,r,t),{status:`failed`,error:t}}switch(d.status){case`completed`:{let e=mt(t,u.frameId,r);return await q(u,r,e),{status:`completed`,output:e}}case`skipped`:return await q(u,r),{status:`completed`};case`cancelled`:return yt(u,c)||await X(u,r),{status:`cancelled`};case`paused`:return d;case`failed`:return await J(u,r,d.error),{status:`failed`,error:d.error}}}async function St(e,t,n,r){let i,a,o=t.map(e=>e.then(e=>(e.status===`failed`&&i===void 0?(i=e.error,n.abort()):e.status===`paused`&&a===void 0&&(a=e,r.abort()),e),e=>{let t=e instanceof Error?e.message:String(e);return i===void 0&&(i=t,n.abort()),{status:`failed`,error:t}})),s=await Promise.all(o);return a===void 0?s.some(e=>e.status===`cancelled`)&&i===void 0?{type:`cancelled`}:i===void 0?{type:`completed`,outcomes:s}:{type:`failed`,error:i}:{type:`paused`,outcome:a}}function z(e,t){return{mode:t,branches:e}}function Ct(e,t){let n={};for(let r=0;r<e.length;r++){let[i]=e[r],a=t[r];n[i]=wt(a)}return n}function wt(e){switch(e.status){case`completed`:return{status:`fulfilled`,...e.output===void 0?{}:{value:e.output}};case`skipped`:return{status:`fulfilled`,value:null};case`cancelled`:return{status:`cancelled`};case`paused`:return{status:`paused`,pausedAtGateId:e.pausedAtGateId,pausedAtFrameId:e.pausedAtFrameId};case`failed`:return{status:`rejected`,reason:e.error}}}const Tt=new(e(t(),1)).default({allErrors:!0,strict:!1});function B(e,t){if(t===void 0)return{status:`ok`};try{return{status:`ok`,validator:Tt.compile(t)}}catch(t){return{status:`failed`,error:`Gate '${e}' has an invalid resumeSchema: ${t instanceof Error?t.message:String(t)}`}}}function V(e,t){return e===void 0||e(t)?{valid:!0}:{valid:!1,error:Dt(e.errors??[])}}function Et(e,t,n){let r=B(e,t);return r.status===`failed`?{valid:!1,error:r.error}:V(r.validator,n)}function Dt(e){return e.length===0?`schema validation failed`:e.map(e=>`${e.instancePath.length>0?e.instancePath:`/`} ${e.message??`is invalid`}`).join(`; `)}const H={action:`approve`,source:`timeout`};async function Ot(e,t,n,r){let i=()=>{t.value&&(t.value=!1,e.reject(`cancelled`))};n.addEventListener(`abort`,i,{once:!0}),n.aborted&&i();let a=[e.promise],o;if(r!==null){let e=Mt();o=setTimeout(()=>{t.value&&(t.value=!1,n.removeEventListener(`abort`,i),e.reject(`timed-out`))},r),a.push(e.promise)}try{let e=await Promise.race(a);return n.removeEventListener(`abort`,i),o!==void 0&&clearTimeout(o),{action:e.action,resumeData:e.resumeData,timedOut:!1,wasCancelled:!1}}catch(e){return o!==void 0&&clearTimeout(o),n.removeEventListener(`abort`,i),e===`timed-out`?{action:`reject`,resumeData:null,timedOut:!0,wasCancelled:!1}:{action:`reject`,resumeData:null,timedOut:!1,wasCancelled:!0}}}async function kt(e,t,n,r,i,a){let o={required:e.suspensionStrategy!==`wait-in-process`};if(a.timedOut){let a=Date.now();if(r.autoAction===`approve`){let s=V(i,H);return s.valid?(await U(e,{...r,status:`resumed`,resumeData:H,resolvedAt:a},o),await W(e,t.id,n,{action:`approve`,source:`timeout`}),{status:`completed`,output:{resumeData:H}}):(await U(e,{...r,status:`timed-out`,resolvedAt:a},o),await W(e,t.id,n,{action:`reject`,source:`timeout`}),{status:`failed`,error:`Gate '${t.id}' auto-approve timeout resume data does not match resumeSchema: ${s.error}`})}return await U(e,{...r,status:`timed-out`,resolvedAt:a},o),await W(e,t.id,n,{action:`reject`,source:`timeout`}),{status:`failed`,error:`Gate '${t.id}' timed out after ${String(r.timeoutMs)}ms and auto-rejected`}}if(a.wasCancelled||e.signal.aborted)return await U(e,{...r,status:`cancelled`,resolvedAt:Date.now()},o),await W(e,t.id,n,{source:`cancelled`}),{status:`cancelled`};let s=Date.now();await U(e,{...r,status:a.action===`reject`?`rejected`:`resumed`,resumeData:a.resumeData,resolvedAt:s},o);try{await e.bus.emit(w.gate.resumed,{executionId:e.executionId,frameId:n,nodeId:t.id,resumeData:a.resumeData}),await W(e,t.id,n,{action:a.action,source:`user`})}catch(e){console.error(`[GateNode] gate.resumed emit failed for '${t.id}':`,e)}return{status:`completed`,output:{resumeData:a.resumeData}}}async function At(e,t,n,r){if(t.signal.aborted)return{status:`cancelled`};let i=e.resumeSchema??{};if(t.suspensionStrategy!==`wait-in-process`){let n=await Ft(t,e,r);if(n!==void 0)return n}let a=B(e.id,e.resumeSchema);return a.status===`failed`?{status:`failed`,error:a.error}:jt(t,e,n,r,i,a.validator)}async function jt(e,t,n,r,i,a){let o=ce(t.prompt,P(n)),s={executionId:e.executionId,nodeId:t.id,frameId:r,schema:i,prompt:o,status:`waiting`,autoAction:t.autoAction,timeoutMs:t.timeoutMs,createdAt:Date.now()},c=e.suspensionStrategy!==`wait-in-process`;if(await U(e,s,{required:c}),await e.updateFrame(r,{status:`waiting`},{requireFrameStorage:c}),c)return await Nt(e,t,r,i,o,s.createdAt),{status:`paused`,pausedAtGateId:t.id,pausedAtFrameId:r};let l={value:!0},u=Mt(),f=e.bus.on(w.gate.respond,async n=>{let{executionId:i,gateId:o,frameId:s,action:c,resumeData:f}=n.payload;if(i!==e.executionId||o!==t.id||s!==void 0&&s!==r){try{await n.next()}catch(e){if(e instanceof d)n.setResult({accepted:!1});else throw e}return}if(!l.value){n.setResult({accepted:!1});return}if(!V(a,f).valid){n.setResult({accepted:!1});return}l.value=!1,n.setResult({accepted:!0}),u.resolve({action:c,resumeData:f})});await Nt(e,t,r,i,o,s.createdAt);let p=await Ot(u,l,e.signal,t.timeoutMs);return f(),kt(e,t,r,s,a,p)}function Mt(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}async function Nt(e,t,n,r,i,a){try{await e.bus.emit(w.gate.suspended,{executionId:e.executionId,frameId:n,nodeId:t.id,schema:r,prompt:i,...t.title!==void 0&&{title:t.title},autoAction:t.autoAction,timeoutMs:t.timeoutMs,openedAt:a})}catch(e){console.error(`[GateNode] gate.suspended emit failed for '${t.id}':`,e)}}async function Pt(e,t,n){if(e.suspensionStrategy!==`wait-in-process`)return(await e.bus.request(M.getGateInstance,{executionId:e.executionId,nodeId:t,frameId:n})).gate;let r=await e.bus.requestOptional(M.getGateInstance,{executionId:e.executionId,nodeId:t,frameId:n});return r.handled?r.data.gate:null}async function Ft(e,t,n){let r=await Pt(e,t.id,n);if((r?.status===`resumed`||r?.status===`rejected`)&&r.resumeData!==void 0){let i=Et(t.id,r.schema,r.resumeData);if(!i.valid)return{status:`failed`,error:`Gate '${t.id}' persisted resumeData is invalid: ${i.error}`};try{await e.bus.emit(w.gate.resumed,{executionId:e.executionId,frameId:n,nodeId:t.id,resumeData:r.resumeData})}catch(e){console.error(`[GateNode] gate.resumed emit failed for '${t.id}':`,e)}return await W(e,t.id,n,{action:r.status===`rejected`?`reject`:`approve`,source:`user`}),{status:`completed`,output:{resumeData:r.resumeData}}}if(r?.status===`waiting`){if(r.timeoutMs!==null&&Date.now()>=r.createdAt+r.timeoutMs){let i=B(t.id,r.schema);return i.status===`failed`?{status:`failed`,error:i.error}:kt(e,t,n,r,i.validator,{action:`reject`,resumeData:null,timedOut:!0,wasCancelled:!1})}return{status:`paused`,pausedAtGateId:t.id,pausedAtFrameId:n}}if((r?.status===`resumed`||r?.status===`rejected`)&&r.resumeData===void 0)return{status:`failed`,error:`Gate '${t.id}' has status '${r.status}' but resumeData is missing — cannot reconstruct output`};if(r!==null)return{status:`failed`,error:`Gate '${t.id}' cannot resume from status '${r.status}'`}}async function U(e,t,n={}){try{n.required===!0?await e.bus.request(M.setGateInstance,{gate:t}):await e.bus.requestOptional(M.setGateInstance,{gate:t})}catch(e){if(n.required===!0)throw e;console.warn(`[GateNode] Failed to upsert gate instance for '${t.nodeId}':`,e)}}async function W(e,t,n,r){try{await e.bus.emit(w.gate.resolved,{executionId:e.executionId,stepId:t,stepType:`gate`,frameId:n,...r})}catch(e){console.error(`[GateNode] gate.resolved emit failed for '${t}':`,e)}}function G(e){return{status:`fulfilled`,...e===void 0?{}:{value:e}}}const It=new Set([`completed`,`running`]);function Lt(e,t){return e.status===`running`&&t.pauseSignal?.aborted===!0&&!t.outerSignal.aborted}async function Rt(e,t,n,r,i,a){if(t.signal.aborted)return{status:`cancelled`};let o=pt(e.id,`iterate`,e.collection,n);if(!Array.isArray(o))return o;let s=o;if(s.length===0)return{status:`completed`,output:Ht([])};let c=await zt(s,e,t,n,r,i,a,e.concurrency!==void 0&&e.concurrency>0?e.concurrency:0);if(t.signal.aborted&&c.every(e=>e.status===`cancelled`))return{status:`cancelled`};let l=c.find(e=>e.status===`paused`);return l===void 0?{status:`completed`,output:Ht(c)}:{status:`paused`,pausedAtGateId:l.pausedAtGateId,pausedAtFrameId:l.pausedAtFrameId}}async function zt(e,t,n,r,i,a,o,s){let c=new AbortController,l=n.suspensionStrategy!==`wait-in-process`,u=l?R(n.signal,c.signal):n.signal,d=u===n.signal?n:n.withSignal(u),f={outerSignal:n.signal,...l?{pauseSignal:c.signal}:{}};if(s===0){let n=e.map((e,n)=>Vt(e,n,t,d,r,i,a,o,f));return Promise.all(l?n.map(e=>Bt(e,c)):n)}let p=Array(e.length);for(let n=0;n<e.length;n+=s){if(d.signal.aborted){for(let t=n;t<e.length;t++)p[t]={status:`cancelled`};break}let u=Math.min(n+s,e.length),m=[];for(let s=n;s<u;s++)m.push(Vt(e[s],s,t,d,r,i,a,o,f));let h=await Promise.all(l?m.map(e=>Bt(e,c)):m);for(let e=0;e<h.length;e++)p[n+e]=h[e];if(h.some(e=>e.status===`paused`)){for(let t=u;t<e.length;t++)p[t]={status:`cancelled`};break}}return p}function Bt(e,t){return e.then(e=>(e.status===`paused`&&t.abort(),e))}async function Vt(e,t,n,r,i,a,o,s,c){if(r.signal.aborted)return{status:`cancelled`};let l={...i,item:e,index:t},u=I(r.resumeFrames,n.id,{parentFrameId:o,iteration:t,statuses:It});if(u?.status===`completed`)return G(u.output);let d=u??r.createFrame({nodeId:n.id,nodeType:`iterate`,path:s,parentFrameId:o,iteration:t});if(r.signal.aborted)return Lt(d,c)||await X(d,r),{status:`cancelled`};u===void 0&&await K(d,r);let f;try{f=await a(n.body,r,l,d.frameId,d.path)}catch(e){let t=e instanceof Error?e.message:String(e);return await J(d,r,t),{status:`rejected`,reason:t}}switch(f.status){case`completed`:{let e=ht(n,d.frameId,r);return await q(d,r,e),G(e)}case`skipped`:return await q(d,r),G();case`cancelled`:return Lt(d,c)||await X(d,r),{status:`cancelled`};case`paused`:return f;case`failed`:return await J(d,r,f.error),{status:`rejected`,reason:f.error}}}function Ht(e){return{items:e}}const Ut=new Set([`completed`,`running`]);async function Wt(e,t,n,r,i,a){if(t.signal.aborted)return{status:`cancelled`};let o=pt(e.id,`iterate-chain`,e.collection,n);if(!Array.isArray(o))return o;let s=o;if(s.length===0)return{status:`completed`,output:Kt([])};let c=[],l;for(let o=0;o<s.length;o++){if(t.signal.aborted)return{status:`cancelled`};let u=s[o],d=await Gt(u,o,l,e,t,n,r,i,a);switch(c.push(d),d.status){case`fulfilled`:l=d.value;break;case`rejected`:return{status:`failed`,error:d.reason};case`cancelled`:return{status:`cancelled`};case`paused`:return{status:`paused`,pausedAtGateId:d.pausedAtGateId,pausedAtFrameId:d.pausedAtFrameId}}}return{status:`completed`,output:Kt(c)}}async function Gt(e,t,n,r,i,a,o,s,c){if(i.signal.aborted)return{status:`cancelled`};let l={...a,item:e,index:t,...n!==void 0&&{previous:n}},u=I(i.resumeFrames,r.id,{parentFrameId:s,iteration:t,statuses:Ut});if(u?.status===`completed`)return G(u.output);let d=u??i.createFrame({nodeId:r.id,nodeType:`iterate-chain`,path:c,parentFrameId:s,iteration:t});if(i.signal.aborted)return await X(d,i),{status:`cancelled`};u===void 0&&await K(d,i);let f;try{f=await o(r.body,i,l,d.frameId,d.path)}catch(e){let t=e instanceof Error?e.message:String(e);return await J(d,i,t),{status:`rejected`,reason:t}}switch(f.status){case`completed`:{let e=ht(r,d.frameId,i);return await q(d,i,e),G(e)}case`skipped`:return await q(d,i),G();case`cancelled`:return await X(d,i),{status:`cancelled`};case`paused`:return f;case`failed`:return await J(d,i,f.error),{status:`rejected`,reason:f.error}}}function Kt(e){return{items:e}}async function K(e,t){e.status=`running`,e.startedAt=Date.now(),await t.persistFrame(e),await t.emitFrameStarted(e)}async function q(e,t,n){let r=Date.now(),i=e.startedAt===void 0?void 0:Math.max(0,r-e.startedAt);e.status=`completed`,e.output=n,e.completedAt=r,await t.persistFrame(e),await t.emitFrameCompleted(e,i)}async function J(e,t,n){let r=Date.now(),i=e.startedAt===void 0?void 0:Math.max(0,r-e.startedAt);e.status=`failed`,e.error=n,e.completedAt=r,await t.persistFrame(e),await t.emitFrameFailed(e,n,i)}async function Y(e,t){e.status=`skipped`,e.completedAt=Date.now(),await t.persistFrame(e)}async function X(e,t){e.status=`cancelled`,e.completedAt=Date.now(),await t.persistFrame(e)}function qt(e,t){return!!A(e,P(t))}async function Jt(e,t,n,r,i,a=[]){if(t.signal.aborted)return{status:`cancelled`};switch(e.type){case`sequence`:return r(e,t,n,i,a);case`station`:return st(e,t,n,i);case`delegate-agent`:return lt(e,t,n,i);case`delegate-role`:return ut(e,t,n,i);case`parallel`:return bt(e,t,n,r,i??``,a,e.mode??`all-settled`);case`gate`:return At(e,t,n,i??``);case`iterate`:return Rt(e,t,n,r,i??``,a);case`iterate-chain`:return Wt(e,t,n,r,i??``,a);default:return{status:`failed`,error:`Unknown node type: ${String(e.type)}`}}}const Yt=new Set([`completed`,`skipped`,`waiting`,`running`]);function Z(e){return e.type===`parallel`||e.type===`iterate`||e.type===`iterate-chain`}function Xt(e,t,n){return I(e.resumeFrames,t.id,{parentFrameId:n,...Z(t)?{statuses:Yt}:{}})}function Zt(e,t,n){if(n?.status===`completed`)return L(e,t.id,{status:`completed`,...n.output===void 0?{}:{output:n.output}});if(n?.status===`skipped`)return L(e,t.id,{status:`skipped`})}async function Qt(e,t,n,r,i,a,o){try{return{result:qt(e,i)}}catch(e){let i=e instanceof Error?e.message:String(e);return await J(r.createFrame({nodeId:n.id,nodeType:n.type,path:a,parentFrameId:o}),r,`'${t}' condition evaluation failed: ${i}`),{status:`failed`,error:`'${t}' condition evaluation failed for '${n.id}': ${i}`}}}async function $t(e,t,n,r,i,a){let o=a??t.createFrame({nodeId:e.id,nodeType:e.type,path:r,parentFrameId:i});if(t.signal.aborted)return await X(o,t),{updatedCtx:n,outcome:{status:`cancelled`}};a===void 0&&await K(o,t);let s;try{s=await Jt(e,t,n,Q,o.frameId,o.path)}catch(e){let r=e instanceof Error?e.message:String(e);return await J(o,t,r),{updatedCtx:n,outcome:{status:`failed`,error:r}}}switch(s.status){case`completed`:return await q(o,t,s.output),{updatedCtx:L(n,e.id,{status:`completed`,output:s.output})};case`skipped`:return await Y(o,t),{updatedCtx:L(n,e.id,{status:`skipped`})};case`cancelled`:return await X(o,t),{updatedCtx:n,outcome:{status:`cancelled`}};case`paused`:return{updatedCtx:n,outcome:s};case`failed`:return await J(o,t,s.error),{updatedCtx:n,outcome:{status:`failed`,error:s.error}}}}async function Q(e,t,n,r,i=[]){let a=n;for(let n of e.nodes){if(t.signal.aborted)return{status:`cancelled`};let e=Xt(t,n,r),o=Zt(a,n,e);if(o!==void 0){a=o;continue}if(n.when!==void 0){let e=await Qt(n.when,`when`,n,t,a,i,r);if(`status`in e)return e;if(!e.result){await Y(t.createFrame({nodeId:n.id,nodeType:n.type,path:i,parentFrameId:r}),t),a=L(a,n.id,{status:`skipped`});continue}}if(n.skip!==void 0){let e=await Qt(n.skip,`skip`,n,t,a,i,r);if(`status`in e)return e;if(e.result){await Y(t.createFrame({nodeId:n.id,nodeType:n.type,path:i,parentFrameId:r}),t),a=L(a,n.id,{status:`skipped`});continue}}let s=e?.status===`waiting`&&n.type===`gate`||e?.status===`running`&&Z(n)?e:void 0,{updatedCtx:c,outcome:l}=await $t(n,t,a,i,r,s);if(a=c,l!==void 0)return l}return{status:`completed`}}function en(e,t,n=[]){return{type:`makaio.workflow-worker.ready`,executionId:e,cancelSubject:t,adapters:n}}function tn(e){if(typeof e!=`object`||!e)return!1;let t=e;return t.type===`makaio.workflow-worker.ready`&&typeof t.executionId==`string`&&typeof t.cancelSubject==`string`&&Array.isArray(t.adapters)&&t.adapters.every(e=>typeof e==`string`)}async function nn(e,t,n,r){let i=await sn(e,t,n);return await e.request(M.setExecution,{execution:i}),n===`completed`?await e.emit(w.execution.completed,{executionId:t.executionId,workflowId:t.workflowId,totalDuration:0,completedAt:i.completedAt}):await e.emit(w.execution.cancelled,{executionId:t.executionId,workflowId:t.workflowId,reason:r,completedAt:i.completedAt}),n===`cancelled`?{executionId:t.executionId,workflowId:t.workflowId,status:`cancelled`,...r===void 0?{}:{reason:r}}:{executionId:t.executionId,workflowId:t.workflowId,status:`completed`}}function $(e,t){return t.status===`completed`?{executionId:e.executionId,workflowId:e.workflowId,status:`completed`,...t.artifact===void 0?{}:{artifact:t.artifact}}:t.status===`cancelled`?{executionId:e.executionId,workflowId:e.workflowId,status:`cancelled`,...t.reason===void 0?{}:{reason:t.reason}}:t.status===`paused`?{executionId:e.executionId,workflowId:e.workflowId,status:`paused`,pausedAtGateId:t.pausedAtGateId,pausedAtFrameId:t.pausedAtFrameId}:{executionId:e.executionId,workflowId:e.workflowId,status:`failed`,error:t.error}}function rn(e){let t,n=()=>{t=Ae({bus:e.bus,activeExecutions:e.activeExecutions,shellAbortControllers:e.shellAbortControllers,activeRunnerSteps:e.activeRunnerSteps,cancelTimeoutMs:Te.cancelTimeoutMs},e.executionId,v).catch(t=>(console.error(`[WorkflowOrchestrator] Failed to persist cancellation for ${e.executionId}:`,t),!1))};return e.signal.addEventListener(`abort`,n,{once:!0}),e.signal.aborted&&n(),async()=>(e.signal.removeEventListener(`abort`,n),t??!1)}async function an(e,t){let n=await e.requestOptional(M.getExecution,{executionId:t});return n.handled?n.data.execution?.startedAt??void 0:void 0}async function on(e,t){return{id:t.executionId,workflowId:t.workflowId,coordinatorSessionId:t.coordinatorSessionId,status:`running`,inputs:t.inputs,config:t.config??{},startedAt:await an(e,t.executionId)??Date.now(),triggerPayload:t.triggerPayload,scope:t.scope}}async function sn(e,t,n){let r=Date.now();return{id:t.executionId,workflowId:t.workflowId,coordinatorSessionId:t.coordinatorSessionId,status:n,inputs:t.inputs,config:t.config??{},startedAt:await an(e,t.executionId)??r,completedAt:r,triggerPayload:t.triggerPayload,scope:t.scope}}async function cn(e,t,n,r,i,a,o,s){let c=e.suspensionStrategy===`wait-in-process`?void 0:await ln(e.executionId,a,{required:!0}),l=await We({definition:t,execution:n,runContext:r,zodSchema:s?.artifact,bus:a}),u=new Le(e.executionId,e.workflowId,t,n,i,a,o,void 0,l,{context:e.context,env:e.env},{suspensionStrategy:e.suspensionStrategy,resumeFrames:c}),d=u.buildExpressionContext(),f=await Q(t.root,u,d);return f.status===`failed`?{status:`failed`,error:f.error}:f.status===`paused`?{status:`paused`,pausedAtGateId:f.pausedAtGateId,pausedAtFrameId:f.pausedAtFrameId}:f.status===`cancelled`||o.aborted?{status:`cancelled`,reason:v}:{status:`completed`,artifact:l?.current}}async function ln(e,t,n={}){try{let r=await t.requestOptional(M.listFrames,{executionId:e});if(!r.handled){if(n.required===!0)throw Error(`Frame storage handler is required to resume execution '${e}'.`);return}return r.data.frames.length===0?void 0:gt(r.data.frames)}catch(e){if(n.required===!0)throw e;return}}function un(e,t){return{executionId:e.executionId,workflowId:e.workflowId,source:e.source,...e.source.kind===`definition`?{definitionSnapshot:e.definition??t}:{},workerManifest:{packages:[]},inputs:e.inputs,config:e.config??{},scope:e.scope,triggerPayload:e.triggerPayload,...e.artifactRef===void 0?{}:{artifactRef:e.artifactRef},...e.executionHints===void 0?{}:{executionHints:e.executionHints},coordinatorSessionId:e.coordinatorSessionId,cancelSubject:e.cancelSubject,context:e.context,env:e.env,createdAt:Date.now(),suspensionStrategy:e.suspensionStrategy}}async function dn(e,t,n,r,i){n.status=`paused`,await e.request(M.setExecution,{execution:n}),await e.emit(w.execution.paused,{executionId:t.executionId,workflowId:t.workflowId,pausedAtGateId:r,pausedAtFrameId:i})}async function fn(e,t,n,r,i,a){n===`completed`?await e.emit(w.execution.completed,{executionId:t.executionId,workflowId:t.workflowId,totalDuration:i-r.startedAt,completedAt:i}):n===`cancelled`?await e.emit(w.execution.cancelled,{executionId:t.executionId,workflowId:t.workflowId,reason:v,completedAt:i}):await e.emit(w.execution.failed,{executionId:t.executionId,workflowId:t.workflowId,error:a??`Workflow execution failed`,completedAt:i})}async function pn(e){let{config:t,loaded:n,bus:r,signal:i}=e,{definition:a}=n;if(i.aborted)return nn(r,t,`cancelled`,v);if(a.root.nodes.length===0)return nn(r,t,`completed`);let o=await on(r,t);await r.request(M.setExecution,{execution:o});let s=new Map(n.runtimeHandlers),c=new Map,l=new Map,u=new Map,d=un(t,a);c.set(t.executionId,{execution:o,workflow:a,runContext:d,runtimeHandlers:s});let f=rn({signal:i,executionId:t.executionId,bus:r,activeExecutions:c,shellAbortControllers:l,activeRunnerSteps:u}),p={status:`completed`},m=!1;try{p=await cn(t,a,o,d,s,r,i,n.zodSchemas)}catch(e){p={status:`failed`,error:e instanceof Error?e.message:String(e)}}finally{m=await f(),c.clear()}if(m)return $(t,{status:`cancelled`,reason:v});if((i.aborted||o.status===`cancelled`)&&(p={status:`cancelled`,reason:v}),p.status===`paused`)return await dn(r,t,o,p.pausedAtGateId,p.pausedAtFrameId),$(t,p);let h=Date.now(),g=p.status===`failed`?p.error:void 0;return o.status=p.status,o.completedAt=h,o.error=g,await r.request(M.setExecution,{execution:o}),await fn(r,t,p.status,o,h,g),$(t,p)}function mn(e){if(typeof e!=`object`||!e)throw Error(`Invalid workflow module default export: expected an object with 'definition' and 'runtimeHandlers', got ${typeof e}.`);let t=e;if(!(t.runtimeHandlers instanceof Map))throw Error(`Invalid workflow module default export: 'runtimeHandlers' must be a Map instance.`);let n=y.safeParse(t.definition);if(!n.success)throw Error(`Invalid workflow module default export: 'definition' must satisfy WorkflowDefinitionSchema. `+n.error.message);let r=hn(t.zodSchemas)?t.zodSchemas:void 0;return{definition:n.data,runtimeHandlers:t.runtimeHandlers,...r===void 0?{}:{zodSchemas:r}}}function hn(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&`gates`in e}async function gn(e,t){let n=s(e);if(!n||n===`.`||n===`..`)throw Error(`Invalid workflow source filename: ${e}`);let r=c(ue(),`makaio-wf-${l(6).toString(`hex`)}`);await i(r,{recursive:!0});let u=c(r,n.endsWith(`.mjs`)?n:`${n}.mjs`);try{await o(u,t,`utf8`)}catch(e){throw await a(r,{recursive:!0,force:!0}).catch(()=>{}),e}return{tempDir:r,tempPath:u}}function _n(e){return typeof e==`object`&&e&&Array.isArray(e.workflows)?e.workflows.map(mn):[mn(e)]}async function vn(e){if(e.kind===`path`)return _n((await import(r(e.path).href)).default);let{tempDir:t,tempPath:n}=await gn(e.filename,e.source);try{return _n((await import(r(n).href)).default)}finally{await a(t,{recursive:!0,force:!0})}}async function yn(e){if(e.kind===`definition`)throw Error(`Definition-sourced workers are handled by the workflow executor, not the file loader. Received source: ${JSON.stringify(e)}`);let t=await vn(e);if(t.length!==1)throw Error(`loadWorkflowModule expects a single workflow export, but the module exported ${String(t.length)} workflows. Use loadWorkflowModules for bundle exports.`);return t[0]}async function bn(e){if(e.source.kind===`definition`){if(e.definition===void 0)throw Error(`Definition-sourced worker config for workflowId "${e.source.workflowId}" is missing the required 'definition' field. Ensure the executor populates WorkflowWorkerConfig.definition before dispatching.`);return{definition:e.definition,runtimeHandlers:new Map}}return yn(e.source)}function xn(e){let t=e.indexOf(`.`);if(t<=0||t===e.length-1)throw Error(`Invalid trigger subject: ${e}`);return{subject:e.slice(t+1),$meta:{namespace:e.slice(0,t),isRequest:!1,payload:{},local:!1,channel:!1}}}function Sn(e,t,n){return new Promise((r,i)=>{if(n.aborted){i(n.reason??Error(`Await-trigger aborted`));return}let a=[];function o(){for(let e of a)e();a.length=0}let s=()=>{o(),i(n.reason??Error(`Await-trigger aborted`))};n.addEventListener(`abort`,s,{once:!0}),a.push(()=>n.removeEventListener(`abort`,s));try{for(let n of t){let t=xn(n.subject),i=e.on(t,e=>{o(),r(e.payload)},n.filter?{filter:n.filter}:void 0);a.push(i)}}catch(e){o(),i(e)}})}async function Cn(e,t,n,r){let i=(t.definition.triggers??[]).filter(e=>e.type===`bus-event`);if(Object.keys(e.triggerPayload).length!==0||i.length===0)return e;let a=await Sn(n,i,r);return{...e,triggerPayload:a}}export{ve as A,j as C,be as D,he as E,ye as O,ge as S,_e as T,w as _,pn as a,fe as b,Q as c,Le as d,je as f,Te as g,Ee as h,vn as i,xe as k,Et as l,De as m,bn as n,en as o,Ae as p,yn as r,tn as s,Cn as t,We as u,we as v,me as w,pe as x,M as y};
@@ -1 +0,0 @@
1
- import{n as e}from"./window-registry-XjOExitT.mjs";import{o as t,t as n}from"./schema-introspection-A6FnQ1qg.mjs";import{n as r}from"./extension-namespace-BBgYOttA.mjs";import{z as i}from"zod";import a from"node:path";import{createBusNamespace as o}from"@makaio/framework/core";import{ProviderDefinitionSchema as s,versionSatisfies as c}from"@makaio/framework/contracts";import{ToastSubjects as l}from"@makaio/framework/contracts/toast";import{ExtensionWarningSchema as u,getExtensionWarningActionLabel as d}from"@makaio/framework/contracts/extension";import{TrayMenuSubjects as f}from"@makaio/framework/services/tray-menu";const p=i.object({name:i.string(),displayName:i.string()}),m=o(`kernel:boot`,{getState:{request:i.object({}),response:i.object({complete:i.boolean(),completedCount:i.number(),totalCount:i.number(),currentService:i.string().optional(),failedServices:i.array(i.string()),skippedServices:i.array(i.string()).default([]),totalDurationMs:i.number().optional()})},"service.starting":p,"service.ready":p.extend({durationMs:i.number().int().nonnegative()}),"service.failed":p.extend({errorMessage:i.string()}),"service.skipped":p.extend({reason:i.string()}),progress:i.object({completedCount:i.number(),totalCount:i.number(),currentService:i.string().optional()}),complete:i.object({totalDurationMs:i.number(),failedServices:i.array(i.string())})}),h=m.subjects;var g=class extends Error{reason;constructor(e){super(e),this.name=`ServiceSkipError`,this.reason=e}};function _(e){return{name:e.name,displayName:e.displayName}}var v=class{bus;state;cleanup;constructor(e,t){this.bus=e,this.state={complete:!1,completedCount:0,totalCount:t,failedServices:[],skippedServices:[],startedAt:Date.now()},this.cleanup=this.bus.on(h.getState,e=>{e.setResult({complete:this.state.complete,completedCount:this.state.completedCount,totalCount:this.state.totalCount,...this.state.currentService===void 0?{}:{currentService:this.state.currentService},failedServices:[...this.state.failedServices],skippedServices:[...this.state.skippedServices],...this.state.totalDurationMs===void 0?{}:{totalDurationMs:this.state.totalDurationMs}})})}dispose(){this.cleanup()}starting(e){let t=_(e);this.state.currentService=t.displayName,this.state.currentServiceStartedAt=Date.now(),this.bus.emit(h.service.starting,t).catch(e=>{console.warn(`[ExtensionCoordinator] boot.service.starting emit failed for "${t.name}":`,e)})}ready(e){let t=_(e);this.state.completedCount+=1;let n=this.state.currentServiceStartedAt===void 0?0:Math.max(0,Date.now()-this.state.currentServiceStartedAt);this.bus.emit(h.service.ready,{...t,durationMs:n}).catch(e=>{console.warn(`[ExtensionCoordinator] boot.service.ready emit failed for "${t.name}":`,e)}),this.emitProgress()}failed(e,t){let n=_(e);this.state.completedCount+=1,this.state.failedServices.push(n.name),this.bus.emit(h.service.failed,{...n,errorMessage:t}).catch(e=>{console.warn(`[ExtensionCoordinator] boot.service.failed emit failed for "${n.name}":`,e)}),this.emitProgress()}skipped(e,t){let n=_(e);this.state.completedCount+=1,this.state.skippedServices.push(n.name),this.bus.emit(h.service.skipped,{...n,reason:t}).catch(e=>{console.warn(`[ExtensionCoordinator] boot.service.skipped emit failed for "${n.name}":`,e)}),this.emitProgress()}complete(){this.state.complete=!0,delete this.state.currentService,delete this.state.currentServiceStartedAt,this.state.totalDurationMs=Date.now()-this.state.startedAt,this.bus.emit(h.complete,{totalDurationMs:this.state.totalDurationMs,failedServices:[...this.state.failedServices]}).catch(e=>{console.warn(`[ExtensionCoordinator] boot.complete emit failed:`,e)})}emitProgress(){this.bus.emit(h.progress,{completedCount:this.state.completedCount,totalCount:this.state.totalCount,...this.state.currentService===void 0?{}:{currentService:this.state.currentService}}).catch(e=>{console.warn(`[ExtensionCoordinator] boot.progress emit failed:`,e)})}};function ee(e){return{subject:`wiring.apply`,$meta:{namespace:`client:${e}`,isRequest:!0,local:!1,channel:!1,payload:{request:{},response:{}}}}}const y=`action`;function b(e,t){return`${e}:${t}`}function te(e,t,n){return e.on(l.interacted,r=>{let{toastId:i,actionId:a}=r.payload,o=b(i,a),s=t.get(o);s&&x(e,s,i,n).catch(e=>{console.error(`[ExtensionCoordinator] Warning action dispatch failed for toast "${i}":`,e)})})}async function x(e,t,n,r){switch(t.kind){case`configure-integration`:await C(e,t.clientId,n,r);break;case`open-url`:console.info(`[ExtensionCoordinator] Toast "${n}" open-url action not routable from runtime layer: ${t.url}`);break;case`run-command`:console.info(`[ExtensionCoordinator] Toast "${n}" run-command action not routable from runtime layer: ${t.command}`);break;case`install-extension`:console.info(`[ExtensionCoordinator] Toast "${n}" install-extension action not routable from runtime layer: ${t.extensionName}`);break;default:S(t)}}function S(e){throw Error(`[ExtensionCoordinator] Unsupported warning action: ${JSON.stringify(e)}`)}async function C(e,t,n,r){let i=ee(t),a=await e.requestOptional(i,{scope:`user`,makaioCommand:r});if(!a.handled){console.warn(`[ExtensionCoordinator] Toast "${n}" configure-integration: no wiring handler for client "${t}". Is the client package loaded?`);return}let{applied:o,skipped:s}=a.data;console.info(`[ExtensionCoordinator] Toast "${n}" configure-integration: wired client "${t}" — ${o} applied, ${s} skipped.`)}function w(e){return e.map(e=>({name:e.name,description:e.description,hasInteractive:!!e.interactive,subcommands:e.subcommands.map(e=>({name:e.name,description:e.description,args:n(e.schema)}))}))}async function T(e,t,n){let{command:r,subcommand:i,args:a}=e,o=t.find(e=>e.name===r);if(!o)return{exitCode:1,stdout:[],stderr:[`Unknown command: ${r}`]};let s=o.subcommands.find(e=>e.name===i);if(!s)return{exitCode:1,stdout:[],stderr:[`Unknown subcommand: ${i}`]};let c=s.schema.safeParse(a??{});if(!c.success)return{exitCode:1,stdout:[],stderr:[`Validation failed:`,...c.error.issues.map(e=>` ${e.path.join(`.`)||`(root)`}: ${e.message}`)]};if(o.beforeRun)try{let e=await o.beforeRun({subcommandName:i,args:c.data??{},bus:n});if(!e.proceed)return{exitCode:e.exitCode??1,stdout:[],stderr:[e.message]}}catch(e){return{exitCode:1,stdout:[],stderr:[`beforeRun hook failed: ${e instanceof Error?e.message:String(e)}`]}}let l=[],u=[],d={write:e=>l.push(e),error:e=>u.push(e)},f=0,p=new AbortController().signal;try{await s.handler({args:c.data,bus:n,output:d,signal:p,setExitCode:e=>{f=e}})}catch(e){f===0&&(f=1),u.push(e instanceof Error?e.message:String(e))}return{exitCode:f,stdout:l,stderr:u}}function E(e){let{pkg:t,state:n,error:r,enabled:i}=e;return{name:t.name,displayName:t.displayName,state:n,...t.surface===void 0?{}:{surface:t.surface},enabled:i,...t.browser===void 0?{}:{browser:t.browser},...r===void 0?{}:{error:r}}}function D(e){let n=[];return n.push(e.bus.on(r.list,t=>{t.setResult({extensions:e.list()})})),n.push(e.bus.on(r.get,t=>{let n=e.entries.get(t.payload.name);t.setResult({extension:n?E(n):null})})),n.push(e.bus.on(r.setEnabled,async t=>{let n=await e.handleSetEnabled(t.payload.name,t.payload.enabled);t.setResult({success:n})})),n.push(e.bus.on(r.contributions.catalog,t=>{let n=[],r=[];for(let[t,i]of e.entries)if(i.state===`active`){for(let e of i.pkg.providers??[])n.push({packageName:t,definition:s.parse(e)});for(let e of i.pkg.clients??[])r.push({packageName:t,definition:e})}t.setResult({providers:n,clients:r})})),n.push(e.bus.on(t.listContributions,t=>{t.setResult({contributions:w(e.cliContributions)})})),n.push(e.bus.on(t.execute,async t=>{t.setResult(await T(t.payload,e.cliContributions,e.bus))})),n.push(e.bus.on(r.warnings.list,t=>{let{extensionName:n}=t.payload;if(n!==void 0){let r=e.entries.get(n),i=r&&r.warnings.length>0?[{extensionName:n,warnings:[...r.warnings]}]:[];t.setResult({entries:i});return}let r=[];for(let[t,n]of e.entries)n.warnings.length>0&&r.push({extensionName:t,warnings:[...n.warnings]});t.setResult({entries:r})})),n}async function ne(e){for(let[t,n]of e.entries)n.state===`active`&&await k(e,t,n)}function re(e){if(e&&O(e))return[{id:y,label:d(e)}]}function O(e){return e.kind===`configure-integration`}function ie(e,t){let n=`${t}:`;for(let t of e.keys())t.startsWith(n)&&e.delete(t)}async function k(e,t,n){ie(e.warningActionMap,t);let r=n.warnings.filter(e=>e.severity===`degraded`);if(r.length!==0)for(let i=0;i<r.length;i++){let a=r[i];console.warn(`[${t}] ⚠ ${a.title}: ${a.message}`);let o=`${t}:${a.title}:${i}`,s=re(a.action);try{await e.bus.emit(l.show,{level:`warning`,title:a.title,message:`${n.pkg.displayName}: ${a.message}`,toastId:o,durationMs:null,...s&&{actions:s}}),a.action&&O(a.action)&&e.warningActionMap.set(b(o,y),a.action)}catch(e){console.warn(`[${t}] toast emission failed for warning "${a.title}":`,e)}}}function ae(e){return Object.freeze({extensionName:e})}function oe(e,t,n,r){if(!t)return;let i={...n??{},...r??{}};try{return t.parse(i)}catch(n){console.warn(`[ExtensionCoordinator] Config parse failed for "${e}", starting with schema defaults:`,n instanceof Error?n.message:n);try{return t.parse({})}catch{console.warn(`[ExtensionCoordinator] Fallback config parse also failed for "${e}" — config will be absent`);return}}}function A(e,t,n){let r;if(n.pkg.configSchema)try{r=e.loadConfig?.(t)}catch(e){console.error(`[ExtensionCoordinator] loadConfig threw for "${t}":`,e)}return oe(t,n.pkg.configSchema,n.configDefaults,r)}function j(e,t,n){if(!e.extensionContextBase)throw Error(`ExtensionCoordinator: extensionContextBase is required to start extensions with a create factory. Provide it via the constructor.`);return{...e.extensionContextBase,bus:e.bus,identity:t.identity,dataDir:a.join(e.extensionContextBase.makaioHome,t.identity.extensionName),getService:t=>e.getExtensionService(t.name),signal:e.signal,hasExtension:e.hasActiveExtension,...n===void 0?{}:{config:n}}}function M(e){return{adapters:!!e.adapters?.length,tools:!!e.tools,triggers:!!e.triggers,providers:!!e.providers?.length,clients:!!e.clients?.length,ui:!!e.ui,storage:!!e.storage,sessionEventActions:!!e.sessionEventActions}}function N(e,t,n){let i=t.state;t.state=n,e.emit(r.stateChanged,{name:t.pkg.name,displayName:t.pkg.displayName,from:i,to:n,...t.error===void 0?{}:{error:t.error},contributes:M(t.pkg)}).catch(e=>{console.error(`[ExtensionCoordinator] stateChanged emit failed for "${t.pkg.name}":`,e)})}async function P(e,t,n,r,i){i===`activated`?await F(e,t,n,r):await I(e,n)}async function F(e,t,n,r){let i=[];try{for(let a of e){if(a.filter&&!a.filter(r.pkg))continue;let e=j(t,r,A(t,n,r));await a.processActivated(n,r.pkg,e),i.push(a)}}catch(e){for(let e of i.reverse())if(e.processStopped)try{await e.processStopped(n)}catch(e){console.error(`[ExtensionCoordinator] Contribution processor rollback error for "${n}":`,e)}throw e}}async function I(e,t){for(let n of[...e].reverse())if(n.processStopped)try{await n.processStopped(t)}catch(e){console.error(`[ExtensionCoordinator] Contribution processor error (stopped) for "${t}":`,e)}}async function L(e,t,n){let i=e.entries.get(t);if(!i)return!1;let a=n?await R(e,t,i):await z(e,t,i),o=i.enabled===n;return!a&&!o||(await e.persistEnabled?.(t,n),!a)?!1:(e.bus.emit(r.enabledChanged,{name:t,enabled:n}).catch(e=>{console.error(`[ExtensionCoordinator] enabledChanged emit failed for "${t}":`,e)}),!0)}async function R(e,t,n){if(n.state!==`stopped`&&n.state!==`failed`&&n.state!==`skipped`)return!1;let{pkg:r}=n,i,a=(r.dependencies??[]).filter(t=>{if(t.optional)return!1;let n=e.entries.get(t.name);return!n||n.state!==`active`});if(a.length>0)return n.error=`Required dependencies not active: ${a.map(e=>e.name).join(`, `)}`,console.error(`[ExtensionCoordinator] Cannot re-enable "${t}":`,n.error),N(e.bus,n,`failed`),!1;n.enabled=!0,n.error=void 0,N(e.bus,n,`initializing`);let o=A(e,t,n);if(r.storage?.registerHandlers&&e.db!==void 0)try{let t=j(e,n,o),a=r.storage.registerHandlers(e.bus,e.db,t);typeof a==`function`&&(i=a,n.storageCleanup=a)}catch(r){return n.error=r instanceof Error?r.message:String(r),console.error(`[ExtensionCoordinator] Extension "${t}" storage re-registration failed:`,r),N(e.bus,n,`failed`),!1}if(r.create){let a;try{let t=j(e,n,o);a=await r.create(t),await a.init?.(),n.service=a}catch(r){return await B(t,a,i,n),r instanceof g?n.pkg.critical?(n.error=`Critical extension cannot skip startup: ${r.reason}`,console.error(`[ExtensionCoordinator] Extension "${t}" failed to re-initialize:`,n.error),N(e.bus,n,`failed`),!1):(n.error=r.reason,N(e.bus,n,`skipped`),!1):(n.error=r instanceof Error?r.message:String(r),console.error(`[ExtensionCoordinator] Extension "${t}" failed to re-initialize:`,r),N(e.bus,n,`failed`),!1)}}try{await P(e.contributionProcessors,e,t,n,`activated`)}catch(r){return await B(t,n.service,i,n),n.service=void 0,n.error=r instanceof Error?r.message:String(r),console.error(`[ExtensionCoordinator] Extension "${t}" contribution processing failed:`,r),N(e.bus,n,`failed`),!1}return N(e.bus,n,`active`),await e.runHealthCheck(t),await e.emitWarningsForEntry(t,n),!0}async function z(e,t,n){if(n.state!==`active`)return!1;let i=Array.from(e.entries.entries()).filter(([e,n])=>e===t||n.state!==`active`?!1:n.pkg.dependencies?.some(e=>!e.optional&&e.name===t)??!1).map(([e])=>e);if(i.length>0)return n.error=`Cannot disable "${t}" while active dependents remain: ${i.join(`, `)}`,console.error(`[ExtensionCoordinator] ${n.error}`),!1;if(n.enabled=!1,n.error=void 0,await P(e.contributionProcessors,e,t,n,`stopped`),n.service)try{await n.service.destroy?.()}catch(e){console.error(`[ExtensionCoordinator] Error during disable destroy of "${t}":`,e)}finally{n.service=void 0}if(n.storageCleanup)try{n.storageCleanup()}catch(e){console.error(`[ExtensionCoordinator] Storage cleanup error during disable of "${t}":`,e)}finally{n.storageCleanup=void 0}N(e.bus,n,`stopped`),n.warnings=[];try{await e.bus.emit(r.warnings.changed,{extensionName:t,warnings:[]})}catch(e){console.error(`[ExtensionCoordinator] warnings.changed emit failed for "${t}":`,e)}return!0}async function B(e,t,n,r){try{await t?.destroy?.()}catch(t){console.error(`[ExtensionCoordinator] Service cleanup error after failed enable of "${e}":`,t)}try{n?.()}catch(t){console.error(`[ExtensionCoordinator] Storage cleanup error after failed enable of "${e}":`,t)}finally{r.storageCleanup=void 0}}function V(e){let t=new Map;for(let n of e)t.has(n.name)&&(console.info(`[ExtensionCoordinator] Extension "${n.name}" overrides an earlier registration`),t.delete(n.name)),t.set(n.name,n);return[...t.values()]}function H(e,t,n){let r=new Set(e.map(e=>e.name)),i=e.filter(e=>U(e,t,n)),a=new Map(i.map(e=>[e.name,e])),o=new Set(a.keys()),s=!0;for(;s;){s=!1;for(let e of o)(a.get(e).dependencies??[]).some(e=>!e.optional&&r.has(e.name)&&!o.has(e.name))&&(o.delete(e),s=!0)}return i.filter(e=>o.has(e.name))}function U(e,t,n){if(!G(e,t))return!1;let r=e.requires;return!r||r.length===0||!n?!0:r.every(e=>{switch(e.type){case`host`:return n.hosts.has(e.id);case`capability`:return n.capabilities.has(e.id)?e.version===void 0?!0:W(n,e.id,e.version):!1}})}function W(e,t,n){let r=e.capabilityVersions?.get(t);return r!==void 0&&c(r,n)}function G(e,t){return e.surface===void 0||e.surface===`any`||e.surface===t}function K(e){let t=q(e);return se(e,t,new Map(e.map(e=>[e.name,e]))),ue(t,le(e,t))}function q(e){let t=new Set;for(let n of e){if(t.has(n.name))throw Error(`ExtensionCoordinator: duplicate package name detected: "${n.name}"`);t.add(n.name)}return t}function se(e,t,n){for(let r of e)ce(r,t,n)}function ce(e,t,n){let r=e.dependencies??[],i=r.filter(e=>!e.optional&&!t.has(e.name));if(i.length>0)throw Error(`ExtensionCoordinator: package "${e.name}" declares missing dependencies: ${i.map(e=>e.name).join(`, `)}`);for(let t of r){let r=n.get(t.name);if(r===void 0)continue;let i=r.version;if(!c(i,t.version))throw Error(`ExtensionCoordinator: package "${e.name}" dependency "${t.name}" version ${i} does not satisfy ${t.version}`)}}function le(e,t){let n=new Map;for(let r of e){let e=(r.dependencies??[]).filter(e=>t.has(e.name)).map(e=>e.name);n.set(r.name,new Set(e))}return n}function ue(e,t){let n=[];for(let[e,r]of t)r.size===0&&n.push(e);let r=[],i=new Set;for(;n.length>0;){let e=n.shift();if(!i.has(e)){i.add(e),r.push(e);for(let[r,a]of t)a.has(e)&&(a.delete(e),a.size===0&&!i.has(r)&&n.push(r))}}if(r.length!==e.size){let t=[...e].filter(e=>!i.has(e));throw Error(`ExtensionCoordinator: circular dependency detected among: ${t.join(`, `)}`)}return r}async function de(e){if(!e.runMigrations)return;let t=[];for(let n of e.loadOrder){let r=e.entries.get(n);if(!r)throw Error(`Extension "${n}" is in loadOrder but missing from entries`);let i=r.pkg.storage?.migrations;if(!i)continue;let a=fe(n,r.pkg,i);t.push({name:n,migrationsPath:a,migrationSourceId:r.pkg.storage?.migrationSourceId??a})}t.length!==0&&await e.runMigrations(t)}function fe(e,t,n){if(a.isAbsolute(n))return n;let r=t.storage?.packageRoot;if(!r)throw Error(`Extension "${e}" declares relative storage.migrations "${n}" without storage.packageRoot`);let i=a.resolve(r),o=a.resolve(i,n),s=a.relative(i,o);if(s.startsWith(`..`)||a.isAbsolute(s))throw Error(`Extension "${e}" declares storage.migrations "${n}" outside storage.packageRoot`);return o}async function J(e,t){let n=e.entries.get(t);if(!n?.service||n.state!==`active`)return;let{checkHealth:i}=n.service;if(!i)return;let a;try{let e=await i.call(n.service),r=u.array().safeParse(e);r.success?a=r.data:(console.error(`[ExtensionCoordinator] checkHealth for "${t}" returned invalid data:`,r.error),a=[])}catch(e){console.error(`[ExtensionCoordinator] checkHealth threw for "${t}":`,e),a=[]}n.warnings=a;try{await e.bus.emit(r.warnings.changed,{extensionName:t,warnings:[...a]})}catch(e){console.error(`[ExtensionCoordinator] warnings.changed emit failed for "${t}":`,e)}}function pe(e,t){if(t.windows)for(let n of t.windows)e.windowRegistry.register(t.name,t.displayName,n);if(t.tray&&e.trayEntries.push({...t.tray,packageName:t.name}),t.cli){let n=t.cli;`subcommands`in n&&e.cliContributions.push(n)}}function me(e){return Array.from(e.values()).filter(e=>e.enabled).map(e=>e.pkg).filter(e=>!!e.http)}async function he(e){let t=[...e.loadOrder].reverse();for(let n of t){let t=e.entries.get(n);if(t){if(t.state===`active`&&await P(e.contributionProcessors,e.contextHost,n,t,`stopped`),t.service)try{await t.service.destroy?.()}catch(e){console.error(`[ExtensionCoordinator] Error during shutdown of "${n}":`,e)}finally{t.service=void 0}if(t.storageCleanup)try{t.storageCleanup()}catch(e){console.error(`[ExtensionCoordinator] Storage cleanup error for "${n}":`,e)}finally{t.storageCleanup=void 0}t.state===`active`&&N(e.contextHost.bus,t,`stopped`)}}}async function ge(e,t){if(!t.tray)return;let n=_e(t);await e.request(f.register,{entry:n})}function _e(e){let t=e.tray;if(!t)throw Error(`[tray-menu-entry-bridge] extension "${e.name}" does not declare a tray entry`);return{packageName:e.name,entryId:t.opensWindow??t.action??`default`,label:t.label,section:t.section??`views`,priority:50,enabled:!0,metadata:t.opensWindow?{registrationId:`${e.name}:${t.opensWindow}`}:t.action?{action:t.action}:void 0}}async function Y(e,t,n){if(!n.enabled){N(e.bus,n,`skipped`),e.bootProgress.skipped(n.pkg,`disabled`);return}let r=(n.pkg.dependencies??[]).filter(t=>t.optional?!1:e.entries.get(t.name)?.state!==`active`);if(r.length>0){let i=`Required dependencies not active: ${r.map(e=>e.name).join(`, `)}`;if(Q(e,t,n,i),n.pkg.critical)throw Error(`Critical package "${t}" failed: ${i}`);return}e.bootProgress.starting(n.pkg),N(e.bus,n,`initializing`);let i=A(e.contextHost,t,n);if(be(e,t,n,i)){if(!n.pkg.create){await ve(e,t,n);return}await ye(e,t,n,i)}}async function ve(e,t,n){try{await P(e.contributionProcessors,e.contextHost,t,n,`activated`)}catch(r){if(Z(t,n),X(e,t,n,r))return;if(Q(e,t,n,r instanceof Error?r.message:String(r)),n.pkg.critical)throw r;return}N(e.bus,n,`active`),e.bootProgress.ready(n.pkg),await $(e.bus,t,n)}async function ye(e,t,n,r){let i;try{let a=j(e.contextHost,n,r);i=await n.pkg.create(a),await i.init?.(),n.service=i,await P(e.contributionProcessors,e.contextHost,t,n,`activated`),N(e.bus,n,`active`),e.bootProgress.ready(n.pkg),await $(e.bus,t,n)}catch(r){try{await i?.destroy?.()}catch(e){console.error(`[ExtensionCoordinator] Service cleanup error after failed start of "${t}":`,e)}if(n.service=void 0,Z(t,n),X(e,t,n,r))return;if(Q(e,t,n,r instanceof Error?r.message:String(r)),n.pkg.critical)throw r}}function X(e,t,n,r){if(!(r instanceof g))return!1;if(n.pkg.critical){let i=`Critical package cannot skip startup: ${r.reason}`;throw Q(e,t,n,i),Error(`Critical package "${t}" failed: ${i}`,{cause:r})}return n.error=r.reason,console.info(`[ExtensionCoordinator] Package "${t}" skipped: ${r.reason}`),N(e.bus,n,`skipped`),e.bootProgress.skipped(n.pkg,r.reason),!0}function be(e,t,n,r){if(!n.pkg.storage?.registerHandlers||e.db===void 0)return!0;try{let t=j(e.contextHost,n,r),i=n.pkg.storage.registerHandlers(e.bus,e.db,t);return i&&(n.storageCleanup=i),!0}catch(r){let i=r instanceof Error?r.message:String(r);if(console.error(`[ExtensionCoordinator] Package "${t}" storage registration failed:`,r),Q(e,t,n,i),n.pkg.critical)throw r;return!1}}function Z(e,t){if(t.storageCleanup)try{t.storageCleanup()}catch(t){console.error(`[ExtensionCoordinator] Storage cleanup error after failed start of "${e}":`,t)}finally{t.storageCleanup=void 0}}function Q(e,t,n,r){n.error=r,console.error(`[ExtensionCoordinator] Package "${t}" failed:`,r),N(e.bus,n,`failed`),e.bootProgress.failed(n.pkg,r)}async function $(e,t,n){try{await ge(e,n.pkg)}catch(e){console.warn(`[ExtensionCoordinator] Failed to register tray entry for ${t}:`,e)}}var xe=class{bus;surface;db;extensionContextBase;runtimeEnvironment;shutdownController=new AbortController;entries=new Map;loadOrder=[];loaded=!1;started=!1;rpcCleanups=[];contributionProcessors=[];warningActionMap=new Map;windowRegistry=new e;_trayEntries=[];_cliContributions=[];persistEnabled;loadEnabled;loadConfig;runMigrations;constructor(e,t={}){this.bus=e,this.surface=t.surface??`headless`,this.db=t.db,this.extensionContextBase=t.extensionContextBase,this.runtimeEnvironment=t.runtimeEnvironment,this.persistEnabled=t.persistEnabled,this.loadEnabled=t.loadEnabled,this.loadConfig=t.loadConfig,this.runMigrations=t.runMigrations,this.rpcCleanups.push(te(this.bus,this.warningActionMap,t.launcherCommand??`makaio`))}get trayEntries(){return this._trayEntries.map(e=>({...e}))}get cliContributions(){return this._cliContributions}extensionsWithHttp(){return me(this.entries)}load(e,t){if(this.loaded)throw Error(`ExtensionCoordinator.load() called twice. The coordinator is single-use; create a new instance if needed.`);let n=V(H(e,this.surface,this.runtimeEnvironment));this.loadOrder=K(n);for(let e of this.loadOrder){let r=n.find(t=>t.name===e),i={pkg:r,identity:ae(r.name),state:`discovered`,enabled:this.loadEnabled?.(e)!==!1,warnings:[]};if(t){let n=t.get(e);n&&(i.configDefaults=n)}this.entries.set(e,i),r.namespaces&&this.bus.registerNamespaces(r.namespaces),pe({windowRegistry:this.windowRegistry,trayEntries:this._trayEntries,cliContributions:this._cliContributions},r)}this.rpcCleanups.push(...D({bus:this.bus,entries:this.entries,cliContributions:this._cliContributions,list:()=>this.list(),handleSetEnabled:(e,t)=>this.handleSetEnabled(e,t)})),this.loaded=!0}async startAll(){if(!this.loaded)throw Error(`ExtensionCoordinator.startAll() called before load(). Call load() first.`);if(this.started)throw Error(`ExtensionCoordinator.startAll() called twice. The coordinator is single-use; create a new instance if needed.`);this.started=!0;let e=new v(this.bus,this.loadOrder.length);this.rpcCleanups.push(()=>e.dispose());try{await de({loadOrder:this.loadOrder,entries:this.entries,runMigrations:this.runMigrations});for(let t of this.loadOrder){let n=this.entries.get(t);n&&await Y({bus:this.bus,db:this.db,entries:this.entries,contributionProcessors:this.contributionProcessors,contextHost:this.createExtensionContextHost(),bootProgress:e},t,n)}let t=this.createExtensionHealthHost();await Promise.all(this.loadOrder.map(e=>this.entries.get(e)?.state===`active`?J(t,e):void 0)),await ne({bus:this.bus,entries:this.entries,warningActionMap:this.warningActionMap})}finally{e.complete()}}async shutdown(){this.shutdownController.abort();for(let e of this.rpcCleanups)e();this.rpcCleanups=[],this.warningActionMap.clear(),await he({entries:this.entries,loadOrder:this.loadOrder,contributionProcessors:this.contributionProcessors,contextHost:this.createExtensionContextHost()})}list(){return[...this.entries.values()].map(e=>E(e))}getExtensionService(e){let t=typeof e==`string`?e:e.name;return this.entries.get(t)?.service}getExtension(e){return this.entries.get(e)?.pkg}forEachActiveExtension(e){let t=this.createExtensionContextHost();for(let n of this.loadOrder){let r=this.entries.get(n);if(!r||r.state!==`active`)continue;let i=j(t,r,A(t,n,r));e(n,r.pkg,i)}}forExtension(e,t){let n=this.entries.get(e);if(!n||n.state!==`active`)return;let r=this.createExtensionContextHost(),i=j(r,n,A(r,e,n));t(e,n.pkg,i)}registerContributionProcessor(e){return this.contributionProcessors.push(e),()=>{let t=this.contributionProcessors.indexOf(e);t>=0&&this.contributionProcessors.splice(t,1)}}async handleSetEnabled(e,t){return L({bus:this.bus,db:this.db,entries:this.entries,extensionContextBase:this.extensionContextBase,loadConfig:this.loadConfig,signal:this.shutdownController.signal,hasActiveExtension:e=>this.hasActiveExtension(e),persistEnabled:this.persistEnabled,contributionProcessors:this.contributionProcessors,getExtensionService:e=>this.getExtensionService(e),runHealthCheck:e=>J(this.createExtensionHealthHost(),e),emitWarningsForEntry:(e,t)=>k({bus:this.bus,entries:this.entries,warningActionMap:this.warningActionMap},e,t)},e,t)}createExtensionContextHost(){return{bus:this.bus,extensionContextBase:this.extensionContextBase,loadConfig:this.loadConfig,signal:this.shutdownController.signal,hasActiveExtension:e=>this.hasActiveExtension(e),getExtensionService:e=>this.getExtensionService(e)}}createExtensionHealthHost(){return{bus:this.bus,entries:this.entries}}hasActiveExtension(e){return this.entries.get(e)?.state===`active`}};export{m as a,g as i,V as n,h as o,H as r,xe as t};
@@ -1 +0,0 @@
1
- import{t as e}from"./schemas-BCIuTWRl2.mjs";import{z as t}from"zod";import{createBusNamespace as n}from"@makaio/framework/core";const r=n(`kernel:cli`,e),i=r.subjects;function a(e){let t=e.meta();if(`unwrap`in e&&typeof e.unwrap==`function`){let n=a(e.unwrap());return t?{...n??{},...t}:n}return t}function o(e){return e instanceof t.ZodBoolean?!0:`unwrap`in e&&typeof e.unwrap==`function`?o(e.unwrap()):!1}function s(e){return e instanceof t.ZodNumber?!0:`unwrap`in e&&typeof e.unwrap==`function`?s(e.unwrap()):!1}function c(e){let t=[];for(let[n,r]of Object.entries(e.shape)){let e=r,i=a(e),o=l(e);t.push({name:n,description:i?.description??``,...!e.isOptional()&&{required:!0},...i?.positional&&{positional:!0},...i?.short&&{short:i.short},...o!==`string`&&{type:o}})}return t}function l(e){return o(e)?`boolean`:u(e)?`number`:`string`}function u(e){return e instanceof t.ZodNumber?!0:`unwrap`in e&&typeof e.unwrap==`function`?u(e.unwrap()):!1}export{r as a,s as i,a as n,i as o,o as r,c as t};
@@ -1 +0,0 @@
1
- import{SessionStorageSubjects as e}from"./services/session/storage/namespace.mjs";import{F as t}from"./handlers-Bl2Af8zt.mjs";import"./session-DOGx_Qrm2.mjs";import{AgentSubjects as n,ApprovalSubjects as r,HarnessSubjects as i,computeMetaTags as a}from"@makaio/framework/contracts";import{BaseService as o}from"@makaio/framework/service-base";import{extractToolFilePath as s}from"@makaio/framework/tools";const c={"full-access":0,"always-ask":1,reject:2};function l(){return`apr_${crypto.randomUUID()}`}function u(e){switch(e){case`allow`:return`full-access`;case`deny`:return`reject`;case`ask`:return`always-ask`}}function d(e){if(!e?.length)return`neutral`;let t=a(e);return t.includes(`destructive`)?`destructive`:t.includes(`read-only`)?`safe`:`neutral`}function f(e,t){if(e)return t&&e.toolApprovalOverrides?.[t]!==void 0?e.toolApprovalOverrides[t]:e.approvalPolicy}function p(e,t,n,r){let i=r[t];if(!i?.length)return e;let a=e;for(let e of i){let t=n[e];t&&c[t]>c[a]&&(a=t)}return a}function m(e,t,n){return n.handled?n.data.allowedDirectories??void 0:t?[]:void 0}function h(e,t,n){if(!n||!e?.cwd)return{};let r;return(e.personaId||e.profileId)&&t&&(r=m(e.personaId,e.profileId,t)),{cwd:e.cwd,...r&&{allowedDirectories:r}}}function g(e,t,n){if(!(!e&&!t))return!n||!n.handled?{policy:`always-ask`}:{policy:u(n.data.action),...n.data.personaName&&{personaName:n.data.personaName},...n.data.profileName&&{profileName:n.data.profileName}}}function _(e,t){let n=t.harness?.toolCapabilityMap&&e.toolName?t.harness.toolCapabilityMap[e.toolName]:void 0;return{requestId:l(),toolCallId:e.toolCallId,toolName:e.toolName,args:e.args,agentId:e.agentId,sessionId:e.sessionId,adapterName:t.resolvedAdapterName,...t.personaName&&{personaName:t.personaName},...t.profileName&&{profileName:t.profileName},capabilities:n,riskLevel:d(n),reasoning:e.reasoning,createdAt:Date.now()}}var v=class extends o{logger=console;options;constructor(e,t={}){super(e),this.options=t}async onInit(){this.registerHandler(n.toolApprove,async e=>{let t=await this.getAgentMetadata(e.payload.agentId,e.payload.sessionId),n=(t?.personaId||t?.profileId)&&e.payload.toolName?await this.fetchRawEnrichedPolicy(t?.personaId,t?.profileId,e.payload.toolName):void 0,r=h(t,n,this.options.fileAccessRuleProvider),i=await this.checkFileAccessDenyReason(e.payload,r);if(i){e.setResult({action:`deny`,message:i,shouldAbort:!1});return}let a=await this.resolveSessionOverride(e.payload.sessionId);if(a===`full-access`){e.setResult({action:`allow`});return}if(a===`reject`){e.setResult({action:`deny`,message:`Tool use rejected by session approval policy override`,shouldAbort:!1});return}let o=await this.resolvePolicyWithContext({adapterName:e.payload.adapterName,toolName:e.payload.toolName},t,n);switch(a===`always-ask`?`always-ask`:o.policy){case`full-access`:e.setResult({action:`allow`});return;case`reject`:e.setResult({action:`deny`,message:`Tool use rejected by approval policy`,shouldAbort:!1});return;case`always-ask`:await this.dispatchAlwaysAskApproval(e.payload,e.setResult.bind(e),o);return}})}async dispatchAlwaysAskApproval(e,t,i){let a=_(e,i),o=new AbortController,s=this.bus.on(n.session.closed,()=>{o.abort()},{filter:{agentId:a.agentId,adapterSessionId:e.adapterSessionId}});try{let e=await this.bus.requestOptional(r.request,a,{timeout:0,signal:o.signal});e.handled&&e.data.action===`allow`?t({action:`allow`,...e.data.updatedInput&&{updatedInput:e.data.updatedInput}}):t({action:`deny`,message:e.handled&&e.data.action===`deny`?e.data.message??`User denied tool execution`:`No approval handler available`,shouldAbort:!1})}catch{t({action:`deny`,message:o.signal.aborted?`Approval cancelled — agent session closed`:`Tool approval request failed`,shouldAbort:!1})}finally{s()}}async checkFileAccessDenyReason(e,t){if(!this.options.fileAccessRuleProvider||!t.cwd)return;let n=s(e.toolName,e.args,t.cwd);if(n)try{return(await this.options.fileAccessRuleProvider(t.cwd,t.allowedDirectories)).isDenied(n)?`Access denied: '${n}' is restricted by .makaioignore rules`:void 0}catch{return`Access denied: file access rules could not be evaluated`}}async fetchRawEnrichedPolicy(e,t,n){try{return await this.bus.requestOptional(r.resolveEnrichedPolicy,{toolName:n,personaId:e,profileId:t})}catch(r){return this.logger.error(`[ToolApprovalService] approval.resolveEnrichedPolicy failed; falling back to fail-closed`,{toolName:n,personaId:e,profileId:t,error:r}),{handled:!1}}}async resolvePolicyWithContext(e,t,n){let r=t?.adapterName??e.adapterName,i=g(t?.personaId,t?.profileId,n),a=await this.resolveHarnessPolicy(r,t?.harnessId,t?.clientId),o=f(a,e.toolName),s=i?.policy??o??`always-ask`,c=s;return a?.capabilityOverrides&&a.toolCapabilityMap&&e.toolName&&(c=p(s,e.toolName,a.capabilityOverrides,a.toolCapabilityMap)),{policy:c,harness:a,agent:t,resolvedAdapterName:r,...i?.personaName&&{personaName:i.personaName},...i?.profileName&&{profileName:i.profileName}}}async getAgentMetadata(e,n){try{if(n){let{agents:r}=await this.bus.request(t.listBySession,{sessionId:n});return r.find(t=>t.agentId===e)??null}let r=await this.bus.requestOptional(t.get,{agentId:e});return r.handled?r.data.agent:null}catch{return null}}async resolveSessionOverride(t){if(t)try{let n=await this.bus.requestOptional(e.get,{sessionId:t});return n.handled?n.data.session?.approvalPolicyOverride??void 0:void 0}catch{return}}async resolveHarnessPolicy(e,t,n){try{let r=await this.bus.request(i.resolve,{adapterName:e,...t&&{profileHarnessId:t},...n&&{clientId:n}});return{approvalPolicy:r.approvalPolicy,capabilityOverrides:r.capabilityOverrides,toolCapabilityMap:r.toolCapabilityMap,toolApprovalOverrides:r.toolApprovalOverrides}}catch{return}}};export{v as t};
@@ -1 +0,0 @@
1
- import{SessionStorageSubjects as e}from"./services/session/storage/namespace.mjs";import{N as t}from"./handlers-Bl2Af8zt.mjs";import{D as n,G as r,H as i,I as a,P as o,V as s,_ as c,a as l,i as u,n as d,r as f,s as ee,u as te,x as ne}from"./session-DOGx_Qrm2.mjs";import{n as p}from"./namespace-BGGiHXkz.mjs";import{t as re}from"./capability-service-C2RapAHW.mjs";import"./services/adapter-subsystem/index.mjs";import{i as ie,s as ae}from"./model-registry-DdZrE4sa.mjs";import{t as oe}from"./tool-approval-service-DRe1lqy-.mjs";import{t as se}from"./tray-menu-service-CsaXURTf.mjs";import{harnessDefinitions as ce}from"./services/harness/storage/schema.mjs";import{n as m}from"./namespace-Yna5-Pws.mjs";import{n as le}from"./package-DKVlsMP3.mjs";import{t as ue}from"./filesystem-service-B9RbT-n-.mjs";import{z as h}from"zod";import{createHash as de}from"node:crypto";import{MakaioError as fe,createMakaioContext as pe}from"@makaio/framework/core";import{MakaioBus as g}from"@makaio/framework/bus";import{AdapterSubjects as me,ApprovalPolicySchema as _,ArtifactSubjects as v,CanonicalModelSubjects as he,DEFAULT_HARNESSES as ge,HarnessDefinitionCreateSchema as _e,HarnessSubjects as y,JsonValueSchema as ve,ToolCapabilitySchema as ye,ToolSubjects as b,TransitionRuleDefinitionSchema as be,WorkflowBlocksSubjects as xe,WorkflowSubjects as Se,dep as x,extensionToken as S,validateToolAdapterIdentity as Ce,zodSchemaToJsonRecord as C}from"@makaio/framework/contracts";import{BaseService as w}from"@makaio/framework/service-base";import{eq as T}from"drizzle-orm";import{registerDrizzleHandlers as E}from"@makaio/framework/storage/drizzle";import{slugifyProviderConfigName as D}from"@makaio/framework/contracts/config";import{ClientAccountIdentifierSchema as we,ClientSessionAccountObserveSchema as Te,ClientSubjects as O}from"@makaio/framework/contracts/client";import{FacetSubjects as k}from"@makaio/framework/contracts/facet";import{MaterializationSubjects as A}from"@makaio/framework/contracts/materialization";import{FILE_ACCESS_RULES_KEY as Ee,FILE_ACCESS_RULES_KEY as De,ToolErrorCodes as j,errorToToolResult as Oe,extractToolFilePath as ke,toolError as M,toolSuccess as Ae}from"@makaio/framework/tools";import{ConditionSchema as je,evaluate as Me}from"@makaio/framework/rules";import{evaluateSync as Ne}from"@makaio/framework/expression";import{createDrizzleCrudHandlers as Pe,createDrizzleListHandler as Fe}from"@makaio/framework/storage/handlers";import{GitService as Ie}from"@makaio/framework/git";const Le=[{type:`supersedes`,symmetry:`asymmetric`},{type:`contradicts`,symmetry:`symmetric`},{type:`derives_from`,symmetry:`asymmetric`},{type:`responds_to`,symmetry:`asymmetric`},{type:`contains`,symmetry:`asymmetric`},{type:`refines`,symmetry:`asymmetric`},{type:`scopes`,symmetry:`asymmetric`},{type:`references`,symmetry:`asymmetric`},{type:`evidenced_by`,symmetry:`asymmetric`}],N={extension:0,"factory-repo":1,"target-repo":2},P={source:`extension`,ownerKey:`extension:bus`};function F(e){return`${e.source}:${e.ownerKey}`}function Re(e,t){return e.source===t.source&&e.ownerKey===t.ownerKey}function I(e){return structuredClone(e)}function L(e,t){return`${e}@${t}`}var R=class extends w{kinds=new Map;kindContributions=new Map;nextKindContributionOrder=0;relationTypes=new Map;constructor(e){super(e)}async onInit(){for(let e of Le)this.relationTypes.set(e.type,e);this.registerHandler(v.kind.register,e=>{this.registerKind(e.payload),e.setResult({registered:!0})}),this.registerHandler(v.kind.list,e=>{let{kind:t}=e.payload,n=[...this.kinds.values()].filter(e=>!t||e.kind===t).map(I);e.setResult({kinds:n})}),this.registerHandler(v[`relation-type`].register,e=>{this.storeRelationType(e.payload),e.setResult({registered:!0})}),this.registerHandler(v[`relation-type`].list,e=>{let{type:t}=e.payload,n=[...this.relationTypes.values()].filter(e=>!t||e.type===t).map(I);e.setResult({relationTypes:n})})}compareKindContributions(e,t){let n=N[e.owner.source]-N[t.owner.source];return n===0?e.owner.source===`extension`?t.order-e.order:e.order-t.order:n}findSameTierRepoConflict(e,t,n){return[...e.values()].find(e=>!Re(e.owner,t)&&e.owner.source===t.source&&t.source!==`extension`&&e.order<=n)}recomputeKindWinner(e){let t=this.kindContributions.get(e),n=this.kinds.get(e);if(t===void 0||t.size===0){this.kindContributions.delete(e),this.kinds.delete(e),this.emitKindChangedFromKey(e,n);return}let r;for(let e of t.values())(r===void 0||this.compareKindContributions(e,r)<0)&&(r=e);let i=r;this.kinds.set(e,I(i.registration)),JSON.stringify(n)!==JSON.stringify(i.registration)&&this.bus.emit(v.kind.changed,{kind:i.registration.kind,schemaVersion:i.registration.schemaVersion})}emitKindChangedFromKey(e,t){t!==void 0&&this.bus.emit(v.kind.changed,{kind:t.kind,schemaVersion:t.schemaVersion})}registerKind(e,t=P){let n=L(e.kind,e.schemaVersion),r=this.kindContributions.get(n)??new Map,i=F(t),a=r.get(i),o=t.source===`extension`?this.nextKindContributionOrder:a?.order??this.nextKindContributionOrder,s=this.findSameTierRepoConflict(r,t,o);if(s!==void 0){console.warn(`[ArtifactSchemaRegistry] Artifact kind '${n}' is already registered by '${s.owner.ownerKey}' at the same priority; keeping the existing owner.`);return}r.set(i,{owner:t,registration:I(e),order:t.source===`extension`||a===void 0?this.nextKindContributionOrder++:a.order}),this.kindContributions.set(n,r),this.recomputeKindWinner(n)}deregisterKind(e,t,n=P){let r=L(e,t),i=this.kindContributions.get(r);i!==void 0&&(i.delete(F(n)),this.recomputeKindWinner(r))}replaceKindRegistrationsForOwner(e,t){let n=new Set,r=F(e),i=new Map;for(let[e,t]of this.kindContributions.entries()){let a=t.get(r);a!==void 0&&(i.set(e,a.order),t.delete(r),n.add(e))}for(let a of t){let t=L(a.kind,a.schemaVersion),o=this.kindContributions.get(t)??new Map,s=e.source===`extension`?void 0:i.get(t),c=s??this.nextKindContributionOrder,l=this.findSameTierRepoConflict(o,e,c);if(l!==void 0){console.warn(`[ArtifactSchemaRegistry] Artifact kind '${t}' is already registered by '${l.owner.ownerKey}' at the same priority; keeping the existing owner.`);continue}o.set(r,{owner:e,registration:I(a),order:s??this.nextKindContributionOrder++}),this.kindContributions.set(t,o),n.add(t)}for(let e of n)this.recomputeKindWinner(e)}storeRelationType(e){let t=this.relationTypes.get(e.type);if(t){if(t.symmetry!==e.symmetry)throw Error(`Relation type '${e.type}' is already registered with different symmetry (existing: '${t.symmetry}', new: '${e.symmetry}')`);return}this.relationTypes.set(e.type,I(e))}getKind(e,t){let n=this.kinds.get(L(e,t));return n?I(n):void 0}getRelationType(e){let t=this.relationTypes.get(e);return t?I(t):void 0}onDestroy(){this.kinds.clear(),this.kindContributions.clear(),this.relationTypes.clear(),this.nextKindContributionOrder=0}},z=class extends Error{reason;hookId;constructor(e,t){super(`Artifact write rejected by hook '${t}': ${e}`),this.reason=e,this.hookId=t,this.name=`ArtifactLifecycleHookRejectedError`}};function B(e,t){return e?!(e.kind!==void 0&&e.kind!==`*`&&e.kind!==t.kind||e.schemaVersion!==void 0&&e.schemaVersion!==t.schemaVersion):!0}function V(e){return e.priority??0}function ze(e,t,n){return e.filter(e=>e.event===t&&B(e.filter,n)).sort((e,t)=>V(t)-V(e))}function Be(e,t,n){return e.filter(e=>e.event===t&&B(e.filter,n)).sort((e,t)=>V(t)-V(e))}function Ve(e,t){return{...e,...`data`in t?{data:t.data}:{},...`relations`in t?{relations:t.relations}:{},...`confidence`in t?{confidence:t.confidence}:{},...`representations`in t?{representations:t.representations}:{},...`actor`in t?{actor:t.actor}:{}}}function He(e,t){let{confidence:n,representations:r,...i}=e;return{...i,data:t.data,relations:[...t.relations],...t.confidence===void 0?{}:{confidence:t.confidence},...t.representations===void 0?{}:{representations:t.representations},actor:t.actor}}var Ue=class extends w{registrations=new Map;constructor(e){super(e)}async onInit(){}onDestroy(){this.registrations.clear()}registerHooks(e,t){let n=[...t];this.registrations.set(e,n);let r=!1;return()=>{r||(r=!0,this.registrations.get(e)===n&&this.registrations.delete(e))}}allHooks(){let e=[];for(let t of this.registrations.values())e.push(...t);return e}async runBeforeCreate(e){return this.runBeforeHooks(`beforeCreate`,e)}async runBeforeRevise(e){return this.runBeforeHooks(`beforeRevise`,e)}async runBeforeHooks(e,t){let{draft:n,previous:r,kindRegistration:i}=t,a=ze(this.allHooks(),e,n),o=new Map,s={kind:n.kind,schemaVersion:n.schemaVersion,scope:n.scope,data:n.data,relations:n.relations,...n.confidence===void 0?{}:{confidence:n.confidence},...n.representations===void 0?{}:{representations:n.representations},actor:n.actor},c=!1;for(let t of a){let n,a={event:e,get draft(){return s},previous:r,kindRegistration:i,bus:this.bus,meta:o,rejectCreation(e){n={reason:e}},skipMaterialization(){c=!0},updateDraft(e){s=Ve(s,e)}};if(await t.handler(a),n)throw new z(n.reason,t.id)}return{draft:He(n,s),skipMaterialization:c,meta:o}}async runAfterCreate(e){await this.runAfterHooks(`afterCreate`,`created`,e)}async runAfterRevise(e){await this.runAfterHooks(`afterRevise`,`revised`,e)}async runAfterStatusChanged(e){await this.runAfterHooks(`afterStatusChanged`,`status-changed`,e)}async runAfterObservationAdded(e){await this.runAfterHooks(`afterObservationAdded`,`observation-added`,e)}async runAfterHooks(e,t,n){let{artifact:r,previous:i,observation:a,kindRegistration:o,projectionPolicy:s,skipDefaultProjection:c,meta:l}=n,u=Be(this.allHooks(),e,r),d=this.bus,f=!1;for(let n of u){if(c&&(n.priority??0)<0||f&&(n.priority??0)<0)continue;let u={event:e,semanticEvent:t,artifact:r,previous:i?{refClass:`artifact`,id:i.id,revision:i.revision,kind:i.kind}:void 0,observation:a,kindRegistration:o,projectionPolicy:s,bus:d,meta:l,preventDefault(){f=!0},async resolveRelations(e){let t=r.relations.filter(t=>t.type===e).map(e=>e.target),n=[];for(let e of t){let t=e;if(t.refClass===`artifact`){let e=t,{artifact:r}=await d.request(v.resolve,{ref:e});r&&n.push(r)}}return n}};try{await n.handler(u)}catch(t){console.error(`[ArtifactLifecycleHookRegistry] Hook '${n.id}' threw during '${e}':`,t)}}}};function H(e){return structuredClone(e)}var We=class extends w{namespaces=new Map;constructor(e){super(e)}async onInit(){this.registerHandler(k.namespace.register,e=>{this.registerNamespace(e.payload),e.setResult({registered:!0})}),this.registerHandler(k.namespace.list,e=>{let{namespace:t}=e.payload,n=[...this.namespaces.values()].filter(e=>!t||e.namespace===t).map(H);e.setResult({namespaces:n})})}registerNamespace(e){let t=this.namespaces.get(e.namespace);if(t){if(JSON.stringify(t)!==JSON.stringify(e))throw Error(`Facet namespace '${e.namespace}' is already registered with a different definition`);return}this.namespaces.set(e.namespace,H(e)),this.bus.emit(k.namespace.changed,{namespace:e.namespace})}deregisterNamespace(e){this.namespaces.delete(e)&&this.bus.emit(k.namespace.changed,{namespace:e})}getNamespace(e){let t=this.namespaces.get(e);return t?H(t):void 0}onDestroy(){this.namespaces.clear()}};function U(e){return structuredClone(e)}var Ge=class extends w{bindings=new Map;constructor(e){super(e)}async onInit(){this.registerHandler(A.surfaceBinding.register,e=>{this.registerBinding(e.payload),e.setResult({registered:!0})}),this.registerHandler(A.surfaceBinding.list,e=>{let{provider:t,namespace:n}=e.payload,r=[...this.bindings.values()].filter(e=>(!t||e.provider===t)&&(!n||e.namespace===n)).map(U);e.setResult({bindings:r})})}registerBinding(e){let t=this.bindings.get(e.id);if(t){if(JSON.stringify(t)!==JSON.stringify(e))throw Error(`Surface binding '${e.id}' is already registered with a different definition`);return}this.bindings.set(e.id,U(e)),this.bus.emit(A.surfaceBinding.changed,{id:e.id,provider:e.provider})}deregisterBinding(e){let t=this.bindings.get(e);t&&(this.bindings.delete(e),this.bus.emit(A.surfaceBinding.changed,{id:e,provider:t.provider}))}getBinding(e){let t=this.bindings.get(e);return t?U(t):void 0}onDestroy(){this.bindings.clear()}},W=class extends fe{code;suggestions;constructor(e,t,n){super(e),this.code=t,this.suggestions=n}},Ke=class{deps;constructor(e){this.deps=e}async resolve(e,t){switch(e.kind){case`bare`:return this.resolveBare(e.model);case`qualified`:return this.resolveQualified(e.segment1,e.segment2,e.model)}}async resolveBare(e){let t=await this.deps.resolveDefaultModelTarget(e);switch(t.kind){case`resolved`:return{kind:`adapter`,adapterName:t.target.adapterName,providerConfigId:t.target.providerConfigId,model:t.target.model};case`ambiguous`:throw new W(`Model "${e}" is available via multiple providers. Use a qualified reference to select one.`,`ambiguous-model`,t.matches.map(e=>e.qualifiedName));case`not-found`:throw new W(`Model "${e}" was not found in any enabled adapter's registry.`,`model-not-found`)}}async resolveQualified(e,t,n){return t===void 0?this.resolveQualifiedOneSegment(e,n):this.resolveQualifiedTwoSegments(e,t,n)}async resolveQualifiedTwoSegments(e,t,n){let r=await this.deps.listEnabledAdapterNames();if(!r.includes(e))throw new W(`Adapter "${e}" is not enabled or does not exist.`,`adapter-not-found`);return{kind:`adapter`,adapterName:e,providerConfigId:await this.resolveProviderSegment(t,e,r),model:n}}async resolveQualifiedOneSegment(e,t){let n=await this.deps.listEnabledAdapterNames();if(n.includes(e)){let n=await this.deps.getDefaultBinding(e);if(!n)throw new W(`Adapter "${e}" has no enabled provider binding. Configure or enable a provider binding first.`,`no-binding`);return{kind:`adapter`,adapterName:e,providerConfigId:n.providerConfigId,model:t}}let r=await this.deps.findProviderConfigByName(e);if(r)return{kind:`adapter`,adapterName:(await this.pickBindingForConfig(r.id,n)).adapterName,providerConfigId:r.id,model:t};let i=await this.deps.findProviderDefinition(e,n);if(i){let r=await this.deps.findDefaultConfigForDefinition(i.id);if(!r)throw new W(`Provider definition "${e}" exists but has no configured provider config. Create a provider config first.`,`provider-not-found`);return{kind:`adapter`,adapterName:(await this.pickBindingForConfig(r.id,n)).adapterName,providerConfigId:r.id,model:t}}throw new W(`"${e}" does not match any enabled adapter name, provider config name, or provider definition ID.`,`adapter-not-found`)}async resolveProviderSegment(e,t,n){let r=await this.deps.findProviderConfigByName(e);if(r)return await this.requireBindingForAdapterAndConfig(t,r.id,e),r.id;let i=await this.deps.findProviderDefinition(e,n);if(i){let n=await this.deps.findConfigForDefinitionAndAdapter(i.id,t);if(!n)throw new W(`Provider definition "${e}" has no enabled config bound to adapter "${t}". Create a provider config and binding first.`,`no-binding`);return n.id}throw new W(`"${e}" does not match any provider config name or provider definition ID.`,`provider-not-found`)}async requireBindingForAdapterAndConfig(e,t,n){if(!(await this.deps.listBindingsForConfig(t)).some(t=>t.adapterName===e))throw new W(`No binding exists between adapter "${e}" and provider "${n}". Create a binding first.`,`no-binding`)}async pickBindingForConfig(e,t){let n=(await this.deps.listBindingsForConfig(e)).filter(e=>t.includes(e.adapterName));if(n.length===0)throw new W(`Provider config "${e}" has no bindings to enabled adapters. Bind it to an enabled adapter first.`,`no-binding`);return n.find(e=>e.isDefault)??n[0]}},qe=class e extends w{constructor(e=g){super(e)}async onInit(){await this.bus.request(p.ensureReady,{});let e=new Ke(this.createDeps());this.registerHandler(he.resolve,async t=>{let n=await e.resolve(t.payload.parsed,t.payload.context);t.setResult(n)})}createDeps(){let e=this.bus,t=async()=>{let{adapters:t}=await e.request(p.listAdapters,{});return t.filter(e=>e.enabled).map(e=>e.name)},n=async t=>{let[n,r]=await Promise.all([e.request(p.getDefaultBinding,{adapterName:t}),this.listEnabledProviderConfigIds()]);if(n.binding&&r.has(n.binding.providerConfigId))return n.binding;let{bindings:i}=await e.request(p.listBindings,{adapterName:t}),a=i.filter(e=>r.has(e.providerConfigId));return a.find(e=>e.isDefault)??a[0]},r=async t=>{let{definitions:n}=await e.request(p.getProviderDefinitionsByAdapter,{adapterName:t});return n},i=async t=>{let{bindings:n}=await e.request(p.listBindingsByConfig,{providerConfigId:t});return n},a=async t=>{let{configs:n}=await e.request(p.listProviderConfigs,{enabled:!0}),r=D(t);return n.find(e=>D(e.name)===r)},o=this.buildFindProviderDefinition(t,r),s=async t=>{let{configs:n}=await e.request(p.listProviderConfigsByDefinition,{definitionId:t}),r=n.filter(e=>e.enabled);return r.find(e=>e.isDefault)??r[0]},c=async(t,n)=>{let{config:r}=await e.request(p.findConfigForDefinitionAndAdapter,{definitionId:t,adapterName:n});return r?{id:r.id}:void 0};return{listEnabledAdapterNames:t,getDefaultBinding:n,findProviderConfigByName:a,findProviderDefinition:o,listBindingsForConfig:i,findDefaultConfigForDefinition:s,findConfigForDefinitionAndAdapter:c,resolveDefaultModelTarget:this.buildResolveDefaultModelTarget(t,r,c)}}buildFindProviderDefinition(e,t){return async(n,r)=>{let i=r??await e();for(let e of i){let r=(await t(e)).find(e=>e.id===n);if(r)return r}}}buildResolveDefaultModelTarget(t,n,r){let i=this.bus;return async a=>{let o=await t(),s=await Promise.all(o.map(async e=>({adapterName:e,definitions:await n(e)}))),c=Array.from(new Set(s.flatMap(({definitions:e})=>e.map(e=>e.id))));if(c.length===0)return{kind:`not-found`};let{matches:l}=await i.request(ae.checkModelInProviders,{providerIds:c,model:a}),u=(await Promise.all(s.map(({adapterName:e,definitions:t})=>this.collectAdapterCandidates(e,t,a,l,r)))).flat();return e.buildResolution(u)}}async collectAdapterCandidates(e,t,n,r,i){let a=t.filter(e=>e.id in r),o=await Promise.all(a.map(t=>i(t.id,e)));return a.flatMap((t,r)=>{let i=o[r];return i?[{adapterName:e,definitionId:t.id,providerConfigId:i.id,qualifiedName:`${e}/${t.id}::${n}`,model:n}]:[]})}static buildResolution(e){let t=Array.from(new Map(e.map(e=>[this.routeKey(e),e])).values());if(t.length===0)return{kind:`not-found`};if(t.length>1)return{kind:`ambiguous`,matches:t.map(({adapterName:e,definitionId:t,qualifiedName:n})=>({adapterName:e,definitionId:t,qualifiedName:n}))};let[n]=t;return{kind:`resolved`,target:{adapterName:n.adapterName,providerConfigId:n.providerConfigId,definitionId:n.definitionId,model:n.model}}}static routeKey(e){return`${e.adapterName}\0${e.definitionId}\0${e.providerConfigId}`}async listEnabledProviderConfigIds(){let{configs:e}=await this.bus.request(p.listProviderConfigs,{enabled:!0});return new Set(e.map(e=>e.id))}};const G={name:`makaio.canonical-model`,displayName:`Canonical Model`,version:`0.1.0`,critical:!1,create:e=>new qe(e.bus)};function Je(e){let t=Ce({adapterId:e?.adapterId,adapterName:e?.adapterName,contextOverrides:{adapterId:e?.contextOverrides?.adapterId,adapterName:e?.contextOverrides?.adapterName}}),n=t.issues[0];return n?M(j.VALIDATION_FAILED,n.message):Ae(t.effectiveIdentity)}function Ye(e){let t=e?.allowedDirectories;if(Array.isArray(t))return t.filter(e=>typeof e==`string`)}async function Xe(e,t,n,r){let i=new Map;for(let e of t)i.set(e.name,await r(e.name));let a=t.filter(e=>{let t=i.get(e.name);return!t?.allowedAdapters||t.allowedAdapters.length===0?!0:t.allowedAdapters.includes(n)}),o=new Set(a.map(e=>e.name));return{filteredTools:e.filter(e=>!(!o.has(e.toolsetName)||i.get(e.toolsetName)?.disabledTools?.includes(e.name))),filteredToolsets:a}}function Ze(){return`exec_${Date.now()}_${Math.random().toString(36).substring(2,9)}`}var Qe=class{bus;toolsets=new Map;tools=new Map;cleanupHandlers=[];handlerPriority;policyProvider;fileAccessRuleProvider;revision=0;constructor(e){this.bus=e?.bus??g,this.handlerPriority=e?.handlerPriority??0,this.policyProvider=e?.policyProvider,this.fileAccessRuleProvider=e?.fileAccessRuleProvider,this.registerHandlers()}registerHandlers(){let e=this.bus.on(b.list,async e=>{let{toolsetName:t,adapterId:n,adapterName:r}=e.payload,{tools:i,toolsets:a}=await this.listToolsWithToolsets({toolsetName:t,adapterId:n,adapterName:r});e.setResult({tools:i,toolsets:a})},{priority:this.handlerPriority});this.cleanupHandlers.push(e);let t=this.bus.on(b.execute,async e=>{let{toolName:t,input:n,adapterId:r,adapterName:i,contextOverrides:a}=e.payload,o=await this.execute(t,n,{contextOverrides:a,adapterId:r,adapterName:i});e.setResult(o)},{priority:this.handlerPriority});this.cleanupHandlers.push(t)}async register(e){if(this.toolsets.has(e.metadata.name))throw Error(`Toolset '${e.metadata.name}' is already registered`);let t=[],n=[];for(let[,r]of Object.entries(e.tools)){let i=r.metadata.name;if(this.tools.has(i))throw Error(`Tool '${i}' is already registered (from toolset '${this.tools.get(i).toolsetName}')`);n.push({tool:r,toolsetName:e.metadata.name}),t.push(i)}this.toolsets.set(e.metadata.name,e);for(let e=0;e<n.length;e+=1)this.tools.set(t[e],n[e]);await this.emitRegistryChanged(`toolset-registered`,e.metadata.name).catch(t=>console.warn(`[ToolRegistry] Failed to emit ${b.registryChanged.subject} for '${e.metadata.name}':`,t)),await this.bus.emit(b.registered,{toolsetName:e.metadata.name,toolsetVersion:e.metadata.version,toolNames:t}).catch(t=>console.warn(`[ToolRegistry] Failed to emit ${b.registered.subject} for '${e.metadata.name}':`,t))}async deregister(e){let t=this.toolsets.get(e);if(!t)throw Error(`Toolset '${e}' is not registered`);for(let e of Object.values(t.tools))this.tools.delete(e.metadata.name);this.toolsets.delete(e),await this.emitRegistryChanged(`toolset-unregistered`,e).catch(t=>console.warn(`[ToolRegistry] Failed to emit ${b.registryChanged.subject} for '${e}':`,t))}async emitRegistryChanged(e,t){this.revision+=1,await this.bus.emit(b.registryChanged,{revision:this.revision,reason:e,toolsetName:t})}async execute(e,t,n){let r=this.tools.get(e);if(!r)return M(j.TOOL_NOT_FOUND,`Tool '${e}' not found`);let i=Je(n);if(!i.success)return i;let{tool:a,toolsetName:o}=r,s=await this.checkPolicy(o,e,i.data.adapterId,i.data.adapterName);if(s)return s;let c=Ze(),l=Date.now();await this.bus.emit(b.started,{toolName:e,toolsetName:o,executionId:c,timestamp:l});try{let r=a.inputSchema.safeParse(t);if(!r.success){let t=M(j.VALIDATION_FAILED,`Input validation failed`,{issues:r.error.issues});return await this.bus.emit(b.error,{toolName:e,toolsetName:o,executionId:c,timestamp:Date.now(),error:t.error}),t}let s=await this.buildExecutionContext(n,i.data),u=await a.execute(r.data,s);return u.success?await this.bus.emit(b.completed,{toolName:e,toolsetName:o,executionId:c,timestamp:Date.now(),durationMs:Date.now()-l}):await this.bus.emit(b.error,{toolName:e,toolsetName:o,executionId:c,timestamp:Date.now(),error:u.error}),u}catch(t){let n=Oe(t);return await this.bus.emit(b.error,{toolName:e,toolsetName:o,executionId:c,timestamp:Date.now(),error:n.error}),n}}async buildExecutionContext(e,t){let n=e?.contextOverrides?.constraints;if(this.fileAccessRuleProvider){let t=e?.contextOverrides?.cwd??process.cwd(),r=Ye(n),i=await this.fileAccessRuleProvider(t,r);n={...n,[Ee]:i}}let r=pe({...e?.contextOverrides,constraints:n}),i=e?.contextOverrides;return{...r,bus:this.bus,sessionId:i?.sessionId,agentId:i?.agentId,adapterId:t.adapterId,adapterName:t.adapterName,turnId:i?.turnId,turnContext:i?.turnContext,toolCallId:i?.toolCallId}}async checkPolicy(e,t,n,r){if(!this.policyProvider)return null;let i=await this.policyProvider(e);if(!i)return null;if(i.disabledTools?.includes(t))return M(j.PERMISSION_DENIED,`Tool '${t}' is disabled`,{toolsetName:e,toolName:t});if(i.allowedAdapters&&i.allowedAdapters.length>0){let t=r??n;if(!t||!i.allowedAdapters.includes(t))return M(j.PERMISSION_DENIED,`Adapter not allowed for toolset '${e}'`,{toolsetName:e,adapterId:n,adapterName:r,allowedAdapters:i.allowedAdapters})}return null}listTools(e){let t=[];for(let[,n]of this.tools){if(e?.toolsetName&&n.toolsetName!==e.toolsetName)continue;let{$schema:r,...i}=h.toJSONSchema(n.tool.inputSchema);t.push({name:n.tool.metadata.name,description:n.tool.metadata.description,toolsetName:n.toolsetName,annotations:n.tool.metadata.annotations,inputSchema:i})}return t}listToolsets(){let e=[];for(let[,t]of this.toolsets){let n={name:t.metadata.name,description:t.metadata.description,version:t.metadata.version,toolCount:Object.keys(t.tools).length};if(t.configSchema){let{$schema:e,...r}=h.toJSONSchema(t.configSchema);n.configSchema=r}e.push(n)}return e}async listToolsWithToolsets(e){let t=this.listTools(e),n=this.listToolsets(),r=e?.toolsetName?n.filter(t=>t.name===e.toolsetName):n,i=e?.adapterName??e?.adapterId;if(this.policyProvider&&i){let{filteredTools:e,filteredToolsets:n}=await Xe(t,r,i,this.policyProvider);return{tools:e,toolsets:n}}return{tools:t,toolsets:r}}getTool(e){return this.tools.get(e)?.tool}getToolset(e){return this.toolsets.get(e)}dispose(){for(let e of this.cleanupHandlers)e();this.cleanupHandlers.length=0}destroy(){this.dispose()}},$e=class extends w{triggersByExtension=new Map;stepsByExtension=new Map;revision=0;cache=null;constructor(e){super(e)}onInit(){this.registerHandler(xe.list,e=>{e.setResult({triggers:this.listTriggers(),steps:this.listSteps()})})}async register(e,t){let n=[],r=[],i=this.snapshotExtensionState(e),a=new Set;for(let e of this.triggersByExtension.values())for(let t of e)a.add(t.metadata.name);for(let e of this.stepsByExtension.values())for(let t of e)a.add(t.metadata.name);if(t.triggers)for(let r of t.triggers)this.assertExtensionNamespace(e,r.metadata),this.assertNoCollision(r.metadata,a),a.add(r.metadata.name),n.push({metadata:{...r.metadata,extensionName:e},configSchema:C(r.configSchema),outputSchema:C(r.outputSchema)});if(t.steps)for(let n of t.steps)this.assertExtensionNamespace(e,n.metadata),this.assertNoCollision(n.metadata,a),a.add(n.metadata.name),r.push({metadata:{...n.metadata,extensionName:e},configSchema:C(n.configSchema),inputSchema:C(n.inputSchema),outputSchema:C(n.outputSchema),runs:structuredClone(n.runs)});if(n.length>0&&this.triggersByExtension.set(e,n),r.length>0&&this.stepsByExtension.set(e,r),n.length>0||r.length>0){this.revision+=1;try{await this.emitChanged(e,`registered`)}catch(t){throw this.restoreExtensionState(e,i),t}}}async deregister(e){let t=this.snapshotExtensionState(e),n=this.triggersByExtension.delete(e),r=this.stepsByExtension.delete(e);if(n||r){this.revision+=1;try{await this.emitChanged(e,`deregistered`)}catch(n){throw this.restoreExtensionState(e,t),n}}}listTriggers(){return this.getCache().triggers.map(et)}listSteps(){return this.getCache().steps.map(tt)}async emitChanged(e,t){await this.bus.emit(xe.changed,{extensionName:e,revision:this.revision,reason:t})}getCache(){return(!this.cache||this.cache.revision!==this.revision)&&(this.cache={revision:this.revision,triggers:[...this.triggersByExtension.values()].flat(),steps:[...this.stepsByExtension.values()].flat()}),this.cache}snapshotExtensionState(e){return{triggers:this.triggersByExtension.get(e),steps:this.stepsByExtension.get(e),revision:this.revision,cache:this.cache}}restoreExtensionState(e,t){t.triggers?this.triggersByExtension.set(e,t.triggers):this.triggersByExtension.delete(e),t.steps?this.stepsByExtension.set(e,t.steps):this.stepsByExtension.delete(e),this.revision=t.revision,this.cache=t.cache}assertNoCollision(e,t){if(t.has(e.name))throw Error(`Workflow block name collision: '${e.name}' is already registered`)}assertExtensionNamespace(e,t){let n=`${e}.`;if(!t.name.startsWith(n))throw Error(`Workflow block '${t.name}' must be namespaced by extension '${n}'`)}};function et(e){return{metadata:nt(e.metadata),configSchema:structuredClone(e.configSchema),outputSchema:structuredClone(e.outputSchema)}}function tt(e){return{metadata:nt(e.metadata),configSchema:structuredClone(e.configSchema),inputSchema:structuredClone(e.inputSchema),outputSchema:structuredClone(e.outputSchema),runs:structuredClone(e.runs)}}function nt(e){return e.categories?{...e,categories:[...e.categories]}:{...e}}const K=`workflow.start`;function rt(e){return()=>({async execute(t,n){let{input:r={},executionHints:i}=t,{workflowId:a}=r;if(typeof a!=`string`||a.length===0)throw Error(`[TransitionActionRegistry] 'workflow.start' action requires a non-empty 'input.workflowId' string`);await e.request(Se.start,{workflowId:a,input:it(r,n),config:r.config,artifactRef:r.artifactRef,scope:r.scope,triggerPayload:{_transitionRuleId:n._transition.ruleId,_transitionDepth:n._transition.depth,_transitionEventType:n._transition.eventType},executionHints:i})}})}function it(e,t){let n=e.inputExpression;if(typeof n!=`string`)return e.input;let r=Ne(n,at(t)),i=ve.safeParse(r);if(!i.success)throw Error(`[TransitionActionRegistry] 'workflow.start' inputExpression for rule '${t._transition.ruleId}' must resolve to a JSON value`);return i.data}function at(e){let t={...e};return{...t,ctx:t}}var ot=class{factories=new Map;factoriesBySource=new Map;constructor(e){this.factories.set(K,rt(e)),this.factoriesBySource.set(`__builtin__`,[K])}register(e,t){let n=Object.keys(t);if(n.length!==0){if(this.factoriesBySource.has(e))throw Error(`TransitionActionRegistry: duplicate source '${e}'`);for(let t of n)if(this.factories.has(t))throw Error(`TransitionActionRegistry: duplicate action type '${t}' from source '${e}'`);for(let e of n)this.factories.set(e,t[e]);this.factoriesBySource.set(e,n)}}deregister(e){if(e===`__builtin__`)return;let t=this.factoriesBySource.get(e);if(t){for(let e of t)this.factories.delete(e);this.factoriesBySource.delete(e)}}async dispatch(e,t){let n=this.factories.get(e.type);if(!n)throw Error(`TransitionActionRegistry: unknown action type '${e.type}'. Registered types: ${[...this.factories.keys()].join(`, `)}`);await n().execute(e,t)}has(e){return this.factories.has(e)}listTypes(){return[...this.factories.keys()]}},st=class{rulesBySource=new Map;rulesByEventType=new Map;ruleIdSet=new Set;register(e,t){if(t.length===0)return;if(this.rulesBySource.has(e))throw Error(`TransitionRuleRegistry: duplicate source '${e}'`);let n=new Set,r=[];for(let i of t){let t=be.parse(i);if(n.has(t.id))throw Error(`TransitionRuleRegistry: duplicate rule ID '${t.id}' within source '${e}'`);if(this.ruleIdSet.has(t.id))throw Error(`TransitionRuleRegistry: duplicate rule ID '${t.id}' from source '${e}'`);n.add(t.id),r.push({rule:t,condition:t.when===void 0?void 0:je.parse(t.when)})}for(let e of r){let{rule:t}=e;this.ruleIdSet.add(t.id);let n=this.rulesByEventType.get(t.on)??[];n.push(e),this.rulesByEventType.set(t.on,n)}this.rulesBySource.set(e,r)}deregister(e){let t=this.rulesBySource.get(e);if(t){for(let{rule:e}of t){this.ruleIdSet.delete(e.id);let t=this.rulesByEventType.get(e.on);if(t){let n=t.filter(t=>t.rule.id!==e.id);n.length>0?this.rulesByEventType.set(e.on,n):this.rulesByEventType.delete(e.on)}}this.rulesBySource.delete(e)}}getRulesForEvent(e){let t=this.rulesByEventType.get(e);return t?t.filter(e=>e.rule.enabled):[]}snapshotSource(e){let t=this.rulesBySource.get(e);if(t)return{ruleIds:t.map(e=>e.rule.id)}}},ct=class extends w{ruleRegistry;actionRegistry;depthMap=new Map;constructor(e){super(e),this.ruleRegistry=new st,this.actionRegistry=new ot(e)}onInit(){this.registerHandler(v.created,async e=>{await this.handleArtifactEvent(`artifact.created`,{artifact:e.payload.artifact})}),this.registerHandler(v.revised,async e=>{let t=await this.resolvePreviousRevisedArtifact(e.payload.previous);await this.handleArtifactEvent(`artifact.revised`,{artifact:e.payload.artifact,previous:e.payload.previous,...t===void 0?{}:{previousArtifact:t}})}),this.registerHandler(v.status.changed,async e=>{let t=await this.resolveStatusChangedArtifact(e.payload.artifact);t!==void 0&&await this.handleArtifactEvent(`artifact.status.changed`,{artifact:t,path:e.payload.path,previous:e.payload.previous,current:e.payload.current})})}async handleArtifactEvent(e,t){let n=this.artifactKey(t.artifact),r=this.readDepth(n);if(r>=10){console.warn(`[TransitionPipelineService] Transition depth limit (10) reached for event '${e}' on artifact '${n}'. Loop protection active — skipping rule evaluation.`);return}let i=this.ruleRegistry.getRulesForEvent(e);if(i.length!==0)for(let a of i)await this.evaluateAndDispatch(a,e,t,n,r)}async resolveStatusChangedArtifact(e){let t=await this.bus.requestOptional(v.resolve,{ref:e});if(!t.handled){console.warn(`[TransitionPipelineService] No artifact resolver is registered for status transition on artifact '${this.artifactKey(e)}'. Skipping rule evaluation.`);return}if(t.data.artifact===null){console.warn(`[TransitionPipelineService] Could not resolve status transition artifact '${this.artifactKey(e)}'. Skipping rule evaluation.`);return}return t.data.artifact}async resolvePreviousRevisedArtifact(e){let t=await this.bus.requestOptional(v.resolve,{ref:e});if(!(!t.handled||t.data.artifact===null))return t.data.artifact}async evaluateAndDispatch(e,t,n,r,i){let{rule:a,condition:o}=e,s={...n,_transition:{ruleId:a.id,eventType:t,depth:i+1}};if(o!==void 0){let e={...s},t;try{t=Me(o,e)}catch(e){console.error(`[TransitionPipelineService] Condition evaluation error for rule '${a.id}':`,e);return}if(!t)return}try{await this.actionRegistry.dispatch(a.action,s),a.action.type===`workflow.start`&&this.incrementDepth(r)}catch(e){console.error(`[TransitionPipelineService] Action dispatch error for rule '${a.id}' (action type '${a.action.type}'):`,e)}}artifactKey(e){return`${typeof e.kind==`string`?e.kind:`unknown`}:${typeof e.id==`string`?e.id:`unknown`}`}readDepth(e){let t=this.depthMap.get(e);return t===void 0?0:Date.now()>t.expiresAt?(this.depthMap.delete(e),0):t.count}incrementDepth(e){let t=this.depthMap.get(e);this.depthMap.set(e,{count:t===void 0?1:t.count+1,expiresAt:Date.now()+6e4})}};function lt(e){return async t=>{let n=await ut(e,t);if(!n)return{handled:!1,sessionId:null,clientAccountId:null,changed:!1};let{sessionId:r}=n,{observation:i,accountObserveRequest:a}=dt(t),o=await e.requestOptional(O.account.observe,a);if(!o.handled)return{handled:!1,sessionId:r,clientAccountId:null,changed:!1};let{clientAccountId:s}=o.data;return{handled:!0,sessionId:r,clientAccountId:s,changed:await vt(e,r,i,s)}}}async function ut(t,n){switch(n.locator.kind){case`session`:{let{session:r}=await t.request(e.get,{sessionId:n.locator.sessionId});return r?{sessionId:r.sessionId,session:r}:null}case`adapter-session`:{let{session:r}=await t.request(e.getByAdapterSessionId,{adapterSessionId:n.locator.adapterSessionId});return r?{sessionId:r.sessionId,session:r}:null}case`both`:{let[{session:r},{session:i}]=await Promise.all([t.request(e.get,{sessionId:n.locator.sessionId}),t.request(e.getByAdapterSessionId,{adapterSessionId:n.locator.adapterSessionId})]);if(!r&&!i)return null;if(!r||!i)throw Error(`Session locator mismatch: sessionId "${n.locator.sessionId}" and adapterSessionId "${n.locator.adapterSessionId}" must both resolve the same session`);if(r.sessionId!==i.sessionId)throw Error(`Session locator mismatch: sessionId "${n.locator.sessionId}" and adapterSessionId "${n.locator.adapterSessionId}" resolve to different sessions`);return{sessionId:r.sessionId,session:r}}}}function dt(e){let t={clientId:e.clientId,source:e.source,kind:e.kind,observedAt:e.observedAt,payload:gt(e.payload)};return{observation:t,accountObserveRequest:ft(t)}}function ft(e){let t=e.payload,n=pt(t),r=mt(t);if(r.length>0)return{clientId:e.clientId,observedAt:e.observedAt,displayLabel:ht(t,n),identifiers:r};throw Error(`client.session.account.observe for "${e.clientId}" requires canonical client account identifiers`)}function pt(e){return _t(e.accountInfo)??e}function mt(e){let t=e.identifiers;if(!Array.isArray(t))return[];try{return h.array(we).min(1).parse(t)}catch(e){throw Error(`client.session.account.observe received malformed canonical client account identifiers`,{cause:e})}}function ht(e,t){return q(e.displayLabel)??q(t.displayLabel)??q(t.email)??q(t.label)}function gt(e){return structuredClone(e)}function _t(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function q(e){return typeof e==`string`&&e.trim().length>0?e.trim():void 0}async function vt(t,n,r,i){let a=await t.request(e.update,{sessionId:n,clientId:r.clientId,clientAccountId:i,lastClientIdentityObservation:r});if(!a.success)throw Error(`Failed to update session "${n}" with client account linkage`);return a.clientAccountChanged??!1}const yt=S(`session-storage`).name;var bt=class extends w{constructor(e=g){super(e)}onInit(){let e=lt(this.bus);this.registerHandler(O.session.account.observe,async t=>{t.setResult(await e(Te.request.parse(t.payload)))})}};const xt={name:`makaio.session-client-account-linking`,displayName:`Session Client Account Linking`,version:`0.1.0`,dependencies:[x(yt),x(`makaio.clients-core`)],critical:!1,create:e=>new bt(e.bus)},St={name:`framework-shell`,displayName:`Shell`,version:`0.1.0`,surface:`interactive`,windows:[{id:`main`,style:`utility`,width:1e3,height:700,singleton:!0}]};async function Ct(e){let{harnesses:t}=await e.request(m.list,{}),n=new Set(t.map(e=>e.id));for(let t of ge){if(n.has(t.id))continue;let r={...t};await e.request(m.set,{harness:r})}}function wt(e){return{id:e.id,name:e.name,description:e.description??void 0,adapterName:e.adapterName??void 0,clientId:e.clientId??void 0,env:e.env??void 0,credentials:e.credentials??void 0,cwd:e.cwd??void 0,approvalPolicy:_.parse(e.approvalPolicy),nativeTools:{enabled:e.nativeToolsEnabled,disabled:e.nativeToolsDisabled},registryTools:{enabled:e.registryToolsEnabled,disabled:e.registryToolsDisabled},skills:e.skillsEnabled||e.skillsDisabled?{enabled:e.skillsEnabled??[],disabled:e.skillsDisabled??[]}:void 0,toolCapabilityMap:e.toolCapabilityMap?h.record(h.string(),h.array(ye)).parse(e.toolCapabilityMap):void 0,capabilityOverrides:e.capabilityOverrides?h.record(h.string(),_).parse(e.capabilityOverrides):void 0,toolApprovalOverrides:e.toolApprovalOverrides?h.record(h.string(),_).parse(e.toolApprovalOverrides):void 0,isDefault:e.isDefault,enabled:e.enabled,createdAt:e.createdAt,updatedAt:e.updatedAt}}function Tt(e){return{id:e.id,name:e.name,description:e.description??null,adapterName:e.adapterName??null,clientId:e.clientId??null,env:e.env??null,credentials:e.credentials??null,cwd:e.cwd??null,approvalPolicy:e.approvalPolicy,nativeToolsEnabled:e.nativeTools.enabled,nativeToolsDisabled:e.nativeTools.disabled,registryToolsEnabled:e.registryTools.enabled,registryToolsDisabled:e.registryTools.disabled,skillsEnabled:e.skills?.enabled??null,skillsDisabled:e.skills?.disabled??null,toolCapabilityMap:e.toolCapabilityMap??null,capabilityOverrides:e.capabilityOverrides??null,toolApprovalOverrides:e.toolApprovalOverrides??null,isDefault:e.isDefault,enabled:e.enabled}}const Et=Pe({table:ce,subjects:{get:m.get,set:m.set,delete:m.delete},idField:`id`,singularKey:`harness`,mapper:wt,toDbValues:Tt,lifecycle:{created:y.created,updated:y.updated,deleted:y.deleted}}),Dt=Fe({table:ce,subject:m.list,pluralKey:`harnesses`,mapper:wt,buildPredicates:(e,t)=>{let n=[];return e.adapterName&&n.push(T(t.adapterName,e.adapterName)),e.clientId&&n.push(T(t.clientId,e.clientId)),e.name&&n.push(T(t.name,e.name)),n}});function Ot(e,t,n){let r=Et(e,t),i=Dt(e,t);return()=>{r(),i()}}function J(e,t,n){return e??t??n}var kt=class extends w{static storage={drizzle:Ot};constructor(e=g){super(e)}async onInit(){await Ct(this.bus),this.registerHandlers()}registerHandlers(){this.registerHandler(y.get,async e=>{let t=await this.loadHarness(e.payload);if(!t)throw Error(`Harness not found`);e.setResult(t)}),this.registerHandler(y.list,async e=>{let{harnesses:t}=await this.bus.request(m.list,e.payload);e.setResult({harnesses:t})}),this.registerHandler(y.set,async e=>{let t=await this.upsertHarness(e.payload);e.setResult({id:t})}),this.registerHandler(y.delete,async e=>{let{deleted:t}=await this.bus.request(m.delete,{id:e.payload.id});e.setResult({success:t})}),this.registerHandler(y.getDefault,async e=>{let t=await this.getDefaultHarness(e.payload.adapterName,e.payload.clientId);e.setResult(t)}),this.registerHandler(y.resolve,async e=>{let{adapterName:t,clientId:n,personaHarnessId:r,profileHarnessId:i}=e.payload;if(r){let i=await this.resolveAndValidateHarness(r,t,`persona`,n);e.setResult(i);return}if(i){let r=await this.resolveAndValidateHarness(i,t,`profile`,n);e.setResult(r);return}let a=await this.getDefaultHarness(t,n);e.setResult(a)}),this.registerHandler(y.getSchema,({setResult:e})=>{let{$schema:t,...n}=h.toJSONSchema(_e);e({schema:n,uiConfig:{editMode:`fullPage`,hiddenFields:[`isDefault`]}})})}async upsertHarness(e){let t=await this.resolveHarnessId(e.name,e.adapterName,e.clientId),n=await this.loadHarness({id:t,adapterName:e.adapterName,clientId:e.clientId}),r=this.mergeHarnessPayload(t,e,n);return r.adapterName&&await this.validateNativeTools(r.adapterName,r.nativeTools),await this.bus.request(m.set,{harness:r}),t}mergeHarnessPayload(e,t,n){let r={enabled:[],disabled:[]};return{id:e,name:t.name,description:J(t.description,n?.description,void 0),adapterName:t.adapterName,clientId:J(t.clientId,n?.clientId,void 0),env:J(t.env,n?.env,void 0),credentials:J(t.credentials,n?.credentials,void 0),cwd:J(t.cwd,n?.cwd,void 0),approvalPolicy:J(t.approvalPolicy,n?.approvalPolicy,`always-ask`),nativeTools:J(t.nativeTools,n?.nativeTools,r),registryTools:J(t.registryTools,n?.registryTools,r),skills:J(t.skills,n?.skills,void 0),toolCapabilityMap:t.toolCapabilityMap??n?.toolCapabilityMap,capabilityOverrides:t.capabilityOverrides??n?.capabilityOverrides,toolApprovalOverrides:t.toolApprovalOverrides??n?.toolApprovalOverrides,isDefault:J(t.isDefault,n?.isDefault,!1),enabled:J(t.enabled,n?.enabled,!0)}}async resolveHarnessId(e,t,n){let r=n??t,{harnesses:i}=await this.bus.request(m.list,{name:e}),a=i.find(t=>t.name===e&&(t.clientId??t.adapterName)===r);if(a)return a.id;let o=i.find(t=>t.name===e&&(t.clientId??t.adapterName)!==r);if(o){let t=o.clientId?`client '${o.clientId}'`:`adapter '${o.adapterName}'`;throw Error(`Harness "${e}" already exists with scope ${t}; cannot change scope to ${r??`(none)`}`)}return this.createStableHarnessId(e,r)}async loadHarness(e){if(e.id){let{harness:t}=await this.bus.request(m.get,{id:e.id});return t&&(!e.adapterName||t.adapterName===e.adapterName)&&(!e.clientId||t.clientId===e.clientId)?t:null}if(!e.name)return null;let{harnesses:t}=await this.bus.request(m.list,{name:e.name,adapterName:e.adapterName,clientId:e.clientId});return e.clientId?t.find(t=>t.clientId===e.clientId)??null:e.adapterName?t.find(t=>t.adapterName===e.adapterName)??null:t[0]??null}async getDefaultHarness(e,t){if(t){let{harnesses:e}=await this.bus.request(m.list,{clientId:t}),n=e.find(e=>e.isDefault&&e.enabled);if(n)return n;let r=e.find(e=>e.enabled);if(r)return r}if(e){let{harnesses:t}=await this.bus.request(m.list,{adapterName:e}),n=t.find(e=>e.isDefault&&e.enabled);if(n)return n;let r=t.find(e=>e.enabled);if(r)return r}let n=t?e?`client '${t}' or adapter '${e}'`:`client '${t}'`:`adapter '${e}'`;throw Error(`No harness available for ${n}`)}assertHarnessAdapterMatch(e,t,n,r){if(e.adapterName&&t&&e.adapterName!==t)throw Error(`Resolved ${n} harness adapter mismatch: expected "${t}", got "${e.adapterName}"`);if(e.clientId&&r&&e.clientId!==r)throw Error(`Resolved ${n} harness client mismatch: expected "${r}", got "${e.clientId}"`)}assertHarnessEnabled(e,t){if(!e.enabled)throw Error(`Resolved ${t} harness is disabled: ${e.id}`)}async validateNativeTools(e,t){let n=await this.bus.requestOptional(me.getCapabilities,{adapterName:e});if(!n.handled)return;let r=new Set(n.data.nativeTools),i=[...t.enabled,...t.disabled].filter(e=>!r.has(e));if(i.length>0)throw Error(`Tool '${i[0]}' not found in adapter '${e}' native tools. Declared tools: ${[...r].join(`, `)}`)}createStableHarnessId(e,t){return`harness-${de(`sha256`).update(`${t??``}\0${e}`).digest(`hex`).slice(0,24)}`}async resolveAndValidateHarness(e,t,n,r){let i=await this.loadHarness({id:e});if(!i)throw Error(`${n===`persona`?`Persona`:`Profile`} harness not found: ${e}`);return this.assertHarnessAdapterMatch(i,t,n,r),this.assertHarnessEnabled(i,n),i}};const At={name:`makaio.harness`,displayName:`Harness`,version:`0.1.0`,critical:!0,storage:{registerHandlers:E(Ot)},create:e=>new kt(e.bus)},Y=S(`session-storage`),X=S(`session-bridge`),Z=S(`session`),jt=S(`session-orchestrator`),Q=S(`tool-registry`),Mt=S(`tool-approval`),Nt=S(`tray-menu`),Pt=S(`capability`),Ft=S(`model-registry`),It=S(`workflow-block-registry`),Lt=S(`transition-pipeline`),Rt=S(`filesystem`),zt=S(`git`),Bt=S(`artifact-schema-registry`),Vt=S(`artifact-lifecycle-hook-registry`),Ht=S(`facet-namespace-registry`),Ut=S(`surface-binding-registry`),Wt={name:Bt.name,displayName:`Artifact Schema Registry`,version:`0.1.0`,critical:!0,create:e=>new R(e.bus)},Gt={name:Vt.name,displayName:`Artifact Lifecycle Hook Registry`,version:`0.1.0`,critical:!0,create:e=>new Ue(e.bus)},Kt={name:Ht.name,displayName:`Facet Namespace Registry`,version:`0.1.0`,critical:!0,create:e=>new We(e.bus)},qt={name:Ut.name,displayName:`Surface Binding Registry`,version:`0.1.0`,critical:!0,create:e=>new Ge(e.bus)},$={name:Y.name,displayName:`Session Storage`,version:`0.1.0`,critical:!0,storage:{registerHandlers:E((e,n,r)=>{let o=[],p=e=>{for(let t=o.length-1;t>=0;--t)try{o[t]?.()}catch(t){console.warn(`[sessionStoragePackage] cleanup failed during ${e}:`,t)}o.length=0};try{o.push(c(e,n,r)),o.push(i(e,n,r)),o.push(s(e,n,r)),o.push(a(e,n,r)),o.push(t(e,n,r)),o.push(ne(e,n,r)),o.push(ee(e,n,r)),o.push(te(e,n)),o.push(l(e,n)),o.push(u(e)),o.push(f(e)),o.push(d(e))}catch(e){throw p(`rollback`),e}return()=>{p(`shutdown`)}})}},Jt={name:X.name,displayName:`Session Bridge`,version:`0.1.0`,dependencies:[x(Y.name)],critical:!0,create:e=>new n(e.bus)},Yt={name:Z.name,displayName:`Session`,version:`0.1.0`,dependencies:[x(X.name)],critical:!0,create:e=>new r(e.bus)},Xt={name:jt.name,displayName:`Session Orchestrator`,version:`0.1.0`,dependencies:[x(Z.name),x(G.name)],critical:!0,runtimeOwnership:{sessionOrchestrator:!0},create:e=>new o(e.bus,e.machineId)},Zt={name:Q.name,displayName:`Tool Registry`,version:`0.1.0`,critical:!0,create:e=>new Qe({bus:e.bus})},Qt={name:Mt.name,displayName:`Tool Approval`,version:`0.1.0`,dependencies:[x(Q.name)],critical:!0,create:e=>new oe(e.bus)},$t={name:Nt.name,displayName:`Tray Menu`,version:`0.1.0`,critical:!0,create:e=>new se(e.bus)},en={name:Pt.name,displayName:`Capability`,version:`0.1.0`,critical:!0,create:e=>new re(e.bus)},tn={name:It.name,displayName:`Workflow Block Registry`,version:`0.1.0`,critical:!0,create:e=>new $e(e.bus)},nn={name:Lt.name,displayName:`Transition Pipeline`,version:`0.1.0`,critical:!0,create:e=>new ct(e.bus)},rn={name:Rt.name,displayName:`Filesystem`,version:`0.1.0`,critical:!0,create:e=>new ue(e.bus,e.machineId)},an={name:zt.name,displayName:`Git`,version:`0.1.0`,dependencies:[x(Rt.name)],critical:!0,create:e=>new Ie(e.bus)};function on(e){return{name:Ft.name,displayName:`Model Registry`,version:`0.1.0`,critical:!0,create:t=>new ie({bus:t.bus,fetcher:e})}}const sn=[Wt,Gt,Kt,qt,$,Jt,xt,Yt,Xt,le,Zt,Qt,$t,en,At,G,St,tn,nn,an,rn];function cn(){let e=new Map;return{filter:e=>!!e.tools?.createToolsets,async processActivated(t,n,r){let i=r.getService(Q);if(!i)throw Error(`ToolRegistry is not available. Ensure toolRegistryPackage is included in the composition root.`);let a=n.tools.createToolsets(r),o=[];try{for(let e of a)await i.register(e),o.push(()=>i.deregister(e.metadata.name))}catch(e){for(let e=o.length-1;e>=0;--e)try{await o[e]()}catch(e){console.error(`[ToolContributionProcessor] Rollback error for "${t}":`,e)}throw e}e.set(t,o)},async processStopped(t){let n=e.get(t);if(n){for(let e=n.length-1;e>=0;--e)try{await n[e]()}catch(e){console.error(`[ToolContributionProcessor] Deregister error for "${t}":`,e)}e.delete(t)}}}}export{Qt as A,Qe as B,Kt as C,Yt as D,Xt as E,ct as F,Ge as G,qe as H,st as I,z as J,We as K,ot as L,nn as M,$t as N,$ as O,tn as P,K as R,on as S,Jt as T,Ke as U,G as V,W,R as Y,Nt as _,Bt as a,Wt as b,Ft as c,Y as d,Z as f,Lt as g,Q as h,Vt as i,Zt as j,qt as k,X as l,Mt as m,ke as n,Pt as o,Ut as p,Ue as q,cn as r,Ht as s,De as t,jt as u,It as v,sn as w,en as x,Gt as y,$e as z};