@makaio/framework 1.0.0-dev-1789609124644 → 1.0.0-dev-1790066089222

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 (361) hide show
  1. package/dist/.makaio-build.json +2 -2
  2. package/dist/{adapter-C4v_gNTI.mjs → adapter-DSRgsh2d.mjs} +1 -1
  3. package/dist/adapter-subsystem/index.d.mts +15 -7
  4. package/dist/adapter-subsystem/index.mjs +1 -1
  5. package/dist/adapters/claude/index.mjs +3 -3
  6. package/dist/adapters/config/index.d.mts +1 -1
  7. package/dist/adapters/index.d.mts +2 -2
  8. package/dist/adapters/node.d.mts +1 -1
  9. package/dist/{attempt-record-codec-DaQ3WHUs.mjs → attempt-record-codec-DXpdMgyI.mjs} +1 -1
  10. package/dist/bus/index.d.mts +120 -8
  11. package/dist/bus/index.mjs +1 -1
  12. package/dist/bus-ceMF9rsq.mjs +9 -0
  13. package/dist/client-DWSwtFyI.mjs +1 -0
  14. package/dist/clients/index.d.mts +179 -12
  15. package/dist/clients/index.mjs +1 -1
  16. package/dist/clients/managed-install.d.mts +1 -1
  17. package/dist/code-execution/worker-entry.d.mts +1 -1
  18. package/dist/code-execution/worker-entry.mjs +1 -1
  19. package/dist/{code-execution-pUF4IO462.mjs → code-execution-DWSux6k1.mjs} +1 -1
  20. package/dist/contracts/adapter/index.d.mts +2 -2
  21. package/dist/contracts/adapter/index.mjs +1 -1
  22. package/dist/contracts/adapter/schemas/session-lineage.d.mts +1 -1
  23. package/dist/contracts/artifact/index.d.mts +2 -2
  24. package/dist/contracts/auth/index.d.mts +2 -2
  25. package/dist/contracts/automation-trigger/index.d.mts +3 -3
  26. package/dist/contracts/canonical-model/index.d.mts +1 -1
  27. package/dist/contracts/capabilities/index.d.mts +1 -1
  28. package/dist/contracts/client/index.d.mts +3 -3
  29. package/dist/contracts/client/index.mjs +1 -1
  30. package/dist/contracts/code-execution/index.d.mts +1 -1
  31. package/dist/contracts/common/index.d.mts +1 -1
  32. package/dist/contracts/config/index.d.mts +2 -47
  33. package/dist/contracts/context-projection/index.d.mts +232 -0
  34. package/dist/contracts/context-projection/index.mjs +1 -0
  35. package/dist/contracts/extension/index.d.mts +6 -6
  36. package/dist/contracts/extension/index.mjs +1 -1
  37. package/dist/contracts/facet/index.d.mts +1 -1
  38. package/dist/contracts/harness/index.d.mts +1 -1
  39. package/dist/contracts/host/index.d.mts +1 -1
  40. package/dist/contracts/index.d.mts +43 -43
  41. package/dist/contracts/index.mjs +1 -1
  42. package/dist/contracts/materialization/index.d.mts +2 -2
  43. package/dist/contracts/model-registry/index.d.mts +1 -1
  44. package/dist/contracts/native-session-supervisor/index.d.mts +1 -1
  45. package/dist/contracts/platform/index.d.mts +1 -1
  46. package/dist/contracts/provider/index.d.mts +2 -2
  47. package/dist/contracts/reaction/index.d.mts +1 -1
  48. package/dist/contracts/session/index.d.mts +3 -3
  49. package/dist/contracts/session/index.mjs +1 -1
  50. package/dist/contracts/shared/index.d.mts +2 -2
  51. package/dist/contracts/skill/index.d.mts +1 -1
  52. package/dist/contracts/telemetry/index.d.mts +1 -1
  53. package/dist/contracts/timeout/index.d.mts +1 -1
  54. package/dist/contracts/variant/index.d.mts +1 -1
  55. package/dist/contracts/worker/index.d.mts +2 -2
  56. package/dist/contracts/workflow/index.d.mts +2 -2
  57. package/dist/{contribution-DDbHzCPF.d.mts → contribution-1GL7Rjaq.d.mts} +2 -2
  58. package/dist/credential-ref-w4ZYpYW0.d.mts +49 -0
  59. package/dist/{definition-CuaBQyde.d.mts → definition-DeIGoROj.d.mts} +1 -1
  60. package/dist/{descriptor-to-package-Dw8dnl5E.mjs → descriptor-to-package-BPIArq6N.mjs} +1 -1
  61. package/dist/{detached-extension-handle-DN3aqLyq.mjs → detached-extension-handle-W5_yfCyE.mjs} +1 -1
  62. package/dist/drizzle/0040_session_generation.sql +1 -0
  63. package/dist/drizzle/0041_session_principal_owner.sql +1 -0
  64. package/dist/drizzle/meta/_journal.json +14 -0
  65. package/dist/{execution-attempt-owner-recovery-CE_rvHKE.mjs → execution-attempt-owner-recovery-BZOEVYFH.mjs} +1 -1
  66. package/dist/extension-C6ANjR33.mjs +1 -0
  67. package/dist/{extension-context-BH31eOMv.d.mts → extension-context-pQ7Uio_s.d.mts} +44 -1
  68. package/dist/{extension-discovery-CA2IhDRo.d.mts → extension-discovery-Rup-gANp.d.mts} +114 -15
  69. package/dist/extension-kOwzAMud.mjs +1 -0
  70. package/dist/extension-namespace-CeRpt6C8.mjs +1 -0
  71. package/dist/{framework-packages-Bg4edkkM.mjs → framework-packages-U4Xhouxe.mjs} +1 -1
  72. package/dist/{hook-responses-Dq16X3Cb.d.mts → hook-responses-B882RcQc.d.mts} +48 -5
  73. package/dist/{index-Dm3d490n.d.mts → index-B2bxgKiK.d.mts} +1 -1
  74. package/dist/{index-7CVumCjj.d.mts → index-BTpkpHIS.d.mts} +65 -9
  75. package/dist/{index-Bh57xARQ.d.mts → index-BUv9gfRT.d.mts} +3 -3
  76. package/dist/{index-C6e9cwAl2.d.mts → index-BjQtqMxP2.d.mts} +4 -4
  77. package/dist/{index-B-u0Tu8X.d.mts → index-Bqi44ODz.d.mts} +37 -37
  78. package/dist/{index-CIzvBH8O.d.mts → index-C8two8wz.d.mts} +1 -1
  79. package/dist/{index-oxZt93RL.d.mts → index-CESqYf8a.d.mts} +2 -2
  80. package/dist/{index-C87P0WpY2.d.mts → index-CmCLAMNs.d.mts} +1 -1
  81. package/dist/index-CyEE1RI5.d.mts +869 -0
  82. package/dist/{index-De_oh9M-2.d.mts → index-D6Uq1btG.d.mts} +87 -10
  83. package/dist/{index-CRZ1jrxp.d.mts → index-DDSt0uS2.d.mts} +160 -12
  84. package/dist/{index-B6WkHnCQ.d.mts → index-DRxgmrad.d.mts} +1 -1
  85. package/dist/{index-U--ajOHy.d.mts → index-DUYjTfHD.d.mts} +1 -1
  86. package/dist/{index-HJkz7i4E.d.mts → index-DdJKsdya.d.mts} +188 -10
  87. package/dist/{index-B4pPwpKk.d.mts → index-DfREUyAk.d.mts} +1 -1
  88. package/dist/{index-ClKwF6LE.d.mts → index-Di-R1gmo.d.mts} +2 -2
  89. package/dist/{index-DWANFpTG.d.mts → index-Jdju2W3y.d.mts} +1 -1
  90. package/dist/{index-DQKVQPUS.d.mts → index-L6mssyeZ.d.mts} +1 -1
  91. package/dist/{index-B8v1-2-V2.d.mts → index-anIxF_eT.d.mts} +1 -1
  92. package/dist/{index-iVisrVdC2.d.mts → index-bYBnDBl32.d.mts} +539 -4
  93. package/dist/{index-Bg3WVL8n.d.mts → index-gNdH1F6r.d.mts} +531 -26
  94. package/dist/{index-zmDRR8gv2.d.mts → index-m5ZQFglW2.d.mts} +1 -1
  95. package/dist/{index-mTaFX2HH2.d.mts → index-uk8icWON2.d.mts} +419 -19
  96. package/dist/kernel/cli/index.d.mts +2 -2
  97. package/dist/kernel/cli/register.d.mts +1 -1
  98. package/dist/kernel/extension/index.d.mts +3 -2
  99. package/dist/kernel/extension/index.mjs +1 -1
  100. package/dist/kernel/index.d.mts +6 -6
  101. package/dist/kernel/index.mjs +1 -1
  102. package/dist/kernel/namespace/index.d.mts +1 -1
  103. package/dist/kernel/observability/index.d.mts +2 -2
  104. package/dist/kernel/observability/index.mjs +1 -1
  105. package/dist/kernel/providers/index.d.mts +1 -1
  106. package/dist/kernel/window/index.d.mts +1 -1
  107. package/dist/{lib-BF5XBSfw.mjs → lib-BdyGVjpO.mjs} +1 -1
  108. package/dist/{lib-Dljw2Cqh.mjs → lib-DxP3tPm9.mjs} +1 -1
  109. package/dist/load-extensions-BGfSWW_R.mjs +1 -0
  110. package/dist/{load-extensions-DGstT4_p.d.mts → load-extensions-Be_lOjm_.d.mts} +27 -14
  111. package/dist/mcp-http-server/index.mjs +1 -1
  112. package/dist/{namespace-BMdYJN_t.mjs → namespace-CqJhR19O.mjs} +1 -1
  113. package/dist/{namespace-Cmu-5_P9.d.mts → namespace-DudchWPb.d.mts} +457 -0
  114. package/dist/{namespace-BEbQb19g.d.mts → namespace-Eir1wQ_r.d.mts} +2 -2
  115. package/dist/node/bus-server/index.d.mts +1 -1
  116. package/dist/node/bus-server/server-lifecycle.d.mts +1 -1
  117. package/dist/node/transports/index.d.mts +102 -4
  118. package/dist/node/transports/index.mjs +2 -2
  119. package/dist/{orchestrator-shared-CtPB6PAr.mjs → orchestrator-shared-CF-jPH91.mjs} +1 -1
  120. package/dist/ownership-memory-handler-C-y9zQf8.mjs +1 -0
  121. package/dist/package-AlsbnlSt.mjs +159 -0
  122. package/dist/{package-CDj3F-L3.d.mts → package-CwyC-Krg.d.mts} +1 -1
  123. package/dist/{package-DYScYC0D.mjs → package-kkPGlxMm.mjs} +1 -1
  124. package/dist/package.json +1 -1
  125. package/dist/{registry-DNMjJ-Oj.mjs → registry-DtaRGU8i.mjs} +1 -0
  126. package/dist/rules/index.d.mts +1 -1
  127. package/dist/rules/index.mjs +1 -1
  128. package/dist/rules/schemas.d.mts +1 -1
  129. package/dist/runtime-bun/index.d.mts +2 -2
  130. package/dist/runtime-bun/index.mjs +1 -1
  131. package/dist/runtime-node/boot-config.d.mts +45 -0
  132. package/dist/runtime-node/boot-config.mjs +1 -0
  133. package/dist/runtime-node/code-execution/index.d.mts +2 -2
  134. package/dist/runtime-node/code-execution/index.mjs +1 -1
  135. package/dist/runtime-node/extension-discovery.d.mts +2 -2
  136. package/dist/runtime-node/extension-discovery.mjs +1 -1
  137. package/dist/runtime-node/extension-validation.d.mts +1 -1
  138. package/dist/runtime-node/extension-validation.mjs +1 -1
  139. package/dist/runtime-node/index.d.mts +345 -27
  140. package/dist/runtime-node/index.mjs +21 -24
  141. package/dist/runtime-node/makaio-config.d.mts +1 -1
  142. package/dist/runtime-node/makaio-config.mjs +1 -1
  143. package/dist/runtime-node/workflow-worker/index.d.mts +1 -1
  144. package/dist/runtime-node/workflow-worker/index.mjs +1 -1
  145. package/dist/runtime-node/workflow-worker/worker-entry.mjs +1 -1
  146. package/dist/{schema-BA1cHBbc.d.mts → schema-FY0EakKe.d.mts} +56 -0
  147. package/dist/schemas-CkxAK13D.mjs +1 -0
  148. package/dist/{schemas-CaYEFzK_.d.mts → schemas-FgVQek-j.d.mts} +2 -2
  149. package/dist/services/adapter-runtime/index.d.mts +3 -3
  150. package/dist/services/adapter-runtime/namespace.d.mts +1 -1
  151. package/dist/services/adapter-runtime/schemas.d.mts +1 -1
  152. package/dist/services/adapter-subsystem/index.d.mts +3 -3
  153. package/dist/services/adapter-subsystem/namespace.d.mts +1 -1
  154. package/dist/services/agent-runtime/index.d.mts +2 -2
  155. package/dist/services/agent-runtime/namespace.d.mts +1 -1
  156. package/dist/services/agent-runtime/schemas.d.mts +1 -1
  157. package/dist/services/automation-trigger/index.d.mts +19 -0
  158. package/dist/services/capability/index.d.mts +2 -2
  159. package/dist/services/code-execution/index.d.mts +1 -1
  160. package/dist/services/codebase/index.d.mts +2 -2
  161. package/dist/services/codebase/namespace.d.mts +1 -1
  162. package/dist/services/codebase/schemas.d.mts +1 -1
  163. package/dist/services/compression/index.d.mts +2 -2
  164. package/dist/services/compression/namespace.d.mts +1 -1
  165. package/dist/services/compression/schemas.d.mts +1 -1
  166. package/dist/services/context-projection/index.d.mts +94 -0
  167. package/dist/services/context-projection/index.mjs +1 -0
  168. package/dist/services/context-rules/index.d.mts +1 -1
  169. package/dist/services/execution-target/index.d.mts +3 -3
  170. package/dist/services/execution-target/namespace.d.mts +1 -1
  171. package/dist/services/execution-target/schemas.d.mts +1 -1
  172. package/dist/services/filesystem/index.d.mts +1 -1
  173. package/dist/services/index.d.mts +45 -40
  174. package/dist/services/index.mjs +1 -1
  175. package/dist/services/log-import/browser.d.mts +2 -2
  176. package/dist/services/log-import/index.d.mts +2 -2
  177. package/dist/services/log-import/log-import.d.mts +1 -1
  178. package/dist/services/materialization/index.d.mts +1 -1
  179. package/dist/services/model-registry/index.d.mts +1 -1
  180. package/dist/services/preferences/index.d.mts +2 -2
  181. package/dist/services/preferences/schemas.d.mts +1 -1
  182. package/dist/services/preferences/storage-namespace.d.mts +2 -2
  183. package/dist/services/provider-context/index.d.mts +1 -1
  184. package/dist/services/session/handlers/index.d.mts +1 -1
  185. package/dist/services/session/index.d.mts +9 -9
  186. package/dist/services/session/index.mjs +1 -1
  187. package/dist/services/session/messages/namespace.d.mts +1 -1
  188. package/dist/services/session/orchestrator-testing/index.d.mts +1 -1
  189. package/dist/services/session/orchestrator-testing/index.mjs +1 -1
  190. package/dist/services/session/session-events/namespace.d.mts +1 -1
  191. package/dist/services/session/storage/namespace.d.mts +1 -1
  192. package/dist/services/session/storage/schema.d.mts +1 -1
  193. package/dist/services/session/storage/schema.mjs +1 -1
  194. package/dist/services/session/testing/index.mjs +4 -2
  195. package/dist/services/session/testing/orchestrator-shared.d.mts +1 -1
  196. package/dist/services/session/testing/orchestrator-shared.mjs +1 -1
  197. package/dist/services/session/turns/namespace.d.mts +1 -1
  198. package/dist/services/session-editor/index.d.mts +1 -1
  199. package/dist/services/settings/index.d.mts +3 -3
  200. package/dist/services/settings/namespace.d.mts +232 -3
  201. package/dist/services/settings/namespace.mjs +1 -1
  202. package/dist/services/settings/storage/clients-namespace.d.mts +1 -1
  203. package/dist/services/settings/storage/index.d.mts +3 -3
  204. package/dist/services/settings/storage/providers-namespace.d.mts +1 -1
  205. package/dist/services/subagent/index.d.mts +1 -1
  206. package/dist/services/subagent-template/index.d.mts +2 -2
  207. package/dist/services/subagent-template/namespace.d.mts +1 -1
  208. package/dist/services/subagent-template/schemas.d.mts +1 -1
  209. package/dist/services/tool-approval/index.d.mts +1 -1
  210. package/dist/services/tool-approval/index.mjs +1 -1
  211. package/dist/services/tools/index.d.mts +1 -1
  212. package/dist/services/tools/index.mjs +1 -1
  213. package/dist/services/tray-menu/index.d.mts +3 -3
  214. package/dist/services/tray-menu/namespace.d.mts +1 -1
  215. package/dist/services/tray-menu/schemas.d.mts +1 -1
  216. package/dist/services/turn/index.d.mts +1 -1
  217. package/dist/services/turn/namespace.d.mts +1 -1
  218. package/dist/services/workflow-transitions/index.d.mts +1 -1
  219. package/dist/services/workflow-transitions/index.mjs +1 -1
  220. package/dist/session-BNiMZnfF.mjs +1 -0
  221. package/dist/session-CMbztxNO.mjs +95 -0
  222. package/dist/src-BZdw54VU.mjs +1 -0
  223. package/dist/{src-CbAw9kjJ.mjs → src-C0sw_Vs_.mjs} +1 -1
  224. package/dist/{src-Xn6SS74f.mjs → src-CqQSqLQI.mjs} +1 -1
  225. package/dist/storage/drizzle/client.d.mts +1 -1
  226. package/dist/storage/drizzle/client.mjs +1 -1
  227. package/dist/storage/drizzle/index.d.mts +1 -1
  228. package/dist/storage/drizzle/index.mjs +1 -1
  229. package/dist/storage/handlers/drizzle/index.d.mts +1 -1
  230. package/dist/storage/handlers/index.d.mts +1 -1
  231. package/dist/{tool-approval-service-pbkGcAV8.mjs → tool-approval-service-CRo3fZRF.mjs} +1 -1
  232. package/dist/{tools-C5Gy0IQG.mjs → tools-CKaxi3Mb.mjs} +1 -1
  233. package/dist/{transition-D-Lgbp1j.d.mts → transition-DMv8cgEd.d.mts} +2 -2
  234. package/dist/{types-CjYcHDPo2.d.mts → types-7L3BrU9m2.d.mts} +1 -1
  235. package/dist/{types-DhbllltK.d.mts → types-DNYO_Rxj.d.mts} +12 -3
  236. package/dist/ui-hooks/index.d.mts +17 -24
  237. package/dist/ui-hooks/index.mjs +1 -1
  238. package/dist/ui-kernel/index.d.mts +11 -2
  239. package/dist/ui-kernel/index.mjs +1 -1
  240. package/dist/ui-kernel/pages/schemas.d.mts +1 -1
  241. package/dist/ui-views/index.mjs +1 -1
  242. package/dist/utils/index.d.mts +31 -1
  243. package/dist/utils/index.mjs +2 -2
  244. package/dist/{view-builder-CHUTXJDl.d.mts → view-builder-DJGz9I-u.d.mts} +2 -2
  245. package/dist/workflow-engine/execution-attempt-repository.d.mts +1 -1
  246. package/dist/workflow-engine/execution-attempt-repository.mjs +1 -1
  247. package/dist/workflow-engine/index.d.mts +2 -2
  248. package/dist/workflow-engine/index.mjs +1 -1
  249. package/dist/workflow-engine/package.d.mts +1 -1
  250. package/dist/workflow-engine/package.mjs +1 -1
  251. package/dist/workflow-engine/provider-operation.d.mts +1 -1
  252. package/dist/workflow-engine/testing/conformance.d.mts +1 -1
  253. package/dist/workflow-engine/testing/conformance.mjs +1 -1
  254. package/dist/workflow-engine/testing/index.d.mts +1 -1
  255. package/dist/workflow-engine/testing/index.mjs +1 -1
  256. package/dist/workflow-engine/testing/sqlite.d.mts +1 -1
  257. package/dist/workflow-engine/testing/sqlite.mjs +1 -1
  258. package/dist/workflow-engine/workflow-orchestrator.mjs +1 -1
  259. package/dist/{workflow-transitions-C0sg3kar.mjs → workflow-transitions-t0ORS1F5.mjs} +1 -1
  260. package/dist/workflow-worker-DXCXb3g-.mjs +3 -0
  261. package/package.json +9 -1
  262. package/dist/bus-BQ64i3DN.mjs +0 -9
  263. package/dist/client-Bg3_IdaF.mjs +0 -1
  264. package/dist/extension-CfrTp3rC.mjs +0 -1
  265. package/dist/extension-CnNcY1hR.mjs +0 -1
  266. package/dist/extension-namespace-Ct9L6SKr.mjs +0 -1
  267. package/dist/index-D_j_T3nS.d.mts +0 -435
  268. package/dist/load-extensions-BVgxTj_y.mjs +0 -1
  269. package/dist/ownership-memory-handler-xex7sLiX.mjs +0 -1
  270. package/dist/schemas-ClkcU_N5.mjs +0 -1
  271. package/dist/session-6UG5udTX.mjs +0 -95
  272. package/dist/session-BB0s7c2B.mjs +0 -1
  273. package/dist/workflow-worker-ChrMIcKm.mjs +0 -2
  274. /package/dist/{adapter-binding-BxjUfkOn.d.mts → adapter-binding-CaYBrIkL.d.mts} +0 -0
  275. /package/dist/{attempt-control-evidence-7lwRG73Y.mjs → attempt-control-evidence-CHBnJoqN.mjs} +0 -0
  276. /package/dist/{attempt-fixtures-DHdYmr3o.mjs → attempt-fixtures-D3IsP0KH.mjs} +0 -0
  277. /package/dist/{authority-state-bootstrap-CvuWPywM.mjs → authority-state-bootstrap-4F5Wc_6l.mjs} +0 -0
  278. /package/dist/{base-orchestrator-CrXiMJzf.d.mts → base-orchestrator-1ofFsqUz.d.mts} +0 -0
  279. /package/dist/{bootstrap-start-client-C1ZHbv6e.mjs → bootstrap-start-client-9nOdeDYl.mjs} +0 -0
  280. /package/dist/{capability-service-CQ1aw_p-.d.mts → capability-service-CUN0MIS7.d.mts} +0 -0
  281. /package/dist/{client-ByjHcS78.d.mts → client-BY3sBW2L.d.mts} +0 -0
  282. /package/dist/{client-binary-version-verifier-C4fEAUdo.d.mts → client-binary-version-verifier-BeO4Eptw.d.mts} +0 -0
  283. /package/dist/{clients-namespace-D4BxF2Nw.d.mts → clients-namespace-D92YsbKI.d.mts} +0 -0
  284. /package/dist/{config-namespace-B1zyOYwH.d.mts → config-namespace-OEckUfVE.d.mts} +0 -0
  285. /package/dist/{create-static-mount-Dgxgi4W3.mjs → create-static-mount-4B-mNtx1.mjs} +0 -0
  286. /package/dist/{cross-spawn-BMCAyqrN.mjs → cross-spawn-DGqEuNyT.mjs} +0 -0
  287. /package/dist/{definition-ClWxAKQ2.d.mts → definition-DLJg-P4G.d.mts} +0 -0
  288. /package/dist/{esm-Ccx-3z8E.mjs → esm-DwiWcwH0.mjs} +0 -0
  289. /package/dist/{execution-attempt-repository-aabFKcXN.mjs → execution-attempt-repository-CY289HlC.mjs} +0 -0
  290. /package/dist/{execution-attempt-repository-BUah8hma.d.mts → execution-attempt-repository-DOb5V4N2.d.mts} +0 -0
  291. /package/dist/{extension-package-provenance-C7oO5JAE.mjs → extension-package-provenance-ClpN3GHp.mjs} +0 -0
  292. /package/dist/{filesystem-service-CDYoiwWY.d.mts → filesystem-service-BmavE-uO.d.mts} +0 -0
  293. /package/dist/{index-BbkcbY6d.d.mts → index--gbsE1W0.d.mts} +0 -0
  294. /package/dist/{index-DdVpWkaI.d.mts → index-B36rL4gp.d.mts} +0 -0
  295. /package/dist/{index-DM72_93s.d.mts → index-BD1SbHpP.d.mts} +0 -0
  296. /package/dist/{index-KdlZRuTp.d.mts → index-BDcK7jqJ2.d.mts} +0 -0
  297. /package/dist/{index-DAaQ--ki.d.mts → index-BQYGOXY5.d.mts} +0 -0
  298. /package/dist/{index-gAyARaKS.d.mts → index-BneZFJ7x.d.mts} +0 -0
  299. /package/dist/{index-D8ELwT5y.d.mts → index-BujgCaKt.d.mts} +0 -0
  300. /package/dist/{index-DfU8s_xP.d.mts → index-C2StVLk4.d.mts} +0 -0
  301. /package/dist/{index-BGnQ0EyD.d.mts → index-CCTzitBA.d.mts} +0 -0
  302. /package/dist/{index-CVRT01082.d.mts → index-Cj_V1aRL.d.mts} +0 -0
  303. /package/dist/{index-nkix3hP7.d.mts → index-CpN2C9jq.d.mts} +0 -0
  304. /package/dist/{index-D6p17KPs.d.mts → index-CsRPJ9FV.d.mts} +0 -0
  305. /package/dist/{index-BPNfYEA22.d.mts → index-CvdvuhTL2.d.mts} +0 -0
  306. /package/dist/{index-DmX9W3xH2.d.mts → index-D3peNmHN2.d.mts} +0 -0
  307. /package/dist/{index-DiZ4LmyE.d.mts → index-D7smT-YD.d.mts} +0 -0
  308. /package/dist/{index-B78CRVi9.d.mts → index-DEx4ZFkz.d.mts} +0 -0
  309. /package/dist/{index-CjDQn6lw.d.mts → index-DGoJayJg.d.mts} +0 -0
  310. /package/dist/{index-F7cVpFJ9.d.mts → index-DTvYp2GT.d.mts} +0 -0
  311. /package/dist/{index-Htfr-K5U2.d.mts → index-DqliLe_D2.d.mts} +0 -0
  312. /package/dist/{index-BCU5oByg.d.mts → index-DubyRZD9.d.mts} +0 -0
  313. /package/dist/{index-DjSUOMlr.d.mts → index-DwOpaQAE.d.mts} +0 -0
  314. /package/dist/{index-BZoOYV-y.d.mts → index-DxkSkszz.d.mts} +0 -0
  315. /package/dist/{index-tbjIqwa3.d.mts → index-TBJ1kIGA.d.mts} +0 -0
  316. /package/dist/{index-DXQTkwLB.d.mts → index-YOXWpZAS.d.mts} +0 -0
  317. /package/dist/{index-CXpgL3gz2.d.mts → index-aIJ7A4DC2.d.mts} +0 -0
  318. /package/dist/{index-D6liU_KS.d.mts → index-fxh7TB0q.d.mts} +0 -0
  319. /package/dist/{index-xsaaa85T.d.mts → index-qczb9Yx3.d.mts} +0 -0
  320. /package/dist/{index-C_kOkO3E.d.mts → index-zqo2mX_Z.d.mts} +0 -0
  321. /package/dist/{json-value-Ymw2f8i_.d.mts → json-value-Bjl8jzom.d.mts} +0 -0
  322. /package/dist/{jsonl-transport-Bg033Ng0.mjs → jsonl-transport-Ct1RWs0h.mjs} +0 -0
  323. /package/dist/{lib-BizqbepU.mjs → lib-DomKag_k.mjs} +0 -0
  324. /package/dist/{namespace-rJ3ycPMg.d.mts → namespace-Bhx72V7S.d.mts} +0 -0
  325. /package/dist/{namespace-BCVKdu-U.d.mts → namespace-CxEQv9iZ.d.mts} +0 -0
  326. /package/dist/{namespace-COHHDh2I.d.mts → namespace-D09uQ231.d.mts} +0 -0
  327. /package/dist/{namespace-UFcDEBJB.d.mts → namespace-D5DkpaaN.d.mts} +0 -0
  328. /package/dist/{namespace-CvK86QFk.d.mts → namespace-DHLwz4o3.d.mts} +0 -0
  329. /package/dist/{namespace-B5IFLQc-.d.mts → namespace-DHbrNQYD.d.mts} +0 -0
  330. /package/dist/{namespace-s0e215xO.d.mts → namespace-DyD06b5-.d.mts} +0 -0
  331. /package/dist/{namespace-C1pPZKtI.d.mts → namespace-Dz5_Hrz7.d.mts} +0 -0
  332. /package/dist/{namespace-Phxf0Lep.d.mts → namespace-Lkv2nyzb.d.mts} +0 -0
  333. /package/dist/{namespace-DM5vykb7.d.mts → namespace-hlhPqSsw.d.mts} +0 -0
  334. /package/dist/{namespace-DlOQmhgX.d.mts → namespace-x-gk5SmK.d.mts} +0 -0
  335. /package/dist/{namespace-f6Kz5cwX.d.mts → namespace-zusFEJPh.d.mts} +0 -0
  336. /package/dist/{orchestrator-shared--srEeSaY.d.mts → orchestrator-shared-ChU5qRSe.d.mts} +0 -0
  337. /package/dist/{packages-B98-WETs.d.mts → packages-D2s51nGU.d.mts} +0 -0
  338. /package/dist/{providers-namespace-DRcl03bo.d.mts → providers-namespace-BLVt8OyP.d.mts} +0 -0
  339. /package/dist/{runtime-inputs-DBtVIy9h.d.mts → runtime-inputs-BU_kBrP7.d.mts} +0 -0
  340. /package/dist/{schemas-CEJe8O6P.d.mts → schemas-3KTmPuZg.d.mts} +0 -0
  341. /package/dist/{schemas-D_-iXLQ9.d.mts → schemas-B-5_Dp4_.d.mts} +0 -0
  342. /package/dist/{schemas-CeItAAQM.d.mts → schemas-BLxdGZkr.d.mts} +0 -0
  343. /package/dist/{schemas-Cj6Gbqch.d.mts → schemas-BegArpU_.d.mts} +0 -0
  344. /package/dist/{schemas-Ca5RILd-2.d.mts → schemas-BzB6z9oX2.d.mts} +0 -0
  345. /package/dist/{schemas-CtzZDp29.d.mts → schemas-CBBzvIh0.d.mts} +0 -0
  346. /package/dist/{schemas-Cq1d5tid.d.mts → schemas-CD3Mq-jC.d.mts} +0 -0
  347. /package/dist/{schemas-LiiyNNpr.d.mts → schemas-Cl7fPlRv.d.mts} +0 -0
  348. /package/dist/{schemas-DJ2vMsgm.d.mts → schemas-CqawCYTY.d.mts} +0 -0
  349. /package/dist/{schemas-2_D4iVbb.d.mts → schemas-DEg6R9ph.d.mts} +0 -0
  350. /package/dist/{schemas-JjyFxrC0.d.mts → schemas-rMUsvzeJ.d.mts} +0 -0
  351. /package/dist/{server-lifecycle-DUKp1Fbf.d.mts → server-lifecycle-CTJvpdeL.d.mts} +0 -0
  352. /package/dist/{session-lineage-C3myyt5x.d.mts → session-lineage-BuGN3RZs.d.mts} +0 -0
  353. /package/dist/{storage-namespace-IvLOIP7j.d.mts → storage-namespace-B5r_ScUz.d.mts} +0 -0
  354. /package/dist/{storage-namespace-definition-Cv0XiTXb.d.mts → storage-namespace-definition-DiYr8UNl.d.mts} +0 -0
  355. /package/dist/{types-hkExapGH.d.mts → types-BSx8YYlc.d.mts} +0 -0
  356. /package/dist/{types-BYEybzjX.d.mts → types-CpEoQapk.d.mts} +0 -0
  357. /package/dist/{types-QRSc2AUU.d.mts → types-Cuhnt15L.d.mts} +0 -0
  358. /package/dist/{types-QsyX4H21.d.mts → types-DEGuc-fn.d.mts} +0 -0
  359. /package/dist/{types-BRM1AZaP.d.mts → types-DciLiPMd.d.mts} +0 -0
  360. /package/dist/{types-CsmvIK25.mjs → types-wwuw7RkB.mjs} +0 -0
  361. /package/dist/{window-registry-DeG37kt8.d.mts → window-registry-C3W2wtlX.d.mts} +0 -0
@@ -1 +0,0 @@
1
- import{o as e,s as t}from"./definitions-Do7bP-u7.mjs";import{t as n}from"./schemas-BmoFWBdh.mjs";import{_ as r,a as i,g as a,h as o,m as s,n as ee,o as te}from"./profile-1fvMljlJ.mjs";import{n as ne,t as c}from"./version-PuU2KG3I.mjs";import{c as re,d as ie,n as ae,o as oe,s as se,t as l,u as ce}from"./account-identity-C-v4mHq3.mjs";import{z as u}from"zod";import{createBusNamespace as le,observability as d}from"@makaio/framework/core";const f=u.object({tag:u.string(),description:u.string().optional()}),p=u.object({name:u.string(),friendlyName:u.string(),description:u.string().optional(),category:u.string().optional(),capabilities:u.array(f).default([])}),m=u.object({id:u.string(),name:u.string(),description:u.string().optional(),glob:u.string().optional()}),h=u.object({name:u.string().min(1),frameworkSubject:u.string().min(1).optional(),responseCapabilities:u.array(u.string().min(1)).readonly().default([])}).strict();function ue(e){return e.responseCapabilities.length>0?`request`:`event`}const de=u.object({envVar:a.regex(/^[A-Za-z_][A-Za-z0-9_]*$/,{message:`envVar must be a valid environment variable name (letters, digits, underscores)`}),defaultPath:a.refine(e=>e===`~`||e.startsWith(`~/`)||r(e),{message:`defaultPath must be absolute, '~', or start with '~/'`}),pathKind:u.enum([`directory`,`file`]).default(`directory`)});function fe(e){if(!e.startsWith(`@`))return!e.includes(`@`);let t=e.indexOf(`/`);return t>1&&!e.slice(t+1).includes(`@`)}const g=u.object({type:u.literal(`npm`),package:u.string().min(1).refine(fe,{message:"package must not include an inline `@version` suffix; use the version field instead"}),version:c}),_=u.object({type:u.literal(`signed-binary-bucket`),version:c,config:u.object({baseUrl:u.string().url(),manifestPathTemplate:u.string().min(1),manifestSignaturePathTemplate:u.string().min(1),publicKeyUrl:u.string().url(),publicKeyFingerprint:u.string().min(1),binaryPathTemplate:u.string().min(1),platforms:u.record(u.string().min(1),u.string().min(1))})}),v=u.discriminatedUnion(`type`,[g,_]),y=u.object({executable:u.union([u.string().min(1),u.object({default:u.string().min(1),darwin:u.string().min(1).optional(),linux:u.string().min(1).optional(),win32:u.string().min(1).optional()}).strict()]),args:u.array(u.string()).default([])}).strict(),b=u.object({kind:u.string().min(1),payload:u.record(u.string(),u.unknown()).optional()}),x=u.object({supportsHooks:u.boolean().default(!1),supportsStatusline:u.boolean().default(!1),supportsSupervisorLaunch:u.boolean().default(!1),supportsManagedBinary:u.boolean().default(!1),hookEvents:u.array(h).default([])}).refine(e=>e.supportsHooks||e.hookEvents.length===0,{message:`hookEvents must be empty when supportsHooks is false`,path:[`hookEvents`]}),S=u.object({name:u.string().min(1),supportedVersions:ne}).strict(),C=u.object({id:u.string(),name:u.string(),version:c,description:u.string().optional(),binary:S.optional(),nativeTools:u.array(p).default([]),defaultApprovalPolicy:n,logSources:u.array(m).optional(),authMethods:e,defaultAuth:t.optional(),runtimeCapabilities:x.optional().transform(e=>x.parse(e??{})),managedInstall:v.optional(),versionCommand:y.optional(),postInstall:b.optional(),configIsolation:de.optional()}).strict().refine(e=>!e.runtimeCapabilities.supportsManagedBinary||e.managedInstall!==void 0,{message:`managedInstall is required when runtimeCapabilities.supportsManagedBinary is true`,path:[`managedInstall`]}).refine(e=>e.managedInstall===void 0||e.runtimeCapabilities.supportsManagedBinary,{message:`runtimeCapabilities.supportsManagedBinary must be true when managedInstall is provided`,path:[`runtimeCapabilities`,`supportsManagedBinary`]}).refine(e=>e.managedInstall===void 0||e.versionCommand!==void 0,{message:`versionCommand is required when managedInstall is provided`,path:[`versionCommand`]}).superRefine((e,t)=>{e.defaultAuth!==void 0&&e.authMethods.find(({id:t})=>t===e.defaultAuth?.methodId)?.mode!==`inferred`&&t.addIssue({code:u.ZodIssueCode.custom,message:`defaultAuth.methodId must reference an inferred method declared by this client.`,path:[`defaultAuth`,`methodId`]})}).superRefine((e,t)=>{if(e.managedInstall===void 0||e.versionCommand===void 0)return;let{executable:n}=e.versionCommand,r=typeof n==`string`?[{path:n,issuePath:[`versionCommand`,`executable`]}]:[{path:n.default,issuePath:[`versionCommand`,`executable`,`default`]},...n.darwin===void 0?[]:[{path:n.darwin,issuePath:[`versionCommand`,`executable`,`darwin`]}],...n.linux===void 0?[]:[{path:n.linux,issuePath:[`versionCommand`,`executable`,`linux`]}],...n.win32===void 0?[]:[{path:n.win32,issuePath:[`versionCommand`,`executable`,`win32`]}]];for(let{path:e,issuePath:n}of r){let r=e.startsWith(`/`),i=/^[A-Za-z]:/.test(e),a=e.startsWith(`\\`);if(r||i||a){t.addIssue({code:u.ZodIssueCode.custom,path:n,message:`${n.join(`.`)} must be a relative path within the install directory`});continue}e.split(/[/\\]/).some(e=>e===`..`)&&t.addIssue({code:u.ZodIssueCode.custom,path:n,message:`${n.join(`.`)} must be a relative path within the install directory`})}}),w=u.object({binaryPath:s.nullable(),env:u.record(u.string(),u.string()),configDir:s.nullable(),source:u.enum([`managed`,`global`]),version:a.nullable()}),T={request:u.object({clientId:a,sessionId:a.optional(),projectDir:s.optional(),preferSource:u.enum([`managed`,`global`]).optional(),harnessId:a.optional()}),response:w},E=u.enum([`npm`,`signed-binary-bucket`]),D=u.object({version:a,installPath:s,installedAt:o,isActive:u.boolean()}),O=u.object({clientId:a,installedVersions:u.array(D),activeVersion:a.nullable(),pinnedVersion:c,updateAvailable:u.boolean()}).strict(),k={request:u.object({forceRefresh:u.boolean().optional()}),response:u.object({clients:u.array(O)})},A={request:u.object({clientId:a,version:c.optional()}),response:u.object({jobId:a,requestedVersion:c.nullable(),resolvedVersion:c.nullable()})},j={request:u.object({clientId:a,version:a}),response:u.object({clientId:a,removedVersion:a,activeVersion:a.nullable()})},M={request:u.object({clientId:a}),response:u.object({jobId:a,resolvedVersion:c.nullable()})},N={request:u.object({clientId:a,version:a}),response:u.object({clientId:a,activeVersion:a})},P=u.enum([`resolving`,`downloading`,`verifying`,`extracting`,`installing`,`post-install`,`activating`]),F=u.object({jobId:a,clientId:a,version:a.optional(),strategy:E,stage:P,progress:u.number().min(0).max(100).nullable(),installPath:s.optional(),activeAfterCompletion:u.boolean().optional(),metadata:u.record(u.string(),u.unknown()).optional()}),I=u.object({message:u.string(),code:u.string().optional()}),L=u.object({jobId:a,clientId:a,version:a.optional(),strategy:E,status:u.enum([`success`,`error`]),installPath:s.optional(),activeVersion:a.nullable(),error:I.optional(),metadata:u.record(u.string(),u.unknown()).optional()}),R=u.object({clientId:a,previousActiveVersion:a.nullable(),activeVersion:a.nullable(),reason:u.enum([`install`,`update`,`set-active`,`uninstall`])}),pe=u.enum([`supervisor`,`adapter`,`client-hook`,`statusline`,`cli-wrapper`]),z=u.object({layer:pe,producer:a}),B=u.object({supervisorSessionId:a.optional(),pid:u.number().int().positive().optional(),parentPid:u.number().int().positive().optional(),adapterSessionId:a.optional(),sessionId:a.optional(),cwd:u.string().optional(),argv:u.array(u.string()).optional(),metadata:u.record(u.string(),u.unknown()).optional()}),V={request:u.object({clientId:a,source:z,observedAt:o}).merge(B).refine(e=>e.supervisorSessionId!==void 0||e.pid!==void 0||e.adapterSessionId!==void 0,{message:`At least one hard-evidence field is required (supervisorSessionId, pid, or adapterSessionId)`}),response:u.object({clientRuntimeId:a,created:u.boolean(),promoted:u.boolean()})},H=B.extend({clientRuntimeId:a,clientId:a,status:u.enum([`observed`,`started`]),source:z,observedAt:o}),U={request:u.object({adapterSessionId:a,clientId:a}),response:u.object({managed:u.boolean()})},W=u.object({clientId:d.attribute(a,`makaio.client.id`),source:d.attribute(a,`makaio.client.lifecycle.source`),observedAt:d.attribute(o,`event.observed_at`),sessionId:d.attribute(u.string(),`makaio.session.id`).optional(),adapterSessionId:d.attribute(u.string(),`makaio.adapter.session_id`).optional(),metadata:u.record(u.string(),u.unknown()).optional()}),G=[`fresh`,`fork`,`resume`,`clear`,`compact`],K=u.enum(G),q=W.extend({transcriptPath:u.string().optional(),cwd:u.string().optional(),machineId:d.attribute(u.string(),`makaio.machine.id`).optional(),startMode:d.attribute(K,`makaio.session.start_mode`).optional(),parentAdapterSessionId:d.attribute(u.string(),`makaio.session.parent_adapter_session_id`).optional()}),J=W.extend({prompt:a.optional()}),Y=W.extend({}),me=W.extend({transcriptPath:u.string().optional()}),X=W.extend({toolName:d.attribute(a,`tool.name`).optional(),toolCallId:d.attribute(a,`tool.call_id`).optional()}),he=W.extend({toolName:d.attribute(a,`tool.name`).optional(),toolCallId:d.attribute(a,`tool.call_id`).optional(),success:d.attribute(u.boolean(),`tool.success`).optional()}),ge=[`manual`,`auto`],_e=u.enum(ge),ve=W.extend({trigger:d.attribute(_e,`makaio.session.compaction_trigger`).optional(),transcriptPath:u.string().optional()}),Z=W.extend({agentId:d.attribute(a,`makaio.client.agent_id`),agentType:d.attribute(a,`makaio.client.agent_type`).optional(),turnId:d.attribute(a,`makaio.client.turn_id`).optional()}),ye=Z.extend({agentTranscriptPath:u.string().optional()}),be=u.object({group:a,name:a,installed:u.boolean(),command:a}),xe=u.enum([`provider-reported`,`client-reported`,`estimated`]),Q=u.number().finite().nonnegative(),Se=u.number().finite().min(0).max(100),Ce=u.object({clientId:d.attribute(a,`makaio.client.id`),clientAccountId:d.attribute(a,`makaio.client.account_id`).optional(),sessionId:d.attribute(a,`makaio.session.id`).optional(),adapterSessionId:d.attribute(a,`makaio.adapter.session_id`).optional(),source:d.attribute(a,`makaio.client.usage.source`),observedAt:d.attribute(o,`event.observed_at`),clientVersion:d.attribute(a,`makaio.client.version`).optional(),modelId:d.attribute(a,`llm.model`).optional(),modelDisplayName:d.attribute(a,`llm.model.display_name`).optional(),modelFamily:d.attribute(a,`llm.model.family`).optional(),latestRequestInputTokens:d.attribute(Q,`llm.tokens.latest_request.input`).optional(),latestRequestOutputTokens:d.attribute(Q,`llm.tokens.latest_request.output`).optional(),latestRequestCacheReadTokens:d.attribute(Q,`llm.tokens.latest_request.cache_read`).optional(),latestRequestCacheWriteTokens:d.attribute(Q,`llm.tokens.latest_request.cache_write`).optional(),currentContextInputTokens:d.attribute(Q,`llm.context.tokens.input`).optional(),currentContextOutputTokens:d.attribute(Q,`llm.context.tokens.output`).optional(),contextWindowSizeTokens:d.attribute(Q,`llm.context.window_size`).optional(),contextUsedPercentage:d.attribute(Se,`llm.context.used_percentage`).optional(),contextRemainingPercentage:d.attribute(Se,`llm.context.remaining_percentage`).optional(),contextThresholdExceeded:d.attribute(u.boolean(),`llm.context.threshold_exceeded`).optional(),totalCost:d.attribute(Q,`llm.cost.total`).optional(),costCurrency:d.attribute(a,`llm.cost.currency`).optional(),costProvenance:d.attribute(xe,`llm.cost.provenance`).optional(),totalDurationMs:d.attribute(Q,`makaio.session.duration_ms`).optional(),totalApiDurationMs:d.attribute(Q,`llm.duration.total_api_ms`).optional(),totalLinesAdded:d.attribute(Q,`code.lines_added`).optional(),totalLinesRemoved:d.attribute(Q,`code.lines_removed`).optional(),totalEdits:d.attribute(Q,`code.edits`).optional()}).strict().superRefine((e,t)=>{let n=[`totalCost`,`costCurrency`,`costProvenance`],r=n.filter(t=>e[t]!==void 0).length;if(!(r===0||r===n.length))for(let r of n)e[r]===void 0&&t.addIssue({code:u.ZodIssueCode.custom,path:[r],message:`totalCost, costCurrency, and costProvenance must be supplied together`})}),we={"runtime.observe":V,"runtime.started":H,"runtime.isAdapterManaged":U,scan:{request:u.object({targets:u.array(se).optional()}),response:u.object({results:u.array(oe)})},"session.account.observe":re,"account.observe":ae,"account.activate":{request:u.object({clientId:a,clientAccountId:a,identifiers:u.array(l).min(1),displayLabel:u.string().optional()}),response:u.object({accepted:u.boolean()})},"account.getActive":{request:u.object({clientId:a}),response:u.object({identity:u.object({clientAccountId:a,identifiers:u.array(l).min(1),displayLabel:u.string().optional()}).nullable()})},"usage.ingest":ce,"usage.snapshot":ie,"session.usage.snapshot":Ce,"session.started":q,"session.userPrompt.submitted":J,"session.turn.started":Y,"session.turn.completed":me,"session.tool.pre":X,"session.tool.post":he,"session.compaction.pre":ve,"session.subagent.started":Z,"session.subagent.completed":ye,"wiring.list":{request:u.object({clientId:a.optional(),projectDir:s.optional(),makaioCommand:a}),response:u.object({results:u.array(u.object({clientId:a,entries:u.array(be)}))})},list:k,install:A,uninstall:j,update:M,setActive:N,"installJob.progress":F,"installJob.completed":L,"version.changed":R,resolveBinary:T,...i,...te,"config.prime":ee},Te=le(`client`,we),Ee=Te.subjects;function $(e){if(Array.isArray(e)){for(let t of e)$(t);return Object.freeze(e)}if(e&&typeof e==`object`){for(let t of Object.values(e))$(t);return Object.freeze(e)}return e}function De(e){return $(C.parse(e))}function Oe(e){return Object.freeze({kind:`context.append`,value:e})}const ke=`open`;function Ae(e){return typeof e==`string`&&e.trim().length>0}function je(e){return typeof e==`number`&&Number.isFinite(e)&&e>0}function Me(e,t){let n=[];for(let r of e){let e=r.kind===`event-name`?r.name:r.capability;if(!t.supportedInteractions.includes(e)){n.push(`Interaction '${e}' is not a supported interaction in contract '${t.contractId}'; failurePolicy 'closed' is not permitted`);continue}let i=t.blockability.find(t=>t.interaction===e);(!i||!i.blockable)&&n.push(`Interaction '${e}' is not blockable in contract '${t.contractId}'; failurePolicy 'closed' is not permitted`)}return n}export{p as $,pe as A,M as B,me as C,B as D,be as E,F,E as G,I as H,A as I,S as J,w as K,k as L,H as M,O as N,U as O,L as P,f as Q,N as R,X as S,J as T,P as U,R as V,D as W,h as X,C as Y,x as Z,K as _,Me as a,_ as at,Z as b,Ee as c,Ce as d,de as et,ge as f,W as g,_e as h,je as i,b as it,z as j,V as k,we as l,ve as m,Oe as n,v as nt,De as o,y as ot,G as p,T as q,Ae as r,g as rt,Te as s,ue as st,ke as t,m as tt,xe as u,q as v,Y as w,he as x,ye as y,j as z};
@@ -1 +0,0 @@
1
- import{u as e}from"./kind-registration-Dzfo6kyb.mjs";import{n as t}from"./definition-Dd7bDWpP.mjs";import{n,t as r}from"./version-PuU2KG3I.mjs";import{z as i}from"zod";const a=i.object({entrypoint:i.string().startsWith(`/`,{message:`Entrypoint must be a URL path starting with "/"`})}),o=i.object({endpoint:i.string().url().optional()}),s=i.union([t,i.object({anthropic:o.optional(),openai:o.optional()}).refine(e=>Object.keys(e).length>0,{message:`ProtocolRef config object must specify at least one protocol`})]),c=i.object({id:i.string().min(1),version:n,binaryVersion:n.optional()}),l=i.object({name:i.string().min(1),displayName:i.string().min(1).optional(),description:i.string().optional(),clients:i.array(c).readonly().optional(),protocols:i.array(s).readonly(),defaultProvider:i.string().min(1).optional()}),u=i.object({id:i.string().min(1),name:i.string().min(1),description:i.string().optional(),binary:i.object({name:i.string().min(1),managed:i.boolean().optional(),version:r.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(),d=i.object({id:i.string().min(1),name:i.string().min(1),description:i.string().optional()}),f=i.object({prefix:i.string().min(1),description:i.string().optional(),stage:i.enum([`gather`,`transform`,`action`]).optional()}),p=i.object({adapterName:i.string().min(1),displayName:i.string().min(1),logFilePattern:i.string().min(1).optional()}),m=i.object({id:i.string().min(1),label:i.string().min(1),description:i.string().optional(),icon:i.string().min(1).optional(),selectionMode:i.enum([`single`,`multi`]),messageRoles:i.array(i.enum([`user`,`assistant`])).readonly().optional()}),h=i.enum([`beforeCreate`,`beforeRevise`,`afterCreate`,`afterRevise`,`afterStatusChanged`,`afterObservationAdded`]),g=i.object({id:i.string().min(1),event:h,kind:i.string().min(1).optional(),schemaVersion:e.optional()}),_=i.object({tiles:i.boolean().optional(),widgets:i.boolean().optional(),pages:i.boolean().optional(),routes:i.boolean().optional()}),v={adapters:`adapter`,clients:`client`,providers:`provider`,hashTriggers:`hash trigger`,logImporters:`log importer`,sessionEventActions:`session event action`,artifactLifecycleHooks:`artifact lifecycle hook`};function y(e,t,n){e.addIssue({code:i.ZodIssueCode.custom,path:[t],message:`Duplicate ${v[t]} contribution identifier "${n}"`})}function b(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 x=i.object({adapters:i.array(l).readonly().optional(),clients:i.array(u).readonly().optional(),providers:i.array(d).readonly().optional(),hashTriggers:i.array(f).readonly().optional(),logImporters:i.array(p).readonly().optional(),sessionEventActions:i.array(m).readonly().optional(),artifactLifecycleHooks:i.array(g).readonly().optional(),create:i.boolean().optional(),tools:i.boolean().optional(),bootstrap:i.boolean().optional(),namespace:i.boolean().optional(),configSchema:i.boolean().optional(),uiConfig:i.boolean().optional(),ui:_.optional()}).strict().superRefine((e,t)=>{for(let n of b(e.adapters,e=>e.name))y(t,`adapters`,n);for(let n of b(e.clients,e=>e.id))y(t,`clients`,n);for(let n of b(e.providers,e=>e.id))y(t,`providers`,n);for(let n of b(e.hashTriggers,e=>e.prefix))y(t,`hashTriggers`,n);for(let n of b(e.logImporters,e=>e.adapterName))y(t,`logImporters`,n);for(let n of b(e.sessionEventActions,e=>e.id))y(t,`sessionEventActions`,n);for(let n of b(e.artifactLifecycleHooks,e=>e.id))y(t,`artifactLifecycleHooks`,n)}),S=i.string().trim().min(1).transform(e=>e),C=i.object({name:i.string().min(1),required:i.boolean().optional()}),w=i.object({id:i.string(),style:i.enum([`tray-popover`,`utility`,`panel`]),width:i.number().optional(),height:i.number().optional(),singleton:i.boolean().optional(),params:i.array(C).readonly().optional()}).superRefine((e,t)=>{let n=new Set;for(let[r,a]of e.params?.entries()??[]){if(!n.has(a.name)){n.add(a.name);continue}t.addIssue({code:i.ZodIssueCode.custom,message:`Duplicate window param "${a.name}"`,path:[`params`,r,`name`]})}}),T=i.object({label:i.string(),section:i.enum([`utilities`,`tools`,`views`]).optional(),opensWindow:i.string().optional(),action:i.string().optional()}),E=i.object({name:i.string().min(1),description:i.string(),required:i.boolean().optional(),positional:i.boolean().optional(),short:i.string().regex(/^-[A-Za-z0-9]$/,`Expected a short flag like -p`).optional(),type:i.enum([`string`,`boolean`,`number`]).optional()}),D=i.object({name:i.string().min(1),description:i.string(),args:i.array(E).readonly().optional()}),O=i.object({name:i.string().min(1),description:i.string(),subcommands:i.array(D).readonly().optional(),hasInteractive:i.boolean().optional(),canProvideBus:i.boolean().optional()}),k=[`sqlite`,`postgres`];function A(e){if(e!==void 0)return typeof e==`string`?e:e.sqlite??Object.values(e).find(e=>e!==void 0)}function j(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 M=i.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`),N=i.object({migrations:i.union([M,i.object({sqlite:M.optional(),postgres:M.optional()}).strict().refine(e=>Object.values(e).some(e=>e!==void 0),`Per-dialect storage.migrations must declare at least one chain`)]).optional(),migrationSourceId:i.string().min(1).optional()}),P=i.object({type:i.literal(`extension`),name:i.string().min(1),version:n,optional:i.boolean().optional()});function F(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 I=i.discriminatedUnion(`type`,[i.object({type:i.literal(`host`),id:i.string().min(1)}),i.object({type:i.literal(`capability`),id:i.string().min(1),version:n.optional()})]),L=i.object({name:i.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:i.string().min(1),version:r,surface:i.enum([`interactive`,`headless`,`any`]).optional(),dependencies:i.array(P).readonly().optional(),requires:i.array(I).readonly().optional(),provides:i.array(S).readonly().optional(),windows:i.array(w).readonly().optional(),tray:T.optional(),cli:O.optional(),storage:N.optional(),browser:a.optional(),contributions:x.optional()});function R(e){return Object.freeze({name:e})}const z=i.object({command:i.string().min(1),args:i.array(i.string()).optional(),env:i.record(i.string(),i.string()).optional(),healthTimeoutMs:i.number().int().positive().optional(),shutdownTimeoutMs:i.number().int().positive().optional()}),B=i.enum([`none`,`on-crash`,`always`]),V=z.extend({restartPolicy:B.optional()}),H=i.discriminatedUnion(`type`,[V.extend({type:i.literal(`bus-stdio`)}),V.extend({type:i.literal(`bus-websocket`)}),z.extend({type:i.literal(`mcp-stdio`)})]);function U(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 W=i.union([i.literal(!0),i.string().min(1).refine(U,{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`})]),G=i.object({server:W.optional(),browser:W.optional(),cli:W.optional()}).refine(e=>e.server!==void 0||e.browser!==void 0||e.cli!==void 0,{message:`at least one entrypoint must be declared`});function K(e){return e.execution===`detached`}const q=L.extend({version:r,makaio:i.object({framework:n}).strict().readonly(),entrypoints:G.optional(),execution:i.enum([`embedded`,`detached`]).optional(),transport:H.optional(),prebundleDependencies:i.array(i.string().regex(/\S/,`prebundleDependencies entries must not be blank`)).readonly().optional(),config:i.object({defaults:i.record(i.string(),i.unknown()).optional()}).optional()}).superRefine((e,t)=>{e.prebundleDependencies!==void 0&&e.entrypoints?.browser===void 0&&t.addIssue({code:i.ZodIssueCode.custom,message:`prebundleDependencies requires a browser entrypoint`,path:[`prebundleDependencies`]}),e.execution===`detached`?(e.transport===void 0&&t.addIssue({code:i.ZodIssueCode.custom,message:`detached extensions must declare a 'transport' config`,path:[`transport`]}),e.entrypoints!==void 0&&t.addIssue({code:i.ZodIssueCode.custom,message:`detached extensions must not declare entrypoints`,path:[`entrypoints`]})):(e.entrypoints===void 0&&t.addIssue({code:i.ZodIssueCode.custom,message:`embedded extensions must declare at least one entrypoint`,path:[`entrypoints`]}),e.transport!==void 0&&t.addIssue({code:i.ZodIssueCode.custom,message:`embedded extensions must not declare a transport config`,path:[`transport`]}))});function J(e){return e}function Y(e){return J(q.parse(e))}function X(e){let t=q.safeParse(e);return t.success?{success:!0,data:J(t.data)}:t}const Z=i.discriminatedUnion(`kind`,[i.object({kind:i.literal(`configure-integration`),clientId:i.string().min(1),bundle:i.string().min(1)}),i.object({kind:i.literal(`install-extension`),extensionName:i.string().min(1)}),i.object({kind:i.literal(`open-url`),url:i.string().url()}),i.object({kind:i.literal(`run-command`),command:i.string().min(1)})]),Q=i.enum([`info`,`recommended`,`degraded`]),$=i.object({severity:Q,title:i.string().min(1),message:i.string().min(1),action:Z.optional()});function ee(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 te=i.object({extensionName:i.string().min(1),warnings:i.array($)});function ne(e,t){return e.parse(t??{})}function re(e){return JSON.stringify([e.extensionId,e.type,e.name,e.filename])}export{c as A,d as B,T as C,F as D,j as E,x as F,_ as H,f as I,p as L,h as M,g as N,A as O,u as P,o as R,N as S,C as T,a as U,m as V,D as _,$ as a,I as b,H as c,K as d,Y as f,O as g,E as h,te as i,l as j,S as k,q as l,R as m,ne as n,Q as o,X as p,Z as r,ee as s,re as t,G as u,P as v,w,k as x,L as y,s as z};
@@ -1 +0,0 @@
1
- import{n as e}from"./window-registry-2MZdZPdA.mjs";import{n as t}from"./namespace-BPf6AbBO.mjs";import{n}from"./extension-namespace-Ct9L6SKr.mjs";import{t as r}from"./schema-introspection-_Yw9L_mB.mjs";import{z as i}from"zod";import a from"node:path";import{getErrorString as o}from"@makaio/framework/utils";import{createBusNamespace as s}from"@makaio/framework/core";import{ProviderDefinitionSchema as c,primaryMigrationsPath as l,versionSatisfies as u}from"@makaio/framework/contracts";import{ToastSubjects as d}from"@makaio/framework/contracts/toast";import{ExtensionWarningSchema as f,getExtensionWarningActionLabel as p}from"@makaio/framework/contracts/extension";import{TrayMenuSubjects as m}from"@makaio/framework/services/tray-menu";const h=i.object({name:i.string(),displayName:i.string()}),g=s(`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":h,"service.ready":h.extend({durationMs:i.number().int().nonnegative()}),"service.failed":h.extend({errorMessage:i.string()}),"service.skipped":h.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.subjects;var v=class extends Error{reason;constructor(e){super(e),this.name=`ServiceSkipError`,this.reason=e}};function y(e){return{name:e.name,displayName:e.displayName}}var b=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(_.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=y(e);this.state.currentService=t.displayName,this.state.currentServiceStartedAt=Date.now(),this.bus.emit(_.service.starting,t).catch(e=>{console.warn(`[ExtensionCoordinator] boot.service.starting emit failed for "${t.name}":`,e)})}ready(e){let t=y(e);this.state.completedCount+=1;let n=this.state.currentServiceStartedAt===void 0?0:Math.max(0,Date.now()-this.state.currentServiceStartedAt);this.bus.emit(_.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=y(e);this.state.completedCount+=1,this.state.failedServices.push(n.name),this.bus.emit(_.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=y(e);this.state.completedCount+=1,this.state.skippedServices.push(n.name),this.bus.emit(_.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(_.complete,{totalDurationMs:this.state.totalDurationMs,failedServices:[...this.state.failedServices]}).catch(e=>{console.warn(`[ExtensionCoordinator] boot.complete emit failed:`,e)})}emitProgress(){this.bus.emit(_.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 x(e){return{subject:`wiring.apply`,$meta:{namespace:`client:${e}`,isRequest:!0,local:!1,channel:!1,payload:{request:{},response:{}}}}}const S=`action`;function C(e,t){return`${e}:${t}`}function ee(e,t,n){return e.on(d.interacted,r=>{let{toastId:i,actionId:a}=r.payload,o=C(i,a),s=t.get(o);s&&w(e,s,i,n).catch(e=>{console.error(`[ExtensionCoordinator] Warning action dispatch failed for toast "${i}":`,e)})})}async function w(e,t,n,r){switch(t.kind){case`configure-integration`:await ne(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:te(t)}}function te(e){throw Error(`[ExtensionCoordinator] Unsupported warning action: ${JSON.stringify(e)}`)}async function ne(e,t,n,r){let i=x(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:c.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 re(e){for(let[t,n]of e.entries)n.state===`active`&&await A(e,t,n)}function ie(e){if(e&&k(e))return[{id:S,label:p(e)}]}function k(e){return e.kind===`configure-integration`}function ae(e,t){let n=`${t}:`;for(let t of e.keys())t.startsWith(n)&&e.delete(t)}async function A(e,t,n){ae(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=ie(a.action);try{await e.bus.emit(d.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(C(o,S),a.action)}catch(e){console.warn(`[${t}] toast emission failed for warning "${a.title}":`,e)}}}function oe(e){return Object.freeze({extensionName:e})}function se(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 se(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,hashTriggers:!!e.hashTriggers,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){return i===`activated`?(await I(e,t,n,r),[]):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){let n=[];for(let r of[...e].reverse())if(r.processStopped)try{await r.processStopped(t)}catch(e){n.push(e)}return n}async function R(e,t,r){let i=e.entries.get(t);if(!i)return!1;let a=i.enabled,o=r!==a;o&&await e.persistEnabled?.(t,r);let s;try{s=r?await z(e,t,i):await B(e,t,i)}catch(n){if(o&&e.persistEnabled)try{await e.persistEnabled(t,a)}catch(e){throw AggregateError([n,e],`Extension "${t}" transition and preference rollback both failed`)}throw n}return i.enabled===a&&!s?(o&&await e.persistEnabled?.(t,a),!1):(e.bus.emit(n.enabledChanged,{name:t,enabled:r}).catch(e=>{console.error(`[ExtensionCoordinator] enabledChanged emit failed for "${t}":`,e)}),s)}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 s=j(e,t,n);if(r.storage?.registerHandlers&&e.db!==void 0)try{let t=M(e,n,s),a=r.storage.registerHandlers(e.bus,e.db,t);typeof a==`function`&&(i=a,n.storageCleanup=a)}catch(r){return n.error=o(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,s);a=await r.create(t),await a.init?.(),n.service=a}catch(r){return await V(t,a,i,n),r instanceof v?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=o(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=o(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;r.enabled=!1,r.error=void 0;let a=[];try{a.push(...await F(e.contributionProcessors,e,t,r,`stopped`))}catch(e){a.push(e),console.error(`[ExtensionCoordinator] Contribution processor error during disable of "${t}":`,e)}if(r.service)try{await r.service.destroy?.()}catch(e){a.push(e),console.error(`[ExtensionCoordinator] Error during disable destroy of "${t}":`,e)}finally{r.service=void 0}if(r.storageCleanup)try{r.storageCleanup()}catch(e){a.push(e),console.error(`[ExtensionCoordinator] Storage cleanup error during disable of "${t}":`,e)}finally{r.storageCleanup=void 0}if(a.length>0){let e=a.map(e=>o(e)).join(`; `);r.error=o(AggregateError(a,`Extension "${t}" disabled with ${a.length} teardown failure(s): ${e}`))}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 a.length===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&&u(r,n)}function K(e,t){return e.surface===void 0||e.surface===`any`||e.surface===t}function ce(e){let t=le(e);return ue(e,t,new Map(e.map(e=>[e.name,e]))),pe(t,fe(e,t))}function le(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 ue(e,t,n){for(let r of e)de(r,t,n)}function de(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(!u(i,t.version))throw Error(`ExtensionCoordinator: package "${e.name}" dependency "${t.name}" version ${i} does not satisfy ${t.version}`)}}function fe(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 pe(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 me(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=l(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=f.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 he(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 Y(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(),n=[],r=[];for(let i of t){let t=e.entries.get(i);if(!t)continue;let a=!1;if(t.state===`active`){let r=await F(e.contributionProcessors,e.contextHost,i,t,`stopped`);r.length>0&&(a=!0,n.push(...r))}if(t.service)try{await t.service.destroy?.()}catch(e){a=!0,n.push(e)}finally{t.service=void 0}if(t.storageCleanup)try{t.storageCleanup()}catch(e){a=!0,n.push(e)}finally{t.storageCleanup=void 0}a&&r.push(i),t.state===`active`&&P(e.contextHost.bus,t,`stopped`)}if(n.length>0)throw AggregateError(n,`Extensions failed to shut down cleanly: ${r.join(`, `)}`)}async function _e(e,t){if(!t.tray)return;let n=ve(t);await e.request(m.register,{entry:n})}function ve(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 ye(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(Se(e,t,n,i)){if(!n.pkg.create){await be(e,t,n);return}await xe(e,t,n,i)}}async function be(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 xe(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 v))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 Se(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 Ce=class{bus;surface;db;extensionContextBase;runtimeEnvironment;shutdownController=new AbortController;entries=new Map;loadOrder=[];loaded=!1;started=!1;shutdownRequested=!1;shutdownPromise;lifecycleTail=Promise.resolve();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(ee(this.bus,this.warningActionMap,t.launcherCommand??`makaio`))}get trayEntries(){return this._trayEntries.map(e=>({...e}))}get cliContributions(){return this._cliContributions}extensionsWithHttp(){return Y(this.entries)}load(e,t){if(this.shutdownRequested)throw Error(`ExtensionCoordinator.load() called after shutdown(). The coordinator is terminal.`);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=ce(n);for(let e of this.loadOrder){let r=n.find(t=>t.name===e),i={pkg:r,identity:oe(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),he({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.shutdownRequested)throw Error(`ExtensionCoordinator.startAll() called after shutdown(). The coordinator is terminal.`);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,await this.enqueueLifecycle(()=>this.startAllInLifecycleLane())}async startAllInLifecycleLane(){let e=new b(this.bus,this.loadOrder.length);this.rpcCleanups.push(()=>e.dispose());try{await me({loadOrder:this.loadOrder,entries:this.entries,runMigrations:this.runMigrations});for(let t of this.loadOrder){let n=this.entries.get(t);n&&await ye({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 re({bus:this.bus,entries:this.entries,warningActionMap:this.warningActionMap})}finally{e.complete()}}shutdown(){if(this.shutdownPromise)return this.shutdownPromise;this.shutdownRequested=!0;let e=this.enqueueLifecycle(()=>this.shutdownInLifecycleLane());return this.shutdownPromise=e,this.shutdownController.abort(),e}async shutdownInLifecycleLane(){let e=[],t;for(let t of this.rpcCleanups)try{t()}catch(t){e.push(t)}this.rpcCleanups=[],this.warningActionMap.clear();try{await ge({entries:this.entries,loadOrder:this.loadOrder,contributionProcessors:this.contributionProcessors,contextHost:this.createExtensionContextHost()})}catch(n){n instanceof AggregateError?(t=n.message,e.push(...n.errors)):e.push(n)}if(e.length>0){let n=t===void 0?``:`; ${t}`;throw AggregateError(e,`Extension coordinator shutdown failed with ${e.length} error(s)${n}`)}}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 this.shutdownRequested?!1:await this.enqueueLifecycle(()=>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))}enqueueLifecycle(e){let t=this.lifecycleTail.then(()=>e(),()=>e());return this.lifecycleTail=t.then(()=>void 0,()=>void 0),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{g as a,v as i,H as n,_ as o,U as r,Ce as t};
@@ -1 +0,0 @@
1
- import{z as e}from"zod";import{createBusNamespace as t}from"@makaio/framework/core";import{BrowserEntrypointSchema as n,ClientDefinitionSchema as r,ProviderDefinitionSchema as i}from"@makaio/framework/contracts";import{ExtensionWarningEntrySchema as a}from"@makaio/framework/contracts/extension";const o=e.enum([`discovered`,`initializing`,`active`,`failed`,`skipped`,`stopped`]),s=e.object({name:e.string(),displayName:e.string()}),c=s.extend({state:o,error:e.string().optional()}),l=c.extend({critical:e.boolean()}),u=c.extend({surface:e.enum([`interactive`,`headless`,`any`]).optional(),enabled:e.boolean(),browser:n.optional()}),d=e.object({packageName:e.string()}),f=d.extend({definition:i}),p=d.extend({definition:r}),m=t(`kernel:extension`,{stateChanged:e.object({name:e.string(),displayName:e.string(),from:o,to:o,error:e.string().optional(),contributes:e.object({adapters:e.boolean(),tools:e.boolean(),hashTriggers:e.boolean(),providers:e.boolean(),clients:e.boolean(),ui:e.boolean(),storage:e.boolean(),sessionEventActions:e.boolean()}).optional()}),list:{request:e.object({}),response:e.object({extensions:e.array(u)})},get:{request:e.object({name:e.string()}),response:e.object({extension:u.nullable()})},setEnabled:{request:e.object({name:e.string(),enabled:e.boolean()}),response:e.object({success:e.boolean()})},"contributions.catalog":{request:e.object({}),response:e.object({providers:e.array(f),clients:e.array(p)})},enabledChanged:e.object({name:e.string(),enabled:e.boolean()}),"warnings.list":{request:e.object({extensionName:e.string().optional()}),response:e.object({entries:e.array(a)})},"warnings.changed":a}),h=m.subjects;export{o as a,l as c,c as i,h as n,u as o,s as r,a as s,m as t};
@@ -1,435 +0,0 @@
1
- import { i as CliContribution } from "./types-QRSc2AUU.mjs";
2
- import { c as ExtensionInfo } from "./index-mTaFX2HH2.mjs";
3
- import { r as WindowRegistry } from "./window-registry-DeG37kt8.mjs";
4
- import { ExtensionContributionProcessor, ExtensionService, ExtensionToken, MakaioExtension, NodeExtensionContext, StorageDialect, TrayManifest, VersionLiteral } from "@makaio/framework/contracts";
5
- import { IMakaioBus } from "@makaio/framework/bus";
6
-
7
- //#region packages/kernel/src/extension/types.d.ts
8
- /** Concrete Node runtime context supplied by the kernel coordinator. */
9
- type KernelExtensionContext = NodeExtensionContext<IMakaioBus>;
10
- /** Concrete executable extension shape loaded by the kernel coordinator. */
11
- type KernelMakaioExtension = MakaioExtension<KernelExtensionContext>;
12
- /** Awaited contribution processor registered with the {@link ExtensionCoordinator}. */
13
- type ContributionProcessor = ExtensionContributionProcessor<KernelExtensionContext>;
14
- /**
15
- * Hosted runtime surface category used for extension/package gating.
16
- *
17
- * Represents the concrete surface a runtime IS -- `'any'` is intentionally
18
- * absent because a runtime cannot BE `'any'`; it is always interactive or
19
- * headless. Package manifests may declare `'any'` as their surface affinity,
20
- * which the coordinator interprets as "load on all surfaces".
21
- */
22
- type ExtensionRuntimeSurface = 'interactive' | 'headless';
23
- /**
24
- * Host-advertised runtime capability fact.
25
- */
26
- interface RuntimeCapability {
27
- /** Stable capability token. */
28
- readonly id: string;
29
- /** Concrete capability contract version when the host exposes one. */
30
- readonly version?: VersionLiteral;
31
- }
32
- /**
33
- * Snapshot of the runtime environment provided by the host.
34
- *
35
- * The coordinator uses this to evaluate {@link RuntimeRequirement} gates on
36
- * each extension before deciding whether to load it.
37
- */
38
- interface RuntimeEnvironment {
39
- /**
40
- * Identifiers of the active host runtimes (e.g. `'node'`, `'electron'`).
41
- *
42
- * Extensions that declare `{ type: 'host', id: '...' }` requirements check
43
- * against this set.
44
- */
45
- readonly hosts: ReadonlySet<string>;
46
- /**
47
- * Capability tokens advertised by the host (e.g. `'storage.drizzle'`).
48
- *
49
- * Extensions that declare `{ type: 'capability', id: '...' }` requirements
50
- * check against this set. Versioned requirements additionally consult
51
- * {@link RuntimeEnvironment.capabilityVersions}.
52
- */
53
- readonly capabilities: ReadonlySet<string>;
54
- /**
55
- * Concrete versions for host capabilities that expose a versioned contract.
56
- *
57
- * A capability requirement with a `version` range is satisfied only when the
58
- * capability ID is present and this map contains a satisfying concrete version.
59
- */
60
- readonly capabilityVersions?: ReadonlyMap<string, VersionLiteral>;
61
- }
62
- /**
63
- * Options for constructing an {@link ExtensionCoordinator}.
64
- */
65
- interface ExtensionCoordinatorOptions {
66
- /** Hosted surface category used to apply package gating. Defaults to `'headless'`. */
67
- surface?: ExtensionRuntimeSurface;
68
- /**
69
- * Host launcher command embedded into client wiring installed from warning actions.
70
- *
71
- * Defaults to `'makaio'` for framework-only hosts. Hosts pass their
72
- * own launcher policy through this seam so the runtime does not infer it
73
- * from process entrypoints.
74
- */
75
- launcherCommand?: string;
76
- /** Optional database instance for storage handler registration (opaque — cast to MakaioDatabase at call site). */
77
- db?: unknown;
78
- /**
79
- * Node host fields for the context supplied to extension factories.
80
- *
81
- * Required when any loaded extension declares a `create` factory. When absent,
82
- * extensions with `create` will fail to start.
83
- *
84
- * Omit `config`, `signal`, and `hasExtension` — those are coordinator-owned
85
- * and assembled per extension at context-build time.
86
- */
87
- extensionContextBase?: Omit<KernelExtensionContext, 'bus' | 'identity' | 'getService' | 'dataDir' | 'config' | 'signal' | 'hasExtension'>;
88
- /**
89
- * Host-provided runtime environment snapshot used to evaluate extension
90
- * {@link RuntimeRequirement} gates during {@link ExtensionCoordinator.load}.
91
- *
92
- * Extensions whose {@link MakaioExtension.requires} entries are not all
93
- * satisfied by the supplied environment are excluded. Omit only in tests that
94
- * intentionally bypass environment gating.
95
- */
96
- runtimeEnvironment?: RuntimeEnvironment;
97
- /**
98
- * Optional callback to persist enabled/disabled state after a setEnabled call.
99
- * The composition root supplies this to bridge into PreferencesSubjects or another durable store.
100
- */
101
- persistEnabled?: (name: string, enabled: boolean) => Promise<void>;
102
- /**
103
- * Optional callback to retrieve persisted enabled state during startAll.
104
- * Returns `false` to skip a package at boot, `true` or `undefined` to start normally.
105
- */
106
- loadEnabled?: (name: string) => boolean | undefined;
107
- /**
108
- * Optional callback to retrieve stored configuration for a package during
109
- * startAll and enablePackage. Returns `undefined` when no stored config exists.
110
- */
111
- loadConfig?: (name: string) => Record<string, unknown> | undefined;
112
- /**
113
- * Optional callback invoked by {@link ExtensionCoordinator.startAll} to run
114
- * database migrations declared by loaded packages before any services start.
115
- *
116
- * The coordinator collects all packages whose `StorageManifest.migrations`
117
- * field is set and passes them as an array of
118
- * `{ name, migrationsPath, migrationSourceId, migrationsPathByDialect? }`
119
- * objects to this callback in topological (dependency) order. The callback is
120
- * responsible for applying pending migrations — typically via Drizzle
121
- * `migrate()` or the bundled `applyMigrations()` helper — using a tracking
122
- * table keyed to the migration bundle identity so packages that share one
123
- * folder share one ledger.
124
- *
125
- * When absent, declared migrations are silently skipped and storage tables
126
- * that depend on them will not be created at runtime.
127
- *
128
- * The `migrationsPath` values are absolute discovery paths resolved by the
129
- * coordinator from each package's `StorageManifest.migrations` field
130
- * plus executable `storage.packageRoot` metadata when needed.
131
- * `migrationSourceId` is the stable runtime identity used for bundled hosts;
132
- * when a package does not declare one, it falls back to `migrationsPath`.
133
- *
134
- * When a package declares the object form of `StorageManifest.migrations`,
135
- * the coordinator additionally passes `migrationsPathByDialect` — an
136
- * absolute, containment-checked map of every declared per-dialect chain. The
137
- * coordinator stays dialect-agnostic; the host runtime selects the active
138
- * dialect's chain from this map and falls back to `migrationsPath` when the
139
- * map has no entry for that dialect.
140
- * @param sources - Migration sources in dependency order, each carrying the
141
- * package name, absolute migration folder path, stable source id, and an
142
- * optional per-dialect chain map.
143
- * @returns A promise that resolves when all migrations have been applied.
144
- */
145
- runMigrations?: (sources: ReadonlyArray<{
146
- name: string;
147
- migrationsPath: string;
148
- migrationSourceId: string;
149
- migrationsPathByDialect?: Partial<Record<StorageDialect, string>>;
150
- }>) => Promise<void>;
151
- }
152
- //#endregion
153
- //#region packages/kernel/src/extension/extension-coordinator.d.ts
154
- /**
155
- * Manages optional extensions through a unified lifecycle with per-extension state
156
- * machine, bus observability, and window/tray/CLI surface collection.
157
- *
158
- * Lifecycle flow for each extension:
159
- * ```
160
- * discovered -> initializing -> [create + init + contributions] -> active
161
- * ↘ failed (any step fails, contributions rolled back)
162
- * ↘ skipped (ServiceSkipError from create or init,
163
- * or loadEnabled returned false at boot)
164
- * ```
165
- *
166
- * Every state transition emits `kernel:extension.stateChanged` on the bus.
167
- * Non-critical failures are isolated so remaining extensions continue to start.
168
- * Critical extension failures abort boot because the host declared them mandatory.
169
- *
170
- * Lifecycle transitions are serialized. Extension lifecycle callbacks must not
171
- * await another coordinator lifecycle call, because it waits in the same lane.
172
- *
173
- * During {@link load}, window manifests are registered into
174
- * {@link windowRegistry}, tray entries are collected into {@link trayEntries},
175
- * and CLI contributions are collected into {@link cliContributions}. Static
176
- * tray entries are bridged to the tray menu bus service after each extension
177
- * starts so the tray service can be supplied by the same extension graph.
178
- *
179
- * During {@link startAll}, each extension's {@link MakaioExtension.create} factory
180
- * is called with a `NodeExtensionContext`, followed by `service.init()`.
181
- * Storage handlers (if any) are registered via
182
- * `MakaioExtension.storage.registerHandlers` when a `db` instance is
183
- * provided to the constructor.
184
- */
185
- declare class ExtensionCoordinator {
186
- private readonly bus;
187
- private readonly surface;
188
- private readonly db;
189
- private readonly extensionContextBase;
190
- private readonly runtimeEnvironment;
191
- /**
192
- * AbortController signalling graceful shutdown to all active packages.
193
- *
194
- * Aborted at the start of {@link shutdown} so packages receive the signal
195
- * before their services are destroyed.
196
- */
197
- private readonly shutdownController;
198
- /** Insertion-ordered map so iteration matches dependency sort order. */
199
- private readonly entries;
200
- private loadOrder;
201
- private loaded;
202
- private started;
203
- private shutdownRequested;
204
- private shutdownPromise;
205
- /** FIFO lane for lifecycle transitions that mutate extension entries. */
206
- private lifecycleTail;
207
- private rpcCleanups;
208
- private readonly contributionProcessors;
209
- /**
210
- * Transient map from composite key (`toastId:actionId`) to the corresponding
211
- * {@link ExtensionWarningAction}. Populated during {@link emitWarningsForEntry}
212
- * and cleared per package before that package's current warning set is
213
- * recorded, then cleared globally on {@link shutdown}.
214
- *
215
- * This map is intentionally coordinator-owned because toast interactions
216
- * arrive after warning emission and need a short-lived runtime lookup without
217
- * exposing executable warning actions in the toast payload.
218
- */
219
- private readonly warningActionMap;
220
- /** Window registry populated during {@link load}. */
221
- readonly windowRegistry: WindowRegistry;
222
- private readonly _trayEntries;
223
- private readonly _cliContributions;
224
- private readonly persistEnabled;
225
- private readonly loadEnabled;
226
- private readonly loadConfig;
227
- private readonly runMigrations;
228
- /**
229
- * @param bus - Bus instance for emitting lifecycle events and serving the list RPC.
230
- * @param options - Coordinator configuration.
231
- */
232
- constructor(bus: IMakaioBus, options?: ExtensionCoordinatorOptions);
233
- /**
234
- * Tray manifest entries collected from packages during {@link load}.
235
- * @returns Immutable snapshot of all collected tray entries.
236
- */
237
- get trayEntries(): ReadonlyArray<TrayManifest & {
238
- readonly packageName: string;
239
- }>;
240
- /**
241
- * CLI contributions collected from packages during {@link load}.
242
- * @returns Immutable snapshot of all collected CLI contributions.
243
- */
244
- get cliContributions(): ReadonlyArray<CliContribution>;
245
- /**
246
- * Returns extensions that declare HTTP routes.
247
- * Primarily retained for diagnostics and compatibility with callers that
248
- * need a snapshot of loaded HTTP surfaces. Runtime route mounting is handled
249
- * by contribution processors as extensions activate or stop.
250
- * @returns Loaded extensions that have an `http` field defined.
251
- */
252
- extensionsWithHttp(): ReadonlyArray<{
253
- http: {
254
- prefix: string;
255
- mount: (app: unknown) => void;
256
- };
257
- }>;
258
- /**
259
- * Load extension manifests and build the dependency graph.
260
- *
261
- * Sets all entries to the `discovered` state and registers the
262
- * `kernel:extension.list`, `kernel:extension.get`, `kernel:extension.setEnabled`,
263
- * `cli.listContributions`, and `cli.execute` RPC handlers.
264
- *
265
- * Extensions that do not match the coordinator's runtime surface or declared
266
- * environment requirements are
267
- * silently excluded. Dependents of excluded extensions are transitively pruned.
268
- *
269
- * Window manifests are registered into {@link windowRegistry}, tray entries
270
- * are collected into {@link trayEntries}, and CLI contributions are collected
271
- * into {@link cliContributions} -- all before any services are started.
272
- *
273
- * Single-use: calling this method twice on the same instance throws.
274
- * @param packages - Extension manifests to register.
275
- * @param configDefaults - Optional map of extension name to default config values
276
- * sourced from descriptor.json.
277
- * @throws Error if called more than once, if a dependency cycle is detected,
278
- * or if dependency sorting fails.
279
- */
280
- load(packages: ReadonlyArray<KernelMakaioExtension>, configDefaults?: ReadonlyMap<string, Readonly<Record<string, unknown>>>): void;
281
- /**
282
- * Start all loaded packages in dependency order.
283
- *
284
- * For each package the state machine advances:
285
- * `discovered -> initializing -> active | failed | skipped`
286
- *
287
- * Failures are isolated: a package that throws during `create` or `init` is
288
- * set to `failed` and the error is captured, but remaining packages continue
289
- * to start unless the package declares `critical: true`.
290
- *
291
- * Single-use: calling this method twice on the same instance throws.
292
- * @throws Error if called more than once, before {@link load}, or when a
293
- * critical package fails.
294
- */
295
- startAll(): Promise<void>;
296
- /** Run the admitted startup transition in the coordinator lifecycle lane. */
297
- private startAllInLifecycleLane;
298
- /**
299
- * Shut down all active packages in reverse dependency order.
300
- *
301
- * Calls each package's service `destroy()` method (if any). A teardown
302
- * failure does not stop remaining packages from shutting down, but it is
303
- * reported: once every package has been stopped, all failures are thrown
304
- * together so the caller can treat termination as unclean.
305
- *
306
- * Safe to call even if {@link startAll} was never called.
307
- * @returns A promise that settles after every admitted transition and teardown complete.
308
- * @throws An AggregateError when any package failed to shut down cleanly.
309
- */
310
- shutdown(): Promise<void>;
311
- /** Run shutdown after every lifecycle transition admitted before shutdown. */
312
- private shutdownInLifecycleLane;
313
- /**
314
- * Return the current state snapshot for all registered packages.
315
- * @returns Array of {@link ExtensionInfo} objects reflecting current observable states.
316
- */
317
- list(): ExtensionInfo[];
318
- /**
319
- * Retrieve the live service instance for a named extension.
320
- * @param tokenOrName - Extension token or extension name string.
321
- * @returns The active service instance, or `undefined`.
322
- */
323
- getExtensionService<TService = ExtensionService>(tokenOrName: string | ExtensionToken<TService>): TService | undefined;
324
- /**
325
- * Look up a loaded extension by name.
326
- * @param name - Extension name.
327
- * @returns The extension, or `undefined` if not loaded.
328
- */
329
- getExtension(name: string): KernelMakaioExtension | undefined;
330
- /**
331
- * Collect provider definition IDs from extensions that can still provide them.
332
- *
333
- * Active entries are already visible through the contribution catalog.
334
- * Enabled `discovered` and `initializing` entries are still eligible to
335
- * activate later in the same boot or enablement pass, so adapters should
336
- * defer for their providers. Disabled and terminal inactive entries are
337
- * excluded so optional-provider adapters do not wait on providers that
338
- * cannot become catalog-visible.
339
- * @returns Set of provider definition IDs from active or activation-eligible extensions.
340
- */
341
- getLoadedProviderDefinitionIds(): ReadonlySet<string>;
342
- /**
343
- * Iterate all active extensions in dependency order with their contexts.
344
- *
345
- * Intended for host-owned integration code that needs a snapshot of active
346
- * packages after the coordinator has completed startup.
347
- * @param callback - Called once per active extension with its name, manifest,
348
- * and a per-extension `NodeExtensionContext`.
349
- */
350
- forEachActiveExtension(callback: (name: string, pkg: KernelMakaioExtension, ctx: KernelExtensionContext) => void): void;
351
- /**
352
- * Invoke a callback for a single active extension with its resolved context.
353
- *
354
- * Singular complement to {@link forEachActiveExtension} for targeted operations
355
- * after an extension is re-enabled.
356
- * No-ops when the extension is not found or not in `active` state.
357
- * @param name - Name of the extension to target.
358
- * @param callback - Called with the extension name, manifest, and a
359
- * per-extension `NodeExtensionContext` when the extension is active.
360
- */
361
- forExtension(name: string, callback: (name: string, pkg: KernelMakaioExtension, ctx: KernelExtensionContext) => void): void;
362
- /**
363
- * Register an awaited contribution processor.
364
- *
365
- * The processor's `processActivated` method is called
366
- * (and awaited) each time an extension transitions to `active` — both during
367
- * {@link startAll} and on re-enable via `kernel:extension.setEnabled(true)`.
368
- *
369
- * `processStopped` (when present) is called before
370
- * the extension's service is destroyed during {@link shutdown} or
371
- * `kernel:extension.setEnabled(false)`.
372
- *
373
- * Processors run in registration order during activation and reverse
374
- * registration order during deactivation. During activation, processor errors
375
- * cause the extension to transition to `failed` with rollback of
376
- * already-activated contributions. During deactivation, errors are caught and
377
- * logged (best-effort).
378
- * @param processor - Processor to register.
379
- * @returns Cleanup function that removes the processor from the registry.
380
- */
381
- registerContributionProcessor(processor: ContributionProcessor): () => void;
382
- /**
383
- * Handle the `kernel:extension.setEnabled` RPC by enabling or disabling an extension.
384
- *
385
- * Public so the extracted RPC handler module can call it. Delegates to the
386
- * shared toggle lifecycle helper.
387
- * @param name - Name of the extension to toggle.
388
- * @param enabled - `true` to enable, `false` to disable.
389
- * @returns `true` on success, `false` when the state machine rejects.
390
- */
391
- handleSetEnabled(name: string, enabled: boolean): Promise<boolean>;
392
- /**
393
- * Schedule a lifecycle transition after every previously admitted transition.
394
- *
395
- * The tail recovers from failures so one rejected operation cannot strand
396
- * later shutdown or toggle work behind a rejected promise.
397
- * @param operation - Lifecycle transition to run exclusively.
398
- * @returns The operation's result.
399
- */
400
- private enqueueLifecycle;
401
- /**
402
- * Create the shared extension-context helper host without exposing coordinator internals.
403
- * @returns Helper host for config resolution and ExtensionContext construction.
404
- */
405
- private createExtensionContextHost;
406
- /**
407
- * Create the helper host for extension health checks.
408
- * @returns Coordinator state required by the health runner.
409
- */
410
- private createExtensionHealthHost;
411
- /**
412
- * Check whether an extension has reached active state.
413
- * @param name - Extension name to check.
414
- * @returns `true` when the extension is active.
415
- */
416
- private hasActiveExtension;
417
- }
418
- //#endregion
419
- //#region packages/kernel/src/extension/extension-selection.d.ts
420
- /**
421
- * Keep the last extension registered for a given name.
422
- * @param extensions - Eligible extensions in load priority order.
423
- * @returns Unique extensions with later entries winning name collisions.
424
- */
425
- declare function coalesceExtensionOverrides(extensions: ReadonlyArray<KernelMakaioExtension>): KernelMakaioExtension[];
426
- /**
427
- * Filter extensions by runtime surface / environment requirements and prune dependents.
428
- * @param extensions - Full extension set to filter.
429
- * @param surface - Runtime surface to match.
430
- * @param env - Host-provided runtime environment, or `undefined` to allow all.
431
- * @returns Extensions eligible for loading in the current host environment.
432
- */
433
- declare function filterEligibleExtensions(extensions: ReadonlyArray<KernelMakaioExtension>, surface: ExtensionRuntimeSurface, env: RuntimeEnvironment | undefined): KernelMakaioExtension[];
434
- //#endregion
435
- export { ExtensionCoordinatorOptions as a, KernelMakaioExtension as c, ContributionProcessor as i, RuntimeCapability as l, filterEligibleExtensions as n, ExtensionRuntimeSurface as o, ExtensionCoordinator as r, KernelExtensionContext as s, coalesceExtensionOverrides as t, RuntimeEnvironment as u };
@@ -1 +0,0 @@
1
- import{n as e}from"./extension-package-provenance-C7oO5JAE.mjs";import{t}from"./descriptor-to-package-Dw8dnl5E.mjs";import{pathToFileURL as n}from"node:url";import*as r from"node:path";import*as i from"node:fs";import{versionSatisfies as a}from"@makaio/framework/contracts";import{AutomationCronSchedulerToken as o}from"@makaio/framework/services/automation-trigger";var s=class extends Error{};async function c(e,t){let{frameworkVersion:n,importModule:r=D}=t,i=[],a=[],o=new Map,s;for(let t of e){let{descriptor:e,extensionPath:c}=t,u=`[extensions] ${e.name}@${e.version}`;if(!h(t,n))continue;if(e.execution===`detached`){let t;try{s??=(await import(`./detached-extension-handle-DN3aqLyq.mjs`)).createDetachedExtensionPackage,t=s(e,c)}catch(e){console.warn(`${u}: failed to synthesize detached extension package:`,e instanceof Error?e.message:e);continue}i.push(t),e.config?.defaults&&o.set(e.name,e.config.defaults);continue}if(!e.entrypoints.server){!e.entrypoints.browser&&!e.entrypoints.cli&&console.warn(`${u}: no executable entrypoint declared, skipping`);continue}let f;if(t.preloadedModule)f=t.preloadedModule;else try{let t=S(`server`,e.entrypoints.server,c);if(!t){console.warn(`${u}: server entrypoint could not be resolved within extension directory, skipping`);continue}f=await r(t)}catch(e){console.warn(`${u}: failed to import server entry:`,e instanceof Error?e.message:e);continue}let p=d(f.default,e.name,u);p&&(i.push(...p),l(f,p,u,a),e.config?.defaults&&o.set(e.name,e.config.defaults))}return{packages:i,automationCronSchedulerHostPolicies:a,configDefaults:o}}function l(e,t,n,r){let i=e.automationCronSchedulerHostPolicy;if(i===void 0)return;if(!u(i))throw new s(`${n}: named export 'automationCronSchedulerHostPolicy' is not a valid owner-anchored scheduler policy`);let a=t.find(({name:e})=>e===i.ownerPackageName);if(!a)throw new s(`${n}: automation cron scheduler policy owner '${i.ownerPackageName}' is not a normalized descriptor default package`);if(i.package.name!==o.name)throw new s(`${n}: automation cron scheduler policy package '${i.package.name}' must be named '${o.name}'`);r.push({ownerPackage:a,package:i.package})}function u(e){if(!e||typeof e!=`object`||Array.isArray(e))return!1;let t=e;return typeof t.ownerPackageName==`string`&&_(t.package)}function d(e,t,n){if(Array.isArray(e)){let r=[],i=new Set;for(let t of e){if(!_(t)){console.warn(`${n}: default export array contains an invalid MakaioExtension, skipping`);return}if(i.has(t.name)){console.warn(`${n}: default export array contains duplicate package name '${t.name}', skipping`);return}i.add(t.name),r.push(t)}if(!r.some(e=>e.name===t)){console.warn(`${n}: default export array must include a package named '${t}' to match descriptor identity, skipping`);return}if(r.some(e=>e.name!==t&&!e.name.startsWith(`${t}.`))){console.warn(`${n}: default export array contains package names outside descriptor namespace '${t}', skipping`);return}return r}if(!_(e)){console.warn(`${n}: default export is not a valid MakaioExtension or MakaioExtension[], skipping`);return}if(e.name!==t){console.warn(`${n}: imported package name '${e.name}' does not match descriptor name '${t}', skipping`);return}return[e]}async function f(t,n,r){let{importModule:i=D,frameworkVersion:a}=r,o=new Map(n.map(e=>[e.name,e])),s=new Map;for(let n of t){let t=p(n,a);if(!t)continue;let r=`[extensions] ${n.descriptor.name}@${n.descriptor.version}`,c=o.get(n.descriptor.name);if(c?.cli)continue;let l=await g(n,t,r,i);if(!l)continue;if(!v(l.default)){console.warn(`${r}: default export is not a valid CliContribution, skipping`);continue}let u=n.descriptor.cli?.name??n.descriptor.name;if(l.default.name!==u){console.warn(`${r}: imported CLI contribution name '${l.default.name}' does not match descriptor CLI name '${u}', skipping`);continue}if(c){let t={...c,cli:l.default};o.set(n.descriptor.name,e(t,c));continue}if(n.descriptor.entrypoints?.server||n.descriptor.entrypoints?.browser){console.warn(`${r}: server or browser entry is present but no package was loaded, skipping CLI-only synthesis`);continue}o.set(n.descriptor.name,m(n,l.default)),n.descriptor.config?.defaults&&s.set(n.descriptor.name,n.descriptor.config.defaults)}return{packages:[...o.values()],configDefaults:s}}function p(e,t){if(h(e,t)&&e.descriptor.execution!==`detached`)return e.descriptor.entrypoints?.cli}function m(e,n){return{...t(e.descriptor),cli:n}}function h(e,t){let{descriptor:n}=e,r=`[extensions] ${n.name}@${n.version}`;try{return a(t,n.makaio.framework)?!0:(console.warn(`${r}: requires framework ${n.makaio.framework}, current is ${t}, skipping`),!1)}catch(e){return console.warn(`${r}: invalid version metadata (framework=${t}, range=${n.makaio.framework}), skipping:`,e instanceof Error?e.message:e),!1}}async function g(e,t,n,r){try{let i=S(`cli`,t,e.extensionPath);if(!i){console.warn(`${n}: cli entrypoint has no resolvable candidate within extension directory, skipping`);return}return await r(i)}catch(e){console.warn(`${n}: failed to import cli entry:`,e instanceof Error?e.message:e);return}}function _(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.name==`string`&&typeof t.displayName==`string`&&typeof t.version==`string`}function v(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.name!=`string`||typeof t.description!=`string`||!Array.isArray(t.subcommands)||`interactive`in t&&t.interactive!==void 0&&typeof t.interactive!=`function`?!1:t.subcommands.length===0?typeof t.interactive==`function`:t.subcommands.every(y)}function y(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.name==`string`&&typeof t.description==`string`&&b(t.schema)&&typeof t.handler==`function`}function b(e){return typeof e==`object`&&!!e&&typeof e.safeParse==`function`}function x(e,t){return t===!0?e:t}function S(e,t,n){if(!r.isAbsolute(n))return;let i=x(e,t),a=E(n),o=r.resolve(n,`src`,`${i}.ts`);if(w(o,a))return o;let s=r.resolve(n,`dist`,`${i}.mjs`);if(w(s,a))return s}function C(e,t){let n=E(t);return T(E(e),n)}function w(e,t){try{return T(i.realpathSync(e),t)}catch{return!1}}function T(e,t){return e.startsWith(t+r.sep)}function E(e){let t=r.resolve(e);try{return i.realpathSync(t)}catch{return t}}async function D(e){return await import(n(e).href)}export{h as a,c,v as i,S as l,f as n,_ as o,x as r,C as s,s as t};