@makaio/framework 1.0.0-dev-1781472900225 → 1.0.0-dev-1781729394463

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 (401) hide show
  1. package/dist/.makaio-build.json +2 -2
  2. package/dist/{account-identity-D-9gunfD.mjs → account-identity-D5TUafYg.mjs} +1 -1
  3. package/dist/adapter-B5I7Wp4y.mjs +1 -0
  4. package/dist/adapters/config/index.d.mts +1 -1
  5. package/dist/adapters/config/index.mjs +1 -1
  6. package/dist/adapters/index.d.mts +3 -3
  7. package/dist/adapters/index.mjs +1 -1
  8. package/dist/adapters/node.d.mts +1 -1
  9. package/dist/adapters/node.mjs +1 -1
  10. package/dist/await-trigger-DcMVmNW5.mjs +1 -0
  11. package/dist/bus/index.d.mts +21 -21
  12. package/dist/bus/index.mjs +1 -1
  13. package/dist/bus-BgodbPl9.mjs +2 -0
  14. package/dist/bus-HgaFcCZ1.mjs +1 -0
  15. package/dist/canonical-model-BWGkgf3v.mjs +1 -0
  16. package/dist/{client-D24ebgGH.mjs → client-BO-0jTSV.mjs} +1 -1
  17. package/dist/compression-DMoeVgKx.mjs +1 -0
  18. package/dist/contracts/adapter/index.d.mts +2 -2
  19. package/dist/contracts/adapter/index.mjs +1 -1
  20. package/dist/contracts/adapter/schemas/session-lineage.d.mts +1 -1
  21. package/dist/contracts/artifact/index.d.mts +1 -1
  22. package/dist/contracts/canonical-model/index.d.mts +1 -1
  23. package/dist/contracts/canonical-model/index.mjs +1 -1
  24. package/dist/contracts/client/index.d.mts +2 -2
  25. package/dist/contracts/client/index.mjs +1 -1
  26. package/dist/contracts/common/index.d.mts +1 -1
  27. package/dist/contracts/config/index.d.mts +7 -7
  28. package/dist/contracts/config/index.mjs +1 -1
  29. package/dist/contracts/extension/index.d.mts +3 -3
  30. package/dist/contracts/extension/index.mjs +1 -1
  31. package/dist/contracts/facet/index.d.mts +1 -1
  32. package/dist/contracts/facet/index.mjs +1 -1
  33. package/dist/contracts/harness/index.d.mts +1 -1
  34. package/dist/contracts/harness/index.mjs +1 -1
  35. package/dist/contracts/host/index.d.mts +1 -1
  36. package/dist/contracts/host/index.mjs +1 -1
  37. package/dist/contracts/index.d.mts +208 -9719
  38. package/dist/contracts/index.mjs +1 -1
  39. package/dist/contracts/materialization/index.d.mts +3 -3
  40. package/dist/contracts/materialization/index.mjs +1 -1
  41. package/dist/contracts/model-registry/index.d.mts +1 -1
  42. package/dist/contracts/model-registry/index.mjs +1 -1
  43. package/dist/contracts/native-session-supervisor/index.d.mts +1 -1
  44. package/dist/contracts/native-session-supervisor/index.mjs +1 -1
  45. package/dist/contracts/platform/index.d.mts +1 -1
  46. package/dist/contracts/platform/index.mjs +1 -1
  47. package/dist/contracts/provider/index.d.mts +3 -3
  48. package/dist/contracts/provider/index.mjs +1 -1
  49. package/dist/contracts/session/index.d.mts +3 -3
  50. package/dist/contracts/session/index.mjs +1 -1
  51. package/dist/contracts/shared/index.d.mts +2 -1
  52. package/dist/contracts/skill/index.d.mts +1 -1
  53. package/dist/contracts/skill/index.mjs +1 -1
  54. package/dist/contracts/telemetry/index.d.mts +1 -1
  55. package/dist/contracts/telemetry/index.mjs +1 -1
  56. package/dist/contracts/timeout/index.d.mts +1 -1
  57. package/dist/contracts/toast/index.mjs +1 -1
  58. package/dist/contracts/variant/index.d.mts +1 -1
  59. package/dist/contracts/variant/index.mjs +1 -1
  60. package/dist/contracts/workflow/index.d.mts +3 -0
  61. package/dist/contracts/workflow/index.mjs +1 -0
  62. package/dist/definition-BJ_975aA.mjs +1 -0
  63. package/dist/{definition-B2FH_eOh.d.mts → definition-Cllhr9mi.d.mts} +13 -2
  64. package/dist/{definition-CZcVOhXZ.d.mts → definition-b9jyJqPD.d.mts} +1 -1
  65. package/dist/{detached-extension-handle-BYxNmLfv.mjs → detached-extension-handle-Cx6-0eqg.mjs} +1 -1
  66. package/dist/drizzle/0020_m_mqf47r9j.sql +1 -0
  67. package/dist/drizzle/meta/_journal.json +7 -0
  68. package/dist/{extension-CTkoi8MV.mjs → extension-BJHRahFl.mjs} +1 -1
  69. package/dist/{extension-DNrcv3V7.mjs → extension-CfL70C5n.mjs} +1 -1
  70. package/dist/{filesystem-service-T8JOIWeP.mjs → filesystem-service-Bmyqo6po.mjs} +1 -1
  71. package/dist/git/index.mjs +1 -1
  72. package/dist/{globby-Bos1vjKj.mjs → globby-D4SANVoq.mjs} +1 -1
  73. package/dist/{handlers-Cpy9Q8ho.mjs → handlers-BAycjV02.mjs} +2 -2
  74. package/dist/{harness-HEpELa_v.mjs → harness-DkUpbsuY.mjs} +1 -1
  75. package/dist/{index-BafN3wmA.d.mts → index-BAQ6QBcU.d.mts} +18 -18
  76. package/dist/{index-DDAviCTa.d.mts → index-BEzRpWsS.d.mts} +393 -354
  77. package/dist/{index-CciZTbYG.d.mts → index-CW_LbXdg.d.mts} +4 -4
  78. package/dist/{index-DKR_B-Oa.d.mts → index-CYHWOXUm.d.mts} +1 -1
  79. package/dist/{index-CKaFWH2Q.d.mts → index-CZJc-V9L.d.mts} +40 -19
  80. package/dist/index-Cjo24O5I.d.mts +10036 -0
  81. package/dist/{index-C2XLjebs.d.mts → index-CmHdpW0E.d.mts} +4 -4
  82. package/dist/{index-nEJX7pZ7.d.mts → index-D1KPCXBN.d.mts} +3 -3
  83. package/dist/{index-6QvT0ljq.d.mts → index-D9-vOJvZ.d.mts} +1 -1
  84. package/dist/{index-DGbTPRLw.d.mts → index-DKNmj2sa.d.mts} +22 -22
  85. package/dist/{index-BQ8H7cvY.d.mts → index-DLNRgZPo2.d.mts} +1 -1
  86. package/dist/{index-xeg-bqxO.d.mts → index-DMz-2ACU.d.mts} +105 -105
  87. package/dist/{index-DUI1W-zN.d.mts → index-DTBQOCar.d.mts} +8 -8
  88. package/dist/{index-XzH0OovV.d.mts → index-DWKCb-eJ.d.mts} +2 -2
  89. package/dist/{index-BBteExwv.d.mts → index-DiifAKRu.d.mts} +11 -4
  90. package/dist/{index-ldkFQKNM.d.mts → index-Dw7ErgWU.d.mts} +10 -457
  91. package/dist/{index-BZuF4I8O.d.mts → index-NkNbYFud.d.mts} +1 -55
  92. package/dist/{index-DBd4CgV5.d.mts → index-aciWhUWw.d.mts} +393 -393
  93. package/dist/{index-BaajomEP.d.mts → index-kwq54nx4.d.mts} +15 -15
  94. package/dist/{index-DNmENr9M.d.mts → index-mU2lnU7O.d.mts} +6 -6
  95. package/dist/json-value-DtIkQN7g.d.mts +57 -0
  96. package/dist/kernel/cli/index.d.mts +2 -2
  97. package/dist/kernel/cli/index.mjs +1 -1
  98. package/dist/kernel/cli/register.d.mts +1 -1
  99. package/dist/kernel/cli/register.mjs +1 -1
  100. package/dist/kernel/cli/schemas.mjs +1 -1
  101. package/dist/kernel/extension/index.d.mts +1 -1
  102. package/dist/kernel/extension/index.mjs +1 -1
  103. package/dist/kernel/index.d.mts +5 -5
  104. package/dist/kernel/index.mjs +1 -1
  105. package/dist/kernel/namespace/index.d.mts +1 -1
  106. package/dist/kernel/namespace/index.mjs +1 -1
  107. package/dist/kernel/observability/index.d.mts +1 -1
  108. package/dist/kernel/observability/index.mjs +1 -1
  109. package/dist/kernel/providers/index.d.mts +1 -1
  110. package/dist/kernel/providers/index.mjs +1 -1
  111. package/dist/kernel/window/index.d.mts +1 -1
  112. package/dist/kernel/window/index.mjs +1 -1
  113. package/dist/{lib-DkLlhp9Z.mjs → lib-Ba55od_d.mjs} +3 -3
  114. package/dist/{lib-jOuIcSs9.mjs → lib-CM_BUxN8.mjs} +1 -1
  115. package/dist/{load-extensions-D-DyzN4j.mjs → load-extensions-Cze1RHcG.mjs} +1 -1
  116. package/dist/{load-extensions-CQqw0Smr.d.mts → load-extensions-DNRIy4zC.d.mts} +1 -1
  117. package/dist/loop-gate-handlers-CwU5zAGs.mjs +1 -0
  118. package/dist/mcp-http-server/index.mjs +1 -1
  119. package/dist/{namespace-Ba1gUpUu.d.mts → namespace-3yGm4WF9.d.mts} +2 -2
  120. package/dist/{namespace-D8fZyqIh.d.mts → namespace-B95uYmZB.d.mts} +30 -30
  121. package/dist/{namespace-BxrHvS5c.mjs → namespace-C-piH3w4.mjs} +1 -1
  122. package/dist/{namespace-BQgZChZl.d.mts → namespace-COEUMuHL.d.mts} +154 -154
  123. package/dist/{namespace-Q-z7Lr2f.d.mts → namespace-CTsfVI3H.d.mts} +3 -3
  124. package/dist/{namespace-vf2H23bo.d.mts → namespace-DYJZAGzR.d.mts} +76 -39
  125. package/dist/namespace-DibbhCPP.mjs +1 -0
  126. package/dist/{native-session-supervisor-DbrqcFq9.mjs → native-session-supervisor-7ElwM6Is.mjs} +1 -1
  127. package/dist/node/bus-server/index.d.mts +1 -1
  128. package/dist/node/bus-server/index.mjs +1 -1
  129. package/dist/node/bus-server/server-lifecycle.d.mts +1 -1
  130. package/dist/node/bus-server/server-lifecycle.mjs +1 -1
  131. package/dist/{orchestrator-shared-yFP8e7d5.mjs → orchestrator-shared-Cxk3x8Vs.mjs} +1 -1
  132. package/dist/{package-fwIv7zzj.d.mts → package-MmQvNJ3u.d.mts} +1 -1
  133. package/dist/package-rdrXr17q.mjs +1 -0
  134. package/dist/package.json +1 -1
  135. package/dist/{profile-r4G32bCH.mjs → profile-BMBXUqqh.mjs} +1 -1
  136. package/dist/{provider-context-Ds6GNYnE.mjs → provider-context-DC_eq7es.mjs} +1 -1
  137. package/dist/provider-context-DjSUpHSM.mjs +1 -0
  138. package/dist/{providers-namespace-C0C-Sb4N.d.mts → providers-namespace-5GoTlHXz.d.mts} +7 -7
  139. package/dist/{registry-udUhXSIC.mjs → registry-U_3aYSin.mjs} +2 -1
  140. package/dist/rules/index.d.mts +1 -1
  141. package/dist/rules/index.mjs +1 -1
  142. package/dist/rules/schemas.d.mts +1 -1
  143. package/dist/runtime-bun/index.mjs +1 -1
  144. package/dist/runtime-node/extension-discovery.d.mts +1 -1
  145. package/dist/runtime-node/extension-validation.d.mts +1 -1
  146. package/dist/runtime-node/extension-validation.mjs +1 -1
  147. package/dist/runtime-node/index.d.mts +3 -3
  148. package/dist/runtime-node/index.mjs +2 -2
  149. package/dist/runtime-node/makaio-config.d.mts +1 -1
  150. package/dist/runtime-node/makaio-config.mjs +1 -1
  151. package/dist/runtime-node/workflow-worker/index.d.mts +1 -1
  152. package/dist/runtime-node/workflow-worker/index.mjs +1 -1
  153. package/dist/runtime-node/workflow-worker/worker-entry.mjs +1 -1
  154. package/dist/{schema-zLCdL-0u.d.mts → schema-B2bO5Yui.d.mts} +28 -2
  155. package/dist/{schema-atatXwNg.mjs → schema-D6WAI8OL.mjs} +1 -1
  156. package/dist/schemas-BWasvfw2.mjs +1 -0
  157. package/dist/{schemas-fEoe6H0K.d.mts → schemas-CDBn9MTz.d.mts} +154 -154
  158. package/dist/schemas-CE1gbhxu.mjs +1 -0
  159. package/dist/{schemas-IDGAJ_zv.d.mts → schemas-CscdPqCt.d.mts} +3 -3
  160. package/dist/{schemas-BbFAwUpf.d.mts → schemas-DMMWmWjq.d.mts} +1 -1
  161. package/dist/scoped-bus-H3xMYR0E.mjs +1 -0
  162. package/dist/services/adapter-runtime/index.d.mts +3 -3
  163. package/dist/services/adapter-runtime/index.mjs +1 -1
  164. package/dist/services/adapter-runtime/namespace.d.mts +1 -1
  165. package/dist/services/adapter-runtime/schemas.d.mts +1 -1
  166. package/dist/services/adapter-subsystem/index.d.mts +2 -2
  167. package/dist/services/adapter-subsystem/index.mjs +1 -1
  168. package/dist/services/adapter-subsystem/namespace.d.mts +1 -1
  169. package/dist/services/adapter-subsystem/namespace.mjs +1 -1
  170. package/dist/services/agent-runtime/index.d.mts +2 -2
  171. package/dist/services/agent-runtime/namespace.d.mts +1 -1
  172. package/dist/services/agent-runtime/schemas.d.mts +1 -1
  173. package/dist/services/capability/index.d.mts +1 -1
  174. package/dist/services/capability/index.mjs +1 -1
  175. package/dist/services/codebase/index.d.mts +2 -2
  176. package/dist/services/codebase/namespace.d.mts +1 -1
  177. package/dist/services/codebase/schemas.d.mts +1 -1
  178. package/dist/services/compression/index.d.mts +2 -2
  179. package/dist/services/compression/namespace.d.mts +1 -1
  180. package/dist/services/compression/schemas.d.mts +1 -1
  181. package/dist/services/context-rules/index.d.mts +1 -1
  182. package/dist/services/context-rules/index.mjs +1 -1
  183. package/dist/services/execution-target/index.d.mts +3 -3
  184. package/dist/services/execution-target/index.mjs +1 -1
  185. package/dist/services/execution-target/namespace.d.mts +1 -1
  186. package/dist/services/execution-target/schemas.d.mts +1 -1
  187. package/dist/services/filesystem/index.d.mts +1 -1
  188. package/dist/services/filesystem/index.mjs +1 -1
  189. package/dist/services/git/namespace.d.mts +2 -2
  190. package/dist/services/git/namespace.mjs +1 -1
  191. package/dist/services/git/schemas.d.mts +1 -1
  192. package/dist/services/git/schemas.mjs +1 -1
  193. package/dist/services/harness/index.d.mts +3 -3
  194. package/dist/services/harness/index.mjs +1 -1
  195. package/dist/services/index.d.mts +140 -140
  196. package/dist/services/index.mjs +1 -1
  197. package/dist/services/log-import/browser.d.mts +2 -2
  198. package/dist/services/log-import/index.d.mts +2 -2
  199. package/dist/services/log-import/log-import.d.mts +1 -1
  200. package/dist/services/log-import/log-import.mjs +1 -1
  201. package/dist/services/log-import/namespace.mjs +1 -1
  202. package/dist/services/log-import/schemas.mjs +1 -1
  203. package/dist/services/model-registry/index.d.mts +1 -1
  204. package/dist/services/model-registry/index.mjs +1 -1
  205. package/dist/services/preferences/index.d.mts +2 -2
  206. package/dist/services/preferences/schemas.d.mts +1 -1
  207. package/dist/services/preferences/storage-namespace.d.mts +2 -2
  208. package/dist/services/provider-context/index.d.mts +1 -1
  209. package/dist/services/provider-context/index.mjs +1 -1
  210. package/dist/services/provider-runtime/index.mjs +1 -1
  211. package/dist/services/session/handlers/index.d.mts +1 -1
  212. package/dist/services/session/handlers/index.mjs +1 -1
  213. package/dist/services/session/index.d.mts +9 -9
  214. package/dist/services/session/index.mjs +1 -1
  215. package/dist/services/session/messages/namespace.d.mts +1 -1
  216. package/dist/services/session/messages/namespace.mjs +1 -1
  217. package/dist/services/session/orchestrator-testing/index.d.mts +1 -1
  218. package/dist/services/session/orchestrator-testing/index.mjs +1 -1
  219. package/dist/services/session/session-events/namespace.d.mts +1 -1
  220. package/dist/services/session/session-events/namespace.mjs +1 -1
  221. package/dist/services/session/storage/namespace.d.mts +1 -1
  222. package/dist/services/session/storage/schema.d.mts +1 -1
  223. package/dist/services/session/storage/schema.mjs +1 -1
  224. package/dist/services/session/testing/index.mjs +2 -1
  225. package/dist/services/session/testing/orchestrator-shared.d.mts +1 -1
  226. package/dist/services/session/testing/orchestrator-shared.mjs +1 -1
  227. package/dist/services/session/turns/namespace.d.mts +1 -1
  228. package/dist/services/session/turns/namespace.mjs +1 -1
  229. package/dist/services/session-editor/index.d.mts +1 -1
  230. package/dist/services/session-editor/index.mjs +1 -1
  231. package/dist/services/settings/index.d.mts +3 -3
  232. package/dist/services/settings/index.mjs +1 -1
  233. package/dist/services/settings/namespace.mjs +1 -1
  234. package/dist/services/settings/storage/clients-namespace.d.mts +1 -1
  235. package/dist/services/settings/storage/clients-namespace.mjs +1 -1
  236. package/dist/services/settings/storage/index.d.mts +3 -3
  237. package/dist/services/settings/storage/index.mjs +1 -1
  238. package/dist/services/settings/storage/providers-namespace.d.mts +1 -1
  239. package/dist/services/settings/storage/providers-namespace.mjs +1 -1
  240. package/dist/services/subagent/index.d.mts +1 -1
  241. package/dist/services/subagent/index.mjs +1 -1
  242. package/dist/services/subagent-template/index.d.mts +2 -2
  243. package/dist/services/subagent-template/namespace.d.mts +1 -1
  244. package/dist/services/subagent-template/schemas.d.mts +1 -1
  245. package/dist/services/tool-approval/index.d.mts +1 -1
  246. package/dist/services/tool-approval/index.mjs +1 -1
  247. package/dist/services/tools/index.d.mts +1 -1
  248. package/dist/services/tools/index.mjs +1 -1
  249. package/dist/services/tray-menu/index.d.mts +3 -3
  250. package/dist/services/tray-menu/index.mjs +1 -1
  251. package/dist/services/tray-menu/namespace.d.mts +1 -1
  252. package/dist/services/tray-menu/schemas.d.mts +1 -1
  253. package/dist/services/turn/index.d.mts +1 -1
  254. package/dist/services/turn/namespace.d.mts +1 -1
  255. package/dist/session-0nWT4st6.mjs +39 -0
  256. package/dist/session-Bey-bzcX.mjs +1 -0
  257. package/dist/{skill-B_VlGon5.mjs → skill-N-ttlp1i.mjs} +1 -1
  258. package/dist/{src-6n-8M8EU.mjs → src-Ck2sbaDa.mjs} +1 -1
  259. package/dist/storage/drizzle/client.d.mts +1 -1
  260. package/dist/storage/drizzle/client.mjs +1 -1
  261. package/dist/storage/drizzle/index.d.mts +1 -1
  262. package/dist/storage/drizzle/index.mjs +1 -1
  263. package/dist/storage/handlers/drizzle/index.d.mts +1 -1
  264. package/dist/storage/handlers/drizzle/index.mjs +1 -1
  265. package/dist/storage/handlers/index.d.mts +1 -1
  266. package/dist/storage/handlers/index.mjs +1 -1
  267. package/dist/{tool-approval-service-B_28RhuK.mjs → tool-approval-service-DEQiipxj.mjs} +1 -1
  268. package/dist/{tools-BpzJterj.mjs → tools-uAgIrqan.mjs} +1 -1
  269. package/dist/transition-Coowd2dA.d.mts +454 -0
  270. package/dist/{types-BB8iIAjZ.d.mts → types-BslClRkH.d.mts} +1 -1
  271. package/dist/{types-DaznHkuE.d.mts → types-Cagp7JXb.d.mts} +279 -260
  272. package/dist/ui-kernel/index.d.mts +1 -1
  273. package/dist/ui-kernel/pages/schemas.d.mts +1 -1
  274. package/dist/{version-SYP_DX4M.mjs → version-DoV_pSzT.mjs} +1 -1
  275. package/dist/workflow-BCKOJ4UC.mjs +1 -0
  276. package/dist/workflow-engine/index.d.mts +61 -31
  277. package/dist/workflow-engine/index.mjs +1 -1
  278. package/dist/workflow-engine/package.d.mts +1 -1
  279. package/dist/workflow-engine/package.mjs +1 -1
  280. package/dist/workflow-engine/workflow-orchestrator.d.mts +3 -1
  281. package/dist/workflow-engine/workflow-orchestrator.mjs +1 -1
  282. package/dist/{workflow-worker-CjuRYLmJ.mjs → workflow-worker-CojIlB6k.mjs} +1 -1
  283. package/package.json +1 -1
  284. package/dist/adapter-ux2xaQ6H.mjs +0 -1
  285. package/dist/await-trigger-uKEHY8E4.mjs +0 -1
  286. package/dist/bus-EZNBPRYi.mjs +0 -2
  287. package/dist/bus-TDrZtNyc.mjs +0 -1
  288. package/dist/canonical-model-BE7t86yt.mjs +0 -1
  289. package/dist/compression-Cy9DIqyr.mjs +0 -1
  290. package/dist/definition-Bija4lGr.mjs +0 -1
  291. package/dist/namespace-CH_NWUKW.mjs +0 -1
  292. package/dist/package-lxB0vpby.mjs +0 -1
  293. package/dist/primitive-runtime-BSg8J7VX.mjs +0 -1
  294. package/dist/schemas-Dvm_0GDr.mjs +0 -1
  295. package/dist/scoped-bus-CRC3ba_l.mjs +0 -1
  296. package/dist/session-Is5VSP2V.mjs +0 -1
  297. package/dist/session-ZAJrcudH.mjs +0 -39
  298. /package/dist/{ajv-Cx19PP7Q.mjs → ajv-B5dPIck0.mjs} +0 -0
  299. /package/dist/{base-orchestrator-BRq4MXa7.d.mts → base-orchestrator-Cw0vpNgB.d.mts} +0 -0
  300. /package/dist/{capability-service-CHl8rrwb.mjs → capability-service-XlymTzz1.mjs} +0 -0
  301. /package/dist/{cleanEnvForAdapter-D32WnVuy.mjs → cleanEnvForAdapter-BooAgM2R.mjs} +0 -0
  302. /package/dist/{client-D2ZftNb6.d.mts → client-CebV_fZc.d.mts} +0 -0
  303. /package/dist/{clients-namespace-CeAB0t06.d.mts → clients-namespace-Bt_VTkEU.d.mts} +0 -0
  304. /package/dist/{config-namespace-DW5KHKPW.mjs → config-namespace-CY9leBnE.mjs} +0 -0
  305. /package/dist/{config-namespace-DloU-hNB.d.mts → config-namespace-DqdFE6zk.d.mts} +0 -0
  306. /package/dist/{create-static-mount-Bi0VpYS8.mjs → create-static-mount-DkK28kKW.mjs} +0 -0
  307. /package/dist/{cross-spawn-C58yEvsS.mjs → cross-spawn-CDXy3BjE.mjs} +0 -0
  308. /package/dist/{cursor-storage-CpuT5POU.mjs → cursor-storage-luQAg7E_.mjs} +0 -0
  309. /package/dist/{definition-BdxbXbrq.d.mts → definition-CuJvtYeG.d.mts} +0 -0
  310. /package/dist/{descriptor-to-package-D-FNxohm.mjs → descriptor-to-package-DdpjpT7n.mjs} +0 -0
  311. /package/dist/{drizzle-D7dkDEB5.mjs → drizzle-DVTAl7Us.mjs} +0 -0
  312. /package/dist/{esm-CP2zvvlx.mjs → esm-CQG9Pc7n.mjs} +0 -0
  313. /package/dist/{event-DaXakaHo.mjs → event-DguYjV6D.mjs} +0 -0
  314. /package/dist/{execution-target-Da6Vjvba.mjs → execution-target-BR8bLkCR.mjs} +0 -0
  315. /package/dist/{extension-discovery-Bv5FDtrM.d.mts → extension-discovery-CIZn5bkq.d.mts} +0 -0
  316. /package/dist/{extension-namespace-O3sKdnY9.mjs → extension-namespace-v3K0qVry.mjs} +0 -0
  317. /package/dist/{facet-Q_vgXb23.mjs → facet-BM4y4aQP.mjs} +0 -0
  318. /package/dist/{filesystem-service-89fN-2Dd.d.mts → filesystem-service-Cwp0sWNc.d.mts} +0 -0
  319. /package/dist/{handler-BIA3ld4C.mjs → handler-2bPhRn0u.mjs} +0 -0
  320. /package/dist/{host-DFqmG2qO.mjs → host-vY07gek-.mjs} +0 -0
  321. /package/dist/{identity-CA5MzB19.mjs → identity-BarL3JYI.mjs} +0 -0
  322. /package/dist/{index-BVhnqzDC2.d.mts → index-B92mToDo2.d.mts} +0 -0
  323. /package/dist/{index-9vCtepE32.d.mts → index-BWIkf5oJ.d.mts} +0 -0
  324. /package/dist/{index-cFuQpzIm.d.mts → index-BjoOSg95.d.mts} +0 -0
  325. /package/dist/{index-BeNVLvtk2.d.mts → index-BvLXySoB2.d.mts} +0 -0
  326. /package/dist/{index-DJSffYTW2.d.mts → index-C23g_M_J2.d.mts} +0 -0
  327. /package/dist/{index-kOSSuOcK.d.mts → index-C4nStEdA.d.mts} +0 -0
  328. /package/dist/{index-DHHKwLww.d.mts → index-COI1tjAf.d.mts} +0 -0
  329. /package/dist/{index-DLPjliGd.d.mts → index-CfIW5biI.d.mts} +0 -0
  330. /package/dist/{index-orAkFukT.d.mts → index-CpKikwK4.d.mts} +0 -0
  331. /package/dist/{index-CkPIPbx9.d.mts → index-Cr9lh21j.d.mts} +0 -0
  332. /package/dist/{index-CBTp2XuF.d.mts → index-CuHqL95P.d.mts} +0 -0
  333. /package/dist/{index-CfpfkKih.d.mts → index-D3ahzHwb.d.mts} +0 -0
  334. /package/dist/{index-BE-yMFTz.d.mts → index-D7Hkmrr3.d.mts} +0 -0
  335. /package/dist/{index-DWqSqcpW.d.mts → index-DOOrKin9.d.mts} +0 -0
  336. /package/dist/{index-CYZqADXY2.d.mts → index-DUD7wikz2.d.mts} +0 -0
  337. /package/dist/{index-BUilJdHr.d.mts → index-Dfi8Rorw.d.mts} +0 -0
  338. /package/dist/{index-BplsE3qw.d.mts → index-DtwGhFFQ.d.mts} +0 -0
  339. /package/dist/{index-DVgKfgh1.d.mts → index-OGIC4puQ.d.mts} +0 -0
  340. /package/dist/{index-D0RWuwl5.d.mts → index-Y8rMeYYX.d.mts} +0 -0
  341. /package/dist/{index-BtL_9HBk.d.mts → index-gAFwNiJT.d.mts} +0 -0
  342. /package/dist/{index-DdCyeZ59.d.mts → index-wq7XeqyG.d.mts} +0 -0
  343. /package/dist/{jsonl-transport-Bb8ltqOe.mjs → jsonl-transport-CGPgD8iU.mjs} +0 -0
  344. /package/dist/{lib-BmcGxHXH.mjs → lib-ZKtnbCqH.mjs} +0 -0
  345. /package/dist/{materialization-DsPIGQP1.mjs → materialization-DBXjSiBn.mjs} +0 -0
  346. /package/dist/{model-registry-DQDclqdw.mjs → model-registry-C2VXobZj.mjs} +0 -0
  347. /package/dist/{model-registry-DLeMw3l8.mjs → model-registry-rYICIwyR.mjs} +0 -0
  348. /package/dist/{namespace-CEqkI6Zu.d.mts → namespace-65uwTpbg.d.mts} +0 -0
  349. /package/dist/{namespace-6u1Uf-iw2.d.mts → namespace-6sIu5nBI2.d.mts} +0 -0
  350. /package/dist/{namespace-q5dD3acO.d.mts → namespace-B3ol3pc-.d.mts} +0 -0
  351. /package/dist/{namespace-DrpHLJAy.mjs → namespace-BO3tODGC.mjs} +0 -0
  352. /package/dist/{namespace-uGUGfpGQ.mjs → namespace-BdO4e1Fm.mjs} +0 -0
  353. /package/dist/{namespace-2G7A4Sza.d.mts → namespace-BsYKEMd8.d.mts} +0 -0
  354. /package/dist/{namespace-DMhz3yvr.d.mts → namespace-CQ8uza7o.d.mts} +0 -0
  355. /package/dist/{namespace-zWB-ULrX.mjs → namespace-CVMZVqB5.mjs} +0 -0
  356. /package/dist/{namespace-nQS4XwnT.d.mts → namespace-D2s-4pyg.d.mts} +0 -0
  357. /package/dist/{namespace-FJsnoEQy.mjs → namespace-DBHwyhME.mjs} +0 -0
  358. /package/dist/{namespace-CN-Llu7H.mjs → namespace-DYSFDC2G.mjs} +0 -0
  359. /package/dist/{namespace-DcUwOJ4f.d.mts → namespace-Dk4OslmY.d.mts} +0 -0
  360. /package/dist/{namespace-B1Bldc48.d.mts → namespace-KMxsPJwm.d.mts} +0 -0
  361. /package/dist/{namespace-DKnJL0Ja.d.mts → namespace-LUNf8zo5.d.mts} +0 -0
  362. /package/dist/{namespace-UUw-S7ia.mjs → namespace-wke7juzy.mjs} +0 -0
  363. /package/dist/{orchestrator-shared-CbS4ueeq.d.mts → orchestrator-shared-ChOdIgh6.d.mts} +0 -0
  364. /package/dist/{out-BUHr98Xe.mjs → out-BoEZjBNz.mjs} +0 -0
  365. /package/dist/{package-YQeRE8bV.mjs → package-CF_Zm2v4.mjs} +0 -0
  366. /package/dist/{platform-CsO-MRJP.mjs → platform-DnbSvm2u.mjs} +0 -0
  367. /package/dist/{providers-FEZT2bQG.mjs → providers-Bd7BOZs0.mjs} +0 -0
  368. /package/dist/{quick-lru-C7AXdpbU.mjs → quick-lru-6e7I1Bgf.mjs} +0 -0
  369. /package/dist/{schema-Ba64XQjo.mjs → schema-DHlTAy0N.mjs} +0 -0
  370. /package/dist/{schema-introspection-D5FaI5B_.mjs → schema-introspection-B7xODt4I.mjs} +0 -0
  371. /package/dist/{schemas-9QC3nvYP.mjs → schemas-ArqQTC0Q.mjs} +0 -0
  372. /package/dist/{schemas-DznsZ0bq.d.mts → schemas-B6tEKf9T.d.mts} +0 -0
  373. /package/dist/{schemas-CRS7tkFP.d.mts → schemas-BemsLc_V.d.mts} +0 -0
  374. /package/dist/{schemas-C5iazMbM2.d.mts → schemas-ByssHRGU2.d.mts} +0 -0
  375. /package/dist/{schemas-5kegIs9D.mjs → schemas-CPI00yvh.mjs} +0 -0
  376. /package/dist/{schemas-Cae5dubB.d.mts → schemas-D4zaFE2p.d.mts} +0 -0
  377. /package/dist/{schemas-9Ifo5zSf.d.mts → schemas-DKncXGnb.d.mts} +0 -0
  378. /package/dist/{schemas-DZfBym73.d.mts → schemas-DWfo0wp4.d.mts} +0 -0
  379. /package/dist/{schemas-BxI5Yq8d.d.mts → schemas-DmGRSeIq.d.mts} +0 -0
  380. /package/dist/{schemas-BSAKbVyd.d.mts → schemas-KlH1hB7u.d.mts} +0 -0
  381. /package/dist/{schemas-DAYPhB5K.mjs → schemas-XeIBqwvE.mjs} +0 -0
  382. /package/dist/{semver-ClOD8k8c.mjs → semver-CIhHqMkw.mjs} +0 -0
  383. /package/dist/{server-lifecycle-CFQaPTf7.mjs → server-lifecycle-C5Z5PSMD.mjs} +0 -0
  384. /package/dist/{server-lifecycle-5iHxcgBO.d.mts → server-lifecycle-_AA6EfzL.d.mts} +0 -0
  385. /package/dist/{session-lineage-D_8W1MI0.d.mts → session-lineage-Cht4jbvV.d.mts} +0 -0
  386. /package/dist/{shared-schemas-jG3EtHZT.mjs → shared-schemas-BEVG96xW.mjs} +0 -0
  387. /package/dist/{src-CRDOZl7K.mjs → src-_VODAJnf.mjs} +0 -0
  388. /package/dist/{storage-namespace-C1JVmZF1.mjs → storage-namespace-D5q9CrBp.mjs} +0 -0
  389. /package/dist/{storage-namespace-gey7EUhM.d.mts → storage-namespace-Di1A3DMm.d.mts} +0 -0
  390. /package/dist/{storage-namespace-definition-BPYSLTfN.d.mts → storage-namespace-definition-BffdI5Bz.d.mts} +0 -0
  391. /package/dist/{storage-namespace-definition-Df8S3E3r.mjs → storage-namespace-definition-CzXPW45M.mjs} +0 -0
  392. /package/dist/{supports-color-AnssSSH9.mjs → supports-color-DcXkvGDF.mjs} +0 -0
  393. /package/dist/{telemetry-DdbvlZ8s.mjs → telemetry-Cvi4rxiE.mjs} +0 -0
  394. /package/dist/{tray-menu-service-am356993.mjs → tray-menu-service-B2AxiQqL.mjs} +0 -0
  395. /package/dist/{types-DhlQpVEb.d.mts → types-BMS6yfLS.d.mts} +0 -0
  396. /package/dist/{types-xLd-e0wf.d.mts → types-Bo78h9e3.d.mts} +0 -0
  397. /package/dist/{types-D-GeeSdd.d.mts → types-CPmOg4X7.d.mts} +0 -0
  398. /package/dist/{types-Bj7cOrBQ.d.mts → types-DCvp_swt.d.mts} +0 -0
  399. /package/dist/{variant-BdNN5edM.mjs → variant-5huHjUTm.mjs} +0 -0
  400. /package/dist/{window-registry-LRjWPwr4.mjs → window-registry-PkrFIwX2.mjs} +0 -0
  401. /package/dist/{window-registry-CA6AC8n7.d.mts → window-registry-ofIUQnfo.d.mts} +0 -0
@@ -1,4 +1,4 @@
1
- import{i as e,o as t,t as n}from"../chunk-DTipWd-i.mjs";import{t as r}from"../semver-ClOD8k8c.mjs";import{RuntimeNamespace as i,RuntimeSubjects as a}from"./bus/runtime/namespace.mjs";import{ExplicitDescriptorDiscovery as o,FilesystemDescriptorDiscovery as s}from"./extension-discovery.mjs";import{MAKAIO_CONFIG_FILE_ENV as c,MAKAIO_HOME_ENV as l,buildConfiguredRuntimeOptions as u,createMakaioConfigDiscovery as d,defineMakaioConfig as f,loadMakaioConfig as p,parseMakaioConfig as m,resolveMakaioConfigPath as h,resolveMakaioHome as g,shouldIncludeExtension as _}from"./makaio-config.mjs";import{t as v}from"../descriptor-to-package-D-FNxohm.mjs";import{a as y,c as b,i as x,n as S,o as C,r as w,s as T,t as E}from"../load-extensions-D-DyzN4j.mjs";import{i as ee,o as te,r as ne,s as re,t as ie}from"../workflow-worker-CjuRYLmJ.mjs";import{createRequire as ae}from"node:module";import{z as D}from"zod";import{execFile as oe}from"node:child_process";import{promisify as se}from"node:util";import{fileURLToPath as ce,pathToFileURL as O}from"node:url";import*as k from"node:fs/promises";import*as A from"node:path";import j from"node:path";import*as M from"node:crypto";import{createHash as N}from"node:crypto";import*as P from"node:fs";import{existsSync as F,readFileSync as le}from"node:fs";import{createBusNamespace as ue}from"@makaio/framework/core";import{ChannelClosedError as de,MakaioBus as fe,openChannel as pe,projectSubjectTelemetryFacts as me}from"@makaio/framework/bus";import{AIModelSchema as he,AdapterSubjects as ge,BUILT_IN_THIN_WORKFLOW_PROVIDER_ID as _e,ConfigSchema as I,ConfigSubjects as L,CredentialSubjects as ve,FrameworkContractNamespaces as ye,FrameworkStorageNamespaces as be,SubjectTelemetrySubjects as xe,isDetachedDescriptor as Se,registerWorkerNodeProvider as Ce,safeParseExtensionDescriptor as we,unregisterWorkerNodeProvider as Te,versionSatisfies as Ee}from"@makaio/framework/contracts";import{DispatchingAuth as De,E2EAuth as Oe,HmacAuth as ke,WebSocketClientTransport as Ae}from"@makaio/framework/node/transports";import{BaseService as je}from"@makaio/framework/service-base";import{uniqueIndex as Me}from"drizzle-orm/sqlite-core";import{uniqueIndex as Ne}from"drizzle-orm/pg-core";import{STORAGE_ENGINE_URL_HINTS as Pe,defineDialectSchema as Fe,defineDualTable as Ie,findStorageEngine as Le,getDatabaseDialect as Re,getRawSqlExecutor as ze,getStorageEngine as Be,registerDrizzleHandlers as Ve,registerStorageEngine as He,resolveSchema as Ue,resolveStorageEngine as We,resolveStorageEngineForUrl as Ge}from"@makaio/framework/storage/drizzle";import{and as Ke,eq as R,sql as z}from"drizzle-orm";import{parseStoredCredentialRef as qe}from"@makaio/framework/contracts/config";import{AdapterRuntimeSubjects as Je,registerAdapterRuntimeIdentityHandlers as Ye}from"@makaio/framework/services/adapter-runtime";import{buildProviderContext as Xe}from"@makaio/framework/services/provider-context";import*as Ze from"node:os";import{ProviderStorageSubjects as Qe}from"@makaio/framework/services/settings/storage";import{isRecord as $e}from"@makaio/framework/utils";import{AdapterSubsystemSubjects as et}from"@makaio/framework/services/adapter-subsystem";import{BootNamespace as tt,ExtensionCoordinator as nt,ExtensionNamespace as rt,KernelNamespace as it,coalesceExtensionOverrides as at,createShutdownSequence as ot,filterEligibleExtensions as st}from"@makaio/framework/kernel";import{CachedRegistryFetcher as ct,FallbackRegistryFetcher as lt,ModelRegistrySchema as ut,ProviderModelOverrideSchema as dt,mergeModelMetadata as ft}from"@makaio/framework/services/model-registry";import{createClientsCorePackage as pt}from"@makaio/framework/clients";import{Readable as mt,Transform as ht}from"node:stream";import{pipeline as gt}from"node:stream/promises";import{createDatabaseClient as _t}from"@makaio/framework/storage/drizzle/client";import{AdapterSubsystemToken as vt,FileAdapterConfigRepository as yt,createAdapterSubsystemContributionProcessor as bt,createAdapterSubsystemPackage as xt}from"@makaio/framework/adapter-subsystem";import{loadOrCreateMachineIdentity as St,loadOrCreateMachineIdentity as Ct,machineKeysExist as wt,validateMachineKeys as Tt}from"@makaio/framework/node/machine-identity";import{resolveWorkspaceRoot as Et}from"@makaio/framework/utils/workspace-root";import{Hono as Dt}from"hono";import{CliNamespace as Ot}from"@makaio/framework/kernel/cli";import{startBusServer as kt}from"@makaio/framework/node/bus-server";import{WebSocketServer as At}from"ws";import{ConfigProvider as jt}from"@makaio/framework/providers";import{KernelSubjects as B}from"@makaio/framework/kernel/namespace";import{FrameworkServicesCoreNamespaces as Mt,SessionOrchestratorToken as Nt,createArtifactKindContributionProcessor as Pt,createArtifactLifecycleHookContributionProcessor as Ft,createFacetNamespaceContributionProcessor as It,createModelRegistryPackage as Lt,createSurfaceBindingContributionProcessor as Rt,createToolContributionProcessor as zt,createTransitionContributionProcessor as Bt,createWorkflowBlockContributionProcessor as Vt,frameworkCorePackages as Ht}from"@makaio/framework/services";import{createLogImportContributionProcessor as Ut,logImportRegistryPackage as Wt}from"@makaio/framework/services/log-import";import{createWorkflowEnginePackage as Gt}from"@makaio/framework/workflow-engine/package";import{PreferenceValueSchema as Kt,PreferencesSubjects as qt}from"@makaio/framework/services/preferences";import{resolveConnectorCredentials as Jt,resolveCredentialRef as Yt}from"@makaio/framework/adapters/config";import{DefinitionSubjects as Xt}from"@makaio/framework/services/definition";import{ProviderRuntimeSubjects as Zt}from"@makaio/framework/services/provider-runtime";import{SettingsSubjects as Qt}from"@makaio/framework/services/settings/namespace";import{parseWorkspaceGlobs as $t}from"@makaio/framework/utils/workspace-packages";import{serveStatic as en}from"@hono/node-server/serve-static";function tn(e){return e.on(ge.getCapabilities,async t=>{let{adapterName:n,adapterId:r}=t.payload;if(r){await t.next();return}if(n){let r=await e.requestOptional(Je.resolveId,{adapterName:n}),i=r.handled?r.data.adapterId:void 0;i&&(t.payload.adapterId=i)}await t.next()},{priority:20})}function nn(e){let{coordinator:t,configRepository:n,platformDefaults:r}=e,i=xt({configRepository:n,coordinator:t,platformDefaults:r});return t.registerContributionProcessor(bt({getAdapterSubsystemService:()=>t.getExtensionService(vt)})),{adapterSubsystemPackage:i}}function rn(e){let{bus:t,currentMachineId:n}=e,r=Ye(t,{currentMachineId:n,listKnownAdapterNames:e.listKnownAdapterNames??(async()=>{let{configs:e}=await t.request(et.listAdapterConfigs,{});return e.map(e=>e.name)})}),i=tn(t);return{cleanup:()=>{r.cleanup(),i()}}}function an(e=`sqlite`){let{migrations:t}=Be(e);return t.resolveSourceChainDir?.()??j.resolve(import.meta.dirname,`..`,t.chainDirName)}var on=class extends Error{expectedDialect;journalDialect;constructor(e,t,n,r){super(`Migration journal at ${r} declares dialect '${n??`unknown`}', but the target database speaks '${e}'. Point the runner at a migrations directory generated for '${e}' (journal dialect '${t}').`),this.name=`MigrationDialectMismatchError`,this.expectedDialect=e,this.journalDialect=n}};function sn(e={}){let t=typeof e==`string`?void 0:e.expectedDialect,n=typeof e==`string`?e:e.migrationsDir??an(t),r=j.join(n,`meta`,`_journal.json`);if(!F(r))throw Error(`Cannot find migrations journal at ${r}`);let i=JSON.parse(le(r,`utf-8`));if(t!==void 0){let e=Be(t).migrations.journalDialect;if(i.dialect!==e)throw new on(t,e,i.dialect,r)}return i.entries.map(e=>{let t=le(j.join(n,`${e.tag}.sql`),`utf-8`);return{tag:e.tag,sql:t.split(`--> statement-breakpoint`),folderMillis:e.when,hash:N(`sha256`).update(t).digest(`hex`),bps:e.breakpoints}})}function cn(e){return e.replace(/--.*$/gm,``).trim()}async function ln(e,t){try{await e.run(z.raw(`ROLLBACK`))}catch(e){console.error(`[storage-migrations] Failed to roll back migration transaction`,{...t,rollbackError:e})}}async function un(e){let{migrations:t}=e.engine;if(await e.session.run(z.raw(t.beginTransactionStatement)),t.acquireTransactionLock)try{await t.acquireTransactionLock(e.session,e.tableName)}catch(t){throw await ln(e.session,{migrationsTable:e.tableName}),t}}async function dn(e){let t=e.engine.migrations.acquireTransactionLock!==void 0;t&&await un(e);try{await e.session.run(z.raw(e.engine.migrations.buildLedgerDdl(e.tableName)));let n=await e.session.all(z`SELECT hash FROM ${e.tableId}`);return t&&await e.session.run(z.raw(`COMMIT`)),new Set(n.map(e=>e.hash))}catch(n){throw t&&await ln(e.session,{migrationsTable:e.tableName}),n}}async function fn(e,t){try{await e.session.run(z`INSERT INTO ${e.tableId} ("hash", "created_at") VALUES (${t.hash}, ${t.folderMillis})`),await e.session.run(z.raw(`COMMIT`))}catch(e){throw console.error(`[storage-migrations] Failed to finalize migration`,{hash:t.hash,folderMillis:t.folderMillis,error:e}),e}}async function pn(e,t){return e.engine.migrations.acquireTransactionLock===void 0||(await e.session.all(z`SELECT hash FROM ${e.tableId} WHERE hash = ${t.hash}`)).length===0?!1:(console.warn(`[storage-migrations] Migration already recorded by a concurrent runner, skipping`,{hash:t.hash,folderMillis:t.folderMillis}),await e.session.run(z.raw(`COMMIT`)),!0)}async function mn(e,t){await e.session.run(z.raw(`ROLLBACK`)),await un(e),!await pn(e,t)&&await fn(e,t)}async function hn(e,t){await un(e);try{if(await pn(e,t))return;for(let[n,r]of t.sql.entries())if(cn(r))try{await e.session.run(z.raw(r))}catch(i){if(n===0&&/^\s*CREATE\s/i.test(r)&&e.engine.errors.isDuplicateObjectError(i)){if(t.sql.length>1)throw Error(`Cannot adopt multi-statement migration '${t.tag}' because its first schema object already exists. Reset the database or provide an incremental migration.`,{cause:i});console.warn(`[storage-migrations] Schema object already exists, adopting into ledger`,{hash:t.hash,folderMillis:t.folderMillis,statementIndex:n}),await mn(e,t);return}throw console.error(`[storage-migrations] Failed to apply migration statement`,{hash:t.hash,folderMillis:t.folderMillis,statementIndex:n,statement:r,error:i}),i}await fn(e,t)}catch(n){throw await ln(e.session,{hash:t.hash,folderMillis:t.folderMillis}),n}}async function gn(e,t,n){let r=ze(e),i=Be(r.dialect),a=n??i.migrations.defaultLedgerTable;await r.withSession(async e=>{let n={session:e,engine:i,tableName:a,tableId:z.identifier(a)},r=await dn(n);for(let e of t)r.has(e.hash)||(await hn(n,e),r.add(e.hash))})}async function _n(e,t={}){await gn(e,sn({migrationsDir:t.migrationsDir,expectedDialect:Re(e)})),await We(e).fts.provisionSearchIndex(e)}var vn=class{configPath;constructor(e){this.configPath=A.join(e,`config.json`)}async getConfig(){try{let e=await k.readFile(this.configPath,`utf-8`);return I.parse(JSON.parse(e))}catch(e){if(e.code===`ENOENT`)return I.parse({});if(e instanceof SyntaxError||e instanceof Error&&e.name===`ZodError`)return console.warn(`[FileConfigStorage] Failed to parse config, falling back to defaults:`,e),I.parse({});throw e}}async saveConfig(e){let t=A.dirname(this.configPath);await k.mkdir(t,{recursive:!0}),await k.writeFile(this.configPath,JSON.stringify(e,null,2),{encoding:`utf-8`,mode:384}),await k.chmod(this.configPath,384)}};function yn(e){try{let t=A.resolve(Et(e),`static/model-registry.yaml`);return F(t)?t:void 0}catch{return}}async function bn(e,t){await new Promise((n,r)=>{if(e.address()){n();return}let i=e=>{if(o(),e.code===`EADDRINUSE`){r(Error(`Port ${t} is already in use`));return}r(e)},a=()=>{o(),n()},o=()=>{e.off(`error`,i),e.off(`listening`,a)};e.once(`error`,i),e.once(`listening`,a)}),e.on(`error`,e=>{console.error(`[HttpServer] Post-bind error:`,e)})}function xn(e){let t=e.address();if(typeof t==`object`&&t&&`port`in t)return t.port;throw Error(`HTTP server is not bound to a TCP address`)}function Sn(e,t){let n=e,r=!1;return{fetch:(e,i,a)=>{if(!r)return new Response(`Makaio runtime is booting`,{status:503,headers:{"Retry-After":`1`}});let{pathname:o}=new URL(e.url);return t?.health&&e.method===`GET`&&o===`/health`?Response.json(t.health()):e.method===`GET`&&o===`/bus`?new Response(`WebSocket endpoint`,{status:426,headers:{Upgrade:`websocket`}}):n.fetch(e,i,a)},markReady(){r=!0},replaceApp(e){n=e}}}const Cn=[`extension`,`static-fallback`];function wn(e){let t=[];function n(e){let t=new Dt,n=[...e].sort((e,t)=>Cn.indexOf(e.phase)-Cn.indexOf(t.phase));for(let e of n)e.mount(t);return t}function r(){return n(t)}function i(r){e&&e.replaceApp(n(r)),t=r}return{add(e){i([...t,e])},remove(e){let n=t.filter(t=>t.owner!==e);n.length!==t.length&&i(n)},build:r,get contributions(){return[...t]}}}function Tn(e,t){if(!(e instanceof Error))return!1;let{rootPackageName:n,subpath:r}=Dn(t),i=(r===void 0?[t]:[t,n]).flatMap(e=>[`Cannot find package '${e}'`,`Cannot find module '${e}'`,`Cannot find package "${e}"`,`Cannot find module "${e}"`]),a=e;return(a.code===`ERR_MODULE_NOT_FOUND`||a.code===`MODULE_NOT_FOUND`)&&i.some(t=>e.message.includes(t))||a.code===`ERR_PACKAGE_PATH_NOT_EXPORTED`&&r!==void 0&&e.message.includes(`Package subpath '${r}' is not defined by "exports"`)&&On(e.message,n)?!0:i.some(t=>e.message.includes(t))}async function En(e){try{return await import(e)}catch(t){if(Tn(t,e))return null;throw t}}function Dn(e){let t=e.split(`/`);return e.startsWith(`@`)?{rootPackageName:t.slice(0,2).join(`/`),subpath:t.length>2?`./${t.slice(2).join(`/`)}`:void 0}:{rootPackageName:t[0]??e,subpath:t.length>1?`./${t.slice(1).join(`/`)}`:void 0}}function On(e,t){let n=t,r=t.replaceAll(`/`,`\\`);return e.includes(`/${n}/package.json`)||e.includes(`\\${r}\\package.json`)}function kn(e){let t=e.url?.split(`?`)[0]??``;return t===`/bus`?!0:(t===`/`||t===``)&&e.headers.origin===void 0}function An(e,t){return(n,r,i)=>{if(!kn(n))return;let a=e();if(!a||!t()){r.destroy();return}a.handleUpgrade(n,r,i,e=>{a.emit(`connection`,e,n)})}}var jn=class{options;busServer=null;websocketServer=null;upgradeHandlerServer=null;upgradeHandler=null;busReady=!1;connecting=!1;constructor(e){this.options=e}get dispatchingAuth(){return this.options.auth instanceof De?this.options.auth:void 0}async connect(e,t){if(this.connecting||this.busServer||this.websocketServer)throw Error(`[BusServerTransport] connect() called while transport is already connected or connecting`);if(this.options.httpServer.address()===null)throw Error(`[BusServerTransport] httpServer must already be listening before connect() is called`);this.connecting=!0;try{let t=new At({noServer:!0});this.websocketServer=t;let n=An(()=>this.websocketServer,()=>this.busReady);this.options.httpServer.on(`upgrade`,n),this.upgradeHandlerServer=this.options.httpServer,this.upgradeHandler=n,this.busServer=await kt({websocket:t,bus:e,auth:this.options.auth,loopbackName:this.options.loopbackName??`node`}),this.busReady=!0}catch(e){throw await this.stopBusServer(`startup error`),this.detachUpgradeHandler(),await this.stopWebSocketServer(`startup error`),e}finally{this.connecting=!1}}async disconnect(){await this.stopBusServer(`shutdown`),this.detachUpgradeHandler(),await this.stopWebSocketServer(`shutdown`)}async stopBusServer(e){this.busReady=!1,this.busServer&&=(await this.busServer.stop().catch(t=>{console.error(`[BusServerTransport] Failed to stop bus server during ${e}:`,t)}),null)}detachUpgradeHandler(){this.upgradeHandlerServer&&this.upgradeHandler&&this.upgradeHandlerServer.off(`upgrade`,this.upgradeHandler),this.upgradeHandlerServer=null,this.upgradeHandler=null}async stopWebSocketServer(e){this.websocketServer&&=(await new Promise((e,t)=>{this.websocketServer.close(n=>n?t(n):e())}).catch(t=>{t instanceof Error&&t.message===`The server is not running`||console.error(`[BusServerTransport] Failed to close WebSocket server during ${e}:`,t)}),null)}},Mn=class extends jt{keysDir;constructor(e,t){super(e),this.keysDir=A.join(t,`keys`)}async getConfig(e){let t=await super.getConfig(e);return t.bus?.remote&&!t.bus.remote.secret&&(t.bus.remote.secret=this.generateSecret(),(await this.getStoredConfig()).bus?.remote?.url===t.bus.remote.url&&await this.saveConfig(await this.prepareConfigForPersistence(t))),t}generateSecret(){return M.randomBytes(32).toString(`base64`)}async getMachineId(){return(await Ct(this.keysDir)).machineId}getEnv(e){return process.env[e]}};function Nn(e,t){return{extensions:e.discovery??new s(void 0,{extensionsDir:j.join(t,`extensions`),nodeModulesDir:j.join(t,`node_modules`)})}}function Pn(e){return F(j.join(e,`meta`,`_journal.json`))}function Fn(e,t={}){let{moduleDir:n=import.meta.dirname,getMigrationsFolder:r=an}=t,i=Be(e).migrations.chainDirName,a=[],o=j.resolve(n,`..`,i);if(Pn(o))return o;a.push(o);try{let t=r(e);if(Pn(t))return t;a.push(t)}catch(t){a.push(`getMigrationsFolder('${e}') unavailable: ${t instanceof Error?t.message:String(t)}`)}throw Error(`resolveBundledMigrationsDir: no '${e}' migrations directory with meta/_journal.json found. Probed: ${a.join(`; `)}. Pass an explicit migrations directory (boot option 'centralMigrationsDir' or InitializeNodeDatabaseOptions.migrationsDir) when migrations are staged elsewhere.`)}function In(e){if(process.platform===`win32`)return!0;let t=e?.code;return t===`ENOSYS`||t===`EINVAL`}function Ln(e){return e===void 0||e.trim()===``?void 0:e}function Rn(e){try{let t=new URL(e);if(t.host!==``)return`${t.protocol}//${t.host}${t.pathname}`}catch{}let t=e.indexOf(`:`);return t===-1?`<unparseable database URL>`:`${e.slice(0,t+1)}…`}async function zn(e,t,n){let r;try{r=await import(O(ae(A.resolve(t,`package.json`)).resolve(e.packageName)).href)}catch(t){throw Error(`initializeNodeDatabase: the database URL from ${n} targets the '${e.dialect}' storage engine, but '${e.packageName}' could not be loaded. Install ${e.packageName} in the host application, or pass its already-loaded storageEngine via the 'database.engines' boot option.`,{cause:t})}let i=r.storageEngine;if(i===void 0||i.dialect!==e.dialect)throw Error(`initializeNodeDatabase: '${e.packageName}' does not provide a storage engine for dialect '${e.dialect}'. Auto-resolved engine packages must export 'storageEngine: StorageEngine' with a matching dialect.`);Le(e.dialect)===void 0&&He(i)}async function Bn(e){let t=Ln(e.database?.url),n=t??Ln(process.env.MAKAIO_DATABASE_URL);if(n!==void 0){let r=t===void 0?`the MAKAIO_DATABASE_URL environment variable`:`the 'database.url' boot option`,i=Ge(n);if(i.kind===`missing-engine`&&(await zn(i,e.database?.enginePackageImportBasePath??process.cwd(),r),i=Ge(n)),i.kind!==`engine`){let e=Pe.map(e=>e.packageName).join(`, `);throw Error(`initializeNodeDatabase: unsupported database URL '${Rn(n)}' from ${r}. URL targets require a storage engine that claims the URL (e.g. postgres:// / postgresql:// via ${e}); SQLite targets are configured via the dbPath option or MAKAIO_DATABASE_PATH.`)}return{kind:`url`,url:n,dialect:i.engine.dialect}}let r=A.resolve(Ln(e.dbPath)??Ln(process.env.MAKAIO_DATABASE_PATH)??A.join(e.makaioHome,`makaio.db`));return{kind:`file`,dbPath:r,url:O(r).href}}async function Vn(e){for(let t of e.database?.engines??[])He(t);let t=await Bn(e);if(t.kind===`url`){let n=await _t({url:t.url,postgres:{poolMax:e.database?.poolMax}});try{let r=e.migrationsDir??Fn(t.dialect);return await _n(n.db,{migrationsDir:r}),{databaseClient:n}}catch(e){throw await n.close(),e}}let{dbPath:n}=t,r=A.dirname(n);await P.promises.mkdir(r,{recursive:!0});let i=await _t({url:t.url});try{await _n(i.db,{migrationsDir:e.migrationsDir});try{await P.promises.chmod(n,384)}catch(e){if(!In(e))throw e;console.warn(`[initializeNodeDatabase] Failed to set SQLite file permissions (continuing; this may be unsupported on Windows):`,e)}return{databaseClient:i,dbPath:n}}catch(e){throw await i.close(),e}}const Hn=D.object({npmName:D.string(),version:D.string(),source:D.enum([`new`,`upgraded`,`already-present`])}),Un=D.object({npmName:D.string(),reason:D.string()}),Wn=D.object({success:D.boolean(),packageName:D.string(),version:D.string().optional(),restartRequired:D.boolean(),error:D.string().optional(),installed:D.array(Hn).optional(),skipped:D.array(Un).optional(),warnings:D.array(D.string()).optional()}),Gn=D.object({success:D.boolean(),packageName:D.string(),error:D.string().optional(),restartRequired:D.boolean()}),Kn=D.object({name:D.string(),version:D.string(),description:D.string().optional(),hasDescriptor:D.boolean().default(!1),serverImportPath:D.string().min(1).optional()}),qn=D.object({packageName:D.string(),latestVersion:D.string(),success:D.boolean(),error:D.string().optional()}),Jn=D.object({name:D.string(),displayName:D.string(),description:D.string(),icon:D.string().optional(),tags:D.array(D.string()).optional(),descriptorName:D.string().min(1).optional()}),Yn=D.object({$schema:D.string(),updatedAt:D.string(),adapters:D.array(Jn),extensions:D.array(Jn)}),Xn=D.object({name:D.string(),currentVersion:D.string(),latestVersion:D.string(),description:D.string().optional()}),Zn=ue(`packages`,{list:{request:D.object({}),response:D.object({packages:D.array(Kn)})},install:{request:D.object({packageName:D.string().optional(),packageNames:D.array(D.string()).min(1).optional(),source:D.enum([`npm`,`local`]).optional(),force:D.boolean().optional()}).refine(e=>e.packageName!==void 0||e.packageNames!==void 0,{message:`Expected packageName or packageNames`}),response:Wn},uninstall:{request:D.object({packageName:D.string()}),response:Gn},getLatestVersion:{request:D.object({packageName:D.string()}),response:qn},getRegistry:{request:D.object({}),response:Yn},checkUpdates:{request:D.object({}),response:D.object({updates:D.array(Xn)})},installed:D.object({packageName:D.string(),version:D.string()}),uninstalled:D.object({packageName:D.string()})}),V=Zn.subjects;async function Qn(e,t,n){if(!A.isAbsolute(e))return;let r;try{r=await k.realpath(e)}catch{return}let i=$n(t,n),a=[A.resolve(r,`src`,`${i}.ts`),A.resolve(r,`dist`,`${i}.mjs`)];for(let e of a){let t=await er(e);if(t!==void 0&&tr(t,r))return t}}function $n(e,t){return t===!0?e:t}async function er(e){try{return await k.realpath(e)}catch{return}}function tr(e,t){let n=A.relative(t,e);return n.length>0&&!n.startsWith(`..`)&&!A.isAbsolute(n)}var nr=class{extensionsDir;constructor(e){this.extensionsDir=A.resolve(e)}async install(e){try{let t=A.resolve(e.endsWith(`descriptor.json`)?A.dirname(e):e),n=await k.realpath(t),r=await this.readDescriptor(n);Se(r)||await this.validateEntrypoints(n,r.entrypoints);let i=this.linkPathFor(r.name);await k.mkdir(A.dirname(i),{recursive:!0});try{if((await k.lstat(i)).isSymbolicLink())await k.unlink(i);else throw Error(`${i} already exists and is not a symlink`)}catch(e){if(e.code!==`ENOENT`)throw e}let a=process.platform===`win32`?`junction`:`dir`;return await k.symlink(n,i,a),{success:!0,packageName:r.name,version:r.version,restartRequired:!0}}catch(e){return{success:!1,packageName:``,error:e instanceof Error?e.message:String(e),restartRequired:!1}}}async uninstall(e){try{let t=this.linkPathFor(e);if(await k.unlink(t),e.startsWith(`@`)){let e=A.dirname(t);(await k.readdir(e).catch(()=>null))?.length===0&&await k.rmdir(e).catch(()=>{})}return{success:!0,packageName:e,restartRequired:!0}}catch(t){return{success:!1,packageName:e,error:t instanceof Error?t.message:String(t),restartRequired:!1}}}async list(){try{await k.access(this.extensionsDir)}catch{return[]}let e=await k.readdir(this.extensionsDir),t=[];for(let n of e){let e=A.join(this.extensionsDir,n);if(n.startsWith(`@`)){let n=await k.readdir(e).catch(()=>[]);for(let r of n){let n=A.join(e,r),i=await this.readLocalEntry(n);i!==null&&t.push(i)}}else{let n=await this.readLocalEntry(e);n!==null&&t.push(n)}}return t}async readLocalEntry(e){try{if(!(await k.lstat(e)).isSymbolicLink())return null;let t=await k.readlink(e),n=await k.realpath(A.resolve(A.dirname(e),t)),r=A.join(n,`descriptor.json`),i=await k.readFile(r,`utf-8`),a=we(JSON.parse(i));if(!a.success)return null;let o=a.data.entrypoints?.server,s=o===void 0?void 0:await Qn(n,`server`,o);return{name:a.data.name,version:a.data.version,sourcePath:n,source:`local`,...s!==void 0&&{serverImportPath:s}}}catch{return null}}async readDescriptor(e){let t=A.join(e,`descriptor.json`),n=await k.readFile(t,`utf-8`).catch(()=>{throw Error(`descriptor.json not found at ${t}`)}),r=we(JSON.parse(n));if(!r.success)throw Error(`Invalid descriptor.json: ${r.error.message}`);return r.data}async validateEntrypoints(e,t){await Promise.all(Object.entries(t).map(async([t,n])=>{if(n!==void 0&&await Qn(e,t,n)===void 0){let e=$n(t,n);throw Error(`${t} entrypoint "${e}" has no resolvable candidate: neither src/${e}.ts nor dist/${e}.mjs exists within the extension root`)}}))}linkPathFor(e){let t=A.resolve(this.extensionsDir,...e.split(`/`)),n=A.relative(this.extensionsDir,t);if(n===``||n.startsWith(`..`)||A.isAbsolute(n))throw Error(`Invalid extension name: ${e}`);return t}};const rr=`nodeLinker: node-modules`,ir=/^[A-Za-z]:[\\/]/;let ar=null;function H(){return ar||(ar=Promise.all([import(`../lib-DkLlhp9Z.mjs`).then(e=>t(e.t(),1)),import(`../lib-BmcGxHXH.mjs`).then(e=>t(e.t(),1)),import(`../lib-jOuIcSs9.mjs`).then(e=>t(e.default,1))]).then(([e,t,n])=>({Configuration:e.Configuration,Project:e.Project,Cache:e.Cache,StreamReport:e.StreamReport,structUtils:e.structUtils,ppath:t.ppath,npath:t.npath,xfs:t.xfs,getPluginConfiguration:n.getPluginConfiguration})),ar)}var or=class{makaioHome;constructor(e){this.makaioHome=e}async initialize(){try{let{npath:e,ppath:t,xfs:n}=await H(),r=e.toPortablePath(this.makaioHome),i=t.join(r,`package.json`);if(await n.mkdirpPromise(r),await this.ensureYarnRc(r,n,t),await n.existsPromise(i))return;await n.writeJsonPromise(i,{name:`makaio-packages`,version:`1.0.0`,private:!0,description:`Makaio installed packages`,dependencies:{}}),console.info(`[YarnPackageManager] Created package.json at %s`,i)}catch(e){throw Error(`Failed to initialize package.json`,{cause:e})}}async ensureYarnRc(e,t,n){let r=n.join(e,`.yarnrc.yml`),i=await t.existsPromise(r)?await t.readFilePromise(r,`utf8`):``,a=dr(i);i!==a&&(await t.writeFilePromise(r,a),console.info(`[YarnPackageManager] Wrote .yarnrc.yml at %s`,r))}async loadYarnState(){let{Configuration:e,Project:t,Cache:n,npath:r,getPluginConfiguration:i}=await H(),a=r.toPortablePath(this.makaioHome),o=await e.find(a,i()),{project:s}=await t.find(o,a);return{configuration:o,project:s,cache:await n.find(o)}}async runProjectInstall(e,t,n){let{StreamReport:r}=await H();if((await r.start({configuration:e,stdout:process.stdout},async e=>{await t.install({cache:n,report:e})})).hasErrors())throw Error(`Yarn install failed with errors`)}async parsePackageDescriptor(e){let{structUtils:t}=await H(),n=t.parseDescriptor(e);return n.range===`unknown`?t.makeDescriptor(n,`latest`):n}async installPackage(e){try{let{structUtils:t}=await H(),{configuration:n,project:r,cache:i}=await this.loadYarnState(),a=await this.parsePackageDescriptor(e),o=t.stringifyIdent(a),s=r.topLevelWorkspace.manifest.dependencies.get(a.identHash);r.topLevelWorkspace.manifest.dependencies.set(a.identHash,a),await this.runProjectInstall(n,r,i);let c=r.storedResolutions.get(a.descriptorHash);if(!c)throw Error(`Package resolution not found after installation`);let l=r.storedPackages.get(c);if(!l)throw Error(`Package not found after installation`);let u=l.version??`unknown`;if(!(await this.readInstalledDescriptor(o)).hasDescriptor)throw s?r.topLevelWorkspace.manifest.dependencies.set(a.identHash,s):r.topLevelWorkspace.manifest.dependencies.delete(a.identHash),await this.runProjectInstall(n,r,i),Error(`Installed package ${o} does not contain a valid descriptor.json`);return console.info(`[YarnPackageManager] Installed %s@%s`,o,u),u}catch(t){throw Error(`Failed to install ${e}`,{cause:t})}}async uninstallPackage(e){try{let{structUtils:t}=await H(),{configuration:n,project:r,cache:i}=await this.loadYarnState(),a=t.parseIdent(e);if(!r.topLevelWorkspace.manifest.dependencies.delete(a.identHash))throw Error(`Package ${e} not found in dependencies`);await this.runProjectInstall(n,r,i),console.info(`[YarnPackageManager] Uninstalled %s`,e)}catch(t){throw Error(`Failed to uninstall ${e}`,{cause:t})}}async listPackages(){try{let{xfs:e,npath:t,ppath:n,structUtils:r}=await H(),i=t.toPortablePath(this.makaioHome),a=n.join(i,`package.json`);if(!await e.existsPromise(a))return[];let{project:o}=await this.loadYarnState(),s=[];for(let[,e]of o.topLevelWorkspace.manifest.dependencies){let t=r.stringifyIdent(e),n=o.storedResolutions.get(e.descriptorHash),i=(n?o.storedPackages.get(n):void 0)?.version??r.parseRange(e.range).selector,a=await this.readInstalledDescriptor(t);a.hasDescriptor&&s.push({name:t,version:i,hasDescriptor:!0,...a.serverImportPath!==void 0&&{serverImportPath:a.serverImportPath}})}return s}catch(e){throw Error(`Failed to list packages`,{cause:e})}}async ensureFrameworkDependency(e){let t=lr(e);try{let{structUtils:e}=await H(),{configuration:n,project:r,cache:i}=await this.loadYarnState(),a=e.makeDescriptor(e.parseIdent(`@makaio/framework`),t);if(r.topLevelWorkspace.manifest.dependencies.get(a.identHash)?.range===t)return;r.topLevelWorkspace.manifest.dependencies.set(a.identHash,a),await this.runProjectInstall(n,r,i),console.info(`[YarnPackageManager] Ensured @makaio/framework@%s`,t)}catch(e){throw Error(`Failed to ensure @makaio/framework@${t}`,{cause:e})}}async getLatestVersion(e){return this.resolvePackageVersion(e)}async readInstalledDescriptor(e){let t=await this.readInstalledExtensionDescriptor(e);if(t===null)return{hasDescriptor:!1};let n=await this.resolveInstalledServerEntrypoint(e,t);return{hasDescriptor:!0,...n!==void 0&&{serverImportPath:n}}}async resolveInstalledServerEntrypoint(e,t){let n=t.entrypoints?.server;if(n!==void 0)return Qn(A.join(this.makaioHome,`node_modules`,...e.split(`/`)),`server`,n)}async readInstalledExtensionDescriptor(e){let t=A.join(this.makaioHome,`node_modules`,...e.split(`/`),`descriptor.json`),n;try{let e=await k.readFile(t,`utf-8`);n=JSON.parse(e)}catch(e){if(e instanceof SyntaxError||fr(e))return null;throw e}let r=we(n);return r.success?r.data:null}async listInstalledExtensionDescriptors(){let e=A.join(this.makaioHome,`package.json`),t;try{let n=await k.readFile(e,`utf-8`);t=JSON.parse(n)}catch(e){if(fr(e))return[];throw e}let n=Object.keys(t.dependencies??{});return(await Promise.all(n.map(async e=>{let t=await this.readInstalledExtensionDescriptor(e);return t===null?null:{npmName:e,version:await this.readInstalledPackageVersion(e),descriptor:t}}))).filter(e=>e!==null)}async readInstalledPackageVersion(e){let t=A.join(this.makaioHome,`node_modules`,...e.split(`/`),`package.json`);try{let e=await k.readFile(t,`utf-8`),n=JSON.parse(e);return typeof n.version==`string`?n.version:`unknown`}catch{return`unknown`}}async readManifestSnapshot(){let e=A.join(this.makaioHome,`package.json`),t=await k.readFile(e,`utf-8`);return JSON.parse(t)}async writeManifestAndReinstall(e){let t=A.join(this.makaioHome,`package.json`);await k.writeFile(t,`${JSON.stringify(e,null,2)}\n`,`utf-8`);let{configuration:n,project:r,cache:i}=await this.loadYarnState();await this.runProjectInstall(n,r,i)}async resolvePackageVersion(e){try{let{StreamReport:t}=await H(),{configuration:n,project:r}=await this.loadYarnState(),i=await this.parsePackageDescriptor(e),a=`unknown`;return await t.start({configuration:n,stdout:process.stdout},async e=>{let t=n.makeResolver(),o=await t.getCandidates(i,{},{project:r,resolver:t,report:e});if(o.length>0){let e=o[0];a=e.reference.match(/^npm:(.+)$/)?.[1]??e.reference}}),a}catch(t){throw Error(`Failed to resolve version for ${e}`,{cause:t})}}};function sr(e,t){return!t||t===`latest`?e:`${e}@${t}`}function cr(e){if(e.startsWith(`@`)){let t=e.indexOf(`/`);if(t===-1)return e;let n=e.indexOf(`@`,t+1);return n===-1?e:e.slice(0,n)}let t=e.indexOf(`@`);return t===-1?e:e.slice(0,t)}function lr(e){return e.localPackagePath?`portal:${ur(e.localPackagePath)}`:e.versionRange}function ur(e){let t=(ir.test(e)?e:A.resolve(e)).replace(/\\/g,`/`);return ir.test(t)?`/${t}`:t}function dr(e){let t=e.split(/\r?\n/),n=!1,r=t.map(e=>/^\s*nodeLinker\s*:/.test(e)?(n=!0,rr):e);if(!n){let t=e.trimEnd();return`${t}${t.length>0?`
1
+ import{i as e,o as t,t as n}from"../chunk-DTipWd-i.mjs";import{t as r}from"../semver-CIhHqMkw.mjs";import{RuntimeNamespace as i,RuntimeSubjects as a}from"./bus/runtime/namespace.mjs";import{ExplicitDescriptorDiscovery as o,FilesystemDescriptorDiscovery as s}from"./extension-discovery.mjs";import{MAKAIO_CONFIG_FILE_ENV as c,MAKAIO_HOME_ENV as l,buildConfiguredRuntimeOptions as u,createMakaioConfigDiscovery as d,defineMakaioConfig as f,loadMakaioConfig as p,parseMakaioConfig as m,resolveMakaioConfigPath as h,resolveMakaioHome as g,shouldIncludeExtension as _}from"./makaio-config.mjs";import{t as v}from"../descriptor-to-package-DdpjpT7n.mjs";import{a as y,c as b,i as x,n as S,o as C,r as w,s as T,t as E}from"../load-extensions-Cze1RHcG.mjs";import{i as ee,o as te,r as ne,s as re,t as ie}from"../workflow-worker-CojIlB6k.mjs";import{createRequire as ae}from"node:module";import{z as D}from"zod";import{execFile as oe}from"node:child_process";import{promisify as se}from"node:util";import{fileURLToPath as ce,pathToFileURL as O}from"node:url";import*as k from"node:fs/promises";import*as A from"node:path";import j from"node:path";import*as M from"node:crypto";import{createHash as N}from"node:crypto";import*as P from"node:fs";import{existsSync as F,readFileSync as le}from"node:fs";import{createBusNamespace as ue}from"@makaio/framework/core";import{ChannelClosedError as de,MakaioBus as fe,openChannel as pe,projectSubjectTelemetryFacts as me}from"@makaio/framework/bus";import{AIModelSchema as he,AdapterSubjects as ge,BUILT_IN_THIN_WORKFLOW_PROVIDER_ID as _e,ConfigSchema as I,ConfigSubjects as L,CredentialSubjects as ve,FrameworkContractNamespaces as ye,FrameworkStorageNamespaces as be,SubjectTelemetrySubjects as xe,isDetachedDescriptor as Se,registerWorkerNodeProvider as Ce,safeParseExtensionDescriptor as we,unregisterWorkerNodeProvider as Te,versionSatisfies as Ee}from"@makaio/framework/contracts";import{DispatchingAuth as De,E2EAuth as Oe,HmacAuth as ke,WebSocketClientTransport as Ae}from"@makaio/framework/node/transports";import{BaseService as je}from"@makaio/framework/service-base";import{uniqueIndex as Me}from"drizzle-orm/sqlite-core";import{uniqueIndex as Ne}from"drizzle-orm/pg-core";import{STORAGE_ENGINE_URL_HINTS as Pe,defineDialectSchema as Fe,defineDualTable as Ie,findStorageEngine as Le,getDatabaseDialect as Re,getRawSqlExecutor as ze,getStorageEngine as Be,registerDrizzleHandlers as Ve,registerStorageEngine as He,resolveSchema as Ue,resolveStorageEngine as We,resolveStorageEngineForUrl as Ge}from"@makaio/framework/storage/drizzle";import{and as Ke,eq as R,sql as z}from"drizzle-orm";import{parseStoredCredentialRef as qe}from"@makaio/framework/contracts/config";import{AdapterRuntimeSubjects as Je,registerAdapterRuntimeIdentityHandlers as Ye}from"@makaio/framework/services/adapter-runtime";import{buildProviderContext as Xe}from"@makaio/framework/services/provider-context";import*as Ze from"node:os";import{ProviderStorageSubjects as Qe}from"@makaio/framework/services/settings/storage";import{isRecord as $e}from"@makaio/framework/utils";import{AdapterSubsystemSubjects as et}from"@makaio/framework/services/adapter-subsystem";import{BootNamespace as tt,ExtensionCoordinator as nt,ExtensionNamespace as rt,KernelNamespace as it,coalesceExtensionOverrides as at,createShutdownSequence as ot,filterEligibleExtensions as st}from"@makaio/framework/kernel";import{CachedRegistryFetcher as ct,FallbackRegistryFetcher as lt,ModelRegistrySchema as ut,ProviderModelOverrideSchema as dt,mergeModelMetadata as ft}from"@makaio/framework/services/model-registry";import{createClientsCorePackage as pt}from"@makaio/framework/clients";import{Readable as mt,Transform as ht}from"node:stream";import{pipeline as gt}from"node:stream/promises";import{createDatabaseClient as _t}from"@makaio/framework/storage/drizzle/client";import{AdapterSubsystemToken as vt,FileAdapterConfigRepository as yt,createAdapterSubsystemContributionProcessor as bt,createAdapterSubsystemPackage as xt}from"@makaio/framework/adapter-subsystem";import{loadOrCreateMachineIdentity as St,loadOrCreateMachineIdentity as Ct,machineKeysExist as wt,validateMachineKeys as Tt}from"@makaio/framework/node/machine-identity";import{resolveWorkspaceRoot as Et}from"@makaio/framework/utils/workspace-root";import{Hono as Dt}from"hono";import{CliNamespace as Ot}from"@makaio/framework/kernel/cli";import{startBusServer as kt}from"@makaio/framework/node/bus-server";import{WebSocketServer as At}from"ws";import{ConfigProvider as jt}from"@makaio/framework/providers";import{KernelSubjects as B}from"@makaio/framework/kernel/namespace";import{FrameworkServicesCoreNamespaces as Mt,SessionOrchestratorToken as Nt,createArtifactKindContributionProcessor as Pt,createArtifactLifecycleHookContributionProcessor as Ft,createFacetNamespaceContributionProcessor as It,createModelRegistryPackage as Lt,createSurfaceBindingContributionProcessor as Rt,createToolContributionProcessor as zt,createTransitionContributionProcessor as Bt,createWorkflowBlockContributionProcessor as Vt,frameworkCorePackages as Ht}from"@makaio/framework/services";import{createLogImportContributionProcessor as Ut,logImportRegistryPackage as Wt}from"@makaio/framework/services/log-import";import{createWorkflowEnginePackage as Gt}from"@makaio/framework/workflow-engine/package";import{PreferenceValueSchema as Kt,PreferencesSubjects as qt}from"@makaio/framework/services/preferences";import{resolveConnectorCredentials as Jt,resolveCredentialRef as Yt}from"@makaio/framework/adapters/config";import{DefinitionSubjects as Xt}from"@makaio/framework/services/definition";import{ProviderRuntimeSubjects as Zt}from"@makaio/framework/services/provider-runtime";import{SettingsSubjects as Qt}from"@makaio/framework/services/settings/namespace";import{parseWorkspaceGlobs as $t}from"@makaio/framework/utils/workspace-packages";import{serveStatic as en}from"@hono/node-server/serve-static";function tn(e){return e.on(ge.getCapabilities,async t=>{let{adapterName:n,adapterId:r}=t.payload;if(r){await t.next();return}if(n){let r=await e.requestOptional(Je.resolveId,{adapterName:n}),i=r.handled?r.data.adapterId:void 0;i&&(t.payload.adapterId=i)}await t.next()},{priority:20})}function nn(e){let{coordinator:t,configRepository:n,platformDefaults:r}=e,i=xt({configRepository:n,coordinator:t,platformDefaults:r});return t.registerContributionProcessor(bt({getAdapterSubsystemService:()=>t.getExtensionService(vt)})),{adapterSubsystemPackage:i}}function rn(e){let{bus:t,currentMachineId:n}=e,r=Ye(t,{currentMachineId:n,listKnownAdapterNames:e.listKnownAdapterNames??(async()=>{let{configs:e}=await t.request(et.listAdapterConfigs,{});return e.map(e=>e.name)})}),i=tn(t);return{cleanup:()=>{r.cleanup(),i()}}}function an(e=`sqlite`){let{migrations:t}=Be(e);return t.resolveSourceChainDir?.()??j.resolve(import.meta.dirname,`..`,t.chainDirName)}var on=class extends Error{expectedDialect;journalDialect;constructor(e,t,n,r){super(`Migration journal at ${r} declares dialect '${n??`unknown`}', but the target database speaks '${e}'. Point the runner at a migrations directory generated for '${e}' (journal dialect '${t}').`),this.name=`MigrationDialectMismatchError`,this.expectedDialect=e,this.journalDialect=n}};function sn(e={}){let t=typeof e==`string`?void 0:e.expectedDialect,n=typeof e==`string`?e:e.migrationsDir??an(t),r=j.join(n,`meta`,`_journal.json`);if(!F(r))throw Error(`Cannot find migrations journal at ${r}`);let i=JSON.parse(le(r,`utf-8`));if(t!==void 0){let e=Be(t).migrations.journalDialect;if(i.dialect!==e)throw new on(t,e,i.dialect,r)}return i.entries.map(e=>{let t=le(j.join(n,`${e.tag}.sql`),`utf-8`);return{tag:e.tag,sql:t.split(`--> statement-breakpoint`),folderMillis:e.when,hash:N(`sha256`).update(t).digest(`hex`),bps:e.breakpoints}})}function cn(e){return e.replace(/--.*$/gm,``).trim()}async function ln(e,t){try{await e.run(z.raw(`ROLLBACK`))}catch(e){console.error(`[storage-migrations] Failed to roll back migration transaction`,{...t,rollbackError:e})}}async function un(e){let{migrations:t}=e.engine;if(await e.session.run(z.raw(t.beginTransactionStatement)),t.acquireTransactionLock)try{await t.acquireTransactionLock(e.session,e.tableName)}catch(t){throw await ln(e.session,{migrationsTable:e.tableName}),t}}async function dn(e){let t=e.engine.migrations.acquireTransactionLock!==void 0;t&&await un(e);try{await e.session.run(z.raw(e.engine.migrations.buildLedgerDdl(e.tableName)));let n=await e.session.all(z`SELECT hash FROM ${e.tableId}`);return t&&await e.session.run(z.raw(`COMMIT`)),new Set(n.map(e=>e.hash))}catch(n){throw t&&await ln(e.session,{migrationsTable:e.tableName}),n}}async function fn(e,t){try{await e.session.run(z`INSERT INTO ${e.tableId} ("hash", "created_at") VALUES (${t.hash}, ${t.folderMillis})`),await e.session.run(z.raw(`COMMIT`))}catch(e){throw console.error(`[storage-migrations] Failed to finalize migration`,{hash:t.hash,folderMillis:t.folderMillis,error:e}),e}}async function pn(e,t){return e.engine.migrations.acquireTransactionLock===void 0||(await e.session.all(z`SELECT hash FROM ${e.tableId} WHERE hash = ${t.hash}`)).length===0?!1:(console.warn(`[storage-migrations] Migration already recorded by a concurrent runner, skipping`,{hash:t.hash,folderMillis:t.folderMillis}),await e.session.run(z.raw(`COMMIT`)),!0)}async function mn(e,t){await e.session.run(z.raw(`ROLLBACK`)),await un(e),!await pn(e,t)&&await fn(e,t)}async function hn(e,t){await un(e);try{if(await pn(e,t))return;for(let[n,r]of t.sql.entries())if(cn(r))try{await e.session.run(z.raw(r))}catch(i){if(n===0&&/^\s*CREATE\s/i.test(r)&&e.engine.errors.isDuplicateObjectError(i)){if(t.sql.length>1)throw Error(`Cannot adopt multi-statement migration '${t.tag}' because its first schema object already exists. Reset the database or provide an incremental migration.`,{cause:i});console.warn(`[storage-migrations] Schema object already exists, adopting into ledger`,{hash:t.hash,folderMillis:t.folderMillis,statementIndex:n}),await mn(e,t);return}throw console.error(`[storage-migrations] Failed to apply migration statement`,{hash:t.hash,folderMillis:t.folderMillis,statementIndex:n,statement:r,error:i}),i}await fn(e,t)}catch(n){throw await ln(e.session,{hash:t.hash,folderMillis:t.folderMillis}),n}}async function gn(e,t,n){let r=ze(e),i=Be(r.dialect),a=n??i.migrations.defaultLedgerTable;await r.withSession(async e=>{let n={session:e,engine:i,tableName:a,tableId:z.identifier(a)},r=await dn(n);for(let e of t)r.has(e.hash)||(await hn(n,e),r.add(e.hash))})}async function _n(e,t={}){await gn(e,sn({migrationsDir:t.migrationsDir,expectedDialect:Re(e)})),await We(e).fts.provisionSearchIndex(e)}var vn=class{configPath;constructor(e){this.configPath=A.join(e,`config.json`)}async getConfig(){try{let e=await k.readFile(this.configPath,`utf-8`);return I.parse(JSON.parse(e))}catch(e){if(e.code===`ENOENT`)return I.parse({});if(e instanceof SyntaxError||e instanceof Error&&e.name===`ZodError`)return console.warn(`[FileConfigStorage] Failed to parse config, falling back to defaults:`,e),I.parse({});throw e}}async saveConfig(e){let t=A.dirname(this.configPath);await k.mkdir(t,{recursive:!0}),await k.writeFile(this.configPath,JSON.stringify(e,null,2),{encoding:`utf-8`,mode:384}),await k.chmod(this.configPath,384)}};function yn(e){try{let t=A.resolve(Et(e),`static/model-registry.yaml`);return F(t)?t:void 0}catch{return}}async function bn(e,t){await new Promise((n,r)=>{if(e.address()){n();return}let i=e=>{if(o(),e.code===`EADDRINUSE`){r(Error(`Port ${t} is already in use`));return}r(e)},a=()=>{o(),n()},o=()=>{e.off(`error`,i),e.off(`listening`,a)};e.once(`error`,i),e.once(`listening`,a)}),e.on(`error`,e=>{console.error(`[HttpServer] Post-bind error:`,e)})}function xn(e){let t=e.address();if(typeof t==`object`&&t&&`port`in t)return t.port;throw Error(`HTTP server is not bound to a TCP address`)}function Sn(e,t){let n=e,r=!1;return{fetch:(e,i,a)=>{if(!r)return new Response(`Makaio runtime is booting`,{status:503,headers:{"Retry-After":`1`}});let{pathname:o}=new URL(e.url);return t?.health&&e.method===`GET`&&o===`/health`?Response.json(t.health()):e.method===`GET`&&o===`/bus`?new Response(`WebSocket endpoint`,{status:426,headers:{Upgrade:`websocket`}}):n.fetch(e,i,a)},markReady(){r=!0},replaceApp(e){n=e}}}const Cn=[`extension`,`static-fallback`];function wn(e){let t=[];function n(e){let t=new Dt,n=[...e].sort((e,t)=>Cn.indexOf(e.phase)-Cn.indexOf(t.phase));for(let e of n)e.mount(t);return t}function r(){return n(t)}function i(r){e&&e.replaceApp(n(r)),t=r}return{add(e){i([...t,e])},remove(e){let n=t.filter(t=>t.owner!==e);n.length!==t.length&&i(n)},build:r,get contributions(){return[...t]}}}function Tn(e,t){if(!(e instanceof Error))return!1;let{rootPackageName:n,subpath:r}=Dn(t),i=(r===void 0?[t]:[t,n]).flatMap(e=>[`Cannot find package '${e}'`,`Cannot find module '${e}'`,`Cannot find package "${e}"`,`Cannot find module "${e}"`]),a=e;return(a.code===`ERR_MODULE_NOT_FOUND`||a.code===`MODULE_NOT_FOUND`)&&i.some(t=>e.message.includes(t))||a.code===`ERR_PACKAGE_PATH_NOT_EXPORTED`&&r!==void 0&&e.message.includes(`Package subpath '${r}' is not defined by "exports"`)&&On(e.message,n)?!0:i.some(t=>e.message.includes(t))}async function En(e){try{return await import(e)}catch(t){if(Tn(t,e))return null;throw t}}function Dn(e){let t=e.split(`/`);return e.startsWith(`@`)?{rootPackageName:t.slice(0,2).join(`/`),subpath:t.length>2?`./${t.slice(2).join(`/`)}`:void 0}:{rootPackageName:t[0]??e,subpath:t.length>1?`./${t.slice(1).join(`/`)}`:void 0}}function On(e,t){let n=t,r=t.replaceAll(`/`,`\\`);return e.includes(`/${n}/package.json`)||e.includes(`\\${r}\\package.json`)}function kn(e){let t=e.url?.split(`?`)[0]??``;return t===`/bus`?!0:(t===`/`||t===``)&&e.headers.origin===void 0}function An(e,t){return(n,r,i)=>{if(!kn(n))return;let a=e();if(!a||!t()){r.destroy();return}a.handleUpgrade(n,r,i,e=>{a.emit(`connection`,e,n)})}}var jn=class{options;busServer=null;websocketServer=null;upgradeHandlerServer=null;upgradeHandler=null;busReady=!1;connecting=!1;constructor(e){this.options=e}get dispatchingAuth(){return this.options.auth instanceof De?this.options.auth:void 0}async connect(e,t){if(this.connecting||this.busServer||this.websocketServer)throw Error(`[BusServerTransport] connect() called while transport is already connected or connecting`);if(this.options.httpServer.address()===null)throw Error(`[BusServerTransport] httpServer must already be listening before connect() is called`);this.connecting=!0;try{let t=new At({noServer:!0});this.websocketServer=t;let n=An(()=>this.websocketServer,()=>this.busReady);this.options.httpServer.on(`upgrade`,n),this.upgradeHandlerServer=this.options.httpServer,this.upgradeHandler=n,this.busServer=await kt({websocket:t,bus:e,auth:this.options.auth,loopbackName:this.options.loopbackName??`node`}),this.busReady=!0}catch(e){throw await this.stopBusServer(`startup error`),this.detachUpgradeHandler(),await this.stopWebSocketServer(`startup error`),e}finally{this.connecting=!1}}async disconnect(){await this.stopBusServer(`shutdown`),this.detachUpgradeHandler(),await this.stopWebSocketServer(`shutdown`)}async stopBusServer(e){this.busReady=!1,this.busServer&&=(await this.busServer.stop().catch(t=>{console.error(`[BusServerTransport] Failed to stop bus server during ${e}:`,t)}),null)}detachUpgradeHandler(){this.upgradeHandlerServer&&this.upgradeHandler&&this.upgradeHandlerServer.off(`upgrade`,this.upgradeHandler),this.upgradeHandlerServer=null,this.upgradeHandler=null}async stopWebSocketServer(e){this.websocketServer&&=(await new Promise((e,t)=>{this.websocketServer.close(n=>n?t(n):e())}).catch(t=>{t instanceof Error&&t.message===`The server is not running`||console.error(`[BusServerTransport] Failed to close WebSocket server during ${e}:`,t)}),null)}},Mn=class extends jt{keysDir;constructor(e,t){super(e),this.keysDir=A.join(t,`keys`)}async getConfig(e){let t=await super.getConfig(e);return t.bus?.remote&&!t.bus.remote.secret&&(t.bus.remote.secret=this.generateSecret(),(await this.getStoredConfig()).bus?.remote?.url===t.bus.remote.url&&await this.saveConfig(await this.prepareConfigForPersistence(t))),t}generateSecret(){return M.randomBytes(32).toString(`base64`)}async getMachineId(){return(await Ct(this.keysDir)).machineId}getEnv(e){return process.env[e]}};function Nn(e,t){return{extensions:e.discovery??new s(void 0,{extensionsDir:j.join(t,`extensions`),nodeModulesDir:j.join(t,`node_modules`)})}}function Pn(e){return F(j.join(e,`meta`,`_journal.json`))}function Fn(e,t={}){let{moduleDir:n=import.meta.dirname,getMigrationsFolder:r=an}=t,i=Be(e).migrations.chainDirName,a=[],o=j.resolve(n,`..`,i);if(Pn(o))return o;a.push(o);try{let t=r(e);if(Pn(t))return t;a.push(t)}catch(t){a.push(`getMigrationsFolder('${e}') unavailable: ${t instanceof Error?t.message:String(t)}`)}throw Error(`resolveBundledMigrationsDir: no '${e}' migrations directory with meta/_journal.json found. Probed: ${a.join(`; `)}. Pass an explicit migrations directory (boot option 'centralMigrationsDir' or InitializeNodeDatabaseOptions.migrationsDir) when migrations are staged elsewhere.`)}function In(e){if(process.platform===`win32`)return!0;let t=e?.code;return t===`ENOSYS`||t===`EINVAL`}function Ln(e){return e===void 0||e.trim()===``?void 0:e}function Rn(e){try{let t=new URL(e);if(t.host!==``)return`${t.protocol}//${t.host}${t.pathname}`}catch{}let t=e.indexOf(`:`);return t===-1?`<unparseable database URL>`:`${e.slice(0,t+1)}…`}async function zn(e,t,n){let r;try{r=await import(O(ae(A.resolve(t,`package.json`)).resolve(e.packageName)).href)}catch(t){throw Error(`initializeNodeDatabase: the database URL from ${n} targets the '${e.dialect}' storage engine, but '${e.packageName}' could not be loaded. Install ${e.packageName} in the host application, or pass its already-loaded storageEngine via the 'database.engines' boot option.`,{cause:t})}let i=r.storageEngine;if(i===void 0||i.dialect!==e.dialect)throw Error(`initializeNodeDatabase: '${e.packageName}' does not provide a storage engine for dialect '${e.dialect}'. Auto-resolved engine packages must export 'storageEngine: StorageEngine' with a matching dialect.`);Le(e.dialect)===void 0&&He(i)}async function Bn(e){let t=Ln(e.database?.url),n=t??Ln(process.env.MAKAIO_DATABASE_URL);if(n!==void 0){let r=t===void 0?`the MAKAIO_DATABASE_URL environment variable`:`the 'database.url' boot option`,i=Ge(n);if(i.kind===`missing-engine`&&(await zn(i,e.database?.enginePackageImportBasePath??process.cwd(),r),i=Ge(n)),i.kind!==`engine`){let e=Pe.map(e=>e.packageName).join(`, `);throw Error(`initializeNodeDatabase: unsupported database URL '${Rn(n)}' from ${r}. URL targets require a storage engine that claims the URL (e.g. postgres:// / postgresql:// via ${e}); SQLite targets are configured via the dbPath option or MAKAIO_DATABASE_PATH.`)}return{kind:`url`,url:n,dialect:i.engine.dialect}}let r=A.resolve(Ln(e.dbPath)??Ln(process.env.MAKAIO_DATABASE_PATH)??A.join(e.makaioHome,`makaio.db`));return{kind:`file`,dbPath:r,url:O(r).href}}async function Vn(e){for(let t of e.database?.engines??[])He(t);let t=await Bn(e);if(t.kind===`url`){let n=await _t({url:t.url,postgres:{poolMax:e.database?.poolMax}});try{let r=e.migrationsDir??Fn(t.dialect);return await _n(n.db,{migrationsDir:r}),{databaseClient:n}}catch(e){throw await n.close(),e}}let{dbPath:n}=t,r=A.dirname(n);await P.promises.mkdir(r,{recursive:!0});let i=await _t({url:t.url});try{await _n(i.db,{migrationsDir:e.migrationsDir});try{await P.promises.chmod(n,384)}catch(e){if(!In(e))throw e;console.warn(`[initializeNodeDatabase] Failed to set SQLite file permissions (continuing; this may be unsupported on Windows):`,e)}return{databaseClient:i,dbPath:n}}catch(e){throw await i.close(),e}}const Hn=D.object({npmName:D.string(),version:D.string(),source:D.enum([`new`,`upgraded`,`already-present`])}),Un=D.object({npmName:D.string(),reason:D.string()}),Wn=D.object({success:D.boolean(),packageName:D.string(),version:D.string().optional(),restartRequired:D.boolean(),error:D.string().optional(),installed:D.array(Hn).optional(),skipped:D.array(Un).optional(),warnings:D.array(D.string()).optional()}),Gn=D.object({success:D.boolean(),packageName:D.string(),error:D.string().optional(),restartRequired:D.boolean()}),Kn=D.object({name:D.string(),version:D.string(),description:D.string().optional(),hasDescriptor:D.boolean().default(!1),serverImportPath:D.string().min(1).optional()}),qn=D.object({packageName:D.string(),latestVersion:D.string(),success:D.boolean(),error:D.string().optional()}),Jn=D.object({name:D.string(),displayName:D.string(),description:D.string(),icon:D.string().optional(),tags:D.array(D.string()).optional(),descriptorName:D.string().min(1).optional()}),Yn=D.object({$schema:D.string(),updatedAt:D.string(),adapters:D.array(Jn),extensions:D.array(Jn)}),Xn=D.object({name:D.string(),currentVersion:D.string(),latestVersion:D.string(),description:D.string().optional()}),Zn=ue(`packages`,{list:{request:D.object({}),response:D.object({packages:D.array(Kn)})},install:{request:D.object({packageName:D.string().optional(),packageNames:D.array(D.string()).min(1).optional(),source:D.enum([`npm`,`local`]).optional(),force:D.boolean().optional()}).refine(e=>e.packageName!==void 0||e.packageNames!==void 0,{message:`Expected packageName or packageNames`}),response:Wn},uninstall:{request:D.object({packageName:D.string()}),response:Gn},getLatestVersion:{request:D.object({packageName:D.string()}),response:qn},getRegistry:{request:D.object({}),response:Yn},checkUpdates:{request:D.object({}),response:D.object({updates:D.array(Xn)})},installed:D.object({packageName:D.string(),version:D.string()}),uninstalled:D.object({packageName:D.string()})}),V=Zn.subjects;async function Qn(e,t,n){if(!A.isAbsolute(e))return;let r;try{r=await k.realpath(e)}catch{return}let i=$n(t,n),a=[A.resolve(r,`src`,`${i}.ts`),A.resolve(r,`dist`,`${i}.mjs`)];for(let e of a){let t=await er(e);if(t!==void 0&&tr(t,r))return t}}function $n(e,t){return t===!0?e:t}async function er(e){try{return await k.realpath(e)}catch{return}}function tr(e,t){let n=A.relative(t,e);return n.length>0&&!n.startsWith(`..`)&&!A.isAbsolute(n)}var nr=class{extensionsDir;constructor(e){this.extensionsDir=A.resolve(e)}async install(e){try{let t=A.resolve(e.endsWith(`descriptor.json`)?A.dirname(e):e),n=await k.realpath(t),r=await this.readDescriptor(n);Se(r)||await this.validateEntrypoints(n,r.entrypoints);let i=this.linkPathFor(r.name);await k.mkdir(A.dirname(i),{recursive:!0});try{if((await k.lstat(i)).isSymbolicLink())await k.unlink(i);else throw Error(`${i} already exists and is not a symlink`)}catch(e){if(e.code!==`ENOENT`)throw e}let a=process.platform===`win32`?`junction`:`dir`;return await k.symlink(n,i,a),{success:!0,packageName:r.name,version:r.version,restartRequired:!0}}catch(e){return{success:!1,packageName:``,error:e instanceof Error?e.message:String(e),restartRequired:!1}}}async uninstall(e){try{let t=this.linkPathFor(e);if(await k.unlink(t),e.startsWith(`@`)){let e=A.dirname(t);(await k.readdir(e).catch(()=>null))?.length===0&&await k.rmdir(e).catch(()=>{})}return{success:!0,packageName:e,restartRequired:!0}}catch(t){return{success:!1,packageName:e,error:t instanceof Error?t.message:String(t),restartRequired:!1}}}async list(){try{await k.access(this.extensionsDir)}catch{return[]}let e=await k.readdir(this.extensionsDir),t=[];for(let n of e){let e=A.join(this.extensionsDir,n);if(n.startsWith(`@`)){let n=await k.readdir(e).catch(()=>[]);for(let r of n){let n=A.join(e,r),i=await this.readLocalEntry(n);i!==null&&t.push(i)}}else{let n=await this.readLocalEntry(e);n!==null&&t.push(n)}}return t}async readLocalEntry(e){try{if(!(await k.lstat(e)).isSymbolicLink())return null;let t=await k.readlink(e),n=await k.realpath(A.resolve(A.dirname(e),t)),r=A.join(n,`descriptor.json`),i=await k.readFile(r,`utf-8`),a=we(JSON.parse(i));if(!a.success)return null;let o=a.data.entrypoints?.server,s=o===void 0?void 0:await Qn(n,`server`,o);return{name:a.data.name,version:a.data.version,sourcePath:n,source:`local`,...s!==void 0&&{serverImportPath:s}}}catch{return null}}async readDescriptor(e){let t=A.join(e,`descriptor.json`),n=await k.readFile(t,`utf-8`).catch(()=>{throw Error(`descriptor.json not found at ${t}`)}),r=we(JSON.parse(n));if(!r.success)throw Error(`Invalid descriptor.json: ${r.error.message}`);return r.data}async validateEntrypoints(e,t){await Promise.all(Object.entries(t).map(async([t,n])=>{if(n!==void 0&&await Qn(e,t,n)===void 0){let e=$n(t,n);throw Error(`${t} entrypoint "${e}" has no resolvable candidate: neither src/${e}.ts nor dist/${e}.mjs exists within the extension root`)}}))}linkPathFor(e){let t=A.resolve(this.extensionsDir,...e.split(`/`)),n=A.relative(this.extensionsDir,t);if(n===``||n.startsWith(`..`)||A.isAbsolute(n))throw Error(`Invalid extension name: ${e}`);return t}};const rr=`nodeLinker: node-modules`,ir=/^[A-Za-z]:[\\/]/;let ar=null;function H(){return ar||(ar=Promise.all([import(`../lib-Ba55od_d.mjs`).then(e=>t(e.t(),1)),import(`../lib-ZKtnbCqH.mjs`).then(e=>t(e.t(),1)),import(`../lib-CM_BUxN8.mjs`).then(e=>t(e.default,1))]).then(([e,t,n])=>({Configuration:e.Configuration,Project:e.Project,Cache:e.Cache,StreamReport:e.StreamReport,structUtils:e.structUtils,ppath:t.ppath,npath:t.npath,xfs:t.xfs,getPluginConfiguration:n.getPluginConfiguration})),ar)}var or=class{makaioHome;constructor(e){this.makaioHome=e}async initialize(){try{let{npath:e,ppath:t,xfs:n}=await H(),r=e.toPortablePath(this.makaioHome),i=t.join(r,`package.json`);if(await n.mkdirpPromise(r),await this.ensureYarnRc(r,n,t),await n.existsPromise(i))return;await n.writeJsonPromise(i,{name:`makaio-packages`,version:`1.0.0`,private:!0,description:`Makaio installed packages`,dependencies:{}}),console.info(`[YarnPackageManager] Created package.json at %s`,i)}catch(e){throw Error(`Failed to initialize package.json`,{cause:e})}}async ensureYarnRc(e,t,n){let r=n.join(e,`.yarnrc.yml`),i=await t.existsPromise(r)?await t.readFilePromise(r,`utf8`):``,a=dr(i);i!==a&&(await t.writeFilePromise(r,a),console.info(`[YarnPackageManager] Wrote .yarnrc.yml at %s`,r))}async loadYarnState(){let{Configuration:e,Project:t,Cache:n,npath:r,getPluginConfiguration:i}=await H(),a=r.toPortablePath(this.makaioHome),o=await e.find(a,i()),{project:s}=await t.find(o,a);return{configuration:o,project:s,cache:await n.find(o)}}async runProjectInstall(e,t,n){let{StreamReport:r}=await H();if((await r.start({configuration:e,stdout:process.stdout},async e=>{await t.install({cache:n,report:e})})).hasErrors())throw Error(`Yarn install failed with errors`)}async parsePackageDescriptor(e){let{structUtils:t}=await H(),n=t.parseDescriptor(e);return n.range===`unknown`?t.makeDescriptor(n,`latest`):n}async installPackage(e){try{let{structUtils:t}=await H(),{configuration:n,project:r,cache:i}=await this.loadYarnState(),a=await this.parsePackageDescriptor(e),o=t.stringifyIdent(a),s=r.topLevelWorkspace.manifest.dependencies.get(a.identHash);r.topLevelWorkspace.manifest.dependencies.set(a.identHash,a),await this.runProjectInstall(n,r,i);let c=r.storedResolutions.get(a.descriptorHash);if(!c)throw Error(`Package resolution not found after installation`);let l=r.storedPackages.get(c);if(!l)throw Error(`Package not found after installation`);let u=l.version??`unknown`;if(!(await this.readInstalledDescriptor(o)).hasDescriptor)throw s?r.topLevelWorkspace.manifest.dependencies.set(a.identHash,s):r.topLevelWorkspace.manifest.dependencies.delete(a.identHash),await this.runProjectInstall(n,r,i),Error(`Installed package ${o} does not contain a valid descriptor.json`);return console.info(`[YarnPackageManager] Installed %s@%s`,o,u),u}catch(t){throw Error(`Failed to install ${e}`,{cause:t})}}async uninstallPackage(e){try{let{structUtils:t}=await H(),{configuration:n,project:r,cache:i}=await this.loadYarnState(),a=t.parseIdent(e);if(!r.topLevelWorkspace.manifest.dependencies.delete(a.identHash))throw Error(`Package ${e} not found in dependencies`);await this.runProjectInstall(n,r,i),console.info(`[YarnPackageManager] Uninstalled %s`,e)}catch(t){throw Error(`Failed to uninstall ${e}`,{cause:t})}}async listPackages(){try{let{xfs:e,npath:t,ppath:n,structUtils:r}=await H(),i=t.toPortablePath(this.makaioHome),a=n.join(i,`package.json`);if(!await e.existsPromise(a))return[];let{project:o}=await this.loadYarnState(),s=[];for(let[,e]of o.topLevelWorkspace.manifest.dependencies){let t=r.stringifyIdent(e),n=o.storedResolutions.get(e.descriptorHash),i=(n?o.storedPackages.get(n):void 0)?.version??r.parseRange(e.range).selector,a=await this.readInstalledDescriptor(t);a.hasDescriptor&&s.push({name:t,version:i,hasDescriptor:!0,...a.serverImportPath!==void 0&&{serverImportPath:a.serverImportPath}})}return s}catch(e){throw Error(`Failed to list packages`,{cause:e})}}async ensureFrameworkDependency(e){let t=lr(e);try{let{structUtils:e}=await H(),{configuration:n,project:r,cache:i}=await this.loadYarnState(),a=e.makeDescriptor(e.parseIdent(`@makaio/framework`),t);if(r.topLevelWorkspace.manifest.dependencies.get(a.identHash)?.range===t)return;r.topLevelWorkspace.manifest.dependencies.set(a.identHash,a),await this.runProjectInstall(n,r,i),console.info(`[YarnPackageManager] Ensured @makaio/framework@%s`,t)}catch(e){throw Error(`Failed to ensure @makaio/framework@${t}`,{cause:e})}}async getLatestVersion(e){return this.resolvePackageVersion(e)}async readInstalledDescriptor(e){let t=await this.readInstalledExtensionDescriptor(e);if(t===null)return{hasDescriptor:!1};let n=await this.resolveInstalledServerEntrypoint(e,t);return{hasDescriptor:!0,...n!==void 0&&{serverImportPath:n}}}async resolveInstalledServerEntrypoint(e,t){let n=t.entrypoints?.server;if(n!==void 0)return Qn(A.join(this.makaioHome,`node_modules`,...e.split(`/`)),`server`,n)}async readInstalledExtensionDescriptor(e){let t=A.join(this.makaioHome,`node_modules`,...e.split(`/`),`descriptor.json`),n;try{let e=await k.readFile(t,`utf-8`);n=JSON.parse(e)}catch(e){if(e instanceof SyntaxError||fr(e))return null;throw e}let r=we(n);return r.success?r.data:null}async listInstalledExtensionDescriptors(){let e=A.join(this.makaioHome,`package.json`),t;try{let n=await k.readFile(e,`utf-8`);t=JSON.parse(n)}catch(e){if(fr(e))return[];throw e}let n=Object.keys(t.dependencies??{});return(await Promise.all(n.map(async e=>{let t=await this.readInstalledExtensionDescriptor(e);return t===null?null:{npmName:e,version:await this.readInstalledPackageVersion(e),descriptor:t}}))).filter(e=>e!==null)}async readInstalledPackageVersion(e){let t=A.join(this.makaioHome,`node_modules`,...e.split(`/`),`package.json`);try{let e=await k.readFile(t,`utf-8`),n=JSON.parse(e);return typeof n.version==`string`?n.version:`unknown`}catch{return`unknown`}}async readManifestSnapshot(){let e=A.join(this.makaioHome,`package.json`),t=await k.readFile(e,`utf-8`);return JSON.parse(t)}async writeManifestAndReinstall(e){let t=A.join(this.makaioHome,`package.json`);await k.writeFile(t,`${JSON.stringify(e,null,2)}\n`,`utf-8`);let{configuration:n,project:r,cache:i}=await this.loadYarnState();await this.runProjectInstall(n,r,i)}async resolvePackageVersion(e){try{let{StreamReport:t}=await H(),{configuration:n,project:r}=await this.loadYarnState(),i=await this.parsePackageDescriptor(e),a=`unknown`;return await t.start({configuration:n,stdout:process.stdout},async e=>{let t=n.makeResolver(),o=await t.getCandidates(i,{},{project:r,resolver:t,report:e});if(o.length>0){let e=o[0];a=e.reference.match(/^npm:(.+)$/)?.[1]??e.reference}}),a}catch(t){throw Error(`Failed to resolve version for ${e}`,{cause:t})}}};function sr(e,t){return!t||t===`latest`?e:`${e}@${t}`}function cr(e){if(e.startsWith(`@`)){let t=e.indexOf(`/`);if(t===-1)return e;let n=e.indexOf(`@`,t+1);return n===-1?e:e.slice(0,n)}let t=e.indexOf(`@`);return t===-1?e:e.slice(0,t)}function lr(e){return e.localPackagePath?`portal:${ur(e.localPackagePath)}`:e.versionRange}function ur(e){let t=(ir.test(e)?e:A.resolve(e)).replace(/\\/g,`/`);return ir.test(t)?`/${t}`:t}function dr(e){let t=e.split(/\r?\n/),n=!1,r=t.map(e=>/^\s*nodeLinker\s*:/.test(e)?(n=!0,rr):e);if(!n){let t=e.trimEnd();return`${t}${t.length>0?`
2
2
  `:``}${rr}\n`}return`${r.join(`
3
3
  `).trimEnd()}\n`}function fr(e){if(typeof e!=`object`||!e||!(`code`in e))return!1;let t=e.code;return t===`ENOENT`||t===`ENOTDIR`}function pr(e){if(e.startsWith(`git+`))return{kind:`git`,raw:e,resolved:e};let t=e===`~`||e.startsWith(`~/`)||e.startsWith(`~\\`);if(e.startsWith(`~`)&&!t)throw Error(`Unsupported home-relative path syntax: ${e}`);return e.startsWith(`.`)||A.isAbsolute(e)||A.win32.isAbsolute(e)||t?{kind:`local`,raw:e,resolved:t?A.resolve(Ze.homedir(),e===`~`?`.`:e.slice(2)):A.resolve(e)}:{kind:`npm`,raw:e,resolved:e}}var mr=class{packages;names;constructor(e,t){this.packages=e,this.names=t}async resolve(e,t={}){let n=t.snapshot!==null,r=n?t.snapshot===void 0?await this.packages.readManifestSnapshot():t.snapshot:null;try{return await this.runBfs(e,t.force===!0)}catch(e){if(n)try{await this.packages.writeManifestAndReinstall(r)}catch(t){throw AggregateError([e,t],`Dependency resolution failed and rollback failed: ${_r(e)}`)}throw e}}async runBfs(e,t){let n=await this.readInstalledIndex(),r=e.map(e=>{let t=gr(e),n=hr(t.npmName);return{npmName:t.npmName,...n?{expectedDescriptorName:n}:{},...t.requiredRange?{requiredRange:t.requiredRange}:{},optional:!1,path:[t.npmName],root:!0}}),i=new Set,a=[],o=[],s=[];for(;r.length>0;){let e=r.shift(),s=i.has(e.npmName),c=n.byNpmName.get(e.npmName);if(s){if(c&&this.assertDescriptorMatches(e,c.descriptor),c&&this.descriptorRangeSatisfied(c.descriptor,e.requiredRange))continue;if(!c)throw Error(`Package ${e.npmName} was resolved but is missing from the installed index`)}if(c&&this.assertDescriptorMatches(e,c.descriptor),c&&this.shouldUseCurrentDescriptor(c.descriptor,e)){a.push({npmName:e.npmName,version:c.version,source:`already-present`}),await this.enqueueDependencies(r,e,c.descriptor),i.add(e.npmName);continue}let l=sr(e.npmName,e.requiredRange),u,d;try{u=await this.packages.installPackage(l);let r=await this.packages.readInstalledExtensionDescriptor(e.npmName);if(!r)throw Error(`Installed package ${e.npmName} does not contain a valid descriptor.json`);this.assertDescriptorMatches(e,r),this.assertDescriptorVersionSatisfies(e,r),await this.assertDependentsCompatible(e.npmName,r.version,n,t),d=r}catch(t){if(e.optional){o.push({npmName:e.npmName,reason:t instanceof Error?t.message:String(t)});continue}throw t}a.push({npmName:e.npmName,version:u,source:c?`upgraded`:`new`}),c={npmName:e.npmName,version:u,descriptor:d},n.byNpmName.set(e.npmName,c),await this.enqueueDependencies(r,e,d),i.add(e.npmName)}return{installed:a,skipped:o,warnings:s}}async readInstalledIndex(){let e=await this.packages.listInstalledExtensionDescriptors();return{byNpmName:new Map(e.map(e=>[e.npmName,e]))}}descriptorRangeSatisfied(e,t){return t===void 0||Ee(e.version,t)}shouldUseCurrentDescriptor(e,t){return t.root&&t.requiredRange===void 0?!1:this.descriptorRangeSatisfied(e,t.requiredRange)}assertDescriptorMatches(e,t){if(!(e.expectedDescriptorName===void 0||t.name===e.expectedDescriptorName))throw Error(`Installed package ${e.npmName} declares descriptor name "${t.name}", expected "${e.expectedDescriptorName}"`)}assertDescriptorVersionSatisfies(e,t){if(!this.descriptorRangeSatisfied(t,e.requiredRange))throw Error(`Installed package ${e.npmName} descriptor version ${t.version} does not satisfy ${t.name} ${e.requiredRange}`)}async assertDependentsCompatible(e,t,n,r){if(r)return;let i=[];for(let r of n.byNpmName.values())for(let n of r.descriptor.dependencies??[])await this.names.resolveNpmPackageName(n.name)===e&&!Ee(t,n.version)&&i.push(`${r.npmName} requires ${n.name} ${n.version}`);if(i.length>0)throw Error(`Cannot install ${e}; existing dependencies would be violated:\n${i.join(`
4
4
  `)}`)}async enqueueDependencies(e,t,n){for(let r of n.dependencies??[]){let n=await this.names.resolveNpmPackageName(r.name);if(t.path.includes(n))throw Error(`Circular dependency detected: ${[...t.path,n].join(` -> `)}`);e.push({npmName:n,expectedDescriptorName:r.name,requiredRange:r.version,optional:r.optional===!0,path:[...t.path,n],root:!1})}}};function hr(e){return e.startsWith(`@`)?void 0:e}function gr(e){let t=cr(e);if(t.length===e.length)return{npmName:t};let n=e.slice(t.length+1);return n===`latest`?{npmName:t}:{npmName:t,requiredRange:n}}function _r(e){return e instanceof Error?e.message:String(e)}var vr=class{registryClient;lookupMapPromise=null;constructor(e){this.registryClient=e}async resolveNpmPackageName(e){if(e.startsWith(`@`))return e;let t;try{t=await this.getLookupMap()}catch(t){throw Error(`Cannot resolve descriptor name "${e}": package registry is unavailable`,{cause:t})}return t.get(e)||`@makaio/${e}`}getLookupMap(){if(this.lookupMapPromise)return this.lookupMapPromise;let e=this.registryClient.getRegistry().then(e=>{let t=new Map;for(let n of[...e.adapters,...e.extensions])n.descriptorName&&t.set(n.descriptorName,n.name);return t}).catch(t=>{throw this.lookupMapPromise===e&&(this.lookupMapPromise=null),t});return this.lookupMapPromise=e,this.lookupMapPromise}},yr=class{inner;portalMap;constructor(e,t){this.inner=e,this.portalMap=t}async installPackage(e){let t=cr(e),n=this.portalMap.get(t);if(n!==void 0){let e=`${t}@portal:${ur(n)}`;return this.inner.installPackage(e)}return this.inner.installPackage(e)}readInstalledExtensionDescriptor(e){return this.inner.readInstalledExtensionDescriptor(e)}listInstalledExtensionDescriptors(){return this.inner.listInstalledExtensionDescriptors()}readManifestSnapshot(){return this.inner.readManifestSnapshot()}writeManifestAndReinstall(e){return this.inner.writeManifestAndReinstall(e)}},br=class{cache=null;inFlightFetch=null;registryUrl;cacheTtlMs;fetchTimeoutMs;fetchImpl;constructor(e={}){this.registryUrl=e.registryUrl??`https://raw.githubusercontent.com/makaio-ai/makaio/develop/registry/packages.json`,this.cacheTtlMs=e.cacheTtlMs??36e5,this.fetchTimeoutMs=e.fetchTimeoutMs??1e4,this.fetchImpl=e.fetchImpl??fetch}async getRegistry(){if(this.cache&&Date.now()-this.cache.timestamp<this.cacheTtlMs)return this.cache.data;this.inFlightFetch??=this.fetchAndCacheRegistry();try{return await this.inFlightFetch}finally{this.inFlightFetch=null}}async fetchAndCacheRegistry(){let e=new AbortController,t=setTimeout(()=>e.abort(),this.fetchTimeoutMs);try{let t=await this.fetchImpl(this.registryUrl,{signal:e.signal});if(!t.ok)throw Error(`HTTP ${t.status}: ${t.statusText}`);let n=await t.json(),r=Yn.parse(n);return this.cache={data:r,timestamp:Date.now()},r}catch(e){let t=e instanceof Error?e:Error(String(e));throw Error(`Failed to fetch package registry`,{cause:t})}finally{clearTimeout(t)}}clearCache(){this.cache=null}},xr=t(r(),1),Sr=`1.0.0`;function Cr(){let e=Sr;if(typeof e!=`string`||e.length===0)throw Error(`Package manager package metadata must include a string version.`);return`^${e}`}const wr=Cr();var Tr=class extends je{yarnManager;registryService;localInstaller;dependencyResolver;frameworkPeerRange;frameworkPackagePath;constructor(e,t,n={}){super(e),this.yarnManager=n.yarnManager??new or(t),this.registryService=n.registryService??new br,this.localInstaller=n.localInstaller??new nr(A.join(t,`extensions`)),this.frameworkPeerRange=n.frameworkPeerRange??wr,this.frameworkPackagePath=n.frameworkPackagePath;let r=n.devPortalPackages?.size?new yr(this.yarnManager,n.devPortalPackages):this.yarnManager;this.dependencyResolver=n.dependencyResolver??new mr(r,new vr(this.registryService))}async onInit(){await this.yarnManager.initialize(),console.info(`[PackageManagerService] Initialized`),this.registerPackageHandlers(),this.registerRegistryHandlers()}normalizePackageName(e){if(typeof e!=`string`)return null;let t=e.trim();return t.length>0?t:null}validatePackageNamePayload(e,t){return this.normalizePackageName(e)||(t(),null)}createInvalidPackageNameResult(e){return e?{success:!1,packageName:``,latestVersion:e.latestVersion,error:`Invalid packageName`}:{success:!1,packageName:``,error:`Invalid packageName`,restartRequired:!1}}async emitInstalled(e,t){try{await this.bus.emit(V.installed,{packageName:e,version:t})}catch(e){console.error(`[PackageManagerService] installed emit failed:`,e)}}async emitUninstalled(e){try{await this.bus.emit(V.uninstalled,{packageName:e})}catch(e){console.error(`[PackageManagerService] uninstalled emit failed:`,e)}}registerPackageHandlers(){this.registerListHandler(),this.registerInstallHandler(),this.registerUninstallHandler()}registerListHandler(){this.registerHandler(V.list,async e=>{try{let[t,n]=await Promise.all([this.yarnManager.listPackages(),this.localInstaller.list()]),r=[...t,...n.map(e=>({name:e.name,version:e.version,hasDescriptor:!0,...e.serverImportPath!==void 0&&{serverImportPath:e.serverImportPath}}))];e.setResult({packages:r})}catch(t){let n=t instanceof Error?t.message:String(t);console.error(`[PackageManagerService] List failed:`,n),e.setResult({packages:[]})}})}async ensureFrameworkPeer(){try{await this.yarnManager.ensureFrameworkDependency({versionRange:this.frameworkPeerRange,...this.frameworkPackagePath?{localPackagePath:this.frameworkPackagePath}:{}})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to ensure @makaio/framework dependency ${this.frameworkPeerRange}: ${t}`,{cause:e})}}async installNpmPackages(e,t){let n=await this.yarnManager.readManifestSnapshot(),r;try{await this.ensureFrameworkPeer(),r=await this.dependencyResolver.resolve(e,{force:t,snapshot:null})}catch(e){try{await this.yarnManager.writeManifestAndReinstall(n)}catch(t){let n=e instanceof Error?e.message:String(e);throw AggregateError([e,t],`Package install failed and rollback failed: ${n}`)}throw e}for(let e of r.installed)e.source!==`already-present`&&await this.emitInstalled(e.npmName,e.version);let i=r.installed[0];return{success:!0,packageName:i?.npmName??e[0]??``,version:i?.version,restartRequired:!0,installed:[...r.installed],skipped:[...r.skipped],warnings:[...r.warnings]}}registerInstallHandler(){this.registerHandler(V.install,async e=>{let t=e.payload.packageNames??(e.payload.packageName===void 0?[]:[e.payload.packageName]),n=t.map(e=>this.normalizePackageName(e)).filter(e=>e!==null);if(n.length!==t.length||n.length===0){e.setResult(this.createInvalidPackageNameResult());return}let r;if(e.payload.source!==void 0)r={kind:e.payload.source};else{let t=n.map(e=>pr(e));r=t[0];let i=t.find(e=>e.kind!==r.kind);if(i){e.setResult({success:!1,packageName:``,error:`Cannot mix install sources: ${r.kind} and ${i.kind}`,restartRequired:!1});return}}if(r.kind===`git`){e.setResult({success:!1,packageName:n[0],error:`Git URL installs are not yet supported`,restartRequired:!1});return}if(r.kind===`local`){if(n.length>1){e.setResult({success:!1,packageName:``,error:`Local installs only support a single path`,restartRequired:!1});return}let t=await this.localInstaller.install(n[0]);t.success&&await this.emitInstalled(t.packageName,t.version??`unknown`),e.setResult(t);return}try{e.setResult(await this.installNpmPackages(n,e.payload.force))}catch(t){let r=t instanceof Error?t.message:String(t);console.error(`[PackageManagerService] Install failed:`,r),e.setResult({success:!1,packageName:n[0]??``,error:r,restartRequired:!1})}})}registerUninstallHandler(){this.registerHandler(V.uninstall,async e=>{let t=this.validatePackageNamePayload(e.payload.packageName,()=>{e.setResult(this.createInvalidPackageNameResult())});if(t){if((await this.localInstaller.list()).find(e=>e.name===t)){let n=await this.localInstaller.uninstall(t);n.success&&await this.emitUninstalled(t),e.setResult(n);return}try{await this.yarnManager.uninstallPackage(t),await this.emitUninstalled(t),e.setResult({success:!0,packageName:t,restartRequired:!0})}catch(n){let r=n instanceof Error?n.message:String(n);console.error(`[PackageManagerService] Uninstall failed:`,r),e.setResult({success:!1,packageName:t,error:r,restartRequired:!1})}}})}registerRegistryHandlers(){this.registerHandler(V.getLatestVersion,async e=>{let t=this.validatePackageNamePayload(e.payload.packageName,()=>{e.setResult(this.createInvalidPackageNameResult({latestVersion:`unknown`}))});if(t)try{let n=await this.yarnManager.getLatestVersion(t);e.setResult({success:!0,packageName:t,latestVersion:n})}catch(n){let r=n instanceof Error?n.message:String(n);console.error(`[PackageManagerService] Version check failed:`,r),e.setResult({success:!1,packageName:t,latestVersion:`unknown`,error:r})}}),this.registerHandler(V.getRegistry,async e=>{try{let t=await this.registryService.getRegistry();e.setResult(t)}catch(t){let n=t instanceof Error?t.message:String(t);console.error(`[PackageManagerService] Registry fetch failed:`,n),e.setResult({$schema:`makaio/package-registry/v1`,updatedAt:new Date().toISOString(),adapters:[],extensions:[]})}}),this.registerHandler(V.checkUpdates,async e=>{try{let t=await this.checkForUpdates();e.setResult({updates:t})}catch(t){let n=t instanceof Error?t.message:String(t);console.error(`[PackageManagerService] Update check failed:`,n),e.setResult({updates:[]})}})}async checkForUpdates(){try{let e=await this.yarnManager.listPackages(),t=[];return await Promise.all(e.map(async e=>{try{let n=await this.yarnManager.getLatestVersion(e.name);xr.valid(e.version)&&xr.valid(n)&&xr.gt(n,e.version)&&t.push({name:e.name,currentVersion:e.version,latestVersion:n,description:e.description})}catch(t){console.warn(`[PackageManagerService] Failed to check updates for %s:`,e.name,t)}})),console.info(`[PackageManagerService] Found %d package updates`,t.length),t}catch(e){throw Error(`Failed to check for updates`,{cause:e})}}};function Er(e={}){return{name:`makaio.package-manager`,displayName:`Package Manager`,version:`0.1.0`,critical:!0,namespaces:[Zn],create:t=>new Tr(t.bus,t.makaioHome,{registryService:e.registryService,dependencyResolver:e.dependencyResolver,frameworkPeerRange:e.frameworkPeerRange,frameworkPackagePath:e.frameworkPackagePath,devPortalPackages:e.devPortalPackages})}}function Dr(e){return{filter:e=>!!e.http,async processActivated(t,n){e.add({owner:t,phase:`extension`,mount:e=>n.http.mount(e)})},async processStopped(t){e.remove(t)}}}const Or={resolve(e,t){return!e&&!t?null:e?t?e.updatedAt>t.updatedAt?e:t:e:t}};function kr(e){return{scope:e.scope,surface:e.surface??`any`,context:e.context??`any`,viewport:e.viewport??`any`}}function Ar(e){return{scope:e.scope,surface:e.surface===`any`?void 0:e.surface,context:e.context===`any`?void 0:e.context,viewport:e.viewport===`any`?void 0:e.viewport}}function jr(e,t){return[`makaio:prefs`,e.scope,e.surface||`any`,e.context||`any`,e.viewport||`any`,t].join(`:`)}function Mr(e){return typeof e==`object`&&!!e&&`value`in e&&`updatedAt`in e&&typeof e.value==`string`&&typeof e.updatedAt==`number`}function Nr(e){try{let t=JSON.parse(e);return Mr(t)?t:{value:JSON.stringify(t),updatedAt:0}}catch{return null}}const Pr=Ie(`preferences`,e=>({scope:e.text(`scope`).notNull(),surface:e.text(`surface`).notNull().default(`any`),context:e.text(`context`).notNull().default(`any`),viewport:e.text(`viewport`).notNull().default(`any`),category:e.text(`category`).notNull(),value:e.text(`value`).notNull(),updatedAt:e.epochMs(`updated_at`).notNull()}),{sqlite:e=>[Me(`preferences_pk`).on(e.scope,e.surface,e.context,e.viewport,e.category)],postgres:e=>[Ne(`preferences_pk`).on(e.scope,e.surface,e.context,e.viewport,e.category)]}),Fr=Pr.sqlite,Ir=Pr.postgres,Lr=Fe({preferences:Fr},{preferences:Ir});function Rr(e,t,n){let r=[];return n!==void 0&&r.push(R(e.category,n)),t&&(t.scope!==void 0&&r.push(R(e.scope,t.scope)),t.surface!==void 0&&r.push(R(e.surface,t.surface)),t.context!==void 0&&r.push(R(e.context,t.context)),t.viewport!==void 0&&r.push(R(e.viewport,t.viewport))),r}async function zr(e,t,n){let{preferences:r}=Ue(e,Lr),i=Rr(r,t,n);return(i.length>0?await e.select().from(r).where(Ke(...i)):await e.select().from(r)).map(e=>{let t;try{t=JSON.parse(e.value)}catch{t=null}let n=Kt.safeParse(t);return{key:Ar(e),category:e.category,value:n.success?n.data:null,updatedAt:e.updatedAt}})}async function Br(e,t,n){let{preferences:r}=Ue(e,Lr),i=kr(t),[a]=await e.select().from(r).where(Ke(R(r.scope,i.scope),R(r.surface,i.surface),R(r.context,i.context),R(r.viewport,i.viewport),R(r.category,n))).limit(1);return a}var Vr=class{db;conflictResolver;constructor(e){this.db=e.db,this.conflictResolver=e.conflictResolver??Or}async get(e,t){let n=await this.readFromDb(e,t),r=this.readFromLocalStorage(e,t),i=r?.updatedAt===0?r:null;!n&&r&&!i&&this.removeFromLocalStorage(e,t);let a=this.conflictResolver.resolve(i,n);if(!a)return null;let o;try{o=JSON.parse(a.value)}catch{return null}let s=Kt.safeParse(o);return s.success?(await this.syncResolvedPreference(e,t,a,r,n),s.data):null}async set(e,t,n){let r=Date.now(),i=JSON.stringify(n??null);this.writeToLocalStorage(e,t,{value:i,updatedAt:r}),await this.writeToDb(e,t,i,r)}async delete(e,t){this.removeFromLocalStorage(e,t),await this.deleteFromDb(e,t)}async list(e,t){return zr(this.db,e,t)}async writeToDb(e,t,n,r){let{preferences:i}=Ue(this.db,Lr),a=kr(e);await this.db.insert(i).values({...a,category:t,value:n,updatedAt:r}).onConflictDoUpdate({target:[i.scope,i.surface,i.context,i.viewport,i.category],set:{value:n,updatedAt:r}})}readFromLocalStorage(e,t){let n=jr(e,t),r=globalThis.localStorage?.getItem(n);return r?Nr(r):null}writeToLocalStorage(e,t,n){let r=jr(e,t);try{globalThis.localStorage?.setItem(r,JSON.stringify(n))}catch(e){console.warn(`[StorageCoordinator] localStorage write failed:`,e)}}removeFromLocalStorage(e,t){let n=jr(e,t);try{globalThis.localStorage?.removeItem(n)}catch(e){console.warn(`[StorageCoordinator] localStorage delete failed:`,e)}}async syncResolvedPreference(e,t,n,r,i){this.isSameStoredPreference(n,i)||await this.writeToDb(e,t,n.value,n.updatedAt),r&&!this.isSameStoredPreference(n,r)&&this.writeToLocalStorage(e,t,n)}isSameStoredPreference(e,t){return!e||!t?!1:e.value===t.value&&e.updatedAt===t.updatedAt}async readFromDb(e,t){let n=await Br(this.db,e,t);return n?{value:n.value,updatedAt:n.updatedAt}:null}async deleteFromDb(e,t){let{preferences:n}=Ue(this.db,Lr),r=kr(e);await this.db.delete(n).where(Ke(R(n.scope,r.scope),R(n.surface,r.surface),R(n.context,r.context),R(n.viewport,r.viewport),R(n.category,t)))}};function Hr(e,t,n){let r=new Vr({db:t}),i=e.on(qt.get,async e=>{let{key:t,category:n}=e.payload,i=await r.get(t,n);e.setResult({value:i})}),a=e.on(qt.set,async e=>{let{key:t,category:n,value:i}=e.payload;await r.set(t,n,i),e.setResult({success:!0})}),o=e.on(qt.delete,async e=>{let{key:t,category:n}=e.payload;await r.delete(t,n),e.setResult({success:!0})}),s=e.on(qt.list,async e=>{let{key:t,category:n}=e.payload,i=await r.list(t,n);e.setResult({items:i})});return()=>{i(),a(),o(),s()}}const Ur={name:`preferences-storage`,displayName:`Preferences Storage`,version:`0.1.0`,critical:!0,storage:{registerHandlers:Ve(Hr)}},Wr=se(oe);function Gr(e,t){if(!e.ok)throw Error(`HTTP ${e.status} ${e.statusText} fetching ${t}`)}function Kr(e){return{fetchTimeoutMs:e.fetchTimeoutMs??3e4,downloadTimeoutMs:e.downloadTimeoutMs??6e5,execTimeoutMs:e.execTimeoutMs??12e4,extractTimeoutMs:e.extractTimeoutMs??3e5}}async function qr(e,t){try{return await fetch(e,{signal:AbortSignal.timeout(t)})}catch(n){let r=n instanceof Error?n.name:``;throw r===`AbortError`||r===`TimeoutError`?Error(`Timed out fetching ${e} after ${t}ms`,{cause:n}):n}}async function Jr(e,t,n,r){await k.mkdir(t,{recursive:!0}),n===`tar.gz`?await Wr(`tar`,[`-xzf`,e,`-C`,t],{timeout:r}).catch(n=>{throw n.code===`ENOENT`?Error(`tar extraction failed: host executable "tar" was not found on PATH`):Error(`tar extraction failed: ${e} → ${t}\nstderr: ${n.stderr??``}\n${String(n.message)}`)}):await Wr(`unzip`,[`-q`,e,`-d`,t],{timeout:r}).catch(n=>{throw n.code===`ENOENT`?Error(`zip extraction failed: host executable "unzip" was not found on PATH`):Error(`unzip extraction failed: ${e} → ${t}\nstderr: ${n.stderr??``}\n${String(n.message)}`)})}async function Yr(e,t,n,r){let{stdout:i}=await Wr(e,t,{cwd:n?.cwd,env:n?.env===void 0?process.env:{...process.env,...n.env},shell:!1,timeout:r}).catch(n=>{if(n.code===`ENOENT`)throw Error(`Command failed: host executable "${e}" was not found on PATH`);let r=n.stderr??``;throw Error(`Command failed: ${e} ${t.join(` `)}\nstderr: ${r}\n${String(n.message)}`)});return(i??``).trim()}function Xr(e={}){let{fetchTimeoutMs:t,downloadTimeoutMs:n,execTimeoutMs:r,extractTimeoutMs:i}=Kr(e);return{async fetchText(e){let n=await qr(e,t);return Gr(n,e),n.text()},async fetchJson(e){let n=await qr(e,t);return Gr(n,e),n.json()},async downloadFile(e,t,r){let i=await qr(e,n);if(Gr(i,e),i.body===null)throw Error(`Response body is null for URL: ${e}`);let a=i.headers.get(`content-length`),o=a===null?null:parseInt(a,10),s=o!==null&&!isNaN(o)?o:null;await k.mkdir(A.dirname(t),{recursive:!0});let c=P.createWriteStream(t),l=0,u=new ht({transform(e,t,n){l+=e.length,r?.(l,s),n(null,e)}});try{await gt(mt.from(i.body),u,c)}catch(e){throw await k.rm(t,{force:!0}),e}return t},exec(e,t,n){return Yr(e,t,n,r)},async extractArchive(e,t,n){await Jr(e,t,n,i)},async deleteFile(e){await k.rm(e,{force:!0})},async computeChecksum(e,t=`sha256`){return new Promise((n,r)=>{let i=N(t),a=P.createReadStream(e);a.on(`error`,r),a.on(`data`,e=>i.update(e)),a.on(`end`,()=>n(i.digest(`hex`)))})},async removeDirectory(e){await k.rm(e,{recursive:!0,force:!0})}}}function Zr(e){let t,n=!1;for(let r=e.length-1;r>=0;--r){let i=e[r];try{i()}catch(e){n||=(t=e,!0)}}if(e.length=0,n)throw t}function Qr(e,t){try{return t()}catch(t){try{Zr(e)}catch{}throw t}}function $r(e,t){for(let n of e){let e=n.providers.find(e=>e.definition.id===t);if(e)return e}}function ei(e,t,n){for(let r of t){let t=e.find(e=>e.name===r.adapterName);if(t?.providers.some(e=>e.definition.id===n))return t}}function ti(e){let{$schema:t,...n}=e;return n}function ni(e,t){let n=e.definition,r=Date.now();return{id:n.id,packageName:t,name:n.name,description:n.description,endpoints:n.endpoints,defaultModel:n.defaultModel,fastModel:n.fastModel,availableModels:n.availableModels??[],defaultModelFilterMode:`show-all`,credentialEnvVars:n.credentialEnvVars,capabilities:n.capabilities,enabled:!0,createdAt:r,updatedAt:r}}function ri(e,t,n,r){let i=[];return Qr(i,()=>(i.push(e.on(Qt.adapter.getConfigSchema,({payload:e,setResult:n})=>{let r=t().find(t=>t.name===e.adapterName);if(!r?.adapterConfigSchema){n({hasSchema:!1,schema:null});return}n({hasSchema:!0,schema:D.toJSONSchema(r.adapterConfigSchema)})})),i.push(e.on(Xt.getCredentialSchema,({payload:e,setResult:n})=>{let r=$r(t(),e.definitionId)?.credentialSchema;if(r){n({hasSchema:!0,schema:D.toJSONSchema(r)});return}n({hasSchema:!1,schema:null})})),i.push(e.on(Xt.getConfigSchema,({payload:e,setResult:n})=>{let r=$r(t(),e.definitionId)?.configSchema;if(r){n({hasSchema:!0,schema:D.toJSONSchema(r)});return}n({hasSchema:!1,schema:null})})),r&&i.push(e.on(Qt.extension.getConfigSchema,({payload:e,setResult:t})=>{let n=r(e.extensionName);if(!n?.configSchema){t({hasSchema:!1,schema:null,uiConfig:null});return}t({hasSchema:!0,schema:ti(D.toJSONSchema(n.configSchema)),uiConfig:n.uiConfig??null})})),i.push(e.on(Qe.get,({payload:e,setResult:n})=>{for(let r of t()){let t=r.providers.find(t=>t.definition.id===e.id);if(t){n({provider:ni(t,r.packageName)});return}}n({provider:null})},{priority:-1})),i.push(e.on(Qe.list,({setResult:e})=>{let n=[],r=new Set;for(let e of t())for(let t of e.providers)r.has(t.definition.id)||(r.add(t.definition.id),n.push(ni(t,e.packageName)));e({providers:n})},{priority:-1})),i.push(e.on(Zt.fetchModels,async({payload:r,setResult:i})=>{let{config:a}=await e.request(et.getProviderConfig,{id:r.providerConfigId});if(!a)throw Error(`Provider config '${r.providerConfigId}' not found`);let{bindings:o}=await e.request(et.listBindingsByConfig,{providerConfigId:r.providerConfigId}),s=ei(t(),o,a.definitionId);if(!s)throw Error(o.length===0?`Provider config '${r.providerConfigId}' is not bound to an adapter`:`No loaded adapter bound to provider config '${r.providerConfigId}' for definition '${a.definitionId}'`);let c=await Xe(e,r.providerConfigId),l=s.options.adapterId,u=l?n().get(l):void 0;if(!l||!u)throw Error(`Adapter instance for '${s.name}' not initialized`);if(!(`fetchModels`in u)||typeof u.fetchModels!=`function`)throw Error(`Adapter '${s.name}' does not support model fetching`);let d=await Jt(e,c.credentialRefs),f=c.endpointOverrides?Object.values(c.endpointOverrides).find(e=>e!==void 0):void 0;i({models:await u.fetchModels(f,d)})})),()=>{Zr(i)}))}function ii(e,t){let n=new Map;for(let[r,i]of e)t.has(r)&&n.set(r,i);return n}function ai(...e){let t=new Map;for(let n of e)for(let[e,r]of n)t.set(e,{...t.get(e)??{},...r});return t}function oi(e,t){let n=[e.on(L.get,async e=>{let n=await t.getConfig();e.setResult({config:n})}),e.on(L.update,async e=>{let n=I.parse(e.payload.config),r=await t.prepareConfigForPersistence(n);await t.saveConfig(r),e.setResult({success:!0})})];return()=>{for(let e of n)e()}}var U=n((e=>{let t=Symbol.for(`yaml.alias`),n=Symbol.for(`yaml.document`),r=Symbol.for(`yaml.map`),i=Symbol.for(`yaml.pair`),a=Symbol.for(`yaml.scalar`),o=Symbol.for(`yaml.seq`),s=Symbol.for(`yaml.node.type`),c=e=>!!e&&typeof e==`object`&&e[s]===t,l=e=>!!e&&typeof e==`object`&&e[s]===n,u=e=>!!e&&typeof e==`object`&&e[s]===r,d=e=>!!e&&typeof e==`object`&&e[s]===i,f=e=>!!e&&typeof e==`object`&&e[s]===a,p=e=>!!e&&typeof e==`object`&&e[s]===o;function m(e){if(e&&typeof e==`object`)switch(e[s]){case r:case o:return!0}return!1}function h(e){if(e&&typeof e==`object`)switch(e[s]){case t:case r:case a:case o:return!0}return!1}e.ALIAS=t,e.DOC=n,e.MAP=r,e.NODE_TYPE=s,e.PAIR=i,e.SCALAR=a,e.SEQ=o,e.hasAnchor=e=>(f(e)||m(e))&&!!e.anchor,e.isAlias=c,e.isCollection=m,e.isDocument=l,e.isMap=u,e.isNode=h,e.isPair=d,e.isScalar=f,e.isSeq=p})),si=n((e=>{var t=U();let n=Symbol(`break visit`),r=Symbol(`skip children`),i=Symbol(`remove node`);function a(e,n){let r=l(n);t.isDocument(e)?o(null,e.contents,r,Object.freeze([e]))===i&&(e.contents=null):o(null,e,r,Object.freeze([]))}a.BREAK=n,a.SKIP=r,a.REMOVE=i;function o(e,r,a,s){let c=u(e,r,a,s);if(t.isNode(c)||t.isPair(c))return d(e,s,c),o(e,c,a,s);if(typeof c!=`symbol`){if(t.isCollection(r)){s=Object.freeze(s.concat(r));for(let e=0;e<r.items.length;++e){let t=o(e,r.items[e],a,s);if(typeof t==`number`)e=t-1;else if(t===n)return n;else t===i&&(r.items.splice(e,1),--e)}}else if(t.isPair(r)){s=Object.freeze(s.concat(r));let e=o(`key`,r.key,a,s);if(e===n)return n;e===i&&(r.key=null);let t=o(`value`,r.value,a,s);if(t===n)return n;t===i&&(r.value=null)}}return c}async function s(e,n){let r=l(n);t.isDocument(e)?await c(null,e.contents,r,Object.freeze([e]))===i&&(e.contents=null):await c(null,e,r,Object.freeze([]))}s.BREAK=n,s.SKIP=r,s.REMOVE=i;async function c(e,r,a,o){let s=await u(e,r,a,o);if(t.isNode(s)||t.isPair(s))return d(e,o,s),c(e,s,a,o);if(typeof s!=`symbol`){if(t.isCollection(r)){o=Object.freeze(o.concat(r));for(let e=0;e<r.items.length;++e){let t=await c(e,r.items[e],a,o);if(typeof t==`number`)e=t-1;else if(t===n)return n;else t===i&&(r.items.splice(e,1),--e)}}else if(t.isPair(r)){o=Object.freeze(o.concat(r));let e=await c(`key`,r.key,a,o);if(e===n)return n;e===i&&(r.key=null);let t=await c(`value`,r.value,a,o);if(t===n)return n;t===i&&(r.value=null)}}return s}function l(e){return typeof e==`object`&&(e.Collection||e.Node||e.Value)?Object.assign({Alias:e.Node,Map:e.Node,Scalar:e.Node,Seq:e.Node},e.Value&&{Map:e.Value,Scalar:e.Value,Seq:e.Value},e.Collection&&{Map:e.Collection,Seq:e.Collection},e):e}function u(e,n,r,i){if(typeof r==`function`)return r(e,n,i);if(t.isMap(n))return r.Map?.(e,n,i);if(t.isSeq(n))return r.Seq?.(e,n,i);if(t.isPair(n))return r.Pair?.(e,n,i);if(t.isScalar(n))return r.Scalar?.(e,n,i);if(t.isAlias(n))return r.Alias?.(e,n,i)}function d(e,n,r){let i=n[n.length-1];if(t.isCollection(i))i.items[e]=r;else if(t.isPair(i))e===`key`?i.key=r:i.value=r;else if(t.isDocument(i))i.contents=r;else{let e=t.isAlias(i)?`alias`:`scalar`;throw Error(`Cannot replace node with ${e} parent`)}}e.visit=a,e.visitAsync=s})),ci=n((e=>{var t=U(),n=si();let r={"!":`%21`,",":`%2C`,"[":`%5B`,"]":`%5D`,"{":`%7B`,"}":`%7D`},i=e=>e.replace(/[!,[\]{}]/g,e=>r[e]);var a=class e{constructor(t,n){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},e.defaultYaml,t),this.tags=Object.assign({},e.defaultTags,n)}clone(){let t=new e(this.yaml,this.tags);return t.docStart=this.docStart,t}atDocument(){let t=new e(this.yaml,this.tags);switch(this.yaml.version){case`1.1`:this.atNextDocument=!0;break;case`1.2`:this.atNextDocument=!1,this.yaml={explicit:e.defaultYaml.explicit,version:`1.2`},this.tags=Object.assign({},e.defaultTags);break}return t}add(t,n){this.atNextDocument&&=(this.yaml={explicit:e.defaultYaml.explicit,version:`1.1`},this.tags=Object.assign({},e.defaultTags),!1);let r=t.trim().split(/[ \t]+/),i=r.shift();switch(i){case`%TAG`:{if(r.length!==2&&(n(0,`%TAG directive should contain exactly two parts`),r.length<2))return!1;let[e,t]=r;return this.tags[e]=t,!0}case`%YAML`:{if(this.yaml.explicit=!0,r.length!==1)return n(0,`%YAML directive should contain exactly one part`),!1;let[e]=r;if(e===`1.1`||e===`1.2`)return this.yaml.version=e,!0;{let t=/^\d+\.\d+$/.test(e);return n(6,`Unsupported YAML version ${e}`,t),!1}}default:return n(0,`Unknown directive ${i}`,!0),!1}}tagName(e,t){if(e===`!`)return`!`;if(e[0]!==`!`)return t(`Not a valid tag: ${e}`),null;if(e[1]===`<`){let n=e.slice(2,-1);return n===`!`||n===`!!`?(t(`Verbatim tags aren't resolved, so ${e} is invalid.`),null):(e[e.length-1]!==`>`&&t(`Verbatim tags must end with a >`),n)}let[,n,r]=e.match(/^(.*!)([^!]*)$/s);r||t(`The ${e} tag has no suffix`);let i=this.tags[n];if(i)try{return i+decodeURIComponent(r)}catch(e){return t(String(e)),null}return n===`!`?e:(t(`Could not resolve tag: ${e}`),null)}tagString(e){for(let[t,n]of Object.entries(this.tags))if(e.startsWith(n))return t+i(e.substring(n.length));return e[0]===`!`?e:`!<${e}>`}toString(e){let r=this.yaml.explicit?[`%YAML ${this.yaml.version||`1.2`}`]:[],i=Object.entries(this.tags),a;if(e&&i.length>0&&t.isNode(e.contents)){let r={};n.visit(e.contents,(e,n)=>{t.isNode(n)&&n.tag&&(r[n.tag]=!0)}),a=Object.keys(r)}else a=[];for(let[t,n]of i)t===`!!`&&n===`tag:yaml.org,2002:`||(!e||a.some(e=>e.startsWith(n)))&&r.push(`%TAG ${t} ${n}`);return r.join(`
@@ -116,4 +116,4 @@ $&`).replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,`$1$2`).replace(/\
116
116
  `,e)+1}yield*this.pop();break;default:yield*this.pop(),yield*this.step()}}*blockMap(e){let t=e.items[e.items.length-1];switch(this.type){case`newline`:if(this.onKeyLine=!1,t.value){let n=`end`in t.value?t.value.end:void 0;(Array.isArray(n)?n[n.length-1]:void 0)?.type===`comment`?n?.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case`space`:case`comment`:if(t.value)e.items.push({start:[this.sourceToken]});else if(t.sep)t.sep.push(this.sourceToken);else{if(this.atIndentedComment(t.start,e.indent)){let n=e.items[e.items.length-2]?.value?.end;if(Array.isArray(n)){u(n,t.start),n.push(this.sourceToken),e.items.pop();return}}t.start.push(this.sourceToken)}return}if(this.indent>=e.indent){let n=!this.onKeyLine&&this.indent===e.indent,r=n&&(t.sep||t.explicitKey)&&this.type!==`seq-item-ind`,i=[];if(r&&t.sep&&!t.value){let n=[];for(let r=0;r<t.sep.length;++r){let i=t.sep[r];switch(i.type){case`newline`:n.push(r);break;case`space`:break;case`comment`:i.indent>e.indent&&(n.length=0);break;default:n.length=0}}n.length>=2&&(i=t.sep.splice(n[1]))}switch(this.type){case`anchor`:case`tag`:r||t.value?(i.push(this.sourceToken),e.items.push({start:i}),this.onKeyLine=!0):t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case`explicit-key-ind`:!t.sep&&!t.explicitKey?(t.start.push(this.sourceToken),t.explicitKey=!0):r||t.value?(i.push(this.sourceToken),e.items.push({start:i,explicitKey:!0})):this.stack.push({type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken],explicitKey:!0}]}),this.onKeyLine=!0;return;case`map-value-ind`:if(t.explicitKey)if(!t.sep)if(a(t.start,`newline`))Object.assign(t,{key:null,sep:[this.sourceToken]});else{let e=l(t.start);this.stack.push({type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:e,key:null,sep:[this.sourceToken]}]})}else if(t.value)e.items.push({start:[],key:null,sep:[this.sourceToken]});else if(a(t.sep,`map-value-ind`))this.stack.push({type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:i,key:null,sep:[this.sourceToken]}]});else if(s(t.key)&&!a(t.sep,`newline`)){let e=l(t.start),n=t.key,r=t.sep;r.push(this.sourceToken),delete t.key,delete t.sep,this.stack.push({type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:e,key:n,sep:r}]})}else i.length>0?t.sep=t.sep.concat(i,this.sourceToken):t.sep.push(this.sourceToken);else t.sep?t.value||r?e.items.push({start:i,key:null,sep:[this.sourceToken]}):a(t.sep,`map-value-ind`)?this.stack.push({type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]}):t.sep.push(this.sourceToken):Object.assign(t,{key:null,sep:[this.sourceToken]});this.onKeyLine=!0;return;case`alias`:case`scalar`:case`single-quoted-scalar`:case`double-quoted-scalar`:{let n=this.flowScalar(this.type);r||t.value?(e.items.push({start:i,key:n,sep:[]}),this.onKeyLine=!0):t.sep?this.stack.push(n):(Object.assign(t,{key:n,sep:[]}),this.onKeyLine=!0);return}default:{let r=this.startBlockValue(e);if(r){if(r.type===`block-seq`){if(!t.explicitKey&&t.sep&&!a(t.sep,`newline`)){yield*this.pop({type:`error`,offset:this.offset,message:`Unexpected block-seq-ind on same line with key`,source:this.source});return}}else n&&e.items.push({start:i});this.stack.push(r);return}}}}yield*this.pop(),yield*this.step()}*blockSequence(e){let t=e.items[e.items.length-1];switch(this.type){case`newline`:if(t.value){let n=`end`in t.value?t.value.end:void 0;(Array.isArray(n)?n[n.length-1]:void 0)?.type===`comment`?n?.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else t.start.push(this.sourceToken);return;case`space`:case`comment`:if(t.value)e.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment(t.start,e.indent)){let n=e.items[e.items.length-2]?.value?.end;if(Array.isArray(n)){u(n,t.start),n.push(this.sourceToken),e.items.pop();return}}t.start.push(this.sourceToken)}return;case`anchor`:case`tag`:if(t.value||this.indent<=e.indent)break;t.start.push(this.sourceToken);return;case`seq-item-ind`:if(this.indent!==e.indent)break;t.value||a(t.start,`seq-item-ind`)?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return}if(this.indent>e.indent){let t=this.startBlockValue(e);if(t){this.stack.push(t);return}}yield*this.pop(),yield*this.step()}*flowCollection(e){let t=e.items[e.items.length-1];if(this.type===`flow-error-end`){let e;do yield*this.pop(),e=this.peek(1);while(e?.type===`flow-collection`)}else if(e.end.length===0){switch(this.type){case`comma`:case`explicit-key-ind`:!t||t.sep?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return;case`map-value-ind`:!t||t.value?e.items.push({start:[],key:null,sep:[this.sourceToken]}):t.sep?t.sep.push(this.sourceToken):Object.assign(t,{key:null,sep:[this.sourceToken]});return;case`space`:case`comment`:case`newline`:case`anchor`:case`tag`:!t||t.value?e.items.push({start:[this.sourceToken]}):t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case`alias`:case`scalar`:case`single-quoted-scalar`:case`double-quoted-scalar`:{let n=this.flowScalar(this.type);!t||t.value?e.items.push({start:[],key:n,sep:[]}):t.sep?this.stack.push(n):Object.assign(t,{key:n,sep:[]});return}case`flow-map-end`:case`flow-seq-end`:e.end.push(this.sourceToken);return}let n=this.startBlockValue(e);n?this.stack.push(n):(yield*this.pop(),yield*this.step())}else{let t=this.peek(2);if(t.type===`block-map`&&(this.type===`map-value-ind`&&t.indent===e.indent||this.type===`newline`&&!t.items[t.items.length-1].sep))yield*this.pop(),yield*this.step();else if(this.type===`map-value-ind`&&t.type!==`flow-collection`){let n=l(c(t));d(e);let r=e.end.splice(1,e.end.length);r.push(this.sourceToken);let i={type:`block-map`,offset:e.offset,indent:e.indent,items:[{start:n,key:e,sep:r}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=i}else yield*this.lineEnd(e)}}flowScalar(e){if(this.onNewLine){let e=this.source.indexOf(`
117
117
  `)+1;for(;e!==0;)this.onNewLine(this.offset+e),e=this.source.indexOf(`
118
118
  `,e)+1}return{type:e,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(e){switch(this.type){case`alias`:case`scalar`:case`single-quoted-scalar`:case`double-quoted-scalar`:return this.flowScalar(this.type);case`block-scalar-header`:return{type:`block-scalar`,offset:this.offset,indent:this.indent,props:[this.sourceToken],source:``};case`flow-map-start`:case`flow-seq-start`:return{type:`flow-collection`,offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case`seq-item-ind`:return{type:`block-seq`,offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case`explicit-key-ind`:{this.onKeyLine=!0;let t=l(c(e));return t.push(this.sourceToken),{type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:t,explicitKey:!0}]}}case`map-value-ind`:{this.onKeyLine=!0;let t=l(c(e));return{type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:t,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(e,t){return this.type!==`comment`||this.indent<=t?!1:e.every(e=>e.type===`newline`||e.type===`space`)}*documentEnd(e){this.type!==`doc-mode`&&(e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type===`newline`&&(yield*this.pop()))}*lineEnd(e){switch(this.type){case`comma`:case`doc-start`:case`doc-end`:case`flow-seq-end`:case`flow-map-end`:case`map-value-ind`:yield*this.pop(),yield*this.step();break;case`newline`:this.onKeyLine=!1;default:e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type===`newline`&&(yield*this.pop())}}}})),pa=n((e=>{var t=aa(),n=Ui(),r=Wi(),i=bi(),a=U(),o=da(),s=fa();function c(e){let t=e.prettyErrors!==!1;return{lineCounter:e.lineCounter||t&&new o.LineCounter||null,prettyErrors:t}}function l(e,n={}){let{lineCounter:i,prettyErrors:a}=c(n),o=new s.Parser(i?.addNewLine),l=new t.Composer(n),u=Array.from(l.compose(o.parse(e)));if(a&&i)for(let t of u)t.errors.forEach(r.prettifyError(e,i)),t.warnings.forEach(r.prettifyError(e,i));return u.length>0?u:Object.assign([],{empty:!0},l.streamInfo())}function u(e,n={}){let{lineCounter:i,prettyErrors:a}=c(n),o=new s.Parser(i?.addNewLine),l=new t.Composer(n),u=null;for(let t of l.compose(o.parse(e),!0,e.length))if(!u)u=t;else if(u.options.logLevel!==`silent`){u.errors.push(new r.YAMLParseError(t.range.slice(0,2),`MULTIPLE_DOCS`,`Source contains multiple documents; please use YAML.parseAllDocuments()`));break}return a&&i&&(u.errors.forEach(r.prettifyError(e,i)),u.warnings.forEach(r.prettifyError(e,i))),u}function d(e,t,n){let r;typeof t==`function`?r=t:n===void 0&&t&&typeof t==`object`&&(n=t);let a=u(e,n);if(!a)return null;if(a.warnings.forEach(e=>i.warn(a.options.logLevel,e)),a.errors.length>0){if(a.options.logLevel!==`silent`)throw a.errors[0];a.errors=[]}return a.toJS(Object.assign({reviver:r},n))}function f(e,t,r){let i=null;if(typeof t==`function`||Array.isArray(t)?i=t:r===void 0&&t&&(r=t),typeof r==`string`&&(r=r.length),typeof r==`number`){let e=Math.round(r);r=e<1?void 0:e>8?{indent:8}:{indent:e}}if(e===void 0){let{keepUndefined:e}=r??t??{};if(!e)return}return a.isDocument(e)&&!i?e.toString(r):new n.Document(e,i,r).toString(r)}e.parse=d,e.parseAllDocuments=l,e.parseDocument=u,e.stringify=f})),$=n((e=>{var t=aa(),n=Ui(),r=Vi(),i=Wi(),a=fi(),o=U(),s=K(),c=G(),l=q(),u=Y();la();var d=ua(),f=da(),p=fa(),m=pa(),h=si();e.Composer=t.Composer,e.Document=n.Document,e.Schema=r.Schema,e.YAMLError=i.YAMLError,e.YAMLParseError=i.YAMLParseError,e.YAMLWarning=i.YAMLWarning,e.Alias=a.Alias,e.isAlias=o.isAlias,e.isCollection=o.isCollection,e.isDocument=o.isDocument,e.isMap=o.isMap,e.isNode=o.isNode,e.isPair=o.isPair,e.isScalar=o.isScalar,e.isSeq=o.isSeq,e.Pair=s.Pair,e.Scalar=c.Scalar,e.YAMLMap=l.YAMLMap,e.YAMLSeq=u.YAMLSeq,e.Lexer=d.Lexer,e.LineCounter=f.LineCounter,e.Parser=p.Parser,e.parse=m.parse,e.parseAllDocuments=m.parseAllDocuments,e.parseDocument=m.parseDocument,e.stringify=m.stringify,e.visit=h.visit,e.visitAsync=h.visitAsync}))();function ma(e){return e instanceof Error&&`code`in e&&typeof e.code==`string`}function ha(e){return ma(e)&&e.code===`ENOENT`}function ga(e){return ma(e)&&e.code===`ENOTDIR`}function _a(e){return e instanceof Error?e.message:String(e)}async function va(e){try{return(await P.promises.readdir(e)).filter(e=>e.endsWith(`.yaml`)).sort().map(t=>A.join(e,t))}catch(t){if(ha(t))return[];throw ga(t)?Error(`Invalid model registry directory ${e}: expected a directory.`,{cause:t}):t}}var ya=class{seedPaths;constructor(e){this.seedPaths=Array.isArray(e)?e:[e]}async fetch(){for(let e of this.seedPaths){let t=await ba(e);if(t!==void 0)try{return ut.parse((0,$.parse)(t))}catch(t){throw Error(`Invalid bundled model registry seed at ${e}: ${_a(t)}`,{cause:t})}}throw Error(`Bundled model registry seed not found. Tried:\n${this.seedPaths.map(e=>`- ${e}`).join(`
119
- `)}`)}};async function ba(e){try{return await P.promises.readFile(e,`utf-8`)}catch(t){if(xa(t))return;throw Error(`Failed to read bundled model registry seed at ${e}: ${_a(t)}`,{cause:t})}}function xa(e){return ha(e)||ga(e)}var Sa=class{url;timeoutMs;constructor(e,t=1e4){let n=e.trim();if(!n)throw Error(`CdnRegistryFetcher requires a non-empty registry URL`);let r;try{r=new URL(n)}catch(e){throw Error(`CdnRegistryFetcher requires a valid registry URL: ${n}`,{cause:e})}if(r.protocol!==`http:`&&r.protocol!==`https:`)throw Error(`CdnRegistryFetcher requires an HTTP(S) registry URL: ${n}`);if(!Number.isFinite(t)||t<=0)throw Error(`CdnRegistryFetcher requires a positive finite timeoutMs, got ${t}`);this.url=r.toString(),this.timeoutMs=t}async fetch(){let e=new AbortController,t=setTimeout(()=>e.abort(),this.timeoutMs);try{let t=await fetch(this.url,{signal:e.signal});if(!t.ok)throw Error(`Failed to fetch model registry: ${t.status} ${t.statusText}`);let n=(0,$.parse)(await t.text());return ut.parse(n)}catch(e){throw e instanceof Error&&e.name===`AbortError`?Error(`Failed to fetch model registry: timed out after ${this.timeoutMs}ms`,{cause:e}):e}finally{clearTimeout(t)}}},Ca=class{cachePath;trackFetchedAt;constructor(e,t={}){this.cachePath=e,this.trackFetchedAt=t.trackFetchedAt??!1}async get(){try{let e=await P.promises.readFile(this.cachePath,`utf-8`),t=wa(JSON.parse(e)),n=ut.safeParse(t);return n.success?n.data:null}catch{return null}}async set(e){try{await P.promises.mkdir(A.dirname(this.cachePath),{recursive:!0});let t=this.trackFetchedAt?{fetchedAt:new Date().toISOString(),registry:e}:e;await P.promises.writeFile(this.cachePath,JSON.stringify(t,null,2),`utf-8`)}catch(e){console.warn(`[FileRegistryCache] Failed to write cache:`,e)}}};function wa(e){return $e(e)&&`registry`in e&&`fetchedAt`in e?e.registry:e}const Ta=D.object({name:D.string().optional(),models:D.array(he)}),Ea=D.object({name:D.string().optional(),models:D.record(D.string(),dt)}),Da=D.object({$schema:D.literal(`makaio/model-registry/v2`).optional(),updatedAt:D.string().datetime().optional(),labs:D.record(D.string(),Ta).optional(),providers:D.record(D.string(),Ea).optional()}),Oa=D.object({name:D.string().optional(),models:D.array(D.record(D.string(),D.unknown()))}),ka=D.object({name:D.string().optional(),models:D.record(D.string(),dt)});var Aa=class{userModelsDir;constructor(e){this.userModelsDir=e}async fetch(){let e=ja();return await Promise.all([this.loadLabDirectory(A.join(this.userModelsDir,`labs`),e),this.loadProviderDirectory(A.join(this.userModelsDir,`providers`),e)]),await this.loadFlatFiles(e),e}async loadLabDirectory(e,t){let n=await va(e),r=await Promise.all(n.map(async e=>({labId:A.basename(e,`.yaml`),lab:await za(e,A.basename(e,`.yaml`))})));for(let{labId:e,lab:n}of r)Wa(t,e,n)}async loadProviderDirectory(e,t){let n=await va(e),r=await Promise.all(n.map(async e=>({providerId:A.basename(e,`.yaml`),provider:await Ba(e)})));for(let{providerId:e,provider:n}of r)Ga(t,e,n)}async loadFlatFiles(e){let t=await va(this.userModelsDir);for(let n of t){let t=A.basename(n,`.yaml`),r=(0,$.parse)(await P.promises.readFile(n,`utf-8`));if(!$e(r))throw Error(`Invalid model registry overlay YAML in ${n}: expected a YAML object.`);if(`labs`in r||`providers`in r){Ua(e,Da.parse(r));continue}if(Array.isArray(r.models)){Wa(e,t,Va(r,t));continue}if($e(r.models)){Ga(e,t,Ha(r));continue}throw Error(`Unrecognized model registry overlay shape in ${n}: expected labs, providers, or models.`)}}};function ja(){return{labs:{},providers:{}}}function Ma(e,t){return{$schema:`makaio/model-registry/v2`,updatedAt:t.updatedAt??e.updatedAt,labs:Ka(Na(e.labs,t.labs)),providers:qa(Ia(e.providers,t.providers))}}function Na(e,t){let n={...e};for(let[e,r]of Object.entries(t)){let t=n[e];n[e]=t===void 0?r:{...t,...r,models:Pa(t.models,r.models)}}return n}function Pa(e,t){let n=[...e],r=new Map(e.map((e,t)=>[e.name,t]));for(let e of t){let t=r.get(e.name);if(t===void 0){r.set(e.name,n.length),n.push(e);continue}n[t]=Fa(n[t],e)}return n}function Fa(e,t){let n={...e,...t},r=ft(e.metadata,t.metadata);return r===void 0?delete n.metadata:n.metadata=r,n}function Ia(e,t){let n={...e};for(let[e,r]of Object.entries(t)){let t=n[e];n[e]=t===void 0?r:{...t,...r,models:La(t.models,r.models)}}return n}function La(e,t){let n={...e};for(let[e,r]of Object.entries(t)){let t=n[e];n[e]=t===void 0?r:Ra(t,r)}return n}function Ra(e,t){let n={...e,...t},r=ft(e.metadata,t.metadata);return r===void 0?delete n.metadata:n.metadata=r,n}async function za(e,t){return Va((0,$.parse)(await P.promises.readFile(e,`utf-8`)),t)}async function Ba(e){return Ha((0,$.parse)(await P.promises.readFile(e,`utf-8`)))}function Va(e,t){let n=Oa.parse(e);return{...n.name===void 0?{}:{name:n.name},models:n.models.map(e=>he.parse({...e,labId:t}))}}function Ha(e){let t=ka.parse(e);return{...t.name===void 0?{}:{name:t.name},models:t.models}}function Ua(e,t){e.updatedAt=t.updatedAt??e.updatedAt,t.labs!==void 0&&(e.labs=Na(e.labs,t.labs)),t.providers!==void 0&&(e.providers=Ia(e.providers,t.providers))}function Wa(e,t,n){e.labs=Na(e.labs,{[t]:n})}function Ga(e,t,n){e.providers=Ia(e.providers,{[t]:n})}function Ka(e){return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,{...t,name:t.name??e}]))}function qa(e){return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,{...t,name:t.name??e}]))}var Ja=class{userModelsDir;baseFetcher;constructor(e,t){this.userModelsDir=e,this.baseFetcher=t}async fetch(){let e=await this.baseFetcher.fetch();if(await this.validateDirectory(this.userModelsDir),await this.validateDirectory(`${this.userModelsDir}/labs`),await this.validateDirectory(`${this.userModelsDir}/providers`),!await this.hasAnyOverlayFiles())return e;let t=Ma(e,await new Aa(this.userModelsDir).fetch());return ut.parse(t)}async validateDirectory(e){await va(e)}async hasAnyOverlayFiles(){let e,t;try{let n=await k.readdir(this.userModelsDir,{withFileTypes:!0});e=n.map(e=>String(e.name)),t=new Map(n.map(e=>[String(e.name),[e.isFile(),e.isDirectory()]]))}catch(e){if(ha(e))return!1;throw e}return e.some(e=>{let[n,r]=t.get(e)??[!1,!1];return n&&e.endsWith(`.yaml`)||r&&(e===`labs`||e===`providers`)})}},Ya=class extends Error{constructor(e){super(`[boot] Could not find workspace root (no package.json with 'workspaces' field) starting from: ${e}`),this.name=`WorkspaceRootNotFoundError`}};function Xa(e){return Za(e).root}function Za(e){let t=A.resolve(e);for(;;){let n=A.join(t,`package.json`);if(P.existsSync(n))try{let e=P.readFileSync(n,`utf-8`),r=JSON.parse(e);if(typeof r==`object`&&r&&`workspaces`in r)return{root:t,packageJsonPath:n,workspaces:$t(r)}}catch{}let r=A.dirname(t);if(r===t)throw new Ya(e);t=r}}const Qa=`MAKAIO_MODEL_REGISTRY_SOURCES`;function $a(e){let t=A.join(e.makaioHome,`models`),n=A.join(e.makaioHome,`cache`,`model-registry`);return new Ja(t,new lt(eo(e).map(e=>ro(e,n))))}function eo(e){let t=no(e.srcDir,e.cwd),n=t.slice(0,-1),r=t.slice(n.length);return oo([...to(e.env??process.env),...e.seedPaths??[],...n,e.cdnRegistryUrl??`https://makaio-ai.github.io/makaio-framework/model-registry.yaml`,...e.fallbackSeedPaths??[],...r])}function to(e){let t=e[Qa]?.trim();if(!t)return[];let n;try{n=t.startsWith(`[`)?JSON.parse(t):t}catch(e){throw Error(`[boot] ${Qa} must be a JSON string array or a single source string`,{cause:e})}let r=Array.isArray(n)?n:[n];if(!r.every(e=>typeof e==`string`))throw Error(`[boot] ${Qa} entries must be strings`);return r.map(e=>e.trim()).filter(e=>e.length>0)}function no(e,t=process.cwd()){let n=A.resolve(e,`static/model-registry.yaml`),r=A.resolve(t,`static/model-registry.yaml`);try{return oo([r,A.resolve(Xa(e),`static/model-registry.yaml`),n])}catch(e){if(e instanceof Ya)return oo([r,n]);throw e}}function ro(e,t){let n=ao(e);return n?.protocol===`http:`||n?.protocol===`https:`?new ct(new Sa(n.href),new Ca(A.join(t,`${co(n.href)}.json`),{trackFetchedAt:!0})):new ya(io(e,n))}function io(e,t){if(t?.protocol===`file:`)return ce(t);if(t!==void 0)throw Error(`[boot] Unsupported model registry source protocol "${t.protocol}" for ${e}`);return A.isAbsolute(e)?e:A.resolve(e)}function ao(e){try{return new URL(e)}catch{return}}function oo(e){let t=new Set,n=[];for(let r of e){let e=so(r);t.has(e)||(t.add(e),n.push(r))}return n}function so(e){let t=ao(e);return t?.protocol===`file:`?`file:${A.resolve(ce(t))}`:t===void 0?`file:${A.resolve(e)}`:`${t.protocol}//${t.host}${t.pathname}${t.search}`}function co(e){return N(`sha256`).update(e).digest(`hex`).slice(0,16)}async function lo(e){let t=A.resolve(e.frameworkPackagePath);await uo(t);let n=A.join(e.makaioHome,`node_modules`,`@makaio`),r=A.join(n,`framework`);await k.mkdir(n,{recursive:!0}),!await fo(r,t)&&(await k.rm(r,{recursive:!0,force:!0}),await k.symlink(t,r,process.platform===`win32`?`junction`:`dir`))}async function uo(e){let t=A.join(e,`package.json`),n=await k.readFile(t,`utf-8`);if(JSON.parse(n).name!==`@makaio/framework`)throw Error(`Expected @makaio/framework package at ${e}`)}async function fo(e,t){try{return(await k.lstat(e)).isSymbolicLink()?await k.realpath(e)===await k.realpath(t):!1}catch(e){if(po(e))return!1;throw e}}function po(e){return typeof e==`object`&&!!e&&`code`in e&&e.code===`ENOENT`}function mo(e,t){e.push(...ho(t))}function ho(e){return e===void 0?[]:typeof e==`function`?[e]:[...e]}function go(e,t=[]){let n=new Set([e]),r=new Set,i=new Map;for(let e of t)typeof e==`string`?n.add(e):(r.add(e.id),e.version!==void 0&&i.set(e.id,e.version));return{hosts:n,capabilities:r,...i.size>0?{capabilityVersions:i}:{}}}function _o(e=[]){return e.some(e=>typeof e==`string`&&e===`node`)?e:[`node`,...e]}function vo(e){return at(st(yo(e.packages,e.configProvider),e.surface,e.runtimeEnvironment))}function yo(e,t){return t?e.filter(e=>t.loadEnabled(e.name)!==!1):e}function bo(e,t){return e.filter(e=>e.runtimeOwnership?.[t]===!0).map(e=>e.name)}function xo(e,t){let n=bo(e,t);if(n.length>1)throw Error(`Multiple extensions own runtimeOwnership.${t}: ${n.join(`, `)}`)}function So(e){return e===!0||(xo(e,`sessionOrchestrator`),bo(e,`sessionOrchestrator`).length===0)?Ht:Ht.filter(e=>e.name!==Nt.name)}function Co(e,t,n){let r=[];try{for(let i of e){let e=i.runtimeBoot;e&&mo(r,e.configure({bus:t,registerContributionProcessor:e=>{r.push(n.registerContributionProcessor(e))},forEachActiveExtension:e=>{n.forEachActiveExtension(e)}}))}}catch(e){let t=[];for(let e of[...r].reverse())try{e()}catch(e){t.push(e)}throw t.length>0?AggregateError([e,...t],`Extension boot contribution failed and rollback cleanup reported additional errors`,{cause:e}):e}return r}function wo(){let e=process.env.MAKAIO_SKIP_EXTENSIONS;if(!e)return new Set;let t=e.split(`,`).map(e=>e.trim()).filter(Boolean);return new Set(t)}function To(e,t){let n=t.endsWith(`/`)?t:`${t}/`,r=en({root:e,rewriteRequestPath:e=>e.slice(n.length-1)});return e=>{e.use(`${t}/*`,r)}}function Eo(e){return`/extensions/${e}/browser`}function Do(e,t){return`extensions/${e}/browser/${ko(t)}`}function Oo(e,t){return`/${Do(e,t)}.js`}function ko(e){let t=e.replaceAll(j.win32.sep,j.posix.sep),n=j.posix.basename(t),r=j.posix.extname(n);return r?n.slice(0,-r.length):n}function Ao(e,t,n={}){let{createMount:r=To}=n,i=new Map(e.map(e=>[e.descriptor.name,e]));return t.map(e=>{let t=i.get(e.name);if(!t?.descriptor.entrypoints?.browser)return e;if(e.browser)return console.warn(`[extensions] ${e.name}: server entry already declares browser, skipping browser bridge`),e;if(e.http)return console.warn(`[extensions] ${e.name}: server entry already declares http, skipping browser bridge`),e;let n=t.descriptor.entrypoints.browser,a=S(`browser`,n),o=b(`browser`,n,t.extensionPath);if(!o)return console.warn(`[extensions] ${e.name}: browser entry has no resolvable candidate within extension directory, skipping bridge`),e;let s=A.dirname(o),c=Eo(e.name),l=Oo(e.name,a);return{...e,browser:{entrypoint:l},http:{prefix:c,mount:r(s,c)}}})}function jo(e,t={}){let{createMount:n=To,frameworkVersion:r}=t,i=[],a=new Map;for(let t of e){let{descriptor:e,extensionPath:o}=t;if(r!==void 0&&!x(t,r)||e.execution===`detached`||e.entrypoints.server||!e.entrypoints.browser)continue;let s=e.entrypoints.browser,c=S(`browser`,s),l=b(`browser`,s,o);if(!l){console.warn(`[extensions] ${e.name}: browser entry has no resolvable candidate within extension directory, skipping synthesis`);continue}let u=A.dirname(l),d=Eo(e.name),f=Oo(e.name,c);i.push({...v(e),browser:{entrypoint:f},http:{prefix:d,mount:n(u,d)}}),e.config?.defaults&&a.set(e.name,e.config.defaults)}return{packages:i,configDefaults:a}}async function Mo(){let e=A.dirname(ce(import.meta.url)),t=A.resolve(e,`..`,`package.json`),n=await k.readFile(t,`utf-8`),r=JSON.parse(n);if(typeof r!=`object`||!r||!(`version`in r)||typeof r.version!=`string`)throw Error(`[boot] package.json at ${t} has no string 'version' field`);return r.version}async function No(e){let t={packages:[],configDefaults:new Map},n=[],r=e.frameworkVersion??await Mo();try{if(n=await e.extensionOptions.extensions.discover(),n=Po(n,e.skipExtensions),process.env.MAKAIO_DEBUG){console.info(`[boot] Discovered %d extension descriptor(s):`,n.length);for(let e of n)console.info(`[boot] - %s (%s)`,e.descriptor.displayName??e.descriptor.name,e.source)}}catch(e){console.warn(`[boot] Extension discovery failed, skipping:`,e instanceof Error?e.message:e)}let i=n.filter(e=>x(e,r));if(i.length>0)try{t=await T(i,{frameworkVersion:r})}catch(e){console.warn(`[boot] Extension loading failed, skipping:`,e instanceof Error?e.message:e)}let a={...e.createMount?{createMount:e.createMount}:{},frameworkVersion:r},o=Ao(i,t.packages,a),s=jo(i,a),c=await E(i,[...o,...s.packages],{frameworkVersion:r});return{discovered:n,extensionLoadResult:t,browserOnlyResult:s,extensionsWithCli:c,allExtensionPackages:c.packages}}function Po(e,t){if(t.size===0)return e;let n=new Set(e.map(e=>e.descriptor.name)),r=[...t].filter(e=>!n.has(e));r.length&&console.warn(`[boot] MAKAIO_SKIP_EXTENSIONS: no matching extension(s): %s`,r.join(`, `));let i=new Set([...t].filter(e=>n.has(e))),a=e.filter(e=>!i.has(e.descriptor.name));return a.length<e.length&&console.info(`[boot] MAKAIO_SKIP_EXTENSIONS filtered %d extension(s): %s`,e.length-a.length,[...i].join(`, `)),a}async function Fo(e,t){let n=We(e),r=n.dialect,i=new Set;for(let a of t){if(i.has(a.migrationSourceId))continue;i.add(a.migrationSourceId);let t=Io(a.migrationSourceId,n);process.env.MAKAIO_DEBUG===`true`&&console.info(`[boot] Running migrations for package: ${a.name}`);let o;try{o=sn({migrationsDir:a.migrationsPathByDialect?.[r]??a.migrationsPath,migrationSourceId:a.migrationSourceId,expectedDialect:r})}catch(e){throw e instanceof Error&&e.name===`MigrationDialectMismatchError`?Error(`Extension '${a.name}' ships migrations that do not match the '${r}' database dialect. Disable this extension on '${r}' hosts or ship a migration chain generated for '${r}'.`,{cause:e}):e}await gn(e,o,t)}}function Io(e,t){let n=N(`sha256`).update(e).digest(`hex`).slice(0,16);return t.migrations.extensionLedgerName(n)}function Lo(e,t){return new Oe({signingKeyPair:e.signingKeyPair,identityId:e.machineId,getPeerSigningKey:t})}const Ro=xe.fact.$meta.namespace,zo=xe.fact.subject;function Bo(e,t){if(t.transport!==void 0||t.localOnly===!0)return!1;let n=`${t.namespace}.${t.subject}`,r=e.getContext().namespaceRegistry;return!r.isLocalSubject(n)&&!r.isCollectorOnlySubject(n)}function Vo(e){return e.type===`event`?{type:`event`,namespace:e.namespace,subject:e.subject,payload:e.payload,messageId:e.messageId,...e.correlationId===void 0?{}:{correlationId:e.correlationId}}:{type:e.type,namespace:e.namespace,subject:e.subject,payload:e.payload,messageId:e.messageId,correlationId:e.correlationId??e.messageId}}async function Ho(e,t,n,r,i){let a=Vo(i),o=me({message:a,direction:`outbound`,observedAt:Date.now(),machineId:n,namespaceRegistry:t.getContext().namespaceRegistry,projectorRegistry:r.projectorRegistry});for(let t of o)await e.send({type:`event`,namespace:Ro,subject:zo,payload:t,messageId:`${a.messageId}:telemetry:${t.factId}`,correlationId:a.correlationId})}async function Uo(e,t,n){let r=n.transport;await r.connect();let i;try{i=e.observeMessages(i=>{Bo(e,i)&&Ho(r,e,t,n,i).catch(e=>{console.error(`[upstream-telemetry] Failed to export subject telemetry fact`,e)})})}catch(e){throw await r.disconnect().catch(()=>void 0),e}return{shutdown:async()=>{i(),await r.disconnect()}}}function Wo(e,t){let n=e===`0.0.0.0`?`127.0.0.1`:e===`::`?`::1`:e;return`ws://${n.includes(`:`)&&!n.startsWith(`[`)?`[${n}]`:n}:${t}/bus`}async function Go(e,t,n,r){let o=r.makaioHome??g(),s=Nn(r,o),c=wo(),l=[];try{let u=new Mn(new vn(o),o),d=await u.getConfig({mode:`local`}),f=await u.getMachineId();console.info(`[boot] Config resolved (mode=%s)`,d.mode);let p=fe;if(p.registerNamespaces(ye),p.registerNamespaces(be),p.registerNamespaces([tt,Ot,rt,it,i]),p.registerNamespaces(Mt),p.registerNamespaces(r.hostNamespaces??[]),process.env.MAKAIO_DEBUG===`true`){let e=p.__onAny(e=>{let t;try{t=JSON.stringify(e.payload)}catch{t=`[unserializable payload]`}console.debug(`[bus-server] subject: ${e.subject}, payload: ${t}`)});l.push(e)}if(r.upstreamTelemetry){let e=await Uo(p,f,r.upstreamTelemetry);l.push(e.shutdown)}await p.emit(B.phase.busCreated,{machineId:f});let m=r.peerSigningKeyResolver;if(r.lanBind&&e.dispatchingAuth&&!m)throw Error(`[boot] peerSigningKeyResolver is required when lanBind is enabled`);await e.connect(p,f),l.push(()=>e.disconnect()),console.info(`[boot] Transport ready on %s:%d`,n,t);try{r.onTransportReady?.({port:t,host:n})}catch(e){console.warn(`[boot] onTransportReady callback failed:`,e)}let{databaseClient:h}=await Vn({makaioHome:o,migrationsDir:r.centralMigrationsDir,database:r.database}),g=h.db;console.info(`[boot] Database initialized`),l.push(()=>h.close());let _=await Ct(A.join(o,`keys`)),v=[p.on(a.database,e=>{e.setResult({db:g})}),p.on(a.machineIdentity,e=>{e.setResult({identity:_})}),p.on(a.busPort,e=>{e.setResult({port:t})})],y=!1,b=p.on(B.isReady,e=>{e.setResult({ready:y,machineId:f})});l.push(()=>{y=!1,b();for(let e of v)e()}),await p.emit(B.phase.coreReady,{machineId:f}),console.info(`[boot] Core ready (machineId=%s)`,f);let x=A.dirname(ce(import.meta.url)),S=oi(p,u);l.push(S),console.info(`[boot] Config handlers registered`),r.frameworkPackagePath&&(await lo({makaioHome:o,frameworkPackagePath:r.frameworkPackagePath}),console.info(`[boot] Framework package linked for extension resolution`));let C=r.frameworkModuleResolver;if(C){try{await C.install()}catch(e){throw await Promise.resolve(C.uninstall()).catch(()=>void 0),e}l.push(()=>C.uninstall()),console.info(`[boot] Framework module resolver installed`)}let w={current:void 0},T=$a({makaioHome:o,srcDir:x,fallbackSeedPaths:r.modelRegistryFallbackSeedPaths}),E=process.env.USER??process.env.USERNAME??`unknown`;try{E=Ze.userInfo().username}catch{}let ee=r.frameworkVersion??await Mo(),{extensionLoadResult:ae,browserOnlyResult:D,extensionsWithCli:oe,allExtensionPackages:se}=await No({extensionOptions:s,skipExtensions:c,frameworkVersion:ee,createMount:r.createMount}),O=go(process.platform,r.hostCapabilities),k=vo({packages:se,configProvider:r.extensionConfigProvider,surface:r.surface??`headless`,runtimeEnvironment:O}),j=Wo(n,t),M=new nt(p,{surface:r.surface??`headless`,db:g,extensionContextBase:{platform:process.platform,homedir:Ze.homedir(),makaioHome:o,username:E,machineId:_.machineId,busUrl:j,tryImport:En},runtimeEnvironment:O,launcherCommand:r.launcherCommand,loadConfig:r.extensionConfigProvider?e=>r.extensionConfigProvider.loadConfig(e):void 0,loadEnabled:r.extensionConfigProvider?e=>r.extensionConfigProvider.loadEnabled(e):void 0,runMigrations:e=>Fo(g,e)}),N=new yt({providerConfigsDir:A.join(o,`provider-configs`),adaptersDir:A.join(o,`adapters`)}),P=[Ur,pt({definitions:k.flatMap(e=>e.clients??[]),strategyDependencies:r.clientBinaryStrategyDependencies,postInstallHandlers:r.clientBinaryPostInstallHandlers})];r.enablePackageManager!==!1&&P.push(Er({frameworkPeerRange:`^${ee}`,frameworkPackagePath:r.frameworkPackagePath,devPortalPackages:r.devPortalPackages}));let F={cwd:process.cwd()},le=ne({busUrl:j,runtimeModuleDir:x,platformDefaults:F,workflowRunner:r.workflowRunner,makaioHome:o,bus:p}),{adapterSubsystemPackage:ue}=nn({coordinator:M,configRepository:N,platformDefaults:F});if(P.push(ue,...So(k),Gt(le),Lt(T),Wt),process.platform===`darwin`){let{platformMacOSPackage:e}=await import(`../src-CRDOZl7K.mjs`);P.push(e)}let de=[...P,...k],pe=new Set(de.map(e=>e.name)),me=ii(ai(ae.configDefaults,D.configDefaults,oe.configDefaults,r.packageConfigDefaults??new Map),pe);M.load(de,me),M.registerContributionProcessor(Ut()),M.registerContributionProcessor(Pt()),M.registerContributionProcessor(Ft()),M.registerContributionProcessor(It()),M.registerContributionProcessor(Rt()),M.registerContributionProcessor(zt()),M.registerContributionProcessor(Vt()),M.registerContributionProcessor(Bt()),r.routeGraphBuilder&&M.registerContributionProcessor(Dr(r.routeGraphBuilder)),mo(l,Co(de,p,M)),l.push(()=>M.shutdown()),mo(l,r.configureCoordinator?.({bus:p,coordinator:M,registerContributionProcessor:e=>{M.registerContributionProcessor(e)},getAdapterSubsystemService:()=>M.getExtensionService(vt)})),await M.startAll(),await p.emit(B.phase.servicesReady,{machineId:f});let he=M.list(),ge=he.filter(e=>e.state===`active`);if(console.info(`[boot] Extensions started: %d active`,ge.length),process.env.MAKAIO_DEBUG){let e=he.filter(e=>e.state===`failed`);for(let e of ge)console.info(`[boot] ✓ %s (%s)`,e.displayName,e.name);for(let t of e)console.warn(`[boot] ✗ %s (%s): %s`,t.displayName,t.name,t.error??`unknown`)}w.current=M.getExtensionService(vt);let I=new re({workerEntry:te({moduleDir:x,mode:A.basename(x)===`src`?`source`:`dist`}),manifest:{packages:[]}}),L=new ie({id:_e,displayName:`Local (Piscina)`,runner:I});try{await Ce(p,L)}catch(e){throw await I.dispose().catch(()=>void 0),e}l.push(async()=>{try{await Te(p,L.id)}finally{await I.dispose().catch(()=>void 0)}}),console.info(`[boot] Piscina thin workflow provider registered (id=%s)`,L.id),l.push(ri(p,()=>w.current?.getLoadedAdapters()??[],()=>w.current?.getAdapterInstances()??new Map,e=>M.getExtension(e)));let ve=rn({bus:p,currentMachineId:f});if(l.push(ve.cleanup),await p.broadcast(B.phase.coordinatorReady,{machineId:f}),r.lanBind&&e.dispatchingAuth&&m){let t=Lo(_,m);e.dispatchingAuth.setE2EAuth(t),console.info(`[boot] E2E auth enabled (LAN mode, machineId=%s)`,f)}y=!0,await p.emit(B.ready,{machineId:f}),console.info(`[boot] Runtime ready (machineId=%s)`,f);let xe=ot([...l].reverse());return{port:t,host:n,machineId:f,bus:p,coordinator:M,trayEntries:M.trayEntries,windowRegistry:M.windowRegistry,shutdown:xe}}catch(e){console.error(`[boot] Startup failed — rolling back started resources`,e);for(let e of[...l].reverse())try{await e()}catch(e){console.warn(`[boot] Rollback step error:`,e)}throw e}}async function Ko(e){let t=new jn({httpServer:e.httpServer,auth:e.auth,loopbackName:e.loopbackName??`node`}),n=e.httpServer.address();if(typeof n!=`object`||!n)throw Error(`HTTP server is not bound to a TCP address`);return Go(t,n.port,n.address,{...e,hostCapabilities:_o(e.hostCapabilities),clientBinaryStrategyDependencies:e.clientBinaryStrategyDependencies??Xr()})}const qo=`MAKAIO_UPSTREAM_URL`,Jo=`MAKAIO_UPSTREAM_SECRET`;function Yo(e){return new Ae({url:e.url,name:`upstream-telemetry-ws`,auth:e.secret===void 0?void 0:new ke({secret:e.secret})})}function Xo(e={}){let t=e.env??process.env,n=Qo(t[Jo]),r=Zo(t[qo]);if(r===void 0){if(n!==void 0)throw Error(`${Jo} requires ${qo}`);return}return{transport:(e.createTransport??Yo)({url:r,...n===void 0?{}:{secret:n}})}}function Zo(e){let t=e?.trim();return t===void 0||t===``?void 0:t}function Qo(e){let t=e?.trim();return t===void 0||t===``?void 0:t}async function $o(e){return{...await u(e),hostCapabilities:[`node`]}}const es=se(oe);var ts=class{async resolve(e){return Yt(e,{resolveKeychain:this.resolveKeychain})}async resolveKeychain(e,t){try{let{stdout:n}=await es(`security`,[`find-generic-password`,`-s`,e,`-a`,t,`-w`]);return n.trim()||null}catch{return null}}},ns=class{bus;fallbackProvider=new ts;channelPromise;constructor(e){this.bus=e}async resolve(e){let t=qe(e);if(t){let{configId:e,key:n}=t;for(let t=0;t<2;t++)try{return(await(await this.getChannel()).request(ve.get,{configId:e})).credentials?.[n]??null}catch(e){if(e instanceof de&&(this.channelPromise=void 0,t===0))continue;throw e}}return e.startsWith(`account-manager:`)?(console.warn(`[StoredCredentialProvider] account-manager: refs are account identifiers and cannot be resolved to credentials. The associated adapter should authenticate via its native credential store.`),null):e.startsWith(`stored:`)?(console.warn(`[StoredCredentialProvider] Unresolvable credential ref "${e}". Only the "stored:providerConfig:" format is supported. Re-save the credential using the current format.`),null):this.fallbackProvider.resolve(e)}getChannel(){return this.channelPromise??=this.openCredentialChannel().catch(e=>{throw this.channelPromise=void 0,e}),this.channelPromise}async openCredentialChannel(){let{token:e}=await this.bus.request(ve.getChannelToken,{});return pe(this.bus.getContext(),`credentials`,{token:e,transports:[]})}};async function rs(e){let{db:t}=await e.request(a.database,{});return t}const is=[`default`,`import`,`require`];var as=class{frameworkDistPath=``;install(){}uninstall(){}},os=class{frameworkDistPath;hooks;installPromise;installToken;constructor(e){this.frameworkDistPath=e}async install(){if(this.hooks)return;if(this.installPromise)return this.installPromise;let e={};this.installToken=e;let t=this.installWithToken(e);this.installPromise=t;try{await t}finally{this.installPromise===t&&(this.installPromise=void 0)}}async installWithToken(e){let{registerHooks:t}=await import(`node:module`);if(this.installToken!==e||this.hooks)return;let n=this.frameworkDistPath,r=cs(n);this.hooks=t({resolve(e,t,i){let a=ss(n,e,r);return a?{shortCircuit:!0,url:O(a).href}:i(e,t)}})}uninstall(){this.installToken=void 0,this.installPromise=void 0,this.hooks?.deregister(),this.hooks=void 0}};function ss(e,t,n){if(!t.startsWith(`@makaio/framework/`))return;let r=t.slice(18),i=r.split(`/`);if(i.length===0||i.some(e=>e.length===0||e===`.`||e===`..`||e.includes(`\\`)))return;let a=us((n??cs(e))[`./${r}`]);if(!a)return;let o=ds(a);if(!o)return;let s=j.resolve(e,o);return fs(s,e)?s:void 0}function cs(e){let t=j.join(e,`..`,`package.json`);return ls(JSON.parse(le(t,`utf-8`)).exports)}function ls(e){if(typeof e!=`object`||!e||Array.isArray(e))return{};let t={};for(let[n,r]of Object.entries(e))if(n.startsWith(`.`)){if(typeof r==`string`){t[n]=r;continue}typeof r==`object`&&r&&!Array.isArray(r)&&(t[n]=r)}return t}function us(e){if(typeof e==`string`)return e;if(e)for(let t of is){let n=e[t];if(typeof n==`string`)return n}}function ds(e){let t=e.split(`\\`).join(`/`);if(t.startsWith(`./dist/`))return t.slice(7)}function fs(e,t){let n=j.relative(t,e);return n===``||!n.startsWith(`..`)&&!j.isAbsolute(n)}export{jn as BusServerTransportProvider,o as ExplicitDescriptorDiscovery,vn as FileConfigStorage,Ca as FileRegistryCache,s as FilesystemDescriptorDiscovery,ee as InProcessWorkflowRunner,c as MAKAIO_CONFIG_FILE_ENV,l as MAKAIO_HOME_ENV,Jo as MAKAIO_UPSTREAM_SECRET_ENV,qo as MAKAIO_UPSTREAM_URL_ENV,ts as NodeCredentialProvider,os as NodeFrameworkModuleResolver,as as NoopFrameworkModuleResolver,a as RuntimeSubjects,ns as StoredCredentialProvider,re as ThinWorkflowPiscinaRunner,Ya as WorkspaceRootNotFoundError,rn as activateAdapterRuntimeIdentity,Uo as attachUpstreamTelemetry,Ko as bootMakaioRuntime,Go as bootMakaioRuntimeCore,Ao as bridgeExtensionBrowserEntries,u as buildConfiguredRuntimeOptions,Do as buildExtensionBrowserRollupInputName,Oo as buildExtensionBrowserRuntimeEntrypoint,$o as buildNodeRuntimeOptions,Sn as createHonoRouteGraph,wn as createHttpRouteGraphBuilder,d as createMakaioConfigDiscovery,Yo as createUpstreamTelemetryTransport,f as defineMakaioConfig,S as entrypointStem,Xa as findWorkspaceRoot,Za as findWorkspaceRootInfo,rs as getRuntimeDatabase,Vn as initializeNodeDatabase,w as isCliContributionLike,y as isMakaioExtensionLike,Tn as isMissingOptionalRuntimePackage,C as isWithinDirectory,T as loadExtensions,p as loadMakaioConfig,St as loadOrCreateMachineIdentity,wt as machineKeysExist,_o as normalizeNodeHostCapabilities,m as parseMakaioConfig,nn as prepareAdapterRuntime,Mo as readFrameworkVersion,tn as registerAdapterNameResolver,Fn as resolveBundledMigrationsDir,b as resolveConventionEntrypoint,ss as resolveFrameworkSpecifier,xn as resolveListeningPort,h as resolveMakaioConfigPath,g as resolveMakaioHome,yn as resolveStaticModelRegistryPath,Xo as resolveUpstreamTelemetryBootOptionsFromEnv,te as resolveWorkflowWorkerEntry,_n as runMigrations,So as selectFrameworkCorePackages,_ as shouldIncludeExtension,En as tryImport,Tt as validateMachineKeys,bn as waitForServerListening};
119
+ `)}`)}};async function ba(e){try{return await P.promises.readFile(e,`utf-8`)}catch(t){if(xa(t))return;throw Error(`Failed to read bundled model registry seed at ${e}: ${_a(t)}`,{cause:t})}}function xa(e){return ha(e)||ga(e)}var Sa=class{url;timeoutMs;constructor(e,t=1e4){let n=e.trim();if(!n)throw Error(`CdnRegistryFetcher requires a non-empty registry URL`);let r;try{r=new URL(n)}catch(e){throw Error(`CdnRegistryFetcher requires a valid registry URL: ${n}`,{cause:e})}if(r.protocol!==`http:`&&r.protocol!==`https:`)throw Error(`CdnRegistryFetcher requires an HTTP(S) registry URL: ${n}`);if(!Number.isFinite(t)||t<=0)throw Error(`CdnRegistryFetcher requires a positive finite timeoutMs, got ${t}`);this.url=r.toString(),this.timeoutMs=t}async fetch(){let e=new AbortController,t=setTimeout(()=>e.abort(),this.timeoutMs);try{let t=await fetch(this.url,{signal:e.signal});if(!t.ok)throw Error(`Failed to fetch model registry: ${t.status} ${t.statusText}`);let n=(0,$.parse)(await t.text());return ut.parse(n)}catch(e){throw e instanceof Error&&e.name===`AbortError`?Error(`Failed to fetch model registry: timed out after ${this.timeoutMs}ms`,{cause:e}):e}finally{clearTimeout(t)}}},Ca=class{cachePath;trackFetchedAt;constructor(e,t={}){this.cachePath=e,this.trackFetchedAt=t.trackFetchedAt??!1}async get(){try{let e=await P.promises.readFile(this.cachePath,`utf-8`),t=wa(JSON.parse(e)),n=ut.safeParse(t);return n.success?n.data:null}catch{return null}}async set(e){try{await P.promises.mkdir(A.dirname(this.cachePath),{recursive:!0});let t=this.trackFetchedAt?{fetchedAt:new Date().toISOString(),registry:e}:e;await P.promises.writeFile(this.cachePath,JSON.stringify(t,null,2),`utf-8`)}catch(e){console.warn(`[FileRegistryCache] Failed to write cache:`,e)}}};function wa(e){return $e(e)&&`registry`in e&&`fetchedAt`in e?e.registry:e}const Ta=D.object({name:D.string().optional(),models:D.array(he)}),Ea=D.object({name:D.string().optional(),models:D.record(D.string(),dt)}),Da=D.object({$schema:D.literal(`makaio/model-registry/v2`).optional(),updatedAt:D.string().datetime().optional(),labs:D.record(D.string(),Ta).optional(),providers:D.record(D.string(),Ea).optional()}),Oa=D.object({name:D.string().optional(),models:D.array(D.record(D.string(),D.unknown()))}),ka=D.object({name:D.string().optional(),models:D.record(D.string(),dt)});var Aa=class{userModelsDir;constructor(e){this.userModelsDir=e}async fetch(){let e=ja();return await Promise.all([this.loadLabDirectory(A.join(this.userModelsDir,`labs`),e),this.loadProviderDirectory(A.join(this.userModelsDir,`providers`),e)]),await this.loadFlatFiles(e),e}async loadLabDirectory(e,t){let n=await va(e),r=await Promise.all(n.map(async e=>({labId:A.basename(e,`.yaml`),lab:await za(e,A.basename(e,`.yaml`))})));for(let{labId:e,lab:n}of r)Wa(t,e,n)}async loadProviderDirectory(e,t){let n=await va(e),r=await Promise.all(n.map(async e=>({providerId:A.basename(e,`.yaml`),provider:await Ba(e)})));for(let{providerId:e,provider:n}of r)Ga(t,e,n)}async loadFlatFiles(e){let t=await va(this.userModelsDir);for(let n of t){let t=A.basename(n,`.yaml`),r=(0,$.parse)(await P.promises.readFile(n,`utf-8`));if(!$e(r))throw Error(`Invalid model registry overlay YAML in ${n}: expected a YAML object.`);if(`labs`in r||`providers`in r){Ua(e,Da.parse(r));continue}if(Array.isArray(r.models)){Wa(e,t,Va(r,t));continue}if($e(r.models)){Ga(e,t,Ha(r));continue}throw Error(`Unrecognized model registry overlay shape in ${n}: expected labs, providers, or models.`)}}};function ja(){return{labs:{},providers:{}}}function Ma(e,t){return{$schema:`makaio/model-registry/v2`,updatedAt:t.updatedAt??e.updatedAt,labs:Ka(Na(e.labs,t.labs)),providers:qa(Ia(e.providers,t.providers))}}function Na(e,t){let n={...e};for(let[e,r]of Object.entries(t)){let t=n[e];n[e]=t===void 0?r:{...t,...r,models:Pa(t.models,r.models)}}return n}function Pa(e,t){let n=[...e],r=new Map(e.map((e,t)=>[e.name,t]));for(let e of t){let t=r.get(e.name);if(t===void 0){r.set(e.name,n.length),n.push(e);continue}n[t]=Fa(n[t],e)}return n}function Fa(e,t){let n={...e,...t},r=ft(e.metadata,t.metadata);return r===void 0?delete n.metadata:n.metadata=r,n}function Ia(e,t){let n={...e};for(let[e,r]of Object.entries(t)){let t=n[e];n[e]=t===void 0?r:{...t,...r,models:La(t.models,r.models)}}return n}function La(e,t){let n={...e};for(let[e,r]of Object.entries(t)){let t=n[e];n[e]=t===void 0?r:Ra(t,r)}return n}function Ra(e,t){let n={...e,...t},r=ft(e.metadata,t.metadata);return r===void 0?delete n.metadata:n.metadata=r,n}async function za(e,t){return Va((0,$.parse)(await P.promises.readFile(e,`utf-8`)),t)}async function Ba(e){return Ha((0,$.parse)(await P.promises.readFile(e,`utf-8`)))}function Va(e,t){let n=Oa.parse(e);return{...n.name===void 0?{}:{name:n.name},models:n.models.map(e=>he.parse({...e,labId:t}))}}function Ha(e){let t=ka.parse(e);return{...t.name===void 0?{}:{name:t.name},models:t.models}}function Ua(e,t){e.updatedAt=t.updatedAt??e.updatedAt,t.labs!==void 0&&(e.labs=Na(e.labs,t.labs)),t.providers!==void 0&&(e.providers=Ia(e.providers,t.providers))}function Wa(e,t,n){e.labs=Na(e.labs,{[t]:n})}function Ga(e,t,n){e.providers=Ia(e.providers,{[t]:n})}function Ka(e){return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,{...t,name:t.name??e}]))}function qa(e){return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,{...t,name:t.name??e}]))}var Ja=class{userModelsDir;baseFetcher;constructor(e,t){this.userModelsDir=e,this.baseFetcher=t}async fetch(){let e=await this.baseFetcher.fetch();if(await this.validateDirectory(this.userModelsDir),await this.validateDirectory(`${this.userModelsDir}/labs`),await this.validateDirectory(`${this.userModelsDir}/providers`),!await this.hasAnyOverlayFiles())return e;let t=Ma(e,await new Aa(this.userModelsDir).fetch());return ut.parse(t)}async validateDirectory(e){await va(e)}async hasAnyOverlayFiles(){let e,t;try{let n=await k.readdir(this.userModelsDir,{withFileTypes:!0});e=n.map(e=>String(e.name)),t=new Map(n.map(e=>[String(e.name),[e.isFile(),e.isDirectory()]]))}catch(e){if(ha(e))return!1;throw e}return e.some(e=>{let[n,r]=t.get(e)??[!1,!1];return n&&e.endsWith(`.yaml`)||r&&(e===`labs`||e===`providers`)})}},Ya=class extends Error{constructor(e){super(`[boot] Could not find workspace root (no package.json with 'workspaces' field) starting from: ${e}`),this.name=`WorkspaceRootNotFoundError`}};function Xa(e){return Za(e).root}function Za(e){let t=A.resolve(e);for(;;){let n=A.join(t,`package.json`);if(P.existsSync(n))try{let e=P.readFileSync(n,`utf-8`),r=JSON.parse(e);if(typeof r==`object`&&r&&`workspaces`in r)return{root:t,packageJsonPath:n,workspaces:$t(r)}}catch{}let r=A.dirname(t);if(r===t)throw new Ya(e);t=r}}const Qa=`MAKAIO_MODEL_REGISTRY_SOURCES`;function $a(e){let t=A.join(e.makaioHome,`models`),n=A.join(e.makaioHome,`cache`,`model-registry`);return new Ja(t,new lt(eo(e).map(e=>ro(e,n))))}function eo(e){let t=no(e.srcDir,e.cwd),n=t.slice(0,-1),r=t.slice(n.length);return oo([...to(e.env??process.env),...e.seedPaths??[],...n,e.cdnRegistryUrl??`https://makaio-ai.github.io/makaio-framework/model-registry.yaml`,...e.fallbackSeedPaths??[],...r])}function to(e){let t=e[Qa]?.trim();if(!t)return[];let n;try{n=t.startsWith(`[`)?JSON.parse(t):t}catch(e){throw Error(`[boot] ${Qa} must be a JSON string array or a single source string`,{cause:e})}let r=Array.isArray(n)?n:[n];if(!r.every(e=>typeof e==`string`))throw Error(`[boot] ${Qa} entries must be strings`);return r.map(e=>e.trim()).filter(e=>e.length>0)}function no(e,t=process.cwd()){let n=A.resolve(e,`static/model-registry.yaml`),r=A.resolve(t,`static/model-registry.yaml`);try{return oo([r,A.resolve(Xa(e),`static/model-registry.yaml`),n])}catch(e){if(e instanceof Ya)return oo([r,n]);throw e}}function ro(e,t){let n=ao(e);return n?.protocol===`http:`||n?.protocol===`https:`?new ct(new Sa(n.href),new Ca(A.join(t,`${co(n.href)}.json`),{trackFetchedAt:!0})):new ya(io(e,n))}function io(e,t){if(t?.protocol===`file:`)return ce(t);if(t!==void 0)throw Error(`[boot] Unsupported model registry source protocol "${t.protocol}" for ${e}`);return A.isAbsolute(e)?e:A.resolve(e)}function ao(e){try{return new URL(e)}catch{return}}function oo(e){let t=new Set,n=[];for(let r of e){let e=so(r);t.has(e)||(t.add(e),n.push(r))}return n}function so(e){let t=ao(e);return t?.protocol===`file:`?`file:${A.resolve(ce(t))}`:t===void 0?`file:${A.resolve(e)}`:`${t.protocol}//${t.host}${t.pathname}${t.search}`}function co(e){return N(`sha256`).update(e).digest(`hex`).slice(0,16)}async function lo(e){let t=A.resolve(e.frameworkPackagePath);await uo(t);let n=A.join(e.makaioHome,`node_modules`,`@makaio`),r=A.join(n,`framework`);await k.mkdir(n,{recursive:!0}),!await fo(r,t)&&(await k.rm(r,{recursive:!0,force:!0}),await k.symlink(t,r,process.platform===`win32`?`junction`:`dir`))}async function uo(e){let t=A.join(e,`package.json`),n=await k.readFile(t,`utf-8`);if(JSON.parse(n).name!==`@makaio/framework`)throw Error(`Expected @makaio/framework package at ${e}`)}async function fo(e,t){try{return(await k.lstat(e)).isSymbolicLink()?await k.realpath(e)===await k.realpath(t):!1}catch(e){if(po(e))return!1;throw e}}function po(e){return typeof e==`object`&&!!e&&`code`in e&&e.code===`ENOENT`}function mo(e,t){e.push(...ho(t))}function ho(e){return e===void 0?[]:typeof e==`function`?[e]:[...e]}function go(e,t=[]){let n=new Set([e]),r=new Set,i=new Map;for(let e of t)typeof e==`string`?n.add(e):(r.add(e.id),e.version!==void 0&&i.set(e.id,e.version));return{hosts:n,capabilities:r,...i.size>0?{capabilityVersions:i}:{}}}function _o(e=[]){return e.some(e=>typeof e==`string`&&e===`node`)?e:[`node`,...e]}function vo(e){return at(st(yo(e.packages,e.configProvider),e.surface,e.runtimeEnvironment))}function yo(e,t){return t?e.filter(e=>t.loadEnabled(e.name)!==!1):e}function bo(e,t){return e.filter(e=>e.runtimeOwnership?.[t]===!0).map(e=>e.name)}function xo(e,t){let n=bo(e,t);if(n.length>1)throw Error(`Multiple extensions own runtimeOwnership.${t}: ${n.join(`, `)}`)}function So(e){return e===!0||(xo(e,`sessionOrchestrator`),bo(e,`sessionOrchestrator`).length===0)?Ht:Ht.filter(e=>e.name!==Nt.name)}function Co(e,t,n){let r=[];try{for(let i of e){let e=i.runtimeBoot;e&&mo(r,e.configure({bus:t,registerContributionProcessor:e=>{r.push(n.registerContributionProcessor(e))},forEachActiveExtension:e=>{n.forEachActiveExtension(e)}}))}}catch(e){let t=[];for(let e of[...r].reverse())try{e()}catch(e){t.push(e)}throw t.length>0?AggregateError([e,...t],`Extension boot contribution failed and rollback cleanup reported additional errors`,{cause:e}):e}return r}function wo(){let e=process.env.MAKAIO_SKIP_EXTENSIONS;if(!e)return new Set;let t=e.split(`,`).map(e=>e.trim()).filter(Boolean);return new Set(t)}function To(e,t){let n=t.endsWith(`/`)?t:`${t}/`,r=en({root:e,rewriteRequestPath:e=>e.slice(n.length-1)});return e=>{e.use(`${t}/*`,r)}}function Eo(e){return`/extensions/${e}/browser`}function Do(e,t){return`extensions/${e}/browser/${ko(t)}`}function Oo(e,t){return`/${Do(e,t)}.js`}function ko(e){let t=e.replaceAll(j.win32.sep,j.posix.sep),n=j.posix.basename(t),r=j.posix.extname(n);return r?n.slice(0,-r.length):n}function Ao(e,t,n={}){let{createMount:r=To}=n,i=new Map(e.map(e=>[e.descriptor.name,e]));return t.map(e=>{let t=i.get(e.name);if(!t?.descriptor.entrypoints?.browser)return e;if(e.browser)return console.warn(`[extensions] ${e.name}: server entry already declares browser, skipping browser bridge`),e;if(e.http)return console.warn(`[extensions] ${e.name}: server entry already declares http, skipping browser bridge`),e;let n=t.descriptor.entrypoints.browser,a=S(`browser`,n),o=b(`browser`,n,t.extensionPath);if(!o)return console.warn(`[extensions] ${e.name}: browser entry has no resolvable candidate within extension directory, skipping bridge`),e;let s=A.dirname(o),c=Eo(e.name),l=Oo(e.name,a);return{...e,browser:{entrypoint:l},http:{prefix:c,mount:r(s,c)}}})}function jo(e,t={}){let{createMount:n=To,frameworkVersion:r}=t,i=[],a=new Map;for(let t of e){let{descriptor:e,extensionPath:o}=t;if(r!==void 0&&!x(t,r)||e.execution===`detached`||e.entrypoints.server||!e.entrypoints.browser)continue;let s=e.entrypoints.browser,c=S(`browser`,s),l=b(`browser`,s,o);if(!l){console.warn(`[extensions] ${e.name}: browser entry has no resolvable candidate within extension directory, skipping synthesis`);continue}let u=A.dirname(l),d=Eo(e.name),f=Oo(e.name,c);i.push({...v(e),browser:{entrypoint:f},http:{prefix:d,mount:n(u,d)}}),e.config?.defaults&&a.set(e.name,e.config.defaults)}return{packages:i,configDefaults:a}}async function Mo(){let e=A.dirname(ce(import.meta.url)),t=A.resolve(e,`..`,`package.json`),n=await k.readFile(t,`utf-8`),r=JSON.parse(n);if(typeof r!=`object`||!r||!(`version`in r)||typeof r.version!=`string`)throw Error(`[boot] package.json at ${t} has no string 'version' field`);return r.version}async function No(e){let t={packages:[],configDefaults:new Map},n=[],r=e.frameworkVersion??await Mo();try{if(n=await e.extensionOptions.extensions.discover(),n=Po(n,e.skipExtensions),process.env.MAKAIO_DEBUG){console.info(`[boot] Discovered %d extension descriptor(s):`,n.length);for(let e of n)console.info(`[boot] - %s (%s)`,e.descriptor.displayName??e.descriptor.name,e.source)}}catch(e){console.warn(`[boot] Extension discovery failed, skipping:`,e instanceof Error?e.message:e)}let i=n.filter(e=>x(e,r));if(i.length>0)try{t=await T(i,{frameworkVersion:r})}catch(e){console.warn(`[boot] Extension loading failed, skipping:`,e instanceof Error?e.message:e)}let a={...e.createMount?{createMount:e.createMount}:{},frameworkVersion:r},o=Ao(i,t.packages,a),s=jo(i,a),c=await E(i,[...o,...s.packages],{frameworkVersion:r});return{discovered:n,extensionLoadResult:t,browserOnlyResult:s,extensionsWithCli:c,allExtensionPackages:c.packages}}function Po(e,t){if(t.size===0)return e;let n=new Set(e.map(e=>e.descriptor.name)),r=[...t].filter(e=>!n.has(e));r.length&&console.warn(`[boot] MAKAIO_SKIP_EXTENSIONS: no matching extension(s): %s`,r.join(`, `));let i=new Set([...t].filter(e=>n.has(e))),a=e.filter(e=>!i.has(e.descriptor.name));return a.length<e.length&&console.info(`[boot] MAKAIO_SKIP_EXTENSIONS filtered %d extension(s): %s`,e.length-a.length,[...i].join(`, `)),a}async function Fo(e,t){let n=We(e),r=n.dialect,i=new Set;for(let a of t){if(i.has(a.migrationSourceId))continue;i.add(a.migrationSourceId);let t=Io(a.migrationSourceId,n);process.env.MAKAIO_DEBUG===`true`&&console.info(`[boot] Running migrations for package: ${a.name}`);let o;try{o=sn({migrationsDir:a.migrationsPathByDialect?.[r]??a.migrationsPath,migrationSourceId:a.migrationSourceId,expectedDialect:r})}catch(e){throw e instanceof Error&&e.name===`MigrationDialectMismatchError`?Error(`Extension '${a.name}' ships migrations that do not match the '${r}' database dialect. Disable this extension on '${r}' hosts or ship a migration chain generated for '${r}'.`,{cause:e}):e}await gn(e,o,t)}}function Io(e,t){let n=N(`sha256`).update(e).digest(`hex`).slice(0,16);return t.migrations.extensionLedgerName(n)}function Lo(e,t){return new Oe({signingKeyPair:e.signingKeyPair,identityId:e.machineId,getPeerSigningKey:t})}const Ro=xe.fact.$meta.namespace,zo=xe.fact.subject;function Bo(e,t){if(t.transport!==void 0||t.localOnly===!0)return!1;let n=`${t.namespace}.${t.subject}`,r=e.getContext().namespaceRegistry;return!r.isLocalSubject(n)&&!r.isCollectorOnlySubject(n)}function Vo(e){return e.type===`event`?{type:`event`,namespace:e.namespace,subject:e.subject,payload:e.payload,messageId:e.messageId,...e.correlationId===void 0?{}:{correlationId:e.correlationId}}:{type:e.type,namespace:e.namespace,subject:e.subject,payload:e.payload,messageId:e.messageId,correlationId:e.correlationId??e.messageId}}async function Ho(e,t,n,r,i){let a=Vo(i),o=me({message:a,direction:`outbound`,observedAt:Date.now(),machineId:n,namespaceRegistry:t.getContext().namespaceRegistry,projectorRegistry:r.projectorRegistry});for(let t of o)await e.send({type:`event`,namespace:Ro,subject:zo,payload:t,messageId:`${a.messageId}:telemetry:${t.factId}`,correlationId:a.correlationId})}async function Uo(e,t,n){let r=n.transport;await r.connect();let i;try{i=e.observeMessages(i=>{Bo(e,i)&&Ho(r,e,t,n,i).catch(e=>{console.error(`[upstream-telemetry] Failed to export subject telemetry fact`,e)})})}catch(e){throw await r.disconnect().catch(()=>void 0),e}return{shutdown:async()=>{i(),await r.disconnect()}}}function Wo(e,t){let n=e===`0.0.0.0`?`127.0.0.1`:e===`::`?`::1`:e;return`ws://${n.includes(`:`)&&!n.startsWith(`[`)?`[${n}]`:n}:${t}/bus`}async function Go(e,t,n,r){let o=r.makaioHome??g(),s=Nn(r,o),c=wo(),l=[];try{let u=new Mn(new vn(o),o),d=await u.getConfig({mode:`local`}),f=await u.getMachineId();console.info(`[boot] Config resolved (mode=%s)`,d.mode);let p=fe;if(p.registerNamespaces(ye),p.registerNamespaces(be),p.registerNamespaces([tt,Ot,rt,it,i]),p.registerNamespaces(Mt),p.registerNamespaces(r.hostNamespaces??[]),process.env.MAKAIO_DEBUG===`true`){let e=p.__onAny(e=>{let t;try{t=JSON.stringify(e.payload)}catch{t=`[unserializable payload]`}console.debug(`[bus-server] subject: ${e.subject}, payload: ${t}`)});l.push(e)}if(r.upstreamTelemetry){let e=await Uo(p,f,r.upstreamTelemetry);l.push(e.shutdown)}await p.emit(B.phase.busCreated,{machineId:f});let m=r.peerSigningKeyResolver;if(r.lanBind&&e.dispatchingAuth&&!m)throw Error(`[boot] peerSigningKeyResolver is required when lanBind is enabled`);await e.connect(p,f),l.push(()=>e.disconnect()),console.info(`[boot] Transport ready on %s:%d`,n,t);try{r.onTransportReady?.({port:t,host:n})}catch(e){console.warn(`[boot] onTransportReady callback failed:`,e)}let{databaseClient:h}=await Vn({makaioHome:o,migrationsDir:r.centralMigrationsDir,database:r.database}),g=h.db;console.info(`[boot] Database initialized`),l.push(()=>h.close());let _=await Ct(A.join(o,`keys`)),v=[p.on(a.database,e=>{e.setResult({db:g})}),p.on(a.machineIdentity,e=>{e.setResult({identity:_})}),p.on(a.busPort,e=>{e.setResult({port:t})})],y=!1,b=p.on(B.isReady,e=>{e.setResult({ready:y,machineId:f})});l.push(()=>{y=!1,b();for(let e of v)e()}),await p.emit(B.phase.coreReady,{machineId:f}),console.info(`[boot] Core ready (machineId=%s)`,f);let x=A.dirname(ce(import.meta.url)),S=oi(p,u);l.push(S),console.info(`[boot] Config handlers registered`),r.frameworkPackagePath&&(await lo({makaioHome:o,frameworkPackagePath:r.frameworkPackagePath}),console.info(`[boot] Framework package linked for extension resolution`));let C=r.frameworkModuleResolver;if(C){try{await C.install()}catch(e){throw await Promise.resolve(C.uninstall()).catch(()=>void 0),e}l.push(()=>C.uninstall()),console.info(`[boot] Framework module resolver installed`)}let w={current:void 0},T=$a({makaioHome:o,srcDir:x,fallbackSeedPaths:r.modelRegistryFallbackSeedPaths}),E=process.env.USER??process.env.USERNAME??`unknown`;try{E=Ze.userInfo().username}catch{}let ee=r.frameworkVersion??await Mo(),{extensionLoadResult:ae,browserOnlyResult:D,extensionsWithCli:oe,allExtensionPackages:se}=await No({extensionOptions:s,skipExtensions:c,frameworkVersion:ee,createMount:r.createMount}),O=go(process.platform,r.hostCapabilities),k=vo({packages:se,configProvider:r.extensionConfigProvider,surface:r.surface??`headless`,runtimeEnvironment:O}),j=Wo(n,t),M=new nt(p,{surface:r.surface??`headless`,db:g,extensionContextBase:{platform:process.platform,homedir:Ze.homedir(),makaioHome:o,username:E,machineId:_.machineId,busUrl:j,tryImport:En},runtimeEnvironment:O,launcherCommand:r.launcherCommand,loadConfig:r.extensionConfigProvider?e=>r.extensionConfigProvider.loadConfig(e):void 0,loadEnabled:r.extensionConfigProvider?e=>r.extensionConfigProvider.loadEnabled(e):void 0,runMigrations:e=>Fo(g,e)}),N=new yt({providerConfigsDir:A.join(o,`provider-configs`),adaptersDir:A.join(o,`adapters`)}),P=[Ur,pt({definitions:k.flatMap(e=>e.clients??[]),strategyDependencies:r.clientBinaryStrategyDependencies,postInstallHandlers:r.clientBinaryPostInstallHandlers})];r.enablePackageManager!==!1&&P.push(Er({frameworkPeerRange:`^${ee}`,frameworkPackagePath:r.frameworkPackagePath,devPortalPackages:r.devPortalPackages}));let F={cwd:process.cwd()},le=ne({busUrl:j,runtimeModuleDir:x,platformDefaults:F,workflowRunner:r.workflowRunner,makaioHome:o,bus:p}),{adapterSubsystemPackage:ue}=nn({coordinator:M,configRepository:N,platformDefaults:F});if(P.push(ue,...So(k),Gt(le),Lt(T),Wt),process.platform===`darwin`){let{platformMacOSPackage:e}=await import(`../src-_VODAJnf.mjs`);P.push(e)}let de=[...P,...k],pe=new Set(de.map(e=>e.name)),me=ii(ai(ae.configDefaults,D.configDefaults,oe.configDefaults,r.packageConfigDefaults??new Map),pe);M.load(de,me),M.registerContributionProcessor(Ut()),M.registerContributionProcessor(Pt()),M.registerContributionProcessor(Ft()),M.registerContributionProcessor(It()),M.registerContributionProcessor(Rt()),M.registerContributionProcessor(zt()),M.registerContributionProcessor(Vt()),M.registerContributionProcessor(Bt()),r.routeGraphBuilder&&M.registerContributionProcessor(Dr(r.routeGraphBuilder)),mo(l,Co(de,p,M)),l.push(()=>M.shutdown()),mo(l,r.configureCoordinator?.({bus:p,coordinator:M,registerContributionProcessor:e=>{M.registerContributionProcessor(e)},getAdapterSubsystemService:()=>M.getExtensionService(vt)})),await M.startAll(),await p.emit(B.phase.servicesReady,{machineId:f});let he=M.list(),ge=he.filter(e=>e.state===`active`);if(console.info(`[boot] Extensions started: %d active`,ge.length),process.env.MAKAIO_DEBUG){let e=he.filter(e=>e.state===`failed`);for(let e of ge)console.info(`[boot] ✓ %s (%s)`,e.displayName,e.name);for(let t of e)console.warn(`[boot] ✗ %s (%s): %s`,t.displayName,t.name,t.error??`unknown`)}w.current=M.getExtensionService(vt);let I=new re({workerEntry:te({moduleDir:x,mode:A.basename(x)===`src`?`source`:`dist`}),manifest:{packages:[]}}),L=new ie({id:_e,displayName:`Local (Piscina)`,runner:I});try{await Ce(p,L)}catch(e){throw await I.dispose().catch(()=>void 0),e}l.push(async()=>{try{await Te(p,L.id)}finally{await I.dispose().catch(()=>void 0)}}),console.info(`[boot] Piscina thin workflow provider registered (id=%s)`,L.id),l.push(ri(p,()=>w.current?.getLoadedAdapters()??[],()=>w.current?.getAdapterInstances()??new Map,e=>M.getExtension(e)));let ve=rn({bus:p,currentMachineId:f});if(l.push(ve.cleanup),await p.broadcast(B.phase.coordinatorReady,{machineId:f}),r.lanBind&&e.dispatchingAuth&&m){let t=Lo(_,m);e.dispatchingAuth.setE2EAuth(t),console.info(`[boot] E2E auth enabled (LAN mode, machineId=%s)`,f)}y=!0,await p.emit(B.ready,{machineId:f}),console.info(`[boot] Runtime ready (machineId=%s)`,f);let xe=ot([...l].reverse());return{port:t,host:n,machineId:f,bus:p,coordinator:M,trayEntries:M.trayEntries,windowRegistry:M.windowRegistry,shutdown:xe}}catch(e){console.error(`[boot] Startup failed — rolling back started resources`,e);for(let e of[...l].reverse())try{await e()}catch(e){console.warn(`[boot] Rollback step error:`,e)}throw e}}async function Ko(e){let t=new jn({httpServer:e.httpServer,auth:e.auth,loopbackName:e.loopbackName??`node`}),n=e.httpServer.address();if(typeof n!=`object`||!n)throw Error(`HTTP server is not bound to a TCP address`);return Go(t,n.port,n.address,{...e,hostCapabilities:_o(e.hostCapabilities),clientBinaryStrategyDependencies:e.clientBinaryStrategyDependencies??Xr()})}const qo=`MAKAIO_UPSTREAM_URL`,Jo=`MAKAIO_UPSTREAM_SECRET`;function Yo(e){return new Ae({url:e.url,name:`upstream-telemetry-ws`,auth:e.secret===void 0?void 0:new ke({secret:e.secret})})}function Xo(e={}){let t=e.env??process.env,n=Qo(t[Jo]),r=Zo(t[qo]);if(r===void 0){if(n!==void 0)throw Error(`${Jo} requires ${qo}`);return}return{transport:(e.createTransport??Yo)({url:r,...n===void 0?{}:{secret:n}})}}function Zo(e){let t=e?.trim();return t===void 0||t===``?void 0:t}function Qo(e){let t=e?.trim();return t===void 0||t===``?void 0:t}async function $o(e){return{...await u(e),hostCapabilities:[`node`]}}const es=se(oe);var ts=class{async resolve(e){return Yt(e,{resolveKeychain:this.resolveKeychain})}async resolveKeychain(e,t){try{let{stdout:n}=await es(`security`,[`find-generic-password`,`-s`,e,`-a`,t,`-w`]);return n.trim()||null}catch{return null}}},ns=class{bus;fallbackProvider=new ts;channelPromise;constructor(e){this.bus=e}async resolve(e){let t=qe(e);if(t){let{configId:e,key:n}=t;for(let t=0;t<2;t++)try{return(await(await this.getChannel()).request(ve.get,{configId:e})).credentials?.[n]??null}catch(e){if(e instanceof de&&(this.channelPromise=void 0,t===0))continue;throw e}}return e.startsWith(`account-manager:`)?(console.warn(`[StoredCredentialProvider] account-manager: refs are account identifiers and cannot be resolved to credentials. The associated adapter should authenticate via its native credential store.`),null):e.startsWith(`stored:`)?(console.warn(`[StoredCredentialProvider] Unresolvable credential ref "${e}". Only the "stored:providerConfig:" format is supported. Re-save the credential using the current format.`),null):this.fallbackProvider.resolve(e)}getChannel(){return this.channelPromise??=this.openCredentialChannel().catch(e=>{throw this.channelPromise=void 0,e}),this.channelPromise}async openCredentialChannel(){let{token:e}=await this.bus.request(ve.getChannelToken,{});return pe(this.bus.getContext(),`credentials`,{token:e,transports:[]})}};async function rs(e){let{db:t}=await e.request(a.database,{});return t}const is=[`default`,`import`,`require`];var as=class{frameworkDistPath=``;install(){}uninstall(){}},os=class{frameworkDistPath;hooks;installPromise;installToken;constructor(e){this.frameworkDistPath=e}async install(){if(this.hooks)return;if(this.installPromise)return this.installPromise;let e={};this.installToken=e;let t=this.installWithToken(e);this.installPromise=t;try{await t}finally{this.installPromise===t&&(this.installPromise=void 0)}}async installWithToken(e){let{registerHooks:t}=await import(`node:module`);if(this.installToken!==e||this.hooks)return;let n=this.frameworkDistPath,r=cs(n);this.hooks=t({resolve(e,t,i){let a=ss(n,e,r);return a?{shortCircuit:!0,url:O(a).href}:i(e,t)}})}uninstall(){this.installToken=void 0,this.installPromise=void 0,this.hooks?.deregister(),this.hooks=void 0}};function ss(e,t,n){if(!t.startsWith(`@makaio/framework/`))return;let r=t.slice(18),i=r.split(`/`);if(i.length===0||i.some(e=>e.length===0||e===`.`||e===`..`||e.includes(`\\`)))return;let a=us((n??cs(e))[`./${r}`]);if(!a)return;let o=ds(a);if(!o)return;let s=j.resolve(e,o);return fs(s,e)?s:void 0}function cs(e){let t=j.join(e,`..`,`package.json`);return ls(JSON.parse(le(t,`utf-8`)).exports)}function ls(e){if(typeof e!=`object`||!e||Array.isArray(e))return{};let t={};for(let[n,r]of Object.entries(e))if(n.startsWith(`.`)){if(typeof r==`string`){t[n]=r;continue}typeof r==`object`&&r&&!Array.isArray(r)&&(t[n]=r)}return t}function us(e){if(typeof e==`string`)return e;if(e)for(let t of is){let n=e[t];if(typeof n==`string`)return n}}function ds(e){let t=e.split(`\\`).join(`/`);if(t.startsWith(`./dist/`))return t.slice(7)}function fs(e,t){let n=j.relative(t,e);return n===``||!n.startsWith(`..`)&&!j.isAbsolute(n)}export{jn as BusServerTransportProvider,o as ExplicitDescriptorDiscovery,vn as FileConfigStorage,Ca as FileRegistryCache,s as FilesystemDescriptorDiscovery,ee as InProcessWorkflowRunner,c as MAKAIO_CONFIG_FILE_ENV,l as MAKAIO_HOME_ENV,Jo as MAKAIO_UPSTREAM_SECRET_ENV,qo as MAKAIO_UPSTREAM_URL_ENV,ts as NodeCredentialProvider,os as NodeFrameworkModuleResolver,as as NoopFrameworkModuleResolver,a as RuntimeSubjects,ns as StoredCredentialProvider,re as ThinWorkflowPiscinaRunner,Ya as WorkspaceRootNotFoundError,rn as activateAdapterRuntimeIdentity,Uo as attachUpstreamTelemetry,Ko as bootMakaioRuntime,Go as bootMakaioRuntimeCore,Ao as bridgeExtensionBrowserEntries,u as buildConfiguredRuntimeOptions,Do as buildExtensionBrowserRollupInputName,Oo as buildExtensionBrowserRuntimeEntrypoint,$o as buildNodeRuntimeOptions,Sn as createHonoRouteGraph,wn as createHttpRouteGraphBuilder,d as createMakaioConfigDiscovery,Yo as createUpstreamTelemetryTransport,f as defineMakaioConfig,S as entrypointStem,Xa as findWorkspaceRoot,Za as findWorkspaceRootInfo,rs as getRuntimeDatabase,Vn as initializeNodeDatabase,w as isCliContributionLike,y as isMakaioExtensionLike,Tn as isMissingOptionalRuntimePackage,C as isWithinDirectory,T as loadExtensions,p as loadMakaioConfig,St as loadOrCreateMachineIdentity,wt as machineKeysExist,_o as normalizeNodeHostCapabilities,m as parseMakaioConfig,nn as prepareAdapterRuntime,Mo as readFrameworkVersion,tn as registerAdapterNameResolver,Fn as resolveBundledMigrationsDir,b as resolveConventionEntrypoint,ss as resolveFrameworkSpecifier,xn as resolveListeningPort,h as resolveMakaioConfigPath,g as resolveMakaioHome,yn as resolveStaticModelRegistryPath,Xo as resolveUpstreamTelemetryBootOptionsFromEnv,te as resolveWorkflowWorkerEntry,_n as runMigrations,So as selectFrameworkCorePackages,_ as shouldIncludeExtension,En as tryImport,Tt as validateMachineKeys,bn as waitForServerListening};
@@ -1,4 +1,4 @@
1
- import { r as ExtensionDiscovery, t as DiscoveredExtension } from "../extension-discovery-Bv5FDtrM.mjs";
1
+ import { r as ExtensionDiscovery, t as DiscoveredExtension } from "../extension-discovery-CIZn5bkq.mjs";
2
2
  import { z } from "zod";
3
3
 
4
4
  //#region runtimes/node/src/makaio-config.d.ts
@@ -1 +1 @@
1
- import{n as e}from"../esm-CP2zvvlx.mjs";import{z as t}from"zod";import{pathToFileURL as n}from"node:url";import*as r from"node:fs/promises";import*as i from"node:path";import{glob as a}from"glob";import{parseExtensionDescriptor as o}from"@makaio/framework/contracts";import*as s from"node:os";const c=`MAKAIO_CONFIG_FILE`,l=`MAKAIO_HOME`,u=[`makaio.config.ts`,`makaio.config.js`,`makaio.config.json`],d=[`**/node_modules/**`,`**/dist/**`,`**/.git/**`],f=t.object({mode:t.enum([`in-process`,`piscina`,`worker-node`]).optional(),maxConcurrency:t.number().int().positive().optional(),idleTimeoutMs:t.number().int().positive().optional()}).strict(),p=t.object({extensions:t.object({autoDiscover:t.boolean().optional(),discoveryPaths:t.array(t.string().min(1)).optional(),include:t.array(t.string().min(1)).optional(),exclude:t.array(t.string().min(1)).optional()}).optional(),launcherCommand:t.string().min(1).optional(),workflowRunner:f.optional(),packageConfigDefaults:t.record(t.string().min(1),t.record(t.string(),t.unknown())).optional()}).strict();function m(e){return e}function h(e=process.env){let t=e[l]?.trim();return t&&t.length>0?i.resolve(t):i.join(s.homedir(),`.makaio`)}function g(e,t){let n=p.safeParse(e??{});if(!n.success)throw j(`Invalid Makaio runtime config`,t.source,n.error);let r=n.data,i=r.extensions??{},a=_(i.discoveryPaths,t);return{extensions:{autoDiscover:i.autoDiscover??!0,discoveryPaths:a.map(e=>e.path),discoveryRoots:a,include:i.include??[],exclude:i.exclude??[]},launcherCommand:r.launcherCommand??`makaio`,workflowRunner:r.workflowRunner,packageConfigDefaults:new Map(Object.entries(r.packageConfigDefaults??{}))}}function _(e,t){return e===void 0?[{path:i.join(t.makaioHome,`extensions`),source:`installed`},{path:i.join(t.makaioHome,`node_modules`),source:`global-npm`}]:e.map(e=>({path:v(e,t.baseDir),source:`local`}))}function v(e,t){return i.isAbsolute(e)?e:i.resolve(t,e)}async function y(e){let t=e.env?.[c]?.trim(),n=e.configPath??(t||void 0);if(n!==void 0){let e=i.resolve(n);return await N(e,`runtime config`),e}for(let t of u){let n=i.join(e.makaioHome,t);if(await M(n))return n}if(process.env.NODE_ENV!==`production`){let t=process.cwd();if(t!==e.makaioHome)for(let e of u){let n=i.join(t,e);if(await M(n))return n}}}async function b(e){let t=await y(e);if(t===void 0)return{config:g({},{baseDir:e.makaioHome,makaioHome:e.makaioHome})};let n;try{n=await A(t)}catch(e){throw j(`Failed to load Makaio runtime config`,t,e)}return{configPath:t,config:g(n,{baseDir:i.dirname(t),makaioHome:e.makaioHome,source:t})}}async function x(e){let{config:t}=await b(e);return{launcherCommand:t.launcherCommand,discovery:S(t),workflowRunner:t.workflowRunner,packageConfigDefaults:t.packageConfigDefaults}}function S(e){return new C(e)}var C=class{config;constructor(e){this.config=e}async discover(){let e=new Map;for(let t of this.config.extensions.discoveryRoots)for(let n of await w(t))!e.has(n.descriptor.name)&&k(n.descriptor.name,this.config)&&e.set(n.descriptor.name,n);return[...e.values()]}};async function w(e){let t=e.path,n=await r.stat(t).catch(()=>void 0);if(n===void 0)return[];if(n.isFile()){if(i.basename(t)!==`descriptor.json`)return[];let n=await O(t,e.source);return n===void 0?[]:[n]}let a=i.join(t,`descriptor.json`);if(await M(a)){let t=await O(a,e.source);return t===void 0?[]:[t]}return i.basename(t)===`node_modules`?T(e):E(P(t,`**`,`descriptor.json`),e.source)}async function T(e){let t=e.path,n=[P(t,`*/descriptor.json`),P(t,`@*/*/descriptor.json`)];return D((await Promise.all(n.map(e=>a(e,{windowsPathsNoEscape:!0})))).flat(),e.source)}async function E(e,t){return D(await a(e,{ignore:[...d],windowsPathsNoEscape:!0}),t)}async function D(e,t){let n=[];for(let r of e){let e=await O(r,t);e!==void 0&&n.push(e)}return n}async function O(e,t){try{let n=await r.readFile(e,`utf-8`);return{descriptor:o(JSON.parse(n)),extensionPath:i.dirname(e),source:t}}catch(t){console.warn(`[makaio-config] Skipping invalid descriptor at ${e}:`,t instanceof Error?t.message:t);return}}function k(t,n){let{autoDiscover:r,include:i,exclude:a}=n.extensions;return a.some(n=>e(t,n))?!1:i.length>0?i.some(n=>e(t,n)):r}async function A(e){if(e.endsWith(`.json`))return JSON.parse(await r.readFile(e,`utf-8`));let t=await import(n(e).href);return t.default??t}function j(e,t,n){let r=t===void 0?``:` at ${t}`,i=n instanceof Error?n.message:String(n);return Error(`${e}${r}: ${i}`,{cause:n})}async function M(e){return r.stat(e).then(e=>e.isFile()).catch(()=>!1)}async function N(e,t){if(!await M(e))throw Error(`Missing ${t}: ${e}`)}function P(...e){return i.join(...e).split(i.sep).join(`/`)}export{c as MAKAIO_CONFIG_FILE_ENV,l as MAKAIO_HOME_ENV,x as buildConfiguredRuntimeOptions,S as createMakaioConfigDiscovery,m as defineMakaioConfig,b as loadMakaioConfig,g as parseMakaioConfig,y as resolveMakaioConfigPath,h as resolveMakaioHome,k as shouldIncludeExtension};
1
+ import{n as e}from"../esm-CQG9Pc7n.mjs";import{z as t}from"zod";import{pathToFileURL as n}from"node:url";import*as r from"node:fs/promises";import*as i from"node:path";import{glob as a}from"glob";import{parseExtensionDescriptor as o}from"@makaio/framework/contracts";import*as s from"node:os";const c=`MAKAIO_CONFIG_FILE`,l=`MAKAIO_HOME`,u=[`makaio.config.ts`,`makaio.config.js`,`makaio.config.json`],d=[`**/node_modules/**`,`**/dist/**`,`**/.git/**`],f=t.object({mode:t.enum([`in-process`,`piscina`,`worker-node`]).optional(),maxConcurrency:t.number().int().positive().optional(),idleTimeoutMs:t.number().int().positive().optional()}).strict(),p=t.object({extensions:t.object({autoDiscover:t.boolean().optional(),discoveryPaths:t.array(t.string().min(1)).optional(),include:t.array(t.string().min(1)).optional(),exclude:t.array(t.string().min(1)).optional()}).optional(),launcherCommand:t.string().min(1).optional(),workflowRunner:f.optional(),packageConfigDefaults:t.record(t.string().min(1),t.record(t.string(),t.unknown())).optional()}).strict();function m(e){return e}function h(e=process.env){let t=e[l]?.trim();return t&&t.length>0?i.resolve(t):i.join(s.homedir(),`.makaio`)}function g(e,t){let n=p.safeParse(e??{});if(!n.success)throw j(`Invalid Makaio runtime config`,t.source,n.error);let r=n.data,i=r.extensions??{},a=_(i.discoveryPaths,t);return{extensions:{autoDiscover:i.autoDiscover??!0,discoveryPaths:a.map(e=>e.path),discoveryRoots:a,include:i.include??[],exclude:i.exclude??[]},launcherCommand:r.launcherCommand??`makaio`,workflowRunner:r.workflowRunner,packageConfigDefaults:new Map(Object.entries(r.packageConfigDefaults??{}))}}function _(e,t){return e===void 0?[{path:i.join(t.makaioHome,`extensions`),source:`installed`},{path:i.join(t.makaioHome,`node_modules`),source:`global-npm`}]:e.map(e=>({path:v(e,t.baseDir),source:`local`}))}function v(e,t){return i.isAbsolute(e)?e:i.resolve(t,e)}async function y(e){let t=e.env?.[c]?.trim(),n=e.configPath??(t||void 0);if(n!==void 0){let e=i.resolve(n);return await N(e,`runtime config`),e}for(let t of u){let n=i.join(e.makaioHome,t);if(await M(n))return n}if(process.env.NODE_ENV!==`production`){let t=process.cwd();if(t!==e.makaioHome)for(let e of u){let n=i.join(t,e);if(await M(n))return n}}}async function b(e){let t=await y(e);if(t===void 0)return{config:g({},{baseDir:e.makaioHome,makaioHome:e.makaioHome})};let n;try{n=await A(t)}catch(e){throw j(`Failed to load Makaio runtime config`,t,e)}return{configPath:t,config:g(n,{baseDir:i.dirname(t),makaioHome:e.makaioHome,source:t})}}async function x(e){let{config:t}=await b(e);return{launcherCommand:t.launcherCommand,discovery:S(t),workflowRunner:t.workflowRunner,packageConfigDefaults:t.packageConfigDefaults}}function S(e){return new C(e)}var C=class{config;constructor(e){this.config=e}async discover(){let e=new Map;for(let t of this.config.extensions.discoveryRoots)for(let n of await w(t))!e.has(n.descriptor.name)&&k(n.descriptor.name,this.config)&&e.set(n.descriptor.name,n);return[...e.values()]}};async function w(e){let t=e.path,n=await r.stat(t).catch(()=>void 0);if(n===void 0)return[];if(n.isFile()){if(i.basename(t)!==`descriptor.json`)return[];let n=await O(t,e.source);return n===void 0?[]:[n]}let a=i.join(t,`descriptor.json`);if(await M(a)){let t=await O(a,e.source);return t===void 0?[]:[t]}return i.basename(t)===`node_modules`?T(e):E(P(t,`**`,`descriptor.json`),e.source)}async function T(e){let t=e.path,n=[P(t,`*/descriptor.json`),P(t,`@*/*/descriptor.json`)];return D((await Promise.all(n.map(e=>a(e,{windowsPathsNoEscape:!0})))).flat(),e.source)}async function E(e,t){return D(await a(e,{ignore:[...d],windowsPathsNoEscape:!0}),t)}async function D(e,t){let n=[];for(let r of e){let e=await O(r,t);e!==void 0&&n.push(e)}return n}async function O(e,t){try{let n=await r.readFile(e,`utf-8`);return{descriptor:o(JSON.parse(n)),extensionPath:i.dirname(e),source:t}}catch(t){console.warn(`[makaio-config] Skipping invalid descriptor at ${e}:`,t instanceof Error?t.message:t);return}}function k(t,n){let{autoDiscover:r,include:i,exclude:a}=n.extensions;return a.some(n=>e(t,n))?!1:i.length>0?i.some(n=>e(t,n)):r}async function A(e){if(e.endsWith(`.json`))return JSON.parse(await r.readFile(e,`utf-8`));let t=await import(n(e).href);return t.default??t}function j(e,t,n){let r=t===void 0?``:` at ${t}`,i=n instanceof Error?n.message:String(n);return Error(`${e}${r}: ${i}`,{cause:n})}async function M(e){return r.stat(e).then(e=>e.isFile()).catch(()=>!1)}async function N(e,t){if(!await M(e))throw Error(`Missing ${t}: ${e}`)}function P(...e){return i.join(...e).split(i.sep).join(`/`)}export{c as MAKAIO_CONFIG_FILE_ENV,l as MAKAIO_HOME_ENV,x as buildConfiguredRuntimeOptions,S as createMakaioConfigDiscovery,m as defineMakaioConfig,b as loadMakaioConfig,g as parseMakaioConfig,y as resolveMakaioConfigPath,h as resolveMakaioHome,k as shouldIncludeExtension};
@@ -1,2 +1,2 @@
1
- import { D as WorkflowWorkerEntryMode, O as WorkflowWorkerEntryResolverOptions, _ as ThinWorkflowPiscinaRunnerOptions, a as InProcessWorkflowRunnerOptions, c as WorkerNodeRunner, d as NodeWorkflowRunnerPackageOptions, f as createNodeWorkflowRunner, g as RuntimeLoadedWorkflow, h as IWorkflowRunner, i as InProcessWorkflowRunner, k as resolveWorkflowWorkerEntry, l as WorkerNodeRunnerOptions, m as ThinWorkflowPiscinaRunner, n as loadWorkflowModules, o as PiscinaThinWorkflowProvider, p as createNodeWorkflowRunnerPackageOptions, r as loadWorkflowFromConfig, s as PiscinaThinWorkflowProviderOptions, t as loadWorkflowModule, u as CreateNodeWorkflowRunnerPackageOptionsParams, v as WorkflowRunResult } from "../../index-BBteExwv.mjs";
1
+ import { D as WorkflowWorkerEntryMode, O as WorkflowWorkerEntryResolverOptions, _ as ThinWorkflowPiscinaRunnerOptions, a as InProcessWorkflowRunnerOptions, c as WorkerNodeRunner, d as NodeWorkflowRunnerPackageOptions, f as createNodeWorkflowRunner, g as RuntimeLoadedWorkflow, h as IWorkflowRunner, i as InProcessWorkflowRunner, k as resolveWorkflowWorkerEntry, l as WorkerNodeRunnerOptions, m as ThinWorkflowPiscinaRunner, n as loadWorkflowModules, o as PiscinaThinWorkflowProvider, p as createNodeWorkflowRunnerPackageOptions, r as loadWorkflowFromConfig, s as PiscinaThinWorkflowProviderOptions, t as loadWorkflowModule, u as CreateNodeWorkflowRunnerPackageOptionsParams, v as WorkflowRunResult } from "../../index-DiifAKRu.mjs";
2
2
  export { CreateNodeWorkflowRunnerPackageOptionsParams, IWorkflowRunner, InProcessWorkflowRunner, InProcessWorkflowRunnerOptions, NodeWorkflowRunnerPackageOptions, PiscinaThinWorkflowProvider, PiscinaThinWorkflowProviderOptions, RuntimeLoadedWorkflow, ThinWorkflowPiscinaRunner, ThinWorkflowPiscinaRunnerOptions, WorkerNodeRunner, WorkerNodeRunnerOptions, WorkflowRunResult, WorkflowWorkerEntryMode, WorkflowWorkerEntryResolverOptions, createNodeWorkflowRunner, createNodeWorkflowRunnerPackageOptions, loadWorkflowFromConfig, loadWorkflowModule, loadWorkflowModules, resolveWorkflowWorkerEntry };
@@ -1 +1 @@
1
- import{i as e,n as t,r as n}from"../../await-trigger-uKEHY8E4.mjs";import{a as r,i,n as a,o,r as s,s as c,t as l}from"../../workflow-worker-CjuRYLmJ.mjs";export{i as InProcessWorkflowRunner,l as PiscinaThinWorkflowProvider,c as ThinWorkflowPiscinaRunner,r as WorkerNodeRunner,a as createNodeWorkflowRunner,s as createNodeWorkflowRunnerPackageOptions,t as loadWorkflowFromConfig,n as loadWorkflowModule,e as loadWorkflowModules,o as resolveWorkflowWorkerEntry};
1
+ import{i as e,n as t,r as n}from"../../await-trigger-DcMVmNW5.mjs";import{a as r,i,n as a,o,r as s,s as c,t as l}from"../../workflow-worker-CojIlB6k.mjs";export{i as InProcessWorkflowRunner,l as PiscinaThinWorkflowProvider,c as ThinWorkflowPiscinaRunner,r as WorkerNodeRunner,a as createNodeWorkflowRunner,s as createNodeWorkflowRunnerPackageOptions,t as loadWorkflowFromConfig,n as loadWorkflowModule,e as loadWorkflowModules,o as resolveWorkflowWorkerEntry};
@@ -1 +1 @@
1
- import{a as e,n as t,t as n}from"../../await-trigger-uKEHY8E4.mjs";import*as r from"node:path";import{createBusInstance as i,waitForSubscriptionPropagation as a}from"@makaio/framework/bus";import{FrameworkContractNamespaces as o,FrameworkStorageNamespaces as s,WorkflowWorkerConfigSchema as c,createWorkflowCancelSubject as l}from"@makaio/framework/contracts";import{HmacAuth as u,WebSocketClientTransport as d}from"@makaio/framework/node/transports";import{parentPort as f}from"node:worker_threads";import{runWorkflowOrchestrator as p}from"@makaio/framework/workflow-engine/workflow-orchestrator";import{McpServerBridgeService as m}from"@makaio/framework/mcp-http-server";import{ToolRegistry as h}from"@makaio/framework/services/tools";async function g(e){let t=i();if(t.registerNamespaces(o),t.registerNamespaces(s),!e.busUrl)return{bus:t,close(){}};let n=e.busAuth.kind===`hmac`?new u({secret:e.busAuth.secret}):void 0,r=new d({url:e.busUrl,auth:n,autoReconnect:!1});return t.registerTransport(r),await t.connect(),{bus:t,async close(){await t.disconnect()}}}async function _(e,t){let n=new h({bus:e.bus}),r=new m(e.bus),i=async()=>{try{await r.destroy()}finally{n.dispose()}};try{await r.init();for(let e of t.toolsets)await v(n,e)}catch(e){throw await i(),e}return{close:i}}async function v(e,t){await e.register(t)}function y(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.name==`string`?typeof t.tools==`object`&&t.tools!==null||Array.isArray(t.adapters):!1}function b(e,t){if(y(e.default))return e.default;for(let t of Object.keys(e))if(t!==`default`&&y(e[t]))return e[t]}function x(e){return Object.freeze({bus:e?.bus,identity:Object.freeze({extensionName:`__worker__`}),dataDir:``,machineId:``,platform:process.platform,homedir:``,makaioHome:``,username:``,signal:e?.signal??new AbortController().signal,tryImport:async()=>null,getService:()=>{throw Error(`Worker-local contribution context does not expose host services.`)},hasExtension:()=>!1})}async function S(e,t){let n=await Promise.all(e.packages.map(e=>T(e,t))),r=[];for(let e of n)e&&r.push(...e.toolsets);return{toolsets:r}}function C(e,t){if(t!==void 0&&!r.isAbsolute(e)&&(e.startsWith(`./`)||e.startsWith(`../`))){let n=r.resolve(t),i=r.resolve(n,e);if(!w(n,i))throw Error(`importPath escapes makaioHome: ${e}`);return i}return e}function w(e,t){let n=r.relative(e,t);return n===``||!n.startsWith(`..`)&&!r.isAbsolute(n)}async function T(e,t){let n=e.importPath,r;try{n=C(e.importPath,t?.makaioHome),r=await import(n)}catch(t){let r=t instanceof Error?t.message:String(t);console.warn(`[worker-contributions] Failed to import "${e.name}" from "${n}": ${r}`);return}let i=b(r,e.name);if(!i){console.warn(`[worker-contributions] No recognizable extension export in "${e.name}" (${n})`);return}let a=[];if(i.tools?.createToolsets)try{let e=i.tools.createToolsets(x(t));a.push(...e)}catch(t){let n=t instanceof Error?t.message:String(t);console.warn(`[worker-contributions] createToolsets() failed for "${e.name}": ${n}`)}return{toolsets:a}}async function E(r){let i=c.parse(r.config),o=new AbortController,s=()=>o.abort(),u=r.signal??o.signal;u!==o.signal&&(u.aborted?o.abort():u.addEventListener(`abort`,s,{once:!0}));let d,m,h;try{d=await g(i),h=d.bus.on(l(i.cancelSubject),()=>{o.abort()}),await a(h);let s=await S(r.manifest,{bus:d.bus,signal:o.signal,makaioHome:i.context.makaioHome});s.toolsets.length>0&&(m=await _(d,s)),f?.postMessage(e(i.executionId,i.cancelSubject));let c=await t(i);return await p({config:await n(i,c,d.bus,o.signal),loaded:c,bus:d.bus,signal:o.signal})}finally{h?.(),u.removeEventListener(`abort`,s);try{m&&await m.close()}finally{d&&await d.close()}}}export{E as default,E as runWorkflowInWorker};
1
+ import{a as e,n as t,t as n}from"../../await-trigger-DcMVmNW5.mjs";import*as r from"node:path";import{createBusInstance as i,waitForSubscriptionPropagation as a}from"@makaio/framework/bus";import{FrameworkContractNamespaces as o,FrameworkStorageNamespaces as s,WorkflowWorkerConfigSchema as c,createWorkflowCancelSubject as l}from"@makaio/framework/contracts";import{HmacAuth as u,WebSocketClientTransport as d}from"@makaio/framework/node/transports";import{parentPort as f}from"node:worker_threads";import{runWorkflowOrchestrator as p}from"@makaio/framework/workflow-engine/workflow-orchestrator";import{McpServerBridgeService as m}from"@makaio/framework/mcp-http-server";import{ToolRegistry as h}from"@makaio/framework/services/tools";async function g(e){let t=i();if(t.registerNamespaces(o),t.registerNamespaces(s),!e.busUrl)return{bus:t,close(){}};let n=e.busAuth.kind===`hmac`?new u({secret:e.busAuth.secret}):void 0,r=new d({url:e.busUrl,auth:n,autoReconnect:!1});return t.registerTransport(r),await t.connect(),{bus:t,async close(){await t.disconnect()}}}async function _(e,t){let n=new h({bus:e.bus}),r=new m(e.bus),i=async()=>{try{await r.destroy()}finally{n.dispose()}};try{await r.init();for(let e of t.toolsets)await v(n,e)}catch(e){throw await i(),e}return{close:i}}async function v(e,t){await e.register(t)}function y(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.name==`string`?typeof t.tools==`object`&&t.tools!==null||Array.isArray(t.adapters):!1}function b(e,t){if(y(e.default))return e.default;for(let t of Object.keys(e))if(t!==`default`&&y(e[t]))return e[t]}function x(e){return Object.freeze({bus:e?.bus,identity:Object.freeze({extensionName:`__worker__`}),dataDir:``,machineId:``,platform:process.platform,homedir:``,makaioHome:``,username:``,signal:e?.signal??new AbortController().signal,tryImport:async()=>null,getService:()=>{throw Error(`Worker-local contribution context does not expose host services.`)},hasExtension:()=>!1})}async function S(e,t){let n=await Promise.all(e.packages.map(e=>T(e,t))),r=[];for(let e of n)e&&r.push(...e.toolsets);return{toolsets:r}}function C(e,t){if(t!==void 0&&!r.isAbsolute(e)&&(e.startsWith(`./`)||e.startsWith(`../`))){let n=r.resolve(t),i=r.resolve(n,e);if(!w(n,i))throw Error(`importPath escapes makaioHome: ${e}`);return i}return e}function w(e,t){let n=r.relative(e,t);return n===``||!n.startsWith(`..`)&&!r.isAbsolute(n)}async function T(e,t){let n=e.importPath,r;try{n=C(e.importPath,t?.makaioHome),r=await import(n)}catch(t){let r=t instanceof Error?t.message:String(t);console.warn(`[worker-contributions] Failed to import "${e.name}" from "${n}": ${r}`);return}let i=b(r,e.name);if(!i){console.warn(`[worker-contributions] No recognizable extension export in "${e.name}" (${n})`);return}let a=[];if(i.tools?.createToolsets)try{let e=i.tools.createToolsets(x(t));a.push(...e)}catch(t){let n=t instanceof Error?t.message:String(t);console.warn(`[worker-contributions] createToolsets() failed for "${e.name}": ${n}`)}return{toolsets:a}}async function E(r){let i=c.parse(r.config),o=new AbortController,s=()=>o.abort(),u=r.signal??o.signal;u!==o.signal&&(u.aborted?o.abort():u.addEventListener(`abort`,s,{once:!0}));let d,m,h;try{d=await g(i),h=d.bus.on(l(i.cancelSubject),()=>{o.abort()}),await a(h);let s=await S(r.manifest,{bus:d.bus,signal:o.signal,makaioHome:i.context.makaioHome});s.toolsets.length>0&&(m=await _(d,s)),f?.postMessage(e(i.executionId,i.cancelSubject));let c=await t(i);return await p({config:await n(i,c,d.bus,o.signal),loaded:c,bus:d.bus,signal:o.signal})}finally{h?.(),u.removeEventListener(`abort`,s);try{m&&await m.close()}finally{d&&await d.close()}}}export{E as default,E as runWorkflowInWorker};
@@ -1,3 +1,4 @@
1
+ import { JsonValue } from "@makaio/framework/contracts";
1
2
  import * as _$drizzle_orm_sqlite_core0 from "drizzle-orm/sqlite-core";
2
3
  import * as _$drizzle_orm_pg_core0 from "drizzle-orm/pg-core";
3
4
  import * as _$_makaio_storage_drizzle0 from "@makaio/framework/storage/drizzle";
@@ -153,6 +154,12 @@ declare const sessionsDual: _$_makaio_storage_drizzle0.DualTable<"sessions", {
153
154
  * Null (default) means "use the cascade defaults".
154
155
  */
155
156
  approvalPolicyOverride: _$_makaio_storage_drizzle0.DualBuilder<_$drizzle_orm_sqlite_core0.SQLiteTextBuilderInitial<"approval_policy_override", ["reject", "always-ask", "full-access"], number | undefined>, _$drizzle_orm_pg_core0.PgTextBuilderInitial<"approval_policy_override", ["reject", "always-ask", "full-access"]>>;
157
+ /**
158
+ * Opaque consumer-owned JSON metadata.
159
+ *
160
+ * The framework preserves this data but never interprets its keys.
161
+ */
162
+ metadata: _$_makaio_storage_drizzle0.DualBuilder<_$drizzle_orm0.$Type<_$drizzle_orm_sqlite_core0.SQLiteTextJsonBuilderInitial<string>, Record<string, JsonValue>>, _$drizzle_orm0.$Type<_$drizzle_orm_pg_core0.PgJsonbBuilderInitial<string>, Record<string, JsonValue>>>;
156
163
  /**
157
164
  * Tool call ID of the Agent/spawn_subagent invocation that spawned this session.
158
165
  * Only set for subagent sessions. Null for root/fork sessions.
@@ -251,7 +258,7 @@ declare const sessions: _$drizzle_orm_sqlite_core0.SQLiteTableWithColumns<{
251
258
  tableName: "sessions";
252
259
  dataType: "string";
253
260
  columnType: "SQLiteText";
254
- data: "discovered" | "closed" | "active" | "archived";
261
+ data: "closed" | "discovered" | "active" | "archived";
255
262
  driverParam: string;
256
263
  notNull: true;
257
264
  hasDefault: false;
@@ -658,6 +665,25 @@ declare const sessions: _$drizzle_orm_sqlite_core0.SQLiteTableWithColumns<{
658
665
  }, {}, {
659
666
  length: number | undefined;
660
667
  }>;
668
+ metadata: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
669
+ name: string;
670
+ tableName: "sessions";
671
+ dataType: "json";
672
+ columnType: "SQLiteTextJson";
673
+ data: Record<string, JsonValue>;
674
+ driverParam: string;
675
+ notNull: false;
676
+ hasDefault: false;
677
+ isPrimaryKey: false;
678
+ isAutoincrement: false;
679
+ hasRuntimeDefault: false;
680
+ enumValues: undefined;
681
+ baseColumn: never;
682
+ identity: undefined;
683
+ generated: undefined;
684
+ }, {}, {
685
+ $type: Record<string, JsonValue>;
686
+ }>;
661
687
  spawningToolCallId: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
662
688
  name: "spawning_tool_call_id";
663
689
  tableName: "sessions";
@@ -1104,7 +1130,7 @@ declare const agents: _$drizzle_orm_sqlite_core0.SQLiteTableWithColumns<{
1104
1130
  tableName: "agents";
1105
1131
  dataType: "string";
1106
1132
  columnType: "SQLiteText";
1107
- data: "idle" | "active" | "dead" | "disposed";
1133
+ data: "active" | "idle" | "dead" | "disposed";
1108
1134
  driverParam: string;
1109
1135
  notNull: true;
1110
1136
  hasDefault: false;
@@ -1 +1 @@
1
- import{sessionsDual as e}from"./services/session/storage/schema.mjs";import{n as t}from"./schema-Ba64XQjo.mjs";import{index as n,sqliteTable as r,text as i}from"drizzle-orm/sqlite-core";import{epochMs as a}from"@makaio/framework/storage/drizzle/columns/sqlite";const o=r(`messages`,{messageId:i(`message_id`).primaryKey(),turnId:i(`turn_id`).references(()=>t.sqlite.turnId,{onDelete:`cascade`}),sessionId:i(`session_id`).notNull().references(()=>e.sqlite.sessionId,{onDelete:`cascade`}),role:i(`role`,{enum:[`user`,`assistant`]}).notNull(),contentText:i(`content_text`).notNull(),blocks:i(`blocks`).notNull().default(`[]`),agentId:i(`agent_id`),adapterSessionId:i(`adapter_session_id`),adapterMessageId:i(`adapter_message_id`),timestamp:a(`timestamp`).notNull(),editOf:i(`edit_of`).references(()=>o.messageId),origin:i(`origin`,{enum:[`voice`,`text`,`compact`]})},e=>[n(`idx_messages_session`).on(e.sessionId,e.timestamp),n(`idx_messages_turn`).on(e.turnId,e.timestamp),n(`idx_messages_agent`).on(e.agentId,e.timestamp),n(`idx_messages_adapter_message_id`).on(e.adapterMessageId)]);export{o as t};
1
+ import{sessionsDual as e}from"./services/session/storage/schema.mjs";import{n as t}from"./schema-DHlTAy0N.mjs";import{index as n,sqliteTable as r,text as i}from"drizzle-orm/sqlite-core";import{epochMs as a}from"@makaio/framework/storage/drizzle/columns/sqlite";const o=r(`messages`,{messageId:i(`message_id`).primaryKey(),turnId:i(`turn_id`).references(()=>t.sqlite.turnId,{onDelete:`cascade`}),sessionId:i(`session_id`).notNull().references(()=>e.sqlite.sessionId,{onDelete:`cascade`}),role:i(`role`,{enum:[`user`,`assistant`]}).notNull(),contentText:i(`content_text`).notNull(),blocks:i(`blocks`).notNull().default(`[]`),agentId:i(`agent_id`),adapterSessionId:i(`adapter_session_id`),adapterMessageId:i(`adapter_message_id`),timestamp:a(`timestamp`).notNull(),editOf:i(`edit_of`).references(()=>o.messageId),origin:i(`origin`,{enum:[`voice`,`text`,`compact`]})},e=>[n(`idx_messages_session`).on(e.sessionId,e.timestamp),n(`idx_messages_turn`).on(e.turnId,e.timestamp),n(`idx_messages_agent`).on(e.agentId,e.timestamp),n(`idx_messages_adapter_message_id`).on(e.adapterMessageId)]);export{o as t};
@@ -0,0 +1 @@
1
+ import{i as e,t}from"./json-value-CmhSGMLv.mjs";import{a as n,s as ee}from"./visibility-Cb62p9bv.mjs";import"./credential-ref-YWQQENEo.mjs";import{c as te,f as r,i as ne,o as i,p as a,r as re,s as ie}from"./shared-DpOEfD8F.mjs";import{a as o,f as ae,i as oe,n as se,r as ce,t as le,u as ue}from"./compression-DMoeVgKx.mjs";import{t as s}from"./provider-context-DjSUpHSM.mjs";import{t as c}from"./schemas-XeIBqwvE.mjs";import{r as de}from"./profile-BMBXUqqh.mjs";import{i as l}from"./account-identity-D5TUafYg.mjs";import{SessionLineageSchema as fe}from"./contracts/adapter/schemas/session-lineage.mjs";import{z as u}from"zod";import{localSubject as pe,observability as d}from"@makaio/framework/core";const f=u.object({adapterId:u.string(),adapterName:u.string()}),p=u.object({cwd:u.string().optional(),allowedTools:u.array(u.string()).optional(),disallowedTools:u.array(u.string()).optional(),allowedDirectories:u.array(u.string()).optional(),systemPrompt:r.optional()}),me={request:u.object({adapterName:u.string().optional(),adapterId:u.string().optional()}).refine(e=>e.adapterName||e.adapterId,{message:`Either adapterName or adapterId must be provided`}),response:u.object({capabilities:u.array(u.string()),nativeTools:u.array(u.string())})},m=u.enum([`lead`,`member`]),h=u.enum([`fork`,`branch`,`subagent`,`compress`,`rewrite`,`coordinator`,`aside`]),g=u.enum([`parent-history`,`none`]),_=u.enum([`discovered`,`imported`,`tracking`]),v=u.object({sessionId:u.string(),title:u.string().nullable(),forkPointMessageId:u.string().nullable(),branchKind:h.nullable(),messageCount:u.number(),hasChildren:u.boolean(),spawningToolCallId:u.string().optional()}),y=u.object({fromMessageId:u.string(),toMessageId:u.string(),policy:u.enum([`verbatim`,`summarize`,`exclude`]),stripReasoning:u.boolean().optional(),stripToolOutputs:u.boolean().optional(),overrides:u.record(u.string(),u.literal(`exclude`)).optional(),summaryText:u.string().optional()}),b=u.object({removedMessageIds:u.array(u.string()).optional(),appliedPipeline:u.array(u.object({actionId:u.string(),options:u.record(u.string(),u.unknown()).optional()})).optional(),segments:u.array(y).optional()}),he=u.object({parentSessionId:u.string(),childSessionId:u.string(),summary:u.string().optional(),source:u.enum([`extension`,`user`,`system`]).optional(),extensionId:u.string().optional()}),ge=u.object({success:u.boolean(),handoff:u.string().optional()}),_e=u.object({parentSessionId:u.string(),childSessionId:u.string(),source:u.enum([`extension`,`user`,`system`]).optional(),extensionId:u.string().optional()}),ve=u.object({success:u.boolean()}),ye=u.object({sessionId:u.string()}),be=u.object({children:u.array(v)}),xe=u.object({parentSessionId:u.string(),childSessionId:u.string(),reason:u.string()}),Se=u.object({parentSessionId:u.string(),childSessionId:u.string(),forkPoint:u.string().optional()}),Ce=u.object({parentSessionId:u.string(),childSessionId:u.string()}),we=u.object({parentSessionId:u.string(),childSessionId:u.string(),handoff:u.string()}),Te=u.object({sessionId:u.string(),parentSessionId:u.string().optional()}),Ee=u.object({parentSessionId:u.string(),childSessionId:u.string(),result:u.unknown()}),De=u.object({sessionId:u.string(),reason:u.string(),source:u.enum([`extension`,`user`,`system`]).optional(),extensionId:u.string().optional()}),Oe=u.object({sessionId:u.string(),pipeline:u.array(u.object({actionId:u.string(),options:u.record(u.string(),u.unknown()).optional()}))}),ke=u.object({eventId:u.string(),contextJson:u.record(u.string(),u.unknown()),tokensBefore:u.number(),tokensAfter:u.number().optional()}),Ae=u.object({sessionId:u.string(),childSessionId:u.string(),parentSessionId:u.string(),kind:h,forkPointMessageId:u.string().optional(),transforms:b.optional()}),je=u.object({sessionId:u.string(),childSessionId:u.string(),parentSessionId:u.string(),resultJson:u.string().optional(),resultMessageId:u.string().optional()}),Me=u.object({sessionId:u.string(),summaryJson:u.string(),tokensBefore:u.number().optional(),tokensAfter:u.number().optional(),compressedMessageIds:u.array(u.string()).optional()}),x=u.object({sessionId:u.string(),parentSessionId:u.string().nullable(),branchKind:h.nullable(),createdAt:u.number(),originWindowId:u.string().optional()}),S=u.object({sessionId:u.string(),changedProperties:u.array(u.string())}),Ne={merge:{request:he,response:ge},abandon:{request:_e,response:ve},getChildren:{request:ye,response:be},forking:xe,forked:Se,merging:Ce,merged:we,abandoned:Te,childCompleted:Ee,compressionRequested:De,"branch.created":Ae,"branch.merged":je,squash:Me,created:x,updated:S,compress:{request:Oe,response:ke}},C=u.object({messageHistory:u.array(te).optional(),hasNewTransforms:u.boolean().optional(),hasCompression:u.boolean().optional(),extractedContext:u.unknown().optional(),isFirstTurn:u.boolean().optional(),hasConnectorSwap:u.boolean().optional(),turnContext:u.record(u.string(),e).optional()}),w=ne,Pe=u.enum([`user`,`assistant`]),T=u.enum([`voice`,`text`,`compact`]),E=u.object({messageId:u.string(),turnId:u.string().nullable(),sessionId:u.string(),role:Pe,contentText:u.string(),blocks:u.array(w),agentId:u.string().optional(),adapterSessionId:u.string().optional(),adapterMessageId:u.string().optional(),timestamp:u.number(),editOf:u.string().optional(),origin:T.optional()}),D=u.enum([`active`,`completed`,`error`]),O=u.object({inputTokens:u.number(),outputTokens:u.number(),cost:u.number().optional()}),k=u.object({total:O,byAgent:u.record(u.string(),O).optional()}),A=u.object({source:u.enum([`user`,`extension`,`system`]),sourceId:u.string().optional()}),j=u.object({turnId:u.string(),sessionId:u.string(),turnNumber:u.number().int().min(1),startedAt:u.number(),completedAt:u.number().optional(),status:D,error:u.string().optional(),usage:k.optional(),initiator:A.optional()}),M=u.enum([`sent`,`acknowledged`,`completed`]),Fe=u.object({messageId:u.string(),agentId:u.string(),status:M,timestamp:u.number(),error:u.string().optional()}),N=u.enum([`idle`,`active`,`dead`,`disposed`]),P=u.object({agentId:u.string(),adapterId:u.string(),adapterName:u.string(),sessionId:u.string(),adapterSessionId:u.string().optional(),model:u.string().optional(),cwd:u.string().optional(),allowedDirectories:u.array(u.string()).optional(),providerConfigId:u.string().optional(),personaId:u.string().optional(),profileId:u.string().optional(),harnessId:u.string().optional(),clientId:u.string().optional(),compressionMode:le.optional(),role:m,status:N,createdAt:u.number(),lastActivityAt:u.number()}),F=u.record(u.string(),e),I=u.object({sessionId:u.string(),createdAt:u.number(),lastActivityAt:u.number(),agents:u.array(P),status:u.enum([`active`,`closed`,`archived`,`discovered`]),leadAgentId:u.string().optional(),parentSessionId:u.string().optional(),contextInheritance:g.optional(),rootSessionId:u.string().optional(),forkPointMessageId:u.string().optional(),branchKind:h.optional(),adapterName:u.string().optional(),adapterSessionId:u.string().optional(),adapterId:u.string().optional(),clientId:u.string().optional(),clientAccountId:u.string().optional(),lastClientIdentityObservation:l.optional(),isOrchestrated:u.boolean().optional(),title:u.string().optional(),summary:u.string().optional(),summaryUpdatedAt:u.number().optional(),isImported:u.boolean().optional(),forkTransforms:b.optional(),targetWorkingDirectory:u.string().optional(),executionTargetId:u.string().optional(),spawningToolCallId:u.string().optional(),approvalPolicyOverride:c.nullable().optional(),metadata:F.optional(),source:u.string().optional(),parentExternalSessionId:u.string().optional(),logFilePath:u.string().optional(),discoveredAt:u.number().optional(),importStatus:_.optional()}),L=u.object({messageCount:u.number(),firstUserMessage:u.string().nullable()}),R=I.extend({preview:L.optional()}),z=u.object({sessionId:u.string(),turnId:u.string(),turnNumber:u.number().int().min(1)}),B=z.extend({messageId:u.string()}),V=z.extend({success:u.boolean(),error:u.string().optional(),usage:k.optional(),initiator:A.optional()}),Ie=oe.safeExtend({kind:u.string().regex(/^(?!(?:adapter|canonical-model)$).+$/)}),Le=u.union([ce,se,Ie]),Re=ce.extend({providerContext:s.optional()}),ze=u.object({sessionId:u.string(),agent:Re,initialMessage:i.optional(),role:u.enum([`lead`,`member`]).optional()}),Be=u.object({agentId:u.string(),adapterSessionId:u.string(),role:u.enum([`lead`,`member`]),messageId:u.string().optional(),turnId:u.string().optional()}),H={sendMessage:{request:u.object({sessionId:u.string(),message:i,agent:Le.optional(),agentIds:u.union([u.array(u.string()),u.literal(`all`)]).optional(),deliveryMode:u.enum([`enqueue`]).optional(),turnId:u.string().optional(),sessionContext:C.optional(),responseSchema:a.optional(),source:u.enum([`extension`,`user`,`system`]).optional(),extensionId:u.string().optional(),originWindowId:u.string().optional(),skipConnectorSwapWarning:u.boolean().optional(),origin:T.optional()}),response:u.object({messageId:u.string(),turnId:u.string(),sessionId:u.string()})},"agent.attach":{request:u.object({sessionId:u.string(),agent:o,initialMessage:i.optional(),role:u.enum([`lead`,`member`]).optional()}),response:u.object({agentId:u.string(),adapterSessionId:u.string(),role:u.enum([`lead`,`member`]),messageId:u.string().optional(),turnId:u.string().optional()})},"agent.attachResolved":pe({request:ze,response:Be}),"turn.started":z.extend({messageId:u.string(),agentIds:u.array(u.string()),initiator:A.optional()}),"turn.completed":V,"turn.await":{request:u.object({sessionId:u.string(),turnId:u.string(),timeoutMs:u.number().int().positive()}),response:u.object({completion:V})},"user_message.sent":B.extend({content:i,agentIds:u.array(u.string()),source:u.enum([`extension`,`user`,`system`]).optional(),origin:T.optional()}),"user_message.acknowledged":B.extend({agentId:u.string()}),"user_message.completed":B.extend({agentId:u.string(),outcome:ie,supersededBy:u.string().optional(),mergedInto:u.string().optional(),error:u.string().optional()}),fork:{request:u.object({sourceSessionId:u.string(),fromMessageId:u.string().optional(),name:u.string().optional(),branchKind:u.enum([`fork`,`branch`,`aside`]).optional(),transforms:b.optional(),targetWorkingDirectory:u.string().optional(),metadata:F.optional(),existingSessionId:u.string().optional()}),response:u.object({sessionId:u.string()})}},Ve=u.discriminatedUnion(`success`,[u.object({agentId:u.string(),adapterId:u.string(),success:u.literal(!0)}),u.object({agentId:u.string(),adapterId:u.string(),success:u.literal(!1),error:u.string()})]),U=u.object({sessionId:u.string().optional(),parentSessionId:u.string().optional(),contextInheritance:g.optional(),forkPointMessageId:u.string().optional(),branchKind:h.optional(),forkTransforms:b.optional(),title:u.string().optional(),targetWorkingDirectory:u.string().optional(),executionTargetId:u.string().optional(),metadata:F.optional(),spawningToolCallId:u.string().optional(),originWindowId:u.string().optional()});function W(e,t){e.spawningToolCallId&&e.branchKind!==`subagent`&&t.addIssue({code:u.ZodIssueCode.custom,path:[`spawningToolCallId`],message:`spawningToolCallId is only valid for subagent sessions`})}const He={list:{request:d.schema(u.object({status:u.enum([`active`,`closed`,`archived`,`discovered`,`all`]).optional(),limit:u.number().int().min(1).optional(),offset:d.hidden(u.number().int().min(0).optional()),includePreview:u.boolean().optional(),executionTargetId:u.string().optional()}),{traceAll:!0}),response:u.object({sessions:u.array(R),total:u.number()})},search:{request:u.object({query:u.string(),limit:u.number().int().min(1).optional(),status:u.enum([`active`,`closed`,`archived`,`discovered`,`all`]).optional(),isImported:u.boolean().optional()}),response:u.object({sessions:u.array(R),total:u.number()})},get:{request:u.object({sessionId:u.string()}),response:u.object({session:I.nullable()})},create:{request:U.superRefine(W),response:u.object({sessionId:u.string()})},close:{request:u.object({sessionId:u.string()}),response:u.object({success:u.boolean()})},resume:{request:u.object({sessionId:u.string()}),response:u.object({success:u.boolean()})},restartAgents:{request:u.object({sessionId:u.string()}),response:u.object({sessionId:u.string(),results:u.array(Ve)})},archive:{request:u.object({sessionId:u.string()}),response:u.object({success:u.boolean()})},purge:{request:u.object({sessionId:u.string()}),response:u.object({success:u.boolean(),eventsDeleted:u.number().optional(),error:u.string().optional()})},update:{request:u.object({sessionId:u.string(),executionTargetId:u.string().nullable().optional(),approvalPolicyOverride:c.nullable().optional(),title:u.string().optional(),metadata:F.nullable().optional()}),response:u.object({success:u.boolean()})},getByAdapterSessionId:{request:u.object({adapterSessionId:u.string()}),response:u.object({session:I.nullable()})},getStatusCounts:{request:u.object({}),response:u.object({all:u.number(),active:u.number(),closed:u.number(),archived:u.number(),discovered:u.number()})},registerExternal:{request:U.extend({adapterName:u.string(),adapterSessionId:u.string(),lastClientIdentityObservation:l.optional()}).superRefine(W),response:u.object({sessionId:u.string(),created:u.boolean()})}},G=u.object({sessionId:u.string(),eventId:u.string(),timestamp:u.number()}),Ue=u.discriminatedUnion(`type`,[G.extend({type:u.literal(`agent.added`),payload:u.object({sessionId:u.string(),adapterSessionId:u.string(),agentId:u.string(),adapterId:u.string(),adapterName:u.string(),role:u.enum([`lead`,`member`]).optional(),model:u.string().optional(),cwd:u.string().optional()})}),G.extend({type:u.literal(`user_message.sent`),payload:H[`user_message.sent`]}),G.extend({type:u.literal(`user_message.acknowledged`),payload:H[`user_message.acknowledged`]}),G.extend({type:u.literal(`user_message.completed`),payload:H[`user_message.completed`]}),G.extend({type:u.literal(`turn.started`),payload:H[`turn.started`]}),G.extend({type:u.literal(`turn.completed`),payload:H[`turn.completed`]}),G.extend({type:u.literal(`message`),payload:u.object({messageId:u.string(),turnId:u.string().nullable(),role:u.enum([`user`,`assistant`])})}),G.extend({type:u.literal(`branch.created`),payload:u.object({childSessionId:u.string(),parentSessionId:u.string(),kind:h,forkPointMessageId:u.string().optional()})}),G.extend({type:u.literal(`branch.merged`),payload:u.object({childSessionId:u.string(),parentSessionId:u.string(),resultJson:u.string().optional(),resultMessageId:u.string().optional()})}),G.extend({type:u.literal(`squash`),payload:u.object({summaryJson:u.string(),tokensBefore:u.number().optional(),tokensAfter:u.number().optional(),compressedMessageIds:u.array(u.string()).optional()})})]),K=[`message`,`agent.added`,`turn.started`,`turn.completed`,`user_message.sent`,`user_message.acknowledged`,`user_message.completed`,`branch.created`,`branch.merged`,`squash`],We=K,Ge=G.extend({type:u.string().refine(e=>!K.includes(e),{message:`Plugin session event type must not shadow a core event type.`}),payload:u.record(u.string(),u.unknown())}),q=u.union([Ue,Ge]),Ke=u.string(),J=u.object({sessionId:u.string().min(1),clientId:u.string().min(1),previousClientAccountId:u.string().min(1).nullable(),clientAccountId:u.string().min(1),source:u.string().min(1),observedAt:u.number().int().finite().nonnegative(),lastClientIdentityObservation:l}),Y=u.object({sessionId:u.string(),importStatus:_}),qe={"agent.added":u.object({sessionId:u.string(),adapterSessionId:u.string(),agentId:u.string(),adapterId:u.string(),adapterName:u.string(),role:m.optional(),model:u.string().optional(),cwd:u.string().optional()}),"agent.removed":u.object({sessionId:u.string(),agentId:u.string()}),closed:u.object({sessionId:u.string(),reason:u.string().optional()}),resumed:u.object({sessionId:u.string()}),archived:u.object({sessionId:u.string()}),purged:u.object({sessionId:u.string()}),compressed:u.object({sessionId:u.string(),eventId:u.string()}),"clientAccount.changed":J,"connectorSwap.editRequested":u.object({sessionId:u.string(),agentId:u.string(),previousCwd:u.string().optional(),newCwd:u.string().optional(),previousModel:u.string().optional(),newModel:u.string().optional()}),getContextWindowState:{request:u.object({sessionId:u.string()}),response:u.object({state:u.object({currentTokens:u.number(),maxTokens:u.number(),percentage:u.number(),level:u.enum([`ok`,`warn`,`critical`]),lastUpdatedAt:u.number()}).nullable()})},importStatusChanged:Y,"import.completed":u.object({sessionId:u.string(),adapterSessionId:u.string(),source:u.string()}),event:q},X=u.object({includeEvents:u.boolean().default(!1),includeToolOutputs:u.boolean().default(!1),includeAncestors:u.boolean().default(!0),includeChildren:u.boolean().default(!1)}),Je=`1.0`,Z=u.object({version:u.literal(`1.0`),exportedAt:u.number(),options:X,sessions:u.array(I),agents:u.array(P),messages:u.array(E),turns:u.array(j),events:u.array(q).optional()});function Ye(e){return Z.parse(e)}function Xe(e){let t=Z.safeParse(e);return t.success?{success:!0,data:t.data}:{success:!1,error:t.error}}const Ze={"snapshot.export":{request:u.object({sessionId:u.string(),options:X.optional()}),response:u.object({snapshot:Z})},"snapshot.import":{request:u.object({snapshot:Z,onConflict:u.enum([`fail`,`skip`,`overwrite`]).default(`fail`)}),response:u.object({imported:u.array(u.string()),skipped:u.array(u.string()),errors:u.array(u.object({sessionId:u.string(),error:u.string()}))})},"snapshot.validate":{request:u.object({snapshot:u.unknown()}),response:u.object({valid:u.boolean(),errors:u.array(u.string())})}},Qe={resolveAgentConfig:{request:u.object({selection:o,projectId:u.string().optional()}),response:u.object({adapterName:u.string(),model:u.string().optional(),providerConfigId:u.string().optional(),reasoningEffort:n.optional(),supportedReasoningLevels:ee.optional(),systemPrompt:r.optional(),allowedTools:u.array(u.string()).optional(),disallowedTools:u.array(u.string()).optional(),allowedDirectories:u.array(u.string()).optional()})}},$e={resolveSystemPrompt:{request:u.object({sessionId:u.string(),personaId:u.string().optional(),profileId:u.string().optional()}),response:u.object({systemPrompt:u.string(),personaName:u.string().optional(),profileName:u.string().optional()})}},et={enrichContext:{request:u.object({sessionId:u.string()}),response:u.record(u.string(),u.unknown())}},tt={...He,...qe,...Ze,...Ne,...H,...Qe,...$e,...et},Q=u.object({adapterId:u.string(),harnessId:u.string().optional(),clientId:u.string().optional(),clientProfileName:de.optional(),initialMessage:i.optional(),responseSchema:a.optional(),model:u.string().optional(),reasoningEffort:n.optional(),adapterConfig:t.optional(),env:u.record(u.string(),u.string()).optional(),role:m,sessionContext:C.optional(),mcpSessionContext:u.union([ae,ue]).optional(),providerContext:s.optional(),ephemeral:u.boolean().optional()}).merge(p),nt={request:u.union([Q.extend({mode:u.literal(`fork`),sessionId:u.string(),sourceSessionId:u.string()}),Q.extend({mode:u.literal(`resume`),sessionId:u.string(),adapterSessionId:u.string()}),Q.extend({mode:u.literal(`create`).optional(),sessionId:u.string().optional()})]).superRefine((e,t)=>{let n=e.mode??`create`;e.ephemeral&&n!==`create`&&t.addIssue({code:u.ZodIssueCode.custom,path:[`ephemeral`],message:`ephemeral is only supported for create mode`}),e.ephemeral&&e.initialMessage===void 0&&t.addIssue({code:u.ZodIssueCode.custom,path:[`initialMessage`],message:`ephemeral startAgent requires initialMessage`})}),response:u.discriminatedUnion(`success`,[u.object({success:u.literal(!0),agentId:u.string(),adapterId:u.string(),adapterSessionId:u.string(),sessionId:u.string(),messageId:u.string().optional()}),u.object({success:u.literal(!1),message:u.string()})])},rt={request:u.object({adapterId:u.string(),prompt:u.string(),model:u.string().optional(),systemPrompt:u.string().optional(),responseSchema:a.optional(),providerContext:s.optional()}),response:u.object({text:u.string(),usage:u.object({inputTokens:u.number(),outputTokens:u.number()}).optional()})},it={request:u.object({adapterId:u.string()}),response:u.object({agents:u.array(u.object({agentId:u.string(),sessionId:u.string(),adapterSessionId:u.string()}))})},at={request:u.object({adapterId:u.string(),agentId:u.string()}),response:u.object({agent:u.object({agentId:u.string(),sessionId:u.string(),adapterSessionId:u.string()}).nullable()})},ot={request:u.object({adapterId:u.string(),agentId:u.string()}),response:u.object({success:u.boolean()})},st={request:u.object({adapterId:u.string(),agentId:u.string(),cwd:u.string().optional(),model:u.string().optional(),adapterSessionId:u.string().optional()}),response:u.object({})},ct={request:u.object({adapterName:u.string()}),response:u.object({found:u.boolean(),adapterName:u.string(),jsonSchema:u.record(u.string(),u.unknown()).nullable()})},lt=f.extend({agentId:u.string(),sessionId:u.string(),adapterSessionId:u.string().optional()}),ut=f.extend({adapterSessionId:u.string(),sessionId:u.string(),model:u.string()}),dt=f.extend({sessionId:u.string(),adapterSessionId:u.string(),totalInputTokens:u.number(),totalOutputTokens:u.number(),totalCalls:u.number()}),ft=f.extend({agentId:u.string(),sessionId:u.string(),adapterSessionId:u.string(),reason:u.string().optional()}),pt=f.extend({message:u.string(),timestamp:u.number(),level:u.enum([`debug`,`info`,`warn`,`error`]).optional()}),mt=f.extend({error:u.string(),sessionId:u.string().optional(),errorCategory:re.optional()}),ht=f.extend({capabilities:u.array(u.string()),nativeTools:u.array(u.string()).optional()}),gt=f.extend({provider:u.string(),quotaType:u.string(),limit:u.number(),used:u.number(),overage:u.number(),resetDate:u.string()}),_t=u.object({agentId:u.string(),adapterId:u.string(),adapterName:u.string(),sessionId:u.string().optional(),adapterSessionId:u.string(),messageId:u.string().optional(),turnId:u.string().optional(),clientId:u.string().optional(),providerConfigId:u.string().optional(),occurredAt:u.number().optional()}),$=u.object({model:u.string().nullable(),cwd:u.string().nullable()}),vt=_t.merge($),yt=f.merge($).extend({adapterSessionId:u.string(),title:u.string().optional(),logFilePath:u.string().nullable().optional(),startedAt:u.number().finite().optional()}).and(fe);export{y as $,q as A,Fe as B,Je as C,Ye as D,Xe as E,L as F,E as G,w as H,F as I,D as J,A as K,R as L,Ke as M,U as N,J as O,I as P,b as Q,N as R,Qe as S,X as T,T as U,M as V,Pe as W,O as X,k as Y,C as Z,rt as _,ht as a,_ as at,et as b,ft as c,p as ct,lt as d,x as et,ct as f,it as g,at as h,gt as i,h as it,We as j,Y as k,dt as l,ot as m,vt as n,v as nt,mt as o,g as ot,st as p,j as q,_t as r,m as rt,pt as s,me as st,yt as t,S as tt,ut as u,nt as v,Z as w,$e as x,tt as y,P as z};