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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (419) hide show
  1. package/LICENSE +1 -1
  2. package/dist/.makaio-build.json +5 -0
  3. package/dist/account-identity-DT5NOtFi.mjs +1 -0
  4. package/dist/adapter-C1eI-fGV.mjs +1 -0
  5. package/dist/adapters/acp-client/index.d.mts +6013 -14
  6. package/dist/adapters/acp-client/index.mjs +3 -1
  7. package/dist/adapters/config/index.d.mts +1 -1
  8. package/dist/adapters/config/index.mjs +1 -1
  9. package/dist/adapters/index.d.mts +47 -20
  10. package/dist/adapters/index.mjs +13 -6
  11. package/dist/adapters/node.d.mts +4 -4
  12. package/dist/adapters/node.mjs +4 -4
  13. package/dist/adapters/stream-session/index.d.mts +30 -0
  14. package/dist/adapters/stream-session/index.mjs +1 -1
  15. package/dist/artifact-B3npq1cy.mjs +1 -0
  16. package/dist/bus/index.d.mts +866 -203
  17. package/dist/bus/index.mjs +1 -1
  18. package/dist/bus-Caz3Jpbc.mjs +1 -0
  19. package/dist/bus-Hb-LGzgb.mjs +2 -0
  20. package/dist/chunk-DTipWd-i.mjs +1 -0
  21. package/dist/client-bx74gm4R.mjs +1 -0
  22. package/dist/clients/index.d.mts +113 -35
  23. package/dist/clients/index.mjs +2 -2
  24. package/dist/{clients-namespace-UHj5wt-l.d.mts → clients-namespace-GmSJpBUV.d.mts} +8 -8
  25. package/dist/{config-namespace-ChZOpi1W.d.mts → config-namespace-CPY9YsR8.d.mts} +4 -4
  26. package/dist/contracts/adapter/index.d.mts +3 -3
  27. package/dist/contracts/adapter/index.mjs +1 -1
  28. package/dist/contracts/adapter/schemas/session-lineage.d.mts +1 -1
  29. package/dist/contracts/artifact/index.d.mts +2 -0
  30. package/dist/contracts/artifact/index.mjs +1 -0
  31. package/dist/contracts/client/index.d.mts +2 -2
  32. package/dist/contracts/client/index.mjs +1 -1
  33. package/dist/contracts/common/index.d.mts +1 -1
  34. package/dist/contracts/config/index.d.mts +8 -8
  35. package/dist/contracts/config/index.mjs +1 -1
  36. package/dist/contracts/extension/index.d.mts +4 -3
  37. package/dist/contracts/extension/index.mjs +1 -1
  38. package/dist/contracts/facet/index.d.mts +2 -0
  39. package/dist/contracts/facet/index.mjs +1 -0
  40. package/dist/contracts/harness/index.d.mts +1 -1
  41. package/dist/contracts/harness/index.mjs +1 -1
  42. package/dist/contracts/host/index.d.mts +1 -1
  43. package/dist/contracts/host/index.mjs +1 -1
  44. package/dist/contracts/index.d.mts +12370 -1990
  45. package/dist/contracts/index.mjs +1 -1
  46. package/dist/contracts/materialization/index.d.mts +4 -0
  47. package/dist/contracts/materialization/index.mjs +1 -0
  48. package/dist/contracts/model-registry/index.d.mts +1 -1
  49. package/dist/contracts/model-registry/index.mjs +1 -1
  50. package/dist/contracts/native-session-supervisor/index.d.mts +1 -1
  51. package/dist/contracts/native-session-supervisor/index.mjs +1 -1
  52. package/dist/contracts/platform/index.d.mts +1 -1
  53. package/dist/contracts/platform/index.mjs +1 -1
  54. package/dist/contracts/provider/index.d.mts +2 -2
  55. package/dist/contracts/provider/index.mjs +1 -1
  56. package/dist/contracts/session/index.d.mts +3 -3
  57. package/dist/contracts/session/index.mjs +1 -1
  58. package/dist/contracts/shared/index.d.mts +2 -2
  59. package/dist/contracts/shared/index.mjs +1 -1
  60. package/dist/contracts/skill/index.d.mts +1 -1
  61. package/dist/contracts/skill/index.mjs +1 -1
  62. package/dist/contracts/telemetry/index.d.mts +2 -0
  63. package/dist/contracts/telemetry/index.mjs +1 -0
  64. package/dist/contracts/timeout/index.d.mts +1 -1
  65. package/dist/contracts/timeout/index.mjs +1 -1
  66. package/dist/contracts/toast/index.d.mts +2 -2
  67. package/dist/contracts/toast/index.mjs +1 -1
  68. package/dist/contracts/variant/index.d.mts +1 -1
  69. package/dist/contracts/variant/index.mjs +1 -1
  70. package/dist/core/index.d.mts +296 -34
  71. package/dist/core/index.mjs +1 -1
  72. package/dist/{credential-ref-DLCsoKVZ.mjs → credential-ref-YWQQENEo.mjs} +1 -1
  73. package/dist/cursor-storage-CtVJ3JzB.mjs +1 -0
  74. package/dist/{definition-DB7bbFSa.d.mts → definition-BLCdXGzh.d.mts} +17 -3
  75. package/dist/definition-CrgHIpTK.d.mts +60 -0
  76. package/dist/{definition-DkYy1PZz.mjs → definition-DZMXOnjX.mjs} +1 -1
  77. package/dist/{definition-DtUNiGom.d.mts → definition-pkJ6szUl.d.mts} +1 -1
  78. package/dist/drizzle-Eq8W1EbD.mjs +1 -0
  79. package/dist/event-Ca2yUf5i.mjs +1 -0
  80. package/dist/execution-target-CRPTfZlc.mjs +1 -0
  81. package/dist/extension-C-4BHMRI.mjs +1 -0
  82. package/dist/extension-CpIUgBKI.mjs +1 -0
  83. package/dist/facet-BuwhrThl.mjs +1 -0
  84. package/dist/filesystem-service-B8rhBRgB.mjs +1 -0
  85. package/dist/filesystem-service-p_iJVHd4.d.mts +66 -0
  86. package/dist/git/index.d.mts +210 -0
  87. package/dist/git/index.mjs +18 -0
  88. package/dist/globby-rtWVaFHv.mjs +41 -0
  89. package/dist/{handlers-DR_4_rAT.mjs → handlers-CkTsQLra.mjs} +3 -3
  90. package/dist/{harness-B6lGP9rm.mjs → harness-BRCMcvQN.mjs} +1 -1
  91. package/dist/{host-CvEht5RT.mjs → host-Br9VuOyr.mjs} +1 -1
  92. package/dist/{index-WKjrpcA_.d.mts → index-472sOmsW.d.mts} +6 -6
  93. package/dist/index-8SZkg7s6.d.mts +353 -0
  94. package/dist/index-B3PK4FIn.d.mts +5116 -0
  95. package/dist/{index-D2jejYlV.d.mts → index-B80L4YqA.d.mts} +3 -3
  96. package/dist/index-BFg9BUpx.d.mts +355 -0
  97. package/dist/index-BGfWS6GE.d.mts +483 -0
  98. package/dist/{index-DQRsGXb5.d.mts → index-BVgfS-AJ.d.mts} +2 -2
  99. package/dist/{index-CnmPtjnA.d.mts → index-B_zQC98V.d.mts} +16 -16
  100. package/dist/{index-DaEp4UWW.d.mts → index-Bh_Ne7LF.d.mts} +54 -42
  101. package/dist/{index-yvN8UcEH.d.mts → index-Bvb2mMH6.d.mts} +109 -109
  102. package/dist/{index-tKvu34DJ2.d.mts → index-CCGVh9BF2.d.mts} +242 -28
  103. package/dist/{index-C-myW_aK.d.mts → index-CGmcS0Ma.d.mts} +2 -2
  104. package/dist/{index-DEw90pa2.d.mts → index-CLpjm52M.d.mts} +3 -3
  105. package/dist/{index-DQWMu5fS.d.mts → index-Caig6TeF.d.mts} +85 -99
  106. package/dist/{index-DwCA1HWa.d.mts → index-CelJCBjk.d.mts} +15 -15
  107. package/dist/{index-ESSDWIB7.d.mts → index-ChunCFu4.d.mts} +1 -1
  108. package/dist/{index-e5C62_M3.d.mts → index-Cm0dUkWL.d.mts} +819 -85
  109. package/dist/{index-N5K1NOYs.d.mts → index-CokQYGVP.d.mts} +4 -4
  110. package/dist/{index-Bigx81Kr.d.mts → index-Cs0kZXIz2.d.mts} +1 -1
  111. package/dist/{index-6lyShOoU.d.mts → index-D5d5HeWI2.d.mts} +34 -0
  112. package/dist/{index-sBob9D25.d.mts → index-D90OmGmV.d.mts} +3 -3
  113. package/dist/{index-D1T-PPqF.d.mts → index-D9MwJ2Q8.d.mts} +3 -3
  114. package/dist/{index-BePI0ckL.d.mts → index-DANINzMu.d.mts} +1 -1
  115. package/dist/{index-BnSQE7z7.d.mts → index-DBw-89vC2.d.mts} +129 -1332
  116. package/dist/{index-C_kS2aqV2.d.mts → index-DGBu6bHi2.d.mts} +14 -14
  117. package/dist/index-DKC62dY5.d.mts +146 -0
  118. package/dist/{index-7sXlairn2.d.mts → index-DKia0MX1.d.mts} +1 -1
  119. package/dist/{index-E8d_RwaF.d.mts → index-DMKnON5s.d.mts} +1 -1
  120. package/dist/{index-Cq8B7cwK.d.mts → index-DUaw0Dw8.d.mts} +1524 -369
  121. package/dist/{index-Dd5s4MSm.d.mts → index-De3kPhlN.d.mts} +2 -2
  122. package/dist/{index-DGTFJB_8.d.mts → index-L4GjJDKb.d.mts} +116 -23
  123. package/dist/{index-iID2R9G1.d.mts → index-U-A8eyGT.d.mts} +7 -7
  124. package/dist/{index-D7T8XCku.d.mts → index-eemAKwsB.d.mts} +23 -2
  125. package/dist/{index-BXP9GK5q.d.mts → index-mNec7V-9.d.mts} +27 -27
  126. package/dist/{index-CnZOKNjU.d.mts → index-soFznFCy2.d.mts} +2 -2
  127. package/dist/{index-Ch3ph52M2.d.mts → index-vtXJuwrz.d.mts} +2 -2
  128. package/dist/{index-BnNqbx2I.d.mts → index-x_lVDp_J.d.mts} +2 -2
  129. package/dist/json-value-CmhSGMLv.mjs +1 -0
  130. package/dist/kernel/cli/index.d.mts +4 -2
  131. package/dist/kernel/cli/index.mjs +1 -1
  132. package/dist/kernel/cli/schemas.d.mts +1 -0
  133. package/dist/kernel/cli/schemas.mjs +1 -1
  134. package/dist/kernel/extension/index.d.mts +1 -1
  135. package/dist/kernel/extension/index.mjs +1 -1
  136. package/dist/kernel/index.d.mts +5 -5
  137. package/dist/kernel/index.mjs +1 -1
  138. package/dist/kernel/namespace/index.d.mts +1 -1
  139. package/dist/kernel/namespace/index.mjs +1 -1
  140. package/dist/kernel/observability/index.d.mts +1 -1
  141. package/dist/kernel/observability/index.mjs +1 -1
  142. package/dist/kernel/providers/index.d.mts +1 -1
  143. package/dist/kernel/providers/index.mjs +1 -1
  144. package/dist/kernel/window/index.d.mts +1 -1
  145. package/dist/kernel/window/index.mjs +1 -1
  146. package/dist/materialization-CuUBu4XI.mjs +1 -0
  147. package/dist/{namespace-BpIE-jQW.d.mts → namespace-5QQqbF-B.d.mts} +1018 -111
  148. package/dist/{namespace-DwCyOaZn2.d.mts → namespace-BM7Djng9.d.mts} +3 -3
  149. package/dist/namespace-BwzZJqTV.mjs +1 -0
  150. package/dist/{namespace-DZcuLwEA.d.mts → namespace-CTm3nEvh.d.mts} +1 -1
  151. package/dist/{namespace-BK2erxpV.d.mts → namespace-CaaNnKcR.d.mts} +3 -3
  152. package/dist/{namespace-GLGGcWPH.d.mts → namespace-CaoZ3S78.d.mts} +1 -1
  153. package/dist/{namespace-DXnMk3U8.d.mts → namespace-CxhsoFUP.d.mts} +27 -31
  154. package/dist/{namespace-B1E57soL.d.mts → namespace-DD8Oiqo7.d.mts} +23 -23
  155. package/dist/{namespace-BCRNwPnw.d.mts → namespace-DLovh2Ws.d.mts} +21 -21
  156. package/dist/{namespace-Ysg1N6rR.d.mts → namespace-DgqkaOVu.d.mts} +26 -25
  157. package/dist/{namespace-B5ZCshBw.d.mts → namespace-Dr8K0MCp.d.mts} +82 -81
  158. package/dist/{namespace-DGMO2E8f.mjs → namespace-DuXK5AYN.mjs} +1 -1
  159. package/dist/{namespace-ZbthBQVt.d.mts → namespace-EQniz-Aw.d.mts} +14 -14
  160. package/dist/{namespace-C54Oj025.d.mts → namespace-IV1QK__V.d.mts} +1 -1
  161. package/dist/{namespace-BKrV_2gZ.d.mts → namespace-TyiTsLFv.d.mts} +46 -45
  162. package/dist/{namespace-OwAf1Brw.mjs → namespace-xcmbQlxh.mjs} +1 -1
  163. package/dist/{native-session-supervisor-zPt624Tp.mjs → native-session-supervisor-B1TnaPUF.mjs} +1 -1
  164. package/dist/node/bus-server/index.d.mts +1 -1
  165. package/dist/node/bus-server/index.mjs +1 -1
  166. package/dist/node/bus-server/server-lifecycle.d.mts +1 -1
  167. package/dist/node/bus-server/server-lifecycle.mjs +1 -1
  168. package/dist/node/machine-identity/index.mjs +2 -2
  169. package/dist/node/transports/index.d.mts +200 -7
  170. package/dist/node/transports/index.mjs +2 -2
  171. package/dist/{orchestrator-shared-D2txLAUs.mjs → orchestrator-shared-CIDiFJMD.mjs} +1 -1
  172. package/dist/{orchestrator-shared-DrjtTXYh.d.mts → orchestrator-shared-Dfa7FMyw.d.mts} +5 -5
  173. package/dist/package-DKVlsMP3.mjs +1 -0
  174. package/dist/{profile-Cq4A7kQa.mjs → profile-6ynCD5k3.mjs} +1 -1
  175. package/dist/{provider-context-BB4eD8ON.mjs → provider-context-CK6B4X_8.mjs} +1 -1
  176. package/dist/providers/index.mjs +1 -1
  177. package/dist/{providers-namespace-CDwxY_DV.d.mts → providers-namespace-DSEpli4A.d.mts} +1 -1
  178. package/dist/{schema-B295yplx.d.mts → schema-M5YTvSAG.d.mts} +114 -2
  179. package/dist/{schema-C4iznV0q.mjs → schema-e0wU_lcV.mjs} +1 -1
  180. package/dist/{schema-introspection-DCYC47_d.mjs → schema-introspection-Dn1jWQs1.mjs} +1 -1
  181. package/dist/{schemas-C5xtVqdb.d.mts → schemas-Bd0OjRQf.d.mts} +1 -1
  182. package/dist/{schemas-Ra8pz5M-.d.mts → schemas-C46QfKzv.d.mts} +24 -28
  183. package/dist/{schemas-sshQEF3l.d.mts → schemas-CDBSjg7o.d.mts} +1 -1
  184. package/dist/schemas-CR1Rripy.mjs +1 -0
  185. package/dist/schemas-CVvwIfG4.mjs +1 -0
  186. package/dist/schemas-CaLhkkLn.mjs +1 -0
  187. package/dist/{schemas-DYqKRNju.d.mts → schemas-ClOOT1W6.d.mts} +4 -4
  188. package/dist/{schemas-BfMZAwff.d.mts → schemas-DATniTHb.d.mts} +8 -8
  189. package/dist/{schemas-BWvuaL0w.d.mts → schemas-DVF1A4DF.d.mts} +4 -4
  190. package/dist/{schemas-Di0XnnMX.d.mts → schemas-DaRSfYLf.d.mts} +1 -1
  191. package/dist/{schemas-C31qbb0s.d.mts → schemas-DiYVzG6e.d.mts} +51 -48
  192. package/dist/{schemas-KMA1efQg.d.mts → schemas-j7ivZ2HI.d.mts} +3 -3
  193. package/dist/schemas-wg_6PAdV.d.mts +153 -0
  194. package/dist/scoped-bus-04pwo1uM.mjs +1 -0
  195. package/dist/service-base/index.d.mts +1 -1
  196. package/dist/services/adapter-runtime/index.d.mts +3 -3
  197. package/dist/services/adapter-runtime/index.mjs +1 -1
  198. package/dist/services/adapter-runtime/namespace.d.mts +1 -1
  199. package/dist/services/adapter-runtime/schemas.d.mts +1 -1
  200. package/dist/services/adapter-subsystem/index.d.mts +2 -2
  201. package/dist/services/adapter-subsystem/index.mjs +1 -1
  202. package/dist/services/adapter-subsystem/namespace.d.mts +1 -1
  203. package/dist/services/adapter-subsystem/namespace.mjs +1 -1
  204. package/dist/services/agent-runtime/index.d.mts +2 -2
  205. package/dist/services/agent-runtime/namespace.d.mts +1 -1
  206. package/dist/services/agent-runtime/schemas.d.mts +1 -1
  207. package/dist/services/capability/index.d.mts +1 -1
  208. package/dist/services/capability/index.mjs +1 -1
  209. package/dist/services/cli-detection/namespace.d.mts +1 -1
  210. package/dist/services/codebase/index.d.mts +2 -2
  211. package/dist/services/codebase/namespace.d.mts +1 -1
  212. package/dist/services/codebase/schemas.d.mts +1 -1
  213. package/dist/services/compression/index.d.mts +2 -2
  214. package/dist/services/compression/namespace.d.mts +1 -1
  215. package/dist/services/compression/schemas.d.mts +1 -1
  216. package/dist/services/context-rules/index.d.mts +4 -4
  217. package/dist/services/context-rules/index.mjs +1 -1
  218. package/dist/services/credential-change/index.d.mts +1 -1
  219. package/dist/services/definition/namespace.d.mts +1 -1
  220. package/dist/services/definition/schemas.d.mts +1 -1
  221. package/dist/services/dialog/namespace.d.mts +1 -1
  222. package/dist/services/dialog/schemas.d.mts +1 -1
  223. package/dist/services/execution-target/index.d.mts +4 -4
  224. package/dist/services/execution-target/index.mjs +1 -1
  225. package/dist/services/execution-target/namespace.d.mts +1 -1
  226. package/dist/services/execution-target/schemas.d.mts +1 -1
  227. package/dist/services/execution-target/schemas.mjs +1 -1
  228. package/dist/services/filesystem/index.d.mts +3 -0
  229. package/dist/services/filesystem/index.mjs +1 -0
  230. package/dist/services/filesystem/namespace.d.mts +7 -7
  231. package/dist/services/filesystem/schemas.d.mts +4 -4
  232. package/dist/services/git/namespace.d.mts +1163 -0
  233. package/dist/services/git/namespace.mjs +1 -0
  234. package/dist/services/git/schemas.d.mts +932 -0
  235. package/dist/services/git/schemas.mjs +1 -0
  236. package/dist/services/harness/index.d.mts +35 -35
  237. package/dist/services/harness/index.mjs +1 -1
  238. package/dist/services/harness/storage/schema.d.mts +5 -5
  239. package/dist/services/index.d.mts +1411 -928
  240. package/dist/services/index.mjs +1 -1
  241. package/dist/services/local-notification/index.d.mts +1 -1
  242. package/dist/services/local-notification/namespace.d.mts +1 -1
  243. package/dist/services/local-notification/schemas.d.mts +1 -1
  244. package/dist/services/log-import/browser.d.mts +2 -2
  245. package/dist/services/log-import/index.d.mts +23 -24
  246. package/dist/services/log-import/index.mjs +2 -2
  247. package/dist/services/log-import/log-import.d.mts +1 -1
  248. package/dist/services/log-import/log-import.mjs +1 -1
  249. package/dist/services/log-import/namespace.d.mts +1 -1
  250. package/dist/services/log-import/namespace.mjs +1 -1
  251. package/dist/services/log-import/schemas.d.mts +1 -1
  252. package/dist/services/log-import/schemas.mjs +1 -1
  253. package/dist/services/model-registry/index.d.mts +1 -1
  254. package/dist/services/model-registry/index.mjs +1 -1
  255. package/dist/services/preferences/index.d.mts +2 -2
  256. package/dist/services/preferences/schemas.d.mts +1 -1
  257. package/dist/services/preferences/storage-namespace.d.mts +2 -2
  258. package/dist/services/provider-context/index.d.mts +1 -1
  259. package/dist/services/provider-context/index.mjs +1 -1
  260. package/dist/services/provider-runtime/index.d.mts +1 -1
  261. package/dist/services/provider-runtime/index.mjs +1 -1
  262. package/dist/services/session/handlers/index.d.mts +1 -1
  263. package/dist/services/session/handlers/index.mjs +1 -1
  264. package/dist/services/session/index.d.mts +10 -10
  265. package/dist/services/session/index.mjs +1 -1
  266. package/dist/services/session/messages/namespace.d.mts +1 -1
  267. package/dist/services/session/messages/namespace.mjs +1 -1
  268. package/dist/services/session/orchestrator-testing/index.d.mts +1 -1
  269. package/dist/services/session/orchestrator-testing/index.mjs +1 -1
  270. package/dist/services/session/session-events/namespace.d.mts +1 -1
  271. package/dist/services/session/session-events/namespace.mjs +1 -1
  272. package/dist/services/session/storage/namespace.d.mts +1 -1
  273. package/dist/services/session/storage/schema.d.mts +1 -1
  274. package/dist/services/session/storage/schema.mjs +1 -1
  275. package/dist/services/session/testing/index.d.mts +2 -2
  276. package/dist/services/session/testing/index.mjs +16 -3
  277. package/dist/services/session/testing/orchestrator-shared.d.mts +1 -1
  278. package/dist/services/session/testing/orchestrator-shared.mjs +1 -1
  279. package/dist/services/session/turns/namespace.d.mts +1 -1
  280. package/dist/services/session/turns/namespace.mjs +1 -1
  281. package/dist/services/session-editor/index.d.mts +3 -3
  282. package/dist/services/session-editor/index.mjs +1 -1
  283. package/dist/services/settings/index.d.mts +4 -4
  284. package/dist/services/settings/index.mjs +1 -1
  285. package/dist/services/settings/namespace.d.mts +19 -18
  286. package/dist/services/settings/namespace.mjs +1 -1
  287. package/dist/services/settings/storage/clients-namespace.d.mts +1 -1
  288. package/dist/services/settings/storage/clients-namespace.mjs +1 -1
  289. package/dist/services/settings/storage/extension-configs/namespace.d.mts +4 -4
  290. package/dist/services/settings/storage/index.d.mts +3 -3
  291. package/dist/services/settings/storage/index.mjs +1 -1
  292. package/dist/services/settings/storage/providers-namespace.d.mts +1 -1
  293. package/dist/services/settings/storage/providers-namespace.mjs +1 -1
  294. package/dist/services/subagent/index.d.mts +2 -0
  295. package/dist/services/subagent/index.mjs +1 -0
  296. package/dist/services/subagent-template/index.d.mts +3 -0
  297. package/dist/services/subagent-template/index.mjs +1 -0
  298. package/dist/services/subagent-template/namespace.d.mts +2 -0
  299. package/dist/services/subagent-template/namespace.mjs +1 -0
  300. package/dist/services/subagent-template/schemas.d.mts +2 -0
  301. package/dist/services/subagent-template/schemas.mjs +1 -0
  302. package/dist/services/tool-approval/index.d.mts +1 -1
  303. package/dist/services/tool-approval/index.mjs +1 -1
  304. package/dist/services/tools/index.d.mts +1 -1
  305. package/dist/services/tools/index.mjs +1 -1
  306. package/dist/services/tray-menu/index.d.mts +3 -3
  307. package/dist/services/tray-menu/index.mjs +1 -1
  308. package/dist/services/tray-menu/namespace.d.mts +1 -1
  309. package/dist/services/tray-menu/schemas.d.mts +1 -1
  310. package/dist/services/turn/index.d.mts +1 -1
  311. package/dist/services/turn/namespace.d.mts +1 -1
  312. package/dist/services/turn/schemas.d.mts +12 -12
  313. package/dist/session-BoldSdNZ2.mjs +134 -0
  314. package/dist/session-DuVOYctZ.mjs +1 -0
  315. package/dist/{session-lineage-B0cpHfuc.d.mts → session-lineage-CRsc9g1x.d.mts} +1 -1
  316. package/dist/shared-DpOEfD8F.mjs +1 -0
  317. package/dist/{skill-20_SBXaI.mjs → skill-CQO4mDqK.mjs} +1 -1
  318. package/dist/storage/drizzle/client.d.mts +2 -2
  319. package/dist/storage/drizzle/client.mjs +1 -1
  320. package/dist/storage/drizzle/index.d.mts +49 -10
  321. package/dist/storage/drizzle/index.mjs +1 -1
  322. package/dist/storage/handlers/drizzle/index.d.mts +1 -1
  323. package/dist/storage/handlers/drizzle/index.mjs +1 -1
  324. package/dist/storage/handlers/index.d.mts +2 -2
  325. package/dist/storage/handlers/index.mjs +1 -1
  326. package/dist/storage/index.d.mts +4 -4
  327. package/dist/{storage-namespace-DoH-Wkjp.d.mts → storage-namespace-BXkoh5Sy.d.mts} +11 -11
  328. package/dist/storage-namespace-DWsYLAXa.mjs +1 -0
  329. package/dist/{storage-namespace-definition-CJgqyXH1.d.mts → storage-namespace-definition-Bkx5rSto.d.mts} +1 -1
  330. package/dist/style.css +540 -540
  331. package/dist/telemetry-CvdLBWuk.mjs +1 -0
  332. package/dist/testing/drizzle-harness.mjs +1 -1
  333. package/dist/testing/index.mjs +1 -1
  334. package/dist/tool-approval-service-BvZWhYZp.mjs +1 -0
  335. package/dist/tools/index.d.mts +20 -10
  336. package/dist/tools/index.mjs +1 -1
  337. package/dist/tools/testing/index.d.mts +1 -1
  338. package/dist/tools-D-luYcDw.mjs +1431 -0
  339. package/dist/{types-C11LvekX.d.mts → types-BCMUtBj1.d.mts} +117 -20
  340. package/dist/{types-vNpkAe4Y.d.mts → types-C2Ob9zz_.d.mts} +1 -1
  341. package/dist/{types-t295YC6T.d.mts → types-CCdqjeuH.d.mts} +2 -2
  342. package/dist/{types-Cvrj2ogm.d.mts → types-DZHvOc_Q.d.mts} +4 -4
  343. package/dist/{types--nrtGZ1V.d.mts → types-Dy3YTcTF.d.mts} +255 -97
  344. package/dist/{types-DYF5LxZY.d.mts → types-MfJZ67e9.d.mts} +91 -9
  345. package/dist/{types-6WxLfoM3.d.mts → types-dyP-bXXE.d.mts} +1 -1
  346. package/dist/ui-components/index.mjs +2 -2
  347. package/dist/ui-hooks/index.d.mts +111 -1
  348. package/dist/ui-hooks/index.mjs +1 -1
  349. package/dist/ui-kernel/index.d.mts +4 -4
  350. package/dist/ui-kernel/pages/namespace.d.mts +4 -4
  351. package/dist/ui-kernel/pages/schemas.d.mts +1 -1
  352. package/dist/ui-views/index.mjs +2 -2
  353. package/dist/utils/index.d.mts +36 -1
  354. package/dist/utils/index.mjs +2 -2
  355. package/dist/utils/project-manifest.d.mts +130 -0
  356. package/dist/utils/project-manifest.mjs +1 -0
  357. package/dist/utils/scope-paths.d.mts +33 -0
  358. package/dist/utils/scope-paths.mjs +1 -0
  359. package/dist/utils/workspace-packages.d.mts +59 -0
  360. package/dist/utils/workspace-packages.mjs +1 -0
  361. package/dist/utils/workspace-root.d.mts +6 -9
  362. package/dist/utils/workspace-root.mjs +1 -1
  363. package/dist/{version-D8S4O22A.mjs → version-BeT3ASEe.mjs} +1 -1
  364. package/package.json +55 -2
  365. package/dist/account-identity-Bg_vKkcs.mjs +0 -1
  366. package/dist/adapter-CpF2aK_-.mjs +0 -1
  367. package/dist/bus-B1seC4M_.mjs +0 -2
  368. package/dist/chunk-Dc06z0qk.mjs +0 -1
  369. package/dist/client-DMWXCWhM.mjs +0 -1
  370. package/dist/cursor-storage-BoNI7OAR.mjs +0 -1
  371. package/dist/drizzle-Bn2GtW8c.mjs +0 -1
  372. package/dist/execution-target-D6MgthYs.mjs +0 -1
  373. package/dist/extension-53GerdGg.mjs +0 -1
  374. package/dist/extension-fJmv8Yri.mjs +0 -1
  375. package/dist/namespace-C_h7scWx2.mjs +0 -1
  376. package/dist/schemas-Bn8aqDIE.mjs +0 -1
  377. package/dist/services/worker/index.d.mts +0 -3
  378. package/dist/services/worker/index.mjs +0 -1
  379. package/dist/services/worker/namespace.d.mts +0 -2
  380. package/dist/services/worker/namespace.mjs +0 -1
  381. package/dist/services/worker/schemas.d.mts +0 -2
  382. package/dist/services/worker/schemas.mjs +0 -1
  383. package/dist/session-BCSf-Fgj.mjs +0 -1
  384. package/dist/session-BNo_cIiz.mjs +0 -123
  385. package/dist/shared-BhuSHZXH.mjs +0 -1
  386. package/dist/storage-namespace-BIDs9LPb.mjs +0 -1
  387. package/dist/tool-approval-service-CZCPfvVy.mjs +0 -1
  388. package/dist/tools-Cid9D99F.mjs +0 -1
  389. /package/dist/{base-orchestrator-BOAPgqF7.d.mts → base-orchestrator-wyumsn3b.d.mts} +0 -0
  390. /package/dist/{capability-service-DV32ecwR.mjs → capability-service-CJbmhfv9.mjs} +0 -0
  391. /package/dist/{cleanEnvForAdapter-hTPNvPU5.mjs → cleanEnvForAdapter-KkYzQa1f.mjs} +0 -0
  392. /package/dist/{config-namespace-wJ2CakDB.mjs → config-namespace-ncYg2ct_.mjs} +0 -0
  393. /package/dist/{extension-namespace-CTd9kOtt.mjs → extension-namespace-cMh_mMiL.mjs} +0 -0
  394. /package/dist/{identity-DBST3-XO.mjs → identity-Cz2IeEtm.mjs} +0 -0
  395. /package/dist/{index-SzSiyG61.d.mts → index-CHQ1SqT0.d.mts} +0 -0
  396. /package/dist/{model-registry-xINyxQUT.mjs → model-registry-CfXytvzx.mjs} +0 -0
  397. /package/dist/{model-registry-Dzpssh9j.mjs → model-registry-Scn_MC2d.mjs} +0 -0
  398. /package/dist/{namespace-DBw9BYr8.mjs → namespace-BoD94mrN.mjs} +0 -0
  399. /package/dist/{namespace-DUVgMfTR.mjs → namespace-CFLAmQfh.mjs} +0 -0
  400. /package/dist/{namespace-aALq9tnE.mjs → namespace-DkRgbZYn.mjs} +0 -0
  401. /package/dist/{namespace-yxIxUsjo.mjs → namespace-LViZ-EQk.mjs} +0 -0
  402. /package/dist/{namespace-Zb8HAbyF.mjs → namespace-Yna5-Pws.mjs} +0 -0
  403. /package/dist/{platform-BMFUpmTA.mjs → platform-DZ7z-wXD.mjs} +0 -0
  404. /package/dist/{providers-DhiW_fx4.mjs → providers-u8i15co9.mjs} +0 -0
  405. /package/dist/{schema-D3ZG13h9.mjs → schema-CoyE6mPt.mjs} +0 -0
  406. /package/dist/{schemas-CEBe89yE.mjs → schemas-DE-GNmSD.mjs} +0 -0
  407. /package/dist/{schemas-COnLJnt_.mjs → schemas-hSrzflwZ.mjs} +0 -0
  408. /package/dist/{schemas-CrnlCRep.mjs → schemas-jFe1AuI-.mjs} +0 -0
  409. /package/dist/{server-lifecycle-Dx5WgfoS.mjs → server-lifecycle-FXTPW39-.mjs} +0 -0
  410. /package/dist/{server-lifecycle-BC6FRn86.d.mts → server-lifecycle-YoSGFGnU.d.mts} +0 -0
  411. /package/dist/{shared-schemas-Byah36lG.mjs → shared-schemas-CPShiLNp.mjs} +0 -0
  412. /package/dist/{storage-namespace-definition-BjK9nZAN.mjs → storage-namespace-definition-CqSdsuCC.mjs} +0 -0
  413. /package/dist/{timeout-D33CUZ0M.mjs → timeout-XsYIOKrc.mjs} +0 -0
  414. /package/dist/{tray-menu-service-BAYtLdAg.mjs → tray-menu-service-DuXq5k22.mjs} +0 -0
  415. /package/dist/{ui-config-zawaoEfB.mjs → ui-config-9bDRwFZr.mjs} +0 -0
  416. /package/dist/{variant-BZWfmS0q.mjs → variant-CT6XBP6T.mjs} +0 -0
  417. /package/dist/{visibility-CZu8ooOA.mjs → visibility-Cb62p9bv.mjs} +0 -0
  418. /package/dist/{window-registry-C_IJmY8_.d.mts → window-registry-CBcrGTv4.d.mts} +0 -0
  419. /package/dist/{window-registry-B_-hBEcV.mjs → window-registry-DW-dKRjQ.mjs} +0 -0
@@ -1,123 +0,0 @@
1
- import{agents as e,sessions as t}from"./services/session/storage/schema.mjs";import{t as n}from"./schema-C4iznV0q.mjs";import{n as r,r as i}from"./namespace-DGMO2E8f.mjs";import{SessionStorageSubjects as a}from"./services/session/storage/namespace.mjs";import{A as o,D as s,E as c,F as l,O as u,P as d,T as f,b as p,d as m,f as h,j as g,k as _,u as v,v as ee}from"./handlers-DR_4_rAT.mjs";import{TurnStorageSubjects as y}from"./services/turn/namespace.mjs";import{AdapterRuntimeSubjects as te}from"./services/adapter-runtime/namespace.mjs";import{MessageStorageSubjects as b}from"./services/session/messages/namespace.mjs";import{n as ne}from"./namespace-yxIxUsjo.mjs";import{z as x}from"zod";import{MakaioBus as S,NoHandlerError as C}from"@makaio/framework/bus";import{AdapterSessionStatusSchema as re,AdapterSubjects as w,AgentSubjects as T,CanonicalModelSubjects as ie,CompressSessionLineageSchema as ae,CompressionModeSchema as oe,ForkSessionLineageSchema as se,ForkTransformsSchema as ce,MessageRoutingSchema as le,RootSessionLineageSchema as ue,SessionContextSchema as de,SessionDiscoveredSchema as fe,SessionLineageKindSchema as pe,SessionStorageSetRequestSchema as me,SessionStorageUpdateSchema as he,SessionSubjects as E,SubagentSessionLineageSchema as ge,compareMessageCursorAsc as _e,compareMessageCursorDesc as ve,isCanonicalModelParseError as ye,messageToCursor as D,parseCanonicalModel as be}from"@makaio/framework/contracts";import{BaseService as xe}from"@makaio/framework/service-base";import{index as Se,integer as O,primaryKey as Ce,sqliteTable as we,text as k,uniqueIndex as Te}from"drizzle-orm/sqlite-core";import{createStorageNamespaceDefinition as Ee}from"@makaio/framework/storage";import{and as A,asc as De,count as j,desc as M,eq as N,gt as Oe,gte as ke,inArray as P,isNull as Ae,lt as je,lte as Me,or as Ne,sql as F}from"drizzle-orm";import{sanitizeFtsQuery as Pe}from"@makaio/framework/storage/drizzle";import{ClientIdentityObservationSchema as Fe}from"@makaio/framework/contracts/client";import{ImportCursorStorageSubjects as Ie}from"@makaio/framework/adapters";import{ROOT_SESSION_LINEAGE_KIND as Le,SESSION_LINEAGE_KINDS as Re}from"@makaio/framework/contracts/adapter/schemas/session-lineage";function ze(e){return e.on(E.agent.added,async t=>{let n=await e.requestOptional(a.get,{sessionId:t.payload.sessionId}),r=n.handled?n.data.session:void 0;r&&(r.adapterSessionId||(r.adapterSessionId=t.payload.adapterSessionId,r.adapterName=t.payload.adapterName,r.adapterId=t.payload.adapterId),(t.payload.role??(r.leadAgentId?`member`:`lead`))===`lead`&&(r.leadAgentId=t.payload.agentId),r.lastActivityAt=Date.now(),await e.request(a.set,{sessionId:t.payload.sessionId,session:r}))})}function Be(e){return e.on(E.agent.removed,async t=>{let n=await e.requestOptional(a.get,{sessionId:t.payload.sessionId}),r=n.handled?n.data.session:void 0;r&&(await e.requestOptional(l.updateStatus,{agentId:t.payload.agentId,status:`disposed`}),r.leadAgentId===t.payload.agentId&&(r.leadAgentId=void 0),r.lastActivityAt=Date.now(),await e.request(a.set,{sessionId:t.payload.sessionId,session:r}))})}function Ve(e){return[He(e),Ue(e),We(e),Ge(e),Ke(e),qe(e),Je(e),ze(e.bus),Be(e.bus)]}function He(e){let{bus:t}=e;return t.on(E.create,async e=>{let{sessionId:n,title:r,originWindowId:i}=e.payload,o=n??crypto.randomUUID(),s=Date.now(),c={sessionId:o,createdAt:s,lastActivityAt:s,agents:[],status:`active`,title:r};if(n){let n=await t.requestOptional(a.set,{sessionId:o,session:c,ifAbsent:!0});if(n.handled&&!n.data.success){let n=await t.requestOptional(a.get,{sessionId:o});if(!(n.handled&&n.data.session))throw Error(`Session already exists but could not be loaded: ${o}`);e.setResult({sessionId:o});return}}else await t.requestOptional(a.set,{sessionId:o,session:c});await t.emit(E.created,{sessionId:o,createdAt:c.createdAt,parentSessionId:null,branchKind:null,originWindowId:i??`server`}),e.setResult({sessionId:o})})}function Ue(e){let{bus:t}=e;return t.on(E.get,async e=>{let n=await t.requestOptional(a.get,{sessionId:e.payload.sessionId}),r=n.handled?n.data.session:null;e.setResult({session:r})})}function We(e){let{bus:t}=e;return t.on(E.list,async e=>{let{status:n,limit:r,offset:i,includePreview:o,executionTargetId:s}=e.payload,c=await t.requestOptional(a.list,{status:n??`all`,limit:r,offset:i,includePreview:o,executionTargetId:s}),l=c.handled?c.data.sessions:[],u=c.handled?c.data.total:0;e.setResult({sessions:l,total:u})})}function Ge(e){let{bus:t}=e;return t.on(E.close,async e=>{let{sessionId:n}=e.payload,r=await t.requestOptional(a.get,{sessionId:n}),i=r.handled?r.data.session:null;if(!i){e.setResult({success:!1});return}if(i.status===`closed`){e.setResult({success:!0});return}if(i.status!==`active`){e.setResult({success:!1});return}i.status=`closed`,i.lastActivityAt=Date.now(),await t.requestOptional(a.set,{sessionId:n,session:i}),await t.emit(E.closed,{sessionId:n}),e.setResult({success:!0})})}function Ke(e){let{bus:t}=e;return t.on(E.update,async e=>{let{sessionId:n,executionTargetId:r,approvalPolicyOverride:i,title:o}=e.payload,s=await t.requestOptional(a.update,{sessionId:n,executionTargetId:r,approvalPolicyOverride:i,title:o}),c=s.handled?s.data.success:!1;if(c){let e=[];r!==void 0&&e.push(`executionTargetId`),i!==void 0&&e.push(`approvalPolicyOverride`),o!==void 0&&e.push(`title`),e.length>0&&await t.emit(E.updated,{sessionId:n,changedProperties:e})}e.setResult({success:c})})}function qe(e){let{bus:t}=e;return t.on(E.archive,async e=>{let{sessionId:n}=e.payload,r=await t.requestOptional(a.get,{sessionId:n}),i=r.handled?r.data.session:null;if(!i){e.setResult({success:!1});return}if(i.status===`archived`){e.setResult({success:!0});return}if(i.status!==`closed`){e.setResult({success:!1});return}i.status=`archived`,i.lastActivityAt=Date.now(),await t.requestOptional(a.set,{sessionId:n,session:i}),await t.emit(E.archived,{sessionId:n}),e.setResult({success:!0})})}function Je(e){let{bus:t}=e;return t.on(E.purge,async e=>{let{sessionId:n}=e.payload,i=await t.requestOptional(a.get,{sessionId:n}),o=i.handled?i.data.session:null;if(!o){e.setResult({success:!1,error:`Session not found`});return}if(o.status!==`archived`){e.setResult({success:!1,error:`Cannot purge session unless archived. Call close then archive first.`});return}let s=await t.requestOptional(a.list,{status:`all`}),c=s.handled?s.data.sessions:[];for(let e of c)e.parentSessionId===n&&await t.requestOptional(a.set,{sessionId:e.sessionId,session:{...e,parentSessionId:void 0}});let l=await t.requestOptional(r.getEvents,{sessionId:n,options:{limit:1}}),u=l.handled?l.data.totalCount:0;await t.requestOptional(r.deleteBySession,{sessionId:n}),await t.requestOptional(a.delete,{sessionId:n}),await t.emit(E.purged,{sessionId:n}),e.setResult({success:!0,eventsDeleted:u})})}var Ye=class extends xe{constructor(e=S){super(e)}async onInit(){for(let e of Ve({bus:this.bus}))this.addCleanup(e);await this.reconcileOrphanedTurns()}async reconcileOrphanedTurns(){let e=await this.bus.requestOptional(y.listActive,{});if(!e.handled)return;let{turns:t}=e.data;for(let e of t)try{let{transitioned:t}=await this.bus.request(y.complete,{turnId:e.turnId,status:`error`,expectedStatus:`active`,error:`process-restart`});t&&await this.bus.emit(E.turn.completed,{sessionId:e.sessionId,turnId:e.turnId,turnNumber:e.turnNumber,success:!1,error:`process-restart`})}catch(t){console.error(`[MakaioSessionService] Failed to reconcile orphaned turn ${e.turnId}:`,t)}}};function Xe(e){return Error(`No adapter found for adapterName="${e}". Ensure adapter-runtime identity handlers are registered; adapter startup verifies live availability.`)}var Ze=class{bus;registry=new Map;cleanup;constructor(e){this.bus=e,this.cleanup=this.bus.on(w.initialized,e=>{this.registry.set(e.payload.adapterName,e.payload.adapterId)})}resolve(e){let t=this.registry.get(e);if(!t)throw Xe(e);return t}async resolveAvailable(e){try{let{adapterId:t}=await this.bus.request(te.resolveId,{adapterName:e});return this.registry.set(e,t),t}catch{let t=this.registry.get(e);if(t)return t;throw Xe(e)}}destroy(){this.cleanup?.(),this.cleanup=void 0,this.registry.clear()}};function Qe(e,t,n,i){return e.on(r.append,e=>{let{event:r}=e.payload,a=t.get(r.sessionId)??[];if(n.has(r.eventId)){e.setResult({success:!0});return}a.push(r),t.set(r.sessionId,a),n.set(r.eventId,i()),e.setResult({success:!0})})}function $e(e,t,n){return e.on(r.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 et(e,t){return e.on(r.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 tt(e,t,n){return e.on(r.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 nt(e,t){return e.on(r.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 rt(e){let t=new Map,n=new Map,r=1,i=[Qe(e,t,n,()=>r++),$e(e,t,n),et(e,t),tt(e,t,n),nt(e,t)];return()=>i.forEach(e=>e())}const it=[`sessionId`,`agentId`,`adapterId`,`messageId`,`turnId`];function at(e){let t=e.payload,n={};for(let[e,r]of Object.entries(t))it.includes(e)||(n[e]=r);return n}function ot(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 st(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 ct(e.payload)}}function ct(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 lt({bus:e,db:t}){return e.on(r.append,async e=>{let{event:n}=e.payload,r=`payload`in n&&`agentId`in n.payload?n.payload.agentId:null,a=`payload`in n&&`adapterId`in n.payload?n.payload.adapterId:null,o=`payload`in n&&`turnId`in n.payload?n.payload.turnId:null,s=`payload`in n&&`messageId`in n.payload?n.payload.messageId:null,c=n.type===`message`?s:null,l=n.type===`message`?null:s,u={sessionId:n.sessionId,eventId:n.eventId,timestamp:n.timestamp,type:n.type,agentId:r,adapterId:a,messageId:c,originatingMessageId:l,turnId:o,contentText:st(n),payload:JSON.stringify(at(n))};await t.insert(i).values(u).onConflictDoNothing(),e.setResult({success:!0})})}function ut({bus:e,db:t}){return e.on(r.getEvents,async e=>{let{sessionId:n,options:r}=e.payload,a=[N(i.sessionId,n)],o=r?.order??`asc`;if(r?.after){let e=parseInt(r.after,10);!isNaN(e)&&e>0&&(o===`desc`?a.push(je(i.id,e)):a.push(Oe(i.id,e)))}r?.types&&r.types.length>0&&a.push(P(i.type,r.types));let s=r?.limit??100,c=o===`desc`?M:De,l=await t.select().from(i).where(A(...a)).orderBy(c(i.id)).limit(s+1),u=l.length>s,d=u?l.slice(0,s):l,f=d.map(ot),p=u&&d.length>0?d[d.length-1].id.toString():null;e.setResult({events:f,nextCursor:p})})}function dt({bus:e,db:t}){return e.on(r.getByIds,async e=>{let{sessionId:n,eventIds:r}=e.payload,a=(await t.select().from(i).where(A(N(i.sessionId,n),P(i.eventId,r))).orderBy(De(i.timestamp))).map(ot);e.setResult({events:a})})}function ft({bus:e,db:t}){return e.on(r.deleteBySession,async e=>{let{sessionId:n}=e.payload,r=(await t.select().from(i).where(N(i.sessionId,n))).length;await t.delete(i).where(N(i.sessionId,n)),e.setResult({success:!0,deletedCount:r})})}function pt({bus:e,db:t}){return e.on(r.getEventsBySessions,async e=>{let{sessionIds:n,types:r,limitPerSession:a=50}=e.payload;if(n.length===0||r.length===0){e.setResult({eventsBySession:{}});return}let o={};for(let e of n){let n=await t.select().from(i).where(A(N(i.sessionId,e),P(i.type,r))).orderBy(M(i.timestamp)).limit(a);n.length>0&&(o[e]=n.map(ot))}e.setResult({eventsBySession:o})})}function mt(e,t,n){let r={bus:e,db:t},i=[lt(r),ut(r),dt(r),ft(r),pt(r)];return()=>i.forEach(e=>e())}async function I(e,t){e.emit(b.stored,{message:structuredClone(t)});try{await e.request(r.append,{event:{sessionId:t.sessionId,eventId:crypto.randomUUID(),timestamp:t.timestamp,type:`message`,payload:{messageId:t.messageId,turnId:t.turnId,role:t.role}}})}catch(e){console.error(`[MessageStorage] Failed to emit session event for message:`,e)}}function L(e){return{messageId:e.messageId,turnId:e.turnId,sessionId:e.sessionId,role:e.role,contentText:e.contentText,blocks:JSON.parse(e.blocks),agentId:e.agentId??void 0,adapterSessionId:e.adapterSessionId??void 0,adapterMessageId:e.adapterMessageId??void 0,timestamp:e.timestamp,editOf:e.editOf??void 0,origin:e.origin??void 0}}function ht(e){let{bus:t,db:r}=e;return t.on(b.append,async e=>{let{message:i,emitEvent:a}=e.payload,o=i.messageId??crypto.randomUUID(),s={...i,messageId:o,blocks:i.blocks??[]};await r.insert(n).values({messageId:o,turnId:s.turnId,sessionId:s.sessionId,role:s.role,contentText:s.contentText,blocks:JSON.stringify(s.blocks),agentId:s.agentId??null,adapterSessionId:s.adapterSessionId??null,adapterMessageId:s.adapterMessageId??null,timestamp:s.timestamp,editOf:s.editOf??null,origin:s.origin??null}),e.setResult({message:s}),(a??!0)&&await I(t,s)})}function gt(e){let{bus:t,db:r}=e;return t.on(b.getBySession,async e=>{let{sessionId:t,limit:i,after:a,includeAfter:o=!1,order:s=`asc`}=e.payload,c=s===`desc`?M:De,l=r.select().from(n).where(N(n.sessionId,t)).orderBy(c(n.timestamp),c(n.messageId));if(a){let e=s===`desc`?Ne(je(n.timestamp,a.timestamp),A(N(n.timestamp,a.timestamp),o?Me(n.messageId,a.messageId):je(n.messageId,a.messageId))):Ne(Oe(n.timestamp,a.timestamp),A(N(n.timestamp,a.timestamp),o?ke(n.messageId,a.messageId):Oe(n.messageId,a.messageId)));l=r.select().from(n).where(A(N(n.sessionId,t),e)).orderBy(c(n.timestamp),c(n.messageId))}let u=i??100,d=await l.limit(u+1),f=d.length>u,p=f?d.slice(0,u):d,m=f&&p.length>0?D(p[p.length-1]):null;e.setResult({messages:p.map(L),nextCursor:m})})}function _t(e){let{bus:t,db:r}=e;return t.on(b.getByTurn,async e=>{let{turnId:t}=e.payload,i=await r.select().from(n).where(N(n.turnId,t)).orderBy(De(n.timestamp));e.setResult({messages:i.map(L)})})}function vt(e){let{bus:t,db:r}=e;return t.on(b.get,async e=>{let{messageId:t}=e.payload,[i]=await r.select().from(n).where(N(n.messageId,t)).limit(1);e.setResult({message:i?L(i):null})})}function yt(e){let{bus:t,db:n}=e;return t.on(b.search,async e=>{let{query:t,sessionId:r,limit:i}=e.payload,a=i??50;if(!t.trim()){e.setResult({messages:[],total:0});return}let o=Pe(t),s=F`
3
- m.message_id AS messageId,
4
- m.turn_id AS turnId,
5
- m.session_id AS sessionId,
6
- m.role AS role,
7
- m.content_text AS contentText,
8
- m.blocks AS blocks,
9
- m.agent_id AS agentId,
10
- m.adapter_session_id AS adapterSessionId,
11
- m.adapter_message_id AS adapterMessageId,
12
- m.timestamp AS timestamp,
13
- m.edit_of AS editOf,
14
- m.origin AS origin
15
- `,c=r?F`
16
- SELECT ${s}
17
- FROM messages m
18
- JOIN messages_fts fts ON m.rowid = fts.rowid
19
- WHERE messages_fts MATCH ${o}
20
- AND fts.session_id = ${r}
21
- ORDER BY bm25(messages_fts)
22
- LIMIT ${a}
23
- `:F`
24
- SELECT ${s}
25
- FROM messages m
26
- JOIN messages_fts fts ON m.rowid = fts.rowid
27
- WHERE messages_fts MATCH ${o}
28
- ORDER BY bm25(messages_fts)
29
- LIMIT ${a}
30
- `,l=await n.all(c),u=r?F`
31
- SELECT COUNT(*) as count FROM messages_fts
32
- WHERE messages_fts MATCH ${o}
33
- AND session_id = ${r}
34
- `:F`
35
- SELECT COUNT(*) as count FROM messages_fts
36
- WHERE messages_fts MATCH ${o}
37
- `,[d]=await n.all(u),f=d?.count??0;e.setResult({messages:l.map(L),total:f})})}async function bt(e,t,n,r){let i=F`
38
- m.message_id AS message_id,
39
- fts.session_id AS session_id,
40
- -bm25(messages_fts) AS score,
41
- snippet(messages_fts, 1, '<mark>', '</mark>', '...', 40) AS excerpt
42
- FROM messages_fts fts
43
- JOIN messages m ON m.rowid = fts.rowid`;return r===void 0?e.all(F`
44
- SELECT ${i}
45
- WHERE messages_fts MATCH ${t}
46
- ORDER BY score DESC
47
- LIMIT ${n}
48
- `):e.all(F`
49
- SELECT ${i}
50
- WHERE messages_fts MATCH ${t}
51
- AND fts.session_id = ${r}
52
- ORDER BY score DESC
53
- LIMIT ${n}
54
- `)}async function xt(e,t,n){return(await(n===void 0?e.all(F`
55
- SELECT COUNT(*) AS total
56
- FROM messages_fts
57
- WHERE messages_fts MATCH ${t}
58
- `):e.all(F`
59
- SELECT COUNT(*) AS total
60
- FROM messages_fts
61
- WHERE messages_fts MATCH ${t}
62
- AND session_id = ${n}
63
- `)))[0]?.total??0}function St(e){let{bus:t,db:n}=e;return t.on(b.ftsSearch,async e=>{let{query:t,sessionId:r,limit:i=20}=e.payload,a=t.trim();if(!a){e.setResult({results:[],total:0});return}let o=Pe(a),[s,c]=await Promise.all([bt(n,o,i,r),xt(n,o,r)]);e.setResult({results:s.map(e=>({messageId:e.message_id,sessionId:e.session_id,score:e.score,excerpt:e.excerpt})),total:c})})}function Ct(e){let{bus:t,db:r}=e;return t.on(b.getByAdapterMessageId,async e=>{let{adapterMessageId:t}=e.payload,[i]=await r.select().from(n).where(N(n.adapterMessageId,t)).limit(1);e.setResult({message:i?L(i):null})})}function wt(e){let{bus:t,db:r}=e;return t.on(b.upsertByAdapterMessageId,async e=>{let{adapterMessageId:i,sessionId:a,turnId:o,role:s,contentText:c,blocks:l,agentId:u,adapterSessionId:d,timestamp:f,origin:p}=e.payload,[m]=await r.select({messageId:n.messageId}).from(n).where(N(n.adapterMessageId,i)).limit(1);if(m){e.setResult({messageId:m.messageId,created:!1});return}let h=crypto.randomUUID();await r.insert(n).values({messageId:h,turnId:o,sessionId:a,role:s,contentText:c,blocks:JSON.stringify(l),agentId:u??null,adapterSessionId:d??null,adapterMessageId:i,timestamp:f,editOf:null,origin:p??null}),e.setResult({messageId:h,created:!0}),await I(t,{messageId:h,sessionId:a,turnId:o,role:s,contentText:c,blocks:l,agentId:u??void 0,adapterSessionId:d??void 0,adapterMessageId:i,timestamp:f,editOf:void 0,origin:p??void 0})})}function Tt(e,t,n){let r={bus:e,db:t},i=[ht(r),gt(r),_t(r),vt(r),yt(r),St(r),wt(r),Ct(r)];return()=>i.forEach(e=>e())}function Et(e,t){return _e(D(e),D(t))}function Dt(e,t){return ve(D(e),D(t))}function Ot(e){let t=new Map,n=new Map,r=new Map,i=new Map,a=kt(t,n,r,i),o=[At(e,t,a),jt(e,t,n),Mt(e,t,r),Nt(e,t),Pt(e,t),Ft(e,i,a),It(e,t,n,r,i)];return()=>o.forEach(e=>e())}function kt(e,t,n,r){return i=>{e.set(i.messageId,i);let a=t.get(i.sessionId)??[];if(a.push(i.messageId),t.set(i.sessionId,a),i.turnId){let e=n.get(i.turnId)??[];e.push(i.messageId),n.set(i.turnId,e)}i.adapterMessageId&&r.set(i.adapterMessageId,i.messageId)}}function At(e,t,n){return e.on(b.append,async t=>{let{message:r,emitEvent:i}=t.payload,a=r.messageId??crypto.randomUUID(),o={...r,messageId:a,blocks:r.blocks??[]};n(o),t.setResult({message:o}),(i??!0)&&await I(e,o)})}function jt(e,t,n){return e.on(b.getBySession,async e=>{let{sessionId:r,limit:i,after:a,includeAfter:o=!1,order:s=`asc`}=e.payload,c=n.get(r)??[],l=s===`desc`?Dt:Et,u=c.map(e=>t.get(e)).filter(e=>!!e).sort(l);a&&(u=u.filter(e=>{let t=s===`desc`?ve(D(e),a):_e(D(e),a);return o?t>=0:t>0}));let d=i??100,f=u.length>d,p=f?u.slice(0,d):u,m=f&&p.length>0?D(p[p.length-1]):null;e.setResult({messages:p,nextCursor:m})})}function Mt(e,t,n){return e.on(b.getByTurn,async e=>{let{turnId:r}=e.payload,i=(n.get(r)??[]).map(e=>t.get(e)).filter(e=>!!e).sort(Et);e.setResult({messages:i})})}function Nt(e,t){return e.on(b.get,async e=>{e.setResult({message:t.get(e.payload.messageId)??null})})}function Pt(e,t){return e.on(b.search,async e=>{let{query:n,sessionId:r,limit:i}=e.payload,a=i??50,o=n.trim().toLowerCase(),s=[...t.values()].filter(e=>r?e.sessionId===r:!0),c=o.length===0?[]:s.filter(e=>e.contentText.toLowerCase().includes(o));c.sort(Et),e.setResult({messages:c.slice(0,a),total:c.length})})}function Ft(e,t,n){return e.on(b.upsertByAdapterMessageId,async r=>{let{adapterMessageId:i,sessionId:a,turnId:o,role:s,contentText:c,blocks:l,agentId:u,adapterSessionId:d,timestamp:f,origin:p}=r.payload,m=t.get(i);if(m){r.setResult({messageId:m,created:!1});return}let h=crypto.randomUUID(),g={messageId:h,sessionId:a,turnId:o,role:s,contentText:c,blocks:l,agentId:u??void 0,adapterSessionId:d??void 0,adapterMessageId:i,timestamp:f,editOf:void 0,origin:p??void 0};n(g),r.setResult({messageId:h,created:!0}),await I(e,g)})}function It(e,t,n,r,i){return e.on(a.delete,e=>{let{sessionId:a}=e.payload,o=n.get(a)??[];for(let e of o){let n=t.get(e);if(n){if(t.delete(e),n.turnId){let t=(r.get(n.turnId)??[]).filter(t=>t!==e);t.length===0?r.delete(n.turnId):r.set(n.turnId,t)}n.adapterMessageId&&i.delete(n.adapterMessageId)}}n.delete(a)})}const R=we(`message_routing`,{messageId:k(`message_id`).notNull().references(()=>n.messageId,{onDelete:`cascade`}),agentId:k(`agent_id`).notNull(),status:k(`status`,{enum:[`sent`,`acknowledged`,`completed`]}).notNull(),timestamp:O(`timestamp`).notNull(),error:k(`error`)},e=>[Ce({columns:[e.messageId,e.agentId,e.status]}),Se(`idx_routing_agent`).on(e.agentId,e.timestamp)]),Lt=Ee(`messageRouting`,{schemas:{record:{request:le,response:x.object({success:x.boolean()})},getByMessage:{request:x.object({messageId:x.string()}),response:x.object({routing:x.array(le)})},getCompleted:{request:x.object({messageId:x.string()}),response:x.object({agentIds:x.array(x.string())})},isComplete:{request:x.object({messageId:x.string(),targetAgentIds:x.array(x.string())}),response:x.object({complete:x.boolean(),pending:x.array(x.string())})}},extensions:{drizzle:{messageRouting:R}}}),z=Lt.subjects;function Rt(e){return{messageId:e.messageId,agentId:e.agentId,status:e.status,timestamp:e.timestamp,error:e.error??void 0}}function zt(e,t,n){let r=[];return r.push(e.on(z.record,async e=>{let{messageId:n,agentId:r,status:i,timestamp:a,error:o}=e.payload;await t.insert(R).values({messageId:n,agentId:r,status:i,timestamp:a,error:o??null}).onConflictDoUpdate({target:[R.messageId,R.agentId,R.status],set:{timestamp:a,error:o??null}}),e.setResult({success:!0})})),r.push(e.on(z.getByMessage,async e=>{let{messageId:n}=e.payload,r=await t.select().from(R).where(N(R.messageId,n));e.setResult({routing:r.map(Rt)})})),r.push(e.on(z.getCompleted,async e=>{let{messageId:n}=e.payload,r=await t.select().from(R).where(A(N(R.messageId,n),N(R.status,`completed`)));e.setResult({agentIds:r.map(e=>e.agentId)})})),r.push(e.on(z.isComplete,async e=>{let{messageId:n,targetAgentIds:r}=e.payload,i=await t.select().from(R).where(A(N(R.messageId,n),N(R.status,`completed`))),a=new Set(i.map(e=>e.agentId)),o=r.filter(e=>!a.has(e));e.setResult({complete:o.length===0,pending:o})})),()=>r.forEach(e=>e())}var Bt=class{byAgent=new Map;add(e){let t=this.byAgent.get(e.agentId);t?(t.inputTokens+=e.inputTokens,t.outputTokens+=e.outputTokens):this.byAgent.set(e.agentId,{inputTokens:e.inputTokens,outputTokens:e.outputTokens})}snapshot(){if(this.byAgent.size===0)return;let e=0,t=0,n={};for(let[r,i]of this.byAgent)e+=i.inputTokens,t+=i.outputTokens,n[r]={...i};return{total:{inputTokens:e,outputTokens:t},byAgent:n}}flush(){let e=this.snapshot();return this.byAgent.clear(),e}clear(){this.byAgent.clear()}},Vt=class{bus;activeTurns=new Map;usageAccumulators=new Map;completingSessions=new Set;bufferedUsageDuringCompletion=new Map;syntheticTurnCounters=new Map;cleanups=[];constructor(e){this.bus=e}async createTurn(e,t,n,r){let i=await this.bus.requestOptional(y.create,{sessionId:e,...r!==void 0&&{turnId:r}}),a,o;if(i.handled)a=i.data.turn.turnId,o=i.data.turn.turnNumber;else{a=r??crypto.randomUUID();let t=(this.syntheticTurnCounters.get(e)??0)+1;this.syntheticTurnCounters.set(e,t),o=t}let s=new g({sessionId:e,agentIds:t,turnId:a,turnNumber:o,initiator:n});return this.activeTurns.set(e,s),this.usageAccumulators.set(e,new Bt),s}registerCompletionHandlers(e){this.cleanups.push(this.bus.on(T.usage,e=>{let{agentId:t,turnId:n,inputTokens:r,outputTokens:i}=e.payload;if(!n){console.warn(`[SessionTurnManager] Dropping usage event without turnId (agentId=${t}).`);return}let a=this.findActiveTurnByTurnId(n);if(!a){console.warn(`[SessionTurnManager] Dropping usage for inactive turn ${n} (agentId=${t}).`);return}if(!a.hasAgent(t)){console.warn(`[SessionTurnManager] Dropping usage for turn ${n}: agent ${t} is not part of the turn.`);return}if(this.completingSessions.has(a.sessionId)){this.bufferUsageDuringCompletion(a.sessionId,{agentId:t,inputTokens:r,outputTokens:i});return}this.usageAccumulators.get(a.sessionId)?.add({agentId:t,inputTokens:r,outputTokens:i})})),this.cleanups.push(this.bus.on(T.complete,async t=>{let{agentId:n,outcome:r,error:i}=t.payload,a=r!==`error`;await this.handleAgentCompletion(n,a,a?void 0:i,e)}))}async completeTurn(e,t){if(this.completingSessions.has(e.sessionId))return;this.completingSessions.add(e.sessionId);let n=this.usageAccumulators.get(e.sessionId),r=n?.snapshot();try{await this.bus.requestOptional(y.complete,{turnId:e.turnId,status:t.success?`completed`:`error`,error:t.errors.length>0?t.errors.join(`; `):void 0,...r!==void 0&&{usage:r}});let i=this.bufferedUsageDuringCompletion.get(e.sessionId)??[];if(i.length>0){for(let e of i)n?.add(e);this.bufferedUsageDuringCompletion.delete(e.sessionId);let r=n?.snapshot();await this.bus.requestOptional(y.complete,{turnId:e.turnId,status:t.success?`completed`:`error`,error:t.errors.length>0?t.errors.join(`; `):void 0,...r!==void 0&&{usage:r}})}}catch(t){throw this.completingSessions.delete(e.sessionId),console.error(`[SessionTurnManager] Failed to persist completion for turn ${e.turnId}:`,t),t}n?.clear(),this.activeTurns.delete(e.sessionId),this.usageAccumulators.delete(e.sessionId),this.completingSessions.delete(e.sessionId),await this.bus.emit(E.turn.completed,{sessionId:e.sessionId,turnId:e.turnId,turnNumber:e.turnNumber,success:t.success,error:t.errors.length>0?t.errors.join(`; `):void 0,initiator:e.initiator})}getActiveTurn(e){return this.activeTurns.get(e)}getActiveTurnsMap(){return this.activeTurns}findActiveTurnByTurnId(e){for(let t of this.activeTurns.values())if(t.turnId===e)return t}destroy(){for(let e of this.cleanups)e();this.cleanups.length=0,this.activeTurns.clear(),this.usageAccumulators.clear(),this.completingSessions.clear(),this.bufferedUsageDuringCompletion.clear(),this.syntheticTurnCounters.clear()}async handleAgentCompletion(e,t,n,r){let i=c(this.activeTurns,e);if(!i)return;let a=t?i.markAgentCompleted(e):i.markAgentErrored(e,n??`Unknown error`);for(let r of i.messageIds)await this.bus.emit(E.user_message.completed,{sessionId:i.sessionId,turnId:i.turnId,turnNumber:i.turnNumber,messageId:r,agentId:e,outcome:t?`completed`:`error`,error:n});a.turnComplete&&await r(i,a.result)}bufferUsageDuringCompletion(e,t){let n=this.bufferedUsageDuringCompletion.get(e)??[];n.push(t),this.bufferedUsageDuringCompletion.set(e,n)}},Ht=class{bus;turnManager;adapterRegistry;cleanups=[];constructor(e=S,t){this.bus=e,this.turnManager=new Vt(e),this.adapterRegistry=new Ze(e),this.registerSendMessageHandler(),this.turnManager.registerCompletionHandlers(this.completeTurn.bind(this))}registerSendMessageHandler(){this.cleanups.push(this.bus.on(E.sendMessage,async e=>{let{sessionId:t,message:n,agentIds:r,deliveryMode:i,agent:a,source:c,origin:l}=e.payload,d=f(c,e.payload.extensionId),p=e.payload.sessionContext?de.parse(e.payload.sessionContext):void 0,{sessionId:h,session:g}=await s(this.bus,t,p,e.payload.originWindowId);if(g.agents.length===0){let e=await this.resolveInitialAdapterSelection(a,h,n,p),t=await this.resolveAdapterName(e,h),r=m(e.adapterId)??await this.adapterRegistry.resolveAvailable(t),i=await this.bus.request(w.startAgent,{adapterId:r,sessionId:h,role:`lead`,...e.model!==void 0&&{model:e.model},...e.reasoningEffort!==void 0&&{reasoningEffort:e.reasoningEffort},...e.cwd!==void 0&&{cwd:e.cwd},...e.systemPrompt!==void 0&&{systemPrompt:e.systemPrompt},...e.allowedTools!==void 0&&{allowedTools:e.allowedTools},...e.disallowedTools!==void 0&&{disallowedTools:e.disallowedTools},...e.env!==void 0&&{env:e.env},...e.mcpSessionContext!==void 0&&{mcpSessionContext:e.mcpSessionContext},...e.allowedDirectories!==void 0&&{allowedDirectories:e.allowedDirectories},...p!==void 0&&{sessionContext:p}});if(!i.success)throw Error(`[SessionOrchestrator.sendMessage] Failed to start agent (sessionId=${h}, adapterName=${t}): ${i.message}`);let o=Date.now();g.agents.push({agentId:i.agentId,adapterId:i.adapterId,adapterName:t,sessionId:h,role:`lead`,status:`idle`,createdAt:o,lastActivityAt:o}),g.leadAgentId=i.agentId}let y=u(g,r);if(y.length===0)throw Error(`[SessionOrchestrator.sendMessage] No valid target agents found (sessionId=${h})`);let te=new Set;for(let e of y){let t=await this.bus.requestOptional(w.getAgent,{agentId:e.agentId,adapterId:e.adapterId});t.handled&&t.data.agent===null&&te.add(e.agentId)}let ne;if(te.size>0){ne=await ee(this.bus,g);for(let e of y)te.has(e.agentId)&&await this.bus.requestOptional(w.rehydrateAgent,{agentId:e.agentId,adapterId:e.adapterId})}let x=this.turnManager.getActiveTurn(h),S=!x;x||=await this.turnManager.createTurn(h,y.map(e=>e.agentId),d,e.payload.turnId);let C=crypto.randomUUID();x.addMessage(C);let re=o(n);this.bus.requestOptional(b.append,{message:{messageId:C,turnId:x.turnId,sessionId:h,role:`user`,contentText:_(n),blocks:re,timestamp:Date.now(),...l!==void 0&&{origin:l}}}).catch(e=>{console.warn(`[SessionOrchestrator] Failed to store user message`,{sessionId:h,messageId:C,error:e instanceof Error?e.message:String(e)})});for(let e of y)this.bus.requestOptional(z.record,{messageId:C,agentId:e.agentId,status:`sent`,timestamp:Date.now()}).catch(t=>{console.warn(`[SessionOrchestrator] Failed to record message routing`,{sessionId:h,messageId:C,agentId:e.agentId,error:t instanceof Error?t.message:String(t)})});S&&await this.bus.emit(E.turn.started,{sessionId:h,turnId:x.turnId,turnNumber:x.turnNumber,messageId:C,agentIds:[...x.agentIds],initiator:x.initiator}),await this.bus.emit(E.user_message.sent,{sessionId:h,turnId:x.turnId,turnNumber:x.turnNumber,messageId:C,content:n,agentIds:y.map(e=>e.agentId),...c!==void 0&&{source:c},...l!==void 0&&{origin:l}});let T=ne?{...p,...ne}:p;await v(this.bus,g,y,n,C,x,i,this.completeTurn.bind(this),T,e.payload.responseSchema),e.setResult({messageId:C,turnId:x.turnId,sessionId:h})}))}async completeTurn(e,t){await this.turnManager.completeTurn(e,t)}destroy(){for(let e of this.cleanups)e();this.cleanups.length=0,this.turnManager.destroy(),this.adapterRegistry.destroy()}async resolveAdapterName(e,t){let n=m(e.adapterName),r=m(e.adapterId);if(!n&&!r)throw Error(`[SessionOrchestrator.sendMessage] adapterName or adapterId required when session has no agents (sessionId=${t})`);return r?h(this.bus,r,n,`[SessionOrchestrator.sendMessage] (sessionId=${t}) `):n}async resolveInitialAdapterSelection(e,t,n,r){if(!e)throw Error(`[SessionOrchestrator.sendMessage] agent selection required when session has no agents (sessionId=${t})`);if(e.kind===`adapter`)return e;if(e.kind===`canonical-model`)return await this.resolveCanonicalModelSelection(e,t,n,r);throw Error(`[SessionOrchestrator.sendMessage] agent with kind: 'adapter' or 'canonical-model' required when session has no agents (sessionId=${t})`)}async resolveCanonicalModelSelection(e,t,n,r){let i=be(e.model);if(ye(i))throw Error(`[SessionOrchestrator.sendMessage] Invalid canonical model "${e.model}" (sessionId=${t}): ${i.message}`);if(i.kind===`virtual`)throw Error(`[SessionOrchestrator.sendMessage] Virtual canonical models require a host resolver (sessionId=${t})`);let a=await this.bus.request(ie.resolve,{parsed:i,context:{sessionId:t,promptText:_(n),...r===void 0?{}:{sessionContext:r}}});return{...e,...a,kind:`adapter`,providerConfigId:e.providerConfigId??a.providerConfigId}}},Ut=class{bus;constructor(e){this.bus=e}async getTurnSoFarContext(e){try{let{messages:t}=await this.bus.request(b.getByTurn,{turnId:e});return this.convertSessionMessagesToMessages(t)}catch(e){return e instanceof C||console.warn(`[TurnContextEnricher] Failed to load turn-so-far context:`,e),[]}}async enrichForDeliveryMode(e,t,n){if(n!==`immediate`)return e;let r=await this.getTurnSoFarContext(t);return r.length===0?e:[...e??[],...r]}convertSessionMessagesToMessages(e){return e.map(e=>({role:e.role,blocks:e.blocks}))}};function Wt(e){let{bus:t}=e;return t.on(E.getStatusCounts,async e=>{e.payload;let{all:n,active:r,closed:i,archived:o,discovered:s}=await t.request(a.getStatusCounts,{});e.setResult({all:n,active:r,closed:i,archived:o,discovered:s})})}function Gt(e){let{bus:t}=e;return t.on(E.resume,async e=>{let{sessionId:n}=e.payload,{session:r}=await t.request(a.get,{sessionId:n});if(!r||r.status!==`closed`){e.setResult({success:!1});return}r.status=`active`,r.lastActivityAt=Date.now(),await t.request(a.set,{sessionId:n,session:r}),await t.emit(E.resumed,{sessionId:n}),e.setResult({success:!0})})}function Kt(e){return e.on(ne.listActions,e=>{let t=p.getAll().map(e=>({id:e.id,label:e.label,description:e.description,category:e.category}));e.setResult({actions:t})})}const qt=[{actionId:`strip-reasoning`},{actionId:`strip-tool-outputs`}];function Jt(e){return{...e.cwd!==void 0&&{cwd:e.cwd},...e.systemPrompt!==void 0&&{systemPrompt:e.systemPrompt},...e.allowedTools!==void 0&&{allowedTools:e.allowedTools},...e.disallowedTools!==void 0&&{disallowedTools:e.disallowedTools}}}async function Yt(e,t,n,r){let i=r.map((e,t)=>({block:e,blockIndex:t})).filter(e=>e.block.type===`attachment`).map(async({block:r,blockIndex:i})=>{let a=r.source.mimeType??`application/octet-stream`,o=r.source.type===`base64`?r.source.data:void 0;try{(await e({id:crypto.randomUUID(),scope:`session`,sessionId:t,type:`user-upload`,mimeType:a,filePath:r.filePath,...o!==void 0&&{content:o},metadata:{messageId:n,blockIndex:i,fileName:r.fileName}})).handled||console.warn(`[SessionOrchestrator] Artifacts handler unavailable for attachment artifact creation`,{sessionId:t,messageId:n,blockIndex:i,fileName:r.fileName})}catch(e){console.warn(`[SessionOrchestrator] Failed to persist attachment artifact`,{sessionId:t,messageId:n,blockIndex:i,fileName:r.fileName,error:e instanceof Error?e.message:String(e)})}});await Promise.allSettled(i)}var Xt=class{bus;agentToSession=new Map;agentContext=new Map;agentBlocks=new Map;cleanups=[];constructor(e=S){this.bus=e,this.registerHandlers()}registerHandlers(){this.registerMappingHandlers(),this.registerTurnTrackingHandlers(),this.registerBlockAccumulationHandlers()}registerMappingHandlers(){this.cleanups.push(this.bus.on(E.agent.added,e=>{this.agentToSession.set(e.payload.agentId,e.payload.sessionId)})),this.cleanups.push(this.bus.on(E.closed,e=>{for(let[t,n]of this.agentToSession)n===e.payload.sessionId&&(this.agentToSession.delete(t),this.agentContext.delete(t),this.agentBlocks.delete(t))}))}registerTurnTrackingHandlers(){this.cleanups.push(this.bus.on(E.turn.started,e=>{let{sessionId:t,turnId:n,agentIds:r}=e.payload;for(let e of r){let r=this.agentContext.get(e);this.agentContext.set(e,{...r,sessionId:t,turnId:n}),this.agentBlocks.set(e,[])}})),this.cleanups.push(this.bus.on(E.user_message.acknowledged,e=>{let t=this.agentContext.get(e.payload.agentId);this.agentContext.set(e.payload.agentId,{...t,sessionId:e.payload.sessionId,turnId:e.payload.turnId}),this.agentBlocks.has(e.payload.agentId)||this.agentBlocks.set(e.payload.agentId,[])}))}registerBlockAccumulationHandlers(){this.cleanups.push(this.bus.on(T.message,e=>{let t=this.agentBlocks.get(e.payload.agentId);t&&t.push({type:`text`,content:e.payload.content})})),this.cleanups.push(this.bus.on(T.reasoning,e=>{let t=this.agentBlocks.get(e.payload.agentId);t&&t.push({type:`reasoning`,content:e.payload.content})})),this.cleanups.push(this.bus.on(T.tool.use,e=>{let t=this.agentBlocks.get(e.payload.agentId);t&&t.push({type:`tool_call`,toolCallId:e.payload.toolCallId,name:e.payload.toolName,args:e.payload.args??{}})})),this.cleanups.push(this.bus.on(T.tool.completed,e=>{let t=this.agentBlocks.get(e.payload.agentId);if(t){let n=e.payload.result,r=typeof n==`string`?n:JSON.stringify(n);t.push({type:`tool_output`,toolCallId:e.payload.toolCallId,output:r,isError:e.payload.success===!1})}})),this.cleanups.push(this.bus.on(T.complete,async e=>{if(e.payload._import){this.agentBlocks.delete(e.payload.agentId);return}let{agentId:t,adapterSessionId:n,outcome:r,error:i}=e.payload;await this.storeAssistantMessage(t,r===`error`?void 0:n,r===`error`?i:void 0)}))}async storeAssistantMessage(e,t,n){let r=this.agentContext.get(e);if(!r?.turnId)return;let i=this.agentBlocks.get(e)??[];if(i.length===0&&!n)return;let a=i.filter(e=>e.type===`text`).map(e=>e.content).join(`
64
- `),o=crypto.randomUUID();try{if(!(await this.bus.requestOptional(b.append,{message:{messageId:o,turnId:r.turnId,sessionId:r.sessionId,role:`assistant`,contentText:a||(n?`[Error: ${n}]`:``),blocks:i,agentId:e,adapterSessionId:t,timestamp:Date.now()}})).handled){this.agentBlocks.delete(e);return}let s=await this.bus.requestOptional(b.getByTurn,{turnId:r.turnId});if(s.handled){let t=s.data.messages.find(e=>e.role===`user`);t&&await this.bus.requestOptional(z.record,{messageId:t.messageId,agentId:e,status:`completed`,timestamp:Date.now(),error:n})}}catch(e){console.error(`[SessionBridge] Failed to store assistant message:`,e)}this.agentBlocks.delete(e)}destroy(){for(let e of this.cleanups)e();this.cleanups.length=0,this.agentToSession.clear(),this.agentContext.clear(),this.agentBlocks.clear()}},Zt=class{bus;_sessionId;_extensionId;_turnId;_parentSessionId;contextTracker;contextContributions=new Map;constructor(e,t,n,r,i,a){this.bus=e,this._sessionId=t,this._extensionId=n,this._turnId=r,this._parentSessionId=i,this.contextTracker=a}get sessionId(){return this._sessionId}get turnId(){return this._turnId}get parentSessionId(){return this._parentSessionId}get extensionId(){return this._extensionId}async sendToAgent(e,t){await this.bus.request(E.sendMessage,{sessionId:this._sessionId,agentIds:[e],message:t,source:`extension`,extensionId:this._extensionId})}contributeContext(e,t){this.contextContributions.set(e,t)}getContributions(){return Object.fromEntries(this.contextContributions)}async fork(e){return(await this.bus.request(E.fork,{sourceSessionId:this._sessionId,name:e.reason})).sessionId}async merge(e,t){await this.bus.request(E.merge,{parentSessionId:this._sessionId,childSessionId:e,summary:t,source:`extension`,extensionId:this._extensionId})}async abandon(e){await this.bus.request(E.abandon,{parentSessionId:this._sessionId,childSessionId:e,source:`extension`,extensionId:this._extensionId})}async requestCompression(e){await this.bus.emit(E.compressionRequested,{sessionId:this._sessionId,reason:e,source:`extension`,extensionId:this._extensionId})}async getContextWindowState(){if(this.contextTracker){let e=this.contextTracker.getSessionState(this._sessionId);if(e)return{currentTokens:e.currentTokens,maxTokens:e.maxTokens,percentage:e.percentage,level:e.level}}let{session:e}=await this.bus.request(E.get,{sessionId:this._sessionId});return!e||e.agents.length===0?{currentTokens:0,maxTokens:1,percentage:0,level:`ok`}:{currentTokens:0,maxTokens:2e5,percentage:0,level:`ok`}}async getChildSessions(){return(await this.bus.request(E.getChildren,{sessionId:this._sessionId})).children.map(e=>e.sessionId)}};function Qt(e,t,n,r,i,a){return new Zt(e,t,n,r,i,a)}function $t(e,t){let n=e?.clientAccountId??null,r=t.clientAccountId??null;return!r||n===r?null:{previousClientAccountId:n,clientAccountId:r}}function B(e,t){let n=t.lastClientIdentityObservation;if(t.clientAccountId!==void 0&&!n)throw Error(`Session "${t.sessionId}" cannot persist clientAccountId without lastClientIdentityObservation`);if(t.clientAccountId!==void 0&&t.clientId===void 0)throw Error(`Session "${t.sessionId}" cannot persist clientAccountId without clientId`);if(n&&t.clientId!==void 0&&t.clientId!==n.clientId)throw Error(`Session "${t.sessionId}" cannot persist clientId "${t.clientId}" because lastClientIdentityObservation belongs to "${n.clientId}"`)}function V(e,t,n){let r=$t(t,n);if(!r)return;let i=n.lastClientIdentityObservation;if(!i)return;let a={sessionId:n.sessionId,clientId:i.clientId,previousClientAccountId:r.previousClientAccountId,clientAccountId:r.clientAccountId,source:i.source,observedAt:i.observedAt,lastClientIdentityObservation:structuredClone(i)};queueMicrotask(()=>{Promise.resolve().then(()=>e.emit(E.clientAccount.changed,a)).catch(e=>{console.error(`[SessionStorage] Failed to emit session.clientAccount.changed:`,e)})})}async function en(e,t){let n=await e.requestOptional(l.listBySession,{sessionId:t});return n.handled?n.data.agents:[]}function H(e){return structuredClone(e)}function U(e,t,n){n!==void 0&&(e[t]=n)}function tn(e,t,n){n!==void 0&&(e[t]=n??void 0)}function nn(e,t){let n=e;return t.status!==`all`&&(n=n.filter(e=>e.status===t.status)),t.executionTargetId!==void 0&&(n=n.filter(e=>e.executionTargetId===t.executionTargetId)),n}function rn(e,t){U(e,`status`,t.status),U(e,`parentSessionId`,t.parentSessionId),U(e,`rootSessionId`,t.rootSessionId),U(e,`forkPointMessageId`,t.forkPointMessageId),U(e,`branchKind`,t.branchKind),U(e,`isOrchestrated`,t.isOrchestrated),U(e,`clientId`,t.clientId),U(e,`clientAccountId`,t.clientAccountId),U(e,`lastClientIdentityObservation`,t.lastClientIdentityObservation),U(e,`title`,t.title),U(e,`targetWorkingDirectory`,t.targetWorkingDirectory),U(e,`createdAt`,t.createdAt),U(e,`lastActivityAt`,t.lastActivityAt),tn(e,`executionTargetId`,t.executionTargetId),tn(e,`approvalPolicyOverride`,t.approvalPolicyOverride),tn(e,`spawningToolCallId`,t.spawningToolCallId)}function an(e,t){return e.on(a.list,async n=>{let{status:r=`all`,limit:i,offset:a=0,includePreview:o=!1,executionTargetId:s}=n.payload,c=nn(Array.from(t.values()),{status:r,executionTargetId:s});c.sort((e,t)=>t.lastActivityAt-e.lastActivityAt);let l=c.length;i!==void 0&&(c=c.slice(a,a+i));let u=await Promise.all(c.map(async t=>({...H(t),agents:await en(e,t.sessionId)}))),d=o?u.map(e=>({...e,preview:{messageCount:0,firstUserMessage:null}})):u;n.setResult({sessions:d,total:l})})}function on(e,t){return e.on(a.update,async n=>{let r=structuredClone(he.request.parse(n.payload)),i=t.get(r.sessionId);if(!i){n.setResult({success:!1,clientAccountChanged:!1});return}let a=H(i);B(a,{sessionId:i.sessionId,clientId:r.clientId??i.clientId,clientAccountId:r.clientAccountId??i.clientAccountId,lastClientIdentityObservation:r.lastClientIdentityObservation??i.lastClientIdentityObservation}),rn(i,r),n.setResult({success:!0,clientAccountChanged:(a.clientAccountId??null)!==(i.clientAccountId??null)}),V(e,a,H(i))})}function sn(e){let t=new Map,n=[];return n.push(e.on(a.get,async n=>{let r=t.get(n.payload.sessionId);if(!r){n.setResult({session:null});return}let i=await en(e,n.payload.sessionId);n.setResult({session:{...H(r),agents:i}})})),n.push(e.on(a.set,async n=>{let{sessionId:r,session:i,ifAbsent:a}=me.parse(n.payload);if(a&&t.has(r)){n.setResult({success:!1,clientAccountChanged:!1});return}let o=structuredClone(i),s=t.get(r)??null,c=s?H(s):null;B(s,o),t.set(r,o),n.setResult({success:!0,clientAccountChanged:(c?.clientAccountId??null)!==(o.clientAccountId??null)}),V(e,c,H(o))})),n.push(e.on(a.delete,async e=>{t.delete(e.payload.sessionId),e.setResult({success:!0}),await e.next()})),n.push(an(e,t)),n.push(e.on(a.getChildren,e=>{let{sessionId:n}=e.payload,r=Array.from(t.values()),i=r.filter(e=>e.parentSessionId===n),a=new Set(r.map(e=>e.parentSessionId).filter(e=>!!e)),o=i.map(e=>({sessionId:e.sessionId,title:e.title??null,forkPointMessageId:e.forkPointMessageId??null,branchKind:e.branchKind??null,messageCount:0,hasChildren:a.has(e.sessionId),spawningToolCallId:e.spawningToolCallId}));e.setResult({children:o})})),n.push(e.on(a.getStatusCounts,e=>{e.payload;let n=Array.from(t.values()),r=n.filter(e=>e.status===`active`).length,i=n.filter(e=>e.status===`closed`).length,a=n.filter(e=>e.status===`archived`).length,o=n.filter(e=>e.status===`discovered`).length;e.setResult({all:r+i+a+o,active:r,closed:i,archived:a,discovered:o})})),n.push(on(e,t)),n.push(cn(e,t)),()=>n.forEach(e=>e())}function cn(e,t){return e.on(a.getByAdapterSessionId,async n=>{let{adapterSessionId:r}=n.payload,i=Array.from(t.values()).find(e=>e.adapterSessionId!==void 0&&e.adapterSessionId===r);if(!i){n.setResult({session:null});return}let a=await e.requestOptional(l.listBySession,{sessionId:i.sessionId}),o=a.handled?a.data.agents:[];n.setResult({session:{...H(i),agents:o}})})}function ln(e){let n=e?.clientId??null,r=e?.clientAccountId??null,i=e?.lastClientIdentityObservation??null;return A(n===null?Ae(t.clientId):N(t.clientId,n),r===null?Ae(t.clientAccountId):N(t.clientAccountId,r),i===null?Ae(t.lastClientIdentityObservation):N(t.lastClientIdentityObservation,i))}const{agents:W}=d.extensions.drizzle;function un(e){return{agentId:e.agentId,adapterId:e.adapterId,adapterName:e.adapterName,sessionId:e.sessionId,role:e.role,status:e.status,createdAt:e.createdAt,lastActivityAt:e.lastActivityAt,model:e.model??void 0,adapterSessionId:e.adapterSessionId??void 0,cwd:e.cwd??void 0,providerConfigId:e.providerConfigId??void 0,personaId:e.personaId??void 0,profileId:e.profileId??void 0,harnessId:e.harnessId??void 0,clientId:e.clientId??void 0,compressionMode:e.compressionMode?oe.parse(e.compressionMode):void 0}}function dn(e){return{agentId:e.agentId,adapterId:e.adapterId,adapterName:e.adapterName,sessionId:e.sessionId,role:e.role,status:e.status,createdAt:e.createdAt,lastActivityAt:e.lastActivityAt,model:e.model??null,adapterSessionId:e.adapterSessionId??null,cwd:e.cwd??null,providerConfigId:e.providerConfigId??null,personaId:e.personaId??null,profileId:e.profileId??null,harnessId:e.harnessId??null,clientId:e.clientId??null,compressionMode:e.compressionMode??null}}function G(e){return(e.rowsAffected??0)>0}function fn(e){let t;for(let n=e.length-1;n>=0;--n)try{e[n]?.()}catch(e){t??=e}if(t)throw t}function pn(e){let{bus:t,db:n}=e;return t.on(l.get,async e=>{let[t]=await n.select().from(W).where(N(W.agentId,e.payload.agentId)).limit(1);e.setResult({agent:t?un(t):null})})}function mn(e){let{bus:t,db:n}=e;return t.on(l.set,async e=>{let{agent:t}=e.payload,r=dn(t),i=await n.insert(W).values(r).onConflictDoUpdate({target:W.agentId,set:r});e.setResult({success:G(i)})})}function hn(e){let{bus:t,db:n}=e;return t.on(l.delete,async e=>{let t=await n.delete(W).where(N(W.agentId,e.payload.agentId));e.setResult({success:G(t)})})}function gn(e){let{bus:t,db:n}=e;return t.on(l.listByAdapter,async e=>{let{adapterName:t,status:r}=e.payload,i=[N(W.adapterName,t)];r&&r!==`all`&&i.push(N(W.status,r));let a=i.length>1?A(...i):i[0],o=await n.select().from(W).where(a);e.setResult({agents:o.map(un)})})}function _n(e){let{bus:t,db:n}=e;return t.on(l.listBySession,async e=>{let{sessionId:t}=e.payload,r=await n.select().from(W).where(N(W.sessionId,t));e.setResult({agents:r.map(un)})})}function vn(e){let{bus:t,db:n}=e;return t.on(l.updateStatus,async e=>{let{agentId:t,status:r}=e.payload,i=Date.now(),a=await n.update(W).set({status:r,lastActivityAt:i}).where(N(W.agentId,t));e.setResult({success:G(a)})})}function yn(e){let{bus:t,db:n}=e;return t.on(l.updateActivity,async e=>{let{agentId:t,lastActivityAt:r}=e.payload,i=await n.update(W).set({lastActivityAt:r}).where(N(W.agentId,t));e.setResult({success:G(i)})})}function bn(e){let{bus:t,db:n}=e;return t.on(l.updateRuntime,async e=>{let{agentId:t,cwd:r,model:i,providerConfigId:a}=e.payload,o={lastActivityAt:Date.now()};r!==void 0&&(o.cwd=r),i!==void 0&&(o.model=i),a!==void 0&&(o.providerConfigId=a);let s=await n.update(W).set(o).where(N(W.agentId,t));e.setResult({success:G(s)})})}function xn(e,t,n){let r={bus:e,db:t},i=[pn(r),mn(r),hn(r),gn(r),_n(r),vn(r),yn(r),bn(r)];return()=>fn(i)}function K(e){return e??void 0}function Sn(e){if(e)try{let t=JSON.parse(e),n=Fe.safeParse(t);return n.success?n.data:void 0}catch{return}}function Cn(e){if(e)try{let t=JSON.parse(e),n=ce.safeParse(t);return n.success?n.data:void 0}catch{return}}function q(e,t){let n=Cn(e.forkTransforms),r=Sn(e.lastClientIdentityObservation);return{sessionId:e.sessionId,createdAt:e.createdAt,lastActivityAt:e.lastActivityAt,status:e.status,leadAgentId:K(e.leadAgentId),parentSessionId:K(e.parentSessionId),rootSessionId:K(e.rootSessionId),forkPointMessageId:K(e.forkPointMessageId),branchKind:K(e.branchKind),adapterName:K(e.adapterName),adapterSessionId:K(e.adapterSessionId),adapterId:K(e.adapterId),clientId:K(e.clientId),clientAccountId:K(e.clientAccountId),lastClientIdentityObservation:r,isOrchestrated:K(e.isOrchestrated),isImported:K(e.isImported),title:K(e.title),summary:K(e.summary),summaryUpdatedAt:K(e.summaryUpdatedAt),forkTransforms:n,targetWorkingDirectory:K(e.targetWorkingDirectory),executionTargetId:K(e.executionTargetId),agents:t.map(un),approvalPolicyOverride:K(e.approvalPolicyOverride),spawningToolCallId:K(e.spawningToolCallId)}}function wn(e){let t=new Map;for(let n of e){let e=t.get(n.sessionId)??[];e.push(n),t.set(n.sessionId,e)}return t}async function Tn(e,t,r){if(!r||t.length===0)return{};let i=e.select({sessionId:n.sessionId,minTimestamp:F`MIN(${n.timestamp})`.as(`min_timestamp`)}).from(n).where(A(N(n.role,`user`),P(n.sessionId,t))).groupBy(n.sessionId).as(`first_user_message_by_session`),a=await e.select({sessionId:n.sessionId,preview:n.contentText}).from(n).innerJoin(i,A(N(n.sessionId,i.sessionId),N(n.timestamp,i.minTimestamp))).where(N(n.role,`user`)),o=new Map;for(let e of a)o.has(e.sessionId)||o.set(e.sessionId,e.preview);let s=await e.select({sessionId:n.sessionId,count:j()}).from(n).where(P(n.sessionId,t)).groupBy(n.sessionId),c=new Map;for(let e of s)c.set(e.sessionId,e.count);return{previewBySession:o,countBySession:c}}function En(e,t){return{sessionId:e.sessionId,clientId:t.clientId??e.clientId,clientAccountId:t.clientAccountId??e.clientAccountId,lastClientIdentityObservation:t.lastClientIdentityObservation??e.lastClientIdentityObservation}}function Dn(e){return e.clientId!==void 0||e.clientAccountId!==void 0||e.lastClientIdentityObservation!==void 0}function J(e){return e??null}function On(e){return e?JSON.stringify(e):null}function kn(e){return{lastActivityAt:e.lastActivityAt,status:e.status,leadAgentId:J(e.leadAgentId),parentSessionId:J(e.parentSessionId),rootSessionId:J(e.rootSessionId),forkPointMessageId:J(e.forkPointMessageId),branchKind:J(e.branchKind),adapterName:J(e.adapterName),adapterSessionId:J(e.adapterSessionId),adapterId:J(e.adapterId),clientId:J(e.clientId),clientAccountId:J(e.clientAccountId),lastClientIdentityObservation:An(e.lastClientIdentityObservation),isOrchestrated:e.isOrchestrated??!1,isImported:e.isImported??!1,title:J(e.title),summary:J(e.summary),summaryUpdatedAt:J(e.summaryUpdatedAt),forkTransforms:On(e.forkTransforms),targetWorkingDirectory:J(e.targetWorkingDirectory),executionTargetId:J(e.executionTargetId),approvalPolicyOverride:J(e.approvalPolicyOverride),spawningToolCallId:J(e.spawningToolCallId)}}function An(e){return e?JSON.stringify(e):null}function Y(e,t,n){n!==void 0&&(e[t]=n)}function jn(e,t,n){n!==void 0&&(e[t]=n??null)}function Mn(e){let t={};return Y(t,`status`,e.status),Y(t,`parentSessionId`,e.parentSessionId),Y(t,`rootSessionId`,e.rootSessionId),Y(t,`forkPointMessageId`,e.forkPointMessageId),Y(t,`branchKind`,e.branchKind),Y(t,`isOrchestrated`,e.isOrchestrated),Y(t,`clientId`,e.clientId),Y(t,`clientAccountId`,e.clientAccountId),Y(t,`title`,e.title),Y(t,`targetWorkingDirectory`,e.targetWorkingDirectory),Y(t,`createdAt`,e.createdAt),Y(t,`lastActivityAt`,e.lastActivityAt),jn(t,`executionTargetId`,e.executionTargetId),jn(t,`approvalPolicyOverride`,e.approvalPolicyOverride),jn(t,`spawningToolCallId`,e.spawningToolCallId),e.lastClientIdentityObservation!==void 0&&(t.lastClientIdentityObservation=An(e.lastClientIdentityObservation)),t}function Nn(n){let{bus:r,db:i}=n;return r.on(a.get,async n=>{let[r]=await i.select().from(t).where(N(t.sessionId,n.payload.sessionId)).limit(1);if(!r){n.setResult({session:null});return}let a=await i.select().from(e).where(N(e.sessionId,n.payload.sessionId));n.setResult({session:q(r,a)})})}function Pn(e){let{bus:n,db:r}=e;return n.on(a.set,async e=>{let{sessionId:i,session:a,ifAbsent:o}=me.parse(e.payload),s=kn(a);if(o){B(null,a);let o=((await r.insert(t).values({sessionId:i,createdAt:a.createdAt,...s}).onConflictDoNothing()).rowsAffected??0)>0;e.setResult({success:o,clientAccountChanged:o&&a.clientAccountId!==void 0}),o&&V(n,null,a);return}for(let o=0;o<3;o++){let[o]=await r.select().from(t).where(N(t.sessionId,i)).limit(1),c=o?q(o,[]):null;if(B(c,a),((await r.insert(t).values({sessionId:i,createdAt:a.createdAt,...s}).onConflictDoUpdate({target:t.sessionId,set:s,setWhere:ln(o)})).rowsAffected??0)!==0){e.setResult({success:!0,clientAccountChanged:(c?.clientAccountId??null)!==(a.clientAccountId??null)}),V(n,c,a);return}}throw Error(`Failed to write session "${i}" with a stable client-account baseline`)})}function Fn(e){let{bus:n,db:r}=e;return n.on(a.delete,async e=>{await r.delete(t).where(N(t.sessionId,e.payload.sessionId)),e.setResult({success:!0})})}function In(e){let{bus:n,db:r}=e;return n.on(a.update,async e=>{let i=he.request.parse(e.payload),{sessionId:a}=i,o=Mn(i),s=Dn(i);if(Object.keys(o).length===0){e.setResult({success:!0,clientAccountChanged:!1});return}if(!s){let n=await r.update(t).set(o).where(N(t.sessionId,a));e.setResult({success:(n.rowsAffected??0)>0,clientAccountChanged:!1});return}for(let s=0;s<3;s++){let[s]=await r.select().from(t).where(N(t.sessionId,a)).limit(1);if(!s){e.setResult({success:!1,clientAccountChanged:!1});return}let c=q(s,[]),l=En(c,i);if(B(c,l),((await r.update(t).set(o).where(A(N(t.sessionId,a),ln(s)))).rowsAffected??0)!==0){e.setResult({success:!0,clientAccountChanged:(c.clientAccountId??null)!==(l.clientAccountId??null)}),V(n,c,l);return}}throw Error(`Failed to update session "${a}" with a stable client-account baseline`)})}function Ln(e){let n=[];return e.status!==`all`&&n.push(N(t.status,e.status)),e.executionTargetId!==void 0&&n.push(N(t.executionTargetId,e.executionTargetId)),A(...n)}function Rn(n){let{bus:r,db:i}=n;return r.on(a.list,async n=>{let{status:r=`all`,limit:a,offset:o=0,includePreview:s=!1,executionTargetId:c}=n.payload,l=Ln({status:r,executionTargetId:c}),u=l?i.select().from(t).where(l):i.select().from(t),d=a===void 0?await u.orderBy(M(t.lastActivityAt)):await u.orderBy(M(t.lastActivityAt)).limit(a).offset(o),[f]=await(l?i.select({count:j()}).from(t).where(l):i.select({count:j()}).from(t)),p=f?.count??0;if(d.length===0){n.setResult({sessions:[],total:p});return}let m=d.map(e=>e.sessionId),h=wn(await i.select().from(e).where(P(e.sessionId,m))),{previewBySession:g,countBySession:_}=await Tn(i,m,s),v=d.map(e=>{let t=q(e,h.get(e.sessionId)??[]);return s&&g&&_?{...t,preview:{messageCount:_.get(e.sessionId)??0,firstUserMessage:g.get(e.sessionId)??null}}:t});n.setResult({sessions:v,total:p})})}function zn(e){let{bus:r,db:i}=e;return r.on(a.getChildren,async e=>{let{sessionId:r}=e.payload,a=await i.select().from(t).where(N(t.parentSessionId,r));if(a.length===0){e.setResult({children:[]});return}let o=a.map(e=>e.sessionId),s=await i.select({sessionId:n.sessionId,count:j()}).from(n).where(P(n.sessionId,o)).groupBy(n.sessionId),c=new Map;for(let e of s)c.set(e.sessionId,e.count);let l=await i.select({parentSessionId:t.parentSessionId,count:j()}).from(t).where(P(t.parentSessionId,o)).groupBy(t.parentSessionId),u=new Set;for(let e of l)e.parentSessionId&&u.add(e.parentSessionId);let d=a.map(e=>e.forkPointMessageId).filter(e=>e!==null),f=new Map;if(d.length>0){let e=await i.select({messageId:n.messageId,adapterMessageId:n.adapterMessageId}).from(n).where(P(n.adapterMessageId,d));for(let t of e)t.adapterMessageId&&f.set(t.adapterMessageId,t.messageId)}let p=a.map(e=>{let t=e.forkPointMessageId,n=t?f.get(t)??t:null;return{sessionId:e.sessionId,title:e.title??null,forkPointMessageId:n,branchKind:e.branchKind??null,messageCount:c.get(e.sessionId)??0,hasChildren:u.has(e.sessionId),spawningToolCallId:e.spawningToolCallId??void 0}});e.setResult({children:p})})}function Bn(n){let{bus:r,db:i}=n;return r.on(a.getByAdapterSessionId,async n=>{let{adapterSessionId:r}=n.payload,[a]=await i.select().from(t).where(N(t.adapterSessionId,r)).limit(1);if(!a){n.setResult({session:null});return}let o=await i.select().from(e).where(N(e.sessionId,a.sessionId));n.setResult({session:q(a,o)})})}function Vn(e){let{bus:n,db:r}=e;return n.on(a.getStatusCounts,async e=>{e.payload;let n=await r.select({status:t.status,count:j()}).from(t).groupBy(t.status),i=0,a=0,o=0,s=0;for(let e of n)e.status===`active`?i=e.count:e.status===`closed`?a=e.count:e.status===`archived`?o=e.count:e.status===`discovered`&&(s=e.count);let c=i+a+o+s;e.setResult({all:c,active:i,closed:a,archived:o,discovered:s})})}function Hn(e,t,n){let r={bus:e,db:t},i=[Nn(r),Pn(r),Fn(r),In(r),Rn(r),zn(r),Bn(r),Vn(r)];return()=>i.forEach(e=>e())}function Un(e,t,n,r){return t===void 0&&n===void 0&&r===void 0?!1:(t!==void 0&&(e.cwd=t),n!==void 0&&(e.model=n),r!==void 0&&(e.providerConfigId=r),!0)}function Wn(e){let t=new Map,n=[];return n.push(e.on(l.get,e=>{let n=t.get(e.payload.agentId)??null;e.setResult({agent:n})})),n.push(e.on(l.set,e=>{t.set(e.payload.agentId,e.payload.agent),e.setResult({success:!0})})),n.push(e.on(l.delete,e=>{let n=t.delete(e.payload.agentId);e.setResult({success:n})})),n.push(e.on(l.listByAdapter,e=>{let{adapterName:n,status:r}=e.payload,i=Array.from(t.values()).filter(e=>e.adapterName===n);r&&r!==`all`&&(i=i.filter(e=>e.status===r)),e.setResult({agents:i})})),n.push(e.on(l.listBySession,e=>{let n=Array.from(t.values()).filter(t=>t.sessionId===e.payload.sessionId);e.setResult({agents:n})})),n.push(e.on(l.updateStatus,e=>{let n=t.get(e.payload.agentId);if(!n){e.setResult({success:!1});return}n.status=e.payload.status,n.lastActivityAt=Date.now(),e.setResult({success:!0})})),n.push(e.on(l.updateActivity,e=>{let n=t.get(e.payload.agentId);if(!n){e.setResult({success:!1});return}n.lastActivityAt=e.payload.lastActivityAt,e.setResult({success:!0})})),n.push(e.on(l.updateRuntime,e=>{let n=t.get(e.payload.agentId);if(!n){e.setResult({success:!1});return}let{cwd:r,model:i,providerConfigId:a}=e.payload;if(!Un(n,r,i,a)){e.setResult({success:!1});return}n.lastActivityAt=Date.now(),e.setResult({success:!0})})),()=>n.forEach(e=>e())}async function Gn(t,n){if(n.length===0)return new Map;let r=[...new Set(n)],i=await t.select().from(e).where(P(e.sessionId,r)),a=new Map;for(let e of i){let t=a.get(e.sessionId)??[];t.push(e),a.set(e.sessionId,t)}return a}async function Kn(e,t){if(t.length===0)return new Map;let n=[...new Set(t)],r=await e.all(F`
65
- SELECT m.session_id as sessionId, m.content_text as preview
66
- FROM messages m
67
- WHERE m.role = 'user'
68
- AND m.session_id IN (${F.join(n.map(e=>F`${e}`),F`, `)})
69
- AND NOT EXISTS (
70
- SELECT 1
71
- FROM messages m2
72
- WHERE m2.session_id = m.session_id
73
- AND m2.role = 'user'
74
- AND (m2.timestamp < m.timestamp OR (m2.timestamp = m.timestamp AND m2.rowid < m.rowid))
75
- )
76
- `),i=new Map;for(let e of r)i.set(e.sessionId,e.preview);return i}async function qn(e,t){if(t.length===0)return new Map;let r=[...new Set(t)],i=await e.select({sessionId:n.sessionId,count:j()}).from(n).where(P(n.sessionId,r)).groupBy(n.sessionId),a=new Map;for(let e of i)a.set(e.sessionId,e.count);return a}function Jn(e){if(e)try{let t=JSON.parse(e);return!t||typeof t!=`object`||Array.isArray(t)?void 0:t}catch{return}}function Yn(e,t,n,r){return{sessionId:e.session_id,createdAt:e.created_at,lastActivityAt:e.last_activity_at,status:e.status,title:e.title??void 0,leadAgentId:e.lead_agent_id??void 0,parentSessionId:e.parent_session_id??void 0,rootSessionId:e.root_session_id??void 0,forkPointMessageId:e.fork_point_message_id??void 0,branchKind:e.branch_kind??void 0,adapterName:e.adapter_name??void 0,adapterSessionId:e.adapter_session_id??void 0,adapterId:e.adapter_id??void 0,isOrchestrated:e.is_orchestrated===null?void 0:!!e.is_orchestrated,isImported:e.is_imported===null?void 0:!!e.is_imported,summary:e.summary??void 0,summaryUpdatedAt:e.summary_updated_at??void 0,forkTransforms:Jn(e.fork_transforms),targetWorkingDirectory:e.target_working_directory??void 0,agents:t.map(e=>({agentId:e.agentId,adapterId:e.adapterId,adapterName:e.adapterName,sessionId:e.sessionId,role:e.role,status:e.status,createdAt:e.createdAt,lastActivityAt:e.lastActivityAt,model:e.model??void 0,adapterSessionId:e.adapterSessionId??void 0,cwd:e.cwd??void 0})),preview:{messageCount:r.get(e.session_id)??0,firstUserMessage:n.get(e.session_id)??null}}}function Xn(e){let t=[];return e.status!==`all`&&t.push(F`s.status = ${e.status}`),e.isImported!==void 0&&t.push(e.isImported?F`s.is_imported = 1`:F`COALESCE(s.is_imported, 0) = 0`),t.length===0?F``:F` AND ${F.join(t,F` AND `)}`}async function Zn(e,t,n,r,i){let a=Xn(i);return e.all(F`
77
- SELECT DISTINCT
78
- s.session_id,
79
- s.created_at,
80
- s.last_activity_at,
81
- s.status,
82
- s.title,
83
- s.lead_agent_id,
84
- s.parent_session_id,
85
- s.root_session_id,
86
- s.fork_point_message_id,
87
- s.branch_kind,
88
- s.adapter_name,
89
- s.adapter_session_id,
90
- s.adapter_id,
91
- s.is_orchestrated,
92
- s.is_imported,
93
- s.summary,
94
- s.summary_updated_at,
95
- s.fork_transforms,
96
- s.target_working_directory
97
- FROM sessions s
98
- WHERE (
99
- s.session_id IN (
100
- SELECT session_id FROM messages_fts
101
- WHERE messages_fts MATCH ${t}
102
- )
103
- OR LOWER(s.title) LIKE ${n}
104
- )
105
- ${a}
106
- ORDER BY s.last_activity_at DESC
107
- LIMIT ${r}
108
- `)}async function Qn(e,t,n,r){let i=Xn(r),[a]=await e.all(F`
109
- SELECT COUNT(DISTINCT s.session_id) as total
110
- FROM sessions s
111
- WHERE (
112
- s.session_id IN (
113
- SELECT session_id FROM messages_fts
114
- WHERE messages_fts MATCH ${t}
115
- )
116
- OR LOWER(s.title) LIKE ${n}
117
- )
118
- ${i}
119
- `);return a?.total??0}function $n(e,t){let n=[];return n.push(e.on(a.search,async e=>{let{query:n,limit:r=20,status:i=`all`,isImported:a}=e.payload,o=n.trim();if(!o){e.setResult({sessions:[],total:0});return}let s=`%${o.toLowerCase()}%`,c={status:i,isImported:a},l=await Zn(t,o,s,r,c);if(l.length===0){e.setResult({sessions:[],total:0});return}let u=await Qn(t,o,s,c),d=l.map(e=>e.session_id),f=await Gn(t,d),p=await Kn(t,d),m=await qn(t,d),h=l.map(e=>Yn(e,f.get(e.session_id)??[],p,m));e.setResult({sessions:h,total:u})})),()=>n.forEach(e=>e())}var er=class{bus;options;cleanups=[];transform;constructor(e=S,t={}){this.bus=e,this.options=t,this.transform=t.transform??(e=>e),this.registerHandlers()}async emitStorageEvent(e,t,n){let i={sessionId:t,eventId:crypto.randomUUID(),timestamp:Date.now(),type:e,payload:n},a=this.transform(i);a&&await this.bus.request(r.append,{event:a})}registerHandler(e,t){this.cleanups.push(this.bus.on(e,(async e=>{try{await this.emitStorageEvent(t,e.payload.sessionId,e.payload)}catch(e){console.error(`[SessionLogger] Failed to emit ${t} to storage:`,e)}})))}registerHandlers(){this.registerHandler(E.agent.added,`agent.added`),this.registerHandler(E.turn.started,`turn.started`),this.registerHandler(E.turn.completed,`turn.completed`),this.registerHandler(E.branch.created,`branch.created`)}destroy(){for(let e of this.cleanups)e();this.cleanups.length=0}};const X=we(`import_cursors`,{filePath:k(`file_path`).primaryKey(),bytesRead:O(`bytes_read`).notNull(),lastModified:k(`last_modified`).notNull(),updatedAt:O(`updated_at`).notNull()});function tr(e,t,n){let r=[];return r.push(e.on(Ie.get,async e=>{let{filePath:n}=e.payload,r=(await t.select().from(X).where(N(X.filePath,n)).limit(1))[0];if(!r){e.setResult({cursor:null});return}e.setResult({cursor:{filePath:r.filePath,bytesRead:r.bytesRead,lastModified:r.lastModified}})})),r.push(e.on(Ie.set,async e=>{let{filePath:n,bytesRead:r,lastModified:i}=e.payload;await t.insert(X).values({filePath:n,bytesRead:r,lastModified:i,updatedAt:Date.now()}).onConflictDoUpdate({target:X.filePath,set:{bytesRead:r,lastModified:i,updatedAt:Date.now()}}),e.setResult({success:!0})})),r.push(e.on(Ie.delete,async e=>{let{filePath:n}=e.payload,r=await t.delete(X).where(N(X.filePath,n));e.setResult({success:r.rowsAffected>0})})),()=>{r.forEach(e=>e())}}var nr=class{sessionId;parentSessionId;status=`active`;_turns=[];_completedTurnIds=new Set;bus;constructor(e){this.sessionId=e.sessionId??crypto.randomUUID(),this.parentSessionId=e.parentSessionId,this.bus=e.bus}get turns(){return this._turns}async startTurn(e){if(this.status!==`active`)throw Error(`Cannot start turn on non-active session`);let t=new g({sessionId:this.sessionId,agentIds:e.agentIds,turnNumber:e.turnNumber,turnId:e.turnId});return this._turns.push(t),t.addMessage(e.messageId),await this.emit(E.turn.started,{turnId:t.turnId,turnNumber:t.turnNumber,agentIds:[...t.agentIds],messageId:e.messageId}),t}getActiveTurn(){for(let e=this._turns.length-1;e>=0;e--){let t=this._turns[e];if(!this._completedTurnIds.has(t.turnId))return t}}async completeTurn(e){if(!e.isComplete())throw Error(`Turn ${e.turnId} is not complete yet`);this._completedTurnIds.add(e.turnId);let t=e.getResult();await this.emit(E.turn.completed,{turnId:e.turnId,turnNumber:e.turnNumber,success:t.success,error:t.errors.length>0?t.errors.join(`; `):void 0})}async emit(e,t){await this.bus.emit(e,{...t,sessionId:this.sessionId})}};const rr=we(`adapter_sessions`,{adapterSessionId:k(`adapter_session_id`).primaryKey(),adapterName:k(`adapter_name`).notNull(),parentAdapterSessionId:k(`parent_adapter_session_id`),forkPointMessageId:k(`fork_point_message_id`),sessionId:k(`session_id`).references(()=>t.sessionId),model:k(`model`),cwd:k(`cwd`),logFilePath:k(`log_file_path`),kind:k(`kind`,{enum:Re}).notNull().default(Le),discoveredAt:O(`discovered_at`).notNull(),startedAt:O(`started_at`).notNull(),status:k(`status`,{enum:[`discovered`,`imported`,`live`,`tracking`]}).notNull().default(`discovered`)},e=>[Te(`uniq_adapter_sessions_log_file_path`).on(e.logFilePath)]),ir=x.object({adapterSessionId:x.string(),adapterName:x.string(),parentAdapterSessionId:x.string().nullable(),forkPointMessageId:x.string().nullable(),sessionId:x.string().nullable(),model:x.string().nullable(),cwd:x.string().nullable(),logFilePath:x.string().nullable(),discoveredAt:x.number(),startedAt:x.number(),status:re,kind:pe}),Z=x.object({adapterSessionId:x.string(),adapterName:x.string(),model:x.string().nullable(),cwd:x.string().nullable(),logFilePath:x.string().nullable().optional(),startedAt:x.number().finite().optional()}),ar=x.discriminatedUnion(`kind`,[Z.merge(ue),Z.merge(se),Z.merge(ge),Z.merge(ae)]),or=ue.omit({kind:!0}).extend({kind:x.null()}),sr=x.union([or,se,ge,ae]).and(x.object({model:x.string().nullable(),cwd:x.string().nullable(),title:x.string().nullable()})),Q=Ee(`adapterSession`,{schemas:{upsert:{request:ar,response:x.object({adapterSessionId:x.string(),sessionId:x.string().nullable(),created:x.boolean()})},get:{request:x.object({adapterSessionId:x.string()}),response:x.object({session:ir.nullable()})},updateStatus:{request:x.object({adapterSessionId:x.string(),status:re}),response:x.object({success:x.boolean()})},linkSession:{request:x.object({adapterSessionId:x.string(),sessionId:x.string()}),response:x.object({success:x.boolean()})},getByLogFilePath:{request:x.object({logFilePath:x.string()}),response:x.object({session:ir.nullable()})},list:{request:x.object({}),response:x.object({sessions:x.array(ir)})},countByAdapter:{request:x.object({adapterName:x.string()}),response:x.object({total:x.number(),imported:x.number(),discovered:x.number()})},createAndLink:{request:x.object({adapterSessionId:x.string(),adapterName:x.string(),adapterId:x.string(),metadata:sr,existingSessionId:x.string().optional()}),response:x.object({sessionId:x.string(),created:x.boolean()})}},extensions:{drizzle:{adapterSessions:rr}}}),$=Q.subjects;let cr=0;function lr(){let e=Date.now();return cr=e>cr?e:cr+1,cr}function ur(e){return{adapterSessionId:e.adapterSessionId,adapterName:e.adapterName,parentAdapterSessionId:e.parentAdapterSessionId,forkPointMessageId:e.forkPointMessageId,sessionId:e.sessionId,model:e.model,cwd:e.cwd,logFilePath:e.logFilePath,discoveredAt:e.discoveredAt,startedAt:e.startedAt,status:e.status,kind:e.kind}}function dr(e){let{bus:t,db:n}=e,{adapterSessions:r}=Q.extensions.drizzle;return t.on($.upsert,async e=>{let{adapterSessionId:t,adapterName:i,parentAdapterSessionId:a,forkPointMessageId:o,model:s,cwd:c,logFilePath:l,kind:u,startedAt:d}=e.payload,f=lr(),[p]=await n.insert(r).values({adapterSessionId:t,adapterName:i,parentAdapterSessionId:a,forkPointMessageId:o,model:s??null,cwd:c??null,logFilePath:l??null,kind:u,discoveredAt:f,startedAt:d??f,status:`discovered`}).onConflictDoUpdate({target:r.adapterSessionId,set:{parentAdapterSessionId:a,forkPointMessageId:o,model:F`COALESCE(excluded.model, ${r.model})`,cwd:F`COALESCE(excluded.cwd, ${r.cwd})`,logFilePath:F`COALESCE(excluded.log_file_path, ${r.logFilePath})`,startedAt:d===void 0?F`${r.startedAt}`:F`CASE
120
- WHEN ${r.startedAt} = ${r.discoveredAt}
121
- THEN ${d}
122
- ELSE ${r.startedAt}
123
- END`,kind:u}}).returning({adapterSessionId:r.adapterSessionId,sessionId:r.sessionId,discoveredAt:r.discoveredAt}),m=p.discoveredAt===f;e.setResult({adapterSessionId:p.adapterSessionId,sessionId:p.sessionId,created:m})})}function fr(e){let{bus:t,db:n}=e,{adapterSessions:r}=Q.extensions.drizzle;return t.on($.updateStatus,async e=>{let{adapterSessionId:i,status:a}=e.payload,o=(await n.update(r).set({status:a}).where(A(N(r.adapterSessionId,i),F`${r.status} <> ${a}`))).rowsAffected>0;e.setResult({success:o}),o&&t.emit(w.session.statusChanged,{adapterSessionId:i,status:a}).catch(e=>console.error(`[AdapterSessionStorage] Failed to emit statusChanged event:`,e))})}function pr(e){let{bus:t,db:n}=e,{adapterSessions:r}=Q.extensions.drizzle;return t.on($.linkSession,async e=>{let{adapterSessionId:i,sessionId:o}=e.payload,[s]=await n.select({adapterName:r.adapterName,currentSessionId:r.sessionId,forkPointMessageId:r.forkPointMessageId}).from(r).where(N(r.adapterSessionId,i)).limit(1);if(!s){e.setResult({success:!1});return}if(s.currentSessionId===o){e.setResult({success:!0});return}if(s.currentSessionId!==null){e.setResult({success:!1});return}if(await n.update(r).set({sessionId:o}).where(N(r.adapterSessionId,i)),await t.emit(w.session.linked,{adapterName:s.adapterName,adapterSessionId:i,sessionId:o}),s.forkPointMessageId){let e=s.forkPointMessageId;try{let{message:n}=await t.request(b.getByAdapterMessageId,{adapterMessageId:s.forkPointMessageId});n&&(e=n.messageId)}catch{}try{await t.request(a.update,{sessionId:o,forkPointMessageId:e})}catch{}}e.setResult({success:!0})})}function mr(e,t,n){let{adapterSessions:r}=Q.extensions.drizzle,i=[];return i.push(dr({bus:e,db:t})),i.push(e.on($.get,async e=>{let{adapterSessionId:n}=e.payload,[i]=await t.select().from(r).where(N(r.adapterSessionId,n)).limit(1);e.setResult({session:i?ur(i):null})})),i.push(fr({bus:e,db:t})),i.push(e.on($.list,async e=>{let n=await t.select().from(r).orderBy(M(r.startedAt));e.setResult({sessions:n.map(ur)})})),i.push(e.on($.getByLogFilePath,async e=>{let{logFilePath:n}=e.payload,[i]=await t.select().from(r).where(N(r.logFilePath,n)).limit(1);e.setResult({session:i?ur(i):null})})),i.push(pr({bus:e,db:t})),i.push(e.on($.countByAdapter,async e=>{let{adapterName:n}=e.payload,i=await t.select({status:r.status,count:F`count(*)`}).from(r).where(N(r.adapterName,n)).groupBy(r.status),a=0,o=0,s=0;for(let e of i){let t=Number(e.count);a+=t,(e.status===`imported`||e.status===`tracking`)&&(o+=t),e.status===`discovered`&&(s=t)}e.setResult({total:a,imported:o,discovered:s})})),()=>i.forEach(e=>e())}function hr(e){switch(e){case`fork`:return`fork`;case`subagent`:return`subagent`;case`compress`:return`compress`;case`root`:return;default:return}}function gr(e){let t={model:e.model??null,cwd:e.cwd??null,title:e.title??null};switch(e.kind){case`fork`:if(!e.parentAdapterSessionId||!e.forkPointMessageId)throw Error(`Fork session metadata requires parentAdapterSessionId and forkPointMessageId`);return{...t,kind:`fork`,parentAdapterSessionId:e.parentAdapterSessionId,forkPointMessageId:e.forkPointMessageId};case`subagent`:if(!e.parentAdapterSessionId)throw Error(`Subagent session metadata requires parentAdapterSessionId`);return{...t,kind:`subagent`,parentAdapterSessionId:e.parentAdapterSessionId,forkPointMessageId:null};case`compress`:if(!e.parentAdapterSessionId)throw Error(`Compress session metadata requires parentAdapterSessionId`);return{...t,kind:`compress`,parentAdapterSessionId:e.parentAdapterSessionId,forkPointMessageId:null};case null:return{...t,kind:null,parentAdapterSessionId:null,forkPointMessageId:null};default:return Cr(e.kind)}}async function _r(e,t,n){t&&await e.request(a.delete,{sessionId:n})}async function vr(e,t){if(!t)return{parentSessionId:void 0,rootSessionId:void 0};let{session:n}=await e.request($.get,{adapterSessionId:t}),r=n?.sessionId??void 0;if(!r)return{parentSessionId:void 0,rootSessionId:void 0};let{session:i}=await e.request(a.get,{sessionId:r});return{parentSessionId:r,rootSessionId:i?.rootSessionId??r}}async function yr(e,t,n){let{session:r}=await e.request(a.get,{sessionId:t});if(!r)return;let i={sessionId:t};n.title&&!r.title&&(i.title=n.title),n.cwd&&!r.targetWorkingDirectory&&(i.targetWorkingDirectory=n.cwd),n.startedAt!==void 0&&n.startedAt<r.createdAt&&(i.createdAt=n.startedAt,r.lastActivityAt===r.createdAt&&(i.lastActivityAt=n.startedAt)),Object.keys(i).length!==1&&await e.request(a.update,i)}async function br(e,t,n,r,i,a,o){let{session:s}=await e.request($.get,{adapterSessionId:t});if(s?.sessionId&&s.sessionId!==n)return await _r(e,r,n),!1;let{success:c}=await e.request($.linkSession,{adapterSessionId:t,sessionId:n});if(!c)return await _r(e,r,n),!1;let l=hr(a??`root`);return await e.emit(E.created,{sessionId:n,createdAt:o,parentSessionId:i.parentSessionId??null,branchKind:l??null}),!0}async function xr(e){let{bus:t,adapterSessionId:n,adapterName:r,adapterId:i,metadata:o,existingSessionId:s}=e,{parentAdapterSessionId:c,forkPointMessageId:l,kind:u,cwd:d,title:f}=o,{session:p}=await t.request($.get,{adapterSessionId:n});if(!p)throw Error(`Adapter session not found for createAndLink: ${n}`);if(p?.sessionId)return await yr(t,p.sessionId,{cwd:o.cwd,title:o.title,startedAt:p.startedAt}),{sessionId:p.sessionId,created:!1};let m=await vr(t,c),h=s??crypto.randomUUID(),g=hr(u??`root`),_=p.startedAt,{success:v}=await t.request(a.set,{sessionId:h,session:{sessionId:h,status:`discovered`,isImported:!0,isOrchestrated:!1,adapterSessionId:n,adapterName:r,adapterId:i,createdAt:_,lastActivityAt:_,agents:[],...m.parentSessionId===void 0?{}:{parentSessionId:m.parentSessionId},...m.rootSessionId===void 0?{}:{rootSessionId:m.rootSessionId},...l?{forkPointMessageId:l}:{},...g===void 0?{}:{branchKind:g},...d?{targetWorkingDirectory:d}:{},...f?{title:f}:{}},ifAbsent:!0});try{let e=await br(t,n,h,v,m,u,_);return{sessionId:e?h:(await t.request($.get,{adapterSessionId:n})).session?.sessionId??h,created:e&&v}}catch(e){try{await _r(t,v,h)}catch(e){console.error(`[createAndLinkImportedSession] Failed to cleanup orphaned session`,{sessionId:h,adapterSessionId:n,error:e})}throw e}}function Sr(e){return e.on($.createAndLink,async t=>{let n=await xr({bus:e,...t.payload});t.setResult(n)})}function Cr(e){throw Error(`Unsupported session lineage kind: ${String(e)}`)}function wr(e){let{adapterSessionId:t,adapterName:n,model:r,cwd:i,logFilePath:a,startedAt:o,kind:s,parentAdapterSessionId:c,forkPointMessageId:l}=e,u=s===`root`?{kind:s,parentAdapterSessionId:null,forkPointMessageId:null}:s===`fork`?{kind:s,parentAdapterSessionId:c,forkPointMessageId:l}:{kind:s,parentAdapterSessionId:c,forkPointMessageId:null};return{adapterSessionId:t,adapterName:n,model:r??null,cwd:i??null,logFilePath:a??null,...o===void 0?{}:{startedAt:o},...u}}function Tr(e){return e.on(w.session.discovered,async t=>{let n=fe.safeParse(t.payload);if(!n.success)throw console.error(`[registerSessionDiscoveredHandler] Invalid adapter.session.discovered payload`,{issues:n.error.issues}),n.error;let r=n.data,{adapterId:i,adapterSessionId:a,adapterName:o,parentAdapterSessionId:s,forkPointMessageId:c,model:l,cwd:u,title:d,kind:f}=r,{sessionId:p,created:m}=await e.request($.upsert,wr(r));await e.request($.createAndLink,{adapterSessionId:a,adapterName:o,adapterId:i,metadata:gr({kind:f===`root`?null:f,parentAdapterSessionId:s,forkPointMessageId:c,model:l,cwd:u,title:d}),existingSessionId:m?void 0:p??void 0})})}function Er(e,t){let{adapterSessions:n}=Q.extensions.drizzle;async function r(i,o,s=0){if(s>100)throw Error(`Cycle detected in session lineage (depth > 100)`);let c=await t.select({adapterSessionId:n.adapterSessionId,sessionId:n.sessionId}).from(n).where(N(n.parentAdapterSessionId,i));for(let t of c)t.sessionId&&await e.request(a.update,{sessionId:t.sessionId,rootSessionId:o}),await r(t.adapterSessionId,o,s+1)}return e.on(w.session.linked,async i=>{let{adapterSessionId:o,sessionId:s}=i.payload,c=await t.select({adapterSessionId:n.adapterSessionId,sessionId:n.sessionId,kind:n.kind}).from(n).where(N(n.parentAdapterSessionId,o));if(c.length===0)return;let{session:l}=await e.request(a.get,{sessionId:s}),u=l?.rootSessionId??s;for(let t of c){let n=hr(t.kind);t.sessionId&&await e.request(a.update,{sessionId:t.sessionId,parentSessionId:s,rootSessionId:u,...n===void 0?{}:{branchKind:n}}),await r(t.adapterSessionId,u)}})}const Dr=new Set([`Agent`,`spawn_subagent`]),Or=`[^A-Za-z0-9_-]`;function kr(e){return e.replaceAll(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function Ar(e,t){return t.test(e)}async function jr(e,t){let n=[],r,i=0;do{let a=await e.request(b.getBySession,{sessionId:t,order:`asc`,...r===void 0?{}:{after:r}});if(n.push(...a.messages),r=a.nextCursor??void 0,i+=1,r!==void 0&&i>=1e3)throw Error(`Exceeded 1000 message pages while loading session ${t}`)}while(r!==void 0);return n}function Mr(e){let t=[];for(let n of e)for(let e of n.blocks)e.type===`tool_call`&&Dr.has(e.name)&&t.push({toolCallId:e.toolCallId});return t}function Nr(e,t){let n=new Map;for(let r of e)for(let e of r.blocks)if(e.type===`tool_output`){for(let r of t)if(Ar(e.output,r.pattern)){let t=n.get(e.toolCallId)??new Set;t.add(r.id),n.set(e.toolCallId,t)}}let r=new Map;for(let[e,t]of n)if(t.size===1){let[n]=t;r.set(e,n)}return r}function Pr(e){return[...e].map(e=>{let t=kr(e);return{id:e,pattern:RegExp(`(^|${Or})${t}($|${Or})`)}})}async function Fr(e,t,n){let{children:r}=await e.request(a.getChildren,{sessionId:n}),i=r.filter(e=>e.branchKind===`compress`);if(i.length===0)return;let{session:o}=await e.request(a.get,{sessionId:t}),s=o?.adapterSessionId;if(!s)return;let c=Pr(new Set([s])),l=(await Promise.all(i.map(async t=>{let n=await jr(e,t.sessionId),r=Mr(n);if(r.length===0)return null;let i=Nr(n,c);if(i.size===0)return null;let a=[...i.entries()].filter(([,e])=>e===s);if(a.length!==1)return null;let[o]=a[0];return r.some(e=>e.toolCallId===o)?{parentSessionId:t.sessionId,toolCallId:o}:null}))).filter(e=>e!==null);l.length===1&&await e.request(a.update,{sessionId:t,parentSessionId:l[0].parentSessionId,spawningToolCallId:l[0].toolCallId})}async function Ir(e,t,n){let{session:r}=await e.request($.get,{adapterSessionId:t}),i=r?.parentAdapterSessionId;if(!i)return;let{session:o}=await e.request($.get,{adapterSessionId:i}),s=o?.sessionId;if(!s)return;let{children:c}=await e.request(a.getChildren,{sessionId:s}),l=await Lr(e,c);if(l.size===0)return;let u=await jr(e,n),d=Mr(u);if(d.length===0)return;let f=Nr(u,Pr(new Set(l.keys()))),p=new Map;for(let e of d){let t=f.get(e.toolCallId);t!==void 0&&p.set(t,(p.get(t)??0)+1)}let m=new Map;for(let e of d){let t=f.get(e.toolCallId),n=t===void 0?void 0:l.get(t);n!==void 0&&t!==void 0&&p.get(t)===1&&m.set(n,e.toolCallId)}if(m.size===0)return;let h=[...m].map(async([t,r])=>{try{let{session:i}=await e.request(a.get,{sessionId:t});if(!i)return;await e.request(a.update,{sessionId:t,parentSessionId:n,spawningToolCallId:r})}catch(e){console.error(`[CompressLineageResolver] Failed to re-parent subagent`,{compressChildSessionId:n,parentMakaioSessionId:s,childSessionId:t,toolCallId:r,error:e})}});await Promise.allSettled(h)}async function Lr(e,t){let n=await Promise.all(t.filter(e=>e.branchKind===`subagent`).map(async t=>{let{session:n}=await e.request(a.get,{sessionId:t.sessionId});return n?.adapterSessionId?{sessionId:t.sessionId,adapterSessionId:n.adapterSessionId}:null}));return new Map(n.filter(e=>e!==null).map(e=>[e.adapterSessionId,e.sessionId]))}function Rr(e){return e.on(w.session.linked,async t=>{try{let{adapterSessionId:n,sessionId:r}=t.payload,{session:i}=await e.request(a.get,{sessionId:r});if(!i)return;if(i.branchKind===`subagent`&&i.parentSessionId!==void 0){await Fr(e,r,i.parentSessionId);return}if(i.branchKind!==`compress`)return;await Ir(e,n,r)}catch(e){console.error(`[CompressLineageResolver] Failed to resolve compress lineage`,{payload:t.payload,error:e})}})}function zr(e){return[...e].map(e=>{let t=kr(e);return{id:e,pattern:RegExp(`(^|${Or})${t}($|${Or})`)}})}function Br(e){return e.on(w.session.linked,async t=>{try{let{sessionId:n}=t.payload,{children:r}=await e.request(a.getChildren,{sessionId:n}),i=new Set(r.filter(e=>e.branchKind===`subagent`&&e.spawningToolCallId===void 0).map(e=>e.sessionId));if(i.size===0)return;let o=await jr(e,n),s=Mr(o);if(s.length===0)return;let c=Nr(o,zr(i)),l=new Map;for(let e of s){let t=c.get(e.toolCallId);t!==void 0&&l.set(t,(l.get(t)??0)+1)}let u=new Map;for(let e of s){let t=c.get(e.toolCallId);t!==void 0&&l.get(t)===1&&u.set(t,e.toolCallId)}let d=[...u].map(async([t,r])=>{try{let{session:n}=await e.request(a.get,{sessionId:t});if(!n||n.spawningToolCallId!==void 0)return;await e.request(a.update,{sessionId:t,spawningToolCallId:r})}catch(e){console.error(`Failed to persist spawning tool call correlation`,{parentSessionId:n,childSessionId:t,toolCallId:r,error:e})}});await Promise.allSettled(d)}catch(e){console.error(`Failed to backfill spawningToolCallId for linked session`,{payload:t.payload,error:e})}})}var Vr=class{bus;agentStates=new Map;sessionStates=new Map;unsubscribe;staleThresholdMs;constructor(e,t){this.bus=e,this.staleThresholdMs=t?.staleThresholdMs??36e5}start(){this.unsubscribe||=this.bus.on(T.contextWindow.updated,e=>{let{agentId:t,sessionId:n,currentTokens:r,maxTokens:i,percentage:a,level:o,cachedTokens:s}=e.payload;if(!n)return;let c={agentId:t,sessionId:n,currentTokens:r,maxTokens:i,percentage:a,level:o,cachedTokens:s,updatedAt:Date.now()};this.agentStates.set(t,c),this.recomputeSessionState(n)})}stop(){this.unsubscribe?.(),this.unsubscribe=void 0,this.agentStates.clear(),this.sessionStates.clear()}getSessionState(e){return this.sessionStates.get(e)}clearSession(e){this.sessionStates.delete(e);for(let[t,n]of this.agentStates)n.sessionId===e&&this.agentStates.delete(t)}recomputeSessionState(e){let t=Date.now(),n;for(let[r,i]of this.agentStates){if(t-i.updatedAt>this.staleThresholdMs){this.agentStates.delete(r);continue}i.sessionId===e&&(!n||i.percentage>n.percentage)&&(n=i)}n&&this.sessionStates.set(e,{currentTokens:n.currentTokens,maxTokens:n.maxTokens,percentage:n.percentage,level:n.level,worstAgentId:n.agentId,lastUpdatedAt:n.updatedAt})}};export{Zt as A,Ht as B,Wn as C,q as D,wn as E,qt as F,R as G,zt as H,Kt as I,mt as J,Ot as K,Wt as L,Xt as M,Yt as N,xn as O,Jt as P,Ve as Q,Gt as R,Jn as S,Tn as T,Lt as U,Vt as V,z as W,Ze as X,rt as Y,Ye as Z,$n as _,xr as a,Kn as b,hr as c,$ as d,rr as f,er as g,X as h,Er as i,Qt as j,sn as k,mr as l,tr as m,Br as n,Sr as o,nr as p,Tt as q,Rr as r,Tr as s,Vr as t,Q as u,Gn as v,Hn as w,Yn as x,qn as y,Ut as z};
@@ -1 +0,0 @@
1
- import"./ui-config-zawaoEfB.mjs";import{z as e}from"zod";const t=e.lazy(()=>e.union([e.string(),e.number().finite(),e.boolean(),e.null(),e.array(t),e.record(e.string(),t)])),n=e.record(e.string(),t),r=e.custom(e=>n.safeParse(e).success),i=e.discriminatedUnion(`type`,[e.object({type:e.literal(`base64`),data:e.string(),mimeType:e.string()}),e.object({type:e.literal(`url`),url:e.string(),mimeType:e.string().optional()})]),a=e.enum([`file`,`directory`]),o=e.discriminatedUnion(`type`,[e.object({type:e.literal(`text`),content:e.string()}),e.object({type:e.literal(`image`),source:i}),e.object({type:e.literal(`document`),source:i}),e.object({type:e.literal(`attachment`),fileName:e.string(),filePath:e.string(),source:i,displayName:e.string().optional(),attachmentType:a}),e.object({type:e.literal(`reasoning`),content:e.string(),metadata:e.record(e.string(),e.unknown()).optional()}),e.object({type:e.literal(`tool_call`),toolCallId:e.string(),name:e.string(),args:e.record(e.string(),e.unknown())}),e.object({type:e.literal(`tool_output`),toolCallId:e.string(),output:e.string(),isError:e.boolean().optional()})]),s=e.enum([`user`,`assistant`,`system`]),c=e.object({role:s.optional(),blocks:e.union([o,e.array(o)])}),l=e.union([e.string(),c]),u=e.object({message:e.string().optional()}),d=e.enum([`completed`,`superseded`,`merged`,`cancelled`,`error`,`rejected`]),f=e.object({messageId:e.string(),result:u.optional(),error:e.string().optional(),outcome:d}),p=e.enum([`enqueue`,`immediate`,`replace`]),m=e.union([e.string(),e.object({mode:e.literal(`append`),content:e.string()})]),h=e.object({role:e.enum([`user`,`assistant`,`system`]),blocks:e.array(o),message:e.string().optional()}),g=[`rate_limit`,`auth`,`model_unavailable`,`quota_exceeded`],_=e.enum(g);export{p as a,c,f as d,m as f,t as h,o as i,h as l,n as m,g as n,l as o,r as p,_ as r,d as s,i as t,u};
@@ -1 +0,0 @@
1
- import{z as e}from"zod";import{createBusNamespace as t}from"@makaio/framework/core";import{createStorageNamespaceDefinition as n}from"@makaio/framework/storage";const r=e.number().finite(),i=e.union([e.string(),r,e.boolean(),e.null()]),a=e.lazy(()=>e.union([e.string(),r,e.boolean(),e.null(),e.array(a),e.record(e.string(),a)]));e.record(e.string(),a);const o=e.union([i,e.object({$eq:i}).strict(),e.object({$ne:i}).strict(),e.object({$in:e.array(i)}).strict(),e.object({$nin:e.array(i)}).strict(),e.object({$exists:e.boolean()}).strict(),e.object({$startsWith:e.string()}).strict(),e.object({$endsWith:e.string()}).strict(),e.object({$glob:e.string()}).strict()]),s=e.object({field:e.string().min(1),operator:o}).strict(),c=e.object({$expr:e.string().min(1)}).strict(),l=e.lazy(()=>e.union([s,e.object({$and:e.array(l).min(1)}).strict(),e.object({$or:e.array(l).min(1)}).strict(),e.object({$not:l}).strict(),c]));e.object({includeDisabled:e.boolean().optional()}).strict();const u=`contextRules`,d=[`AGENTS.md`,`CLAUDE.md`,`GEMINI.md`,`COPILOT.md`,`CURSOR.md`],f=e.object({cwd:e.string().optional(),adapterId:e.string().optional(),sessionId:e.string().optional(),agentId:e.string().optional()}).strict(),p=f.catchall(e.unknown()),m=e.enum(d),h=e.object({channel:e.literal(`turnContext`),content:e.string(),turnContextKey:e.string().optional()}).strict(),g=e.object({channel:e.literal(`file`),content:e.string(),fileTarget:m}).strict(),_=e.discriminatedUnion(`channel`,[h,g]),v=e.enum([`global`,`project`,`session`]);function y(e){return e.scope===`global`?e.projectId!==void 0||e.sessionId!==void 0?[{path:[`projectId`],message:`Global scope context rules must not have projectId or sessionId`}]:[]:e.scope===`project`?e.projectId?e.sessionId===void 0?[]:[{path:[`sessionId`],message:`Project scope context rules must not have sessionId`}]:[{path:[`projectId`],message:`Project scope context rules require projectId`}]:e.sessionId?[]:[{path:[`sessionId`],message:`Session scope context rules require sessionId`}]}function b(e){let[t]=y(e);if(t)throw Error(t.message)}const x=e.object({id:e.string().min(1),name:e.string().min(1),description:e.string().optional(),condition:l,action:_,priority:e.number(),enabled:e.boolean(),scope:v,projectId:e.string().optional(),sessionId:e.string().optional()}).strict(),S=x.superRefine((e,t)=>{for(let n of y(e))t.addIssue({code:`custom`,path:n.path,message:n.message})}),C=x.extend({createdAt:e.number(),updatedAt:e.number()}).superRefine((e,t)=>{for(let n of y(e))t.addIssue({code:`custom`,path:n.path,message:n.message})}),w=e.object({projectId:e.string().optional(),sessionId:e.string().optional()}).strict(),T=e.object({scope:v,projectId:e.string().nullable(),sessionId:e.string().nullable()}).strict(),E=f,D=e.object({id:e.string(),name:e.string(),priority:e.number(),action:_,renderedContent:e.string()}).strict(),O=e.object(Object.fromEntries(d.map(t=>[t,e.array(D).optional()]))).strict(),k=e.object({snapshot:p,turnContext:e.record(e.string(),e.array(D)),files:O}).strict(),A=e.object({ruleId:e.string(),changeType:e.enum([`created`,`updated`,`deleted`]),previous:T.nullable(),current:T.nullable(),timestamp:e.number()}).strict(),j=t(`contextRules`,{resolve:{request:E,response:k},changed:A}),M=j.subjects,N=n(`contextRules`,{schemas:{get:{request:e.object({id:e.string()}),response:e.object({rule:C.nullable()})},set:{request:e.object({rule:S}),response:e.object({id:e.string()})},delete:{request:e.object({id:e.string()}),response:e.object({deleted:e.boolean()})},list:{request:w,response:e.object({rules:e.array(C)})}}}),P=N.subjects;export{d as S,D as _,_ as a,b,w as c,T as d,v as f,m as g,g as h,M as i,E as l,p as m,P as n,A as o,f as p,j as r,S as s,N as t,C as u,k as v,u as x,h as y};
@@ -1 +0,0 @@
1
- import{SessionStorageSubjects as e}from"./services/session/storage/namespace.mjs";import{F as t}from"./handlers-DR_4_rAT.mjs";import"./session-BNo_cIiz.mjs";import{AgentSubjects as n,ApprovalSubjects as r,HarnessSubjects as i,computeMetaTags as a}from"@makaio/framework/contracts";import{BaseService as o}from"@makaio/framework/service-base";import{extractToolFilePath as s}from"@makaio/framework/tools";const c={"full-access":0,"always-ask":1,reject:2};function l(){return`apr_${crypto.randomUUID()}`}function u(e){switch(e){case`allow`:return`full-access`;case`deny`:return`reject`;case`ask`:return`always-ask`}}function d(e){if(!e?.length)return`neutral`;let t=a(e);return t.includes(`destructive`)?`destructive`:t.includes(`read-only`)?`safe`:`neutral`}function f(e,t){if(e)return t&&e.toolApprovalOverrides?.[t]!==void 0?e.toolApprovalOverrides[t]:e.approvalPolicy}function p(e,t,n,r){let i=r[t];if(!i?.length)return e;let a=e;for(let e of i){let t=n[e];t&&c[t]>c[a]&&(a=t)}return a}function m(e,t,n){return n.handled?n.data.allowedDirectories??void 0:t?[]:void 0}function h(e,t,n){if(!n||!e?.cwd)return{};let r;return(e.personaId||e.profileId)&&t&&(r=m(e.personaId,e.profileId,t)),{cwd:e.cwd,...r&&{allowedDirectories:r}}}function g(e,t,n){if(!(!e&&!t))return!n||!n.handled?{policy:`always-ask`}:{policy:u(n.data.action),...n.data.personaName&&{personaName:n.data.personaName},...n.data.profileName&&{profileName:n.data.profileName}}}function _(e,t){let n=t.harness?.toolCapabilityMap&&e.toolName?t.harness.toolCapabilityMap[e.toolName]:void 0;return{requestId:l(),toolCallId:e.toolCallId,toolName:e.toolName,args:e.args,agentId:e.agentId,sessionId:e.sessionId,adapterName:t.resolvedAdapterName,...t.personaName&&{personaName:t.personaName},...t.profileName&&{profileName:t.profileName},capabilities:n,riskLevel:d(n),reasoning:e.reasoning,createdAt:Date.now()}}var v=class extends o{logger=console;options;constructor(e,t={}){super(e),this.options=t}async onInit(){this.registerHandler(n.toolApprove,async e=>{let t=await this.getAgentMetadata(e.payload.agentId,e.payload.sessionId),n=(t?.personaId||t?.profileId)&&e.payload.toolName?await this.fetchRawEnrichedPolicy(t?.personaId,t?.profileId,e.payload.toolName):void 0,r=h(t,n,this.options.fileAccessRuleProvider),i=await this.checkFileAccessDenyReason(e.payload,r);if(i){e.setResult({action:`deny`,message:i,shouldAbort:!1});return}let a=await this.resolveSessionOverride(e.payload.sessionId);if(a===`full-access`){e.setResult({action:`allow`});return}if(a===`reject`){e.setResult({action:`deny`,message:`Tool use rejected by session approval policy override`,shouldAbort:!1});return}let o=await this.resolvePolicyWithContext({adapterName:e.payload.adapterName,toolName:e.payload.toolName},t,n);switch(a===`always-ask`?`always-ask`:o.policy){case`full-access`:e.setResult({action:`allow`});return;case`reject`:e.setResult({action:`deny`,message:`Tool use rejected by approval policy`,shouldAbort:!1});return;case`always-ask`:await this.dispatchAlwaysAskApproval(e.payload,e.setResult.bind(e),o);return}})}async dispatchAlwaysAskApproval(e,t,i){let a=_(e,i),o=new AbortController,s=this.bus.on(n.session.closed,()=>{o.abort()},{filter:{agentId:a.agentId,adapterSessionId:e.adapterSessionId}});try{let e=await this.bus.requestOptional(r.request,a,{timeout:0,signal:o.signal});e.handled&&e.data.action===`allow`?t({action:`allow`,...e.data.updatedInput&&{updatedInput:e.data.updatedInput}}):t({action:`deny`,message:e.handled&&e.data.action===`deny`?e.data.message??`User denied tool execution`:`No approval handler available`,shouldAbort:!1})}catch{t({action:`deny`,message:o.signal.aborted?`Approval cancelled — agent session closed`:`Tool approval request failed`,shouldAbort:!1})}finally{s()}}async checkFileAccessDenyReason(e,t){if(!this.options.fileAccessRuleProvider||!t.cwd)return;let n=s(e.toolName,e.args,t.cwd);if(n)try{return(await this.options.fileAccessRuleProvider(t.cwd,t.allowedDirectories)).isDenied(n)?`Access denied: '${n}' is restricted by .makaioignore rules`:void 0}catch{return`Access denied: file access rules could not be evaluated`}}async fetchRawEnrichedPolicy(e,t,n){try{return await this.bus.requestOptional(r.resolveEnrichedPolicy,{toolName:n,personaId:e,profileId:t})}catch(r){return this.logger.error(`[ToolApprovalService] approval.resolveEnrichedPolicy failed; falling back to fail-closed`,{toolName:n,personaId:e,profileId:t,error:r}),{handled:!1}}}async resolvePolicyWithContext(e,t,n){let r=t?.adapterName??e.adapterName,i=g(t?.personaId,t?.profileId,n),a=await this.resolveHarnessPolicy(r,t?.harnessId,t?.clientId),o=f(a,e.toolName),s=i?.policy??o??`always-ask`,c=s;return a?.capabilityOverrides&&a.toolCapabilityMap&&e.toolName&&(c=p(s,e.toolName,a.capabilityOverrides,a.toolCapabilityMap)),{policy:c,harness:a,agent:t,resolvedAdapterName:r,...i?.personaName&&{personaName:i.personaName},...i?.profileName&&{profileName:i.profileName}}}async getAgentMetadata(e,n){try{if(n){let{agents:r}=await this.bus.request(t.listBySession,{sessionId:n});return r.find(t=>t.agentId===e)??null}let r=await this.bus.requestOptional(t.get,{agentId:e});return r.handled?r.data.agent:null}catch{return null}}async resolveSessionOverride(t){if(t)try{let n=await this.bus.requestOptional(e.get,{sessionId:t});return n.handled?n.data.session?.approvalPolicyOverride??void 0:void 0}catch{return}}async resolveHarnessPolicy(e,t,n){try{let r=await this.bus.request(i.resolve,{adapterName:e,...t&&{profileHarnessId:t},...n&&{clientId:n}});return{approvalPolicy:r.approvalPolicy,capabilityOverrides:r.capabilityOverrides,toolCapabilityMap:r.toolCapabilityMap,toolApprovalOverrides:r.toolApprovalOverrides}}catch{return}}};export{v as t};
@@ -1 +0,0 @@
1
- import{SessionStorageSubjects as e}from"./services/session/storage/namespace.mjs";import{N as t}from"./handlers-DR_4_rAT.mjs";import{B as n,H as r,J as i,M as a,O as o,Z as s,_ as c,i as l,l as u,m as ee,n as te,o as ne,q as re,r as ie,s as ae,w as oe}from"./session-BNo_cIiz.mjs";import{n as d}from"./namespace-aALq9tnE.mjs";import{t as se}from"./capability-service-DV32ecwR.mjs";import"./services/adapter-subsystem/index.mjs";import{i as ce,s as le}from"./model-registry-Dzpssh9j.mjs";import{t as ue}from"./tool-approval-service-CZCPfvVy.mjs";import{t as de}from"./tray-menu-service-BAYtLdAg.mjs";import{harnessDefinitions as f}from"./services/harness/storage/schema.mjs";import{n as p}from"./namespace-Zb8HAbyF.mjs";import{z as m}from"zod";import{MakaioError as fe,createMakaioContext as pe}from"@makaio/framework/core";import{MakaioBus as h}from"@makaio/framework/bus";import{AdapterSubjects as me,ApprovalPolicySchema as g,CanonicalModelSubjects as he,DEFAULT_HARNESSES as ge,HarnessDefinitionCreateSchema as _e,HarnessSubjects as _,ToolCapabilitySchema as ve,ToolSubjects as v,dep as y,extensionToken as b,validateToolAdapterIdentity as ye}from"@makaio/framework/contracts";import{BaseService as x}from"@makaio/framework/service-base";import{eq as S}from"drizzle-orm";import{registerDrizzleHandlers as C}from"@makaio/framework/storage/drizzle";import{slugifyProviderConfigName as w}from"@makaio/framework/contracts/config";import{ClientAccountIdentifierSchema as be,ClientSessionAccountObserveSchema as xe,ClientSubjects as T}from"@makaio/framework/contracts/client";import{FILE_ACCESS_RULES_KEY as Se,FILE_ACCESS_RULES_KEY as Ce,ToolErrorCodes as E,errorToToolResult as we,extractToolFilePath as Te,toolError as D,toolSuccess as Ee}from"@makaio/framework/tools";import{createHash as De}from"node:crypto";import{createDrizzleCrudHandlers as Oe,createDrizzleListHandler as ke}from"@makaio/framework/storage/handlers";function Ae(e){let t=ye({adapterId:e?.adapterId,adapterName:e?.adapterName,contextOverrides:{adapterId:e?.contextOverrides?.adapterId,adapterName:e?.contextOverrides?.adapterName}}),n=t.issues[0];return n?D(E.VALIDATION_FAILED,n.message):Ee(t.effectiveIdentity)}function je(e){let t=e?.allowedDirectories;if(Array.isArray(t))return t.filter(e=>typeof e==`string`)}async function Me(e,t,n,r){let i=new Map;for(let e of t)i.set(e.name,await r(e.name));let a=t.filter(e=>{let t=i.get(e.name);return!t?.allowedAdapters||t.allowedAdapters.length===0?!0:t.allowedAdapters.includes(n)}),o=new Set(a.map(e=>e.name));return{filteredTools:e.filter(e=>!(!o.has(e.toolsetName)||i.get(e.toolsetName)?.disabledTools?.includes(e.name))),filteredToolsets:a}}function Ne(){return`exec_${Date.now()}_${Math.random().toString(36).substring(2,9)}`}var O=class{bus;toolsets=new Map;tools=new Map;cleanupHandlers=[];handlerPriority;policyProvider;fileAccessRuleProvider;revision=0;constructor(e){this.bus=e?.bus??h,this.handlerPriority=e?.handlerPriority??0,this.policyProvider=e?.policyProvider,this.fileAccessRuleProvider=e?.fileAccessRuleProvider,this.registerHandlers()}registerHandlers(){let e=this.bus.on(v.list,async e=>{let{toolsetName:t,adapterId:n,adapterName:r}=e.payload,{tools:i,toolsets:a}=await this.listToolsWithToolsets({toolsetName:t,adapterId:n,adapterName:r});e.setResult({tools:i,toolsets:a})},{priority:this.handlerPriority});this.cleanupHandlers.push(e);let t=this.bus.on(v.execute,async e=>{let{toolName:t,input:n,adapterId:r,adapterName:i,contextOverrides:a}=e.payload,o=await this.execute(t,n,{contextOverrides:a,adapterId:r,adapterName:i});e.setResult(o)},{priority:this.handlerPriority});this.cleanupHandlers.push(t)}async register(e){if(this.toolsets.has(e.metadata.name))throw Error(`Toolset '${e.metadata.name}' is already registered`);let t=[],n=[];for(let[,r]of Object.entries(e.tools)){let i=r.metadata.name;if(this.tools.has(i))throw Error(`Tool '${i}' is already registered (from toolset '${this.tools.get(i).toolsetName}')`);n.push({tool:r,toolsetName:e.metadata.name}),t.push(i)}this.toolsets.set(e.metadata.name,e);for(let e=0;e<n.length;e+=1)this.tools.set(t[e],n[e]);await this.emitRegistryChanged(`toolset-registered`,e.metadata.name).catch(t=>console.warn(`[ToolRegistry] Failed to emit ${v.registryChanged.subject} for '${e.metadata.name}':`,t)),await this.bus.emit(v.registered,{toolsetName:e.metadata.name,toolsetVersion:e.metadata.version,toolNames:t}).catch(t=>console.warn(`[ToolRegistry] Failed to emit ${v.registered.subject} for '${e.metadata.name}':`,t))}async deregister(e){let t=this.toolsets.get(e);if(!t)throw Error(`Toolset '${e}' is not registered`);for(let e of Object.values(t.tools))this.tools.delete(e.metadata.name);this.toolsets.delete(e),await this.emitRegistryChanged(`toolset-unregistered`,e).catch(t=>console.warn(`[ToolRegistry] Failed to emit ${v.registryChanged.subject} for '${e}':`,t))}async emitRegistryChanged(e,t){this.revision+=1,await this.bus.emit(v.registryChanged,{revision:this.revision,reason:e,toolsetName:t})}async execute(e,t,n){let r=this.tools.get(e);if(!r)return D(E.TOOL_NOT_FOUND,`Tool '${e}' not found`);let i=Ae(n);if(!i.success)return i;let{tool:a,toolsetName:o}=r,s=await this.checkPolicy(o,e,i.data.adapterId,i.data.adapterName);if(s)return s;let c=Ne(),l=Date.now();await this.bus.emit(v.started,{toolName:e,toolsetName:o,executionId:c,timestamp:l});try{let r=a.inputSchema.safeParse(t);if(!r.success){let t=D(E.VALIDATION_FAILED,`Input validation failed`,{issues:r.error.issues});return await this.bus.emit(v.error,{toolName:e,toolsetName:o,executionId:c,timestamp:Date.now(),error:t.error}),t}let s=await this.buildExecutionContext(n,i.data),u=await a.execute(r.data,s);return u.success?await this.bus.emit(v.completed,{toolName:e,toolsetName:o,executionId:c,timestamp:Date.now(),durationMs:Date.now()-l}):await this.bus.emit(v.error,{toolName:e,toolsetName:o,executionId:c,timestamp:Date.now(),error:u.error}),u}catch(t){let n=we(t);return await this.bus.emit(v.error,{toolName:e,toolsetName:o,executionId:c,timestamp:Date.now(),error:n.error}),n}}async buildExecutionContext(e,t){let n=e?.contextOverrides?.constraints;if(this.fileAccessRuleProvider){let t=e?.contextOverrides?.cwd??process.cwd(),r=je(n),i=await this.fileAccessRuleProvider(t,r);n={...n,[Se]:i}}let r=pe({...e?.contextOverrides,constraints:n}),i=e?.contextOverrides;return{...r,bus:this.bus,sessionId:i?.sessionId,agentId:i?.agentId,adapterId:t.adapterId,adapterName:t.adapterName,turnId:i?.turnId,turnContext:i?.turnContext,toolCallId:i?.toolCallId}}async checkPolicy(e,t,n,r){if(!this.policyProvider)return null;let i=await this.policyProvider(e);if(!i)return null;if(i.disabledTools?.includes(t))return D(E.PERMISSION_DENIED,`Tool '${t}' is disabled`,{toolsetName:e,toolName:t});if(i.allowedAdapters&&i.allowedAdapters.length>0){let t=r??n;if(!t||!i.allowedAdapters.includes(t))return D(E.PERMISSION_DENIED,`Adapter not allowed for toolset '${e}'`,{toolsetName:e,adapterId:n,adapterName:r,allowedAdapters:i.allowedAdapters})}return null}listTools(e){let t=[];for(let[,n]of this.tools){if(e?.toolsetName&&n.toolsetName!==e.toolsetName)continue;let{$schema:r,...i}=m.toJSONSchema(n.tool.inputSchema);t.push({name:n.tool.metadata.name,description:n.tool.metadata.description,toolsetName:n.toolsetName,annotations:n.tool.metadata.annotations,inputSchema:i})}return t}listToolsets(){let e=[];for(let[,t]of this.toolsets){let n={name:t.metadata.name,description:t.metadata.description,version:t.metadata.version,toolCount:Object.keys(t.tools).length};if(t.configSchema){let{$schema:e,...r}=m.toJSONSchema(t.configSchema);n.configSchema=r}e.push(n)}return e}async listToolsWithToolsets(e){let t=this.listTools(e),n=this.listToolsets(),r=e?.toolsetName?n.filter(t=>t.name===e.toolsetName):n,i=e?.adapterName??e?.adapterId;if(this.policyProvider&&i){let{filteredTools:e,filteredToolsets:n}=await Me(t,r,i,this.policyProvider);return{tools:e,toolsets:n}}return{tools:t,toolsets:r}}getTool(e){return this.tools.get(e)?.tool}getToolset(e){return this.toolsets.get(e)}dispose(){for(let e of this.cleanupHandlers)e();this.cleanupHandlers.length=0}destroy(){this.dispose()}},k=class extends fe{code;suggestions;constructor(e,t,n){super(e),this.code=t,this.suggestions=n}},A=class{deps;constructor(e){this.deps=e}async resolve(e,t){switch(e.kind){case`bare`:return this.resolveBare(e.model);case`qualified`:return this.resolveQualified(e.segment1,e.segment2,e.model)}}async resolveBare(e){let t=await this.deps.resolveDefaultModelTarget(e);switch(t.kind){case`resolved`:return{kind:`adapter`,adapterName:t.target.adapterName,providerConfigId:t.target.providerConfigId,model:t.target.model};case`ambiguous`:throw new k(`Model "${e}" is available via multiple providers. Use a qualified reference to select one.`,`ambiguous-model`,t.matches.map(e=>e.qualifiedName));case`not-found`:throw new k(`Model "${e}" was not found in any enabled adapter's registry.`,`model-not-found`)}}async resolveQualified(e,t,n){return t===void 0?this.resolveQualifiedOneSegment(e,n):this.resolveQualifiedTwoSegments(e,t,n)}async resolveQualifiedTwoSegments(e,t,n){let r=await this.deps.listEnabledAdapterNames();if(!r.includes(e))throw new k(`Adapter "${e}" is not enabled or does not exist.`,`adapter-not-found`);return{kind:`adapter`,adapterName:e,providerConfigId:await this.resolveProviderSegment(t,e,r),model:n}}async resolveQualifiedOneSegment(e,t){let n=await this.deps.listEnabledAdapterNames();if(n.includes(e)){let n=await this.deps.getDefaultBinding(e);if(!n)throw new k(`Adapter "${e}" has no enabled provider binding. Configure or enable a provider binding first.`,`no-binding`);return{kind:`adapter`,adapterName:e,providerConfigId:n.providerConfigId,model:t}}let r=await this.deps.findProviderConfigByName(e);if(r)return{kind:`adapter`,adapterName:(await this.pickBindingForConfig(r.id,n)).adapterName,providerConfigId:r.id,model:t};let i=await this.deps.findProviderDefinition(e,n);if(i){let r=await this.deps.findDefaultConfigForDefinition(i.id);if(!r)throw new k(`Provider definition "${e}" exists but has no configured provider config. Create a provider config first.`,`provider-not-found`);return{kind:`adapter`,adapterName:(await this.pickBindingForConfig(r.id,n)).adapterName,providerConfigId:r.id,model:t}}throw new k(`"${e}" does not match any enabled adapter name, provider config name, or provider definition ID.`,`adapter-not-found`)}async resolveProviderSegment(e,t,n){let r=await this.deps.findProviderConfigByName(e);if(r)return await this.requireBindingForAdapterAndConfig(t,r.id,e),r.id;let i=await this.deps.findProviderDefinition(e,n);if(i){let n=await this.deps.findConfigForDefinitionAndAdapter(i.id,t);if(!n)throw new k(`Provider definition "${e}" has no enabled config bound to adapter "${t}". Create a provider config and binding first.`,`no-binding`);return n.id}throw new k(`"${e}" does not match any provider config name or provider definition ID.`,`provider-not-found`)}async requireBindingForAdapterAndConfig(e,t,n){if(!(await this.deps.listBindingsForConfig(t)).some(t=>t.adapterName===e))throw new k(`No binding exists between adapter "${e}" and provider "${n}". Create a binding first.`,`no-binding`)}async pickBindingForConfig(e,t){let n=(await this.deps.listBindingsForConfig(e)).filter(e=>t.includes(e.adapterName));if(n.length===0)throw new k(`Provider config "${e}" has no bindings to enabled adapters. Bind it to an enabled adapter first.`,`no-binding`);return n.find(e=>e.isDefault)??n[0]}},j=class e extends x{constructor(e=h){super(e)}async onInit(){await this.bus.request(d.ensureReady,{});let e=new A(this.createDeps());this.registerHandler(he.resolve,async t=>{let n=await e.resolve(t.payload.parsed,t.payload.context);t.setResult(n)})}createDeps(){let e=this.bus,t=async()=>{let{adapters:t}=await e.request(d.listAdapters,{});return t.filter(e=>e.enabled).map(e=>e.name)},n=async t=>{let[n,r]=await Promise.all([e.request(d.getDefaultBinding,{adapterName:t}),this.listEnabledProviderConfigIds()]);if(n.binding&&r.has(n.binding.providerConfigId))return n.binding;let{bindings:i}=await e.request(d.listBindings,{adapterName:t}),a=i.filter(e=>r.has(e.providerConfigId));return a.find(e=>e.isDefault)??a[0]},r=async t=>{let{definitions:n}=await e.request(d.getProviderDefinitionsByAdapter,{adapterName:t});return n},i=async t=>{let{bindings:n}=await e.request(d.listBindingsByConfig,{providerConfigId:t});return n},a=async t=>{let{configs:n}=await e.request(d.listProviderConfigs,{enabled:!0}),r=w(t);return n.find(e=>w(e.name)===r)},o=this.buildFindProviderDefinition(t,r),s=async t=>{let{configs:n}=await e.request(d.listProviderConfigsByDefinition,{definitionId:t}),r=n.filter(e=>e.enabled);return r.find(e=>e.isDefault)??r[0]},c=async(t,n)=>{let{config:r}=await e.request(d.findConfigForDefinitionAndAdapter,{definitionId:t,adapterName:n});return r?{id:r.id}:void 0};return{listEnabledAdapterNames:t,getDefaultBinding:n,findProviderConfigByName:a,findProviderDefinition:o,listBindingsForConfig:i,findDefaultConfigForDefinition:s,findConfigForDefinitionAndAdapter:c,resolveDefaultModelTarget:this.buildResolveDefaultModelTarget(t,r,c)}}buildFindProviderDefinition(e,t){return async(n,r)=>{let i=r??await e();for(let e of i){let r=(await t(e)).find(e=>e.id===n);if(r)return r}}}buildResolveDefaultModelTarget(t,n,r){let i=this.bus;return async a=>{let o=await t(),s=await Promise.all(o.map(async e=>({adapterName:e,definitions:await n(e)}))),c=Array.from(new Set(s.flatMap(({definitions:e})=>e.map(e=>e.id))));if(c.length===0)return{kind:`not-found`};let{matches:l}=await i.request(le.checkModelInProviders,{providerIds:c,model:a}),u=(await Promise.all(s.map(({adapterName:e,definitions:t})=>this.collectAdapterCandidates(e,t,a,l,r)))).flat();return e.buildResolution(u)}}async collectAdapterCandidates(e,t,n,r,i){let a=t.filter(e=>e.id in r),o=await Promise.all(a.map(t=>i(t.id,e)));return a.flatMap((t,r)=>{let i=o[r];return i?[{adapterName:e,definitionId:t.id,providerConfigId:i.id,qualifiedName:`${e}/${t.id}::${n}`,model:n}]:[]})}static buildResolution(e){let t=Array.from(new Map(e.map(e=>[this.routeKey(e),e])).values());if(t.length===0)return{kind:`not-found`};if(t.length>1)return{kind:`ambiguous`,matches:t.map(({adapterName:e,definitionId:t,qualifiedName:n})=>({adapterName:e,definitionId:t,qualifiedName:n}))};let[n]=t;return{kind:`resolved`,target:{adapterName:n.adapterName,providerConfigId:n.providerConfigId,definitionId:n.definitionId,model:n.model}}}static routeKey(e){return`${e.adapterName}\0${e.definitionId}\0${e.providerConfigId}`}async listEnabledProviderConfigIds(){let{configs:e}=await this.bus.request(d.listProviderConfigs,{enabled:!0});return new Set(e.map(e=>e.id))}};const M={name:`makaio.canonical-model`,displayName:`Canonical Model`,version:`0.1.0`,critical:!1,create:e=>new j(e.bus)};function Pe(e){return async t=>{let n=await Fe(e,t);if(!n)return{handled:!1,sessionId:null,clientAccountId:null,changed:!1};let{sessionId:r}=n,{observation:i,accountObserveRequest:a}=Ie(t),o=await e.requestOptional(T.account.observe,a);if(!o.handled)return{handled:!1,sessionId:r,clientAccountId:null,changed:!1};let{clientAccountId:s}=o.data;return{handled:!0,sessionId:r,clientAccountId:s,changed:await Ue(e,r,i,s)}}}async function Fe(t,n){switch(n.locator.kind){case`session`:{let{session:r}=await t.request(e.get,{sessionId:n.locator.sessionId});return r?{sessionId:r.sessionId,session:r}:null}case`adapter-session`:{let{session:r}=await t.request(e.getByAdapterSessionId,{adapterSessionId:n.locator.adapterSessionId});return r?{sessionId:r.sessionId,session:r}:null}case`both`:{let[{session:r},{session:i}]=await Promise.all([t.request(e.get,{sessionId:n.locator.sessionId}),t.request(e.getByAdapterSessionId,{adapterSessionId:n.locator.adapterSessionId})]);if(!r&&!i)return null;if(!r||!i)throw Error(`Session locator mismatch: sessionId "${n.locator.sessionId}" and adapterSessionId "${n.locator.adapterSessionId}" must both resolve the same session`);if(r.sessionId!==i.sessionId)throw Error(`Session locator mismatch: sessionId "${n.locator.sessionId}" and adapterSessionId "${n.locator.adapterSessionId}" resolve to different sessions`);return{sessionId:r.sessionId,session:r}}}}function Ie(e){let t={clientId:e.clientId,source:e.source,kind:e.kind,observedAt:e.observedAt,payload:Ve(e.payload)};return{observation:t,accountObserveRequest:Le(t)}}function Le(e){let t=e.payload,n=Re(t),r=ze(t);if(r.length>0)return{clientId:e.clientId,observedAt:e.observedAt,displayLabel:Be(t,n),identifiers:r};throw Error(`client.session.account.observe for "${e.clientId}" requires canonical client account identifiers`)}function Re(e){return He(e.accountInfo)??e}function ze(e){let t=e.identifiers;if(!Array.isArray(t))return[];try{return m.array(be).min(1).parse(t)}catch(e){throw Error(`client.session.account.observe received malformed canonical client account identifiers`,{cause:e})}}function Be(e,t){return N(e.displayLabel)??N(t.displayLabel)??N(t.email)??N(t.label)}function Ve(e){return structuredClone(e)}function He(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function N(e){return typeof e==`string`&&e.trim().length>0?e.trim():void 0}async function Ue(t,n,r,i){let a=await t.request(e.update,{sessionId:n,clientId:r.clientId,clientAccountId:i,lastClientIdentityObservation:r});if(!a.success)throw Error(`Failed to update session "${n}" with client account linkage`);return a.clientAccountChanged??!1}const We=b(`session-storage`).name;var Ge=class extends x{constructor(e=h){super(e)}onInit(){let e=Pe(this.bus);this.registerHandler(T.session.account.observe,async t=>{t.setResult(await e(xe.request.parse(t.payload)))})}};const Ke={name:`makaio.session-client-account-linking`,displayName:`Session Client Account Linking`,version:`0.1.0`,dependencies:[y(We),y(`makaio.clients-core`)],critical:!1,create:e=>new Ge(e.bus)},qe={name:`framework-shell`,displayName:`Shell`,version:`0.1.0`,surface:`interactive`,windows:[{id:`main`,style:`utility`,width:1e3,height:700,singleton:!0}]};async function Je(e){let{harnesses:t}=await e.request(p.list,{}),n=new Set(t.map(e=>e.id));for(let t of ge){if(n.has(t.id))continue;let r={...t};await e.request(p.set,{harness:r})}}function P(e){return{id:e.id,name:e.name,description:e.description??void 0,adapterName:e.adapterName??void 0,clientId:e.clientId??void 0,env:e.env??void 0,credentials:e.credentials??void 0,cwd:e.cwd??void 0,approvalPolicy:g.parse(e.approvalPolicy),nativeTools:{enabled:e.nativeToolsEnabled,disabled:e.nativeToolsDisabled},registryTools:{enabled:e.registryToolsEnabled,disabled:e.registryToolsDisabled},skills:e.skillsEnabled||e.skillsDisabled?{enabled:e.skillsEnabled??[],disabled:e.skillsDisabled??[]}:void 0,toolCapabilityMap:e.toolCapabilityMap?m.record(m.string(),m.array(ve)).parse(e.toolCapabilityMap):void 0,capabilityOverrides:e.capabilityOverrides?m.record(m.string(),g).parse(e.capabilityOverrides):void 0,toolApprovalOverrides:e.toolApprovalOverrides?m.record(m.string(),g).parse(e.toolApprovalOverrides):void 0,isDefault:e.isDefault,enabled:e.enabled,createdAt:e.createdAt,updatedAt:e.updatedAt}}function Ye(e){return{id:e.id,name:e.name,description:e.description??null,adapterName:e.adapterName??null,clientId:e.clientId??null,env:e.env??null,credentials:e.credentials??null,cwd:e.cwd??null,approvalPolicy:e.approvalPolicy,nativeToolsEnabled:e.nativeTools.enabled,nativeToolsDisabled:e.nativeTools.disabled,registryToolsEnabled:e.registryTools.enabled,registryToolsDisabled:e.registryTools.disabled,skillsEnabled:e.skills?.enabled??null,skillsDisabled:e.skills?.disabled??null,toolCapabilityMap:e.toolCapabilityMap??null,capabilityOverrides:e.capabilityOverrides??null,toolApprovalOverrides:e.toolApprovalOverrides??null,isDefault:e.isDefault,enabled:e.enabled}}const Xe=Oe({table:f,subjects:{get:p.get,set:p.set,delete:p.delete},idField:`id`,singularKey:`harness`,mapper:P,toDbValues:Ye,lifecycle:{created:_.created,updated:_.updated,deleted:_.deleted}}),Ze=ke({table:f,subject:p.list,pluralKey:`harnesses`,mapper:P,buildPredicates:(e,t)=>{let n=[];return e.adapterName&&n.push(S(t.adapterName,e.adapterName)),e.clientId&&n.push(S(t.clientId,e.clientId)),e.name&&n.push(S(t.name,e.name)),n}});function F(e,t,n){let r=Xe(e,t),i=Ze(e,t);return()=>{r(),i()}}function I(e,t,n){return e??t??n}var Qe=class extends x{static storage={drizzle:F};constructor(e=h){super(e)}async onInit(){await Je(this.bus),this.registerHandlers()}registerHandlers(){this.registerHandler(_.get,async e=>{let t=await this.loadHarness(e.payload);if(!t)throw Error(`Harness not found`);e.setResult(t)}),this.registerHandler(_.list,async e=>{let{harnesses:t}=await this.bus.request(p.list,e.payload);e.setResult({harnesses:t})}),this.registerHandler(_.set,async e=>{let t=await this.upsertHarness(e.payload);e.setResult({id:t})}),this.registerHandler(_.delete,async e=>{let{deleted:t}=await this.bus.request(p.delete,{id:e.payload.id});e.setResult({success:t})}),this.registerHandler(_.getDefault,async e=>{let t=await this.getDefaultHarness(e.payload.adapterName,e.payload.clientId);e.setResult(t)}),this.registerHandler(_.resolve,async e=>{let{adapterName:t,clientId:n,personaHarnessId:r,profileHarnessId:i}=e.payload;if(r){let i=await this.resolveAndValidateHarness(r,t,`persona`,n);e.setResult(i);return}if(i){let r=await this.resolveAndValidateHarness(i,t,`profile`,n);e.setResult(r);return}let a=await this.getDefaultHarness(t,n);e.setResult(a)}),this.registerHandler(_.getSchema,({setResult:e})=>{let{$schema:t,...n}=m.toJSONSchema(_e);e({schema:n,uiConfig:{editMode:`fullPage`,hiddenFields:[`isDefault`]}})})}async upsertHarness(e){let t=await this.resolveHarnessId(e.name,e.adapterName,e.clientId),n=await this.loadHarness({id:t,adapterName:e.adapterName,clientId:e.clientId}),r=this.mergeHarnessPayload(t,e,n);return r.adapterName&&await this.validateNativeTools(r.adapterName,r.nativeTools),await this.bus.request(p.set,{harness:r}),t}mergeHarnessPayload(e,t,n){let r={enabled:[],disabled:[]};return{id:e,name:t.name,description:I(t.description,n?.description,void 0),adapterName:t.adapterName,clientId:I(t.clientId,n?.clientId,void 0),env:I(t.env,n?.env,void 0),credentials:I(t.credentials,n?.credentials,void 0),cwd:I(t.cwd,n?.cwd,void 0),approvalPolicy:I(t.approvalPolicy,n?.approvalPolicy,`always-ask`),nativeTools:I(t.nativeTools,n?.nativeTools,r),registryTools:I(t.registryTools,n?.registryTools,r),skills:I(t.skills,n?.skills,void 0),toolCapabilityMap:t.toolCapabilityMap??n?.toolCapabilityMap,capabilityOverrides:t.capabilityOverrides??n?.capabilityOverrides,toolApprovalOverrides:t.toolApprovalOverrides??n?.toolApprovalOverrides,isDefault:I(t.isDefault,n?.isDefault,!1),enabled:I(t.enabled,n?.enabled,!0)}}async resolveHarnessId(e,t,n){let r=n??t,{harnesses:i}=await this.bus.request(p.list,{name:e}),a=i.find(t=>t.name===e&&(t.clientId??t.adapterName)===r);if(a)return a.id;let o=i.find(t=>t.name===e&&(t.clientId??t.adapterName)!==r);if(o){let t=o.clientId?`client '${o.clientId}'`:`adapter '${o.adapterName}'`;throw Error(`Harness "${e}" already exists with scope ${t}; cannot change scope to ${r??`(none)`}`)}return this.createStableHarnessId(e,r)}async loadHarness(e){if(e.id){let{harness:t}=await this.bus.request(p.get,{id:e.id});return t&&(!e.adapterName||t.adapterName===e.adapterName)&&(!e.clientId||t.clientId===e.clientId)?t:null}if(!e.name)return null;let{harnesses:t}=await this.bus.request(p.list,{name:e.name,adapterName:e.adapterName,clientId:e.clientId});return e.clientId?t.find(t=>t.clientId===e.clientId)??null:e.adapterName?t.find(t=>t.adapterName===e.adapterName)??null:t[0]??null}async getDefaultHarness(e,t){if(t){let{harnesses:e}=await this.bus.request(p.list,{clientId:t}),n=e.find(e=>e.isDefault&&e.enabled);if(n)return n;let r=e.find(e=>e.enabled);if(r)return r}if(e){let{harnesses:t}=await this.bus.request(p.list,{adapterName:e}),n=t.find(e=>e.isDefault&&e.enabled);if(n)return n;let r=t.find(e=>e.enabled);if(r)return r}let n=t?e?`client '${t}' or adapter '${e}'`:`client '${t}'`:`adapter '${e}'`;throw Error(`No harness available for ${n}`)}assertHarnessAdapterMatch(e,t,n,r){if(e.adapterName&&t&&e.adapterName!==t)throw Error(`Resolved ${n} harness adapter mismatch: expected "${t}", got "${e.adapterName}"`);if(e.clientId&&r&&e.clientId!==r)throw Error(`Resolved ${n} harness client mismatch: expected "${r}", got "${e.clientId}"`)}assertHarnessEnabled(e,t){if(!e.enabled)throw Error(`Resolved ${t} harness is disabled: ${e.id}`)}async validateNativeTools(e,t){let n=await this.bus.requestOptional(me.getCapabilities,{adapterName:e});if(!n.handled)return;let r=new Set(n.data.nativeTools),i=[...t.enabled,...t.disabled].filter(e=>!r.has(e));if(i.length>0)throw Error(`Tool '${i[0]}' not found in adapter '${e}' native tools. Declared tools: ${[...r].join(`, `)}`)}createStableHarnessId(e,t){return`harness-${De(`sha256`).update(`${t??``}\0${e}`).digest(`hex`).slice(0,24)}`}async resolveAndValidateHarness(e,t,n,r){let i=await this.loadHarness({id:e});if(!i)throw Error(`${n===`persona`?`Persona`:`Profile`} harness not found: ${e}`);return this.assertHarnessAdapterMatch(i,t,n,r),this.assertHarnessEnabled(i,n),i}};const $e={name:`makaio.harness`,displayName:`Harness`,version:`0.1.0`,critical:!0,storage:{registerHandlers:C(F)},create:e=>new Qe(e.bus)},L=b(`session-storage`),R=b(`session-bridge`),z=b(`session`),B=b(`session-orchestrator`),V=b(`tool-registry`),H=b(`tool-approval`),U=b(`tray-menu`),W=b(`capability`),G=b(`model-registry`),K={name:L.name,displayName:`Session Storage`,version:`0.1.0`,critical:!0,storage:{registerHandlers:C((e,n,a)=>{let s=[],d=e=>{for(let t=s.length-1;t>=0;--t)try{s[t]?.()}catch(t){console.warn(`[sessionStoragePackage] cleanup failed during ${e}:`,t)}s.length=0};try{s.push(oe(e,n,a)),s.push(i(e,n,a)),s.push(re(e,n,a)),s.push(r(e,n,a)),s.push(t(e,n,a)),s.push(o(e,n,a)),s.push(ee(e,n,a)),s.push(c(e,n)),s.push(u(e,n,a)),s.push(l(e,n)),s.push(ie(e)),s.push(te(e)),s.push(ae(e)),s.push(ne(e))}catch(e){throw d(`rollback`),e}return()=>{d(`shutdown`)}})}},q={name:R.name,displayName:`Session Bridge`,version:`0.1.0`,dependencies:[y(L.name)],critical:!0,create:e=>new a(e.bus)},J={name:z.name,displayName:`Session`,version:`0.1.0`,dependencies:[y(R.name)],critical:!0,create:e=>new s(e.bus)},Y={name:B.name,displayName:`Session Orchestrator`,version:`0.1.0`,dependencies:[y(z.name),y(M.name)],critical:!0,runtimeOwnership:{sessionOrchestrator:!0},create:e=>new n(e.bus,e.machineId)},X={name:V.name,displayName:`Tool Registry`,version:`0.1.0`,critical:!0,create:e=>new O({bus:e.bus})},Z={name:H.name,displayName:`Tool Approval`,version:`0.1.0`,dependencies:[y(V.name)],critical:!0,create:e=>new ue(e.bus)},Q={name:U.name,displayName:`Tray Menu`,version:`0.1.0`,critical:!0,create:e=>new de(e.bus)},$={name:W.name,displayName:`Capability`,version:`0.1.0`,critical:!0,create:e=>new se(e.bus)};function et(e){return{name:G.name,displayName:`Model Registry`,version:`0.1.0`,critical:!0,create:t=>new ce({bus:t.bus,fetcher:e})}}const tt=[K,q,Ke,J,Y,X,Z,Q,$,$e,M,qe];function nt(){let e=new Map;return{filter:e=>!!e.tools?.createToolsets,async processActivated(t,n,r){let i=r.getService(V);if(!i)throw Error(`ToolRegistry is not available. Ensure toolRegistryPackage is included in the composition root.`);let a=n.tools.createToolsets(r),o=[];try{for(let e of a)await i.register(e),o.push(()=>i.deregister(e.metadata.name))}catch(e){for(let e=o.length-1;e>=0;--e)try{await o[e]()}catch(e){console.error(`[ToolContributionProcessor] Rollback error for "${t}":`,e)}throw e}e.set(t,o)},async processStopped(t){let n=e.get(t);if(n){for(let e=n.length-1;e>=0;--e)try{await n[e]()}catch(e){console.error(`[ToolContributionProcessor] Deregister error for "${t}":`,e)}e.delete(t)}}}}export{M as C,O as D,k as E,Q as S,A as T,Y as _,G as a,Z as b,L as c,V as d,U as f,q as g,tt as h,W as i,z as l,et as m,Te as n,R as o,$ as p,nt as r,B as s,Ce as t,H as u,J as v,j as w,X as x,K as y};