@makaio/framework 1.0.0-dev-1784154668798 → 1.0.0-dev-1784706768858

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 (364) hide show
  1. package/dist/.makaio-build.json +2 -2
  2. package/dist/{adapter-B9vVBwli.mjs → adapter-CYobxqN_.mjs} +1 -1
  3. package/dist/adapters/claude/index.mjs +2 -2
  4. package/dist/adapters/config/index.d.mts +1 -1
  5. package/dist/adapters/config/index.mjs +1 -1
  6. package/dist/adapters/index.d.mts +2 -2
  7. package/dist/adapters/index.mjs +2 -2
  8. package/dist/adapters/node.d.mts +1 -1
  9. package/dist/adapters/node.mjs +1 -1
  10. package/dist/artifact-DCkizHkS.mjs +1 -0
  11. package/dist/attach-error-DCnzW-Yz.mjs +1 -0
  12. package/dist/authority-state-bootstrap-C_-F_dtq.mjs +1 -0
  13. package/dist/bus/index.d.mts +99 -4
  14. package/dist/bus/index.mjs +1 -1
  15. package/dist/bus-B6SAjgOC.mjs +2 -0
  16. package/dist/bus-C2l3K74u.mjs +1 -0
  17. package/dist/{canonical-model-C31NaBJs.mjs → canonical-model-EMRYCVjX.mjs} +1 -1
  18. package/dist/client-OYk0Ttck.mjs +1 -0
  19. package/dist/client-binary-version-verifier-Dv7TGFxh.mjs +2 -0
  20. package/dist/clients/index.d.mts +383 -13
  21. package/dist/clients/index.mjs +1 -1
  22. package/dist/clients/managed-install.d.mts +1 -1
  23. package/dist/clients/managed-install.mjs +1 -1
  24. package/dist/{context-resolution-D5jHK1w-.d.mts → context-resolution-DZSBOCKY.d.mts} +10 -10
  25. package/dist/contracts/adapter/index.d.mts +2 -2
  26. package/dist/contracts/adapter/index.mjs +1 -1
  27. package/dist/contracts/adapter/schemas/session-lineage.d.mts +1 -1
  28. package/dist/contracts/artifact/index.d.mts +2 -2
  29. package/dist/contracts/artifact/index.mjs +1 -1
  30. package/dist/contracts/auth/index.d.mts +2 -2
  31. package/dist/contracts/canonical-model/index.d.mts +1 -1
  32. package/dist/contracts/canonical-model/index.mjs +1 -1
  33. package/dist/contracts/client/index.d.mts +3 -3
  34. package/dist/contracts/client/index.mjs +1 -1
  35. package/dist/contracts/common/index.d.mts +1 -1
  36. package/dist/contracts/config/index.d.mts +1 -1
  37. package/dist/contracts/extension/index.d.mts +5 -4
  38. package/dist/contracts/facet/index.d.mts +1 -1
  39. package/dist/contracts/harness/index.d.mts +1 -1
  40. package/dist/contracts/host/index.d.mts +1 -1
  41. package/dist/contracts/index.d.mts +133 -94
  42. package/dist/contracts/index.mjs +1 -1
  43. package/dist/contracts/materialization/index.d.mts +4 -4
  44. package/dist/contracts/materialization/index.mjs +1 -1
  45. package/dist/contracts/model-registry/index.d.mts +1 -1
  46. package/dist/contracts/native-session-supervisor/index.d.mts +1 -1
  47. package/dist/contracts/platform/index.d.mts +1 -1
  48. package/dist/contracts/provider/index.d.mts +2 -2
  49. package/dist/contracts/session/index.d.mts +2 -2
  50. package/dist/contracts/session/index.mjs +1 -1
  51. package/dist/contracts/shared/index.d.mts +2 -2
  52. package/dist/contracts/skill/index.d.mts +1 -1
  53. package/dist/contracts/telemetry/index.d.mts +1 -1
  54. package/dist/contracts/timeout/index.d.mts +1 -1
  55. package/dist/contracts/variant/index.d.mts +1 -1
  56. package/dist/contracts/workflow/index.d.mts +2 -2
  57. package/dist/contracts/workflow/index.mjs +1 -1
  58. package/dist/core/index.d.mts +78 -3
  59. package/dist/core/index.mjs +1 -1
  60. package/dist/{detached-extension-handle-BVM-Ic-4.mjs → detached-extension-handle-BsywhHfk.mjs} +1 -1
  61. package/dist/{filesystem-service-qR9Zy5-r.mjs → filesystem-service-Cupz_Z7S.mjs} +1 -1
  62. package/dist/git/index.mjs +1 -1
  63. package/dist/{globby-DE358g5u.mjs → globby-DWp7V-P2.mjs} +1 -1
  64. package/dist/handlers-cMBmexF4.mjs +57 -0
  65. package/dist/hook-responses-mmqRa2Dq.d.mts +825 -0
  66. package/dist/{index-Du-AJm69.d.mts → index-0Ju2i8gV.d.mts} +20 -6
  67. package/dist/{index-DD9inq5h.d.mts → index-4NQLoI7R.d.mts} +1 -1
  68. package/dist/{index-DAVLhzkq.d.mts → index-8fJ6dkzR.d.mts} +2 -1
  69. package/dist/{index-BdsuBxEz.d.mts → index-BHQXXd-O.d.mts} +4 -4
  70. package/dist/{index-ZGPSCZdC.d.mts → index-BKeJ-Act.d.mts} +24 -10
  71. package/dist/{index-BPBSMsc8.d.mts → index-BWvTZJxe.d.mts} +20 -20
  72. package/dist/{index-BM7u_OTo.d.mts → index-B_aBwkE-.d.mts} +111 -94
  73. package/dist/{index-ChB3K_a12.d.mts → index-BhXCCgJV2.d.mts} +1 -1
  74. package/dist/{index-BcqWLD6J.d.mts → index-BsBvs0aK.d.mts} +117 -45
  75. package/dist/{index-D_lLZ2dU.d.mts → index-C81hMexK.d.mts} +129 -37
  76. package/dist/{index-DoJRv-c3.d.mts → index-CFqShlHD.d.mts} +85 -85
  77. package/dist/{index-DHejCnq8.d.mts → index-CHxWUmmA.d.mts} +3 -3
  78. package/dist/{index-BfNfKh4y.d.mts → index-CKccv4s2.d.mts} +20 -26
  79. package/dist/{index-TWs1TQ2-.d.mts → index-Cw7_69gV.d.mts} +1 -1
  80. package/dist/{index-DE29b4QM.d.mts → index-CzKLLQLw.d.mts} +8 -8
  81. package/dist/{index-CSyR9Fie2.d.mts → index-D73PTKXG2.d.mts} +3 -3
  82. package/dist/{index-DA5S_dj8.d.mts → index-DRiTICBU.d.mts} +1 -1
  83. package/dist/{index-XzetMf0e.d.mts → index-DitLUuR5.d.mts} +126 -42
  84. package/dist/{index-B_KmL_z8.d.mts → index-jbgHR5J2.d.mts} +1 -1
  85. package/dist/{index-B96HlWaM.d.mts → index-pjATMrvJ.d.mts} +10 -4
  86. package/dist/{index-CrbFA2kp.d.mts → index-t9fTvyq6.d.mts} +4 -4
  87. package/dist/kernel/cli/index.d.mts +2 -2
  88. package/dist/kernel/cli/register.d.mts +1 -1
  89. package/dist/kernel/extension/index.d.mts +1 -1
  90. package/dist/kernel/index.d.mts +5 -5
  91. package/dist/kernel/namespace/index.d.mts +1 -1
  92. package/dist/kernel/observability/index.d.mts +1 -1
  93. package/dist/kernel/providers/index.d.mts +1 -1
  94. package/dist/kernel/window/index.d.mts +1 -1
  95. package/dist/{lib-DhbCgfYD.mjs → lib-B7TpTzkG.mjs} +3 -3
  96. package/dist/{lib-6P8_sBCe.mjs → lib-BeMM738r.mjs} +1 -1
  97. package/dist/{load-extensions-jGQgvw6Z.d.mts → load-extensions-BLdG90Zi.d.mts} +1 -1
  98. package/dist/{load-extensions-5VckHXuw.mjs → load-extensions-CUmFCcYi.mjs} +1 -1
  99. package/dist/materialization-s8eR1eQ4.mjs +1 -0
  100. package/dist/mcp-http-server/index.mjs +1 -1
  101. package/dist/{namespace-C_phrzqu2.d.mts → namespace-BWsPZGiq2.d.mts} +5 -5
  102. package/dist/{namespace-CzZmsumy.d.mts → namespace-BeV7LST-.d.mts} +2 -2
  103. package/dist/{namespace-BTp6-zD8.d.mts → namespace-BsF9IxJ9.d.mts} +53 -5
  104. package/dist/{namespace-CpSZfHLv.d.mts → namespace-Db_PFX3v.d.mts} +36 -18
  105. package/dist/{namespace-Bldr5X64.d.mts → namespace-Dvo_7BQw.d.mts} +2 -2
  106. package/dist/{namespace-BwAiuQ2_.d.mts → namespace-lWlqWTKu.d.mts} +48 -4
  107. package/dist/node/bus-server/index.d.mts +1 -1
  108. package/dist/node/bus-server/index.mjs +1 -1
  109. package/dist/node/bus-server/server-lifecycle.d.mts +1 -1
  110. package/dist/node/bus-server/server-lifecycle.mjs +1 -1
  111. package/dist/node/transports/index.d.mts +5 -3
  112. package/dist/node/transports/index.mjs +2 -2
  113. package/dist/package-DKnzOvoR.mjs +1 -0
  114. package/dist/{package-Brt4dhRC.mjs → package-DW1Upu8E.mjs} +1 -1
  115. package/dist/package.json +1 -1
  116. package/dist/{packages-BBJsifai.d.mts → packages-DeIgn0Hn.d.mts} +2 -2
  117. package/dist/packages-zDnokBpl.mjs +1 -0
  118. package/dist/rules/index.d.mts +1 -1
  119. package/dist/rules/index.mjs +1 -1
  120. package/dist/rules/schemas.d.mts +1 -1
  121. package/dist/runtime-bun/index.mjs +1 -1
  122. package/dist/runtime-node/extension-discovery.d.mts +1 -1
  123. package/dist/runtime-node/extension-validation.d.mts +1 -1
  124. package/dist/runtime-node/extension-validation.mjs +1 -1
  125. package/dist/runtime-node/index.d.mts +3 -3
  126. package/dist/runtime-node/index.mjs +22 -22
  127. package/dist/runtime-node/makaio-config.d.mts +1 -1
  128. package/dist/runtime-node/makaio-config.mjs +1 -1
  129. package/dist/runtime-node/workflow-worker/index.d.mts +1 -1
  130. package/dist/runtime-node/workflow-worker/index.mjs +1 -1
  131. package/dist/runtime-node/workflow-worker/worker-entry.mjs +1 -1
  132. package/dist/schemas-BJ8VMXhO.mjs +1 -0
  133. package/dist/schemas-BRxU_oqL.mjs +1 -0
  134. package/dist/schemas-Dgj3WaOI.mjs +1 -0
  135. package/dist/{schemas-BLJ2k226.d.mts → schemas-SsGbBOZ-.d.mts} +2 -2
  136. package/dist/{schemas-Ca3BLPH5.d.mts → schemas-oTIqxZN_.d.mts} +17 -17
  137. package/dist/scoped-bus-C9BdNwfM.mjs +1 -0
  138. package/dist/services/adapter-runtime/index.d.mts +3 -3
  139. package/dist/services/adapter-runtime/index.mjs +1 -1
  140. package/dist/services/adapter-runtime/namespace.d.mts +1 -1
  141. package/dist/services/adapter-runtime/schemas.d.mts +1 -1
  142. package/dist/services/adapter-subsystem/index.d.mts +3 -3
  143. package/dist/services/adapter-subsystem/namespace.d.mts +1 -1
  144. package/dist/services/agent-runtime/index.d.mts +2 -2
  145. package/dist/services/agent-runtime/namespace.d.mts +1 -1
  146. package/dist/services/agent-runtime/schemas.d.mts +1 -1
  147. package/dist/services/capability/index.d.mts +1 -1
  148. package/dist/services/capability/index.mjs +1 -1
  149. package/dist/services/codebase/index.d.mts +2 -2
  150. package/dist/services/codebase/namespace.d.mts +1 -1
  151. package/dist/services/codebase/schemas.d.mts +1 -1
  152. package/dist/services/compression/index.d.mts +2 -2
  153. package/dist/services/compression/namespace.d.mts +1 -1
  154. package/dist/services/compression/schemas.d.mts +1 -1
  155. package/dist/services/context-rules/index.d.mts +4 -4
  156. package/dist/services/context-rules/index.mjs +1 -1
  157. package/dist/services/execution-target/index.d.mts +3 -3
  158. package/dist/services/execution-target/index.mjs +1 -1
  159. package/dist/services/execution-target/namespace.d.mts +1 -1
  160. package/dist/services/execution-target/schemas.d.mts +1 -1
  161. package/dist/services/filesystem/index.d.mts +1 -1
  162. package/dist/services/filesystem/index.mjs +1 -1
  163. package/dist/services/git/namespace.d.mts +2 -2
  164. package/dist/services/git/namespace.mjs +1 -1
  165. package/dist/services/git/schemas.d.mts +1 -1
  166. package/dist/services/git/schemas.mjs +1 -1
  167. package/dist/services/harness/index.d.mts +3 -3
  168. package/dist/services/harness/index.mjs +1 -1
  169. package/dist/services/index.d.mts +73 -51
  170. package/dist/services/index.mjs +1 -1
  171. package/dist/services/log-import/browser.d.mts +2 -2
  172. package/dist/services/log-import/index.d.mts +2 -2
  173. package/dist/services/log-import/log-import.d.mts +1 -1
  174. package/dist/services/log-import/log-import.mjs +1 -1
  175. package/dist/services/log-import/namespace.mjs +1 -1
  176. package/dist/services/log-import/schemas.mjs +1 -1
  177. package/dist/services/materialization/index.d.mts +5 -5
  178. package/dist/services/materialization/index.mjs +1 -1
  179. package/dist/services/model-registry/index.d.mts +1 -1
  180. package/dist/services/model-registry/index.mjs +1 -1
  181. package/dist/services/preferences/index.d.mts +2 -2
  182. package/dist/services/preferences/schemas.d.mts +1 -1
  183. package/dist/services/preferences/storage-namespace.d.mts +2 -2
  184. package/dist/services/provider-context/index.d.mts +1 -1
  185. package/dist/services/provider-runtime/index.mjs +1 -1
  186. package/dist/services/session/handlers/index.d.mts +1 -1
  187. package/dist/services/session/handlers/index.mjs +1 -1
  188. package/dist/services/session/index.d.mts +9 -9
  189. package/dist/services/session/index.mjs +1 -1
  190. package/dist/services/session/messages/namespace.d.mts +1 -1
  191. package/dist/services/session/orchestrator-testing/index.d.mts +1 -1
  192. package/dist/services/session/orchestrator-testing/index.mjs +1 -1
  193. package/dist/services/session/session-events/namespace.d.mts +1 -1
  194. package/dist/services/session/storage/namespace.d.mts +1 -1
  195. package/dist/services/session/storage/schema.d.mts +1 -1
  196. package/dist/services/session/testing/index.mjs +2 -2
  197. package/dist/services/session/testing/orchestrator-shared.d.mts +1 -1
  198. package/dist/services/session/testing/orchestrator-shared.mjs +1 -1
  199. package/dist/services/session/turns/namespace.d.mts +1 -1
  200. package/dist/services/session-editor/index.d.mts +1 -1
  201. package/dist/services/session-editor/index.mjs +1 -1
  202. package/dist/services/settings/index.d.mts +3 -3
  203. package/dist/services/settings/namespace.d.mts +14 -14
  204. package/dist/services/settings/namespace.mjs +1 -1
  205. package/dist/services/settings/storage/clients-namespace.d.mts +1 -1
  206. package/dist/services/settings/storage/extension-configs/namespace.d.mts +3 -3
  207. package/dist/services/settings/storage/index.d.mts +3 -3
  208. package/dist/services/settings/storage/providers-namespace.d.mts +1 -1
  209. package/dist/services/subagent/index.d.mts +1 -1
  210. package/dist/services/subagent/index.mjs +1 -1
  211. package/dist/services/subagent-template/index.d.mts +2 -2
  212. package/dist/services/subagent-template/namespace.d.mts +1 -1
  213. package/dist/services/subagent-template/schemas.d.mts +1 -1
  214. package/dist/services/tool-approval/index.d.mts +1 -1
  215. package/dist/services/tool-approval/index.mjs +1 -1
  216. package/dist/services/tools/index.d.mts +1 -1
  217. package/dist/services/tools/index.mjs +1 -1
  218. package/dist/services/tray-menu/index.d.mts +3 -3
  219. package/dist/services/tray-menu/index.mjs +1 -1
  220. package/dist/services/tray-menu/namespace.d.mts +1 -1
  221. package/dist/services/tray-menu/schemas.d.mts +1 -1
  222. package/dist/services/turn/index.d.mts +1 -1
  223. package/dist/services/turn/namespace.d.mts +1 -1
  224. package/dist/services/turn/schemas.d.mts +24 -2
  225. package/dist/services/turn/schemas.mjs +1 -1
  226. package/dist/{session-BxWogVkD.mjs → session-Carng3Yk.mjs} +1 -1
  227. package/dist/session-idI1jk5X.mjs +76 -0
  228. package/dist/{session-lineage-CWlcOKBZ.d.mts → session-lineage-Cte63dGx.d.mts} +1 -1
  229. package/dist/src-XihJcAQS.mjs +1 -0
  230. package/dist/storage/drizzle/client.d.mts +1 -1
  231. package/dist/storage/drizzle/client.mjs +1 -1
  232. package/dist/storage/drizzle/index.d.mts +1 -1
  233. package/dist/storage/drizzle/index.mjs +1 -1
  234. package/dist/storage/handlers/drizzle/index.d.mts +1 -1
  235. package/dist/storage/handlers/drizzle/index.mjs +1 -1
  236. package/dist/storage/handlers/index.d.mts +1 -1
  237. package/dist/storage/handlers/index.mjs +1 -1
  238. package/dist/{tool-approval-service-BgSn_6NT.mjs → tool-approval-service-fIZ9x0kL.mjs} +1 -1
  239. package/dist/{tools-CWSuNk-M.mjs → tools-Cs2DwjCC.mjs} +1 -1
  240. package/dist/{transition-CukPcOG5.d.mts → transition-BMYk_IVK.d.mts} +2 -2
  241. package/dist/{types-DiZJnwN0.d.mts → types-CtSkJqzV.d.mts} +104 -14
  242. package/dist/{types-Be7wY1De.d.mts → types-LspCUW09.d.mts} +1 -1
  243. package/dist/ui-components/index.d.mts +4 -4
  244. package/dist/ui-components/index.mjs +2 -2
  245. package/dist/ui-kernel/index.d.mts +1 -1
  246. package/dist/ui-kernel/pages/schemas.d.mts +1 -1
  247. package/dist/{view-builder-DQiA4wDH.d.mts → view-builder-CpKzgyS2.d.mts} +77 -18
  248. package/dist/workflow-BX-FxDb0.mjs +1 -0
  249. package/dist/workflow-engine/index.d.mts +76 -76
  250. package/dist/workflow-engine/index.mjs +1 -1
  251. package/dist/workflow-engine/package.d.mts +1 -1
  252. package/dist/workflow-engine/package.mjs +1 -1
  253. package/dist/workflow-engine/workflow-orchestrator.mjs +1 -1
  254. package/dist/workflow-worker-DR9qYOFc.mjs +1 -0
  255. package/package.json +4 -4
  256. package/dist/artifact-Dnpy5ei_.mjs +0 -1
  257. package/dist/authority-state-bootstrap-BlbmQ9A5.mjs +0 -1
  258. package/dist/bus-D-ioC0DE.mjs +0 -1
  259. package/dist/bus-rgUFuO2a.mjs +0 -2
  260. package/dist/client-CzPCSeyE.mjs +0 -1
  261. package/dist/client-binary-version-verifier-CaFlNNjs.mjs +0 -2
  262. package/dist/definition-ClKlXenJ.d.mts +0 -413
  263. package/dist/handlers-RGs3eC9X.mjs +0 -57
  264. package/dist/materialization-BBxXhthv.mjs +0 -1
  265. package/dist/package-3cW8oIkI.mjs +0 -1
  266. package/dist/packages-I0D3JP9L.mjs +0 -1
  267. package/dist/schemas-6H-dlMrB.mjs +0 -1
  268. package/dist/schemas-DyJHJ8Pm.mjs +0 -1
  269. package/dist/schemas-th_nuC5t.mjs +0 -1
  270. package/dist/scoped-bus-CZId-Df8.mjs +0 -1
  271. package/dist/session-CAjudDuJ.mjs +0 -76
  272. package/dist/src-T5DtFSyU.mjs +0 -1
  273. package/dist/workflow-DPeE6-Ta.mjs +0 -1
  274. package/dist/workflow-worker-CPCh68Qf.mjs +0 -1
  275. /package/dist/{adapter-auth-runtime-CotG_6M4.mjs → adapter-auth-runtime-DFBLXD5K.mjs} +0 -0
  276. /package/dist/{adapter-binding-DQ1HrGcH.d.mts → adapter-binding-Dfk_g-lP.d.mts} +0 -0
  277. /package/dist/{ajv-WvFKnw8d.mjs → ajv-C8r45sFs.mjs} +0 -0
  278. /package/dist/{await-trigger-COHFNyNi.mjs → await-trigger-UceeyCyi.mjs} +0 -0
  279. /package/dist/{base-orchestrator-p3zIcnaJ.d.mts → base-orchestrator-5yH3l39s.d.mts} +0 -0
  280. /package/dist/{capability-service-TCOwWrLi.mjs → capability-service-BzKBK0n2.mjs} +0 -0
  281. /package/dist/{client-CGEyBWKl.d.mts → client-DYEHDiJN.d.mts} +0 -0
  282. /package/dist/{client-binary-version-verifier-WsNRplFB.d.mts → client-binary-version-verifier-C12PvQmz.d.mts} +0 -0
  283. /package/dist/{clients-namespace-ClKm1GLT.d.mts → clients-namespace-DcFmhtLv.d.mts} +0 -0
  284. /package/dist/{config-namespace-DOw8R5eb.d.mts → config-namespace-DmP7NVju.d.mts} +0 -0
  285. /package/dist/{create-static-mount-DM9qO98Q.mjs → create-static-mount-BLbqGmva.mjs} +0 -0
  286. /package/dist/{cross-spawn-CVfmnMVP.mjs → cross-spawn-BXxQUsPS.mjs} +0 -0
  287. /package/dist/{cursor-storage-BoFVjVGq.mjs → cursor-storage-DCj4uUxr.mjs} +0 -0
  288. /package/dist/{definition-BZrouYAq.d.mts → definition-BEvV7tbD.d.mts} +0 -0
  289. /package/dist/{descriptor-to-package-DCwvJoUE.mjs → descriptor-to-package-VfB8lK5w.mjs} +0 -0
  290. /package/dist/{drizzle-BQDvlDL2.mjs → drizzle-oCH9H53q.mjs} +0 -0
  291. /package/dist/{esm-1UzF2r1U.mjs → esm-ClQELElL.mjs} +0 -0
  292. /package/dist/{event-Ddxe4yp9.mjs → event-BOLVCfhH.mjs} +0 -0
  293. /package/dist/{execution-target-D6PoGaO8.mjs → execution-target-CsZXIvli.mjs} +0 -0
  294. /package/dist/{extension-discovery-Cce4FmRu.d.mts → extension-discovery-B6p3iZaV.d.mts} +0 -0
  295. /package/dist/{filesystem-service-CWBzOEAA.d.mts → filesystem-service-CGdboor3.d.mts} +0 -0
  296. /package/dist/{handler-Bxs0moLY.mjs → handler-GGOD_ofd.mjs} +0 -0
  297. /package/dist/{identity-D481xSkS.mjs → identity-BmEHHoBw.mjs} +0 -0
  298. /package/dist/{index-BoCL9IHT.d.mts → index-BDDbcWNI.d.mts} +0 -0
  299. /package/dist/{index-p1N3ZuqF.d.mts → index-BG9-vQHD.d.mts} +0 -0
  300. /package/dist/{index-C2PHX5Em.d.mts → index-BSmwpgkR.d.mts} +0 -0
  301. /package/dist/{index-M8rNEeH8.d.mts → index-BUYyZm5I.d.mts} +0 -0
  302. /package/dist/{index-Jec13bI-2.d.mts → index-Bd1GC1kU2.d.mts} +0 -0
  303. /package/dist/{index-D3cH5U0n.d.mts → index-BgpYhR2z.d.mts} +0 -0
  304. /package/dist/{index-BrvsExEF.d.mts → index-Brdc35b-.d.mts} +0 -0
  305. /package/dist/{index-4b-ig5Uf.d.mts → index-C96LlS5m.d.mts} +0 -0
  306. /package/dist/{index-RtP5Mi4D.d.mts → index-CFeY8lfU.d.mts} +0 -0
  307. /package/dist/{index-NZ-gfUOw.d.mts → index-CcsJnJOD.d.mts} +0 -0
  308. /package/dist/{index-XLGBNeu0.d.mts → index-CdEhEXlY.d.mts} +0 -0
  309. /package/dist/{index-DKCFz7dL.d.mts → index-Chy9aknK.d.mts} +0 -0
  310. /package/dist/{index-BRdPSBFH2.d.mts → index-Ci3_i-WC2.d.mts} +0 -0
  311. /package/dist/{index-ChsmMZmN.d.mts → index-DC0yVsYL.d.mts} +0 -0
  312. /package/dist/{index-DIAmg04s.d.mts → index-DEchpaya.d.mts} +0 -0
  313. /package/dist/{index-CNS1jyBU.d.mts → index-DYUxNOIX.d.mts} +0 -0
  314. /package/dist/{index-fFSPF7N0.d.mts → index-DaMfTvfz.d.mts} +0 -0
  315. /package/dist/{index-Dx6P-ajY.d.mts → index-DquI_1X5.d.mts} +0 -0
  316. /package/dist/{index-DbP0yaRw.d.mts → index-GYZs75UP.d.mts} +0 -0
  317. /package/dist/{index-CQco6KNL.d.mts → index-oYGf2zIe.d.mts} +0 -0
  318. /package/dist/{index-BOlzcjwS.d.mts → index-pgYFJ5h6.d.mts} +0 -0
  319. /package/dist/{json-value-BsWNQQbr.d.mts → json-value-BwVdTylT.d.mts} +0 -0
  320. /package/dist/{jsonl-transport-B70HQ9l1.mjs → jsonl-transport-D8RBF0dK.mjs} +0 -0
  321. /package/dist/{lib-C_apP_9s.mjs → lib-3_xcE8J-.mjs} +0 -0
  322. /package/dist/{model-registry-C3NX834K.mjs → model-registry-CoegIvks.mjs} +0 -0
  323. /package/dist/{namespace-Bogua97s.d.mts → namespace-8-GrdcbF.d.mts} +0 -0
  324. /package/dist/{namespace-DNgZ_rfi.d.mts → namespace-B9CYb9Gh.d.mts} +0 -0
  325. /package/dist/{namespace-DDx4NVJm.mjs → namespace-BHj13hbA.mjs} +0 -0
  326. /package/dist/{namespace-Dzbt8LqQ.d.mts → namespace-BHliaabz.d.mts} +0 -0
  327. /package/dist/{namespace-BqlDkdht2.d.mts → namespace-BSXHdCVh2.d.mts} +0 -0
  328. /package/dist/{namespace-CU1jSw6E.d.mts → namespace-Bd49QmzS.d.mts} +0 -0
  329. /package/dist/{namespace-kIjqar0Y.mjs → namespace-BeED_Ojz.mjs} +0 -0
  330. /package/dist/{namespace-SwgMs4rw.d.mts → namespace-D9HNjIdc.d.mts} +0 -0
  331. /package/dist/{namespace-B1_egU5J.mjs → namespace-DWwWnLBu.mjs} +0 -0
  332. /package/dist/{namespace-UCwUrFRx.d.mts → namespace-De9Mg3zv.d.mts} +0 -0
  333. /package/dist/{namespace-CddQuUvG.d.mts → namespace-SQAGytmu.d.mts} +0 -0
  334. /package/dist/{orchestrator-shared-DrEFeZYw.d.mts → orchestrator-shared-BB6j8ezL.d.mts} +0 -0
  335. /package/dist/{orchestrator-shared-jYk9mi5C.mjs → orchestrator-shared-CY7Tu7kZ.mjs} +0 -0
  336. /package/dist/{out-B6fO6go6.mjs → out-CFkI17mk.mjs} +0 -0
  337. /package/dist/{package-BVm1EakP.d.mts → package-BSG1681x.d.mts} +0 -0
  338. /package/dist/{providers-namespace-Bl3M8Ibo.d.mts → providers-namespace-sPbGcZ6I.d.mts} +0 -0
  339. /package/dist/{quick-lru-Coxb6GVa.mjs → quick-lru-CTBjxfgD.mjs} +0 -0
  340. /package/dist/{registry-ElIHcMM2.mjs → registry-Dw6l7k3e.mjs} +0 -0
  341. /package/dist/{schema-DOPEco97.d.mts → schema-CfMsufSb.d.mts} +0 -0
  342. /package/dist/{schemas-B3K1ekm7.d.mts → schemas-B4FyOOJj.d.mts} +0 -0
  343. /package/dist/{schemas-Dq_g7Giu.d.mts → schemas-B5tMYfhC.d.mts} +0 -0
  344. /package/dist/{schemas-D_H0ztxl.d.mts → schemas-BAvt2HDy.d.mts} +0 -0
  345. /package/dist/{schemas-FiDj_kLq.mjs → schemas-BGS9RfqV.mjs} +0 -0
  346. /package/dist/{schemas-BKgUDm_a2.d.mts → schemas-BKKpQC4X2.d.mts} +0 -0
  347. /package/dist/{schemas-CzT0LApM.d.mts → schemas-ChF2z4RB.d.mts} +0 -0
  348. /package/dist/{schemas-DfZ85CRF2.d.mts → schemas-CiWCNQ9a2.d.mts} +0 -0
  349. /package/dist/{schemas-pl0mzEtO.d.mts → schemas-D55eXBgl.d.mts} +0 -0
  350. /package/dist/{schemas-CVbfHPw-.d.mts → schemas-DYvvMd3c.d.mts} +0 -0
  351. /package/dist/{schemas-DPosZWw-.d.mts → schemas-Dmij0PIc.d.mts} +0 -0
  352. /package/dist/{server-lifecycle-DzO3rjKP.d.mts → server-lifecycle-C-3OgoKi.d.mts} +0 -0
  353. /package/dist/{server-lifecycle-DLdh0-4H.mjs → server-lifecycle-DV6NMsgH.mjs} +0 -0
  354. /package/dist/{src-Dqa1n_kI.mjs → src-ftBp6GpR.mjs} +0 -0
  355. /package/dist/{storage-namespace-D4yQ--Sp.d.mts → storage-namespace-9N9R61pI.d.mts} +0 -0
  356. /package/dist/{storage-namespace-B1_x8Ho2.mjs → storage-namespace-B1GI4elv.mjs} +0 -0
  357. /package/dist/{storage-namespace-definition-BzSaRLtZ.d.mts → storage-namespace-definition-V8sc3drq.d.mts} +0 -0
  358. /package/dist/{supports-color-CCdGjFUY.mjs → supports-color-DwW9N6YC.mjs} +0 -0
  359. /package/dist/{tray-menu-service-BJ9r7IY3.mjs → tray-menu-service-Dgedanv-.mjs} +0 -0
  360. /package/dist/{types-Diu9uAnB.d.mts → types-Bju4dmAg.d.mts} +0 -0
  361. /package/dist/{types-C8_OhAFv.d.mts → types-DBb5jY4Z.d.mts} +0 -0
  362. /package/dist/{types-Bgb8eQkd.d.mts → types-DVLq657Y.d.mts} +0 -0
  363. /package/dist/{types-B9QOZAZ5.d.mts → types-DkFvBdIY.d.mts} +0 -0
  364. /package/dist/{window-registry-CHv3cgSN.d.mts → window-registry-Qcnvlhp7.d.mts} +0 -0
@@ -1,2 +0,0 @@
1
- import*as e from"node:fs/promises";import*as t from"node:path";import{ManagedInstallDescriptorSchema as n}from"@makaio/framework/contracts/client";function r(e){if(e!==void 0)return(t,n)=>{n!==null&&n>0?e(`downloading`,t/n*100):e(`downloading`,null)}}var i=class{#e;#t;constructor(e,t){this.#e=e,this.#t=t}async execute(e,t,n){if(e!==this.#e.version)throw Error(`npm managed install requested version ${e} but descriptor pins ${this.#e.version}`);n?.(`installing`,null);let r=`${this.#e.package}@${this.#e.version}`;return await this.#t.exec(`npm`,[`install`,r,`--prefix`,t,`--no-save`,`--ignore-scripts`]),n?.(`installing`,100),{installPath:t,version:this.#e.version,strategy:`npm`}}};function a(){if(process.platform!==`linux`)return!1;try{let e=process.report?.getReport?.();if(typeof e!=`object`||!e||!(`header`in e))return!0;let{header:t}=e;return typeof t!=`object`||!t?!0:!(`glibcVersionRuntime`in t)}catch{return!1}}function o(e){return e.replace(/[^0-9a-fA-F]/g,``).toUpperCase()}function s(e,t,n,r){let i=e.replaceAll(`{version}`,t);return n!==void 0&&(i=i.replaceAll(`{platform}`,n)),r!==void 0&&(i=i.replaceAll(`{binary}`,r)),i}function c(e){let t=`${e.platform}-${e.arch}`;return e.platform===`linux`&&e.isMusl?`${t}-musl`:t}function l(e,t){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Signed manifest must be a JSON object`);let n=e,r=n.version;if(r!==t)throw Error(`Signed manifest version ${String(r)} does not match descriptor pin ${t}`);let i=n.platforms;if(typeof i!=`object`||!i||Array.isArray(i))throw Error(`Signed manifest must contain a platforms object`);return{version:r,platforms:i}}function u(e,t){let n=e.platforms[t];if(typeof n!=`object`||!n||Array.isArray(n))throw Error(`Signed manifest does not contain a platform entry for '${t}'`);let{binary:r,checksum:i}=n;if(typeof r!=`string`||!d(r))throw Error(`Manifest entry for '${t}' has unsafe binary filename`);if(typeof i!=`string`||i.length===0)throw Error(`Manifest entry for '${t}' is missing a valid 'checksum' field`);return{binary:r,checksum:i}}function d(e){return e.length>0&&e!==`.`&&e!==`..`&&!e.includes(`/`)&&!e.includes(`\\`)}var f=class{#e;#t;#n;constructor(e,t,n){this.#e=e,this.#t=t,this.#n={platform:n?.platform??process.platform,arch:n?.arch??process.arch,isMusl:n?.isMusl??a()}}async execute(n,i,a){if(n!==this.#e.version)throw Error(`signed-binary-bucket managed install requested version ${n} but descriptor pins ${this.#e.version}`);let{config:o}=this.#e,l=c(this.#n),u=o.platforms[l];if(u===void 0)throw Error(`signed-binary-bucket descriptor has no platform entry for '${l}'. Supported platforms: ${Object.keys(o.platforms).join(`, `)}`);await e.mkdir(i,{recursive:!0});let d=t.join(i,`.gnupg`),f=t.join(i,`signing-key.asc`),p=t.join(i,`manifest.json`),m=t.join(i,`manifest.json.sig`);a?.(`resolving`,null),await this.#r(o,n,f,p,m),a?.(`verifying`,null);let h=await this.#i(o,d,f,p,m,l);a?.(`downloading`,null);let g=s(o.binaryPathTemplate,n,u,h.binary),_=t.resolve(i,h.binary);await this.#t.downloadFile(`${o.baseUrl}/${g}`,_,r(a)),a?.(`verifying`,null);let v=await this.#t.computeChecksum(_);if(v!==h.checksum)throw Error(`Binary checksum mismatch: expected ${h.checksum} but computed ${v}`);return a?.(`installing`,null),this.#n.platform!==`win32`&&await e.chmod(_,493),await this.#t.removeDirectory(d),await this.#t.deleteFile(f),await this.#t.deleteFile(m),a?.(`installing`,100),{installPath:i,version:this.#e.version,strategy:`signed-binary-bucket`}}async#r(t,n,r,i,a){let o=`${t.baseUrl}/${s(t.manifestPathTemplate,n)}`,c=`${t.baseUrl}/${s(t.manifestSignaturePathTemplate,n)}`,l=await this.#t.fetchText(t.publicKeyUrl);await e.writeFile(r,l,`utf-8`),await this.#t.downloadFile(o,i),await this.#t.downloadFile(c,a)}async#i(t,n,r,i,a,s){await e.mkdir(n,{recursive:!0,mode:448}),await this.#t.exec(`gpg`,[`--homedir`,n,`--import`,r]);let c=await this.#t.exec(`gpg`,[`--homedir`,n,`--with-colons`,`--fingerprint`,`--list-keys`]),d=this.#a(c);if(o(d)!==o(t.publicKeyFingerprint))throw Error(`GPG key fingerprint mismatch: expected ${t.publicKeyFingerprint} but got ${d}`);await this.#t.exec(`gpg`,[`--homedir`,n,`--verify`,a,i]).catch(e=>{throw Error(`Manifest GPG signature verification failed: ${e.message}`)});let f=await e.readFile(i,`utf-8`);return u(l(JSON.parse(f),this.#e.version),s)}#a(e){for(let t of e.split(`
2
- `)){let e=t.split(`:`);if(e[0]===`fpr`&&e[9]!==void 0&&e[9].length>0)return e[9]}throw Error(`Could not extract GPG key fingerprint from output`)}};function p(e,t){let r=n.safeParse(e);if(r.success)switch(r.data.type){case`npm`:return new i(r.data,t);case`signed-binary-bucket`:return new f(r.data,t)}}function m(e,n){let r=t.relative(e,n);return r!==``&&!r.startsWith(`..${t.sep}`)&&r!==`..`&&!t.isAbsolute(r)}async function h(n,r,i,a){let[o,...s]=i;if(_(o))throw Error(`versionCommand[0] must be a relative path; received absolute path "${o}"`);if(o.split(/[/\\]/).includes(`..`))throw Error(`versionCommand[0] must not contain path traversal segments; received "${o}"`);let c=t.normalize(o),l=t.join(r,c),u=await e.realpath(r),d=await e.realpath(l);if(!m(u,d))throw Error(`versionCommand[0] must not escape the install directory; "${o}" resolves outside installPath`);let f;try{f=await n(d,s,{cwd:u})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Version verification failed: command "${l}" exited with an error: ${t}`,{cause:e})}let p=g(a);if(!v(f,p))throw Error(`Version mismatch: expected "${a}" but command output was "${f.trim()}"`)}function g(e){return e[0]===`v`||e[0]===`V`?e.slice(1):e}function _(e){return e.startsWith(`/`)||/^[A-Za-z]:[/\\]/.test(e)||e.startsWith(`\\`)}function v(e,t){return(e.match(/[A-Za-z0-9][A-Za-z0-9._+-]*/g)??[]).some(e=>g(e)===t)}export{m as n,p as r,h as t};
@@ -1,413 +0,0 @@
1
- import { z } from "zod";
2
-
3
- //#region core/contracts/src/version/primitives.d.ts
4
- /**
5
- * npm semver range syntax (e.g. `">=1.0.0 <2.0.0"`, `"^1.5.0"`).
6
- *
7
- * Used by all range-bearing compatibility fields in descriptors and manifests.
8
- */
9
- type VersionRange = string;
10
- /**
11
- * Exact semver version (e.g. `"1.0.72"`).
12
- *
13
- * Used for concrete version pins such as preferred binary versions.
14
- */
15
- type VersionLiteral = string;
16
- /** Validates that the string is a valid npm semver range. */
17
- declare const VersionRangeSchema: z.ZodString;
18
- /**
19
- * Check whether a concrete version satisfies a semver range.
20
- *
21
- * Centralizes the `{ includePrerelease: true }` policy so every compatibility
22
- * check in the framework uses the same semantics.
23
- * @param version - Concrete semver version string.
24
- * @param range - npm semver range to test against.
25
- * @returns `true` when the version falls within the range.
26
- */
27
- declare function versionSatisfies(version: string, range: VersionRange): boolean;
28
- /**
29
- * Check whether a semver range is a universal wildcard (`*`, `>=0.0.0`, etc.).
30
- *
31
- * Uses the `semver` library's normalization so all universal range syntaxes are
32
- * recognized, not just the literal `'*'` string.
33
- * @param range - Semver range to test.
34
- * @returns `true` when the range matches any version.
35
- */
36
- declare function isUniversalRange(range: string): boolean;
37
- /** Validates that the string is an exact semver version. */
38
- declare const VersionLiteralSchema: z.ZodString;
39
- //#endregion
40
- //#region core/contracts/src/client/definition.d.ts
41
- /**
42
- * Schema for a capability annotation attached to a native client tool.
43
- *
44
- * Captures a capability tag (e.g. `'shell.execute'`) and an optional
45
- * human-readable description so the Harness UI can explain what a tool does
46
- * without coupling to the platform capability taxonomy.
47
- */
48
- declare const ClientToolCapabilityAnnotationSchema: z.ZodObject<{
49
- tag: z.ZodString;
50
- description: z.ZodOptional<z.ZodString>;
51
- }, z.core.$strip>;
52
- type ClientToolCapabilityAnnotation = z.infer<typeof ClientToolCapabilityAnnotationSchema>;
53
- /**
54
- * Schema for a single native tool provided by a client binary.
55
- *
56
- * Native tools are those the client binary exposes directly (e.g. `bash`,
57
- * `file_edit`). They are declared by the client package and seeded into
58
- * the harness at startup.
59
- */
60
- declare const ClientToolDefinitionSchema: z.ZodObject<{
61
- name: z.ZodString;
62
- friendlyName: z.ZodString;
63
- description: z.ZodOptional<z.ZodString>;
64
- category: z.ZodOptional<z.ZodString>;
65
- capabilities: z.ZodDefault<z.ZodArray<z.ZodObject<{
66
- tag: z.ZodString;
67
- description: z.ZodOptional<z.ZodString>;
68
- }, z.core.$strip>>>;
69
- }, z.core.$strip>;
70
- type ClientToolDefinition = z.infer<typeof ClientToolDefinitionSchema>;
71
- /**
72
- * Schema for a log source definition contributed by a client package.
73
- *
74
- * Log sources describe where the client binary writes conversation logs so the
75
- * Makaio log-import service can discover and ingest them.
76
- */
77
- declare const LogSourceDefinitionSchema: z.ZodObject<{
78
- id: z.ZodString;
79
- name: z.ZodString;
80
- description: z.ZodOptional<z.ZodString>;
81
- glob: z.ZodOptional<z.ZodString>;
82
- }, z.core.$strip>;
83
- type LogSourceDefinition = z.infer<typeof LogSourceDefinitionSchema>;
84
- /**
85
- * Schema for a hook event declaration on a client definition.
86
- *
87
- * Declares which native hook events the client binary fires. Used by the
88
- * wiring layer to know what hooks to install, and by the UI to display
89
- * available events.
90
- */
91
- declare const ClientHookEventDeclarationSchema: z.ZodObject<{
92
- name: z.ZodString;
93
- frameworkSubject: z.ZodOptional<z.ZodString>;
94
- mode: z.ZodDefault<z.ZodEnum<{
95
- request: "request";
96
- event: "event";
97
- }>>;
98
- }, z.core.$strip>;
99
- type ClientHookEventDeclaration = z.infer<typeof ClientHookEventDeclarationSchema>;
100
- /**
101
- * Schema for the config isolation descriptor on a client definition.
102
- *
103
- * Describes the environment variable and default path the client binary uses
104
- * for config isolation. Most clients accept a directory path. Some clients only
105
- * expose a file-level override, so `pathKind` records which value shape the env
106
- * var expects.
107
- */
108
- declare const ConfigIsolationSchema: z.ZodObject<{
109
- envVar: z.ZodString;
110
- defaultPath: z.ZodString;
111
- pathKind: z.ZodDefault<z.ZodEnum<{
112
- file: "file";
113
- directory: "directory";
114
- }>>;
115
- }, z.core.$strip>;
116
- type ConfigIsolation = z.infer<typeof ConfigIsolationSchema>;
117
- /**
118
- * Install descriptor for the `npm` strategy.
119
- *
120
- * The manager runs a sandboxed `npm install --prefix <targetDir>` for the
121
- * pinned package version so managed installs do not mutate global npm state.
122
- * An exact version pin is required; floating ranges are not accepted so the
123
- * framework can reproduce the same binary across machines and time.
124
- */
125
- declare const NpmInstallDescriptorSchema: z.ZodObject<{
126
- type: z.ZodLiteral<"npm">;
127
- package: z.ZodString;
128
- version: z.ZodString;
129
- }, z.core.$strip>;
130
- type NpmInstallDescriptor = z.infer<typeof NpmInstallDescriptorSchema>;
131
- /**
132
- * Install descriptor for the `signed-binary-bucket` strategy.
133
- *
134
- * The manager fetches a GPG-signed manifest from a versioned bucket path,
135
- * verifies the manifest signature against the declared public key, selects the
136
- * per-platform binary, downloads it, and verifies its checksum before
137
- * activating the install.
138
- *
139
- * All bucket paths are Go-style templates: `{version}` is replaced with the
140
- * resolved version string and `{platform}` / `{binary}` are replaced with the
141
- * per-platform values from the `platforms` map.
142
- */
143
- declare const SignedBinaryBucketInstallDescriptorSchema: z.ZodObject<{
144
- type: z.ZodLiteral<"signed-binary-bucket">;
145
- version: z.ZodString;
146
- config: z.ZodObject<{
147
- baseUrl: z.ZodString;
148
- manifestPathTemplate: z.ZodString;
149
- manifestSignaturePathTemplate: z.ZodString;
150
- publicKeyUrl: z.ZodString;
151
- publicKeyFingerprint: z.ZodString;
152
- binaryPathTemplate: z.ZodString;
153
- platforms: z.ZodRecord<z.ZodString, z.ZodString>;
154
- }, z.core.$strip>;
155
- }, z.core.$strip>;
156
- type SignedBinaryBucketInstallDescriptor = z.infer<typeof SignedBinaryBucketInstallDescriptorSchema>;
157
- /**
158
- * Discriminated union of all supported managed install descriptors.
159
- *
160
- * Two strategies are supported:
161
- * - `npm` — npm registry installation with an exact version pin.
162
- * - `signed-binary-bucket` — signed static bucket download with an exact version pin.
163
- *
164
- * The descriptor is purely declarative; no runtime logic lives here.
165
- */
166
- declare const ManagedInstallDescriptorSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
167
- type: z.ZodLiteral<"npm">;
168
- package: z.ZodString;
169
- version: z.ZodString;
170
- }, z.core.$strip>, z.ZodObject<{
171
- type: z.ZodLiteral<"signed-binary-bucket">;
172
- version: z.ZodString;
173
- config: z.ZodObject<{
174
- baseUrl: z.ZodString;
175
- manifestPathTemplate: z.ZodString;
176
- manifestSignaturePathTemplate: z.ZodString;
177
- publicKeyUrl: z.ZodString;
178
- publicKeyFingerprint: z.ZodString;
179
- binaryPathTemplate: z.ZodString;
180
- platforms: z.ZodRecord<z.ZodString, z.ZodString>;
181
- }, z.core.$strip>;
182
- }, z.core.$strip>], "type">;
183
- type ManagedInstallDescriptor = z.infer<typeof ManagedInstallDescriptorSchema>;
184
- /**
185
- * Platform-aware command descriptor for querying the installed binary version.
186
- *
187
- * The `executable` field may be a single relative path string (used on all
188
- * platforms) or a platform-keyed object that overrides the `default` executable
189
- * on specific operating systems.
190
- *
191
- * All executable values are resolved relative to the managed install directory
192
- * — absolute paths and parent-directory traversals (`..`) are rejected by the
193
- * `ClientDefinitionSchema` refinement.
194
- */
195
- declare const VersionCommandSchema: z.ZodObject<{
196
- executable: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
197
- default: z.ZodString;
198
- darwin: z.ZodOptional<z.ZodString>;
199
- linux: z.ZodOptional<z.ZodString>;
200
- win32: z.ZodOptional<z.ZodString>;
201
- }, z.core.$strict>]>;
202
- args: z.ZodDefault<z.ZodArray<z.ZodString>>;
203
- }, z.core.$strict>;
204
- type VersionCommand = z.infer<typeof VersionCommandSchema>;
205
- /**
206
- * Optional post-install action descriptor.
207
- *
208
- * Carries an open-ended `kind` string so the runtime can dispatch to a
209
- * registered post-install handler without the contracts layer enumerating
210
- * every possible action.
211
- */
212
- declare const PostInstallDescriptorSchema: z.ZodObject<{
213
- kind: z.ZodString;
214
- payload: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
215
- }, z.core.$strip>;
216
- type PostInstallDescriptor = z.infer<typeof PostInstallDescriptorSchema>;
217
- /**
218
- * Declarative runtime capability flags for a client package.
219
- *
220
- * These flags are static declarations contributed by the client package.
221
- * They inform Makaio which observation and launch mechanisms the client
222
- * supports so the framework can activate the appropriate producers and
223
- * adapt its behaviour without runtime probing.
224
- *
225
- * All flags default to `false` so packages only need to opt in to what they
226
- * actually support.
227
- */
228
- declare const ClientRuntimeCapabilitiesSchema: z.ZodObject<{
229
- supportsHooks: z.ZodDefault<z.ZodBoolean>;
230
- supportsStatusline: z.ZodDefault<z.ZodBoolean>;
231
- supportsSupervisorLaunch: z.ZodDefault<z.ZodBoolean>;
232
- supportsManagedBinary: z.ZodDefault<z.ZodBoolean>;
233
- hookEvents: z.ZodDefault<z.ZodArray<z.ZodObject<{
234
- name: z.ZodString;
235
- frameworkSubject: z.ZodOptional<z.ZodString>;
236
- mode: z.ZodDefault<z.ZodEnum<{
237
- request: "request";
238
- event: "event";
239
- }>>;
240
- }, z.core.$strip>>>;
241
- }, z.core.$strip>;
242
- type ClientRuntimeCapabilities = z.infer<typeof ClientRuntimeCapabilitiesSchema>;
243
- /**
244
- * Binary compatibility descriptor for a client definition.
245
- *
246
- * Groups all binary-related compatibility information: the executable name
247
- * used for PATH detection and the version range the framework supports.
248
- */
249
- interface ClientBinaryCompatibility {
250
- /** Binary name used for CLI detection (e.g. `'claude'` for the `claude` binary on `PATH`). */
251
- readonly name: string;
252
- /**
253
- * npm semver range of supported binary versions
254
- * (e.g. `'>=1.0.0'`, `'^2.0.0'`).
255
- */
256
- readonly supportedVersions: VersionRange;
257
- }
258
- /** Zod schema for {@link ClientBinaryCompatibility}. */
259
- declare const ClientBinaryCompatibilitySchema: z.ZodObject<{
260
- name: z.ZodString;
261
- supportedVersions: z.ZodString;
262
- }, z.core.$strict>;
263
- /**
264
- * Static definition for a Makaio client package.
265
- *
266
- * Each client package (e.g. `@makaio/client-claude-code`) exports exactly one
267
- * `ClientDefinition` object. The bootstrap service discovers and seeds these
268
- * definitions into the `clients` storage table on startup.
269
- *
270
- * Key fields:
271
- * - `runtimeCapabilities` — capability flags (hooks, managed binary, etc.)
272
- * - `managedInstall` — install descriptor when Makaio manages the binary.
273
- * - `configIsolation` — env var and default path for config isolation.
274
- * Used by both managed and global binaries; see {@link ConfigIsolationSchema}.
275
- */
276
- declare const ClientDefinitionSchema: z.ZodObject<{
277
- id: z.ZodString;
278
- name: z.ZodString;
279
- version: z.ZodString;
280
- description: z.ZodOptional<z.ZodString>;
281
- binary: z.ZodOptional<z.ZodObject<{
282
- name: z.ZodString;
283
- supportedVersions: z.ZodString;
284
- }, z.core.$strict>>;
285
- nativeTools: z.ZodDefault<z.ZodArray<z.ZodObject<{
286
- name: z.ZodString;
287
- friendlyName: z.ZodString;
288
- description: z.ZodOptional<z.ZodString>;
289
- category: z.ZodOptional<z.ZodString>;
290
- capabilities: z.ZodDefault<z.ZodArray<z.ZodObject<{
291
- tag: z.ZodString;
292
- description: z.ZodOptional<z.ZodString>;
293
- }, z.core.$strip>>>;
294
- }, z.core.$strip>>>;
295
- defaultApprovalPolicy: z.ZodEnum<{
296
- reject: "reject";
297
- "always-ask": "always-ask";
298
- "full-access": "full-access";
299
- }>;
300
- logSources: z.ZodOptional<z.ZodArray<z.ZodObject<{
301
- id: z.ZodString;
302
- name: z.ZodString;
303
- description: z.ZodOptional<z.ZodString>;
304
- glob: z.ZodOptional<z.ZodString>;
305
- }, z.core.$strip>>>;
306
- authMethods: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
307
- id: z.ZodString;
308
- mode: z.ZodLiteral<"explicit">;
309
- label: z.ZodString;
310
- description: z.ZodOptional<z.ZodString>;
311
- fields: z.ZodArray<z.ZodObject<{
312
- id: z.ZodString;
313
- label: z.ZodString;
314
- description: z.ZodOptional<z.ZodString>;
315
- required: z.ZodBoolean;
316
- secret: z.ZodBoolean;
317
- sourceHints: z.ZodArray<z.ZodObject<{
318
- kind: z.ZodLiteral<"environment">;
319
- variable: z.ZodString;
320
- }, z.core.$strict>>;
321
- }, z.core.$strict>>;
322
- }, z.core.$strict>, z.ZodObject<{
323
- id: z.ZodString;
324
- mode: z.ZodLiteral<"inferred">;
325
- label: z.ZodString;
326
- description: z.ZodOptional<z.ZodString>;
327
- }, z.core.$strict>, z.ZodObject<{
328
- id: z.ZodString;
329
- mode: z.ZodLiteral<"none">;
330
- label: z.ZodString;
331
- description: z.ZodOptional<z.ZodString>;
332
- }, z.core.$strict>], "mode">>;
333
- defaultAuth: z.ZodOptional<z.ZodObject<{
334
- providerDefinitionId: z.ZodString;
335
- methodId: z.ZodString;
336
- }, z.core.$strict>>;
337
- runtimeCapabilities: z.ZodPipe<z.ZodOptional<z.ZodObject<{
338
- supportsHooks: z.ZodDefault<z.ZodBoolean>;
339
- supportsStatusline: z.ZodDefault<z.ZodBoolean>;
340
- supportsSupervisorLaunch: z.ZodDefault<z.ZodBoolean>;
341
- supportsManagedBinary: z.ZodDefault<z.ZodBoolean>;
342
- hookEvents: z.ZodDefault<z.ZodArray<z.ZodObject<{
343
- name: z.ZodString;
344
- frameworkSubject: z.ZodOptional<z.ZodString>;
345
- mode: z.ZodDefault<z.ZodEnum<{
346
- request: "request";
347
- event: "event";
348
- }>>;
349
- }, z.core.$strip>>>;
350
- }, z.core.$strip>>, z.ZodTransform<{
351
- supportsHooks: boolean;
352
- supportsStatusline: boolean;
353
- supportsSupervisorLaunch: boolean;
354
- supportsManagedBinary: boolean;
355
- hookEvents: {
356
- name: string;
357
- mode: "request" | "event";
358
- frameworkSubject?: string | undefined;
359
- }[];
360
- }, {
361
- supportsHooks: boolean;
362
- supportsStatusline: boolean;
363
- supportsSupervisorLaunch: boolean;
364
- supportsManagedBinary: boolean;
365
- hookEvents: {
366
- name: string;
367
- mode: "request" | "event";
368
- frameworkSubject?: string | undefined;
369
- }[];
370
- } | undefined>>;
371
- managedInstall: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
372
- type: z.ZodLiteral<"npm">;
373
- package: z.ZodString;
374
- version: z.ZodString;
375
- }, z.core.$strip>, z.ZodObject<{
376
- type: z.ZodLiteral<"signed-binary-bucket">;
377
- version: z.ZodString;
378
- config: z.ZodObject<{
379
- baseUrl: z.ZodString;
380
- manifestPathTemplate: z.ZodString;
381
- manifestSignaturePathTemplate: z.ZodString;
382
- publicKeyUrl: z.ZodString;
383
- publicKeyFingerprint: z.ZodString;
384
- binaryPathTemplate: z.ZodString;
385
- platforms: z.ZodRecord<z.ZodString, z.ZodString>;
386
- }, z.core.$strip>;
387
- }, z.core.$strip>], "type">>;
388
- versionCommand: z.ZodOptional<z.ZodObject<{
389
- executable: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
390
- default: z.ZodString;
391
- darwin: z.ZodOptional<z.ZodString>;
392
- linux: z.ZodOptional<z.ZodString>;
393
- win32: z.ZodOptional<z.ZodString>;
394
- }, z.core.$strict>]>;
395
- args: z.ZodDefault<z.ZodArray<z.ZodString>>;
396
- }, z.core.$strict>>;
397
- postInstall: z.ZodOptional<z.ZodObject<{
398
- kind: z.ZodString;
399
- payload: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
400
- }, z.core.$strip>>;
401
- configIsolation: z.ZodOptional<z.ZodObject<{
402
- envVar: z.ZodString;
403
- defaultPath: z.ZodString;
404
- pathKind: z.ZodDefault<z.ZodEnum<{
405
- file: "file";
406
- directory: "directory";
407
- }>>;
408
- }, z.core.$strip>>;
409
- }, z.core.$strict>;
410
- type ClientDefinitionInput = z.input<typeof ClientDefinitionSchema>;
411
- type ClientDefinition = z.infer<typeof ClientDefinitionSchema>;
412
- //#endregion
413
- export { VersionRange as A, PostInstallDescriptorSchema as C, VersionCommandSchema as D, VersionCommand as E, isUniversalRange as M, versionSatisfies as N, VersionLiteral as O, PostInstallDescriptor as S, SignedBinaryBucketInstallDescriptorSchema as T, LogSourceDefinitionSchema as _, ClientDefinitionSchema as a, NpmInstallDescriptor as b, ClientRuntimeCapabilities as c, ClientToolCapabilityAnnotationSchema as d, ClientToolDefinition as f, LogSourceDefinition as g, ConfigIsolationSchema as h, ClientDefinitionInput as i, VersionRangeSchema as j, VersionLiteralSchema as k, ClientRuntimeCapabilitiesSchema as l, ConfigIsolation as m, ClientBinaryCompatibilitySchema as n, ClientHookEventDeclaration as o, ClientToolDefinitionSchema as p, ClientDefinition as r, ClientHookEventDeclarationSchema as s, ClientBinaryCompatibility as t, ClientToolCapabilityAnnotation as u, ManagedInstallDescriptor as v, SignedBinaryBucketInstallDescriptor as w, NpmInstallDescriptorSchema as x, ManagedInstallDescriptorSchema as y };
@@ -1,57 +0,0 @@
1
- import{agents as e}from"./services/session/storage/schema.mjs";import{n as t,t as n}from"./schema-cus0dJ81.mjs";import{i as r,n as i,r as a}from"./namespace-DwQtzlY-.mjs";import{TurnStorageSubjects as o}from"./services/turn/namespace.mjs";import{SessionStorageSubjects as s}from"./services/session/storage/namespace.mjs";import{n as c}from"./namespace-D7pE2QWv.mjs";import{ProviderStorageSubjects as l}from"./services/settings/storage/providers-namespace.mjs";import{a as u,o as d}from"./provider-context-BYkMl--1.mjs";import{AdapterRuntimeSubjects as f}from"./services/adapter-runtime/namespace.mjs";import{ExecutionTargetSubjects as p}from"./services/execution-target/namespace.mjs";import{MessageStorageSubjects as m}from"./services/session/messages/namespace.mjs";import"./services/session/turns/namespace.mjs";import{ExtractedContextSchema as h}from"./services/compression/schemas.mjs";import{PreferencesSubjects as g}from"./services/preferences/storage-namespace.mjs";import{z as _}from"zod";import{AdapterSubjects as v,AgentResolutionSubjects as y,AgentStatusSchema as b,AgentSubjects as x,MakaioSessionAgentSchema as S,ProviderContextSchema as C,SessionSubjects as w,TurnInitiatorSchema as T,TurnUsageSchema as ee}from"@makaio/framework/contracts";import{defineDialectSchema as te,getRawSqlExecutor as ne,getStorageEngine as re,resolveSchema as E}from"@makaio/framework/storage/drizzle";import{and as D,asc as O,desc as k,eq as A,gt as ie,inArray as j,lt as ae,sql as M}from"drizzle-orm";import{createStorageNamespaceDefinition as oe}from"@makaio/framework/storage";import{HookAbortError as se}from"@makaio/framework/hooks";import{AdapterRuntimeSubjects as ce}from"@makaio/framework/services/adapter-runtime";import{resolveRuntimeProviderContext as le}from"@makaio/framework/services/provider-context";function ue(e,t,n,r){return e.on(i.append,e=>{let{event:i}=e.payload,a=t.get(i.sessionId)??[];if(n.has(i.eventId)){e.setResult({success:!0});return}a.push(i),t.set(i.sessionId,a),n.set(i.eventId,r()),e.setResult({success:!0})})}function de(e,t,n){return e.on(i.getEvents,e=>{let{sessionId:r,options:i}=e.payload,a=t.get(r)??[],o=i?.order??`asc`,s=o===`desc`?[...a].reverse():a,c=0;if(i?.after&&/^\d+$/.test(i.after)){let t=Number(i.after),r=s.findIndex(e=>{let r=n.get(e.eventId)??-1;return o===`desc`?r<t:r>t});if(r===-1){e.setResult({events:[],nextCursor:null,totalCount:a.length});return}c=r}let l=s.slice(c);if(i?.types&&i.types.length>0){let e=new Set(i.types);l=l.filter(t=>e.has(t.type))}let u=i?.limit??100,d=l.length>u,f=l.slice(0,u),p=null;if(d&&f.length>0){let e=f[f.length-1],t=n.get(e.eventId);t!==void 0&&(p=t.toString())}e.setResult({events:f,nextCursor:p,totalCount:a.length})})}function fe(e,t){return e.on(i.getByIds,e=>{let{sessionId:n,eventIds:r}=e.payload,i=t.get(n)??[],a=new Set(r),o=i.filter(e=>a.has(e.eventId));e.setResult({events:o})})}function pe(e,t,n){return e.on(i.deleteBySession,e=>{let{sessionId:r}=e.payload,i=t.get(r);if(i)for(let e of i)n.delete(e.eventId);let a=i?.length??0;t.delete(r),e.setResult({success:!0,deletedCount:a})})}function me(e,t){return e.on(i.getEventsBySessions,e=>{let{sessionIds:n,types:r,limitPerSession:i=50}=e.payload;if(n.length===0||r.length===0){e.setResult({eventsBySession:{}});return}let a=new Set(r),o={};for(let e of n){let n=(t.get(e)??[]).filter(e=>a.has(e.type)).reverse().slice(0,i);n.length>0&&(o[e]=n)}e.setResult({eventsBySession:o})})}function he(e){let t=new Map,n=new Map,r=1,i=[ue(e,t,n,()=>r++),de(e,t,n),fe(e,t),pe(e,t,n),me(e,t)];return()=>i.forEach(e=>e())}const ge=r.postgres,_e=te({sessionEvents:a},{sessionEvents:ge}),ve=[`sessionId`,`agentId`,`adapterId`,`messageId`,`turnId`];function ye(e){let t=e.payload,n={};for(let[e,r]of Object.entries(t))ve.includes(e)||(n[e]=r);return n}function N(e){let t=JSON.parse(e.payload),n=e.type===`message`?e.messageId:e.originatingMessageId,r={...t,sessionId:e.sessionId,...e.agentId&&{agentId:e.agentId},...e.adapterId&&{adapterId:e.adapterId},...n&&{messageId:n},...e.type===`message`?{turnId:e.turnId??null}:e.turnId&&{turnId:e.turnId}};return{sessionId:e.sessionId,eventId:e.eventId,timestamp:e.timestamp,type:e.type,payload:r}}function be(e){switch(e.type){case`user_message.sent`:{let t=e.payload.content;return typeof t==`string`?t:(Array.isArray(t.blocks)?t.blocks:[t.blocks]).filter(e=>e.type===`text`).map(e=>e.content).join(`
2
- `)}case`agent.added`:case`user_message.acknowledged`:case`user_message.completed`:case`turn.started`:case`turn.completed`:case`message`:case`branch.created`:case`branch.merged`:case`squash`:return null;default:return xe(e.payload)}}function xe(e){let t=e.contentText;if(typeof t==`string`&&t.length>0)return t;let n=e.summary;return typeof n==`string`&&n.length>0?n:null}function Se({bus:e,db:t,sessionEvents:n}){return e.on(i.append,async e=>{let{event:r}=e.payload,i=`payload`in r&&`agentId`in r.payload?r.payload.agentId:null,a=`payload`in r&&`adapterId`in r.payload?r.payload.adapterId:null,o=`payload`in r&&`turnId`in r.payload?r.payload.turnId:null,s=`payload`in r&&`messageId`in r.payload?r.payload.messageId:null,c=r.type===`message`?s:null,l=r.type===`message`?null:s,u={sessionId:r.sessionId,eventId:r.eventId,timestamp:r.timestamp,type:r.type,agentId:i,adapterId:a,messageId:c,originatingMessageId:l,turnId:o,contentText:be(r),payload:JSON.stringify(ye(r))};await t.insert(n).values(u).onConflictDoNothing(),e.setResult({success:!0})})}function Ce({bus:e,db:t,sessionEvents:n}){return e.on(i.getEvents,async e=>{let{sessionId:r,options:i}=e.payload,a=[A(n.sessionId,r)],o=i?.order??`asc`;if(i?.after){let e=parseInt(i.after,10);!isNaN(e)&&e>0&&(o===`desc`?a.push(ae(n.id,e)):a.push(ie(n.id,e)))}i?.types&&i.types.length>0&&a.push(j(n.type,i.types));let s=i?.limit??100,c=o===`desc`?k:O,l=await t.select().from(n).where(D(...a)).orderBy(c(n.id)).limit(s+1),u=l.length>s,d=u?l.slice(0,s):l,f=d.map(N),p=u&&d.length>0?d[d.length-1].id.toString():null;e.setResult({events:f,nextCursor:p})})}function we({bus:e,db:t,sessionEvents:n}){return e.on(i.getByIds,async e=>{let{sessionId:r,eventIds:i}=e.payload,a=(await t.select().from(n).where(D(A(n.sessionId,r),j(n.eventId,i))).orderBy(O(n.timestamp))).map(N);e.setResult({events:a})})}function Te({bus:e,db:t,sessionEvents:n}){return e.on(i.deleteBySession,async e=>{let{sessionId:r}=e.payload,i=(await t.select().from(n).where(A(n.sessionId,r))).length;await t.delete(n).where(A(n.sessionId,r)),e.setResult({success:!0,deletedCount:i})})}function Ee({bus:e,db:t,sessionEvents:n}){return e.on(i.getEventsBySessions,async e=>{let{sessionIds:r,types:i,limitPerSession:a=50}=e.payload;if(r.length===0||i.length===0){e.setResult({eventsBySession:{}});return}let o={};for(let e of r){let r=await t.select().from(n).where(D(A(n.sessionId,e),j(n.type,i))).orderBy(k(n.timestamp)).limit(a);r.length>0&&(o[e]=r.map(N))}e.setResult({eventsBySession:o})})}function De(e,t){let{sessionEvents:n}=E(t,_e),r={bus:e,db:t,sessionEvents:n},i=[Se(r),Ce(r),we(r),Te(r),Ee(r)];return()=>i.forEach(e=>e())}async function P(e,t,n){let r={sessionId:t.sessionId,eventId:t.eventId??crypto.randomUUID(),timestamp:t.timestamp??Date.now(),type:t.type,payload:t.payload},a=n?n(r):r;a&&await e.requestOptional(i.append,{event:a})}async function Oe(e,t){await P(e,{type:`turn.started`,sessionId:t.sessionId,eventId:`turn.started:${t.turnId}`,payload:t});try{await e.emit(w.turn.started,t)}catch(e){console.error(`[SessionLifecycle] Failed to emit turn.started for turn ${t.turnId}:`,e)}}async function ke(e,t){try{await e.emit(w.user_message.sent,t)}catch(e){console.error(`[SessionLifecycle] Failed to emit user_message.sent for turn ${t.turnId}:`,e)}}function Ae(e,t){let n=[e.on(w.agent.added,async n=>{await je(e,{type:`agent.added`,sessionId:n.payload.sessionId,payload:n.payload},t)}),e.on(w.branch.created,async n=>{await je(e,{type:`branch.created`,sessionId:n.payload.sessionId,payload:n.payload},t)})];return()=>{for(let e of n)e()}}async function je(e,t,n){try{await P(e,t,n)}catch(e){console.warn(`[session-lifecycle-events] Failed to persist subscription lifecycle event`,{type:t.type,sessionId:t.sessionId,error:e instanceof Error?e.message:String(e)})}}async function F(e,t){let{verdict:n}=t;if(n.kind===`native`)return;let r=crypto.randomUUID(),i=Date.now(),a={sessionId:t.sessionId,eventId:r,timestamp:i,intent:t.intent,...t.agentId!==void 0&&{agentId:t.agentId},...t.adapterId!==void 0&&{adapterId:t.adapterId},...t.turnId!==void 0&&{turnId:t.turnId}},o=n.kind===`degrade`?{...a,verdictKind:`degrade`,reason:n.reason}:{...a,verdictKind:`foreign`,foreignMachineId:n.machineId};try{await P(e,{type:`locality.degraded`,sessionId:t.sessionId,eventId:r,timestamp:i,payload:o})}catch(e){console.warn(`[session-lifecycle-events] Failed to persist locality.degraded event`,{sessionId:t.sessionId,error:e instanceof Error?e.message:String(e)})}try{await e.emit(w.locality.degraded,o)}catch(e){console.warn(`[session-lifecycle-events] Failed to emit live locality.degraded event`,{sessionId:t.sessionId,error:e instanceof Error?e.message:String(e)})}}const Me=oe(`agent`,{schemas:{get:{request:_.object({agentId:_.string()}),response:_.object({agent:S.nullable()})},set:{request:_.object({agentId:_.string(),agent:S}),response:_.object({success:_.boolean()})},delete:{request:_.object({agentId:_.string()}),response:_.object({success:_.boolean()})},listByAdapter:{request:_.object({adapterName:_.string(),status:_.enum([`idle`,`active`,`dead`,`disposed`,`all`]).optional()}),response:_.object({agents:_.array(S)})},listBySession:{request:_.object({sessionId:_.string()}),response:_.object({agents:_.array(S)})},updateStatus:{request:_.object({agentId:_.string(),status:b}),response:_.object({success:_.boolean()})},updateActivity:{request:_.object({agentId:_.string(),lastActivityAt:_.number()}),response:_.object({success:_.boolean()})},updateRuntime:{request:_.object({agentId:_.string(),adapterId:_.string().optional(),adapterSessionId:_.string().optional(),cwd:_.string().optional(),model:_.string().optional(),allowedDirectories:_.array(_.string()).optional(),providerConfigId:_.string().nullable().optional()}).refine(e=>e.adapterId!==void 0||e.adapterSessionId!==void 0||e.cwd!==void 0||e.model!==void 0||e.allowedDirectories!==void 0||e.providerConfigId!==void 0,{message:`At least one runtime field (adapterId, adapterSessionId, cwd, model, allowedDirectories, or providerConfigId) must be provided`}),response:_.object({success:_.boolean()})}},extensions:{drizzle:{agents:e}}}),Ne=Me.subjects;async function I(e,t,n){let{adapterId:r}=await e.request(f.resolveId,{adapterName:t,...n!==void 0&&{machineId:n}});return r}async function Pe(e,t,n){if(!(!t||!n))try{let{config:r}=await e.request(c.getProviderConfig,{id:t});if(!r)return;let{provider:i}=await e.request(l.get,{id:r.definitionId}),a=i?.availableModels?.find(e=>e.name===n);return a?{supportedReasoningLevels:a.supportedReasoningLevels}:void 0}catch{return}}async function Fe(e,t){let{executionTarget:n}=await e.request(p.resolve,t);return n}async function Ie(e,t){let{sessionId:n,limit:r}=t,a=[],o=!1,s=!1,c;do{let{events:t,nextCursor:l}=await e.request(i.getEvents,{sessionId:n,options:{limit:1e4,...c&&{after:c}}});for(let i of t){if(i.type===`squash`){o=!0,a.length=0;let e=i.payload,t={messageId:`squash-${i.eventId}`,sessionId:n,turnId:null,role:`assistant`,contentText:e.summaryJson,blocks:[{type:`text`,content:e.summaryJson}],timestamp:i.timestamp};a.push(t)}else if(i.type===`message`){let t=i.payload,{message:n}=await e.request(m.get,{messageId:t.messageId});n&&a.push(n)}if(r&&a.length>=r){s=!0;break}}if(r&&a.length>=r)break;c=l??void 0}while(c);return{messages:a,hasSquashBoundary:o,sessionChain:[n],truncated:s,incomplete:!1}}const L=new class{actions=new Map;register(e){if(this.actions.has(e.id))throw Error(`Action already registered: ${e.id}`);this.actions.set(e.id,e)}get(e){return this.actions.get(e)}getAll(){return Array.from(this.actions.values())}getByCategory(e){return this.getAll().filter(t=>t.category===e)}reset(){this.actions.clear()}};async function R(e,t,n){let r=e,i,a;for(let e of t){let t=L.get(e.actionId);if(!t)throw Error(`Unknown action: ${e.actionId}`);let o={...n,...e.options},s=await t.execute(r,o);if(s.kind===`messages`)r=s.messages;else{i=s.json,a=s.tokenEstimate,r=[];break}}if(!i&&r.length>0){let e=r.reduce((e,t)=>e+JSON.stringify(t.blocks).length,0);a=Math.ceil(e/4)}return{messages:r,contextJson:i,tokenEstimate:a}}function Le(e){return e.map(e=>({...e,blocks:e.blocks.filter(e=>e.type!==`reasoning`)}))}const Re={id:`strip-reasoning`,label:`Strip Reasoning`,description:`Remove reasoning/thinking blocks from messages`,category:`transformation`,async execute(e){return{kind:`messages`,messages:Le(e)}}};function ze(e){return e.map(e=>({...e,blocks:e.blocks.map(e=>{if(e.type===`tool_output`){let t=e.output.length;return{...e,output:`[output removed - ${t} chars]`}}return e})}))}const Be={id:`strip-tool-outputs`,label:`Strip Tool Outputs`,description:`Remove tool output contents, keep structure`,category:`transformation`,async execute(e){return{kind:`messages`,messages:ze(e)}}};async function z(e,t){let n=[],r=[],i=[],a=!1,o=!1,c=!1,l=[],u,d=t,f;for(;d;){let n=await e.request(s.get,{sessionId:d});if(!n.session){c=!0;break}d===t&&(u=n.session.forkTransforms??void 0),l.unshift({sessionId:d,forkPointMessageId:n.session.forkPointMessageId??void 0}),f=n.session.parentSessionId??void 0,d=f}for(let t=0;t<l.length;t++){let{sessionId:s}=l[t],c=t===l.length-1,u=l[t+1]?.forkPointMessageId;n.push(s);let d=await Ie(e,{sessionId:s});if(d.hasSquashBoundary&&(a=!0,c||(r.length=0)),d.truncated&&(o=!0),c)i=d.messages;else for(let e of d.messages)if(r.push(e),u&&e.messageId===u)break}return u&&(r=await Ve(r,u)),{messages:[...r,...i],hasSquashBoundary:a,sessionChain:n,truncated:o,incomplete:c}}async function Ve(e,t){if(t.segments?.length){let n=t.segments[0].fromMessageId,r=t.segments[t.segments.length-1].toMessageId,i=e.findIndex(e=>e.messageId===n),a=e.findIndex(e=>e.messageId===r);if(i===-1||a===-1||i>a)return Ue(e,t.segments);let o=e.slice(0,i),s=e.slice(i,a+1),c=e.slice(a+1),l=Ue(s,t.segments);return[...o,...l,...c]}let n=e;if(t.removedMessageIds?.length){let e=new Set(t.removedMessageIds);n=n.filter(t=>!e.has(t.messageId))}return t.appliedPipeline?.length&&(n=(await R(n,t.appliedPipeline)).messages),n}function He(e,t){let n=e;return t.stripReasoning&&(n=Le(n)),t.stripToolOutputs&&(n=ze(n)),n}function Ue(e,t){let n=new Map;for(let t=0;t<e.length;t++)n.set(e[t].messageId,t);let r=[];for(let i of t){let t=n.get(i.fromMessageId),a=n.get(i.toMessageId);if(t===void 0||a===void 0){console.warn(`[getFullConversation] Skipping segment with missing boundary IDs`,{segmentKey:`${i.fromMessageId}..${i.toMessageId}`,fromMessageId:i.fromMessageId,toMessageId:i.toMessageId,hasFrom:t!==void 0,hasTo:a!==void 0});continue}let o=e.slice(t,a+1),s;switch(i.policy){case`exclude`:s=[];break;case`summarize`:if(i.summaryText){if(o.length===0)throw Error(`Cannot create synthetic summary message for empty segment: ${i.fromMessageId}..${i.toMessageId}`);s=[{messageId:`summary-${i.fromMessageId}-${i.toMessageId}`,turnId:null,sessionId:o[0].sessionId,role:`assistant`,contentText:i.summaryText,blocks:[{type:`text`,content:i.summaryText}],timestamp:o[o.length-1].timestamp}]}else s=o;break;default:s=o;break}if((i.policy!==`summarize`||!i.summaryText)&&i.overrides&&Object.keys(i.overrides).length>0){let e=new Set(Object.entries(i.overrides).filter(([,e])=>e===`exclude`).map(([e])=>e));s=s.filter(t=>!e.has(t.messageId))}s=He(s,i),r.push(...s)}return r}function B(e){return{role:e.role,blocks:e.blocks}}async function We(e,t){return{messageHistory:(await z(e,t.sessionId)).messages.map(B),isFirstTurn:!0}}async function Ge(e,t,n,r){if(t.cwd===n)return{swapped:!1};let i=await e.request(x.cwd.change,{agentId:t.agentId,adapterId:t.adapterId,adapterName:t.adapterName,adapterSessionId:t.adapterSessionId??``,sessionId:t.sessionId,newCwd:n,...r?.skipWarning?{skipWarning:!0}:{}});if(!i.success)throw Error(`Failed to change cwd for agent ${t.agentId}: ${i.reason??`unknown`}`);return i.previousCwd?(t.cwd=n,{swapped:!0,previousCwd:i.previousCwd}):(t.cwd=n,{swapped:!1})}async function Ke(e,t,n,r){let i=n===void 0||t.model===n,a=r?.reasoningEffort===void 0,o=!r?.providerConfigId;if(i&&a&&o)return{changed:!1};let s=r?.providerConfigId?await d(e,{adapterName:t.adapterName,providerConfigId:r.providerConfigId}):void 0,c=await e.request(x.model.change,{agentId:t.agentId,adapterId:t.adapterId,adapterName:t.adapterName,adapterSessionId:t.adapterSessionId??``,...n!==void 0&&{newModel:n},...r?.reasoningEffort!==void 0&&{reasoningEffort:r.reasoningEffort},...r?.skipWarning!==void 0&&{skipWarning:r.skipWarning},...s!==void 0&&{providerContext:s}});if(!c.success)throw Error(`Failed to change model for agent ${t.agentId}: ${c.reason??`unknown`}`);return n!==void 0&&(t.model=n),{changed:!0,swapped:c.swapped??!1}}async function qe(e,t,n){let r=[],i=new Set;for(let a of t){let t=await e.requestOptional(v.getAgent,{adapterId:a.adapterId,agentId:a.agentId});if(t.handled&&t.data.agent!==null)r.push(a);else{let t=await Ye(e,a,n);r.push(t),i.add(t.agentId)}}return{verifiedAgents:r,recoveredAgentIds:i}}async function Je(e,t,n){let r=await z(e,t.sessionId),i=n?.pipeline??[];return{messageHistory:(i.length>0?(await R(r.messages,i)).messages:r.messages).map(B),isFirstTurn:!0}}async function Ye(e,t,n){let r=await I(e,t.adapterName).catch(()=>t.adapterId);return await e.request(v.rehydrateAgent,{adapterId:r,agentId:t.agentId,cwd:n.cwd,model:n.model??t.model,...t.adapterSessionId!==void 0&&{adapterSessionId:t.adapterSessionId},...n.resumeAdapterSessionId!==void 0&&{resumeAdapterSessionId:n.resumeAdapterSessionId}}),t.adapterId=r,t}function Xe(e,t){return t?.hasNewTransforms===!0||e.forkTransforms!==void 0}function Ze(e,t){return e.adapterName!==void 0&&t!==e.adapterName}function V(e){let{session:t,sessionContext:n}=e;return e.adapterSupportsNative?Ze(t,e.targetAdapterName)?{kind:`degrade`,reason:`adapter-mismatch`}:t.adapterSessionId?!t.machineId||!e.localMachineId?{kind:`degrade`,reason:`missing-machine-id`}:t.machineId===e.localMachineId?t.isImported&&t.isOrchestrated===!0?{kind:`degrade`,reason:`hybrid-imported-orchestrated`}:n?.hasCompression?{kind:`degrade`,reason:`compression-present`}:Xe(t,n)?{kind:`degrade`,reason:`transforms-present`}:n?.hasConnectorSwap?{kind:`degrade`,reason:`connector-swap`}:e.currentCwd&&e.targetCwd&&e.currentCwd!==e.targetCwd?{kind:`degrade`,reason:`cwd-mismatch`}:e.intent===`fork`&&t.forkPointMessageId&&e.midHistoryForkSupported!==!0?{kind:`degrade`,reason:`mid-history-unsupported`}:{kind:`native`}:{kind:`foreign`,machineId:t.machineId}:{kind:`degrade`,reason:`no-adapter-session`}:{kind:`degrade`,reason:`adapter-unsupported`}}const Qe=t.postgres,H=te({turns:n},{turns:Qe});async function $e(e,t){let n=re(e.dialect);for(let r=1;;r++)try{await e.run(t());return}catch(e){if(r>=32||!n.capabilities.maxCounterAssignmentRaces||!n.errors.isUniqueViolationError(e,`uniq_turns_session_number`))throw e}}function et(e){if(e)try{let t=JSON.parse(e),n=ee.safeParse(t);return n.success?n.data:void 0}catch{return}}function U(e){return e?JSON.stringify(e):null}function tt(e){if(e)try{let t=JSON.parse(e),n=T.safeParse(t);return n.success?n.data:void 0}catch{return}}function W(e){let t=tt(e.initiator);return{turnId:e.turnId,sessionId:e.sessionId,turnNumber:e.turnNumber,startedAt:e.startedAt,completedAt:e.completedAt??void 0,status:e.status,error:e.error??void 0,usage:et(e.usage),...t!==void 0&&{initiator:t}}}function nt(e,t){let n=[rt(e,t),it(e,t),at(e,t),ot(e,t),st(e,t),ct(e,t),lt(e,t),ut(e,t)];return()=>n.forEach(e=>e())}function rt(e,t){let n=ne(t),{turns:r}=E(t,H);return e.on(o.create,async e=>{let{sessionId:i,turnId:a,initiator:o}=e.payload,s=Date.now(),c=a??crypto.randomUUID(),l=U(o);await $e(n,()=>M`
3
- WITH next_num AS (
4
- SELECT COALESCE(MAX(turn_number), 0) + 1 AS n
5
- FROM turns
6
- WHERE session_id = ${i}
7
- )
8
- INSERT INTO turns (turn_id, session_id, turn_number, started_at, status, initiator)
9
- SELECT ${c}, ${i}, n, ${s}, ${`active`}, ${l}
10
- FROM next_num
11
- `);let[u]=await t.select({turnNumber:r.turnNumber}).from(r).where(A(r.turnId,c)),d={turnId:c,sessionId:i,turnNumber:u.turnNumber,startedAt:s,status:`active`,...o!==void 0&&{initiator:o}};e.setResult({turn:d})})}function it(e,t){let n=ne(t),{turns:r}=E(t,H);return e.on(o.ingestCompleted,async e=>{let{sessionId:i,turnAnchorId:a,startedAt:o,completedAt:s,status:c,error:l,usage:u,initiator:d}=e.payload,f=crypto.randomUUID(),p=U(d),m=u===void 0?null:JSON.stringify(u);await $e(n,()=>M`
12
- WITH next_num AS (
13
- SELECT COALESCE(MAX(turn_number), 0) + 1 AS n
14
- FROM turns
15
- WHERE session_id = ${i}
16
- )
17
- INSERT INTO turns (turn_id, session_id, turn_number, started_at, completed_at, status, error, usage, initiator, turn_anchor_id)
18
- SELECT ${f}, ${i}, n, ${o}, ${s}, ${c}, ${l??null}, ${m}, ${p}, ${a}
19
- FROM next_num
20
- WHERE true
21
- ON CONFLICT(session_id, turn_anchor_id) DO UPDATE SET
22
- completed_at = excluded.completed_at,
23
- status = excluded.status,
24
- error = excluded.error,
25
- usage = excluded.usage
26
- `);let[h]=await t.select().from(r).where(D(A(r.sessionId,i),A(r.turnAnchorId,a))).limit(1);e.setResult({turn:W(h),created:h.turnId===f})})}function at(e,t){let{turns:n}=E(t,H);return e.on(o.complete,async e=>{let{turnId:r,status:i,expectedStatus:a,error:o,usage:s}=e.payload,c=Date.now(),l=a?D(A(n.turnId,r),A(n.status,a),M`${n.status} not in ('completed', 'error')`):D(A(n.turnId,r),M`${n.status} not in ('completed', 'error')`),u={completedAt:c,status:i,error:o??null,...s!==void 0&&{usage:JSON.stringify(s)}},[d]=await t.update(n).set(u).where(l).returning();if(d){e.setResult({turn:W(d),transitioned:!0});return}let[f]=await t.select().from(n).where(A(n.turnId,r)).limit(1);if(!f)throw Error(`Turn not found: ${r}`);if(a){e.setResult({turn:W(f),transitioned:!1});return}if(!(f.status===`completed`||f.status===`error`)||s===void 0){e.setResult({turn:W(f),transitioned:!1});return}let[p]=await t.update(n).set({usage:JSON.stringify(s)}).where(D(A(n.turnId,r),M`${n.status} in ('completed', 'error')`)).returning();e.setResult({turn:W(p??f),transitioned:!1})})}function ot(e,t){let{turns:n}=E(t,H);return e.on(o.set,async e=>{let{turn:r}=e.payload,i={turnId:r.turnId,sessionId:r.sessionId,turnNumber:r.turnNumber,startedAt:r.startedAt,completedAt:r.completedAt??null,status:r.status,error:r.error??null,usage:r.usage?JSON.stringify(r.usage):null,initiator:U(r.initiator)};await t.insert(n).values(i).onConflictDoUpdate({target:n.turnId,set:i}),e.setResult({turn:r})})}function st(e,t){let{turns:n}=E(t,H);return e.on(o.get,async e=>{let{turnId:r}=e.payload,[i]=await t.select().from(n).where(A(n.turnId,r)).limit(1);e.setResult({turn:i?W(i):null})})}function ct(e,t){let{turns:n}=E(t,H);return e.on(o.getBySession,async e=>{let{sessionId:r,limit:i,status:a}=e.payload,o=t.select().from(n).where(A(n.sessionId,r)).orderBy(O(n.turnNumber));a&&(o=t.select().from(n).where(D(A(n.sessionId,r),A(n.status,a))).orderBy(O(n.turnNumber))),i&&(o=o.limit(i));let s=await o;e.setResult({turns:s.map(W)})})}function lt(e,t){let{turns:n}=E(t,H);return e.on(o.getActive,async e=>{let{sessionId:r}=e.payload,[i]=await t.select().from(n).where(D(A(n.sessionId,r),A(n.status,`active`))).orderBy(k(n.turnNumber)).limit(1);e.setResult({turn:i?W(i):null})})}function ut(e,t){let{turns:n}=E(t,H);return e.on(o.listActive,async e=>{let r=await t.select().from(n).where(A(n.status,`active`)).orderBy(O(n.startedAt));e.setResult({turns:r.map(W)})})}function dt(e){let t=new Map,n=new Map,r=new Map,i=ft(t,n,r),a=new Map,o=[pt(e,i,r),mt(e,t,i,r,a),ht(e,t,i),gt(e,i),_t(e,t),vt(e,t,n),yt(e,t,n),bt(e,t)];return()=>o.forEach(e=>e())}function ft(e,t,n){return r=>{e.set(r.turnId,r);let i=t.get(r.sessionId)??[];i.includes(r.turnId)||i.push(r.turnId),t.set(r.sessionId,i);let a=n.get(r.sessionId)??0;r.turnNumber>a&&n.set(r.sessionId,r.turnNumber)}}function pt(e,t,n){return e.on(o.create,e=>{let{sessionId:r,turnId:i,initiator:a}=e.payload,o=Date.now(),s={turnId:i??crypto.randomUUID(),sessionId:r,turnNumber:(n.get(r)??0)+1,startedAt:o,status:`active`,...a!==void 0&&{initiator:a}};t(s),e.setResult({turn:s})})}function mt(e,t,n,r,i){return e.on(o.ingestCompleted,e=>{let{sessionId:a,turnAnchorId:o,startedAt:s,completedAt:c,status:l,error:u,usage:d,initiator:f}=e.payload,p=i.get(a)??new Map,m=p.get(o);if(m!==void 0){let r=t.get(m);if(!r)throw Error(`Turn not found for anchor in session: ${a}`);let i={...r,completedAt:c,status:l,error:u??void 0,usage:d??void 0};n(i),e.setResult({turn:i,created:!1});return}let h={turnId:crypto.randomUUID(),sessionId:a,turnNumber:(r.get(a)??0)+1,startedAt:s,completedAt:c,status:l,error:u??void 0,usage:d??void 0,...f!==void 0&&{initiator:f}};n(h),p.set(o,h.turnId),i.set(a,p),e.setResult({turn:h,created:!0})})}function ht(e,t,n){return e.on(o.complete,e=>{let{turnId:r,status:i,expectedStatus:a,error:o,usage:s}=e.payload,c=t.get(r);if(!c)throw Error(`Turn not found: ${r}`);if(a&&c.status!==a){e.setResult({turn:c,transitioned:!1});return}let l=c.status===`completed`||c.status===`error`,u=l?{...c,usage:s??c.usage}:{...c,completedAt:Date.now(),status:i,error:o??void 0,usage:s??c.usage};n(u),e.setResult({turn:u,transitioned:!l})})}function gt(e,t){return e.on(o.set,e=>{let{turn:n}=e.payload;t(n),e.setResult({turn:n})})}function _t(e,t){return e.on(o.get,e=>{e.setResult({turn:t.get(e.payload.turnId)??null})})}function vt(e,t,n){return e.on(o.getBySession,e=>{let{sessionId:r,status:i,limit:a}=e.payload,o=(n.get(r)??[]).map(e=>t.get(e)).filter(e=>!!e);i&&(o=o.filter(e=>e.status===i)),o.sort((e,t)=>e.turnNumber-t.turnNumber),a&&(o=o.slice(0,a)),e.setResult({turns:o})})}function yt(e,t,n){return e.on(o.getActive,e=>{let{sessionId:r}=e.payload,i=(n.get(r)??[]).map(e=>t.get(e)).filter(e=>!!e).filter(e=>e.status===`active`).sort((e,t)=>t.turnNumber-e.turnNumber).at(0);e.setResult({turn:i??null})})}function bt(e,t){return e.on(o.listActive,e=>{let n=[...t.values()].filter(e=>e.status===`active`).sort((e,t)=>e.startedAt-t.startedAt);e.setResult({turns:n})})}function G(e){return typeof e==`string`&&e.trim().length>0?e.trim():void 0}async function xt(e,t,n,r){let{adapterName:i}=await e.request(f.resolveName,{adapterId:t});if(n&&i!==n)throw Error(`${r}adapterName "${n}" does not match adapterId "${t}"`);return i}function K(e){return typeof e==`string`?e:(Array.isArray(e.blocks)?e.blocks:[e.blocks]).filter(e=>e.type===`text`).map(e=>e.content).join(`
27
- `)}function St(e){return e}function Ct(e){return typeof e==`string`?[{type:`text`,content:e}]:(Array.isArray(e.blocks)?e.blocks:[e.blocks]).map(St)}async function wt(e,t,n,r,i){let{session:a}=await e.request(w.get,{sessionId:t});if(a){if(a.status!==`active`)throw Error(`[getOrCreateSession] Session is not active: ${t}`);return{sessionId:t,session:a}}await e.request(w.create,{sessionId:t,originWindowId:r,...i!==void 0&&{machineId:i}});let{session:o}=await e.request(w.get,{sessionId:t});if(!o)throw Error(`[getOrCreateSession] Failed to create session: ${t}`);return{sessionId:t,session:o}}function Tt(e,t){if(t===void 0){let t=e.agents.find(t=>t.agentId===e.leadAgentId);if(!t)throw Error(`[resolveTargetAgents] Lead agent not found: ${e.leadAgentId}`);return[t]}if(t===`all`)return e.agents;let n=new Set(t);return e.agents.filter(e=>n.has(e.agentId))}function Et(e,t){for(let n of e.values())if(n.hasAgent(t))return n}function Dt(e,t){if(e===`extension`){let e=t?.trim();if(!e)throw Error(`extensionId is required when source is "extension"`);return{source:`extension`,sourceId:e}}return e?{source:e}:{source:`user`}}async function Ot(e,t,n,r,i){let a=i?.state===`resolved`?i.providerConfigId:void 0;if(a!==void 0&&n!==void 0&&n!==a)throw Error(`[attach-handler] providerConfigId '${n}' does not match resolved provider context '${a}'`);let o=n??a??r?.providerConfigId;if(i!==void 0){if(i.state!==`resolved`&&o!==void 0)throw new u(`provider-context-unresolved`,t,o);return{providerConfigId:o,providerContext:i}}return{providerConfigId:o,providerContext:o===void 0?void 0:await d(e,{adapterName:t,providerConfigId:o})}}function q(e){if(e instanceof se)return e;if(e instanceof Error&&e.cause instanceof se)return e.cause}async function J(e,t){try{await e.emit(w.user_message.acknowledged,t)}catch(e){console.error(`[SessionRouting] Failed to emit user-message acknowledgement:`,e)}}async function kt(e,t,n,r){await e.emit(w.turn.assistantPersistenceSettled,{sessionId:t.sessionId,turnId:t.turnId,messageId:n,agentId:r})}async function Y(e){let{bus:t,turn:n,messageId:r,agentId:i,outcome:a,error:o,onTurnComplete:s,turnManager:c}=e;try{await kt(t,n,r,i)}catch(e){console.error(`[SessionRouting] Failed to emit terminal routing settlement:`,e)}await c.recordAgentCompletion(i,r,a,o,s,n.turnId)}async function At(e,t,n,r,i,a,o,s,c,l,u){if(n.some(e=>!a.hasAdmittedPair(i,e.agentId)))throw Error(`Turn ${a.turnId} has no admitted fanout for message ${i}`);let d=n.map(async n=>{try{return await e.request(x.sendMessage,{agentId:n.agentId,adapterId:n.adapterId,message:r,deliveryMode:o,messageId:i,turnId:a.turnId,sessionId:t.sessionId,sessionContext:l,...u!==void 0&&{responseSchema:u}}),await J(e,{sessionId:a.sessionId,turnId:a.turnId,turnNumber:a.turnNumber,messageId:i,agentId:n.agentId}),{agentId:n.agentId,kind:`dispatched`}}catch(t){if(q(t)!==void 0)return await Y({bus:e,turn:a,messageId:i,agentId:n.agentId,outcome:`cancelled`,onTurnComplete:s,turnManager:c}),{agentId:n.agentId,kind:`cancelled`,error:t};let r=t instanceof Error?t.message:String(t);return await Y({bus:e,turn:a,messageId:i,agentId:n.agentId,outcome:`error`,error:r,onTurnComplete:s,turnManager:c}),{agentId:n.agentId,kind:`failed`,error:t}}});return await Promise.all(d)}async function jt(e,t,n,r,i,a,o,s){try{return await Nt(e,t,n,i,a,o,s)}catch(t){throw console.error(`[attach-handler] Failed to set up initial-message turn, rolling back started agent`,{sessionId:i,agentId:a,adapterId:r.adapterId,error:t}),await X(e,r,i,`initial-message turn setup failure`),t}}async function Mt(e,t,n,r,i,a,o){let s=await jt(e,t,n,r,i.sessionId,r.agentId,crypto.randomUUID(),a),c;try{c=await At(e,i,[{agentId:r.agentId,adapterId:r.adapterId}],a,s.messageId,s.turn,void 0,t.completeTurn.bind(t),t,o,void 0)}catch(n){try{await t.retryTurnCompletion(s.turn.turnId)}catch(e){console.error(`[attach-handler] Failed to retry initial-message completion after routing failure`,{sessionId:i.sessionId,turnId:s.turn.turnId,error:e})}throw await X(e,r,i.sessionId,`initial-message routing failure`),n}let l=c[0];if(!l||l.kind===`dispatched`)return{messageId:s.messageId,turnId:s.turn.turnId};throw await X(e,r,i.sessionId,`initial-message routing failure`),l.error}async function X(e,t,n,r){try{await e.request(v.stopAgent,{adapterId:t.adapterId,agentId:t.agentId})}catch(e){console.error(`[attach-handler] Failed to rollback started agent after ${r}`,{sessionId:n,agentId:t.agentId,adapterId:t.adapterId,error:e})}}async function Nt(e,t,n,r,i,a,o){let s=await t.createReservedTurn(n,[i]),c=t.admitReservedMessage(s,a,[i]);try{if(!(await e.requestOptional(m.append,{message:{messageId:a,turnId:s.turnId,sessionId:r,role:`user`,contentText:K(o),blocks:Ct(o),timestamp:Date.now()}})).handled)throw Error(`Message storage append handler is not registered`)}catch(e){console.warn(`[attach-handler] Failed to store initial user message`,{sessionId:r,messageId:a,error:e instanceof Error?e.message:String(e)});try{await c.rollback(`initial-message-persistence-failed`)}catch(e){console.error(`[attach-handler] Failed to finalize rejected initial-message persistence:`,e)}throw e}try{await Pt(e,r,s,a,o)}catch(e){try{await c.rollback(`initial-message-lifecycle-failed`)}catch(e){console.error(`[attach-handler] Failed to finalize rejected initial-message lifecycle:`,e)}throw e}return c.commit(),{messageId:a,turn:s}}async function Pt(e,t,n,r,i){await Oe(e,{sessionId:t,turnId:n.turnId,turnNumber:n.turnNumber,messageId:r,agentIds:[...n.agentIds],ingestionMarker:`live`}),await ke(e,{sessionId:t,turnId:n.turnId,turnNumber:n.turnNumber,messageId:r,content:i,agentIds:[...n.agentIds]})}function Ft(e){return{...e.model!==void 0&&{model:e.model},...e.reasoningEffort!==void 0&&{reasoningEffort:e.reasoningEffort},...e.cwd!==void 0&&{cwd:e.cwd},...e.allowedTools!==void 0&&{allowedTools:e.allowedTools},...e.disallowedTools!==void 0&&{disallowedTools:e.disallowedTools},...e.allowedDirectories!==void 0&&{allowedDirectories:e.allowedDirectories},...e.env!==void 0&&{env:e.env},...e.mcpSessionContext!==void 0&&{mcpSessionContext:e.mcpSessionContext},...e.adapterConfig!==void 0&&{adapterConfig:e.adapterConfig},...e.systemPrompt!==void 0&&{systemPrompt:e.systemPrompt}}}function It(e,t,n){let r=e.model??t?.model,i=e.cwd;return{runtimeOptions:Rt({model:r,reasoningEffort:e.reasoningEffort??t?.reasoningEffort,cwd:i,allowedTools:e.allowedTools??t?.allowedTools,disallowedTools:e.disallowedTools??t?.disallowedTools,allowedDirectories:e.allowedDirectories??t?.allowedDirectories,env:e.env,mcpSessionContext:e.mcpSessionContext,adapterConfig:e.adapterConfig,systemPrompt:e.systemPrompt??t?.systemPrompt,providerContext:n}),mergedModel:r,mergedCwd:i}}function Lt(e,t,n){let r=e??t;return{effectiveCwd:r,effectiveRuntimeOptions:r!==void 0&&n.cwd===void 0?{...n,cwd:r}:n}}function Rt(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0))}function zt(e,t,n,r,i,a,o){return i?{mode:`resume`,adapterId:e,sessionId:t,adapterSessionId:i,role:n,...r,...a!==void 0&&{harnessId:a}}:{adapterId:e,sessionId:t,role:n,...r,...a!==void 0&&{harnessId:a},...o!==void 0&&{sessionContext:o}}}async function Bt(e,t){let{adapterId:n,sessionId:r,role:i,effectiveRuntimeOptions:a,resumeAdapterSessionId:o,harnessId:s,attachSessionContext:c}=t,l=zt(n,r,i,a,o,s,c),u=await e.request(v.startAgent,l);if(!u.success)throw Error(`[attach-handler] Failed to start agent: ${u.message}`);return u}async function Vt(e,t,n){let r=await z(e,t);if(r.messages.length===0)return n;let i=r.messages.map(B);return{...n,messageHistory:i,isFirstTurn:!0}}function Ht(e,t,n){let r=e.on(w.agent.attach,async r=>{r.setResult(await qt(e,t,n,r.payload))}),i=e.on(w.agent.attachResolved,async r=>{if(!r.origin.local)throw Error(`[attach-handler] session.agent.attachResolved requires a local-origin request`);r.setResult(await qt(e,t,n,{...r.payload,resolvedProviderContext:r.payload.agent.providerContext===void 0?void 0:C.parse(r.payload.agent.providerContext)}))});return()=>{r(),i()}}async function Ut(e,t){try{let n=await e();return n.handled?t(n.data):!1}catch{return!1}}async function Wt(e,t){return Ut(()=>e.requestOptional(v.getCapabilities,{adapterId:t}),e=>new Set(e.capabilities).has(`session:resume`))}async function Gt(e,t,n){return Ut(()=>e.requestOptional(v.listAgents,{adapterId:t}),e=>e.agents.some(e=>e.adapterSessionId===n))}async function Kt(e){let{bus:t,adapterId:n,adapterName:r,session:i,machineId:a,effectiveCwd:o}=e,s=V({intent:`resume`,session:i,localMachineId:a,adapterSupportsNative:await Wt(t,n),targetAdapterName:r,currentCwd:i.targetWorkingDirectory,targetCwd:o});if(s.kind===`native`&&i.adapterSessionId!==void 0&&await Gt(t,n,i.adapterSessionId)){let e={kind:`degrade`,reason:`agent-already-started`};return F(t,{sessionId:i.sessionId,intent:`resume`,verdict:e,adapterId:n}),{resumeAdapterSessionId:void 0,attachSessionContext:{nativeLocality:e}}}return s.kind!==`native`&&F(t,{sessionId:i.sessionId,intent:`resume`,verdict:s,adapterId:n}),{resumeAdapterSessionId:s.kind===`native`?i.adapterSessionId:void 0,attachSessionContext:s.kind===`native`?void 0:{nativeLocality:s}}}async function qt(e,t,n,r){let{sessionId:i,agent:a,initialMessage:o,role:s,resolvedProviderContext:c}=r,l=Ft(a),u=await $t(e,i),d=await Qt(e,i,o,a),f=Xt(a,d),{adapterName:p,adapterId:m}=await Zt(e,f.adapterName,f.adapterId,n),{providerConfigId:h,providerContext:g}=await Ot(e,p,a.providerConfigId,d,c),{runtimeOptions:_,mergedModel:v,mergedCwd:y}=It(l,d,g),{effectiveCwd:b,effectiveRuntimeOptions:x}=Lt(y,u.targetWorkingDirectory,_),S=en(u,s),C=await Kt({bus:e,adapterId:m,adapterName:p,session:u,machineId:n,effectiveCwd:b}),{resumeAdapterSessionId:w}=C,T=C.attachSessionContext?await Vt(e,i,C.attachSessionContext):void 0;return Jt(e,t,{launch:{adapterId:m,sessionId:i,role:S,effectiveRuntimeOptions:x,resumeAdapterSessionId:w,harnessId:d?.harnessId,attachSessionContext:T},identity:{adapterName:p,sessionId:i,role:S,timestamp:Date.now(),personaId:Yt(a),profileId:d?.profileId,harnessId:d?.harnessId,providerConfigId:h,compressionMode:d?.compressionMode,model:v,cwd:b},session:u,initialMessage:o,sessionContext:T})}async function Jt(e,t,n){let r=n.initialMessage===void 0?void 0:await t.reserveTurn(n.session.sessionId);try{let i=await Bt(e,n.launch);await nn(e,i,n.identity);let a=r===void 0||n.initialMessage===void 0?void 0:await Mt(e,t,r,i,n.session,n.initialMessage,n.sessionContext);return{agentId:i.agentId,adapterSessionId:i.adapterSessionId,role:n.identity.role,...a&&{messageId:a.messageId,turnId:a.turnId}}}finally{r!==void 0&&t.releaseTurnReservation(r)}}function Yt(e){return e.kind===`persona`?e.personaId:void 0}function Xt(e,t){return{adapterName:e.kind===`adapter`&&`adapterName`in e?e.adapterName:t?.adapterName,adapterId:e.kind===`adapter`&&`adapterId`in e?e.adapterId:void 0}}async function Zt(e,t,n,r){let i=G(t),a=G(n);if(!i&&!a)throw Error(`[attach-handler] adapterName or adapterId is required — provide one explicitly or via persona/profile/virtualModel resolution`);if(a)return{adapterName:await xt(e,a,i,`[attach-handler] `),adapterId:a};let o=i;return{adapterName:o,adapterId:await I(e,o,r)}}async function Qt(e,t,n,r){if(r.kind===`adapter`)return null;let i=n?K(n):void 0;return e.request(y.resolve,{selection:r,context:{sessionId:t,promptText:i}})}async function $t(e,t){let{session:n}=await e.request(w.get,{sessionId:t});if(!n)throw Error(`[attach-handler] Session not found: ${t}`);if(n.status!==`active`)throw Error(`[attach-handler] Session is not active: ${t}`);return n}function en(e,t){let n=e.agents.length===0;return t??(n?`lead`:`member`)}async function tn(e,t){!t.personaId&&!t.profileId&&!t.harnessId&&!t.providerConfigId||await e.request(Ne.set,{agentId:t.agentId,agent:{agentId:t.agentId,adapterId:t.adapterId,adapterName:t.adapterName,sessionId:t.sessionId,role:t.role,status:`idle`,personaId:t.personaId,profileId:t.profileId,harnessId:t.harnessId,providerConfigId:t.providerConfigId,createdAt:t.timestamp,lastActivityAt:t.timestamp,...t.model!==void 0&&{model:t.model},...t.cwd!==void 0&&{cwd:t.cwd},...t.compressionMode!==void 0&&{compressionMode:t.compressionMode}}})}async function nn(e,t,n){try{await tn(e,{agentId:t.agentId,adapterId:t.adapterId,adapterName:n.adapterName,sessionId:n.sessionId,role:n.role,timestamp:n.timestamp,personaId:n.personaId,profileId:n.profileId,harnessId:n.harnessId,providerConfigId:n.providerConfigId,compressionMode:n.compressionMode,model:n.model,cwd:n.cwd})}catch(r){throw console.error(`[attach-handler] Failed to persist agent identity, rolling back started agent`,{sessionId:n.sessionId,agentId:t.agentId,adapterId:t.adapterId,error:r}),await X(e,t,n.sessionId,`identity persistence failure`),r}}function rn(e){return e.on(w.abandon,async t=>{let{parentSessionId:n,childSessionId:r}=t.payload,{session:i}=await e.request(w.get,{sessionId:r});if(!i)throw Error(`[abandon-handler] Child session not found: ${r}`);if(i.parentSessionId!==n)throw Error(`[abandon-handler] Invalid parent-child relationship: session ${r} is not a child of ${n}`+(i.parentSessionId?` (actual parent: ${i.parentSessionId})`:` (session has no parent)`));if(!(await e.request(w.close,{sessionId:r})).success)throw Error(`[abandon-handler] Failed to close child session: ${r}`);await e.emit(w.abandoned,{sessionId:r,parentSessionId:n}),t.setResult({success:!0})})}const an={id:`messages-to-context`,label:`Export as Context`,description:`Convert messages to context JSON (final step)`,category:`extraction`,async execute(e){let t=e.map(e=>({role:e.role,content:e.blocks.map(e=>e.type===`text`?e.content:e.type===`reasoning`?`[reasoning: ${e.content}]`:e.type===`tool_call`?`[tool: ${e.name}]`:e.type===`tool_output`?e.output:``).filter(Boolean).join(`
28
- `)})),n=t.reduce((e,t)=>e+t.content.length,0),r=Math.ceil(n/4);return{kind:`context`,json:{type:`compressed-messages`,messageCount:e.length,messages:t},tokenEstimate:r}}},on={id:`llm-summarize`,label:`Summarize`,description:`LLM-generated summary of selected messages`,category:`transformation`,async execute(e){return{kind:`messages`,messages:e}}};function sn(e){let t=[];for(let n of e){let e=n.blocks.filter(e=>e.type===`text`).map(e=>e.content).join(`
29
- `);e&&(n.role===`user`?t.push(`[human]\n${e}\n[/human]`):n.role===`assistant`&&t.push(`[assistant]\n${e}\n[/assistant]`))}return`<conversation>\n${t.join(`
30
-
31
- `)}\n</conversation>`}function cn(e){return{id:`llm-extract`,label:`LLM Extract`,description:`Extract structured context using a cheap LLM model (requires virtualModelId in options)`,category:`extraction`,async execute(t,n){let r={kind:`messages`,messages:t},i=n?.virtualModelId;if(typeof i!=`string`)return r;let a=(typeof n?.sessionId==`string`&&n.sessionId.length>0?n.sessionId:void 0)??t[0]?.sessionId;if(typeof a!=`string`||a.length===0)return r;try{let n=await e.request(y.resolve,{selection:{kind:`virtual-model`,virtualModelId:i},context:{sessionId:a}}),{adapterId:r}=await e.request(ce.resolveId,{adapterName:n.adapterName}),o=sn(t),s=n.providerConfigId?await le(e,{adapterName:n.adapterName,providerConfigId:n.providerConfigId}):void 0,{text:c}=await e.request(v.infer,{adapterId:r,prompt:o,model:n.model,systemPrompt:`You are a context extraction assistant. Analyze the following conversation and extract structured information. Respond with ONLY valid JSON matching this exact schema — no markdown, no explanation, no code fences:
32
-
33
- {
34
- "resolved_items": ["string — completed work with resolution details"],
35
- "known_bugs": [{ "issue": "string", "location": "string", "impact": "string" }],
36
- "todos": [{ "issue": "string", "location": "string", "priority": "high|medium|low" }],
37
- "key_decisions_and_rationale": ["string — decision with reasoning"],
38
- "technical_details": {
39
- "files": ["string — file paths mentioned"],
40
- "schemas": {},
41
- "apis": ["string — API endpoints or contracts"],
42
- "config": {}
43
- },
44
- "constraints_and_requirements": ["string — constraints or non-negotiable requirements"],
45
- "current_state": "string — one paragraph summary of where work stands now",
46
- "roadmap": ["string — future work items in priority order"],
47
- "data_flows": ["string — key data movement patterns"],
48
- "component_interactions": { "ComponentName": "string — description of its role" },
49
- "key_files": { "filepath": "string — what this file does" },
50
- "helpful_hint": ["string — quick reference hints for resuming work"]
51
- }
52
-
53
- Rules:
54
- - Omit array items you have no evidence for (prefer empty array over fabrication).
55
- - current_state MUST be present; write "No summary available" if you cannot determine it.
56
- - Extract only facts stated or clearly implied in the conversation. Do not invent.
57
- - key_files and component_interactions should only include items explicitly mentioned.`,...s!==void 0&&{providerContext:s}}),l=c.trim().replace(/^```(?:json)?\s*/i,``).replace(/\s*```$/i,``).trim(),u=JSON.parse(l),d=h.parse(u),f=Math.ceil(JSON.stringify(d).length/4);return{kind:`context`,json:{...d},tokenEstimate:f}}catch(e){return console.warn(`[llm-extract] action failed`,{action:`llm-extract`,sessionId:a,error:e}),r}}}}let Z=!1,Q=!1;function ln(e){Z||(Z=!0,L.register(Re),L.register(Be),L.register(an),L.register(on)),e&&!Q&&(Q=!0,L.register(cn(e)))}function un(){Z=!1,Q=!1}function dn(e){return ln(e),e.on(w.compress,async t=>{let{sessionId:n,pipeline:r}=t.payload,{messages:a}=await e.request(m.getBySession,{sessionId:n,limit:1e4}),o=await R(a,r,{sessionId:n});if(!o.contextJson)throw Error(`[compress-handler] Compress pipeline must produce context JSON (sessionId=${n})`);let s=a.map(e=>e.messageId),c=Math.ceil(a.reduce((e,t)=>e+JSON.stringify(t.blocks).length/4,0)),l=crypto.randomUUID();await e.request(i.append,{event:{sessionId:n,eventId:l,timestamp:Date.now(),type:`squash`,payload:{summaryJson:JSON.stringify(o.contextJson),tokensBefore:c,tokensAfter:o.tokenEstimate,compressedMessageIds:s}}}),await e.emit(w.compressed,{sessionId:n,eventId:l}),t.setResult({eventId:l,contextJson:o.contextJson,tokensBefore:c,tokensAfter:o.tokenEstimate})})}async function fn(e,t,n,r){if(!n.segments?.length)return!1;let i=[],a;do{let{messages:n,nextCursor:o}=await e.request(m.getBySession,{sessionId:t,order:`asc`,limit:200,after:a});i.push(...n),a=r&&n.some(e=>e.messageId===r)?void 0:o??void 0}while(a);if(i.length===0)throw Error(`[fork-handler] Segment transforms require at least one source message (sourceSessionId=${t})`);let o=i;if(r){let e=i.findIndex(e=>e.messageId===r);if(e===-1)throw Error(`[fork-handler] Fork point message not found in source message list: ${r} (sourceSessionId=${t})`);o=i.slice(0,e+1)}let s=new Map;o.forEach((e,t)=>{s.set(e.messageId,t)});let c=-1;for(let e of n.segments){if(!e.fromMessageId||!e.toMessageId)throw Error(`[fork-handler] Segment must have fromMessageId and toMessageId (sourceSessionId=${t})`);let n=s.get(e.fromMessageId),r=s.get(e.toMessageId);if(n===void 0||r===void 0)throw Error(`[fork-handler] Segment boundaries must reference source messages: ${e.fromMessageId}..${e.toMessageId} (sourceSessionId=${t})`);if(n>r)throw Error(`[fork-handler] Segment range is reversed: ${e.fromMessageId}..${e.toMessageId} (sourceSessionId=${t})`);if(n<=c)throw Error(`[fork-handler] Segments must not overlap and must be ordered (sourceSessionId=${t})`);if(n!==c+1)throw Error(`[fork-handler] Segments must be contiguous without gaps (sourceSessionId=${t})`);c=r}if(c!==o.length-1)throw Error(`[fork-handler] Segments must cover the entire source message range (sourceSessionId=${t})`);return!0}function pn(e){if(!e.segments?.length&&e.appliedPipeline?.length)for(let t of e.appliedPipeline){let e=L.get(t.actionId);if(!e)throw Error(`[fork-handler] Unknown action in pipeline: ${t.actionId}`);if(e.category!==`transformation`)throw Error(`[fork-handler] Action '${t.actionId}' is category '${e.category}', but only 'transformation' actions are allowed in fork transforms`)}}function mn(e,t){return e.on(w.fork,async n=>{let{sourceSessionId:r,fromMessageId:i,name:a,branchKind:o=`fork`,transforms:s,targetWorkingDirectory:c,metadata:l,existingSessionId:u}=n.payload,{session:d}=await e.request(w.get,{sessionId:r});if(!d)throw Error(`[fork-handler] Source session not found: ${r}`);if(i){let{message:t}=await e.request(m.get,{messageId:i});if(!t)throw Error(`[fork-handler] Fork point message not found: ${i} (sourceSessionId=${r})`);if(t.sessionId!==r)throw Error(`[fork-handler] Fork point message ${i} does not belong to session ${r}`)}s&&(await fn(e,r,s,i)||pn(s));let{sessionId:f}=await e.request(w.create,{...u?{sessionId:u}:{},parentSessionId:r,forkPointMessageId:i,branchKind:o,forkTransforms:s,...t!==void 0&&{machineId:t},...a?{title:a}:{},...c?{targetWorkingDirectory:c}:{},...l?{metadata:l}:{}});await e.emit(w.branch.created,{sessionId:r,childSessionId:f,parentSessionId:r,kind:o,forkPointMessageId:i,transforms:s}),await e.emit(w.forked,{parentSessionId:r,childSessionId:f,forkPoint:i}),n.setResult({sessionId:f})})}function hn(e){return e.on(w.merge,async t=>{let{parentSessionId:n,childSessionId:r,summary:a}=t.payload,o=`merge:${n}:${r}`,{session:s}=await e.request(w.get,{sessionId:n});if(!s)throw Error(`[merge-handler] Parent session not found: ${n}`);if(s.status!==`active`)throw Error(`[merge-handler] Parent session is not active: ${n}`);let{session:c}=await e.request(w.get,{sessionId:r});if(!c)throw Error(`[merge-handler] Child session not found: ${r}`);if(c.parentSessionId!==n)throw Error(`[merge-handler] Invalid parent-child relationship: session ${r} is not a child of ${n}`+(c.parentSessionId?` (actual parent: ${c.parentSessionId})`:` (session has no parent)`));await e.emit(w.merging,{parentSessionId:n,childSessionId:r});let l=a??`Child session ${r} merged.`;if(!(await e.request(w.close,{sessionId:r})).success)throw Error(`[merge-handler] Failed to close child session: ${r}`);let u=JSON.stringify({handoff:l});await e.request(i.append,{event:{sessionId:n,eventId:o,timestamp:Date.now(),type:`branch.merged`,payload:{childSessionId:r,parentSessionId:n,resultJson:u}}}),await e.emit(w.branch.merged,{sessionId:n,childSessionId:r,parentSessionId:n,resultJson:u}),await e.emit(w.merged,{parentSessionId:n,childSessionId:r,handoff:l}),t.setResult({success:!0,handoff:l})})}const $={enabled:!0,template:`User changed working directory from {oldCwd} to {newCwd}`};function gn(e,t,n){return e.replace(/\{oldCwd\}/g,t).replace(/\{newCwd\}/g,n)}function _n(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.enabled==`boolean`&&typeof t.template==`string`}async function vn(e){try{let t=await e.request(g.get,{key:{scope:`global`,surface:`ui`,context:`cwdChangeNotification`},category:`chat-display`});if(t.value!==null&&t.value!==void 0)return _n(t.value)?t.value:$}catch{}return $}function yn(e,t){return e??t.adapterName??``}async function bn(e,t,n,r,i){F(e,{sessionId:t,intent:`fork`,verdict:i});let a=(await z(e,t)).messages.map(B);return{...n,messageHistory:a,isFirstTurn:!0,hasNewTransforms:r.forkTransforms!==void 0,nativeLocality:i}}async function xn(e,t){let{message:n}=await e.request(m.get,{messageId:t});return n?.adapterMessageId??void 0}async function Sn(e,t,n,r,i,a,c,l,u){if(!(t.parentSessionId!==void 0&&(t.contextInheritance===`parent-history`||t.contextInheritance===void 0&&t.branchKind!==`subagent`))||r?.messageHistory)return r;let{turns:d}=await e.request(o.getBySession,{sessionId:n,limit:2});if(!(i&&d.length<=1))return r;let f=t.parentSessionId;if(f===void 0)return r;let{session:p}=await e.request(s.get,{sessionId:f});if(p===null)return r;let m=l??t.targetWorkingDirectory,h=V({intent:`fork`,session:{...p,forkPointMessageId:t.forkPointMessageId,forkTransforms:t.forkTransforms},localMachineId:a,adapterSupportsNative:c?.adapterSupportsNativeFork===!0,targetAdapterName:yn(u,p),currentCwd:p.targetWorkingDirectory,targetCwd:m,sessionContext:r,midHistoryForkSupported:c?.midHistoryForkSupported===!0}),g=p.adapterSessionId;if(h.kind===`native`&&g!==void 0){if(t.forkPointMessageId!==void 0){let i=await xn(e,t.forkPointMessageId);if(i===void 0)return bn(e,n,r,t,{kind:`degrade`,reason:`fork-point-unresolvable`});let a={sourceSessionId:f,sourceAdapterSessionId:g,forkPointMessageId:i,...t.targetWorkingDirectory!==void 0&&{targetWorkingDirectory:t.targetWorkingDirectory}};return{...r,nativeLocality:h,nativeFork:a,isFirstTurn:!0}}let i={sourceSessionId:f,sourceAdapterSessionId:g,...t.targetWorkingDirectory!==void 0&&{targetWorkingDirectory:t.targetWorkingDirectory}};return{...r,nativeLocality:h,nativeFork:i,isFirstTurn:!0}}return bn(e,n,r,t,h)}async function Cn(e,t,n){if(t.parentSessionId===void 0)return;let r=[...new Set(n.map(e=>e.adapterId))];if(r.length===0)return{adapterSupportsNativeFork:!1,midHistoryForkSupported:!1};let i=await Promise.all(r.map(async t=>{try{let n=await e.requestOptional(v.getCapabilities,{adapterId:t}),r=n.handled?new Set(n.data.capabilities):new Set;return{supportsNativeFork:r.has(`session:fork`),supportsMidHistoryFork:r.has(`session:forkAtMessage`)}}catch{return{supportsNativeFork:!1,supportsMidHistoryFork:!1}}}));return{adapterSupportsNativeFork:i.every(e=>e.supportsNativeFork),midHistoryForkSupported:i.every(e=>e.supportsMidHistoryFork)}}function wn(e){let{baseContext:t,recoveryContext:n,isRecovered:r,isSwapped:i,swapMeta:a,cwdMessage:o,freshMessageHistory:s}=e,c=r&&n?{...t,...n}:t;if(!i)return c;let l=a&&o!==void 0?{cwdChange:{previousCwd:a.previousCwd,newCwd:a.newCwd,message:o}}:void 0;return c={...c,hasConnectorSwap:!0,...s!==void 0&&{messageHistory:s},...l&&{turnContext:{...c?.turnContext,...l}}},c}async function Tn(e,t){let{agentId:n,adapterId:r,message:i,deliveryMode:a,messageId:o,turnId:s,sessionId:c,sessionContext:l,responseSchema:u,turn:d}=t;await e.request(x.sendMessage,{agentId:n,adapterId:r,message:i,deliveryMode:a,messageId:o,turnId:s,sessionId:c,sessionContext:l,...u!==void 0&&{responseSchema:u}}),await J(e,{sessionId:d.sessionId,turnId:d.turnId,turnNumber:d.turnNumber,messageId:o,agentId:n})}async function En(e,t,n){return{messageHistory:(await z(e,t.sessionId)).messages.filter(e=>e.messageId!==n).map(B),isFirstTurn:!0}}async function Dn(e,t,n,r){let{agentId:i,adapterId:a,message:o,deliveryMode:s,messageId:c,turnId:l,sessionId:u,responseSchema:d,turn:f}=n;try{await e.request(x.sendMessage,{agentId:i,adapterId:a,message:o,deliveryMode:s,messageId:c,turnId:l,sessionId:u,sessionContext:r,...d!==void 0&&{responseSchema:d}})}catch(n){if(q(n))throw n;let o={kind:`degrade`,reason:`native-attempt-failed`};F(e,{sessionId:u,intent:r.nativeFork?`fork`:`resume`,verdict:o,agentId:i,adapterId:a,turnId:l});let s=await En(e,t,c);return{...r,...s,nativeLocality:o,nativeFork:void 0}}return await J(e,{sessionId:f.sessionId,turnId:f.turnId,turnNumber:f.turnNumber,messageId:c,agentId:i}),null}async function On(e){let{bus:t,session:n,turn:r,message:i,messageId:a,deliveryMode:o,onTurnComplete:s,agent:c,responseSchema:l,turnManager:u}=e,{agentContext:d}=e,f={agentId:c.agentId,adapterId:c.adapterId,message:i,deliveryMode:o,messageId:a,turnId:r.turnId,sessionId:n.sessionId,responseSchema:l,turn:r};try{if(d?.nativeLocality?.kind===`native`){let e=await Dn(t,n,f,d);if(e===null)return;d=e}await Tn(t,{agentId:c.agentId,adapterId:c.adapterId,message:i,deliveryMode:o,messageId:a,turnId:r.turnId,sessionId:n.sessionId,sessionContext:d,responseSchema:l,turn:r})}catch(e){if(q(e)){await Y({bus:t,turn:r,messageId:a,agentId:c.agentId,outcome:`cancelled`,onTurnComplete:s,turnManager:u});return}let n=e instanceof Error?e.message:String(e);await Y({bus:t,turn:r,messageId:a,agentId:c.agentId,outcome:`error`,error:n,onTurnComplete:s,turnManager:u})}}async function kn(e,t,n){let r={kind:`degrade`,reason:`agent-already-started`};F(e,{sessionId:t.sessionId,intent:`fork`,verdict:r});let i=(await z(e,t.sessionId)).messages.map(B);return{...n,messageHistory:i,nativeFork:void 0,nativeLocality:r}}async function An(e){let{bus:t,session:n,agents:r,message:i,messageId:a,turn:o,deliveryMode:s,onTurnComplete:c,turnManager:l,sessionContext:u,turnContextEnricher:d,isNewTurn:f,recoveryContext:p,recoveredAgentIds:m,swappedAgentIds:h,swappedAgentCwd:g,freshMessageHistory:_,responseSchema:v,localMachineId:y}=e,b=await Cn(t,n,r),x=await Sn(t,n,n.sessionId,u,f,y,b);x?.nativeFork&&(x=await kn(t,n,x));let S=d?await d.enrichForDeliveryMode(x?.messageHistory,o.turnId,s):x?.messageHistory,C=x?{...x,messageHistory:S}:void 0,w=h?.size?await vn(t):$,T=r.map(async e=>{let r=g?.get(e.agentId),u=r&&w.enabled?gn(w.template,r.previousCwd,r.newCwd):void 0;await On({bus:t,session:n,turn:o,message:i,messageId:a,deliveryMode:s,onTurnComplete:c,turnManager:l,agent:e,agentContext:wn({baseContext:C,recoveryContext:p,isRecovered:m?.has(e.agentId)??!1,isSwapped:h?.has(e.agentId)??!1,swapMeta:r,cwdMessage:u,freshMessageHistory:_}),responseSchema:v})});await Promise.all(T)}export{Ie as A,De as B,Ge as C,We as D,qe as E,Ne as F,P as I,Oe as L,Fe as M,Pe as N,z as O,Me as P,ke as R,Je as S,Ye as T,he as V,G as _,dn as a,nt as b,rn as c,Dt as d,Et as f,Ct as g,K as h,mn as i,I as j,L as k,Ht as l,Tt as m,Sn as n,ln as o,wt as p,hn as r,un as s,An as t,At as u,xt as v,Ke as w,V as x,dt as y,Ae as z};
@@ -1 +0,0 @@
1
- import{d as e,l as t,o as n,v as r}from"./schemas-6H-dlMrB.mjs";import{z as i}from"zod";import{createBusNamespace as a}from"@makaio/framework/core";const o=e.extend({ref:i.string().min(1),affordance:t}),s=i.discriminatedUnion(`status`,[i.object({status:i.literal(`ok`),view:r,builderVersion:i.number().int().positive(),sourceRevision:i.string().min(1)}),i.object({status:i.literal(`artifact-not-found`),view:i.null()}),i.object({status:i.literal(`not-rendered`),view:i.null()})]),c={"surfaceBinding.register":{request:n,response:i.object({registered:i.boolean()})},"surfaceBinding.list":{request:i.object({id:i.string().min(1).optional(),provider:i.string().min(1).optional(),namespace:i.string().min(1).optional()}),response:i.object({bindings:i.array(n)})},"surfaceBinding.changed":i.object({id:i.string().min(1),provider:i.string().min(1)}),"ref.changed":i.object({artifactId:i.string().min(1),provider:i.string().min(1),externalId:i.string().min(1),operation:i.enum([`upserted`,`deleted`]),origin:i.enum([`factory`,`external`]).optional()}),"capability.resolved":i.object({provider:i.string().min(1),surface:i.string().min(1),capabilities:i.record(i.string().min(1),i.boolean()),degraded:i.boolean()}),"artifact.view.resolve":{request:o,response:s}},l=a(`materialization`,c),u=l.subjects;function d(e){return{id:e.id,toRegistration:()=>({id:e.id,provider:e.provider,namespace:e.namespace,target:structuredClone(e.target),appliesTo:[...e.appliesTo],...e.valueMapping===void 0?{}:{valueMapping:{...e.valueMapping}},...e.description===void 0?{}:{description:e.description},...e.params===void 0?{}:{params:structuredClone(e.params)}})}}export{c as a,l as i,o as n,u as o,s as r,d as t};