@makaio/framework 1.0.0-dev-1783705652236 → 1.0.0-dev-1783940945655

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 (449) hide show
  1. package/dist/.makaio-build.json +2 -2
  2. package/dist/account-identity-BYfeWLe-.mjs +1 -0
  3. package/dist/adapter-auth-runtime-a4O7cSNP.mjs +1 -0
  4. package/dist/adapter-binding-DDUyv1JK.d.mts +254 -0
  5. package/dist/{adapter-CA8rPIUz.mjs → adapter-nl_xz9dz.mjs} +1 -1
  6. package/dist/adapter-subsystem/index.d.mts +110 -5
  7. package/dist/adapter-subsystem/index.mjs +1 -1
  8. package/dist/adapters/acp-client/index.d.mts +10 -0
  9. package/dist/adapters/acp-client/index.mjs +2 -2
  10. package/dist/adapters/config/index.d.mts +176 -153
  11. package/dist/adapters/config/index.mjs +1 -1
  12. package/dist/adapters/index.d.mts +1021 -1005
  13. package/dist/adapters/index.mjs +6 -6
  14. package/dist/adapters/node.d.mts +1 -1
  15. package/dist/adapters/node.mjs +1 -1
  16. package/dist/adapters/stream-session/index.d.mts +7 -5
  17. package/dist/adapters/stream-session/index.mjs +1 -1
  18. package/dist/auth-C3NOWqTU.mjs +1 -0
  19. package/dist/{base-orchestrator-J1WKAUkF.d.mts → base-orchestrator-BiShpVKL.d.mts} +6 -0
  20. package/dist/bus/index.d.mts +21 -21
  21. package/dist/bus/index.mjs +1 -1
  22. package/dist/{canonical-model-DV-Z8gsb.mjs → canonical-model-CVRCW9h7.mjs} +1 -1
  23. package/dist/client-BkpLM8Fx.mjs +1 -0
  24. package/dist/client-binary-version-verifier-BK_vIjIo.mjs +2 -0
  25. package/dist/client-binary-version-verifier-BwrMTAh2.d.mts +179 -0
  26. package/dist/clients/index.d.mts +74 -90
  27. package/dist/clients/index.mjs +1 -2
  28. package/dist/clients/managed-install.d.mts +2 -0
  29. package/dist/clients/managed-install.mjs +1 -0
  30. package/dist/{clients-namespace-Bt_VTkEU.d.mts → clients-namespace-B96QIJOs.d.mts} +224 -21
  31. package/dist/compression-CZ_6fYq8.mjs +1 -0
  32. package/dist/config-namespace-DTA6EQL8.mjs +1 -0
  33. package/dist/{config-namespace-DqdFE6zk.d.mts → config-namespace-x0fuhEXe.d.mts} +73 -1
  34. package/dist/contracts/adapter/index.d.mts +3 -3
  35. package/dist/contracts/adapter/index.mjs +1 -1
  36. package/dist/contracts/adapter/schemas/session-lineage.d.mts +1 -1
  37. package/dist/contracts/artifact/index.d.mts +1 -1
  38. package/dist/contracts/auth/index.d.mts +3 -0
  39. package/dist/contracts/auth/index.mjs +1 -0
  40. package/dist/contracts/canonical-model/index.d.mts +1 -1
  41. package/dist/contracts/canonical-model/index.mjs +1 -1
  42. package/dist/contracts/client/index.d.mts +3 -3
  43. package/dist/contracts/client/index.mjs +1 -1
  44. package/dist/contracts/common/index.d.mts +1 -1
  45. package/dist/contracts/config/index.d.mts +20 -93
  46. package/dist/contracts/config/index.mjs +1 -1
  47. package/dist/contracts/extension/index.d.mts +3 -3
  48. package/dist/contracts/extension/index.mjs +1 -1
  49. package/dist/contracts/facet/index.d.mts +1 -1
  50. package/dist/contracts/facet/index.mjs +1 -1
  51. package/dist/contracts/harness/index.d.mts +1 -1
  52. package/dist/contracts/harness/index.mjs +1 -1
  53. package/dist/contracts/host/index.d.mts +1 -1
  54. package/dist/contracts/host/index.mjs +1 -1
  55. package/dist/contracts/index.d.mts +1214 -261
  56. package/dist/contracts/index.mjs +1 -1
  57. package/dist/contracts/materialization/index.d.mts +3 -3
  58. package/dist/contracts/materialization/index.mjs +1 -1
  59. package/dist/contracts/model-registry/index.d.mts +1 -1
  60. package/dist/contracts/model-registry/index.mjs +1 -1
  61. package/dist/contracts/native-session-supervisor/index.d.mts +1 -1
  62. package/dist/contracts/native-session-supervisor/index.mjs +1 -1
  63. package/dist/contracts/platform/index.d.mts +1 -1
  64. package/dist/contracts/platform/index.mjs +1 -1
  65. package/dist/contracts/provider/index.d.mts +2 -2
  66. package/dist/contracts/provider/index.mjs +1 -1
  67. package/dist/contracts/session/index.d.mts +2 -2
  68. package/dist/contracts/session/index.mjs +1 -1
  69. package/dist/contracts/shared/index.d.mts +2 -2
  70. package/dist/contracts/shared/index.mjs +1 -1
  71. package/dist/contracts/skill/index.d.mts +1 -1
  72. package/dist/contracts/skill/index.mjs +1 -1
  73. package/dist/contracts/telemetry/index.d.mts +1 -1
  74. package/dist/contracts/telemetry/index.mjs +1 -1
  75. package/dist/contracts/timeout/index.d.mts +1 -1
  76. package/dist/contracts/timeout/index.mjs +1 -1
  77. package/dist/contracts/toast/index.mjs +1 -1
  78. package/dist/contracts/variant/index.d.mts +1 -1
  79. package/dist/contracts/variant/index.mjs +1 -1
  80. package/dist/contracts/workflow/index.d.mts +2 -2
  81. package/dist/contracts/workflow/index.mjs +1 -1
  82. package/dist/{definition-s9PIua2B.d.mts → definition-Bj9Vr16H.d.mts} +1 -1
  83. package/dist/{definition-Cllhr9mi.d.mts → definition-BsTlOz99.d.mts} +36 -4
  84. package/dist/{definition-CuJvtYeG.d.mts → definition-Cbl0k6Fc.d.mts} +31 -1
  85. package/dist/definition-K3m51lgO.mjs +1 -0
  86. package/dist/definitions-C1pgx0Nq.mjs +1 -0
  87. package/dist/{detached-extension-handle-Cx6-0eqg.mjs → detached-extension-handle-CTaQoolf.mjs} +1 -1
  88. package/dist/execution-target-Bg2wpfML.mjs +1 -0
  89. package/dist/{extension-CJClssfp.mjs → extension-CjTu6mzW.mjs} +1 -1
  90. package/dist/extension-D4iKUUMG.mjs +1 -0
  91. package/dist/{filesystem-service-Bmyqo6po.mjs → filesystem-service-maY_P3yA.mjs} +1 -1
  92. package/dist/git/index.mjs +1 -1
  93. package/dist/{globby-D4SANVoq.mjs → globby-CisClzat.mjs} +1 -1
  94. package/dist/handlers-RGs3eC9X.mjs +57 -0
  95. package/dist/{harness-DkUpbsuY.mjs → harness-DflvHAGV.mjs} +1 -1
  96. package/dist/{index-C23g_M_J2.d.mts → index-5s_dN3cg2.d.mts} +18 -1
  97. package/dist/index-9dISOTLT.d.mts +174 -0
  98. package/dist/{index-B9d_8_V2.d.mts → index-9g0agW_p.d.mts} +55 -55
  99. package/dist/{index-DoEF9LAc.d.mts → index-BcejR1Jc.d.mts} +3 -3
  100. package/dist/index-BsEvzFey.d.mts +1175 -0
  101. package/dist/{index-ntS1EXlf.d.mts → index-BtL7ONuM.d.mts} +1 -1
  102. package/dist/index-BxuiHVFi.d.mts +284 -0
  103. package/dist/{index-PIlYSC73.d.mts → index-C9Q1E8Y-.d.mts} +66 -53
  104. package/dist/{index-CaerrEDH.d.mts → index-CB2XTzvd.d.mts} +3 -3
  105. package/dist/{index-Cx1Bm6WD.d.mts → index-CVs0Qxks.d.mts} +8 -8
  106. package/dist/{index-WHUV7neB.d.mts → index-CW6-0k3Z.d.mts} +105 -105
  107. package/dist/index-CagRgpXI2.d.mts +84 -0
  108. package/dist/{index-DZPNuWMc.d.mts → index-Cw3cjGAT.d.mts} +7 -7
  109. package/dist/{index-DnnKUwHm.d.mts → index-D5IEq4_E.d.mts} +36 -32
  110. package/dist/{index-h5go5Dtd.d.mts → index-D75FnT0B.d.mts} +1 -1
  111. package/dist/{index-O08Q2ikz.d.mts → index-DNc1yLQs.d.mts} +8 -8
  112. package/dist/{index-FFVwQMad.d.mts → index-DlUPWOh4.d.mts} +737 -97
  113. package/dist/{index-DScUb-hF.d.mts → index-Do7Wgio_2.d.mts} +35 -12
  114. package/dist/{index-C9FCWOhp.d.mts → index-DxatNFz7.d.mts} +124 -22
  115. package/dist/{index-BvTd61i5.d.mts → index-T96ydgVk.d.mts} +260 -160
  116. package/dist/{index-DLNRgZPo2.d.mts → index-j2YlW_Fc.d.mts} +1 -1
  117. package/dist/{index-BcvG3wPv.d.mts → index-p6dWV52m.d.mts} +513 -373
  118. package/dist/{index-B2DjrVb8.d.mts → index-sCOlgPyj.d.mts} +1589 -482
  119. package/dist/kernel/cli/index.d.mts +2 -2
  120. package/dist/kernel/cli/index.mjs +1 -1
  121. package/dist/kernel/cli/register.d.mts +1 -1
  122. package/dist/kernel/cli/register.mjs +1 -1
  123. package/dist/kernel/cli/schemas.mjs +1 -1
  124. package/dist/kernel/extension/index.d.mts +1 -1
  125. package/dist/kernel/extension/index.mjs +1 -1
  126. package/dist/kernel/index.d.mts +5 -5
  127. package/dist/kernel/index.mjs +1 -1
  128. package/dist/kernel/namespace/index.d.mts +1 -1
  129. package/dist/kernel/namespace/index.mjs +1 -1
  130. package/dist/kernel/observability/index.d.mts +1 -1
  131. package/dist/kernel/observability/index.mjs +1 -1
  132. package/dist/kernel/providers/index.d.mts +1 -1
  133. package/dist/kernel/providers/index.mjs +1 -1
  134. package/dist/kernel/window/index.d.mts +1 -1
  135. package/dist/kernel/window/index.mjs +1 -1
  136. package/dist/{lib-BOmKyjWD.mjs → lib-DIVnpS8e.mjs} +1 -1
  137. package/dist/{lib-DLZYp5z3.mjs → lib-DymjnkAP.mjs} +1 -1
  138. package/dist/{load-extensions-Cze1RHcG.mjs → load-extensions-BtUrq2_t.mjs} +1 -1
  139. package/dist/{load-extensions-DNRIy4zC.d.mts → load-extensions-_EnedkUp.d.mts} +1 -1
  140. package/dist/{loop-gate-handlers-o2B5FPdF.mjs → loop-gate-handlers-0a3dIY8O.mjs} +1 -1
  141. package/dist/mcp-http-server/index.mjs +1 -1
  142. package/dist/model-uE5IyUFJ.mjs +1 -0
  143. package/dist/namespace-C05pkLbN.mjs +1 -0
  144. package/dist/{namespace-D8P8Sxce2.d.mts → namespace-CGgOLxiW2.d.mts} +2 -2
  145. package/dist/{namespace-BGIeqwfU.d.mts → namespace-CQBSXm1U.d.mts} +20 -20
  146. package/dist/{namespace-CfvtDD_U.d.mts → namespace-CfgtqUWS.d.mts} +156 -156
  147. package/dist/{namespace-D9PLFmPQ.d.mts → namespace-CpyL93kW.d.mts} +27 -27
  148. package/dist/{namespace-CZK2ff3B.d.mts → namespace-D3SQQgxa2.d.mts} +1 -1
  149. package/dist/namespace-D7pE2QWv.mjs +1 -0
  150. package/dist/{namespace-dFBD2ZmS.mjs → namespace-DwQtzlY-.mjs} +1 -1
  151. package/dist/namespace-HsI0Jbbr.mjs +1 -0
  152. package/dist/namespace-VmsT_tLJ.d.mts +3729 -0
  153. package/dist/namespace-Xp9-g_r-.mjs +1 -0
  154. package/dist/{native-session-supervisor-7ElwM6Is.mjs → native-session-supervisor-CdtVGWA9.mjs} +1 -1
  155. package/dist/node/bus-server/index.d.mts +1 -1
  156. package/dist/node/bus-server/index.mjs +1 -1
  157. package/dist/node/bus-server/server-lifecycle.d.mts +1 -1
  158. package/dist/node/bus-server/server-lifecycle.mjs +1 -1
  159. package/dist/node/transports/index.d.mts +36 -1
  160. package/dist/node/transports/index.mjs +2 -2
  161. package/dist/{orchestrator-shared-ChygCvR1.mjs → orchestrator-shared-DAkGOu9H.mjs} +1 -1
  162. package/dist/{orchestrator-shared-DFLb1otg.d.mts → orchestrator-shared-pxtyNu3W.d.mts} +13 -6
  163. package/dist/{package-Co_GO3UD.mjs → package-0gVhAVkO.mjs} +1 -1
  164. package/dist/package-BwvGaKwn.mjs +1 -0
  165. package/dist/package.json +1 -1
  166. package/dist/{profile-BMBXUqqh.mjs → profile-D2m94ZYD.mjs} +1 -1
  167. package/dist/provider-context-BYkMl--1.mjs +1 -0
  168. package/dist/provider-context-DOsjOjiR.mjs +1 -0
  169. package/dist/{providers-namespace-5GoTlHXz.d.mts → providers-namespace-O4de1tgO.d.mts} +161 -14
  170. package/dist/resolved-O2XXjTeu.mjs +1 -0
  171. package/dist/rules/index.d.mts +1 -1
  172. package/dist/rules/index.mjs +1 -1
  173. package/dist/rules/schemas.d.mts +1 -1
  174. package/dist/runtime-bun/index.mjs +1 -1
  175. package/dist/runtime-node/client-binary-strategy-dependencies.d.mts +34 -0
  176. package/dist/runtime-node/client-binary-strategy-dependencies.mjs +1 -0
  177. package/dist/runtime-node/extension-discovery.d.mts +1 -1
  178. package/dist/runtime-node/extension-validation.d.mts +1 -1
  179. package/dist/runtime-node/extension-validation.mjs +1 -1
  180. package/dist/runtime-node/index.d.mts +32 -6
  181. package/dist/runtime-node/index.mjs +24 -24
  182. package/dist/runtime-node/makaio-config.d.mts +1 -1
  183. package/dist/runtime-node/makaio-config.mjs +1 -1
  184. package/dist/runtime-node/workflow-worker/index.d.mts +1 -1
  185. package/dist/runtime-node/workflow-worker/index.mjs +1 -1
  186. package/dist/runtime-node/workflow-worker/worker-entry.mjs +1 -1
  187. package/dist/{schema-7aKBGB7S.mjs → schema-BI0aCHvV.mjs} +1 -1
  188. package/dist/{schema-B5vHi7Uu.d.mts → schema-BnTOFCdU.d.mts} +1 -1
  189. package/dist/{schemas-Br-rSxPE2.d.mts → schemas--uwN5dfK2.d.mts} +11 -11
  190. package/dist/schemas-C-J4W1ID.mjs +1 -0
  191. package/dist/{schemas-CoFCV42v.d.mts → schemas-C17AifUQ.d.mts} +156 -156
  192. package/dist/schemas-D6lj9NMg.mjs +1 -0
  193. package/dist/schemas-K3Td_WdR.d.mts +3175 -0
  194. package/dist/schemas-n9Ff6_RX.mjs +1 -0
  195. package/dist/selection-YRuVSdck.mjs +1 -0
  196. package/dist/services/adapter-runtime/index.d.mts +3 -3
  197. package/dist/services/adapter-runtime/index.mjs +1 -1
  198. package/dist/services/adapter-runtime/namespace.d.mts +1 -1
  199. package/dist/services/adapter-runtime/schemas.d.mts +1 -1
  200. package/dist/services/adapter-subsystem/index.d.mts +4 -3
  201. package/dist/services/adapter-subsystem/index.mjs +1 -1
  202. package/dist/services/adapter-subsystem/namespace.d.mts +1 -1
  203. package/dist/services/adapter-subsystem/namespace.mjs +1 -1
  204. package/dist/services/agent-runtime/index.d.mts +2 -2
  205. package/dist/services/agent-runtime/namespace.d.mts +1 -1
  206. package/dist/services/agent-runtime/schemas.d.mts +1 -1
  207. package/dist/services/capability/index.d.mts +1 -1
  208. package/dist/services/capability/index.mjs +1 -1
  209. package/dist/services/codebase/index.d.mts +2 -2
  210. package/dist/services/codebase/namespace.d.mts +1 -1
  211. package/dist/services/codebase/schemas.d.mts +1 -1
  212. package/dist/services/compression/index.d.mts +2 -2
  213. package/dist/services/compression/namespace.d.mts +1 -1
  214. package/dist/services/compression/schemas.d.mts +1 -1
  215. package/dist/services/context-rules/index.d.mts +1 -1
  216. package/dist/services/context-rules/index.mjs +1 -1
  217. package/dist/services/definition/namespace.d.mts +1 -19
  218. package/dist/services/definition/schemas.d.mts +0 -9
  219. package/dist/services/definition/schemas.mjs +1 -1
  220. package/dist/services/execution-target/index.d.mts +4 -4
  221. package/dist/services/execution-target/index.mjs +1 -1
  222. package/dist/services/execution-target/namespace.d.mts +1 -1
  223. package/dist/services/execution-target/namespace.mjs +1 -1
  224. package/dist/services/execution-target/schemas.d.mts +1 -1
  225. package/dist/services/execution-target/schemas.mjs +1 -1
  226. package/dist/services/filesystem/index.d.mts +1 -1
  227. package/dist/services/filesystem/index.mjs +1 -1
  228. package/dist/services/filesystem/namespace.d.mts +6 -6
  229. package/dist/services/filesystem/schemas.d.mts +3 -3
  230. package/dist/services/git/namespace.mjs +1 -1
  231. package/dist/services/git/schemas.mjs +1 -1
  232. package/dist/services/harness/index.d.mts +6 -6
  233. package/dist/services/harness/index.mjs +1 -1
  234. package/dist/services/index.d.mts +1671 -253
  235. package/dist/services/index.mjs +1 -1
  236. package/dist/services/log-import/browser.d.mts +2 -2
  237. package/dist/services/log-import/index.d.mts +2 -2
  238. package/dist/services/log-import/log-import.d.mts +1 -1
  239. package/dist/services/log-import/log-import.mjs +1 -1
  240. package/dist/services/log-import/namespace.mjs +1 -1
  241. package/dist/services/log-import/schemas.mjs +1 -1
  242. package/dist/services/model-registry/index.d.mts +1 -1
  243. package/dist/services/model-registry/index.mjs +1 -1
  244. package/dist/services/preferences/index.d.mts +2 -2
  245. package/dist/services/preferences/schemas.d.mts +1 -1
  246. package/dist/services/preferences/storage-namespace.d.mts +2 -2
  247. package/dist/services/provider-context/index.d.mts +2 -2
  248. package/dist/services/provider-context/index.mjs +1 -1
  249. package/dist/services/provider-runtime/index.d.mts +18 -0
  250. package/dist/services/provider-runtime/index.mjs +1 -1
  251. package/dist/services/session/handlers/index.d.mts +1 -1
  252. package/dist/services/session/handlers/index.mjs +1 -1
  253. package/dist/services/session/index.d.mts +10 -10
  254. package/dist/services/session/index.mjs +1 -1
  255. package/dist/services/session/messages/namespace.d.mts +1 -1
  256. package/dist/services/session/messages/namespace.mjs +1 -1
  257. package/dist/services/session/orchestrator-testing/index.d.mts +1 -1
  258. package/dist/services/session/orchestrator-testing/index.mjs +1 -1
  259. package/dist/services/session/session-events/namespace.d.mts +1 -1
  260. package/dist/services/session/session-events/namespace.mjs +1 -1
  261. package/dist/services/session/storage/namespace.d.mts +1 -1
  262. package/dist/services/session/storage/schema.d.mts +1 -1
  263. package/dist/services/session/testing/index.d.mts +2 -2
  264. package/dist/services/session/testing/index.mjs +10 -10
  265. package/dist/services/session/testing/orchestrator-shared.d.mts +1 -1
  266. package/dist/services/session/testing/orchestrator-shared.mjs +1 -1
  267. package/dist/services/session/turns/namespace.d.mts +1 -1
  268. package/dist/services/session/turns/namespace.mjs +1 -1
  269. package/dist/services/session-editor/index.d.mts +1 -1
  270. package/dist/services/session-editor/index.mjs +1 -1
  271. package/dist/services/settings/index.d.mts +3 -3
  272. package/dist/services/settings/index.mjs +1 -1
  273. package/dist/services/settings/namespace.d.mts +18 -25
  274. package/dist/services/settings/namespace.mjs +1 -1
  275. package/dist/services/settings/storage/clients-namespace.d.mts +1 -1
  276. package/dist/services/settings/storage/clients-namespace.mjs +1 -1
  277. package/dist/services/settings/storage/index.d.mts +3 -3
  278. package/dist/services/settings/storage/index.mjs +1 -1
  279. package/dist/services/settings/storage/providers-namespace.d.mts +1 -1
  280. package/dist/services/settings/storage/providers-namespace.mjs +1 -1
  281. package/dist/services/subagent/index.d.mts +2 -2
  282. package/dist/services/subagent/index.mjs +1 -1
  283. package/dist/services/subagent-template/index.d.mts +2 -2
  284. package/dist/services/subagent-template/namespace.d.mts +1 -1
  285. package/dist/services/subagent-template/schemas.d.mts +1 -1
  286. package/dist/services/tool-approval/index.d.mts +1 -1
  287. package/dist/services/tool-approval/index.mjs +1 -1
  288. package/dist/services/tools/index.d.mts +1 -1
  289. package/dist/services/tools/index.mjs +1 -1
  290. package/dist/services/tray-menu/index.d.mts +3 -3
  291. package/dist/services/tray-menu/index.mjs +1 -1
  292. package/dist/services/tray-menu/namespace.d.mts +1 -1
  293. package/dist/services/tray-menu/schemas.d.mts +1 -1
  294. package/dist/services/turn/index.d.mts +1 -1
  295. package/dist/services/turn/namespace.d.mts +1 -1
  296. package/dist/session-CAjudDuJ.mjs +76 -0
  297. package/dist/{session-DBfQkgdy.mjs → session-lRd8HZNZ.mjs} +1 -1
  298. package/dist/{session-lineage-C1M7-O3C.d.mts → session-lineage-BLw8iWAj.d.mts} +1 -1
  299. package/dist/{shared-BVW-3Dhy.mjs → shared-RP_KARKF.mjs} +1 -1
  300. package/dist/{skill-N-ttlp1i.mjs → skill-CpNjWFuE.mjs} +1 -1
  301. package/dist/{src-Ck2sbaDa.mjs → src-Bo2eA51B.mjs} +1 -1
  302. package/dist/storage/drizzle/client.d.mts +1 -1
  303. package/dist/storage/drizzle/client.mjs +1 -1
  304. package/dist/storage/drizzle/index.d.mts +1 -1
  305. package/dist/storage/drizzle/index.mjs +1 -1
  306. package/dist/storage/handlers/drizzle/index.d.mts +1 -1
  307. package/dist/storage/handlers/drizzle/index.mjs +1 -1
  308. package/dist/storage/handlers/index.d.mts +1 -1
  309. package/dist/storage/handlers/index.mjs +1 -1
  310. package/dist/{tool-approval-service-DEiMKTv9.mjs → tool-approval-service-Dh0XI21f.mjs} +1 -1
  311. package/dist/tools-C8vqn1KY.mjs +1 -0
  312. package/dist/{transition-OzGXyy3p.d.mts → transition-Bfe8VVc1.d.mts} +2 -2
  313. package/dist/{types-BWduCvRU.d.mts → types-B-xY9WW2.d.mts} +1 -1
  314. package/dist/{types-BrUOVfwe.d.mts → types-DvKaEOOn.d.mts} +252 -19
  315. package/dist/{types-CBLPaQXe.d.mts → types-q95p55BF.d.mts} +437 -287
  316. package/dist/ui-hooks/index.d.mts +103 -14
  317. package/dist/ui-hooks/index.mjs +1 -1
  318. package/dist/ui-kernel/index.d.mts +3 -3
  319. package/dist/ui-kernel/pages/schemas.d.mts +1 -1
  320. package/dist/utils/keychain.mjs +1 -1
  321. package/dist/{version-DoV_pSzT.mjs → version-C1-VD-XL.mjs} +1 -1
  322. package/dist/workflow-CvVAZ89A.mjs +1 -0
  323. package/dist/workflow-engine/index.d.mts +33 -33
  324. package/dist/workflow-engine/index.mjs +1 -1
  325. package/dist/workflow-engine/package.d.mts +1 -1
  326. package/dist/workflow-engine/package.mjs +1 -1
  327. package/dist/workflow-engine/workflow-orchestrator.mjs +1 -1
  328. package/dist/{workflow-worker-dH70EbjE.mjs → workflow-worker-CudfEstp.mjs} +1 -1
  329. package/package.json +5 -1
  330. package/dist/account-identity-C7Kx_ieU.mjs +0 -1
  331. package/dist/cleanEnvForAdapter-BooAgM2R.mjs +0 -1
  332. package/dist/client-DaR4mzqn.mjs +0 -1
  333. package/dist/compression-C5JAWdgZ.mjs +0 -1
  334. package/dist/config-namespace-CY9leBnE.mjs +0 -1
  335. package/dist/credential-ref-YWQQENEo.mjs +0 -1
  336. package/dist/definition-C-GVz7uw.mjs +0 -1
  337. package/dist/execution-target-BR8bLkCR.mjs +0 -1
  338. package/dist/extension-BS_4BOeO.mjs +0 -1
  339. package/dist/handlers-B74FvKlA.mjs +0 -57
  340. package/dist/index-BcwOnvUh.d.mts +0 -749
  341. package/dist/index-D6aAzr32.d.mts +0 -997
  342. package/dist/index-DtwGhFFQ.d.mts +0 -40
  343. package/dist/namespace-B4cV_pk3.d.mts +0 -1317
  344. package/dist/namespace-BO3tODGC.mjs +0 -1
  345. package/dist/namespace-CVMZVqB5.mjs +0 -1
  346. package/dist/namespace-DBHwyhME.mjs +0 -1
  347. package/dist/namespace-DibbhCPP.mjs +0 -1
  348. package/dist/package-CF_Zm2v4.mjs +0 -1
  349. package/dist/provider-context-CqMgPOWF.mjs +0 -1
  350. package/dist/provider-context-DC_eq7es.mjs +0 -1
  351. package/dist/schemas-CVo8qAK-.mjs +0 -1
  352. package/dist/schemas-CuG17U3L.mjs +0 -1
  353. package/dist/session-CX6QDhi2.mjs +0 -76
  354. package/dist/tools-CGFZkB7F.mjs +0 -1
  355. package/dist/workflow-C3dgVwTY.mjs +0 -1
  356. /package/dist/{ajv-B5dPIck0.mjs → ajv-DfHhgdS5.mjs} +0 -0
  357. /package/dist/{await-trigger-DwVldnMt.mjs → await-trigger-D623tvig.mjs} +0 -0
  358. /package/dist/{capability-service-XlymTzz1.mjs → capability-service-Dg2bU8qc.mjs} +0 -0
  359. /package/dist/{client-CebV_fZc.d.mts → client-DmJwprw1.d.mts} +0 -0
  360. /package/dist/{create-static-mount-DkK28kKW.mjs → create-static-mount-CBTXRtbN.mjs} +0 -0
  361. /package/dist/{cross-spawn-CDXy3BjE.mjs → cross-spawn-D9WWFl2a.mjs} +0 -0
  362. /package/dist/{cursor-storage-luQAg7E_.mjs → cursor-storage-Bw-7ROzx.mjs} +0 -0
  363. /package/dist/{descriptor-to-package-DdpjpT7n.mjs → descriptor-to-package-D5SWf6TL.mjs} +0 -0
  364. /package/dist/{drizzle-DVTAl7Us.mjs → drizzle-DYfaDzlO.mjs} +0 -0
  365. /package/dist/{esm-CQG9Pc7n.mjs → esm-oHhRYTEn.mjs} +0 -0
  366. /package/dist/{event-DguYjV6D.mjs → event-DTM0-qWP.mjs} +0 -0
  367. /package/dist/{extension-discovery-CIZn5bkq.d.mts → extension-discovery-APMf1Tes.d.mts} +0 -0
  368. /package/dist/{extension-namespace-v3K0qVry.mjs → extension-namespace-vrh4ERXR.mjs} +0 -0
  369. /package/dist/{facet-BM4y4aQP.mjs → facet-DqPBpqkl.mjs} +0 -0
  370. /package/dist/{filesystem-service-Cwp0sWNc.d.mts → filesystem-service-Bx0bR2Lb.d.mts} +0 -0
  371. /package/dist/{handler-BFNvtv5t.mjs → handler-4pKQi3eo.mjs} +0 -0
  372. /package/dist/{host-vY07gek-.mjs → host-BfgdjlII.mjs} +0 -0
  373. /package/dist/{identity-DC3Pk0ps.mjs → identity-2qUT1NME.mjs} +0 -0
  374. /package/dist/{index-COI1tjAf.d.mts → index-BZ_DSGnE.d.mts} +0 -0
  375. /package/dist/{index-D7rWAEY0.d.mts → index-Bd52mmj9.d.mts} +0 -0
  376. /package/dist/{index-Dfi8Rorw.d.mts → index-BkAKfh4d.d.mts} +0 -0
  377. /package/dist/{index-CuHqL95P.d.mts → index-Bv9lm0Kf.d.mts} +0 -0
  378. /package/dist/{index-C4nStEdA.d.mts → index-C18Pn3zP.d.mts} +0 -0
  379. /package/dist/{index-Cr9lh21j.d.mts → index-CarbJsC92.d.mts} +0 -0
  380. /package/dist/{index-BjoOSg95.d.mts → index-Ctw617Tj.d.mts} +0 -0
  381. /package/dist/{index-DUD7wikz2.d.mts → index-D0eUQjTU2.d.mts} +0 -0
  382. /package/dist/{index-DEzdNQum.d.mts → index-DfVSWBBp.d.mts} +0 -0
  383. /package/dist/{index-D3ahzHwb.d.mts → index-DnWZdG6C.d.mts} +0 -0
  384. /package/dist/{index-CpKikwK4.d.mts → index-DoLdETfR.d.mts} +0 -0
  385. /package/dist/{index-B92mToDo2.d.mts → index-DvaPrL6C.d.mts} +0 -0
  386. /package/dist/{index-D7Hkmrr3.d.mts → index-DwDBa2mb.d.mts} +0 -0
  387. /package/dist/{index-Y8rMeYYX.d.mts → index-FDyqQIt5.d.mts} +0 -0
  388. /package/dist/{index-BWIkf5oJ.d.mts → index-Lp0T_V1W.d.mts} +0 -0
  389. /package/dist/{index-OGIC4puQ.d.mts → index-Rhcr4YNA.d.mts} +0 -0
  390. /package/dist/{index-BvLXySoB2.d.mts → index-S-mAqWwq.d.mts} +0 -0
  391. /package/dist/{index-DOOrKin9.d.mts → index-_zsihEmk.d.mts} +0 -0
  392. /package/dist/{index-wq7XeqyG.d.mts → index-iJP-l15K.d.mts} +0 -0
  393. /package/dist/{json-value-DtIkQN7g.d.mts → json-value-C8duSh9X.d.mts} +0 -0
  394. /package/dist/{jsonl-transport-CGPgD8iU.mjs → jsonl-transport-l5NPcQ_2.mjs} +0 -0
  395. /package/dist/{lib-ZKtnbCqH.mjs → lib-ClRTNIuz.mjs} +0 -0
  396. /package/dist/{materialization-CUYxZCfk.mjs → materialization-BwTORtBr.mjs} +0 -0
  397. /package/dist/{model-registry-C2VXobZj.mjs → model-registry-BneK5SGo.mjs} +0 -0
  398. /package/dist/{model-registry-rYICIwyR.mjs → model-registry-C8MInDtX.mjs} +0 -0
  399. /package/dist/{namespace-65uwTpbg.d.mts → namespace-3YVLQ_bM.d.mts} +0 -0
  400. /package/dist/{namespace-CQ8uza7o.d.mts → namespace-BcDHt-ww.d.mts} +0 -0
  401. /package/dist/{namespace-BigVYQyx.d.mts → namespace-BhVlHfoO.d.mts} +0 -0
  402. /package/dist/{namespace-j7vFsmYL.d.mts → namespace-Bl1UhLnK.d.mts} +0 -0
  403. /package/dist/{namespace-Dk4OslmY.d.mts → namespace-BsEoWXV_.d.mts} +0 -0
  404. /package/dist/{namespace-DYSFDC2G.mjs → namespace-C238RqwB.mjs} +0 -0
  405. /package/dist/{namespace-BdO4e1Fm.mjs → namespace-CDO4rY11.mjs} +0 -0
  406. /package/dist/{namespace-wke7juzy.mjs → namespace-DDx4NVJm.mjs} +0 -0
  407. /package/dist/{namespace-D1_9WVCo.d.mts → namespace-Dar3O6iT.d.mts} +0 -0
  408. /package/dist/{namespace-DAj_riOn.d.mts → namespace-DoNigVgx.d.mts} +0 -0
  409. /package/dist/{namespace-D2s-4pyg.d.mts → namespace-Dvi66QS6.d.mts} +0 -0
  410. /package/dist/{out-BoEZjBNz.mjs → out-BB6Kb4Xu.mjs} +0 -0
  411. /package/dist/{package-DmVZxufT.d.mts → package-CdBiknf3.d.mts} +0 -0
  412. /package/dist/{platform-DnbSvm2u.mjs → platform-CWhGFQFX.mjs} +0 -0
  413. /package/dist/{providers-Bd7BOZs0.mjs → providers-CUnrif24.mjs} +0 -0
  414. /package/dist/{quick-lru-6e7I1Bgf.mjs → quick-lru-BLaSzINB.mjs} +0 -0
  415. /package/dist/{registry-U_3aYSin.mjs → registry-TJjQgTgp.mjs} +0 -0
  416. /package/dist/{schema-CHp6I33k.mjs → schema-cus0dJ81.mjs} +0 -0
  417. /package/dist/{schema-introspection-B7xODt4I.mjs → schema-introspection-BsWLmoFp.mjs} +0 -0
  418. /package/dist/{schemas-KlH1hB7u.d.mts → schemas-9QJf1FtS.d.mts} +0 -0
  419. /package/dist/{schemas-CJ2JvA7d.d.mts → schemas-BolSW7pQ.d.mts} +0 -0
  420. /package/dist/{schemas-D4zaFE2p.d.mts → schemas-CLsbsX1W.d.mts} +0 -0
  421. /package/dist/{schemas-XeIBqwvE.mjs → schemas-CMyv7l7-.mjs} +0 -0
  422. /package/dist/{schemas-CPI00yvh.mjs → schemas-CWxf_Yut.mjs} +0 -0
  423. /package/dist/{schemas-BemsLc_V.d.mts → schemas-D_9X_CRo.d.mts} +0 -0
  424. /package/dist/{schemas-DZGnr9Tl.mjs → schemas-DwfTUQIa.mjs} +0 -0
  425. /package/dist/{schemas-B6tEKf9T.d.mts → schemas-XRhqOgVE.d.mts} +0 -0
  426. /package/dist/{schemas-DKncXGnb.d.mts → schemas-fRLDhefF.d.mts} +0 -0
  427. /package/dist/{schemas-DWfo0wp4.d.mts → schemas-jDRSOXJL.d.mts} +0 -0
  428. /package/dist/{schemas-lnE9YoG7.d.mts → schemas-qpo1Goit.d.mts} +0 -0
  429. /package/dist/{schemas-t6h9oSct.d.mts → schemas-qt5QTjVc.d.mts} +0 -0
  430. /package/dist/{semver-CIhHqMkw.mjs → semver-BccS1s9R.mjs} +0 -0
  431. /package/dist/{server-lifecycle-C5Z5PSMD.mjs → server-lifecycle-D-jxVr_0.mjs} +0 -0
  432. /package/dist/{server-lifecycle-_AA6EfzL.d.mts → server-lifecycle-r5Tkk8bU.d.mts} +0 -0
  433. /package/dist/{shared-schemas-BEVG96xW.mjs → shared-schemas-BNCPgGYP.mjs} +0 -0
  434. /package/dist/{src-_VODAJnf.mjs → src-Ci_WY9uw.mjs} +0 -0
  435. /package/dist/{storage-namespace-D5q9CrBp.mjs → storage-namespace-BzE2M4Hq.mjs} +0 -0
  436. /package/dist/{storage-namespace-Di1A3DMm.d.mts → storage-namespace-DWKFqEW-.d.mts} +0 -0
  437. /package/dist/{storage-namespace-definition-CzXPW45M.mjs → storage-namespace-definition-4UYuij1r.mjs} +0 -0
  438. /package/dist/{storage-namespace-definition-BffdI5Bz.d.mts → storage-namespace-definition-BZJGSaX3.d.mts} +0 -0
  439. /package/dist/{supports-color-DcXkvGDF.mjs → supports-color-Dzp6WuF5.mjs} +0 -0
  440. /package/dist/{telemetry-Cvi4rxiE.mjs → telemetry-B42EMbZt.mjs} +0 -0
  441. /package/dist/{timeout-XsYIOKrc.mjs → timeout-CvONPl0l.mjs} +0 -0
  442. /package/dist/{tray-menu-service-B2AxiQqL.mjs → tray-menu-service-Bonl2KXf.mjs} +0 -0
  443. /package/dist/{types-Bo78h9e3.d.mts → types-BCW9kr4L.d.mts} +0 -0
  444. /package/dist/{types-DCvp_swt.d.mts → types-CrJ7KEZ0.d.mts} +0 -0
  445. /package/dist/{types-BNW5n6qm.d.mts → types-DWNoZ3Sd.d.mts} +0 -0
  446. /package/dist/{ui-config-9bDRwFZr.mjs → ui-config-B2L3Xgqo.mjs} +0 -0
  447. /package/dist/{variant-5huHjUTm.mjs → variant-ByI-RZua.mjs} +0 -0
  448. /package/dist/{window-registry-PkrFIwX2.mjs → window-registry-DsWnCc8z.mjs} +0 -0
  449. /package/dist/{window-registry-ofIUQnfo.d.mts → window-registry-WsWu-rcK.d.mts} +0 -0
@@ -303,7 +303,37 @@ declare const ClientDefinitionSchema: z.ZodObject<{
303
303
  description: z.ZodOptional<z.ZodString>;
304
304
  glob: z.ZodOptional<z.ZodString>;
305
305
  }, z.core.$strip>>>;
306
- defaultProviderId: z.ZodOptional<z.ZodString>;
306
+ authMethods: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
307
+ id: z.ZodString;
308
+ mode: z.ZodLiteral<"explicit">;
309
+ label: z.ZodString;
310
+ description: z.ZodOptional<z.ZodString>;
311
+ fields: z.ZodArray<z.ZodObject<{
312
+ id: z.ZodString;
313
+ label: z.ZodString;
314
+ description: z.ZodOptional<z.ZodString>;
315
+ required: z.ZodBoolean;
316
+ secret: z.ZodBoolean;
317
+ sourceHints: z.ZodArray<z.ZodObject<{
318
+ kind: z.ZodLiteral<"environment">;
319
+ variable: z.ZodString;
320
+ }, z.core.$strict>>;
321
+ }, z.core.$strict>>;
322
+ }, z.core.$strict>, z.ZodObject<{
323
+ id: z.ZodString;
324
+ mode: z.ZodLiteral<"inferred">;
325
+ label: z.ZodString;
326
+ description: z.ZodOptional<z.ZodString>;
327
+ }, z.core.$strict>, z.ZodObject<{
328
+ id: z.ZodString;
329
+ mode: z.ZodLiteral<"none">;
330
+ label: z.ZodString;
331
+ description: z.ZodOptional<z.ZodString>;
332
+ }, z.core.$strict>], "mode">>;
333
+ defaultAuth: z.ZodOptional<z.ZodObject<{
334
+ providerDefinitionId: z.ZodString;
335
+ methodId: z.ZodString;
336
+ }, z.core.$strict>>;
307
337
  runtimeCapabilities: z.ZodPipe<z.ZodOptional<z.ZodObject<{
308
338
  supportsHooks: z.ZodDefault<z.ZodBoolean>;
309
339
  supportsStatusline: z.ZodDefault<z.ZodBoolean>;
@@ -0,0 +1 @@
1
+ import{t as e}from"./json-value-DmU8ibo_.mjs";import{i as t,t as n}from"./visibility-Cb62p9bv.mjs";import{f as r}from"./definitions-C1pgx0Nq.mjs";import{z as i}from"zod";const a=i.enum([`anthropic`,`openai`]),o=i.object({anthropic:i.string().url(),openai:i.string().url()}).partial().refine(e=>Object.keys(e).length>0,{message:`At least one protocol endpoint must be specified`}),s=e,c=i.object({id:i.string().min(1),name:i.string().min(1),description:i.string().optional(),endpoints:o.optional(),defaultModel:i.string().optional(),fastModel:i.string().optional(),primaryTestModel:i.string().optional(),secondaryTestModel:i.string().optional(),availableModels:i.array(t).default([]),defaultModelFilterMode:n.optional(),authMethods:r,capabilities:s.optional()}).strict();export{c as i,a as n,s as r,o as t};
@@ -0,0 +1 @@
1
+ import{z as e}from"zod";const t=new Set([`__proto__`,`constructor`,`prototype`]),n=e.string().trim().regex(/^[A-Za-z_][A-Za-z0-9_-]*$/,{message:`Expected a portable authentication field identifier.`}).refine(e=>!t.has(e),{message:`Authentication field identifiers must not use reserved object property names.`}),r=e.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/,{message:`Expected a valid environment variable name (letters, digits, and underscores).`}),i=e.object({kind:e.literal(`environment`),variable:r}).strict(),a=e.object({id:n,label:e.string().trim().min(1),description:e.string().trim().min(1).optional(),required:e.boolean(),secret:e.boolean(),sourceHints:e.array(i)}).strict();function o(t,n,r){let i=new Set;for(let[a,o]of t.entries())i.has(o.id)?n.addIssue({code:e.ZodIssueCode.custom,message:`Duplicate ${r} ID "${o.id}".`,path:[a,`id`]}):i.add(o.id)}const s=e.array(a).superRefine((t,n)=>{o(t,n,`credential field`),t.some(e=>e.required)||n.addIssue({code:e.ZodIssueCode.custom,message:`An explicit auth method must declare at least one required credential field.`})}),c=e.object({id:e.string().trim().min(1),mode:e.literal(`explicit`),label:e.string().trim().min(1),description:e.string().trim().min(1).optional(),fields:s}).strict(),l=e.object({id:e.string().trim().min(1),mode:e.literal(`inferred`),label:e.string().trim().min(1),description:e.string().trim().min(1).optional()}).strict(),u=e.object({id:e.string().trim().min(1),mode:e.literal(`none`),label:e.string().trim().min(1),description:e.string().trim().min(1).optional()}).strict(),d=e.discriminatedUnion(`mode`,[c,u]),f=e.discriminatedUnion(`mode`,[c,l,u]),p=e.array(d).superRefine((e,t)=>o(e,t,`auth method`)),m=e.array(f).superRefine((e,t)=>o(e,t,`auth method`)),h=e.object({providerDefinitionId:e.string().trim().min(1),methodId:e.string().trim().min(1)}).strict();export{f as a,c,d,p as f,n as i,l,i as n,m as o,r,h as s,a as t,u};
@@ -1 +1 @@
1
- import{t as e}from"./descriptor-to-package-DdpjpT7n.mjs";import{t}from"./jsonl-transport-CGPgD8iU.mjs";import{z as n}from"zod";import{createBusNamespace as r}from"@makaio/framework/core";const i={idle:[`starting`],starting:[`running`,`crashed`,`stopping`],running:[`stopping`,`crashed`],stopping:[`stopped`],stopped:[`starting`],crashed:[`starting`,`stopped`]};function a(e,t){if(!i[e].includes(t))throw Error(`Invalid state transition: ${e} → ${t}`)}function o(e){return new Promise(t=>{if(e.exitCode!==null||e.signalCode!==null){t(!0);return}e.once(`exit`,()=>t(!0))})}function s(e){let{spawn:n,healthTimeoutMs:r=3e4,shutdownTimeoutMs:i=5e3,restartPolicy:s=`none`,onReady:c,onExit:l,onStateChange:u}=e,d=`idle`,f;function p(e){a(d,e),d=e,u?.(d)}function m(e){let t=f;if(f=void 0,t?.close(),d===`stopping`){p(`stopped`),l?.(e);return}if(d===`running`){if(e!==0){p(`crashed`),l?.(e),(s===`on-crash`||s===`always`)&&h().catch(e=>{console.error(`[ProcessLifecycle:${n.processName??n.command}] Restart failed:`,e instanceof Error?e.message:e)});return}p(`stopping`),p(`stopped`),l?.(e),s===`always`&&h().catch(e=>{console.error(`[ProcessLifecycle:${n.processName??n.command}] Restart failed:`,e instanceof Error?e.message:e)})}}async function h(){p(`starting`);let e=t(n);f=e;let i=e.process;await new Promise((t,a)=>{let o=!1;function s(e){o||(o=!0,clearTimeout(u),d(),i.off(`exit`,h),e())}let u=setTimeout(()=>{s(()=>{e.close(),f=void 0;try{p(`crashed`)}catch{}a(Error(`Process health timeout after ${r}ms: ${n.processName??n.command}`))})},r),d=e.onMessage(()=>{s(()=>{try{p(`running`)}catch(e){a(e);return}c?.(),i.once(`exit`,m),t()})});function h(e){s(()=>{f=void 0;try{p(`crashed`)}catch{}l?.(e),a(Error(`Process exited with code ${String(e)} before signaling readiness`))})}i.once(`exit`,h)})}async function g(){if(d===`stopped`||d===`idle`)return;if(d===`crashed`){f?.close(),f=void 0,p(`stopped`);return}if(d!==`stopping`&&p(`stopping`),!f){d===`stopping`&&p(`stopped`);return}let e=f,t=e.process;if(t.exitCode!==null){e.close(),f===e&&(f=void 0),d===`stopping`&&p(`stopped`);return}t.kill(`SIGTERM`);let n;await Promise.race([o(t).then(()=>(clearTimeout(n),!0)),new Promise(e=>{n=setTimeout(()=>e(!1),i)})])||(t.kill(`SIGKILL`),await o(t)),d===`stopping`&&p(`stopped`),e.close(),f===e&&(f=void 0)}return{get transport(){return f},get state(){return d},start:h,stop:g}}const c=n.object({dataDir:n.string().optional(),machineId:n.string().optional(),makaioHome:n.string().optional(),platform:n.string().optional(),username:n.string().optional()}),l={init:{request:n.object({config:n.unknown().optional(),context:c.optional()}),response:n.object({ready:n.boolean()})},ready:n.object({ready:n.boolean(),config:n.unknown().optional(),context:c.optional()}).passthrough(),destroy:{request:n.object({reason:n.string().optional()}),response:n.object({stopped:n.boolean()})},stopped:n.object({stopped:n.boolean()}).passthrough()};function u(e,t){return e.bus.registerNamespace(r(`extension.${t}`,l)).subjects}function d(e,t){let n;return()=>(n??=u(e,t),n)}function f(e){return{dataDir:e.dataDir,machineId:e.machineId,makaioHome:e.makaioHome,platform:e.platform,username:e.username}}var p=class{descriptor;ctx;extensionPath;getLifecycleSubjects;transport=null;unregister=null;constructor(e,t,n){this.descriptor=e,this.ctx=t,this.extensionPath=n,this.getLifecycleSubjects=d(t,e.name)}async init(){let{StdioServerTransport:e}=await import(`./src-Ck2sbaDa.mjs`),{transport:t}=this.descriptor,n=this.getLifecycleSubjects(),r=new e({name:this.descriptor.name,spawn:{command:t.command,args:t.args,cwd:this.extensionPath,env:t.env,processName:this.descriptor.name}}),i=null;try{let e=this.ctx.bus.registerTransport(r);i=e.unregister,await r.connect(),await r.ready,await e.ready,this.transport=r,this.unregister=i,await this.ctx.bus.request(n.init,{config:this.ctx.config??this.descriptor.config?.defaults,context:f(this.ctx)},{timeout:t.healthTimeoutMs})}catch(e){throw i?.(),await r.disconnect(),this.transport=null,this.unregister=null,e}}async destroy(){if(this.transport!==null){let e=this.getLifecycleSubjects();try{await this.ctx.bus.request(e.destroy,{reason:`runtime-shutdown`},{timeout:this.descriptor.transport.shutdownTimeoutMs})}catch(e){console.warn(`[extensions] ${this.descriptor.name}: detached destroy lifecycle request did not complete before disconnect:`,e instanceof Error?e.message:e)}}this.unregister?.(),this.unregister=null,await this.transport?.disconnect(),this.transport=null}},m=class{descriptor;ctx;extensionPath;getLifecycleSubjects;lifecycle=null;constructor(e,t,n){this.descriptor=e,this.ctx=t,this.extensionPath=n,this.getLifecycleSubjects=d(t,e.name)}async init(){let{transport:e}=this.descriptor;if(!this.ctx.busUrl)throw Error(`[extensions] ${this.descriptor.name}: bus-websocket transport requires NodeExtensionContext.busUrl`);let t=this.getLifecycleSubjects();this.lifecycle=s({spawn:{command:e.command,args:e.args,cwd:this.extensionPath,env:{...e.env,MAKAIO_BUS_TRANSPORT:`websocket`,MAKAIO_BUS_URL:this.ctx.busUrl,MAKAIO_EXTENSION_NAME:this.descriptor.name},processName:this.descriptor.name},healthTimeoutMs:e.healthTimeoutMs,shutdownTimeoutMs:e.shutdownTimeoutMs,restartPolicy:`restartPolicy`in e?e.restartPolicy:void 0});try{await this.lifecycle.start(),await this.ctx.bus.request(t.init,{config:this.ctx.config??this.descriptor.config?.defaults,context:f(this.ctx)},{timeout:e.healthTimeoutMs})}catch(e){throw await this.lifecycle.stop(),this.lifecycle=null,e}}async destroy(){if(this.lifecycle!==null){let e=this.getLifecycleSubjects();try{await this.ctx.bus.request(e.destroy,{reason:`runtime-shutdown`},{timeout:this.descriptor.transport.shutdownTimeoutMs})}catch(e){console.warn(`[extensions] ${this.descriptor.name}: detached destroy lifecycle request did not complete before process stop:`,e instanceof Error?e.message:e)}await this.lifecycle.stop(),this.lifecycle=null}}},h=class{descriptor;ctx;extensionPath;bridge=null;constructor(e,t,n){this.descriptor=e,this.ctx=t,this.extensionPath=n}async init(){let{startMcpClientBridge:e}=await import(`@makaio/framework/mcp-http-server`),{transport:t}=this.descriptor;this.bridge=await e({command:t.command,args:t.args,env:t.env,cwd:this.extensionPath,extensionName:this.descriptor.name,bus:this.ctx.bus})}async destroy(){this.bridge!==null&&(await this.bridge.close(),this.bridge=null)}};function g(t,n){return{...e(t),create(e){return t.transport.type===`bus-stdio`?new p(t,e,n):t.transport.type===`mcp-stdio`?new h(t,e,n):new m(t,e,n)}}}export{g as createDetachedExtensionPackage};
1
+ import{t as e}from"./descriptor-to-package-D5SWf6TL.mjs";import{t}from"./jsonl-transport-l5NPcQ_2.mjs";import{z as n}from"zod";import{createBusNamespace as r}from"@makaio/framework/core";const i={idle:[`starting`],starting:[`running`,`crashed`,`stopping`],running:[`stopping`,`crashed`],stopping:[`stopped`],stopped:[`starting`],crashed:[`starting`,`stopped`]};function a(e,t){if(!i[e].includes(t))throw Error(`Invalid state transition: ${e} → ${t}`)}function o(e){return new Promise(t=>{if(e.exitCode!==null||e.signalCode!==null){t(!0);return}e.once(`exit`,()=>t(!0))})}function s(e){let{spawn:n,healthTimeoutMs:r=3e4,shutdownTimeoutMs:i=5e3,restartPolicy:s=`none`,onReady:c,onExit:l,onStateChange:u}=e,d=`idle`,f;function p(e){a(d,e),d=e,u?.(d)}function m(e){let t=f;if(f=void 0,t?.close(),d===`stopping`){p(`stopped`),l?.(e);return}if(d===`running`){if(e!==0){p(`crashed`),l?.(e),(s===`on-crash`||s===`always`)&&h().catch(e=>{console.error(`[ProcessLifecycle:${n.processName??n.command}] Restart failed:`,e instanceof Error?e.message:e)});return}p(`stopping`),p(`stopped`),l?.(e),s===`always`&&h().catch(e=>{console.error(`[ProcessLifecycle:${n.processName??n.command}] Restart failed:`,e instanceof Error?e.message:e)})}}async function h(){p(`starting`);let e=t(n);f=e;let i=e.process;await new Promise((t,a)=>{let o=!1;function s(e){o||(o=!0,clearTimeout(u),d(),i.off(`exit`,h),e())}let u=setTimeout(()=>{s(()=>{e.close(),f=void 0;try{p(`crashed`)}catch{}a(Error(`Process health timeout after ${r}ms: ${n.processName??n.command}`))})},r),d=e.onMessage(()=>{s(()=>{try{p(`running`)}catch(e){a(e);return}c?.(),i.once(`exit`,m),t()})});function h(e){s(()=>{f=void 0;try{p(`crashed`)}catch{}l?.(e),a(Error(`Process exited with code ${String(e)} before signaling readiness`))})}i.once(`exit`,h)})}async function g(){if(d===`stopped`||d===`idle`)return;if(d===`crashed`){f?.close(),f=void 0,p(`stopped`);return}if(d!==`stopping`&&p(`stopping`),!f){d===`stopping`&&p(`stopped`);return}let e=f,t=e.process;if(t.exitCode!==null){e.close(),f===e&&(f=void 0),d===`stopping`&&p(`stopped`);return}t.kill(`SIGTERM`);let n;await Promise.race([o(t).then(()=>(clearTimeout(n),!0)),new Promise(e=>{n=setTimeout(()=>e(!1),i)})])||(t.kill(`SIGKILL`),await o(t)),d===`stopping`&&p(`stopped`),e.close(),f===e&&(f=void 0)}return{get transport(){return f},get state(){return d},start:h,stop:g}}const c=n.object({dataDir:n.string().optional(),machineId:n.string().optional(),makaioHome:n.string().optional(),platform:n.string().optional(),username:n.string().optional()}),l={init:{request:n.object({config:n.unknown().optional(),context:c.optional()}),response:n.object({ready:n.boolean()})},ready:n.object({ready:n.boolean(),config:n.unknown().optional(),context:c.optional()}).passthrough(),destroy:{request:n.object({reason:n.string().optional()}),response:n.object({stopped:n.boolean()})},stopped:n.object({stopped:n.boolean()}).passthrough()};function u(e,t){return e.bus.registerNamespace(r(`extension.${t}`,l)).subjects}function d(e,t){let n;return()=>(n??=u(e,t),n)}function f(e){return{dataDir:e.dataDir,machineId:e.machineId,makaioHome:e.makaioHome,platform:e.platform,username:e.username}}var p=class{descriptor;ctx;extensionPath;getLifecycleSubjects;transport=null;unregister=null;constructor(e,t,n){this.descriptor=e,this.ctx=t,this.extensionPath=n,this.getLifecycleSubjects=d(t,e.name)}async init(){let{StdioServerTransport:e}=await import(`./src-Bo2eA51B.mjs`),{transport:t}=this.descriptor,n=this.getLifecycleSubjects(),r=new e({name:this.descriptor.name,spawn:{command:t.command,args:t.args,cwd:this.extensionPath,env:t.env,processName:this.descriptor.name}}),i=null;try{let e=this.ctx.bus.registerTransport(r);i=e.unregister,await r.connect(),await r.ready,await e.ready,this.transport=r,this.unregister=i,await this.ctx.bus.request(n.init,{config:this.ctx.config??this.descriptor.config?.defaults,context:f(this.ctx)},{timeout:t.healthTimeoutMs})}catch(e){throw i?.(),await r.disconnect(),this.transport=null,this.unregister=null,e}}async destroy(){if(this.transport!==null){let e=this.getLifecycleSubjects();try{await this.ctx.bus.request(e.destroy,{reason:`runtime-shutdown`},{timeout:this.descriptor.transport.shutdownTimeoutMs})}catch(e){console.warn(`[extensions] ${this.descriptor.name}: detached destroy lifecycle request did not complete before disconnect:`,e instanceof Error?e.message:e)}}this.unregister?.(),this.unregister=null,await this.transport?.disconnect(),this.transport=null}},m=class{descriptor;ctx;extensionPath;getLifecycleSubjects;lifecycle=null;constructor(e,t,n){this.descriptor=e,this.ctx=t,this.extensionPath=n,this.getLifecycleSubjects=d(t,e.name)}async init(){let{transport:e}=this.descriptor;if(!this.ctx.busUrl)throw Error(`[extensions] ${this.descriptor.name}: bus-websocket transport requires NodeExtensionContext.busUrl`);let t=this.getLifecycleSubjects();this.lifecycle=s({spawn:{command:e.command,args:e.args,cwd:this.extensionPath,env:{...e.env,MAKAIO_BUS_TRANSPORT:`websocket`,MAKAIO_BUS_URL:this.ctx.busUrl,MAKAIO_EXTENSION_NAME:this.descriptor.name},processName:this.descriptor.name},healthTimeoutMs:e.healthTimeoutMs,shutdownTimeoutMs:e.shutdownTimeoutMs,restartPolicy:`restartPolicy`in e?e.restartPolicy:void 0});try{await this.lifecycle.start(),await this.ctx.bus.request(t.init,{config:this.ctx.config??this.descriptor.config?.defaults,context:f(this.ctx)},{timeout:e.healthTimeoutMs})}catch(e){throw await this.lifecycle.stop(),this.lifecycle=null,e}}async destroy(){if(this.lifecycle!==null){let e=this.getLifecycleSubjects();try{await this.ctx.bus.request(e.destroy,{reason:`runtime-shutdown`},{timeout:this.descriptor.transport.shutdownTimeoutMs})}catch(e){console.warn(`[extensions] ${this.descriptor.name}: detached destroy lifecycle request did not complete before process stop:`,e instanceof Error?e.message:e)}await this.lifecycle.stop(),this.lifecycle=null}}},h=class{descriptor;ctx;extensionPath;bridge=null;constructor(e,t,n){this.descriptor=e,this.ctx=t,this.extensionPath=n}async init(){let{startMcpClientBridge:e}=await import(`@makaio/framework/mcp-http-server`),{transport:t}=this.descriptor;this.bridge=await e({command:t.command,args:t.args,env:t.env,cwd:this.extensionPath,extensionName:this.descriptor.name,bus:this.ctx.bus})}async destroy(){this.bridge!==null&&(await this.bridge.close(),this.bridge=null)}};function g(t,n){return{...e(t),create(e){return t.transport.type===`bus-stdio`?new p(t,e,n):t.transport.type===`mcp-stdio`?new h(t,e,n):new m(t,e,n)}}}export{g as createDetachedExtensionPackage};
@@ -0,0 +1 @@
1
+ import{A as e,C as t,M as n,N as r,O as i,T as a,_ as o,j as s,k as c,m as l,v as u}from"./schemas-C-J4W1ID.mjs";import"./services/execution-target/namespace.mjs";import{z as d}from"zod";import{channelSubject as f,createBusNamespace as p,localSubject as m}from"@makaio/framework/core";const h=`docker-bootstrap`,g=p(`docker`,{"container.spawn":{request:i,response:c},"bootstrap.spawn":f({request:l,response:c}),"bootstrap.getChannelToken":m({request:d.object({}),response:d.object({token:d.string().min(1)})}),"container.stop":{request:n,response:r},"container.status":{request:e,response:s},"container.created":o,"container.started":t,"container.stopped":a,"container.destroyed":u}),_=g.subjects,v=g,y=_;export{_ as a,g as i,y as n,h as r,v as t};
@@ -1 +1 @@
1
- import{n as e}from"./window-registry-PkrFIwX2.mjs";import{n as t}from"./namespace-DibbhCPP.mjs";import{n}from"./extension-namespace-v3K0qVry.mjs";import{t as r}from"./schema-introspection-B7xODt4I.mjs";import{z as i}from"zod";import a from"node:path";import{createBusNamespace as o}from"@makaio/framework/core";import{ProviderDefinitionSchema as s,primaryMigrationsPath as c,versionSatisfies as l}from"@makaio/framework/contracts";import{ToastSubjects as u}from"@makaio/framework/contracts/toast";import{ExtensionWarningSchema as d,getExtensionWarningActionLabel as f}from"@makaio/framework/contracts/extension";import{TrayMenuSubjects as p}from"@makaio/framework/services/tray-menu";const m=i.object({name:i.string(),displayName:i.string()}),h=o(`kernel:boot`,{getState:{request:i.object({}),response:i.object({complete:i.boolean(),completedCount:i.number(),totalCount:i.number(),currentService:i.string().optional(),failedServices:i.array(i.string()),skippedServices:i.array(i.string()).default([]),totalDurationMs:i.number().optional()})},"service.starting":m,"service.ready":m.extend({durationMs:i.number().int().nonnegative()}),"service.failed":m.extend({errorMessage:i.string()}),"service.skipped":m.extend({reason:i.string()}),progress:i.object({completedCount:i.number(),totalCount:i.number(),currentService:i.string().optional()}),complete:i.object({totalDurationMs:i.number(),failedServices:i.array(i.string())})}),g=h.subjects;var _=class extends Error{reason;constructor(e){super(e),this.name=`ServiceSkipError`,this.reason=e}};function v(e){return{name:e.name,displayName:e.displayName}}var y=class{bus;state;cleanup;constructor(e,t){this.bus=e,this.state={complete:!1,completedCount:0,totalCount:t,failedServices:[],skippedServices:[],startedAt:Date.now()},this.cleanup=this.bus.on(g.getState,e=>{e.setResult({complete:this.state.complete,completedCount:this.state.completedCount,totalCount:this.state.totalCount,...this.state.currentService===void 0?{}:{currentService:this.state.currentService},failedServices:[...this.state.failedServices],skippedServices:[...this.state.skippedServices],...this.state.totalDurationMs===void 0?{}:{totalDurationMs:this.state.totalDurationMs}})})}dispose(){this.cleanup()}starting(e){let t=v(e);this.state.currentService=t.displayName,this.state.currentServiceStartedAt=Date.now(),this.bus.emit(g.service.starting,t).catch(e=>{console.warn(`[ExtensionCoordinator] boot.service.starting emit failed for "${t.name}":`,e)})}ready(e){let t=v(e);this.state.completedCount+=1;let n=this.state.currentServiceStartedAt===void 0?0:Math.max(0,Date.now()-this.state.currentServiceStartedAt);this.bus.emit(g.service.ready,{...t,durationMs:n}).catch(e=>{console.warn(`[ExtensionCoordinator] boot.service.ready emit failed for "${t.name}":`,e)}),this.emitProgress()}failed(e,t){let n=v(e);this.state.completedCount+=1,this.state.failedServices.push(n.name),this.bus.emit(g.service.failed,{...n,errorMessage:t}).catch(e=>{console.warn(`[ExtensionCoordinator] boot.service.failed emit failed for "${n.name}":`,e)}),this.emitProgress()}skipped(e,t){let n=v(e);this.state.completedCount+=1,this.state.skippedServices.push(n.name),this.bus.emit(g.service.skipped,{...n,reason:t}).catch(e=>{console.warn(`[ExtensionCoordinator] boot.service.skipped emit failed for "${n.name}":`,e)}),this.emitProgress()}complete(){this.state.complete=!0,delete this.state.currentService,delete this.state.currentServiceStartedAt,this.state.totalDurationMs=Date.now()-this.state.startedAt,this.bus.emit(g.complete,{totalDurationMs:this.state.totalDurationMs,failedServices:[...this.state.failedServices]}).catch(e=>{console.warn(`[ExtensionCoordinator] boot.complete emit failed:`,e)})}emitProgress(){this.bus.emit(g.progress,{completedCount:this.state.completedCount,totalCount:this.state.totalCount,...this.state.currentService===void 0?{}:{currentService:this.state.currentService}}).catch(e=>{console.warn(`[ExtensionCoordinator] boot.progress emit failed:`,e)})}};function ee(e){return{subject:`wiring.apply`,$meta:{namespace:`client:${e}`,isRequest:!0,local:!1,channel:!1,payload:{request:{},response:{}}}}}const b=`action`;function x(e,t){return`${e}:${t}`}function te(e,t,n){return e.on(u.interacted,r=>{let{toastId:i,actionId:a}=r.payload,o=x(i,a),s=t.get(o);s&&S(e,s,i,n).catch(e=>{console.error(`[ExtensionCoordinator] Warning action dispatch failed for toast "${i}":`,e)})})}async function S(e,t,n,r){switch(t.kind){case`configure-integration`:await w(e,t.clientId,n,r);break;case`open-url`:console.info(`[ExtensionCoordinator] Toast "${n}" open-url action not routable from runtime layer: ${t.url}`);break;case`run-command`:console.info(`[ExtensionCoordinator] Toast "${n}" run-command action not routable from runtime layer: ${t.command}`);break;case`install-extension`:console.info(`[ExtensionCoordinator] Toast "${n}" install-extension action not routable from runtime layer: ${t.extensionName}`);break;default:C(t)}}function C(e){throw Error(`[ExtensionCoordinator] Unsupported warning action: ${JSON.stringify(e)}`)}async function w(e,t,n,r){let i=ee(t),a=await e.requestOptional(i,{scope:`user`,makaioCommand:r});if(!a.handled){console.warn(`[ExtensionCoordinator] Toast "${n}" configure-integration: no wiring handler for client "${t}". Is the client package loaded?`);return}let{applied:o,skipped:s}=a.data;console.info(`[ExtensionCoordinator] Toast "${n}" configure-integration: wired client "${t}" — ${o} applied, ${s} skipped.`)}function T(e){return e.map(e=>({name:e.name,description:e.description,hasInteractive:!!e.interactive,subcommands:e.subcommands.map(e=>({name:e.name,description:e.description,args:r(e.schema)}))}))}async function E(e,t,n){let{command:r,subcommand:i,args:a}=e,o=t.find(e=>e.name===r);if(!o)return{exitCode:1,stdout:[],stderr:[`Unknown command: ${r}`]};let s=o.subcommands.find(e=>e.name===i);if(!s)return{exitCode:1,stdout:[],stderr:[`Unknown subcommand: ${i}`]};let c=s.schema.safeParse(a??{});if(!c.success)return{exitCode:1,stdout:[],stderr:[`Validation failed:`,...c.error.issues.map(e=>` ${e.path.join(`.`)||`(root)`}: ${e.message}`)]};if(o.beforeRun)try{let e=await o.beforeRun({subcommandName:i,args:c.data??{},bus:n});if(!e.proceed)return{exitCode:e.exitCode??1,stdout:[],stderr:[e.message]}}catch(e){return{exitCode:1,stdout:[],stderr:[`beforeRun hook failed: ${e instanceof Error?e.message:String(e)}`]}}let l=[],u=[],d={write:e=>l.push(e),error:e=>u.push(e)},f=0,p=new AbortController().signal;try{await s.handler({args:c.data,bus:n,output:d,signal:p,setExitCode:e=>{f=e}})}catch(e){f===0&&(f=1),u.push(e instanceof Error?e.message:String(e))}return{exitCode:f,stdout:l,stderr:u}}function D(e){let{pkg:t,state:n,error:r,enabled:i}=e;return{name:t.name,displayName:t.displayName,state:n,...t.surface===void 0?{}:{surface:t.surface},enabled:i,...t.browser===void 0?{}:{browser:t.browser},...r===void 0?{}:{error:r}}}function O(e){let r=[];return r.push(e.bus.on(n.list,t=>{t.setResult({extensions:e.list()})})),r.push(e.bus.on(n.get,t=>{let n=e.entries.get(t.payload.name);t.setResult({extension:n?D(n):null})})),r.push(e.bus.on(n.setEnabled,async t=>{let n=await e.handleSetEnabled(t.payload.name,t.payload.enabled);t.setResult({success:n})})),r.push(e.bus.on(n.contributions.catalog,t=>{let n=[],r=[];for(let[t,i]of e.entries)if(i.state===`active`){for(let e of i.pkg.providers??[])n.push({packageName:t,definition:s.parse(e)});for(let e of i.pkg.clients??[])r.push({packageName:t,definition:e})}t.setResult({providers:n,clients:r})})),r.push(e.bus.on(t.listContributions,t=>{t.setResult({contributions:T(e.cliContributions)})})),r.push(e.bus.on(t.execute,async t=>{t.setResult(await E(t.payload,e.cliContributions,e.bus))})),r.push(e.bus.on(n.warnings.list,t=>{let{extensionName:n}=t.payload;if(n!==void 0){let r=e.entries.get(n),i=r&&r.warnings.length>0?[{extensionName:n,warnings:[...r.warnings]}]:[];t.setResult({entries:i});return}let r=[];for(let[t,n]of e.entries)n.warnings.length>0&&r.push({extensionName:t,warnings:[...n.warnings]});t.setResult({entries:r})})),r}async function ne(e){for(let[t,n]of e.entries)n.state===`active`&&await A(e,t,n)}function re(e){if(e&&k(e))return[{id:b,label:f(e)}]}function k(e){return e.kind===`configure-integration`}function ie(e,t){let n=`${t}:`;for(let t of e.keys())t.startsWith(n)&&e.delete(t)}async function A(e,t,n){ie(e.warningActionMap,t);let r=n.warnings.filter(e=>e.severity===`degraded`);if(r.length!==0)for(let i=0;i<r.length;i++){let a=r[i];console.warn(`[${t}] ⚠ ${a.title}: ${a.message}`);let o=`${t}:${a.title}:${i}`,s=re(a.action);try{await e.bus.emit(u.show,{level:`warning`,title:a.title,message:`${n.pkg.displayName}: ${a.message}`,toastId:o,durationMs:null,...s&&{actions:s}}),a.action&&k(a.action)&&e.warningActionMap.set(x(o,b),a.action)}catch(e){console.warn(`[${t}] toast emission failed for warning "${a.title}":`,e)}}}function ae(e){return Object.freeze({extensionName:e})}function oe(e,t,n,r){if(!t)return;let i={...n??{},...r??{}};try{return t.parse(i)}catch(n){console.warn(`[ExtensionCoordinator] Config parse failed for "${e}", starting with schema defaults:`,n instanceof Error?n.message:n);try{return t.parse({})}catch{console.warn(`[ExtensionCoordinator] Fallback config parse also failed for "${e}" — config will be absent`);return}}}function j(e,t,n){let r;if(n.pkg.configSchema)try{r=e.loadConfig?.(t)}catch(e){console.error(`[ExtensionCoordinator] loadConfig threw for "${t}":`,e)}return oe(t,n.pkg.configSchema,n.configDefaults,r)}function M(e,t,n){if(!e.extensionContextBase)throw Error(`ExtensionCoordinator: extensionContextBase is required to start extensions with a create factory. Provide it via the constructor.`);return{...e.extensionContextBase,bus:e.bus,identity:t.identity,dataDir:a.join(e.extensionContextBase.makaioHome,t.identity.extensionName),getService:t=>e.getExtensionService(t.name),signal:e.signal,hasExtension:e.hasActiveExtension,...n===void 0?{}:{config:n}}}function N(e){return{adapters:!!e.adapters?.length,tools:!!e.tools,triggers:!!e.triggers,providers:!!e.providers?.length,clients:!!e.clients?.length,ui:!!e.ui,storage:!!e.storage,sessionEventActions:!!e.sessionEventActions}}function P(e,t,r){let i=t.state;t.state=r,e.emit(n.stateChanged,{name:t.pkg.name,displayName:t.pkg.displayName,from:i,to:r,...t.error===void 0?{}:{error:t.error},contributes:N(t.pkg)}).catch(e=>{console.error(`[ExtensionCoordinator] stateChanged emit failed for "${t.pkg.name}":`,e)})}async function F(e,t,n,r,i){i===`activated`?await I(e,t,n,r):await L(e,n)}async function I(e,t,n,r){let i=[];try{for(let a of e){if(a.filter&&!a.filter(r.pkg))continue;let e=M(t,r,j(t,n,r));await a.processActivated(n,r.pkg,e),i.push(a)}}catch(e){for(let e of i.reverse())if(e.processStopped)try{await e.processStopped(n)}catch(e){console.error(`[ExtensionCoordinator] Contribution processor rollback error for "${n}":`,e)}throw e}}async function L(e,t){for(let n of[...e].reverse())if(n.processStopped)try{await n.processStopped(t)}catch(e){console.error(`[ExtensionCoordinator] Contribution processor error (stopped) for "${t}":`,e)}}async function R(e,t,r){let i=e.entries.get(t);if(!i)return!1;let a=r?await z(e,t,i):await B(e,t,i),o=i.enabled===r;return!a&&!o||(await e.persistEnabled?.(t,r),!a)?!1:(e.bus.emit(n.enabledChanged,{name:t,enabled:r}).catch(e=>{console.error(`[ExtensionCoordinator] enabledChanged emit failed for "${t}":`,e)}),!0)}async function z(e,t,n){if(n.state!==`stopped`&&n.state!==`failed`&&n.state!==`skipped`)return!1;let{pkg:r}=n,i,a=(r.dependencies??[]).filter(t=>{if(t.optional)return!1;let n=e.entries.get(t.name);return!n||n.state!==`active`});if(a.length>0)return n.error=`Required dependencies not active: ${a.map(e=>e.name).join(`, `)}`,console.error(`[ExtensionCoordinator] Cannot re-enable "${t}":`,n.error),P(e.bus,n,`failed`),!1;n.enabled=!0,n.error=void 0,P(e.bus,n,`initializing`);let o=j(e,t,n);if(r.storage?.registerHandlers&&e.db!==void 0)try{let t=M(e,n,o),a=r.storage.registerHandlers(e.bus,e.db,t);typeof a==`function`&&(i=a,n.storageCleanup=a)}catch(r){return n.error=r instanceof Error?r.message:String(r),console.error(`[ExtensionCoordinator] Extension "${t}" storage re-registration failed:`,r),P(e.bus,n,`failed`),!1}if(r.create){let a;try{let t=M(e,n,o);a=await r.create(t),await a.init?.(),n.service=a}catch(r){return await V(t,a,i,n),r instanceof _?n.pkg.critical?(n.error=`Critical extension cannot skip startup: ${r.reason}`,console.error(`[ExtensionCoordinator] Extension "${t}" failed to re-initialize:`,n.error),P(e.bus,n,`failed`),!1):(n.error=r.reason,P(e.bus,n,`skipped`),!1):(n.error=r instanceof Error?r.message:String(r),console.error(`[ExtensionCoordinator] Extension "${t}" failed to re-initialize:`,r),P(e.bus,n,`failed`),!1)}}try{await F(e.contributionProcessors,e,t,n,`activated`)}catch(r){return await V(t,n.service,i,n),n.service=void 0,n.error=r instanceof Error?r.message:String(r),console.error(`[ExtensionCoordinator] Extension "${t}" contribution processing failed:`,r),P(e.bus,n,`failed`),!1}return P(e.bus,n,`active`),await e.runHealthCheck(t),await e.emitWarningsForEntry(t,n),!0}async function B(e,t,r){if(r.state!==`active`)return!1;let i=Array.from(e.entries.entries()).filter(([e,n])=>e===t||n.state!==`active`?!1:n.pkg.dependencies?.some(e=>!e.optional&&e.name===t)??!1).map(([e])=>e);if(i.length>0)return r.error=`Cannot disable "${t}" while active dependents remain: ${i.join(`, `)}`,console.error(`[ExtensionCoordinator] ${r.error}`),!1;if(r.enabled=!1,r.error=void 0,await F(e.contributionProcessors,e,t,r,`stopped`),r.service)try{await r.service.destroy?.()}catch(e){console.error(`[ExtensionCoordinator] Error during disable destroy of "${t}":`,e)}finally{r.service=void 0}if(r.storageCleanup)try{r.storageCleanup()}catch(e){console.error(`[ExtensionCoordinator] Storage cleanup error during disable of "${t}":`,e)}finally{r.storageCleanup=void 0}P(e.bus,r,`stopped`),r.warnings=[];try{await e.bus.emit(n.warnings.changed,{extensionName:t,warnings:[]})}catch(e){console.error(`[ExtensionCoordinator] warnings.changed emit failed for "${t}":`,e)}return!0}async function V(e,t,n,r){try{await t?.destroy?.()}catch(t){console.error(`[ExtensionCoordinator] Service cleanup error after failed enable of "${e}":`,t)}try{n?.()}catch(t){console.error(`[ExtensionCoordinator] Storage cleanup error after failed enable of "${e}":`,t)}finally{r.storageCleanup=void 0}}function H(e){let t=new Map;for(let n of e)t.has(n.name)&&(console.info(`[ExtensionCoordinator] Extension "${n.name}" overrides an earlier registration`),t.delete(n.name)),t.set(n.name,n);return[...t.values()]}function U(e,t,n){let r=new Set(e.map(e=>e.name)),i=e.filter(e=>W(e,t,n)),a=new Map(i.map(e=>[e.name,e])),o=new Set(a.keys()),s=!0;for(;s;){s=!1;for(let e of o)(a.get(e).dependencies??[]).some(e=>!e.optional&&r.has(e.name)&&!o.has(e.name))&&(o.delete(e),s=!0)}return i.filter(e=>o.has(e.name))}function W(e,t,n){if(!K(e,t))return!1;let r=e.requires;return!r||r.length===0||!n?!0:r.every(e=>{switch(e.type){case`host`:return n.hosts.has(e.id);case`capability`:return n.capabilities.has(e.id)?e.version===void 0?!0:G(n,e.id,e.version):!1}})}function G(e,t,n){let r=e.capabilityVersions?.get(t);return r!==void 0&&l(r,n)}function K(e,t){return e.surface===void 0||e.surface===`any`||e.surface===t}function se(e){let t=ce(e);return le(e,t,new Map(e.map(e=>[e.name,e]))),fe(t,de(e,t))}function ce(e){let t=new Set;for(let n of e){if(t.has(n.name))throw Error(`ExtensionCoordinator: duplicate package name detected: "${n.name}"`);t.add(n.name)}return t}function le(e,t,n){for(let r of e)ue(r,t,n)}function ue(e,t,n){let r=e.dependencies??[],i=r.filter(e=>!e.optional&&!t.has(e.name));if(i.length>0)throw Error(`ExtensionCoordinator: package "${e.name}" declares missing dependencies: ${i.map(e=>e.name).join(`, `)}`);for(let t of r){let r=n.get(t.name);if(r===void 0)continue;let i=r.version;if(!l(i,t.version))throw Error(`ExtensionCoordinator: package "${e.name}" dependency "${t.name}" version ${i} does not satisfy ${t.version}`)}}function de(e,t){let n=new Map;for(let r of e){let e=(r.dependencies??[]).filter(e=>t.has(e.name)).map(e=>e.name);n.set(r.name,new Set(e))}return n}function fe(e,t){let n=[];for(let[e,r]of t)r.size===0&&n.push(e);let r=[],i=new Set;for(;n.length>0;){let e=n.shift();if(!i.has(e)){i.add(e),r.push(e);for(let[r,a]of t)a.has(e)&&(a.delete(e),a.size===0&&!i.has(r)&&n.push(r))}}if(r.length!==e.size){let t=[...e].filter(e=>!i.has(e));throw Error(`ExtensionCoordinator: circular dependency detected among: ${t.join(`, `)}`)}return r}async function pe(e){if(!e.runMigrations)return;let t=[];for(let n of e.loadOrder){let r=e.entries.get(n);if(!r)throw Error(`Extension "${n}" is in loadOrder but missing from entries`);let i=r.pkg.storage?.migrations;if(!i)continue;let a,o;if(typeof i==`string`)a=q(n,r.pkg,i);else{let e={};for(let[t,a]of Object.entries(i))a!==void 0&&(e[t]=q(n,r.pkg,a));let t=c(e);if(t===void 0)continue;a=t,o=e}t.push({name:n,migrationsPath:a,migrationSourceId:r.pkg.storage?.migrationSourceId??a,...o?{migrationsPathByDialect:o}:{}})}t.length!==0&&await e.runMigrations(t)}function q(e,t,n){if(a.isAbsolute(n))return n;let r=t.storage?.packageRoot;if(!r)throw Error(`Extension "${e}" declares relative storage.migrations "${n}" without storage.packageRoot`);let i=a.resolve(r),o=a.resolve(i,n),s=a.relative(i,o);if(s.startsWith(`..`)||a.isAbsolute(s))throw Error(`Extension "${e}" declares storage.migrations "${n}" outside storage.packageRoot`);return o}async function J(e,t){let r=e.entries.get(t);if(!r?.service||r.state!==`active`)return;let{checkHealth:i}=r.service;if(!i)return;let a;try{let e=await i.call(r.service),n=d.array().safeParse(e);n.success?a=n.data:(console.error(`[ExtensionCoordinator] checkHealth for "${t}" returned invalid data:`,n.error),a=[])}catch(e){console.error(`[ExtensionCoordinator] checkHealth threw for "${t}":`,e),a=[]}r.warnings=a;try{await e.bus.emit(n.warnings.changed,{extensionName:t,warnings:[...a]})}catch(e){console.error(`[ExtensionCoordinator] warnings.changed emit failed for "${t}":`,e)}}function me(e,t){if(t.windows)for(let n of t.windows)e.windowRegistry.register(t.name,t.displayName,n);if(t.tray&&e.trayEntries.push({...t.tray,packageName:t.name}),t.cli){let n=t.cli;`subcommands`in n&&e.cliContributions.push(n)}}function he(e){return Array.from(e.values()).filter(e=>e.enabled).map(e=>e.pkg).filter(e=>!!e.http)}async function ge(e){let t=[...e.loadOrder].reverse();for(let n of t){let t=e.entries.get(n);if(t){if(t.state===`active`&&await F(e.contributionProcessors,e.contextHost,n,t,`stopped`),t.service)try{await t.service.destroy?.()}catch(e){console.error(`[ExtensionCoordinator] Error during shutdown of "${n}":`,e)}finally{t.service=void 0}if(t.storageCleanup)try{t.storageCleanup()}catch(e){console.error(`[ExtensionCoordinator] Storage cleanup error for "${n}":`,e)}finally{t.storageCleanup=void 0}t.state===`active`&&P(e.contextHost.bus,t,`stopped`)}}}async function _e(e,t){if(!t.tray)return;let n=Y(t);await e.request(p.register,{entry:n})}function Y(e){let t=e.tray;if(!t)throw Error(`[tray-menu-entry-bridge] extension "${e.name}" does not declare a tray entry`);return{packageName:e.name,entryId:t.opensWindow??t.action??`default`,label:t.label,section:t.section??`views`,priority:50,enabled:!0,metadata:t.opensWindow?{registrationId:`${e.name}:${t.opensWindow}`}:t.action?{action:t.action}:void 0}}async function ve(e,t,n){if(!n.enabled){P(e.bus,n,`skipped`),e.bootProgress.skipped(n.pkg,`disabled`);return}let r=(n.pkg.dependencies??[]).filter(t=>t.optional?!1:e.entries.get(t.name)?.state!==`active`);if(r.length>0){let i=`Required dependencies not active: ${r.map(e=>e.name).join(`, `)}`;if(Q(e,t,n,i),n.pkg.critical)throw Error(`Critical package "${t}" failed: ${i}`);return}e.bootProgress.starting(n.pkg),P(e.bus,n,`initializing`);let i=j(e.contextHost,t,n);if(xe(e,t,n,i)){if(!n.pkg.create){await ye(e,t,n);return}await be(e,t,n,i)}}async function ye(e,t,n){try{await F(e.contributionProcessors,e.contextHost,t,n,`activated`)}catch(r){if(Z(t,n),X(e,t,n,r))return;if(Q(e,t,n,r instanceof Error?r.message:String(r)),n.pkg.critical)throw r;return}P(e.bus,n,`active`),e.bootProgress.ready(n.pkg),await $(e.bus,t,n)}async function be(e,t,n,r){let i;try{let a=M(e.contextHost,n,r);i=await n.pkg.create(a),await i.init?.(),n.service=i,await F(e.contributionProcessors,e.contextHost,t,n,`activated`),P(e.bus,n,`active`),e.bootProgress.ready(n.pkg),await $(e.bus,t,n)}catch(r){try{await i?.destroy?.()}catch(e){console.error(`[ExtensionCoordinator] Service cleanup error after failed start of "${t}":`,e)}if(n.service=void 0,Z(t,n),X(e,t,n,r))return;if(Q(e,t,n,r instanceof Error?r.message:String(r)),n.pkg.critical)throw r}}function X(e,t,n,r){if(!(r instanceof _))return!1;if(n.pkg.critical){let i=`Critical package cannot skip startup: ${r.reason}`;throw Q(e,t,n,i),Error(`Critical package "${t}" failed: ${i}`,{cause:r})}return n.error=r.reason,console.info(`[ExtensionCoordinator] Package "${t}" skipped: ${r.reason}`),P(e.bus,n,`skipped`),e.bootProgress.skipped(n.pkg,r.reason),!0}function xe(e,t,n,r){if(!n.pkg.storage?.registerHandlers||e.db===void 0)return!0;try{let t=M(e.contextHost,n,r),i=n.pkg.storage.registerHandlers(e.bus,e.db,t);return i&&(n.storageCleanup=i),!0}catch(r){let i=r instanceof Error?r.message:String(r);if(console.error(`[ExtensionCoordinator] Package "${t}" storage registration failed:`,r),Q(e,t,n,i),n.pkg.critical)throw r;return!1}}function Z(e,t){if(t.storageCleanup)try{t.storageCleanup()}catch(t){console.error(`[ExtensionCoordinator] Storage cleanup error after failed start of "${e}":`,t)}finally{t.storageCleanup=void 0}}function Q(e,t,n,r){n.error=r,console.error(`[ExtensionCoordinator] Package "${t}" failed:`,r),P(e.bus,n,`failed`),e.bootProgress.failed(n.pkg,r)}async function $(e,t,n){try{await _e(e,n.pkg)}catch(e){console.warn(`[ExtensionCoordinator] Failed to register tray entry for ${t}:`,e)}}var Se=class{bus;surface;db;extensionContextBase;runtimeEnvironment;shutdownController=new AbortController;entries=new Map;loadOrder=[];loaded=!1;started=!1;rpcCleanups=[];contributionProcessors=[];warningActionMap=new Map;windowRegistry=new e;_trayEntries=[];_cliContributions=[];persistEnabled;loadEnabled;loadConfig;runMigrations;constructor(e,t={}){this.bus=e,this.surface=t.surface??`headless`,this.db=t.db,this.extensionContextBase=t.extensionContextBase,this.runtimeEnvironment=t.runtimeEnvironment,this.persistEnabled=t.persistEnabled,this.loadEnabled=t.loadEnabled,this.loadConfig=t.loadConfig,this.runMigrations=t.runMigrations,this.rpcCleanups.push(te(this.bus,this.warningActionMap,t.launcherCommand??`makaio`))}get trayEntries(){return this._trayEntries.map(e=>({...e}))}get cliContributions(){return this._cliContributions}extensionsWithHttp(){return he(this.entries)}load(e,t){if(this.loaded)throw Error(`ExtensionCoordinator.load() called twice. The coordinator is single-use; create a new instance if needed.`);let n=H(U(e,this.surface,this.runtimeEnvironment));this.loadOrder=se(n);for(let e of this.loadOrder){let r=n.find(t=>t.name===e),i={pkg:r,identity:ae(r.name),state:`discovered`,enabled:this.loadEnabled?.(e)!==!1,warnings:[]};if(t){let n=t.get(e);n&&(i.configDefaults=n)}this.entries.set(e,i),r.namespaces&&this.bus.registerNamespaces(r.namespaces),me({windowRegistry:this.windowRegistry,trayEntries:this._trayEntries,cliContributions:this._cliContributions},r)}this.rpcCleanups.push(...O({bus:this.bus,entries:this.entries,cliContributions:this._cliContributions,list:()=>this.list(),handleSetEnabled:(e,t)=>this.handleSetEnabled(e,t)})),this.loaded=!0}async startAll(){if(!this.loaded)throw Error(`ExtensionCoordinator.startAll() called before load(). Call load() first.`);if(this.started)throw Error(`ExtensionCoordinator.startAll() called twice. The coordinator is single-use; create a new instance if needed.`);this.started=!0;let e=new y(this.bus,this.loadOrder.length);this.rpcCleanups.push(()=>e.dispose());try{await pe({loadOrder:this.loadOrder,entries:this.entries,runMigrations:this.runMigrations});for(let t of this.loadOrder){let n=this.entries.get(t);n&&await ve({bus:this.bus,db:this.db,entries:this.entries,contributionProcessors:this.contributionProcessors,contextHost:this.createExtensionContextHost(),bootProgress:e},t,n)}let t=this.createExtensionHealthHost();await Promise.all(this.loadOrder.map(e=>this.entries.get(e)?.state===`active`?J(t,e):void 0)),await ne({bus:this.bus,entries:this.entries,warningActionMap:this.warningActionMap})}finally{e.complete()}}async shutdown(){this.shutdownController.abort();for(let e of this.rpcCleanups)e();this.rpcCleanups=[],this.warningActionMap.clear(),await ge({entries:this.entries,loadOrder:this.loadOrder,contributionProcessors:this.contributionProcessors,contextHost:this.createExtensionContextHost()})}list(){return[...this.entries.values()].map(e=>D(e))}getExtensionService(e){let t=typeof e==`string`?e:e.name;return this.entries.get(t)?.service}getExtension(e){return this.entries.get(e)?.pkg}getLoadedProviderDefinitionIds(){let e=new Set;for(let t of this.entries.values())if(t.enabled&&!(t.state===`failed`||t.state===`skipped`||t.state===`stopped`))for(let n of t.pkg.providers??[])e.add(n.id);return e}forEachActiveExtension(e){let t=this.createExtensionContextHost();for(let n of this.loadOrder){let r=this.entries.get(n);if(!r||r.state!==`active`)continue;let i=M(t,r,j(t,n,r));e(n,r.pkg,i)}}forExtension(e,t){let n=this.entries.get(e);if(!n||n.state!==`active`)return;let r=this.createExtensionContextHost(),i=M(r,n,j(r,e,n));t(e,n.pkg,i)}registerContributionProcessor(e){return this.contributionProcessors.push(e),()=>{let t=this.contributionProcessors.indexOf(e);t>=0&&this.contributionProcessors.splice(t,1)}}async handleSetEnabled(e,t){return R({bus:this.bus,db:this.db,entries:this.entries,extensionContextBase:this.extensionContextBase,loadConfig:this.loadConfig,signal:this.shutdownController.signal,hasActiveExtension:e=>this.hasActiveExtension(e),persistEnabled:this.persistEnabled,contributionProcessors:this.contributionProcessors,getExtensionService:e=>this.getExtensionService(e),runHealthCheck:e=>J(this.createExtensionHealthHost(),e),emitWarningsForEntry:(e,t)=>A({bus:this.bus,entries:this.entries,warningActionMap:this.warningActionMap},e,t)},e,t)}createExtensionContextHost(){return{bus:this.bus,extensionContextBase:this.extensionContextBase,loadConfig:this.loadConfig,signal:this.shutdownController.signal,hasActiveExtension:e=>this.hasActiveExtension(e),getExtensionService:e=>this.getExtensionService(e)}}createExtensionHealthHost(){return{bus:this.bus,entries:this.entries}}hasActiveExtension(e){return this.entries.get(e)?.state===`active`}};export{h as a,_ as i,H as n,g as o,U as r,Se as t};
1
+ import{n as e}from"./window-registry-DsWnCc8z.mjs";import{n as t}from"./namespace-C05pkLbN.mjs";import{n}from"./extension-namespace-vrh4ERXR.mjs";import{t as r}from"./schema-introspection-BsWLmoFp.mjs";import{z as i}from"zod";import a from"node:path";import{createBusNamespace as o}from"@makaio/framework/core";import{ProviderDefinitionSchema as s,primaryMigrationsPath as c,versionSatisfies as l}from"@makaio/framework/contracts";import{ToastSubjects as u}from"@makaio/framework/contracts/toast";import{ExtensionWarningSchema as d,getExtensionWarningActionLabel as f}from"@makaio/framework/contracts/extension";import{TrayMenuSubjects as p}from"@makaio/framework/services/tray-menu";const m=i.object({name:i.string(),displayName:i.string()}),h=o(`kernel:boot`,{getState:{request:i.object({}),response:i.object({complete:i.boolean(),completedCount:i.number(),totalCount:i.number(),currentService:i.string().optional(),failedServices:i.array(i.string()),skippedServices:i.array(i.string()).default([]),totalDurationMs:i.number().optional()})},"service.starting":m,"service.ready":m.extend({durationMs:i.number().int().nonnegative()}),"service.failed":m.extend({errorMessage:i.string()}),"service.skipped":m.extend({reason:i.string()}),progress:i.object({completedCount:i.number(),totalCount:i.number(),currentService:i.string().optional()}),complete:i.object({totalDurationMs:i.number(),failedServices:i.array(i.string())})}),g=h.subjects;var _=class extends Error{reason;constructor(e){super(e),this.name=`ServiceSkipError`,this.reason=e}};function v(e){return{name:e.name,displayName:e.displayName}}var y=class{bus;state;cleanup;constructor(e,t){this.bus=e,this.state={complete:!1,completedCount:0,totalCount:t,failedServices:[],skippedServices:[],startedAt:Date.now()},this.cleanup=this.bus.on(g.getState,e=>{e.setResult({complete:this.state.complete,completedCount:this.state.completedCount,totalCount:this.state.totalCount,...this.state.currentService===void 0?{}:{currentService:this.state.currentService},failedServices:[...this.state.failedServices],skippedServices:[...this.state.skippedServices],...this.state.totalDurationMs===void 0?{}:{totalDurationMs:this.state.totalDurationMs}})})}dispose(){this.cleanup()}starting(e){let t=v(e);this.state.currentService=t.displayName,this.state.currentServiceStartedAt=Date.now(),this.bus.emit(g.service.starting,t).catch(e=>{console.warn(`[ExtensionCoordinator] boot.service.starting emit failed for "${t.name}":`,e)})}ready(e){let t=v(e);this.state.completedCount+=1;let n=this.state.currentServiceStartedAt===void 0?0:Math.max(0,Date.now()-this.state.currentServiceStartedAt);this.bus.emit(g.service.ready,{...t,durationMs:n}).catch(e=>{console.warn(`[ExtensionCoordinator] boot.service.ready emit failed for "${t.name}":`,e)}),this.emitProgress()}failed(e,t){let n=v(e);this.state.completedCount+=1,this.state.failedServices.push(n.name),this.bus.emit(g.service.failed,{...n,errorMessage:t}).catch(e=>{console.warn(`[ExtensionCoordinator] boot.service.failed emit failed for "${n.name}":`,e)}),this.emitProgress()}skipped(e,t){let n=v(e);this.state.completedCount+=1,this.state.skippedServices.push(n.name),this.bus.emit(g.service.skipped,{...n,reason:t}).catch(e=>{console.warn(`[ExtensionCoordinator] boot.service.skipped emit failed for "${n.name}":`,e)}),this.emitProgress()}complete(){this.state.complete=!0,delete this.state.currentService,delete this.state.currentServiceStartedAt,this.state.totalDurationMs=Date.now()-this.state.startedAt,this.bus.emit(g.complete,{totalDurationMs:this.state.totalDurationMs,failedServices:[...this.state.failedServices]}).catch(e=>{console.warn(`[ExtensionCoordinator] boot.complete emit failed:`,e)})}emitProgress(){this.bus.emit(g.progress,{completedCount:this.state.completedCount,totalCount:this.state.totalCount,...this.state.currentService===void 0?{}:{currentService:this.state.currentService}}).catch(e=>{console.warn(`[ExtensionCoordinator] boot.progress emit failed:`,e)})}};function ee(e){return{subject:`wiring.apply`,$meta:{namespace:`client:${e}`,isRequest:!0,local:!1,channel:!1,payload:{request:{},response:{}}}}}const b=`action`;function x(e,t){return`${e}:${t}`}function te(e,t,n){return e.on(u.interacted,r=>{let{toastId:i,actionId:a}=r.payload,o=x(i,a),s=t.get(o);s&&S(e,s,i,n).catch(e=>{console.error(`[ExtensionCoordinator] Warning action dispatch failed for toast "${i}":`,e)})})}async function S(e,t,n,r){switch(t.kind){case`configure-integration`:await w(e,t.clientId,n,r);break;case`open-url`:console.info(`[ExtensionCoordinator] Toast "${n}" open-url action not routable from runtime layer: ${t.url}`);break;case`run-command`:console.info(`[ExtensionCoordinator] Toast "${n}" run-command action not routable from runtime layer: ${t.command}`);break;case`install-extension`:console.info(`[ExtensionCoordinator] Toast "${n}" install-extension action not routable from runtime layer: ${t.extensionName}`);break;default:C(t)}}function C(e){throw Error(`[ExtensionCoordinator] Unsupported warning action: ${JSON.stringify(e)}`)}async function w(e,t,n,r){let i=ee(t),a=await e.requestOptional(i,{scope:`user`,makaioCommand:r});if(!a.handled){console.warn(`[ExtensionCoordinator] Toast "${n}" configure-integration: no wiring handler for client "${t}". Is the client package loaded?`);return}let{applied:o,skipped:s}=a.data;console.info(`[ExtensionCoordinator] Toast "${n}" configure-integration: wired client "${t}" — ${o} applied, ${s} skipped.`)}function T(e){return e.map(e=>({name:e.name,description:e.description,hasInteractive:!!e.interactive,subcommands:e.subcommands.map(e=>({name:e.name,description:e.description,args:r(e.schema)}))}))}async function E(e,t,n){let{command:r,subcommand:i,args:a}=e,o=t.find(e=>e.name===r);if(!o)return{exitCode:1,stdout:[],stderr:[`Unknown command: ${r}`]};let s=o.subcommands.find(e=>e.name===i);if(!s)return{exitCode:1,stdout:[],stderr:[`Unknown subcommand: ${i}`]};let c=s.schema.safeParse(a??{});if(!c.success)return{exitCode:1,stdout:[],stderr:[`Validation failed:`,...c.error.issues.map(e=>` ${e.path.join(`.`)||`(root)`}: ${e.message}`)]};if(o.beforeRun)try{let e=await o.beforeRun({subcommandName:i,args:c.data??{},bus:n});if(!e.proceed)return{exitCode:e.exitCode??1,stdout:[],stderr:[e.message]}}catch(e){return{exitCode:1,stdout:[],stderr:[`beforeRun hook failed: ${e instanceof Error?e.message:String(e)}`]}}let l=[],u=[],d={write:e=>l.push(e),error:e=>u.push(e)},f=0,p=new AbortController().signal;try{await s.handler({args:c.data,bus:n,output:d,signal:p,setExitCode:e=>{f=e}})}catch(e){f===0&&(f=1),u.push(e instanceof Error?e.message:String(e))}return{exitCode:f,stdout:l,stderr:u}}function D(e){let{pkg:t,state:n,error:r,enabled:i}=e;return{name:t.name,displayName:t.displayName,state:n,...t.surface===void 0?{}:{surface:t.surface},enabled:i,...t.browser===void 0?{}:{browser:t.browser},...r===void 0?{}:{error:r}}}function O(e){let r=[];return r.push(e.bus.on(n.list,t=>{t.setResult({extensions:e.list()})})),r.push(e.bus.on(n.get,t=>{let n=e.entries.get(t.payload.name);t.setResult({extension:n?D(n):null})})),r.push(e.bus.on(n.setEnabled,async t=>{let n=await e.handleSetEnabled(t.payload.name,t.payload.enabled);t.setResult({success:n})})),r.push(e.bus.on(n.contributions.catalog,t=>{let n=[],r=[];for(let[t,i]of e.entries)if(i.state===`active`){for(let e of i.pkg.providers??[])n.push({packageName:t,definition:s.parse(e)});for(let e of i.pkg.clients??[])r.push({packageName:t,definition:e})}t.setResult({providers:n,clients:r})})),r.push(e.bus.on(t.listContributions,t=>{t.setResult({contributions:T(e.cliContributions)})})),r.push(e.bus.on(t.execute,async t=>{t.setResult(await E(t.payload,e.cliContributions,e.bus))})),r.push(e.bus.on(n.warnings.list,t=>{let{extensionName:n}=t.payload;if(n!==void 0){let r=e.entries.get(n),i=r&&r.warnings.length>0?[{extensionName:n,warnings:[...r.warnings]}]:[];t.setResult({entries:i});return}let r=[];for(let[t,n]of e.entries)n.warnings.length>0&&r.push({extensionName:t,warnings:[...n.warnings]});t.setResult({entries:r})})),r}async function ne(e){for(let[t,n]of e.entries)n.state===`active`&&await A(e,t,n)}function re(e){if(e&&k(e))return[{id:b,label:f(e)}]}function k(e){return e.kind===`configure-integration`}function ie(e,t){let n=`${t}:`;for(let t of e.keys())t.startsWith(n)&&e.delete(t)}async function A(e,t,n){ie(e.warningActionMap,t);let r=n.warnings.filter(e=>e.severity===`degraded`);if(r.length!==0)for(let i=0;i<r.length;i++){let a=r[i];console.warn(`[${t}] ⚠ ${a.title}: ${a.message}`);let o=`${t}:${a.title}:${i}`,s=re(a.action);try{await e.bus.emit(u.show,{level:`warning`,title:a.title,message:`${n.pkg.displayName}: ${a.message}`,toastId:o,durationMs:null,...s&&{actions:s}}),a.action&&k(a.action)&&e.warningActionMap.set(x(o,b),a.action)}catch(e){console.warn(`[${t}] toast emission failed for warning "${a.title}":`,e)}}}function ae(e){return Object.freeze({extensionName:e})}function oe(e,t,n,r){if(!t)return;let i={...n??{},...r??{}};try{return t.parse(i)}catch(n){console.warn(`[ExtensionCoordinator] Config parse failed for "${e}", starting with schema defaults:`,n instanceof Error?n.message:n);try{return t.parse({})}catch{console.warn(`[ExtensionCoordinator] Fallback config parse also failed for "${e}" — config will be absent`);return}}}function j(e,t,n){let r;if(n.pkg.configSchema)try{r=e.loadConfig?.(t)}catch(e){console.error(`[ExtensionCoordinator] loadConfig threw for "${t}":`,e)}return oe(t,n.pkg.configSchema,n.configDefaults,r)}function M(e,t,n){if(!e.extensionContextBase)throw Error(`ExtensionCoordinator: extensionContextBase is required to start extensions with a create factory. Provide it via the constructor.`);return{...e.extensionContextBase,bus:e.bus,identity:t.identity,dataDir:a.join(e.extensionContextBase.makaioHome,t.identity.extensionName),getService:t=>e.getExtensionService(t.name),signal:e.signal,hasExtension:e.hasActiveExtension,...n===void 0?{}:{config:n}}}function N(e){return{adapters:!!e.adapters?.length,tools:!!e.tools,triggers:!!e.triggers,providers:!!e.providers?.length,clients:!!e.clients?.length,ui:!!e.ui,storage:!!e.storage,sessionEventActions:!!e.sessionEventActions}}function P(e,t,r){let i=t.state;t.state=r,e.emit(n.stateChanged,{name:t.pkg.name,displayName:t.pkg.displayName,from:i,to:r,...t.error===void 0?{}:{error:t.error},contributes:N(t.pkg)}).catch(e=>{console.error(`[ExtensionCoordinator] stateChanged emit failed for "${t.pkg.name}":`,e)})}async function F(e,t,n,r,i){i===`activated`?await I(e,t,n,r):await L(e,n)}async function I(e,t,n,r){let i=[];try{for(let a of e){if(a.filter&&!a.filter(r.pkg))continue;let e=M(t,r,j(t,n,r));await a.processActivated(n,r.pkg,e),i.push(a)}}catch(e){for(let e of i.reverse())if(e.processStopped)try{await e.processStopped(n)}catch(e){console.error(`[ExtensionCoordinator] Contribution processor rollback error for "${n}":`,e)}throw e}}async function L(e,t){for(let n of[...e].reverse())if(n.processStopped)try{await n.processStopped(t)}catch(e){console.error(`[ExtensionCoordinator] Contribution processor error (stopped) for "${t}":`,e)}}async function R(e,t,r){let i=e.entries.get(t);if(!i)return!1;let a=r?await z(e,t,i):await B(e,t,i),o=i.enabled===r;return!a&&!o||(await e.persistEnabled?.(t,r),!a)?!1:(e.bus.emit(n.enabledChanged,{name:t,enabled:r}).catch(e=>{console.error(`[ExtensionCoordinator] enabledChanged emit failed for "${t}":`,e)}),!0)}async function z(e,t,n){if(n.state!==`stopped`&&n.state!==`failed`&&n.state!==`skipped`)return!1;let{pkg:r}=n,i,a=(r.dependencies??[]).filter(t=>{if(t.optional)return!1;let n=e.entries.get(t.name);return!n||n.state!==`active`});if(a.length>0)return n.error=`Required dependencies not active: ${a.map(e=>e.name).join(`, `)}`,console.error(`[ExtensionCoordinator] Cannot re-enable "${t}":`,n.error),P(e.bus,n,`failed`),!1;n.enabled=!0,n.error=void 0,P(e.bus,n,`initializing`);let o=j(e,t,n);if(r.storage?.registerHandlers&&e.db!==void 0)try{let t=M(e,n,o),a=r.storage.registerHandlers(e.bus,e.db,t);typeof a==`function`&&(i=a,n.storageCleanup=a)}catch(r){return n.error=r instanceof Error?r.message:String(r),console.error(`[ExtensionCoordinator] Extension "${t}" storage re-registration failed:`,r),P(e.bus,n,`failed`),!1}if(r.create){let a;try{let t=M(e,n,o);a=await r.create(t),await a.init?.(),n.service=a}catch(r){return await V(t,a,i,n),r instanceof _?n.pkg.critical?(n.error=`Critical extension cannot skip startup: ${r.reason}`,console.error(`[ExtensionCoordinator] Extension "${t}" failed to re-initialize:`,n.error),P(e.bus,n,`failed`),!1):(n.error=r.reason,P(e.bus,n,`skipped`),!1):(n.error=r instanceof Error?r.message:String(r),console.error(`[ExtensionCoordinator] Extension "${t}" failed to re-initialize:`,r),P(e.bus,n,`failed`),!1)}}try{await F(e.contributionProcessors,e,t,n,`activated`)}catch(r){return await V(t,n.service,i,n),n.service=void 0,n.error=r instanceof Error?r.message:String(r),console.error(`[ExtensionCoordinator] Extension "${t}" contribution processing failed:`,r),P(e.bus,n,`failed`),!1}return P(e.bus,n,`active`),await e.runHealthCheck(t),await e.emitWarningsForEntry(t,n),!0}async function B(e,t,r){if(r.state!==`active`)return!1;let i=Array.from(e.entries.entries()).filter(([e,n])=>e===t||n.state!==`active`?!1:n.pkg.dependencies?.some(e=>!e.optional&&e.name===t)??!1).map(([e])=>e);if(i.length>0)return r.error=`Cannot disable "${t}" while active dependents remain: ${i.join(`, `)}`,console.error(`[ExtensionCoordinator] ${r.error}`),!1;if(r.enabled=!1,r.error=void 0,await F(e.contributionProcessors,e,t,r,`stopped`),r.service)try{await r.service.destroy?.()}catch(e){console.error(`[ExtensionCoordinator] Error during disable destroy of "${t}":`,e)}finally{r.service=void 0}if(r.storageCleanup)try{r.storageCleanup()}catch(e){console.error(`[ExtensionCoordinator] Storage cleanup error during disable of "${t}":`,e)}finally{r.storageCleanup=void 0}P(e.bus,r,`stopped`),r.warnings=[];try{await e.bus.emit(n.warnings.changed,{extensionName:t,warnings:[]})}catch(e){console.error(`[ExtensionCoordinator] warnings.changed emit failed for "${t}":`,e)}return!0}async function V(e,t,n,r){try{await t?.destroy?.()}catch(t){console.error(`[ExtensionCoordinator] Service cleanup error after failed enable of "${e}":`,t)}try{n?.()}catch(t){console.error(`[ExtensionCoordinator] Storage cleanup error after failed enable of "${e}":`,t)}finally{r.storageCleanup=void 0}}function H(e){let t=new Map;for(let n of e)t.has(n.name)&&(console.info(`[ExtensionCoordinator] Extension "${n.name}" overrides an earlier registration`),t.delete(n.name)),t.set(n.name,n);return[...t.values()]}function U(e,t,n){let r=new Set(e.map(e=>e.name)),i=e.filter(e=>W(e,t,n)),a=new Map(i.map(e=>[e.name,e])),o=new Set(a.keys()),s=!0;for(;s;){s=!1;for(let e of o)(a.get(e).dependencies??[]).some(e=>!e.optional&&r.has(e.name)&&!o.has(e.name))&&(o.delete(e),s=!0)}return i.filter(e=>o.has(e.name))}function W(e,t,n){if(!K(e,t))return!1;let r=e.requires;return!r||r.length===0||!n?!0:r.every(e=>{switch(e.type){case`host`:return n.hosts.has(e.id);case`capability`:return n.capabilities.has(e.id)?e.version===void 0?!0:G(n,e.id,e.version):!1}})}function G(e,t,n){let r=e.capabilityVersions?.get(t);return r!==void 0&&l(r,n)}function K(e,t){return e.surface===void 0||e.surface===`any`||e.surface===t}function se(e){let t=ce(e);return le(e,t,new Map(e.map(e=>[e.name,e]))),fe(t,de(e,t))}function ce(e){let t=new Set;for(let n of e){if(t.has(n.name))throw Error(`ExtensionCoordinator: duplicate package name detected: "${n.name}"`);t.add(n.name)}return t}function le(e,t,n){for(let r of e)ue(r,t,n)}function ue(e,t,n){let r=e.dependencies??[],i=r.filter(e=>!e.optional&&!t.has(e.name));if(i.length>0)throw Error(`ExtensionCoordinator: package "${e.name}" declares missing dependencies: ${i.map(e=>e.name).join(`, `)}`);for(let t of r){let r=n.get(t.name);if(r===void 0)continue;let i=r.version;if(!l(i,t.version))throw Error(`ExtensionCoordinator: package "${e.name}" dependency "${t.name}" version ${i} does not satisfy ${t.version}`)}}function de(e,t){let n=new Map;for(let r of e){let e=(r.dependencies??[]).filter(e=>t.has(e.name)).map(e=>e.name);n.set(r.name,new Set(e))}return n}function fe(e,t){let n=[];for(let[e,r]of t)r.size===0&&n.push(e);let r=[],i=new Set;for(;n.length>0;){let e=n.shift();if(!i.has(e)){i.add(e),r.push(e);for(let[r,a]of t)a.has(e)&&(a.delete(e),a.size===0&&!i.has(r)&&n.push(r))}}if(r.length!==e.size){let t=[...e].filter(e=>!i.has(e));throw Error(`ExtensionCoordinator: circular dependency detected among: ${t.join(`, `)}`)}return r}async function pe(e){if(!e.runMigrations)return;let t=[];for(let n of e.loadOrder){let r=e.entries.get(n);if(!r)throw Error(`Extension "${n}" is in loadOrder but missing from entries`);let i=r.pkg.storage?.migrations;if(!i)continue;let a,o;if(typeof i==`string`)a=q(n,r.pkg,i);else{let e={};for(let[t,a]of Object.entries(i))a!==void 0&&(e[t]=q(n,r.pkg,a));let t=c(e);if(t===void 0)continue;a=t,o=e}t.push({name:n,migrationsPath:a,migrationSourceId:r.pkg.storage?.migrationSourceId??a,...o?{migrationsPathByDialect:o}:{}})}t.length!==0&&await e.runMigrations(t)}function q(e,t,n){if(a.isAbsolute(n))return n;let r=t.storage?.packageRoot;if(!r)throw Error(`Extension "${e}" declares relative storage.migrations "${n}" without storage.packageRoot`);let i=a.resolve(r),o=a.resolve(i,n),s=a.relative(i,o);if(s.startsWith(`..`)||a.isAbsolute(s))throw Error(`Extension "${e}" declares storage.migrations "${n}" outside storage.packageRoot`);return o}async function J(e,t){let r=e.entries.get(t);if(!r?.service||r.state!==`active`)return;let{checkHealth:i}=r.service;if(!i)return;let a;try{let e=await i.call(r.service),n=d.array().safeParse(e);n.success?a=n.data:(console.error(`[ExtensionCoordinator] checkHealth for "${t}" returned invalid data:`,n.error),a=[])}catch(e){console.error(`[ExtensionCoordinator] checkHealth threw for "${t}":`,e),a=[]}r.warnings=a;try{await e.bus.emit(n.warnings.changed,{extensionName:t,warnings:[...a]})}catch(e){console.error(`[ExtensionCoordinator] warnings.changed emit failed for "${t}":`,e)}}function me(e,t){if(t.windows)for(let n of t.windows)e.windowRegistry.register(t.name,t.displayName,n);if(t.tray&&e.trayEntries.push({...t.tray,packageName:t.name}),t.cli){let n=t.cli;`subcommands`in n&&e.cliContributions.push(n)}}function he(e){return Array.from(e.values()).filter(e=>e.enabled).map(e=>e.pkg).filter(e=>!!e.http)}async function ge(e){let t=[...e.loadOrder].reverse();for(let n of t){let t=e.entries.get(n);if(t){if(t.state===`active`&&await F(e.contributionProcessors,e.contextHost,n,t,`stopped`),t.service)try{await t.service.destroy?.()}catch(e){console.error(`[ExtensionCoordinator] Error during shutdown of "${n}":`,e)}finally{t.service=void 0}if(t.storageCleanup)try{t.storageCleanup()}catch(e){console.error(`[ExtensionCoordinator] Storage cleanup error for "${n}":`,e)}finally{t.storageCleanup=void 0}t.state===`active`&&P(e.contextHost.bus,t,`stopped`)}}}async function _e(e,t){if(!t.tray)return;let n=Y(t);await e.request(p.register,{entry:n})}function Y(e){let t=e.tray;if(!t)throw Error(`[tray-menu-entry-bridge] extension "${e.name}" does not declare a tray entry`);return{packageName:e.name,entryId:t.opensWindow??t.action??`default`,label:t.label,section:t.section??`views`,priority:50,enabled:!0,metadata:t.opensWindow?{registrationId:`${e.name}:${t.opensWindow}`}:t.action?{action:t.action}:void 0}}async function ve(e,t,n){if(!n.enabled){P(e.bus,n,`skipped`),e.bootProgress.skipped(n.pkg,`disabled`);return}let r=(n.pkg.dependencies??[]).filter(t=>t.optional?!1:e.entries.get(t.name)?.state!==`active`);if(r.length>0){let i=`Required dependencies not active: ${r.map(e=>e.name).join(`, `)}`;if(Q(e,t,n,i),n.pkg.critical)throw Error(`Critical package "${t}" failed: ${i}`);return}e.bootProgress.starting(n.pkg),P(e.bus,n,`initializing`);let i=j(e.contextHost,t,n);if(xe(e,t,n,i)){if(!n.pkg.create){await ye(e,t,n);return}await be(e,t,n,i)}}async function ye(e,t,n){try{await F(e.contributionProcessors,e.contextHost,t,n,`activated`)}catch(r){if(Z(t,n),X(e,t,n,r))return;if(Q(e,t,n,r instanceof Error?r.message:String(r)),n.pkg.critical)throw r;return}P(e.bus,n,`active`),e.bootProgress.ready(n.pkg),await $(e.bus,t,n)}async function be(e,t,n,r){let i;try{let a=M(e.contextHost,n,r);i=await n.pkg.create(a),await i.init?.(),n.service=i,await F(e.contributionProcessors,e.contextHost,t,n,`activated`),P(e.bus,n,`active`),e.bootProgress.ready(n.pkg),await $(e.bus,t,n)}catch(r){try{await i?.destroy?.()}catch(e){console.error(`[ExtensionCoordinator] Service cleanup error after failed start of "${t}":`,e)}if(n.service=void 0,Z(t,n),X(e,t,n,r))return;if(Q(e,t,n,r instanceof Error?r.message:String(r)),n.pkg.critical)throw r}}function X(e,t,n,r){if(!(r instanceof _))return!1;if(n.pkg.critical){let i=`Critical package cannot skip startup: ${r.reason}`;throw Q(e,t,n,i),Error(`Critical package "${t}" failed: ${i}`,{cause:r})}return n.error=r.reason,console.info(`[ExtensionCoordinator] Package "${t}" skipped: ${r.reason}`),P(e.bus,n,`skipped`),e.bootProgress.skipped(n.pkg,r.reason),!0}function xe(e,t,n,r){if(!n.pkg.storage?.registerHandlers||e.db===void 0)return!0;try{let t=M(e.contextHost,n,r),i=n.pkg.storage.registerHandlers(e.bus,e.db,t);return i&&(n.storageCleanup=i),!0}catch(r){let i=r instanceof Error?r.message:String(r);if(console.error(`[ExtensionCoordinator] Package "${t}" storage registration failed:`,r),Q(e,t,n,i),n.pkg.critical)throw r;return!1}}function Z(e,t){if(t.storageCleanup)try{t.storageCleanup()}catch(t){console.error(`[ExtensionCoordinator] Storage cleanup error after failed start of "${e}":`,t)}finally{t.storageCleanup=void 0}}function Q(e,t,n,r){n.error=r,console.error(`[ExtensionCoordinator] Package "${t}" failed:`,r),P(e.bus,n,`failed`),e.bootProgress.failed(n.pkg,r)}async function $(e,t,n){try{await _e(e,n.pkg)}catch(e){console.warn(`[ExtensionCoordinator] Failed to register tray entry for ${t}:`,e)}}var Se=class{bus;surface;db;extensionContextBase;runtimeEnvironment;shutdownController=new AbortController;entries=new Map;loadOrder=[];loaded=!1;started=!1;rpcCleanups=[];contributionProcessors=[];warningActionMap=new Map;windowRegistry=new e;_trayEntries=[];_cliContributions=[];persistEnabled;loadEnabled;loadConfig;runMigrations;constructor(e,t={}){this.bus=e,this.surface=t.surface??`headless`,this.db=t.db,this.extensionContextBase=t.extensionContextBase,this.runtimeEnvironment=t.runtimeEnvironment,this.persistEnabled=t.persistEnabled,this.loadEnabled=t.loadEnabled,this.loadConfig=t.loadConfig,this.runMigrations=t.runMigrations,this.rpcCleanups.push(te(this.bus,this.warningActionMap,t.launcherCommand??`makaio`))}get trayEntries(){return this._trayEntries.map(e=>({...e}))}get cliContributions(){return this._cliContributions}extensionsWithHttp(){return he(this.entries)}load(e,t){if(this.loaded)throw Error(`ExtensionCoordinator.load() called twice. The coordinator is single-use; create a new instance if needed.`);let n=H(U(e,this.surface,this.runtimeEnvironment));this.loadOrder=se(n);for(let e of this.loadOrder){let r=n.find(t=>t.name===e),i={pkg:r,identity:ae(r.name),state:`discovered`,enabled:this.loadEnabled?.(e)!==!1,warnings:[]};if(t){let n=t.get(e);n&&(i.configDefaults=n)}this.entries.set(e,i),r.namespaces&&this.bus.registerNamespaces(r.namespaces),me({windowRegistry:this.windowRegistry,trayEntries:this._trayEntries,cliContributions:this._cliContributions},r)}this.rpcCleanups.push(...O({bus:this.bus,entries:this.entries,cliContributions:this._cliContributions,list:()=>this.list(),handleSetEnabled:(e,t)=>this.handleSetEnabled(e,t)})),this.loaded=!0}async startAll(){if(!this.loaded)throw Error(`ExtensionCoordinator.startAll() called before load(). Call load() first.`);if(this.started)throw Error(`ExtensionCoordinator.startAll() called twice. The coordinator is single-use; create a new instance if needed.`);this.started=!0;let e=new y(this.bus,this.loadOrder.length);this.rpcCleanups.push(()=>e.dispose());try{await pe({loadOrder:this.loadOrder,entries:this.entries,runMigrations:this.runMigrations});for(let t of this.loadOrder){let n=this.entries.get(t);n&&await ve({bus:this.bus,db:this.db,entries:this.entries,contributionProcessors:this.contributionProcessors,contextHost:this.createExtensionContextHost(),bootProgress:e},t,n)}let t=this.createExtensionHealthHost();await Promise.all(this.loadOrder.map(e=>this.entries.get(e)?.state===`active`?J(t,e):void 0)),await ne({bus:this.bus,entries:this.entries,warningActionMap:this.warningActionMap})}finally{e.complete()}}async shutdown(){this.shutdownController.abort();for(let e of this.rpcCleanups)e();this.rpcCleanups=[],this.warningActionMap.clear(),await ge({entries:this.entries,loadOrder:this.loadOrder,contributionProcessors:this.contributionProcessors,contextHost:this.createExtensionContextHost()})}list(){return[...this.entries.values()].map(e=>D(e))}getExtensionService(e){let t=typeof e==`string`?e:e.name;return this.entries.get(t)?.service}getExtension(e){return this.entries.get(e)?.pkg}getLoadedProviderDefinitionIds(){let e=new Set;for(let t of this.entries.values())if(t.enabled&&!(t.state===`failed`||t.state===`skipped`||t.state===`stopped`))for(let n of t.pkg.providers??[])e.add(n.id);return e}forEachActiveExtension(e){let t=this.createExtensionContextHost();for(let n of this.loadOrder){let r=this.entries.get(n);if(!r||r.state!==`active`)continue;let i=M(t,r,j(t,n,r));e(n,r.pkg,i)}}forExtension(e,t){let n=this.entries.get(e);if(!n||n.state!==`active`)return;let r=this.createExtensionContextHost(),i=M(r,n,j(r,e,n));t(e,n.pkg,i)}registerContributionProcessor(e){return this.contributionProcessors.push(e),()=>{let t=this.contributionProcessors.indexOf(e);t>=0&&this.contributionProcessors.splice(t,1)}}async handleSetEnabled(e,t){return R({bus:this.bus,db:this.db,entries:this.entries,extensionContextBase:this.extensionContextBase,loadConfig:this.loadConfig,signal:this.shutdownController.signal,hasActiveExtension:e=>this.hasActiveExtension(e),persistEnabled:this.persistEnabled,contributionProcessors:this.contributionProcessors,getExtensionService:e=>this.getExtensionService(e),runHealthCheck:e=>J(this.createExtensionHealthHost(),e),emitWarningsForEntry:(e,t)=>A({bus:this.bus,entries:this.entries,warningActionMap:this.warningActionMap},e,t)},e,t)}createExtensionContextHost(){return{bus:this.bus,extensionContextBase:this.extensionContextBase,loadConfig:this.loadConfig,signal:this.shutdownController.signal,hasActiveExtension:e=>this.hasActiveExtension(e),getExtensionService:e=>this.getExtensionService(e)}}createExtensionHealthHost(){return{bus:this.bus,entries:this.entries}}hasActiveExtension(e){return this.entries.get(e)?.state===`active`}};export{h as a,_ as i,H as n,g as o,U as r,Se as t};
@@ -0,0 +1 @@
1
+ import{n as e}from"./definition-K3m51lgO.mjs";import{n as t,t as n}from"./version-C1-VD-XL.mjs";import{z as r}from"zod";const i=r.object({entrypoint:r.string().startsWith(`/`,{message:`Entrypoint must be a URL path starting with "/"`})}),a=r.object({endpoint:r.string().url().optional()}),o=r.union([e,r.object({anthropic:a.optional(),openai:a.optional()}).refine(e=>Object.keys(e).length>0,{message:`ProtocolRef config object must specify at least one protocol`})]),s=r.object({id:r.string().min(1),version:t,binaryVersion:t.optional()}),c=r.object({name:r.string().min(1),displayName:r.string().min(1).optional(),description:r.string().optional(),clients:r.array(s).readonly().optional(),protocols:r.array(o).readonly(),defaultProvider:r.string().min(1).optional()}),l=r.object({id:r.string().min(1),name:r.string().min(1),description:r.string().optional(),binary:r.object({name:r.string().min(1),managed:r.boolean().optional(),version:n.optional()}).strict().refine(e=>e.managed!==!0||e.version!==void 0,{message:`binary.version is required when binary.managed is true`,path:[`version`]}).refine(e=>e.version===void 0||e.managed===!0,{message:`binary.managed must be true when binary.version is provided`,path:[`managed`]}).optional()}).strict(),u=r.object({id:r.string().min(1),name:r.string().min(1),description:r.string().optional()}),d=r.object({prefix:r.string().min(1),description:r.string().optional(),stage:r.enum([`gather`,`transform`,`action`]).optional()}),f=r.object({adapterName:r.string().min(1),displayName:r.string().min(1),logFilePattern:r.string().min(1).optional()}),p=r.object({id:r.string().min(1),label:r.string().min(1),description:r.string().optional(),icon:r.string().min(1).optional(),selectionMode:r.enum([`single`,`multi`]),messageRoles:r.array(r.enum([`user`,`assistant`])).readonly().optional()}),m=r.enum([`beforeCreate`,`beforeRevise`,`afterCreate`,`afterRevise`,`afterStatusChanged`,`afterObservationAdded`]),h=r.object({id:r.string().min(1),event:m,kind:r.string().min(1).optional(),schemaVersion:r.string().min(1).optional()}),g=r.object({tiles:r.boolean().optional(),widgets:r.boolean().optional(),pages:r.boolean().optional(),routes:r.boolean().optional()}),_={adapters:`adapter`,clients:`client`,providers:`provider`,triggers:`trigger`,logImporters:`log importer`,sessionEventActions:`session event action`,artifactLifecycleHooks:`artifact lifecycle hook`};function v(e,t,n){e.addIssue({code:r.ZodIssueCode.custom,path:[t],message:`Duplicate ${_[t]} contribution identifier "${n}"`})}function y(e,t){let n=new Set,r=new Set,i=[];for(let a of e??[]){let e=t(a);if(n.has(e)){r.has(e)||(r.add(e),i.push(e));continue}n.add(e)}return i}const b=r.object({adapters:r.array(c).readonly().optional(),clients:r.array(l).readonly().optional(),providers:r.array(u).readonly().optional(),triggers:r.array(d).readonly().optional(),logImporters:r.array(f).readonly().optional(),sessionEventActions:r.array(p).readonly().optional(),artifactLifecycleHooks:r.array(h).readonly().optional(),create:r.boolean().optional(),tools:r.boolean().optional(),bootstrap:r.boolean().optional(),namespace:r.boolean().optional(),configSchema:r.boolean().optional(),uiConfig:r.boolean().optional(),ui:g.optional()}).superRefine((e,t)=>{for(let n of y(e.adapters,e=>e.name))v(t,`adapters`,n);for(let n of y(e.clients,e=>e.id))v(t,`clients`,n);for(let n of y(e.providers,e=>e.id))v(t,`providers`,n);for(let n of y(e.triggers,e=>e.prefix))v(t,`triggers`,n);for(let n of y(e.logImporters,e=>e.adapterName))v(t,`logImporters`,n);for(let n of y(e.sessionEventActions,e=>e.id))v(t,`sessionEventActions`,n);for(let n of y(e.artifactLifecycleHooks,e=>e.id))v(t,`artifactLifecycleHooks`,n)}),x=r.string().trim().min(1).transform(e=>e),S=r.object({name:r.string().min(1),required:r.boolean().optional()}),C=r.object({id:r.string(),style:r.enum([`tray-popover`,`utility`,`panel`]),width:r.number().optional(),height:r.number().optional(),singleton:r.boolean().optional(),params:r.array(S).readonly().optional()}).superRefine((e,t)=>{let n=new Set;for(let[i,a]of e.params?.entries()??[]){if(!n.has(a.name)){n.add(a.name);continue}t.addIssue({code:r.ZodIssueCode.custom,message:`Duplicate window param "${a.name}"`,path:[`params`,i,`name`]})}}),w=r.object({label:r.string(),section:r.enum([`utilities`,`tools`,`views`]).optional(),opensWindow:r.string().optional(),action:r.string().optional()}),T=r.object({name:r.string().min(1),description:r.string(),required:r.boolean().optional(),positional:r.boolean().optional(),short:r.string().regex(/^-[A-Za-z0-9]$/,`Expected a short flag like -p`).optional(),type:r.enum([`string`,`boolean`,`number`]).optional()}),E=r.object({name:r.string().min(1),description:r.string(),args:r.array(T).readonly().optional()}),D=r.object({name:r.string().min(1),description:r.string(),subcommands:r.array(E).readonly().optional(),hasInteractive:r.boolean().optional(),canProvideBus:r.boolean().optional()}),O=[`sqlite`,`postgres`];function k(e){if(e!==void 0)return typeof e==`string`?e:e.sqlite??Object.values(e).find(e=>e!==void 0)}function A(e){if(e===void 0)return[];if(typeof e==`string`)return[e];let t=new Set;for(let n of Object.values(e))n!==void 0&&t.add(n);return[...t]}const j=r.string().min(1).refine(e=>!/^(?:[\\/]|[A-Za-z]:)/.test(e),`Expected a relative path`).refine(e=>!e.split(/[\\/]/).some(e=>e===``||e===`.`||e===`..`),`Path must not contain empty or dot segments`),M=r.object({migrations:r.union([j,r.object({sqlite:j.optional(),postgres:j.optional()}).strict().refine(e=>Object.values(e).some(e=>e!==void 0),`Per-dialect storage.migrations must declare at least one chain`)]).optional(),migrationSourceId:r.string().min(1).optional()}),N=r.object({type:r.literal(`extension`),name:r.string().min(1),version:t,optional:r.boolean().optional()});function P(e,t=`>=0.1.0`,n){return n===void 0?{type:`extension`,name:e,version:t}:{type:`extension`,name:e,version:t,optional:n}}const F=r.discriminatedUnion(`type`,[r.object({type:r.literal(`host`),id:r.string().min(1)}),r.object({type:r.literal(`capability`),id:r.string().min(1),version:t.optional()})]),I=r.object({name:r.string().min(1).regex(/^(@[^/\\]+\/)?[^/\\]+$/,`Extension name must be a plain identifier or an npm-scoped name (@scope/pkg)`).refine(e=>(e.startsWith(`@`)?e.split(`/`):[e]).every(e=>e!==`.`&&e!==`..`),`Extension name must not be a dot-segment`),displayName:r.string().min(1),version:n,surface:r.enum([`interactive`,`headless`,`any`]).optional(),dependencies:r.array(N).readonly().optional(),requires:r.array(F).readonly().optional(),provides:r.array(x).readonly().optional(),windows:r.array(C).readonly().optional(),tray:w.optional(),cli:D.optional(),storage:M.optional(),browser:i.optional(),contributions:b.optional()});function L(e){return Object.freeze({name:e})}const R=r.object({command:r.string().min(1),args:r.array(r.string()).optional(),env:r.record(r.string(),r.string()).optional(),healthTimeoutMs:r.number().int().positive().optional(),shutdownTimeoutMs:r.number().int().positive().optional()}),z=r.enum([`none`,`on-crash`,`always`]),B=R.extend({restartPolicy:z.optional()}),V=r.discriminatedUnion(`type`,[B.extend({type:r.literal(`bus-stdio`)}),B.extend({type:r.literal(`bus-websocket`)}),R.extend({type:r.literal(`mcp-stdio`)})]);function H(e){if(e.includes(`\\`)||e.startsWith(`./`)||e.startsWith(`../`)||e.startsWith(`/`))return!1;let t=e.split(`/`),n=t.at(-1);return!n||n.includes(`.`)?!1:t.every(e=>e!==``&&e!==`.`&&e!==`..`&&e!==`src`&&e!==`dist`)}const U=r.union([r.literal(!0),r.string().min(1).refine(H,{message:`entrypoint stem must use forward-slash path stems, must not contain empty, . or .. segments, must not include a dotted final segment, and must not contain src or dist segments`})]),W=r.object({server:U.optional(),browser:U.optional(),cli:U.optional()}).refine(e=>e.server!==void 0||e.browser!==void 0||e.cli!==void 0,{message:`at least one entrypoint must be declared`});function G(e){return e.execution===`detached`}const K=I.extend({version:n,makaio:r.object({framework:t}).strict().readonly(),entrypoints:W.optional(),execution:r.enum([`embedded`,`detached`]).optional(),transport:V.optional(),config:r.object({defaults:r.record(r.string(),r.unknown()).optional()}).optional()}).superRefine((e,t)=>{e.execution===`detached`?(e.transport===void 0&&t.addIssue({code:r.ZodIssueCode.custom,message:`detached extensions must declare a 'transport' config`,path:[`transport`]}),e.entrypoints!==void 0&&t.addIssue({code:r.ZodIssueCode.custom,message:`detached extensions must not declare entrypoints`,path:[`entrypoints`]})):(e.entrypoints===void 0&&t.addIssue({code:r.ZodIssueCode.custom,message:`embedded extensions must declare at least one entrypoint`,path:[`entrypoints`]}),e.transport!==void 0&&t.addIssue({code:r.ZodIssueCode.custom,message:`embedded extensions must not declare a transport config`,path:[`transport`]}))});function q(e){return e}function J(e){return q(K.parse(e))}function Y(e){let t=K.safeParse(e);return t.success?{success:!0,data:q(t.data)}:t}const X=r.discriminatedUnion(`kind`,[r.object({kind:r.literal(`configure-integration`),clientId:r.string().min(1),bundle:r.string().min(1)}),r.object({kind:r.literal(`install-extension`),extensionName:r.string().min(1)}),r.object({kind:r.literal(`open-url`),url:r.string().url()}),r.object({kind:r.literal(`run-command`),command:r.string().min(1)})]),Z=r.enum([`info`,`recommended`,`degraded`]),Q=r.object({severity:Z,title:r.string().min(1),message:r.string().min(1),action:X.optional()});function $(e){switch(e.kind){case`configure-integration`:return`Configure`;case`install-extension`:return`Install`;case`open-url`:return`Open`;case`run-command`:return`Run`}}const ee=r.object({extensionName:r.string().min(1),warnings:r.array(Q)});function te(e,t){return e.parse(t??{})}function ne(e){return JSON.stringify([e.extensionId,e.type,e.name,e.filename])}export{s as A,p as B,w as C,P as D,A as E,b as F,g as H,f as I,a as L,m as M,h as N,k as O,l as P,o as R,M as S,S as T,i as U,d as V,E as _,Q as a,F as b,V as c,G as d,J as f,D as g,T as h,ee as i,c as j,x as k,K as l,L as m,te as n,Z as o,Y as p,X as r,$ as s,ne as t,W as u,N as v,C as w,O as x,I as y,u as z};
@@ -1 +1 @@
1
- import{FileSystemSubjects as e,FsSubjects as t}from"./services/filesystem/namespace.mjs";import*as n from"node:fs/promises";import*as r from"node:path";import{BaseService as i}from"@makaio/framework/service-base";import*as a from"node:os";const o=[`node_modules`,`.git`,`dist`,`build`,`.next`,`coverage`,`.turbo`,`.cache`];function s(e){return e.split(r.sep).filter(Boolean)}function c(e){let t=r.dirname(e);return t===e?null:t}function l(e){let t=s(e),n=[],i=r.parse(e).root;for(let e of t)i=r.join(i,e),n.push({name:e,path:i});return n}async function u(e,t){let i=r.resolve(e),a=await n.readdir(i,{withFileTypes:!0}),u=t?.includeHidden??!1,d=new Set(t?.excludeNames??o),f=[],p=[];for(let e of a){if(e.name.startsWith(`.`)&&!u||d.has(e.name))continue;let t=r.join(i,e.name),a=e.isDirectory();try{let i=!1;if(a)try{await n.access(r.join(t,`.git`)),i=!0}catch{}let o=await n.stat(t);f.push({name:e.name,path:t,type:a?`directory`:`file`,isGitRepo:a?i:void 0,size:a?void 0:o.size,modified:o.mtimeMs})}catch(t){let n=t;p.push({name:e.name,code:n.code??`UNKNOWN`,message:n.message})}}f.sort((e,t)=>e.type===t.type?e.name.localeCompare(t.name):e.type===`directory`?-1:1);let m=!1;try{await n.access(r.join(i,`.git`)),m=!0}catch{}return{entries:f,isGitRepo:m,path:i,parentPath:c(i),segments:s(i),breadcrumbs:l(i),errors:p.length>0?p:void 0}}var d=class extends i{machineId;label;constructor(e,t,n=`Local`){super(e),this.machineId=t,this.label=n}async onInit(){this.registerHandler(e.listSources,e=>{e.identify?.(this.machineId),e.setResult({sources:[{machineId:this.machineId,label:this.label}]})}),this.addCleanup(this.bus.on(e.listDirectory,async e=>{let t=await u(e.payload.path??a.homedir(),e.payload.options);e.setResult(t)},{filter:{machineId:this.machineId}})),this.addCleanup(this.bus.on(e.getHomeDir,e=>{e.setResult({path:a.homedir()})},{filter:{machineId:this.machineId}})),this.registerHandler(t.glob,async e=>{let{pattern:t,cwd:i,limit:a=100,offset:o=0,ignore:s=[],machineId:c}=e.payload;if(this.requireMachineIdForRemote(e,c),c!==void 0&&!this.shouldHandle(c))return;let{globby:l}=await import(`./globby-D4SANVoq.mjs`).then(e=>e.n),u=await l(t,{cwd:i,ignore:[`node_modules/**`,`.git/**`,...s],absolute:!0,onlyFiles:!1,expandDirectories:!1}),d=u.length,f=o+a<d,p=u.slice(o,o+a),m=await Promise.all(p.map(async e=>{let t=r.relative(i,e),a=`file`,o;try{let t=await n.stat(e);a=t.isDirectory()?`directory`:`file`,o=t.isFile()?t.size:void 0}catch{}return{path:e,relativePath:t,type:a,size:o}}));e.setResult({files:m,truncated:f,total:d})}),this.registerHandler(t.readFile,async e=>{let{path:t,machineId:r,encoding:i=`utf-8`}=e.payload;if(this.requireMachineIdForRemote(e,r),r!==void 0&&!this.shouldHandle(r))return;let a=await n.readFile(t,{encoding:i});e.setResult({content:a})}),this.registerHandler(t.writeFile,async e=>{let{path:t,content:r,machineId:i,encoding:a=`utf-8`}=e.payload;this.requireMachineIdForRemote(e,i),!(i!==void 0&&!this.shouldHandle(i))&&(await n.writeFile(t,r,{encoding:a}),e.setResult({success:!0}))})}requireMachineIdForRemote(e,t){if(!this.isHostOwnedOrigin(e)&&t===void 0)throw Error(`machineId is required for remote filesystem access`)}isHostOwnedOrigin(e){return e.origin.local||e.transport?.transportName===`worker`&&e.transport.peer===void 0}shouldHandle(e){return e===this.machineId}};export{d as t};
1
+ import{FileSystemSubjects as e,FsSubjects as t}from"./services/filesystem/namespace.mjs";import*as n from"node:fs/promises";import*as r from"node:path";import{BaseService as i}from"@makaio/framework/service-base";import*as a from"node:os";const o=[`node_modules`,`.git`,`dist`,`build`,`.next`,`coverage`,`.turbo`,`.cache`];function s(e){return e.split(r.sep).filter(Boolean)}function c(e){let t=r.dirname(e);return t===e?null:t}function l(e){let t=s(e),n=[],i=r.parse(e).root;for(let e of t)i=r.join(i,e),n.push({name:e,path:i});return n}async function u(e,t){let i=r.resolve(e),a=await n.readdir(i,{withFileTypes:!0}),u=t?.includeHidden??!1,d=new Set(t?.excludeNames??o),f=[],p=[];for(let e of a){if(e.name.startsWith(`.`)&&!u||d.has(e.name))continue;let t=r.join(i,e.name),a=e.isDirectory();try{let i=!1;if(a)try{await n.access(r.join(t,`.git`)),i=!0}catch{}let o=await n.stat(t);f.push({name:e.name,path:t,type:a?`directory`:`file`,isGitRepo:a?i:void 0,size:a?void 0:o.size,modified:o.mtimeMs})}catch(t){let n=t;p.push({name:e.name,code:n.code??`UNKNOWN`,message:n.message})}}f.sort((e,t)=>e.type===t.type?e.name.localeCompare(t.name):e.type===`directory`?-1:1);let m=!1;try{await n.access(r.join(i,`.git`)),m=!0}catch{}return{entries:f,isGitRepo:m,path:i,parentPath:c(i),segments:s(i),breadcrumbs:l(i),errors:p.length>0?p:void 0}}var d=class extends i{machineId;label;constructor(e,t,n=`Local`){super(e),this.machineId=t,this.label=n}async onInit(){this.registerHandler(e.listSources,e=>{e.identify?.(this.machineId),e.setResult({sources:[{machineId:this.machineId,label:this.label}]})}),this.addCleanup(this.bus.on(e.listDirectory,async e=>{let t=await u(e.payload.path??a.homedir(),e.payload.options);e.setResult(t)},{filter:{machineId:this.machineId}})),this.addCleanup(this.bus.on(e.getHomeDir,e=>{e.setResult({path:a.homedir()})},{filter:{machineId:this.machineId}})),this.registerHandler(t.glob,async e=>{let{pattern:t,cwd:i,limit:a=100,offset:o=0,ignore:s=[],machineId:c}=e.payload;if(this.requireMachineIdForRemote(e,c),c!==void 0&&!this.shouldHandle(c))return;let{globby:l}=await import(`./globby-CisClzat.mjs`).then(e=>e.n),u=await l(t,{cwd:i,ignore:[`node_modules/**`,`.git/**`,...s],absolute:!0,onlyFiles:!1,expandDirectories:!1}),d=u.length,f=o+a<d,p=u.slice(o,o+a),m=await Promise.all(p.map(async e=>{let t=r.relative(i,e),a=`file`,o;try{let t=await n.stat(e);a=t.isDirectory()?`directory`:`file`,o=t.isFile()?t.size:void 0}catch{}return{path:e,relativePath:t,type:a,size:o}}));e.setResult({files:m,truncated:f,total:d})}),this.registerHandler(t.readFile,async e=>{let{path:t,machineId:r,encoding:i=`utf-8`}=e.payload;if(this.requireMachineIdForRemote(e,r),r!==void 0&&!this.shouldHandle(r))return;let a=await n.readFile(t,{encoding:i});e.setResult({content:a})}),this.registerHandler(t.writeFile,async e=>{let{path:t,content:r,machineId:i,encoding:a=`utf-8`}=e.payload;this.requireMachineIdForRemote(e,i),!(i!==void 0&&!this.shouldHandle(i))&&(await n.writeFile(t,r,{encoding:a}),e.setResult({success:!0}))})}requireMachineIdForRemote(e,t){if(!this.isHostOwnedOrigin(e)&&t===void 0)throw Error(`machineId is required for remote filesystem access`)}isHostOwnedOrigin(e){return e.origin.local||e.transport?.transportName===`worker`&&e.transport.peer===void 0}shouldHandle(e){return e===this.machineId}};export{d as t};
@@ -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"../supports-color-DcXkvGDF.mjs";import{t as i}from"../quick-lru-6e7I1Bgf.mjs";import*as a from"node:fs/promises";import{readFile as o}from"node:fs/promises";import*as s from"node:path";import c,{normalize as l}from"node:path";import{createHash as u}from"node:crypto";import{GitHookSubjects as d}from"@makaio/framework/contracts";import{BaseService as f}from"@makaio/framework/service-base";import{FsSubjects as p}from"@makaio/framework/services/filesystem/namespace";import{GitSubjects as m,GitSubjects as h}from"@makaio/framework/services/git/namespace";import{promisify as ee}from"util";import{exec as te,spawn as g}from"child_process";import{EventEmitter as _}from"node:events";import v from"path";import{FsSubjects as ne}from"@makaio/framework/services/filesystem";var y=n(((e,t)=>{var n=1e3,r=n*60,i=r*60,a=i*24,o=a*7,s=a*365.25;t.exports=function(e,t){t||={};var n=typeof e;if(n===`string`&&e.length>0)return c(e);if(n===`number`&&isFinite(e))return t.long?u(e):l(e);throw Error(`val is not a non-empty string or a valid number. val=`+JSON.stringify(e))};function c(e){if(e=String(e),!(e.length>100)){var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(t){var c=parseFloat(t[1]);switch((t[2]||`ms`).toLowerCase()){case`years`:case`year`:case`yrs`:case`yr`:case`y`:return c*s;case`weeks`:case`week`:case`w`:return c*o;case`days`:case`day`:case`d`:return c*a;case`hours`:case`hour`:case`hrs`:case`hr`:case`h`:return c*i;case`minutes`:case`minute`:case`mins`:case`min`:case`m`:return c*r;case`seconds`:case`second`:case`secs`:case`sec`:case`s`:return c*n;case`milliseconds`:case`millisecond`:case`msecs`:case`msec`:case`ms`:return c;default:return}}}}function l(e){var t=Math.abs(e);return t>=a?Math.round(e/a)+`d`:t>=i?Math.round(e/i)+`h`:t>=r?Math.round(e/r)+`m`:t>=n?Math.round(e/n)+`s`:e+`ms`}function u(e){var t=Math.abs(e);return t>=a?d(e,t,a,`day`):t>=i?d(e,t,i,`hour`):t>=r?d(e,t,r,`minute`):t>=n?d(e,t,n,`second`):e+` ms`}function d(e,t,n,r){var i=t>=n*1.5;return Math.round(e/n)+` `+r+(i?`s`:``)}})),b=n(((e,t)=>{function n(e){n.debug=n,n.default=n,n.coerce=c,n.disable=o,n.enable=i,n.enabled=s,n.humanize=y(),n.destroy=l,Object.keys(e).forEach(t=>{n[t]=e[t]}),n.names=[],n.skips=[],n.formatters={};function t(e){let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n),t|=0;return n.colors[Math.abs(t)%n.colors.length]}n.selectColor=t;function n(e){let t,i=null,a,o;function s(...e){if(!s.enabled)return;let r=s,i=Number(new Date);r.diff=i-(t||i),r.prev=t,r.curr=i,t=i,e[0]=n.coerce(e[0]),typeof e[0]!=`string`&&e.unshift(`%O`);let a=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,(t,i)=>{if(t===`%%`)return`%`;a++;let o=n.formatters[i];if(typeof o==`function`){let n=e[a];t=o.call(r,n),e.splice(a,1),a--}return t}),n.formatArgs.call(r,e),(r.log||n.log).apply(r,e)}return s.namespace=e,s.useColors=n.useColors(),s.color=n.selectColor(e),s.extend=r,s.destroy=n.destroy,Object.defineProperty(s,`enabled`,{enumerable:!0,configurable:!1,get:()=>i===null?(a!==n.namespaces&&(a=n.namespaces,o=n.enabled(e)),o):i,set:e=>{i=e}}),typeof n.init==`function`&&n.init(s),s}function r(e,t){let r=n(this.namespace+(t===void 0?`:`:t)+e);return r.log=this.log,r}function i(e){n.save(e),n.namespaces=e,n.names=[],n.skips=[];let t=(typeof e==`string`?e:``).trim().replace(/\s+/g,`,`).split(`,`).filter(Boolean);for(let e of t)e[0]===`-`?n.skips.push(e.slice(1)):n.names.push(e)}function a(e,t){let n=0,r=0,i=-1,a=0;for(;n<e.length;)if(r<t.length&&(t[r]===e[n]||t[r]===`*`))t[r]===`*`?(i=r,a=n,r++):(n++,r++);else if(i!==-1)r=i+1,a++,n=a;else return!1;for(;r<t.length&&t[r]===`*`;)r++;return r===t.length}function o(){let e=[...n.names,...n.skips.map(e=>`-`+e)].join(`,`);return n.enable(``),e}function s(e){for(let t of n.skips)if(a(e,t))return!1;for(let t of n.names)if(a(e,t))return!0;return!1}function c(e){return e instanceof Error?e.stack||e.message:e}function l(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return n.enable(n.load()),n}t.exports=n})),x=n(((e,t)=>{e.formatArgs=r,e.save=i,e.load=a,e.useColors=n,e.storage=o(),e.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),e.colors=`#0000CC.#0000FF.#0033CC.#0033FF.#0066CC.#0066FF.#0099CC.#0099FF.#00CC00.#00CC33.#00CC66.#00CC99.#00CCCC.#00CCFF.#3300CC.#3300FF.#3333CC.#3333FF.#3366CC.#3366FF.#3399CC.#3399FF.#33CC00.#33CC33.#33CC66.#33CC99.#33CCCC.#33CCFF.#6600CC.#6600FF.#6633CC.#6633FF.#66CC00.#66CC33.#9900CC.#9900FF.#9933CC.#9933FF.#99CC00.#99CC33.#CC0000.#CC0033.#CC0066.#CC0099.#CC00CC.#CC00FF.#CC3300.#CC3333.#CC3366.#CC3399.#CC33CC.#CC33FF.#CC6600.#CC6633.#CC9900.#CC9933.#CCCC00.#CCCC33.#FF0000.#FF0033.#FF0066.#FF0099.#FF00CC.#FF00FF.#FF3300.#FF3333.#FF3366.#FF3399.#FF33CC.#FF33FF.#FF6600.#FF6633.#FF9900.#FF9933.#FFCC00.#FFCC33`.split(`.`);function n(){if(typeof window<`u`&&window.process&&(window.process.type===`renderer`||window.process.__nwjs))return!0;if(typeof navigator<`u`&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let e;return typeof document<`u`&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<`u`&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<`u`&&navigator.userAgent&&(e=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(e[1],10)>=31||typeof navigator<`u`&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function r(e){if(e[0]=(this.useColors?`%c`:``)+this.namespace+(this.useColors?` %c`:` `)+e[0]+(this.useColors?`%c `:` `)+`+`+t.exports.humanize(this.diff),!this.useColors)return;let n=`color: `+this.color;e.splice(1,0,n,`color: inherit`);let r=0,i=0;e[0].replace(/%[a-zA-Z%]/g,e=>{e!==`%%`&&(r++,e===`%c`&&(i=r))}),e.splice(i,0,n)}e.log=console.debug||console.log||(()=>{});function i(t){try{t?e.storage.setItem(`debug`,t):e.storage.removeItem(`debug`)}catch{}}function a(){let t;try{t=e.storage.getItem(`debug`)||e.storage.getItem(`DEBUG`)}catch{}return!t&&typeof process<`u`&&`env`in process&&(t=process.env.DEBUG),t}function o(){try{return localStorage}catch{}}t.exports=b()(e);let{formatters:s}=t.exports;s.j=function(e){try{return JSON.stringify(e)}catch(e){return`[UnexpectedJSONParseError]: `+e.message}}})),re=n(((t,n)=>{let i=e(`tty`),a=e(`util`);t.init=f,t.log=l,t.formatArgs=s,t.save=u,t.load=d,t.useColors=o,t.destroy=a.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."),t.colors=[6,2,3,4,5,1];try{let e=r();e&&(e.stderr||e).level>=2&&(t.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}t.inspectOpts=Object.keys(process.env).filter(e=>/^debug_/i.test(e)).reduce((e,t)=>{let n=t.substring(6).toLowerCase().replace(/_([a-z])/g,(e,t)=>t.toUpperCase()),r=process.env[t];return r=/^(yes|on|true|enabled)$/i.test(r)?!0:/^(no|off|false|disabled)$/i.test(r)?!1:r===`null`?null:Number(r),e[n]=r,e},{});function o(){return`colors`in t.inspectOpts?!!t.inspectOpts.colors:i.isatty(process.stderr.fd)}function s(e){let{namespace:t,useColors:r}=this;if(r){let r=this.color,i=`\x1B[3`+(r<8?r:`8;5;`+r),a=` ${i};1m${t} \u001B[0m`;e[0]=a+e[0].split(`
1
+ import{i as e,o as t,t as n}from"../chunk-DTipWd-i.mjs";import{t as r}from"../supports-color-Dzp6WuF5.mjs";import{t as i}from"../quick-lru-BLaSzINB.mjs";import*as a from"node:fs/promises";import{readFile as o}from"node:fs/promises";import*as s from"node:path";import c,{normalize as l}from"node:path";import{createHash as u}from"node:crypto";import{GitHookSubjects as d}from"@makaio/framework/contracts";import{BaseService as f}from"@makaio/framework/service-base";import{FsSubjects as p}from"@makaio/framework/services/filesystem/namespace";import{GitSubjects as m,GitSubjects as h}from"@makaio/framework/services/git/namespace";import{promisify as ee}from"util";import{exec as te,spawn as g}from"child_process";import{EventEmitter as _}from"node:events";import v from"path";import{FsSubjects as ne}from"@makaio/framework/services/filesystem";var y=n(((e,t)=>{var n=1e3,r=n*60,i=r*60,a=i*24,o=a*7,s=a*365.25;t.exports=function(e,t){t||={};var n=typeof e;if(n===`string`&&e.length>0)return c(e);if(n===`number`&&isFinite(e))return t.long?u(e):l(e);throw Error(`val is not a non-empty string or a valid number. val=`+JSON.stringify(e))};function c(e){if(e=String(e),!(e.length>100)){var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(t){var c=parseFloat(t[1]);switch((t[2]||`ms`).toLowerCase()){case`years`:case`year`:case`yrs`:case`yr`:case`y`:return c*s;case`weeks`:case`week`:case`w`:return c*o;case`days`:case`day`:case`d`:return c*a;case`hours`:case`hour`:case`hrs`:case`hr`:case`h`:return c*i;case`minutes`:case`minute`:case`mins`:case`min`:case`m`:return c*r;case`seconds`:case`second`:case`secs`:case`sec`:case`s`:return c*n;case`milliseconds`:case`millisecond`:case`msecs`:case`msec`:case`ms`:return c;default:return}}}}function l(e){var t=Math.abs(e);return t>=a?Math.round(e/a)+`d`:t>=i?Math.round(e/i)+`h`:t>=r?Math.round(e/r)+`m`:t>=n?Math.round(e/n)+`s`:e+`ms`}function u(e){var t=Math.abs(e);return t>=a?d(e,t,a,`day`):t>=i?d(e,t,i,`hour`):t>=r?d(e,t,r,`minute`):t>=n?d(e,t,n,`second`):e+` ms`}function d(e,t,n,r){var i=t>=n*1.5;return Math.round(e/n)+` `+r+(i?`s`:``)}})),b=n(((e,t)=>{function n(e){n.debug=n,n.default=n,n.coerce=c,n.disable=o,n.enable=i,n.enabled=s,n.humanize=y(),n.destroy=l,Object.keys(e).forEach(t=>{n[t]=e[t]}),n.names=[],n.skips=[],n.formatters={};function t(e){let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n),t|=0;return n.colors[Math.abs(t)%n.colors.length]}n.selectColor=t;function n(e){let t,i=null,a,o;function s(...e){if(!s.enabled)return;let r=s,i=Number(new Date);r.diff=i-(t||i),r.prev=t,r.curr=i,t=i,e[0]=n.coerce(e[0]),typeof e[0]!=`string`&&e.unshift(`%O`);let a=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,(t,i)=>{if(t===`%%`)return`%`;a++;let o=n.formatters[i];if(typeof o==`function`){let n=e[a];t=o.call(r,n),e.splice(a,1),a--}return t}),n.formatArgs.call(r,e),(r.log||n.log).apply(r,e)}return s.namespace=e,s.useColors=n.useColors(),s.color=n.selectColor(e),s.extend=r,s.destroy=n.destroy,Object.defineProperty(s,`enabled`,{enumerable:!0,configurable:!1,get:()=>i===null?(a!==n.namespaces&&(a=n.namespaces,o=n.enabled(e)),o):i,set:e=>{i=e}}),typeof n.init==`function`&&n.init(s),s}function r(e,t){let r=n(this.namespace+(t===void 0?`:`:t)+e);return r.log=this.log,r}function i(e){n.save(e),n.namespaces=e,n.names=[],n.skips=[];let t=(typeof e==`string`?e:``).trim().replace(/\s+/g,`,`).split(`,`).filter(Boolean);for(let e of t)e[0]===`-`?n.skips.push(e.slice(1)):n.names.push(e)}function a(e,t){let n=0,r=0,i=-1,a=0;for(;n<e.length;)if(r<t.length&&(t[r]===e[n]||t[r]===`*`))t[r]===`*`?(i=r,a=n,r++):(n++,r++);else if(i!==-1)r=i+1,a++,n=a;else return!1;for(;r<t.length&&t[r]===`*`;)r++;return r===t.length}function o(){let e=[...n.names,...n.skips.map(e=>`-`+e)].join(`,`);return n.enable(``),e}function s(e){for(let t of n.skips)if(a(e,t))return!1;for(let t of n.names)if(a(e,t))return!0;return!1}function c(e){return e instanceof Error?e.stack||e.message:e}function l(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return n.enable(n.load()),n}t.exports=n})),x=n(((e,t)=>{e.formatArgs=r,e.save=i,e.load=a,e.useColors=n,e.storage=o(),e.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),e.colors=`#0000CC.#0000FF.#0033CC.#0033FF.#0066CC.#0066FF.#0099CC.#0099FF.#00CC00.#00CC33.#00CC66.#00CC99.#00CCCC.#00CCFF.#3300CC.#3300FF.#3333CC.#3333FF.#3366CC.#3366FF.#3399CC.#3399FF.#33CC00.#33CC33.#33CC66.#33CC99.#33CCCC.#33CCFF.#6600CC.#6600FF.#6633CC.#6633FF.#66CC00.#66CC33.#9900CC.#9900FF.#9933CC.#9933FF.#99CC00.#99CC33.#CC0000.#CC0033.#CC0066.#CC0099.#CC00CC.#CC00FF.#CC3300.#CC3333.#CC3366.#CC3399.#CC33CC.#CC33FF.#CC6600.#CC6633.#CC9900.#CC9933.#CCCC00.#CCCC33.#FF0000.#FF0033.#FF0066.#FF0099.#FF00CC.#FF00FF.#FF3300.#FF3333.#FF3366.#FF3399.#FF33CC.#FF33FF.#FF6600.#FF6633.#FF9900.#FF9933.#FFCC00.#FFCC33`.split(`.`);function n(){if(typeof window<`u`&&window.process&&(window.process.type===`renderer`||window.process.__nwjs))return!0;if(typeof navigator<`u`&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let e;return typeof document<`u`&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<`u`&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<`u`&&navigator.userAgent&&(e=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(e[1],10)>=31||typeof navigator<`u`&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function r(e){if(e[0]=(this.useColors?`%c`:``)+this.namespace+(this.useColors?` %c`:` `)+e[0]+(this.useColors?`%c `:` `)+`+`+t.exports.humanize(this.diff),!this.useColors)return;let n=`color: `+this.color;e.splice(1,0,n,`color: inherit`);let r=0,i=0;e[0].replace(/%[a-zA-Z%]/g,e=>{e!==`%%`&&(r++,e===`%c`&&(i=r))}),e.splice(i,0,n)}e.log=console.debug||console.log||(()=>{});function i(t){try{t?e.storage.setItem(`debug`,t):e.storage.removeItem(`debug`)}catch{}}function a(){let t;try{t=e.storage.getItem(`debug`)||e.storage.getItem(`DEBUG`)}catch{}return!t&&typeof process<`u`&&`env`in process&&(t=process.env.DEBUG),t}function o(){try{return localStorage}catch{}}t.exports=b()(e);let{formatters:s}=t.exports;s.j=function(e){try{return JSON.stringify(e)}catch(e){return`[UnexpectedJSONParseError]: `+e.message}}})),re=n(((t,n)=>{let i=e(`tty`),a=e(`util`);t.init=f,t.log=l,t.formatArgs=s,t.save=u,t.load=d,t.useColors=o,t.destroy=a.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."),t.colors=[6,2,3,4,5,1];try{let e=r();e&&(e.stderr||e).level>=2&&(t.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}t.inspectOpts=Object.keys(process.env).filter(e=>/^debug_/i.test(e)).reduce((e,t)=>{let n=t.substring(6).toLowerCase().replace(/_([a-z])/g,(e,t)=>t.toUpperCase()),r=process.env[t];return r=/^(yes|on|true|enabled)$/i.test(r)?!0:/^(no|off|false|disabled)$/i.test(r)?!1:r===`null`?null:Number(r),e[n]=r,e},{});function o(){return`colors`in t.inspectOpts?!!t.inspectOpts.colors:i.isatty(process.stderr.fd)}function s(e){let{namespace:t,useColors:r}=this;if(r){let r=this.color,i=`\x1B[3`+(r<8?r:`8;5;`+r),a=` ${i};1m${t} \u001B[0m`;e[0]=a+e[0].split(`
2
2
  `).join(`
3
3
  `+a),e.push(i+`m+`+n.exports.humanize(this.diff)+`\x1B[0m`)}else e[0]=c()+t+` `+e[0]}function c(){return t.inspectOpts.hideDate?``:new Date().toISOString()+` `}function l(...e){return process.stderr.write(a.formatWithOptions(t.inspectOpts,...e)+`
4
4
  `)}function u(e){e?process.env.DEBUG=e:delete process.env.DEBUG}function d(){return process.env.DEBUG}function f(e){e.inspectOpts={};let n=Object.keys(t.inspectOpts);for(let r=0;r<n.length;r++)e.inspectOpts[n[r]]=t.inspectOpts[n[r]]}n.exports=b()(t);let{formatters:p}=n.exports;p.o=function(e){return this.inspectOpts.colors=this.useColors,a.inspect(e,this.inspectOpts).split(`
@@ -1 +1 @@
1
- import{o as e,r as t,t as n}from"./chunk-DTipWd-i.mjs";import{t as r}from"./out-BoEZjBNz.mjs";import{execFile as i}from"node:child_process";import{promisify as a}from"node:util";import{fileURLToPath as o}from"node:url";import s from"node:fs/promises";import c from"node:path";import l from"node:fs";import"node:events";import u from"node:process";import"node:stream";import"node:stream/promises";var d=e(r(),1);async function f(e,t,n){if(typeof n!=`string`)throw TypeError(`Expected a string, got ${typeof n}`);try{return(await s[e](n))[t]()}catch(e){if(e.code===`ENOENT`)return!1;throw e}}function p(e,t,n){if(typeof n!=`string`)throw TypeError(`Expected a string, got ${typeof n}`);try{return l[e](n)[t]()}catch(e){if(e.code===`ENOENT`)return!1;throw e}}f.bind(void 0,`stat`,`isFile`);const m=f.bind(void 0,`stat`,`isDirectory`);f.bind(void 0,`lstat`,`isSymbolicLink`),p.bind(void 0,`statSync`,`isFile`),p.bind(void 0,`statSync`,`isDirectory`),p.bind(void 0,`lstatSync`,`isSymbolicLink`),a(i);function h(e){return e instanceof URL?o(e):e}var g=e(n(((e,t)=>{function n(e){return Array.isArray(e)?e:[e]}let r=/^\s+$/,i=/(?:[^\\]|^)\\$/,a=/^\\!/,o=/^\\#/,s=/\r?\n/g,c=/^\.{0,2}\/|^\.{1,2}$/,l=/\/$/,u=`node-ignore`;typeof Symbol<`u`&&(u=Symbol.for(`node-ignore`));let d=u,f=(e,t,n)=>(Object.defineProperty(e,t,{value:n}),n),p=/([0-z])-([0-z])/g,m=()=>!1,h=e=>e.replace(p,(e,t,n)=>t.charCodeAt(0)<=n.charCodeAt(0)?e:``),g=e=>{let{length:t}=e;return e.slice(0,t-t%2)},_=[[/^\uFEFF/,()=>``],[/((?:\\\\)*?)(\\?\s+)$/,(e,t,n)=>t+(n.indexOf(`\\`)===0?` `:``)],[/(\\+?)\s/g,(e,t)=>{let{length:n}=t;return t.slice(0,n-n%2)+` `}],[/[\\$.|*+(){^]/g,e=>`\\${e}`],[/(?!\\)\?/g,()=>`[^/]`],[/^\//,()=>`^`],[/\//g,()=>`\\/`],[/^\^*\\\*\\\*\\\//,()=>`^(?:.*\\/)?`],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?`^`:`(?:^|\\/)`}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(e,t,n)=>t+6<n.length?`(?:\\/[^\\/]+)*`:`\\/.+`],[/(^|[^\\]+)(\\\*)+(?=.+)/g,(e,t,n)=>t+n.replace(/\\\*/g,`[^\\/]*`)],[/\\\\\\(?=[$.|*+(){^])/g,()=>`\\`],[/\\\\/g,()=>`\\`],[/(\\)?\[([^\]/]*?)(\\*)($|\])/g,(e,t,n,r,i)=>t===`\\`?`\\[${n}${g(r)}${i}`:i===`]`&&r.length%2==0?`[${h(n)}${r}]`:`[]`],[/(?:[^*])$/,e=>/\/$/.test(e)?`${e}$`:`${e}(?=$|\\/$)`]],v=/(^|\\\/)?\\\*$/,y=`regex`,b=`checkRegex`,x={[y](e,t){return`${t?`${t}[^/]+`:`[^/]*`}(?=$|\\/$)`},[b](e,t){return`${t?`${t}[^/]*`:`[^/]*`}(?=$|\\/$)`}},S=e=>_.reduce((t,[n,r])=>t.replace(n,r.bind(e)),e),C=e=>typeof e==`string`,w=e=>e&&C(e)&&!r.test(e)&&!i.test(e)&&e.indexOf(`#`)!==0,T=e=>e.split(s).filter(Boolean);var E=class{constructor(e,t,n,r,i,a){this.pattern=e,this.mark=t,this.negative=i,f(this,`body`,n),f(this,`ignoreCase`,r),f(this,`regexPrefix`,a)}get regex(){let e=`_`+y;return this[e]?this[e]:this._make(y,e)}get checkRegex(){let e=`_`+b;return this[e]?this[e]:this._make(b,e)}_make(e,t){let n=this.regexPrefix.replace(v,x[e]),r=this.ignoreCase?new RegExp(n,`i`):new RegExp(n);return f(this,t,r)}};let D=({pattern:e,mark:t},n)=>{let r=!1,i=e;i.indexOf(`!`)===0&&(r=!0,i=i.substr(1)),i=i.replace(a,`!`).replace(o,`#`);let s=S(i);return new E(e,t,i,n,r,s)};var O=class{constructor(e){this._ignoreCase=e,this._rules=[]}_add(e){if(e&&e[d]){this._rules=this._rules.concat(e._rules._rules),this._added=!0;return}if(C(e)&&(e={pattern:e}),w(e.pattern)){let t=D(e,this._ignoreCase);this._added=!0,this._rules.push(t)}}add(e){return this._added=!1,n(C(e)?T(e):e).forEach(this._add,this),this._added}test(e,t,n){let r=!1,i=!1,a;this._rules.forEach(o=>{let{negative:s}=o;i===s&&r!==i||s&&!r&&!i&&!t||o[n].test(e)&&(r=!s,i=s,a=s?void 0:o)});let o={ignored:r,unignored:i};return a&&(o.rule=a),o}};let k=(e,t)=>{throw new t(e)},A=(e,t,n)=>C(e)?e?A.isNotRelative(e)?n(`path should be a \`path.relative()\`d string, but got "${t}"`,RangeError):!0:n(`path must not be empty`,TypeError):n(`path must be a string, but got \`${t}\``,TypeError),j=e=>c.test(e);A.isNotRelative=j,A.convert=e=>e;var M=class{constructor({ignorecase:e=!0,ignoreCase:t=e,allowRelativePaths:n=!1}={}){f(this,d,!0),this._rules=new O(t),this._strictPathCheck=!n,this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}add(e){return this._rules.add(e)&&this._initCache(),this}addPattern(e){return this.add(e)}_test(e,t,n,r){let i=e&&A.convert(e);return A(i,e,this._strictPathCheck?k:m),this._t(i,t,n,r)}checkIgnore(e){if(!l.test(e))return this.test(e);let t=e.split(`/`).filter(Boolean);if(t.pop(),t.length){let e=this._t(t.join(`/`)+`/`,this._testCache,!0,t);if(e.ignored)return e}return this._rules.test(e,!1,b)}_t(e,t,n,r){if(e in t)return t[e];if(r||=e.split(`/`).filter(Boolean),r.pop(),!r.length)return t[e]=this._rules.test(e,n,y);let i=this._t(r.join(`/`)+`/`,t,n,r);return t[e]=i.ignored?i:this._rules.test(e,n,y)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return n(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}};let N=e=>new M(e),P=e=>A(e&&A.convert(e),e,m),F=()=>{A.convert=e=>/^\\\\\?\\/.test(e)||/["<>|\u0000-\u001F]+/u.test(e)?e:e.replace(/\\/g,`/`);let e=/^[a-z]:\//i;A.isNotRelative=t=>e.test(t)||j(t)};typeof process<`u`&&process.platform===`win32`&&F(),t.exports=N,N.default=N,t.exports.isPathValid=P,f(t.exports,Symbol.for(`setupWindows`),F)}))(),1);function _(e){return e.startsWith(`\\\\?\\`)?e:e.replace(/\\/g,`/`)}const v=e=>e[0]===`!`,y=[`**/node_modules`,`**/flow-typed`,`**/coverage`,`**/.git`],b={absolute:!0,dot:!0},x=(e,t)=>v(e)?`!`+c.posix.join(t,e.slice(1)):c.posix.join(t,e),S=(e,t)=>{let n=_(c.relative(t,c.dirname(e.filePath)));return e.content.split(/\r?\n/).filter(e=>e&&!e.startsWith(`#`)).map(e=>x(e,n))},C=(e,t)=>{if(t=_(t),c.isAbsolute(e)){if(_(e).startsWith(t))return c.relative(t,e);throw Error(`Path ${e} is not in cwd ${t}`)}return e},w=(e,t)=>{let n=e.flatMap(e=>S(e,t)),r=(0,g.default)().add(n);return e=>(e=h(e),e=C(e,t),e?r.ignores(_(e)):!1)},T=(e={})=>({cwd:h(e.cwd)??u.cwd(),suppressErrors:!!e.suppressErrors,deep:typeof e.deep==`number`?e.deep:1/0,ignore:[...e.ignore??[],...y]}),E=async(e,t)=>{let{cwd:n,suppressErrors:r,deep:i,ignore:a}=T(t),o=await(0,d.default)(e,{cwd:n,suppressErrors:r,deep:i,ignore:a,...b});return w(await Promise.all(o.map(async e=>({filePath:e,content:await s.readFile(e,`utf8`)}))),n)};var D=t({globby:()=>U});const O=e=>{if(e.some(e=>typeof e!=`string`))throw TypeError(`Patterns must be a string or an array of strings`)},k=(e,t)=>{let n=v(e)?e.slice(1):e;return c.isAbsolute(n)?n:c.join(t,n)},A=({directoryPath:e,files:t,extensions:n})=>{let r=n?.length>0?`.${n.length>1?`{${n.join(`,`)}}`:n[0]}`:``;return t?t.map(t=>c.posix.join(e,`**/${c.extname(t)?t:`${t}${r}`}`)):[c.posix.join(e,`**${r?`/*${r}`:``}`)]},j=async(e,{cwd:t=u.cwd(),files:n,extensions:r}={})=>(await Promise.all(e.map(async e=>await m(k(e,t))?A({directoryPath:e,files:n,extensions:r}):e))).flat(),M=e=>(e=[...new Set([e].flat())],O(e),e),N=e=>{if(!e)return;let t;try{t=l.statSync(e)}catch{return}if(!t.isDirectory())throw Error("The `cwd` option must be a path to a directory")},P=(e={})=>(e={...e,ignore:e.ignore??[],expandDirectories:e.expandDirectories??!0,cwd:h(e.cwd)},N(e.cwd),e),F=e=>async(t,n)=>e(M(t),P(n)),I=e=>{let{ignoreFiles:t,gitignore:n}=e,r=t?M(t):[];return n&&r.push(`**/.gitignore`),r},L=async e=>{let t=I(e);return R(t.length>0&&await E(t,e))},R=e=>{let t=new Set;return n=>{let r=c.normalize(n.path??n);return t.has(r)||e&&e(r)?!1:(t.add(r),!0)}},z=(e,t)=>e.flat().filter(e=>t(e)),B=(e,t)=>{let n=[];for(;e.length>0;){let r=e.findIndex(e=>v(e));if(r===-1){n.push({patterns:e,options:t});break}let i=e[r].slice(1);for(let e of n)e.options.ignore.push(i);r!==0&&n.push({patterns:e.slice(0,r),options:{...t,ignore:[...t.ignore,i]}}),e=e.slice(r+1)}return n},V=(e,t)=>({...t?{cwd:t}:{},...Array.isArray(e)?{files:e}:e}),H=async(e,t)=>{let n=B(e,t),{cwd:r,expandDirectories:i}=t;if(!i)return n;let a=V(i,r);return Promise.all(n.map(async e=>{let{patterns:t,options:n}=e;return[t,n.ignore]=await Promise.all([j(t,a),j(n.ignore,{cwd:r})]),{patterns:t,options:n}}))},U=F(async(e,t)=>{let[n,r]=await Promise.all([H(e,t),L(t)]);return z(await Promise.all(n.map(e=>(0,d.default)(e.patterns,e.options))),r)}),{convertPathToPattern:W}=d.default;export{D as n,U as t};
1
+ import{o as e,r as t,t as n}from"./chunk-DTipWd-i.mjs";import{t as r}from"./out-BB6Kb4Xu.mjs";import{execFile as i}from"node:child_process";import{promisify as a}from"node:util";import{fileURLToPath as o}from"node:url";import s from"node:fs/promises";import c from"node:path";import l from"node:fs";import"node:events";import u from"node:process";import"node:stream";import"node:stream/promises";var d=e(r(),1);async function f(e,t,n){if(typeof n!=`string`)throw TypeError(`Expected a string, got ${typeof n}`);try{return(await s[e](n))[t]()}catch(e){if(e.code===`ENOENT`)return!1;throw e}}function p(e,t,n){if(typeof n!=`string`)throw TypeError(`Expected a string, got ${typeof n}`);try{return l[e](n)[t]()}catch(e){if(e.code===`ENOENT`)return!1;throw e}}f.bind(void 0,`stat`,`isFile`);const m=f.bind(void 0,`stat`,`isDirectory`);f.bind(void 0,`lstat`,`isSymbolicLink`),p.bind(void 0,`statSync`,`isFile`),p.bind(void 0,`statSync`,`isDirectory`),p.bind(void 0,`lstatSync`,`isSymbolicLink`),a(i);function h(e){return e instanceof URL?o(e):e}var g=e(n(((e,t)=>{function n(e){return Array.isArray(e)?e:[e]}let r=/^\s+$/,i=/(?:[^\\]|^)\\$/,a=/^\\!/,o=/^\\#/,s=/\r?\n/g,c=/^\.{0,2}\/|^\.{1,2}$/,l=/\/$/,u=`node-ignore`;typeof Symbol<`u`&&(u=Symbol.for(`node-ignore`));let d=u,f=(e,t,n)=>(Object.defineProperty(e,t,{value:n}),n),p=/([0-z])-([0-z])/g,m=()=>!1,h=e=>e.replace(p,(e,t,n)=>t.charCodeAt(0)<=n.charCodeAt(0)?e:``),g=e=>{let{length:t}=e;return e.slice(0,t-t%2)},_=[[/^\uFEFF/,()=>``],[/((?:\\\\)*?)(\\?\s+)$/,(e,t,n)=>t+(n.indexOf(`\\`)===0?` `:``)],[/(\\+?)\s/g,(e,t)=>{let{length:n}=t;return t.slice(0,n-n%2)+` `}],[/[\\$.|*+(){^]/g,e=>`\\${e}`],[/(?!\\)\?/g,()=>`[^/]`],[/^\//,()=>`^`],[/\//g,()=>`\\/`],[/^\^*\\\*\\\*\\\//,()=>`^(?:.*\\/)?`],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?`^`:`(?:^|\\/)`}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(e,t,n)=>t+6<n.length?`(?:\\/[^\\/]+)*`:`\\/.+`],[/(^|[^\\]+)(\\\*)+(?=.+)/g,(e,t,n)=>t+n.replace(/\\\*/g,`[^\\/]*`)],[/\\\\\\(?=[$.|*+(){^])/g,()=>`\\`],[/\\\\/g,()=>`\\`],[/(\\)?\[([^\]/]*?)(\\*)($|\])/g,(e,t,n,r,i)=>t===`\\`?`\\[${n}${g(r)}${i}`:i===`]`&&r.length%2==0?`[${h(n)}${r}]`:`[]`],[/(?:[^*])$/,e=>/\/$/.test(e)?`${e}$`:`${e}(?=$|\\/$)`]],v=/(^|\\\/)?\\\*$/,y=`regex`,b=`checkRegex`,x={[y](e,t){return`${t?`${t}[^/]+`:`[^/]*`}(?=$|\\/$)`},[b](e,t){return`${t?`${t}[^/]*`:`[^/]*`}(?=$|\\/$)`}},S=e=>_.reduce((t,[n,r])=>t.replace(n,r.bind(e)),e),C=e=>typeof e==`string`,w=e=>e&&C(e)&&!r.test(e)&&!i.test(e)&&e.indexOf(`#`)!==0,T=e=>e.split(s).filter(Boolean);var E=class{constructor(e,t,n,r,i,a){this.pattern=e,this.mark=t,this.negative=i,f(this,`body`,n),f(this,`ignoreCase`,r),f(this,`regexPrefix`,a)}get regex(){let e=`_`+y;return this[e]?this[e]:this._make(y,e)}get checkRegex(){let e=`_`+b;return this[e]?this[e]:this._make(b,e)}_make(e,t){let n=this.regexPrefix.replace(v,x[e]),r=this.ignoreCase?new RegExp(n,`i`):new RegExp(n);return f(this,t,r)}};let D=({pattern:e,mark:t},n)=>{let r=!1,i=e;i.indexOf(`!`)===0&&(r=!0,i=i.substr(1)),i=i.replace(a,`!`).replace(o,`#`);let s=S(i);return new E(e,t,i,n,r,s)};var O=class{constructor(e){this._ignoreCase=e,this._rules=[]}_add(e){if(e&&e[d]){this._rules=this._rules.concat(e._rules._rules),this._added=!0;return}if(C(e)&&(e={pattern:e}),w(e.pattern)){let t=D(e,this._ignoreCase);this._added=!0,this._rules.push(t)}}add(e){return this._added=!1,n(C(e)?T(e):e).forEach(this._add,this),this._added}test(e,t,n){let r=!1,i=!1,a;this._rules.forEach(o=>{let{negative:s}=o;i===s&&r!==i||s&&!r&&!i&&!t||o[n].test(e)&&(r=!s,i=s,a=s?void 0:o)});let o={ignored:r,unignored:i};return a&&(o.rule=a),o}};let k=(e,t)=>{throw new t(e)},A=(e,t,n)=>C(e)?e?A.isNotRelative(e)?n(`path should be a \`path.relative()\`d string, but got "${t}"`,RangeError):!0:n(`path must not be empty`,TypeError):n(`path must be a string, but got \`${t}\``,TypeError),j=e=>c.test(e);A.isNotRelative=j,A.convert=e=>e;var M=class{constructor({ignorecase:e=!0,ignoreCase:t=e,allowRelativePaths:n=!1}={}){f(this,d,!0),this._rules=new O(t),this._strictPathCheck=!n,this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}add(e){return this._rules.add(e)&&this._initCache(),this}addPattern(e){return this.add(e)}_test(e,t,n,r){let i=e&&A.convert(e);return A(i,e,this._strictPathCheck?k:m),this._t(i,t,n,r)}checkIgnore(e){if(!l.test(e))return this.test(e);let t=e.split(`/`).filter(Boolean);if(t.pop(),t.length){let e=this._t(t.join(`/`)+`/`,this._testCache,!0,t);if(e.ignored)return e}return this._rules.test(e,!1,b)}_t(e,t,n,r){if(e in t)return t[e];if(r||=e.split(`/`).filter(Boolean),r.pop(),!r.length)return t[e]=this._rules.test(e,n,y);let i=this._t(r.join(`/`)+`/`,t,n,r);return t[e]=i.ignored?i:this._rules.test(e,n,y)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return n(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}};let N=e=>new M(e),P=e=>A(e&&A.convert(e),e,m),F=()=>{A.convert=e=>/^\\\\\?\\/.test(e)||/["<>|\u0000-\u001F]+/u.test(e)?e:e.replace(/\\/g,`/`);let e=/^[a-z]:\//i;A.isNotRelative=t=>e.test(t)||j(t)};typeof process<`u`&&process.platform===`win32`&&F(),t.exports=N,N.default=N,t.exports.isPathValid=P,f(t.exports,Symbol.for(`setupWindows`),F)}))(),1);function _(e){return e.startsWith(`\\\\?\\`)?e:e.replace(/\\/g,`/`)}const v=e=>e[0]===`!`,y=[`**/node_modules`,`**/flow-typed`,`**/coverage`,`**/.git`],b={absolute:!0,dot:!0},x=(e,t)=>v(e)?`!`+c.posix.join(t,e.slice(1)):c.posix.join(t,e),S=(e,t)=>{let n=_(c.relative(t,c.dirname(e.filePath)));return e.content.split(/\r?\n/).filter(e=>e&&!e.startsWith(`#`)).map(e=>x(e,n))},C=(e,t)=>{if(t=_(t),c.isAbsolute(e)){if(_(e).startsWith(t))return c.relative(t,e);throw Error(`Path ${e} is not in cwd ${t}`)}return e},w=(e,t)=>{let n=e.flatMap(e=>S(e,t)),r=(0,g.default)().add(n);return e=>(e=h(e),e=C(e,t),e?r.ignores(_(e)):!1)},T=(e={})=>({cwd:h(e.cwd)??u.cwd(),suppressErrors:!!e.suppressErrors,deep:typeof e.deep==`number`?e.deep:1/0,ignore:[...e.ignore??[],...y]}),E=async(e,t)=>{let{cwd:n,suppressErrors:r,deep:i,ignore:a}=T(t),o=await(0,d.default)(e,{cwd:n,suppressErrors:r,deep:i,ignore:a,...b});return w(await Promise.all(o.map(async e=>({filePath:e,content:await s.readFile(e,`utf8`)}))),n)};var D=t({globby:()=>U});const O=e=>{if(e.some(e=>typeof e!=`string`))throw TypeError(`Patterns must be a string or an array of strings`)},k=(e,t)=>{let n=v(e)?e.slice(1):e;return c.isAbsolute(n)?n:c.join(t,n)},A=({directoryPath:e,files:t,extensions:n})=>{let r=n?.length>0?`.${n.length>1?`{${n.join(`,`)}}`:n[0]}`:``;return t?t.map(t=>c.posix.join(e,`**/${c.extname(t)?t:`${t}${r}`}`)):[c.posix.join(e,`**${r?`/*${r}`:``}`)]},j=async(e,{cwd:t=u.cwd(),files:n,extensions:r}={})=>(await Promise.all(e.map(async e=>await m(k(e,t))?A({directoryPath:e,files:n,extensions:r}):e))).flat(),M=e=>(e=[...new Set([e].flat())],O(e),e),N=e=>{if(!e)return;let t;try{t=l.statSync(e)}catch{return}if(!t.isDirectory())throw Error("The `cwd` option must be a path to a directory")},P=(e={})=>(e={...e,ignore:e.ignore??[],expandDirectories:e.expandDirectories??!0,cwd:h(e.cwd)},N(e.cwd),e),F=e=>async(t,n)=>e(M(t),P(n)),I=e=>{let{ignoreFiles:t,gitignore:n}=e,r=t?M(t):[];return n&&r.push(`**/.gitignore`),r},L=async e=>{let t=I(e);return R(t.length>0&&await E(t,e))},R=e=>{let t=new Set;return n=>{let r=c.normalize(n.path??n);return t.has(r)||e&&e(r)?!1:(t.add(r),!0)}},z=(e,t)=>e.flat().filter(e=>t(e)),B=(e,t)=>{let n=[];for(;e.length>0;){let r=e.findIndex(e=>v(e));if(r===-1){n.push({patterns:e,options:t});break}let i=e[r].slice(1);for(let e of n)e.options.ignore.push(i);r!==0&&n.push({patterns:e.slice(0,r),options:{...t,ignore:[...t.ignore,i]}}),e=e.slice(r+1)}return n},V=(e,t)=>({...t?{cwd:t}:{},...Array.isArray(e)?{files:e}:e}),H=async(e,t)=>{let n=B(e,t),{cwd:r,expandDirectories:i}=t;if(!i)return n;let a=V(i,r);return Promise.all(n.map(async e=>{let{patterns:t,options:n}=e;return[t,n.ignore]=await Promise.all([j(t,a),j(n.ignore,{cwd:r})]),{patterns:t,options:n}}))},U=F(async(e,t)=>{let[n,r]=await Promise.all([H(e,t),L(t)]);return z(await Promise.all(n.map(e=>(0,d.default)(e.patterns,e.options))),r)}),{convertPathToPattern:W}=d.default;export{D as n,U as t};
@@ -0,0 +1,57 @@
1
+ import{agents as e}from"./services/session/storage/schema.mjs";import{n as t,t as n}from"./schema-cus0dJ81.mjs";import{i as r,n as i,r as a}from"./namespace-DwQtzlY-.mjs";import{TurnStorageSubjects as o}from"./services/turn/namespace.mjs";import{SessionStorageSubjects as s}from"./services/session/storage/namespace.mjs";import{n as c}from"./namespace-D7pE2QWv.mjs";import{ProviderStorageSubjects as l}from"./services/settings/storage/providers-namespace.mjs";import{a as u,o as d}from"./provider-context-BYkMl--1.mjs";import{AdapterRuntimeSubjects as f}from"./services/adapter-runtime/namespace.mjs";import{ExecutionTargetSubjects as p}from"./services/execution-target/namespace.mjs";import{MessageStorageSubjects as m}from"./services/session/messages/namespace.mjs";import"./services/session/turns/namespace.mjs";import{ExtractedContextSchema as h}from"./services/compression/schemas.mjs";import{PreferencesSubjects as g}from"./services/preferences/storage-namespace.mjs";import{z as _}from"zod";import{AdapterSubjects as v,AgentResolutionSubjects as y,AgentStatusSchema as b,AgentSubjects as x,MakaioSessionAgentSchema as S,ProviderContextSchema as C,SessionSubjects as w,TurnInitiatorSchema as T,TurnUsageSchema as ee}from"@makaio/framework/contracts";import{defineDialectSchema as te,getRawSqlExecutor as ne,getStorageEngine as re,resolveSchema as E}from"@makaio/framework/storage/drizzle";import{and as D,asc as O,desc as k,eq as A,gt as ie,inArray as j,lt as ae,sql as M}from"drizzle-orm";import{createStorageNamespaceDefinition as oe}from"@makaio/framework/storage";import{HookAbortError as se}from"@makaio/framework/hooks";import{AdapterRuntimeSubjects as ce}from"@makaio/framework/services/adapter-runtime";import{resolveRuntimeProviderContext as le}from"@makaio/framework/services/provider-context";function ue(e,t,n,r){return e.on(i.append,e=>{let{event:i}=e.payload,a=t.get(i.sessionId)??[];if(n.has(i.eventId)){e.setResult({success:!0});return}a.push(i),t.set(i.sessionId,a),n.set(i.eventId,r()),e.setResult({success:!0})})}function de(e,t,n){return e.on(i.getEvents,e=>{let{sessionId:r,options:i}=e.payload,a=t.get(r)??[],o=i?.order??`asc`,s=o===`desc`?[...a].reverse():a,c=0;if(i?.after&&/^\d+$/.test(i.after)){let t=Number(i.after),r=s.findIndex(e=>{let r=n.get(e.eventId)??-1;return o===`desc`?r<t:r>t});if(r===-1){e.setResult({events:[],nextCursor:null,totalCount:a.length});return}c=r}let l=s.slice(c);if(i?.types&&i.types.length>0){let e=new Set(i.types);l=l.filter(t=>e.has(t.type))}let u=i?.limit??100,d=l.length>u,f=l.slice(0,u),p=null;if(d&&f.length>0){let e=f[f.length-1],t=n.get(e.eventId);t!==void 0&&(p=t.toString())}e.setResult({events:f,nextCursor:p,totalCount:a.length})})}function fe(e,t){return e.on(i.getByIds,e=>{let{sessionId:n,eventIds:r}=e.payload,i=t.get(n)??[],a=new Set(r),o=i.filter(e=>a.has(e.eventId));e.setResult({events:o})})}function pe(e,t,n){return e.on(i.deleteBySession,e=>{let{sessionId:r}=e.payload,i=t.get(r);if(i)for(let e of i)n.delete(e.eventId);let a=i?.length??0;t.delete(r),e.setResult({success:!0,deletedCount:a})})}function me(e,t){return e.on(i.getEventsBySessions,e=>{let{sessionIds:n,types:r,limitPerSession:i=50}=e.payload;if(n.length===0||r.length===0){e.setResult({eventsBySession:{}});return}let a=new Set(r),o={};for(let e of n){let n=(t.get(e)??[]).filter(e=>a.has(e.type)).reverse().slice(0,i);n.length>0&&(o[e]=n)}e.setResult({eventsBySession:o})})}function he(e){let t=new Map,n=new Map,r=1,i=[ue(e,t,n,()=>r++),de(e,t,n),fe(e,t),pe(e,t,n),me(e,t)];return()=>i.forEach(e=>e())}const ge=r.postgres,_e=te({sessionEvents:a},{sessionEvents:ge}),ve=[`sessionId`,`agentId`,`adapterId`,`messageId`,`turnId`];function ye(e){let t=e.payload,n={};for(let[e,r]of Object.entries(t))ve.includes(e)||(n[e]=r);return n}function N(e){let t=JSON.parse(e.payload),n=e.type===`message`?e.messageId:e.originatingMessageId,r={...t,sessionId:e.sessionId,...e.agentId&&{agentId:e.agentId},...e.adapterId&&{adapterId:e.adapterId},...n&&{messageId:n},...e.type===`message`?{turnId:e.turnId??null}:e.turnId&&{turnId:e.turnId}};return{sessionId:e.sessionId,eventId:e.eventId,timestamp:e.timestamp,type:e.type,payload:r}}function be(e){switch(e.type){case`user_message.sent`:{let t=e.payload.content;return typeof t==`string`?t:(Array.isArray(t.blocks)?t.blocks:[t.blocks]).filter(e=>e.type===`text`).map(e=>e.content).join(`
2
+ `)}case`agent.added`:case`user_message.acknowledged`:case`user_message.completed`:case`turn.started`:case`turn.completed`:case`message`:case`branch.created`:case`branch.merged`:case`squash`:return null;default:return xe(e.payload)}}function xe(e){let t=e.contentText;if(typeof t==`string`&&t.length>0)return t;let n=e.summary;return typeof n==`string`&&n.length>0?n:null}function Se({bus:e,db:t,sessionEvents:n}){return e.on(i.append,async e=>{let{event:r}=e.payload,i=`payload`in r&&`agentId`in r.payload?r.payload.agentId:null,a=`payload`in r&&`adapterId`in r.payload?r.payload.adapterId:null,o=`payload`in r&&`turnId`in r.payload?r.payload.turnId:null,s=`payload`in r&&`messageId`in r.payload?r.payload.messageId:null,c=r.type===`message`?s:null,l=r.type===`message`?null:s,u={sessionId:r.sessionId,eventId:r.eventId,timestamp:r.timestamp,type:r.type,agentId:i,adapterId:a,messageId:c,originatingMessageId:l,turnId:o,contentText:be(r),payload:JSON.stringify(ye(r))};await t.insert(n).values(u).onConflictDoNothing(),e.setResult({success:!0})})}function Ce({bus:e,db:t,sessionEvents:n}){return e.on(i.getEvents,async e=>{let{sessionId:r,options:i}=e.payload,a=[A(n.sessionId,r)],o=i?.order??`asc`;if(i?.after){let e=parseInt(i.after,10);!isNaN(e)&&e>0&&(o===`desc`?a.push(ae(n.id,e)):a.push(ie(n.id,e)))}i?.types&&i.types.length>0&&a.push(j(n.type,i.types));let s=i?.limit??100,c=o===`desc`?k:O,l=await t.select().from(n).where(D(...a)).orderBy(c(n.id)).limit(s+1),u=l.length>s,d=u?l.slice(0,s):l,f=d.map(N),p=u&&d.length>0?d[d.length-1].id.toString():null;e.setResult({events:f,nextCursor:p})})}function we({bus:e,db:t,sessionEvents:n}){return e.on(i.getByIds,async e=>{let{sessionId:r,eventIds:i}=e.payload,a=(await t.select().from(n).where(D(A(n.sessionId,r),j(n.eventId,i))).orderBy(O(n.timestamp))).map(N);e.setResult({events:a})})}function Te({bus:e,db:t,sessionEvents:n}){return e.on(i.deleteBySession,async e=>{let{sessionId:r}=e.payload,i=(await t.select().from(n).where(A(n.sessionId,r))).length;await t.delete(n).where(A(n.sessionId,r)),e.setResult({success:!0,deletedCount:i})})}function Ee({bus:e,db:t,sessionEvents:n}){return e.on(i.getEventsBySessions,async e=>{let{sessionIds:r,types:i,limitPerSession:a=50}=e.payload;if(r.length===0||i.length===0){e.setResult({eventsBySession:{}});return}let o={};for(let e of r){let r=await t.select().from(n).where(D(A(n.sessionId,e),j(n.type,i))).orderBy(k(n.timestamp)).limit(a);r.length>0&&(o[e]=r.map(N))}e.setResult({eventsBySession:o})})}function De(e,t){let{sessionEvents:n}=E(t,_e),r={bus:e,db:t,sessionEvents:n},i=[Se(r),Ce(r),we(r),Te(r),Ee(r)];return()=>i.forEach(e=>e())}async function P(e,t,n){let r={sessionId:t.sessionId,eventId:t.eventId??crypto.randomUUID(),timestamp:t.timestamp??Date.now(),type:t.type,payload:t.payload},a=n?n(r):r;a&&await e.requestOptional(i.append,{event:a})}async function Oe(e,t){await P(e,{type:`turn.started`,sessionId:t.sessionId,eventId:`turn.started:${t.turnId}`,payload:t});try{await e.emit(w.turn.started,t)}catch(e){console.error(`[SessionLifecycle] Failed to emit turn.started for turn ${t.turnId}:`,e)}}async function ke(e,t){try{await e.emit(w.user_message.sent,t)}catch(e){console.error(`[SessionLifecycle] Failed to emit user_message.sent for turn ${t.turnId}:`,e)}}function Ae(e,t){let n=[e.on(w.agent.added,async n=>{await je(e,{type:`agent.added`,sessionId:n.payload.sessionId,payload:n.payload},t)}),e.on(w.branch.created,async n=>{await je(e,{type:`branch.created`,sessionId:n.payload.sessionId,payload:n.payload},t)})];return()=>{for(let e of n)e()}}async function je(e,t,n){try{await P(e,t,n)}catch(e){console.warn(`[session-lifecycle-events] Failed to persist subscription lifecycle event`,{type:t.type,sessionId:t.sessionId,error:e instanceof Error?e.message:String(e)})}}async function F(e,t){let{verdict:n}=t;if(n.kind===`native`)return;let r=crypto.randomUUID(),i=Date.now(),a={sessionId:t.sessionId,eventId:r,timestamp:i,intent:t.intent,...t.agentId!==void 0&&{agentId:t.agentId},...t.adapterId!==void 0&&{adapterId:t.adapterId},...t.turnId!==void 0&&{turnId:t.turnId}},o=n.kind===`degrade`?{...a,verdictKind:`degrade`,reason:n.reason}:{...a,verdictKind:`foreign`,foreignMachineId:n.machineId};try{await P(e,{type:`locality.degraded`,sessionId:t.sessionId,eventId:r,timestamp:i,payload:o})}catch(e){console.warn(`[session-lifecycle-events] Failed to persist locality.degraded event`,{sessionId:t.sessionId,error:e instanceof Error?e.message:String(e)})}try{await e.emit(w.locality.degraded,o)}catch(e){console.warn(`[session-lifecycle-events] Failed to emit live locality.degraded event`,{sessionId:t.sessionId,error:e instanceof Error?e.message:String(e)})}}const Me=oe(`agent`,{schemas:{get:{request:_.object({agentId:_.string()}),response:_.object({agent:S.nullable()})},set:{request:_.object({agentId:_.string(),agent:S}),response:_.object({success:_.boolean()})},delete:{request:_.object({agentId:_.string()}),response:_.object({success:_.boolean()})},listByAdapter:{request:_.object({adapterName:_.string(),status:_.enum([`idle`,`active`,`dead`,`disposed`,`all`]).optional()}),response:_.object({agents:_.array(S)})},listBySession:{request:_.object({sessionId:_.string()}),response:_.object({agents:_.array(S)})},updateStatus:{request:_.object({agentId:_.string(),status:b}),response:_.object({success:_.boolean()})},updateActivity:{request:_.object({agentId:_.string(),lastActivityAt:_.number()}),response:_.object({success:_.boolean()})},updateRuntime:{request:_.object({agentId:_.string(),adapterId:_.string().optional(),adapterSessionId:_.string().optional(),cwd:_.string().optional(),model:_.string().optional(),allowedDirectories:_.array(_.string()).optional(),providerConfigId:_.string().nullable().optional()}).refine(e=>e.adapterId!==void 0||e.adapterSessionId!==void 0||e.cwd!==void 0||e.model!==void 0||e.allowedDirectories!==void 0||e.providerConfigId!==void 0,{message:`At least one runtime field (adapterId, adapterSessionId, cwd, model, allowedDirectories, or providerConfigId) must be provided`}),response:_.object({success:_.boolean()})}},extensions:{drizzle:{agents:e}}}),Ne=Me.subjects;async function I(e,t,n){let{adapterId:r}=await e.request(f.resolveId,{adapterName:t,...n!==void 0&&{machineId:n}});return r}async function Pe(e,t,n){if(!(!t||!n))try{let{config:r}=await e.request(c.getProviderConfig,{id:t});if(!r)return;let{provider:i}=await e.request(l.get,{id:r.definitionId}),a=i?.availableModels?.find(e=>e.name===n);return a?{supportedReasoningLevels:a.supportedReasoningLevels}:void 0}catch{return}}async function Fe(e,t){let{executionTarget:n}=await e.request(p.resolve,t);return n}async function Ie(e,t){let{sessionId:n,limit:r}=t,a=[],o=!1,s=!1,c;do{let{events:t,nextCursor:l}=await e.request(i.getEvents,{sessionId:n,options:{limit:1e4,...c&&{after:c}}});for(let i of t){if(i.type===`squash`){o=!0,a.length=0;let e=i.payload,t={messageId:`squash-${i.eventId}`,sessionId:n,turnId:null,role:`assistant`,contentText:e.summaryJson,blocks:[{type:`text`,content:e.summaryJson}],timestamp:i.timestamp};a.push(t)}else if(i.type===`message`){let t=i.payload,{message:n}=await e.request(m.get,{messageId:t.messageId});n&&a.push(n)}if(r&&a.length>=r){s=!0;break}}if(r&&a.length>=r)break;c=l??void 0}while(c);return{messages:a,hasSquashBoundary:o,sessionChain:[n],truncated:s,incomplete:!1}}const L=new class{actions=new Map;register(e){if(this.actions.has(e.id))throw Error(`Action already registered: ${e.id}`);this.actions.set(e.id,e)}get(e){return this.actions.get(e)}getAll(){return Array.from(this.actions.values())}getByCategory(e){return this.getAll().filter(t=>t.category===e)}reset(){this.actions.clear()}};async function R(e,t,n){let r=e,i,a;for(let e of t){let t=L.get(e.actionId);if(!t)throw Error(`Unknown action: ${e.actionId}`);let o={...n,...e.options},s=await t.execute(r,o);if(s.kind===`messages`)r=s.messages;else{i=s.json,a=s.tokenEstimate,r=[];break}}if(!i&&r.length>0){let e=r.reduce((e,t)=>e+JSON.stringify(t.blocks).length,0);a=Math.ceil(e/4)}return{messages:r,contextJson:i,tokenEstimate:a}}function Le(e){return e.map(e=>({...e,blocks:e.blocks.filter(e=>e.type!==`reasoning`)}))}const Re={id:`strip-reasoning`,label:`Strip Reasoning`,description:`Remove reasoning/thinking blocks from messages`,category:`transformation`,async execute(e){return{kind:`messages`,messages:Le(e)}}};function ze(e){return e.map(e=>({...e,blocks:e.blocks.map(e=>{if(e.type===`tool_output`){let t=e.output.length;return{...e,output:`[output removed - ${t} chars]`}}return e})}))}const Be={id:`strip-tool-outputs`,label:`Strip Tool Outputs`,description:`Remove tool output contents, keep structure`,category:`transformation`,async execute(e){return{kind:`messages`,messages:ze(e)}}};async function z(e,t){let n=[],r=[],i=[],a=!1,o=!1,c=!1,l=[],u,d=t,f;for(;d;){let n=await e.request(s.get,{sessionId:d});if(!n.session){c=!0;break}d===t&&(u=n.session.forkTransforms??void 0),l.unshift({sessionId:d,forkPointMessageId:n.session.forkPointMessageId??void 0}),f=n.session.parentSessionId??void 0,d=f}for(let t=0;t<l.length;t++){let{sessionId:s}=l[t],c=t===l.length-1,u=l[t+1]?.forkPointMessageId;n.push(s);let d=await Ie(e,{sessionId:s});if(d.hasSquashBoundary&&(a=!0,c||(r.length=0)),d.truncated&&(o=!0),c)i=d.messages;else for(let e of d.messages)if(r.push(e),u&&e.messageId===u)break}return u&&(r=await Ve(r,u)),{messages:[...r,...i],hasSquashBoundary:a,sessionChain:n,truncated:o,incomplete:c}}async function Ve(e,t){if(t.segments?.length){let n=t.segments[0].fromMessageId,r=t.segments[t.segments.length-1].toMessageId,i=e.findIndex(e=>e.messageId===n),a=e.findIndex(e=>e.messageId===r);if(i===-1||a===-1||i>a)return Ue(e,t.segments);let o=e.slice(0,i),s=e.slice(i,a+1),c=e.slice(a+1),l=Ue(s,t.segments);return[...o,...l,...c]}let n=e;if(t.removedMessageIds?.length){let e=new Set(t.removedMessageIds);n=n.filter(t=>!e.has(t.messageId))}return t.appliedPipeline?.length&&(n=(await R(n,t.appliedPipeline)).messages),n}function He(e,t){let n=e;return t.stripReasoning&&(n=Le(n)),t.stripToolOutputs&&(n=ze(n)),n}function Ue(e,t){let n=new Map;for(let t=0;t<e.length;t++)n.set(e[t].messageId,t);let r=[];for(let i of t){let t=n.get(i.fromMessageId),a=n.get(i.toMessageId);if(t===void 0||a===void 0){console.warn(`[getFullConversation] Skipping segment with missing boundary IDs`,{segmentKey:`${i.fromMessageId}..${i.toMessageId}`,fromMessageId:i.fromMessageId,toMessageId:i.toMessageId,hasFrom:t!==void 0,hasTo:a!==void 0});continue}let o=e.slice(t,a+1),s;switch(i.policy){case`exclude`:s=[];break;case`summarize`:if(i.summaryText){if(o.length===0)throw Error(`Cannot create synthetic summary message for empty segment: ${i.fromMessageId}..${i.toMessageId}`);s=[{messageId:`summary-${i.fromMessageId}-${i.toMessageId}`,turnId:null,sessionId:o[0].sessionId,role:`assistant`,contentText:i.summaryText,blocks:[{type:`text`,content:i.summaryText}],timestamp:o[o.length-1].timestamp}]}else s=o;break;default:s=o;break}if((i.policy!==`summarize`||!i.summaryText)&&i.overrides&&Object.keys(i.overrides).length>0){let e=new Set(Object.entries(i.overrides).filter(([,e])=>e===`exclude`).map(([e])=>e));s=s.filter(t=>!e.has(t.messageId))}s=He(s,i),r.push(...s)}return r}function B(e){return{role:e.role,blocks:e.blocks}}async function We(e,t){return{messageHistory:(await z(e,t.sessionId)).messages.map(B),isFirstTurn:!0}}async function Ge(e,t,n,r){if(t.cwd===n)return{swapped:!1};let i=await e.request(x.cwd.change,{agentId:t.agentId,adapterId:t.adapterId,adapterName:t.adapterName,adapterSessionId:t.adapterSessionId??``,sessionId:t.sessionId,newCwd:n,...r?.skipWarning?{skipWarning:!0}:{}});if(!i.success)throw Error(`Failed to change cwd for agent ${t.agentId}: ${i.reason??`unknown`}`);return i.previousCwd?(t.cwd=n,{swapped:!0,previousCwd:i.previousCwd}):(t.cwd=n,{swapped:!1})}async function Ke(e,t,n,r){let i=n===void 0||t.model===n,a=r?.reasoningEffort===void 0,o=!r?.providerConfigId;if(i&&a&&o)return{changed:!1};let s=r?.providerConfigId?await d(e,{adapterName:t.adapterName,providerConfigId:r.providerConfigId}):void 0,c=await e.request(x.model.change,{agentId:t.agentId,adapterId:t.adapterId,adapterName:t.adapterName,adapterSessionId:t.adapterSessionId??``,...n!==void 0&&{newModel:n},...r?.reasoningEffort!==void 0&&{reasoningEffort:r.reasoningEffort},...r?.skipWarning!==void 0&&{skipWarning:r.skipWarning},...s!==void 0&&{providerContext:s}});if(!c.success)throw Error(`Failed to change model for agent ${t.agentId}: ${c.reason??`unknown`}`);return n!==void 0&&(t.model=n),{changed:!0,swapped:c.swapped??!1}}async function qe(e,t,n){let r=[],i=new Set;for(let a of t){let t=await e.requestOptional(v.getAgent,{adapterId:a.adapterId,agentId:a.agentId});if(t.handled&&t.data.agent!==null)r.push(a);else{let t=await Ye(e,a,n);r.push(t),i.add(t.agentId)}}return{verifiedAgents:r,recoveredAgentIds:i}}async function Je(e,t,n){let r=await z(e,t.sessionId),i=n?.pipeline??[];return{messageHistory:(i.length>0?(await R(r.messages,i)).messages:r.messages).map(B),isFirstTurn:!0}}async function Ye(e,t,n){let r=await I(e,t.adapterName).catch(()=>t.adapterId);return await e.request(v.rehydrateAgent,{adapterId:r,agentId:t.agentId,cwd:n.cwd,model:n.model??t.model,...t.adapterSessionId!==void 0&&{adapterSessionId:t.adapterSessionId},...n.resumeAdapterSessionId!==void 0&&{resumeAdapterSessionId:n.resumeAdapterSessionId}}),t.adapterId=r,t}function Xe(e,t){return t?.hasNewTransforms===!0||e.forkTransforms!==void 0}function Ze(e,t){return e.adapterName!==void 0&&t!==e.adapterName}function V(e){let{session:t,sessionContext:n}=e;return e.adapterSupportsNative?Ze(t,e.targetAdapterName)?{kind:`degrade`,reason:`adapter-mismatch`}:t.adapterSessionId?!t.machineId||!e.localMachineId?{kind:`degrade`,reason:`missing-machine-id`}:t.machineId===e.localMachineId?t.isImported&&t.isOrchestrated===!0?{kind:`degrade`,reason:`hybrid-imported-orchestrated`}:n?.hasCompression?{kind:`degrade`,reason:`compression-present`}:Xe(t,n)?{kind:`degrade`,reason:`transforms-present`}:n?.hasConnectorSwap?{kind:`degrade`,reason:`connector-swap`}:e.currentCwd&&e.targetCwd&&e.currentCwd!==e.targetCwd?{kind:`degrade`,reason:`cwd-mismatch`}:e.intent===`fork`&&t.forkPointMessageId&&e.midHistoryForkSupported!==!0?{kind:`degrade`,reason:`mid-history-unsupported`}:{kind:`native`}:{kind:`foreign`,machineId:t.machineId}:{kind:`degrade`,reason:`no-adapter-session`}:{kind:`degrade`,reason:`adapter-unsupported`}}const Qe=t.postgres,H=te({turns:n},{turns:Qe});async function $e(e,t){let n=re(e.dialect);for(let r=1;;r++)try{await e.run(t());return}catch(e){if(r>=32||!n.capabilities.maxCounterAssignmentRaces||!n.errors.isUniqueViolationError(e,`uniq_turns_session_number`))throw e}}function et(e){if(e)try{let t=JSON.parse(e),n=ee.safeParse(t);return n.success?n.data:void 0}catch{return}}function U(e){return e?JSON.stringify(e):null}function tt(e){if(e)try{let t=JSON.parse(e),n=T.safeParse(t);return n.success?n.data:void 0}catch{return}}function W(e){let t=tt(e.initiator);return{turnId:e.turnId,sessionId:e.sessionId,turnNumber:e.turnNumber,startedAt:e.startedAt,completedAt:e.completedAt??void 0,status:e.status,error:e.error??void 0,usage:et(e.usage),...t!==void 0&&{initiator:t}}}function nt(e,t){let n=[rt(e,t),it(e,t),at(e,t),ot(e,t),st(e,t),ct(e,t),lt(e,t),ut(e,t)];return()=>n.forEach(e=>e())}function rt(e,t){let n=ne(t),{turns:r}=E(t,H);return e.on(o.create,async e=>{let{sessionId:i,turnId:a,initiator:o}=e.payload,s=Date.now(),c=a??crypto.randomUUID(),l=U(o);await $e(n,()=>M`
3
+ WITH next_num AS (
4
+ SELECT COALESCE(MAX(turn_number), 0) + 1 AS n
5
+ FROM turns
6
+ WHERE session_id = ${i}
7
+ )
8
+ INSERT INTO turns (turn_id, session_id, turn_number, started_at, status, initiator)
9
+ SELECT ${c}, ${i}, n, ${s}, ${`active`}, ${l}
10
+ FROM next_num
11
+ `);let[u]=await t.select({turnNumber:r.turnNumber}).from(r).where(A(r.turnId,c)),d={turnId:c,sessionId:i,turnNumber:u.turnNumber,startedAt:s,status:`active`,...o!==void 0&&{initiator:o}};e.setResult({turn:d})})}function it(e,t){let n=ne(t),{turns:r}=E(t,H);return e.on(o.ingestCompleted,async e=>{let{sessionId:i,turnAnchorId:a,startedAt:o,completedAt:s,status:c,error:l,usage:u,initiator:d}=e.payload,f=crypto.randomUUID(),p=U(d),m=u===void 0?null:JSON.stringify(u);await $e(n,()=>M`
12
+ WITH next_num AS (
13
+ SELECT COALESCE(MAX(turn_number), 0) + 1 AS n
14
+ FROM turns
15
+ WHERE session_id = ${i}
16
+ )
17
+ INSERT INTO turns (turn_id, session_id, turn_number, started_at, completed_at, status, error, usage, initiator, turn_anchor_id)
18
+ SELECT ${f}, ${i}, n, ${o}, ${s}, ${c}, ${l??null}, ${m}, ${p}, ${a}
19
+ FROM next_num
20
+ WHERE true
21
+ ON CONFLICT(session_id, turn_anchor_id) DO UPDATE SET
22
+ completed_at = excluded.completed_at,
23
+ status = excluded.status,
24
+ error = excluded.error,
25
+ usage = excluded.usage
26
+ `);let[h]=await t.select().from(r).where(D(A(r.sessionId,i),A(r.turnAnchorId,a))).limit(1);e.setResult({turn:W(h),created:h.turnId===f})})}function at(e,t){let{turns:n}=E(t,H);return e.on(o.complete,async e=>{let{turnId:r,status:i,expectedStatus:a,error:o,usage:s}=e.payload,c=Date.now(),l=a?D(A(n.turnId,r),A(n.status,a),M`${n.status} not in ('completed', 'error')`):D(A(n.turnId,r),M`${n.status} not in ('completed', 'error')`),u={completedAt:c,status:i,error:o??null,...s!==void 0&&{usage:JSON.stringify(s)}},[d]=await t.update(n).set(u).where(l).returning();if(d){e.setResult({turn:W(d),transitioned:!0});return}let[f]=await t.select().from(n).where(A(n.turnId,r)).limit(1);if(!f)throw Error(`Turn not found: ${r}`);if(a){e.setResult({turn:W(f),transitioned:!1});return}if(!(f.status===`completed`||f.status===`error`)||s===void 0){e.setResult({turn:W(f),transitioned:!1});return}let[p]=await t.update(n).set({usage:JSON.stringify(s)}).where(D(A(n.turnId,r),M`${n.status} in ('completed', 'error')`)).returning();e.setResult({turn:W(p??f),transitioned:!1})})}function ot(e,t){let{turns:n}=E(t,H);return e.on(o.set,async e=>{let{turn:r}=e.payload,i={turnId:r.turnId,sessionId:r.sessionId,turnNumber:r.turnNumber,startedAt:r.startedAt,completedAt:r.completedAt??null,status:r.status,error:r.error??null,usage:r.usage?JSON.stringify(r.usage):null,initiator:U(r.initiator)};await t.insert(n).values(i).onConflictDoUpdate({target:n.turnId,set:i}),e.setResult({turn:r})})}function st(e,t){let{turns:n}=E(t,H);return e.on(o.get,async e=>{let{turnId:r}=e.payload,[i]=await t.select().from(n).where(A(n.turnId,r)).limit(1);e.setResult({turn:i?W(i):null})})}function ct(e,t){let{turns:n}=E(t,H);return e.on(o.getBySession,async e=>{let{sessionId:r,limit:i,status:a}=e.payload,o=t.select().from(n).where(A(n.sessionId,r)).orderBy(O(n.turnNumber));a&&(o=t.select().from(n).where(D(A(n.sessionId,r),A(n.status,a))).orderBy(O(n.turnNumber))),i&&(o=o.limit(i));let s=await o;e.setResult({turns:s.map(W)})})}function lt(e,t){let{turns:n}=E(t,H);return e.on(o.getActive,async e=>{let{sessionId:r}=e.payload,[i]=await t.select().from(n).where(D(A(n.sessionId,r),A(n.status,`active`))).orderBy(k(n.turnNumber)).limit(1);e.setResult({turn:i?W(i):null})})}function ut(e,t){let{turns:n}=E(t,H);return e.on(o.listActive,async e=>{let r=await t.select().from(n).where(A(n.status,`active`)).orderBy(O(n.startedAt));e.setResult({turns:r.map(W)})})}function dt(e){let t=new Map,n=new Map,r=new Map,i=ft(t,n,r),a=new Map,o=[pt(e,i,r),mt(e,t,i,r,a),ht(e,t,i),gt(e,i),_t(e,t),vt(e,t,n),yt(e,t,n),bt(e,t)];return()=>o.forEach(e=>e())}function ft(e,t,n){return r=>{e.set(r.turnId,r);let i=t.get(r.sessionId)??[];i.includes(r.turnId)||i.push(r.turnId),t.set(r.sessionId,i);let a=n.get(r.sessionId)??0;r.turnNumber>a&&n.set(r.sessionId,r.turnNumber)}}function pt(e,t,n){return e.on(o.create,e=>{let{sessionId:r,turnId:i,initiator:a}=e.payload,o=Date.now(),s={turnId:i??crypto.randomUUID(),sessionId:r,turnNumber:(n.get(r)??0)+1,startedAt:o,status:`active`,...a!==void 0&&{initiator:a}};t(s),e.setResult({turn:s})})}function mt(e,t,n,r,i){return e.on(o.ingestCompleted,e=>{let{sessionId:a,turnAnchorId:o,startedAt:s,completedAt:c,status:l,error:u,usage:d,initiator:f}=e.payload,p=i.get(a)??new Map,m=p.get(o);if(m!==void 0){let r=t.get(m);if(!r)throw Error(`Turn not found for anchor in session: ${a}`);let i={...r,completedAt:c,status:l,error:u??void 0,usage:d??void 0};n(i),e.setResult({turn:i,created:!1});return}let h={turnId:crypto.randomUUID(),sessionId:a,turnNumber:(r.get(a)??0)+1,startedAt:s,completedAt:c,status:l,error:u??void 0,usage:d??void 0,...f!==void 0&&{initiator:f}};n(h),p.set(o,h.turnId),i.set(a,p),e.setResult({turn:h,created:!0})})}function ht(e,t,n){return e.on(o.complete,e=>{let{turnId:r,status:i,expectedStatus:a,error:o,usage:s}=e.payload,c=t.get(r);if(!c)throw Error(`Turn not found: ${r}`);if(a&&c.status!==a){e.setResult({turn:c,transitioned:!1});return}let l=c.status===`completed`||c.status===`error`,u=l?{...c,usage:s??c.usage}:{...c,completedAt:Date.now(),status:i,error:o??void 0,usage:s??c.usage};n(u),e.setResult({turn:u,transitioned:!l})})}function gt(e,t){return e.on(o.set,e=>{let{turn:n}=e.payload;t(n),e.setResult({turn:n})})}function _t(e,t){return e.on(o.get,e=>{e.setResult({turn:t.get(e.payload.turnId)??null})})}function vt(e,t,n){return e.on(o.getBySession,e=>{let{sessionId:r,status:i,limit:a}=e.payload,o=(n.get(r)??[]).map(e=>t.get(e)).filter(e=>!!e);i&&(o=o.filter(e=>e.status===i)),o.sort((e,t)=>e.turnNumber-t.turnNumber),a&&(o=o.slice(0,a)),e.setResult({turns:o})})}function yt(e,t,n){return e.on(o.getActive,e=>{let{sessionId:r}=e.payload,i=(n.get(r)??[]).map(e=>t.get(e)).filter(e=>!!e).filter(e=>e.status===`active`).sort((e,t)=>t.turnNumber-e.turnNumber).at(0);e.setResult({turn:i??null})})}function bt(e,t){return e.on(o.listActive,e=>{let n=[...t.values()].filter(e=>e.status===`active`).sort((e,t)=>e.startedAt-t.startedAt);e.setResult({turns:n})})}function G(e){return typeof e==`string`&&e.trim().length>0?e.trim():void 0}async function xt(e,t,n,r){let{adapterName:i}=await e.request(f.resolveName,{adapterId:t});if(n&&i!==n)throw Error(`${r}adapterName "${n}" does not match adapterId "${t}"`);return i}function K(e){return typeof e==`string`?e:(Array.isArray(e.blocks)?e.blocks:[e.blocks]).filter(e=>e.type===`text`).map(e=>e.content).join(`
27
+ `)}function St(e){return e}function Ct(e){return typeof e==`string`?[{type:`text`,content:e}]:(Array.isArray(e.blocks)?e.blocks:[e.blocks]).map(St)}async function wt(e,t,n,r,i){let{session:a}=await e.request(w.get,{sessionId:t});if(a){if(a.status!==`active`)throw Error(`[getOrCreateSession] Session is not active: ${t}`);return{sessionId:t,session:a}}await e.request(w.create,{sessionId:t,originWindowId:r,...i!==void 0&&{machineId:i}});let{session:o}=await e.request(w.get,{sessionId:t});if(!o)throw Error(`[getOrCreateSession] Failed to create session: ${t}`);return{sessionId:t,session:o}}function Tt(e,t){if(t===void 0){let t=e.agents.find(t=>t.agentId===e.leadAgentId);if(!t)throw Error(`[resolveTargetAgents] Lead agent not found: ${e.leadAgentId}`);return[t]}if(t===`all`)return e.agents;let n=new Set(t);return e.agents.filter(e=>n.has(e.agentId))}function Et(e,t){for(let n of e.values())if(n.hasAgent(t))return n}function Dt(e,t){if(e===`extension`){let e=t?.trim();if(!e)throw Error(`extensionId is required when source is "extension"`);return{source:`extension`,sourceId:e}}return e?{source:e}:{source:`user`}}async function Ot(e,t,n,r,i){let a=i?.state===`resolved`?i.providerConfigId:void 0;if(a!==void 0&&n!==void 0&&n!==a)throw Error(`[attach-handler] providerConfigId '${n}' does not match resolved provider context '${a}'`);let o=n??a??r?.providerConfigId;if(i!==void 0){if(i.state!==`resolved`&&o!==void 0)throw new u(`provider-context-unresolved`,t,o);return{providerConfigId:o,providerContext:i}}return{providerConfigId:o,providerContext:o===void 0?void 0:await d(e,{adapterName:t,providerConfigId:o})}}function q(e){if(e instanceof se)return e;if(e instanceof Error&&e.cause instanceof se)return e.cause}async function J(e,t){try{await e.emit(w.user_message.acknowledged,t)}catch(e){console.error(`[SessionRouting] Failed to emit user-message acknowledgement:`,e)}}async function kt(e,t,n,r){await e.emit(w.turn.assistantPersistenceSettled,{sessionId:t.sessionId,turnId:t.turnId,messageId:n,agentId:r})}async function Y(e){let{bus:t,turn:n,messageId:r,agentId:i,outcome:a,error:o,onTurnComplete:s,turnManager:c}=e;try{await kt(t,n,r,i)}catch(e){console.error(`[SessionRouting] Failed to emit terminal routing settlement:`,e)}await c.recordAgentCompletion(i,r,a,o,s,n.turnId)}async function At(e,t,n,r,i,a,o,s,c,l,u){if(n.some(e=>!a.hasAdmittedPair(i,e.agentId)))throw Error(`Turn ${a.turnId} has no admitted fanout for message ${i}`);let d=n.map(async n=>{try{return await e.request(x.sendMessage,{agentId:n.agentId,adapterId:n.adapterId,message:r,deliveryMode:o,messageId:i,turnId:a.turnId,sessionId:t.sessionId,sessionContext:l,...u!==void 0&&{responseSchema:u}}),await J(e,{sessionId:a.sessionId,turnId:a.turnId,turnNumber:a.turnNumber,messageId:i,agentId:n.agentId}),{agentId:n.agentId,kind:`dispatched`}}catch(t){if(q(t)!==void 0)return await Y({bus:e,turn:a,messageId:i,agentId:n.agentId,outcome:`cancelled`,onTurnComplete:s,turnManager:c}),{agentId:n.agentId,kind:`cancelled`,error:t};let r=t instanceof Error?t.message:String(t);return await Y({bus:e,turn:a,messageId:i,agentId:n.agentId,outcome:`error`,error:r,onTurnComplete:s,turnManager:c}),{agentId:n.agentId,kind:`failed`,error:t}}});return await Promise.all(d)}async function jt(e,t,n,r,i,a,o,s){try{return await Nt(e,t,n,i,a,o,s)}catch(t){throw console.error(`[attach-handler] Failed to set up initial-message turn, rolling back started agent`,{sessionId:i,agentId:a,adapterId:r.adapterId,error:t}),await X(e,r,i,`initial-message turn setup failure`),t}}async function Mt(e,t,n,r,i,a,o){let s=await jt(e,t,n,r,i.sessionId,r.agentId,crypto.randomUUID(),a),c;try{c=await At(e,i,[{agentId:r.agentId,adapterId:r.adapterId}],a,s.messageId,s.turn,void 0,t.completeTurn.bind(t),t,o,void 0)}catch(n){try{await t.retryTurnCompletion(s.turn.turnId)}catch(e){console.error(`[attach-handler] Failed to retry initial-message completion after routing failure`,{sessionId:i.sessionId,turnId:s.turn.turnId,error:e})}throw await X(e,r,i.sessionId,`initial-message routing failure`),n}let l=c[0];if(!l||l.kind===`dispatched`)return{messageId:s.messageId,turnId:s.turn.turnId};throw await X(e,r,i.sessionId,`initial-message routing failure`),l.error}async function X(e,t,n,r){try{await e.request(v.stopAgent,{adapterId:t.adapterId,agentId:t.agentId})}catch(e){console.error(`[attach-handler] Failed to rollback started agent after ${r}`,{sessionId:n,agentId:t.agentId,adapterId:t.adapterId,error:e})}}async function Nt(e,t,n,r,i,a,o){let s=await t.createReservedTurn(n,[i]),c=t.admitReservedMessage(s,a,[i]);try{if(!(await e.requestOptional(m.append,{message:{messageId:a,turnId:s.turnId,sessionId:r,role:`user`,contentText:K(o),blocks:Ct(o),timestamp:Date.now()}})).handled)throw Error(`Message storage append handler is not registered`)}catch(e){console.warn(`[attach-handler] Failed to store initial user message`,{sessionId:r,messageId:a,error:e instanceof Error?e.message:String(e)});try{await c.rollback(`initial-message-persistence-failed`)}catch(e){console.error(`[attach-handler] Failed to finalize rejected initial-message persistence:`,e)}throw e}try{await Pt(e,r,s,a,o)}catch(e){try{await c.rollback(`initial-message-lifecycle-failed`)}catch(e){console.error(`[attach-handler] Failed to finalize rejected initial-message lifecycle:`,e)}throw e}return c.commit(),{messageId:a,turn:s}}async function Pt(e,t,n,r,i){await Oe(e,{sessionId:t,turnId:n.turnId,turnNumber:n.turnNumber,messageId:r,agentIds:[...n.agentIds],ingestionMarker:`live`}),await ke(e,{sessionId:t,turnId:n.turnId,turnNumber:n.turnNumber,messageId:r,content:i,agentIds:[...n.agentIds]})}function Ft(e){return{...e.model!==void 0&&{model:e.model},...e.reasoningEffort!==void 0&&{reasoningEffort:e.reasoningEffort},...e.cwd!==void 0&&{cwd:e.cwd},...e.allowedTools!==void 0&&{allowedTools:e.allowedTools},...e.disallowedTools!==void 0&&{disallowedTools:e.disallowedTools},...e.allowedDirectories!==void 0&&{allowedDirectories:e.allowedDirectories},...e.env!==void 0&&{env:e.env},...e.mcpSessionContext!==void 0&&{mcpSessionContext:e.mcpSessionContext},...e.adapterConfig!==void 0&&{adapterConfig:e.adapterConfig},...e.systemPrompt!==void 0&&{systemPrompt:e.systemPrompt}}}function It(e,t,n){let r=e.model??t?.model,i=e.cwd;return{runtimeOptions:Rt({model:r,reasoningEffort:e.reasoningEffort??t?.reasoningEffort,cwd:i,allowedTools:e.allowedTools??t?.allowedTools,disallowedTools:e.disallowedTools??t?.disallowedTools,allowedDirectories:e.allowedDirectories??t?.allowedDirectories,env:e.env,mcpSessionContext:e.mcpSessionContext,adapterConfig:e.adapterConfig,systemPrompt:e.systemPrompt??t?.systemPrompt,providerContext:n}),mergedModel:r,mergedCwd:i}}function Lt(e,t,n){let r=e??t;return{effectiveCwd:r,effectiveRuntimeOptions:r!==void 0&&n.cwd===void 0?{...n,cwd:r}:n}}function Rt(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0))}function zt(e,t,n,r,i,a,o){return i?{mode:`resume`,adapterId:e,sessionId:t,adapterSessionId:i,role:n,...r,...a!==void 0&&{harnessId:a}}:{adapterId:e,sessionId:t,role:n,...r,...a!==void 0&&{harnessId:a},...o!==void 0&&{sessionContext:o}}}async function Bt(e,t){let{adapterId:n,sessionId:r,role:i,effectiveRuntimeOptions:a,resumeAdapterSessionId:o,harnessId:s,attachSessionContext:c}=t,l=zt(n,r,i,a,o,s,c),u=await e.request(v.startAgent,l);if(!u.success)throw Error(`[attach-handler] Failed to start agent: ${u.message}`);return u}async function Vt(e,t,n){let r=await z(e,t);if(r.messages.length===0)return n;let i=r.messages.map(B);return{...n,messageHistory:i,isFirstTurn:!0}}function Ht(e,t,n){let r=e.on(w.agent.attach,async r=>{r.setResult(await qt(e,t,n,r.payload))}),i=e.on(w.agent.attachResolved,async r=>{if(!r.origin.local)throw Error(`[attach-handler] session.agent.attachResolved requires a local-origin request`);r.setResult(await qt(e,t,n,{...r.payload,resolvedProviderContext:r.payload.agent.providerContext===void 0?void 0:C.parse(r.payload.agent.providerContext)}))});return()=>{r(),i()}}async function Ut(e,t){try{let n=await e();return n.handled?t(n.data):!1}catch{return!1}}async function Wt(e,t){return Ut(()=>e.requestOptional(v.getCapabilities,{adapterId:t}),e=>new Set(e.capabilities).has(`session:resume`))}async function Gt(e,t,n){return Ut(()=>e.requestOptional(v.listAgents,{adapterId:t}),e=>e.agents.some(e=>e.adapterSessionId===n))}async function Kt(e){let{bus:t,adapterId:n,adapterName:r,session:i,machineId:a,effectiveCwd:o}=e,s=V({intent:`resume`,session:i,localMachineId:a,adapterSupportsNative:await Wt(t,n),targetAdapterName:r,currentCwd:i.targetWorkingDirectory,targetCwd:o});if(s.kind===`native`&&i.adapterSessionId!==void 0&&await Gt(t,n,i.adapterSessionId)){let e={kind:`degrade`,reason:`agent-already-started`};return F(t,{sessionId:i.sessionId,intent:`resume`,verdict:e,adapterId:n}),{resumeAdapterSessionId:void 0,attachSessionContext:{nativeLocality:e}}}return s.kind!==`native`&&F(t,{sessionId:i.sessionId,intent:`resume`,verdict:s,adapterId:n}),{resumeAdapterSessionId:s.kind===`native`?i.adapterSessionId:void 0,attachSessionContext:s.kind===`native`?void 0:{nativeLocality:s}}}async function qt(e,t,n,r){let{sessionId:i,agent:a,initialMessage:o,role:s,resolvedProviderContext:c}=r,l=Ft(a),u=await $t(e,i),d=await Qt(e,i,o,a),f=Xt(a,d),{adapterName:p,adapterId:m}=await Zt(e,f.adapterName,f.adapterId,n),{providerConfigId:h,providerContext:g}=await Ot(e,p,a.providerConfigId,d,c),{runtimeOptions:_,mergedModel:v,mergedCwd:y}=It(l,d,g),{effectiveCwd:b,effectiveRuntimeOptions:x}=Lt(y,u.targetWorkingDirectory,_),S=en(u,s),C=await Kt({bus:e,adapterId:m,adapterName:p,session:u,machineId:n,effectiveCwd:b}),{resumeAdapterSessionId:w}=C,T=C.attachSessionContext?await Vt(e,i,C.attachSessionContext):void 0;return Jt(e,t,{launch:{adapterId:m,sessionId:i,role:S,effectiveRuntimeOptions:x,resumeAdapterSessionId:w,harnessId:d?.harnessId,attachSessionContext:T},identity:{adapterName:p,sessionId:i,role:S,timestamp:Date.now(),personaId:Yt(a),profileId:d?.profileId,harnessId:d?.harnessId,providerConfigId:h,compressionMode:d?.compressionMode,model:v,cwd:b},session:u,initialMessage:o,sessionContext:T})}async function Jt(e,t,n){let r=n.initialMessage===void 0?void 0:await t.reserveTurn(n.session.sessionId);try{let i=await Bt(e,n.launch);await nn(e,i,n.identity);let a=r===void 0||n.initialMessage===void 0?void 0:await Mt(e,t,r,i,n.session,n.initialMessage,n.sessionContext);return{agentId:i.agentId,adapterSessionId:i.adapterSessionId,role:n.identity.role,...a&&{messageId:a.messageId,turnId:a.turnId}}}finally{r!==void 0&&t.releaseTurnReservation(r)}}function Yt(e){return e.kind===`persona`?e.personaId:void 0}function Xt(e,t){return{adapterName:e.kind===`adapter`&&`adapterName`in e?e.adapterName:t?.adapterName,adapterId:e.kind===`adapter`&&`adapterId`in e?e.adapterId:void 0}}async function Zt(e,t,n,r){let i=G(t),a=G(n);if(!i&&!a)throw Error(`[attach-handler] adapterName or adapterId is required — provide one explicitly or via persona/profile/virtualModel resolution`);if(a)return{adapterName:await xt(e,a,i,`[attach-handler] `),adapterId:a};let o=i;return{adapterName:o,adapterId:await I(e,o,r)}}async function Qt(e,t,n,r){if(r.kind===`adapter`)return null;let i=n?K(n):void 0;return e.request(y.resolve,{selection:r,context:{sessionId:t,promptText:i}})}async function $t(e,t){let{session:n}=await e.request(w.get,{sessionId:t});if(!n)throw Error(`[attach-handler] Session not found: ${t}`);if(n.status!==`active`)throw Error(`[attach-handler] Session is not active: ${t}`);return n}function en(e,t){let n=e.agents.length===0;return t??(n?`lead`:`member`)}async function tn(e,t){!t.personaId&&!t.profileId&&!t.harnessId&&!t.providerConfigId||await e.request(Ne.set,{agentId:t.agentId,agent:{agentId:t.agentId,adapterId:t.adapterId,adapterName:t.adapterName,sessionId:t.sessionId,role:t.role,status:`idle`,personaId:t.personaId,profileId:t.profileId,harnessId:t.harnessId,providerConfigId:t.providerConfigId,createdAt:t.timestamp,lastActivityAt:t.timestamp,...t.model!==void 0&&{model:t.model},...t.cwd!==void 0&&{cwd:t.cwd},...t.compressionMode!==void 0&&{compressionMode:t.compressionMode}}})}async function nn(e,t,n){try{await tn(e,{agentId:t.agentId,adapterId:t.adapterId,adapterName:n.adapterName,sessionId:n.sessionId,role:n.role,timestamp:n.timestamp,personaId:n.personaId,profileId:n.profileId,harnessId:n.harnessId,providerConfigId:n.providerConfigId,compressionMode:n.compressionMode,model:n.model,cwd:n.cwd})}catch(r){throw console.error(`[attach-handler] Failed to persist agent identity, rolling back started agent`,{sessionId:n.sessionId,agentId:t.agentId,adapterId:t.adapterId,error:r}),await X(e,t,n.sessionId,`identity persistence failure`),r}}function rn(e){return e.on(w.abandon,async t=>{let{parentSessionId:n,childSessionId:r}=t.payload,{session:i}=await e.request(w.get,{sessionId:r});if(!i)throw Error(`[abandon-handler] Child session not found: ${r}`);if(i.parentSessionId!==n)throw Error(`[abandon-handler] Invalid parent-child relationship: session ${r} is not a child of ${n}`+(i.parentSessionId?` (actual parent: ${i.parentSessionId})`:` (session has no parent)`));if(!(await e.request(w.close,{sessionId:r})).success)throw Error(`[abandon-handler] Failed to close child session: ${r}`);await e.emit(w.abandoned,{sessionId:r,parentSessionId:n}),t.setResult({success:!0})})}const an={id:`messages-to-context`,label:`Export as Context`,description:`Convert messages to context JSON (final step)`,category:`extraction`,async execute(e){let t=e.map(e=>({role:e.role,content:e.blocks.map(e=>e.type===`text`?e.content:e.type===`reasoning`?`[reasoning: ${e.content}]`:e.type===`tool_call`?`[tool: ${e.name}]`:e.type===`tool_output`?e.output:``).filter(Boolean).join(`
28
+ `)})),n=t.reduce((e,t)=>e+t.content.length,0),r=Math.ceil(n/4);return{kind:`context`,json:{type:`compressed-messages`,messageCount:e.length,messages:t},tokenEstimate:r}}},on={id:`llm-summarize`,label:`Summarize`,description:`LLM-generated summary of selected messages`,category:`transformation`,async execute(e){return{kind:`messages`,messages:e}}};function sn(e){let t=[];for(let n of e){let e=n.blocks.filter(e=>e.type===`text`).map(e=>e.content).join(`
29
+ `);e&&(n.role===`user`?t.push(`[human]\n${e}\n[/human]`):n.role===`assistant`&&t.push(`[assistant]\n${e}\n[/assistant]`))}return`<conversation>\n${t.join(`
30
+
31
+ `)}\n</conversation>`}function cn(e){return{id:`llm-extract`,label:`LLM Extract`,description:`Extract structured context using a cheap LLM model (requires virtualModelId in options)`,category:`extraction`,async execute(t,n){let r={kind:`messages`,messages:t},i=n?.virtualModelId;if(typeof i!=`string`)return r;let a=(typeof n?.sessionId==`string`&&n.sessionId.length>0?n.sessionId:void 0)??t[0]?.sessionId;if(typeof a!=`string`||a.length===0)return r;try{let n=await e.request(y.resolve,{selection:{kind:`virtual-model`,virtualModelId:i},context:{sessionId:a}}),{adapterId:r}=await e.request(ce.resolveId,{adapterName:n.adapterName}),o=sn(t),s=n.providerConfigId?await le(e,{adapterName:n.adapterName,providerConfigId:n.providerConfigId}):void 0,{text:c}=await e.request(v.infer,{adapterId:r,prompt:o,model:n.model,systemPrompt:`You are a context extraction assistant. Analyze the following conversation and extract structured information. Respond with ONLY valid JSON matching this exact schema — no markdown, no explanation, no code fences:
32
+
33
+ {
34
+ "resolved_items": ["string — completed work with resolution details"],
35
+ "known_bugs": [{ "issue": "string", "location": "string", "impact": "string" }],
36
+ "todos": [{ "issue": "string", "location": "string", "priority": "high|medium|low" }],
37
+ "key_decisions_and_rationale": ["string — decision with reasoning"],
38
+ "technical_details": {
39
+ "files": ["string — file paths mentioned"],
40
+ "schemas": {},
41
+ "apis": ["string — API endpoints or contracts"],
42
+ "config": {}
43
+ },
44
+ "constraints_and_requirements": ["string — constraints or non-negotiable requirements"],
45
+ "current_state": "string — one paragraph summary of where work stands now",
46
+ "roadmap": ["string — future work items in priority order"],
47
+ "data_flows": ["string — key data movement patterns"],
48
+ "component_interactions": { "ComponentName": "string — description of its role" },
49
+ "key_files": { "filepath": "string — what this file does" },
50
+ "helpful_hint": ["string — quick reference hints for resuming work"]
51
+ }
52
+
53
+ Rules:
54
+ - Omit array items you have no evidence for (prefer empty array over fabrication).
55
+ - current_state MUST be present; write "No summary available" if you cannot determine it.
56
+ - Extract only facts stated or clearly implied in the conversation. Do not invent.
57
+ - key_files and component_interactions should only include items explicitly mentioned.`,...s!==void 0&&{providerContext:s}}),l=c.trim().replace(/^```(?:json)?\s*/i,``).replace(/\s*```$/i,``).trim(),u=JSON.parse(l),d=h.parse(u),f=Math.ceil(JSON.stringify(d).length/4);return{kind:`context`,json:{...d},tokenEstimate:f}}catch(e){return console.warn(`[llm-extract] action failed`,{action:`llm-extract`,sessionId:a,error:e}),r}}}}let Z=!1,Q=!1;function ln(e){Z||(Z=!0,L.register(Re),L.register(Be),L.register(an),L.register(on)),e&&!Q&&(Q=!0,L.register(cn(e)))}function un(){Z=!1,Q=!1}function dn(e){return ln(e),e.on(w.compress,async t=>{let{sessionId:n,pipeline:r}=t.payload,{messages:a}=await e.request(m.getBySession,{sessionId:n,limit:1e4}),o=await R(a,r,{sessionId:n});if(!o.contextJson)throw Error(`[compress-handler] Compress pipeline must produce context JSON (sessionId=${n})`);let s=a.map(e=>e.messageId),c=Math.ceil(a.reduce((e,t)=>e+JSON.stringify(t.blocks).length/4,0)),l=crypto.randomUUID();await e.request(i.append,{event:{sessionId:n,eventId:l,timestamp:Date.now(),type:`squash`,payload:{summaryJson:JSON.stringify(o.contextJson),tokensBefore:c,tokensAfter:o.tokenEstimate,compressedMessageIds:s}}}),await e.emit(w.compressed,{sessionId:n,eventId:l}),t.setResult({eventId:l,contextJson:o.contextJson,tokensBefore:c,tokensAfter:o.tokenEstimate})})}async function fn(e,t,n,r){if(!n.segments?.length)return!1;let i=[],a;do{let{messages:n,nextCursor:o}=await e.request(m.getBySession,{sessionId:t,order:`asc`,limit:200,after:a});i.push(...n),a=r&&n.some(e=>e.messageId===r)?void 0:o??void 0}while(a);if(i.length===0)throw Error(`[fork-handler] Segment transforms require at least one source message (sourceSessionId=${t})`);let o=i;if(r){let e=i.findIndex(e=>e.messageId===r);if(e===-1)throw Error(`[fork-handler] Fork point message not found in source message list: ${r} (sourceSessionId=${t})`);o=i.slice(0,e+1)}let s=new Map;o.forEach((e,t)=>{s.set(e.messageId,t)});let c=-1;for(let e of n.segments){if(!e.fromMessageId||!e.toMessageId)throw Error(`[fork-handler] Segment must have fromMessageId and toMessageId (sourceSessionId=${t})`);let n=s.get(e.fromMessageId),r=s.get(e.toMessageId);if(n===void 0||r===void 0)throw Error(`[fork-handler] Segment boundaries must reference source messages: ${e.fromMessageId}..${e.toMessageId} (sourceSessionId=${t})`);if(n>r)throw Error(`[fork-handler] Segment range is reversed: ${e.fromMessageId}..${e.toMessageId} (sourceSessionId=${t})`);if(n<=c)throw Error(`[fork-handler] Segments must not overlap and must be ordered (sourceSessionId=${t})`);if(n!==c+1)throw Error(`[fork-handler] Segments must be contiguous without gaps (sourceSessionId=${t})`);c=r}if(c!==o.length-1)throw Error(`[fork-handler] Segments must cover the entire source message range (sourceSessionId=${t})`);return!0}function pn(e){if(!e.segments?.length&&e.appliedPipeline?.length)for(let t of e.appliedPipeline){let e=L.get(t.actionId);if(!e)throw Error(`[fork-handler] Unknown action in pipeline: ${t.actionId}`);if(e.category!==`transformation`)throw Error(`[fork-handler] Action '${t.actionId}' is category '${e.category}', but only 'transformation' actions are allowed in fork transforms`)}}function mn(e,t){return e.on(w.fork,async n=>{let{sourceSessionId:r,fromMessageId:i,name:a,branchKind:o=`fork`,transforms:s,targetWorkingDirectory:c,metadata:l,existingSessionId:u}=n.payload,{session:d}=await e.request(w.get,{sessionId:r});if(!d)throw Error(`[fork-handler] Source session not found: ${r}`);if(i){let{message:t}=await e.request(m.get,{messageId:i});if(!t)throw Error(`[fork-handler] Fork point message not found: ${i} (sourceSessionId=${r})`);if(t.sessionId!==r)throw Error(`[fork-handler] Fork point message ${i} does not belong to session ${r}`)}s&&(await fn(e,r,s,i)||pn(s));let{sessionId:f}=await e.request(w.create,{...u?{sessionId:u}:{},parentSessionId:r,forkPointMessageId:i,branchKind:o,forkTransforms:s,...t!==void 0&&{machineId:t},...a?{title:a}:{},...c?{targetWorkingDirectory:c}:{},...l?{metadata:l}:{}});await e.emit(w.branch.created,{sessionId:r,childSessionId:f,parentSessionId:r,kind:o,forkPointMessageId:i,transforms:s}),await e.emit(w.forked,{parentSessionId:r,childSessionId:f,forkPoint:i}),n.setResult({sessionId:f})})}function hn(e){return e.on(w.merge,async t=>{let{parentSessionId:n,childSessionId:r,summary:a}=t.payload,o=`merge:${n}:${r}`,{session:s}=await e.request(w.get,{sessionId:n});if(!s)throw Error(`[merge-handler] Parent session not found: ${n}`);if(s.status!==`active`)throw Error(`[merge-handler] Parent session is not active: ${n}`);let{session:c}=await e.request(w.get,{sessionId:r});if(!c)throw Error(`[merge-handler] Child session not found: ${r}`);if(c.parentSessionId!==n)throw Error(`[merge-handler] Invalid parent-child relationship: session ${r} is not a child of ${n}`+(c.parentSessionId?` (actual parent: ${c.parentSessionId})`:` (session has no parent)`));await e.emit(w.merging,{parentSessionId:n,childSessionId:r});let l=a??`Child session ${r} merged.`;if(!(await e.request(w.close,{sessionId:r})).success)throw Error(`[merge-handler] Failed to close child session: ${r}`);let u=JSON.stringify({handoff:l});await e.request(i.append,{event:{sessionId:n,eventId:o,timestamp:Date.now(),type:`branch.merged`,payload:{childSessionId:r,parentSessionId:n,resultJson:u}}}),await e.emit(w.branch.merged,{sessionId:n,childSessionId:r,parentSessionId:n,resultJson:u}),await e.emit(w.merged,{parentSessionId:n,childSessionId:r,handoff:l}),t.setResult({success:!0,handoff:l})})}const $={enabled:!0,template:`User changed working directory from {oldCwd} to {newCwd}`};function gn(e,t,n){return e.replace(/\{oldCwd\}/g,t).replace(/\{newCwd\}/g,n)}function _n(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.enabled==`boolean`&&typeof t.template==`string`}async function vn(e){try{let t=await e.request(g.get,{key:{scope:`global`,surface:`ui`,context:`cwdChangeNotification`},category:`chat-display`});if(t.value!==null&&t.value!==void 0)return _n(t.value)?t.value:$}catch{}return $}function yn(e,t){return e??t.adapterName??``}async function bn(e,t,n,r,i){F(e,{sessionId:t,intent:`fork`,verdict:i});let a=(await z(e,t)).messages.map(B);return{...n,messageHistory:a,isFirstTurn:!0,hasNewTransforms:r.forkTransforms!==void 0,nativeLocality:i}}async function xn(e,t){let{message:n}=await e.request(m.get,{messageId:t});return n?.adapterMessageId??void 0}async function Sn(e,t,n,r,i,a,c,l,u){if(!(t.parentSessionId!==void 0&&(t.contextInheritance===`parent-history`||t.contextInheritance===void 0&&t.branchKind!==`subagent`))||r?.messageHistory)return r;let{turns:d}=await e.request(o.getBySession,{sessionId:n,limit:2});if(!(i&&d.length<=1))return r;let f=t.parentSessionId;if(f===void 0)return r;let{session:p}=await e.request(s.get,{sessionId:f});if(p===null)return r;let m=l??t.targetWorkingDirectory,h=V({intent:`fork`,session:{...p,forkPointMessageId:t.forkPointMessageId,forkTransforms:t.forkTransforms},localMachineId:a,adapterSupportsNative:c?.adapterSupportsNativeFork===!0,targetAdapterName:yn(u,p),currentCwd:p.targetWorkingDirectory,targetCwd:m,sessionContext:r,midHistoryForkSupported:c?.midHistoryForkSupported===!0}),g=p.adapterSessionId;if(h.kind===`native`&&g!==void 0){if(t.forkPointMessageId!==void 0){let i=await xn(e,t.forkPointMessageId);if(i===void 0)return bn(e,n,r,t,{kind:`degrade`,reason:`fork-point-unresolvable`});let a={sourceSessionId:f,sourceAdapterSessionId:g,forkPointMessageId:i,...t.targetWorkingDirectory!==void 0&&{targetWorkingDirectory:t.targetWorkingDirectory}};return{...r,nativeLocality:h,nativeFork:a,isFirstTurn:!0}}let i={sourceSessionId:f,sourceAdapterSessionId:g,...t.targetWorkingDirectory!==void 0&&{targetWorkingDirectory:t.targetWorkingDirectory}};return{...r,nativeLocality:h,nativeFork:i,isFirstTurn:!0}}return bn(e,n,r,t,h)}async function Cn(e,t,n){if(t.parentSessionId===void 0)return;let r=[...new Set(n.map(e=>e.adapterId))];if(r.length===0)return{adapterSupportsNativeFork:!1,midHistoryForkSupported:!1};let i=await Promise.all(r.map(async t=>{try{let n=await e.requestOptional(v.getCapabilities,{adapterId:t}),r=n.handled?new Set(n.data.capabilities):new Set;return{supportsNativeFork:r.has(`session:fork`),supportsMidHistoryFork:r.has(`session:forkAtMessage`)}}catch{return{supportsNativeFork:!1,supportsMidHistoryFork:!1}}}));return{adapterSupportsNativeFork:i.every(e=>e.supportsNativeFork),midHistoryForkSupported:i.every(e=>e.supportsMidHistoryFork)}}function wn(e){let{baseContext:t,recoveryContext:n,isRecovered:r,isSwapped:i,swapMeta:a,cwdMessage:o,freshMessageHistory:s}=e,c=r&&n?{...t,...n}:t;if(!i)return c;let l=a&&o!==void 0?{cwdChange:{previousCwd:a.previousCwd,newCwd:a.newCwd,message:o}}:void 0;return c={...c,hasConnectorSwap:!0,...s!==void 0&&{messageHistory:s},...l&&{turnContext:{...c?.turnContext,...l}}},c}async function Tn(e,t){let{agentId:n,adapterId:r,message:i,deliveryMode:a,messageId:o,turnId:s,sessionId:c,sessionContext:l,responseSchema:u,turn:d}=t;await e.request(x.sendMessage,{agentId:n,adapterId:r,message:i,deliveryMode:a,messageId:o,turnId:s,sessionId:c,sessionContext:l,...u!==void 0&&{responseSchema:u}}),await J(e,{sessionId:d.sessionId,turnId:d.turnId,turnNumber:d.turnNumber,messageId:o,agentId:n})}async function En(e,t,n){return{messageHistory:(await z(e,t.sessionId)).messages.filter(e=>e.messageId!==n).map(B),isFirstTurn:!0}}async function Dn(e,t,n,r){let{agentId:i,adapterId:a,message:o,deliveryMode:s,messageId:c,turnId:l,sessionId:u,responseSchema:d,turn:f}=n;try{await e.request(x.sendMessage,{agentId:i,adapterId:a,message:o,deliveryMode:s,messageId:c,turnId:l,sessionId:u,sessionContext:r,...d!==void 0&&{responseSchema:d}})}catch(n){if(q(n))throw n;let o={kind:`degrade`,reason:`native-attempt-failed`};F(e,{sessionId:u,intent:r.nativeFork?`fork`:`resume`,verdict:o,agentId:i,adapterId:a,turnId:l});let s=await En(e,t,c);return{...r,...s,nativeLocality:o,nativeFork:void 0}}return await J(e,{sessionId:f.sessionId,turnId:f.turnId,turnNumber:f.turnNumber,messageId:c,agentId:i}),null}async function On(e){let{bus:t,session:n,turn:r,message:i,messageId:a,deliveryMode:o,onTurnComplete:s,agent:c,responseSchema:l,turnManager:u}=e,{agentContext:d}=e,f={agentId:c.agentId,adapterId:c.adapterId,message:i,deliveryMode:o,messageId:a,turnId:r.turnId,sessionId:n.sessionId,responseSchema:l,turn:r};try{if(d?.nativeLocality?.kind===`native`){let e=await Dn(t,n,f,d);if(e===null)return;d=e}await Tn(t,{agentId:c.agentId,adapterId:c.adapterId,message:i,deliveryMode:o,messageId:a,turnId:r.turnId,sessionId:n.sessionId,sessionContext:d,responseSchema:l,turn:r})}catch(e){if(q(e)){await Y({bus:t,turn:r,messageId:a,agentId:c.agentId,outcome:`cancelled`,onTurnComplete:s,turnManager:u});return}let n=e instanceof Error?e.message:String(e);await Y({bus:t,turn:r,messageId:a,agentId:c.agentId,outcome:`error`,error:n,onTurnComplete:s,turnManager:u})}}async function kn(e,t,n){let r={kind:`degrade`,reason:`agent-already-started`};F(e,{sessionId:t.sessionId,intent:`fork`,verdict:r});let i=(await z(e,t.sessionId)).messages.map(B);return{...n,messageHistory:i,nativeFork:void 0,nativeLocality:r}}async function An(e){let{bus:t,session:n,agents:r,message:i,messageId:a,turn:o,deliveryMode:s,onTurnComplete:c,turnManager:l,sessionContext:u,turnContextEnricher:d,isNewTurn:f,recoveryContext:p,recoveredAgentIds:m,swappedAgentIds:h,swappedAgentCwd:g,freshMessageHistory:_,responseSchema:v,localMachineId:y}=e,b=await Cn(t,n,r),x=await Sn(t,n,n.sessionId,u,f,y,b);x?.nativeFork&&(x=await kn(t,n,x));let S=d?await d.enrichForDeliveryMode(x?.messageHistory,o.turnId,s):x?.messageHistory,C=x?{...x,messageHistory:S}:void 0,w=h?.size?await vn(t):$,T=r.map(async e=>{let r=g?.get(e.agentId),u=r&&w.enabled?gn(w.template,r.previousCwd,r.newCwd):void 0;await On({bus:t,session:n,turn:o,message:i,messageId:a,deliveryMode:s,onTurnComplete:c,turnManager:l,agent:e,agentContext:wn({baseContext:C,recoveryContext:p,isRecovered:m?.has(e.agentId)??!1,isSwapped:h?.has(e.agentId)??!1,swapMeta:r,cwdMessage:u,freshMessageHistory:_}),responseSchema:v})});await Promise.all(T)}export{Ie as A,De as B,Ge as C,We as D,qe as E,Ne as F,P as I,Oe as L,Fe as M,Pe as N,z as O,Me as P,ke as R,Je as S,Ye as T,he as V,G as _,dn as a,nt as b,rn as c,Dt as d,Et as f,Ct as g,K as h,mn as i,I as j,L as k,Ht as l,Tt as m,Sn as n,ln as o,wt as p,hn as r,un as s,An as t,At as u,xt as v,Ke as w,V as x,dt as y,Ae as z};
@@ -1 +1 @@
1
- import{t as e}from"./ui-config-9bDRwFZr.mjs";import{i as t,r as n}from"./schemas-XeIBqwvE.mjs";import{z as r}from"zod";import{createBusNamespace as i}from"@makaio/framework/core";const a=`At least one of adapterName or clientId must be provided`,o=e=>!!(e.adapterName||e.clientId);function s(e){return!!(e.id||e.name)}function c(e){return e.id||!e.name?!0:!!e.adapterName}const l={get:{request:r.object({id:r.string().optional(),name:r.string().optional(),adapterName:r.string().optional()}).refine(s,{message:`Either id or name is required`,path:[`id`]}).refine(c,{message:`adapterName is required when looking up by name`,path:[`adapterName`]}),response:t},list:{request:r.object({adapterName:r.string().optional(),clientId:r.string().optional(),name:r.string().optional()}),response:r.object({harnesses:r.array(t)})},set:{request:n,response:r.object({id:r.string()})},delete:{request:r.object({id:r.string()}),response:r.object({success:r.boolean()})},getDefault:{request:r.object({adapterName:r.string().optional(),clientId:r.string().optional()}).refine(o,{message:a,path:[`adapterName`]}),response:t},resolve:{request:r.object({adapterName:r.string().optional(),clientId:r.string().optional(),personaHarnessId:r.string().optional(),profileHarnessId:r.string().optional()}).refine(o,{message:a,path:[`adapterName`]}),response:t},getSchema:{request:r.object({}),response:r.object({schema:r.record(r.string(),r.unknown()),uiConfig:e})},created:t,updated:t,deleted:r.object({id:r.string()})},u=i(`harness`,l),d=u.subjects;function f(e,t){return t[e]??[]}function p(e){let{registeredTools:t,allowedCapabilities:n,disallowedCapabilities:r,capabilityMap:i}=e,a=new Set(n),o=new Set(r),s=[],c=[];for(let e of t){let t=f(e,i);n.length>0&&t.length>0&&t.every(e=>a.has(e))&&s.push(e),t.some(e=>o.has(e))&&c.push(e)}return{allowedTools:s,disallowedTools:c}}function m(e,t){return t.length===0?e?[...e]:void 0:[...new Set([...e??[],...t])]}function h(e,t){return{allowedTools:m(e,[]),disallowedTools:m(t,[])}}async function g(e,t){let{allowedCapabilities:n,disallowedCapabilities:r,harnessId:i,allowedTools:a,disallowedTools:o}=t;if(!((n?.length??0)||(r?.length??0))||!i)return h(a,o);let s=await e.request(d.get,{id:i});if(!s.toolCapabilityMap)return h(a,o);let c=p({registeredTools:s.nativeTools.enabled,allowedCapabilities:n??[],disallowedCapabilities:r??[],capabilityMap:s.toolCapabilityMap});return{allowedTools:m(a,c.allowedTools),disallowedTools:m(o,c.disallowedTools)}}const _={bash:[`shell.execute`,`file.read`,`file.write`,`file.delete`,`network.request`,`process.manage`],patch:[`file.write`]};function v(e){return{id:e.id,name:e.name,description:e.description,adapterName:e.adapterName,clientId:e.clientId,approvalPolicy:`always-ask`,nativeTools:{enabled:[],disabled:[]},registryTools:{enabled:[],disabled:[]},isDefault:!0,enabled:!0}}const y={id:`harness-codex-app-server-native`,name:`Codex Native`,description:`Codex app server with built-in native tools`,adapterName:`codex-app-server`,clientId:`codex`,approvalPolicy:`always-ask`,nativeTools:{enabled:[`bash`,`patch`],disabled:[]},registryTools:{enabled:[],disabled:[]},toolCapabilityMap:_,isDefault:!0,enabled:!0},b=v({id:`harness-openai-node-registry`,name:`OpenAI Registry`,description:`OpenAI adapter with registry-managed tools`,adapterName:`openai-node`}),x=v({id:`harness-claude-code-registry`,name:`Claude Code Registry`,description:`Claude Code adapter with registry-managed tools`,adapterName:`claude-code`,clientId:`claude-code`}),S=v({id:`harness-gemini-sdk-registry`,name:`Gemini SDK Registry`,description:`Gemini SDK adapter with registry-managed tools`,adapterName:`gemini-sdk`,clientId:`gemini`}),C=[y,b,x,S];export{b as a,g as c,l as d,d as f,S as i,f as l,y as n,_ as o,C as r,p as s,x as t,u};
1
+ import{t as e}from"./ui-config-B2L3Xgqo.mjs";import{i as t,r as n}from"./schemas-CMyv7l7-.mjs";import{z as r}from"zod";import{createBusNamespace as i}from"@makaio/framework/core";const a=`At least one of adapterName or clientId must be provided`,o=e=>!!(e.adapterName||e.clientId);function s(e){return!!(e.id||e.name)}function c(e){return e.id||!e.name?!0:!!e.adapterName}const l={get:{request:r.object({id:r.string().optional(),name:r.string().optional(),adapterName:r.string().optional()}).refine(s,{message:`Either id or name is required`,path:[`id`]}).refine(c,{message:`adapterName is required when looking up by name`,path:[`adapterName`]}),response:t},list:{request:r.object({adapterName:r.string().optional(),clientId:r.string().optional(),name:r.string().optional()}),response:r.object({harnesses:r.array(t)})},set:{request:n,response:r.object({id:r.string()})},delete:{request:r.object({id:r.string()}),response:r.object({success:r.boolean()})},getDefault:{request:r.object({adapterName:r.string().optional(),clientId:r.string().optional()}).refine(o,{message:a,path:[`adapterName`]}),response:t},resolve:{request:r.object({adapterName:r.string().optional(),clientId:r.string().optional(),personaHarnessId:r.string().optional(),profileHarnessId:r.string().optional()}).refine(o,{message:a,path:[`adapterName`]}),response:t},getSchema:{request:r.object({}),response:r.object({schema:r.record(r.string(),r.unknown()),uiConfig:e})},created:t,updated:t,deleted:r.object({id:r.string()})},u=i(`harness`,l),d=u.subjects;function f(e,t){return t[e]??[]}function p(e){let{registeredTools:t,allowedCapabilities:n,disallowedCapabilities:r,capabilityMap:i}=e,a=new Set(n),o=new Set(r),s=[],c=[];for(let e of t){let t=f(e,i);n.length>0&&t.length>0&&t.every(e=>a.has(e))&&s.push(e),t.some(e=>o.has(e))&&c.push(e)}return{allowedTools:s,disallowedTools:c}}function m(e,t){return t.length===0?e?[...e]:void 0:[...new Set([...e??[],...t])]}function h(e,t){return{allowedTools:m(e,[]),disallowedTools:m(t,[])}}async function g(e,t){let{allowedCapabilities:n,disallowedCapabilities:r,harnessId:i,allowedTools:a,disallowedTools:o}=t;if(!((n?.length??0)||(r?.length??0))||!i)return h(a,o);let s=await e.request(d.get,{id:i});if(!s.toolCapabilityMap)return h(a,o);let c=p({registeredTools:s.nativeTools.enabled,allowedCapabilities:n??[],disallowedCapabilities:r??[],capabilityMap:s.toolCapabilityMap});return{allowedTools:m(a,c.allowedTools),disallowedTools:m(o,c.disallowedTools)}}const _={bash:[`shell.execute`,`file.read`,`file.write`,`file.delete`,`network.request`,`process.manage`],patch:[`file.write`]};function v(e){return{id:e.id,name:e.name,description:e.description,adapterName:e.adapterName,clientId:e.clientId,approvalPolicy:`always-ask`,nativeTools:{enabled:[],disabled:[]},registryTools:{enabled:[],disabled:[]},isDefault:!0,enabled:!0}}const y={id:`harness-codex-app-server-native`,name:`Codex Native`,description:`Codex app server with built-in native tools`,adapterName:`codex-app-server`,clientId:`codex`,approvalPolicy:`always-ask`,nativeTools:{enabled:[`bash`,`patch`],disabled:[]},registryTools:{enabled:[],disabled:[]},toolCapabilityMap:_,isDefault:!0,enabled:!0},b=v({id:`harness-openai-node-registry`,name:`OpenAI Registry`,description:`OpenAI adapter with registry-managed tools`,adapterName:`openai-node`}),x=v({id:`harness-claude-code-registry`,name:`Claude Code Registry`,description:`Claude Code adapter with registry-managed tools`,adapterName:`claude-code`,clientId:`claude-code`}),S=v({id:`harness-gemini-sdk-registry`,name:`Gemini SDK Registry`,description:`Gemini SDK adapter with registry-managed tools`,adapterName:`gemini-sdk`,clientId:`gemini`}),C=[y,b,x,S];export{b as a,g as c,l as d,d as f,S as i,f as l,y as n,_ as o,C as r,p as s,x as t,u};