@makaio/framework 1.0.0-dev-1781382091626 → 1.0.0-dev-1781442380278

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 (379) hide show
  1. package/dist/.makaio-build.json +2 -2
  2. package/dist/{account-identity-CgzOqnVm.mjs → account-identity-D-9gunfD.mjs} +1 -1
  3. package/dist/adapter-BH1X0THX.mjs +1 -0
  4. package/dist/adapters/config/index.d.mts +1 -1
  5. package/dist/adapters/config/index.mjs +1 -1
  6. package/dist/adapters/index.d.mts +3 -3
  7. package/dist/adapters/index.mjs +1 -1
  8. package/dist/adapters/node.d.mts +1 -1
  9. package/dist/adapters/node.mjs +1 -1
  10. package/dist/bus/index.d.mts +21 -20
  11. package/dist/bus/index.mjs +1 -1
  12. package/dist/canonical-model-BNb0IFWC.mjs +1 -0
  13. package/dist/{client-BBJf1mVA.mjs → client-D24ebgGH.mjs} +1 -1
  14. package/dist/compression-vRUOO-28.mjs +1 -0
  15. package/dist/contracts/adapter/index.d.mts +2 -2
  16. package/dist/contracts/adapter/index.mjs +1 -1
  17. package/dist/contracts/adapter/schemas/session-lineage.d.mts +1 -1
  18. package/dist/contracts/artifact/index.d.mts +1 -1
  19. package/dist/contracts/canonical-model/index.d.mts +2 -0
  20. package/dist/contracts/canonical-model/index.mjs +1 -0
  21. package/dist/contracts/client/index.d.mts +2 -2
  22. package/dist/contracts/client/index.mjs +1 -1
  23. package/dist/contracts/common/index.d.mts +1 -1
  24. package/dist/contracts/config/index.d.mts +1 -1
  25. package/dist/contracts/config/index.mjs +1 -1
  26. package/dist/contracts/extension/index.d.mts +3 -3
  27. package/dist/contracts/extension/index.mjs +1 -1
  28. package/dist/contracts/facet/index.d.mts +1 -1
  29. package/dist/contracts/facet/index.mjs +1 -1
  30. package/dist/contracts/harness/index.d.mts +1 -1
  31. package/dist/contracts/harness/index.mjs +1 -1
  32. package/dist/contracts/host/index.d.mts +1 -1
  33. package/dist/contracts/host/index.mjs +1 -1
  34. package/dist/contracts/index.d.mts +784 -1221
  35. package/dist/contracts/index.mjs +1 -1
  36. package/dist/contracts/materialization/index.d.mts +3 -3
  37. package/dist/contracts/materialization/index.mjs +1 -1
  38. package/dist/contracts/model-registry/index.d.mts +1 -1
  39. package/dist/contracts/model-registry/index.mjs +1 -1
  40. package/dist/contracts/native-session-supervisor/index.d.mts +1 -1
  41. package/dist/contracts/native-session-supervisor/index.mjs +1 -1
  42. package/dist/contracts/platform/index.d.mts +1 -1
  43. package/dist/contracts/platform/index.mjs +1 -1
  44. package/dist/contracts/provider/index.d.mts +2 -2
  45. package/dist/contracts/session/index.d.mts +2 -2
  46. package/dist/contracts/session/index.mjs +1 -1
  47. package/dist/contracts/shared/index.d.mts +1 -1
  48. package/dist/contracts/skill/index.d.mts +1 -1
  49. package/dist/contracts/skill/index.mjs +1 -1
  50. package/dist/contracts/telemetry/index.d.mts +1 -1
  51. package/dist/contracts/telemetry/index.mjs +1 -1
  52. package/dist/contracts/timeout/index.d.mts +1 -1
  53. package/dist/contracts/toast/index.mjs +1 -1
  54. package/dist/contracts/variant/index.d.mts +1 -1
  55. package/dist/contracts/variant/index.mjs +1 -1
  56. package/dist/{definition-DWWzV-k0.d.mts → definition-CZcVOhXZ.d.mts} +1 -1
  57. package/dist/{detached-extension-handle-Diiwgm13.mjs → detached-extension-handle-BYxNmLfv.mjs} +1 -1
  58. package/dist/{extension-ZBN4BGre.mjs → extension-CTkoi8MV.mjs} +1 -1
  59. package/dist/{extension-DfNcE0zm.mjs → extension-DEUfzXcg.mjs} +1 -1
  60. package/dist/{filesystem-service-BjfrUmGS.mjs → filesystem-service-T8JOIWeP.mjs} +1 -1
  61. package/dist/git/index.mjs +1 -1
  62. package/dist/{globby-BIH65cbN.mjs → globby-Bos1vjKj.mjs} +1 -1
  63. package/dist/handlers-Cpy9Q8ho.mjs +41 -0
  64. package/dist/{harness-B8E_wRwa.mjs → harness-HEpELa_v.mjs} +1 -1
  65. package/dist/{index-Bw_zL7Rs.d.mts → index-6QvT0ljq.d.mts} +1 -1
  66. package/dist/{index-BT5tNA3Y.d.mts → index-B3mq3Qjf.d.mts} +1 -1
  67. package/dist/{index-B8tAGwHR.d.mts → index-BF84QInS.d.mts} +1130 -389
  68. package/dist/{index-CKP_uNGT.d.mts → index-BQ8H7cvY.d.mts} +16 -16
  69. package/dist/{index-C3zfJg6s.d.mts → index-BSFmBEDL.d.mts} +1 -1
  70. package/dist/{index-Abq3I8wg.d.mts → index-Cj3XCjXZ.d.mts} +341 -338
  71. package/dist/{index-B1Rz7oUy.d.mts → index-DHVoVh-j.d.mts} +8 -8
  72. package/dist/{index-B2xbnMZe.d.mts → index-DLPjliGd.d.mts} +1 -1
  73. package/dist/index-DUsm-DeE.d.mts +859 -0
  74. package/dist/{index-DQppnGdC.d.mts → index-DigeEyrf.d.mts} +23 -20
  75. package/dist/{index-dAjtejnc.d.mts → index-DvETyI0_.d.mts} +1 -1
  76. package/dist/{index-EsXVjKsv.d.mts → index-DyqZej9j.d.mts} +8 -8
  77. package/dist/{index-COwW_2Gb.d.mts → index-HiAth5G0.d.mts} +15 -15
  78. package/dist/{index-DW8EiMJ9.d.mts → index-LrZlZUvQ.d.mts} +12 -12
  79. package/dist/{index-wP87FKTQ2.d.mts → index-oUqyVvsD.d.mts} +3 -3
  80. package/dist/kernel/cli/index.d.mts +2 -2
  81. package/dist/kernel/cli/index.mjs +1 -1
  82. package/dist/kernel/cli/register.d.mts +1 -1
  83. package/dist/kernel/cli/register.mjs +1 -1
  84. package/dist/kernel/cli/schemas.mjs +1 -1
  85. package/dist/kernel/extension/index.d.mts +1 -1
  86. package/dist/kernel/extension/index.mjs +1 -1
  87. package/dist/kernel/index.d.mts +5 -5
  88. package/dist/kernel/index.mjs +1 -1
  89. package/dist/kernel/namespace/index.d.mts +1 -1
  90. package/dist/kernel/namespace/index.mjs +1 -1
  91. package/dist/kernel/observability/index.d.mts +1 -1
  92. package/dist/kernel/observability/index.mjs +1 -1
  93. package/dist/kernel/providers/index.d.mts +1 -1
  94. package/dist/kernel/providers/index.mjs +1 -1
  95. package/dist/kernel/window/index.d.mts +1 -1
  96. package/dist/kernel/window/index.mjs +1 -1
  97. package/dist/{lib-Cq5R6Tx9.mjs → lib-DkLlhp9Z.mjs} +1 -1
  98. package/dist/{lib-nlcl5kRW.mjs → lib-jOuIcSs9.mjs} +1 -1
  99. package/dist/{load-extensions-D9nbDIiW.d.mts → load-extensions-CQqw0Smr.d.mts} +1 -1
  100. package/dist/{load-extensions-wELQ4BBN.mjs → load-extensions-D-DyzN4j.mjs} +1 -1
  101. package/dist/mcp-http-server/index.mjs +1 -1
  102. package/dist/{namespace-BPlAuhc_.d.mts → namespace-B1Bldc48.d.mts} +117 -9
  103. package/dist/{namespace-Ds6HkJEU.d.mts → namespace-BXuuv8L9.d.mts} +154 -144
  104. package/dist/{namespace-Dfq6MDN9.mjs → namespace-BxrHvS5c.mjs} +1 -1
  105. package/dist/namespace-CH_NWUKW.mjs +1 -0
  106. package/dist/{namespace-5BLWcC3Q.d.mts → namespace-DM3TSh_y.d.mts} +58 -58
  107. package/dist/{namespace--ROWLToE.d.mts → namespace-Q-z7Lr2f.d.mts} +4 -4
  108. package/dist/{native-session-supervisor-DeKpxhWO.mjs → native-session-supervisor-DbrqcFq9.mjs} +1 -1
  109. package/dist/node/bus-server/index.d.mts +1 -1
  110. package/dist/node/bus-server/index.mjs +1 -1
  111. package/dist/node/bus-server/server-lifecycle.d.mts +1 -1
  112. package/dist/node/bus-server/server-lifecycle.mjs +1 -1
  113. package/dist/{orchestrator-shared-BKFXaKPL.mjs → orchestrator-shared-yFP8e7d5.mjs} +1 -1
  114. package/dist/{package-DzN_jdqd.mjs → package-DMoFY63f.mjs} +1 -1
  115. package/dist/package.json +1 -1
  116. package/dist/primitive-runtime-DWbV7f_r.mjs +1 -0
  117. package/dist/{profile-D39-Zy_W.mjs → profile-r4G32bCH.mjs} +1 -1
  118. package/dist/{provider-context-wp4VSJFI.mjs → provider-context-Ds6GNYnE.mjs} +1 -1
  119. package/dist/rules/index.d.mts +1 -1
  120. package/dist/rules/index.mjs +1 -1
  121. package/dist/rules/schemas.d.mts +1 -1
  122. package/dist/runtime-bun/index.mjs +1 -1
  123. package/dist/runtime-node/extension-discovery.d.mts +1 -1
  124. package/dist/runtime-node/extension-validation.d.mts +1 -1
  125. package/dist/runtime-node/extension-validation.mjs +1 -1
  126. package/dist/runtime-node/index.d.mts +3 -3
  127. package/dist/runtime-node/index.mjs +24 -26
  128. package/dist/runtime-node/makaio-config.d.mts +1 -1
  129. package/dist/runtime-node/makaio-config.mjs +1 -1
  130. package/dist/runtime-node/workflow-worker/index.d.mts +1 -1
  131. package/dist/runtime-node/workflow-worker/index.mjs +1 -1
  132. package/dist/runtime-node/workflow-worker/worker-entry.mjs +1 -1
  133. package/dist/{schema-cNoxaiT0.d.mts → schema-BKdn_bdY.d.mts} +3 -3
  134. package/dist/{schema-C3TgjrsV.mjs → schema-atatXwNg.mjs} +1 -1
  135. package/dist/{schemas-on3_N5HP.d.mts → schemas-CyEdMtnQ.d.mts} +154 -144
  136. package/dist/schemas-CzvG8xq7.mjs +1 -0
  137. package/dist/{schemas-DsyYsfVN2.d.mts → schemas-DvjQHkmw2.d.mts} +12 -12
  138. package/dist/services/adapter-runtime/index.d.mts +3 -3
  139. package/dist/services/adapter-runtime/index.mjs +1 -1
  140. package/dist/services/adapter-runtime/namespace.d.mts +1 -1
  141. package/dist/services/adapter-runtime/schemas.d.mts +1 -1
  142. package/dist/services/adapter-subsystem/index.d.mts +2 -2
  143. package/dist/services/adapter-subsystem/index.mjs +1 -1
  144. package/dist/services/adapter-subsystem/namespace.d.mts +1 -1
  145. package/dist/services/adapter-subsystem/namespace.mjs +1 -1
  146. package/dist/services/agent-runtime/index.d.mts +2 -2
  147. package/dist/services/agent-runtime/namespace.d.mts +1 -1
  148. package/dist/services/agent-runtime/schemas.d.mts +1 -1
  149. package/dist/services/capability/index.d.mts +1 -1
  150. package/dist/services/capability/index.mjs +1 -1
  151. package/dist/services/codebase/index.d.mts +2 -2
  152. package/dist/services/codebase/namespace.d.mts +1 -1
  153. package/dist/services/codebase/schemas.d.mts +1 -1
  154. package/dist/services/compression/index.d.mts +2 -2
  155. package/dist/services/compression/namespace.d.mts +1 -1
  156. package/dist/services/compression/schemas.d.mts +1 -1
  157. package/dist/services/context-rules/index.d.mts +9 -9
  158. package/dist/services/context-rules/index.mjs +1 -1
  159. package/dist/services/execution-target/index.d.mts +3 -3
  160. package/dist/services/execution-target/index.mjs +1 -1
  161. package/dist/services/execution-target/namespace.d.mts +1 -1
  162. package/dist/services/execution-target/schemas.d.mts +1 -1
  163. package/dist/services/filesystem/index.d.mts +1 -1
  164. package/dist/services/filesystem/index.mjs +1 -1
  165. package/dist/services/filesystem/namespace.d.mts +6 -6
  166. package/dist/services/filesystem/schemas.d.mts +3 -3
  167. package/dist/services/git/namespace.mjs +1 -1
  168. package/dist/services/git/schemas.mjs +1 -1
  169. package/dist/services/harness/index.mjs +1 -1
  170. package/dist/services/index.d.mts +129 -124
  171. package/dist/services/index.mjs +1 -1
  172. package/dist/services/log-import/browser.d.mts +2 -2
  173. package/dist/services/log-import/index.d.mts +2 -2
  174. package/dist/services/log-import/log-import.d.mts +1 -1
  175. package/dist/services/log-import/log-import.mjs +1 -1
  176. package/dist/services/log-import/namespace.d.mts +2 -2
  177. package/dist/services/log-import/namespace.mjs +1 -1
  178. package/dist/services/log-import/schemas.d.mts +1 -1
  179. package/dist/services/log-import/schemas.mjs +1 -1
  180. package/dist/services/model-registry/index.d.mts +1 -1
  181. package/dist/services/model-registry/index.mjs +1 -1
  182. package/dist/services/preferences/index.d.mts +2 -2
  183. package/dist/services/preferences/schemas.d.mts +1 -1
  184. package/dist/services/preferences/storage-namespace.d.mts +2 -2
  185. package/dist/services/provider-context/index.d.mts +1 -1
  186. package/dist/services/provider-context/index.mjs +1 -1
  187. package/dist/services/provider-runtime/index.mjs +1 -1
  188. package/dist/services/session/handlers/index.d.mts +1 -1
  189. package/dist/services/session/handlers/index.mjs +1 -1
  190. package/dist/services/session/index.d.mts +9 -9
  191. package/dist/services/session/index.mjs +1 -1
  192. package/dist/services/session/messages/namespace.d.mts +1 -1
  193. package/dist/services/session/messages/namespace.mjs +1 -1
  194. package/dist/services/session/orchestrator-testing/index.d.mts +1 -1
  195. package/dist/services/session/orchestrator-testing/index.mjs +1 -1
  196. package/dist/services/session/session-events/namespace.d.mts +1 -1
  197. package/dist/services/session/session-events/namespace.mjs +1 -1
  198. package/dist/services/session/storage/namespace.d.mts +1 -1
  199. package/dist/services/session/storage/schema.d.mts +1 -1
  200. package/dist/services/session/testing/index.mjs +1 -1
  201. package/dist/services/session/testing/orchestrator-shared.d.mts +1 -1
  202. package/dist/services/session/testing/orchestrator-shared.mjs +1 -1
  203. package/dist/services/session/turns/namespace.d.mts +1 -1
  204. package/dist/services/session/turns/namespace.mjs +1 -1
  205. package/dist/services/session-editor/index.d.mts +1 -1
  206. package/dist/services/session-editor/index.mjs +1 -1
  207. package/dist/services/settings/index.d.mts +3 -3
  208. package/dist/services/settings/index.mjs +1 -1
  209. package/dist/services/settings/namespace.d.mts +12 -12
  210. package/dist/services/settings/namespace.mjs +1 -1
  211. package/dist/services/settings/storage/clients-namespace.d.mts +1 -1
  212. package/dist/services/settings/storage/clients-namespace.mjs +1 -1
  213. package/dist/services/settings/storage/index.d.mts +3 -3
  214. package/dist/services/settings/storage/index.mjs +1 -1
  215. package/dist/services/settings/storage/providers-namespace.d.mts +1 -1
  216. package/dist/services/settings/storage/providers-namespace.mjs +1 -1
  217. package/dist/services/subagent/index.d.mts +1 -1
  218. package/dist/services/subagent/index.mjs +1 -1
  219. package/dist/services/subagent-template/index.d.mts +2 -2
  220. package/dist/services/subagent-template/namespace.d.mts +1 -1
  221. package/dist/services/subagent-template/schemas.d.mts +1 -1
  222. package/dist/services/tool-approval/index.d.mts +1 -1
  223. package/dist/services/tool-approval/index.mjs +1 -1
  224. package/dist/services/tools/index.d.mts +1 -1
  225. package/dist/services/tools/index.mjs +1 -1
  226. package/dist/services/tray-menu/index.d.mts +3 -3
  227. package/dist/services/tray-menu/index.mjs +1 -1
  228. package/dist/services/tray-menu/namespace.d.mts +1 -1
  229. package/dist/services/tray-menu/schemas.d.mts +1 -1
  230. package/dist/services/turn/index.d.mts +1 -1
  231. package/dist/services/turn/namespace.d.mts +1 -1
  232. package/dist/session-ZAJrcudH.mjs +39 -0
  233. package/dist/session-owtKCoUX.mjs +1 -0
  234. package/dist/{skill-BNQnWVIG.mjs → skill-B_VlGon5.mjs} +1 -1
  235. package/dist/{src-CBG3IHUl.mjs → src-6n-8M8EU.mjs} +1 -1
  236. package/dist/storage/drizzle/client.d.mts +1 -1
  237. package/dist/storage/drizzle/client.mjs +1 -1
  238. package/dist/storage/drizzle/index.d.mts +1 -1
  239. package/dist/storage/drizzle/index.mjs +1 -1
  240. package/dist/storage/handlers/drizzle/index.d.mts +1 -1
  241. package/dist/storage/handlers/drizzle/index.mjs +1 -1
  242. package/dist/storage/handlers/index.d.mts +1 -1
  243. package/dist/storage/handlers/index.mjs +1 -1
  244. package/dist/{tool-approval-service-DNHV5x0M.mjs → tool-approval-service-B_28RhuK.mjs} +1 -1
  245. package/dist/{tools-CQImrHAp.mjs → tools-BpzJterj.mjs} +1 -1
  246. package/dist/{types-D5IMwOkJ.d.mts → types-BB8iIAjZ.d.mts} +1 -1
  247. package/dist/{types-BtsKrzK7.d.mts → types-Bo2-N1YR.d.mts} +994 -345
  248. package/dist/ui-kernel/index.d.mts +1 -1
  249. package/dist/ui-kernel/pages/schemas.d.mts +1 -1
  250. package/dist/{version-B4NO_fID.mjs → version-SYP_DX4M.mjs} +1 -1
  251. package/dist/workflow-engine/index.d.mts +23 -23
  252. package/dist/workflow-engine/index.mjs +1 -1
  253. package/dist/workflow-engine/package.d.mts +1 -1
  254. package/dist/workflow-engine/package.mjs +1 -1
  255. package/dist/workflow-engine/workflow-orchestrator.mjs +1 -1
  256. package/dist/{workflow-worker-CK9Sqj7D.mjs → workflow-worker-CjuRYLmJ.mjs} +1 -1
  257. package/package.json +5 -1
  258. package/dist/adapter-UpcpZDOv.mjs +0 -1
  259. package/dist/handlers-BAB4fQNH.mjs +0 -41
  260. package/dist/namespace-BXqetkc3.mjs +0 -1
  261. package/dist/primitive-runtime-CNC_bSac.mjs +0 -1
  262. package/dist/schemas-CuKayWhA.mjs +0 -1
  263. package/dist/session-BwX5_k47.mjs +0 -1
  264. package/dist/session-P4nX60Xx.mjs +0 -39
  265. /package/dist/{ajv-BA2z5ztb.mjs → ajv-Cx19PP7Q.mjs} +0 -0
  266. /package/dist/{await-trigger-DREnXCEJ.mjs → await-trigger-uKEHY8E4.mjs} +0 -0
  267. /package/dist/{base-orchestrator-M5mAB5-w.d.mts → base-orchestrator-BRq4MXa7.d.mts} +0 -0
  268. /package/dist/{capability-service-jjrFLM6r.mjs → capability-service-CHl8rrwb.mjs} +0 -0
  269. /package/dist/{cleanEnvForAdapter-vZfPGi0X.mjs → cleanEnvForAdapter-D32WnVuy.mjs} +0 -0
  270. /package/dist/{client-BJVDImPV.d.mts → client-D2ZftNb6.d.mts} +0 -0
  271. /package/dist/{clients-namespace-SFk7OTop.d.mts → clients-namespace-CeAB0t06.d.mts} +0 -0
  272. /package/dist/{config-namespace-DydHz9so.mjs → config-namespace-DW5KHKPW.mjs} +0 -0
  273. /package/dist/{config-namespace-BzAvE2nY.d.mts → config-namespace-DloU-hNB.d.mts} +0 -0
  274. /package/dist/{create-static-mount-BB1MIQ9J.mjs → create-static-mount-Bi0VpYS8.mjs} +0 -0
  275. /package/dist/{cross-spawn-BL6EvJBv.mjs → cross-spawn-C58yEvsS.mjs} +0 -0
  276. /package/dist/{cursor-storage-CmKjSvKY.mjs → cursor-storage-CpuT5POU.mjs} +0 -0
  277. /package/dist/{definition-BSghHJpQ.d.mts → definition-BdxbXbrq.d.mts} +0 -0
  278. /package/dist/{definition-q6iLw11H.d.mts → definition-BwLJnqEo.d.mts} +0 -0
  279. /package/dist/{descriptor-to-package-CY8oc2gl.mjs → descriptor-to-package-D-FNxohm.mjs} +0 -0
  280. /package/dist/{drizzle-wjquQK2m.mjs → drizzle-D7dkDEB5.mjs} +0 -0
  281. /package/dist/{esm-CQVFKEW5.mjs → esm-CP2zvvlx.mjs} +0 -0
  282. /package/dist/{event-BEllCn16.mjs → event-DaXakaHo.mjs} +0 -0
  283. /package/dist/{execution-target-CQGYaaM2.mjs → execution-target-Da6Vjvba.mjs} +0 -0
  284. /package/dist/{extension-discovery-CkV_VRdJ.d.mts → extension-discovery-Bv5FDtrM.d.mts} +0 -0
  285. /package/dist/{extension-namespace-BBgYOttA.mjs → extension-namespace-O3sKdnY9.mjs} +0 -0
  286. /package/dist/{facet-DMrryX_0.mjs → facet-Q_vgXb23.mjs} +0 -0
  287. /package/dist/{filesystem-service-Ddngll0j.d.mts → filesystem-service-89fN-2Dd.d.mts} +0 -0
  288. /package/dist/{handler-DqpiV9eA.mjs → handler-BIA3ld4C.mjs} +0 -0
  289. /package/dist/{host-DbMiI5wQ.mjs → host-DFqmG2qO.mjs} +0 -0
  290. /package/dist/{identity-Bmx-8fPa.mjs → identity-CA5MzB19.mjs} +0 -0
  291. /package/dist/{index-RUN1iHYu.d.mts → index-B1PgTu7q.d.mts} +0 -0
  292. /package/dist/{index-Buo9H8RK.d.mts → index-BDnI2oqX.d.mts} +0 -0
  293. /package/dist/{index-Dsq2zKvu.d.mts → index-BE-yMFTz.d.mts} +0 -0
  294. /package/dist/{index-CDU_s69P.d.mts → index-BUilJdHr.d.mts} +0 -0
  295. /package/dist/{index-BpniJgxu.d.mts → index-BVMF3kRv.d.mts} +0 -0
  296. /package/dist/{index-C33Tq1ei2.d.mts → index-BVhnqzDC2.d.mts} +0 -0
  297. /package/dist/{index-Cz9JMjZK.d.mts → index-BeNVLvtk2.d.mts} +0 -0
  298. /package/dist/{index-D0SUjZmU.d.mts → index-BplsE3qw.d.mts} +0 -0
  299. /package/dist/{index-C6BhKRnH.d.mts → index-BtL_9HBk.d.mts} +0 -0
  300. /package/dist/{index-Bsp0O_sI.d.mts → index-CBTp2XuF.d.mts} +0 -0
  301. /package/dist/{index-BMpRB6iE.d.mts → index-CYZqADXY2.d.mts} +0 -0
  302. /package/dist/{index-DSV1aFgK.d.mts → index-CfpfkKih.d.mts} +0 -0
  303. /package/dist/{index-BxFA1XcP.d.mts → index-CkPIPbx9.d.mts} +0 -0
  304. /package/dist/{index-DOfq0qqv.d.mts → index-D0RWuwl5.d.mts} +0 -0
  305. /package/dist/{index-CGJjA-hR2.d.mts → index-DHHKwLww.d.mts} +0 -0
  306. /package/dist/{index-zgm2j9V92.d.mts → index-DJSffYTW2.d.mts} +0 -0
  307. /package/dist/{index-BpXX9WZJ.d.mts → index-DNmENr9M.d.mts} +0 -0
  308. /package/dist/{index-DlvMtyHK.d.mts → index-DUI1W-zN.d.mts} +0 -0
  309. /package/dist/{index-9IDJUJ4X.d.mts → index-DVgKfgh1.d.mts} +0 -0
  310. /package/dist/{index-D6Iyvz9T.d.mts → index-DWqSqcpW.d.mts} +0 -0
  311. /package/dist/{index-BBvcP-P0.d.mts → index-DdCyeZ59.d.mts} +0 -0
  312. /package/dist/{index-Drz_a7kW.d.mts → index-cFuQpzIm.d.mts} +0 -0
  313. /package/dist/{index-Dyz7dzLW.d.mts → index-cN4DkU5Y2.d.mts} +0 -0
  314. /package/dist/{index-BnQSPC6c.d.mts → index-kOSSuOcK.d.mts} +0 -0
  315. /package/dist/{index-BbCjtc3h.d.mts → index-orAkFukT.d.mts} +0 -0
  316. /package/dist/{jsonl-transport-C21tpVfe.mjs → jsonl-transport-Bb8ltqOe.mjs} +0 -0
  317. /package/dist/{lib-CNOQJtgs.mjs → lib-BmcGxHXH.mjs} +0 -0
  318. /package/dist/{materialization-3QUnQLbC.mjs → materialization-DsPIGQP1.mjs} +0 -0
  319. /package/dist/{model-registry-B0AIdj7O.mjs → model-registry-DLeMw3l8.mjs} +0 -0
  320. /package/dist/{model-registry-j-rCKcik.mjs → model-registry-DQDclqdw.mjs} +0 -0
  321. /package/dist/{namespace--s0d86h-.d.mts → namespace-2G7A4Sza.d.mts} +0 -0
  322. /package/dist/{namespace-BSNFeJA4.d.mts → namespace-Ba1gUpUu.d.mts} +0 -0
  323. /package/dist/{namespace-BBVtD1gu.d.mts → namespace-CEqkI6Zu.d.mts} +0 -0
  324. /package/dist/{namespace-BbjCyZC9.mjs → namespace-CN-Llu7H.mjs} +0 -0
  325. /package/dist/{namespace-CHMszppN.d.mts → namespace-CWgNi8Gv.d.mts} +0 -0
  326. /package/dist/{namespace-aJJfBJU5.d.mts → namespace-DKnJL0Ja.d.mts} +0 -0
  327. /package/dist/{namespace-XTGCaSXj.d.mts → namespace-DMhz3yvr.d.mts} +0 -0
  328. /package/dist/{namespace-DzVf1hVH.d.mts → namespace-DcUwOJ4f.d.mts} +0 -0
  329. /package/dist/{namespace-B60mn8J-2.d.mts → namespace-Dr1wDUZA2.d.mts} +0 -0
  330. /package/dist/{namespace-BgPoC46Q.mjs → namespace-DrpHLJAy.mjs} +0 -0
  331. /package/dist/{namespace-ENv7H7Na.mjs → namespace-FJsnoEQy.mjs} +0 -0
  332. /package/dist/{namespace-D6X67cUk.mjs → namespace-UUw-S7ia.mjs} +0 -0
  333. /package/dist/{namespace-uuR0Fg5r.d.mts → namespace-nQS4XwnT.d.mts} +0 -0
  334. /package/dist/{namespace-nlsvvMtD.d.mts → namespace-q5dD3acO.d.mts} +0 -0
  335. /package/dist/{namespace-FT8igkn4.mjs → namespace-uGUGfpGQ.mjs} +0 -0
  336. /package/dist/{namespace-CUOGcGPG.mjs → namespace-zWB-ULrX.mjs} +0 -0
  337. /package/dist/{orchestrator-shared-D91Wk7z-.d.mts → orchestrator-shared-CbS4ueeq.d.mts} +0 -0
  338. /package/dist/{out-C1JFb2Bp.mjs → out-BUHr98Xe.mjs} +0 -0
  339. /package/dist/{package--RZnpN2J.d.mts → package-BEbo1-6S.d.mts} +0 -0
  340. /package/dist/{package-BzJvtM5O.mjs → package-YQeRE8bV.mjs} +0 -0
  341. /package/dist/{platform-Dhv22LiX.mjs → platform-CsO-MRJP.mjs} +0 -0
  342. /package/dist/{providers-B1p0P-vB.mjs → providers-FEZT2bQG.mjs} +0 -0
  343. /package/dist/{providers-namespace-BqWYkydw.d.mts → providers-namespace-DMUyEbmp.d.mts} +0 -0
  344. /package/dist/{quick-lru-B9nWXbXI.mjs → quick-lru-C7AXdpbU.mjs} +0 -0
  345. /package/dist/{registry-RG-bkw3c.mjs → registry-udUhXSIC.mjs} +0 -0
  346. /package/dist/{schema-CzhOc7TV.mjs → schema-Ba64XQjo.mjs} +0 -0
  347. /package/dist/{schema-introspection-CuRZPYEc.mjs → schema-introspection-D5FaI5B_.mjs} +0 -0
  348. /package/dist/{schemas-BCIuTWRl2.mjs → schemas-5kegIs9D.mjs} +0 -0
  349. /package/dist/{schemas-B77Gi8Xr.d.mts → schemas-9Ifo5zSf.d.mts} +0 -0
  350. /package/dist/{schemas-BdAf5u58.mjs → schemas-9QC3nvYP.mjs} +0 -0
  351. /package/dist/{schemas-Dyk7JuVl.d.mts → schemas-BSAKbVyd.d.mts} +0 -0
  352. /package/dist/{schemas-o2Q24yOF.d.mts → schemas-BbFAwUpf.d.mts} +0 -0
  353. /package/dist/{schemas-Kq33MTPY.d.mts → schemas-BxI5Yq8d.d.mts} +0 -0
  354. /package/dist/{schemas-Chyj6HuZ.d.mts → schemas-CRS7tkFP.d.mts} +0 -0
  355. /package/dist/{schemas-B5ToLwIs.d.mts → schemas-Cae5dubB.d.mts} +0 -0
  356. /package/dist/{schemas-hSrzflwZ.mjs → schemas-DAYPhB5K.mjs} +0 -0
  357. /package/dist/{schemas-DZUaRcYl.d.mts → schemas-DZfBym73.d.mts} +0 -0
  358. /package/dist/{schemas-C792eVAZ.d.mts → schemas-DznsZ0bq.d.mts} +0 -0
  359. /package/dist/{schemas-DUE6mc1O.d.mts → schemas-IDGAJ_zv.d.mts} +0 -0
  360. /package/dist/{semver-DhHJv6Dt.mjs → semver-ClOD8k8c.mjs} +0 -0
  361. /package/dist/{server-lifecycle-47mygK3E.d.mts → server-lifecycle-5iHxcgBO.d.mts} +0 -0
  362. /package/dist/{server-lifecycle-Cg47L59Q.mjs → server-lifecycle-CFQaPTf7.mjs} +0 -0
  363. /package/dist/{session-lineage-CKg6mErA.d.mts → session-lineage-DFkJgYt5.d.mts} +0 -0
  364. /package/dist/{shared-schemas-DYL7a-No.mjs → shared-schemas-jG3EtHZT.mjs} +0 -0
  365. /package/dist/{src-DedDL9iv.mjs → src-CRDOZl7K.mjs} +0 -0
  366. /package/dist/{storage-namespace-BXO3lDVy.mjs → storage-namespace-C1JVmZF1.mjs} +0 -0
  367. /package/dist/{storage-namespace-definition-C3XbpiP8.d.mts → storage-namespace-definition-BPYSLTfN.d.mts} +0 -0
  368. /package/dist/{storage-namespace-definition-RvjfFysN.mjs → storage-namespace-definition-Df8S3E3r.mjs} +0 -0
  369. /package/dist/{storage-namespace-BXmMUd7a.d.mts → storage-namespace-gey7EUhM.d.mts} +0 -0
  370. /package/dist/{supports-color-fVsgozsi.mjs → supports-color-AnssSSH9.mjs} +0 -0
  371. /package/dist/{telemetry-O0394b7p.mjs → telemetry-DdbvlZ8s.mjs} +0 -0
  372. /package/dist/{tray-menu-service-B5YPK_YF.mjs → tray-menu-service-am356993.mjs} +0 -0
  373. /package/dist/{types-D-bP8RRE.d.mts → types-Bj7cOrBQ.d.mts} +0 -0
  374. /package/dist/{types-D6jnDjP2.d.mts → types-D-GeeSdd.d.mts} +0 -0
  375. /package/dist/{types-5Gw3iVpK.d.mts → types-DhlQpVEb.d.mts} +0 -0
  376. /package/dist/{types-B0BtvVAq.d.mts → types-xLd-e0wf.d.mts} +0 -0
  377. /package/dist/{variant-COVbYmMs.mjs → variant-BdNN5edM.mjs} +0 -0
  378. /package/dist/{window-registry-CfEi_Ji4.d.mts → window-registry-CA6AC8n7.d.mts} +0 -0
  379. /package/dist/{window-registry-XjOExitT.mjs → window-registry-LRjWPwr4.mjs} +0 -0
@@ -1,41 +0,0 @@
1
- import{TurnStorageSubjects as e}from"./services/turn/namespace.mjs";import{agents as t}from"./services/session/storage/schema.mjs";import{n,t as r}from"./schema-CzhOc7TV.mjs";import{n as i}from"./namespace-Dfq6MDN9.mjs";import{SessionStorageSubjects as a}from"./services/session/storage/namespace.mjs";import{n as o}from"./namespace-ENv7H7Na.mjs";import{r as s,t as c}from"./provider-context-wp4VSJFI.mjs";import{AdapterRuntimeSubjects as l}from"./services/adapter-runtime/namespace.mjs";import{ProviderStorageSubjects as u}from"./services/settings/storage/providers-namespace.mjs";import{ExecutionTargetSubjects as d}from"./services/execution-target/namespace.mjs";import{MessageStorageSubjects as f}from"./services/session/messages/namespace.mjs";import"./services/session/turns/namespace.mjs";import{ExtractedContextSchema as p}from"./services/compression/schemas.mjs";import{PreferencesSubjects as m}from"./services/preferences/storage-namespace.mjs";import{z as h}from"zod";import{AdapterSubjects as g,AgentResolutionSubjects as _,AgentStatusSchema as v,AgentSubjects as y,MakaioSessionAgentSchema as b,SessionSubjects as x,TurnInitiatorSchema as S,TurnUsageSchema as ee}from"@makaio/framework/contracts";import{createStorageNamespaceDefinition as C}from"@makaio/framework/storage";import{defineDialectSchema as te,getRawSqlExecutor as ne,getStorageEngine as re,resolveSchema as w}from"@makaio/framework/storage/drizzle";import{and as T,asc as E,desc as ie,eq as D,sql as ae}from"drizzle-orm";import{HookAbortError as O}from"@makaio/framework/hooks";import{AdapterRuntimeSubjects as oe}from"@makaio/framework/services/adapter-runtime";import{buildProviderContext as se}from"@makaio/framework/services/provider-context";const k=C(`agent`,{schemas:{get:{request:h.object({agentId:h.string()}),response:h.object({agent:b.nullable()})},set:{request:h.object({agentId:h.string(),agent:b}),response:h.object({success:h.boolean()})},delete:{request:h.object({agentId:h.string()}),response:h.object({success:h.boolean()})},listByAdapter:{request:h.object({adapterName:h.string(),status:h.enum([`idle`,`active`,`dead`,`disposed`,`all`]).optional()}),response:h.object({agents:h.array(b)})},listBySession:{request:h.object({sessionId:h.string()}),response:h.object({agents:h.array(b)})},updateStatus:{request:h.object({agentId:h.string(),status:v}),response:h.object({success:h.boolean()})},updateActivity:{request:h.object({agentId:h.string(),lastActivityAt:h.number()}),response:h.object({success:h.boolean()})},updateRuntime:{request:h.object({agentId:h.string(),adapterId:h.string().optional(),cwd:h.string().optional(),model:h.string().optional(),allowedDirectories:h.array(h.string()).optional(),providerConfigId:h.string().optional()}).refine(e=>e.adapterId!==void 0||e.cwd!==void 0||e.model!==void 0||e.allowedDirectories!==void 0||e.providerConfigId!==void 0,{message:`At least one runtime field (adapterId, cwd, model, allowedDirectories, or providerConfigId) must be provided`}),response:h.object({success:h.boolean()})}},extensions:{drizzle:{agents:t}}}),A=k.subjects;async function j(e,t,n){let{adapterId:r}=await e.request(l.resolveId,{adapterName:t,...n!==void 0&&{machineId:n}});return r}async function ce(e,t,n){if(!(!t||!n))try{let{config:r}=await e.request(o.getProviderConfig,{id:t});if(!r)return;let{provider:i}=await e.request(u.get,{id:r.definitionId}),a=i?.availableModels?.find(e=>e.name===n);return a?{supportedReasoningLevels:a.supportedReasoningLevels}:void 0}catch{return}}async function le(e,t){let{executionTarget:n}=await e.request(d.resolve,t);return n}async function M(e,t){let{sessionId:n,limit:r}=t,a=[],o=!1,s=!1,c;do{let{events:t,nextCursor:l}=await e.request(i.getEvents,{sessionId:n,options:{limit:1e4,...c&&{after:c}}});for(let i of t){if(i.type===`squash`){o=!0,a.length=0;let e=i.payload,t={messageId:`squash-${i.eventId}`,sessionId:n,turnId:null,role:`assistant`,contentText:e.summaryJson,blocks:[{type:`text`,content:e.summaryJson}],timestamp:i.timestamp};a.push(t)}else if(i.type===`message`){let t=i.payload,{message:n}=await e.request(f.get,{messageId:t.messageId});n&&a.push(n)}if(r&&a.length>=r){s=!0;break}}if(r&&a.length>=r)break;c=l??void 0}while(c);return{messages:a,hasSquashBoundary:o,sessionChain:[n],truncated:s,incomplete:!1}}const N=new class{actions=new Map;register(e){if(this.actions.has(e.id))throw Error(`Action already registered: ${e.id}`);this.actions.set(e.id,e)}get(e){return this.actions.get(e)}getAll(){return Array.from(this.actions.values())}getByCategory(e){return this.getAll().filter(t=>t.category===e)}reset(){this.actions.clear()}};async function P(e,t,n){let r=e,i,a;for(let e of t){let t=N.get(e.actionId);if(!t)throw Error(`Unknown action: ${e.actionId}`);let o={...n,...e.options},s=await t.execute(r,o);if(s.kind===`messages`)r=s.messages;else{i=s.json,a=s.tokenEstimate,r=[];break}}if(!i&&r.length>0){let e=r.reduce((e,t)=>e+JSON.stringify(t.blocks).length,0);a=Math.ceil(e/4)}return{messages:r,contextJson:i,tokenEstimate:a}}function F(e){return e.map(e=>({...e,blocks:e.blocks.filter(e=>e.type!==`reasoning`)}))}const ue={id:`strip-reasoning`,label:`Strip Reasoning`,description:`Remove reasoning/thinking blocks from messages`,category:`transformation`,async execute(e){return{kind:`messages`,messages:F(e)}}};function I(e){return e.map(e=>({...e,blocks:e.blocks.map(e=>{if(e.type===`tool_output`){let t=e.output.length;return{...e,output:`[output removed - ${t} chars]`}}return e})}))}const de={id:`strip-tool-outputs`,label:`Strip Tool Outputs`,description:`Remove tool output contents, keep structure`,category:`transformation`,async execute(e){return{kind:`messages`,messages:I(e)}}};async function L(e,t){let n=[],r=[],i=[],o=!1,s=!1,c=!1,l=[],u,d=t,f;for(;d;){let n=await e.request(a.get,{sessionId:d});if(!n.session){c=!0;break}d===t&&(u=n.session.forkTransforms??void 0),l.unshift({sessionId:d,forkPointMessageId:n.session.forkPointMessageId??void 0}),f=n.session.parentSessionId??void 0,d=f}for(let t=0;t<l.length;t++){let{sessionId:a}=l[t],c=t===l.length-1,u=l[t+1]?.forkPointMessageId;n.push(a);let d=await M(e,{sessionId:a});if(d.hasSquashBoundary&&(o=!0,c||(r.length=0)),d.truncated&&(s=!0),c)i=d.messages;else for(let e of d.messages)if(r.push(e),u&&e.messageId===u)break}return u&&(r=await fe(r,u)),{messages:[...r,...i],hasSquashBoundary:o,sessionChain:n,truncated:s,incomplete:c}}async function fe(e,t){if(t.segments?.length){let n=t.segments[0].fromMessageId,r=t.segments[t.segments.length-1].toMessageId,i=e.findIndex(e=>e.messageId===n),a=e.findIndex(e=>e.messageId===r);if(i===-1||a===-1||i>a)return R(e,t.segments);let o=e.slice(0,i),s=e.slice(i,a+1),c=e.slice(a+1),l=R(s,t.segments);return[...o,...l,...c]}let n=e;if(t.removedMessageIds?.length){let e=new Set(t.removedMessageIds);n=n.filter(t=>!e.has(t.messageId))}return t.appliedPipeline?.length&&(n=(await P(n,t.appliedPipeline)).messages),n}function pe(e,t){let n=e;return t.stripReasoning&&(n=F(n)),t.stripToolOutputs&&(n=I(n)),n}function R(e,t){let n=new Map;for(let t=0;t<e.length;t++)n.set(e[t].messageId,t);let r=[];for(let i of t){let t=n.get(i.fromMessageId),a=n.get(i.toMessageId);if(t===void 0||a===void 0){console.warn(`[getFullConversation] Skipping segment with missing boundary IDs`,{segmentKey:`${i.fromMessageId}..${i.toMessageId}`,fromMessageId:i.fromMessageId,toMessageId:i.toMessageId,hasFrom:t!==void 0,hasTo:a!==void 0});continue}let o=e.slice(t,a+1),s;switch(i.policy){case`exclude`:s=[];break;case`summarize`:if(i.summaryText){if(o.length===0)throw Error(`Cannot create synthetic summary message for empty segment: ${i.fromMessageId}..${i.toMessageId}`);s=[{messageId:`summary-${i.fromMessageId}-${i.toMessageId}`,turnId:null,sessionId:o[0].sessionId,role:`assistant`,contentText:i.summaryText,blocks:[{type:`text`,content:i.summaryText}],timestamp:o[o.length-1].timestamp}]}else s=o;break;default:s=o;break}if((i.policy!==`summarize`||!i.summaryText)&&i.overrides&&Object.keys(i.overrides).length>0){let e=new Set(Object.entries(i.overrides).filter(([,e])=>e===`exclude`).map(([e])=>e));s=s.filter(t=>!e.has(t.messageId))}s=pe(s,i),r.push(...s)}return r}function z(e){return{role:e.role,blocks:e.blocks}}async function me(e,t){return{messageHistory:(await L(e,t.sessionId)).messages.map(z),isFirstTurn:!0}}async function he(e,t,n,r){if(t.cwd===n)return{swapped:!1};let i=await e.request(y.cwd.change,{agentId:t.agentId,adapterId:t.adapterId,adapterName:t.adapterName,adapterSessionId:t.adapterSessionId??``,sessionId:t.sessionId,newCwd:n,...r?.skipWarning?{skipWarning:!0}:{}});if(!i.success)throw Error(`Failed to change cwd for agent ${t.agentId}: ${i.reason??`unknown`}`);return i.previousCwd?(t.cwd=n,{swapped:!0,previousCwd:i.previousCwd}):(t.cwd=n,{swapped:!1})}async function ge(e,t,n,r){let i=n===void 0||t.model===n,a=r?.reasoningEffort===void 0,o=!r?.providerConfigId;if(i&&a&&o)return{changed:!1};let c=r?.providerConfigId?await s(e,r.providerConfigId):void 0,l=await e.request(y.model.change,{agentId:t.agentId,adapterId:t.adapterId,adapterName:t.adapterName,adapterSessionId:t.adapterSessionId??``,...n!==void 0&&{newModel:n},...r?.reasoningEffort!==void 0&&{reasoningEffort:r.reasoningEffort},...r?.skipWarning!==void 0&&{skipWarning:r.skipWarning},...c!==void 0&&{providerContext:c}});if(!l.success)throw Error(`Failed to change model for agent ${t.agentId}: ${l.reason??`unknown`}`);return n!==void 0&&(t.model=n),{changed:!0,swapped:l.swapped??!1}}async function _e(e,t,n){let r=[],i=new Set;for(let a of t){let t=await e.requestOptional(g.getAgent,{adapterId:a.adapterId,agentId:a.agentId});if(t.handled&&t.data.agent!==null)r.push(a);else{let t=await B(e,a,n);r.push(t),i.add(t.agentId)}}return{verifiedAgents:r,recoveredAgentIds:i}}async function ve(e,t,n){let r=await L(e,t.sessionId),i=n?.pipeline??[];return{messageHistory:(i.length>0?(await P(r.messages,i)).messages:r.messages).map(z),isFirstTurn:!0}}async function B(e,t,n){let r=await j(e,t.adapterName).catch(()=>t.adapterId);return await e.request(g.rehydrateAgent,{adapterId:r,agentId:t.agentId,cwd:n.cwd,model:n.model??t.model,...t.adapterSessionId!==void 0&&{adapterSessionId:t.adapterSessionId}}),t.adapterId=r,t}const ye=n.postgres,V=te({turns:r},{turns:ye});function be(e){if(e)try{let t=JSON.parse(e),n=ee.safeParse(t);return n.success?n.data:void 0}catch{return}}function H(e){return e?JSON.stringify(e):null}function xe(e){if(e)try{let t=JSON.parse(e),n=S.safeParse(t);return n.success?n.data:void 0}catch{return}}function U(e){let t=xe(e.initiator);return{turnId:e.turnId,sessionId:e.sessionId,turnNumber:e.turnNumber,startedAt:e.startedAt,completedAt:e.completedAt??void 0,status:e.status,error:e.error??void 0,usage:be(e.usage),...t!==void 0&&{initiator:t}}}function Se(e,t){let n=[Ce(e,t),we(e,t),Te(e,t),Ee(e,t),De(e,t),Oe(e,t),ke(e,t)];return()=>n.forEach(e=>e())}function Ce(t,n){let r=ne(n),i=re(r.dialect),{turns:a}=w(n,V);return t.on(e.create,async e=>{let{sessionId:t,turnId:o,initiator:s}=e.payload,c=Date.now(),l=o??crypto.randomUUID(),u=H(s);for(let e=1;;e++)try{await r.run(ae`
2
- WITH next_num AS (
3
- SELECT COALESCE(MAX(turn_number), 0) + 1 AS n
4
- FROM turns
5
- WHERE session_id = ${t}
6
- )
7
- INSERT INTO turns (turn_id, session_id, turn_number, started_at, status, initiator)
8
- SELECT ${l}, ${t}, n, ${c}, ${`active`}, ${u}
9
- FROM next_num
10
- `);break}catch(t){if(e>=32||!i.capabilities.maxCounterAssignmentRaces||!i.errors.isUniqueViolationError(t,`uniq_turns_session_number`))throw t}let[d]=await n.select({turnNumber:a.turnNumber}).from(a).where(D(a.turnId,l)),f={turnId:l,sessionId:t,turnNumber:d.turnNumber,startedAt:c,status:`active`,...s!==void 0&&{initiator:s}};e.setResult({turn:f})})}function we(t,n){let{turns:r}=w(n,V);return t.on(e.complete,async e=>{let{turnId:t,status:i,expectedStatus:a,error:o,usage:s}=e.payload,c={completedAt:Date.now(),status:i,error:o??null};s!==void 0&&(c.usage=JSON.stringify(s));let l=a?T(D(r.turnId,t),D(r.status,a)):D(r.turnId,t),u=await n.update(r).set(c).where(l).returning();if(u.length>0){e.setResult({turn:U(u[0]),transitioned:!0});return}let[d]=await n.select().from(r).where(D(r.turnId,t)).limit(1);if(!d)throw Error(`Turn not found: ${t}`);e.setResult({turn:U(d),transitioned:!1})})}function Te(t,n){let{turns:r}=w(n,V);return t.on(e.set,async e=>{let{turn:t}=e.payload,i={turnId:t.turnId,sessionId:t.sessionId,turnNumber:t.turnNumber,startedAt:t.startedAt,completedAt:t.completedAt??null,status:t.status,error:t.error??null,usage:t.usage?JSON.stringify(t.usage):null,initiator:H(t.initiator)};await n.insert(r).values(i).onConflictDoUpdate({target:r.turnId,set:i}),e.setResult({turn:t})})}function Ee(t,n){let{turns:r}=w(n,V);return t.on(e.get,async e=>{let{turnId:t}=e.payload,[i]=await n.select().from(r).where(D(r.turnId,t)).limit(1);e.setResult({turn:i?U(i):null})})}function De(t,n){let{turns:r}=w(n,V);return t.on(e.getBySession,async e=>{let{sessionId:t,limit:i,status:a}=e.payload,o=n.select().from(r).where(D(r.sessionId,t)).orderBy(E(r.turnNumber));a&&(o=n.select().from(r).where(T(D(r.sessionId,t),D(r.status,a))).orderBy(E(r.turnNumber))),i&&(o=o.limit(i));let s=await o;e.setResult({turns:s.map(U)})})}function Oe(t,n){let{turns:r}=w(n,V);return t.on(e.getActive,async e=>{let{sessionId:t}=e.payload,[i]=await n.select().from(r).where(T(D(r.sessionId,t),D(r.status,`active`))).orderBy(ie(r.turnNumber)).limit(1);e.setResult({turn:i?U(i):null})})}function ke(t,n){let{turns:r}=w(n,V);return t.on(e.listActive,async e=>{let t=await n.select().from(r).where(D(r.status,`active`)).orderBy(E(r.startedAt));e.setResult({turns:t.map(U)})})}function Ae(e){let t=new Map,n=new Map,r=new Map,i=je(t,n,r),a=[Me(e,i,r),Ne(e,t,i),Pe(e,i),Fe(e,t),Ie(e,t,n),Le(e,t,n),Re(e,t)];return()=>a.forEach(e=>e())}function je(e,t,n){return r=>{e.set(r.turnId,r);let i=t.get(r.sessionId)??[];i.includes(r.turnId)||i.push(r.turnId),t.set(r.sessionId,i);let a=n.get(r.sessionId)??0;r.turnNumber>a&&n.set(r.sessionId,r.turnNumber)}}function Me(t,n,r){return t.on(e.create,e=>{let{sessionId:t,turnId:i,initiator:a}=e.payload,o=Date.now(),s={turnId:i??crypto.randomUUID(),sessionId:t,turnNumber:(r.get(t)??0)+1,startedAt:o,status:`active`,...a!==void 0&&{initiator:a}};n(s),e.setResult({turn:s})})}function Ne(t,n,r){return t.on(e.complete,e=>{let{turnId:t,status:i,expectedStatus:a,error:o,usage:s}=e.payload,c=n.get(t);if(!c)throw Error(`Turn not found: ${t}`);if(a&&c.status!==a){e.setResult({turn:c,transitioned:!1});return}let l={...c,completedAt:Date.now(),status:i,error:o??void 0,usage:s??c.usage};r(l),e.setResult({turn:l,transitioned:!0})})}function Pe(t,n){return t.on(e.set,e=>{let{turn:t}=e.payload;n(t),e.setResult({turn:t})})}function Fe(t,n){return t.on(e.get,e=>{e.setResult({turn:n.get(e.payload.turnId)??null})})}function Ie(t,n,r){return t.on(e.getBySession,e=>{let{sessionId:t,status:i,limit:a}=e.payload,o=(r.get(t)??[]).map(e=>n.get(e)).filter(e=>!!e);i&&(o=o.filter(e=>e.status===i)),o.sort((e,t)=>e.turnNumber-t.turnNumber),a&&(o=o.slice(0,a)),e.setResult({turns:o})})}function Le(t,n,r){return t.on(e.getActive,e=>{let{sessionId:t}=e.payload,i=(r.get(t)??[]).map(e=>n.get(e)).filter(e=>!!e).filter(e=>e.status===`active`).sort((e,t)=>t.turnNumber-e.turnNumber).at(0);e.setResult({turn:i??null})})}function Re(t,n){return t.on(e.listActive,e=>{let t=[...n.values()].filter(e=>e.status===`active`).sort((e,t)=>e.startedAt-t.startedAt);e.setResult({turns:t})})}function W(e){return{source:e.source,...e.sourceId!==void 0&&{sourceId:e.sourceId}}}var G=class{turnId;sessionId;turnNumber;startedAt;_initiator;_agentIds;_messageIds=[];_completedAgents=new Set;_erroredAgents=new Map;constructor(e){if(!Number.isInteger(e.turnNumber)||e.turnNumber<1)throw Error(`turnNumber must be a positive integer`);this.turnId=e.turnId??crypto.randomUUID(),this.sessionId=e.sessionId,this.turnNumber=e.turnNumber,this.startedAt=e.startedAt??Date.now(),this._initiator=Object.freeze(W(e.initiator??{source:`user`})),this._agentIds=Object.freeze([...e.agentIds])}get agentIds(){return this._agentIds}get initiator(){return W(this._initiator)}get messageIds(){return this._messageIds}get completedAgents(){return this._completedAgents}get erroredAgents(){return this._erroredAgents}addMessage(e){this._messageIds.push(e)}markAgentCompleted(e){return this._completedAgents.add(e),this.checkCompletion()}markAgentErrored(e,t){return this._erroredAgents.set(e,t),this.checkCompletion()}hasAgent(e){return this._agentIds.includes(e)}isComplete(){return this._completedAgents.size+this._erroredAgents.size>=this._agentIds.length}getResult(){return{success:this._erroredAgents.size===0,errors:Array.from(this._erroredAgents.values())}}getContext(){if(this._messageIds.length===0)throw Error(`Turn ${this.turnId} has no messages yet`);return{turnId:this.turnId,messageId:this._messageIds[this._messageIds.length-1]}}getContextForMessage(e){return{turnId:this.turnId,messageId:e}}checkCompletion(){return this.isComplete()?{turnComplete:!0,result:this.getResult()}:{turnComplete:!1}}};function K(e){return typeof e==`string`?e:(Array.isArray(e.blocks)?e.blocks:[e.blocks]).filter(e=>e.type===`text`).map(e=>e.content).join(`
11
- `)}function ze(e){return e}function Be(e){return typeof e==`string`?[{type:`text`,content:e}]:(Array.isArray(e.blocks)?e.blocks:[e.blocks]).map(ze)}async function Ve(e,t,n,r){let{session:i}=await e.request(x.get,{sessionId:t});if(i){if(i.status!==`active`)throw Error(`[getOrCreateSession] Session is not active: ${t}`);return{sessionId:t,session:i}}await e.request(x.create,{sessionId:t,originWindowId:r});let{session:a}=await e.request(x.get,{sessionId:t});if(!a)throw Error(`[getOrCreateSession] Failed to create session: ${t}`);return{sessionId:t,session:a}}function He(e,t){if(t===void 0){let t=e.agents.find(t=>t.agentId===e.leadAgentId);if(!t)throw Error(`[resolveTargetAgents] Lead agent not found: ${e.leadAgentId}`);return[t]}if(t===`all`)return e.agents;let n=new Set(t);return e.agents.filter(e=>n.has(e.agentId))}function Ue(e,t){for(let n of e.values())if(n.hasAgent(t))return n}function We(e,t){if(e===`extension`){let e=t?.trim();if(!e)throw Error(`extensionId is required when source is "extension"`);return{source:`extension`,sourceId:e}}return e?{source:e}:{source:`user`}}function q(e){return typeof e==`string`&&e.trim().length>0?e.trim():void 0}async function J(e,t,n,r){let{adapterName:i}=await e.request(l.resolveName,{adapterId:t});if(n&&i!==n)throw Error(`${r}adapterName "${n}" does not match adapterId "${t}"`);return i}async function Ge(e,t,n,r,i,a,o,s,c,l){let u=n.map(async n=>{try{await e.request(y.sendMessage,{agentId:n.agentId,adapterId:n.adapterId,message:r,deliveryMode:o,messageId:i,turnId:a.turnId,sessionId:t.sessionId,sessionContext:c,...l!==void 0&&{responseSchema:l}}),await e.emit(x.user_message.acknowledged,{sessionId:a.sessionId,turnId:a.turnId,turnNumber:a.turnNumber,messageId:i,agentId:n.agentId})}catch(t){if(t instanceof O){await e.emit(x.user_message.completed,{sessionId:a.sessionId,turnId:a.turnId,turnNumber:a.turnNumber,messageId:i,agentId:n.agentId,outcome:`cancelled`});let t=a.markAgentCompleted(n.agentId);t.turnComplete&&await s(a,t.result);return}let r=t instanceof Error?t.message:String(t),o=a.markAgentErrored(n.agentId,r);await e.emit(x.user_message.completed,{sessionId:a.sessionId,turnId:a.turnId,turnNumber:a.turnNumber,messageId:i,agentId:n.agentId,outcome:`error`,error:r}),o.turnComplete&&await s(a,o.result)}});await Promise.all(u)}function Ke(e){return e.on(x.abandon,async t=>{let{parentSessionId:n,childSessionId:r}=t.payload,{session:i}=await e.request(x.get,{sessionId:r});if(!i)throw Error(`[abandon-handler] Child session not found: ${r}`);if(i.parentSessionId!==n)throw Error(`[abandon-handler] Invalid parent-child relationship: session ${r} is not a child of ${n}`+(i.parentSessionId?` (actual parent: ${i.parentSessionId})`:` (session has no parent)`));if(!(await e.request(x.close,{sessionId:r})).success)throw Error(`[abandon-handler] Failed to close child session: ${r}`);await e.emit(x.abandoned,{sessionId:r,parentSessionId:n}),t.setResult({success:!0})})}function qe(e,t,n){return e.on(x.agent.attach,async r=>{let{sessionId:i,agent:a,initialMessage:o,role:s}=r.payload,l=Je(a),u=await et(e,i),d=await Xe(e,i,o,a),{adapterName:f,adapterId:p}=await Ye(e,a.kind===`adapter`&&`adapterName`in a?a.adapterName:d?.adapterName,a.kind===`adapter`&&`adapterId`in a?a.adapterId:void 0,n),{providerConfigId:m,providerContext:h}=await Ze(e,a.providerConfigId,d),{runtimeOptions:_,mergedModel:v,mergedCwd:y}=$e(l,d,h),b=tt(u,s),x=rt(p,i,o,b,_,nt(u),d?.harnessId);h!==void 0&&await c(e,h);let S=await e.request(g.startAgent,x);if(!S.success)throw Error(`[attach-handler] Failed to start agent: ${S.message}`);let ee=a.kind===`persona`?a.personaId:void 0;await at(e,S,{adapterName:f,sessionId:i,role:b,timestamp:Date.now(),personaId:ee,profileId:d?.profileId,harnessId:d?.harnessId,providerConfigId:m,compressionMode:d?.compressionMode,model:v,cwd:y});let C=o&&S.messageId?await ot(e,t,i,S.agentId,S.messageId,o):void 0;r.setResult({agentId:S.agentId,adapterSessionId:S.adapterSessionId,role:b,...C&&{messageId:C.messageId,turnId:C.turnId}})})}function Je(e){return{...e.model!==void 0&&{model:e.model},...e.reasoningEffort!==void 0&&{reasoningEffort:e.reasoningEffort},...e.cwd!==void 0&&{cwd:e.cwd},...e.allowedTools!==void 0&&{allowedTools:e.allowedTools},...e.disallowedTools!==void 0&&{disallowedTools:e.disallowedTools},...e.allowedDirectories!==void 0&&{allowedDirectories:e.allowedDirectories},...e.systemPrompt!==void 0&&{systemPrompt:e.systemPrompt}}}async function Ye(e,t,n,r){let i=q(t),a=q(n);if(!i&&!a)throw Error(`[attach-handler] adapterName or adapterId is required — provide one explicitly or via persona/profile/virtualModel resolution`);if(a)return{adapterName:await J(e,a,i,`[attach-handler] `),adapterId:a};let o=i;return{adapterName:o,adapterId:await j(e,o,r)}}async function Xe(e,t,n,r){if(r.kind===`adapter`)return null;let i=n?K(n):void 0;return e.request(_.resolve,{selection:r,context:{sessionId:t,promptText:i}})}async function Ze(e,t,n){let r=t??n?.providerConfigId;return{providerConfigId:r,providerContext:r===void 0?void 0:await s(e,r)}}function Qe(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0))}function $e(e,t,n){let r=e.model??t?.model,i=e.cwd;return{runtimeOptions:Qe({model:r,reasoningEffort:e.reasoningEffort??t?.reasoningEffort,cwd:i,allowedTools:e.allowedTools??t?.allowedTools,disallowedTools:e.disallowedTools??t?.disallowedTools,allowedDirectories:e.allowedDirectories??t?.allowedDirectories,systemPrompt:e.systemPrompt??t?.systemPrompt,providerContext:n}),mergedModel:r,mergedCwd:i}}async function et(e,t){let{session:n}=await e.request(x.get,{sessionId:t});if(!n)throw Error(`[attach-handler] Session not found: ${t}`);if(n.status!==`active`)throw Error(`[attach-handler] Session is not active: ${t}`);return n}function tt(e,t){let n=e.agents.length===0;return t??(n?`lead`:`member`)}function nt(e){if(e.isImported&&e.isOrchestrated===!1&&e.adapterSessionId)return e.adapterSessionId}function rt(e,t,n,r,i,a,o){return a?{mode:`resume`,adapterId:e,sessionId:t,adapterSessionId:a,role:r,...i,...n!==void 0&&{initialMessage:n},...o!==void 0&&{harnessId:o}}:{adapterId:e,sessionId:t,role:r,...i,...n!==void 0&&{initialMessage:n},...o!==void 0&&{harnessId:o}}}async function it(e,t){!t.personaId&&!t.profileId&&!t.harnessId&&!t.providerConfigId||await e.request(A.set,{agentId:t.agentId,agent:{agentId:t.agentId,adapterId:t.adapterId,adapterName:t.adapterName,sessionId:t.sessionId,role:t.role,status:`idle`,personaId:t.personaId,profileId:t.profileId,harnessId:t.harnessId,providerConfigId:t.providerConfigId,createdAt:t.timestamp,lastActivityAt:t.timestamp,...t.model!==void 0&&{model:t.model},...t.cwd!==void 0&&{cwd:t.cwd},...t.compressionMode!==void 0&&{compressionMode:t.compressionMode}}})}async function at(e,t,n){try{await it(e,{agentId:t.agentId,adapterId:t.adapterId,adapterName:n.adapterName,sessionId:n.sessionId,role:n.role,timestamp:n.timestamp,personaId:n.personaId,profileId:n.profileId,harnessId:n.harnessId,providerConfigId:n.providerConfigId,compressionMode:n.compressionMode,model:n.model,cwd:n.cwd})}catch(r){console.error(`[attach-handler] Failed to persist agent identity, rolling back started agent`,{sessionId:n.sessionId,agentId:t.agentId,adapterId:t.adapterId,error:r});try{await e.request(g.stopAgent,{adapterId:t.adapterId,agentId:t.agentId})}catch(e){console.error(`[attach-handler] Failed to rollback started agent after identity persistence failure`,{sessionId:n.sessionId,agentId:t.agentId,adapterId:t.adapterId,error:e})}throw r}}async function ot(t,n,r,i,a,o){let{turn:s}=await t.request(e.create,{sessionId:r}),c=new G({sessionId:r,agentIds:[i],turnId:s.turnId,turnNumber:s.turnNumber});return c.addMessage(a),n.set(r,c),await t.emit(x.turn.started,{sessionId:r,turnId:c.turnId,turnNumber:c.turnNumber,messageId:a,agentIds:[...c.agentIds]}),await t.emit(x.user_message.sent,{sessionId:r,turnId:c.turnId,turnNumber:c.turnNumber,messageId:a,content:o,agentIds:[...c.agentIds]}),await t.emit(x.user_message.acknowledged,{sessionId:r,turnId:c.turnId,turnNumber:c.turnNumber,messageId:a,agentId:i}),{messageId:a,turnId:c.turnId}}const st={id:`messages-to-context`,label:`Export as Context`,description:`Convert messages to context JSON (final step)`,category:`extraction`,async execute(e){let t=e.map(e=>({role:e.role,content:e.blocks.map(e=>e.type===`text`?e.content:e.type===`reasoning`?`[reasoning: ${e.content}]`:e.type===`tool_call`?`[tool: ${e.name}]`:e.type===`tool_output`?e.output:``).filter(Boolean).join(`
12
- `)})),n=t.reduce((e,t)=>e+t.content.length,0),r=Math.ceil(n/4);return{kind:`context`,json:{type:`compressed-messages`,messageCount:e.length,messages:t},tokenEstimate:r}}},ct={id:`llm-summarize`,label:`Summarize`,description:`LLM-generated summary of selected messages`,category:`transformation`,async execute(e){return{kind:`messages`,messages:e}}};function lt(e){let t=[];for(let n of e){let e=n.blocks.filter(e=>e.type===`text`).map(e=>e.content).join(`
13
- `);e&&(n.role===`user`?t.push(`[human]\n${e}\n[/human]`):n.role===`assistant`&&t.push(`[assistant]\n${e}\n[/assistant]`))}return`<conversation>\n${t.join(`
14
-
15
- `)}\n</conversation>`}function ut(e){return{id:`llm-extract`,label:`LLM Extract`,description:`Extract structured context using a cheap LLM model (requires virtualModelId in options)`,category:`extraction`,async execute(t,n){let r={kind:`messages`,messages:t},i=n?.virtualModelId;if(typeof i!=`string`)return r;let a=(typeof n?.sessionId==`string`&&n.sessionId.length>0?n.sessionId:void 0)??t[0]?.sessionId;if(typeof a!=`string`||a.length===0)return r;try{let n=await e.request(_.resolve,{selection:{kind:`virtual-model`,virtualModelId:i},context:{sessionId:a}}),{adapterId:r}=await e.request(oe.resolveId,{adapterName:n.adapterName}),o=lt(t),s=n.providerConfigId?await se(e,n.providerConfigId):void 0,{text:c}=await e.request(g.infer,{adapterId:r,prompt:o,model:n.model,systemPrompt:`You are a context extraction assistant. Analyze the following conversation and extract structured information. Respond with ONLY valid JSON matching this exact schema — no markdown, no explanation, no code fences:
16
-
17
- {
18
- "resolved_items": ["string — completed work with resolution details"],
19
- "known_bugs": [{ "issue": "string", "location": "string", "impact": "string" }],
20
- "todos": [{ "issue": "string", "location": "string", "priority": "high|medium|low" }],
21
- "key_decisions_and_rationale": ["string — decision with reasoning"],
22
- "technical_details": {
23
- "files": ["string — file paths mentioned"],
24
- "schemas": {},
25
- "apis": ["string — API endpoints or contracts"],
26
- "config": {}
27
- },
28
- "constraints_and_requirements": ["string — constraints or non-negotiable requirements"],
29
- "current_state": "string — one paragraph summary of where work stands now",
30
- "roadmap": ["string — future work items in priority order"],
31
- "data_flows": ["string — key data movement patterns"],
32
- "component_interactions": { "ComponentName": "string — description of its role" },
33
- "key_files": { "filepath": "string — what this file does" },
34
- "helpful_hint": ["string — quick reference hints for resuming work"]
35
- }
36
-
37
- Rules:
38
- - Omit array items you have no evidence for (prefer empty array over fabrication).
39
- - current_state MUST be present; write "No summary available" if you cannot determine it.
40
- - Extract only facts stated or clearly implied in the conversation. Do not invent.
41
- - key_files and component_interactions should only include items explicitly mentioned.`,...s!==void 0&&{providerContext:s}}),l=c.trim().replace(/^```(?:json)?\s*/i,``).replace(/\s*```$/i,``).trim(),u=JSON.parse(l),d=p.parse(u),f=Math.ceil(JSON.stringify(d).length/4);return{kind:`context`,json:{...d},tokenEstimate:f}}catch(e){return console.warn(`[llm-extract] action failed`,{action:`llm-extract`,sessionId:a,error:e}),r}}}}let Y=!1,X=!1;function Z(e){Y||(Y=!0,N.register(ue),N.register(de),N.register(st),N.register(ct)),e&&!X&&(X=!0,N.register(ut(e)))}function dt(){Y=!1,X=!1}function ft(e){return Z(e),e.on(x.compress,async t=>{let{sessionId:n,pipeline:r}=t.payload,{messages:a}=await e.request(f.getBySession,{sessionId:n,limit:1e4}),o=await P(a,r,{sessionId:n});if(!o.contextJson)throw Error(`[compress-handler] Compress pipeline must produce context JSON (sessionId=${n})`);let s=a.map(e=>e.messageId),c=Math.ceil(a.reduce((e,t)=>e+JSON.stringify(t.blocks).length/4,0)),l=crypto.randomUUID();await e.request(i.append,{event:{sessionId:n,eventId:l,timestamp:Date.now(),type:`squash`,payload:{summaryJson:JSON.stringify(o.contextJson),tokensBefore:c,tokensAfter:o.tokenEstimate,compressedMessageIds:s}}}),await e.emit(x.compressed,{sessionId:n,eventId:l}),t.setResult({eventId:l,contextJson:o.contextJson,tokensBefore:c,tokensAfter:o.tokenEstimate})})}async function pt(e,t,n,r){if(!n.segments?.length)return!1;let i=[],a;do{let{messages:n,nextCursor:o}=await e.request(f.getBySession,{sessionId:t,order:`asc`,limit:200,after:a});i.push(...n),a=r&&n.some(e=>e.messageId===r)?void 0:o??void 0}while(a);if(i.length===0)throw Error(`[fork-handler] Segment transforms require at least one source message (sourceSessionId=${t})`);let o=i;if(r){let e=i.findIndex(e=>e.messageId===r);if(e===-1)throw Error(`[fork-handler] Fork point message not found in source message list: ${r} (sourceSessionId=${t})`);o=i.slice(0,e+1)}let s=new Map;o.forEach((e,t)=>{s.set(e.messageId,t)});let c=-1;for(let e of n.segments){if(!e.fromMessageId||!e.toMessageId)throw Error(`[fork-handler] Segment must have fromMessageId and toMessageId (sourceSessionId=${t})`);let n=s.get(e.fromMessageId),r=s.get(e.toMessageId);if(n===void 0||r===void 0)throw Error(`[fork-handler] Segment boundaries must reference source messages: ${e.fromMessageId}..${e.toMessageId} (sourceSessionId=${t})`);if(n>r)throw Error(`[fork-handler] Segment range is reversed: ${e.fromMessageId}..${e.toMessageId} (sourceSessionId=${t})`);if(n<=c)throw Error(`[fork-handler] Segments must not overlap and must be ordered (sourceSessionId=${t})`);if(n!==c+1)throw Error(`[fork-handler] Segments must be contiguous without gaps (sourceSessionId=${t})`);c=r}if(c!==o.length-1)throw Error(`[fork-handler] Segments must cover the entire source message range (sourceSessionId=${t})`);return!0}function mt(e){if(!e.segments?.length&&e.appliedPipeline?.length)for(let t of e.appliedPipeline){let e=N.get(t.actionId);if(!e)throw Error(`[fork-handler] Unknown action in pipeline: ${t.actionId}`);if(e.category!==`transformation`)throw Error(`[fork-handler] Action '${t.actionId}' is category '${e.category}', but only 'transformation' actions are allowed in fork transforms`)}}function ht(e){return e.on(x.fork,async t=>{let{sourceSessionId:n,fromMessageId:r,name:i,branchKind:a=`fork`,transforms:o,targetWorkingDirectory:s,existingSessionId:c}=t.payload,{session:l}=await e.request(x.get,{sessionId:n});if(!l)throw Error(`[fork-handler] Source session not found: ${n}`);if(r){let{message:t}=await e.request(f.get,{messageId:r});if(!t)throw Error(`[fork-handler] Fork point message not found: ${r} (sourceSessionId=${n})`);if(t.sessionId!==n)throw Error(`[fork-handler] Fork point message ${r} does not belong to session ${n}`)}o&&(await pt(e,n,o,r)||mt(o));let{sessionId:u}=await e.request(x.create,{...c?{sessionId:c}:{},parentSessionId:n,forkPointMessageId:r,branchKind:a,forkTransforms:o,...i?{title:i}:{},...s?{targetWorkingDirectory:s}:{}});await e.emit(x.branch.created,{sessionId:n,childSessionId:u,parentSessionId:n,kind:a,forkPointMessageId:r,transforms:o}),await e.emit(x.forked,{parentSessionId:n,childSessionId:u,forkPoint:r}),t.setResult({sessionId:u})})}function gt(e){return e.on(x.merge,async t=>{let{parentSessionId:n,childSessionId:r,summary:a}=t.payload,o=`merge:${n}:${r}`,{session:s}=await e.request(x.get,{sessionId:n});if(!s)throw Error(`[merge-handler] Parent session not found: ${n}`);if(s.status!==`active`)throw Error(`[merge-handler] Parent session is not active: ${n}`);let{session:c}=await e.request(x.get,{sessionId:r});if(!c)throw Error(`[merge-handler] Child session not found: ${r}`);if(c.parentSessionId!==n)throw Error(`[merge-handler] Invalid parent-child relationship: session ${r} is not a child of ${n}`+(c.parentSessionId?` (actual parent: ${c.parentSessionId})`:` (session has no parent)`));await e.emit(x.merging,{parentSessionId:n,childSessionId:r});let l=a??`Child session ${r} merged.`;if(!(await e.request(x.close,{sessionId:r})).success)throw Error(`[merge-handler] Failed to close child session: ${r}`);let u=JSON.stringify({handoff:l});await e.request(i.append,{event:{sessionId:n,eventId:o,timestamp:Date.now(),type:`branch.merged`,payload:{childSessionId:r,parentSessionId:n,resultJson:u}}}),await e.emit(x.branch.merged,{sessionId:n,childSessionId:r,parentSessionId:n,resultJson:u}),await e.emit(x.merged,{parentSessionId:n,childSessionId:r,handoff:l}),t.setResult({success:!0,handoff:l})})}async function Q(t,n,r,i,a){if(!(n.parentSessionId!==void 0&&(n.contextInheritance===`parent-history`||n.contextInheritance===void 0&&n.branchKind!==`subagent`))||i?.messageHistory)return i;let{turns:o}=await t.request(e.getBySession,{sessionId:r,limit:2});if(!(a&&o.length<=1))return i;let s=(await L(t,r)).messages.map(z);return{...i,messageHistory:s,isFirstTurn:!0,hasNewTransforms:n.forkTransforms!==void 0}}const $={enabled:!0,template:`User changed working directory from {oldCwd} to {newCwd}`};function _t(e,t,n){return e.replace(/\{oldCwd\}/g,t).replace(/\{newCwd\}/g,n)}function vt(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.enabled==`boolean`&&typeof t.template==`string`}async function yt(e){try{let t=await e.request(m.get,{key:{scope:`global`,surface:`ui`,context:`cwdChangeNotification`},category:`chat-display`});if(t.value!==null&&t.value!==void 0)return vt(t.value)?t.value:$}catch{}return $}function bt(e){let{baseContext:t,recoveryContext:n,isRecovered:r,isSwapped:i,swapMeta:a,cwdMessage:o,freshMessageHistory:s}=e,c=r&&n?{...t,...n}:t;if(!i)return c;let l=a&&o!==void 0?{cwdChange:{previousCwd:a.previousCwd,newCwd:a.newCwd,message:o}}:void 0;return c={...c,hasConnectorSwap:!0,...s!==void 0&&{messageHistory:s},...l&&{turnContext:{...c?.turnContext,...l}}},c}async function xt(e){let{bus:t,session:n,turn:r,message:i,messageId:a,deliveryMode:o,onTurnComplete:s,agent:c,agentContext:l,responseSchema:u}=e;try{await t.request(y.sendMessage,{agentId:c.agentId,adapterId:c.adapterId,message:i,deliveryMode:o,messageId:a,turnId:r.turnId,sessionId:n.sessionId,sessionContext:l,...u!==void 0&&{responseSchema:u}}),await t.emit(x.user_message.acknowledged,{sessionId:r.sessionId,turnId:r.turnId,turnNumber:r.turnNumber,messageId:a,agentId:c.agentId})}catch(e){if(e instanceof O){await t.emit(x.user_message.completed,{sessionId:r.sessionId,turnId:r.turnId,turnNumber:r.turnNumber,messageId:a,agentId:c.agentId,outcome:`cancelled`});let e=r.markAgentCompleted(c.agentId);e.turnComplete&&await s(r,e.result);return}let n=e instanceof Error?e.message:String(e),i=r.markAgentErrored(c.agentId,n);await t.emit(x.user_message.completed,{sessionId:r.sessionId,turnId:r.turnId,turnNumber:r.turnNumber,messageId:a,agentId:c.agentId,outcome:`error`,error:n}),i.turnComplete&&await s(r,i.result)}}async function St(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g){let _=await Q(e,t,t.sessionId,c,u),v=l?await l.enrichForDeliveryMode(_?.messageHistory,a.turnId,o):_?.messageHistory,y=_?{..._,messageHistory:v}:void 0,b=p?.size?await yt(e):$,x=n.map(async n=>{let c=m?.get(n.agentId),l=c&&b.enabled?_t(b.template,c.previousCwd,c.newCwd):void 0;await xt({bus:e,session:t,turn:a,message:r,messageId:i,deliveryMode:o,onTurnComplete:s,agent:n,agentContext:bt({baseContext:y,recoveryContext:d,isRecovered:f?.has(n.agentId)??!1,isSwapped:p?.has(n.agentId)??!1,swapMeta:c,cwdMessage:l,freshMessageHistory:h}),responseSchema:g})});await Promise.all(x)}export{M as A,he as C,me as D,_e as E,A as F,le as M,ce as N,L as O,k as P,ve as S,B as T,K as _,ft as a,Ae as b,qe as c,q as d,J as f,He as g,Ve as h,ht as i,j,N as k,Ke as l,Ue as m,Q as n,Z as o,We as p,gt as r,dt as s,St as t,Ge as u,Be as v,ge as w,Se as x,G as y};
@@ -1 +0,0 @@
1
- import{t as e}from"./schemas-BCIuTWRl2.mjs";import{createBusNamespace as t}from"@makaio/framework/core";const n=t(`kernel:cli`,e),r=n.subjects;export{r as n,n as t};
@@ -1 +0,0 @@
1
- import{o as e}from"./chunk-DTipWd-i.mjs";import{t}from"./ajv-BA2z5ztb.mjs";import{z as n}from"zod";import{execFile as r}from"node:child_process";import{isAbsolute as i,relative as a,resolve as o}from"node:path";import{realpathSync as s}from"node:fs";import{localSubject as c}from"@makaio/framework/core";import{NoHandlerError as l}from"@makaio/framework/bus";import{ArtifactSubjects as u,ExecutionLinkListQuerySchema as d,ExecutionLinkSchema as f,ExecutionListQuerySchema as p,ExecutionStatusSchema as m,GateInstanceListQuerySchema as h,SpanRecordSchema as ee,SubagentSubjects as g,WorkflowDefinitionSchema as _,WorkflowExecutionSchema as v,WorkflowFrameStateSchema as y,WorkflowGateInstanceSchema as b,WorkflowListQuerySchema as te,WorkflowRunContextSchema as x,WorkflowSchemas as ne,WorkflowSubjects as re,WorkflowSubjects as S,createStepCancelSubject as ie}from"@makaio/framework/contracts";import{createStorageNamespaceDefinition as ae}from"@makaio/framework/storage";import{index as C,primaryKey as oe,uniqueIndex as se}from"drizzle-orm/sqlite-core";import{index as w,primaryKey as ce,uniqueIndex as le}from"drizzle-orm/pg-core";import{defineDualTable as T}from"@makaio/framework/storage/drizzle";import{sql as ue}from"drizzle-orm";import{evaluateSync as E,resolveTemplate as D}from"@makaio/framework/expression";import*as de from"node:os";function fe(e){return{scopeType:e.textEnum(`scope_type`,{enum:[`global`,`workspace`,`session`,`external`]}).notNull().$type(),scopeKind:e.text(`scope_kind`).notNull().default(``),scopeId:e.text(`scope_id`).notNull().default(``)}}const pe=T(`workflow_definitions`,e=>({id:e.text(`id`).primaryKey(),name:e.text(`name`).notNull(),description:e.text(`description`),root:e.jsonCol(`root`).notNull(),inputSchema:e.jsonCol(`input_schema`),configSchema:e.jsonCol(`config_schema`),outputSchema:e.jsonCol(`output_schema`),artifact:e.jsonCol(`artifact`),triggers:e.jsonCol(`triggers`),...fe(e),createdAt:e.epochMs(`created_at`).notNull(),updatedAt:e.epochMs(`updated_at`).notNull(),canvasLayout:e.jsonCol(`canvas_layout`),source:e.jsonCol(`source`),executionHints:e.jsonCol(`execution_hints`)}),{sqlite:e=>[se(`uniq_workflow_definitions_name_scope`).on(e.name,e.scopeType,e.scopeKind,e.scopeId),C(`idx_workflow_definitions_scope`).on(e.scopeType,e.scopeKind,e.scopeId)],postgres:e=>[le(`uniq_workflow_definitions_name_scope`).on(e.name,e.scopeType,e.scopeKind,e.scopeId),w(`idx_workflow_definitions_scope`).on(e.scopeType,e.scopeKind,e.scopeId)]}),me=pe.sqlite,O=T(`workflow_executions`,e=>({id:e.text(`id`).primaryKey(),workflowId:e.text(`workflow_id`).notNull(),coordinatorSessionId:e.text(`coordinator_session_id`),status:e.textEnum(`status`,{enum:[`pending`,`running`,`paused`,`completed`,`failed`,`cancelled`]}).notNull(),inputs:e.jsonCol(`inputs`),error:e.text(`error`),reason:e.text(`reason`),startedAt:e.epochMs(`started_at`).notNull(),completedAt:e.epochMs(`completed_at`),triggerPayload:e.jsonCol(`trigger_payload`),artifactKind:e.text(`artifact_kind`),artifactId:e.text(`artifact_id`),...fe(e)}),{sqlite:e=>[C(`idx_workflow_executions_status`).on(e.status),C(`idx_workflow_executions_scope_started`).on(e.scopeType,e.scopeKind,e.scopeId,e.startedAt),C(`idx_workflow_executions_workflow_started`).on(e.workflowId,e.startedAt),C(`idx_workflow_executions_artifact`).on(e.artifactKind,e.artifactId,e.startedAt)],postgres:e=>[w(`idx_workflow_executions_status`).on(e.status),w(`idx_workflow_executions_scope_started`).on(e.scopeType,e.scopeKind,e.scopeId,e.startedAt),w(`idx_workflow_executions_workflow_started`).on(e.workflowId,e.startedAt),w(`idx_workflow_executions_artifact`).on(e.artifactKind,e.artifactId,e.startedAt)]}),he=O.sqlite,ge=T(`workflow_execution_frames`,e=>({frameId:e.text(`frame_id`).primaryKey(),executionId:e.text(`execution_id`).notNull().references(()=>O.columnPair(`id`),{onDelete:`cascade`}),nodeId:e.text(`node_id`).notNull(),nodeType:e.text(`node_type`).notNull().$type(),path:e.jsonCol(`path`).notNull(),parentFrameId:e.text(`parent_frame_id`),status:e.text(`status`).notNull().default(`pending`).$type(),attempt:e.int4(`attempt`).notNull().default(0),iteration:e.int4(`iteration`),branchKey:e.text(`branch_key`),output:e.jsonCol(`output`),outputPresent:e.bool(`output_present`).notNull().default(!1),error:e.text(`error`),startedAt:e.epochMs(`started_at`),completedAt:e.epochMs(`completed_at`)}),{sqlite:e=>[C(`idx_workflow_execution_frames_execution`).on(e.executionId),C(`idx_workflow_execution_frames_parent`).on(e.parentFrameId)],postgres:e=>[w(`idx_workflow_execution_frames_execution`).on(e.executionId),w(`idx_workflow_execution_frames_parent`).on(e.parentFrameId)]}),_e=ge.sqlite,ve=T(`workflow_gate_instances`,e=>({id:e.text(`id`).primaryKey(),executionId:e.text(`execution_id`).notNull().references(()=>O.columnPair(`id`),{onDelete:`cascade`}),nodeId:e.text(`node_id`).notNull(),frameId:e.text(`frame_id`).notNull(),schema:e.jsonCol(`schema`).notNull(),prompt:e.text(`prompt`),status:e.text(`status`).notNull().default(`waiting`).$type(),autoAction:e.textEnum(`auto_action`,{enum:[`approve`,`reject`]}).notNull().default(`reject`),timeoutMs:e.int4(`timeout_ms`),resumeData:e.jsonCol(`resume_data`),reason:e.text(`reason`),resumeDataPresent:e.bool(`resume_data_present`).notNull().default(!1),createdAt:e.epochMs(`created_at`).notNull(),resolvedAt:e.epochMs(`resolved_at`)}),{sqlite:e=>[C(`idx_workflow_gate_instances_execution`).on(e.executionId),C(`idx_workflow_gate_instances_frame`).on(e.frameId)],postgres:e=>[w(`idx_workflow_gate_instances_execution`).on(e.executionId),w(`idx_workflow_gate_instances_frame`).on(e.frameId)]}),ye=ve.sqlite,be=T(`workflow_step_spans`,e=>({executionId:e.text(`execution_id`).notNull().references(()=>O.columnPair(`id`),{onDelete:`cascade`}),frameId:e.text(`frame_id`).notNull(),stepId:e.text(`step_id`).notNull(),stepType:e.text(`step_type`).notNull(),status:e.text(`status`).$type().notNull(),startedAt:e.epochMs(`started_at`),completedAt:e.epochMs(`completed_at`),durationMs:e.int4(`duration_ms`),inputTokens:e.int4(`input_tokens`),outputTokens:e.int4(`output_tokens`),estimatedCost:e.float8(`estimated_cost`),toolCallCount:e.int4(`tool_call_count`),input:e.text(`input`),output:e.text(`output`)}),{sqlite:e=>[oe({columns:[e.executionId,e.frameId]}),C(`idx_workflow_step_spans_status`).on(e.status)],postgres:e=>[ce({columns:[e.executionId,e.frameId]}),w(`idx_workflow_step_spans_status`).on(e.status)]}),xe=be.sqlite,k=T(`workflow_execution_links`,e=>({sourceExecutionId:e.text(`source_execution_id`).notNull().references(()=>O.columnPair(`id`),{onDelete:`cascade`}),targetExecutionId:e.text(`target_execution_id`).notNull().references(()=>O.columnPair(`id`),{onDelete:`cascade`}),linkType:e.text(`link_type`).$type().notNull(),metadata:e.jsonCol(`metadata`)}),{sqlite:e=>[oe({columns:[e.sourceExecutionId,e.targetExecutionId]}),C(`idx_workflow_execution_links_target`).on(e.targetExecutionId)],postgres:e=>[ce({columns:[e.sourceExecutionId,e.targetExecutionId]}),w(`idx_workflow_execution_links_target`).on(e.targetExecutionId)]}),A=k.sqlite,j=T(`workflow_run_contexts`,e=>({executionId:e.text(`execution_id`).primaryKey().references(()=>O.columnPair(`id`),{onDelete:`cascade`}),workflowId:e.text(`workflow_id`).notNull(),coordinatorSessionId:e.text(`coordinator_session_id`).notNull(),sourceKind:e.text(`source_kind`).notNull(),sourcePath:e.text(`source_path`),sourceFilename:e.text(`source_filename`),sourceCode:e.text(`source_code`),definitionSnapshot:e.jsonCol(`definition_snapshot`),workerManifest:e.jsonCol(`worker_manifest`).notNull(),inputs:e.jsonCol(`inputs`),config:e.jsonCol(`config`).notNull().default(ue`'{}'`),triggerPayload:e.jsonCol(`trigger_payload`).notNull(),artifactRef:e.jsonCol(`artifact_ref`),executionHints:e.jsonCol(`execution_hints`),dispatchMetadata:e.jsonCol(`dispatch_metadata`),scopeType:e.textEnum(`scope_type`,{enum:[`global`,`workspace`,`session`,`external`]}).notNull().default(`global`).$type(),scopeKind:e.text(`scope_kind`).notNull().default(``),scopeId:e.text(`scope_id`).notNull().default(``),cancelSubject:e.text(`cancel_subject`).notNull(),context:e.jsonCol(`context`).notNull(),env:e.jsonCol(`env`).notNull(),createdAt:e.epochMs(`created_at`).notNull(),suspensionStrategy:e.text(`suspension_strategy`).$type()}),{sqlite:e=>[C(`idx_run_contexts_workflow`).on(e.workflowId)],postgres:e=>[w(`idx_run_contexts_workflow`).on(e.workflowId)]}),Se=j.sqlite,M=T(`worklog_summaries`,e=>({executionId:e.text(`execution_id`).primaryKey().references(()=>O.columnPair(`id`),{onDelete:`cascade`}),workflowId:e.text(`workflow_id`).notNull(),workflowName:e.text(`workflow_name`),status:e.textEnum(`status`,{enum:[`pending`,`running`,`paused`,`completed`,`failed`,`cancelled`]}).notNull(),startedAt:e.epochMs(`started_at`).notNull(),completedAt:e.epochMs(`completed_at`),durationMs:e.int4(`duration_ms`),totalInputTokens:e.int4(`total_input_tokens`),totalOutputTokens:e.int4(`total_output_tokens`),totalEstimatedCost:e.float8(`total_estimated_cost`),error:e.text(`error`),failedNodeId:e.text(`failed_node_id`)}),{sqlite:e=>[C(`idx_worklog_summaries_workflow_started`).on(e.workflowId,e.startedAt),C(`idx_worklog_summaries_status`).on(e.status)],postgres:e=>[w(`idx_worklog_summaries_workflow_started`).on(e.workflowId,e.startedAt),w(`idx_worklog_summaries_status`).on(e.status)]}),Ce=M.sqlite,we=T(`worklog_frame_entries`,e=>({frameId:e.text(`frame_id`).primaryKey(),executionId:e.text(`execution_id`).notNull().references(()=>O.columnPair(`id`),{onDelete:`cascade`}),nodeId:e.text(`node_id`).notNull(),nodeType:e.text(`node_type`).notNull().$type(),path:e.jsonCol(`path`).notNull(),status:e.textEnum(`status`,{enum:[`pending`,`running`,`waiting`,`completed`,`failed`,`skipped`,`cancelled`]}).notNull(),attempt:e.int4(`attempt`).notNull().default(0),iteration:e.int4(`iteration`),branchKey:e.text(`branch_key`),startedAt:e.epochMs(`started_at`),completedAt:e.epochMs(`completed_at`),durationMs:e.int4(`duration_ms`),inputTokens:e.int4(`input_tokens`),outputTokens:e.int4(`output_tokens`),estimatedCost:e.float8(`estimated_cost`),error:e.text(`error`)}),{sqlite:e=>[C(`idx_worklog_frame_entries_execution`).on(e.executionId)],postgres:e=>[w(`idx_worklog_frame_entries_execution`).on(e.executionId)]}),Te=we.sqlite,Ee=T(`worklog_artifact_writes`,e=>({id:e.text(`id`).primaryKey(),executionId:e.text(`execution_id`).notNull().references(()=>O.columnPair(`id`),{onDelete:`cascade`}),frameId:e.text(`frame_id`).notNull(),nodeId:e.text(`node_id`).notNull(),artifact:e.jsonCol(`artifact`).notNull(),revision:e.text(`revision`),writtenAt:e.epochMs(`written_at`).notNull()}),{sqlite:e=>[C(`idx_worklog_artifact_writes_execution`).on(e.executionId)],postgres:e=>[w(`idx_worklog_artifact_writes_execution`).on(e.executionId)]}),De=Ee.sqlite,Oe=T(`worklog_gate_events`,e=>({id:e.text(`id`).primaryKey(),executionId:e.text(`execution_id`).notNull().references(()=>O.columnPair(`id`),{onDelete:`cascade`}),nodeId:e.text(`node_id`).notNull(),frameId:e.text(`frame_id`).notNull(),status:e.textEnum(`status`,{enum:[`waiting`,`resumed`,`rejected`,`timed-out`,`cancelled`]}).notNull().$type(),prompt:e.text(`prompt`),openedAt:e.epochMs(`opened_at`).notNull(),resolvedAt:e.epochMs(`resolved_at`),resumeData:e.jsonCol(`resume_data`)}),{sqlite:e=>[C(`idx_worklog_gate_events_execution`).on(e.executionId),C(`idx_worklog_gate_events_status`).on(e.status)],postgres:e=>[w(`idx_worklog_gate_events_execution`).on(e.executionId),w(`idx_worklog_gate_events_status`).on(e.status)]}),ke=Oe.sqlite,Ae=n.object({executionId:n.string().min(1),status:m.optional(),error:n.string().nullable().optional(),reason:n.string().nullable().optional(),completedAt:n.number().nullable().optional()}),je=ae(`workflow`,{schemas:{get:{request:n.object({id:n.string()}),response:n.object({workflow:_.nullable()})},set:{request:n.object({workflow:_}),response:n.object({id:n.string()})},delete:{request:n.object({id:n.string()}),response:n.object({deleted:n.boolean()})},list:{request:te,response:n.object({workflows:n.array(_)})},getExecution:{request:n.object({executionId:n.string()}),response:n.object({execution:v.nullable()})},setExecution:{request:n.object({execution:v}),response:n.object({id:n.string()})},setExecutionStart:{request:n.object({execution:v,runContext:x}),response:n.object({id:n.string(),executionId:n.string()})},updateExecution:{request:Ae,response:n.object({success:n.boolean()})},cancelPausedExecution:{request:n.object({executionId:n.string().min(1),completedAt:n.number(),reason:n.string().optional()}),response:n.object({cancelled:n.boolean(),gates:n.array(b.extend({status:n.literal(`cancelled`)}))})},listExecutions:{request:p,response:n.object({executions:n.array(v)})},setFrame:{request:n.object({executionId:n.string().min(1),frame:y}),response:n.object({frameId:n.string()})},getFrame:{request:n.object({frameId:n.string().min(1)}),response:n.object({frame:y.nullable()})},listFrames:{request:n.object({executionId:n.string().min(1)}),response:n.object({frames:n.array(y)})},setGateInstance:{request:n.object({gate:b}),response:n.object({id:n.string()})},resolveWaitingGateInstance:{request:n.object({gate:b.extend({status:n.enum([`resumed`,`rejected`])})}),response:n.object({accepted:n.boolean()})},restorePausedGateResumeState:{request:n.object({execution:v.extend({status:n.literal(`paused`)}),gate:b.extend({status:n.literal(`waiting`)})}),response:n.object({executionId:n.string(),gateId:n.string()})},getGateInstance:{request:n.object({executionId:n.string().min(1),nodeId:n.string().min(1),frameId:n.string().min(1).optional()}),response:n.object({gate:b.nullable()})},listGateInstances:{request:h,response:n.object({gates:n.array(b)})},listPausedGateTimeouts:c({request:n.object({}),response:n.object({gates:n.array(b)})}),setSpan:{request:n.object({span:ee}),response:n.object({id:n.string()})},listSpans:{request:n.object({executionId:n.string()}),response:n.object({spans:n.array(ee)})},setExecutionLink:{request:n.object({link:f}),response:n.object({id:n.string()})},listExecutionLinks:{request:d,response:n.object({links:n.array(f)})},setRunContext:c({request:n.object({runContext:x}),response:n.object({executionId:n.string()})}),getRunContext:c({request:n.object({executionId:n.string().min(1)}),response:n.object({runContext:x.nullable()})})},extensions:{drizzle:{workflowDefinitions:me,workflowExecutions:he,workflowExecutionFrames:_e,workflowGateInstances:ye,workflowStepSpans:xe,workflowExecutionLinks:A,workflowRunContexts:Se,worklogSummaries:Ce,worklogFrameEntries:Te,worklogArtifactWrites:De,worklogGateEvents:ke}}}),N=je.subjects,Me={stepTimeoutMs:300*1e3,stepCooldownMs:500,busAuth:{kind:`none`},platformDefaults:{cwd:process.cwd()},cancelTimeoutMs:1e4};async function P(e,t,n){if(!(await e.request(N.updateExecution,{executionId:t.id,status:n.status,error:n.error,reason:n.reason,completedAt:n.completedAt})).success)throw Error(`Workflow execution not found: ${t.id}`)}async function Ne(e,t,n,r){t.status=`completed`,t.completedAt=Date.now();try{await P(e.bus,t,{status:t.status,completedAt:t.completedAt}),await e.bus.emit(S.execution.completed,{executionId:n,workflowId:t.workflowId,totalDuration:t.completedAt-r,completedAt:t.completedAt})}finally{e.activeExecutions.delete(n)}}async function Pe(e,t,n,r,i){t.status=`failed`,t.error=r,t.completedAt=Date.now();try{await P(e.bus,t,{status:t.status,error:t.error,completedAt:t.completedAt});try{await i?.()}catch(e){console.error(`[WorkflowFinalizer] Failed to run failure pre-emit hook:`,e)}await e.bus.emit(S.execution.failed,{executionId:n,workflowId:t.workflowId,error:r,completedAt:t.completedAt})}finally{e.activeExecutions.delete(n)}}function Fe(e,t,n){let{activeRunnerSteps:r,bus:i}=e,a=`${t}:`;for(let[e,o]of r){if(!e.startsWith(a))continue;let r=e.slice(a.length);o.controller.abort(),i.emit(ie(o.cancelSubject),{executionId:t,stepId:r,reason:n}).catch(t=>{console.error(`[WorkflowFinalizer] Failed to emit cancellation for ${e}:`,t)})}}async function Ie(e,t,n){let r=await e.bus.request(N.getExecution,{executionId:t});if(r.execution==null)return!1;let i=r.execution.workflowId;if(i===void 0)throw Error(`Paused execution ${t} is missing stored workflowId`);let a=Date.now(),{cancelled:o,gates:s}=await e.bus.request(N.cancelPausedExecution,{executionId:t,completedAt:a,reason:n});if(!o)return!1;for(let n of s)await e.bus.emit(S.gate.resolved,{executionId:t,stepId:n.nodeId,stepType:`gate`,frameId:n.frameId,source:`cancelled`}).catch(e=>{console.error(`[WorkflowFinalizer] Failed to emit cancelled gate resolution for ${n.frameId}:`,e)});return await e.bus.emit(S.execution.cancelled,{executionId:t,workflowId:i,reason:n,completedAt:a}),e.activeExecutions.delete(t),!0}async function Le(e,t,n){let r=e.activeExecutions.get(t);if(!r||r.execution.status!==`running`)return Ie(e,t,n);let{execution:i}=r;i.status=`cancelled`,i.reason=n,i.completedAt=Date.now();try{for(let[n,r]of e.shellAbortControllers)n.startsWith(`${t}:`)&&(r.abort(),e.shellAbortControllers.delete(n));Fe(e,t,n),await P(e.bus,i,{status:i.status,reason:n,completedAt:i.completedAt}),await e.bus.emit(S.execution.cancelled,{executionId:t,workflowId:i.workflowId,reason:n,completedAt:i.completedAt})}finally{e.activeExecutions.delete(t)}return!0}function Re(e){return`${e}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`}function ze(e,t,n){let r=e?D(e,n):t,c=o(t),l=o(i(r)?r:o(t,r)),u,d;try{u=s(c),d=s(l)}catch{return null}let f=a(process.platform===`win32`?u.toLowerCase():u,process.platform===`win32`?d.toLowerCase():d);return f===``||!f.startsWith(`..`)&&!i(f)?d:null}function Be(e){return e instanceof Error&&(`code`in e||`killed`in e)}function Ve(e){let t=e[0];return t===void 0||t.trim()===``?null:t}function He(e){let{command:t,cwd:n,env:i,timeoutMs:a,signal:o}=e,s=Ve(t);if(s===null)return Promise.reject(Error(`Shell step command is empty`));let c=t.slice(1);return new Promise((e,t)=>{let l=null,u=!1,d=r(s,c,{cwd:n,env:{...process.env,...i},timeout:0,maxBuffer:10*1024*1024,shell:!1},(n,r,i)=>{n?t(Object.assign(n,{stdout:r,stderr:i,aborted:u})):e({stdout:r,stderr:i})}),f=()=>{d.exitCode===null&&(d.kill(`SIGTERM`),l=setTimeout(()=>{d.exitCode===null&&d.kill(`SIGKILL`)},5e3))},p=setTimeout(()=>{f()},a);if(d.on(`close`,()=>{clearTimeout(p),l!==null&&clearTimeout(l)}),o){let e=()=>{u=!0,f()};o.aborted?e():(o.addEventListener(`abort`,e,{once:!0}),d.on(`close`,()=>o.removeEventListener(`abort`,e)))}})}async function Ue(e){let{step:t,workspaceRoot:n,expressionContext:r,signal:i}=e,a=ze(t.cwd,n,r);if(a===null)return{status:`failed`,error:`Shell step cwd '${t.cwd}' is outside workspace root '${n}'`};let o=t.command.map(e=>D(e,r));if(Ve(o)===null)return{status:`failed`,error:`Shell step command is empty`};let s=Object.fromEntries(Object.entries(t.env??{}).map(([e,t])=>[e,D(t,r)])),c=t.timeoutMs??3e5;try{let{stdout:e}=await He({command:o,cwd:a,env:s,timeoutMs:c,signal:i});return{status:`completed`,stdout:e}}catch(e){if(!Be(e))return{status:`failed`,error:String(e)};let t=e.aborted===!0,n=!t&&(e.killed===!0||e.signal!=null);return{status:`failed`,error:t?`Command cancelled`:n?`Command timed out after ${c}ms`:e.stderr?.trim()||e.stdout?.trim()||e.message}}}function We(e){let t={};for(let[n,r]of Object.entries(e))r.status===`completed`?t[n]={status:`completed`,output:r.output}:r.status===`skipped`&&(t[n]={status:`skipped`});return t}function F(e){let t={...e,input:e.inputs,steps:e.frames};return{...t,ctx:t}}function Ge(){return{context:{repoPath:process.cwd(),makaioHome:process.env.MAKAIO_HOME??`${de.homedir()}/.makaio`,os:process.platform===`win32`?`win32`:process.platform===`darwin`?`darwin`:`linux`,arch:process.arch},env:{}}}function Ke(e){return{...e,path:[...e.path]}}function qe(e){if(e===`station`||e===`delegate-agent`||e===`delegate-role`||e===`gate`)return e}function Je(e,t){let n=qe(t.nodeType);if(n===void 0||t.status!==`running`&&t.status!==`completed`&&t.status!==`failed`&&t.status!==`skipped`)return;let r=t.startedAt!==void 0&&t.completedAt!==void 0?Math.max(0,t.completedAt-t.startedAt):void 0;return{executionId:e,frameId:t.frameId,stepId:t.nodeId,stepType:n,status:t.status,...t.startedAt===void 0?{}:{startedAt:t.startedAt},...t.completedAt===void 0?{}:{completedAt:t.completedAt},...r===void 0?{}:{durationMs:r},...t.output===void 0?{}:{output:JSON.stringify(t.output)}}}var Ye=class e{executionId;workflowId;definition;execution;runtimeHandlers;bus;signal;frameRegistry;framePersistenceTasks=new Map;artifactBinding;constructor(e,t,n,r,i,a,o,s,c,l=Ge(),u={}){this.executionId=e,this.workflowId=t,this.definition=n,this.execution=r,this.runtimeHandlers=i,this.bus=a,this.signal=o,this.frameRegistry=s??new Map,this.artifactBinding=c,this.platformContext=l.context,this.env=l.env,this.suspensionStrategy=u.suspensionStrategy??`wait-in-process`,this.resumeFrames=u.resumeFrames}platformContext;env;suspensionStrategy;resumeFrames;withSignal(t){return new e(this.executionId,this.workflowId,this.definition,this.execution,this.runtimeHandlers,this.bus,t,this.frameRegistry,this.artifactBinding,{context:this.platformContext,env:this.env},{suspensionStrategy:this.suspensionStrategy,resumeFrames:this.resumeFrames})}buildExpressionContext(){return{inputs:this.execution.inputs,config:this.execution.config??{},trigger:this.execution.triggerPayload??{},frames:{},previousSteps:{}}}createFrame(e){let t=Re(`frm`),n=[...e.path,t],r={frameId:t,nodeId:e.nodeId,nodeType:e.nodeType,path:n,parentFrameId:e.parentFrameId,status:`pending`,attempt:0,iteration:e.iteration,branchKey:e.branchKey};return this.frameRegistry.set(t,r),this.persistFrame(r).catch(()=>void 0),r}async persistFrame(e,t={}){let n=t.requireFrameStorage===!0||this.suspensionStrategy!==`wait-in-process`,r=Ke(e),i=Je(this.executionId,r),a=(this.framePersistenceTasks.get(e.frameId)??Promise.resolve()).catch(()=>void 0).then(async()=>{n?await this.bus.request(N.setFrame,{executionId:this.executionId,frame:r}):await this.bus.requestOptional(N.setFrame,{executionId:this.executionId,frame:r}),i!==void 0&&await this.bus.requestOptional(N.setSpan,{span:i})}).catch(t=>{if(n)throw t;console.warn(`[RuntimeContext] Failed to persist frame ${e.frameId}:`,t)});this.framePersistenceTasks.set(e.frameId,a);try{await a}finally{this.framePersistenceTasks.get(e.frameId)===a&&this.framePersistenceTasks.delete(e.frameId)}}async updateFrame(e,t,n={}){let r=this.frameRegistry.get(e);if(!r)throw Error(`Frame not found: ${e}`);Object.assign(r,t),await this.persistFrame(r,n)}getFrame(e){return this.frameRegistry.get(e)}getFramesByNodeId(e){let t=[];for(let n of this.frameRegistry.values())n.nodeId===e&&t.push(n);return t.sort((e,t)=>(e.startedAt??0)-(t.startedAt??0))}async emitFrameStarted(e){try{await this.bus.emit(S.frame.started,{executionId:this.executionId,frameId:e.frameId,nodeId:e.nodeId,nodeType:e.nodeType,path:e.path,parentFrameId:e.parentFrameId,startedAt:e.startedAt})}catch(t){console.error(`[RuntimeContext] frame.started observer failed for ${e.frameId}:`,t)}}async emitFrameCompleted(e,t){try{await this.bus.emit(S.frame.completed,{executionId:this.executionId,frameId:e.frameId,nodeId:e.nodeId,output:e.output,duration:t,completedAt:e.completedAt})}catch(t){console.error(`[RuntimeContext] frame.completed observer failed for ${e.frameId}:`,t)}}async emitFrameFailed(e,t,n){try{await this.bus.emit(S.frame.failed,{executionId:this.executionId,frameId:e.frameId,nodeId:e.nodeId,error:t,duration:n,completedAt:e.completedAt})}catch(t){console.error(`[RuntimeContext] frame.failed observer failed for ${e.frameId}:`,t)}}};function Xe(e){return{kind:`workflow-execution`,id:e,displayName:`Workflow Engine`}}function Ze(e,t,n){return{inputs:n.inputs,config:n.config??{},trigger:n.triggerPayload,scope:n.scope,context:n.context,env:n.env,execution:{id:t.id,workflowId:t.workflowId,scope:t.scope},workflow:{id:e.id,name:e.name,scope:e.scope}}}function Qe(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function $e(e){if(e!=null){if(Qe(e)&&typeof e.kind==`string`&&typeof e.id==`string`)return{kind:e.kind,id:e.id};throw Error(`Artifact resolve expression must return an object with string kind and id fields.`)}}function et(e){if(e!==void 0){if(Qe(e))return e;throw Error(`Artifact create expression must return an object.`)}}async function tt(e){let{bindingOptions:t,binding:n,existingArtifactRef:r,executionId:i,scope:a,initialData:o,bus:s}=e,c=null;if(r!==void 0){let e=await s.request(u.query,{kind:r.kind,ids:[r.id],currentOnly:!0});if(e.artifacts.length>0)c=e.artifacts[0];else return}else c=(await s.request(u.create,{kind:n.kind,schemaVersion:n.schemaVersion,scope:a??n.scope,data:o??{},relations:[],actor:Xe(i)})).artifact;return{current:c,schemaVersion:n.schemaVersion,statusPath:t.statusPath,zodSchema:t.schema}}async function nt(e){let{definition:t,execution:n,runContext:r,zodSchema:i,bus:a}=e,o=t.artifact;if(o===void 0)return;let s=Ze(t,n,r),c=r.artifactRef??(o.resolve===void 0?void 0:$e(E(o.resolve,s))),l=c===void 0&&o.create!==void 0?et(E(o.create,s)):void 0,u=await tt({bindingOptions:{kind:o.kind,schemaVersion:o.schemaVersion,scope:o.scope,...o.resolve===void 0?{}:{resolve:o.resolve},...o.create===void 0?{}:{create:o.create},...o.statusPath===void 0?{}:{statusPath:o.statusPath},...i===void 0?{}:{schema:i}},binding:o,existingArtifactRef:c,executionId:n.id,scope:o.scope,initialData:l,bus:a});if(u===void 0)throw Error(`Workflow artifact binding could not be resolved for the configured artifact reference.`);return u}const rt=new WeakMap;function it(e,t){let n=(rt.get(e)??Promise.resolve()).catch(()=>void 0).then(t);return rt.set(e,n.then(()=>void 0,()=>void 0)),n}function at(e,t){switch(t.operation){case`set`:return t.data;case`merge`:return{...e,...t.data};case`append`:{let n={...e};for(let[r,i]of Object.entries(t.data)){let t=e[r];Array.isArray(t)&&Array.isArray(i)?n[r]=[...t,...i]:n[r]=i}return n}}}function ot(e,t,n){let[r,...i]=t;if(i.length===0)return{...e,[r]:n};let a=e[r]!==null&&typeof e[r]==`object`&&!Array.isArray(e[r])?e[r]:{};return{...e,[r]:ot(a,i,n)}}function st(e,t,n){return ot(e,t.startsWith(`/`)?t.slice(1).split(`/`):t.split(`.`),n)}function ct(e,t,n){if(n===`set`||n===`functional`)return[];let r=[];for(let n of Object.keys(t))e[n]!==t[n]&&r.push(`/${n}`);return r}async function lt(e,t){if(typeof t==`function`)return{nextData:await t(Object.freeze({...e})),operationLabel:`functional`,changedPaths:[]};let n=at(e,t),r=ct(e,n,t.operation);return{nextData:n,operationLabel:t.operation,changedPaths:r}}function ut(e){let{executionId:t,frameId:n,bindingState:r,bus:i}=e,a=Object.freeze({...r.current.data}),o=async e=>it(r,async()=>{let a=r.current,{nextData:o,operationLabel:s,changedPaths:c}=await lt(a.data,e);if(r.zodSchema!==void 0){let e=r.zodSchema.safeParse(o);if(!e.success)throw Error(`Artifact data validation failed: ${e.error.message}`)}let l=await i.request(u.revise,{previous:{refClass:`artifact`,kind:a.kind,id:a.id,revision:a.revision},revision:{kind:a.kind,schemaVersion:r.schemaVersion,scope:a.scope,data:o,relations:a.relations,actor:Xe(t)}});r.current=l.artifact;let d=l.artifact.revision;return i.emit(re.artifact.updated,{executionId:t,frameId:n,artifactRef:{kind:l.artifact.kind,id:l.artifact.id},paths:c,operation:s,revision:d}).catch(e=>{console.error(`[ArtifactContext] Failed to emit artifact.updated event:`,e)}),d});return{data:a,updateArtifact:o,updateStatus:async e=>{if(r.statusPath===void 0)throw Error(`updateStatus() called but no statusPath is configured on the artifact binding. Set statusPath in the .artifact() builder call to use updateStatus().`);let t=r.statusPath;return o(n=>st(n,t,e))}}}async function dt(e,t,n){if(t.signal.aborted)return{status:`cancelled`};let r=await t.bus.requestOptional(S.resolveRole,{roleId:e.roleId});if(!r.handled)return{status:`failed`,error:e.unresolvedRoleError};let i=D(e.prompt,F(n));return ft({...e,task:i,resolvedConfig:r.data},t)}async function ft(e,t){if(t.signal.aborted)return{status:`cancelled`};let n=await t.bus.requestOptional(g.spawn,{parentSessionId:t.execution.coordinatorSessionId??t.executionId,depth:1,config:gt(e.task,e.resolvedConfig,e.outputSchema)});if(!n.handled)return{status:`failed`,error:e.unavailableRuntimeError};let r=await I(e,t,n.data.subagentId,{attempts:5}),i=await _t(e,t,n.data.subagentId);return i===`aborted`?{status:`cancelled`}:(r||await I(e,t,n.data.subagentId,{attempts:1}),i.handled?t.signal.aborted||i.data.status===`cancelled`?{status:`cancelled`}:i.data.status===`completed`?{status:`completed`,output:i.data.result??null}:{status:`failed`,error:`${e.nodeLabel} '${e.nodeId}' subagent ${i.data.status}: ${i.data.error??`no result`}`}:{status:`failed`,error:e.unavailableAwaitError})}async function I(e,t,n,r){if(e.frameId===void 0)return!0;try{let i=await pt(t,n,r.attempts);return i===void 0?!1:(await t.bus.emit(S.frame.sessionLinked,{executionId:t.executionId,frameId:e.frameId,sessionId:i}),!0)}catch(t){return console.warn(`[workflow-engine] Failed to emit frame.sessionLinked for frame '${e.frameId}' and subagent '${n}'`,t),!1}}async function pt(e,t,n){for(let r=0;r<n;r+=1){if(e.signal?.aborted)return;let i=await mt(e,t);if(i===void 0||!i.handled)return;if(i.data.childSessionId!==void 0)return i.data.childSessionId;if(r<n-1&&!await ht(e.signal,20))return}}async function mt(e,t){try{return await e.bus.requestOptional(g.getStatus,{subagentId:t},{timeout:25,signal:e.signal})}catch{return}}function ht(e,t){return e.aborted?Promise.resolve(!1):new Promise(n=>{let r,i=t=>{r!==void 0&&(clearTimeout(r),r=void 0),e.removeEventListener(`abort`,a),n(t)},a=()=>i(!1);r=setTimeout(()=>i(!0),t),e.addEventListener(`abort`,a,{once:!0}),e.aborted&&i(!1)})}function gt(e,t,n){return{task:e,adapterName:t.adapterName,...t.model===void 0?{}:{model:t.model},...t.reasoningEffort===void 0?{}:{reasoningEffort:t.reasoningEffort},...t.harnessId===void 0?{}:{harnessId:t.harnessId},...t.systemPrompt===void 0?{}:{systemPrompt:t.systemPrompt},...t.contextMode===void 0?{}:{contextMode:t.contextMode},...t.providerContext===void 0?{}:{providerContext:t.providerContext},...n===void 0?{}:{responseSchema:n}}}async function _t(e,t,n){if(t.signal.aborted)return await L(e,t,n),`aborted`;let r=t.bus.requestOptional(g.await,{subagentId:n,...e.timeoutMs===void 0?{}:{timeoutMs:e.timeoutMs}},{timeout:0});if(t.signal.aborted)return await L(e,t,n),`aborted`;let i,a=new Promise(e=>{i=()=>e(`aborted`),t.signal.addEventListener(`abort`,i,{once:!0})}),o=await Promise.race([r,a]);return i!==void 0&&t.signal.removeEventListener(`abort`,i),o===`aborted`&&await L(e,t,n),o}async function L(e,t,n){try{await t.bus.requestOptional(g.kill,{subagentId:n,reason:`Workflow execution '${t.executionId}' cancelled ${e.cancellationLabel} '${e.nodeId}'`})}catch(t){console.warn(`[workflow-engine] Best-effort subagent kill failed for '${n}' (${e.cancellationLabel} '${e.nodeId}')`,t)}}async function vt(e,t,n,r){if(t.signal.aborted)return{status:`cancelled`};let i=We(n.frames),a=t.runtimeHandlers.get(e.id);if(a===void 0)return yt(e,t,n,r);let o=t.artifactBinding!==void 0&&r!==void 0?ut({executionId:t.executionId,frameId:r,bindingState:t.artifactBinding,bus:t.bus}):void 0;async function s(n){if(r===void 0){console.warn(`[station-node] updateProgress called without frameId for node '${e.id}'; skipping emit`);return}let i=ne[`execution.progress`].parse({executionId:t.executionId,workflowId:t.workflowId,frameId:r,nodeId:e.id,progress:n,emittedAt:Date.now()});try{await t.bus.emit(S.execution.progress,i)}catch(t){console.error(`[station-node] execution.progress observer failed for ${e.id}:`,t)}}let c;try{c=await a({...t.platformContext,env:t.env,executionId:t.executionId,workflowId:t.workflowId,inputs:t.execution.inputs,config:t.execution.config??{},trigger:t.execution.triggerPayload??{},previousSteps:i,...n.item!==void 0&&{item:n.item},...n.index!==void 0&&{index:n.index},...n.previous!==void 0&&{previous:n.previous},signal:t.signal,...o!==void 0&&{artifact:o},bus:t.bus,updateProgress:s})}catch(e){return{status:`failed`,error:e instanceof Error?e.message:String(e)}}return{status:`completed`,output:c}}async function yt(e,t,n,r){if(e.role===void 0)return{status:`failed`,error:`No handler registered for station node '${e.id}'`};let i=e.outputSchema===void 0?void 0:{schema:e.outputSchema};return dt({nodeId:e.id,nodeLabel:`Station node`,roleId:e.role,prompt:e.prompt,...i===void 0?{}:{outputSchema:i},...e.timeoutMs===void 0?{}:{timeoutMs:e.timeoutMs},unresolvedRoleError:`No runtime handler registered for station node '${e.id}', and role '${e.role}' could not be resolved`,unavailableRuntimeError:`Subagent runtime is not available for station node '${e.id}'`,unavailableAwaitError:`Subagent runtime cannot await station node '${e.id}'`,cancellationLabel:`station`,...r===void 0?{}:{frameId:r}},t,n)}async function bt(e,t,n,r){if(t.signal.aborted)return{status:`cancelled`};let i=await t.bus.requestOptional(S.resolveAgent,{agentId:e.agentId});if(!i.handled)return{status:`failed`,error:`Agent '${e.agentId}' could not be resolved for delegate-agent node '${e.id}'`};if(t.signal.aborted)return{status:`cancelled`};let a=St(e,n);if(a.status===`failed`)return a;let o=e.outputSchema===void 0?void 0:{schema:e.outputSchema};return ft({nodeId:e.id,nodeLabel:`Delegate-agent node`,task:a.task,resolvedConfig:i.data,...o===void 0?{}:{outputSchema:o},unavailableRuntimeError:`Subagent runtime is not available for delegate-agent node '${e.id}'`,unavailableAwaitError:`Subagent runtime cannot await delegate-agent node '${e.id}'`,cancellationLabel:`delegate-agent`,...r===void 0?{}:{frameId:r}},t)}async function xt(e,t,n,r){if(t.signal.aborted)return{status:`cancelled`};let i=e.outputSchema===void 0?void 0:{schema:e.outputSchema};return dt({nodeId:e.id,nodeLabel:`Delegate-role node`,roleId:e.role,prompt:e.prompt,...i===void 0?{}:{outputSchema:i},...e.timeoutMs===void 0?{}:{timeoutMs:e.timeoutMs},unresolvedRoleError:`Role '${e.role}' could not be resolved for delegate-role node '${e.id}'`,unavailableRuntimeError:`Subagent runtime is not available for delegate-role node '${e.id}'`,unavailableAwaitError:`Subagent runtime cannot await delegate-role node '${e.id}'`,cancellationLabel:`delegate-role`,...r===void 0?{}:{frameId:r}},t,n)}function St(e,t){try{let n=F(t);return{status:`completed`,task:Ct(e.inputExpression===void 0?n:E(e.inputExpression,n))}}catch(t){let n=t instanceof Error?t.message:String(t);return{status:`failed`,error:`delegate-agent node '${e.id}': input expression evaluation failed: ${n}`}}}function Ct(e){if(typeof e==`string`)return e;if(e===void 0)return``;try{return JSON.stringify(e,null,2)??``}catch{return String(e)}}function wt(e,t,n,r){try{let i=E(n,F(r));return Array.isArray(i)?i:{status:`failed`,error:`${t} node '${e}': collection expression did not resolve to an array (got ${typeof i})`}}catch(n){return{status:`failed`,error:`${t} node '${e}': collection expression evaluation failed: ${n instanceof Error?n.message:String(n)}`}}}function Tt(e,t,n){for(let r of[...e.nodes].reverse()){let e=n.getFramesByNodeId(r.id);for(let n of e)if(n.parentFrameId===t&&n.status===`completed`)return n.output}}function Et(e,t,n){return Tt(e.body,t,n)}function Dt(e){if(e.length===0)return;let t=new Map,n=new Map;for(let r of e){n.set(r.frameId,r);let e=t.get(r.nodeId)??[];e.push(r),t.set(r.nodeId,e)}return{byNodeId:t,byFrameId:n}}const Ot=new Set([`completed`,`skipped`,`waiting`]);function R(e,t,n){let r=e?.byNodeId.get(t)??[],i=n.statuses??Ot;return r.find(e=>e.parentFrameId===n.parentFrameId&&e.branchKey===n.branchKey&&e.iteration===n.iteration&&i.has(e.status))}function z(e,t,n){let r={...e.frames,[t]:n};return{...e,frames:r,previousSteps:We(r),output:n.status===`completed`?n.output:e.output}}function B(e,t){if(typeof AbortSignal.any==`function`)return AbortSignal.any([e,t]);let n=new AbortController,r=()=>n.abort();return e.addEventListener(`abort`,r,{once:!0}),t.addEventListener(`abort`,r,{once:!0}),n.signal}const kt=new Set([`completed`,`running`]);function At(e,t){return e.status===`running`&&t.pauseSignal?.aborted===!0&&!t.outerSignal.aborted}async function jt(e,t,n,r,i,a,o=`all-settled`){if(t.signal.aborted)return{status:`cancelled`};let s=Object.entries(e.branches);if(s.length===0)return{status:`completed`,output:V({},o)};let c=new AbortController,l=new AbortController,u=t.suspensionStrategy!==`wait-in-process`,d=o===`fail-fast`?B(c.signal,l.signal):u?l.signal:void 0,f=d===void 0?t.signal:B(t.signal,d),p=f===t.signal?t:t.withSignal(f),m=s.map(([s,c])=>Mt(s,c,e,p,n,r,i,a,{outerSignal:t.signal,pauseSignal:o===`fail-fast`||u?l.signal:void 0}));if(o===`all-settled`){let e=await Promise.all(u?m.map(e=>e.then(e=>(e.status===`paused`&&l.abort(),e))):m),t=e.find(e=>e.status===`paused`);return t===void 0?{status:`completed`,output:V(Pt(s,e),o)}:t}let h=await Nt(s,m,c,l);return h.type===`cancelled`?{status:`cancelled`}:h.type===`paused`?h.outcome:h.type===`failed`?{status:`failed`,error:h.error}:{status:`completed`,output:V(Pt(s,h.outcomes),o)}}async function Mt(e,t,n,r,i,a,o,s,c){if(r.signal.aborted)return{status:`cancelled`};let l=R(r.resumeFrames,n.id,{parentFrameId:o,branchKey:e,statuses:kt});if(l?.status===`completed`)return{status:`completed`,...l.output===void 0?{}:{output:l.output}};let u=l??r.createFrame({nodeId:n.id,nodeType:`parallel`,path:s,parentFrameId:o,branchKey:e});if(r.signal.aborted)return At(u,c)||await $(u,r),{status:`cancelled`};l===void 0&&await Y(u,r);let d;try{d=await a(t,r,i,u.frameId,u.path)}catch(e){let t=e instanceof Error?e.message:String(e);return await Z(u,r,t),{status:`failed`,error:t}}switch(d.status){case`completed`:{let e=Tt(t,u.frameId,r);return await X(u,r,e),{status:`completed`,output:e}}case`skipped`:return await X(u,r),{status:`completed`};case`cancelled`:return At(u,c)||await $(u,r),{status:`cancelled`};case`paused`:return d;case`failed`:return await Z(u,r,d.error),{status:`failed`,error:d.error}}}async function Nt(e,t,n,r){let i,a,o=t.map(e=>e.then(e=>(e.status===`failed`&&i===void 0?(i=e.error,n.abort()):e.status===`paused`&&a===void 0&&(a=e,r.abort()),e),e=>{let t=e instanceof Error?e.message:String(e);return i===void 0&&(i=t,n.abort()),{status:`failed`,error:t}})),s=await Promise.all(o);return a===void 0?s.some(e=>e.status===`cancelled`)&&i===void 0?{type:`cancelled`}:i===void 0?{type:`completed`,outcomes:s}:{type:`failed`,error:i}:{type:`paused`,outcome:a}}function V(e,t){return{mode:t,branches:e}}function Pt(e,t){let n={};for(let r=0;r<e.length;r++){let[i]=e[r],a=t[r];n[i]=Ft(a)}return n}function Ft(e){switch(e.status){case`completed`:return{status:`fulfilled`,...e.output===void 0?{}:{value:e.output}};case`skipped`:return{status:`fulfilled`,value:null};case`cancelled`:return{status:`cancelled`};case`paused`:return{status:`paused`,pausedAtGateId:e.pausedAtGateId,pausedAtFrameId:e.pausedAtFrameId};case`failed`:return{status:`rejected`,reason:e.error}}}const It=new(e(t(),1)).default({allErrors:!0,strict:!1});function H(e,t){if(t===void 0)return{status:`ok`};try{return{status:`ok`,validator:It.compile(t)}}catch(t){return{status:`failed`,error:`Gate '${e}' has an invalid resumeSchema: ${t instanceof Error?t.message:String(t)}`}}}function U(e,t){return e===void 0||e(t)?{valid:!0}:{valid:!1,error:Rt(e.errors??[])}}function Lt(e,t,n){let r=H(e,t);return r.status===`failed`?{valid:!1,error:r.error}:U(r.validator,n)}function Rt(e){return e.length===0?`schema validation failed`:e.map(e=>`${e.instancePath.length>0?e.instancePath:`/`} ${e.message??`is invalid`}`).join(`; `)}const W={action:`approve`,source:`timeout`};function G(e){return e===void 0?{}:{reason:e}}async function zt(e,t,n,r){let i=()=>{t.value&&(t.value=!1,e.reject(`cancelled`))};n.addEventListener(`abort`,i,{once:!0}),n.aborted&&i();let a=[e.promise],o;if(r!==null){let e=Ut();o=setTimeout(()=>{t.value&&(t.value=!1,n.removeEventListener(`abort`,i),e.reject(`timed-out`))},r),a.push(e.promise)}try{let e=await Promise.race(a);return n.removeEventListener(`abort`,i),o!==void 0&&clearTimeout(o),{action:e.action,resumeData:e.resumeData,timedOut:!1,wasCancelled:!1,reason:e.reason}}catch(e){return o!==void 0&&clearTimeout(o),n.removeEventListener(`abort`,i),e===`timed-out`?{action:`reject`,resumeData:null,timedOut:!0,wasCancelled:!1}:{action:`reject`,resumeData:null,timedOut:!1,wasCancelled:!0}}}async function Bt(e,t,n,r,i,a){let o={required:e.suspensionStrategy!==`wait-in-process`};if(a.timedOut){let a=Date.now();if(r.autoAction===`approve`){let s=U(i,W);return s.valid?(await K(e,{...r,status:`resumed`,resumeData:W,resolvedAt:a},o),await q(e,t.id,n,{action:`approve`,source:`timeout`}),{status:`completed`,output:{resumeData:W}}):(await K(e,{...r,status:`timed-out`,resolvedAt:a},o),await q(e,t.id,n,{action:`reject`,source:`timeout`}),{status:`failed`,error:`Gate '${t.id}' auto-approve timeout resume data does not match resumeSchema: ${s.error}`})}return await K(e,{...r,status:`timed-out`,resolvedAt:a},o),await q(e,t.id,n,{action:`reject`,source:`timeout`}),{status:`failed`,error:`Gate '${t.id}' timed out after ${String(r.timeoutMs)}ms and auto-rejected`}}if(a.wasCancelled||e.signal.aborted)return await K(e,{...r,status:`cancelled`,resolvedAt:Date.now()},o),await q(e,t.id,n,{source:`cancelled`}),{status:`cancelled`};let s=Date.now();await K(e,{...r,status:a.action===`reject`?`rejected`:`resumed`,resumeData:a.resumeData,...G(a.reason),resolvedAt:s},o);try{await e.bus.emit(S.gate.resumed,{executionId:e.executionId,frameId:n,nodeId:t.id,resumeData:a.resumeData}),await q(e,t.id,n,{action:a.action,source:`user`,...G(a.reason)})}catch(e){console.error(`[GateNode] gate.resumed emit failed for '${t.id}':`,e)}return{status:`completed`,output:{resumeData:a.resumeData}}}async function Vt(e,t,n,r){if(t.signal.aborted)return{status:`cancelled`};let i=e.resumeSchema??{};if(t.suspensionStrategy!==`wait-in-process`){let n=await Kt(t,e,r);if(n!==void 0)return n}let a=H(e.id,e.resumeSchema);return a.status===`failed`?{status:`failed`,error:a.error}:Ht(t,e,n,r,i,a.validator)}async function Ht(e,t,n,r,i,a){let o=D(t.prompt,F(n)),s={executionId:e.executionId,nodeId:t.id,frameId:r,schema:i,prompt:o,status:`waiting`,autoAction:t.autoAction,timeoutMs:t.timeoutMs,createdAt:Date.now()},c=e.suspensionStrategy!==`wait-in-process`;if(await K(e,s,{required:c}),await e.updateFrame(r,{status:`waiting`},{requireFrameStorage:c}),c)return await Wt(e,t,r,i,o,s.createdAt),{status:`paused`,pausedAtGateId:t.id,pausedAtFrameId:r};let u={value:!0},d=Ut(),f=e.bus.on(S.gate.respond,async n=>{let{executionId:i,gateId:o,frameId:s,action:c,resumeData:f,reason:p}=n.payload;if(i!==e.executionId||o!==t.id||s!==void 0&&s!==r){try{await n.next()}catch(e){if(e instanceof l)n.setResult({accepted:!1});else throw e}return}if(!u.value){n.setResult({accepted:!1});return}if(!U(a,f).valid){n.setResult({accepted:!1});return}u.value=!1,n.setResult({accepted:!0}),d.resolve({action:c,resumeData:f,reason:p})});await Wt(e,t,r,i,o,s.createdAt);let p=await zt(d,u,e.signal,t.timeoutMs);return f(),Bt(e,t,r,s,a,p)}function Ut(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}async function Wt(e,t,n,r,i,a){try{await e.bus.emit(S.gate.suspended,{executionId:e.executionId,frameId:n,nodeId:t.id,schema:r,prompt:i,...t.title!==void 0&&{title:t.title},autoAction:t.autoAction,timeoutMs:t.timeoutMs,openedAt:a})}catch(e){console.error(`[GateNode] gate.suspended emit failed for '${t.id}':`,e)}}async function Gt(e,t,n){if(e.suspensionStrategy!==`wait-in-process`)return(await e.bus.request(N.getGateInstance,{executionId:e.executionId,nodeId:t,frameId:n})).gate;let r=await e.bus.requestOptional(N.getGateInstance,{executionId:e.executionId,nodeId:t,frameId:n});return r.handled?r.data.gate:null}async function Kt(e,t,n){let r=await Gt(e,t.id,n);if((r?.status===`resumed`||r?.status===`rejected`)&&r.resumeData!==void 0){let i=Lt(t.id,r.schema,r.resumeData);if(!i.valid)return{status:`failed`,error:`Gate '${t.id}' persisted resumeData is invalid: ${i.error}`};try{await e.bus.emit(S.gate.resumed,{executionId:e.executionId,frameId:n,nodeId:t.id,resumeData:r.resumeData})}catch(e){console.error(`[GateNode] gate.resumed emit failed for '${t.id}':`,e)}return await q(e,t.id,n,{action:r.status===`rejected`?`reject`:`approve`,source:`user`,...G(r.reason)}),{status:`completed`,output:{resumeData:r.resumeData}}}if(r?.status===`waiting`){if(r.timeoutMs!==null&&Date.now()>=r.createdAt+r.timeoutMs){let i=H(t.id,r.schema);return i.status===`failed`?{status:`failed`,error:i.error}:Bt(e,t,n,r,i.validator,{action:`reject`,resumeData:null,timedOut:!0,wasCancelled:!1})}return{status:`paused`,pausedAtGateId:t.id,pausedAtFrameId:n}}if((r?.status===`resumed`||r?.status===`rejected`)&&r.resumeData===void 0)return{status:`failed`,error:`Gate '${t.id}' has status '${r.status}' but resumeData is missing — cannot reconstruct output`};if(r!==null)return{status:`failed`,error:`Gate '${t.id}' cannot resume from status '${r.status}'`}}async function K(e,t,n={}){try{n.required===!0?await e.bus.request(N.setGateInstance,{gate:t}):await e.bus.requestOptional(N.setGateInstance,{gate:t})}catch(e){if(n.required===!0)throw e;console.warn(`[GateNode] Failed to upsert gate instance for '${t.nodeId}':`,e)}}async function q(e,t,n,r){try{await e.bus.emit(S.gate.resolved,{executionId:e.executionId,stepId:t,stepType:`gate`,frameId:n,...r})}catch(e){console.error(`[GateNode] gate.resolved emit failed for '${t}':`,e)}}function J(e){return{status:`fulfilled`,...e===void 0?{}:{value:e}}}const qt=new Set([`completed`,`running`]);function Jt(e,t){return e.status===`running`&&t.pauseSignal?.aborted===!0&&!t.outerSignal.aborted}async function Yt(e,t,n,r,i,a){if(t.signal.aborted)return{status:`cancelled`};let o=wt(e.id,`iterate`,e.collection,n);if(!Array.isArray(o))return o;let s=o;if(s.length===0)return{status:`completed`,output:$t([])};let c=await Xt(s,e,t,n,r,i,a,e.concurrency!==void 0&&e.concurrency>0?e.concurrency:0);if(t.signal.aborted&&c.every(e=>e.status===`cancelled`))return{status:`cancelled`};let l=c.find(e=>e.status===`paused`);return l===void 0?{status:`completed`,output:$t(c)}:{status:`paused`,pausedAtGateId:l.pausedAtGateId,pausedAtFrameId:l.pausedAtFrameId}}async function Xt(e,t,n,r,i,a,o,s){let c=new AbortController,l=n.suspensionStrategy!==`wait-in-process`,u=l?B(n.signal,c.signal):n.signal,d=u===n.signal?n:n.withSignal(u),f={outerSignal:n.signal,...l?{pauseSignal:c.signal}:{}};if(s===0){let n=e.map((e,n)=>Qt(e,n,t,d,r,i,a,o,f));return Promise.all(l?n.map(e=>Zt(e,c)):n)}let p=Array(e.length);for(let n=0;n<e.length;n+=s){if(d.signal.aborted){for(let t=n;t<e.length;t++)p[t]={status:`cancelled`};break}let u=Math.min(n+s,e.length),m=[];for(let s=n;s<u;s++)m.push(Qt(e[s],s,t,d,r,i,a,o,f));let h=await Promise.all(l?m.map(e=>Zt(e,c)):m);for(let e=0;e<h.length;e++)p[n+e]=h[e];if(h.some(e=>e.status===`paused`)){for(let t=u;t<e.length;t++)p[t]={status:`cancelled`};break}}return p}function Zt(e,t){return e.then(e=>(e.status===`paused`&&t.abort(),e))}async function Qt(e,t,n,r,i,a,o,s,c){if(r.signal.aborted)return{status:`cancelled`};let l={...i,item:e,index:t},u=R(r.resumeFrames,n.id,{parentFrameId:o,iteration:t,statuses:qt});if(u?.status===`completed`)return J(u.output);let d=u??r.createFrame({nodeId:n.id,nodeType:`iterate`,path:s,parentFrameId:o,iteration:t});if(r.signal.aborted)return Jt(d,c)||await $(d,r),{status:`cancelled`};u===void 0&&await Y(d,r);let f;try{f=await a(n.body,r,l,d.frameId,d.path)}catch(e){let t=e instanceof Error?e.message:String(e);return await Z(d,r,t),{status:`rejected`,reason:t}}switch(f.status){case`completed`:{let e=Et(n,d.frameId,r);return await X(d,r,e),J(e)}case`skipped`:return await X(d,r),J();case`cancelled`:return Jt(d,c)||await $(d,r),{status:`cancelled`};case`paused`:return f;case`failed`:return await Z(d,r,f.error),{status:`rejected`,reason:f.error}}}function $t(e){return{items:e}}const en=new Set([`completed`,`running`]);async function tn(e,t,n,r,i,a){if(t.signal.aborted)return{status:`cancelled`};let o=wt(e.id,`iterate-chain`,e.collection,n);if(!Array.isArray(o))return o;let s=o;if(s.length===0)return{status:`completed`,output:rn([])};let c=[],l;for(let o=0;o<s.length;o++){if(t.signal.aborted)return{status:`cancelled`};let u=s[o],d=await nn(u,o,l,e,t,n,r,i,a);switch(c.push(d),d.status){case`fulfilled`:l=d.value;break;case`rejected`:return{status:`failed`,error:d.reason};case`cancelled`:return{status:`cancelled`};case`paused`:return{status:`paused`,pausedAtGateId:d.pausedAtGateId,pausedAtFrameId:d.pausedAtFrameId}}}return{status:`completed`,output:rn(c)}}async function nn(e,t,n,r,i,a,o,s,c){if(i.signal.aborted)return{status:`cancelled`};let l={...a,item:e,index:t,...n!==void 0&&{previous:n}},u=R(i.resumeFrames,r.id,{parentFrameId:s,iteration:t,statuses:en});if(u?.status===`completed`)return J(u.output);let d=u??i.createFrame({nodeId:r.id,nodeType:`iterate-chain`,path:c,parentFrameId:s,iteration:t});if(i.signal.aborted)return await $(d,i),{status:`cancelled`};u===void 0&&await Y(d,i);let f;try{f=await o(r.body,i,l,d.frameId,d.path)}catch(e){let t=e instanceof Error?e.message:String(e);return await Z(d,i,t),{status:`rejected`,reason:t}}switch(f.status){case`completed`:{let e=Et(r,d.frameId,i);return await X(d,i,e),J(e)}case`skipped`:return await X(d,i),J();case`cancelled`:return await $(d,i),{status:`cancelled`};case`paused`:return f;case`failed`:return await Z(d,i,f.error),{status:`rejected`,reason:f.error}}}function rn(e){return{items:e}}async function Y(e,t){e.status=`running`,e.startedAt=Date.now(),await t.persistFrame(e),await t.emitFrameStarted(e)}async function X(e,t,n){let r=Date.now(),i=e.startedAt===void 0?void 0:Math.max(0,r-e.startedAt);e.status=`completed`,e.output=n,e.completedAt=r,await t.persistFrame(e),await t.emitFrameCompleted(e,i)}async function Z(e,t,n){let r=Date.now(),i=e.startedAt===void 0?void 0:Math.max(0,r-e.startedAt);e.status=`failed`,e.error=n,e.completedAt=r,await t.persistFrame(e),await t.emitFrameFailed(e,n,i)}async function Q(e,t){e.status=`skipped`,e.completedAt=Date.now(),await t.persistFrame(e)}async function $(e,t){e.status=`cancelled`,e.completedAt=Date.now(),await t.persistFrame(e)}function an(e,t){return!!E(e,F(t))}async function on(e,t,n,r,i,a=[]){if(t.signal.aborted)return{status:`cancelled`};switch(e.type){case`sequence`:return r(e,t,n,i,a);case`station`:return vt(e,t,n,i);case`delegate-agent`:return bt(e,t,n,i);case`delegate-role`:return xt(e,t,n,i);case`parallel`:return jt(e,t,n,r,i??``,a,e.mode??`all-settled`);case`gate`:return Vt(e,t,n,i??``);case`iterate`:return Yt(e,t,n,r,i??``,a);case`iterate-chain`:return tn(e,t,n,r,i??``,a);default:return{status:`failed`,error:`Unknown node type: ${String(e.type)}`}}}const sn=new Set([`completed`,`skipped`,`waiting`,`running`]);function cn(e){return e.type===`parallel`||e.type===`iterate`||e.type===`iterate-chain`}function ln(e,t,n){return R(e.resumeFrames,t.id,{parentFrameId:n,...cn(t)?{statuses:sn}:{}})}function un(e,t,n){if(n?.status===`completed`)return z(e,t.id,{status:`completed`,...n.output===void 0?{}:{output:n.output}});if(n?.status===`skipped`)return z(e,t.id,{status:`skipped`})}async function dn(e,t,n,r,i,a,o){try{return{result:an(e,i)}}catch(e){let i=e instanceof Error?e.message:String(e);return await Z(r.createFrame({nodeId:n.id,nodeType:n.type,path:a,parentFrameId:o}),r,`'${t}' condition evaluation failed: ${i}`),{status:`failed`,error:`'${t}' condition evaluation failed for '${n.id}': ${i}`}}}async function fn(e,t,n,r,i,a){let o=a??t.createFrame({nodeId:e.id,nodeType:e.type,path:r,parentFrameId:i});if(t.signal.aborted)return await $(o,t),{updatedCtx:n,outcome:{status:`cancelled`}};a===void 0&&await Y(o,t);let s;try{s=await on(e,t,n,pn,o.frameId,o.path)}catch(e){let r=e instanceof Error?e.message:String(e);return await Z(o,t,r),{updatedCtx:n,outcome:{status:`failed`,error:r}}}switch(s.status){case`completed`:return await X(o,t,s.output),{updatedCtx:z(n,e.id,{status:`completed`,output:s.output})};case`skipped`:return await Q(o,t),{updatedCtx:z(n,e.id,{status:`skipped`})};case`cancelled`:return await $(o,t),{updatedCtx:n,outcome:{status:`cancelled`}};case`paused`:return{updatedCtx:n,outcome:s};case`failed`:return await Z(o,t,s.error),{updatedCtx:n,outcome:{status:`failed`,error:s.error}}}}async function pn(e,t,n,r,i=[]){let a=n;for(let n of e.nodes){if(t.signal.aborted)return{status:`cancelled`};let e=ln(t,n,r),o=un(a,n,e);if(o!==void 0){a=o;continue}if(n.when!==void 0){let e=await dn(n.when,`when`,n,t,a,i,r);if(`status`in e)return e;if(!e.result){await Q(t.createFrame({nodeId:n.id,nodeType:n.type,path:i,parentFrameId:r}),t),a=z(a,n.id,{status:`skipped`});continue}}if(n.skip!==void 0){let e=await dn(n.skip,`skip`,n,t,a,i,r);if(`status`in e)return e;if(e.result){await Q(t.createFrame({nodeId:n.id,nodeType:n.type,path:i,parentFrameId:r}),t),a=z(a,n.id,{status:`skipped`});continue}}let s=e?.status===`waiting`&&n.type===`gate`||e?.status===`running`&&cn(n)?e:void 0,{updatedCtx:c,outcome:l}=await fn(n,t,a,i,r,s);if(a=c,l!==void 0)return l}return{status:`completed`}}export{Te as A,ve as C,be as D,xe as E,M as F,S as I,ke as M,Oe as N,De as O,Ce as P,ye as S,j as T,ge as _,Ye as a,he as b,Le as c,Me as d,je as f,_e as g,pe as h,nt as i,we as j,Ee as k,Pe as l,me as m,Lt as n,Re as o,N as p,Dt as r,Ue as s,pn as t,Ne as u,A as v,Se as w,O as x,k as y};
@@ -1 +0,0 @@
1
- import{i as e,t}from"./json-value-CmhSGMLv.mjs";import{a as n,s as r}from"./visibility-Cb62p9bv.mjs";import{t as i}from"./credential-ref-YWQQENEo.mjs";import{t as a}from"./definition-DZMXOnjX.mjs";import{c as ee,f as o,i as te,o as s,p as c,r as ne,s as re}from"./shared-DpOEfD8F.mjs";import{t as l}from"./schemas-hSrzflwZ.mjs";import{r as ie}from"./profile-D39-Zy_W.mjs";import{i as u}from"./account-identity-CgzOqnVm.mjs";import{SessionLineageSchema as ae}from"./contracts/adapter/schemas/session-lineage.mjs";import{z as d}from"zod";import{observability as oe}from"@makaio/framework/core";const f=d.object({adapterId:d.string(),adapterName:d.string()}),se=d.object({cwd:d.string().optional(),allowedTools:d.array(d.string()).optional(),disallowedTools:d.array(d.string()).optional(),allowedDirectories:d.array(d.string()).optional(),systemPrompt:o.optional()}),p=`adapter identity must be provided at the top level; contextOverrides cannot supply adapter identity`;function m(e){let t={adapterId:e.adapterId,adapterName:e.adapterName},n={adapterId:e.contextOverrides?.adapterId,adapterName:e.contextOverrides?.adapterName},r=[];!h(t)&&h(n)&&(n.adapterId!==void 0&&r.push({field:`adapterId`,message:p}),n.adapterName!==void 0&&r.push({field:`adapterName`,message:p}));for(let e of[`adapterId`,`adapterName`]){let i=n[e];if(i===void 0)continue;let a=t[e];if(a===void 0){h(t)&&r.push({field:e,message:`contextOverrides.${e} cannot supply adapter identity when top-level adapter identity is present`});continue}a!==i&&r.push({field:e,message:`contextOverrides.${e} must match top-level ${e} when both are provided`})}return{issues:r,effectiveIdentity:{adapterId:t.adapterId??n.adapterId,adapterName:t.adapterName??n.adapterName}}}function h(e){return e.adapterId!==void 0||e.adapterName!==void 0}const ce=d.object({readOnly:d.boolean().optional(),destructive:d.boolean().optional(),idempotent:d.boolean().optional(),requiresApproval:d.boolean().optional()}),le=d.object({name:d.string(),description:d.string(),annotations:ce.optional(),toolsetName:d.string()}),ue=d.object({code:d.string(),message:d.string(),details:d.unknown().optional()}),g=d.object({toolName:d.string(),toolsetName:d.string()}),de=le.extend({inputSchema:d.record(d.string(),d.unknown()).optional()}),fe=d.object({name:d.string(),description:d.string(),version:d.string(),toolCount:d.number(),configSchema:d.record(d.string(),d.unknown()).optional()}),pe=d.object({cwd:d.string().optional(),env:d.record(d.string(),d.string()).optional(),sessionId:d.string().optional(),agentId:d.string().optional(),adapterId:d.string().optional(),adapterName:d.string().optional(),turnId:d.string().optional(),turnContext:d.record(d.string(),d.unknown()).optional(),reasoning:d.string().optional(),toolCallId:d.string().optional(),constraints:d.record(d.string(),d.unknown()).optional()});function me(e,t){let{issues:n}=m(e);for(let e of n)t.addIssue({code:d.ZodIssueCode.custom,message:e.message,path:[`contextOverrides`,e.field]})}const he=d.object({toolName:d.string(),input:d.unknown(),adapterId:d.string().optional(),adapterName:d.string().optional(),contextOverrides:pe.optional()}).superRefine(me),ge={list:{request:d.object({toolsetName:d.string().optional(),adapterId:d.string().optional(),adapterName:d.string().optional()}),response:d.object({tools:d.array(de),toolsets:d.array(fe)})},execute:{request:he,response:d.discriminatedUnion(`success`,[d.object({success:d.literal(!0),data:d.unknown()}),d.object({success:d.literal(!1),error:ue})])},registered:d.object({toolsetName:d.string(),toolsetVersion:d.string(),toolNames:d.array(d.string())}),started:g.extend({executionId:d.string(),timestamp:d.number()}),completed:g.extend({executionId:d.string(),timestamp:d.number(),durationMs:d.number()}),error:g.extend({executionId:d.string(),timestamp:d.number(),error:ue}),registryChanged:d.object({revision:d.number().int().positive(),reason:d.enum([`toolset-registered`,`toolset-unregistered`,`plugin-loaded`,`plugin-unloaded`]),toolsetName:d.string()})},_e=d.object({name:d.string(),permission_policy:d.enum([`always_allow`,`always_ask`,`always_deny`])}),ve=d.array(_e).superRefine((e,t)=>{let n=new Set;e.forEach((e,r)=>{if(n.has(e.name)){t.addIssue({code:d.ZodIssueCode.custom,path:[r,`name`],message:`Duplicate MCP tool policy name "${e.name}"`});return}n.add(e.name)})}),ye=d.object({type:d.literal(`stdio`),command:d.string(),args:d.array(d.string()).optional(),env:d.record(d.string(),d.string()).optional(),alwaysLoad:d.boolean().optional()}),be=d.object({url:d.string().url(),headers:d.record(d.string(),d.string()).optional(),tools:ve.optional(),alwaysLoad:d.boolean().optional()}),xe=be.extend({type:d.literal(`sse`)}),Se=be.extend({type:d.literal(`http`)}),_=d.discriminatedUnion(`type`,[ye,xe,Se]),v=d.enum([`direct`,`discovery`,`hidden`]),y=v.exclude([`hidden`]),b=d.record(d.string(),v).optional(),x=d.string().max(256).refine(e=>(e.match(/\*/g)?.length??0)<=10,{message:`Pattern must contain at most 10 wildcard characters`}),Ce=d.object({transport:_,exposureMode:y.optional(),toolExposure:b}),we=d.object({enabled:d.boolean(),maxAttempts:d.number().int().positive(),baseDelayMs:d.number().int().positive(),maxDelayMs:d.number().int().positive()}).refine(e=>e.maxDelayMs>=e.baseDelayMs,{message:`maxDelayMs must be >= baseDelayMs`,path:[`maxDelayMs`]});d.object({servers:d.record(d.string(),Ce),hideTools:d.array(x).optional(),exposeTools:d.array(x).optional(),defaultExposureMode:y.optional(),autoReconnect:we.optional()}),d.object({servers:d.array(d.string()).optional(),exposeTools:d.array(x).optional(),hideTools:d.array(x).optional(),serverOverrides:d.record(d.string(),d.object({exposureMode:y.optional(),toolExposure:b})).optional()});const Te=d.object({directTools:d.array(x).optional(),discoveryTools:d.array(x).optional(),toolExposure:b}),Ee=d.object({name:d.string(),transport:_,exposureMode:y}),De=d.object({fullName:d.string(),originalName:d.string(),serverName:d.string(),description:d.string().optional(),inputSchema:d.record(d.string(),d.unknown()),exposureMode:v,enabled:d.boolean(),enabledBy:d.enum([`discovery`,`toolset`]).optional(),enabledAt:d.number().int().nonnegative().optional(),exposed:d.boolean()}),S=d.object({sessionId:d.string(),projectId:d.string().nullable(),profileId:d.string().nullable(),servers:d.array(Ee),directTools:d.array(De),discoverableTools:d.array(De)}),C=S.omit({projectId:!0,profileId:!0}),Oe=d.object({agentId:d.string(),adapterId:d.string(),adapterName:d.string(),adapterSessionId:d.string(),sessionId:d.string()}),ke={"server.connected":d.object({serverName:d.string(),toolCount:d.number().int().nonnegative()}),"server.disconnected":d.object({serverName:d.string(),reason:d.string()}),"server.reconnecting":d.object({serverName:d.string(),attempt:d.number().int().positive()}),"server.error":d.object({serverName:d.string(),error:d.string()}),"tools.updated":d.object({added:d.array(d.string()),removed:d.array(d.string())}),"tools.enabled":d.object({tools:d.array(d.string()),source:d.enum([`discovery`,`toolset`])}),"session.resolve":{request:d.object({sessionId:d.string(),profileId:d.string().nullable(),projectId:d.string().nullable(),profileMcpConfig:Te.optional()}),response:S},"session.register":{request:Oe.extend({contextOverrides:pe,pinned:d.boolean().optional()}),response:d.object({port:d.number().int().positive()})},"session.unregister":{request:d.object({adapterSessionId:d.string()}),response:d.object({})}},w=d.looseObject({kind:d.string(),providerConfigId:d.string().optional(),model:d.string().optional(),reasoningEffort:n.optional(),cwd:d.string().optional(),systemPrompt:o.optional(),allowedTools:d.array(d.string()).optional(),disallowedTools:d.array(d.string()).optional(),env:d.record(d.string(),d.string()).optional(),mcpSessionContext:C.optional(),allowedDirectories:d.array(d.string()).optional()}),Ae=w.extend({kind:d.literal(`adapter`),adapterName:d.string().trim().min(1).optional(),adapterId:d.string().trim().min(1).optional()}).refine(e=>!!e.adapterName||!!e.adapterId,{message:`AdapterSelection requires at least one of 'adapterName' or 'adapterId'`}),T=w,E=d.object({providerConfigId:d.string(),definitionId:d.string(),endpointOverrides:a.optional(),credentialRefs:d.record(d.string(),i),credentialEnvVars:d.record(d.string(),d.string()).optional(),ambientCredentialEnvVars:d.array(d.string()).optional()}),je={request:d.object({adapterName:d.string().optional(),adapterId:d.string().optional()}).refine(e=>e.adapterName||e.adapterId,{message:`Either adapterName or adapterId must be provided`}),response:d.object({capabilities:d.array(d.string()),nativeTools:d.array(d.string())})},D=d.enum([`lead`,`member`]),O=d.enum([`fork`,`branch`,`subagent`,`compress`,`rewrite`,`coordinator`,`aside`]),k=d.enum([`parent-history`,`none`]),A=d.enum([`discovered`,`imported`,`tracking`]),Me=d.object({sessionId:d.string(),title:d.string().nullable(),forkPointMessageId:d.string().nullable(),branchKind:O.nullable(),messageCount:d.number(),hasChildren:d.boolean(),spawningToolCallId:d.string().optional()}),Ne=d.object({fromMessageId:d.string(),toMessageId:d.string(),policy:d.enum([`verbatim`,`summarize`,`exclude`]),stripReasoning:d.boolean().optional(),stripToolOutputs:d.boolean().optional(),overrides:d.record(d.string(),d.literal(`exclude`)).optional(),summaryText:d.string().optional()}),j=d.object({removedMessageIds:d.array(d.string()).optional(),appliedPipeline:d.array(d.object({actionId:d.string(),options:d.record(d.string(),d.unknown()).optional()})).optional(),segments:d.array(Ne).optional()}),Pe=d.object({parentSessionId:d.string(),childSessionId:d.string(),summary:d.string().optional(),source:d.enum([`extension`,`user`,`system`]).optional(),extensionId:d.string().optional()}),Fe=d.object({success:d.boolean(),handoff:d.string().optional()}),Ie=d.object({parentSessionId:d.string(),childSessionId:d.string(),source:d.enum([`extension`,`user`,`system`]).optional(),extensionId:d.string().optional()}),Le=d.object({success:d.boolean()}),Re=d.object({sessionId:d.string()}),ze=d.object({children:d.array(Me)}),Be=d.object({parentSessionId:d.string(),childSessionId:d.string(),reason:d.string()}),Ve=d.object({parentSessionId:d.string(),childSessionId:d.string(),forkPoint:d.string().optional()}),He=d.object({parentSessionId:d.string(),childSessionId:d.string()}),Ue=d.object({parentSessionId:d.string(),childSessionId:d.string(),handoff:d.string()}),We=d.object({sessionId:d.string(),parentSessionId:d.string().optional()}),Ge=d.object({parentSessionId:d.string(),childSessionId:d.string(),result:d.unknown()}),Ke=d.object({sessionId:d.string(),reason:d.string(),source:d.enum([`extension`,`user`,`system`]).optional(),extensionId:d.string().optional()}),qe=d.object({sessionId:d.string(),pipeline:d.array(d.object({actionId:d.string(),options:d.record(d.string(),d.unknown()).optional()}))}),Je=d.object({eventId:d.string(),contextJson:d.record(d.string(),d.unknown()),tokensBefore:d.number(),tokensAfter:d.number().optional()}),Ye=d.object({sessionId:d.string(),childSessionId:d.string(),parentSessionId:d.string(),kind:O,forkPointMessageId:d.string().optional(),transforms:j.optional()}),Xe=d.object({sessionId:d.string(),childSessionId:d.string(),parentSessionId:d.string(),resultJson:d.string().optional(),resultMessageId:d.string().optional()}),Ze=d.object({sessionId:d.string(),summaryJson:d.string(),tokensBefore:d.number().optional(),tokensAfter:d.number().optional(),compressedMessageIds:d.array(d.string()).optional()}),Qe=d.object({sessionId:d.string(),parentSessionId:d.string().nullable(),branchKind:O.nullable(),createdAt:d.number(),originWindowId:d.string().optional()}),$e=d.object({sessionId:d.string(),changedProperties:d.array(d.string())}),et={merge:{request:Pe,response:Fe},abandon:{request:Ie,response:Le},getChildren:{request:Re,response:ze},forking:Be,forked:Ve,merging:He,merged:Ue,abandoned:We,childCompleted:Ge,compressionRequested:Ke,"branch.created":Ye,"branch.merged":Xe,squash:Ze,created:Qe,updated:$e,compress:{request:qe,response:Je}},tt=w.safeExtend({kind:d.literal(`canonical-model`),model:d.string().trim().min(1)}),M=d.object({messageHistory:d.array(ee).optional(),hasNewTransforms:d.boolean().optional(),hasCompression:d.boolean().optional(),extractedContext:d.unknown().optional(),isFirstTurn:d.boolean().optional(),hasConnectorSwap:d.boolean().optional(),turnContext:d.record(d.string(),e).optional()}),nt=te,rt=d.enum([`user`,`assistant`]),N=d.enum([`voice`,`text`,`compact`]),P=d.object({messageId:d.string(),turnId:d.string().nullable(),sessionId:d.string(),role:rt,contentText:d.string(),blocks:d.array(nt),agentId:d.string().optional(),adapterSessionId:d.string().optional(),adapterMessageId:d.string().optional(),timestamp:d.number(),editOf:d.string().optional(),origin:N.optional()}),F=d.enum([`active`,`completed`,`error`]),I=d.object({inputTokens:d.number(),outputTokens:d.number(),cost:d.number().optional()}),L=d.object({total:I,byAgent:d.record(d.string(),I).optional()}),R=d.object({source:d.enum([`user`,`extension`,`system`]),sourceId:d.string().optional()}),z=d.object({turnId:d.string(),sessionId:d.string(),turnNumber:d.number().int().min(1),startedAt:d.number(),completedAt:d.number().optional(),status:F,error:d.string().optional(),usage:L.optional(),initiator:R.optional()}),B=d.enum([`sent`,`acknowledged`,`completed`]),it=d.object({messageId:d.string(),agentId:d.string(),status:B,timestamp:d.number(),error:d.string().optional()}),V=d.object({sessionId:d.string(),turnId:d.string(),turnNumber:d.number().int().min(1)}),H=V.extend({messageId:d.string()}),at=V.extend({success:d.boolean(),error:d.string().optional(),initiator:R.optional()}),ot=w.safeExtend({kind:d.string().regex(/^(?!(?:adapter|canonical-model)$).+$/)}),st=d.union([Ae,tt,ot]),U={sendMessage:{request:d.object({sessionId:d.string(),message:s,agent:st.optional(),agentIds:d.union([d.array(d.string()),d.literal(`all`)]).optional(),deliveryMode:d.enum([`enqueue`]).optional(),turnId:d.string().optional(),sessionContext:M.optional(),responseSchema:c.optional(),source:d.enum([`extension`,`user`,`system`]).optional(),extensionId:d.string().optional(),originWindowId:d.string().optional(),skipConnectorSwapWarning:d.boolean().optional(),origin:N.optional()}),response:d.object({messageId:d.string(),turnId:d.string(),sessionId:d.string()})},"agent.attach":{request:d.object({sessionId:d.string(),agent:T,initialMessage:s.optional(),role:d.enum([`lead`,`member`]).optional()}),response:d.object({agentId:d.string(),adapterSessionId:d.string(),role:d.enum([`lead`,`member`]),messageId:d.string().optional(),turnId:d.string().optional()})},"turn.started":V.extend({messageId:d.string(),agentIds:d.array(d.string()),initiator:R.optional()}),"turn.completed":at,"turn.await":{request:d.object({sessionId:d.string(),turnId:d.string(),timeoutMs:d.number().int().positive()}),response:d.object({completion:at})},"user_message.sent":H.extend({content:s,agentIds:d.array(d.string()),source:d.enum([`extension`,`user`,`system`]).optional(),origin:N.optional()}),"user_message.acknowledged":H.extend({agentId:d.string()}),"user_message.completed":H.extend({agentId:d.string(),outcome:re,supersededBy:d.string().optional(),mergedInto:d.string().optional(),error:d.string().optional()}),fork:{request:d.object({sourceSessionId:d.string(),fromMessageId:d.string().optional(),name:d.string().optional(),branchKind:d.enum([`fork`,`branch`,`aside`]).optional(),transforms:j.optional(),targetWorkingDirectory:d.string().optional(),existingSessionId:d.string().optional()}),response:d.object({sessionId:d.string()})}},ct=d.enum([`auto`,`manual`,`off`]),lt=d.enum([`idle`,`active`,`dead`,`disposed`]),W=d.object({agentId:d.string(),adapterId:d.string(),adapterName:d.string(),sessionId:d.string(),adapterSessionId:d.string().optional(),model:d.string().optional(),cwd:d.string().optional(),allowedDirectories:d.array(d.string()).optional(),providerConfigId:d.string().optional(),personaId:d.string().optional(),profileId:d.string().optional(),harnessId:d.string().optional(),clientId:d.string().optional(),compressionMode:ct.optional(),role:D,status:lt,createdAt:d.number(),lastActivityAt:d.number()}),G=d.object({sessionId:d.string(),createdAt:d.number(),lastActivityAt:d.number(),agents:d.array(W),status:d.enum([`active`,`closed`,`archived`,`discovered`]),leadAgentId:d.string().optional(),parentSessionId:d.string().optional(),contextInheritance:k.optional(),rootSessionId:d.string().optional(),forkPointMessageId:d.string().optional(),branchKind:O.optional(),adapterName:d.string().optional(),adapterSessionId:d.string().optional(),adapterId:d.string().optional(),clientId:d.string().optional(),clientAccountId:d.string().optional(),lastClientIdentityObservation:u.optional(),isOrchestrated:d.boolean().optional(),title:d.string().optional(),summary:d.string().optional(),summaryUpdatedAt:d.number().optional(),isImported:d.boolean().optional(),forkTransforms:j.optional(),targetWorkingDirectory:d.string().optional(),executionTargetId:d.string().optional(),spawningToolCallId:d.string().optional(),approvalPolicyOverride:l.nullable().optional(),source:d.string().optional(),parentExternalSessionId:d.string().optional(),logFilePath:d.string().optional(),discoveredAt:d.number().optional(),importStatus:A.optional()}),ut=d.object({messageCount:d.number(),firstUserMessage:d.string().nullable()}),K=G.extend({preview:ut.optional()}),dt=d.discriminatedUnion(`success`,[d.object({agentId:d.string(),adapterId:d.string(),success:d.literal(!0)}),d.object({agentId:d.string(),adapterId:d.string(),success:d.literal(!1),error:d.string()})]),q=d.object({sessionId:d.string().optional(),parentSessionId:d.string().optional(),contextInheritance:k.optional(),forkPointMessageId:d.string().optional(),branchKind:O.optional(),forkTransforms:j.optional(),title:d.string().optional(),targetWorkingDirectory:d.string().optional(),executionTargetId:d.string().optional(),spawningToolCallId:d.string().optional(),originWindowId:d.string().optional()});function ft(e,t){e.spawningToolCallId&&e.branchKind!==`subagent`&&t.addIssue({code:d.ZodIssueCode.custom,path:[`spawningToolCallId`],message:`spawningToolCallId is only valid for subagent sessions`})}const pt={list:{request:oe.schema(d.object({status:d.enum([`active`,`closed`,`archived`,`discovered`,`all`]).optional(),limit:d.number().int().min(1).optional(),offset:oe.hidden(d.number().int().min(0).optional()),includePreview:d.boolean().optional(),executionTargetId:d.string().optional()}),{traceAll:!0}),response:d.object({sessions:d.array(K),total:d.number()})},search:{request:d.object({query:d.string(),limit:d.number().int().min(1).optional(),status:d.enum([`active`,`closed`,`archived`,`discovered`,`all`]).optional(),isImported:d.boolean().optional()}),response:d.object({sessions:d.array(K),total:d.number()})},get:{request:d.object({sessionId:d.string()}),response:d.object({session:G.nullable()})},create:{request:q.superRefine(ft),response:d.object({sessionId:d.string()})},close:{request:d.object({sessionId:d.string()}),response:d.object({success:d.boolean()})},resume:{request:d.object({sessionId:d.string()}),response:d.object({success:d.boolean()})},restartAgents:{request:d.object({sessionId:d.string()}),response:d.object({sessionId:d.string(),results:d.array(dt)})},archive:{request:d.object({sessionId:d.string()}),response:d.object({success:d.boolean()})},purge:{request:d.object({sessionId:d.string()}),response:d.object({success:d.boolean(),eventsDeleted:d.number().optional(),error:d.string().optional()})},update:{request:d.object({sessionId:d.string(),executionTargetId:d.string().nullable().optional(),approvalPolicyOverride:l.nullable().optional(),title:d.string().optional()}),response:d.object({success:d.boolean()})},getByAdapterSessionId:{request:d.object({adapterSessionId:d.string()}),response:d.object({session:G.nullable()})},getStatusCounts:{request:d.object({}),response:d.object({all:d.number(),active:d.number(),closed:d.number(),archived:d.number(),discovered:d.number()})},registerExternal:{request:q.extend({adapterName:d.string(),adapterSessionId:d.string(),lastClientIdentityObservation:u.optional()}).superRefine(ft),response:d.object({sessionId:d.string(),created:d.boolean()})}},J=d.object({sessionId:d.string(),eventId:d.string(),timestamp:d.number()}),mt=d.discriminatedUnion(`type`,[J.extend({type:d.literal(`agent.added`),payload:d.object({sessionId:d.string(),adapterSessionId:d.string(),agentId:d.string(),adapterId:d.string(),adapterName:d.string(),role:d.enum([`lead`,`member`]).optional(),model:d.string().optional(),cwd:d.string().optional()})}),J.extend({type:d.literal(`user_message.sent`),payload:U[`user_message.sent`]}),J.extend({type:d.literal(`user_message.acknowledged`),payload:U[`user_message.acknowledged`]}),J.extend({type:d.literal(`user_message.completed`),payload:U[`user_message.completed`]}),J.extend({type:d.literal(`turn.started`),payload:U[`turn.started`]}),J.extend({type:d.literal(`turn.completed`),payload:U[`turn.completed`]}),J.extend({type:d.literal(`message`),payload:d.object({messageId:d.string(),turnId:d.string().nullable(),role:d.enum([`user`,`assistant`])})}),J.extend({type:d.literal(`branch.created`),payload:d.object({childSessionId:d.string(),parentSessionId:d.string(),kind:O,forkPointMessageId:d.string().optional()})}),J.extend({type:d.literal(`branch.merged`),payload:d.object({childSessionId:d.string(),parentSessionId:d.string(),resultJson:d.string().optional(),resultMessageId:d.string().optional()})}),J.extend({type:d.literal(`squash`),payload:d.object({summaryJson:d.string(),tokensBefore:d.number().optional(),tokensAfter:d.number().optional(),compressedMessageIds:d.array(d.string()).optional()})})]),ht=[`message`,`agent.added`,`turn.started`,`turn.completed`,`user_message.sent`,`user_message.acknowledged`,`user_message.completed`,`branch.created`,`branch.merged`,`squash`],gt=ht,_t=J.extend({type:d.string().refine(e=>!ht.includes(e),{message:`Plugin session event type must not shadow a core event type.`}),payload:d.record(d.string(),d.unknown())}),Y=d.union([mt,_t]),vt=d.string(),X=d.object({sessionId:d.string().min(1),clientId:d.string().min(1),previousClientAccountId:d.string().min(1).nullable(),clientAccountId:d.string().min(1),source:d.string().min(1),observedAt:d.number().int().finite().nonnegative(),lastClientIdentityObservation:u}),yt=d.object({sessionId:d.string(),importStatus:A}),bt={"agent.added":d.object({sessionId:d.string(),adapterSessionId:d.string(),agentId:d.string(),adapterId:d.string(),adapterName:d.string(),role:D.optional(),model:d.string().optional(),cwd:d.string().optional()}),"agent.removed":d.object({sessionId:d.string(),agentId:d.string()}),closed:d.object({sessionId:d.string(),reason:d.string().optional()}),resumed:d.object({sessionId:d.string()}),archived:d.object({sessionId:d.string()}),purged:d.object({sessionId:d.string()}),compressed:d.object({sessionId:d.string(),eventId:d.string()}),"clientAccount.changed":X,"connectorSwap.editRequested":d.object({sessionId:d.string(),agentId:d.string(),previousCwd:d.string().optional(),newCwd:d.string().optional(),previousModel:d.string().optional(),newModel:d.string().optional()}),getContextWindowState:{request:d.object({sessionId:d.string()}),response:d.object({state:d.object({currentTokens:d.number(),maxTokens:d.number(),percentage:d.number(),level:d.enum([`ok`,`warn`,`critical`]),lastUpdatedAt:d.number()}).nullable()})},importStatusChanged:yt,"import.completed":d.object({sessionId:d.string(),adapterSessionId:d.string(),source:d.string()}),event:Y},Z=d.object({includeEvents:d.boolean().default(!1),includeToolOutputs:d.boolean().default(!1),includeAncestors:d.boolean().default(!0),includeChildren:d.boolean().default(!1)}),xt=`1.0`,Q=d.object({version:d.literal(`1.0`),exportedAt:d.number(),options:Z,sessions:d.array(G),agents:d.array(W),messages:d.array(P),turns:d.array(z),events:d.array(Y).optional()});function St(e){return Q.parse(e)}function Ct(e){let t=Q.safeParse(e);return t.success?{success:!0,data:t.data}:{success:!1,error:t.error}}const wt={"snapshot.export":{request:d.object({sessionId:d.string(),options:Z.optional()}),response:d.object({snapshot:Q})},"snapshot.import":{request:d.object({snapshot:Q,onConflict:d.enum([`fail`,`skip`,`overwrite`]).default(`fail`)}),response:d.object({imported:d.array(d.string()),skipped:d.array(d.string()),errors:d.array(d.object({sessionId:d.string(),error:d.string()}))})},"snapshot.validate":{request:d.object({snapshot:d.unknown()}),response:d.object({valid:d.boolean(),errors:d.array(d.string())})}},Tt={resolveAgentConfig:{request:d.object({selection:T,projectId:d.string().optional()}),response:d.object({adapterName:d.string(),model:d.string().optional(),providerConfigId:d.string().optional(),reasoningEffort:n.optional(),supportedReasoningLevels:r.optional(),systemPrompt:o.optional(),allowedTools:d.array(d.string()).optional(),disallowedTools:d.array(d.string()).optional(),allowedDirectories:d.array(d.string()).optional()})}},Et={resolveSystemPrompt:{request:d.object({sessionId:d.string(),personaId:d.string().optional(),profileId:d.string().optional()}),response:d.object({systemPrompt:d.string(),personaName:d.string().optional(),profileName:d.string().optional()})}},Dt={enrichContext:{request:d.object({sessionId:d.string()}),response:d.record(d.string(),d.unknown())}},Ot={...pt,...bt,...wt,...et,...U,...Tt,...Et,...Dt},$=d.object({adapterId:d.string(),harnessId:d.string().optional(),clientId:d.string().optional(),clientProfileName:ie.optional(),initialMessage:s.optional(),responseSchema:c.optional(),model:d.string().optional(),reasoningEffort:n.optional(),adapterConfig:t.optional(),env:d.record(d.string(),d.string()).optional(),role:D,sessionContext:M.optional(),mcpSessionContext:d.union([S,C]).optional(),providerContext:E.optional(),ephemeral:d.boolean().optional()}).merge(se),kt={request:d.union([$.extend({mode:d.literal(`fork`),sessionId:d.string(),sourceSessionId:d.string()}),$.extend({mode:d.literal(`resume`),sessionId:d.string(),adapterSessionId:d.string()}),$.extend({mode:d.literal(`create`).optional(),sessionId:d.string().optional()})]).superRefine((e,t)=>{let n=e.mode??`create`;e.ephemeral&&n!==`create`&&t.addIssue({code:d.ZodIssueCode.custom,path:[`ephemeral`],message:`ephemeral is only supported for create mode`}),e.ephemeral&&e.initialMessage===void 0&&t.addIssue({code:d.ZodIssueCode.custom,path:[`initialMessage`],message:`ephemeral startAgent requires initialMessage`})}),response:d.discriminatedUnion(`success`,[d.object({success:d.literal(!0),agentId:d.string(),adapterId:d.string(),adapterSessionId:d.string(),sessionId:d.string(),messageId:d.string().optional()}),d.object({success:d.literal(!1),message:d.string()})])},At={request:d.object({adapterId:d.string(),prompt:d.string(),model:d.string().optional(),systemPrompt:d.string().optional(),responseSchema:c.optional(),providerContext:E.optional()}),response:d.object({text:d.string(),usage:d.object({inputTokens:d.number(),outputTokens:d.number()}).optional()})},jt={request:d.object({adapterId:d.string()}),response:d.object({agents:d.array(d.object({agentId:d.string(),sessionId:d.string(),adapterSessionId:d.string()}))})},Mt={request:d.object({adapterId:d.string(),agentId:d.string()}),response:d.object({agent:d.object({agentId:d.string(),sessionId:d.string(),adapterSessionId:d.string()}).nullable()})},Nt={request:d.object({adapterId:d.string(),agentId:d.string()}),response:d.object({success:d.boolean()})},Pt={request:d.object({adapterId:d.string(),agentId:d.string(),cwd:d.string().optional(),model:d.string().optional(),adapterSessionId:d.string().optional()}),response:d.object({})},Ft={request:d.object({adapterName:d.string()}),response:d.object({found:d.boolean(),adapterName:d.string(),jsonSchema:d.record(d.string(),d.unknown()).nullable()})},It=f.extend({agentId:d.string(),sessionId:d.string(),adapterSessionId:d.string().optional()}),Lt=f.extend({adapterSessionId:d.string(),sessionId:d.string(),model:d.string()}),Rt=f.extend({sessionId:d.string(),adapterSessionId:d.string(),totalInputTokens:d.number(),totalOutputTokens:d.number(),totalCalls:d.number()}),zt=f.extend({agentId:d.string(),sessionId:d.string(),adapterSessionId:d.string(),reason:d.string().optional()}),Bt=f.extend({message:d.string(),timestamp:d.number(),level:d.enum([`debug`,`info`,`warn`,`error`]).optional()}),Vt=f.extend({error:d.string(),sessionId:d.string().optional(),errorCategory:ne.optional()}),Ht=f.extend({capabilities:d.array(d.string()),nativeTools:d.array(d.string()).optional()}),Ut=f.extend({provider:d.string(),quotaType:d.string(),limit:d.number(),used:d.number(),overage:d.number(),resetDate:d.string()}),Wt=d.object({agentId:d.string(),adapterId:d.string(),adapterName:d.string(),sessionId:d.string().optional(),adapterSessionId:d.string(),messageId:d.string().optional(),turnId:d.string().optional(),clientId:d.string().optional(),providerConfigId:d.string().optional(),occurredAt:d.number().optional()}),Gt=d.object({model:d.string().nullable(),cwd:d.string().nullable()}),Kt=Wt.merge(Gt),qt=f.merge(Gt).extend({adapterSessionId:d.string(),title:d.string().optional(),logFilePath:d.string().nullable().optional(),startedAt:d.number().finite().optional()}).and(ae);export{Ne as $,Y as A,it as B,xt as C,St as D,Ct as E,ut as F,P as G,nt as H,K as I,F as J,R as K,lt as L,vt as M,q as N,X as O,G as P,j as Q,W as R,Tt as S,se as St,Z as T,N as U,B as V,rt as W,I as X,L as Y,M as Z,At as _,ke as _t,Ht as a,A as at,Dt as b,ge as bt,zt as c,E as ct,It as d,T as dt,Qe as et,Ft as f,we as ft,jt as g,C as gt,Mt as h,Te as ht,Ut as i,O as it,gt as j,yt as k,Rt as l,Ae as lt,Nt as m,y as mt,Kt as n,Me as nt,Vt as o,k as ot,Pt as p,v as pt,z as q,Wt as r,D as rt,Bt as s,je as st,qt as t,$e as tt,Lt as u,w as ut,kt as v,x as vt,Q as w,Et as x,m as xt,Ot as y,_ as yt,ct as z};
@@ -1 +0,0 @@
1
- import{A as e,F as t,G as n,H as r,I as i,P as a,U as ee,at as o,it as s,j as c,nt as l,ot as te,y as u}from"./schemas-CuKayWhA.mjs";import{t as d}from"./schemas-hSrzflwZ.mjs";import{i as f}from"./account-identity-CgzOqnVm.mjs";import{CompressSessionLineageSchema as p,ForkSessionLineageSchema as m,RootSessionLineageSchema as h,SubagentSessionLineageSchema as g}from"./contracts/adapter/schemas/session-lineage.mjs";import{t as _}from"./storage-namespace-definition-RvjfFysN.mjs";import{z as v}from"zod";import{createBusNamespace as y}from"@makaio/framework/core";const b=y(`session`,u),x=b.subjects;function S(e){return c.includes(e.type)}const C=`ui-warnings`,w=`connector-swap-warning-suppressed`,T=1440*60*1e3,E={cancel:`cancel`,edit:`edit`,continue:`continue`},D=`CONNECTOR_SWAP_CANCELLED`;var O=class extends Error{code=D;constructor(){super(`Connector swap cancelled by user`),this.name=`ConnectorSwapCancelledError`}};function k(e){return e instanceof O||e instanceof Error&&`code`in e&&e.code===`CONNECTOR_SWAP_CANCELLED`}const A={branch:{label:`branch`,staysInView:!0,navigatesToChild:!1,canMergeBack:!0},subagent:{label:`subagent`,staysInView:!0,navigatesToChild:!1,canMergeBack:!0},fork:{label:`fork`,staysInView:!1,navigatesToChild:!0,canMergeBack:!1},compress:{label:`compress`,staysInView:!1,navigatesToChild:!0,canMergeBack:!1},rewrite:{label:`rewrite`,staysInView:!1,navigatesToChild:!0,canMergeBack:!1},coordinator:{label:`coordinator`,staysInView:!0,navigatesToChild:!1,canMergeBack:!1},aside:{label:`aside`,staysInView:!0,navigatesToChild:!1,canMergeBack:!1}};function j(e){return e!=null&&A[e].staysInView}function M(e){return e==null||A[e].navigatesToChild}function N(e){return e!=null&&A[e].canMergeBack}function P(e){return A[e]}const F=v.object({timestamp:v.number(),messageId:v.string()}),I=_(`message`,{schemas:{append:{request:v.object({message:n.omit({messageId:!0}).extend({messageId:v.string().optional()}),emitEvent:v.boolean().optional()}),response:v.object({message:n})},getBySession:{request:v.object({sessionId:v.string(),limit:v.number().int().min(1).optional(),after:F.optional(),includeAfter:v.boolean().optional(),order:v.enum([`asc`,`desc`]).optional()}),response:v.object({messages:v.array(n),nextCursor:F.nullable()})},getByTurn:{request:v.object({turnId:v.string()}),response:v.object({messages:v.array(n)})},get:{request:v.object({messageId:v.string()}),response:v.object({message:n.nullable()})},getByAdapterMessageId:{request:v.object({adapterMessageId:v.string()}),response:v.object({message:n.nullable()})},search:{request:v.object({query:v.string(),sessionId:v.string().optional(),limit:v.number().int().min(1).optional()}),response:v.object({messages:v.array(n),total:v.number()})},ftsSearch:{request:v.object({query:v.string(),sessionId:v.string().optional(),limit:v.number().int().min(1).optional().default(20)}),response:v.object({results:v.array(v.object({messageId:v.string(),sessionId:v.string(),score:v.number(),excerpt:v.string()})),total:v.number()})},upsertByAdapterMessageId:{request:v.object({sessionId:v.string(),turnId:v.string().nullable(),adapterMessageId:v.string(),role:v.enum([`user`,`assistant`]),contentText:v.string(),blocks:v.array(r),agentId:v.string().optional(),adapterSessionId:v.string().optional(),timestamp:v.number(),origin:ee.optional()}),response:v.object({messageId:v.string(),created:v.boolean()})},stored:v.object({message:n})}}),L=I.subjects;function R(e,t){return e.timestamp===t.timestamp?e.messageId.localeCompare(t.messageId):e.timestamp-t.timestamp}function z(e,t){return R(t,e)}function B(e){return{timestamp:e.timestamp,messageId:e.messageId}}function V(e){return`${e.timestamp}:${e.messageId}`}const H=v.object({after:v.string().optional(),limit:v.number().int().min(1).optional(),types:v.array(v.string()).optional(),includeReasoning:v.boolean().optional(),order:v.enum([`asc`,`desc`]).optional()}),U=v.object({events:v.array(e),nextCursor:v.string().nullable(),totalCount:v.number().optional()}),W=_(`sessionEvent`,{schemas:{append:{request:v.object({event:e}),response:v.object({success:v.boolean()})},getEvents:{request:v.object({sessionId:v.string(),options:H.optional()}),response:U},getByIds:{request:v.object({sessionId:v.string(),eventIds:v.array(v.string())}),response:v.object({events:v.array(e)})},deleteBySession:{request:v.object({sessionId:v.string()}),response:v.object({success:v.boolean(),deletedCount:v.number().optional()})},getEventsBySessions:{request:v.object({sessionIds:v.array(v.string()),types:v.array(v.string()),limitPerSession:v.number().int().min(1).optional()}),response:v.object({eventsBySession:v.record(v.string(),v.array(e))})}}}),G=W.subjects,K=a.extend({preview:t});function q(e,t){e.clientAccountId!==void 0&&e.lastClientIdentityObservation===void 0&&t.addIssue({code:v.ZodIssueCode.custom,path:[`lastClientIdentityObservation`],message:`lastClientIdentityObservation is required when clientAccountId is provided`}),e.clientAccountId!==void 0&&e.clientId===void 0&&t.addIssue({code:v.ZodIssueCode.custom,path:[`clientId`],message:`clientId is required when clientAccountId is provided`})}const J=a.superRefine((e,t)=>{q(e,t)}),Y=v.object({sessionId:v.string(),session:J,ifAbsent:v.boolean().optional()}).superRefine((e,t)=>{e.sessionId!==e.session.sessionId&&t.addIssue({code:v.ZodIssueCode.custom,path:[`session`,`sessionId`],message:`session.sessionId must match the top-level sessionId`})}),X={request:v.object({sessionId:v.string(),status:v.enum([`active`,`closed`,`archived`,`discovered`]).optional(),parentSessionId:v.string().optional(),contextInheritance:te.optional(),rootSessionId:v.string().optional(),forkPointMessageId:v.string().optional(),branchKind:s.optional(),isOrchestrated:v.boolean().optional(),clientId:v.string().optional(),clientAccountId:v.string().optional(),lastClientIdentityObservation:f.optional(),executionTargetId:v.string().nullable().optional(),approvalPolicyOverride:d.nullable().optional(),title:v.string().optional(),targetWorkingDirectory:v.string().optional(),createdAt:v.number().finite().optional(),lastActivityAt:v.number().finite().optional(),spawningToolCallId:v.string().nullable().optional()}),response:v.object({success:v.boolean(),clientAccountChanged:v.boolean().optional()})},Z=v.object({externalSessionId:v.string(),source:v.string(),clientId:v.string().optional(),adapterId:v.string().optional(),cwd:v.string().nullable(),logFilePath:v.string().nullable().optional(),startedAt:v.number().finite().optional(),title:v.string().nullable().optional()}),Q=v.discriminatedUnion(`kind`,[Z.merge(h),Z.merge(m),Z.merge(g),Z.merge(p)]),$=_(`session`,{schemas:{get:{request:v.object({sessionId:v.string()}),response:v.object({session:a.nullable()})},set:{request:Y,response:v.object({success:v.boolean(),clientAccountChanged:v.boolean().optional()})},delete:{request:v.object({sessionId:v.string()}),response:v.object({success:v.boolean()})},list:{request:v.object({status:v.enum([`active`,`closed`,`archived`,`discovered`,`all`]).optional(),limit:v.number().int().min(1).optional(),offset:v.number().int().min(0).optional(),includePreview:v.boolean().optional(),executionTargetId:v.string().optional()}),response:v.object({sessions:v.array(i),total:v.number()})},getChildren:{request:v.object({sessionId:v.string()}),response:v.object({children:v.array(l)})},search:{request:v.object({query:v.string(),limit:v.number().int().min(1).optional(),status:v.enum([`active`,`closed`,`archived`,`discovered`,`all`]).optional(),isImported:v.boolean().optional()}),response:v.object({sessions:v.array(K),total:v.number()})},update:X,getByAdapterSessionId:{request:v.object({adapterSessionId:v.string(),source:v.string().optional(),adapterName:v.string().optional()}),response:v.object({session:a.nullable()})},getStatusCounts:{request:v.object({}),response:v.object({all:v.number(),active:v.number(),closed:v.number(),archived:v.number(),discovered:v.number()})},importUpsert:{request:Q,response:v.object({sessionId:v.string(),created:v.boolean()})},getByLogFilePath:{request:v.object({logFilePath:v.string()}),response:v.object({session:a.nullable()})},listImported:{request:v.object({source:v.string().optional(),importStatus:o.optional()}),response:v.object({sessions:v.array(a)})},countBySource:{request:v.object({source:v.string()}),response:v.object({total:v.number(),imported:v.number(),discovered:v.number(),tracking:v.number()})},updateImportStatus:{request:v.object({sessionId:v.string(),importStatus:o}),response:v.object({success:v.boolean()})}}}),ne=$.subjects;export{w as C,b as D,S as E,x as O,E as S,C as T,N as _,X as a,O as b,R as c,B as d,F as f,j as g,P as h,ne as i,z as l,L as m,Y as n,W as o,I as p,J as r,G as s,$ as t,V as u,M as v,T as w,k as x,D as y};
@@ -1,39 +0,0 @@
1
- import{TurnStorageSubjects as e}from"./services/turn/namespace.mjs";import{agents as t,agentsDual as n,sessions as r,sessionsDual as i}from"./services/session/storage/schema.mjs";import"./schema-C3TgjrsV.mjs";import{a,i as o,n as s,o as c,r as l}from"./namespace-Dfq6MDN9.mjs";import{SessionStorageSubjects as u}from"./services/session/storage/namespace.mjs";import{D as d,F as f,T as p,_ as m,d as h,f as g,g as _,h as v,k as y,m as b,p as x,u as ee,v as te,y as S}from"./handlers-BAB4fQNH.mjs";import{r as ne,t as re}from"./provider-context-wp4VSJFI.mjs";import{AdapterRuntimeSubjects as ie}from"./services/adapter-runtime/namespace.mjs";import{MessageStorageSubjects as C}from"./services/session/messages/namespace.mjs";import{n as w}from"./namespace-D6X67cUk.mjs";import{z as T}from"zod";import{createHash as ae}from"node:crypto";import{MakaioBus as oe,NoHandlerError as se,TimeoutError as ce}from"@makaio/framework/bus";import{AdapterSubjects as E,AgentSubjects as D,CanonicalModelSubjects as le,CompressionModeSchema as ue,ForkTransformsSchema as de,MessageRoutingSchema as fe,SessionContextSchema as pe,SessionDiscoveredSchema as me,SessionStorageSetRequestSchema as he,SessionStorageUpdateSchema as ge,SessionSubjects as O,compareMessageCursorAsc as _e,compareMessageCursorDesc as ve,isCanonicalModelParseError as ye,messageToCursor as k,parseCanonicalModel as be}from"@makaio/framework/contracts";import{BaseService as xe}from"@makaio/framework/service-base";import{createStorageNamespaceDefinition as Se}from"@makaio/framework/storage";import{blob as Ce,index as we,integer as Te,primaryKey as Ee,sqliteTable as De,text as A,uniqueIndex as Oe}from"drizzle-orm/sqlite-core";import{index as ke,primaryKey as Ae}from"drizzle-orm/pg-core";import{defineDialectSchema as j,defineDualTable as je,didAffectRows as M,getRawSqlExecutor as Me,getStorageEngine as Ne,resolveSchema as N,resolveStorageEngine as P}from"@makaio/framework/storage/drizzle";import{and as F,asc as I,count as L,desc as R,eq as z,gt as Pe,gte as Fe,inArray as B,isNull as V,lt as Ie,lte as Le,or as Re,sql as H}from"drizzle-orm";import{ClientIdentityObservationSchema as ze}from"@makaio/framework/contracts/client";import{ImportCursorStorageSubjects as Be}from"@makaio/framework/adapters";function Ve(e){return e.on(O.agent.added,async t=>{let n=await e.requestOptional(u.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(u.set,{sessionId:t.payload.sessionId,session:r}))})}function He(e){return e.on(O.agent.removed,async t=>{let n=await e.requestOptional(u.get,{sessionId:t.payload.sessionId}),r=n.handled?n.data.session:void 0;r&&(await e.requestOptional(f.updateStatus,{agentId:t.payload.agentId,status:`disposed`}),r.leadAgentId===t.payload.agentId&&(r.leadAgentId=void 0),r.lastActivityAt=Date.now(),await e.request(u.set,{sessionId:t.payload.sessionId,session:r}))})}function Ue(e){return[Ke(e),qe(e),Je(e),We(e),Ye(e),Xe(e),Ze(e),Qe(e),$e(e),nt(e),Ve(e.bus),He(e.bus)]}function We(e){let{bus:t}=e;return t.on(O.turn.await,async e=>{let{sessionId:n,turnId:r,timeoutMs:i}=e.payload,a=new AbortController,o=t.once(O.turn.completed,{timeoutMs:i,filter:{sessionId:n,turnId:r},signal:a.signal});o.catch(()=>void 0);let s=await Ge(t,n,r);if(s!==void 0){a.abort(),e.setResult({completion:s});return}try{let t=await o;e.setResult({completion:t.payload})}catch(e){throw e instanceof Error&&e.name===`OnceTimeoutError`?new ce(`session.turn.await`,i):e}})}async function Ge(t,n,r){let i=await t.requestOptional(e.get,{turnId:r}),a=i.handled?i.data.turn:null;if(!(a?.sessionId!==n||a.status!==`completed`&&a.status!==`error`))return{sessionId:n,turnId:r,turnNumber:a.turnNumber,success:a.status===`completed`,...a.error!==void 0&&{error:a.error},...a.initiator!==void 0&&{initiator:a.initiator}}}function Ke(e){let{bus:t}=e;return t.on(O.create,async e=>{let{sessionId:n,parentSessionId:r,contextInheritance:i,forkPointMessageId:a,branchKind:o,forkTransforms:s,title:c,targetWorkingDirectory:l,executionTargetId:d,spawningToolCallId:f,originWindowId:p}=e.payload,m=n??crypto.randomUUID(),h=Date.now(),g={sessionId:m,createdAt:h,lastActivityAt:h,agents:[],status:`active`,title:c,parentSessionId:r,contextInheritance:i,forkPointMessageId:a,branchKind:o,forkTransforms:s,targetWorkingDirectory:l,executionTargetId:d,spawningToolCallId:f},_=await t.requestOptional(u.set,{sessionId:m,session:g,ifAbsent:!0});if(_.handled&&!_.data.success){e.setResult({sessionId:m});return}await t.emit(O.created,{sessionId:m,createdAt:g.createdAt,parentSessionId:r??null,branchKind:o??null,originWindowId:p??`server`}),e.setResult({sessionId:m})})}function qe(e){let{bus:t}=e;return t.on(O.get,async e=>{let n=await t.requestOptional(u.get,{sessionId:e.payload.sessionId}),r=n.handled?n.data.session:null;e.setResult({session:r})})}function Je(e){let{bus:t}=e;return t.on(O.list,async e=>{let{status:n,limit:r,offset:i,includePreview:a,executionTargetId:o}=e.payload,s=await t.requestOptional(u.list,{status:n??`all`,limit:r,offset:i,includePreview:a,executionTargetId:o}),c=s.handled?s.data.sessions:[],l=s.handled?s.data.total:0;e.setResult({sessions:c,total:l})})}function Ye(e){let{bus:t}=e;return t.on(O.close,async e=>{let{sessionId:n}=e.payload,r=await t.requestOptional(u.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(u.set,{sessionId:n,session:i}),await t.emit(O.closed,{sessionId:n}),e.setResult({success:!0})})}function Xe(e){let{bus:t}=e;return t.on(O.restartAgents,async e=>{let{sessionId:n}=e.payload,r=await t.requestOptional(f.listBySession,{sessionId:n}),i=r.handled?r.data.agents:[],a=[];for(let e of i)try{let n=await p(t,e,{cwd:e.cwd,model:e.model});await t.requestOptional(f.updateRuntime,{agentId:n.agentId,adapterId:n.adapterId}),a.push({agentId:n.agentId,adapterId:n.adapterId,success:!0})}catch(t){let n=t instanceof Error?t.cause:void 0,r=n instanceof Error?n.message:t instanceof Error?t.message:String(t);a.push({agentId:e.agentId,adapterId:e.adapterId,success:!1,error:r})}e.setResult({sessionId:n,results:a})})}function Ze(e){let{bus:t}=e;return t.on(O.update,async e=>{let{sessionId:n,executionTargetId:r,approvalPolicyOverride:i,title:a}=e.payload,o=await t.requestOptional(u.update,{sessionId:n,executionTargetId:r,approvalPolicyOverride:i,title:a}),s=o.handled?o.data.success:!1;if(s){let e=[];r!==void 0&&e.push(`executionTargetId`),i!==void 0&&e.push(`approvalPolicyOverride`),a!==void 0&&e.push(`title`),e.length>0&&await t.emit(O.updated,{sessionId:n,changedProperties:e})}e.setResult({success:s})})}function Qe(e){let{bus:t}=e;return t.on(O.archive,async e=>{let{sessionId:n}=e.payload,r=await t.requestOptional(u.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(u.set,{sessionId:n,session:i}),await t.emit(O.archived,{sessionId:n}),e.setResult({success:!0})})}function $e(e){let{bus:t}=e;return t.on(O.purge,async e=>{let{sessionId:n}=e.payload,r=await t.requestOptional(u.get,{sessionId:n}),i=r.handled?r.data.session:null;if(!i){e.setResult({success:!1,error:`Session not found`});return}if(i.status!==`archived`){e.setResult({success:!1,error:`Cannot purge session unless archived. Call close then archive first.`});return}let a=await t.requestOptional(u.list,{status:`all`}),o=a.handled?a.data.sessions:[];for(let e of o)e.parentSessionId===n&&await t.requestOptional(u.set,{sessionId:e.sessionId,session:{...e,parentSessionId:void 0}});let c=await t.requestOptional(s.getEvents,{sessionId:n,options:{limit:1}}),l=c.handled?c.data.totalCount:0;await t.requestOptional(s.deleteBySession,{sessionId:n}),await t.requestOptional(u.delete,{sessionId:n}),await t.emit(O.purged,{sessionId:n}),e.setResult({success:!0,eventsDeleted:l})})}function et(e,t){let n=ae(`sha256`).update(`${e}\u0000${t}`).digest(`hex`);return`${n.slice(0,8)}-${n.slice(8,12)}-8${n.slice(13,16)}-9${n.slice(17,20)}-${n.slice(20,32)}`}async function tt(e,t,n,r){let i=await e.requestOptional(u.getByAdapterSessionId,{adapterSessionId:r,adapterName:n});if(i.handled&&i.data.session!==null){let e=i.data.session;if(e.adapterName===n)return{sessionId:e.sessionId,created:!1}}let a=await e.requestOptional(u.get,{sessionId:t}),o=a.handled?a.data.session:null;if(o!==null&&o.adapterName===n&&o.adapterSessionId===r)return{sessionId:o.sessionId,created:!1};throw Error(`session.registerExternal: session ID "${t}" already exists but does not carry adapter identity (${n}, ${r}); refusing to mis-attribute it`)}function nt(e){let{bus:t}=e;return t.on(O.registerExternal,async e=>{let{adapterName:n,adapterSessionId:r,lastClientIdentityObservation:i,sessionId:a,parentSessionId:o,contextInheritance:s,forkPointMessageId:c,branchKind:l,forkTransforms:d,title:f,targetWorkingDirectory:p,executionTargetId:m,spawningToolCallId:h,originWindowId:g}=e.payload,_=await t.requestOptional(u.getByAdapterSessionId,{adapterSessionId:r,adapterName:n});if(_.handled&&_.data.session!==null){let t=_.data.session;if(t.adapterName===n){e.setResult({sessionId:t.sessionId,created:!1});return}}let v=a??et(n,r),y=Date.now(),b={sessionId:v,createdAt:y,lastActivityAt:y,agents:[],status:`active`,adapterName:n,adapterSessionId:r,lastClientIdentityObservation:i,title:f,parentSessionId:o,contextInheritance:s,forkPointMessageId:c,branchKind:l,forkTransforms:d,targetWorkingDirectory:p,executionTargetId:m,spawningToolCallId:h},x=await t.requestOptional(u.set,{sessionId:v,session:b,ifAbsent:!0});if(x.handled&&!x.data.success){let i=await tt(t,v,n,r);e.setResult(i);return}await t.emit(O.created,{sessionId:v,createdAt:b.createdAt,parentSessionId:o??null,branchKind:l??null,originWindowId:g??`server`}),e.setResult({sessionId:v,created:!0})})}var rt=class extends xe{constructor(e=oe){super(e)}async onInit(){for(let e of Ue({bus:this.bus}))this.addCleanup(e);await this.reconcileOrphanedTurns()}async reconcileOrphanedTurns(){let t=await this.bus.requestOptional(e.listActive,{});if(!t.handled)return;let{turns:n}=t.data;for(let t of n)try{let{transitioned:n}=await this.bus.request(e.complete,{turnId:t.turnId,status:`error`,expectedStatus:`active`,error:`process-restart`});n&&await this.bus.emit(O.turn.completed,{sessionId:t.sessionId,turnId:t.turnId,turnNumber:t.turnNumber,success:!1,error:`process-restart`})}catch(e){console.error(`[MakaioSessionService] Failed to reconcile orphaned turn ${t.turnId}:`,e)}}};function it(e){return Error(`No adapter found for adapterName="${e}". Ensure adapter-runtime identity handlers are registered; adapter startup verifies live availability.`)}var at=class{bus;registry=new Map;cleanup;constructor(e){this.bus=e,this.cleanup=this.bus.on(E.initialized,e=>{this.registry.set(e.payload.adapterName,e.payload.adapterId)})}resolve(e){let t=this.registry.get(e);if(!t)throw it(e);return t}async resolveAvailable(e){try{let{adapterId:t}=await this.bus.request(ie.resolveId,{adapterName:e});return this.registry.set(e,t),t}catch{let t=this.registry.get(e);if(t)return t;throw it(e)}}destroy(){this.cleanup?.(),this.cleanup=void 0,this.registry.clear()}};function ot(e,t,n,r){return e.on(s.append,e=>{let{event:i}=e.payload,a=t.get(i.sessionId)??[];if(n.has(i.eventId)){e.setResult({success:!0});return}a.push(i),t.set(i.sessionId,a),n.set(i.eventId,r()),e.setResult({success:!0})})}function st(e,t,n){return e.on(s.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 ct(e,t){return e.on(s.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 lt(e,t,n){return e.on(s.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 ut(e,t){return e.on(s.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 dt(e){let t=new Map,n=new Map,r=1,i=[ot(e,t,n,()=>r++),st(e,t,n),ct(e,t),lt(e,t,n),ut(e,t)];return()=>i.forEach(e=>e())}const ft=o.postgres,pt=j({sessionEvents:l},{sessionEvents:ft}),mt=[`sessionId`,`agentId`,`adapterId`,`messageId`,`turnId`];function ht(e){let t=e.payload,n={};for(let[e,r]of Object.entries(t))mt.includes(e)||(n[e]=r);return n}function gt(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 _t(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 vt(e.payload)}}function vt(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 yt({bus:e,db:t,sessionEvents:n}){return e.on(s.append,async e=>{let{event:r}=e.payload,i=`payload`in r&&`agentId`in r.payload?r.payload.agentId:null,a=`payload`in r&&`adapterId`in r.payload?r.payload.adapterId:null,o=`payload`in r&&`turnId`in r.payload?r.payload.turnId:null,s=`payload`in r&&`messageId`in r.payload?r.payload.messageId:null,c=r.type===`message`?s:null,l=r.type===`message`?null:s,u={sessionId:r.sessionId,eventId:r.eventId,timestamp:r.timestamp,type:r.type,agentId:i,adapterId:a,messageId:c,originatingMessageId:l,turnId:o,contentText:_t(r),payload:JSON.stringify(ht(r))};await t.insert(n).values(u).onConflictDoNothing(),e.setResult({success:!0})})}function bt({bus:e,db:t,sessionEvents:n}){return e.on(s.getEvents,async e=>{let{sessionId:r,options:i}=e.payload,a=[z(n.sessionId,r)],o=i?.order??`asc`;if(i?.after){let e=parseInt(i.after,10);!isNaN(e)&&e>0&&(o===`desc`?a.push(Ie(n.id,e)):a.push(Pe(n.id,e)))}i?.types&&i.types.length>0&&a.push(B(n.type,i.types));let s=i?.limit??100,c=o===`desc`?R:I,l=await t.select().from(n).where(F(...a)).orderBy(c(n.id)).limit(s+1),u=l.length>s,d=u?l.slice(0,s):l,f=d.map(gt),p=u&&d.length>0?d[d.length-1].id.toString():null;e.setResult({events:f,nextCursor:p})})}function xt({bus:e,db:t,sessionEvents:n}){return e.on(s.getByIds,async e=>{let{sessionId:r,eventIds:i}=e.payload,a=(await t.select().from(n).where(F(z(n.sessionId,r),B(n.eventId,i))).orderBy(I(n.timestamp))).map(gt);e.setResult({events:a})})}function St({bus:e,db:t,sessionEvents:n}){return e.on(s.deleteBySession,async e=>{let{sessionId:r}=e.payload,i=(await t.select().from(n).where(z(n.sessionId,r))).length;await t.delete(n).where(z(n.sessionId,r)),e.setResult({success:!0,deletedCount:i})})}function Ct({bus:e,db:t,sessionEvents:n}){return e.on(s.getEventsBySessions,async e=>{let{sessionIds:r,types:i,limitPerSession:a=50}=e.payload;if(r.length===0||i.length===0){e.setResult({eventsBySession:{}});return}let o={};for(let e of r){let r=await t.select().from(n).where(F(z(n.sessionId,e),B(n.type,i))).orderBy(R(n.timestamp)).limit(a);r.length>0&&(o[e]=r.map(gt))}e.setResult({eventsBySession:o})})}function wt(e,t){let{sessionEvents:n}=N(t,pt),r={bus:e,db:t,sessionEvents:n},i=[yt(r),bt(r),xt(r),St(r),Ct(r)];return()=>i.forEach(e=>e())}async function Tt(e,t){e.emit(C.stored,{message:structuredClone(t)});try{await e.request(s.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 U(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 Et(e){let{bus:t,db:n}=e,{messages:r}=N(n,c);return t.on(C.append,async e=>{let{message:i,emitEvent:a}=e.payload,o=i.messageId??crypto.randomUUID(),s={...i,messageId:o,blocks:i.blocks??[]};await n.insert(r).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 Tt(t,s)})}function Dt(e){let{bus:t,db:n}=e,{messages:r}=N(n,c);return t.on(C.getBySession,async e=>{let{sessionId:t,limit:i,after:a,includeAfter:o=!1,order:s=`asc`}=e.payload,c=s===`desc`?R:I,l=n.select().from(r).where(z(r.sessionId,t)).orderBy(c(r.timestamp),c(r.messageId));if(a){let e=s===`desc`?Re(Ie(r.timestamp,a.timestamp),F(z(r.timestamp,a.timestamp),o?Le(r.messageId,a.messageId):Ie(r.messageId,a.messageId))):Re(Pe(r.timestamp,a.timestamp),F(z(r.timestamp,a.timestamp),o?Fe(r.messageId,a.messageId):Pe(r.messageId,a.messageId)));l=n.select().from(r).where(F(z(r.sessionId,t),e)).orderBy(c(r.timestamp),c(r.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?k(p[p.length-1]):null;e.setResult({messages:p.map(U),nextCursor:m})})}function Ot(e){let{bus:t,db:n}=e,{messages:r}=N(n,c);return t.on(C.getByTurn,async e=>{let{turnId:t}=e.payload,i=await n.select().from(r).where(z(r.turnId,t)).orderBy(I(r.timestamp));e.setResult({messages:i.map(U)})})}function kt(e){let{bus:t,db:n}=e,{messages:r}=N(n,c);return t.on(C.get,async e=>{let{messageId:t}=e.payload,[i]=await n.select().from(r).where(z(r.messageId,t)).limit(1);e.setResult({message:i?U(i):null})})}function At(e){let{bus:t,db:n}=e,{messages:r}=N(n,c),i=P(n).fts;return t.on(C.search,async e=>{let{query:t,sessionId:a,limit:o}=e.payload,s=o??50;if(!t.trim()){e.setResult({messages:[],total:0});return}let{rows:c,total:l}=await i.searchMessages(n,r,{query:t,sessionId:a,limit:s});e.setResult({messages:c.map(U),total:l})})}function jt(e){let{bus:t,db:n}=e,{messages:r}=N(n,c),i=P(n).fts;return t.on(C.ftsSearch,async e=>{let{query:t,sessionId:a,limit:o=20}=e.payload;if(!t.trim()){e.setResult({results:[],total:0});return}let{results:s,total:c}=await i.searchMessageExcerpts(n,r,{query:t,sessionId:a,limit:o});e.setResult({results:s,total:c})})}function Mt(e){let{bus:t,db:n}=e,{messages:r}=N(n,c);return t.on(C.getByAdapterMessageId,async e=>{let{adapterMessageId:t}=e.payload,[i]=await n.select().from(r).where(z(r.adapterMessageId,t)).limit(1);e.setResult({message:i?U(i):null})})}function Nt(e){let{bus:t,db:n}=e,{messages:r}=N(n,c);return t.on(C.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 n.select({messageId:r.messageId}).from(r).where(z(r.adapterMessageId,i)).limit(1);if(m){e.setResult({messageId:m.messageId,created:!1});return}let h=crypto.randomUUID();await n.insert(r).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 Tt(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 Pt(e,t){let n={bus:e,db:t},r=[Et(n),Dt(n),Ot(n),kt(n),At(n),jt(n),Nt(n),Mt(n)];return()=>r.forEach(e=>e())}function Ft(e,t){return _e(k(e),k(t))}function It(e,t){return ve(k(e),k(t))}function Lt(e){let t=new Map,n=new Map,r=new Map,i=new Map,a=Rt(t,n,r,i),o=[zt(e,t,a),Bt(e,t,n),Vt(e,t,r),Ht(e,t),Ut(e,t),Wt(e,i,a),Gt(e,t,n,r,i)];return()=>o.forEach(e=>e())}function Rt(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 zt(e,t,n){return e.on(C.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 Tt(e,o)})}function Bt(e,t,n){return e.on(C.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`?It:Ft,u=c.map(e=>t.get(e)).filter(e=>!!e).sort(l);a&&(u=u.filter(e=>{let t=s===`desc`?ve(k(e),a):_e(k(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?k(p[p.length-1]):null;e.setResult({messages:p,nextCursor:m})})}function Vt(e,t,n){return e.on(C.getByTurn,async e=>{let{turnId:r}=e.payload,i=(n.get(r)??[]).map(e=>t.get(e)).filter(e=>!!e).sort(Ft);e.setResult({messages:i})})}function Ht(e,t){return e.on(C.get,async e=>{e.setResult({message:t.get(e.payload.messageId)??null})})}function Ut(e,t){return e.on(C.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(Ft),e.setResult({messages:c.slice(0,a),total:c.length})})}function Wt(e,t,n){return e.on(C.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 Tt(e,g)})}function Gt(e,t,n,r,i){return e.on(u.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 Kt=je(`message_routing`,e=>({messageId:e.text(`message_id`).notNull().references(a,{onDelete:`cascade`}),agentId:e.text(`agent_id`).notNull(),status:e.textEnum(`status`,{enum:[`sent`,`acknowledged`,`completed`]}).notNull(),timestamp:e.epochMs(`timestamp`).notNull(),error:e.text(`error`)}),{sqlite:e=>[Ee({columns:[e.messageId,e.agentId,e.status]}),we(`idx_routing_agent`).on(e.agentId,e.timestamp)],postgres:e=>[Ae({columns:[e.messageId,e.agentId,e.status]}),ke(`idx_routing_agent`).on(e.agentId,e.timestamp)]}),qt=Kt.sqlite,Jt=Se(`messageRouting`,{schemas:{record:{request:fe,response:T.object({success:T.boolean()})},getByMessage:{request:T.object({messageId:T.string()}),response:T.object({routing:T.array(fe)})},getCompleted:{request:T.object({messageId:T.string()}),response:T.object({agentIds:T.array(T.string())})},isComplete:{request:T.object({messageId:T.string(),targetAgentIds:T.array(T.string())}),response:T.object({complete:T.boolean(),pending:T.array(T.string())})}},extensions:{drizzle:{messageRouting:qt}}}),W=Jt.subjects,Yt=Kt.postgres,Xt=j({messageRouting:qt},{messageRouting:Yt});function Zt(e){return{messageId:e.messageId,agentId:e.agentId,status:e.status,timestamp:e.timestamp,error:e.error??void 0}}function Qt(e,t){let{messageRouting:n}=N(t,Xt),r=[];return r.push(e.on(W.record,async e=>{let{messageId:r,agentId:i,status:a,timestamp:o,error:s}=e.payload;await t.insert(n).values({messageId:r,agentId:i,status:a,timestamp:o,error:s??null}).onConflictDoUpdate({target:[n.messageId,n.agentId,n.status],set:{timestamp:o,error:s??null}}),e.setResult({success:!0})})),r.push(e.on(W.getByMessage,async e=>{let{messageId:r}=e.payload,i=await t.select().from(n).where(z(n.messageId,r));e.setResult({routing:i.map(Zt)})})),r.push(e.on(W.getCompleted,async e=>{let{messageId:r}=e.payload,i=await t.select().from(n).where(F(z(n.messageId,r),z(n.status,`completed`)));e.setResult({agentIds:i.map(e=>e.agentId)})})),r.push(e.on(W.isComplete,async e=>{let{messageId:r,targetAgentIds:i}=e.payload,a=await t.select().from(n).where(F(z(n.messageId,r),z(n.status,`completed`))),o=new Set(a.map(e=>e.agentId)),s=i.filter(e=>!o.has(e));e.setResult({complete:s.length===0,pending:s})})),()=>r.forEach(e=>e())}var $t=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()}},en=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(t,n,r,i){let a=await this.bus.requestOptional(e.create,{sessionId:t,...i!==void 0&&{turnId:i},...r!==void 0&&{initiator:r}}),o,s;if(a.handled)o=a.data.turn.turnId,s=a.data.turn.turnNumber;else{o=i??crypto.randomUUID();let e=(this.syntheticTurnCounters.get(t)??0)+1;this.syntheticTurnCounters.set(t,e),s=e}let c=new S({sessionId:t,agentIds:n,turnId:o,turnNumber:s,initiator:r});return this.activeTurns.set(t,c),this.usageAccumulators.set(t,new $t),c}registerCompletionHandlers(e){this.cleanups.push(this.bus.on(D.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(D.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(t,n){if(this.completingSessions.has(t.sessionId))return;this.completingSessions.add(t.sessionId);let r=this.usageAccumulators.get(t.sessionId),i=r?.snapshot();try{await this.bus.requestOptional(e.complete,{turnId:t.turnId,status:n.success?`completed`:`error`,error:n.errors.length>0?n.errors.join(`; `):void 0,...i!==void 0&&{usage:i}});let a=this.bufferedUsageDuringCompletion.get(t.sessionId)??[];if(a.length>0){for(let e of a)r?.add(e);this.bufferedUsageDuringCompletion.delete(t.sessionId);let i=r?.snapshot();await this.bus.requestOptional(e.complete,{turnId:t.turnId,status:n.success?`completed`:`error`,error:n.errors.length>0?n.errors.join(`; `):void 0,...i!==void 0&&{usage:i}})}}catch(e){throw this.completingSessions.delete(t.sessionId),console.error(`[SessionTurnManager] Failed to persist completion for turn ${t.turnId}:`,e),e}r?.clear(),this.activeTurns.delete(t.sessionId),this.usageAccumulators.delete(t.sessionId),this.completingSessions.delete(t.sessionId),await this.bus.emit(O.turn.completed,{sessionId:t.sessionId,turnId:t.turnId,turnNumber:t.turnNumber,success:n.success,error:n.errors.length>0?n.errors.join(`; `):void 0,initiator:t.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=b(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(O.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)}},tn=class{bus;turnManager;adapterRegistry;cleanups=[];constructor(e=oe,t){this.bus=e,this.turnManager=new en(e),this.adapterRegistry=new at(e),this.registerSendMessageHandler(),this.turnManager.registerCompletionHandlers(this.completeTurn.bind(this))}registerSendMessageHandler(){this.cleanups.push(this.bus.on(O.sendMessage,async e=>{let{sessionId:t,message:n,agentIds:r,deliveryMode:i,agent:a,source:o,origin:s}=e.payload,c=x(o,e.payload.extensionId),l=e.payload.sessionContext?pe.parse(e.payload.sessionContext):void 0,{sessionId:u,session:p}=await v(this.bus,t,l,e.payload.originWindowId);if(p.agents.length===0){let e=await this.resolveInitialAdapterSelection(a,u,n,l),t=await this.resolveAdapterName(e,u),r=h(e.adapterId)??await this.adapterRegistry.resolveAvailable(t),i=e.providerConfigId===void 0?void 0:await ne(this.bus,e.providerConfigId);i!==void 0&&await re(this.bus,i);let o=await this.bus.request(E.startAgent,{adapterId:r,sessionId:u,role:`lead`,...i!==void 0&&{providerContext:i},...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},...l!==void 0&&{sessionContext:l}});if(!o.success)throw Error(`[SessionOrchestrator.sendMessage] Failed to start agent (sessionId=${u}, adapterName=${t}): ${o.message}`);let s=Date.now();p.agents.push({agentId:o.agentId,adapterId:o.adapterId,adapterName:t,sessionId:u,role:`lead`,status:`idle`,...e.providerConfigId!==void 0&&{providerConfigId:e.providerConfigId},createdAt:s,lastActivityAt:s}),p.leadAgentId=o.agentId,e.providerConfigId!==void 0&&await this.bus.requestOptional(f.updateRuntime,{agentId:o.agentId,providerConfigId:e.providerConfigId})}let g=_(p,r);if(g.length===0)throw Error(`[SessionOrchestrator.sendMessage] No valid target agents found (sessionId=${u})`);let y=new Set;for(let e of g){let t=await this.bus.requestOptional(E.getAgent,{agentId:e.agentId,adapterId:e.adapterId});t.handled&&t.data.agent===null&&y.add(e.agentId)}let b;if(y.size>0){b=await d(this.bus,p);for(let e of g)y.has(e.agentId)&&await this.bus.requestOptional(E.rehydrateAgent,{agentId:e.agentId,adapterId:e.adapterId})}let S=this.turnManager.getActiveTurn(u),ie=!S;S||=await this.turnManager.createTurn(u,g.map(e=>e.agentId),c,e.payload.turnId);let w=crypto.randomUUID();S.addMessage(w);let T=te(n);this.bus.requestOptional(C.append,{message:{messageId:w,turnId:S.turnId,sessionId:u,role:`user`,contentText:m(n),blocks:T,timestamp:Date.now(),...s!==void 0&&{origin:s}}}).catch(e=>{console.warn(`[SessionOrchestrator] Failed to store user message`,{sessionId:u,messageId:w,error:e instanceof Error?e.message:String(e)})});for(let e of g)this.bus.requestOptional(W.record,{messageId:w,agentId:e.agentId,status:`sent`,timestamp:Date.now()}).catch(t=>{console.warn(`[SessionOrchestrator] Failed to record message routing`,{sessionId:u,messageId:w,agentId:e.agentId,error:t instanceof Error?t.message:String(t)})});ie&&await this.bus.emit(O.turn.started,{sessionId:u,turnId:S.turnId,turnNumber:S.turnNumber,messageId:w,agentIds:[...S.agentIds],initiator:S.initiator}),await this.bus.emit(O.user_message.sent,{sessionId:u,turnId:S.turnId,turnNumber:S.turnNumber,messageId:w,content:n,agentIds:g.map(e=>e.agentId),...o!==void 0&&{source:o},...s!==void 0&&{origin:s}});let ae=b?{...l,...b}:l;await ee(this.bus,p,g,n,w,S,i,this.completeTurn.bind(this),ae,e.payload.responseSchema),e.setResult({messageId:w,turnId:S.turnId,sessionId:u})}))}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=h(e.adapterName),r=h(e.adapterId);if(!n&&!r)throw Error(`[SessionOrchestrator.sendMessage] adapterName or adapterId required when session has no agents (sessionId=${t})`);return r?g(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(le.resolve,{parsed:i,context:{sessionId:t,promptText:m(n),...r===void 0?{}:{sessionContext:r}}});return{...e,...a,kind:`adapter`,providerConfigId:e.providerConfigId??a.providerConfigId}}},nn=class{bus;constructor(e){this.bus=e}async getTurnSoFarContext(e){try{let{messages:t}=await this.bus.request(C.getByTurn,{turnId:e});return this.convertSessionMessagesToMessages(t)}catch(e){return e instanceof se||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 rn(e){let{bus:t}=e;return t.on(O.getStatusCounts,async e=>{e.payload;let{all:n,active:r,closed:i,archived:a,discovered:o}=await t.request(u.getStatusCounts,{});e.setResult({all:n,active:r,closed:i,archived:a,discovered:o})})}function an(e){let{bus:t}=e;return t.on(O.resume,async e=>{let{sessionId:n}=e.payload,{session:r}=await t.request(u.get,{sessionId:n});if(!r||r.status!==`closed`){e.setResult({success:!1});return}r.status=`active`,r.lastActivityAt=Date.now(),await t.request(u.set,{sessionId:n,session:r}),await t.emit(O.resumed,{sessionId:n}),e.setResult({success:!0})})}function on(e){return e.on(w.listActions,e=>{let t=y.getAll().map(e=>({id:e.id,label:e.label,description:e.description,category:e.category}));e.setResult({actions:t})})}const sn=[{actionId:`strip-reasoning`},{actionId:`strip-tool-outputs`}];function cn(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}}}var ln=class{bus;agentToSession=new Map;agentContext=new Map;agentBlocks=new Map;cleanups=[];constructor(e=oe){this.bus=e,this.registerHandlers()}registerHandlers(){this.registerMappingHandlers(),this.registerTurnTrackingHandlers(),this.registerBlockAccumulationHandlers()}registerMappingHandlers(){this.cleanups.push(this.bus.on(O.agent.added,e=>{this.agentToSession.set(e.payload.agentId,e.payload.sessionId)})),this.cleanups.push(this.bus.on(O.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(O.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(O.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(D.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(D.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(D.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(D.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(D.complete,async e=>{if(e.payload._import){this.agentBlocks.delete(e.payload.agentId);return}let{agentId:t,adapterSessionId:n,outcome:r,error:i,message:a,structuredOutputValidation:o}=e.payload;await this.storeAssistantMessage(t,r===`error`?void 0:n,r===`error`?i:void 0,o===void 0?void 0:{content:a})}))}async storeAssistantMessage(e,t,n,r){let i=this.agentContext.get(e);if(!i?.turnId)return;let a=r===void 0?this.agentBlocks.get(e)??[]:r.content===void 0?[]:[{type:`text`,content:r.content}];if(a.length===0&&!n){this.agentBlocks.delete(e);return}let o=a.filter(e=>e.type===`text`).map(e=>e.content).join(`
3
- `),s=crypto.randomUUID();try{if(!(await this.bus.requestOptional(C.append,{message:{messageId:s,turnId:i.turnId,sessionId:i.sessionId,role:`assistant`,contentText:o||(n?`[Error: ${n}]`:``),blocks:a,agentId:e,adapterSessionId:t,timestamp:Date.now()}})).handled){this.agentBlocks.delete(e);return}let r=await this.bus.requestOptional(C.getByTurn,{turnId:i.turnId});if(r.handled){let t=r.data.messages.find(e=>e.role===`user`);t&&await this.bus.requestOptional(W.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()}},un=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(O.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(O.fork,{sourceSessionId:this._sessionId,name:e.reason})).sessionId}async merge(e,t){await this.bus.request(O.merge,{parentSessionId:this._sessionId,childSessionId:e,summary:t,source:`extension`,extensionId:this._extensionId})}async abandon(e){await this.bus.request(O.abandon,{parentSessionId:this._sessionId,childSessionId:e,source:`extension`,extensionId:this._extensionId})}async requestCompression(e){await this.bus.emit(O.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(O.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(O.getChildren,{sessionId:this._sessionId})).children.map(e=>e.sessionId)}};function dn(e,t,n,r,i,a){return new un(e,t,n,r,i,a)}function fn(e,t){let n=e?.clientAccountId??null,r=t.clientAccountId??null;return!r||n===r?null:{previousClientAccountId:n,clientAccountId:r}}function G(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 K(e,t,n){let r=fn(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(O.clientAccount.changed,a)).catch(e=>{console.error(`[SessionStorage] Failed to emit session.clientAccount.changed:`,e)})})}function pn(e){switch(e){case`fork`:return`fork`;case`subagent`:return`subagent`;case`compress`:return`compress`;case`root`:return;default:return}}function mn(e){switch(e.kind){case`root`:return{kind:`root`,parentAdapterSessionId:null,forkPointMessageId:null};case`fork`:return{kind:`fork`,parentAdapterSessionId:e.parentAdapterSessionId,forkPointMessageId:e.forkPointMessageId};case`subagent`:return{kind:`subagent`,parentAdapterSessionId:e.parentAdapterSessionId,forkPointMessageId:null};case`compress`:return{kind:`compress`,parentAdapterSessionId:e.parentAdapterSessionId,forkPointMessageId:null};default:return e.kind}}function hn(){let e=0;return()=>{let t=Date.now();return e=t>e?t:e+1,e}}const gn=hn();function _n(e,t,n){n!==void 0&&(e[t]=n)}function vn(e,t,n){let r=e.startedAt??n;return{sessionId:t,createdAt:r,lastActivityAt:r,agents:[],status:`discovered`,branchKind:pn(e.kind),adapterName:e.source,adapterSessionId:e.externalSessionId,adapterId:e.adapterId,clientId:e.clientId,isOrchestrated:!1,isImported:!0,title:e.title??void 0,targetWorkingDirectory:e.cwd??void 0,source:e.source,parentExternalSessionId:e.parentAdapterSessionId??void 0,logFilePath:e.logFilePath??void 0,discoveredAt:n,importStatus:`discovered`,forkPointMessageId:e.forkPointMessageId??void 0}}function yn(e,t,n){let r=e.importStatus??`discovered`;r===`discovered`&&(e.status=`discovered`),e.isImported=!0,e.importStatus=r,e.adapterName??=t.source,e.adapterSessionId??=t.externalSessionId,e.source??=t.source,e.discoveredAt??=n}function bn(e,t){t.logFilePath!==void 0&&t.logFilePath!==null&&(e.logFilePath??=t.logFilePath),t.cwd!==null&&(e.targetWorkingDirectory=t.cwd),t.title!==void 0&&t.title!==null&&(e.title=t.title),t.forkPointMessageId!==null&&(e.forkPointMessageId=t.forkPointMessageId),t.parentAdapterSessionId!==null&&(e.parentExternalSessionId=t.parentAdapterSessionId);let n=pn(t.kind);n!==void 0&&(e.branchKind=n),_n(e,`adapterId`,t.adapterId),_n(e,`clientId`,t.clientId)}function xn(e,t,n){t.startedAt!==void 0&&((n===void 0||e.createdAt===n)&&(e.createdAt=t.startedAt),(n===void 0||e.lastActivityAt===n)&&(e.lastActivityAt=t.startedAt))}function Sn(e,t,n){let r=e.discoveredAt;yn(e,t,n),bn(e,t),xn(e,t,r)}function Cn(e,t){if(t.parentExternalSessionId===void 0)return;let n=t.source??t.adapterName,r=Array.from(e.values()).find(e=>e.adapterSessionId===t.parentExternalSessionId&&(e.source??e.adapterName)===n);r&&(t.parentSessionId=r.sessionId,t.rootSessionId=r.rootSessionId??r.sessionId)}function wn(e,t,n){if(n){e.emit(O.created,{sessionId:t.sessionId,parentSessionId:t.parentSessionId??null,branchKind:t.branchKind??null,createdAt:t.createdAt}).catch(e=>console.error(`[SessionStorage] Failed to emit session.created:`,e));return}e.emit(O.updated,{sessionId:t.sessionId,changedProperties:[`source`,`targetWorkingDirectory`,`title`]}).catch(e=>console.error(`[SessionStorage] Failed to emit session.updated:`,e))}function Tn(e){let t=0,n=0,r=0;for(let i of e)i.importStatus===`imported`&&(t+=1),i.importStatus===`tracking`&&(n+=1),i.importStatus===`discovered`&&(r+=1);return{total:e.length,imported:t,tracking:n,discovered:r}}function En(e,t,n){e.emit(O.importStatusChanged,{sessionId:t.sessionId,importStatus:n}).catch(e=>console.error(`[SessionStorage] Failed to emit session.importStatusChanged:`,e));let r=t.source??t.adapterName;n!==`imported`||t.adapterSessionId===void 0||r===void 0||e.emit(O.import.completed,{sessionId:t.sessionId,adapterSessionId:t.adapterSessionId,source:r}).catch(e=>console.error(`[SessionStorage] Failed to emit session.import.completed:`,e))}function Dn(e){let{bus:t,store:n,cloneSession:r,populateAgents:i}=e;return[t.on(u.importUpsert,e=>{let r=e.payload,i=Array.from(n.values()).find(e=>e.adapterSessionId===r.externalSessionId&&e.source===r.source),a=gn(),o=i===void 0,s=i??vn(r,crypto.randomUUID(),a);i?(Sn(i,r,a),i.parentExternalSessionId!==void 0&&i.parentSessionId===void 0&&Cn(n,i)):(n.set(s.sessionId,s),Cn(n,s)),wn(t,s,o),e.setResult({sessionId:s.sessionId,created:o})}),t.on(u.getByLogFilePath,async e=>{let a=Array.from(n.values()).find(t=>t.logFilePath===e.payload.logFilePath);if(!a){e.setResult({session:null});return}let o=await i(t,a.sessionId);e.setResult({session:{...r(a),agents:o}})}),t.on(u.listImported,async e=>{let{source:a,importStatus:o}=e.payload,s=Array.from(n.values()).filter(e=>e.isImported===!0).filter(e=>a===void 0||e.source===a).filter(e=>o===void 0||e.importStatus===o).sort((e,t)=>t.createdAt-e.createdAt),c=await Promise.all(s.map(async e=>({...r(e),agents:await i(t,e.sessionId)})));e.setResult({sessions:c})}),t.on(u.countBySource,e=>{let t=Array.from(n.values()).filter(t=>t.isImported===!0&&t.source===e.payload.source);e.setResult(Tn(t))}),t.on(u.updateImportStatus,e=>{let r=n.get(e.payload.sessionId),i=e.payload.importStatus;if(!r||r.importStatus===i){e.setResult({success:!1});return}r.importStatus=i,i===`imported`&&r.status===`discovered`&&(r.status=`active`),e.setResult({success:!0}),En(t,r,i)})]}async function On(e,t){let n=await e.requestOptional(f.listBySession,{sessionId:t});return n.handled?n.data.agents:[]}function q(e){return structuredClone(e)}function J(e,t,n){n!==void 0&&(e[t]=n)}function kn(e,t,n){n!==void 0&&(e[t]=n??void 0)}function An(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 jn(e,t){J(e,`status`,t.status),J(e,`parentSessionId`,t.parentSessionId),J(e,`contextInheritance`,t.contextInheritance),J(e,`rootSessionId`,t.rootSessionId),J(e,`forkPointMessageId`,t.forkPointMessageId),J(e,`branchKind`,t.branchKind),J(e,`isOrchestrated`,t.isOrchestrated),J(e,`clientId`,t.clientId),J(e,`clientAccountId`,t.clientAccountId),J(e,`lastClientIdentityObservation`,t.lastClientIdentityObservation),J(e,`title`,t.title),J(e,`targetWorkingDirectory`,t.targetWorkingDirectory),J(e,`createdAt`,t.createdAt),J(e,`lastActivityAt`,t.lastActivityAt),kn(e,`executionTargetId`,t.executionTargetId),kn(e,`approvalPolicyOverride`,t.approvalPolicyOverride),t.spawningToolCallId===null?e.spawningToolCallId=void 0:t.spawningToolCallId!==void 0&&e.spawningToolCallId===void 0&&(e.spawningToolCallId=t.spawningToolCallId)}function Mn(e,t){return e.on(u.list,async n=>{let{status:r=`all`,limit:i,offset:a=0,includePreview:o=!1,executionTargetId:s}=n.payload,c=An(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=>({...q(t),agents:await On(e,t.sessionId)}))),d=o?u.map(e=>({...e,preview:{messageCount:0,firstUserMessage:null}})):u;n.setResult({sessions:d,total:l})})}function Nn(e,t){return e.on(u.update,async n=>{let r=structuredClone(ge.request.parse(n.payload)),i=t.get(r.sessionId);if(!i){n.setResult({success:!1,clientAccountChanged:!1});return}let a=q(i);G(a,{sessionId:i.sessionId,clientId:r.clientId??i.clientId,clientAccountId:r.clientAccountId??i.clientAccountId,lastClientIdentityObservation:r.lastClientIdentityObservation??i.lastClientIdentityObservation}),jn(i,r),n.setResult({success:!0,clientAccountChanged:(a.clientAccountId??null)!==(i.clientAccountId??null)}),K(e,a,q(i))})}function Pn(e){let t=new Map,n=[];return n.push(e.on(u.get,async n=>{let r=t.get(n.payload.sessionId);if(!r){n.setResult({session:null});return}let i=await On(e,n.payload.sessionId);n.setResult({session:{...q(r),agents:i}})})),n.push(e.on(u.set,async n=>{let{sessionId:r,session:i,ifAbsent:a}=he.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?q(s):null;G(s,o),t.set(r,o),n.setResult({success:!0,clientAccountChanged:(c?.clientAccountId??null)!==(o.clientAccountId??null)}),K(e,c,q(o))})),n.push(e.on(u.delete,async e=>{t.delete(e.payload.sessionId),e.setResult({success:!0}),await e.next()})),n.push(Mn(e,t)),n.push(e.on(u.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(u.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(Nn(e,t)),n.push(Fn(e,t)),n.push(...Dn({bus:e,store:t,populateAgents:On,cloneSession:q})),()=>n.forEach(e=>e())}function Fn(e,t){return e.on(u.getByAdapterSessionId,async n=>{let{adapterSessionId:r,source:i,adapterName:a}=n.payload,o=Array.from(t.values()).filter(e=>e.adapterSessionId!==void 0&&e.adapterSessionId===r&&(i===void 0||e.source===i)&&(a===void 0||e.adapterName===a)),s=o[0];if(o.length!==1||s===void 0){n.setResult({session:null});return}let c=await e.requestOptional(f.listBySession,{sessionId:s.sessionId}),l=c.handled?c.data.agents:[];n.setResult({session:{...q(s),agents:l}})})}const In=i.postgres,Ln=n.postgres,Y=j({sessions:r,agents:t},{sessions:In,agents:Ln});function Rn(e,t){let n=e?.clientId??null,r=e?.clientAccountId??null,i=e?.lastClientIdentityObservation??null;return F(n===null?V(t.clientId):z(t.clientId,n),r===null?V(t.clientAccountId):z(t.clientAccountId,r),i===null?V(t.lastClientIdentityObservation):z(t.lastClientIdentityObservation,i))}function zn(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,allowedDirectories:e.allowedDirectories??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?ue.parse(e.compressionMode):void 0}}function Bn(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,allowedDirectories:e.allowedDirectories??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 Vn(e){let t;for(let n=e.length-1;n>=0;--n)try{e[n]?.()}catch(e){t??=e}if(t)throw t}function Hn(e){let{bus:t,db:n}=e,{agents:r}=N(n,Y);return t.on(f.get,async e=>{let[t]=await n.select().from(r).where(z(r.agentId,e.payload.agentId)).limit(1);e.setResult({agent:t?zn(t):null})})}function Un(e){let{bus:t,db:n}=e,{agents:r}=N(n,Y);return t.on(f.set,async e=>{let{agent:t}=e.payload,i=Bn(t),a=await n.insert(r).values(i).onConflictDoUpdate({target:r.agentId,set:i});e.setResult({success:M(a)})})}function Wn(e){let{bus:t,db:n}=e,{agents:r}=N(n,Y);return t.on(f.delete,async e=>{let t=await n.delete(r).where(z(r.agentId,e.payload.agentId));e.setResult({success:M(t)})})}function Gn(e){let{bus:t,db:n}=e,{agents:r}=N(n,Y);return t.on(f.listByAdapter,async e=>{let{adapterName:t,status:i}=e.payload,a=[z(r.adapterName,t)];i&&i!==`all`&&a.push(z(r.status,i));let o=a.length>1?F(...a):a[0],s=await n.select().from(r).where(o);e.setResult({agents:s.map(zn)})})}function Kn(e){let{bus:t,db:n}=e,{agents:r}=N(n,Y);return t.on(f.listBySession,async e=>{let{sessionId:t}=e.payload,i=await n.select().from(r).where(z(r.sessionId,t));e.setResult({agents:i.map(zn)})})}function qn(e){let{bus:t,db:n}=e,{agents:r}=N(n,Y);return t.on(f.updateStatus,async e=>{let{agentId:t,status:i}=e.payload,a=Date.now(),o=await n.update(r).set({status:i,lastActivityAt:a}).where(z(r.agentId,t));e.setResult({success:M(o)})})}function Jn(e){let{bus:t,db:n}=e,{agents:r}=N(n,Y);return t.on(f.updateActivity,async e=>{let{agentId:t,lastActivityAt:i}=e.payload,a=await n.update(r).set({lastActivityAt:i}).where(z(r.agentId,t));e.setResult({success:M(a)})})}function Yn(e){let{bus:t,db:n}=e,{agents:r}=N(n,Y);return t.on(f.updateRuntime,async e=>{let{agentId:t,adapterId:i,cwd:a,model:o,allowedDirectories:s,providerConfigId:c}=e.payload,l={lastActivityAt:Date.now()};i!==void 0&&(l.adapterId=i),a!==void 0&&(l.cwd=a),o!==void 0&&(l.model=o),s!==void 0&&(l.allowedDirectories=s),c!==void 0&&(l.providerConfigId=c);let u=await n.update(r).set(l).where(z(r.agentId,t));e.setResult({success:M(u)})})}function Xn(e,t){let n={bus:e,db:t},r=[Hn(n),Un(n),Wn(n),Gn(n),Kn(n),qn(n),Jn(n),Yn(n)];return()=>Vn(r)}function X(e){return e??void 0}function Zn(e){if(e)try{let t=JSON.parse(e),n=ze.safeParse(t);return n.success?n.data:void 0}catch{return}}function Qn(e){if(e)try{let t=JSON.parse(e),n=de.safeParse(t);return n.success?n.data:void 0}catch{return}}function Z(e,t){let n=Qn(e.forkTransforms),r=Zn(e.lastClientIdentityObservation);return{sessionId:e.sessionId,createdAt:e.createdAt,lastActivityAt:e.lastActivityAt,status:e.status,leadAgentId:X(e.leadAgentId),parentSessionId:X(e.parentSessionId),contextInheritance:X(e.contextInheritance),rootSessionId:X(e.rootSessionId),forkPointMessageId:X(e.forkPointMessageId),branchKind:X(e.branchKind),adapterName:X(e.adapterName),adapterSessionId:X(e.adapterSessionId),adapterId:X(e.adapterId),clientId:X(e.clientId),clientAccountId:X(e.clientAccountId),lastClientIdentityObservation:r,isOrchestrated:X(e.isOrchestrated),isImported:X(e.isImported),title:X(e.title),summary:X(e.summary),summaryUpdatedAt:X(e.summaryUpdatedAt),forkTransforms:n,targetWorkingDirectory:X(e.targetWorkingDirectory),executionTargetId:X(e.executionTargetId),agents:t.map(zn),approvalPolicyOverride:X(e.approvalPolicyOverride),spawningToolCallId:X(e.spawningToolCallId),source:X(e.source),parentExternalSessionId:X(e.parentExternalSessionId),logFilePath:X(e.logFilePath),discoveredAt:X(e.discoveredAt),importStatus:X(e.importStatus)}}function $n(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 er(e,t,n){if(!n||t.length===0)return{};let{messages:r}=N(e,c),i=e.select({sessionId:r.sessionId,minTimestamp:H`MIN(${r.timestamp})`.as(`min_timestamp`)}).from(r).where(F(z(r.role,`user`),B(r.sessionId,t))).groupBy(r.sessionId).as(`first_user_message_by_session`),a=await e.select({sessionId:r.sessionId,preview:r.contentText}).from(r).innerJoin(i,F(z(r.sessionId,i.sessionId),z(r.timestamp,i.minTimestamp))).where(z(r.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:r.sessionId,count:L()}).from(r).where(B(r.sessionId,t)).groupBy(r.sessionId),l=new Map;for(let e of s)l.set(e.sessionId,e.count);return{previewBySession:o,countBySession:l}}function tr(e,t){return{sessionId:e.sessionId,clientId:t.clientId??e.clientId,clientAccountId:t.clientAccountId??e.clientAccountId,lastClientIdentityObservation:t.lastClientIdentityObservation??e.lastClientIdentityObservation}}function nr(e){return e.clientId!==void 0||e.clientAccountId!==void 0||e.lastClientIdentityObservation!==void 0}function rr(e){let{bus:t,db:n}=e,{sessions:r,agents:i}=N(n,Y);return t.on(u.getByAdapterSessionId,async e=>{let{adapterSessionId:t,source:a,adapterName:o}=e.payload,s=[z(r.adapterSessionId,t)];a!==void 0&&s.push(z(r.source,a)),o!==void 0&&s.push(z(r.adapterName,o));let c=await n.select().from(r).where(F(...s)).limit(2),l=c[0];if(c.length!==1||l===void 0){e.setResult({session:null});return}let u=await n.select().from(i).where(z(i.sessionId,l.sessionId));e.setResult({session:Z(l,u)})})}function ir(e){let{bus:t,db:n}=e,{sessions:r}=N(n,Y),{messages:i}=N(n,c);return t.on(u.getChildren,async e=>{let{sessionId:t}=e.payload,a=await n.select().from(r).where(z(r.parentSessionId,t));if(a.length===0){e.setResult({children:[]});return}let o=a.map(e=>e.sessionId),s=await n.select({sessionId:i.sessionId,count:L()}).from(i).where(B(i.sessionId,o)).groupBy(i.sessionId),c=new Map;for(let e of s)c.set(e.sessionId,e.count);let l=await n.select({parentSessionId:r.parentSessionId,count:L()}).from(r).where(B(r.parentSessionId,o)).groupBy(r.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 n.select({messageId:i.messageId,adapterMessageId:i.adapterMessageId}).from(i).where(F(z(i.sessionId,t),B(i.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})})}const ar=hn();function or(e,t,n){return t===void 0?H`${e}`:H`
4
- CASE
5
- WHEN ${n.discoveredAt} IS NULL OR ${e} = ${n.discoveredAt} THEN ${t}
6
- ELSE ${e}
7
- END
8
- `}function sr(e,t){return{status:H`
9
- CASE
10
- WHEN COALESCE(${e.importStatus}, excluded.import_status) = 'discovered' THEN excluded.status
11
- ELSE ${e.status}
12
- END
13
- `,isImported:!0,importStatus:H`COALESCE(${e.importStatus}, excluded.import_status)`,adapterName:H`COALESCE(${e.adapterName}, excluded.adapter_name)`,discoveredAt:H`COALESCE(${e.discoveredAt}, excluded.discovered_at)`,source:H`COALESCE(${e.source}, excluded.source)`,logFilePath:H`COALESCE(${e.logFilePath}, excluded.log_file_path)`,targetWorkingDirectory:H`COALESCE(excluded.target_working_directory, ${e.targetWorkingDirectory})`,title:H`COALESCE(excluded.title, ${e.title})`,forkPointMessageId:H`COALESCE(excluded.fork_point_message_id, ${e.forkPointMessageId})`,parentExternalSessionId:H`COALESCE(excluded.parent_external_session_id, ${e.parentExternalSessionId})`,branchKind:H`COALESCE(excluded.branch_kind, ${e.branchKind})`,adapterId:H`COALESCE(excluded.adapter_id, ${e.adapterId})`,clientId:H`COALESCE(excluded.client_id, ${e.clientId})`,createdAt:or(e.createdAt,t,e),lastActivityAt:or(e.lastActivityAt,t,e)}}function cr(e){let{bus:t,db:n}=e,{sessions:r}=N(n,Y);return t.on(u.importUpsert,async e=>{let{externalSessionId:i,source:a,clientId:o,adapterId:s,cwd:c,logFilePath:l,startedAt:u,title:d,kind:f,parentAdapterSessionId:p,forkPointMessageId:m}=e.payload,h=ar(),g=crypto.randomUUID(),_=u??h,v=pn(f)??null,y=p??null,[b]=await n.insert(r).values({sessionId:g,status:`discovered`,isImported:!0,importStatus:`discovered`,adapterName:a,adapterSessionId:i,source:a??null,clientId:o??null,adapterId:s??null,targetWorkingDirectory:c??null,logFilePath:l??null,forkPointMessageId:m??null,branchKind:v,parentExternalSessionId:y,discoveredAt:h,title:d??null,createdAt:_,lastActivityAt:_}).onConflictDoUpdate({target:[r.source,r.adapterSessionId],set:sr(r,u)}).returning({sessionId:r.sessionId,discoveredAt:r.discoveredAt,parentExternalSessionId:r.parentExternalSessionId,parentSessionId:r.parentSessionId}),x=b.sessionId===g;await lr(t,n,b,x,v,_,a),e.setResult({sessionId:b.sessionId,created:x})})}async function lr(e,t,n,r,i,a,o){if(r){let r=await ur(t,n.sessionId,n.parentExternalSessionId,o);e.emit(O.created,{sessionId:n.sessionId,parentSessionId:r,branchKind:i,createdAt:a}).catch(e=>console.error(`[SessionStorage] Failed to emit session.created:`,e))}else n.parentExternalSessionId!==null&&n.parentSessionId===null&&await ur(t,n.sessionId,n.parentExternalSessionId,o),e.emit(O.updated,{sessionId:n.sessionId,changedProperties:[`source`,`targetWorkingDirectory`,`title`]}).catch(e=>console.error(`[SessionStorage] Failed to emit session.updated:`,e))}async function ur(e,t,n,r){let{sessions:i}=N(e,Y);if(n===null)return null;let[a]=await e.select({sessionId:i.sessionId,rootSessionId:i.rootSessionId}).from(i).where(F(z(i.adapterSessionId,n),z(i.source,r))).limit(1);if(!a)return null;let o=a.rootSessionId??a.sessionId;return await e.update(i).set({parentSessionId:a.sessionId,rootSessionId:o}).where(z(i.sessionId,t)),a.sessionId}function dr(e){let{bus:t,db:n}=e,{sessions:r,agents:i}=N(n,Y);return t.on(u.getByLogFilePath,async e=>{let{logFilePath:t}=e.payload,[a]=await n.select().from(r).where(z(r.logFilePath,t)).limit(1);if(!a){e.setResult({session:null});return}let o=await n.select().from(i).where(z(i.sessionId,a.sessionId));e.setResult({session:Z(a,o)})})}function fr(e){let{bus:t,db:n}=e,{sessions:r,agents:i}=N(n,Y);return t.on(u.listImported,async e=>{let{source:t,importStatus:a}=e.payload,o=[z(r.isImported,!0)];t!==void 0&&o.push(z(r.source,t)),a!==void 0&&o.push(z(r.importStatus,a));let s=F(...o),c=await n.select().from(r).where(s).orderBy(R(r.createdAt));if(c.length===0){e.setResult({sessions:[]});return}let l=c.map(e=>e.sessionId),u=$n(await n.select().from(i).where(B(i.sessionId,l)));e.setResult({sessions:c.map(e=>Z(e,u.get(e.sessionId)??[]))})})}function pr(e){let{bus:t,db:n}=e,{sessions:r}=N(n,Y);return t.on(u.countBySource,async e=>{let{source:t}=e.payload,i=await n.select({importStatus:r.importStatus,count:H`count(*)`}).from(r).where(F(z(r.isImported,!0),z(r.source,t))).groupBy(r.importStatus),a=0,o=0,s=0,c=0;for(let e of i){let t=Number(e.count);a+=t,e.importStatus===`imported`&&(o+=t),e.importStatus===`tracking`&&(s+=t),e.importStatus===`discovered`&&(c=t)}e.setResult({total:a,imported:o,tracking:s,discovered:c})})}function mr(e){let{bus:t,db:n}=e,{sessions:r}=N(n,Y);return t.on(u.updateImportStatus,async e=>{let{sessionId:i,importStatus:a}=e.payload,o=a===`imported`?{status:H`
14
- CASE
15
- WHEN ${r.status} = 'discovered' THEN 'active'
16
- ELSE ${r.status}
17
- END
18
- `}:{},[s]=await n.update(r).set({importStatus:a,...o}).where(F(z(r.sessionId,i),Re(V(r.importStatus),H`${r.importStatus} <> ${a}`))).returning({adapterSessionId:r.adapterSessionId,adapterName:r.adapterName,source:r.source}),c=s!==void 0;if(e.setResult({success:c}),c){t.emit(O.importStatusChanged,{sessionId:i,importStatus:a}).catch(e=>console.error(`[SessionStorage] Failed to emit session.importStatusChanged:`,e));let e=s.source??s.adapterName;a===`imported`&&s.adapterSessionId&&e&&t.emit(O.import.completed,{sessionId:i,adapterSessionId:s.adapterSessionId,source:e}).catch(e=>console.error(`[SessionStorage] Failed to emit session.import.completed:`,e))}})}function hr(e,t){let n={bus:e,db:t};return[cr(n),dr(n),fr(n),pr(n),mr(n)]}function Q(e){return e??null}function gr(e){return e?JSON.stringify(e):null}function _r(e){return{lastActivityAt:e.lastActivityAt,status:e.status,leadAgentId:Q(e.leadAgentId),parentSessionId:Q(e.parentSessionId),contextInheritance:Q(e.contextInheritance),rootSessionId:Q(e.rootSessionId),forkPointMessageId:Q(e.forkPointMessageId),branchKind:Q(e.branchKind),adapterName:Q(e.adapterName),adapterSessionId:Q(e.adapterSessionId),adapterId:Q(e.adapterId),clientId:Q(e.clientId),clientAccountId:Q(e.clientAccountId),lastClientIdentityObservation:vr(e.lastClientIdentityObservation),isOrchestrated:e.isOrchestrated??!1,isImported:e.isImported??!1,title:Q(e.title),summary:Q(e.summary),summaryUpdatedAt:Q(e.summaryUpdatedAt),forkTransforms:gr(e.forkTransforms),targetWorkingDirectory:Q(e.targetWorkingDirectory),executionTargetId:Q(e.executionTargetId),approvalPolicyOverride:Q(e.approvalPolicyOverride),spawningToolCallId:Q(e.spawningToolCallId),source:Q(e.source),parentExternalSessionId:Q(e.parentExternalSessionId),logFilePath:Q(e.logFilePath),discoveredAt:Q(e.discoveredAt),importStatus:Q(e.importStatus)}}function vr(e){return e?JSON.stringify(e):null}function $(e,t,n){n!==void 0&&(e[t]=n)}function yr(e,t,n){n!==void 0&&(e[t]=n??null)}function br(e,t){let n={};return $(n,`status`,e.status),$(n,`parentSessionId`,e.parentSessionId),$(n,`contextInheritance`,e.contextInheritance),$(n,`rootSessionId`,e.rootSessionId),$(n,`forkPointMessageId`,e.forkPointMessageId),$(n,`branchKind`,e.branchKind),$(n,`isOrchestrated`,e.isOrchestrated),$(n,`clientId`,e.clientId),$(n,`clientAccountId`,e.clientAccountId),$(n,`title`,e.title),$(n,`targetWorkingDirectory`,e.targetWorkingDirectory),$(n,`createdAt`,e.createdAt),$(n,`lastActivityAt`,e.lastActivityAt),yr(n,`executionTargetId`,e.executionTargetId),yr(n,`approvalPolicyOverride`,e.approvalPolicyOverride),e.spawningToolCallId===null?n.spawningToolCallId=null:e.spawningToolCallId!==void 0&&(n.spawningToolCallId=H`coalesce(${t.spawningToolCallId}, ${e.spawningToolCallId})`),e.lastClientIdentityObservation!==void 0&&(n.lastClientIdentityObservation=vr(e.lastClientIdentityObservation)),n}function xr(e){let{bus:t,db:n}=e,{sessions:r,agents:i}=N(n,Y);return t.on(u.get,async e=>{let[t]=await n.select().from(r).where(z(r.sessionId,e.payload.sessionId)).limit(1);if(!t){e.setResult({session:null});return}let a=await n.select().from(i).where(z(i.sessionId,e.payload.sessionId));e.setResult({session:Z(t,a)})})}function Sr(e){let{bus:t,db:n}=e,{sessions:r}=N(n,Y);return t.on(u.set,async e=>{let{sessionId:i,session:a,ifAbsent:o}=he.parse(e.payload),s=_r(a);if(o){G(null,a);let o=M(await n.insert(r).values({sessionId:i,createdAt:a.createdAt,...s}).onConflictDoNothing());e.setResult({success:o,clientAccountChanged:o&&a.clientAccountId!==void 0}),o&&K(t,null,a);return}for(let o=0;o<3;o++){let[o]=await n.select().from(r).where(z(r.sessionId,i)).limit(1),c=o?Z(o,[]):null;if(G(c,a),M(await n.insert(r).values({sessionId:i,createdAt:a.createdAt,...s}).onConflictDoUpdate({target:r.sessionId,set:s,setWhere:Rn(o,r)}))){e.setResult({success:!0,clientAccountChanged:(c?.clientAccountId??null)!==(a.clientAccountId??null)}),K(t,c,a);return}}throw Error(`Failed to write session "${i}" with a stable client-account baseline`)})}function Cr(e){let{bus:t,db:n}=e,{sessions:r}=N(n,Y);return t.on(u.delete,async e=>{await n.delete(r).where(z(r.sessionId,e.payload.sessionId)),e.setResult({success:!0})})}function wr(e){let{bus:t,db:n}=e,{sessions:r}=N(n,Y);return t.on(u.update,async e=>{let i=ge.request.parse(e.payload),{sessionId:a}=i,o=br(i,r),s=nr(i);if(Object.keys(o).length===0){e.setResult({success:!0,clientAccountChanged:!1});return}if(!s){let t=await n.update(r).set(o).where(z(r.sessionId,a));e.setResult({success:M(t),clientAccountChanged:!1});return}for(let s=0;s<3;s++){let[s]=await n.select().from(r).where(z(r.sessionId,a)).limit(1);if(!s){e.setResult({success:!1,clientAccountChanged:!1});return}let c=Z(s,[]),l=tr(c,i);if(G(c,l),M(await n.update(r).set(o).where(F(z(r.sessionId,a),Rn(s,r))))){e.setResult({success:!0,clientAccountChanged:(c.clientAccountId??null)!==(l.clientAccountId??null)}),K(t,c,l);return}}throw Error(`Failed to update session "${a}" with a stable client-account baseline`)})}function Tr(e,t){let n=[];return e.status!==`all`&&n.push(z(t.status,e.status)),e.executionTargetId!==void 0&&n.push(z(t.executionTargetId,e.executionTargetId)),F(...n)}function Er(e){let{bus:t,db:n}=e,{sessions:r,agents:i}=N(n,Y);return t.on(u.list,async e=>{let{status:t=`all`,limit:a,offset:o=0,includePreview:s=!1,executionTargetId:c}=e.payload,l=Tr({status:t,executionTargetId:c},r),u=l?n.select().from(r).where(l):n.select().from(r),d=a===void 0?await u.orderBy(R(r.lastActivityAt)):await u.orderBy(R(r.lastActivityAt)).limit(a).offset(o),[f]=await(l?n.select({count:L()}).from(r).where(l):n.select({count:L()}).from(r)),p=f?.count??0;if(d.length===0){e.setResult({sessions:[],total:p});return}let m=d.map(e=>e.sessionId),h=$n(await n.select().from(i).where(B(i.sessionId,m))),{previewBySession:g,countBySession:_}=await er(n,m,s),v=d.map(e=>{let t=Z(e,h.get(e.sessionId)??[]);return s&&g&&_?{...t,preview:{messageCount:_.get(e.sessionId)??0,firstUserMessage:g.get(e.sessionId)??null}}:t});e.setResult({sessions:v,total:p})})}function Dr(e){let{bus:t,db:n}=e,{sessions:r}=N(n,Y);return t.on(u.getStatusCounts,async e=>{e.payload;let t=await n.select({status:r.status,count:L()}).from(r).groupBy(r.status),i=0,a=0,o=0,s=0;for(let e of t)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 Or(e,t){let n={bus:e,db:t},r=[xr(n),Sr(n),Cr(n),wr(n),Er(n),ir(n),rr(n),Dr(n),...hr(e,t)];return()=>r.forEach(e=>e())}function kr(e,t,n,r,i,a){return t===void 0&&n===void 0&&r===void 0&&i===void 0&&a===void 0?!1:(t!==void 0&&(e.adapterId=t),n!==void 0&&(e.cwd=n),r!==void 0&&(e.model=r),i!==void 0&&(e.allowedDirectories=i),a!==void 0&&(e.providerConfigId=a),!0)}function Ar(e){let t=new Map,n=[];return n.push(e.on(f.get,e=>{let n=t.get(e.payload.agentId)??null;e.setResult({agent:n})})),n.push(e.on(f.set,e=>{t.set(e.payload.agentId,e.payload.agent),e.setResult({success:!0})})),n.push(e.on(f.delete,e=>{let n=t.delete(e.payload.agentId);e.setResult({success:n})})),n.push(e.on(f.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(f.listBySession,e=>{let n=Array.from(t.values()).filter(t=>t.sessionId===e.payload.sessionId);e.setResult({agents:n})})),n.push(e.on(f.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(f.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(f.updateRuntime,e=>{let n=t.get(e.payload.agentId);if(!n){e.setResult({success:!1});return}let{adapterId:r,cwd:i,model:a,allowedDirectories:o,providerConfigId:s}=e.payload;if(!kr(n,r,i,a,o,s)){e.setResult({success:!1});return}n.lastActivityAt=Date.now(),e.setResult({success:!0})})),()=>n.forEach(e=>e())}async function jr(e,t){if(t.length===0)return new Map;let{agents:n}=N(e,Y),r=[...new Set(t)],i=await e.select().from(n).where(B(n.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 Mr(e,t){return P(e).fts.fetchFirstUserMessagePreviews(e,t)}async function Nr(e,t){if(t.length===0)return new Map;let{messages:n}=N(e,c),r=[...new Set(t)],i=await e.select({sessionId:n.sessionId,count:L()}).from(n).where(B(n.sessionId,r)).groupBy(n.sessionId),a=new Map;for(let e of i)a.set(e.sessionId,e.count);return a}function Pr(e){if(e)try{let t=JSON.parse(e);return!t||typeof t!=`object`||Array.isArray(t)?void 0:t}catch{return}}function Fr(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:Pr(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 Ir(e,t){let n=P(t).fts,r=[];return r.push(e.on(u.search,async e=>{let{query:r,limit:i=20,status:a=`all`,isImported:o}=e.payload,s=r.trim();if(!s){e.setResult({sessions:[],total:0});return}let c={query:s,likePattern:`%${s.toLowerCase()}%`,status:a===`all`?void 0:a,isImported:o},l=await n.searchSessionRows(t,{...c,limit:i});if(l.length===0){e.setResult({sessions:[],total:0});return}let u=await n.countSessionMatches(t,c),d=l.map(e=>e.session_id),f=await jr(t,d),p=await Mr(t,d),m=await Nr(t,d),h=l.map(e=>Fr(e,f.get(e.session_id)??[],p,m));e.setResult({sessions:h,total:u})})),()=>r.forEach(e=>e())}async function Lr(e,t){return(await Me(e).all(H`
19
- WITH RECURSIVE ancestors AS (
20
- SELECT session_id, parent_session_id
21
- FROM sessions
22
- WHERE session_id = ${t}
23
-
24
- UNION ALL
25
-
26
- SELECT s.session_id, s.parent_session_id
27
- FROM sessions s
28
- JOIN ancestors a ON s.session_id = a.parent_session_id
29
- )
30
- SELECT session_id FROM ancestors
31
- `)).map(e=>e.session_id)}var Rr=class{bus;options;cleanups=[];transform;constructor(e=oe,t={}){this.bus=e,this.options=t,this.transform=t.transform??(e=>e),this.registerHandlers()}async emitStorageEvent(e,t,n){let r={sessionId:t,eventId:crypto.randomUUID(),timestamp:Date.now(),type:e,payload:n},i=this.transform(r);i&&await this.bus.request(s.append,{event:i})}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(O.agent.added,`agent.added`),this.registerHandler(O.turn.started,`turn.started`),this.registerHandler(O.turn.completed,`turn.completed`),this.registerHandler(O.branch.created,`branch.created`)}destroy(){for(let e of this.cleanups)e();this.cleanups.length=0}};const zr=je(`import_cursors`,e=>({filePath:e.text(`file_path`).primaryKey(),bytesRead:e.int8(`bytes_read`).notNull(),lastModified:e.text(`last_modified`).notNull(),updatedAt:e.epochMs(`updated_at`).notNull()})),Br=zr.sqlite,Vr=zr.postgres,Hr=j({importCursors:Br},{importCursors:Vr});function Ur(e,t){let{importCursors:n}=N(t,Hr),r=[];return r.push(e.on(Be.get,async e=>{let{filePath:r}=e.payload,i=(await t.select().from(n).where(z(n.filePath,r)).limit(1))[0];if(!i){e.setResult({cursor:null});return}e.setResult({cursor:{filePath:i.filePath,bytesRead:i.bytesRead,lastModified:i.lastModified}})})),r.push(e.on(Be.set,async e=>{let{filePath:r,bytesRead:i,lastModified:a}=e.payload;await t.insert(n).values({filePath:r,bytesRead:i,lastModified:a,updatedAt:Date.now()}).onConflictDoUpdate({target:n.filePath,set:{bytesRead:i,lastModified:a,updatedAt:Date.now()}}),e.setResult({success:!0})})),r.push(e.on(Be.delete,async e=>{let{filePath:r}=e.payload,i=await t.delete(n).where(z(n.filePath,r));e.setResult({success:M(i)})})),()=>{r.forEach(e=>e())}}De(`embeddings`,{id:Te(`id`).primaryKey({autoIncrement:!0}),entityType:A(`entity_type`).notNull(),entityId:A(`entity_id`).notNull(),model:A(`model`).notNull(),dimensions:Te(`dimensions`).notNull(),content:A(`content`),embedding:Ce(`embedding`,{mode:`buffer`}).notNull(),createdAt:Te(`created_at`).notNull()},e=>[we(`idx_embeddings_entity`).on(e.entityType,e.entityId),we(`idx_embeddings_model`).on(e.model),Oe(`idx_embeddings_unique`).on(e.entityType,e.entityId,e.model)]);function Wr(e){if(e.byteLength%4!=0)throw Error(`Invalid embedding blob: byte length ${e.byteLength} is not a multiple of 4 (IEEE-754 f32 lanes)`);return e instanceof ArrayBuffer?new Float32Array(e):e.byteOffset%4==0?new Float32Array(e.buffer,e.byteOffset,e.byteLength/4):new Float32Array(Uint8Array.from(e).buffer)}var Gr=class{rawSql;engine;knownTables=new Set;constructor(e){this.rawSql=Me(e),this.engine=Ne(this.rawSql.dialect)}slugify(e){return e.replace(/[^a-zA-Z0-9]/g,`_`).toLowerCase()}hashModel(e){let t=0;for(let n=0;n<e.length;n++)t=t*31+e.charCodeAt(n)>>>0;return t.toString(36)}getTableName(e){return`embeddings_idx_${this.slugify(e)}_${this.hashModel(e)}`}async ensureIndexTable(e,t){let n=this.getTableName(e);if(this.knownTables.has(n))return n;let r=H.identifier(n),i=H.raw(this.engine.capabilities.binaryColumnType);return await this.rawSql.run(H`CREATE TABLE IF NOT EXISTS ${r} (
32
- entity_type TEXT NOT NULL,
33
- entity_id TEXT NOT NULL,
34
- embedding ${i} NOT NULL,
35
- PRIMARY KEY (entity_type, entity_id)
36
- )`),this.knownTables.add(n),n}async upsertIndexed(e,t,n,r,i){let a=await this.ensureIndexTable(e,t),o=new Uint8Array(i.buffer,i.byteOffset,i.byteLength),s=H.identifier(a);await this.rawSql.run(H`INSERT INTO ${s} (entity_type, entity_id, embedding)
37
- VALUES (${n}, ${r}, ${o})
38
- ON CONFLICT(entity_type, entity_id) DO UPDATE SET
39
- embedding = excluded.embedding`)}async searchSimilar(e,t,n=10){let r=this.getTableName(e);if(!this.knownTables.has(r)){if(!await this.engine.capabilities.tableExists(this.rawSql,r))return[];this.knownTables.add(r)}let i=H.identifier(r),a=await this.rawSql.all(H`SELECT entity_type, entity_id, embedding FROM ${i}`);return a.length===0?[]:a.map(e=>{let n=Wr(e.embedding),r=this.euclideanDistance(t,n);return{entityType:e.entity_type,entityId:e.entity_id,distance:r}}).sort((e,t)=>e.distance-t.distance).slice(0,n)}async deleteByEntity(e,t,n){let r=this.getTableName(e);if(!this.knownTables.has(r)){if(!await this.engine.capabilities.tableExists(this.rawSql,r))return;this.knownTables.add(r)}let i=H.identifier(r);await this.rawSql.run(H`DELETE FROM ${i} WHERE entity_type = ${t} AND entity_id = ${n}`)}euclideanDistance(e,t){let n=0;for(let r=0;r<e.length;r++){let i=e[r]-t[r];n+=i*i}return Math.sqrt(n)}},Kr=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 S({sessionId:this.sessionId,agentIds:e.agentIds,turnNumber:e.turnNumber,turnId:e.turnId});return this._turns.push(t),t.addMessage(e.messageId),await this.emit(O.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(O.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})}};function qr(e,t){let{sessions:n}=N(t,Y);async function r(i,a,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,parentSessionId:n.parentSessionId}).from(n).where(F(z(n.parentExternalSessionId,i),z(n.source,a)));for(let t of c)t.parentSessionId!==null&&await e.request(u.update,{sessionId:t.sessionId,rootSessionId:o}),t.adapterSessionId!==null&&await r(t.adapterSessionId,a,o,s+1)}return e.on(O.import.completed,async i=>{let{adapterSessionId:a,sessionId:o,source:s}=i.payload,c=await t.select({sessionId:n.sessionId,adapterSessionId:n.adapterSessionId,branchKind:n.branchKind}).from(n).where(F(z(n.parentExternalSessionId,a),z(n.source,s),V(n.parentSessionId)));if(c.length===0)return;let{session:l}=await e.request(u.get,{sessionId:o}),d=l?.rootSessionId??o;for(let t of c)await e.request(u.update,{sessionId:t.sessionId,parentSessionId:o,rootSessionId:d,...t.branchKind===null?{}:{branchKind:t.branchKind}}),t.adapterSessionId!==null&&await r(t.adapterSessionId,s,d)})}const Jr=new Set([`Agent`,`spawn_subagent`]),Yr=`[^A-Za-z0-9_-]`;function Xr(e){return e.replaceAll(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function Zr(e,t){return t.test(e)}async function Qr(e,t){let n=[],r,i=0;do{let a=await e.request(C.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 $r(e){let t=[];for(let n of e)for(let e of n.blocks)e.type===`tool_call`&&Jr.has(e.name)&&t.push({toolCallId:e.toolCallId});return t}function ei(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(Zr(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 ti(e){let t=new Map,n=new Set;for(let r of e)if(!(r===null||n.has(r.adapterSessionId))){if(t.has(r.adapterSessionId)){t.delete(r.adapterSessionId),n.add(r.adapterSessionId);continue}t.set(r.adapterSessionId,r.sessionId)}return t}function ni(e){return[...e].map(e=>{let t=Xr(e);return{id:e,pattern:RegExp(`(^|${Yr})${t}($|${Yr})`)}})}async function ri(e,t,n){let{children:r}=await e.request(u.getChildren,{sessionId:n}),i=r.filter(e=>e.branchKind===`compress`);if(i.length===0)return;let{session:a}=await e.request(u.get,{sessionId:t}),o=a?.adapterSessionId;if(!o)return;let s=ni(new Set([o])),c=(await Promise.all(i.map(async t=>{let n=await Qr(e,t.sessionId),r=$r(n);if(r.length===0)return null;let i=ei(n,s);if(i.size===0)return null;let a=[...i.entries()].filter(([,e])=>e===o);if(a.length!==1)return null;let[c]=a[0];return r.some(e=>e.toolCallId===c)?{parentSessionId:t.sessionId,toolCallId:c}:null}))).filter(e=>e!==null);c.length===1&&await e.request(u.update,{sessionId:t,parentSessionId:c[0].parentSessionId,spawningToolCallId:c[0].toolCallId})}async function ii(e,t,n){let r=t.parentExternalSessionId,i=t.source??n;if(!r||!i)return;let a=t.sessionId,{session:o}=await e.request(u.getByAdapterSessionId,{adapterSessionId:r,source:i}),s=o?.sessionId;if(!s)return;let{children:c}=await e.request(u.getChildren,{sessionId:s}),l=await ai(e,c);if(l.size===0)return;let d=await Qr(e,a),f=$r(d);if(f.length===0)return;let p=ei(d,ni(new Set(l.keys()))),m=new Map;for(let e of f){let t=p.get(e.toolCallId);t!==void 0&&m.set(t,(m.get(t)??0)+1)}let h=new Map;for(let e of f){let t=p.get(e.toolCallId),n=t===void 0?void 0:l.get(t);n!==void 0&&t!==void 0&&m.get(t)===1&&h.set(n,e.toolCallId)}if(h.size===0)return;let g=[...h].map(async([t,n])=>{try{await e.request(u.update,{sessionId:t,parentSessionId:a,spawningToolCallId:n})}catch(e){console.error(`[CompressLineageResolver] Failed to re-parent subagent`,{compressChildSessionId:a,parentMakaioSessionId:s,childSessionId:t,toolCallId:n,error:e})}});await Promise.allSettled(g)}async function ai(e,t){return ti(await Promise.all(t.filter(e=>e.branchKind===`subagent`).map(async t=>{let{session:n}=await e.request(u.get,{sessionId:t.sessionId});return n?.adapterSessionId?{sessionId:t.sessionId,adapterSessionId:n.adapterSessionId}:null})))}function oi(e){return e.on(O.import.completed,async t=>{try{let{sessionId:n,source:r}=t.payload,{session:i}=await e.request(u.get,{sessionId:n});if(!i)return;if(i.branchKind===`subagent`&&i.parentSessionId!==void 0){await ri(e,n,i.parentSessionId);return}if(i.branchKind!==`compress`)return;await ii(e,i,r)}catch(e){console.error(`[CompressLineageResolver] Failed to resolve compress lineage`,{payload:t.payload,error:e})}})}function si(e){return[...e].map(e=>{let t=Xr(e);return{id:e,pattern:RegExp(`(^|${Yr})${t}($|${Yr})`)}})}async function ci(e,t,n){return ti(await Promise.all(n.filter(e=>e.branchKind===`subagent`&&e.spawningToolCallId===void 0).map(async n=>{let{session:r}=await e.request(u.get,{sessionId:n.sessionId}),i=r?.source??r?.adapterName;return r?.adapterSessionId&&i===t?{sessionId:n.sessionId,adapterSessionId:r.adapterSessionId}:null})))}function li(e){return e.on(O.import.completed,async t=>{try{let{sessionId:n,source:r}=t.payload,{children:i}=await e.request(u.getChildren,{sessionId:n}),a=await ci(e,r,i),o=new Set(a.keys());if(o.size===0)return;let s=await Qr(e,n),c=$r(s);if(c.length===0)return;let l=ei(s,si(o)),d=new Map;for(let e of c){let t=l.get(e.toolCallId);t!==void 0&&d.set(t,(d.get(t)??0)+1)}let f=new Map;for(let e of c){let t=l.get(e.toolCallId),n=t===void 0?void 0:a.get(t);n!==void 0&&t!==void 0&&d.get(t)===1&&f.set(n,e.toolCallId)}let p=[...f].map(async([t,r])=>{try{let{session:n}=await e.request(u.get,{sessionId:t});if(n?.spawningToolCallId!==void 0)return;await e.request(u.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(p)}catch(e){console.error(`Failed to backfill spawningToolCallId for imported session`,{payload:t.payload,error:e})}})}function ui(e){return e.on(E.session.discovered,async t=>{let n=me.safeParse(t.payload);if(!n.success)throw console.error(`[registerSessionDiscoveredHandler] Invalid adapter.session.discovered payload`,{issues:n.error.issues}),n.error;let{adapterId:r,adapterSessionId:i,adapterName:a,cwd:o,title:s,logFilePath:c,startedAt:l,kind:d,parentAdapterSessionId:f,forkPointMessageId:p}=n.data,m=mn({kind:d,parentAdapterSessionId:f??null,forkPointMessageId:p??null});await e.request(u.importUpsert,{externalSessionId:i,source:a,adapterId:r,cwd:o??null,...s===void 0?{}:{title:s},...c===void 0?{}:{logFilePath:c},...l===void 0?{}:{startedAt:l},...m})})}var di=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(D.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{ln as A,Jt as B,Z as C,mn as D,pn as E,an as F,Pt as G,qt as H,nn as I,at as J,wt as K,tn as L,sn as M,on as N,un as O,rn as P,en as R,$n as S,Pn as T,Kt as U,W as V,Lt as W,Ue as X,rt as Y,Fr as _,qr as a,Or as b,Ur as c,Rr as d,Lr as f,Mr as g,Nr as h,oi as i,cn as j,dn as k,Br as l,jr as m,ui as n,Kr as o,Ir as p,dt as q,li as r,Gr as s,di as t,zr as u,Pr as v,Xn as w,er as x,Ar as y,Qt as z};