@makaio/framework 1.0.0-dev-1779051654000 → 1.0.0-dev-1781023871421

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 (419) hide show
  1. package/LICENSE +1 -1
  2. package/dist/.makaio-build.json +5 -0
  3. package/dist/account-identity-DT5NOtFi.mjs +1 -0
  4. package/dist/adapter-C1eI-fGV.mjs +1 -0
  5. package/dist/adapters/acp-client/index.d.mts +6013 -14
  6. package/dist/adapters/acp-client/index.mjs +3 -1
  7. package/dist/adapters/config/index.d.mts +1 -1
  8. package/dist/adapters/config/index.mjs +1 -1
  9. package/dist/adapters/index.d.mts +47 -20
  10. package/dist/adapters/index.mjs +13 -6
  11. package/dist/adapters/node.d.mts +4 -4
  12. package/dist/adapters/node.mjs +4 -4
  13. package/dist/adapters/stream-session/index.d.mts +30 -0
  14. package/dist/adapters/stream-session/index.mjs +1 -1
  15. package/dist/artifact-B3npq1cy.mjs +1 -0
  16. package/dist/bus/index.d.mts +866 -203
  17. package/dist/bus/index.mjs +1 -1
  18. package/dist/bus-Caz3Jpbc.mjs +1 -0
  19. package/dist/bus-Hb-LGzgb.mjs +2 -0
  20. package/dist/chunk-DTipWd-i.mjs +1 -0
  21. package/dist/client-bx74gm4R.mjs +1 -0
  22. package/dist/clients/index.d.mts +113 -35
  23. package/dist/clients/index.mjs +2 -2
  24. package/dist/{clients-namespace-UHj5wt-l.d.mts → clients-namespace-GmSJpBUV.d.mts} +8 -8
  25. package/dist/{config-namespace-ChZOpi1W.d.mts → config-namespace-CPY9YsR8.d.mts} +4 -4
  26. package/dist/contracts/adapter/index.d.mts +3 -3
  27. package/dist/contracts/adapter/index.mjs +1 -1
  28. package/dist/contracts/adapter/schemas/session-lineage.d.mts +1 -1
  29. package/dist/contracts/artifact/index.d.mts +2 -0
  30. package/dist/contracts/artifact/index.mjs +1 -0
  31. package/dist/contracts/client/index.d.mts +2 -2
  32. package/dist/contracts/client/index.mjs +1 -1
  33. package/dist/contracts/common/index.d.mts +1 -1
  34. package/dist/contracts/config/index.d.mts +8 -8
  35. package/dist/contracts/config/index.mjs +1 -1
  36. package/dist/contracts/extension/index.d.mts +4 -3
  37. package/dist/contracts/extension/index.mjs +1 -1
  38. package/dist/contracts/facet/index.d.mts +2 -0
  39. package/dist/contracts/facet/index.mjs +1 -0
  40. package/dist/contracts/harness/index.d.mts +1 -1
  41. package/dist/contracts/harness/index.mjs +1 -1
  42. package/dist/contracts/host/index.d.mts +1 -1
  43. package/dist/contracts/host/index.mjs +1 -1
  44. package/dist/contracts/index.d.mts +12370 -1990
  45. package/dist/contracts/index.mjs +1 -1
  46. package/dist/contracts/materialization/index.d.mts +4 -0
  47. package/dist/contracts/materialization/index.mjs +1 -0
  48. package/dist/contracts/model-registry/index.d.mts +1 -1
  49. package/dist/contracts/model-registry/index.mjs +1 -1
  50. package/dist/contracts/native-session-supervisor/index.d.mts +1 -1
  51. package/dist/contracts/native-session-supervisor/index.mjs +1 -1
  52. package/dist/contracts/platform/index.d.mts +1 -1
  53. package/dist/contracts/platform/index.mjs +1 -1
  54. package/dist/contracts/provider/index.d.mts +2 -2
  55. package/dist/contracts/provider/index.mjs +1 -1
  56. package/dist/contracts/session/index.d.mts +3 -3
  57. package/dist/contracts/session/index.mjs +1 -1
  58. package/dist/contracts/shared/index.d.mts +2 -2
  59. package/dist/contracts/shared/index.mjs +1 -1
  60. package/dist/contracts/skill/index.d.mts +1 -1
  61. package/dist/contracts/skill/index.mjs +1 -1
  62. package/dist/contracts/telemetry/index.d.mts +2 -0
  63. package/dist/contracts/telemetry/index.mjs +1 -0
  64. package/dist/contracts/timeout/index.d.mts +1 -1
  65. package/dist/contracts/timeout/index.mjs +1 -1
  66. package/dist/contracts/toast/index.d.mts +2 -2
  67. package/dist/contracts/toast/index.mjs +1 -1
  68. package/dist/contracts/variant/index.d.mts +1 -1
  69. package/dist/contracts/variant/index.mjs +1 -1
  70. package/dist/core/index.d.mts +296 -34
  71. package/dist/core/index.mjs +1 -1
  72. package/dist/{credential-ref-DLCsoKVZ.mjs → credential-ref-YWQQENEo.mjs} +1 -1
  73. package/dist/cursor-storage-CtVJ3JzB.mjs +1 -0
  74. package/dist/{definition-DB7bbFSa.d.mts → definition-BLCdXGzh.d.mts} +17 -3
  75. package/dist/definition-CrgHIpTK.d.mts +60 -0
  76. package/dist/{definition-DkYy1PZz.mjs → definition-DZMXOnjX.mjs} +1 -1
  77. package/dist/{definition-DtUNiGom.d.mts → definition-pkJ6szUl.d.mts} +1 -1
  78. package/dist/drizzle-Eq8W1EbD.mjs +1 -0
  79. package/dist/event-Ca2yUf5i.mjs +1 -0
  80. package/dist/execution-target-CRPTfZlc.mjs +1 -0
  81. package/dist/extension-C-4BHMRI.mjs +1 -0
  82. package/dist/extension-CpIUgBKI.mjs +1 -0
  83. package/dist/facet-BuwhrThl.mjs +1 -0
  84. package/dist/filesystem-service-B8rhBRgB.mjs +1 -0
  85. package/dist/filesystem-service-p_iJVHd4.d.mts +66 -0
  86. package/dist/git/index.d.mts +210 -0
  87. package/dist/git/index.mjs +18 -0
  88. package/dist/globby-rtWVaFHv.mjs +41 -0
  89. package/dist/{handlers-DR_4_rAT.mjs → handlers-CkTsQLra.mjs} +3 -3
  90. package/dist/{harness-B6lGP9rm.mjs → harness-BRCMcvQN.mjs} +1 -1
  91. package/dist/{host-CvEht5RT.mjs → host-Br9VuOyr.mjs} +1 -1
  92. package/dist/{index-WKjrpcA_.d.mts → index-472sOmsW.d.mts} +6 -6
  93. package/dist/index-8SZkg7s6.d.mts +353 -0
  94. package/dist/index-B3PK4FIn.d.mts +5116 -0
  95. package/dist/{index-D2jejYlV.d.mts → index-B80L4YqA.d.mts} +3 -3
  96. package/dist/index-BFg9BUpx.d.mts +355 -0
  97. package/dist/index-BGfWS6GE.d.mts +483 -0
  98. package/dist/{index-DQRsGXb5.d.mts → index-BVgfS-AJ.d.mts} +2 -2
  99. package/dist/{index-CnmPtjnA.d.mts → index-B_zQC98V.d.mts} +16 -16
  100. package/dist/{index-DaEp4UWW.d.mts → index-Bh_Ne7LF.d.mts} +54 -42
  101. package/dist/{index-yvN8UcEH.d.mts → index-Bvb2mMH6.d.mts} +109 -109
  102. package/dist/{index-tKvu34DJ2.d.mts → index-CCGVh9BF2.d.mts} +242 -28
  103. package/dist/{index-C-myW_aK.d.mts → index-CGmcS0Ma.d.mts} +2 -2
  104. package/dist/{index-DEw90pa2.d.mts → index-CLpjm52M.d.mts} +3 -3
  105. package/dist/{index-DQWMu5fS.d.mts → index-Caig6TeF.d.mts} +85 -99
  106. package/dist/{index-DwCA1HWa.d.mts → index-CelJCBjk.d.mts} +15 -15
  107. package/dist/{index-ESSDWIB7.d.mts → index-ChunCFu4.d.mts} +1 -1
  108. package/dist/{index-e5C62_M3.d.mts → index-Cm0dUkWL.d.mts} +819 -85
  109. package/dist/{index-N5K1NOYs.d.mts → index-CokQYGVP.d.mts} +4 -4
  110. package/dist/{index-Bigx81Kr.d.mts → index-Cs0kZXIz2.d.mts} +1 -1
  111. package/dist/{index-6lyShOoU.d.mts → index-D5d5HeWI2.d.mts} +34 -0
  112. package/dist/{index-sBob9D25.d.mts → index-D90OmGmV.d.mts} +3 -3
  113. package/dist/{index-D1T-PPqF.d.mts → index-D9MwJ2Q8.d.mts} +3 -3
  114. package/dist/{index-BePI0ckL.d.mts → index-DANINzMu.d.mts} +1 -1
  115. package/dist/{index-BnSQE7z7.d.mts → index-DBw-89vC2.d.mts} +129 -1332
  116. package/dist/{index-C_kS2aqV2.d.mts → index-DGBu6bHi2.d.mts} +14 -14
  117. package/dist/index-DKC62dY5.d.mts +146 -0
  118. package/dist/{index-7sXlairn2.d.mts → index-DKia0MX1.d.mts} +1 -1
  119. package/dist/{index-E8d_RwaF.d.mts → index-DMKnON5s.d.mts} +1 -1
  120. package/dist/{index-Cq8B7cwK.d.mts → index-DUaw0Dw8.d.mts} +1524 -369
  121. package/dist/{index-Dd5s4MSm.d.mts → index-De3kPhlN.d.mts} +2 -2
  122. package/dist/{index-DGTFJB_8.d.mts → index-L4GjJDKb.d.mts} +116 -23
  123. package/dist/{index-iID2R9G1.d.mts → index-U-A8eyGT.d.mts} +7 -7
  124. package/dist/{index-D7T8XCku.d.mts → index-eemAKwsB.d.mts} +23 -2
  125. package/dist/{index-BXP9GK5q.d.mts → index-mNec7V-9.d.mts} +27 -27
  126. package/dist/{index-CnZOKNjU.d.mts → index-soFznFCy2.d.mts} +2 -2
  127. package/dist/{index-Ch3ph52M2.d.mts → index-vtXJuwrz.d.mts} +2 -2
  128. package/dist/{index-BnNqbx2I.d.mts → index-x_lVDp_J.d.mts} +2 -2
  129. package/dist/json-value-CmhSGMLv.mjs +1 -0
  130. package/dist/kernel/cli/index.d.mts +4 -2
  131. package/dist/kernel/cli/index.mjs +1 -1
  132. package/dist/kernel/cli/schemas.d.mts +1 -0
  133. package/dist/kernel/cli/schemas.mjs +1 -1
  134. package/dist/kernel/extension/index.d.mts +1 -1
  135. package/dist/kernel/extension/index.mjs +1 -1
  136. package/dist/kernel/index.d.mts +5 -5
  137. package/dist/kernel/index.mjs +1 -1
  138. package/dist/kernel/namespace/index.d.mts +1 -1
  139. package/dist/kernel/namespace/index.mjs +1 -1
  140. package/dist/kernel/observability/index.d.mts +1 -1
  141. package/dist/kernel/observability/index.mjs +1 -1
  142. package/dist/kernel/providers/index.d.mts +1 -1
  143. package/dist/kernel/providers/index.mjs +1 -1
  144. package/dist/kernel/window/index.d.mts +1 -1
  145. package/dist/kernel/window/index.mjs +1 -1
  146. package/dist/materialization-CuUBu4XI.mjs +1 -0
  147. package/dist/{namespace-BpIE-jQW.d.mts → namespace-5QQqbF-B.d.mts} +1018 -111
  148. package/dist/{namespace-DwCyOaZn2.d.mts → namespace-BM7Djng9.d.mts} +3 -3
  149. package/dist/namespace-BwzZJqTV.mjs +1 -0
  150. package/dist/{namespace-DZcuLwEA.d.mts → namespace-CTm3nEvh.d.mts} +1 -1
  151. package/dist/{namespace-BK2erxpV.d.mts → namespace-CaaNnKcR.d.mts} +3 -3
  152. package/dist/{namespace-GLGGcWPH.d.mts → namespace-CaoZ3S78.d.mts} +1 -1
  153. package/dist/{namespace-DXnMk3U8.d.mts → namespace-CxhsoFUP.d.mts} +27 -31
  154. package/dist/{namespace-B1E57soL.d.mts → namespace-DD8Oiqo7.d.mts} +23 -23
  155. package/dist/{namespace-BCRNwPnw.d.mts → namespace-DLovh2Ws.d.mts} +21 -21
  156. package/dist/{namespace-Ysg1N6rR.d.mts → namespace-DgqkaOVu.d.mts} +26 -25
  157. package/dist/{namespace-B5ZCshBw.d.mts → namespace-Dr8K0MCp.d.mts} +82 -81
  158. package/dist/{namespace-DGMO2E8f.mjs → namespace-DuXK5AYN.mjs} +1 -1
  159. package/dist/{namespace-ZbthBQVt.d.mts → namespace-EQniz-Aw.d.mts} +14 -14
  160. package/dist/{namespace-C54Oj025.d.mts → namespace-IV1QK__V.d.mts} +1 -1
  161. package/dist/{namespace-BKrV_2gZ.d.mts → namespace-TyiTsLFv.d.mts} +46 -45
  162. package/dist/{namespace-OwAf1Brw.mjs → namespace-xcmbQlxh.mjs} +1 -1
  163. package/dist/{native-session-supervisor-zPt624Tp.mjs → native-session-supervisor-B1TnaPUF.mjs} +1 -1
  164. package/dist/node/bus-server/index.d.mts +1 -1
  165. package/dist/node/bus-server/index.mjs +1 -1
  166. package/dist/node/bus-server/server-lifecycle.d.mts +1 -1
  167. package/dist/node/bus-server/server-lifecycle.mjs +1 -1
  168. package/dist/node/machine-identity/index.mjs +2 -2
  169. package/dist/node/transports/index.d.mts +200 -7
  170. package/dist/node/transports/index.mjs +2 -2
  171. package/dist/{orchestrator-shared-D2txLAUs.mjs → orchestrator-shared-CIDiFJMD.mjs} +1 -1
  172. package/dist/{orchestrator-shared-DrjtTXYh.d.mts → orchestrator-shared-Dfa7FMyw.d.mts} +5 -5
  173. package/dist/package-DKVlsMP3.mjs +1 -0
  174. package/dist/{profile-Cq4A7kQa.mjs → profile-6ynCD5k3.mjs} +1 -1
  175. package/dist/{provider-context-BB4eD8ON.mjs → provider-context-CK6B4X_8.mjs} +1 -1
  176. package/dist/providers/index.mjs +1 -1
  177. package/dist/{providers-namespace-CDwxY_DV.d.mts → providers-namespace-DSEpli4A.d.mts} +1 -1
  178. package/dist/{schema-B295yplx.d.mts → schema-M5YTvSAG.d.mts} +114 -2
  179. package/dist/{schema-C4iznV0q.mjs → schema-e0wU_lcV.mjs} +1 -1
  180. package/dist/{schema-introspection-DCYC47_d.mjs → schema-introspection-Dn1jWQs1.mjs} +1 -1
  181. package/dist/{schemas-C5xtVqdb.d.mts → schemas-Bd0OjRQf.d.mts} +1 -1
  182. package/dist/{schemas-Ra8pz5M-.d.mts → schemas-C46QfKzv.d.mts} +24 -28
  183. package/dist/{schemas-sshQEF3l.d.mts → schemas-CDBSjg7o.d.mts} +1 -1
  184. package/dist/schemas-CR1Rripy.mjs +1 -0
  185. package/dist/schemas-CVvwIfG4.mjs +1 -0
  186. package/dist/schemas-CaLhkkLn.mjs +1 -0
  187. package/dist/{schemas-DYqKRNju.d.mts → schemas-ClOOT1W6.d.mts} +4 -4
  188. package/dist/{schemas-BfMZAwff.d.mts → schemas-DATniTHb.d.mts} +8 -8
  189. package/dist/{schemas-BWvuaL0w.d.mts → schemas-DVF1A4DF.d.mts} +4 -4
  190. package/dist/{schemas-Di0XnnMX.d.mts → schemas-DaRSfYLf.d.mts} +1 -1
  191. package/dist/{schemas-C31qbb0s.d.mts → schemas-DiYVzG6e.d.mts} +51 -48
  192. package/dist/{schemas-KMA1efQg.d.mts → schemas-j7ivZ2HI.d.mts} +3 -3
  193. package/dist/schemas-wg_6PAdV.d.mts +153 -0
  194. package/dist/scoped-bus-04pwo1uM.mjs +1 -0
  195. package/dist/service-base/index.d.mts +1 -1
  196. package/dist/services/adapter-runtime/index.d.mts +3 -3
  197. package/dist/services/adapter-runtime/index.mjs +1 -1
  198. package/dist/services/adapter-runtime/namespace.d.mts +1 -1
  199. package/dist/services/adapter-runtime/schemas.d.mts +1 -1
  200. package/dist/services/adapter-subsystem/index.d.mts +2 -2
  201. package/dist/services/adapter-subsystem/index.mjs +1 -1
  202. package/dist/services/adapter-subsystem/namespace.d.mts +1 -1
  203. package/dist/services/adapter-subsystem/namespace.mjs +1 -1
  204. package/dist/services/agent-runtime/index.d.mts +2 -2
  205. package/dist/services/agent-runtime/namespace.d.mts +1 -1
  206. package/dist/services/agent-runtime/schemas.d.mts +1 -1
  207. package/dist/services/capability/index.d.mts +1 -1
  208. package/dist/services/capability/index.mjs +1 -1
  209. package/dist/services/cli-detection/namespace.d.mts +1 -1
  210. package/dist/services/codebase/index.d.mts +2 -2
  211. package/dist/services/codebase/namespace.d.mts +1 -1
  212. package/dist/services/codebase/schemas.d.mts +1 -1
  213. package/dist/services/compression/index.d.mts +2 -2
  214. package/dist/services/compression/namespace.d.mts +1 -1
  215. package/dist/services/compression/schemas.d.mts +1 -1
  216. package/dist/services/context-rules/index.d.mts +4 -4
  217. package/dist/services/context-rules/index.mjs +1 -1
  218. package/dist/services/credential-change/index.d.mts +1 -1
  219. package/dist/services/definition/namespace.d.mts +1 -1
  220. package/dist/services/definition/schemas.d.mts +1 -1
  221. package/dist/services/dialog/namespace.d.mts +1 -1
  222. package/dist/services/dialog/schemas.d.mts +1 -1
  223. package/dist/services/execution-target/index.d.mts +4 -4
  224. package/dist/services/execution-target/index.mjs +1 -1
  225. package/dist/services/execution-target/namespace.d.mts +1 -1
  226. package/dist/services/execution-target/schemas.d.mts +1 -1
  227. package/dist/services/execution-target/schemas.mjs +1 -1
  228. package/dist/services/filesystem/index.d.mts +3 -0
  229. package/dist/services/filesystem/index.mjs +1 -0
  230. package/dist/services/filesystem/namespace.d.mts +7 -7
  231. package/dist/services/filesystem/schemas.d.mts +4 -4
  232. package/dist/services/git/namespace.d.mts +1163 -0
  233. package/dist/services/git/namespace.mjs +1 -0
  234. package/dist/services/git/schemas.d.mts +932 -0
  235. package/dist/services/git/schemas.mjs +1 -0
  236. package/dist/services/harness/index.d.mts +35 -35
  237. package/dist/services/harness/index.mjs +1 -1
  238. package/dist/services/harness/storage/schema.d.mts +5 -5
  239. package/dist/services/index.d.mts +1411 -928
  240. package/dist/services/index.mjs +1 -1
  241. package/dist/services/local-notification/index.d.mts +1 -1
  242. package/dist/services/local-notification/namespace.d.mts +1 -1
  243. package/dist/services/local-notification/schemas.d.mts +1 -1
  244. package/dist/services/log-import/browser.d.mts +2 -2
  245. package/dist/services/log-import/index.d.mts +23 -24
  246. package/dist/services/log-import/index.mjs +2 -2
  247. package/dist/services/log-import/log-import.d.mts +1 -1
  248. package/dist/services/log-import/log-import.mjs +1 -1
  249. package/dist/services/log-import/namespace.d.mts +1 -1
  250. package/dist/services/log-import/namespace.mjs +1 -1
  251. package/dist/services/log-import/schemas.d.mts +1 -1
  252. package/dist/services/log-import/schemas.mjs +1 -1
  253. package/dist/services/model-registry/index.d.mts +1 -1
  254. package/dist/services/model-registry/index.mjs +1 -1
  255. package/dist/services/preferences/index.d.mts +2 -2
  256. package/dist/services/preferences/schemas.d.mts +1 -1
  257. package/dist/services/preferences/storage-namespace.d.mts +2 -2
  258. package/dist/services/provider-context/index.d.mts +1 -1
  259. package/dist/services/provider-context/index.mjs +1 -1
  260. package/dist/services/provider-runtime/index.d.mts +1 -1
  261. package/dist/services/provider-runtime/index.mjs +1 -1
  262. package/dist/services/session/handlers/index.d.mts +1 -1
  263. package/dist/services/session/handlers/index.mjs +1 -1
  264. package/dist/services/session/index.d.mts +10 -10
  265. package/dist/services/session/index.mjs +1 -1
  266. package/dist/services/session/messages/namespace.d.mts +1 -1
  267. package/dist/services/session/messages/namespace.mjs +1 -1
  268. package/dist/services/session/orchestrator-testing/index.d.mts +1 -1
  269. package/dist/services/session/orchestrator-testing/index.mjs +1 -1
  270. package/dist/services/session/session-events/namespace.d.mts +1 -1
  271. package/dist/services/session/session-events/namespace.mjs +1 -1
  272. package/dist/services/session/storage/namespace.d.mts +1 -1
  273. package/dist/services/session/storage/schema.d.mts +1 -1
  274. package/dist/services/session/storage/schema.mjs +1 -1
  275. package/dist/services/session/testing/index.d.mts +2 -2
  276. package/dist/services/session/testing/index.mjs +16 -3
  277. package/dist/services/session/testing/orchestrator-shared.d.mts +1 -1
  278. package/dist/services/session/testing/orchestrator-shared.mjs +1 -1
  279. package/dist/services/session/turns/namespace.d.mts +1 -1
  280. package/dist/services/session/turns/namespace.mjs +1 -1
  281. package/dist/services/session-editor/index.d.mts +3 -3
  282. package/dist/services/session-editor/index.mjs +1 -1
  283. package/dist/services/settings/index.d.mts +4 -4
  284. package/dist/services/settings/index.mjs +1 -1
  285. package/dist/services/settings/namespace.d.mts +19 -18
  286. package/dist/services/settings/namespace.mjs +1 -1
  287. package/dist/services/settings/storage/clients-namespace.d.mts +1 -1
  288. package/dist/services/settings/storage/clients-namespace.mjs +1 -1
  289. package/dist/services/settings/storage/extension-configs/namespace.d.mts +4 -4
  290. package/dist/services/settings/storage/index.d.mts +3 -3
  291. package/dist/services/settings/storage/index.mjs +1 -1
  292. package/dist/services/settings/storage/providers-namespace.d.mts +1 -1
  293. package/dist/services/settings/storage/providers-namespace.mjs +1 -1
  294. package/dist/services/subagent/index.d.mts +2 -0
  295. package/dist/services/subagent/index.mjs +1 -0
  296. package/dist/services/subagent-template/index.d.mts +3 -0
  297. package/dist/services/subagent-template/index.mjs +1 -0
  298. package/dist/services/subagent-template/namespace.d.mts +2 -0
  299. package/dist/services/subagent-template/namespace.mjs +1 -0
  300. package/dist/services/subagent-template/schemas.d.mts +2 -0
  301. package/dist/services/subagent-template/schemas.mjs +1 -0
  302. package/dist/services/tool-approval/index.d.mts +1 -1
  303. package/dist/services/tool-approval/index.mjs +1 -1
  304. package/dist/services/tools/index.d.mts +1 -1
  305. package/dist/services/tools/index.mjs +1 -1
  306. package/dist/services/tray-menu/index.d.mts +3 -3
  307. package/dist/services/tray-menu/index.mjs +1 -1
  308. package/dist/services/tray-menu/namespace.d.mts +1 -1
  309. package/dist/services/tray-menu/schemas.d.mts +1 -1
  310. package/dist/services/turn/index.d.mts +1 -1
  311. package/dist/services/turn/namespace.d.mts +1 -1
  312. package/dist/services/turn/schemas.d.mts +12 -12
  313. package/dist/session-BoldSdNZ2.mjs +134 -0
  314. package/dist/session-DuVOYctZ.mjs +1 -0
  315. package/dist/{session-lineage-B0cpHfuc.d.mts → session-lineage-CRsc9g1x.d.mts} +1 -1
  316. package/dist/shared-DpOEfD8F.mjs +1 -0
  317. package/dist/{skill-20_SBXaI.mjs → skill-CQO4mDqK.mjs} +1 -1
  318. package/dist/storage/drizzle/client.d.mts +2 -2
  319. package/dist/storage/drizzle/client.mjs +1 -1
  320. package/dist/storage/drizzle/index.d.mts +49 -10
  321. package/dist/storage/drizzle/index.mjs +1 -1
  322. package/dist/storage/handlers/drizzle/index.d.mts +1 -1
  323. package/dist/storage/handlers/drizzle/index.mjs +1 -1
  324. package/dist/storage/handlers/index.d.mts +2 -2
  325. package/dist/storage/handlers/index.mjs +1 -1
  326. package/dist/storage/index.d.mts +4 -4
  327. package/dist/{storage-namespace-DoH-Wkjp.d.mts → storage-namespace-BXkoh5Sy.d.mts} +11 -11
  328. package/dist/storage-namespace-DWsYLAXa.mjs +1 -0
  329. package/dist/{storage-namespace-definition-CJgqyXH1.d.mts → storage-namespace-definition-Bkx5rSto.d.mts} +1 -1
  330. package/dist/style.css +540 -540
  331. package/dist/telemetry-CvdLBWuk.mjs +1 -0
  332. package/dist/testing/drizzle-harness.mjs +1 -1
  333. package/dist/testing/index.mjs +1 -1
  334. package/dist/tool-approval-service-BvZWhYZp.mjs +1 -0
  335. package/dist/tools/index.d.mts +20 -10
  336. package/dist/tools/index.mjs +1 -1
  337. package/dist/tools/testing/index.d.mts +1 -1
  338. package/dist/tools-D-luYcDw.mjs +1431 -0
  339. package/dist/{types-C11LvekX.d.mts → types-BCMUtBj1.d.mts} +117 -20
  340. package/dist/{types-vNpkAe4Y.d.mts → types-C2Ob9zz_.d.mts} +1 -1
  341. package/dist/{types-t295YC6T.d.mts → types-CCdqjeuH.d.mts} +2 -2
  342. package/dist/{types-Cvrj2ogm.d.mts → types-DZHvOc_Q.d.mts} +4 -4
  343. package/dist/{types--nrtGZ1V.d.mts → types-Dy3YTcTF.d.mts} +255 -97
  344. package/dist/{types-DYF5LxZY.d.mts → types-MfJZ67e9.d.mts} +91 -9
  345. package/dist/{types-6WxLfoM3.d.mts → types-dyP-bXXE.d.mts} +1 -1
  346. package/dist/ui-components/index.mjs +2 -2
  347. package/dist/ui-hooks/index.d.mts +111 -1
  348. package/dist/ui-hooks/index.mjs +1 -1
  349. package/dist/ui-kernel/index.d.mts +4 -4
  350. package/dist/ui-kernel/pages/namespace.d.mts +4 -4
  351. package/dist/ui-kernel/pages/schemas.d.mts +1 -1
  352. package/dist/ui-views/index.mjs +2 -2
  353. package/dist/utils/index.d.mts +36 -1
  354. package/dist/utils/index.mjs +2 -2
  355. package/dist/utils/project-manifest.d.mts +130 -0
  356. package/dist/utils/project-manifest.mjs +1 -0
  357. package/dist/utils/scope-paths.d.mts +33 -0
  358. package/dist/utils/scope-paths.mjs +1 -0
  359. package/dist/utils/workspace-packages.d.mts +59 -0
  360. package/dist/utils/workspace-packages.mjs +1 -0
  361. package/dist/utils/workspace-root.d.mts +6 -9
  362. package/dist/utils/workspace-root.mjs +1 -1
  363. package/dist/{version-D8S4O22A.mjs → version-BeT3ASEe.mjs} +1 -1
  364. package/package.json +55 -2
  365. package/dist/account-identity-Bg_vKkcs.mjs +0 -1
  366. package/dist/adapter-CpF2aK_-.mjs +0 -1
  367. package/dist/bus-B1seC4M_.mjs +0 -2
  368. package/dist/chunk-Dc06z0qk.mjs +0 -1
  369. package/dist/client-DMWXCWhM.mjs +0 -1
  370. package/dist/cursor-storage-BoNI7OAR.mjs +0 -1
  371. package/dist/drizzle-Bn2GtW8c.mjs +0 -1
  372. package/dist/execution-target-D6MgthYs.mjs +0 -1
  373. package/dist/extension-53GerdGg.mjs +0 -1
  374. package/dist/extension-fJmv8Yri.mjs +0 -1
  375. package/dist/namespace-C_h7scWx2.mjs +0 -1
  376. package/dist/schemas-Bn8aqDIE.mjs +0 -1
  377. package/dist/services/worker/index.d.mts +0 -3
  378. package/dist/services/worker/index.mjs +0 -1
  379. package/dist/services/worker/namespace.d.mts +0 -2
  380. package/dist/services/worker/namespace.mjs +0 -1
  381. package/dist/services/worker/schemas.d.mts +0 -2
  382. package/dist/services/worker/schemas.mjs +0 -1
  383. package/dist/session-BCSf-Fgj.mjs +0 -1
  384. package/dist/session-BNo_cIiz.mjs +0 -123
  385. package/dist/shared-BhuSHZXH.mjs +0 -1
  386. package/dist/storage-namespace-BIDs9LPb.mjs +0 -1
  387. package/dist/tool-approval-service-CZCPfvVy.mjs +0 -1
  388. package/dist/tools-Cid9D99F.mjs +0 -1
  389. /package/dist/{base-orchestrator-BOAPgqF7.d.mts → base-orchestrator-wyumsn3b.d.mts} +0 -0
  390. /package/dist/{capability-service-DV32ecwR.mjs → capability-service-CJbmhfv9.mjs} +0 -0
  391. /package/dist/{cleanEnvForAdapter-hTPNvPU5.mjs → cleanEnvForAdapter-KkYzQa1f.mjs} +0 -0
  392. /package/dist/{config-namespace-wJ2CakDB.mjs → config-namespace-ncYg2ct_.mjs} +0 -0
  393. /package/dist/{extension-namespace-CTd9kOtt.mjs → extension-namespace-cMh_mMiL.mjs} +0 -0
  394. /package/dist/{identity-DBST3-XO.mjs → identity-Cz2IeEtm.mjs} +0 -0
  395. /package/dist/{index-SzSiyG61.d.mts → index-CHQ1SqT0.d.mts} +0 -0
  396. /package/dist/{model-registry-xINyxQUT.mjs → model-registry-CfXytvzx.mjs} +0 -0
  397. /package/dist/{model-registry-Dzpssh9j.mjs → model-registry-Scn_MC2d.mjs} +0 -0
  398. /package/dist/{namespace-DBw9BYr8.mjs → namespace-BoD94mrN.mjs} +0 -0
  399. /package/dist/{namespace-DUVgMfTR.mjs → namespace-CFLAmQfh.mjs} +0 -0
  400. /package/dist/{namespace-aALq9tnE.mjs → namespace-DkRgbZYn.mjs} +0 -0
  401. /package/dist/{namespace-yxIxUsjo.mjs → namespace-LViZ-EQk.mjs} +0 -0
  402. /package/dist/{namespace-Zb8HAbyF.mjs → namespace-Yna5-Pws.mjs} +0 -0
  403. /package/dist/{platform-BMFUpmTA.mjs → platform-DZ7z-wXD.mjs} +0 -0
  404. /package/dist/{providers-DhiW_fx4.mjs → providers-u8i15co9.mjs} +0 -0
  405. /package/dist/{schema-D3ZG13h9.mjs → schema-CoyE6mPt.mjs} +0 -0
  406. /package/dist/{schemas-CEBe89yE.mjs → schemas-DE-GNmSD.mjs} +0 -0
  407. /package/dist/{schemas-COnLJnt_.mjs → schemas-hSrzflwZ.mjs} +0 -0
  408. /package/dist/{schemas-CrnlCRep.mjs → schemas-jFe1AuI-.mjs} +0 -0
  409. /package/dist/{server-lifecycle-Dx5WgfoS.mjs → server-lifecycle-FXTPW39-.mjs} +0 -0
  410. /package/dist/{server-lifecycle-BC6FRn86.d.mts → server-lifecycle-YoSGFGnU.d.mts} +0 -0
  411. /package/dist/{shared-schemas-Byah36lG.mjs → shared-schemas-CPShiLNp.mjs} +0 -0
  412. /package/dist/{storage-namespace-definition-BjK9nZAN.mjs → storage-namespace-definition-CqSdsuCC.mjs} +0 -0
  413. /package/dist/{timeout-D33CUZ0M.mjs → timeout-XsYIOKrc.mjs} +0 -0
  414. /package/dist/{tray-menu-service-BAYtLdAg.mjs → tray-menu-service-DuXq5k22.mjs} +0 -0
  415. /package/dist/{ui-config-zawaoEfB.mjs → ui-config-9bDRwFZr.mjs} +0 -0
  416. /package/dist/{variant-BZWfmS0q.mjs → variant-CT6XBP6T.mjs} +0 -0
  417. /package/dist/{visibility-CZu8ooOA.mjs → visibility-Cb62p9bv.mjs} +0 -0
  418. /package/dist/{window-registry-C_IJmY8_.d.mts → window-registry-CBcrGTv4.d.mts} +0 -0
  419. /package/dist/{window-registry-B_-hBEcV.mjs → window-registry-DW-dKRjQ.mjs} +0 -0
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
2
 
3
- //#region packages/contracts/src/version/primitives.d.ts
3
+ //#region core/contracts/src/version/primitives.d.ts
4
4
  /**
5
5
  * npm semver range syntax (e.g. `">=1.0.0 <2.0.0"`, `"^1.5.0"`).
6
6
  *
@@ -37,7 +37,7 @@ declare function isUniversalRange(range: string): boolean;
37
37
  /** Validates that the string is an exact semver version. */
38
38
  declare const VersionLiteralSchema: z.ZodString;
39
39
  //#endregion
40
- //#region packages/contracts/src/client/definition.d.ts
40
+ //#region core/contracts/src/client/definition.d.ts
41
41
  /**
42
42
  * Schema for a capability annotation attached to a native client tool.
43
43
  *
@@ -91,6 +91,10 @@ type LogSourceDefinition = z.infer<typeof LogSourceDefinitionSchema>;
91
91
  declare const ClientHookEventDeclarationSchema: z.ZodObject<{
92
92
  name: z.ZodString;
93
93
  frameworkSubject: z.ZodOptional<z.ZodString>;
94
+ mode: z.ZodDefault<z.ZodEnum<{
95
+ request: "request";
96
+ event: "event";
97
+ }>>;
94
98
  }, z.core.$strip>;
95
99
  type ClientHookEventDeclaration = z.infer<typeof ClientHookEventDeclarationSchema>;
96
100
  /**
@@ -229,6 +233,10 @@ declare const ClientRuntimeCapabilitiesSchema: z.ZodObject<{
229
233
  hookEvents: z.ZodDefault<z.ZodArray<z.ZodObject<{
230
234
  name: z.ZodString;
231
235
  frameworkSubject: z.ZodOptional<z.ZodString>;
236
+ mode: z.ZodDefault<z.ZodEnum<{
237
+ request: "request";
238
+ event: "event";
239
+ }>>;
232
240
  }, z.core.$strip>>>;
233
241
  }, z.core.$strip>;
234
242
  type ClientRuntimeCapabilities = z.infer<typeof ClientRuntimeCapabilitiesSchema>;
@@ -285,8 +293,8 @@ declare const ClientDefinitionSchema: z.ZodObject<{
285
293
  }, z.core.$strip>>>;
286
294
  }, z.core.$strip>>>;
287
295
  defaultApprovalPolicy: z.ZodEnum<{
288
- "always-ask": "always-ask";
289
296
  reject: "reject";
297
+ "always-ask": "always-ask";
290
298
  "full-access": "full-access";
291
299
  }>;
292
300
  logSources: z.ZodOptional<z.ZodArray<z.ZodObject<{
@@ -304,6 +312,10 @@ declare const ClientDefinitionSchema: z.ZodObject<{
304
312
  hookEvents: z.ZodDefault<z.ZodArray<z.ZodObject<{
305
313
  name: z.ZodString;
306
314
  frameworkSubject: z.ZodOptional<z.ZodString>;
315
+ mode: z.ZodDefault<z.ZodEnum<{
316
+ request: "request";
317
+ event: "event";
318
+ }>>;
307
319
  }, z.core.$strip>>>;
308
320
  }, z.core.$strip>>, z.ZodTransform<{
309
321
  supportsHooks: boolean;
@@ -312,6 +324,7 @@ declare const ClientDefinitionSchema: z.ZodObject<{
312
324
  supportsManagedBinary: boolean;
313
325
  hookEvents: {
314
326
  name: string;
327
+ mode: "request" | "event";
315
328
  frameworkSubject?: string | undefined;
316
329
  }[];
317
330
  }, {
@@ -321,6 +334,7 @@ declare const ClientDefinitionSchema: z.ZodObject<{
321
334
  supportsManagedBinary: boolean;
322
335
  hookEvents: {
323
336
  name: string;
337
+ mode: "request" | "event";
324
338
  frameworkSubject?: string | undefined;
325
339
  }[];
326
340
  } | undefined>>;
@@ -0,0 +1,60 @@
1
+ import { l as SurfaceBindingRegistration } from "./schemas-wg_6PAdV.mjs";
2
+
3
+ //#region core/contracts/src/materialization/definition.d.ts
4
+ /**
5
+ * A surface binding definition with a serializable registration record.
6
+ *
7
+ * Created by {@link defineSurfaceBinding}. The definition retains the original
8
+ * options and produces a bus-transportable {@link SurfaceBindingRegistration}
9
+ * via `toRegistration()`.
10
+ *
11
+ * The interface is intentionally opaque: only `id` is exposed directly so
12
+ * that callers have a stable, lightweight handle. All other properties are
13
+ * accessible exclusively through `toRegistration()`, keeping the contract
14
+ * aligned with the bus registration shape.
15
+ */
16
+ interface SurfaceBindingDefinition {
17
+ /** Stable identifier for this surface binding (e.g. `'github.status.field'`). */
18
+ readonly id: string;
19
+ /**
20
+ * Produces a serializable registration record suitable for bus transport.
21
+ * @returns A {@link SurfaceBindingRegistration} snapshot with `target`
22
+ * deep-cloned and all array fields copied to prevent shared-reference
23
+ * mutation.
24
+ */
25
+ readonly toRegistration: () => SurfaceBindingRegistration;
26
+ }
27
+ /**
28
+ * Options for {@link defineSurfaceBinding}.
29
+ *
30
+ * Structurally identical to {@link SurfaceBindingRegistration} — every field
31
+ * is included in the serializable registration output.
32
+ */
33
+ type DefineSurfaceBindingOptions = SurfaceBindingRegistration;
34
+ /**
35
+ * Creates a surface binding definition with a serializable registration.
36
+ *
37
+ * The returned definition exposes the `id` identifier directly and produces
38
+ * a bus-transportable {@link SurfaceBindingRegistration} via `toRegistration()`.
39
+ * The `target` object is deep-cloned via `structuredClone` (consistent with
40
+ * how {@link SurfaceBindingRegistry} clones at storage boundaries), and array
41
+ * fields (`appliesTo`) are defensively copied so callers cannot mutate the
42
+ * registration snapshot.
43
+ * @param options - Surface binding registration options including provider,
44
+ * namespace, target, and entity classes the binding applies to.
45
+ * @returns A {@link SurfaceBindingDefinition} with a `toRegistration` method.
46
+ * @example
47
+ * ```ts
48
+ * export const githubStatusFieldBinding = defineSurfaceBinding({
49
+ * id: 'github.status.field',
50
+ * provider: 'github',
51
+ * namespace: 'status',
52
+ * target: { kind: 'field', name: 'Status' },
53
+ * appliesTo: ['workpiece'],
54
+ * valueMapping: { pending: 'In Progress', completed: 'Done' },
55
+ * });
56
+ * ```
57
+ */
58
+ declare function defineSurfaceBinding(options: DefineSurfaceBindingOptions): SurfaceBindingDefinition;
59
+ //#endregion
60
+ export { defineSurfaceBinding as n, SurfaceBindingDefinition as t };
@@ -1 +1 @@
1
- import{i as e,t}from"./visibility-CZu8ooOA.mjs";import{z as n}from"zod";const r=n.enum([`anthropic`,`openai`]),i=n.object({anthropic:n.string().url(),openai:n.string().url()}).partial().refine(e=>Object.keys(e).length>0,{message:`At least one protocol endpoint must be specified`}),a=n.object({id:n.string().min(1),name:n.string().min(1),description:n.string().optional(),endpoints:i.optional(),defaultModel:n.string().optional(),fastModel:n.string().optional(),primaryTestModel:n.string().optional(),secondaryTestModel:n.string().optional(),availableModels:n.array(e).default([]),defaultModelFilterMode:t.optional(),credentialEnvVars:n.record(n.string(),n.string()).optional()});export{r as n,a as r,i as t};
1
+ import{i as e,t}from"./visibility-Cb62p9bv.mjs";import{z as n}from"zod";const r=n.enum([`anthropic`,`openai`]),i=n.object({anthropic:n.string().url(),openai:n.string().url()}).partial().refine(e=>Object.keys(e).length>0,{message:`At least one protocol endpoint must be specified`}),a=n.object({id:n.string().min(1),name:n.string().min(1),description:n.string().optional(),endpoints:i.optional(),defaultModel:n.string().optional(),fastModel:n.string().optional(),primaryTestModel:n.string().optional(),secondaryTestModel:n.string().optional(),availableModels:n.array(e).default([]),defaultModelFilterMode:t.optional(),credentialEnvVars:n.record(n.string(),n.string()).optional()});export{r as n,a as r,i as t};
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
2
 
3
- //#region packages/contracts/src/provider/definition.d.ts
3
+ //#region core/contracts/src/provider/definition.d.ts
4
4
  /**
5
5
  * Wire protocol identifiers supported by Makaio adapters.
6
6
  *
@@ -0,0 +1 @@
1
+ import{and as e,eq as t,getTableColumns as n,inArray as r,sql as i}from"drizzle-orm";import{didAffectRows as a}from"@makaio/framework/storage/drizzle";function o(e,t){return{[e]:t}}function s(e,t,r){let i=n(e);if(!r)return i[t];let a=r(e);if(a.length===0)throw Error(`createDrizzleCrudHandlers: conflictTarget returned an empty array. Provide at least one column for the conflict target.`);return a}function c(e,r,i){let{table:a,idField:s,singularKey:c,mapper:l,getSubject:u}=i;return e.on(u,async e=>{let{id:i}=e.payload,u=n(a)[s],[d]=await r.select().from(a).where(t(u,i)).limit(1);e.setResult(o(c,d?l(d):null))})}function l(e,r,a){let{table:o,idField:s,singularKey:c,mapper:l,toDbValues:u,setSubject:d,resolvedConflictTarget:f,lifecycle:p}=a;return e.on(d,async a=>{let d=a.payload[c],m=d[s],h=Date.now(),g=n(o),_=u(d),v={..._,[s]:m,createdAt:h,updatedAt:h};if(!p){await r.insert(o).values(v).onConflictDoUpdate({target:f,set:{..._,[s]:m,updatedAt:h,createdAt:i`COALESCE(${g.createdAt}, excluded.created_at)`}}),a.setResult({id:m});return}let y=await r.insert(o).values(v).onConflictDoNothing({target:f}).returning();if(y.length>0){await e.emit(p.created,l(y[0])),a.setResult({id:m});return}let[b]=await r.update(o).set({..._,updatedAt:h}).where(t(g[s],m)).returning();b&&await e.emit(p.updated,l(b)),a.setResult({id:m})})}function u(e,r,i){let{table:o,idField:s,deleteSubject:c}=i;return e.on(c,async e=>{let{id:i}=e.payload,c=n(o)[s],l=await r.delete(o).where(t(c,i));e.setResult({deleted:a(l)})})}function d(e,r,i){let{table:a,idField:o,singularKey:s,getSubject:c,deleteSubject:l,lifecycle:u}=i;return e.on(l,async i=>{let{id:l}=i.payload,d=n(a)[o],[f]=await r.select({id:d}).from(a).where(t(d,l)).limit(1);await i.next(),f&&((await e.request(c,{id:l}))[s]||await e.emit(u.deleted,{id:l}))})}function f(e){if(e.conflictTarget&&e.lifecycle)throw Error(`createDrizzleCrudHandlers: conflictTarget is not yet compatible with lifecycle events. The lifecycle path uses a PK-based UPDATE fallback that cannot resolve rows by natural key.`);let{table:t,subjects:n,idField:r,singularKey:i,mapper:a,toDbValues:o,conflictTarget:f,lifecycle:p}=e,m=s(t,r,f);return(e,s)=>{let f=[];return f.push(c(e,s,{table:t,idField:r,singularKey:i,mapper:a,getSubject:n.get})),f.push(l(e,s,{table:t,idField:r,singularKey:i,mapper:a,toDbValues:o,setSubject:n.set,resolvedConflictTarget:m,lifecycle:p})),p&&f.push(d(e,s,{table:t,idField:r,singularKey:i,getSubject:n.get,deleteSubject:n.delete,lifecycle:p})),f.push(u(e,s,{table:t,idField:r,deleteSubject:n.delete})),()=>f.forEach(e=>e())}}function p(t){let{table:n,subject:r,pluralKey:i,mapper:a,buildPredicates:o}=t;return(t,s)=>{let c=(e,t)=>({[e]:t});return t.on(r,async t=>{let r=o(t.payload,n),l=r.length>0?e(...r):void 0,u=l?await s.select().from(n).where(l):await s.select().from(n);t.setResult(c(i,u.map(a)))})}}function m(e,n){return n?[r(e.scope,[`default`,n])]:[t(e.scope,`default`)]}export{p as n,f as r,m as t};
@@ -0,0 +1 @@
1
+ import{z as e}from"zod";const t=e.object({repoPath:e.string().optional()}),n=e.object({path:e.string()}),r=e.object({root:e.string().nullable()}),ee=t,i=e.object({current:e.string(),isDetached:e.boolean()}),a=t.extend({ref:e.string().optional()}),o=e.object({hash:e.string(),message:e.string(),author:e.string(),email:e.string(),date:e.string()}),s=t.extend({hash:e.string()}),c=e.object({path:e.string(),oldPath:e.string().optional(),status:e.string(),additions:e.number(),deletions:e.number()}),l=e.object({totalAdditions:e.number(),totalDeletions:e.number(),changedFiles:e.number()}),u=e.object({files:e.array(c),stats:l}),d=t,f=e.object({path:e.string(),oldPath:e.string().optional(),additions:e.number(),deletions:e.number()}),te=e.object({staged:e.array(f),unstaged:e.array(f),untracked:e.array(f),conflicted:e.array(f),stats:l}),ne=t,re=e.object({staged:e.array(e.string()),modified:e.array(e.string()),untracked:e.array(e.string()),conflicted:e.array(e.string())}),p=t,m=e.object({path:e.string(),branch:e.string(),commit:e.string(),isMain:e.boolean()}),h=e.object({worktrees:e.array(m)}),g=t,_=e.object({name:e.string(),fetchUrl:e.string(),pushUrl:e.string()}),v=e.object({remotes:e.array(_)}),y=t,b=e.object({branch:e.string()}),x=e.object({branches:e.array(e.string()).optional(),branchMode:e.enum([`all`,`specific`]).optional(),baseBranch:e.string().optional(),paths:e.array(e.string()).optional(),author:e.string().optional(),since:e.string().optional(),until:e.string().optional(),searchQuery:e.string().optional(),selectedWorktree:e.string().optional()}),S=t.extend({limit:e.number().min(1).max(1e4).optional(),ref:e.string().optional(),filters:x.optional()}),C=e.object({hash:e.string(),shortHash:e.string(),message:e.string(),author:e.string(),email:e.string(),date:e.string(),parents:e.array(e.string())}),w=e.object({branches:e.record(e.string(),e.string()),remoteBranches:e.record(e.string(),e.string()),tags:e.record(e.string(),e.string()),HEAD:e.string()}),T=e.object({commits:e.array(C),refs:w,truncated:e.boolean()}),E=t.extend({path:e.string(),ref:e.string()}),D=e.object({content:e.string(),isBinary:e.boolean()}),O=t.extend({ref:e.string().optional(),staged:e.boolean().optional(),unified:e.number().int().min(0).max(10).optional(),paths:e.array(e.string()).optional()}),k=e.object({diff:e.string()}),A=e.object({branchName:e.string(),repoPath:e.string().optional()}),j=e.object({commitHashes:e.array(e.string())}),M=e.object({repoPath:e.string().optional(),worktreePath:e.string()}),N=e.object({success:e.boolean(),error:e.string().optional()}),P=e.object({repoPath:e.string().optional(),path:e.string(),ref:e.string().optional()}),F=e.object({startLine:e.number(),endLine:e.number(),shortHash:e.string(),hash:e.string(),author:e.string(),date:e.string(),message:e.string()}),I=e.object({content:e.string(),lines:e.array(F)}),L=t.extend({filePath:e.string(),commitHash:e.string()}),R=e.object({content:e.string().nullable(),isBinary:e.boolean()}),z=t.extend({filePath:e.string(),commitHash:e.string()}),B=e.object({blobHash:e.string().nullable()}),V=e.object({repoPath:e.string(),include:e.array(e.string()),exclude:e.array(e.string()),worktree:e.string().optional()}),H=e.object({hash:e.string(),commitSha:e.string(),changedPaths:e.array(e.string()),timestamp:e.string()}),U=e.object({repoPath:e.string().optional(),message:e.string().min(1),allowEmpty:e.boolean().optional(),amend:e.boolean().optional()}),W=e.object({success:e.boolean(),hash:e.string().optional(),branch:e.string().optional(),error:e.string().optional()}),G=e.enum([`merge`,`squash`,`fast-forward-only`]),K=e.object({repoPath:e.string().optional(),source:e.string(),approach:G.optional(),message:e.string().optional(),abortOnConflict:e.boolean().optional()}),q=e.object({success:e.boolean(),hash:e.string().optional(),fastForward:e.boolean().optional(),conflicts:e.array(e.string()).optional(),error:e.string().optional()}),J=e.object({repoPath:e.string().optional()}),Y=e.object({success:e.boolean(),error:e.string().optional()}),X=e.object({repoPath:e.string().optional(),onto:e.string(),abort:e.boolean().optional(),continueRebase:e.boolean().optional()}),ie=e.object({success:e.boolean(),hash:e.string().optional(),conflicts:e.array(e.string()).optional(),error:e.string().optional()}),Z=e.enum([`push`,`pop`,`apply`,`drop`,`list`]),ae=e.object({repoPath:e.string().optional(),operation:Z,message:e.string().optional(),includeUntracked:e.boolean().optional(),index:e.number().int().min(0).optional()}),Q=e.object({index:e.number(),message:e.string(),branch:e.string(),date:e.string()}),oe=e.object({success:e.boolean(),entries:e.array(Q).optional(),error:e.string().optional()}),se=e.object({repoPath:e.string().optional(),name:e.string(),startPoint:e.string().optional(),checkout:e.boolean().optional()}),ce=e.object({success:e.boolean(),name:e.string().optional(),error:e.string().optional()}),le=e.object({repoPath:e.string().optional(),name:e.string(),force:e.boolean().optional()}),ue=e.object({success:e.boolean(),error:e.string().optional()}),de=e.object({repoPath:e.string().optional(),oldName:e.string(),newName:e.string()}),fe=e.object({success:e.boolean(),error:e.string().optional()}),pe=e.object({repoPath:e.string().optional(),ref:e.string(),createBranch:e.boolean().optional(),startPoint:e.string().optional()}),me=e.object({success:e.boolean(),ref:e.string().optional(),error:e.string().optional()}),he=e.object({repoPath:e.string().optional(),remote:e.string().optional(),branch:e.string().optional(),setUpstream:e.boolean().optional(),force:e.boolean().optional()}),ge=e.object({success:e.boolean(),remote:e.string().optional(),branch:e.string().optional(),error:e.string().optional()}),_e=e.object({repoPath:e.string().optional(),remote:e.string().optional(),branch:e.string().optional(),rebase:e.boolean().optional()}),ve=e.object({success:e.boolean(),conflicts:e.array(e.string()).optional(),error:e.string().optional()}),ye=e.object({repoPath:e.string().optional(),remote:e.string().optional(),prune:e.boolean().optional()}),be=e.object({success:e.boolean(),error:e.string().optional()}),xe=e.object({repoPath:e.string().optional(),paths:e.array(e.string()).min(1)}),Se=e.object({success:e.boolean(),error:e.string().optional()}),Ce=e.object({repoPath:e.string(),hash:e.string(),message:e.string(),author:e.string(),email:e.string(),branch:e.string(),timestamp:e.string(),worktree:e.string().optional()}),we=e.object({repoPath:e.string(),previousBranch:e.string().optional(),currentBranch:e.string(),timestamp:e.string(),worktree:e.string().optional()}),Te=e.object({repoPath:e.string(),staged:e.array(e.string()),timestamp:e.string(),worktree:e.string().optional()}),Ee=e.object({repoPath:e.string(),sourceBranch:e.string(),targetBranch:e.string(),mergeCommit:e.string(),timestamp:e.string(),worktree:e.string().optional()}),$=e.enum([`started`,`completed`,`aborted`]),De=e.object({repoPath:e.string(),branch:e.string(),onto:e.string(),status:$,timestamp:e.string(),worktree:e.string().optional()}),Oe=e.object({repoPath:e.string(),name:e.string(),path:e.string(),branch:e.string(),event:e.enum([`added`,`removed`]),timestamp:e.string()}),ke=e.object({repoPath:e.string()}),Ae=e.object({success:e.boolean(),error:e.string().optional()}),je=e.object({repoPath:e.string()}),Me=e.object({success:e.boolean()}),Ne=e.object({path:e.string(),defaultBranch:e.string().optional()}),Pe=e.object({success:e.boolean(),path:e.string(),defaultBranch:e.string()}),Fe=e.object({repoPath:e.string(),path:e.string(),branch:e.string(),baseBranch:e.string().optional(),createBranch:e.boolean().optional()}),Ie=e.object({success:e.boolean(),path:e.string(),branch:e.string(),error:e.string().optional()}),Le=e.object({repoPath:e.string(),path:e.string(),force:e.boolean().optional(),deleteBranch:e.boolean().optional()}),Re=e.object({success:e.boolean(),error:e.string().optional()}),ze=e.object({repoPath:e.string().optional(),paths:e.array(e.string()).min(1)}),Be=e.object({success:e.boolean(),error:e.string().optional()}),Ve=e.object({repoPath:e.string().optional(),paths:e.array(e.string()).min(1)}),He=e.object({success:e.boolean(),error:e.string().optional()});export{j as $,le as A,v as At,ve as B,m as Bt,Y as C,C as Ct,ce as D,w as Dt,se as E,T as Et,be as F,M as Ft,de as G,ge as H,h as Ht,G as I,N as It,Z as J,fe as K,K as L,d as Lt,xe as M,r as Mt,Se as N,ne as Nt,U as O,_ as Ot,ye as P,re as Pt,A as Q,q as R,te as Rt,J as S,H as St,me as T,S as Tt,X as U,he as V,p as Vt,ie as W,oe as X,ae as Y,t as Z,Be as _,R as _t,Fe as a,ee as at,He as b,c as bt,Pe as c,s as ct,$ as d,o as dt,F as et,je as f,y as ft,ze as g,L as gt,Re as h,k as ht,Ce as i,B as it,ue as j,n as jt,W as k,g as kt,Ee as l,u as lt,Le as m,O as mt,Ae as n,I as nt,Ie as o,i as ot,Me as p,b as pt,Q as q,we as r,z as rt,Ne as s,l as st,ke as t,P as tt,De as u,a as ut,Te as v,E as vt,pe as w,x as wt,Oe as x,V as xt,Ve as y,D as yt,_e as z,f as zt};
@@ -0,0 +1 @@
1
+ import"./services/execution-target/schemas.mjs";import"./services/execution-target/namespace.mjs";import{z as e}from"zod";import{createBusNamespace as t}from"@makaio/framework/core";const n=e.object({busAuthSecret:e.string().optional(),relayPeer:e.object({id:e.string().min(1),signingPublicKey:e.string().min(1)}).optional(),relayIdentity:e.object({id:e.string().min(1),signingPublicKey:e.string().min(1),signingPrivateKeyPem:e.string().min(1)}).optional(),gitToken:e.string().optional(),credentialEnv:e.record(e.string(),e.string()).optional(),providerEnv:e.record(e.string(),e.string()).optional()}),r=e.enum([`simple`,`full`]),i=e.enum([`created`,`running`,`stopped`,`destroyed`]),a=e.object({sessionId:e.string(),executionId:e.string().optional(),adapter:e.string(),runtime:r.default(`simple`),image:e.string().optional(),env:e.record(e.string(),e.string()).optional(),bootstrapConfig:n.optional()}),o=a.extend({mode:e.literal(`container-local`),repoPath:e.string(),baseBranch:e.string(),worktreeBranch:e.string().optional()}),s=a.extend({mode:e.literal(`container-isolated`),repoUrl:e.string(),branch:e.string().optional(),busMode:e.enum([`host`,`relay`]),relayUrl:e.string().optional()}),c=e.discriminatedUnion(`mode`,[o,s]),l=e.object({containerId:e.string(),worktreePath:e.string().optional(),worktreeBranch:e.string().optional()}),u=e.object({containerId:e.string(),deleteBranch:e.boolean().default(!1)}),d=e.object({success:e.boolean()}),f=e.object({containerId:e.string()}),p=e.object({state:i,sessionId:e.string(),worktreePath:e.string().optional()}),m=e.object({containerId:e.string(),sessionId:e.string(),worktreePath:e.string().optional()}),h=e.object({containerId:e.string(),sessionId:e.string(),worktreePath:e.string().optional()}),g=e.object({containerId:e.string(),sessionId:e.string(),exitCode:e.number()}),_=e.object({containerId:e.string(),sessionId:e.string()}),v=t(`docker`,{"container.spawn":{request:c,response:l},"container.stop":{request:u,response:d},"container.status":{request:f,response:p},"container.created":m,"container.started":h,"container.stopped":g,"container.destroyed":_}),y=v.subjects,b=v,x=y;export{p as _,n as a,s as c,h as d,i as f,f as g,l as h,y as i,o as l,c as m,x as n,m as o,g as p,v as r,_ as s,b as t,r as u,u as v,d as y};
@@ -0,0 +1 @@
1
+ import{n as e}from"./window-registry-DW-dKRjQ.mjs";import{o as t,t as n}from"./schema-introspection-Dn1jWQs1.mjs";import{n as r}from"./extension-namespace-cMh_mMiL.mjs";import{z as i}from"zod";import a from"node:path";import{createBusNamespace as o}from"@makaio/framework/core";import{ProviderDefinitionSchema as s,versionSatisfies as c}from"@makaio/framework/contracts";import{ToastSubjects as l}from"@makaio/framework/contracts/toast";import{ExtensionWarningSchema as u,getExtensionWarningActionLabel as d}from"@makaio/framework/contracts/extension";import{TrayMenuSubjects as f}from"@makaio/framework/services/tray-menu";const p=i.object({name:i.string(),displayName:i.string()}),m=o(`kernel:boot`,{getState:{request:i.object({}),response:i.object({complete:i.boolean(),completedCount:i.number(),totalCount:i.number(),currentService:i.string().optional(),failedServices:i.array(i.string()),skippedServices:i.array(i.string()).default([]),totalDurationMs:i.number().optional()})},"service.starting":p,"service.ready":p.extend({durationMs:i.number().int().nonnegative()}),"service.failed":p.extend({errorMessage:i.string()}),"service.skipped":p.extend({reason:i.string()}),progress:i.object({completedCount:i.number(),totalCount:i.number(),currentService:i.string().optional()}),complete:i.object({totalDurationMs:i.number(),failedServices:i.array(i.string())})}),h=m.subjects;var g=class extends Error{reason;constructor(e){super(e),this.name=`ServiceSkipError`,this.reason=e}};function _(e){return{name:e.name,displayName:e.displayName}}var v=class{bus;state;cleanup;constructor(e,t){this.bus=e,this.state={complete:!1,completedCount:0,totalCount:t,failedServices:[],skippedServices:[],startedAt:Date.now()},this.cleanup=this.bus.on(h.getState,e=>{e.setResult({complete:this.state.complete,completedCount:this.state.completedCount,totalCount:this.state.totalCount,...this.state.currentService===void 0?{}:{currentService:this.state.currentService},failedServices:[...this.state.failedServices],skippedServices:[...this.state.skippedServices],...this.state.totalDurationMs===void 0?{}:{totalDurationMs:this.state.totalDurationMs}})})}dispose(){this.cleanup()}starting(e){let t=_(e);this.state.currentService=t.displayName,this.state.currentServiceStartedAt=Date.now(),this.bus.emit(h.service.starting,t).catch(e=>{console.warn(`[ExtensionCoordinator] boot.service.starting emit failed for "${t.name}":`,e)})}ready(e){let t=_(e);this.state.completedCount+=1;let n=this.state.currentServiceStartedAt===void 0?0:Math.max(0,Date.now()-this.state.currentServiceStartedAt);this.bus.emit(h.service.ready,{...t,durationMs:n}).catch(e=>{console.warn(`[ExtensionCoordinator] boot.service.ready emit failed for "${t.name}":`,e)}),this.emitProgress()}failed(e,t){let n=_(e);this.state.completedCount+=1,this.state.failedServices.push(n.name),this.bus.emit(h.service.failed,{...n,errorMessage:t}).catch(e=>{console.warn(`[ExtensionCoordinator] boot.service.failed emit failed for "${n.name}":`,e)}),this.emitProgress()}skipped(e,t){let n=_(e);this.state.completedCount+=1,this.state.skippedServices.push(n.name),this.bus.emit(h.service.skipped,{...n,reason:t}).catch(e=>{console.warn(`[ExtensionCoordinator] boot.service.skipped emit failed for "${n.name}":`,e)}),this.emitProgress()}complete(){this.state.complete=!0,delete this.state.currentService,delete this.state.currentServiceStartedAt,this.state.totalDurationMs=Date.now()-this.state.startedAt,this.bus.emit(h.complete,{totalDurationMs:this.state.totalDurationMs,failedServices:[...this.state.failedServices]}).catch(e=>{console.warn(`[ExtensionCoordinator] boot.complete emit failed:`,e)})}emitProgress(){this.bus.emit(h.progress,{completedCount:this.state.completedCount,totalCount:this.state.totalCount,...this.state.currentService===void 0?{}:{currentService:this.state.currentService}}).catch(e=>{console.warn(`[ExtensionCoordinator] boot.progress emit failed:`,e)})}};function ee(e){return{subject:`wiring.apply`,$meta:{namespace:`client:${e}`,isRequest:!0,local:!1,channel:!1,payload:{request:{},response:{}}}}}const y=`action`;function b(e,t){return`${e}:${t}`}function te(e,t,n){return e.on(l.interacted,r=>{let{toastId:i,actionId:a}=r.payload,o=b(i,a),s=t.get(o);s&&x(e,s,i,n).catch(e=>{console.error(`[ExtensionCoordinator] Warning action dispatch failed for toast "${i}":`,e)})})}async function x(e,t,n,r){switch(t.kind){case`configure-integration`:await C(e,t.clientId,n,r);break;case`open-url`:console.info(`[ExtensionCoordinator] Toast "${n}" open-url action not routable from runtime layer: ${t.url}`);break;case`run-command`:console.info(`[ExtensionCoordinator] Toast "${n}" run-command action not routable from runtime layer: ${t.command}`);break;case`install-extension`:console.info(`[ExtensionCoordinator] Toast "${n}" install-extension action not routable from runtime layer: ${t.extensionName}`);break;default:S(t)}}function S(e){throw Error(`[ExtensionCoordinator] Unsupported warning action: ${JSON.stringify(e)}`)}async function C(e,t,n,r){let i=ee(t),a=await e.requestOptional(i,{scope:`user`,makaioCommand:r});if(!a.handled){console.warn(`[ExtensionCoordinator] Toast "${n}" configure-integration: no wiring handler for client "${t}". Is the client package loaded?`);return}let{applied:o,skipped:s}=a.data;console.info(`[ExtensionCoordinator] Toast "${n}" configure-integration: wired client "${t}" — ${o} applied, ${s} skipped.`)}function w(e){return e.map(e=>({name:e.name,description:e.description,hasInteractive:!!e.interactive,subcommands:e.subcommands.map(e=>({name:e.name,description:e.description,args:n(e.schema)}))}))}async function T(e,t,n){let{command:r,subcommand:i,args:a}=e,o=t.find(e=>e.name===r);if(!o)return{exitCode:1,stdout:[],stderr:[`Unknown command: ${r}`]};let s=o.subcommands.find(e=>e.name===i);if(!s)return{exitCode:1,stdout:[],stderr:[`Unknown subcommand: ${i}`]};let c=s.schema.safeParse(a??{});if(!c.success)return{exitCode:1,stdout:[],stderr:[`Validation failed:`,...c.error.issues.map(e=>` ${e.path.join(`.`)||`(root)`}: ${e.message}`)]};if(o.beforeRun)try{let e=await o.beforeRun({subcommandName:i,args:c.data??{},bus:n});if(!e.proceed)return{exitCode:e.exitCode??1,stdout:[],stderr:[e.message]}}catch(e){return{exitCode:1,stdout:[],stderr:[`beforeRun hook failed: ${e instanceof Error?e.message:String(e)}`]}}let l=[],u=[],d={write:e=>l.push(e),error:e=>u.push(e)},f=0,p=new AbortController().signal;try{await s.handler({args:c.data,bus:n,output:d,signal:p,setExitCode:e=>{f=e}})}catch(e){f===0&&(f=1),u.push(e instanceof Error?e.message:String(e))}return{exitCode:f,stdout:l,stderr:u}}function E(e){let{pkg:t,state:n,error:r,enabled:i}=e;return{name:t.name,displayName:t.displayName,state:n,...t.surface===void 0?{}:{surface:t.surface},enabled:i,...t.browser===void 0?{}:{browser:t.browser},...r===void 0?{}:{error:r}}}function D(e){let n=[];return n.push(e.bus.on(r.list,t=>{t.setResult({extensions:e.list()})})),n.push(e.bus.on(r.get,t=>{let n=e.entries.get(t.payload.name);t.setResult({extension:n?E(n):null})})),n.push(e.bus.on(r.setEnabled,async t=>{let n=await e.handleSetEnabled(t.payload.name,t.payload.enabled);t.setResult({success:n})})),n.push(e.bus.on(r.contributions.catalog,t=>{let n=[],r=[];for(let[t,i]of e.entries)if(i.state===`active`){for(let e of i.pkg.providers??[])n.push({packageName:t,definition:s.parse(e)});for(let e of i.pkg.clients??[])r.push({packageName:t,definition:e})}t.setResult({providers:n,clients:r})})),n.push(e.bus.on(t.listContributions,t=>{t.setResult({contributions:w(e.cliContributions)})})),n.push(e.bus.on(t.execute,async t=>{t.setResult(await T(t.payload,e.cliContributions,e.bus))})),n.push(e.bus.on(r.warnings.list,t=>{let{extensionName:n}=t.payload;if(n!==void 0){let r=e.entries.get(n),i=r&&r.warnings.length>0?[{extensionName:n,warnings:[...r.warnings]}]:[];t.setResult({entries:i});return}let r=[];for(let[t,n]of e.entries)n.warnings.length>0&&r.push({extensionName:t,warnings:[...n.warnings]});t.setResult({entries:r})})),n}async function ne(e){for(let[t,n]of e.entries)n.state===`active`&&await k(e,t,n)}function re(e){if(e&&O(e))return[{id:y,label:d(e)}]}function O(e){return e.kind===`configure-integration`}function ie(e,t){let n=`${t}:`;for(let t of e.keys())t.startsWith(n)&&e.delete(t)}async function k(e,t,n){ie(e.warningActionMap,t);let r=n.warnings.filter(e=>e.severity===`degraded`);if(r.length!==0)for(let i=0;i<r.length;i++){let a=r[i];console.warn(`[${t}] ⚠ ${a.title}: ${a.message}`);let o=`${t}:${a.title}:${i}`,s=re(a.action);try{await e.bus.emit(l.show,{level:`warning`,title:a.title,message:`${n.pkg.displayName}: ${a.message}`,toastId:o,durationMs:null,...s&&{actions:s}}),a.action&&O(a.action)&&e.warningActionMap.set(b(o,y),a.action)}catch(e){console.warn(`[${t}] toast emission failed for warning "${a.title}":`,e)}}}function ae(e){return Object.freeze({extensionName:e})}function oe(e,t,n,r){if(!t)return;let i={...n??{},...r??{}};try{return t.parse(i)}catch(n){console.warn(`[ExtensionCoordinator] Config parse failed for "${e}", starting with schema defaults:`,n instanceof Error?n.message:n);try{return t.parse({})}catch{console.warn(`[ExtensionCoordinator] Fallback config parse also failed for "${e}" — config will be absent`);return}}}function A(e,t,n){let r;if(n.pkg.configSchema)try{r=e.loadConfig?.(t)}catch(e){console.error(`[ExtensionCoordinator] loadConfig threw for "${t}":`,e)}return oe(t,n.pkg.configSchema,n.configDefaults,r)}function j(e,t,n){if(!e.extensionContextBase)throw Error(`ExtensionCoordinator: extensionContextBase is required to start extensions with a create factory. Provide it via the constructor.`);return{...e.extensionContextBase,bus:e.bus,identity:t.identity,dataDir:a.join(e.extensionContextBase.makaioHome,t.identity.extensionName),getService:t=>e.getExtensionService(t.name),signal:e.signal,hasExtension:e.hasActiveExtension,...n===void 0?{}:{config:n}}}function M(e){return{adapters:!!e.adapters?.length,tools:!!e.tools,triggers:!!e.triggers,providers:!!e.providers?.length,clients:!!e.clients?.length,ui:!!e.ui,storage:!!e.storage,sessionEventActions:!!e.sessionEventActions}}function N(e,t,n){let i=t.state;t.state=n,e.emit(r.stateChanged,{name:t.pkg.name,displayName:t.pkg.displayName,from:i,to:n,...t.error===void 0?{}:{error:t.error},contributes:M(t.pkg)}).catch(e=>{console.error(`[ExtensionCoordinator] stateChanged emit failed for "${t.pkg.name}":`,e)})}async function P(e,t,n,r,i){i===`activated`?await F(e,t,n,r):await I(e,n)}async function F(e,t,n,r){let i=[];try{for(let a of e){if(a.filter&&!a.filter(r.pkg))continue;let e=j(t,r,A(t,n,r));await a.processActivated(n,r.pkg,e),i.push(a)}}catch(e){for(let e of i.reverse())if(e.processStopped)try{await e.processStopped(n)}catch(e){console.error(`[ExtensionCoordinator] Contribution processor rollback error for "${n}":`,e)}throw e}}async function I(e,t){for(let n of[...e].reverse())if(n.processStopped)try{await n.processStopped(t)}catch(e){console.error(`[ExtensionCoordinator] Contribution processor error (stopped) for "${t}":`,e)}}async function L(e,t,n){let i=e.entries.get(t);if(!i)return!1;let a=n?await R(e,t,i):await z(e,t,i),o=i.enabled===n;return!a&&!o||(await e.persistEnabled?.(t,n),!a)?!1:(e.bus.emit(r.enabledChanged,{name:t,enabled:n}).catch(e=>{console.error(`[ExtensionCoordinator] enabledChanged emit failed for "${t}":`,e)}),!0)}async function R(e,t,n){if(n.state!==`stopped`&&n.state!==`failed`&&n.state!==`skipped`)return!1;let{pkg:r}=n,i,a=(r.dependencies??[]).filter(t=>{if(t.optional)return!1;let n=e.entries.get(t.name);return!n||n.state!==`active`});if(a.length>0)return n.error=`Required dependencies not active: ${a.map(e=>e.name).join(`, `)}`,console.error(`[ExtensionCoordinator] Cannot re-enable "${t}":`,n.error),N(e.bus,n,`failed`),!1;n.enabled=!0,n.error=void 0,N(e.bus,n,`initializing`);let o=A(e,t,n);if(r.storage?.registerHandlers&&e.db!==void 0)try{let t=j(e,n,o),a=r.storage.registerHandlers(e.bus,e.db,t);typeof a==`function`&&(i=a,n.storageCleanup=a)}catch(r){return n.error=r instanceof Error?r.message:String(r),console.error(`[ExtensionCoordinator] Extension "${t}" storage re-registration failed:`,r),N(e.bus,n,`failed`),!1}if(r.create){let a;try{let t=j(e,n,o);a=await r.create(t),await a.init?.(),n.service=a}catch(r){return await B(t,a,i,n),r instanceof g?n.pkg.critical?(n.error=`Critical extension cannot skip startup: ${r.reason}`,console.error(`[ExtensionCoordinator] Extension "${t}" failed to re-initialize:`,n.error),N(e.bus,n,`failed`),!1):(n.error=r.reason,N(e.bus,n,`skipped`),!1):(n.error=r instanceof Error?r.message:String(r),console.error(`[ExtensionCoordinator] Extension "${t}" failed to re-initialize:`,r),N(e.bus,n,`failed`),!1)}}try{await P(e.contributionProcessors,e,t,n,`activated`)}catch(r){return await B(t,n.service,i,n),n.service=void 0,n.error=r instanceof Error?r.message:String(r),console.error(`[ExtensionCoordinator] Extension "${t}" contribution processing failed:`,r),N(e.bus,n,`failed`),!1}return N(e.bus,n,`active`),await e.runHealthCheck(t),await e.emitWarningsForEntry(t,n),!0}async function z(e,t,n){if(n.state!==`active`)return!1;let i=Array.from(e.entries.entries()).filter(([e,n])=>e===t||n.state!==`active`?!1:n.pkg.dependencies?.some(e=>!e.optional&&e.name===t)??!1).map(([e])=>e);if(i.length>0)return n.error=`Cannot disable "${t}" while active dependents remain: ${i.join(`, `)}`,console.error(`[ExtensionCoordinator] ${n.error}`),!1;if(n.enabled=!1,n.error=void 0,await P(e.contributionProcessors,e,t,n,`stopped`),n.service)try{await n.service.destroy?.()}catch(e){console.error(`[ExtensionCoordinator] Error during disable destroy of "${t}":`,e)}finally{n.service=void 0}if(n.storageCleanup)try{n.storageCleanup()}catch(e){console.error(`[ExtensionCoordinator] Storage cleanup error during disable of "${t}":`,e)}finally{n.storageCleanup=void 0}N(e.bus,n,`stopped`),n.warnings=[];try{await e.bus.emit(r.warnings.changed,{extensionName:t,warnings:[]})}catch(e){console.error(`[ExtensionCoordinator] warnings.changed emit failed for "${t}":`,e)}return!0}async function B(e,t,n,r){try{await t?.destroy?.()}catch(t){console.error(`[ExtensionCoordinator] Service cleanup error after failed enable of "${e}":`,t)}try{n?.()}catch(t){console.error(`[ExtensionCoordinator] Storage cleanup error after failed enable of "${e}":`,t)}finally{r.storageCleanup=void 0}}function V(e){let t=new Map;for(let n of e)t.has(n.name)&&(console.info(`[ExtensionCoordinator] Extension "${n.name}" overrides an earlier registration`),t.delete(n.name)),t.set(n.name,n);return[...t.values()]}function H(e,t,n){let r=new Set(e.map(e=>e.name)),i=e.filter(e=>U(e,t,n)),a=new Map(i.map(e=>[e.name,e])),o=new Set(a.keys()),s=!0;for(;s;){s=!1;for(let e of o)(a.get(e).dependencies??[]).some(e=>!e.optional&&r.has(e.name)&&!o.has(e.name))&&(o.delete(e),s=!0)}return i.filter(e=>o.has(e.name))}function U(e,t,n){if(!G(e,t))return!1;let r=e.requires;return!r||r.length===0||!n?!0:r.every(e=>{switch(e.type){case`host`:return n.hosts.has(e.id);case`capability`:return n.capabilities.has(e.id)?e.version===void 0?!0:W(n,e.id,e.version):!1}})}function W(e,t,n){let r=e.capabilityVersions?.get(t);return r!==void 0&&c(r,n)}function G(e,t){return e.surface===void 0||e.surface===`any`||e.surface===t}function K(e){let t=q(e);return se(e,t,new Map(e.map(e=>[e.name,e]))),ue(t,le(e,t))}function q(e){let t=new Set;for(let n of e){if(t.has(n.name))throw Error(`ExtensionCoordinator: duplicate package name detected: "${n.name}"`);t.add(n.name)}return t}function se(e,t,n){for(let r of e)ce(r,t,n)}function ce(e,t,n){let r=e.dependencies??[],i=r.filter(e=>!e.optional&&!t.has(e.name));if(i.length>0)throw Error(`ExtensionCoordinator: package "${e.name}" declares missing dependencies: ${i.map(e=>e.name).join(`, `)}`);for(let t of r){let r=n.get(t.name);if(r===void 0)continue;let i=r.version;if(!c(i,t.version))throw Error(`ExtensionCoordinator: package "${e.name}" dependency "${t.name}" version ${i} does not satisfy ${t.version}`)}}function le(e,t){let n=new Map;for(let r of e){let e=(r.dependencies??[]).filter(e=>t.has(e.name)).map(e=>e.name);n.set(r.name,new Set(e))}return n}function ue(e,t){let n=[];for(let[e,r]of t)r.size===0&&n.push(e);let r=[],i=new Set;for(;n.length>0;){let e=n.shift();if(!i.has(e)){i.add(e),r.push(e);for(let[r,a]of t)a.has(e)&&(a.delete(e),a.size===0&&!i.has(r)&&n.push(r))}}if(r.length!==e.size){let t=[...e].filter(e=>!i.has(e));throw Error(`ExtensionCoordinator: circular dependency detected among: ${t.join(`, `)}`)}return r}async function de(e){if(!e.runMigrations)return;let t=[];for(let n of e.loadOrder){let r=e.entries.get(n);if(!r)throw Error(`Extension "${n}" is in loadOrder but missing from entries`);let i=r.pkg.storage?.migrations;if(!i)continue;let a=fe(n,r.pkg,i);t.push({name:n,migrationsPath:a,migrationSourceId:r.pkg.storage?.migrationSourceId??a})}t.length!==0&&await e.runMigrations(t)}function fe(e,t,n){if(a.isAbsolute(n))return n;let r=t.storage?.packageRoot;if(!r)throw Error(`Extension "${e}" declares relative storage.migrations "${n}" without storage.packageRoot`);let i=a.resolve(r),o=a.resolve(i,n),s=a.relative(i,o);if(s.startsWith(`..`)||a.isAbsolute(s))throw Error(`Extension "${e}" declares storage.migrations "${n}" outside storage.packageRoot`);return o}async function J(e,t){let n=e.entries.get(t);if(!n?.service||n.state!==`active`)return;let{checkHealth:i}=n.service;if(!i)return;let a;try{let e=await i.call(n.service),r=u.array().safeParse(e);r.success?a=r.data:(console.error(`[ExtensionCoordinator] checkHealth for "${t}" returned invalid data:`,r.error),a=[])}catch(e){console.error(`[ExtensionCoordinator] checkHealth threw for "${t}":`,e),a=[]}n.warnings=a;try{await e.bus.emit(r.warnings.changed,{extensionName:t,warnings:[...a]})}catch(e){console.error(`[ExtensionCoordinator] warnings.changed emit failed for "${t}":`,e)}}function pe(e,t){if(t.windows)for(let n of t.windows)e.windowRegistry.register(t.name,t.displayName,n);if(t.tray&&e.trayEntries.push({...t.tray,packageName:t.name}),t.cli){let n=t.cli;`subcommands`in n&&e.cliContributions.push(n)}}function me(e){return Array.from(e.values()).filter(e=>e.enabled).map(e=>e.pkg).filter(e=>!!e.http)}async function he(e){let t=[...e.loadOrder].reverse();for(let n of t){let t=e.entries.get(n);if(t){if(t.state===`active`&&await P(e.contributionProcessors,e.contextHost,n,t,`stopped`),t.service)try{await t.service.destroy?.()}catch(e){console.error(`[ExtensionCoordinator] Error during shutdown of "${n}":`,e)}finally{t.service=void 0}if(t.storageCleanup)try{t.storageCleanup()}catch(e){console.error(`[ExtensionCoordinator] Storage cleanup error for "${n}":`,e)}finally{t.storageCleanup=void 0}t.state===`active`&&N(e.contextHost.bus,t,`stopped`)}}}async function ge(e,t){if(!t.tray)return;let n=_e(t);await e.request(f.register,{entry:n})}function _e(e){let t=e.tray;if(!t)throw Error(`[tray-menu-entry-bridge] extension "${e.name}" does not declare a tray entry`);return{packageName:e.name,entryId:t.opensWindow??t.action??`default`,label:t.label,section:t.section??`views`,priority:50,enabled:!0,metadata:t.opensWindow?{registrationId:`${e.name}:${t.opensWindow}`}:t.action?{action:t.action}:void 0}}async function Y(e,t,n){if(!n.enabled){N(e.bus,n,`skipped`),e.bootProgress.skipped(n.pkg,`disabled`);return}let r=(n.pkg.dependencies??[]).filter(t=>t.optional?!1:e.entries.get(t.name)?.state!==`active`);if(r.length>0){let i=`Required dependencies not active: ${r.map(e=>e.name).join(`, `)}`;if(Q(e,t,n,i),n.pkg.critical)throw Error(`Critical package "${t}" failed: ${i}`);return}e.bootProgress.starting(n.pkg),N(e.bus,n,`initializing`);let i=A(e.contextHost,t,n);if(be(e,t,n,i)){if(!n.pkg.create){await ve(e,t,n);return}await ye(e,t,n,i)}}async function ve(e,t,n){try{await P(e.contributionProcessors,e.contextHost,t,n,`activated`)}catch(r){if(Z(t,n),X(e,t,n,r))return;if(Q(e,t,n,r instanceof Error?r.message:String(r)),n.pkg.critical)throw r;return}N(e.bus,n,`active`),e.bootProgress.ready(n.pkg),await $(e.bus,t,n)}async function ye(e,t,n,r){let i;try{let a=j(e.contextHost,n,r);i=await n.pkg.create(a),await i.init?.(),n.service=i,await P(e.contributionProcessors,e.contextHost,t,n,`activated`),N(e.bus,n,`active`),e.bootProgress.ready(n.pkg),await $(e.bus,t,n)}catch(r){try{await i?.destroy?.()}catch(e){console.error(`[ExtensionCoordinator] Service cleanup error after failed start of "${t}":`,e)}if(n.service=void 0,Z(t,n),X(e,t,n,r))return;if(Q(e,t,n,r instanceof Error?r.message:String(r)),n.pkg.critical)throw r}}function X(e,t,n,r){if(!(r instanceof g))return!1;if(n.pkg.critical){let i=`Critical package cannot skip startup: ${r.reason}`;throw Q(e,t,n,i),Error(`Critical package "${t}" failed: ${i}`,{cause:r})}return n.error=r.reason,console.info(`[ExtensionCoordinator] Package "${t}" skipped: ${r.reason}`),N(e.bus,n,`skipped`),e.bootProgress.skipped(n.pkg,r.reason),!0}function be(e,t,n,r){if(!n.pkg.storage?.registerHandlers||e.db===void 0)return!0;try{let t=j(e.contextHost,n,r),i=n.pkg.storage.registerHandlers(e.bus,e.db,t);return i&&(n.storageCleanup=i),!0}catch(r){let i=r instanceof Error?r.message:String(r);if(console.error(`[ExtensionCoordinator] Package "${t}" storage registration failed:`,r),Q(e,t,n,i),n.pkg.critical)throw r;return!1}}function Z(e,t){if(t.storageCleanup)try{t.storageCleanup()}catch(t){console.error(`[ExtensionCoordinator] Storage cleanup error after failed start of "${e}":`,t)}finally{t.storageCleanup=void 0}}function Q(e,t,n,r){n.error=r,console.error(`[ExtensionCoordinator] Package "${t}" failed:`,r),N(e.bus,n,`failed`),e.bootProgress.failed(n.pkg,r)}async function $(e,t,n){try{await ge(e,n.pkg)}catch(e){console.warn(`[ExtensionCoordinator] Failed to register tray entry for ${t}:`,e)}}var xe=class{bus;surface;db;extensionContextBase;runtimeEnvironment;shutdownController=new AbortController;entries=new Map;loadOrder=[];loaded=!1;started=!1;rpcCleanups=[];contributionProcessors=[];warningActionMap=new Map;windowRegistry=new e;_trayEntries=[];_cliContributions=[];persistEnabled;loadEnabled;loadConfig;runMigrations;constructor(e,t={}){this.bus=e,this.surface=t.surface??`headless`,this.db=t.db,this.extensionContextBase=t.extensionContextBase,this.runtimeEnvironment=t.runtimeEnvironment,this.persistEnabled=t.persistEnabled,this.loadEnabled=t.loadEnabled,this.loadConfig=t.loadConfig,this.runMigrations=t.runMigrations,this.rpcCleanups.push(te(this.bus,this.warningActionMap,t.launcherCommand??`makaio`))}get trayEntries(){return this._trayEntries.map(e=>({...e}))}get cliContributions(){return this._cliContributions}extensionsWithHttp(){return me(this.entries)}load(e,t){if(this.loaded)throw Error(`ExtensionCoordinator.load() called twice. The coordinator is single-use; create a new instance if needed.`);let n=V(H(e,this.surface,this.runtimeEnvironment));this.loadOrder=K(n);for(let e of this.loadOrder){let r=n.find(t=>t.name===e),i={pkg:r,identity:ae(r.name),state:`discovered`,enabled:this.loadEnabled?.(e)!==!1,warnings:[]};if(t){let n=t.get(e);n&&(i.configDefaults=n)}this.entries.set(e,i),r.namespaces&&this.bus.registerNamespaces(r.namespaces),pe({windowRegistry:this.windowRegistry,trayEntries:this._trayEntries,cliContributions:this._cliContributions},r)}this.rpcCleanups.push(...D({bus:this.bus,entries:this.entries,cliContributions:this._cliContributions,list:()=>this.list(),handleSetEnabled:(e,t)=>this.handleSetEnabled(e,t)})),this.loaded=!0}async startAll(){if(!this.loaded)throw Error(`ExtensionCoordinator.startAll() called before load(). Call load() first.`);if(this.started)throw Error(`ExtensionCoordinator.startAll() called twice. The coordinator is single-use; create a new instance if needed.`);this.started=!0;let e=new v(this.bus,this.loadOrder.length);this.rpcCleanups.push(()=>e.dispose());try{await de({loadOrder:this.loadOrder,entries:this.entries,runMigrations:this.runMigrations});for(let t of this.loadOrder){let n=this.entries.get(t);n&&await Y({bus:this.bus,db:this.db,entries:this.entries,contributionProcessors:this.contributionProcessors,contextHost:this.createExtensionContextHost(),bootProgress:e},t,n)}let t=this.createExtensionHealthHost();await Promise.all(this.loadOrder.map(e=>this.entries.get(e)?.state===`active`?J(t,e):void 0)),await ne({bus:this.bus,entries:this.entries,warningActionMap:this.warningActionMap})}finally{e.complete()}}async shutdown(){this.shutdownController.abort();for(let e of this.rpcCleanups)e();this.rpcCleanups=[],this.warningActionMap.clear(),await he({entries:this.entries,loadOrder:this.loadOrder,contributionProcessors:this.contributionProcessors,contextHost:this.createExtensionContextHost()})}list(){return[...this.entries.values()].map(e=>E(e))}getExtensionService(e){let t=typeof e==`string`?e:e.name;return this.entries.get(t)?.service}getExtension(e){return this.entries.get(e)?.pkg}forEachActiveExtension(e){let t=this.createExtensionContextHost();for(let n of this.loadOrder){let r=this.entries.get(n);if(!r||r.state!==`active`)continue;let i=j(t,r,A(t,n,r));e(n,r.pkg,i)}}forExtension(e,t){let n=this.entries.get(e);if(!n||n.state!==`active`)return;let r=this.createExtensionContextHost(),i=j(r,n,A(r,e,n));t(e,n.pkg,i)}registerContributionProcessor(e){return this.contributionProcessors.push(e),()=>{let t=this.contributionProcessors.indexOf(e);t>=0&&this.contributionProcessors.splice(t,1)}}async handleSetEnabled(e,t){return L({bus:this.bus,db:this.db,entries:this.entries,extensionContextBase:this.extensionContextBase,loadConfig:this.loadConfig,signal:this.shutdownController.signal,hasActiveExtension:e=>this.hasActiveExtension(e),persistEnabled:this.persistEnabled,contributionProcessors:this.contributionProcessors,getExtensionService:e=>this.getExtensionService(e),runHealthCheck:e=>J(this.createExtensionHealthHost(),e),emitWarningsForEntry:(e,t)=>k({bus:this.bus,entries:this.entries,warningActionMap:this.warningActionMap},e,t)},e,t)}createExtensionContextHost(){return{bus:this.bus,extensionContextBase:this.extensionContextBase,loadConfig:this.loadConfig,signal:this.shutdownController.signal,hasActiveExtension:e=>this.hasActiveExtension(e),getExtensionService:e=>this.getExtensionService(e)}}createExtensionHealthHost(){return{bus:this.bus,entries:this.entries}}hasActiveExtension(e){return this.entries.get(e)?.state===`active`}};export{m as a,g as i,V as n,h as o,H as r,xe as t};
@@ -0,0 +1 @@
1
+ import{n as e}from"./definition-DZMXOnjX.mjs";import{n as t,t as n}from"./version-BeT3ASEe.mjs";import{z as r}from"zod";const i=r.object({entrypoint:r.string().startsWith(`/`,{message:`Entrypoint must be a URL path starting with "/"`})}),a=r.object({endpoint:r.string().url().optional()}),o=r.union([e,r.object({anthropic:a.optional(),openai:a.optional()}).refine(e=>Object.keys(e).length>0,{message:`ProtocolRef config object must specify at least one protocol`})]),s=r.object({id:r.string().min(1),version:t,binaryVersion:t.optional()}),c=r.object({name:r.string().min(1),displayName:r.string().min(1).optional(),description:r.string().optional(),clients:r.array(s).readonly().optional(),protocols:r.array(o).min(1).readonly(),defaultProvider:r.string().min(1).optional()}),l=r.object({id:r.string().min(1),name:r.string().min(1),description:r.string().optional(),binary:r.object({name:r.string().min(1),managed:r.boolean().optional(),version:n.optional()}).strict().refine(e=>e.managed!==!0||e.version!==void 0,{message:`binary.version is required when binary.managed is true`,path:[`version`]}).refine(e=>e.version===void 0||e.managed===!0,{message:`binary.managed must be true when binary.version is provided`,path:[`managed`]}).optional()}).strict(),u=r.object({id:r.string().min(1),name:r.string().min(1),description:r.string().optional()}),d=r.object({prefix:r.string().min(1),description:r.string().optional(),stage:r.enum([`gather`,`transform`,`action`]).optional()}),f=r.object({adapterName:r.string().min(1),displayName:r.string().min(1),logFilePattern:r.string().min(1).optional()}),p=r.object({id:r.string().min(1),label:r.string().min(1),description:r.string().optional(),icon:r.string().min(1).optional(),selectionMode:r.enum([`single`,`multi`]),messageRoles:r.array(r.enum([`user`,`assistant`])).readonly().optional()}),m=r.enum([`beforeCreate`,`beforeRevise`,`afterCreate`,`afterRevise`,`afterStatusChanged`,`afterObservationAdded`]),h=r.object({id:r.string().min(1),event:m,kind:r.string().min(1).optional(),schemaVersion:r.string().min(1).optional()}),g=r.object({tiles:r.boolean().optional(),widgets:r.boolean().optional(),pages:r.boolean().optional(),routes:r.boolean().optional()}),_={adapters:`adapter`,clients:`client`,providers:`provider`,triggers:`trigger`,logImporters:`log importer`,sessionEventActions:`session event action`,artifactLifecycleHooks:`artifact lifecycle hook`};function v(e,t,n){e.addIssue({code:r.ZodIssueCode.custom,path:[t],message:`Duplicate ${_[t]} contribution identifier "${n}"`})}function y(e,t){let n=new Set,r=new Set,i=[];for(let a of e??[]){let e=t(a);if(n.has(e)){r.has(e)||(r.add(e),i.push(e));continue}n.add(e)}return i}const b=r.object({adapters:r.array(c).readonly().optional(),clients:r.array(l).readonly().optional(),providers:r.array(u).readonly().optional(),triggers:r.array(d).readonly().optional(),logImporters:r.array(f).readonly().optional(),sessionEventActions:r.array(p).readonly().optional(),artifactLifecycleHooks:r.array(h).readonly().optional(),create:r.boolean().optional(),tools:r.boolean().optional(),bootstrap:r.boolean().optional(),namespace:r.boolean().optional(),configSchema:r.boolean().optional(),uiConfig:r.boolean().optional(),ui:g.optional()}).superRefine((e,t)=>{for(let n of y(e.adapters,e=>e.name))v(t,`adapters`,n);for(let n of y(e.clients,e=>e.id))v(t,`clients`,n);for(let n of y(e.providers,e=>e.id))v(t,`providers`,n);for(let n of y(e.triggers,e=>e.prefix))v(t,`triggers`,n);for(let n of y(e.logImporters,e=>e.adapterName))v(t,`logImporters`,n);for(let n of y(e.sessionEventActions,e=>e.id))v(t,`sessionEventActions`,n);for(let n of y(e.artifactLifecycleHooks,e=>e.id))v(t,`artifactLifecycleHooks`,n)}),x=r.string().trim().min(1).transform(e=>e),S=r.object({name:r.string().min(1),required:r.boolean().optional()}),C=r.object({id:r.string(),style:r.enum([`tray-popover`,`utility`,`panel`]),width:r.number().optional(),height:r.number().optional(),singleton:r.boolean().optional(),params:r.array(S).readonly().optional()}).superRefine((e,t)=>{let n=new Set;for(let[i,a]of e.params?.entries()??[]){if(!n.has(a.name)){n.add(a.name);continue}t.addIssue({code:r.ZodIssueCode.custom,message:`Duplicate window param "${a.name}"`,path:[`params`,i,`name`]})}}),w=r.object({label:r.string(),section:r.enum([`utilities`,`tools`,`views`]).optional(),opensWindow:r.string().optional(),action:r.string().optional()}),T=r.object({name:r.string().min(1),description:r.string(),required:r.boolean().optional(),positional:r.boolean().optional(),short:r.string().regex(/^-[A-Za-z0-9]$/,`Expected a short flag like -p`).optional(),type:r.enum([`string`,`boolean`,`number`]).optional()}),E=r.object({name:r.string().min(1),description:r.string(),args:r.array(T).readonly().optional()}),D=r.object({name:r.string().min(1),description:r.string(),subcommands:r.array(E).readonly().optional(),hasInteractive:r.boolean().optional(),canProvideBus:r.boolean().optional()}),O=r.string().min(1).refine(e=>!/^(?:[\\/]|[A-Za-z]:)/.test(e),`Expected a relative path`).refine(e=>!e.split(/[\\/]/).some(e=>e===``||e===`.`||e===`..`),`Path must not contain empty or dot segments`),k=r.object({migrations:O.optional(),migrationSourceId:r.string().min(1).optional()}),A=r.object({type:r.literal(`extension`),name:r.string().min(1),version:t,optional:r.boolean().optional()});function j(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 M=r.discriminatedUnion(`type`,[r.object({type:r.literal(`host`),id:r.string().min(1)}),r.object({type:r.literal(`capability`),id:r.string().min(1),version:t.optional()})]),N=r.object({name:r.string().min(1).regex(/^(@[^/\\]+\/)?[^/\\]+$/,`Extension name must be a plain identifier or an npm-scoped name (@scope/pkg)`).refine(e=>(e.startsWith(`@`)?e.split(`/`):[e]).every(e=>e!==`.`&&e!==`..`),`Extension name must not be a dot-segment`),displayName:r.string().min(1),version:n,surface:r.enum([`interactive`,`headless`,`any`]).optional(),dependencies:r.array(A).readonly().optional(),requires:r.array(M).readonly().optional(),provides:r.array(x).readonly().optional(),windows:r.array(C).readonly().optional(),tray:w.optional(),cli:D.optional(),storage:k.optional(),browser:i.optional(),contributions:b.optional()});function P(e){return Object.freeze({name:e})}const F=r.object({command:r.string().min(1),args:r.array(r.string()).optional(),env:r.record(r.string(),r.string()).optional(),healthTimeoutMs:r.number().int().positive().optional(),shutdownTimeoutMs:r.number().int().positive().optional()}),I=r.enum([`none`,`on-crash`,`always`]),L=F.extend({restartPolicy:I.optional()}),R=r.discriminatedUnion(`type`,[L.extend({type:r.literal(`bus-stdio`)}),L.extend({type:r.literal(`bus-websocket`)}),F.extend({type:r.literal(`mcp-stdio`)})]);function z(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 B=r.union([r.literal(!0),r.string().min(1).refine(z,{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`})]),V=r.object({server:B.optional(),browser:B.optional(),cli:B.optional()}).refine(e=>e.server!==void 0||e.browser!==void 0||e.cli!==void 0,{message:`at least one entrypoint must be declared`});function H(e){return e.execution===`detached`}const U=N.extend({version:n,makaio:r.object({framework:t}).strict().readonly(),entrypoints:V.optional(),execution:r.enum([`embedded`,`detached`]).optional(),transport:R.optional(),config:r.object({defaults:r.record(r.string(),r.unknown()).optional()}).optional()}).superRefine((e,t)=>{e.execution===`detached`?(e.transport===void 0&&t.addIssue({code:r.ZodIssueCode.custom,message:`detached extensions must declare a 'transport' config`,path:[`transport`]}),e.entrypoints!==void 0&&t.addIssue({code:r.ZodIssueCode.custom,message:`detached extensions must not declare entrypoints`,path:[`entrypoints`]})):(e.entrypoints===void 0&&t.addIssue({code:r.ZodIssueCode.custom,message:`embedded extensions must declare at least one entrypoint`,path:[`entrypoints`]}),e.transport!==void 0&&t.addIssue({code:r.ZodIssueCode.custom,message:`embedded extensions must not declare a transport config`,path:[`transport`]}))});function W(e){return e}function G(e){return W(U.parse(e))}function K(e){let t=U.safeParse(e);return t.success?{success:!0,data:W(t.data)}:t}const q=r.discriminatedUnion(`kind`,[r.object({kind:r.literal(`configure-integration`),clientId:r.string().min(1),bundle:r.string().min(1)}),r.object({kind:r.literal(`install-extension`),extensionName:r.string().min(1)}),r.object({kind:r.literal(`open-url`),url:r.string().url()}),r.object({kind:r.literal(`run-command`),command:r.string().min(1)})]),J=r.enum([`info`,`recommended`,`degraded`]),Y=r.object({severity:J,title:r.string().min(1),message:r.string().min(1),action:q.optional()});function X(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 Z=r.object({extensionName:r.string().min(1),warnings:r.array(Y)});function Q(e,t){return e.parse(t??{})}function $(e){return JSON.stringify([e.extensionId,e.type,e.name,e.filename])}export{h as A,i as B,C,s as D,x as E,o as F,u as I,p as L,b as M,f as N,c as O,a as P,d as R,w as S,j as T,E as _,Y as a,M as b,R as c,H as d,G as f,D as g,T as h,Z as i,l as j,m as k,U as l,P as m,Q as n,J as o,K as p,q as r,X as s,$ as t,V as u,A as v,S as w,k as x,N as y,g as z};
@@ -0,0 +1 @@
1
+ import{z as e}from"zod";import{createBusNamespace as t}from"@makaio/framework/core";const n=e.enum([`human`,`system`,`agent`]),r=e.enum([`single`,`multiple`]),i=e.enum([`workpiece`,`artifact`,`surface`]),a=e.object({namespace:e.string().min(1).regex(/^[a-z][a-z0-9-]*$/),cardinality:r,values:e.union([e.literal(`open`),e.array(e.string().min(1)).readonly()]),authority:e.array(n).min(1).readonly(),appliesTo:e.array(i).min(1).readonly(),description:e.string().min(1).optional()});function o(e){return{namespace:e.namespace,toRegistration:()=>({namespace:e.namespace,cardinality:e.cardinality,values:e.values===`open`?`open`:[...e.values],authority:[...e.authority],appliesTo:[...e.appliesTo],...e.description===void 0?{}:{description:e.description}})}}const s={"namespace.register":{request:a,response:e.object({registered:e.boolean()})},"namespace.list":{request:e.object({namespace:e.string().min(1).optional()}),response:e.object({namespaces:e.array(a)})},"namespace.changed":e.object({namespace:e.string().min(1)})},c=t(`facet`,s),l=c.subjects;export{i as a,a as c,o as i,s as n,n as o,l as r,r as s,c as t};
@@ -0,0 +1 @@
1
+ import{FileSystemSubjects as e,FsSubjects as t}from"./services/filesystem/namespace.mjs";import*as n from"node:fs/promises";import*as r from"node:path";import{BaseService as i}from"@makaio/framework/service-base";import*as a from"node:os";const o=[`node_modules`,`.git`,`dist`,`build`,`.next`,`coverage`,`.turbo`,`.cache`];function s(e){return e.split(r.sep).filter(Boolean)}function c(e){let t=r.dirname(e);return t===e?null:t}function l(e){let t=s(e),n=[],i=r.parse(e).root;for(let e of t)i=r.join(i,e),n.push({name:e,path:i});return n}async function u(e,t){let i=r.resolve(e),a=await n.readdir(i,{withFileTypes:!0}),u=t?.includeHidden??!1,d=new Set(t?.excludeNames??o),f=[],p=[];for(let e of a){if(e.name.startsWith(`.`)&&!u||d.has(e.name))continue;let t=r.join(i,e.name),a=e.isDirectory();try{let i=!1;if(a)try{await n.access(r.join(t,`.git`)),i=!0}catch{}let o=await n.stat(t);f.push({name:e.name,path:t,type:a?`directory`:`file`,isGitRepo:a?i:void 0,size:a?void 0:o.size,modified:o.mtimeMs})}catch(t){let n=t;p.push({name:e.name,code:n.code??`UNKNOWN`,message:n.message})}}f.sort((e,t)=>e.type===t.type?e.name.localeCompare(t.name):e.type===`directory`?-1:1);let m=!1;try{await n.access(r.join(i,`.git`)),m=!0}catch{}return{entries:f,isGitRepo:m,path:i,parentPath:c(i),segments:s(i),breadcrumbs:l(i),errors:p.length>0?p:void 0}}var d=class extends i{machineId;label;constructor(e,t,n=`Local`){super(e),this.machineId=t,this.label=n}async onInit(){this.registerHandler(e.listSources,e=>{e.identify?.(this.machineId),e.setResult({sources:[{machineId:this.machineId,label:this.label}]})}),this.addCleanup(this.bus.on(e.listDirectory,async e=>{let t=await u(e.payload.path??a.homedir(),e.payload.options);e.setResult(t)},{filter:{machineId:this.machineId}})),this.addCleanup(this.bus.on(e.getHomeDir,e=>{e.setResult({path:a.homedir()})},{filter:{machineId:this.machineId}})),this.registerHandler(t.glob,async e=>{let{pattern:t,cwd:i,limit:a=100,offset:o=0,ignore:s=[],machineId:c}=e.payload;if(this.requireMachineIdForRemote(e,c),c!==void 0&&!this.shouldHandle(c))return;let{globby:l}=await import(`./globby-rtWVaFHv.mjs`).then(e=>e.n),u=await l(t,{cwd:i,ignore:[`node_modules/**`,`.git/**`,...s],absolute:!0,onlyFiles:!1,expandDirectories:!1}),d=u.length,f=o+a<d,p=u.slice(o,o+a),m=await Promise.all(p.map(async e=>{let t=r.relative(i,e),a=`file`,o;try{let t=await n.stat(e);a=t.isDirectory()?`directory`:`file`,o=t.isFile()?t.size:void 0}catch{}return{path:e,relativePath:t,type:a,size:o}}));e.setResult({files:m,truncated:f,total:d})}),this.registerHandler(t.readFile,async e=>{let{path:t,machineId:r,encoding:i=`utf-8`}=e.payload;if(this.requireMachineIdForRemote(e,r),r!==void 0&&!this.shouldHandle(r))return;let a=await n.readFile(t,{encoding:i});e.setResult({content:a})}),this.registerHandler(t.writeFile,async e=>{let{path:t,content:r,machineId:i,encoding:a=`utf-8`}=e.payload;this.requireMachineIdForRemote(e,i),!(i!==void 0&&!this.shouldHandle(i))&&(await n.writeFile(t,r,{encoding:a}),e.setResult({success:!0}))})}requireMachineIdForRemote(e,t){if(!this.isHostOwnedOrigin(e)&&t===void 0)throw Error(`machineId is required for remote filesystem access`)}isHostOwnedOrigin(e){return e.origin.local||e.transport?.transportName===`worker`&&e.transport.peer===void 0}shouldHandle(e){return e===this.machineId}};export{d as t};
@@ -0,0 +1,66 @@
1
+ import { IMakaioBus } from "@makaio/framework/bus";
2
+ import { BaseService } from "@makaio/framework/service-base";
3
+
4
+ //#region services/core/src/filesystem/filesystem-service.d.ts
5
+ /**
6
+ * FileSystemService provides filesystem browsing via bus requests.
7
+ *
8
+ * Handles:
9
+ * - listSources: Returns this machine as an available source
10
+ * - listDirectory: Lists directory contents
11
+ * - getHomeDir: Returns home directory path
12
+ * - glob: Pattern-based file search
13
+ * - readFile: Read file content
14
+ * - writeFile: Write file content
15
+ * @example
16
+ * ```typescript
17
+ * const fsService = new FileSystemService(bus, 'local-machine', 'Local');
18
+ * // BaseService lifecycle is explicit: call init() once before bus requests.
19
+ * await fsService.init();
20
+ *
21
+ * const home = await bus.request(FileSystemSubjects.getHomeDir, {});
22
+ * const listing = await bus.request(FileSystemSubjects.listDirectory, { path: home.path });
23
+ * const files = await bus.request(FsSubjects.glob, { pattern: '**\/*.ts', cwd: '/project' });
24
+ * const content = await bus.request(FsSubjects.readFile, { path: '/path/to/file.ts' });
25
+ * ```
26
+ */
27
+ declare class FileSystemService extends BaseService {
28
+ private readonly machineId;
29
+ private readonly label;
30
+ /**
31
+ * Create a filesystem service instance for a specific machine source.
32
+ * @param bus - Bus instance used to register request handlers
33
+ * @param machineId - Machine identifier used for request routing
34
+ * @param label - Human-readable source label (defaults to 'Local')
35
+ */
36
+ constructor(bus: IMakaioBus, machineId: string, label?: string);
37
+ /**
38
+ * Register bus handlers for filesystem operations.
39
+ */
40
+ protected onInit(): Promise<void>;
41
+ /**
42
+ * Throw when a remote caller omits the required `machineId`.
43
+ *
44
+ * Remote callers must include `machineId` so ownership is explicit and the
45
+ * correct service instance can be selected. Host-owned callers may omit it:
46
+ * direct in-process requests are local, and the browser SharedWorker bridge
47
+ * arrives through the `worker` transport without a remote peer.
48
+ * @param ctx - Bus context for the current request
49
+ * @param machineId - The `machineId` from the request payload
50
+ */
51
+ private requireMachineIdForRemote;
52
+ /**
53
+ * Check whether a request originated from host-owned code.
54
+ * @param ctx - Bus context for the current request.
55
+ * @returns True for local requests and host UI bridge requests.
56
+ */
57
+ private isHostOwnedOrigin;
58
+ /**
59
+ * Check if this service should handle the request.
60
+ * @param requestMachineId - The machineId from the request payload
61
+ * @returns True if this service should handle the request
62
+ */
63
+ private shouldHandle;
64
+ }
65
+ //#endregion
66
+ export { FileSystemService as t };
@@ -0,0 +1,210 @@
1
+ import { IMakaioBus } from "@makaio/framework/bus";
2
+ import { BaseService } from "@makaio/framework/service-base";
3
+
4
+ //#region subsystems/git/src/git-service.d.ts
5
+ /**
6
+ * GitService provides git repository functionality via bus requests.
7
+ *
8
+ * Combines:
9
+ * - Query operations:
10
+ * - getRepoRoot, getBranch, getCommit, getStatus, getWorktrees, getRemotes, getDefaultBranch
11
+ * - getLog, getFileAtRevision
12
+ * - getFileAtCommit — returns file content at a commit with null-safe binary/missing semantics
13
+ * - getBlobHashAtCommit — returns blob hash for divergence checks
14
+ * - File watching: monitors .git directories and emits events (commit, checkout, staging, etc.)
15
+ * - Multi-repo support: addRepo/removeRepo for watching multiple repositories
16
+ * @example
17
+ * ```typescript
18
+ * import { MakaioBus } from '@makaio/framework/bus';
19
+ * import { GitService } from '@makaio/framework/services/git';
20
+ * import { GitSubjects } from '@makaio/framework/services/git/namespace';
21
+ *
22
+ * // Initialize the service
23
+ * const gitService = new GitService(bus);
24
+ * await gitService.init();
25
+ *
26
+ * // Make requests via bus
27
+ * const branch = await bus.request(GitSubjects.getBranch, {});
28
+ * console.log('Current branch:', branch.current);
29
+ *
30
+ * // Watch a repo for events
31
+ * await bus.request(GitSubjects.addRepo, { repoPath: '/path/to/repo' });
32
+ *
33
+ * // Listen for git events
34
+ * bus.on(GitSubjects.commit, (ctx) => {
35
+ * console.log('New commit:', ctx.payload.hash);
36
+ * });
37
+ *
38
+ * // Cleanup when done
39
+ * await gitService.destroy();
40
+ * ```
41
+ */
42
+ declare class GitService extends BaseService {
43
+ private readonly watcher;
44
+ private readonly logCache;
45
+ private readonly workingTreeCache;
46
+ private readonly fingerprintCache;
47
+ /**
48
+ * @param bus - Bus instance for registering handlers
49
+ */
50
+ constructor(bus: IMakaioBus);
51
+ protected onInit(): Promise<void>;
52
+ protected onDestroy(): Promise<void>;
53
+ /**
54
+ * Register query request handlers on the bus.
55
+ */
56
+ private registerQueryHandlers;
57
+ private registerGitStateHandlers;
58
+ private registerHistoryHandlers;
59
+ private registerWorktreeManagementHandlers;
60
+ /**
61
+ * Assert that a git mutation came from host-owned code or the host UI bridge.
62
+ * @param ctx - Bus handler context carrying origin and transport metadata.
63
+ * @param handlerName - Git handler name used in the error message.
64
+ */
65
+ private requireHostOwnedOrigin;
66
+ /**
67
+ * Register the fingerprint request handler on the bus.
68
+ *
69
+ * Serves cached results when available. On a miss, computes the fingerprint
70
+ * via {@link computeFingerprint} and stores it under the resolved invalidation root.
71
+ */
72
+ private registerFingerprintHandler;
73
+ /**
74
+ * Invalidate all log cache entries for a specific repository.
75
+ * @param repoPath - Repository path to invalidate
76
+ */
77
+ private invalidateLogCache;
78
+ /**
79
+ * Invalidate all working tree cache entries for a specific repository.
80
+ * @param repoPath - Repository path to invalidate
81
+ */
82
+ private invalidateWorkingTreeCache;
83
+ /**
84
+ * Invalidate all fingerprint cache entries for a specific repository.
85
+ * @param repoPath - Repository path to invalidate
86
+ */
87
+ private invalidateFingerprintCache;
88
+ /**
89
+ * Resolve repository path for caching and git operations.
90
+ * @param request - Request with optional repoPath property
91
+ * @returns Repository path string
92
+ */
93
+ private resolveRepoPath;
94
+ /**
95
+ * Register handlers that invalidate caches on relevant git events.
96
+ */
97
+ private registerCacheInvalidationHandlers;
98
+ }
99
+ //#endregion
100
+ //#region subsystems/git/src/git-watcher.d.ts
101
+ /** Types of git operations that can be detected from .git file changes. */
102
+ type GitOperationType = 'commit' | 'checkout' | 'staging' | 'merge' | 'rebase';
103
+ /** Result of interpreting a file change as a git operation. */
104
+ type InterpretResult = {
105
+ type: GitOperationType | 'worktree-added' | 'worktree-removed';
106
+ worktree: string | undefined;
107
+ } | null;
108
+ interface FileChange {
109
+ path: string;
110
+ kind: 'create' | 'change' | 'delete';
111
+ }
112
+ /**
113
+ * GitWatcher observes .git/ directory changes and emits semantic git events.
114
+ * Supports watching multiple repositories simultaneously.
115
+ *
116
+ * This is an internal component used by GitService.
117
+ */
118
+ declare class GitWatcher {
119
+ private readonly bus;
120
+ private readonly watchers;
121
+ private unsubFsChanged;
122
+ private unsubAddRepo;
123
+ private unsubRemoveRepo;
124
+ private initialized;
125
+ constructor(bus: IMakaioBus);
126
+ /** Initialize the watcher and register bus handlers. */
127
+ init(): Promise<void>;
128
+ /** Destroy the watcher and cleanup all watchers. */
129
+ destroy(): Promise<void>;
130
+ /**
131
+ * Add a repository to watch.
132
+ * @param repoPath - Absolute path to the repository root.
133
+ * @returns Response indicating success or failure.
134
+ */
135
+ private addRepo;
136
+ /**
137
+ * Resolve the directory that should be watched for git metadata changes.
138
+ *
139
+ * For standard repos, `.git` is a directory and is returned directly.
140
+ * For worktree checkouts, `.git` is a file containing `gitdir: <path>`.
141
+ * In that case we resolve and return the referenced git directory.
142
+ * @param repoPath - Absolute path to repository/worktree root
143
+ * @returns Absolute path to git metadata directory
144
+ */
145
+ private resolveGitDir;
146
+ /**
147
+ * Remove a repository from watching.
148
+ * @param repoPath - Absolute path to the repository root.
149
+ * @returns Response indicating success or failure.
150
+ */
151
+ private removeRepo;
152
+ /**
153
+ * Handle fs.changed event - route to correct repo watcher.
154
+ * Uses path.relative to ensure the change is actually inside gitDir,
155
+ * not just a path that shares the same prefix (e.g., .git-backup).
156
+ * @param change - The file change event from FileWatcher.
157
+ */
158
+ private handleFsChange;
159
+ /**
160
+ * Narrow an `InterpretResult` type to the subset that can be covered by a native git hook.
161
+ *
162
+ * Only `commit` and `checkout` are suppressible — `merge`, `rebase`, `staging`, and
163
+ * worktree events are always emitted from filesystem inference regardless of hook coverage.
164
+ * @param type - The operation type from a non-null {@link InterpretResult}.
165
+ * @returns `true` when `type` is `'commit'` or `'checkout'`, the two suppressible operations.
166
+ */
167
+ private isSuppressibleOperation;
168
+ /**
169
+ * Query the git-hook coverage service to determine whether a native hook already
170
+ * covers the given operation for the repo associated with `watcher`.
171
+ *
172
+ * Uses {@link IMakaioBus.requestOptional} so missing coverage providers preserve
173
+ * filesystem-event emission behaviour. Other coverage failures are also treated
174
+ * as uncovered because native hook coverage is an optimization over the fallback path.
175
+ * @param watcher - The per-repo watcher state providing the repo root path.
176
+ * @param operation - The git operation GitWatcher is about to emit.
177
+ * @param worktree - Worktree name when the change is worktree-scoped, otherwise `undefined`.
178
+ * @returns `true` only when a coverage handler confirms the hook is installed and verified.
179
+ */
180
+ private isCoveredByNativeHook;
181
+ /**
182
+ * Handle change for a specific repo.
183
+ * @param watcher - The repo watcher state.
184
+ * @param change - The file change event.
185
+ * @returns True when the watcher recognized and handled the change.
186
+ */
187
+ private handleRepoChange;
188
+ /**
189
+ * Get working directory for a worktree.
190
+ * @param watcher - The repo watcher state.
191
+ * @param worktree - The worktree name, or undefined for main worktree.
192
+ * @returns The working directory path.
193
+ */
194
+ private getWorkingDir;
195
+ private emitCommitEvent;
196
+ private emitCheckoutEvent;
197
+ private emitStagingEvent;
198
+ private emitMergeEvent;
199
+ private emitRebaseEvent;
200
+ private emitWorktreeEvent;
201
+ /**
202
+ * Interpret a file change for testing purposes.
203
+ * @param gitDir - The .git directory path.
204
+ * @param change - The file change event.
205
+ * @returns Interpretation result or null if unrecognized.
206
+ */
207
+ interpretChange(gitDir: string, change: FileChange): InterpretResult;
208
+ }
209
+ //#endregion
210
+ export { type GitOperationType, GitService, GitWatcher, type InterpretResult };