@makaio/framework 1.0.0-dev-1783705652236 → 1.0.0-dev-1783973359164

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 (460) hide show
  1. package/dist/.makaio-build.json +2 -2
  2. package/dist/account-identity-BYfeWLe-.mjs +1 -0
  3. package/dist/adapter-auth-runtime-a4O7cSNP.mjs +1 -0
  4. package/dist/adapter-binding-DDUyv1JK.d.mts +254 -0
  5. package/dist/{adapter-CA8rPIUz.mjs → adapter-nl_xz9dz.mjs} +1 -1
  6. package/dist/adapter-subsystem/index.d.mts +120 -5
  7. package/dist/adapter-subsystem/index.mjs +1 -1
  8. package/dist/adapters/acp-client/index.d.mts +10 -0
  9. package/dist/adapters/acp-client/index.mjs +2 -2
  10. package/dist/adapters/config/index.d.mts +176 -153
  11. package/dist/adapters/config/index.mjs +1 -1
  12. package/dist/adapters/index.d.mts +1021 -1005
  13. package/dist/adapters/index.mjs +6 -6
  14. package/dist/adapters/node.d.mts +1 -1
  15. package/dist/adapters/node.mjs +1 -1
  16. package/dist/adapters/stream-session/index.d.mts +7 -5
  17. package/dist/adapters/stream-session/index.mjs +1 -1
  18. package/dist/auth-C3NOWqTU.mjs +1 -0
  19. package/dist/authority-state-bootstrap-CEuKScnL.mjs +1 -0
  20. package/dist/{base-orchestrator-J1WKAUkF.d.mts → base-orchestrator-BiShpVKL.d.mts} +6 -0
  21. package/dist/bus/index.d.mts +10 -10
  22. package/dist/bus/index.mjs +1 -1
  23. package/dist/{canonical-model-DV-Z8gsb.mjs → canonical-model-C31NaBJs.mjs} +1 -1
  24. package/dist/client-BkpLM8Fx.mjs +1 -0
  25. package/dist/client-binary-version-verifier-BK_vIjIo.mjs +2 -0
  26. package/dist/client-binary-version-verifier-BwrMTAh2.d.mts +179 -0
  27. package/dist/clients/index.d.mts +69 -85
  28. package/dist/clients/index.mjs +1 -2
  29. package/dist/clients/managed-install.d.mts +2 -0
  30. package/dist/clients/managed-install.mjs +1 -0
  31. package/dist/{clients-namespace-Bt_VTkEU.d.mts → clients-namespace-B96QIJOs.d.mts} +224 -21
  32. package/dist/compression-CZ_6fYq8.mjs +1 -0
  33. package/dist/config-namespace-DTA6EQL8.mjs +1 -0
  34. package/dist/{config-namespace-DqdFE6zk.d.mts → config-namespace-x0fuhEXe.d.mts} +73 -1
  35. package/dist/contracts/adapter/index.d.mts +3 -3
  36. package/dist/contracts/adapter/index.mjs +1 -1
  37. package/dist/contracts/adapter/schemas/session-lineage.d.mts +1 -1
  38. package/dist/contracts/artifact/index.d.mts +1 -1
  39. package/dist/contracts/auth/index.d.mts +3 -0
  40. package/dist/contracts/auth/index.mjs +1 -0
  41. package/dist/contracts/canonical-model/index.d.mts +1 -1
  42. package/dist/contracts/canonical-model/index.mjs +1 -1
  43. package/dist/contracts/client/index.d.mts +3 -3
  44. package/dist/contracts/client/index.mjs +1 -1
  45. package/dist/contracts/common/index.d.mts +1 -1
  46. package/dist/contracts/config/index.d.mts +20 -93
  47. package/dist/contracts/config/index.mjs +1 -1
  48. package/dist/contracts/extension/index.d.mts +3 -3
  49. package/dist/contracts/extension/index.mjs +1 -1
  50. package/dist/contracts/facet/index.d.mts +1 -1
  51. package/dist/contracts/facet/index.mjs +1 -1
  52. package/dist/contracts/harness/index.d.mts +1 -1
  53. package/dist/contracts/harness/index.mjs +1 -1
  54. package/dist/contracts/host/index.d.mts +1 -1
  55. package/dist/contracts/host/index.mjs +1 -1
  56. package/dist/contracts/index.d.mts +1161 -140
  57. package/dist/contracts/index.mjs +1 -1
  58. package/dist/contracts/materialization/index.d.mts +3 -3
  59. package/dist/contracts/materialization/index.mjs +1 -1
  60. package/dist/contracts/model-registry/index.d.mts +1 -1
  61. package/dist/contracts/model-registry/index.mjs +1 -1
  62. package/dist/contracts/native-session-supervisor/index.d.mts +2 -2
  63. package/dist/contracts/native-session-supervisor/index.mjs +1 -1
  64. package/dist/contracts/platform/index.d.mts +1 -1
  65. package/dist/contracts/platform/index.mjs +1 -1
  66. package/dist/contracts/provider/index.d.mts +2 -2
  67. package/dist/contracts/provider/index.mjs +1 -1
  68. package/dist/contracts/session/index.d.mts +3 -3
  69. package/dist/contracts/session/index.mjs +1 -1
  70. package/dist/contracts/shared/index.d.mts +2 -2
  71. package/dist/contracts/shared/index.mjs +1 -1
  72. package/dist/contracts/skill/index.d.mts +1 -1
  73. package/dist/contracts/skill/index.mjs +1 -1
  74. package/dist/contracts/telemetry/index.d.mts +1 -1
  75. package/dist/contracts/telemetry/index.mjs +1 -1
  76. package/dist/contracts/timeout/index.d.mts +1 -1
  77. package/dist/contracts/timeout/index.mjs +1 -1
  78. package/dist/contracts/toast/index.mjs +1 -1
  79. package/dist/contracts/variant/index.d.mts +1 -1
  80. package/dist/contracts/variant/index.mjs +1 -1
  81. package/dist/contracts/workflow/index.d.mts +3 -3
  82. package/dist/contracts/workflow/index.mjs +1 -1
  83. package/dist/{definition-s9PIua2B.d.mts → definition-Bj9Vr16H.d.mts} +1 -1
  84. package/dist/{definition-Cllhr9mi.d.mts → definition-BsTlOz99.d.mts} +36 -4
  85. package/dist/{definition-CuJvtYeG.d.mts → definition-Cbl0k6Fc.d.mts} +31 -1
  86. package/dist/definition-K3m51lgO.mjs +1 -0
  87. package/dist/definitions-C1pgx0Nq.mjs +1 -0
  88. package/dist/{detached-extension-handle-Cx6-0eqg.mjs → detached-extension-handle-vDK194QV.mjs} +1 -1
  89. package/dist/drizzle/0026_m_mrgvi7fq.sql +16 -0
  90. package/dist/drizzle/0027_m_mrgw0uzg.sql +1 -0
  91. package/dist/drizzle/0028_m_mrgx04i1.sql +1 -0
  92. package/dist/drizzle/0029_terminal-authority.sql +1 -0
  93. package/dist/drizzle/meta/_journal.json +28 -0
  94. package/dist/execution-target-Bg2wpfML.mjs +1 -0
  95. package/dist/{extension-CJClssfp.mjs → extension-CjTu6mzW.mjs} +1 -1
  96. package/dist/extension-D4iKUUMG.mjs +1 -0
  97. package/dist/{filesystem-service-Bmyqo6po.mjs → filesystem-service-maY_P3yA.mjs} +1 -1
  98. package/dist/git/index.mjs +1 -1
  99. package/dist/{globby-D4SANVoq.mjs → globby-CisClzat.mjs} +1 -1
  100. package/dist/handlers-RGs3eC9X.mjs +57 -0
  101. package/dist/{harness-DkUpbsuY.mjs → harness-DflvHAGV.mjs} +1 -1
  102. package/dist/index-9dISOTLT.d.mts +174 -0
  103. package/dist/{index-B9d_8_V2.d.mts → index-9g0agW_p.d.mts} +55 -55
  104. package/dist/{index-DScUb-hF.d.mts → index-BDr2Ba122.d.mts} +34 -11
  105. package/dist/{index-BcvG3wPv.d.mts → index-BKZAAWo2.d.mts} +185 -45
  106. package/dist/{index-CaerrEDH.d.mts → index-Bbr5LEUc.d.mts} +2 -2
  107. package/dist/{index-C23g_M_J2.d.mts → index-BmsPH78f2.d.mts} +50 -5
  108. package/dist/index-ButbwvVY.d.mts +1175 -0
  109. package/dist/index-BxuiHVFi.d.mts +284 -0
  110. package/dist/{index-DnnKUwHm.d.mts → index-C2C1qH1Y.d.mts} +38 -32
  111. package/dist/{index-ntS1EXlf.d.mts → index-C6LZOiDv.d.mts} +150 -2
  112. package/dist/{index-C9FCWOhp.d.mts → index-COC9jCdc.d.mts} +124 -22
  113. package/dist/{index-Cx1Bm6WD.d.mts → index-CVs0Qxks.d.mts} +8 -8
  114. package/dist/index-CagRgpXI2.d.mts +84 -0
  115. package/dist/{index-DoEF9LAc.d.mts → index-CtjLeK1F.d.mts} +3 -3
  116. package/dist/{index-DZPNuWMc.d.mts → index-Cx8jGKOs.d.mts} +4 -4
  117. package/dist/{index-h5go5Dtd.d.mts → index-D75FnT0B.d.mts} +1 -1
  118. package/dist/{index-FFVwQMad.d.mts → index-DNkR5yTY.d.mts} +3401 -594
  119. package/dist/{index-wq7XeqyG.d.mts → index-DXBiCH2y.d.mts} +27 -1
  120. package/dist/{index-B2DjrVb8.d.mts → index-DpZbaS7y.d.mts} +1194 -87
  121. package/dist/{index-BvTd61i5.d.mts → index-T96ydgVk.d.mts} +260 -160
  122. package/dist/{index-DLNRgZPo2.d.mts → index-j2YlW_Fc.d.mts} +1 -1
  123. package/dist/{index-PIlYSC73.d.mts → index-x2gFj3BK.d.mts} +41 -28
  124. package/dist/kernel/cli/index.d.mts +2 -2
  125. package/dist/kernel/cli/index.mjs +1 -1
  126. package/dist/kernel/cli/register.d.mts +1 -1
  127. package/dist/kernel/cli/register.mjs +1 -1
  128. package/dist/kernel/cli/schemas.mjs +1 -1
  129. package/dist/kernel/extension/index.d.mts +1 -1
  130. package/dist/kernel/extension/index.mjs +1 -1
  131. package/dist/kernel/index.d.mts +5 -5
  132. package/dist/kernel/index.mjs +1 -1
  133. package/dist/kernel/namespace/index.d.mts +1 -1
  134. package/dist/kernel/namespace/index.mjs +1 -1
  135. package/dist/kernel/observability/index.d.mts +1 -1
  136. package/dist/kernel/observability/index.mjs +1 -1
  137. package/dist/kernel/providers/index.d.mts +1 -1
  138. package/dist/kernel/providers/index.mjs +1 -1
  139. package/dist/kernel/window/index.d.mts +1 -1
  140. package/dist/kernel/window/index.mjs +1 -1
  141. package/dist/{lib-BOmKyjWD.mjs → lib-DIVnpS8e.mjs} +1 -1
  142. package/dist/{lib-DLZYp5z3.mjs → lib-DymjnkAP.mjs} +1 -1
  143. package/dist/{load-extensions-DNRIy4zC.d.mts → load-extensions-_EnedkUp.d.mts} +1 -1
  144. package/dist/{load-extensions-Cze1RHcG.mjs → load-extensions-nqL5WAKj.mjs} +1 -1
  145. package/dist/mcp-http-server/index.d.mts +27 -90
  146. package/dist/mcp-http-server/index.mjs +2 -2
  147. package/dist/model-uE5IyUFJ.mjs +1 -0
  148. package/dist/namespace-C05pkLbN.mjs +1 -0
  149. package/dist/{namespace-D9PLFmPQ.d.mts → namespace-CCZXyxSe.d.mts} +18 -18
  150. package/dist/namespace-D7pE2QWv.mjs +1 -0
  151. package/dist/{namespace-dFBD2ZmS.mjs → namespace-DwQtzlY-.mjs} +1 -1
  152. package/dist/namespace-HsI0Jbbr.mjs +1 -0
  153. package/dist/namespace-VmsT_tLJ.d.mts +3729 -0
  154. package/dist/namespace-Xp9-g_r-.mjs +1 -0
  155. package/dist/{native-session-supervisor-7ElwM6Is.mjs → native-session-supervisor-CdtVGWA9.mjs} +1 -1
  156. package/dist/node/bus-server/index.d.mts +1 -1
  157. package/dist/node/bus-server/index.mjs +1 -1
  158. package/dist/node/bus-server/server-lifecycle.d.mts +1 -1
  159. package/dist/node/bus-server/server-lifecycle.mjs +1 -1
  160. package/dist/node/transports/index.d.mts +36 -1
  161. package/dist/node/transports/index.mjs +2 -2
  162. package/dist/{orchestrator-shared-ChygCvR1.mjs → orchestrator-shared-DAkGOu9H.mjs} +1 -1
  163. package/dist/{orchestrator-shared-DFLb1otg.d.mts → orchestrator-shared-pxtyNu3W.d.mts} +13 -6
  164. package/dist/package-BYpWkSuQ.mjs +1 -0
  165. package/dist/package-CsFFT9iR.mjs +7 -0
  166. package/dist/{package-DmVZxufT.d.mts → package-DG9GSY8M.d.mts} +52 -1
  167. package/dist/package.json +1 -1
  168. package/dist/{profile-BMBXUqqh.mjs → profile-D2m94ZYD.mjs} +1 -1
  169. package/dist/provider-context-BYkMl--1.mjs +1 -0
  170. package/dist/provider-context-DOsjOjiR.mjs +1 -0
  171. package/dist/{providers-namespace-5GoTlHXz.d.mts → providers-namespace-O4de1tgO.d.mts} +161 -14
  172. package/dist/resolved-O2XXjTeu.mjs +1 -0
  173. package/dist/rules/index.d.mts +1 -1
  174. package/dist/rules/index.mjs +1 -1
  175. package/dist/rules/schemas.d.mts +1 -1
  176. package/dist/runtime-bun/index.mjs +1 -1
  177. package/dist/runtime-node/client-binary-strategy-dependencies.d.mts +34 -0
  178. package/dist/runtime-node/client-binary-strategy-dependencies.mjs +1 -0
  179. package/dist/runtime-node/extension-discovery.d.mts +1 -1
  180. package/dist/runtime-node/extension-validation.d.mts +1 -1
  181. package/dist/runtime-node/extension-validation.mjs +1 -1
  182. package/dist/runtime-node/index.d.mts +25 -84
  183. package/dist/runtime-node/index.mjs +24 -24
  184. package/dist/runtime-node/makaio-config.d.mts +1 -1
  185. package/dist/runtime-node/makaio-config.mjs +1 -1
  186. package/dist/runtime-node/workflow-worker/index.d.mts +2 -2
  187. package/dist/runtime-node/workflow-worker/index.mjs +1 -1
  188. package/dist/runtime-node/workflow-worker/worker-entry.mjs +1 -1
  189. package/dist/{schema-7aKBGB7S.mjs → schema-BI0aCHvV.mjs} +1 -1
  190. package/dist/schemas-C-J4W1ID.mjs +1 -0
  191. package/dist/{schemas-Br-rSxPE2.d.mts → schemas-CoJCTFod2.d.mts} +8 -8
  192. package/dist/schemas-K3Td_WdR.d.mts +3175 -0
  193. package/dist/schemas-n9Ff6_RX.mjs +1 -0
  194. package/dist/schemas-th_nuC5t.mjs +1 -0
  195. package/dist/selection-YRuVSdck.mjs +1 -0
  196. package/dist/service-base/index.d.mts +4 -3
  197. package/dist/service-base/index.mjs +1 -1
  198. package/dist/services/adapter-runtime/index.d.mts +3 -3
  199. package/dist/services/adapter-runtime/index.mjs +1 -1
  200. package/dist/services/adapter-runtime/namespace.d.mts +1 -1
  201. package/dist/services/adapter-runtime/schemas.d.mts +1 -1
  202. package/dist/services/adapter-subsystem/index.d.mts +4 -3
  203. package/dist/services/adapter-subsystem/index.mjs +1 -1
  204. package/dist/services/adapter-subsystem/namespace.d.mts +1 -1
  205. package/dist/services/adapter-subsystem/namespace.mjs +1 -1
  206. package/dist/services/agent-runtime/index.d.mts +2 -2
  207. package/dist/services/agent-runtime/namespace.d.mts +1 -1
  208. package/dist/services/agent-runtime/schemas.d.mts +1 -1
  209. package/dist/services/capability/index.d.mts +1 -1
  210. package/dist/services/capability/index.mjs +1 -1
  211. package/dist/services/codebase/index.d.mts +2 -2
  212. package/dist/services/codebase/namespace.d.mts +1 -1
  213. package/dist/services/codebase/schemas.d.mts +1 -1
  214. package/dist/services/compression/index.d.mts +2 -2
  215. package/dist/services/compression/namespace.d.mts +1 -1
  216. package/dist/services/compression/schemas.d.mts +1 -1
  217. package/dist/services/context-rules/index.d.mts +4 -4
  218. package/dist/services/context-rules/index.mjs +1 -1
  219. package/dist/services/definition/namespace.d.mts +1 -19
  220. package/dist/services/definition/schemas.d.mts +0 -9
  221. package/dist/services/definition/schemas.mjs +1 -1
  222. package/dist/services/execution-target/index.d.mts +4 -4
  223. package/dist/services/execution-target/index.mjs +1 -1
  224. package/dist/services/execution-target/namespace.d.mts +1 -1
  225. package/dist/services/execution-target/namespace.mjs +1 -1
  226. package/dist/services/execution-target/schemas.d.mts +1 -1
  227. package/dist/services/execution-target/schemas.mjs +1 -1
  228. package/dist/services/filesystem/index.d.mts +1 -1
  229. package/dist/services/filesystem/index.mjs +1 -1
  230. package/dist/services/git/namespace.mjs +1 -1
  231. package/dist/services/git/schemas.mjs +1 -1
  232. package/dist/services/harness/index.d.mts +6 -6
  233. package/dist/services/harness/index.mjs +1 -1
  234. package/dist/services/index.d.mts +1591 -173
  235. package/dist/services/index.mjs +1 -1
  236. package/dist/services/log-import/browser.d.mts +2 -2
  237. package/dist/services/log-import/index.d.mts +2 -2
  238. package/dist/services/log-import/log-import.d.mts +1 -1
  239. package/dist/services/log-import/log-import.mjs +1 -1
  240. package/dist/services/log-import/namespace.mjs +1 -1
  241. package/dist/services/log-import/schemas.mjs +1 -1
  242. package/dist/services/model-registry/index.d.mts +1 -1
  243. package/dist/services/model-registry/index.mjs +1 -1
  244. package/dist/services/preferences/index.d.mts +2 -2
  245. package/dist/services/preferences/schemas.d.mts +1 -1
  246. package/dist/services/preferences/storage-namespace.d.mts +2 -2
  247. package/dist/services/provider-context/index.d.mts +2 -2
  248. package/dist/services/provider-context/index.mjs +1 -1
  249. package/dist/services/provider-runtime/index.d.mts +18 -0
  250. package/dist/services/provider-runtime/index.mjs +1 -1
  251. package/dist/services/session/handlers/index.d.mts +1 -1
  252. package/dist/services/session/handlers/index.mjs +1 -1
  253. package/dist/services/session/index.d.mts +10 -10
  254. package/dist/services/session/index.mjs +1 -1
  255. package/dist/services/session/messages/namespace.d.mts +1 -1
  256. package/dist/services/session/messages/namespace.mjs +1 -1
  257. package/dist/services/session/orchestrator-testing/index.d.mts +1 -1
  258. package/dist/services/session/orchestrator-testing/index.mjs +1 -1
  259. package/dist/services/session/session-events/namespace.d.mts +1 -1
  260. package/dist/services/session/session-events/namespace.mjs +1 -1
  261. package/dist/services/session/storage/namespace.d.mts +1 -1
  262. package/dist/services/session/storage/schema.d.mts +1 -1
  263. package/dist/services/session/testing/index.d.mts +2 -2
  264. package/dist/services/session/testing/index.mjs +10 -10
  265. package/dist/services/session/testing/orchestrator-shared.d.mts +1 -1
  266. package/dist/services/session/testing/orchestrator-shared.mjs +1 -1
  267. package/dist/services/session/turns/namespace.d.mts +1 -1
  268. package/dist/services/session/turns/namespace.mjs +1 -1
  269. package/dist/services/session-editor/index.d.mts +1 -1
  270. package/dist/services/session-editor/index.mjs +1 -1
  271. package/dist/services/settings/index.d.mts +3 -3
  272. package/dist/services/settings/index.mjs +1 -1
  273. package/dist/services/settings/namespace.d.mts +18 -25
  274. package/dist/services/settings/namespace.mjs +1 -1
  275. package/dist/services/settings/storage/clients-namespace.d.mts +1 -1
  276. package/dist/services/settings/storage/clients-namespace.mjs +1 -1
  277. package/dist/services/settings/storage/extension-configs/namespace.d.mts +3 -3
  278. package/dist/services/settings/storage/index.d.mts +3 -3
  279. package/dist/services/settings/storage/index.mjs +1 -1
  280. package/dist/services/settings/storage/providers-namespace.d.mts +1 -1
  281. package/dist/services/settings/storage/providers-namespace.mjs +1 -1
  282. package/dist/services/subagent/index.d.mts +2 -2
  283. package/dist/services/subagent/index.mjs +1 -1
  284. package/dist/services/subagent-template/index.d.mts +2 -2
  285. package/dist/services/subagent-template/namespace.d.mts +1 -1
  286. package/dist/services/subagent-template/schemas.d.mts +1 -1
  287. package/dist/services/tool-approval/index.d.mts +1 -1
  288. package/dist/services/tool-approval/index.mjs +1 -1
  289. package/dist/services/tools/index.d.mts +1 -1
  290. package/dist/services/tools/index.mjs +1 -1
  291. package/dist/services/tray-menu/index.d.mts +3 -3
  292. package/dist/services/tray-menu/index.mjs +1 -1
  293. package/dist/services/tray-menu/namespace.d.mts +1 -1
  294. package/dist/services/tray-menu/schemas.d.mts +1 -1
  295. package/dist/services/turn/index.d.mts +1 -1
  296. package/dist/services/turn/namespace.d.mts +1 -1
  297. package/dist/session-CAjudDuJ.mjs +76 -0
  298. package/dist/{session-DBfQkgdy.mjs → session-lRd8HZNZ.mjs} +1 -1
  299. package/dist/{shared-BVW-3Dhy.mjs → shared-RP_KARKF.mjs} +1 -1
  300. package/dist/{skill-N-ttlp1i.mjs → skill-CpNjWFuE.mjs} +1 -1
  301. package/dist/{src-Ck2sbaDa.mjs → src-Bo2eA51B.mjs} +1 -1
  302. package/dist/storage/drizzle/client.d.mts +1 -1
  303. package/dist/storage/drizzle/client.mjs +1 -1
  304. package/dist/storage/drizzle/index.d.mts +9 -2
  305. package/dist/storage/drizzle/index.mjs +1 -1
  306. package/dist/storage/handlers/drizzle/index.d.mts +1 -1
  307. package/dist/storage/handlers/drizzle/index.mjs +1 -1
  308. package/dist/storage/handlers/index.d.mts +1 -1
  309. package/dist/storage/handlers/index.mjs +1 -1
  310. package/dist/{tool-approval-service-DEiMKTv9.mjs → tool-approval-service-Dh0XI21f.mjs} +1 -1
  311. package/dist/tools/index.d.mts +1 -1
  312. package/dist/tools-PC_L6g2m.mjs +1 -0
  313. package/dist/{transition-OzGXyy3p.d.mts → transition-CwUIm1hJ.d.mts} +10 -2
  314. package/dist/{types-BWduCvRU.d.mts → types-B-xY9WW2.d.mts} +1 -1
  315. package/dist/{types-CBLPaQXe.d.mts → types-BaDYigzD.d.mts} +486 -25
  316. package/dist/{types-BrUOVfwe.d.mts → types-DvKaEOOn.d.mts} +252 -19
  317. package/dist/ui-hooks/index.d.mts +103 -14
  318. package/dist/ui-hooks/index.mjs +1 -1
  319. package/dist/ui-kernel/index.d.mts +3 -3
  320. package/dist/ui-kernel/pages/schemas.d.mts +1 -1
  321. package/dist/utils/keychain.mjs +1 -1
  322. package/dist/{version-DoV_pSzT.mjs → version-C1-VD-XL.mjs} +1 -1
  323. package/dist/workflow-DFJYGjq_.mjs +1 -0
  324. package/dist/workflow-engine/index.d.mts +663 -60
  325. package/dist/workflow-engine/index.mjs +1 -1
  326. package/dist/workflow-engine/package.d.mts +1 -1
  327. package/dist/workflow-engine/package.mjs +1 -1
  328. package/dist/workflow-engine/workflow-orchestrator.mjs +1 -1
  329. package/dist/workflow-worker-BEFjCccX.mjs +1 -0
  330. package/package.json +13 -8
  331. package/dist/account-identity-C7Kx_ieU.mjs +0 -1
  332. package/dist/cleanEnvForAdapter-BooAgM2R.mjs +0 -1
  333. package/dist/client-DaR4mzqn.mjs +0 -1
  334. package/dist/compression-C5JAWdgZ.mjs +0 -1
  335. package/dist/config-namespace-CY9leBnE.mjs +0 -1
  336. package/dist/credential-ref-YWQQENEo.mjs +0 -1
  337. package/dist/definition-C-GVz7uw.mjs +0 -1
  338. package/dist/execution-target-BR8bLkCR.mjs +0 -1
  339. package/dist/extension-BS_4BOeO.mjs +0 -1
  340. package/dist/handlers-B74FvKlA.mjs +0 -57
  341. package/dist/index-BcwOnvUh.d.mts +0 -749
  342. package/dist/index-D6aAzr32.d.mts +0 -997
  343. package/dist/index-DtwGhFFQ.d.mts +0 -40
  344. package/dist/loop-gate-handlers-o2B5FPdF.mjs +0 -1
  345. package/dist/namespace-B4cV_pk3.d.mts +0 -1317
  346. package/dist/namespace-BO3tODGC.mjs +0 -1
  347. package/dist/namespace-CVMZVqB5.mjs +0 -1
  348. package/dist/namespace-DBHwyhME.mjs +0 -1
  349. package/dist/namespace-DibbhCPP.mjs +0 -1
  350. package/dist/package-CF_Zm2v4.mjs +0 -1
  351. package/dist/package-Co_GO3UD.mjs +0 -7
  352. package/dist/provider-context-CqMgPOWF.mjs +0 -1
  353. package/dist/provider-context-DC_eq7es.mjs +0 -1
  354. package/dist/schemas-CVo8qAK-.mjs +0 -1
  355. package/dist/schemas-CuG17U3L.mjs +0 -1
  356. package/dist/session-CX6QDhi2.mjs +0 -76
  357. package/dist/tools-CGFZkB7F.mjs +0 -1
  358. package/dist/workflow-C3dgVwTY.mjs +0 -1
  359. package/dist/workflow-worker-dH70EbjE.mjs +0 -1
  360. /package/dist/{ajv-B5dPIck0.mjs → ajv-DfHhgdS5.mjs} +0 -0
  361. /package/dist/{await-trigger-DwVldnMt.mjs → await-trigger-DP-fTQc4.mjs} +0 -0
  362. /package/dist/{capability-service-XlymTzz1.mjs → capability-service-Dg2bU8qc.mjs} +0 -0
  363. /package/dist/{client-CebV_fZc.d.mts → client-DmJwprw1.d.mts} +0 -0
  364. /package/dist/{create-static-mount-DkK28kKW.mjs → create-static-mount-CBTXRtbN.mjs} +0 -0
  365. /package/dist/{cross-spawn-CDXy3BjE.mjs → cross-spawn-D9WWFl2a.mjs} +0 -0
  366. /package/dist/{cursor-storage-luQAg7E_.mjs → cursor-storage-Bw-7ROzx.mjs} +0 -0
  367. /package/dist/{descriptor-to-package-DdpjpT7n.mjs → descriptor-to-package-Rs-OjOQU.mjs} +0 -0
  368. /package/dist/{drizzle-DVTAl7Us.mjs → drizzle-DYfaDzlO.mjs} +0 -0
  369. /package/dist/{esm-CQG9Pc7n.mjs → esm-C_WW4-pP.mjs} +0 -0
  370. /package/dist/{event-DguYjV6D.mjs → event-DTM0-qWP.mjs} +0 -0
  371. /package/dist/{extension-discovery-CIZn5bkq.d.mts → extension-discovery-APMf1Tes.d.mts} +0 -0
  372. /package/dist/{extension-namespace-v3K0qVry.mjs → extension-namespace-vrh4ERXR.mjs} +0 -0
  373. /package/dist/{facet-BM4y4aQP.mjs → facet-DqPBpqkl.mjs} +0 -0
  374. /package/dist/{filesystem-service-Cwp0sWNc.d.mts → filesystem-service-Bx0bR2Lb.d.mts} +0 -0
  375. /package/dist/{handler-BFNvtv5t.mjs → handler-4pKQi3eo.mjs} +0 -0
  376. /package/dist/{host-vY07gek-.mjs → host-BfgdjlII.mjs} +0 -0
  377. /package/dist/{identity-DC3Pk0ps.mjs → identity-2qUT1NME.mjs} +0 -0
  378. /package/dist/{index-COI1tjAf.d.mts → index-BZ_DSGnE.d.mts} +0 -0
  379. /package/dist/{index-D7rWAEY0.d.mts → index-Bd52mmj9.d.mts} +0 -0
  380. /package/dist/{index-Dfi8Rorw.d.mts → index-BkAKfh4d.d.mts} +0 -0
  381. /package/dist/{index-CuHqL95P.d.mts → index-Bv9lm0Kf.d.mts} +0 -0
  382. /package/dist/{index-C4nStEdA.d.mts → index-C18Pn3zP.d.mts} +0 -0
  383. /package/dist/{index-Cr9lh21j.d.mts → index-CarbJsC92.d.mts} +0 -0
  384. /package/dist/{index-BjoOSg95.d.mts → index-Ctw617Tj.d.mts} +0 -0
  385. /package/dist/{index-DUD7wikz2.d.mts → index-D0eUQjTU2.d.mts} +0 -0
  386. /package/dist/{index-O08Q2ikz.d.mts → index-DHGW7dFf.d.mts} +0 -0
  387. /package/dist/{index-DEzdNQum.d.mts → index-DfVSWBBp.d.mts} +0 -0
  388. /package/dist/{index-WHUV7neB.d.mts → index-DlAfs3RD.d.mts} +0 -0
  389. /package/dist/{index-D3ahzHwb.d.mts → index-DnWZdG6C.d.mts} +0 -0
  390. /package/dist/{index-CpKikwK4.d.mts → index-DoLdETfR.d.mts} +0 -0
  391. /package/dist/{index-B92mToDo2.d.mts → index-DvaPrL6C.d.mts} +0 -0
  392. /package/dist/{index-D7Hkmrr3.d.mts → index-DwDBa2mb.d.mts} +0 -0
  393. /package/dist/{index-Y8rMeYYX.d.mts → index-FDyqQIt5.d.mts} +0 -0
  394. /package/dist/{index-BWIkf5oJ.d.mts → index-Lp0T_V1W.d.mts} +0 -0
  395. /package/dist/{index-OGIC4puQ.d.mts → index-Rhcr4YNA.d.mts} +0 -0
  396. /package/dist/{index-BvLXySoB2.d.mts → index-S-mAqWwq.d.mts} +0 -0
  397. /package/dist/{index-DOOrKin9.d.mts → index-_zsihEmk.d.mts} +0 -0
  398. /package/dist/{json-value-DtIkQN7g.d.mts → json-value-C8duSh9X.d.mts} +0 -0
  399. /package/dist/{jsonl-transport-CGPgD8iU.mjs → jsonl-transport-l5NPcQ_2.mjs} +0 -0
  400. /package/dist/{lib-ZKtnbCqH.mjs → lib-ClRTNIuz.mjs} +0 -0
  401. /package/dist/{materialization-CUYxZCfk.mjs → materialization-BwTORtBr.mjs} +0 -0
  402. /package/dist/{model-registry-C2VXobZj.mjs → model-registry-BneK5SGo.mjs} +0 -0
  403. /package/dist/{model-registry-rYICIwyR.mjs → model-registry-C8MInDtX.mjs} +0 -0
  404. /package/dist/{namespace-65uwTpbg.d.mts → namespace-3YVLQ_bM.d.mts} +0 -0
  405. /package/dist/{namespace-BGIeqwfU.d.mts → namespace-B0uZIZYT.d.mts} +0 -0
  406. /package/dist/{namespace-CQ8uza7o.d.mts → namespace-BcDHt-ww.d.mts} +0 -0
  407. /package/dist/{namespace-BigVYQyx.d.mts → namespace-BhVlHfoO.d.mts} +0 -0
  408. /package/dist/{namespace-j7vFsmYL.d.mts → namespace-Bl1UhLnK.d.mts} +0 -0
  409. /package/dist/{namespace-CfvtDD_U.d.mts → namespace-BoA6u44C.d.mts} +0 -0
  410. /package/dist/{namespace-Dk4OslmY.d.mts → namespace-BsEoWXV_.d.mts} +0 -0
  411. /package/dist/{namespace-DYSFDC2G.mjs → namespace-C238RqwB.mjs} +0 -0
  412. /package/dist/{namespace-BdO4e1Fm.mjs → namespace-CDO4rY11.mjs} +0 -0
  413. /package/dist/{namespace-CZK2ff3B.d.mts → namespace-CukqFYHf2.d.mts} +0 -0
  414. /package/dist/{namespace-wke7juzy.mjs → namespace-DDx4NVJm.mjs} +0 -0
  415. /package/dist/{namespace-D1_9WVCo.d.mts → namespace-Dar3O6iT.d.mts} +0 -0
  416. /package/dist/{namespace-DAj_riOn.d.mts → namespace-DoNigVgx.d.mts} +0 -0
  417. /package/dist/{namespace-D2s-4pyg.d.mts → namespace-Dvi66QS6.d.mts} +0 -0
  418. /package/dist/{namespace-D8P8Sxce2.d.mts → namespace-rO-C2Dgu2.d.mts} +0 -0
  419. /package/dist/{out-BoEZjBNz.mjs → out-BB6Kb4Xu.mjs} +0 -0
  420. /package/dist/{platform-DnbSvm2u.mjs → platform-CWhGFQFX.mjs} +0 -0
  421. /package/dist/{providers-Bd7BOZs0.mjs → providers-CUnrif24.mjs} +0 -0
  422. /package/dist/{quick-lru-6e7I1Bgf.mjs → quick-lru-BLaSzINB.mjs} +0 -0
  423. /package/dist/{registry-U_3aYSin.mjs → registry-TJjQgTgp.mjs} +0 -0
  424. /package/dist/{schema-B5vHi7Uu.d.mts → schema-aOwmHxaF.d.mts} +0 -0
  425. /package/dist/{schema-CHp6I33k.mjs → schema-cus0dJ81.mjs} +0 -0
  426. /package/dist/{schema-introspection-B7xODt4I.mjs → schema-introspection-BsWLmoFp.mjs} +0 -0
  427. /package/dist/{schemas-KlH1hB7u.d.mts → schemas-9QJf1FtS.d.mts} +0 -0
  428. /package/dist/{schemas-CJ2JvA7d.d.mts → schemas-BolSW7pQ.d.mts} +0 -0
  429. /package/dist/{schemas-D4zaFE2p.d.mts → schemas-CLsbsX1W.d.mts} +0 -0
  430. /package/dist/{schemas-XeIBqwvE.mjs → schemas-CMyv7l7-.mjs} +0 -0
  431. /package/dist/{schemas-CPI00yvh.mjs → schemas-CWxf_Yut.mjs} +0 -0
  432. /package/dist/{schemas-BemsLc_V.d.mts → schemas-D_9X_CRo.d.mts} +0 -0
  433. /package/dist/{schemas-DZGnr9Tl.mjs → schemas-DwfTUQIa.mjs} +0 -0
  434. /package/dist/{schemas-CoFCV42v.d.mts → schemas-OaBqeEUT.d.mts} +0 -0
  435. /package/dist/{schemas-B6tEKf9T.d.mts → schemas-XRhqOgVE.d.mts} +0 -0
  436. /package/dist/{schemas-DKncXGnb.d.mts → schemas-fRLDhefF.d.mts} +0 -0
  437. /package/dist/{schemas-DWfo0wp4.d.mts → schemas-jDRSOXJL.d.mts} +0 -0
  438. /package/dist/{schemas-lnE9YoG7.d.mts → schemas-qpo1Goit.d.mts} +0 -0
  439. /package/dist/{schemas-t6h9oSct.d.mts → schemas-qt5QTjVc.d.mts} +0 -0
  440. /package/dist/{semver-CIhHqMkw.mjs → semver-BccS1s9R.mjs} +0 -0
  441. /package/dist/{server-lifecycle-C5Z5PSMD.mjs → server-lifecycle-D-jxVr_0.mjs} +0 -0
  442. /package/dist/{server-lifecycle-_AA6EfzL.d.mts → server-lifecycle-r5Tkk8bU.d.mts} +0 -0
  443. /package/dist/{session-lineage-C1M7-O3C.d.mts → session-lineage-YShrn77v.d.mts} +0 -0
  444. /package/dist/{shared-schemas-BEVG96xW.mjs → shared-schemas-BNCPgGYP.mjs} +0 -0
  445. /package/dist/{src-_VODAJnf.mjs → src-Ci_WY9uw.mjs} +0 -0
  446. /package/dist/{storage-namespace-D5q9CrBp.mjs → storage-namespace-BzE2M4Hq.mjs} +0 -0
  447. /package/dist/{storage-namespace-Di1A3DMm.d.mts → storage-namespace-DWKFqEW-.d.mts} +0 -0
  448. /package/dist/{storage-namespace-definition-CzXPW45M.mjs → storage-namespace-definition-4UYuij1r.mjs} +0 -0
  449. /package/dist/{storage-namespace-definition-BffdI5Bz.d.mts → storage-namespace-definition-BZJGSaX3.d.mts} +0 -0
  450. /package/dist/{supports-color-DcXkvGDF.mjs → supports-color-Dzp6WuF5.mjs} +0 -0
  451. /package/dist/{telemetry-Cvi4rxiE.mjs → telemetry-B42EMbZt.mjs} +0 -0
  452. /package/dist/{timeout-XsYIOKrc.mjs → timeout-CvONPl0l.mjs} +0 -0
  453. /package/dist/{tray-menu-service-B2AxiQqL.mjs → tray-menu-service-Bonl2KXf.mjs} +0 -0
  454. /package/dist/{types-Bo78h9e3.d.mts → types-BCW9kr4L.d.mts} +0 -0
  455. /package/dist/{types-DCvp_swt.d.mts → types-CrJ7KEZ0.d.mts} +0 -0
  456. /package/dist/{types-BNW5n6qm.d.mts → types-DWNoZ3Sd.d.mts} +0 -0
  457. /package/dist/{ui-config-9bDRwFZr.mjs → ui-config-B2L3Xgqo.mjs} +0 -0
  458. /package/dist/{variant-5huHjUTm.mjs → variant-ByI-RZua.mjs} +0 -0
  459. /package/dist/{window-registry-PkrFIwX2.mjs → window-registry-DsWnCc8z.mjs} +0 -0
  460. /package/dist/{window-registry-ofIUQnfo.d.mts → window-registry-WsWu-rcK.d.mts} +0 -0
@@ -1 +1 @@
1
- import*as e from"node:fs/promises";import*as t from"node:path";import{randomUUID as n}from"node:crypto";import{MakaioBus as r}from"@makaio/framework/bus";import{AdapterSubjects as i,CapabilitySubjects as a,CredentialSubjects as o,ProviderDefinitionSchema as s,extensionToken as c,isUniversalRange as l,versionSatisfies as u}from"@makaio/framework/contracts";import{BaseService as d}from"@makaio/framework/service-base";import{ADAPTER_FILE_SCHEMA_VERSION as f,AdapterFileSchema as p,PROVIDER_CONFIG_SCHEMA_VERSION as ee,ProviderConfigFileSchema as m,brandCredentialRecord as h,isAccountManagerRef as te,resolveCanonicalProviderConfigName as g,slugifyProviderConfigName as _}from"@makaio/framework/contracts/config";import{resolveModelVisibility as ne}from"@makaio/framework/contracts/provider";import{buildDeterministicAdapterId as v}from"@makaio/framework/services/adapter-runtime";import{ClientSubjects as re}from"@makaio/framework/contracts/client";import{ProviderStorageSubjects as y}from"@makaio/framework/services/settings/storage";import{ExtensionSubjects as b}from"@makaio/framework/kernel";import{AdapterSubsystemSubjects as x}from"@makaio/framework/services/adapter-subsystem";import{ModelRegistryProviderNotFoundError as ie,ModelRegistrySubjects as ae}from"@makaio/framework/services/model-registry";function S(e){return e?{...e}:void 0}function C(e){return e?{...e}:void 0}function oe(e){return e?structuredClone(e):void 0}function w(e,t){let n=[];for(let[r,i]of t.providerConfigs){let t=e.providerConfigs.get(r);t!==i&&n.push({kind:`write-provider`,key:`provider:${r}`,id:r,next:i,previous:t})}for(let[r,i]of t.adapters){let t=e.adapters.get(r);t!==i&&n.push({kind:`write-adapter`,key:`adapter:${r}`,name:r,next:i,previous:t})}for(let[r,i]of e.providerConfigs)t.providerConfigs.has(r)||n.push({kind:`delete-provider`,key:`provider-delete:${r}`,id:r,previous:i});return n}async function se(e,t){switch(t.kind){case`write-provider`:await e.writeProviderConfig(t.id,t.next);return;case`write-adapter`:await e.writeAdapterFile(t.name,t.next);return;case`delete-provider`:if(!await e.deleteProviderConfig(t.id))throw Error(`Provider config file missing during delete: ${t.id}`);return}}async function ce(e,t){switch(t.kind){case`write-provider`:if(t.previous){await e.writeProviderConfig(t.id,t.previous);return}await e.deleteProviderConfig(t.id);return;case`write-adapter`:if(t.previous){await e.writeAdapterFile(t.name,t.previous);return}await e.deleteAdapterFile(t.name);return;case`delete-provider`:await e.writeProviderConfig(t.id,t.previous);return}}async function le(e,t,n){let r=w(t,n);if(r.length===0)return;let i=[];try{for(let t of r)i.push(t),await se(e,t)}catch(t){try{await ue(e,i)}catch(e){throw AggregateError([t,e],`Adapter subsystem snapshot commit failed and rollback could not restore the previous state.`,{cause:e})}throw t}}async function ue(e,t){let n=[];for(let r of[...t].reverse())try{await ce(e,r)}catch(e){n.push(e instanceof Error?Error(`[${r.key}] ${e.message}`,{cause:e}):Error(`[${r.key}] ${String(e)}`))}if(n.length>0)throw AggregateError(n,`Snapshot rollback failed.`)}function de(e,t){let n=t.credentials!==void 0&&Object.keys(t.credentials).length>0,r=pe(t.credentials);return{id:e,definitionId:t.definitionId,name:t.name??t.definitionId,...t.endpointOverrides?{endpointOverrides:{...t.endpointOverrides}}:{},...t.modelVisibility?{modelVisibility:{...t.modelVisibility}}:{},modelFilterMode:t.modelFilterMode??`show-all`,isDefault:t.isDefault??!1,enabled:t.enabled??!0,isSentinel:t.isSentinel??!1,hasCredentials:n,...r?{sourceRef:r}:{}}}function T(e,t){return(t??[]).map(t=>({adapterName:e,providerConfigId:t.providerConfigId,isDefault:t.isDefault??!1}))}function fe(e,t,n){return{name:e,enabled:t.enabled??!0,...t.displayName===void 0?{}:{displayName:t.displayName},...t.description===void 0?{}:{description:t.description},...t.helpLinks===void 0?{}:{helpLinks:t.helpLinks.map(e=>({...e}))},...t.instructions===void 0?{}:{instructions:t.instructions},...t.clientId===void 0?{}:{clientId:t.clientId},...t.protocol===void 0?{}:{protocol:t.protocol},...t.providerDefinitionIds===void 0?{}:{providerDefinitionIds:[...t.providerDefinitionIds]},...t.settings?{settings:structuredClone(t.settings)}:{},bindings:n.map(e=>({...e}))}}function pe(e){if(e){for(let t of Object.values(e))if(te(t))return t}}function me(e,t){let n=[],r=new Set;for(let i of e){let e=t.get(i.providerConfigId);!e||r.has(e.definitionId)||(r.add(e.definitionId),n.push(e.definitionId))}return n}function he(e){let t=new Map,n=new Map,r=new Map;for(let[i,a]of e.providerConfigs){let e=de(i,a);t.set(i,e),n.set(_(e.name),i);let o=r.get(e.definitionId)??[];o.push(i),r.set(e.definitionId,o)}let i=new Map,a=new Map,o=new Map,s=new Map;for(let[n,r]of e.adapters){let e=T(n,r.bindings),c=fe(n,r,e),l=e.filter(e=>t.get(e.providerConfigId)?.enabled);i.set(n,c),a.set(n,e),s.set(n,l.find(e=>e.isDefault)??l[0]??null);for(let t of e){let e=o.get(t.providerConfigId)??[];e.push(t),o.set(t.providerConfigId,e)}}return{providerConfigRecords:t,providerConfigSlugToId:n,providerConfigIdsByDefinition:r,adapterRecords:i,bindingsByAdapter:a,bindingsByConfig:o,defaultBindingByAdapter:s,adapterNames:new Set(i.keys())}}function E(e,t){return e.get(t)?.enabled??!1}function ge(e,t){return e.some(e=>E(t,e.providerConfigId))}function D(e,t){let n=e.find(e=>E(t,e.providerConfigId));return{bindings:e.map(e=>({...e,isDefault:e.providerConfigId===n?.providerConfigId})),...n?{promoted:{...n,isDefault:!0}}:{}}}function O(e,t,n){let r=[...n.entries()].filter(([n,r])=>n!==t&&r.definitionId===e).map(([e,t])=>({id:e,config:t})),i=r.find(({id:e})=>E(n,e))?.id??null;for(let{id:e,config:t}of r)n.set(e,{...t,isDefault:i!==null&&e===i});return i}async function k(e,t,n){let{provider:r}=await e.request(y.get,{id:n.definitionId});if(!r)throw Error(`ProviderDefinition '${n.definitionId}' not found for config '${t}'`);let i=await A(e,r),a={...r.endpoints??{},...n.endpointOverrides??{}},o=j(i);return{providerConfigId:t,definitionId:r.id,...Object.keys(a).length>0?{endpointOverrides:a}:{},credentialRefs:h(n.credentials)??{},...r.credentialEnvVars?{credentialEnvVars:{...r.credentialEnvVars}}:{},...o.length>0?{ambientCredentialEnvVars:o}:{},...r.capabilities?{capabilities:r.capabilities}:{}}}async function A(e,t){try{let n=await e.requestOptional(y.list,{});if(!n.handled)return[t];let r=n.data.providers;return r.some(e=>e.id===t.id)?r:[t,...r]}catch(e){return console.debug(`[AdapterSubsystem] Provider list unavailable for ambient credential discovery`,e),[t]}}function j(e){return[...new Set(e.flatMap(e=>e.credentialEnvVars?Object.values(e.credentialEnvVars):[]))]}var M=class{tail=Promise.resolve();async run(e){let t=this.tail.then(e,e);return this.tail=t.then(()=>void 0,()=>void 0),await t}},N=class{configRepository;bus;snapshot={providerConfigs:new Map,adapters:new Map};providerConfigRecords=new Map;providerConfigSlugToId=new Map;adapterRecords=new Map;bindingsByAdapter=new Map;bindingsByConfig=new Map;defaultBindingByAdapter=new Map;providerConfigIdsByDefinition=new Map;knownAdapterNames=new Set;logImportProviderKeysPromise=null;snapshotMutationQueue=new M;constructor(e){this.configRepository=e.configRepository,this.bus=e.bus}async loadSnapshot(){let[e,t]=await Promise.all([this.configRepository.loadProviderConfigs(),this.configRepository.loadAdapterConfigs()]);this.replaceSnapshot({providerConfigs:new Map(e.configs),adapters:new Map(t.configs)})}registerListeners(e){let t=()=>{this.logImportProviderKeysPromise=null};e(this.bus.on(a.register,t,{filter:{capabilityId:`log-import`}})),e(this.bus.on(a.unregister,t,{filter:{capabilityId:`log-import`}}))}clear(){this.snapshot={providerConfigs:new Map,adapters:new Map},this.providerConfigRecords.clear(),this.providerConfigSlugToId.clear(),this.adapterRecords.clear(),this.bindingsByAdapter.clear(),this.bindingsByConfig.clear(),this.defaultBindingByAdapter.clear(),this.providerConfigIdsByDefinition.clear(),this.knownAdapterNames.clear(),this.logImportProviderKeysPromise=null}replaceSnapshot(e){this.snapshot=e,this.applyDerivedState()}cloneSnapshot(){return{providerConfigs:new Map(this.snapshot.providerConfigs),adapters:new Map(this.snapshot.adapters)}}async commitSnapshotMutation(e,t){return await this.snapshotMutationQueue.run(async()=>{let n=this.cloneSnapshot();return await e(n),await this.commitSnapshot(n),await t?.()})}async commitSnapshot(e){await le(this.configRepository,this.snapshot,e),this.replaceSnapshot(e)}applyDerivedState(){let e=he(this.snapshot);this.providerConfigRecords=e.providerConfigRecords,this.providerConfigSlugToId=e.providerConfigSlugToId,this.providerConfigIdsByDefinition=e.providerConfigIdsByDefinition,this.adapterRecords=e.adapterRecords,this.bindingsByAdapter=e.bindingsByAdapter,this.bindingsByConfig=e.bindingsByConfig,this.defaultBindingByAdapter=e.defaultBindingByAdapter,(e.adapterNames.size!==this.knownAdapterNames.size||[...e.adapterNames].some(e=>!this.knownAdapterNames.has(e)))&&(this.knownAdapterNames=e.adapterNames,this.logImportProviderKeysPromise=null)}getProviderConfig(e){let t=this.providerConfigRecords.get(e);return t?structuredClone(t):null}requireProviderConfig(e,t){let n=this.getProviderConfig(e);if(!n)throw Error(`Provider config could not be loaded after ${t}: ${e}`);return n}getAdapterConfig(e){let t=this.adapterRecords.get(e);return t?structuredClone(t):null}requireAdapterConfig(e,t){let n=this.getAdapterConfig(e);if(!n)throw Error(`Adapter config could not be loaded after ${t}: ${e}`);return n}isAdapterEnabled(e){return this.getAdapterConfig(e)?.enabled??!1}listProviderConfigs(e){let t=[...this.providerConfigRecords.values()].map(e=>structuredClone(e));return e===void 0?t:t.filter(t=>t.enabled===e)}listProviderConfigsByDefinition(e){return this.getProviderConfigIdsByDefinition(e).map(e=>this.getProviderConfig(e)).filter(e=>e!==null)}listAdapterConfigs(){return[...this.adapterRecords.values()].map(e=>structuredClone(e))}listBindings(e){return structuredClone(this.bindingsByAdapter.get(e)??[])}listBindingsByConfig(e){return structuredClone(this.bindingsByConfig.get(e)??[])}getDefaultBinding(e){let t=this.defaultBindingByAdapter.get(e)??null;return t?structuredClone(t):null}findConfigForDefinitionAndAdapter(e,t){let n=new Set((this.bindingsByAdapter.get(t)??[]).map(e=>e.providerConfigId)),r=this.getProviderConfigIdsByDefinition(e).map(e=>this.providerConfigRecords.get(e)).filter(e=>e!==void 0&&e.enabled&&n.has(e.id)),i=r.find(e=>e.isDefault)??r[0]??null;return i?structuredClone(i):null}getRawProviderConfig(e){return this.snapshot.providerConfigs.get(e)}getProviderConfigIdsByDefinition(e){return[...this.providerConfigIdsByDefinition.get(e)??[]]}assertProviderConfigNameUnique(e,t){let n=_(e),r=this.providerConfigSlugToId.get(n);if(r!==void 0&&r!==t){let t=this.providerConfigRecords.get(r)?.name??r;throw Error(`Provider config name "${e}" conflicts with existing config "${t}": both slugify to "${n}". Choose a different name.`)}}async setAdapterConfig(e,t){return{config:await this.commitSnapshotMutation(n=>{let r=n.adapters.get(e);n.adapters.set(e,this.buildNextAdapterFile(r,t))},()=>this.requireAdapterConfig(e,`update`))}}buildNextAdapterFile(e,t){return{...e??{},$schema:f,...this.applyAdapterPatch(e,t),bindings:e?.bindings}}applyAdapterPatch(e,t){let n=e??{},r=t.helpLinks?.map(e=>({...e}))??n.helpLinks,i=t.providerDefinitionIds?[...t.providerDefinitionIds]:n.providerDefinitionIds;return{enabled:t.enabled??n.enabled??!0,displayName:t.displayName??n.displayName,description:t.description??n.description,helpLinks:r,instructions:t.instructions??n.instructions,clientId:t.clientId??n.clientId,protocol:t.protocol??n.protocol,providerDefinitionIds:i,settings:t.settings===void 0?n.settings:oe(t.settings)}}async setAdapterEnabled(e,t){await this.setAdapterConfig(e,{enabled:t})}async buildEffectiveAdapters(){let e=await this.getLogImportProviderKeys();return[...this.adapterRecords.values()].map(t=>{let n=this.bindingsByAdapter.get(t.name)??[],r=n.filter(e=>this.providerConfigRecords.get(e.providerConfigId)?.enabled),i=[...t.providerDefinitionIds??me(n,this.providerConfigRecords)];return{name:t.name,displayName:t.displayName??t.name,...t.description===void 0?{}:{description:t.description},enabled:t.enabled,configCount:n.length,readiness:r.length>0?`ready`:`needs-setup`,supportsLogImport:e.has(t.name),...t.helpLinks===void 0?{}:{helpLinks:t.helpLinks.map(e=>({...e}))},...t.instructions===void 0?{}:{instructions:t.instructions},...t.clientId===void 0?{}:{clientId:t.clientId},...t.protocol===void 0?{}:{protocol:t.protocol},...t.providerDefinitionIds!==void 0||i.length>0?{providerDefinitionIds:i}:{}}})}async getLogImportProviderKeys(){if(!this.logImportProviderKeysPromise){let e=this.bus.requestOptional(a.listProviders,{capabilityId:`log-import`}).then(t=>t.handled?new Set(t.data.providers.map(e=>e.providerKey??e.id)):(this.logImportProviderKeysPromise===e&&(this.logImportProviderKeysPromise=null),new Set)).catch(e=>{throw this.logImportProviderKeysPromise=null,e});this.logImportProviderKeysPromise=e}return await this.logImportProviderKeysPromise}async buildProviderContext(e){let t=this.snapshot.providerConfigs.get(e);return t?k(this.bus,e,t):null}removeBindingsForConfig(e,t,n){let r=new Map,i=[],a=[];for(let[o,s]of t){let t=T(o,s.bindings),c=t.findIndex(t=>t.providerConfigId===e);if(c===-1)continue;let[l]=t.splice(c,1);if(l&&i.push(l),l?.isDefault&&t.length>0){let e=D(t,n);t.splice(0,t.length,...e.bindings),e.promoted&&a.push({adapterName:o,providerConfigId:e.promoted.providerConfigId})}r.set(o,{...s,bindings:t.map(({adapterName:e,...t})=>t)})}return{changedAdapters:r,deletedBindings:i,defaultChangedBindings:a}}promoteProviderConfigDefault(e,t,n){return O(e,t,n)}};const P=process.env.MAKAIO_SKIP_CLIENT_VERSION_CHECK===`1`;function F(e){if(!(e===void 0||e.length===0))return e.map(e=>({...e}))}function I(e,t){return e.clientId!==void 0&&t?.some(t=>t.id===e.clientId)?e.clientId:t?.[0]?.id}async function L(e,t,n,r,i={}){if(t===void 0||t.length===0)return;let a=new Map(n.map(e=>[e.definition.id,e.definition]));for(let n of t){let t=a.get(n.id);if(t===void 0)throw Error(`Adapter "${e}" references missing client "${n.id}"`);_e(t.version,n.version,`Adapter "${e}" client "${n.id}" definition version ${t.version}`)}if(i.checkBinaryVersions===!1)return;let o=t.filter(e=>e.binaryVersion!==void 0);await Promise.all(o.map(async t=>{if(l(t.binaryVersion))return;let n=await r.requestOptional(re.resolveBinary,{clientId:t.id});if(!n.handled){if(P){console.warn(`[SKIP_VERSION_CHECK] Adapter "${e}" client "${t.id}" declares binaryVersion ${t.binaryVersion}, but no client.resolveBinary handler is registered — check bypassed`);return}throw Error(`Adapter "${e}" client "${t.id}" declares binaryVersion ${t.binaryVersion}, but no client.resolveBinary handler is registered`)}let i=n.data.version;if(i===null){if(P){console.warn(`[SKIP_VERSION_CHECK] Adapter "${e}" client "${t.id}" binary did not report a version; requires ${t.binaryVersion} — check bypassed`);return}throw Error(`Adapter "${e}" client "${t.id}" binary did not report a version; requires ${t.binaryVersion}`)}if(!u(i,t.binaryVersion)){let n=`Adapter "${e}" client "${t.id}" binary version ${i}`;if(P){console.warn(`[SKIP_VERSION_CHECK] ${n} does not satisfy ${t.binaryVersion} — check bypassed`);return}throw Error(`${n} does not satisfy ${t.binaryVersion}`)}}))}function _e(e,t,n){if(!u(e,t))throw Error(`${n} does not satisfy ${t}`)}function ve(e){let t=e.split(`/`).pop()?.replace(/^ai-adapters-/,``)?.trim();return t&&t.length>0?t:e}function R(e){let t=I(e.options,e.clients);return{name:e.name,displayName:e.displayName??e.name,description:e.description,helpLinks:e.helpLinks?.map(e=>({...e})),instructions:e.instructions,clientId:t,protocol:e.protocol,providerDefinitionIds:[...e.providerDefinitionIds]}}async function z(e,t,n=5e3){let r=xe(t);if(!r)return;let i;try{await Promise.race([Promise.resolve().then(r),new Promise((t,r)=>{i=setTimeout(()=>{r(Error(`Timed out closing adapter ${e} after ${n}ms`))},n)})])}finally{i&&clearTimeout(i)}}async function B(e){for(let[t,n]of e)try{await z(t,n)}catch(e){console.error(`[adapter-runtime] Error shutting down adapter ${t}:`,e)}e.clear()}async function ye(e,t,n){try{await z(e,t)}finally{n.delete(e)}}async function be(e,t){let{config:n}=await e.request(x.getAdapterConfig,{name:t});return n?.enabled??!1}function V(e,t){return e.options.adapterId??v(t,e.name)}function xe(e){let t=e;if(typeof t.shutdown==`function`)return t.shutdown.bind(e);if(typeof t.closeAsync==`function`)return t.closeAsync.bind(e);if(typeof t.close==`function`)return t.close.bind(e)}async function H(e,t,n,r,a){let o=[];for(let s of n)try{if(!await be(e,s.name)){console.info(`Skipping disabled adapter: ${s.name}`);continue}let n=V(s,t),o=I(s.options,s.clients),c=await s.factory({...s.options,adapterId:n,platformDefaults:a,definitionProviders:s.providers,clientId:o,globalBus:e});if(c.adapterId!==n){let e=Error(`Adapter '${s.name}' initialized with mismatched adapterId (expected '${n}', got '${c.adapterId}')`);try{await z(n,c)}catch(e){console.error(`[adapter-runtime] Error rolling back adapter ${s.name}:`,e)}throw e}r.set(n,c);let l=c;try{await e.emit(i.initialized,{adapterId:n,adapterName:s.name,capabilities:[...l.capabilities??[]],...l.nativeTools===void 0?{}:{nativeTools:[...l.nativeTools]}})}catch(e){try{await ye(n,c,r)}catch(e){console.error(`[adapter-runtime] Error rolling back adapter ${s.name}:`,e)}throw e}console.info(`Initialized adapter: ${s.name} (${s.packageName})`)}catch(e){o.push({adapterName:s.name,error:e})}if(o.length>0){let e=o.map(({adapterName:e,error:t})=>`${e}: ${t instanceof Error?t.message:String(t)}`).join(`; `);throw Error(`Failed to initialize enabled adapters: ${e}`)}}async function Se(e,t){await t.request(x.ensureReady,{});let n=await Promise.all(e.map(async e=>({adapter:e,config:(await t.request(x.getAdapterConfig,{name:e.name})).config})));await Promise.all(n.filter(({config:e})=>!e).map(({adapter:e})=>t.request(x.setAdapterConfig,{name:e.name,patch:{displayName:e.displayName,description:e.description,helpLinks:e.helpLinks?.map(e=>({...e})),instructions:e.instructions,clientId:I(e.options,e.clients),protocol:e.protocol,providerDefinitionIds:[...e.providerDefinitionIds],enabled:!1}})))}var Ce=class{bus;machineId;loadedAdapters=new Map;adapterInstances=new Map;packageAdapters=new Map;publicationChain=Promise.resolve();constructor(e){this.bus=e.bus,this.machineId=e.machineId}getLoadedAdapters(){return[...this.loadedAdapters.values()]}getAdapterInstances(){return this.adapterInstances}hasAdapterInstance(e){return this.adapterInstances.has(this.resolveLoadedAdapterId(e))}resolveLoadedAdapterId(e){return V(e,this.machineId)}getSettingsAvailableAdapters(){return[...this.loadedAdapters.values()].map(R)}registerAdapter(e,t){let n=this.loadedAdapters.get(e.name);if(n)throw Error(`Duplicate adapter name '${e.name}' from owners '${n.packageName}' and '${t}'.`);this.loadedAdapters.set(e.name,e);let r=this.packageAdapters.get(t)??[];this.packageAdapters.set(t,[...r,e.name])}updateAdapterProviders(e,t){let n=this.loadedAdapters.get(e);if(!n)return;let r={...n,providers:t};return this.loadedAdapters.set(e,r),r}async removeProviderPackage(e,t){let n=[];for(let r of this.loadedAdapters.values()){let i=r.providers.filter(t=>t.providerPackageName!==e);if(i.length===r.providers.length)continue;let a={...r,providers:i};if(this.loadedAdapters.set(r.name,a),n.push(a),this.hasAdapterInstance(a))try{await this.restartAdapterInstance(a,t)}catch(t){console.error(`[AdapterRuntimeRegistry] Error restarting adapter "${a.name}" after provider package "${e}" stopped:`,t)}}return n}async deregisterAdapter(e){let t=this.loadedAdapters.get(e);if(!t)return;let n=this.resolveLoadedAdapterId(t),r=this.adapterInstances.get(n);r&&(await z(n,r),this.adapterInstances.delete(n)),this.loadedAdapters.delete(e)}removePackageTracking(e){this.packageAdapters.delete(e)}async deregisterPackage(e){let t=this.packageAdapters.get(e);if(!t?.length)return;let n=!1;for(let e of t)try{await this.deregisterAdapter(e)}catch(t){n=!0,console.error(`[AdapterRuntimeRegistry] Error shutting down adapter "${e}":`,t)}n||this.packageAdapters.delete(e)}publishAdapterRegistered(e){let{adapterName:t,displayName:n,packageName:r,enabled:i,adapterId:a,providerDefinitionIds:o}=e,s=this.adapterInstances.has(a),c=this.publicationChain.catch(()=>void 0).then(()=>this.bus.emit(x.adapter.registered,{adapterName:t,displayName:n??t,packageName:r,enabled:i,initialized:s,providerDefinitionIds:[...o]}));return this.publicationChain=c.catch(()=>void 0),c}async initializeAdapter(e,t){await H(this.bus,this.machineId,[e],this.adapterInstances,t)}async restartAdapterInstance(e,t){let n=this.resolveLoadedAdapterId(e),r=this.adapterInstances.get(n);if(r){try{await z(n,r)}catch(t){throw console.error(`[AdapterRuntimeRegistry] Error shutting down adapter "${e.name}" before restart:`,t),t}this.adapterInstances.delete(n)}await this.initializeAdapter(e,t)}async shutdownAll(){await B(this.adapterInstances),this.loadedAdapters.clear(),this.packageAdapters.clear()}},we=class{configStore;bus;constructor(e){this.configStore=e.configStore,this.bus=e.bus}async createProviderConfig(e){let t=await this.resolveProviderConfigName(e.definitionId,e.name),n=_(t),r=this.cloneCreateCredentialRefs(e),i=S(e.endpointOverrides),a=C(e.modelVisibility),o=await this.configStore.commitSnapshotMutation(o=>{if(this.configStore.assertProviderConfigNameUnique(t),o.providerConfigs.has(n))throw Error(`Provider config already exists: ${n}`);o.providerConfigs.set(n,{$schema:ee,definitionId:e.definitionId,name:t,credentials:r,endpointOverrides:i,modelVisibility:a,modelFilterMode:e.modelFilterMode??`show-all`,isDefault:![...o.providerConfigs.values()].some(t=>t.definitionId===e.definitionId),enabled:!0,isSentinel:e.isSentinel??!1})},()=>this.configStore.requireProviderConfig(n,`creation`));return await this.bus.emit(x.providerConfig.created,o),{config:o}}async updateProviderConfig(e,t){let n=await this.configStore.commitSnapshotMutation(n=>{let r=n.providerConfigs.get(e);if(!r)throw Error(`Provider config not found: ${e}`);let i=t.name??r.name??r.definitionId;t.name!==void 0&&this.configStore.assertProviderConfigNameUnique(i,e),n.providerConfigs.set(e,{...r,name:i,endpointOverrides:t.endpointOverrides===null?void 0:t.endpointOverrides===void 0?r.endpointOverrides:S(t.endpointOverrides),modelVisibility:t.modelVisibility===void 0?r.modelVisibility:C(t.modelVisibility),enabled:t.enabled??r.enabled})},()=>this.configStore.requireProviderConfig(e,`update`));return await this.bus.emit(x.providerConfig.updated,n),{config:n}}async setProviderConfigCredentialRefs(e,t){let n=this.normalizeCredentialRefs(t),r=await this.configStore.commitSnapshotMutation(t=>{let r=t.providerConfigs.get(e);if(!r)throw Error(`Provider config not found: ${e}`);t.providerConfigs.set(e,{...r,credentials:n})},()=>this.configStore.requireProviderConfig(e,`credential update`));return await this.bus.emit(x.providerConfig.updated,r),{config:r}}async deleteProviderConfig(e){let t=!1,n,r=``,i=!1,a=null,o={changedAdapters:new Map,deletedBindings:[],defaultChangedBindings:[]},s=await this.configStore.commitSnapshotMutation(s=>{let c=s.providerConfigs.get(e);if(c){if(c.isSentinel){c.enabled&&(s.providerConfigs.set(e,{...c,enabled:!1}),n=e);return}o=this.configStore.removeBindingsForConfig(e,s.adapters,s.providerConfigs),i=c.isDefault??!1,r=c.definitionId,t=!0,s.providerConfigs.delete(e),a=i?this.configStore.promoteProviderConfigDefault(c.definitionId,e,s.providerConfigs):null;for(let[e,t]of o.changedAdapters)s.adapters.set(e,t)}},()=>n?this.configStore.requireProviderConfig(e,`sentinel disable`):null);if(!t)return n&&await this.bus.emit(x.providerConfig.updated,s),{deleted:!1};await this.cleanupDeletedProviderCredentials(e);for(let e of o.deletedBindings)await this.bus.emit(x.binding.deleted,e);for(let e of o.defaultChangedBindings)await this.bus.emit(x.binding.defaultChanged,e);return await this.bus.emit(x.providerConfig.deleted,{id:e}),i&&await this.bus.emit(x.providerConfig.defaultChanged,{definitionId:r,configId:a}),{deleted:!0}}async setDefaultProviderConfig(e){let t=``,n=await this.configStore.commitSnapshotMutation(n=>{let r=n.providerConfigs.get(e);if(!r)throw Error(`Provider config not found: ${e}`);if(!(r.enabled??!0))throw Error(`Disabled provider config cannot be default: ${e}`);t=r.definitionId;for(let[r,i]of n.providerConfigs)i.definitionId===t&&n.providerConfigs.set(r,{...i,isDefault:r===e})},()=>this.configStore.requireProviderConfig(e,`setDefault`));return await this.bus.emit(x.providerConfig.updated,n),await this.bus.emit(x.providerConfig.defaultChanged,{definitionId:t,configId:e}),{config:n}}async setModelFilterMode(e,t,n){let r=await this.configStore.commitSnapshotMutation(async r=>{let i=r.providerConfigs.get(e);if(!i)throw Error(`Provider config not found: ${e}`);let a=i.modelVisibility;if(t===`allowlist`){let e=await this.selectAllowlistKeeper(i.definitionId,i,n);e&&(a={...i.modelVisibility??{},[e]:`visible`})}r.providerConfigs.set(e,{...i,modelFilterMode:t,modelVisibility:a})},()=>this.configStore.requireProviderConfig(e,`setModelFilterMode`));return await this.bus.emit(x.providerConfig.updated,r),{config:r}}normalizeCredentialRefs(e){if(!(!e||Object.keys(e).length===0))return h(e)}cloneCreateCredentialRefs(e){return this.normalizeCredentialRefs(e.credentialRefs)}async cleanupDeletedProviderCredentials(e){try{await this.bus.requestOptional(o.delete,{configId:e})}catch(t){console.warn(`[AdapterProviderConfigService] Failed to delete credentials for removed provider config "${e}":`,t)}}async resolveProviderConfigName(e,t){let n=g({requestedName:t,providerName:(await this.getProviderDefinitionOrThrow(e)).name,definitionId:e});if(n)return n;throw Error(`Unable to derive a canonical provider config name for definition: ${e}`)}async getProviderDefinitionOrThrow(e){let{provider:t}=await this.bus.request(y.get,{id:e});if(!t)throw Error(`Provider definition not found: ${e}`);return t}async selectAllowlistKeeper(e,t,n){let{provider:r}=await this.bus.request(y.get,{id:e}),i=[n,...r?.availableModels?.map(e=>e.name)??[],...Object.keys(t.modelVisibility??{})].filter(e=>typeof e==`string`&&e.length>0);for(let e of i){let n=ne(e,`allowlist`,t.modelVisibility);if(n===`enabled`||n===`visible`)return}return i[0]}},Te=class{configStore;bus;constructor(e){this.configStore=e.configStore,this.bus=e.bus}async bind(e,t){let n,r=!1;if(await this.configStore.commitSnapshotMutation(i=>{let a=i.providerConfigs.get(t);if(!a)throw Error(`Provider config not found: ${t}`);let o=i.adapters.get(e);if(!o)throw Error(`Adapter config not found: ${e}`);let s=T(e,o.bindings),c=s.find(e=>e.providerConfigId===t);if(c){n={...c};return}r=!0,n={adapterName:e,providerConfigId:t,isDefault:(a.enabled??!0)&&!ge(s,i.providerConfigs)};let l=[...s,n];i.adapters.set(e,{...o,bindings:l.map(({adapterName:e,...t})=>t)})}),!n)throw Error(`Binding could not be loaded after bind: ${e}/${t}`);return r&&await this.bus.emit(x.binding.created,n),n}async unbind(e,t){let n,r=!1;await this.configStore.commitSnapshotMutation(i=>{let a=i.adapters.get(e);if(!a)return;let o=T(e,a.bindings),s=o.findIndex(e=>e.providerConfigId===t);if(s===-1)return;let[c]=o.splice(s,1);if(r=!0,c?.isDefault&&o.length>0){let e=D(o,i.providerConfigs);n=e.promoted,o.splice(0,o.length,...e.bindings)}i.adapters.set(e,{...a,bindings:o.map(({adapterName:e,...t})=>t)})}),r&&(await this.bus.emit(x.binding.deleted,{adapterName:e,providerConfigId:t}),n&&await this.bus.emit(x.binding.defaultChanged,{adapterName:e,providerConfigId:n.providerConfigId}))}async setDefaultBinding(e,t){let n=!1;await this.configStore.commitSnapshotMutation(r=>{let i=r.adapters.get(e);if(!i)throw Error(`Adapter config not found: ${e}`);let a=T(e,i.bindings),o=a.find(e=>e.providerConfigId===t);if(!o)throw Error(`Binding not found for adapter ${e} and provider config ${t}`);if(!E(r.providerConfigs,o.providerConfigId))throw Error(`Disabled provider config cannot be default binding: ${t}`);o.isDefault||(n=!0,r.adapters.set(e,{...i,bindings:a.map(({adapterName:e,...n})=>({...n,isDefault:n.providerConfigId===t}))}))}),n&&await this.bus.emit(x.binding.defaultChanged,{adapterName:e,providerConfigId:t})}};function U(e){return e.map(e=>({...e}))}function W(e){if(e instanceof ie)return!0;if(typeof e!=`object`||!e)return!1;let t=e;return t.name===`ModelRegistryProviderNotFoundError`&&typeof t.providerId==`string`||e instanceof Error&&/^Request to "getProviderModels" failed: Provider ".+" is not present in the model registry$/.test(e.message)||e instanceof Error&&/^Provider ".+" is not present in the model registry$/.test(e.message)?!0:W(t.cause)}async function G(e,t,n,r,i,a){let o=a;if(!o){o=new Map;let t=await e.request(b.contributions.catalog,{});for(let e of t.providers)o.set(e.definition.id,e)}let s=[],c=[];for(let e of t){let t=o.get(e.definitionId);if(!t){c.push(e.definitionId);continue}s.push({definition:t.definition,providerPackageName:t.packageName,configSchema:e.configSchema??r,credentialSchema:e.credentialSchema??i})}return c.length>0&&console.warn(`[AdapterContributionProcessor] Adapter "${n}" declares providers [${c.join(`, `)}] but no active extension registers them. These providers will be unavailable until their extensions are loaded.`),s}async function K(e,t,n,r){return Promise.all(n.map(async n=>{let i=n.definition.id;try{let t=r.get(i);if(t===void 0){let a=await e.requestOptional(ae.getProviderModels,{providerId:i});t=a.handled?a.data.models:n.definition.availableModels??[],r.set(i,t)}return{...n,definition:{...n.definition,availableModels:U(t)}}}catch(e){return W(e)||console.warn(`[AdapterContributionProcessor] Failed to populate available models for provider "${i}" on adapter "${t}". Falling back to declared provider models.`,e),{...n,definition:{...n.definition,availableModels:U(n.definition.availableModels??[])}}}}))}async function Ee(e,t,n,r){let i=await G(t,e.providerRefs,e.name,e.providerConfigSchema,e.providerCredentialSchema,r);return K(t,e.name,i,n)}function q(e){let t=new Set;for(let n of e){if(typeof n==`string`){(n===`anthropic`||n===`openai`)&&t.add(n);continue}n.anthropic!==void 0&&t.add(`anthropic`),n.openai!==void 0&&t.add(`openai`)}return[...t]}function De(e,t,n){let r=q(n);if(t!==void 0){if(!r.includes(t))throw Error(`Adapter "${e}" definition protocol "${t}" must be declared in manifest.protocols [${r.join(`, `)}].`);return t}return r.length===1?r[0]:void 0}var Oe=class{configStore;registry;coordinator;machineId;platformDefaults;constructor(e){this.configStore=e.configStore,this.registry=e.registry,this.coordinator=e.coordinator,this.machineId=e.machineId,this.platformDefaults=e.platformDefaults}register(e){e(this.coordinator.registerContributionProcessor({filter:e=>!!e.adapters?.length||!!e.providers?.length,processActivated:async(e,t,n)=>{await this.onPackageActivated(e,t,n)},processStopped:async e=>{await this.onPackageStopped(e)}}))}async onPackageActivated(e,t,n){let r=t.adapters??[],i=[],a=[],o=new Map,s=await n.bus.request(b.contributions.catalog,{}),c=new Map;for(let e of s.providers)c.set(e.definition.id,e);for(let n of t.providers??[])c.set(n.id,{packageName:e,definition:n});let l=s.clients,u=this.coordinator.getLoadedProviderDefinitionIds();try{for(let t of r){let r=await this.activateAdapterContribution(e,t,n.bus,o,c,l,u);i.push(t.definition.name),a.push(r)}}catch(t){let n=!1;for(let e of i.reverse())try{await this.registry.deregisterAdapter(e)}catch(t){n=!0,console.error(`[AdapterContributionProcessor] Rollback error for adapter "${e}":`,t)}throw n||this.registry.removePackageTracking(e),t}await this.publishActivatedAdapters(a);let d=await this.initializeAdaptersWaitingForProviders(n.bus,o,c,u);await this.publishActivatedAdapters(d)}async processAdapterContribution(e,t,n=r){let i=this.coordinator.getLoadedProviderDefinitionIds(),a=await this.activateAdapterContribution(e,t,n,new Map,void 0,void 0,i);await this.publishActivatedAdapters([a])}async activateAdapterContribution(e,t,n,r,i,a,o){let s=await this.buildLoadedAdapter(e,t,n,r,i,a),c=!1;try{await this.ensureAdapterConfig(s);let t=this.configStore.isAdapterEnabled(s.name);t&&await this.validateEnabledAdapterClientRefs(s,n,a),this.registry.registerAdapter(s,e),c=!0,t&&(this.getMissingProviderDefinitionIds(s,o).length>0?console.info(`[AdapterContributionProcessor] Deferring adapter "${s.name}" initialization until declared providers are active.`):(await this.registry.initializeAdapter(s,this.platformDefaults),console.info(`[AdapterContributionProcessor] Initialized adapter: ${s.name} (${s.packageName})`)))}catch(e){if(c)try{await this.registry.deregisterAdapter(s.name)}catch(e){console.error(`[AdapterContributionProcessor] Rollback error for adapter "${s.name}":`,e)}throw e}return s}async initializeAdaptersWaitingForProviders(e,t,n,r){let i=[];for(let a of this.registry.getLoadedAdapters()){let o;try{if(!this.configStore.isAdapterEnabled(a.name))continue;let s=a;if(this.getMissingProviderDefinitionIds(a,r).length>0){let i=await Ee(a,e,t,n),c=this.registry.updateAdapterProviders(a.name,i);if(!c||this.getMissingProviderDefinitionIds(c,r).length>0)continue;s=c,o=c}if(this.registry.hasAdapterInstance(s)){if(s===a)continue;await this.registry.restartAdapterInstance(s,this.platformDefaults)}else await this.registry.initializeAdapter(s,this.platformDefaults);console.info(`[AdapterContributionProcessor] Initialized adapter: ${s.name} (${s.packageName}) after provider activation`),i.push(s)}catch(e){console.error(`[AdapterContributionProcessor] Deferred initialization failed for adapter "${a.name}".`,e),o&&i.push(o)}}return i}getMissingProviderDefinitionIds(e,t){let n=new Set(e.providers.map(e=>e.definition.id));return e.providerDefinitionIds.filter(e=>!n.has(e)&&t.has(e))}async validateEnabledAdapterClientRefs(e,t,n){if(e.clients===void 0||e.clients.length===0)return;let r=n??(await t.request(b.contributions.catalog,{})).clients;await L(e.name,e.clients,r,t)}async buildLoadedAdapter(e,t,n=r,i=new Map,a,o){let s=t.definition,c=t.manifest,l=s.name,u=o??(await n.request(b.contributions.catalog,{})).clients;await L(l,c.clients,u,n,{checkBinaryVersions:!1});let d=await K(n,l,await G(n,s.providers,l,s.providerConfigSchema,s.providerCredentialSchema,a),i);return{name:l,displayName:s.displayName??c.displayName,description:s.description,packageName:e,factory:s.createAdapter,options:{adapterId:v(this.machineId,l)},adapterConfigSchema:s.adapterConfigSchema,providerDefinitionIds:s.providers.map(e=>e.definitionId),providerRefs:[...s.providers],providers:d,providerConfigSchema:s.providerConfigSchema,providerCredentialSchema:s.providerCredentialSchema,helpLinks:s.helpLinks,instructions:s.instructions,defaultPresetId:s.defaultPresetId,clients:F(c.clients),protocol:De(l,s.protocol,c.protocols)}}async ensureAdapterConfig(e){this.configStore.getAdapterConfig(e.name)||await this.configStore.setAdapterConfig(e.name,{displayName:e.displayName,description:e.description,helpLinks:e.helpLinks?.map(e=>({...e})),instructions:e.instructions,clientId:I(e.options,e.clients),protocol:e.protocol,providerDefinitionIds:[...e.providerDefinitionIds],enabled:!1})}async onPackageStopped(e){await this.registry.deregisterPackage(e);let t=await this.registry.removeProviderPackage(e,this.platformDefaults);await this.publishActivatedAdapters(t)}publishAdapterRegistered(e){let t=this.configStore.isAdapterEnabled(e.name),n=this.registry.resolveLoadedAdapterId(e);return this.registry.publishAdapterRegistered({adapterName:e.name,displayName:e.displayName,packageName:e.packageName,enabled:t,adapterId:n,providerDefinitionIds:e.providerDefinitionIds})}async publishActivatedAdapters(e){for(let t of e)try{await this.publishAdapterRegistered(t)}catch(e){console.error(`[AdapterContributionProcessor] Failed to publish adapter "${t.name}" registration:`,e)}}};const J=-100;function ke(e,t){let n=e.on(y.get,async n=>{let r=(await Y(e,t())).get(n.payload.id)??null;n.setResult({provider:r})},{priority:J}),r=e.on(y.list,async n=>{n.setResult({providers:[...(await Y(e,t())).values()]})},{priority:J}),i=e.on(y.listByProtocol,async n=>{let r=[...(await Y(e,t())).values()].filter(e=>e.endpoints!==void 0&&n.payload.protocol in e.endpoints);n.setResult({providers:r})},{priority:J});return()=>{n(),r(),i()}}async function Y(e,t){let n=new Map,r=new Set;for(let e of t){for(let t of e.providerDefinitionIds)r.add(t);for(let t of e.providers)X(n,t.providerPackageName,t.definition)}let i=[...r].filter(e=>!n.has(e));if(i.length>0){let t=await e.request(b.contributions.catalog,{});for(let e of t.providers)i.includes(e.definition.id)&&X(n,e.packageName,e.definition)}return n}function X(e,t,n){let r=s.parse(n);e.has(r.id)||e.set(r.id,{id:r.id,packageName:t,name:r.name,...r.description===void 0?{}:{description:r.description},...r.endpoints===void 0?{}:{endpoints:r.endpoints},...r.defaultModel===void 0?{}:{defaultModel:r.defaultModel},...r.fastModel===void 0?{}:{fastModel:r.fastModel},availableModels:r.availableModels,defaultModelFilterMode:r.defaultModelFilterMode??`show-all`,...r.credentialEnvVars===void 0?{}:{credentialEnvVars:r.credentialEnvVars},...r.capabilities===void 0?{}:{capabilities:r.capabilities},enabled:!0,createdAt:0,updatedAt:0})}var Z=class extends d{configStore;registry;providerConfigService;bindingService;contributionProcessor;constructor(e){super(e.bus),this.configStore=new N({configRepository:e.configRepository,bus:e.bus}),this.registry=new Ce({bus:e.bus,machineId:e.machineId}),this.providerConfigService=new we({configStore:this.configStore,bus:e.bus}),this.bindingService=new Te({configStore:this.configStore,bus:e.bus}),this.contributionProcessor=new Oe({configStore:this.configStore,registry:this.registry,coordinator:e.coordinator,machineId:e.machineId,platformDefaults:e.platformDefaults})}async onInit(){await this.configStore.loadSnapshot(),this.configStore.registerListeners(e=>this.addCleanup(e)),this.registerBusHandlers(),await this.bus.emit(x.ready,{})}registerBusHandlers(){this.addCleanup(ke(this.bus,()=>this.registry.getLoadedAdapters())),this.registerReadHandlers(),this.registerMutationHandlers()}registerReadHandlers(){this.registerHandler(x.getAdapterConfig,e=>{e.setResult({config:this.configStore.getAdapterConfig(e.payload.name)})}),this.registerHandler(x.listAdapterConfigs,e=>{e.setResult({configs:this.configStore.listAdapterConfigs()})}),this.registerHandler(x.getProviderConfig,e=>{e.setResult({config:this.configStore.getProviderConfig(e.payload.id)})}),this.registerHandler(x.listProviderConfigs,e=>{e.setResult({configs:this.configStore.listProviderConfigs(e.payload.enabled)})}),this.registerHandler(x.listProviderConfigsByDefinition,e=>{e.setResult({configs:this.configStore.listProviderConfigsByDefinition(e.payload.definitionId)})}),this.registerHandler(x.listBindings,e=>{e.setResult({bindings:this.configStore.listBindings(e.payload.adapterName)})}),this.registerHandler(x.listBindingsByConfig,e=>{e.setResult({bindings:this.configStore.listBindingsByConfig(e.payload.providerConfigId)})}),this.registerHandler(x.getDefaultBinding,e=>{e.setResult({binding:this.configStore.getDefaultBinding(e.payload.adapterName)})}),this.registerHandler(x.findConfigForDefinitionAndAdapter,e=>{e.setResult({config:this.configStore.findConfigForDefinitionAndAdapter(e.payload.definitionId,e.payload.adapterName)})}),this.registerHandler(x.buildProviderContext,async e=>{e.setResult({context:await this.configStore.buildProviderContext(e.payload.providerConfigId)})}),this.registerHandler(x.listAdapters,async e=>{e.setResult({adapters:await this.configStore.buildEffectiveAdapters()})}),this.registerHandler(x.getProviderDefinitionsByAdapter,async e=>{let t=this.registry.getLoadedAdapters().find(t=>t.name===e.payload.adapterName),n=new Map((t?.providers??[]).map(e=>[e.definition.id,e.definition])),r=(t?.providerDefinitionIds??[]).filter(e=>!n.has(e));if(r.length>0){let e=await this.bus.request(b.contributions.catalog,{});for(let t of e.providers)r.includes(t.definition.id)&&n.set(t.definition.id,t.definition)}let i=(t?.providerDefinitionIds??[]).flatMap(e=>{let t=n.get(e);return t===void 0?[]:[s.parse(t)]});e.setResult({definitions:i})}),this.registerHandler(x.ensureReady,e=>{e.setResult({ready:!0})})}registerMutationHandlers(){this.registerHandler(x.createProviderConfig,async e=>{e.setResult(await this.providerConfigService.createProviderConfig(e.payload))}),this.registerHandler(x.updateProviderConfig,async e=>{e.setResult(await this.providerConfigService.updateProviderConfig(e.payload.id,e.payload.patch))}),this.registerHandler(x.setProviderConfigCredentialRefs,async e=>{e.setResult(await this.providerConfigService.setProviderConfigCredentialRefs(e.payload.id,e.payload.credentialRefs))}),this.registerHandler(x.deleteProviderConfig,async e=>{e.setResult(await this.providerConfigService.deleteProviderConfig(e.payload.id))}),this.registerHandler(x.setDefaultProviderConfig,async e=>{e.setResult(await this.providerConfigService.setDefaultProviderConfig(e.payload.id))}),this.registerHandler(x.setModelFilterMode,async e=>{e.setResult(await this.providerConfigService.setModelFilterMode(e.payload.id,e.payload.modelFilterMode,e.payload.preferredModel))}),this.registerHandler(x.setAdapterConfig,async e=>{e.setResult(await this.configStore.setAdapterConfig(e.payload.name,e.payload.patch))}),this.registerHandler(x.setAdapterEnabled,async e=>{await this.configStore.setAdapterEnabled(e.payload.name,e.payload.enabled),e.setResult({success:!0})}),this.registerHandler(x.bind,async e=>{e.setResult({binding:await this.bindingService.bind(e.payload.adapterName,e.payload.providerConfigId)})}),this.registerHandler(x.unbind,async e=>{await this.bindingService.unbind(e.payload.adapterName,e.payload.providerConfigId),e.setResult({})}),this.registerHandler(x.setDefaultBinding,async e=>{await this.bindingService.setDefaultBinding(e.payload.adapterName,e.payload.providerConfigId),e.setResult({})})}async onDestroy(){await this.registry.shutdownAll(),this.configStore.clear()}getLoadedAdapters(){return this.registry.getLoadedAdapters()}getAdapterInstances(){return this.registry.getAdapterInstances()}getSettingsAvailableAdapters(){return this.registry.getSettingsAvailableAdapters()}async processAdapterContributions(e,t,n){await this.contributionProcessor.onPackageActivated(e,t,n)}async stopAdapterContributions(e){await this.contributionProcessor.onPackageStopped(e)}};const Q=`.json`;var Ae=class{providerConfigsDir;adaptersDir;constructor(e){this.providerConfigsDir=e.providerConfigsDir,this.adaptersDir=e.adaptersDir}async loadAdapterConfigs(){let e=new Map,t=await this.readJsonFiles(this.adaptersDir,`adapter`);for(let n of t){let t=this.getCanonicalLoadedStem(n.stem,`adapter`,n.filePath);if(!t)continue;let r=p.safeParse(n.jsonData);if(!r.success){this.warnInvalidFile(`adapter`,n.filePath);continue}e.set(t,r.data)}return{configs:e}}async loadProviderConfigs(){let e=new Map,t=await this.readJsonFiles(this.providerConfigsDir,`provider config`);for(let n of t){let t=this.getCanonicalLoadedStem(n.stem,`provider config`,n.filePath);if(!t)continue;let r=m.safeParse(n.jsonData);if(!r.success){this.warnInvalidFile(`provider config`,n.filePath);continue}e.set(t,r.data)}return{configs:e}}async writeProviderConfig(e,n){let r=this.assertCanonicalFileStem(e,`provider config id`),i=m.parse(n);await this.writeJsonFile(t.join(this.providerConfigsDir,`${r}${Q}`),i)}async deleteProviderConfig(e){let n=this.assertCanonicalFileStem(e,`provider config id`);try{return await this.unlinkFile(t.join(this.providerConfigsDir,`${n}${Q}`)),!0}catch(e){if(e.code===`ENOENT`)return!1;throw e}}async writeAdapterFile(e,n){let r=this.assertCanonicalFileStem(e,`adapter name`),i=p.parse(n);await this.writeJsonFile(t.join(this.adaptersDir,`${r}${Q}`),i)}async deleteAdapterFile(e){let n=this.assertCanonicalFileStem(e,`adapter name`);try{return await this.unlinkFile(t.join(this.adaptersDir,`${n}${Q}`)),!0}catch(e){if(e.code===`ENOENT`)return!1;throw e}}async readJsonFiles(n,r){try{let i=(await e.readdir(n,{withFileTypes:!0})).filter(e=>e.isFile()&&t.extname(e.name)===Q).sort((e,t)=>e.name.localeCompare(t.name));return(await Promise.all(i.map(async i=>{let a=t.join(n,i.name);try{let n=await e.readFile(a,`utf-8`);return{filePath:a,stem:t.parse(i.name).name,jsonData:JSON.parse(n)}}catch(e){if(e instanceof SyntaxError||e instanceof Error&&e.code===`ENOENT`)return this.warnInvalidFile(r,a),null;throw e}}))).filter(e=>e!==null)}catch(e){if(e.code===`ENOENT`)return[];throw e}}warnInvalidFile(e,t){console.warn(`[FileAdapterConfigRepository] Skipping invalid %s file: %s`,e,t)}getCanonicalLoadedStem(e,t,n){try{return this.assertCanonicalFileStem(e,`${t} file stem`)}catch{return this.warnInvalidFile(t,n),null}}async writeJsonFile(r,i){let a=t.dirname(r),o=t.join(a,`.${t.basename(r)}.${n()}.tmp`);await e.mkdir(a,{recursive:!0});try{await e.writeFile(o,`${JSON.stringify(i,null,2)}\n`,{encoding:`utf-8`,mode:384}),await this.replaceFile(o,r)}catch(e){throw await this.removeFileIfPresent(o),e}}async replaceFile(e,t){try{await this.renameFile(e,t);return}catch(e){let t=e;if(![`EEXIST`,`EPERM`,`EACCES`].includes(t.code??``))throw e}let r=`${t}.${n()}.bak`,i=!1;try{await this.renameFile(t,r),i=!0}catch(e){if(e.code!==`ENOENT`)throw e}try{await this.renameFile(e,t)}catch(e){throw i&&await this.renameFile(r,t).catch(()=>void 0),e}i&&await this.removeFileIfPresent(r)}async renameFile(t,n){await e.rename(t,n)}async unlinkFile(t){await e.unlink(t)}async removeFileIfPresent(t){try{await e.unlink(t)}catch(e){e.code!==`ENOENT`&&console.warn(`[FileAdapterConfigRepository] Failed to remove temp file: %s`,t,e)}}assertCanonicalFileStem(e,n){let r=e.trim(),i=t.basename(r);if(!r||e!==r||r!==i||!/^[a-z0-9._-]+$/.test(r)||r.includes(`/`)||r.includes(`\\`)||r.toLowerCase().endsWith(`.json`)||r===`.`||r===`..`)throw Error(`Invalid canonical ${n}: ${e}`);return r}};function je(e){return{filter:e=>!!e.adapters?.length||!!e.providers?.length,async processActivated(t,n,r){let i=e.getAdapterSubsystemService();if(!i)throw Error(`AdapterSubsystemService is not available. Ensure the adapter subsystem package starts before adapter-contributing packages.`);await i.processAdapterContributions(t,n,r)},async processStopped(t){let n=e.getAdapterSubsystemService();n&&await n.stopAdapterContributions(t)}}}const $=c(`adapter-subsystem`);function Me(e){return{name:$.name,displayName:`Adapter Subsystem`,version:`0.1.0`,provides:[`adapters`],critical:!0,create:t=>new Z({bus:t.bus,configRepository:e.configRepository,coordinator:e.coordinator,machineId:t.machineId,platformDefaults:e.platformDefaults})}}export{Z as AdapterSubsystemService,$ as AdapterSubsystemToken,Ae as FileAdapterConfigRepository,je as createAdapterSubsystemContributionProcessor,Me as createAdapterSubsystemPackage,Se as ensureAdapterConfigs,ve as extractAdapterIdFromPackageName,H as initializeEnabledAdapters,B as shutdownAdapterInstances,R as toAvailableAdapter};
1
+ import{isDeepStrictEqual as e}from"node:util";import*as t from"node:fs/promises";import*as n from"node:path";import{randomUUID as r}from"node:crypto";import{MakaioBus as i}from"@makaio/framework/bus";import{AdapterProviderAuthSchema as a,AdapterSubjects as o,CapabilitySubjects as s,ClientDefinitionSchema as c,CredentialSubjects as l,ProviderDefinitionSchema as u,ResolvedProviderContextSchema as d,assertAdapterAuthBindingMatchesMethod as f,extensionToken as ee,isUniversalRange as te,versionSatisfies as p}from"@makaio/framework/contracts";import{BaseService as ne}from"@makaio/framework/service-base";import{ProviderConfigAuthSchema as m,assertAdapterAuthBindingMatchesMethod as re}from"@makaio/framework/contracts/auth";import{ADAPTER_FILE_SCHEMA_VERSION as ie,AdapterFileSchema as h,PROVIDER_CONFIG_SCHEMA_VERSION as g,ProviderConfigFileSchema as ae,resolveCanonicalProviderConfigName as oe,slugifyProviderConfigName as _}from"@makaio/framework/contracts/config";import{resolveModelVisibility as se}from"@makaio/framework/contracts/provider";import{buildDeterministicAdapterId as v}from"@makaio/framework/services/adapter-runtime";import{ClientSubjects as ce}from"@makaio/framework/contracts/client";import{ClientStorageSubjects as y,ProviderStorageSubjects as b}from"@makaio/framework/services/settings/storage";import{ExtensionSubjects as x}from"@makaio/framework/kernel";import{AdapterSubsystemSubjects as S}from"@makaio/framework/services/adapter-subsystem";import{ModelRegistryProviderNotFoundError as le,ModelRegistrySubjects as ue}from"@makaio/framework/services/model-registry";function C(e){return e?{...e}:void 0}function w(e){return e?{...e}:void 0}function de(e){return e?structuredClone(e):void 0}function fe(e,t){let n=[];for(let[r,i]of t.providerConfigs){let t=e.providerConfigs.get(r);t!==i&&n.push({kind:`write-provider`,key:`provider:${r}`,id:r,next:i,previous:t})}for(let[r,i]of t.adapters){let t=e.adapters.get(r);t!==i&&n.push({kind:`write-adapter`,key:`adapter:${r}`,name:r,next:i,previous:t})}for(let[r,i]of e.providerConfigs)t.providerConfigs.has(r)||n.push({kind:`delete-provider`,key:`provider-delete:${r}`,id:r,previous:i});return n}async function pe(e,t){switch(t.kind){case`write-provider`:await e.writeProviderConfig(t.id,t.next);return;case`write-adapter`:await e.writeAdapterFile(t.name,t.next);return;case`delete-provider`:if(!await e.deleteProviderConfig(t.id))throw Error(`Provider config file missing during delete: ${t.id}`);return}}async function me(e,t){switch(t.kind){case`write-provider`:if(t.previous){await e.writeProviderConfig(t.id,t.previous);return}await e.deleteProviderConfig(t.id);return;case`write-adapter`:if(t.previous){await e.writeAdapterFile(t.name,t.previous);return}await e.deleteAdapterFile(t.name);return;case`delete-provider`:await e.writeProviderConfig(t.id,t.previous);return}}async function he(e,t,n){let r=fe(t,n);if(r.length===0)return;let i=[];try{for(let t of r)i.push(t),await pe(e,t)}catch(t){try{await ge(e,i)}catch(e){throw AggregateError([t,e],`Adapter subsystem snapshot commit failed and rollback could not restore the previous state.`,{cause:e})}throw t}}async function ge(e,t){let n=[];for(let r of[...t].reverse())try{await me(e,r)}catch(e){n.push(e instanceof Error?Error(`[${r.key}] ${e.message}`,{cause:e}):Error(`[${r.key}] ${String(e)}`))}if(n.length>0)throw AggregateError(n,`Snapshot rollback failed.`)}function T(e,t){return{id:e,definitionId:t.definitionId,name:t.name??t.definitionId,...t.endpointOverrides?{endpointOverrides:{...t.endpointOverrides}}:{},...t.modelVisibility?{modelVisibility:{...t.modelVisibility}}:{},modelFilterMode:t.modelFilterMode??`show-all`,isDefault:t.isDefault??!1,enabled:t.enabled??!0,auth:_e(t),...t.managedBy?{managedBy:{...t.managedBy}}:{}}}function _e(e){switch(e.auth.mode){case`explicit`:return{mode:`explicit`,method:{...e.auth.method},hasCredentials:!0};case`inferred`:return{mode:`inferred`,method:{...e.auth.method},...e.auth.account?{account:{...e.auth.account}}:{},hasCredentials:!1};case`none`:return{mode:`none`,method:{...e.auth.method},hasCredentials:!1}}}function E(e,t){return(t??[]).map(t=>({adapterName:e,providerConfigId:t.providerConfigId,isDefault:t.isDefault??!1}))}function ve(e,t,n){return{name:e,enabled:t.enabled??!0,...t.displayName===void 0?{}:{displayName:t.displayName},...t.description===void 0?{}:{description:t.description},...t.helpLinks===void 0?{}:{helpLinks:t.helpLinks.map(e=>({...e}))},...t.instructions===void 0?{}:{instructions:t.instructions},...t.clientId===void 0?{}:{clientId:t.clientId},...t.protocol===void 0?{}:{protocol:t.protocol},...t.providerDefinitionIds===void 0?{}:{providerDefinitionIds:[...t.providerDefinitionIds]},...t.settings?{settings:structuredClone(t.settings)}:{},bindings:n.map(e=>({...e}))}}function ye(e,t){let n=[],r=new Set;for(let i of e){let e=t.get(i.providerConfigId);!e||r.has(e.definitionId)||(r.add(e.definitionId),n.push(e.definitionId))}return n}function be(e){let t=new Map,n=new Map,r=new Map;for(let[i,a]of e.providerConfigs){let e=T(i,a);t.set(i,e),n.set(_(e.name),i);let o=r.get(e.definitionId)??[];o.push(i),r.set(e.definitionId,o)}let i=new Map,a=new Map,o=new Map,s=new Map;for(let[n,r]of e.adapters){let e=E(n,r.bindings),c=ve(n,r,e),l=e.filter(e=>t.get(e.providerConfigId)?.enabled);i.set(n,c),a.set(n,e),s.set(n,l.find(e=>e.isDefault)??l[0]??null);for(let t of e){let e=o.get(t.providerConfigId)??[];e.push(t),o.set(t.providerConfigId,e)}}return{providerConfigRecords:t,providerConfigSlugToId:n,providerConfigIdsByDefinition:r,adapterRecords:i,bindingsByAdapter:a,bindingsByConfig:o,defaultBindingByAdapter:s,adapterNames:new Set(i.keys())}}function D(e,t){let n=e.get(t);return n!==void 0&&(n.enabled??!0)}function xe(e,t){return e.some(e=>D(t,e.providerConfigId))}function O(e,t){let n=e.find(e=>D(t,e.providerConfigId));return{bindings:e.map(e=>({...e,isDefault:e.providerConfigId===n?.providerConfigId})),...n?{promoted:{...n,isDefault:!0}}:{}}}function Se(e,t,n){let r=[...n.entries()].filter(([n,r])=>n!==t&&r.definitionId===e).map(([e,t])=>({id:e,config:t})),i=r.find(({id:e})=>D(n,e))?.id??null;for(let{id:e,config:t}of r)n.set(e,{...t,isDefault:i!==null&&e===i});return i}function k(e){if(!e.provider.enabled)throw new A(`provider-definition-disabled`,`Provider definition is disabled for auth selection: ${e.provider.id}`);if(e.client!==void 0&&!e.client.enabled)throw new A(`client-definition-disabled`,`Client definition is disabled for auth selection: ${e.client.id}`)}var A=class extends Error{code;constructor(e,t){super(t),this.code=e,this.name=`ProviderConfigAuthValidationError`}};async function j(e,t,n,r){let i=r??(await e.request(b.get,{id:t})).provider;if(!i||i.id!==t)throw new A(`provider-definition-not-found`,`Provider definition not found for auth selection: ${t}`);let a,o;if(n.method.owner===`provider`){if(n.method.providerDefinitionId!==t)throw new A(`auth-method-not-found`,`Provider auth method "${n.method.methodId}" does not belong to definition "${t}".`);a=i.authMethods.find(({id:e})=>e===n.method.methodId)}else{if({client:o}=await e.request(y.get,{id:n.method.clientId}),!o)throw new A(`client-definition-not-found`,`Client definition not found for auth selection: ${n.method.clientId}`);a=o.authMethods.find(({id:e})=>e===n.method.methodId)}if(!a){let e=n.method.owner===`provider`?n.method.providerDefinitionId:n.method.clientId;throw new A(`auth-method-not-found`,`Authentication method "${n.method.methodId}" is not declared by ${n.method.owner} "${e}".`)}if(a.mode!==n.mode)throw new A(`auth-mode-mismatch`,`Authentication method "${a.id}" declares mode "${a.mode}", not "${n.mode}".`);return a.mode===`explicit`&&n.mode===`explicit`&&Ce(a,n),{method:a,provider:i,...o?{client:o}:{}}}function Ce(e,t){let n=new Set(e.fields.map(({id:e})=>e)),r=e.fields.filter(({id:e,required:n})=>n&&t.credentialRefs[e]===void 0).map(({id:e})=>e),i=Object.keys(t.credentialRefs).filter(e=>!n.has(e));if(r.length===0&&i.length===0)return;let a=[...r.length>0?[`missing required fields [${r.join(`, `)}]`]:[],...i.length>0?[`unexpected fields [${i.join(`, `)}]`]:[]];throw new A(`auth-credential-fields-mismatch`,`Authentication method "${e.id}" has ${a.join(` and `)}.`)}var M=class extends Error{code;constructor(e,t){super(t),this.code=e,this.name=`ProviderRuntimeContextError`}};async function N(e,t,n){if(n.enabled===!1)throw new M(`provider-config-disabled`,`ProviderConfig '${t}' is disabled and cannot be used for adapter startup.`);let r=await j(e,n.definitionId,n.auth);k(r);let i=we(n.auth,r.method),a={...r.provider.endpoints??{},...n.endpointOverrides??{}};return{context:d.parse({state:`resolved`,providerConfigId:t,definitionId:r.provider.id,...Object.keys(a).length>0?{endpointOverrides:a}:{},auth:i,...r.provider.capabilities?{capabilities:r.provider.capabilities}:{}}),definition:structuredClone(r.provider)}}function we(e,t){switch(e.mode){case`explicit`:if(t.mode!==`explicit`)throw P(e.mode,t.mode);return{mode:e.mode,method:{...e.method},definition:structuredClone(t),credentialRefs:{...e.credentialRefs}};case`inferred`:if(t.mode!==`inferred`)throw P(e.mode,t.mode);return{mode:e.mode,method:{...e.method},definition:{...t},...e.account?{account:{...e.account}}:{}};case`none`:if(t.mode!==`none`)throw P(e.mode,t.mode);return{mode:e.mode,method:{...e.method},definition:{...t}}}}function P(e,t){return new A(`auth-mode-mismatch`,`Validated authentication mode changed during context assembly: selected "${e}", declared "${t}".`)}var Te=class{tail=Promise.resolve();async run(e){let t=this.tail.then(e,e);return this.tail=t.then(()=>void 0,()=>void 0),await t}},Ee=class{configRepository;bus;snapshot={providerConfigs:new Map,adapters:new Map};providerConfigRecords=new Map;providerConfigSlugToId=new Map;adapterRecords=new Map;bindingsByAdapter=new Map;bindingsByConfig=new Map;defaultBindingByAdapter=new Map;providerConfigIdsByDefinition=new Map;knownAdapterNames=new Set;logImportProviderKeysPromise=null;snapshotMutationQueue=new Te;constructor(e){this.configRepository=e.configRepository,this.bus=e.bus}async loadSnapshot(){let[e,t]=await Promise.all([this.configRepository.loadProviderConfigs(),this.configRepository.loadAdapterConfigs()]);this.replaceSnapshot({providerConfigs:new Map(e.configs),adapters:new Map(t.configs)})}registerListeners(e){let t=()=>{this.logImportProviderKeysPromise=null};e(this.bus.on(s.register,t,{filter:{capabilityId:`log-import`}})),e(this.bus.on(s.unregister,t,{filter:{capabilityId:`log-import`}}))}clear(){this.snapshot={providerConfigs:new Map,adapters:new Map},this.providerConfigRecords.clear(),this.providerConfigSlugToId.clear(),this.adapterRecords.clear(),this.bindingsByAdapter.clear(),this.bindingsByConfig.clear(),this.defaultBindingByAdapter.clear(),this.providerConfigIdsByDefinition.clear(),this.knownAdapterNames.clear(),this.logImportProviderKeysPromise=null}replaceSnapshot(e){this.snapshot=e,this.applyDerivedState()}cloneSnapshot(){return{providerConfigs:new Map(this.snapshot.providerConfigs),adapters:new Map(this.snapshot.adapters)}}async commitSnapshotMutation(e,t){return await this.snapshotMutationQueue.run(async()=>{let n=this.cloneSnapshot();return await e(n),await this.commitSnapshot(n),await t?.()})}async commitSnapshot(e){await he(this.configRepository,this.snapshot,e),this.replaceSnapshot(e)}applyDerivedState(){let e=be(this.snapshot);this.providerConfigRecords=e.providerConfigRecords,this.providerConfigSlugToId=e.providerConfigSlugToId,this.providerConfigIdsByDefinition=e.providerConfigIdsByDefinition,this.adapterRecords=e.adapterRecords,this.bindingsByAdapter=e.bindingsByAdapter,this.bindingsByConfig=e.bindingsByConfig,this.defaultBindingByAdapter=e.defaultBindingByAdapter,(e.adapterNames.size!==this.knownAdapterNames.size||[...e.adapterNames].some(e=>!this.knownAdapterNames.has(e)))&&(this.knownAdapterNames=e.adapterNames,this.logImportProviderKeysPromise=null)}getProviderConfig(e){let t=this.providerConfigRecords.get(e);return t?structuredClone(t):null}requireProviderConfig(e,t){let n=this.getProviderConfig(e);if(!n)throw Error(`Provider config could not be loaded after ${t}: ${e}`);return n}getAdapterConfig(e){let t=this.adapterRecords.get(e);return t?structuredClone(t):null}requireAdapterConfig(e,t){let n=this.getAdapterConfig(e);if(!n)throw Error(`Adapter config could not be loaded after ${t}: ${e}`);return n}isAdapterEnabled(e){return this.getAdapterConfig(e)?.enabled??!1}listProviderConfigs(e){let t=[...this.providerConfigRecords.values()].map(e=>structuredClone(e));return e===void 0?t:t.filter(t=>t.enabled===e)}listProviderConfigsByDefinition(e){return this.getProviderConfigIdsByDefinition(e).map(e=>this.getProviderConfig(e)).filter(e=>e!==null)}listAdapterConfigs(){return[...this.adapterRecords.values()].map(e=>structuredClone(e))}listBindings(e){return structuredClone(this.bindingsByAdapter.get(e)??[])}listBindingsByConfig(e){return structuredClone(this.bindingsByConfig.get(e)??[])}getDefaultBinding(e){let t=this.defaultBindingByAdapter.get(e)??null;return t?structuredClone(t):null}findConfigForDefinitionAndAdapter(e,t){let n=new Set((this.bindingsByAdapter.get(t)??[]).map(e=>e.providerConfigId)),r=this.getProviderConfigIdsByDefinition(e).map(e=>this.providerConfigRecords.get(e)).filter(e=>e!==void 0&&e.enabled&&n.has(e.id)),i=r.find(e=>e.isDefault)??r[0]??null;return i?structuredClone(i):null}getProviderConfigIdsByDefinition(e){return[...this.providerConfigIdsByDefinition.get(e)??[]]}assertProviderConfigNameUnique(e,t){let n=_(e),r=this.providerConfigSlugToId.get(n);if(r!==void 0&&r!==t){let t=this.providerConfigRecords.get(r)?.name??r;throw Error(`Provider config name "${e}" conflicts with existing config "${t}": both slugify to "${n}". Choose a different name.`)}}async setAdapterConfig(e,t){return{config:await this.commitSnapshotMutation(n=>{let r=n.adapters.get(e);n.adapters.set(e,this.buildNextAdapterFile(r,t))},()=>this.requireAdapterConfig(e,`update`))}}buildNextAdapterFile(e,t){return{...e??{},$schema:ie,...this.applyAdapterPatch(e,t),bindings:e?.bindings}}applyAdapterPatch(e,t){let n=e??{},r=t.helpLinks?.map(e=>({...e}))??n.helpLinks,i=t.providerDefinitionIds?[...t.providerDefinitionIds]:n.providerDefinitionIds;return{enabled:t.enabled??n.enabled??!0,displayName:t.displayName??n.displayName,description:t.description??n.description,helpLinks:r,instructions:t.instructions??n.instructions,clientId:t.clientId??n.clientId,protocol:t.protocol??n.protocol,providerDefinitionIds:i,settings:t.settings===void 0?n.settings:de(t.settings)}}async setAdapterEnabled(e,t){await this.setAdapterConfig(e,{enabled:t})}async buildEffectiveAdapters(){let e=await this.getLogImportProviderKeys();return[...this.adapterRecords.values()].map(t=>{let n=this.bindingsByAdapter.get(t.name)??[],r=n.filter(e=>this.providerConfigRecords.get(e.providerConfigId)?.enabled),i=[...t.providerDefinitionIds??ye(n,this.providerConfigRecords)];return{name:t.name,displayName:t.displayName??t.name,...t.description===void 0?{}:{description:t.description},enabled:t.enabled,configCount:n.length,readiness:r.length>0?`ready`:`needs-setup`,supportsLogImport:e.has(t.name),...t.helpLinks===void 0?{}:{helpLinks:t.helpLinks.map(e=>({...e}))},...t.instructions===void 0?{}:{instructions:t.instructions},...t.clientId===void 0?{}:{clientId:t.clientId},...t.protocol===void 0?{}:{protocol:t.protocol},...t.providerDefinitionIds!==void 0||i.length>0?{providerDefinitionIds:i}:{}}})}async getLogImportProviderKeys(){if(!this.logImportProviderKeysPromise){let e=this.bus.requestOptional(s.listProviders,{capabilityId:`log-import`}).then(t=>t.handled?new Set(t.data.providers.map(e=>e.providerKey??e.id)):(this.logImportProviderKeysPromise===e&&(this.logImportProviderKeysPromise=null),new Set)).catch(e=>{throw this.logImportProviderKeysPromise=null,e});this.logImportProviderKeysPromise=e}return await this.logImportProviderKeysPromise}async resolveProviderRuntimeSnapshot(e){let t=this.snapshot.providerConfigs.get(e);if(!t)return null;let{context:n,definition:r}=await N(this.bus,e,t);return{config:T(e,t),context:n,definition:r}}async resolveBoundProviderRuntimeSnapshot(e,t){let n=this.snapshot,r=n.providerConfigs.get(t),i=n.adapters.get(e),a=r!==void 0&&E(e,i?.bindings).some(e=>e.providerConfigId===t);if(!r)return{snapshot:null,isBound:!1};let{context:o,definition:s}=await N(this.bus,t,r);return{isBound:a,snapshot:{config:T(t,r),context:o,definition:s}}}removeBindingsForConfig(e,t,n){let r=new Map,i=[],a=[];for(let[o,s]of t){let t=E(o,s.bindings),c=t.findIndex(t=>t.providerConfigId===e);if(c===-1)continue;let[l]=t.splice(c,1);if(l&&i.push(l),l?.isDefault&&t.length>0){let e=O(t,n);t.splice(0,t.length,...e.bindings),e.promoted&&a.push({adapterName:o,providerConfigId:e.promoted.providerConfigId})}r.set(o,{...s,bindings:t.map(({adapterName:e,...t})=>t)})}return{changedAdapters:r,deletedBindings:i,defaultChangedBindings:a}}promoteProviderConfigDefault(e,t,n){return Se(e,t,n)}};const F=process.env.MAKAIO_SKIP_CLIENT_VERSION_CHECK===`1`;function De(e){if(!(e===void 0||e.length===0))return e.map(e=>({...e}))}function Oe(e,t){if(e===void 0||e.length===0)return;let n=new Map(t.map(e=>[e.definition.id,e.definition]));return e.map(e=>{let t=n.get(e.id);if(t===void 0)throw Error(`Adapter client definition "${e.id}" is missing from the active contribution catalog.`);return t})}function I(e,t){return e.clientId!==void 0&&t?.some(t=>t.id===e.clientId)?e.clientId:t?.[0]?.id}async function L(e,t,n,r,i={}){if(t===void 0||t.length===0)return;let a=new Map(n.map(e=>[e.definition.id,e.definition]));for(let n of t){let t=a.get(n.id);if(t===void 0)throw Error(`Adapter "${e}" references missing client "${n.id}"`);ke(t.version,n.version,`Adapter "${e}" client "${n.id}" definition version ${t.version}`)}if(i.checkBinaryVersions===!1)return;let o=t.filter(e=>e.binaryVersion!==void 0);await Promise.all(o.map(async t=>{if(te(t.binaryVersion))return;let n=await r.requestOptional(ce.resolveBinary,{clientId:t.id});if(!n.handled){if(F){console.warn(`[SKIP_VERSION_CHECK] Adapter "${e}" client "${t.id}" declares binaryVersion ${t.binaryVersion}, but no client.resolveBinary handler is registered — check bypassed`);return}throw Error(`Adapter "${e}" client "${t.id}" declares binaryVersion ${t.binaryVersion}, but no client.resolveBinary handler is registered`)}let i=n.data.version;if(i===null){if(F){console.warn(`[SKIP_VERSION_CHECK] Adapter "${e}" client "${t.id}" binary did not report a version; requires ${t.binaryVersion} — check bypassed`);return}throw Error(`Adapter "${e}" client "${t.id}" binary did not report a version; requires ${t.binaryVersion}`)}if(!p(i,t.binaryVersion)){let n=`Adapter "${e}" client "${t.id}" binary version ${i}`;if(F){console.warn(`[SKIP_VERSION_CHECK] ${n} does not satisfy ${t.binaryVersion} — check bypassed`);return}throw Error(`${n} does not satisfy ${t.binaryVersion}`)}}))}function ke(e,t,n){if(!p(e,t))throw Error(`${n} does not satisfy ${t}`)}function Ae(e){let t=e.split(`/`).pop()?.replace(/^ai-adapters-/,``)?.trim();return t&&t.length>0?t:e}function R(e){let t=I(e.options,e.clients);return{name:e.name,displayName:e.displayName??e.name,description:e.description,helpLinks:e.helpLinks?.map(e=>({...e})),instructions:e.instructions,clientId:t,protocol:e.protocol,providerDefinitionIds:[...e.providerDefinitionIds]}}async function z(e,t,n=5e3){let r=Ne(t);if(!r)return;let i;try{await Promise.race([Promise.resolve().then(r),new Promise((t,r)=>{i=setTimeout(()=>{r(Error(`Timed out closing adapter ${e} after ${n}ms`))},n)})])}finally{i&&clearTimeout(i)}}async function B(e){for(let[t,n]of e)try{await z(t,n)}catch(e){console.error(`[adapter-runtime] Error shutting down adapter ${t}:`,e)}e.clear()}async function je(e,t,n){try{await z(e,t)}finally{n.delete(e)}}async function Me(e,t){let{config:n}=await e.request(S.getAdapterConfig,{name:t});return n?.enabled??!1}function V(e,t){return e.options.adapterId??v(t,e.name)}function Ne(e){let t=e;if(typeof t.shutdown==`function`)return t.shutdown.bind(e);if(typeof t.closeAsync==`function`)return t.closeAsync.bind(e);if(typeof t.close==`function`)return t.close.bind(e)}async function H(e,t,n,r,i){let a=[];for(let s of n)try{if(!await Me(e,s.name)){console.info(`Skipping disabled adapter: ${s.name}`);continue}let n=V(s,t),a=I(s.options,s.clients),c=await s.factory({...s.options,adapterId:n,platformDefaults:i,definitionProviders:s.providers,clientId:a,globalBus:e});if(c.adapterId!==n){let e=Error(`Adapter '${s.name}' initialized with mismatched adapterId (expected '${n}', got '${c.adapterId}')`);try{await z(n,c)}catch(e){console.error(`[adapter-runtime] Error rolling back adapter ${s.name}:`,e)}throw e}r.set(n,c);let l=c;try{await e.emit(o.initialized,{adapterId:n,adapterName:s.name,capabilities:[...l.capabilities??[]],...l.nativeTools===void 0?{}:{nativeTools:[...l.nativeTools]}})}catch(e){try{await je(n,c,r)}catch(e){console.error(`[adapter-runtime] Error rolling back adapter ${s.name}:`,e)}throw e}console.info(`Initialized adapter: ${s.name} (${s.packageName})`)}catch(e){a.push({adapterName:s.name,error:e})}if(a.length>0){let e=a.map(({adapterName:e,error:t})=>`${e}: ${t instanceof Error?t.message:String(t)}`).join(`; `);throw Error(`Failed to initialize enabled adapters: ${e}`)}}async function Pe(e,t){await t.request(S.ensureReady,{});let n=await Promise.all(e.map(async e=>({adapter:e,config:(await t.request(S.getAdapterConfig,{name:e.name})).config})));await Promise.all(n.filter(({config:e})=>!e).map(({adapter:e})=>t.request(S.setAdapterConfig,{name:e.name,patch:{displayName:e.displayName,description:e.description,helpLinks:e.helpLinks?.map(e=>({...e})),instructions:e.instructions,clientId:I(e.options,e.clients),protocol:e.protocol,providerDefinitionIds:[...e.providerDefinitionIds],enabled:!1}})))}var Fe=class{bus;machineId;loadedAdapters=new Map;adapterInstances=new Map;packageAdapters=new Map;publicationChain=Promise.resolve();constructor(e){this.bus=e.bus,this.machineId=e.machineId}getLoadedAdapters(){return[...this.loadedAdapters.values()]}getAdapterInstances(){return this.adapterInstances}hasAdapterInstance(e){return this.adapterInstances.has(this.resolveLoadedAdapterId(e))}resolveLoadedAdapterId(e){return V(e,this.machineId)}getSettingsAvailableAdapters(){return[...this.loadedAdapters.values()].map(R)}registerAdapter(e,t){let n=this.loadedAdapters.get(e.name);if(n)throw Error(`Duplicate adapter name '${e.name}' from owners '${n.packageName}' and '${t}'.`);this.loadedAdapters.set(e.name,e);let r=this.packageAdapters.get(t)??[];this.packageAdapters.set(t,[...r,e.name])}updateAdapterProviders(e,t){let n=this.loadedAdapters.get(e);if(!n)return;let r={...n,providers:t};return this.loadedAdapters.set(e,r),r}async removeProviderPackage(e,t){let n=[];for(let r of this.loadedAdapters.values()){let i=r.providers.filter(t=>t.providerPackageName!==e);if(i.length===r.providers.length)continue;let a={...r,providers:i};if(this.loadedAdapters.set(r.name,a),n.push(a),this.hasAdapterInstance(a))try{await this.restartAdapterInstance(a,t)}catch(t){console.error(`[AdapterRuntimeRegistry] Error restarting adapter "${a.name}" after provider package "${e}" stopped:`,t)}}return n}async deregisterAdapter(e){let t=this.loadedAdapters.get(e);if(!t)return;let n=this.resolveLoadedAdapterId(t),r=this.adapterInstances.get(n);r&&(await z(n,r),this.adapterInstances.delete(n)),this.loadedAdapters.delete(e)}removePackageTracking(e){this.packageAdapters.delete(e)}async deregisterPackage(e){let t=this.packageAdapters.get(e);if(!t?.length)return;let n=!1;for(let e of t)try{await this.deregisterAdapter(e)}catch(t){n=!0,console.error(`[AdapterRuntimeRegistry] Error shutting down adapter "${e}":`,t)}n||this.packageAdapters.delete(e)}publishAdapterRegistered(e){let{adapterName:t,displayName:n,packageName:r,enabled:i,adapterId:a,providerDefinitionIds:o}=e,s=this.adapterInstances.has(a),c=this.publicationChain.catch(()=>void 0).then(()=>this.bus.emit(S.adapter.registered,{adapterName:t,displayName:n??t,packageName:r,enabled:i,initialized:s,providerDefinitionIds:[...o]}));return this.publicationChain=c.catch(()=>void 0),c}async initializeAdapter(e,t){await H(this.bus,this.machineId,[e],this.adapterInstances,t)}async restartAdapterInstance(e,t){let n=this.resolveLoadedAdapterId(e),r=this.adapterInstances.get(n);if(r){try{await z(n,r)}catch(t){throw console.error(`[AdapterRuntimeRegistry] Error shutting down adapter "${e.name}" before restart:`,t),t}this.adapterInstances.delete(n)}await this.initializeAdapter(e,t)}async shutdownAll(){await B(this.adapterInstances),this.loadedAdapters.clear(),this.packageAdapters.clear()}};function Ie(e,t,n,r){let i=n.isDefault??!1;return r?i?!0:![...e.entries()].some(([e,r])=>e!==t&&r.definitionId===n.definitionId&&(r.enabled??!0)&&(r.isDefault??!1)):!1}var Le=class{configStore;bus;constructor(e){this.configStore=e.configStore,this.bus=e.bus}async createProviderConfig(e){let t=await this.getProviderDefinitionOrThrow(e.definitionId),n=m.parse(e.auth),r=e.enabled??!0,i=await j(this.bus,e.definitionId,n,t);r&&k(i);let a=this.resolveProviderConfigNameFromDefinition(e.definitionId,t.name,e.name),o=_(a),s=C(e.endpointOverrides),c=w(e.modelVisibility),l=await this.configStore.commitSnapshotMutation(t=>{if(this.configStore.assertProviderConfigNameUnique(a),t.providerConfigs.has(o))throw Error(`Provider config already exists: ${o}`);t.providerConfigs.set(o,{$schema:g,definitionId:e.definitionId,name:a,auth:structuredClone(n),...e.managedBy?{managedBy:{...e.managedBy}}:{},endpointOverrides:s,modelVisibility:c,modelFilterMode:e.modelFilterMode??`show-all`,isDefault:r&&![...t.providerConfigs.values()].some(t=>t.definitionId===e.definitionId&&(t.enabled??!0)&&(t.isDefault??!1)),enabled:r})},()=>this.configStore.requireProviderConfig(o,`creation`));return await this.bus.emit(S.providerConfig.created,l),{config:l}}async updateProviderConfig(e,t){let n,r=await this.configStore.commitSnapshotMutation(async r=>{n=await this.applyProviderConfigPatch(r,e,t)},()=>this.configStore.requireProviderConfig(e,`update`));return await this.bus.emit(S.providerConfig.updated,r),n&&await this.bus.emit(S.providerConfig.defaultChanged,n),{config:r}}async applyProviderConfigPatch(e,t,n){let r=e.providerConfigs.get(t);if(!r)throw Error(`Provider config not found: ${t}`);let i=n.name??r.name??r.definitionId;n.name!==void 0&&this.configStore.assertProviderConfigNameUnique(i,t);let a=n.enabled??r.enabled??!0;a&&!(r.enabled??!0)&&k(await j(this.bus,r.definitionId,r.auth));let o=Ie(e.providerConfigs,t,r,a);return e.providerConfigs.set(t,{...r,name:i,endpointOverrides:n.endpointOverrides===null?void 0:n.endpointOverrides===void 0?r.endpointOverrides:C(n.endpointOverrides),modelVisibility:n.modelVisibility===void 0?r.modelVisibility:w(n.modelVisibility),enabled:a,isDefault:o}),(r.isDefault??!1)&&!o?{definitionId:r.definitionId,configId:this.configStore.promoteProviderConfigDefault(r.definitionId,t,e.providerConfigs)}:!(r.isDefault??!1)&&o?{definitionId:r.definitionId,configId:t}:void 0}async setProviderConfigAuth(e,t){let n=m.parse(t),r=await this.configStore.commitSnapshotMutation(async t=>{let r=t.providerConfigs.get(e);if(!r)throw Error(`Provider config not found: ${e}`);let i=await j(this.bus,r.definitionId,n);(r.enabled??!0)&&k(i),t.providerConfigs.set(e,{...r,auth:structuredClone(n)})},()=>this.configStore.requireProviderConfig(e,`auth update`));return await this.bus.emit(S.providerConfig.updated,r),{config:r}}async deleteProviderConfig(e){let t=!1,n,r=``,i=!1,a=null,o={changedAdapters:new Map,deletedBindings:[],defaultChangedBindings:[]},s=await this.configStore.commitSnapshotMutation(s=>{let c=s.providerConfigs.get(e);if(c){if(c.managedBy){(c.enabled??!0)&&(i=c.isDefault??!1,r=c.definitionId,s.providerConfigs.set(e,{...c,enabled:!1,isDefault:!1}),a=i?this.configStore.promoteProviderConfigDefault(c.definitionId,e,s.providerConfigs):null,n=e);return}o=this.configStore.removeBindingsForConfig(e,s.adapters,s.providerConfigs),i=c.isDefault??!1,r=c.definitionId,t=!0,s.providerConfigs.delete(e),a=i?this.configStore.promoteProviderConfigDefault(c.definitionId,e,s.providerConfigs):null;for(let[e,t]of o.changedAdapters)s.adapters.set(e,t)}},()=>n?this.configStore.requireProviderConfig(e,`managed config disable`):null);if(!t)return n?(await this.bus.emit(S.providerConfig.updated,s),i&&await this.bus.emit(S.providerConfig.defaultChanged,{definitionId:r,configId:a}),{deleted:!1}):{deleted:!1};await this.cleanupDeletedProviderCredentials(e);for(let e of o.deletedBindings)await this.bus.emit(S.binding.deleted,e);for(let e of o.defaultChangedBindings)await this.bus.emit(S.binding.defaultChanged,e);return await this.bus.emit(S.providerConfig.deleted,{id:e}),i&&await this.bus.emit(S.providerConfig.defaultChanged,{definitionId:r,configId:a}),{deleted:!0}}async setDefaultProviderConfig(e){let t=``,n=await this.configStore.commitSnapshotMutation(n=>{let r=n.providerConfigs.get(e);if(!r)throw Error(`Provider config not found: ${e}`);if(!(r.enabled??!0))throw Error(`Disabled provider config cannot be default: ${e}`);t=r.definitionId;for(let[r,i]of n.providerConfigs)i.definitionId===t&&n.providerConfigs.set(r,{...i,isDefault:r===e})},()=>this.configStore.requireProviderConfig(e,`setDefault`));return await this.bus.emit(S.providerConfig.updated,n),await this.bus.emit(S.providerConfig.defaultChanged,{definitionId:t,configId:e}),{config:n}}async setModelFilterMode(e,t,n){let r=await this.configStore.commitSnapshotMutation(async r=>{let i=r.providerConfigs.get(e);if(!i)throw Error(`Provider config not found: ${e}`);let a=i.modelVisibility;if(t===`allowlist`){let e=await this.selectAllowlistKeeper(i.definitionId,i,n);e&&(a={...i.modelVisibility??{},[e]:`visible`})}r.providerConfigs.set(e,{...i,modelFilterMode:t,modelVisibility:a})},()=>this.configStore.requireProviderConfig(e,`setModelFilterMode`));return await this.bus.emit(S.providerConfig.updated,r),{config:r}}async cleanupDeletedProviderCredentials(e){try{await this.bus.requestOptional(l.delete,{configId:e})}catch(t){console.warn(`[AdapterProviderConfigService] Failed to delete credentials for removed provider config "${e}":`,t)}}async resolveProviderConfigName(e,t){let n=await this.getProviderDefinitionOrThrow(e);return this.resolveProviderConfigNameFromDefinition(e,n.name,t)}resolveProviderConfigNameFromDefinition(e,t,n){let r=oe({requestedName:n,providerName:t,definitionId:e});if(r)return r;throw Error(`Unable to derive a canonical provider config name for definition: ${e}`)}async getProviderDefinitionOrThrow(e){let{provider:t}=await this.bus.request(b.get,{id:e});if(!t)throw Error(`Provider definition not found: ${e}`);return t}async selectAllowlistKeeper(e,t,n){let{provider:r}=await this.bus.request(b.get,{id:e}),i=[n,...r?.availableModels?.map(e=>e.name)??[],...Object.keys(t.modelVisibility??{})].filter(e=>typeof e==`string`&&e.length>0);for(let e of i){let n=se(e,`allowlist`,t.modelVisibility);if(n===`enabled`||n===`visible`)return}return i[0]}},Re=class{configStore;bus;constructor(e){this.configStore=e.configStore,this.bus=e.bus}async bind(e,t){let n,r=!1;if(await this.configStore.commitSnapshotMutation(i=>{let a=i.providerConfigs.get(t);if(!a)throw Error(`Provider config not found: ${t}`);let o=i.adapters.get(e);if(!o)throw Error(`Adapter config not found: ${e}`);let s=E(e,o.bindings),c=s.find(e=>e.providerConfigId===t);if(c){n={...c};return}r=!0,n={adapterName:e,providerConfigId:t,isDefault:(a.enabled??!0)&&!xe(s,i.providerConfigs)};let l=[...s,n];i.adapters.set(e,{...o,bindings:l.map(({adapterName:e,...t})=>t)})}),!n)throw Error(`Binding could not be loaded after bind: ${e}/${t}`);return r&&await this.bus.emit(S.binding.created,n),n}async unbind(e,t){let n,r=!1;await this.configStore.commitSnapshotMutation(i=>{let a=i.adapters.get(e);if(!a)return;let o=E(e,a.bindings),s=o.findIndex(e=>e.providerConfigId===t);if(s===-1)return;let[c]=o.splice(s,1);if(r=!0,c?.isDefault&&o.length>0){let e=O(o,i.providerConfigs);n=e.promoted,o.splice(0,o.length,...e.bindings)}i.adapters.set(e,{...a,bindings:o.map(({adapterName:e,...t})=>t)})}),r&&(await this.bus.emit(S.binding.deleted,{adapterName:e,providerConfigId:t}),n&&await this.bus.emit(S.binding.defaultChanged,{adapterName:e,providerConfigId:n.providerConfigId}))}async setDefaultBinding(e,t){let n=!1;await this.configStore.commitSnapshotMutation(r=>{let i=r.adapters.get(e);if(!i)throw Error(`Adapter config not found: ${e}`);let a=E(e,i.bindings),o=a.find(e=>e.providerConfigId===t);if(!o)throw Error(`Binding not found for adapter ${e} and provider config ${t}`);if(!D(r.providerConfigs,o.providerConfigId))throw Error(`Disabled provider config cannot be default binding: ${t}`);o.isDefault||(n=!0,r.adapters.set(e,{...i,bindings:a.map(({adapterName:e,...n})=>({...n,isDefault:n.providerConfigId===t}))}))}),n&&await this.bus.emit(S.binding.defaultChanged,{adapterName:e,providerConfigId:t})}};function U(e){return e.map(e=>({...e}))}function W(e){if(e instanceof le)return!0;if(typeof e!=`object`||!e)return!1;let t=e;return t.name===`ModelRegistryProviderNotFoundError`&&typeof t.providerId==`string`||e instanceof Error&&/^Request to "getProviderModels" failed: Provider ".+" is not present in the model registry$/.test(e.message)||e instanceof Error&&/^Provider ".+" is not present in the model registry$/.test(e.message)?!0:W(t.cause)}async function G(e,t,n,r={}){let i=r.providerDefinitionCache;if(!i){i=new Map;let t=await e.request(x.contributions.catalog,{});for(let e of t.providers)i.set(e.definition.id,e)}let a=[],o=[];for(let e of t){let t=i.get(e.definitionId);if(!t){o.push(e.definitionId);continue}a.push({definition:t.definition,providerPackageName:t.packageName,...e.protocol!==void 0&&{protocol:e.protocol},configSchema:e.configSchema??r.adapterConfigSchema,...e.auth!==void 0&&{auth:ze(e.auth,t.definition,r.clientDefinitions??[],n)}})}return o.length>0&&console.warn(`[AdapterContributionProcessor] Adapter "${n}" declares providers [${o.join(`, `)}] but no active extension registers them. These providers will be unavailable until their extensions are loaded.`),a}function ze(e,t,n,r){let i=a.parse(e),o=new Set(i.scrubEnvVars);K(t.authMethods??[],o);for(let e of n)K(e.authMethods,o);for(let e of i.bindings)f(e,Be(e.method,t,n,r));return a.parse({bindings:i.bindings,scrubEnvVars:[...o]})}function Be(e,t,n,r){if(e.owner===`provider`){if(e.providerDefinitionId!==t.id)throw Error(`Adapter "${r}" binds provider method "${e.methodId}" to definition "${e.providerDefinitionId}" while serving "${t.id}".`);let n=(t.authMethods??[]).find(({id:t})=>t===e.methodId);if(n===void 0)throw Error(`Adapter "${r}" binds undeclared provider auth method "${t.id}/${e.methodId}".`);return n}let i=n.find(({id:t})=>t===e.clientId);if(i===void 0)throw Error(`Adapter "${r}" binds authentication method "${e.clientId}/${e.methodId}" without declaring that client.`);let a=i.authMethods.find(({id:t})=>t===e.methodId);if(a===void 0)throw Error(`Adapter "${r}" binds undeclared client auth method "${e.clientId}/${e.methodId}".`);return a}function K(e,t){for(let n of e)if(n.mode===`explicit`)for(let e of n.fields)for(let n of e.sourceHints)t.add(n.variable)}async function q(e,t,n,r){return Promise.all(n.map(async n=>{let i=n.definition.id;try{let t=r.get(i);if(t===void 0){let a=await e.requestOptional(ue.getProviderModels,{providerId:i});t=a.handled?a.data.models:n.definition.availableModels??[],r.set(i,t)}return{...n,definition:{...n.definition,availableModels:U(t)}}}catch(e){return W(e)||console.warn(`[AdapterContributionProcessor] Failed to populate available models for provider "${i}" on adapter "${t}". Falling back to declared provider models.`,e),{...n,definition:{...n.definition,availableModels:U(n.definition.availableModels??[])}}}}))}async function Ve(e,t,n,r){let i=await G(t,e.providerRefs,e.name,{...e.providerConfigSchema!==void 0&&{adapterConfigSchema:e.providerConfigSchema},...e.clientDefinitions!==void 0&&{clientDefinitions:e.clientDefinitions},...r!==void 0&&{providerDefinitionCache:r}});return q(t,e.name,i,n)}function He(e){let t=new Set;for(let n of e){if(typeof n==`string`){(n===`anthropic`||n===`openai`)&&t.add(n);continue}n.anthropic!==void 0&&t.add(`anthropic`),n.openai!==void 0&&t.add(`openai`)}return[...t]}function Ue(e,t,n){let r=He(n);if(t!==void 0){if(!r.includes(t))throw Error(`Adapter "${e}" definition protocol "${t}" must be declared in manifest.protocols [${r.join(`, `)}].`);return t}return r.length===1?r[0]:void 0}var We=class{configStore;registry;coordinator;machineId;platformDefaults;prepareAuthRuntime;constructor(e){this.configStore=e.configStore,this.registry=e.registry,this.coordinator=e.coordinator,this.machineId=e.machineId,this.platformDefaults=e.platformDefaults,this.prepareAuthRuntime=e.prepareAuthRuntime}register(e){e(this.coordinator.registerContributionProcessor({filter:e=>!!e.adapters?.length||!!e.providers?.length,processActivated:async(e,t,n)=>{await this.onPackageActivated(e,t,n)},processStopped:async e=>{await this.onPackageStopped(e)}}))}async onPackageActivated(e,t,n){let r=t.adapters??[],i=[],a=[],o=new Map,s=await n.bus.request(x.contributions.catalog,{}),c=new Map;for(let e of s.providers)c.set(e.definition.id,e);for(let n of t.providers??[])c.set(n.id,{packageName:e,definition:n});let l=s.clients,u=this.coordinator.getLoadedProviderDefinitionIds();try{for(let t of r){let r=await this.activateAdapterContribution(e,t,n.bus,o,c,l,u);i.push(t.definition.name),a.push(r)}}catch(t){let n=!1;for(let e of i.reverse())try{await this.registry.deregisterAdapter(e)}catch(t){n=!0,console.error(`[AdapterContributionProcessor] Rollback error for adapter "${e}":`,t)}throw n||this.registry.removePackageTracking(e),t}await this.publishActivatedAdapters(a);let d=await this.initializeAdaptersWaitingForProviders(n.bus,o,c,u);await this.publishActivatedAdapters(d)}async processAdapterContribution(e,t,n=i){let r=this.coordinator.getLoadedProviderDefinitionIds(),a=await this.activateAdapterContribution(e,t,n,new Map,void 0,void 0,r);await this.publishActivatedAdapters([a])}async activateAdapterContribution(e,t,n,r,i,a,o){let s=await this.buildLoadedAdapter(e,t,n,r,i,a),c=!1;try{await this.ensureAdapterConfig(s);let t=this.configStore.isAdapterEnabled(s.name);t&&await this.validateEnabledAdapterClientRefs(s,n,a),this.registry.registerAdapter(s,e),c=!0,t&&(this.getMissingProviderDefinitionIds(s,o).length>0?console.info(`[AdapterContributionProcessor] Deferring adapter "${s.name}" initialization until declared providers are active.`):(await this.registry.initializeAdapter(s,this.platformDefaults),console.info(`[AdapterContributionProcessor] Initialized adapter: ${s.name} (${s.packageName})`)))}catch(e){if(c)try{await this.registry.deregisterAdapter(s.name)}catch(e){console.error(`[AdapterContributionProcessor] Rollback error for adapter "${s.name}":`,e)}throw e}return s}async initializeAdaptersWaitingForProviders(e,t,n,r){let i=[];for(let a of this.registry.getLoadedAdapters()){let o;try{if(!this.configStore.isAdapterEnabled(a.name))continue;let s=a;if(this.getMissingProviderDefinitionIds(a,r).length>0){let i=await Ve(a,e,t,n),c=this.registry.updateAdapterProviders(a.name,i);if(!c||this.getMissingProviderDefinitionIds(c,r).length>0)continue;s=c,o=c}if(this.registry.hasAdapterInstance(s)){if(s===a)continue;await this.registry.restartAdapterInstance(s,this.platformDefaults)}else await this.registry.initializeAdapter(s,this.platformDefaults);console.info(`[AdapterContributionProcessor] Initialized adapter: ${s.name} (${s.packageName}) after provider activation`),i.push(s)}catch(e){console.error(`[AdapterContributionProcessor] Deferred initialization failed for adapter "${a.name}".`,e),o&&i.push(o)}}return i}getMissingProviderDefinitionIds(e,t){let n=new Set(e.providers.map(e=>e.definition.id));return e.providerDefinitionIds.filter(e=>!n.has(e)&&t.has(e))}async validateEnabledAdapterClientRefs(e,t,n){if(e.clients===void 0||e.clients.length===0)return;let r=n??(await t.request(x.contributions.catalog,{})).clients;await L(e.name,e.clients,r,t)}async buildLoadedAdapter(e,t,n=i,r=new Map,a,o){let s=t.definition,c=t.manifest,l=s.name,u=o??(await n.request(x.contributions.catalog,{})).clients;await L(l,c.clients,u,n,{checkBinaryVersions:!1});let d=Oe(c.clients,u),f=await q(n,l,await G(n,s.providers,l,{...s.providerConfigSchema!==void 0&&{adapterConfigSchema:s.providerConfigSchema},...d!==void 0&&{clientDefinitions:d},...a!==void 0&&{providerDefinitionCache:a}}),r);return{name:l,displayName:s.displayName??c.displayName,description:s.description,packageName:e,factory:s.createAdapter,options:{adapterId:v(this.machineId,l),...this.prepareAuthRuntime!==void 0&&{prepareAuthRuntime:this.prepareAuthRuntime}},adapterConfigSchema:s.adapterConfigSchema,providerDefinitionIds:s.providers.map(e=>e.definitionId),providerRefs:[...s.providers],providers:f,providerConfigSchema:s.providerConfigSchema,helpLinks:s.helpLinks,instructions:s.instructions,defaultPresetId:s.defaultPresetId,clients:De(c.clients),...d!==void 0&&{clientDefinitions:d},protocol:Ue(l,s.protocol,c.protocols)}}async ensureAdapterConfig(e){this.configStore.getAdapterConfig(e.name)||await this.configStore.setAdapterConfig(e.name,{displayName:e.displayName,description:e.description,helpLinks:e.helpLinks?.map(e=>({...e})),instructions:e.instructions,clientId:I(e.options,e.clients),protocol:e.protocol,providerDefinitionIds:[...e.providerDefinitionIds],enabled:!1})}async onPackageStopped(e){await this.registry.deregisterPackage(e);let t=await this.registry.removeProviderPackage(e,this.platformDefaults);await this.publishActivatedAdapters(t)}publishAdapterRegistered(e){let t=this.configStore.isAdapterEnabled(e.name),n=this.registry.resolveLoadedAdapterId(e);return this.registry.publishAdapterRegistered({adapterName:e.name,displayName:e.displayName,packageName:e.packageName,enabled:t,adapterId:n,providerDefinitionIds:e.providerDefinitionIds})}async publishActivatedAdapters(e){for(let t of e)try{await this.publishAdapterRegistered(t)}catch(e){console.error(`[AdapterContributionProcessor] Failed to publish adapter "${t.name}" registration:`,e)}}};async function Ge(e,t,n){let r=new Map,i=new Map;for(let a of[...t].sort((e,t)=>e.name.localeCompare(t.name)))for(let t of a.providers.filter(({definition:e})=>e.id===n))for(let o of t.auth?.bindings??[]){let s=await qe(e,a,t,o.method,i);re(o,s);let c=Ze(n,o.method),l=Ye(n,o.method,s),u=r.get(c);if(u){if(!Ke(u.option,l))throw Error(`Authentication method ${c} has conflicting definitions across compatible adapters "${[...u.adapterNames].join(`, `)}" and "${a.name}".`);u.adapterNames.add(a.name);continue}r.set(c,{option:l,adapterNames:new Set([a.name])})}return[...r.entries()].sort(([e],[t])=>e.localeCompare(t)).map(([,{option:e,adapterNames:t}])=>Xe(e,[...t].sort((e,t)=>e.localeCompare(t))))}function Ke(t,n){return e(t,n)}async function qe(e,t,n,r,i){if(r.owner===`provider`){if(r.providerDefinitionId!==n.definition.id)throw Error(`Adapter "${t.name}" binds provider method "${r.methodId}" to the wrong definition ("${r.providerDefinitionId}" instead of "${n.definition.id}").`);let e=(n.definition.authMethods??[]).find(({id:e})=>e===r.methodId);if(!e)throw Error(`Adapter "${t.name}" binds undeclared provider auth method "${n.definition.id}/${r.methodId}".`);return e}if(!(t.clients??[]).some(({id:e})=>e===r.clientId))throw Error(`Adapter "${t.name}" binds auth method "${r.clientId}/${r.methodId}" without declaring that client.`);let a=i.get(r.clientId);a||(a=Je(e,r.clientId),i.set(r.clientId,a));let o=(await a).authMethods.find(({id:e})=>e===r.methodId);if(!o)throw Error(`Adapter "${t.name}" binds undeclared client auth method "${r.clientId}/${r.methodId}".`);return o}async function Je(e,t){let{client:n}=await e.request(y.get,{id:t});if(!n)throw Error(`Authentication binding references missing client definition "${t}".`);return n}function Ye(e,t,n){let r={definitionId:e,method:{...t},label:n.label,...n.description?{description:n.description}:{}};switch(n.mode){case`explicit`:return{...r,mode:`explicit`,fields:n.fields.map(e=>({...e,sourceHints:e.sourceHints.map(e=>({...e}))})),portability:`portable`};case`inferred`:if(t.owner!==`client`)throw Error(`Inferred auth method "${n.id}" must be client-owned.`);return{...r,method:{...t},mode:`inferred`,fields:[],portability:`local-only`};case`none`:return{...r,mode:`none`,fields:[],portability:`portable`}}}function Xe(e,t){switch(e.mode){case`explicit`:return{...e,compatibleAdapterNames:t};case`inferred`:return{...e,compatibleAdapterNames:t};case`none`:return{...e,compatibleAdapterNames:t}}}function Ze(e,t){return JSON.stringify(t.owner===`provider`?[e,t.owner,t.providerDefinitionId,t.methodId]:[e,t.owner,t.clientId,t.methodId])}function Qe(e,t,n=-100){let r=e.on(b.get,async n=>{let r=(await J(e,t())).get(n.payload.id)??null;n.setResult({provider:r})},{priority:n}),i=e.on(b.list,async n=>{n.setResult({providers:[...(await J(e,t())).values()]})},{priority:n}),a=e.on(b.listByProtocol,async n=>{let r=[...(await J(e,t())).values()].filter(e=>e.endpoints!==void 0&&n.payload.protocol in e.endpoints);n.setResult({providers:r})},{priority:n});return()=>{r(),i(),a()}}async function J(e,t){let n=new Map,r=new Set;for(let e of t){for(let t of e.providerDefinitionIds)r.add(t);for(let t of e.providers)Y(n,t.providerPackageName,t.definition)}let i=[...r].filter(e=>!n.has(e));if(i.length>0){let t=await e.request(x.contributions.catalog,{});for(let e of t.providers)i.includes(e.definition.id)&&Y(n,e.packageName,e.definition)}return n}function Y(e,t,n){let r=u.parse(n);e.has(r.id)||e.set(r.id,{id:r.id,packageName:t,name:r.name,...r.description===void 0?{}:{description:r.description},...r.endpoints===void 0?{}:{endpoints:r.endpoints},...r.defaultModel===void 0?{}:{defaultModel:r.defaultModel},...r.fastModel===void 0?{}:{fastModel:r.fastModel},availableModels:r.availableModels,defaultModelFilterMode:r.defaultModelFilterMode??`show-all`,authMethods:r.authMethods,...r.capabilities===void 0?{}:{capabilities:r.capabilities},enabled:!0,createdAt:0,updatedAt:0})}function $e(e,t,n=-100){let r=e.on(y.get,async n=>{let r=(await X(e,t())).get(n.payload.id)??null;n.setResult({client:r})},{priority:n}),i=e.on(y.list,async n=>{n.setResult({clients:[...(await X(e,t())).values()]})},{priority:n}),a=e.on(y.listByBinaryName,async n=>{let r=[...(await X(e,t())).values()].filter(e=>e.binary?.name===n.payload.binaryName);n.setResult({clients:r})},{priority:n});return()=>{r(),i(),a()}}async function X(e,t){let n=new Set(t.flatMap(e=>e.clients?.map(({id:e})=>e)??[]));if(n.size===0)return new Map;let r=await e.request(x.contributions.catalog,{}),i=new Map;for(let e of r.clients){if(!n.has(e.definition.id))continue;let t=c.parse(e.definition);i.set(t.id,et(e.packageName,t))}return i}function et(e,t){return{id:t.id,packageName:e,name:t.name,...t.description===void 0?{}:{description:t.description},...t.binary===void 0?{}:{binary:structuredClone(t.binary)},nativeTools:structuredClone(t.nativeTools),defaultApprovalPolicy:t.defaultApprovalPolicy,...t.logSources===void 0?{}:{logSources:structuredClone(t.logSources)},authMethods:structuredClone(t.authMethods),...t.defaultAuth===void 0?{}:{defaultAuth:{...t.defaultAuth}},enabled:!0,createdAt:0,updatedAt:0}}function tt(e,t){let n=e.providerRefs.filter(e=>e.definitionId===t),r=e.providers.filter(e=>e.definition.id===t),i=n[0],a=r[0];return n.length===1&&r.length===1&&i!==void 0&&a!==void 0?{ref:i,provider:a}:null}function nt(e,t){return t===void 0||e.clients?.some(e=>e.id===t)===!0}function rt(e,t){return e?.bindings.some(e=>ot(e.method,t))===!0}function it(e,t,n,r){return e.trim().length>0&&t.trim().length>0&&(n===void 0||(r?.trim().length??0)>0)}async function at(e){if(e.snapshot===null)return{status:`error`,code:`provider-config-not-found`};if(e.adapter===void 0)return{status:`error`,code:`adapter-not-loaded`};if(!e.isBound)return{status:`error`,code:`adapter-not-bound`};let t=e.snapshot.context.definitionId,n=tt(e.adapter,t);if(n===null)return{status:`error`,code:`provider-incompatible`};let{provider:r}=n,i=r.auth,a=e.snapshot.context.auth.method;if(!rt(i,a))return{status:`error`,code:`auth-binding-missing`};let o=a.owner===`client`?a.clientId:I(e.adapter.options,e.adapter.clients);if(!nt(e.adapter,o))return{status:`error`,code:`client-incompatible`};let s=await e.bus.request(x.contributions.catalog,{}),c=o===void 0?[]:s.clients.filter(e=>e.definition.id===o);if(o!==void 0&&c.length!==1)return{status:`error`,code:`client-incompatible`};let l=c[0]?.packageName;if(!it(e.adapter.packageName,r.providerPackageName,o,l))return{status:`error`,code:`runtime-package-metadata-missing`};let u=e.adapter.providers.flatMap(e=>e.definition.id!==t&&e.auth!==void 0?[e.auth]:[]),d=o!==void 0&&l!==void 0?{packageName:l,clientId:o}:void 0;return{status:`resolved`,runtime:{snapshot:e.snapshot,adapterName:e.adapter.name,...o!==void 0&&{adapterClientId:o},...r.protocol!==void 0&&{providerProtocol:r.protocol},adapterProviderAuth:i,compatibleProviderAuths:u,runtimePackages:{adapter:{packageName:e.adapter.packageName},provider:{packageName:r.providerPackageName,definitionId:t},...d!==void 0&&{client:d}}}}}function ot(e,t){return e.owner!==t.owner||e.methodId!==t.methodId?!1:e.owner===`provider`?t.owner===`provider`&&e.providerDefinitionId===t.providerDefinitionId:t.owner===`client`&&e.clientId===t.clientId}var Z=class extends ne{configStore;registry;providerConfigService;bindingService;contributionProcessor;runtimeSnapshotHandlerPriority;runtimeDefinitionHandlerPriority;constructor(e){super(e.bus),this.configStore=new Ee({configRepository:e.configRepository,bus:e.bus}),this.registry=new Fe({bus:e.bus,machineId:e.machineId}),this.providerConfigService=new Le({configStore:this.configStore,bus:e.bus}),this.bindingService=new Re({configStore:this.configStore,bus:e.bus}),this.contributionProcessor=new We({configStore:this.configStore,registry:this.registry,coordinator:e.coordinator,machineId:e.machineId,platformDefaults:e.platformDefaults,...e.prepareAuthRuntime!==void 0&&{prepareAuthRuntime:e.prepareAuthRuntime}}),this.runtimeSnapshotHandlerPriority=e.runtimeSnapshotHandlerPriority??0,this.runtimeDefinitionHandlerPriority=e.runtimeDefinitionHandlerPriority??-100}async onInit(){await this.configStore.loadSnapshot(),this.configStore.registerListeners(e=>this.addCleanup(e)),this.registerBusHandlers(),await this.bus.emit(S.ready,{})}registerBusHandlers(){this.addCleanup(Qe(this.bus,()=>this.registry.getLoadedAdapters(),this.runtimeDefinitionHandlerPriority)),this.addCleanup($e(this.bus,()=>this.registry.getLoadedAdapters(),this.runtimeDefinitionHandlerPriority)),this.registerReadHandlers(),this.registerMutationHandlers()}registerReadHandlers(){this.registerConfigReadHandlers(),this.registerRuntimeReadHandlers()}registerConfigReadHandlers(){this.registerHandler(S.getAdapterConfig,e=>{e.setResult({config:this.configStore.getAdapterConfig(e.payload.name)})}),this.registerHandler(S.listAdapterConfigs,e=>{e.setResult({configs:this.configStore.listAdapterConfigs()})}),this.registerHandler(S.getProviderConfig,e=>{e.setResult({config:this.configStore.getProviderConfig(e.payload.id)})}),this.registerHandler(S.listProviderConfigs,e=>{e.setResult({configs:this.configStore.listProviderConfigs(e.payload.enabled)})}),this.registerHandler(S.listProviderConfigsByDefinition,e=>{e.setResult({configs:this.configStore.listProviderConfigsByDefinition(e.payload.definitionId)})}),this.registerHandler(S.listBindings,e=>{e.setResult({bindings:this.configStore.listBindings(e.payload.adapterName)})}),this.registerHandler(S.listBindingsByConfig,e=>{e.setResult({bindings:this.configStore.listBindingsByConfig(e.payload.providerConfigId)})}),this.registerHandler(S.getDefaultBinding,e=>{e.setResult({binding:this.configStore.getDefaultBinding(e.payload.adapterName)})}),this.registerHandler(S.findConfigForDefinitionAndAdapter,e=>{e.setResult({config:this.configStore.findConfigForDefinitionAndAdapter(e.payload.definitionId,e.payload.adapterName)})})}registerRuntimeReadHandlers(){this.registerHandler(S.resolveProviderRuntimeSnapshot,async e=>{e.setResult({snapshot:await this.configStore.resolveProviderRuntimeSnapshot(e.payload.providerConfigId)})},{priority:this.runtimeSnapshotHandlerPriority}),this.registerHandler(S.resolveAdapterRuntimeSnapshot,async e=>{let t=this.registry.getLoadedAdapters().find(t=>t.name===e.payload.adapterName);try{let n=await this.configStore.resolveBoundProviderRuntimeSnapshot(e.payload.adapterName,e.payload.providerConfigId);e.setResult(await at({bus:this.bus,adapter:t,snapshot:n.snapshot,isBound:n.isBound}))}catch(t){if(t instanceof M&&t.code===`provider-config-disabled`){e.setResult({status:`error`,code:`provider-config-disabled`});return}throw t}},{priority:this.runtimeSnapshotHandlerPriority}),this.registerHandler(S.listAdapters,async e=>{e.setResult({adapters:await this.configStore.buildEffectiveAdapters()})}),this.registerHandler(S.getProviderDefinitionsByAdapter,async e=>{let t=this.registry.getLoadedAdapters().find(t=>t.name===e.payload.adapterName),n=new Map((t?.providers??[]).map(e=>[e.definition.id,e.definition])),r=(t?.providerDefinitionIds??[]).filter(e=>!n.has(e));if(r.length>0){let e=await this.bus.request(x.contributions.catalog,{});for(let t of e.providers)r.includes(t.definition.id)&&n.set(t.definition.id,t.definition)}let i=(t?.providerDefinitionIds??[]).flatMap(e=>{let t=n.get(e);return t===void 0?[]:[u.parse(t)]});e.setResult({definitions:i})}),this.registerHandler(S.listCompatibleAuthOptions,async e=>{e.setResult({options:await Ge(this.bus,this.registry.getLoadedAdapters(),e.payload.definitionId)})}),this.registerHandler(S.ensureReady,e=>{e.setResult({ready:!0})})}registerMutationHandlers(){this.registerHandler(S.createProviderConfig,async e=>{e.setResult(await this.providerConfigService.createProviderConfig(e.payload))}),this.registerHandler(S.updateProviderConfig,async e=>{e.setResult(await this.providerConfigService.updateProviderConfig(e.payload.id,e.payload.patch))}),this.registerHandler(S.setProviderConfigAuth,async e=>{e.setResult(await this.providerConfigService.setProviderConfigAuth(e.payload.id,e.payload.auth))}),this.registerHandler(S.deleteProviderConfig,async e=>{e.setResult(await this.providerConfigService.deleteProviderConfig(e.payload.id))}),this.registerHandler(S.setDefaultProviderConfig,async e=>{e.setResult(await this.providerConfigService.setDefaultProviderConfig(e.payload.id))}),this.registerHandler(S.setModelFilterMode,async e=>{e.setResult(await this.providerConfigService.setModelFilterMode(e.payload.id,e.payload.modelFilterMode,e.payload.preferredModel))}),this.registerHandler(S.setAdapterConfig,async e=>{e.setResult(await this.configStore.setAdapterConfig(e.payload.name,e.payload.patch))}),this.registerHandler(S.setAdapterEnabled,async e=>{await this.configStore.setAdapterEnabled(e.payload.name,e.payload.enabled),e.setResult({success:!0})}),this.registerHandler(S.bind,async e=>{e.setResult({binding:await this.bindingService.bind(e.payload.adapterName,e.payload.providerConfigId)})}),this.registerHandler(S.unbind,async e=>{await this.bindingService.unbind(e.payload.adapterName,e.payload.providerConfigId),e.setResult({})}),this.registerHandler(S.setDefaultBinding,async e=>{await this.bindingService.setDefaultBinding(e.payload.adapterName,e.payload.providerConfigId),e.setResult({})})}async onDestroy(){await this.registry.shutdownAll(),this.configStore.clear()}getLoadedAdapters(){return this.registry.getLoadedAdapters()}getAdapterInstances(){return this.registry.getAdapterInstances()}getSettingsAvailableAdapters(){return this.registry.getSettingsAvailableAdapters()}async processAdapterContributions(e,t,n){await this.contributionProcessor.onPackageActivated(e,t,n)}async stopAdapterContributions(e){await this.contributionProcessor.onPackageStopped(e)}},Q=class extends Error{code;source;constructor(e,t,n){super(`Provider config "${t}" cannot be loaded: ${n}`),this.name=`ProviderConfigDiagnosticError`,this.code=e,this.source=t}};const $=`.json`;var st=class{providerConfigsDir;adaptersDir;constructor(e){this.providerConfigsDir=e.providerConfigsDir,this.adaptersDir=e.adaptersDir}async loadAdapterConfigs(){let e=new Map,t=await this.readJsonFiles(this.adaptersDir,`adapter`);for(let n of t){let t=this.getCanonicalLoadedStem(n.stem,`adapter`,n.filePath);if(!t)continue;let r=h.safeParse(n.jsonData);if(!r.success){this.warnInvalidFile(`adapter`,n.filePath);continue}e.set(t,r.data)}return{configs:e}}async loadProviderConfigs(){let e=new Map,t=await this.readJsonFiles(this.providerConfigsDir,`provider config`,`reject`);for(let n of t){let t=this.getCanonicalLoadedStem(n.stem,`provider config`,n.filePath);t&&e.set(t,this.parseProviderConfig(n.jsonData,t))}return{configs:e}}async writeProviderConfig(e,t){let r=this.assertCanonicalFileStem(e,`provider config id`),i=n.join(this.providerConfigsDir,`${r}${$}`),a=this.parseProviderConfig(t,r);await this.writeJsonFile(i,a)}async deleteProviderConfig(e){let t=this.assertCanonicalFileStem(e,`provider config id`);try{return await this.unlinkFile(n.join(this.providerConfigsDir,`${t}${$}`)),!0}catch(e){if(e.code===`ENOENT`)return!1;throw e}}async writeAdapterFile(e,t){let r=this.assertCanonicalFileStem(e,`adapter name`),i=h.parse(t);await this.writeJsonFile(n.join(this.adaptersDir,`${r}${$}`),i)}async deleteAdapterFile(e){let t=this.assertCanonicalFileStem(e,`adapter name`);try{return await this.unlinkFile(n.join(this.adaptersDir,`${t}${$}`)),!0}catch(e){if(e.code===`ENOENT`)return!1;throw e}}async readJsonFiles(e,r,i=`skip`){try{let a=(await t.readdir(e,{withFileTypes:!0})).filter(e=>e.isFile()&&n.extname(e.name)===$).sort((e,t)=>e.name.localeCompare(t.name));return(await Promise.all(a.map(async a=>{let o=n.join(e,a.name);try{let e=await t.readFile(o,`utf-8`);return{filePath:o,stem:n.parse(a.name).name,jsonData:JSON.parse(e)}}catch(e){if(e instanceof SyntaxError){if(i===`reject`)throw new Q(`invalid-provider-config`,ct(a.name),`file does not contain valid JSON.`);return this.warnInvalidFile(r,o),null}if(e instanceof Error&&e.code===`ENOENT`)return this.warnInvalidFile(r,o),null;throw e}}))).filter(e=>e!==null)}catch(e){if(e.code===`ENOENT`)return[];throw e}}warnInvalidFile(e,t){console.warn(`[FileAdapterConfigRepository] Skipping invalid %s file: %s`,e,t)}parseProviderConfig(e,t){let n=typeof e==`object`&&e?e:void 0,r=n?.$schema,i=[`credentials`,`isSentinel`].filter(e=>Object.hasOwn(n??{},e));if(r===`makaio/provider-config/v1`||i.length>0)throw new Q(`legacy-provider-config`,t,`${[...r===`makaio/provider-config/v1`?[`schema v1`]:[],...i.length>0?[`legacy fields ${i.join(`, `)}`]:[]].join(` and `)} use retired authentication semantics. Recreate this config with an explicit normalized authentication method.`);if(r!==g)throw new Q(`unsupported-provider-config-version`,t,`expected $schema "${g}". Recreate the config with the current schema.`);let a=ae.safeParse(e);if(!a.success)throw new Q(`invalid-provider-config`,t,a.error.issues.map(e=>`${e.path.length>0?e.path.join(`.`):`<root>`}: ${e.message}`).join(`; `));return a.data}getCanonicalLoadedStem(e,t,n){try{return this.assertCanonicalFileStem(e,`${t} file stem`)}catch{return this.warnInvalidFile(t,n),null}}async writeJsonFile(e,i){let a=n.dirname(e),o=n.join(a,`.${n.basename(e)}.${r()}.tmp`);await t.mkdir(a,{recursive:!0});try{await t.writeFile(o,`${JSON.stringify(i,null,2)}\n`,{encoding:`utf-8`,mode:384}),await this.replaceFile(o,e)}catch(e){throw await this.removeFileIfPresent(o),e}}async replaceFile(e,t){try{await this.renameFile(e,t);return}catch(e){let t=e;if(![`EEXIST`,`EPERM`,`EACCES`].includes(t.code??``))throw e}let n=`${t}.${r()}.bak`,i=!1;try{await this.renameFile(t,n),i=!0}catch(e){if(e.code!==`ENOENT`)throw e}try{await this.renameFile(e,t)}catch(e){throw i&&await this.renameFile(n,t).catch(()=>void 0),e}i&&await this.removeFileIfPresent(n)}async renameFile(e,n){await t.rename(e,n)}async unlinkFile(e){await t.unlink(e)}async removeFileIfPresent(e){try{await t.unlink(e)}catch(t){t.code!==`ENOENT`&&console.warn(`[FileAdapterConfigRepository] Failed to remove temp file: %s`,e,t)}}assertCanonicalFileStem(e,t){let r=e.trim(),i=n.basename(r);if(!r||e!==r||r!==i||!/^[a-z0-9._-]+$/.test(r)||r.includes(`/`)||r.includes(`\\`)||r.toLowerCase().endsWith(`.json`)||r===`.`||r===`..`)throw Error(`Invalid canonical ${t}: ${e}`);return r}};function ct(e){return n.basename(e).replace(/[^A-Za-z0-9._-]/g,`_`)||`provider-config.json`}function lt(e){return{filter:e=>!!e.adapters?.length||!!e.providers?.length,async processActivated(t,n,r){let i=e.getAdapterSubsystemService();if(!i)throw Error(`AdapterSubsystemService is not available. Ensure the adapter subsystem package starts before adapter-contributing packages.`);await i.processAdapterContributions(t,n,r)},async processStopped(t){let n=e.getAdapterSubsystemService();n&&await n.stopAdapterContributions(t)}}}const ut=ee(`adapter-subsystem`);function dt(e){return{name:ut.name,displayName:`Adapter Subsystem`,version:`0.1.0`,provides:[`adapters`],critical:!0,create:t=>new Z({bus:t.bus,configRepository:e.configRepository,coordinator:e.coordinator,machineId:t.machineId,platformDefaults:e.platformDefaults,...e.prepareAuthRuntime!==void 0&&{prepareAuthRuntime:e.prepareAuthRuntime},...e.runtimeSnapshotHandlerPriority!==void 0&&{runtimeSnapshotHandlerPriority:e.runtimeSnapshotHandlerPriority},...e.runtimeDefinitionHandlerPriority!==void 0&&{runtimeDefinitionHandlerPriority:e.runtimeDefinitionHandlerPriority}})}}export{Z as AdapterSubsystemService,ut as AdapterSubsystemToken,st as FileAdapterConfigRepository,A as ProviderConfigAuthValidationError,Q as ProviderConfigDiagnosticError,M as ProviderRuntimeContextError,k as assertProviderConfigAuthDefinitionsEnabled,lt as createAdapterSubsystemContributionProcessor,dt as createAdapterSubsystemPackage,Pe as ensureAdapterConfigs,Ae as extractAdapterIdFromPackageName,H as initializeEnabledAdapters,B as shutdownAdapterInstances,R as toAvailableAdapter,j as validateProviderConfigAuth};
@@ -6010,7 +6010,17 @@ interface Agent {
6010
6010
  */
6011
6011
  declare class TerminalManager {
6012
6012
  private readonly terminals;
6013
+ private readonly baseEnv;
6014
+ private readonly scrubEnvVars;
6013
6015
  private nextId;
6016
+ /**
6017
+ * Create a terminal manager bound to one finalized connector environment.
6018
+ * @param options - Sanitized base environment and variables that terminal requests may not restore
6019
+ */
6020
+ constructor(options: {
6021
+ readonly baseEnv: Readonly<Record<string, string>>;
6022
+ readonly scrubEnvVars?: readonly string[];
6023
+ });
6014
6024
  /**
6015
6025
  * Creates a new terminal subprocess.
6016
6026
  * @param params - ACP create terminal request
@@ -1,3 +1,3 @@
1
- import{spawn as e}from"node:child_process";import{Readable as t,Writable as n}from"node:stream";import{z as r}from"zod/v4";const i={authenticate:`authenticate`,document_did_change:`document/didChange`,document_did_close:`document/didClose`,document_did_focus:`document/didFocus`,document_did_open:`document/didOpen`,document_did_save:`document/didSave`,initialize:`initialize`,logout:`logout`,nes_accept:`nes/accept`,nes_close:`nes/close`,nes_reject:`nes/reject`,nes_start:`nes/start`,nes_suggest:`nes/suggest`,providers_disable:`providers/disable`,providers_list:`providers/list`,providers_set:`providers/set`,session_cancel:`session/cancel`,session_close:`session/close`,session_fork:`session/fork`,session_list:`session/list`,session_load:`session/load`,session_new:`session/new`,session_prompt:`session/prompt`,session_resume:`session/resume`,session_set_config_option:`session/set_config_option`,session_set_mode:`session/set_mode`,session_set_model:`session/set_model`},a={elicitation_complete:`elicitation/complete`,elicitation_create:`elicitation/create`,fs_read_text_file:`fs/read_text_file`,fs_write_text_file:`fs/write_text_file`,session_request_permission:`session/request_permission`,session_update:`session/update`,terminal_create:`terminal/create`,terminal_kill:`terminal/kill`,terminal_output:`terminal/output`,terminal_release:`terminal/release`,terminal_wait_for_exit:`terminal/wait_for_exit`},o=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),terminal:r.boolean().optional().default(!1)}),s=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),label:r.string().nullish(),name:r.string(),optional:r.boolean().optional().default(!1),secret:r.boolean().optional().default(!0)}),ee=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),description:r.string().nullish(),id:r.string(),name:r.string()}),te=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),description:r.string().nullish(),id:r.string(),link:r.string().nullish(),name:r.string(),vars:r.array(s)}),ne=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),args:r.array(r.string()).optional(),description:r.string().nullish(),env:r.record(r.string(),r.string()).optional(),id:r.string(),name:r.string()}),re=r.union([te.and(r.object({type:r.literal(`env_var`)})),ne.and(r.object({type:r.literal(`terminal`)})),ee]),ie=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),methodId:r.string()}),ae=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),oe=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),blob:r.string(),mimeType:r.string().nullish(),uri:r.string()}),se=r.object({default:r.boolean().nullish(),description:r.string().nullish(),title:r.string().nullish()}),ce=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),le=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),ue=r.object({amount:r.number(),currency:r.string()}),de=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),terminalId:r.string()}),fe=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),newText:r.string(),oldText:r.string().nullish(),path:r.string()}),pe=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),id:r.string()}),me=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),he=r.union([r.string(),r.number(),r.number(),r.boolean(),r.array(r.string())]),ge=r.object({content:r.record(r.string(),he).nullish()}),_e=r.intersection(r.union([ge.and(r.object({action:r.literal(`accept`)})),r.object({action:r.literal(`decline`)}),r.object({action:r.literal(`cancel`)})]),r.object({_meta:r.record(r.string(),r.unknown()).nullish()})),ve=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),c=r.string(),l=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),elicitationId:c}),ye=r.literal(`object`),be=r.literal(`string`),xe=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),Se=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),form:ve.nullish(),url:xe.nullish()}),u=r.object({const:r.string(),title:r.string()}),Ce=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),name:r.string(),value:r.string()}),we=r.union([r.literal(-32700),r.literal(-32600),r.literal(-32601),r.literal(-32602),r.literal(-32603),r.literal(-32800),r.literal(-32e3),r.literal(-32002),r.literal(-32042),r.number().int().min(-2147483648,{message:`Invalid value: Expected int32 to be >= -2147483648`}).max(2147483647,{message:`Invalid value: Expected int32 to be <= 2147483647`})]),d=r.object({code:we,data:r.unknown().optional(),message:r.string()}),Te=r.unknown(),f=r.unknown(),p=r.unknown(),Ee=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),readTextFile:r.boolean().optional().default(!1),writeTextFile:r.boolean().optional().default(!1)}),m=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),name:r.string(),value:r.string()}),h=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),name:r.string(),title:r.string().nullish(),version:r.string()}),De=r.object({default:r.number().nullish(),description:r.string().nullish(),maximum:r.number().nullish(),minimum:r.number().nullish(),title:r.string().nullish()}),Oe=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),ke=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),Ae=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),additionalDirectories:r.array(r.string()).optional(),cursor:r.string().nullish(),cwd:r.string().nullish()}),g=r.union([r.literal(`anthropic`),r.literal(`openai`),r.literal(`azure`),r.literal(`vertex`),r.literal(`bedrock`),r.string()]),je=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),Me=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),logout:je.nullish()}),Ne=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),Pe=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),Fe=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),http:r.boolean().optional().default(!1),sse:r.boolean().optional().default(!1)}),Ie=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),headers:r.array(m),name:r.string(),url:r.string()}),Le=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),headers:r.array(m),name:r.string(),url:r.string()}),Re=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),args:r.array(r.string()),command:r.string(),env:r.array(Ce),name:r.string()}),_=r.union([Ie.and(r.object({type:r.literal(`http`)})),Le.and(r.object({type:r.literal(`sse`)})),Re]),v=r.string(),ze=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),description:r.string().nullish(),modelId:v,name:r.string()}),Be=r.union([r.literal(`error`),r.literal(`warning`),r.literal(`information`),r.literal(`hint`)]),Ve=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),He=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),Ue=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),We=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),Ge=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),Ke=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),maxCount:r.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`}).nullish()}),qe=r.object({diff:r.string(),uri:r.string()}),Je=r.object({endLine:r.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`}),startLine:r.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`}),text:r.string()}),Ye=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),Xe=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),Ze=r.object({languageId:r.string(),text:r.string(),uri:r.string()}),Qe=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),maxCount:r.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`}).nullish()}),$e=r.union([r.literal(`rejected`),r.literal(`ignored`),r.literal(`replaced`),r.literal(`cancelled`)]),et=r.object({excerpts:r.array(Je),uri:r.string()}),tt=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),nt=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),rt=r.object({name:r.string(),owner:r.string(),remoteUrl:r.string()}),it=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),at=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),jump:Ye.nullish(),rename:nt.nullish(),searchAndReplace:it.nullish()}),ot=r.object({id:r.string(),isRegex:r.boolean().nullish(),replace:r.string(),search:r.string(),uri:r.string()}),st=r.union([r.literal(`automatic`),r.literal(`diagnostic`),r.literal(`manual`)]),ct=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),maxCount:r.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`}).nullish()}),lt=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),diagnostics:Ve.nullish(),editHistory:Ke.nullish(),openFiles:Xe.nullish(),recentFiles:Qe.nullish(),relatedSnippets:tt.nullish(),userActions:ct.nullish()}),ut=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),additionalDirectories:r.array(r.string()).optional(),cwd:r.string(),mcpServers:r.array(_)}),dt=r.object({default:r.number().nullish(),description:r.string().nullish(),maximum:r.number().nullish(),minimum:r.number().nullish(),title:r.string().nullish()}),y=r.string(),ft=r.union([r.literal(`allow_once`),r.literal(`allow_always`),r.literal(`reject_once`),r.literal(`reject_always`)]),pt=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),kind:ft,name:r.string(),optionId:y}),mt=r.union([r.literal(`high`),r.literal(`medium`),r.literal(`low`)]),ht=r.union([r.literal(`pending`),r.literal(`in_progress`),r.literal(`completed`)]),gt=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),content:r.string(),priority:mt,status:ht}),_t=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),entries:r.array(gt)}),b=r.object({character:r.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`}),line:r.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`})}),vt=r.object({id:r.string(),position:b,uri:r.string()}),yt=r.object({id:r.string(),newName:r.string(),position:b,uri:r.string()}),bt=r.object({action:r.string(),position:b,timestampMs:r.number(),uri:r.string()}),x=r.union([r.literal(`utf-16`),r.literal(`utf-32`),r.literal(`utf-8`)]),xt=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),auth:o.optional().default({terminal:!1}),elicitation:Se.nullish(),fs:Ee.optional().default({readTextFile:!1,writeTextFile:!1}),nes:at.nullish(),positionEncodings:r.array(x).optional(),terminal:r.boolean().optional().default(!1)}),St=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),audio:r.boolean().optional().default(!1),embeddedContext:r.boolean().optional().default(!1),image:r.boolean().optional().default(!1)}),S=r.number().int().gte(0).lte(65535),Ct=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),clientCapabilities:xt.optional().default({auth:{terminal:!1},fs:{readTextFile:!1,writeTextFile:!1},terminal:!1}),clientInfo:h.nullish(),protocolVersion:S}),wt=r.object({apiType:g,baseUrl:r.string()}),Tt=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),current:wt.nullish(),id:r.string(),required:r.boolean(),supported:r.array(g)}),Et=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),providers:r.array(Tt)}),Dt=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),C=r.object({end:b,start:b}),Ot=r.object({message:r.string(),range:C,severity:Be,uri:r.string()}),kt=r.object({languageId:r.string(),lastFocusedMs:r.number().nullish(),uri:r.string(),visibleRange:C.nullish()}),At=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),diagnostics:r.array(Ot).nullish(),editHistory:r.array(qe).nullish(),openFiles:r.array(kt).nullish(),recentFiles:r.array(Ze).nullish(),relatedSnippets:r.array(et).nullish(),userActions:r.array(bt).nullish()}),jt=r.object({newText:r.string(),range:C}),Mt=r.object({cursorPosition:b.nullish(),edits:r.array(jt),id:r.string(),uri:r.string()}),Nt=r.union([Mt.and(r.object({kind:r.literal(`edit`)})),vt.and(r.object({kind:r.literal(`jump`)})),yt.and(r.object({kind:r.literal(`rename`)})),ot.and(r.object({kind:r.literal(`searchAndReplace`)}))]),Pt=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),content:r.string()}),Ft=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),w=r.union([r.number(),r.string()]).nullable();r.object({_meta:r.record(r.string(),r.unknown()).nullish(),requestId:w});const T=r.object({requestId:w}),It=r.enum([`assistant`,`user`]),E=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),audience:r.array(It).nullish(),lastModified:r.string().nullish(),priority:r.number().nullish()}),Lt=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),annotations:E.nullish(),data:r.string(),mimeType:r.string()}),Rt=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),annotations:E.nullish(),data:r.string(),mimeType:r.string(),uri:r.string().nullish()}),zt=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),annotations:E.nullish(),description:r.string().nullish(),mimeType:r.string().nullish(),name:r.string(),size:r.number().nullish(),title:r.string().nullish(),uri:r.string()}),Bt=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),optionId:y}),Vt=r.union([r.object({outcome:r.literal(`cancelled`)}),Bt.and(r.object({outcome:r.literal(`selected`)}))]),Ht=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),outcome:Vt}),Ut=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),Wt=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),Gt=r.object({currentValue:r.boolean()}),Kt=r.string(),D=r.string(),qt=r.union([r.literal(`mode`),r.literal(`model`),r.literal(`thought_level`),r.string()]),O=r.string(),k=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),description:r.string().nullish(),name:r.string(),value:O}),Jt=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),group:Kt,name:r.string(),options:r.array(k)}),Yt=r.union([r.array(k),r.array(Jt)]),Xt=r.object({currentValue:O,options:Yt}),A=r.intersection(r.union([Xt.and(r.object({type:r.literal(`select`)})),Gt.and(r.object({type:r.literal(`boolean`)}))]),r.object({_meta:r.record(r.string(),r.unknown()).nullish(),category:qt.nullish(),description:r.string().nullish(),id:D,name:r.string()})),Zt=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),configOptions:r.array(A)}),Qt=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),j=r.string(),$t=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),id:r.string(),sessionId:j}),en=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),sessionId:j}),tn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),sessionId:j}),nn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),sessionId:j}),M=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),args:r.array(r.string()).optional(),command:r.string(),cwd:r.string().nullish(),env:r.array(Ce).optional(),outputByteLimit:r.number().nullish(),sessionId:j}),rn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),sessionId:j,uri:r.string()}),an=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),position:b,sessionId:j,uri:r.string(),version:r.number(),visibleRange:C}),on=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),languageId:r.string(),sessionId:j,text:r.string(),uri:r.string(),version:r.number()}),sn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),sessionId:j,uri:r.string()}),cn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),additionalDirectories:r.array(r.string()).optional(),cwd:r.string(),mcpServers:r.array(_).optional(),sessionId:j}),N=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),sessionId:j,terminalId:r.string()}),ln=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),additionalDirectories:r.array(r.string()).optional(),cwd:r.string(),mcpServers:r.array(_),sessionId:j}),P=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),limit:r.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`}).nullish(),line:r.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`}).nullish(),path:r.string(),sessionId:j}),un=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),id:r.string(),reason:$e.nullish(),sessionId:j}),F=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),sessionId:j,terminalId:r.string()}),dn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),additionalDirectories:r.array(r.string()).optional(),cwd:r.string(),mcpServers:r.array(_).optional(),sessionId:j}),fn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),additionalDirectories:r.array(r.string()).optional(),cwd:r.string(),sessionId:j,title:r.string().nullish(),updatedAt:r.string().nullish()}),pn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),nextCursor:r.string().nullish(),sessions:r.array(fn)}),mn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),title:r.string().nullish(),updatedAt:r.string().nullish()}),hn=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),I=r.string(),gn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),currentModeId:I}),_n=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),description:r.string().nullish(),id:I,name:r.string()}),L=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),availableModes:r.array(_n),currentModeId:I}),R=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),availableModels:r.array(ze),currentModelId:v}),vn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),configOptions:r.array(A).nullish(),models:R.nullish(),modes:L.nullish(),sessionId:j}),yn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),configOptions:r.array(A).nullish(),models:R.nullish(),modes:L.nullish()}),bn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),configOptions:r.array(A).nullish(),models:R.nullish(),modes:L.nullish(),sessionId:j}),xn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),configOptions:r.array(A).nullish(),models:R.nullish(),modes:L.nullish()}),Sn=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),Cn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),additionalDirectories:Ut.nullish(),close:Wt.nullish(),fork:Qt.nullish(),list:hn.nullish(),resume:Sn.nullish()}),wn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),apiType:g,baseUrl:r.string(),headers:r.record(r.string(),r.string()).optional(),id:r.string()}),Tn=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),En=r.intersection(r.union([r.object({type:r.literal(`boolean`),value:r.boolean()}),r.object({value:O})]),r.object({_meta:r.record(r.string(),r.unknown()).nullish(),configId:D,sessionId:j})),Dn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),configOptions:r.array(A)}),On=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),modeId:I,sessionId:j}),kn=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),An=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),modelId:v,sessionId:j}),jn=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),Mn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),sessionId:j}),Nn=r.union([r.literal(`end_turn`),r.literal(`max_tokens`),r.literal(`max_turn_requests`),r.literal(`refusal`),r.literal(`cancelled`)]),Pn=r.union([r.literal(`email`),r.literal(`uri`),r.literal(`date`),r.literal(`date-time`)]),Fn=r.object({default:r.string().nullish(),description:r.string().nullish(),enum:r.array(r.string()).nullish(),format:Pn.nullish(),maxLength:r.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`}).nullish(),minLength:r.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`}).nullish(),oneOf:r.array(u).nullish(),pattern:r.string().nullish(),title:r.string().nullish()}),In=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),context:At.nullish(),position:b,selection:C.nullish(),sessionId:j,triggerKind:st,uri:r.string(),version:r.number()}),Ln=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),suggestions:r.array(Nt)}),Rn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),terminalId:r.string()}),zn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),exitCode:r.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`}).nullish(),signal:r.string().nullish()}),z=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),sessionId:j,terminalId:r.string()}),Bn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),exitStatus:zn.nullish(),output:r.string(),truncated:r.boolean()}),Vn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),annotations:E.nullish(),text:r.string()}),Hn=r.object({range:C.nullish(),text:r.string()}),Un=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),contentChanges:r.array(Hn),sessionId:j,uri:r.string(),version:r.number()});r.object({method:r.string(),params:r.union([en,on,Un,rn,sn,an,$t,un,Te]).nullish()});const Wn=r.union([r.literal(`full`),r.literal(`incremental`)]),Gn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),syncKind:Wn}),Kn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),didChange:Gn.nullish(),didClose:He.nullish(),didFocus:Ue.nullish(),didOpen:We.nullish(),didSave:Ge.nullish()}),qn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),document:Kn.nullish()}),Jn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),context:lt.nullish(),events:qn.nullish()}),Yn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),auth:Me.optional().default({}),loadSession:r.boolean().optional().default(!1),mcpCapabilities:Fe.optional().default({http:!1,sse:!1}),nes:Jn.nullish(),positionEncoding:x.nullish(),promptCapabilities:St.optional().default({audio:!1,embeddedContext:!1,image:!1}),providers:Dt.nullish(),sessionCapabilities:Cn.optional().default({})}),Xn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),agentCapabilities:Yn.optional().default({auth:{},loadSession:!1,mcpCapabilities:{http:!1,sse:!1},promptCapabilities:{audio:!1,embeddedContext:!1,image:!1},sessionCapabilities:{}}),agentInfo:h.nullish(),authMethods:r.array(re).optional().default([]),protocolVersion:S}),Zn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),mimeType:r.string().nullish(),text:r.string(),uri:r.string()}),Qn=r.union([Zn,oe]),$n=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),annotations:E.nullish(),resource:Qn}),B=r.union([Vn.and(r.object({type:r.literal(`text`)})),Rt.and(r.object({type:r.literal(`image`)})),Lt.and(r.object({type:r.literal(`audio`)})),zt.and(r.object({type:r.literal(`resource_link`)})),$n.and(r.object({type:r.literal(`resource`)}))]),er=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),content:B}),V=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),content:B,messageId:r.string().nullish()}),tr=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),messageId:r.string().nullish(),prompt:r.array(B),sessionId:j}),nr=r.object({anyOf:r.array(u)}),H=r.union([er.and(r.object({type:r.literal(`content`)})),fe.and(r.object({type:r.literal(`diff`)})),Rn.and(r.object({type:r.literal(`terminal`)}))]),U=r.string(),W=r.object({sessionId:j,toolCallId:U.nullish()}),rr=r.intersection(r.union([W,T]),r.object({elicitationId:c,url:r.string().url()})),G=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),line:r.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`}).nullish(),path:r.string()}),K=r.union([r.literal(`pending`),r.literal(`in_progress`),r.literal(`completed`),r.literal(`failed`)]),q=r.union([r.literal(`read`),r.literal(`edit`),r.literal(`delete`),r.literal(`move`),r.literal(`search`),r.literal(`execute`),r.literal(`think`),r.literal(`fetch`),r.literal(`switch_mode`),r.literal(`other`)]),ir=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),content:r.array(H).optional(),kind:q.optional(),locations:r.array(G).optional(),rawInput:r.unknown().optional(),rawOutput:r.unknown().optional(),status:K.optional(),title:r.string(),toolCallId:U}),J=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),content:r.array(H).nullish(),kind:q.nullish(),locations:r.array(G).nullish(),rawInput:r.unknown().optional(),rawOutput:r.unknown().optional(),status:K.nullish(),title:r.string().nullish(),toolCallId:U}),Y=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),options:r.array(pt),sessionId:j,toolCall:J}),ar=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),hint:r.string()}),or=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),description:r.string(),input:ar.nullish(),name:r.string()}),sr=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),availableCommands:r.array(or)}),cr=r.object({enum:r.array(r.string()),type:be}),lr=r.union([cr,nr]),ur=r.object({default:r.array(r.string()).nullish(),description:r.string().nullish(),items:lr,maxItems:r.number().nullish(),minItems:r.number().nullish(),title:r.string().nullish()}),dr=r.union([Fn.and(r.object({type:r.literal(`string`)})),dt.and(r.object({type:r.literal(`number`)})),De.and(r.object({type:r.literal(`integer`)})),se.and(r.object({type:r.literal(`boolean`)})),ur.and(r.object({type:r.literal(`array`)}))]),fr=r.object({description:r.string().nullish(),properties:r.record(r.string(),dr).optional().default({}),required:r.array(r.string()).nullish(),title:r.string().nullish(),type:ye.optional().default(`object`)}),pr=r.intersection(r.union([W,T]),r.object({requestedSchema:fr})),X=r.intersection(r.union([pr.and(r.object({mode:r.literal(`form`)})),rr.and(r.object({mode:r.literal(`url`)}))]),r.object({_meta:r.record(r.string(),r.unknown()).nullish(),message:r.string()})),mr=r.object({cachedReadTokens:r.number().nullish(),cachedWriteTokens:r.number().nullish(),inputTokens:r.number(),outputTokens:r.number(),thoughtTokens:r.number().nullish(),totalTokens:r.number()}),hr=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),stopReason:Nn,usage:mr.nullish(),userMessageId:r.string().nullish()});r.union([r.object({id:w,result:r.union([Xn,ae,Et,Tn,me,Pe,bn,yn,pn,vn,xn,le,kn,Dn,hr,jn,Mn,Ln,ce,p])}),r.object({error:d,id:w})]);const gr=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),cost:ue.nullish(),size:r.number(),used:r.number()}),_r=r.union([V.and(r.object({sessionUpdate:r.literal(`user_message_chunk`)})),V.and(r.object({sessionUpdate:r.literal(`agent_message_chunk`)})),V.and(r.object({sessionUpdate:r.literal(`agent_thought_chunk`)})),ir.and(r.object({sessionUpdate:r.literal(`tool_call`)})),J.and(r.object({sessionUpdate:r.literal(`tool_call_update`)})),_t.and(r.object({sessionUpdate:r.literal(`plan`)})),sr.and(r.object({sessionUpdate:r.literal(`available_commands_update`)})),gn.and(r.object({sessionUpdate:r.literal(`current_mode_update`)})),Zt.and(r.object({sessionUpdate:r.literal(`config_option_update`)})),mn.and(r.object({sessionUpdate:r.literal(`session_info_update`)})),gr.and(r.object({sessionUpdate:r.literal(`usage_update`)}))]),Z=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),sessionId:j,update:_r});r.object({method:r.string(),params:r.union([Z,l,Te]).nullish()});const Q=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),sessionId:j,terminalId:r.string()}),vr=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),exitCode:r.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`}).nullish(),signal:r.string().nullish()}),yr=r.object({name:r.string(),uri:r.string()}),br=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),repository:rt.nullish(),workspaceFolders:r.array(yr).nullish(),workspaceUri:r.string().nullish()});r.object({id:w,method:r.string(),params:r.union([Ct,ie,ke,wn,pe,Ne,ut,ln,Ae,cn,dn,nn,On,En,tr,An,br,In,tn,f]).nullish()});const xr=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),content:r.string(),path:r.string(),sessionId:j});r.object({id:w,method:r.string(),params:r.union([xr,P,Y,M,z,F,Q,N,X,f]).nullish()});const Sr=r.object({_meta:r.record(r.string(),r.unknown()).nullish()});r.union([r.object({id:w,result:r.union([Sr,Pt,Ht,de,Bn,Ft,vr,Oe,_e,p])}),r.object({error:d,id:w})]);function Cr(e,t){let n=new TextEncoder,r=new TextDecoder;return{readable:new ReadableStream({async start(e){let n=``,i=t.getReader();try{for(;;){let{value:t,done:a}=await i.read();if(a){n+=r.decode();break}if(!t)continue;n+=r.decode(t,{stream:!0});let o=n.split(`
1
+ import{spawn as e}from"node:child_process";import{Readable as t,Writable as n}from"node:stream";import{z as r}from"zod/v4";const i={authenticate:`authenticate`,document_did_change:`document/didChange`,document_did_close:`document/didClose`,document_did_focus:`document/didFocus`,document_did_open:`document/didOpen`,document_did_save:`document/didSave`,initialize:`initialize`,logout:`logout`,nes_accept:`nes/accept`,nes_close:`nes/close`,nes_reject:`nes/reject`,nes_start:`nes/start`,nes_suggest:`nes/suggest`,providers_disable:`providers/disable`,providers_list:`providers/list`,providers_set:`providers/set`,session_cancel:`session/cancel`,session_close:`session/close`,session_fork:`session/fork`,session_list:`session/list`,session_load:`session/load`,session_new:`session/new`,session_prompt:`session/prompt`,session_resume:`session/resume`,session_set_config_option:`session/set_config_option`,session_set_mode:`session/set_mode`,session_set_model:`session/set_model`},a={elicitation_complete:`elicitation/complete`,elicitation_create:`elicitation/create`,fs_read_text_file:`fs/read_text_file`,fs_write_text_file:`fs/write_text_file`,session_request_permission:`session/request_permission`,session_update:`session/update`,terminal_create:`terminal/create`,terminal_kill:`terminal/kill`,terminal_output:`terminal/output`,terminal_release:`terminal/release`,terminal_wait_for_exit:`terminal/wait_for_exit`},o=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),terminal:r.boolean().optional().default(!1)}),s=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),label:r.string().nullish(),name:r.string(),optional:r.boolean().optional().default(!1),secret:r.boolean().optional().default(!0)}),c=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),description:r.string().nullish(),id:r.string(),name:r.string()}),ee=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),description:r.string().nullish(),id:r.string(),link:r.string().nullish(),name:r.string(),vars:r.array(s)}),te=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),args:r.array(r.string()).optional(),description:r.string().nullish(),env:r.record(r.string(),r.string()).optional(),id:r.string(),name:r.string()}),ne=r.union([ee.and(r.object({type:r.literal(`env_var`)})),te.and(r.object({type:r.literal(`terminal`)})),c]),re=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),methodId:r.string()}),ie=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),ae=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),blob:r.string(),mimeType:r.string().nullish(),uri:r.string()}),oe=r.object({default:r.boolean().nullish(),description:r.string().nullish(),title:r.string().nullish()}),se=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),ce=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),le=r.object({amount:r.number(),currency:r.string()}),ue=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),terminalId:r.string()}),de=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),newText:r.string(),oldText:r.string().nullish(),path:r.string()}),fe=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),id:r.string()}),pe=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),me=r.union([r.string(),r.number(),r.number(),r.boolean(),r.array(r.string())]),he=r.object({content:r.record(r.string(),me).nullish()}),ge=r.intersection(r.union([he.and(r.object({action:r.literal(`accept`)})),r.object({action:r.literal(`decline`)}),r.object({action:r.literal(`cancel`)})]),r.object({_meta:r.record(r.string(),r.unknown()).nullish()})),_e=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),ve=r.string(),l=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),elicitationId:ve}),ye=r.literal(`object`),be=r.literal(`string`),xe=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),Se=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),form:_e.nullish(),url:xe.nullish()}),u=r.object({const:r.string(),title:r.string()}),d=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),name:r.string(),value:r.string()}),Ce=r.union([r.literal(-32700),r.literal(-32600),r.literal(-32601),r.literal(-32602),r.literal(-32603),r.literal(-32800),r.literal(-32e3),r.literal(-32002),r.literal(-32042),r.number().int().min(-2147483648,{message:`Invalid value: Expected int32 to be >= -2147483648`}).max(2147483647,{message:`Invalid value: Expected int32 to be <= 2147483647`})]),f=r.object({code:Ce,data:r.unknown().optional(),message:r.string()}),p=r.unknown(),we=r.unknown(),m=r.unknown(),Te=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),readTextFile:r.boolean().optional().default(!1),writeTextFile:r.boolean().optional().default(!1)}),h=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),name:r.string(),value:r.string()}),g=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),name:r.string(),title:r.string().nullish(),version:r.string()}),Ee=r.object({default:r.number().nullish(),description:r.string().nullish(),maximum:r.number().nullish(),minimum:r.number().nullish(),title:r.string().nullish()}),De=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),Oe=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),ke=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),additionalDirectories:r.array(r.string()).optional(),cursor:r.string().nullish(),cwd:r.string().nullish()}),_=r.union([r.literal(`anthropic`),r.literal(`openai`),r.literal(`azure`),r.literal(`vertex`),r.literal(`bedrock`),r.string()]),Ae=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),je=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),logout:Ae.nullish()}),Me=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),Ne=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),Pe=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),http:r.boolean().optional().default(!1),sse:r.boolean().optional().default(!1)}),Fe=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),headers:r.array(h),name:r.string(),url:r.string()}),Ie=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),headers:r.array(h),name:r.string(),url:r.string()}),Le=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),args:r.array(r.string()),command:r.string(),env:r.array(d),name:r.string()}),v=r.union([Fe.and(r.object({type:r.literal(`http`)})),Ie.and(r.object({type:r.literal(`sse`)})),Le]),y=r.string(),Re=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),description:r.string().nullish(),modelId:y,name:r.string()}),ze=r.union([r.literal(`error`),r.literal(`warning`),r.literal(`information`),r.literal(`hint`)]),Be=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),Ve=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),He=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),Ue=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),We=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),Ge=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),maxCount:r.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`}).nullish()}),Ke=r.object({diff:r.string(),uri:r.string()}),qe=r.object({endLine:r.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`}),startLine:r.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`}),text:r.string()}),Je=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),Ye=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),Xe=r.object({languageId:r.string(),text:r.string(),uri:r.string()}),Ze=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),maxCount:r.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`}).nullish()}),Qe=r.union([r.literal(`rejected`),r.literal(`ignored`),r.literal(`replaced`),r.literal(`cancelled`)]),$e=r.object({excerpts:r.array(qe),uri:r.string()}),et=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),tt=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),nt=r.object({name:r.string(),owner:r.string(),remoteUrl:r.string()}),rt=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),it=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),jump:Je.nullish(),rename:tt.nullish(),searchAndReplace:rt.nullish()}),at=r.object({id:r.string(),isRegex:r.boolean().nullish(),replace:r.string(),search:r.string(),uri:r.string()}),ot=r.union([r.literal(`automatic`),r.literal(`diagnostic`),r.literal(`manual`)]),st=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),maxCount:r.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`}).nullish()}),ct=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),diagnostics:Be.nullish(),editHistory:Ge.nullish(),openFiles:Ye.nullish(),recentFiles:Ze.nullish(),relatedSnippets:et.nullish(),userActions:st.nullish()}),lt=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),additionalDirectories:r.array(r.string()).optional(),cwd:r.string(),mcpServers:r.array(v)}),ut=r.object({default:r.number().nullish(),description:r.string().nullish(),maximum:r.number().nullish(),minimum:r.number().nullish(),title:r.string().nullish()}),b=r.string(),dt=r.union([r.literal(`allow_once`),r.literal(`allow_always`),r.literal(`reject_once`),r.literal(`reject_always`)]),ft=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),kind:dt,name:r.string(),optionId:b}),pt=r.union([r.literal(`high`),r.literal(`medium`),r.literal(`low`)]),mt=r.union([r.literal(`pending`),r.literal(`in_progress`),r.literal(`completed`)]),ht=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),content:r.string(),priority:pt,status:mt}),gt=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),entries:r.array(ht)}),x=r.object({character:r.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`}),line:r.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`})}),_t=r.object({id:r.string(),position:x,uri:r.string()}),vt=r.object({id:r.string(),newName:r.string(),position:x,uri:r.string()}),yt=r.object({action:r.string(),position:x,timestampMs:r.number(),uri:r.string()}),S=r.union([r.literal(`utf-16`),r.literal(`utf-32`),r.literal(`utf-8`)]),bt=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),auth:o.optional().default({terminal:!1}),elicitation:Se.nullish(),fs:Te.optional().default({readTextFile:!1,writeTextFile:!1}),nes:it.nullish(),positionEncodings:r.array(S).optional(),terminal:r.boolean().optional().default(!1)}),xt=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),audio:r.boolean().optional().default(!1),embeddedContext:r.boolean().optional().default(!1),image:r.boolean().optional().default(!1)}),C=r.number().int().gte(0).lte(65535),St=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),clientCapabilities:bt.optional().default({auth:{terminal:!1},fs:{readTextFile:!1,writeTextFile:!1},terminal:!1}),clientInfo:g.nullish(),protocolVersion:C}),Ct=r.object({apiType:_,baseUrl:r.string()}),wt=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),current:Ct.nullish(),id:r.string(),required:r.boolean(),supported:r.array(_)}),Tt=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),providers:r.array(wt)}),Et=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),w=r.object({end:x,start:x}),Dt=r.object({message:r.string(),range:w,severity:ze,uri:r.string()}),Ot=r.object({languageId:r.string(),lastFocusedMs:r.number().nullish(),uri:r.string(),visibleRange:w.nullish()}),kt=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),diagnostics:r.array(Dt).nullish(),editHistory:r.array(Ke).nullish(),openFiles:r.array(Ot).nullish(),recentFiles:r.array(Xe).nullish(),relatedSnippets:r.array($e).nullish(),userActions:r.array(yt).nullish()}),At=r.object({newText:r.string(),range:w}),jt=r.object({cursorPosition:x.nullish(),edits:r.array(At),id:r.string(),uri:r.string()}),Mt=r.union([jt.and(r.object({kind:r.literal(`edit`)})),_t.and(r.object({kind:r.literal(`jump`)})),vt.and(r.object({kind:r.literal(`rename`)})),at.and(r.object({kind:r.literal(`searchAndReplace`)}))]),Nt=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),content:r.string()}),Pt=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),T=r.union([r.number(),r.string()]).nullable();r.object({_meta:r.record(r.string(),r.unknown()).nullish(),requestId:T});const E=r.object({requestId:T}),Ft=r.enum([`assistant`,`user`]),D=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),audience:r.array(Ft).nullish(),lastModified:r.string().nullish(),priority:r.number().nullish()}),It=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),annotations:D.nullish(),data:r.string(),mimeType:r.string()}),Lt=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),annotations:D.nullish(),data:r.string(),mimeType:r.string(),uri:r.string().nullish()}),Rt=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),annotations:D.nullish(),description:r.string().nullish(),mimeType:r.string().nullish(),name:r.string(),size:r.number().nullish(),title:r.string().nullish(),uri:r.string()}),zt=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),optionId:b}),Bt=r.union([r.object({outcome:r.literal(`cancelled`)}),zt.and(r.object({outcome:r.literal(`selected`)}))]),Vt=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),outcome:Bt}),Ht=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),Ut=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),Wt=r.object({currentValue:r.boolean()}),Gt=r.string(),O=r.string(),Kt=r.union([r.literal(`mode`),r.literal(`model`),r.literal(`thought_level`),r.string()]),k=r.string(),A=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),description:r.string().nullish(),name:r.string(),value:k}),qt=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),group:Gt,name:r.string(),options:r.array(A)}),Jt=r.union([r.array(A),r.array(qt)]),Yt=r.object({currentValue:k,options:Jt}),j=r.intersection(r.union([Yt.and(r.object({type:r.literal(`select`)})),Wt.and(r.object({type:r.literal(`boolean`)}))]),r.object({_meta:r.record(r.string(),r.unknown()).nullish(),category:Kt.nullish(),description:r.string().nullish(),id:O,name:r.string()})),Xt=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),configOptions:r.array(j)}),Zt=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),M=r.string(),Qt=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),id:r.string(),sessionId:M}),$t=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),sessionId:M}),en=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),sessionId:M}),tn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),sessionId:M}),N=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),args:r.array(r.string()).optional(),command:r.string(),cwd:r.string().nullish(),env:r.array(d).optional(),outputByteLimit:r.number().nullish(),sessionId:M}),nn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),sessionId:M,uri:r.string()}),rn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),position:x,sessionId:M,uri:r.string(),version:r.number(),visibleRange:w}),an=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),languageId:r.string(),sessionId:M,text:r.string(),uri:r.string(),version:r.number()}),on=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),sessionId:M,uri:r.string()}),sn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),additionalDirectories:r.array(r.string()).optional(),cwd:r.string(),mcpServers:r.array(v).optional(),sessionId:M}),P=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),sessionId:M,terminalId:r.string()}),cn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),additionalDirectories:r.array(r.string()).optional(),cwd:r.string(),mcpServers:r.array(v),sessionId:M}),F=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),limit:r.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`}).nullish(),line:r.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`}).nullish(),path:r.string(),sessionId:M}),ln=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),id:r.string(),reason:Qe.nullish(),sessionId:M}),I=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),sessionId:M,terminalId:r.string()}),un=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),additionalDirectories:r.array(r.string()).optional(),cwd:r.string(),mcpServers:r.array(v).optional(),sessionId:M}),dn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),additionalDirectories:r.array(r.string()).optional(),cwd:r.string(),sessionId:M,title:r.string().nullish(),updatedAt:r.string().nullish()}),fn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),nextCursor:r.string().nullish(),sessions:r.array(dn)}),pn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),title:r.string().nullish(),updatedAt:r.string().nullish()}),mn=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),L=r.string(),hn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),currentModeId:L}),gn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),description:r.string().nullish(),id:L,name:r.string()}),R=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),availableModes:r.array(gn),currentModeId:L}),z=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),availableModels:r.array(Re),currentModelId:y}),_n=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),configOptions:r.array(j).nullish(),models:z.nullish(),modes:R.nullish(),sessionId:M}),vn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),configOptions:r.array(j).nullish(),models:z.nullish(),modes:R.nullish()}),yn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),configOptions:r.array(j).nullish(),models:z.nullish(),modes:R.nullish(),sessionId:M}),bn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),configOptions:r.array(j).nullish(),models:z.nullish(),modes:R.nullish()}),xn=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),Sn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),additionalDirectories:Ht.nullish(),close:Ut.nullish(),fork:Zt.nullish(),list:mn.nullish(),resume:xn.nullish()}),Cn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),apiType:_,baseUrl:r.string(),headers:r.record(r.string(),r.string()).optional(),id:r.string()}),wn=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),Tn=r.intersection(r.union([r.object({type:r.literal(`boolean`),value:r.boolean()}),r.object({value:k})]),r.object({_meta:r.record(r.string(),r.unknown()).nullish(),configId:O,sessionId:M})),En=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),configOptions:r.array(j)}),Dn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),modeId:L,sessionId:M}),On=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),kn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),modelId:y,sessionId:M}),An=r.object({_meta:r.record(r.string(),r.unknown()).nullish()}),jn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),sessionId:M}),Mn=r.union([r.literal(`end_turn`),r.literal(`max_tokens`),r.literal(`max_turn_requests`),r.literal(`refusal`),r.literal(`cancelled`)]),Nn=r.union([r.literal(`email`),r.literal(`uri`),r.literal(`date`),r.literal(`date-time`)]),Pn=r.object({default:r.string().nullish(),description:r.string().nullish(),enum:r.array(r.string()).nullish(),format:Nn.nullish(),maxLength:r.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`}).nullish(),minLength:r.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`}).nullish(),oneOf:r.array(u).nullish(),pattern:r.string().nullish(),title:r.string().nullish()}),Fn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),context:kt.nullish(),position:x,selection:w.nullish(),sessionId:M,triggerKind:ot,uri:r.string(),version:r.number()}),In=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),suggestions:r.array(Mt)}),Ln=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),terminalId:r.string()}),Rn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),exitCode:r.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`}).nullish(),signal:r.string().nullish()}),B=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),sessionId:M,terminalId:r.string()}),zn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),exitStatus:Rn.nullish(),output:r.string(),truncated:r.boolean()}),Bn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),annotations:D.nullish(),text:r.string()}),Vn=r.object({range:w.nullish(),text:r.string()}),Hn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),contentChanges:r.array(Vn),sessionId:M,uri:r.string(),version:r.number()});r.object({method:r.string(),params:r.union([$t,an,Hn,nn,on,rn,Qt,ln,p]).nullish()});const Un=r.union([r.literal(`full`),r.literal(`incremental`)]),Wn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),syncKind:Un}),Gn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),didChange:Wn.nullish(),didClose:Ve.nullish(),didFocus:He.nullish(),didOpen:Ue.nullish(),didSave:We.nullish()}),Kn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),document:Gn.nullish()}),qn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),context:ct.nullish(),events:Kn.nullish()}),Jn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),auth:je.optional().default({}),loadSession:r.boolean().optional().default(!1),mcpCapabilities:Pe.optional().default({http:!1,sse:!1}),nes:qn.nullish(),positionEncoding:S.nullish(),promptCapabilities:xt.optional().default({audio:!1,embeddedContext:!1,image:!1}),providers:Et.nullish(),sessionCapabilities:Sn.optional().default({})}),Yn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),agentCapabilities:Jn.optional().default({auth:{},loadSession:!1,mcpCapabilities:{http:!1,sse:!1},promptCapabilities:{audio:!1,embeddedContext:!1,image:!1},sessionCapabilities:{}}),agentInfo:g.nullish(),authMethods:r.array(ne).optional().default([]),protocolVersion:C}),Xn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),mimeType:r.string().nullish(),text:r.string(),uri:r.string()}),Zn=r.union([Xn,ae]),Qn=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),annotations:D.nullish(),resource:Zn}),V=r.union([Bn.and(r.object({type:r.literal(`text`)})),Lt.and(r.object({type:r.literal(`image`)})),It.and(r.object({type:r.literal(`audio`)})),Rt.and(r.object({type:r.literal(`resource_link`)})),Qn.and(r.object({type:r.literal(`resource`)}))]),$n=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),content:V}),H=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),content:V,messageId:r.string().nullish()}),er=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),messageId:r.string().nullish(),prompt:r.array(V),sessionId:M}),tr=r.object({anyOf:r.array(u)}),U=r.union([$n.and(r.object({type:r.literal(`content`)})),de.and(r.object({type:r.literal(`diff`)})),Ln.and(r.object({type:r.literal(`terminal`)}))]),W=r.string(),G=r.object({sessionId:M,toolCallId:W.nullish()}),nr=r.intersection(r.union([G,E]),r.object({elicitationId:ve,url:r.string().url()})),K=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),line:r.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`}).nullish(),path:r.string()}),q=r.union([r.literal(`pending`),r.literal(`in_progress`),r.literal(`completed`),r.literal(`failed`)]),J=r.union([r.literal(`read`),r.literal(`edit`),r.literal(`delete`),r.literal(`move`),r.literal(`search`),r.literal(`execute`),r.literal(`think`),r.literal(`fetch`),r.literal(`switch_mode`),r.literal(`other`)]),rr=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),content:r.array(U).optional(),kind:J.optional(),locations:r.array(K).optional(),rawInput:r.unknown().optional(),rawOutput:r.unknown().optional(),status:q.optional(),title:r.string(),toolCallId:W}),Y=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),content:r.array(U).nullish(),kind:J.nullish(),locations:r.array(K).nullish(),rawInput:r.unknown().optional(),rawOutput:r.unknown().optional(),status:q.nullish(),title:r.string().nullish(),toolCallId:W}),X=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),options:r.array(ft),sessionId:M,toolCall:Y}),ir=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),hint:r.string()}),ar=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),description:r.string(),input:ir.nullish(),name:r.string()}),or=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),availableCommands:r.array(ar)}),sr=r.object({enum:r.array(r.string()),type:be}),cr=r.union([sr,tr]),lr=r.object({default:r.array(r.string()).nullish(),description:r.string().nullish(),items:cr,maxItems:r.number().nullish(),minItems:r.number().nullish(),title:r.string().nullish()}),ur=r.union([Pn.and(r.object({type:r.literal(`string`)})),ut.and(r.object({type:r.literal(`number`)})),Ee.and(r.object({type:r.literal(`integer`)})),oe.and(r.object({type:r.literal(`boolean`)})),lr.and(r.object({type:r.literal(`array`)}))]),dr=r.object({description:r.string().nullish(),properties:r.record(r.string(),ur).optional().default({}),required:r.array(r.string()).nullish(),title:r.string().nullish(),type:ye.optional().default(`object`)}),fr=r.intersection(r.union([G,E]),r.object({requestedSchema:dr})),Z=r.intersection(r.union([fr.and(r.object({mode:r.literal(`form`)})),nr.and(r.object({mode:r.literal(`url`)}))]),r.object({_meta:r.record(r.string(),r.unknown()).nullish(),message:r.string()})),pr=r.object({cachedReadTokens:r.number().nullish(),cachedWriteTokens:r.number().nullish(),inputTokens:r.number(),outputTokens:r.number(),thoughtTokens:r.number().nullish(),totalTokens:r.number()}),mr=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),stopReason:Mn,usage:pr.nullish(),userMessageId:r.string().nullish()});r.union([r.object({id:T,result:r.union([Yn,ie,Tt,wn,pe,Ne,yn,vn,fn,_n,bn,ce,On,En,mr,An,jn,In,se,m])}),r.object({error:f,id:T})]);const hr=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),cost:le.nullish(),size:r.number(),used:r.number()}),gr=r.union([H.and(r.object({sessionUpdate:r.literal(`user_message_chunk`)})),H.and(r.object({sessionUpdate:r.literal(`agent_message_chunk`)})),H.and(r.object({sessionUpdate:r.literal(`agent_thought_chunk`)})),rr.and(r.object({sessionUpdate:r.literal(`tool_call`)})),Y.and(r.object({sessionUpdate:r.literal(`tool_call_update`)})),gt.and(r.object({sessionUpdate:r.literal(`plan`)})),or.and(r.object({sessionUpdate:r.literal(`available_commands_update`)})),hn.and(r.object({sessionUpdate:r.literal(`current_mode_update`)})),Xt.and(r.object({sessionUpdate:r.literal(`config_option_update`)})),pn.and(r.object({sessionUpdate:r.literal(`session_info_update`)})),hr.and(r.object({sessionUpdate:r.literal(`usage_update`)}))]),Q=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),sessionId:M,update:gr});r.object({method:r.string(),params:r.union([Q,l,p]).nullish()});const _r=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),sessionId:M,terminalId:r.string()}),vr=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),exitCode:r.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`}).nullish(),signal:r.string().nullish()}),yr=r.object({name:r.string(),uri:r.string()}),br=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),repository:nt.nullish(),workspaceFolders:r.array(yr).nullish(),workspaceUri:r.string().nullish()});r.object({id:T,method:r.string(),params:r.union([St,re,Oe,Cn,fe,Me,lt,cn,ke,sn,un,tn,Dn,Tn,er,kn,br,Fn,en,we]).nullish()});const xr=r.object({_meta:r.record(r.string(),r.unknown()).nullish(),content:r.string(),path:r.string(),sessionId:M});r.object({id:T,method:r.string(),params:r.union([xr,F,X,N,B,I,_r,P,Z,we]).nullish()});const Sr=r.object({_meta:r.record(r.string(),r.unknown()).nullish()});r.union([r.object({id:T,result:r.union([Sr,Nt,Vt,ue,zn,Pt,vr,De,ge,m])}),r.object({error:f,id:T})]);function Cr(e,t){let n=new TextEncoder,r=new TextDecoder;return{readable:new ReadableStream({async start(e){let n=``,i=t.getReader();try{for(;;){let{value:t,done:a}=await i.read();if(a){n+=r.decode();break}if(!t)continue;n+=r.decode(t,{stream:!0});let o=n.split(`
2
2
  `);n=o.pop()||``;for(let t of o){let n=t.trim();if(n)try{let t=JSON.parse(n);e.enqueue(t)}catch(e){console.error(`Failed to parse JSON message:`,n,e)}}}let t=n.trim();if(t)try{let n=JSON.parse(t);e.enqueue(n)}catch(e){console.error(`Failed to parse JSON message:`,t,e)}}catch(t){e.error(t);return}finally{i.releaseLock()}e.close()}}),writable:new WritableStream({async write(t){let r=JSON.stringify(t)+`
3
- `,i=e.getWriter();try{await i.write(n.encode(r))}finally{i.releaseLock()}}})}}var wr=class{connection;constructor(e,t){let n=e(this),r=async(e,t)=>{switch(e){case a.fs_write_text_file:{let e=xr.parse(t);return n.writeTextFile?.(e)}case a.fs_read_text_file:{let e=P.parse(t);return n.readTextFile?.(e)}case a.session_request_permission:{let e=Y.parse(t);return n.requestPermission(e)}case a.terminal_create:{let e=M.parse(t);return n.createTerminal?.(e)}case a.terminal_output:{let e=z.parse(t);return n.terminalOutput?.(e)}case a.terminal_release:{let e=F.parse(t);return await n.releaseTerminal?.(e)??{}}case a.terminal_wait_for_exit:{let e=Q.parse(t);return n.waitForTerminalExit?.(e)}case a.terminal_kill:{let e=N.parse(t);return await n.killTerminal?.(e)??{}}case a.elicitation_create:{if(!n.unstable_createElicitation)throw $.methodNotFound(e);let r=X.parse(t);return n.unstable_createElicitation(r)}default:if(n.extMethod)return n.extMethod(e,t);throw $.methodNotFound(e)}},i=async(e,t)=>{switch(e){case a.session_update:{let e=Z.parse(t);return n.sessionUpdate(e)}case a.elicitation_complete:{if(!n.unstable_completeElicitation)return;let e=l.parse(t);return n.unstable_completeElicitation(e)}default:if(n.extNotification)return n.extNotification(e,t);throw $.methodNotFound(e)}};this.connection=new Tr(r,i,t)}async initialize(e){return await this.connection.sendRequest(i.initialize,e)}async newSession(e){return await this.connection.sendRequest(i.session_new,e)}async loadSession(e){return await this.connection.sendRequest(i.session_load,e)??{}}async unstable_forkSession(e){return await this.connection.sendRequest(i.session_fork,e)}async listSessions(e){return await this.connection.sendRequest(i.session_list,e)}async resumeSession(e){return await this.connection.sendRequest(i.session_resume,e)}async closeSession(e){return await this.connection.sendRequest(i.session_close,e)}async setSessionMode(e){return await this.connection.sendRequest(i.session_set_mode,e)??{}}async unstable_setSessionModel(e){return await this.connection.sendRequest(i.session_set_model,e)??{}}async setSessionConfigOption(e){return await this.connection.sendRequest(i.session_set_config_option,e)}async authenticate(e){return await this.connection.sendRequest(i.authenticate,e)??{}}async unstable_listProviders(e){return await this.connection.sendRequest(i.providers_list,e)}async unstable_setProvider(e){return await this.connection.sendRequest(i.providers_set,e)??{}}async unstable_disableProvider(e){return await this.connection.sendRequest(i.providers_disable,e)??{}}async unstable_logout(e){return await this.connection.sendRequest(i.logout,e)??{}}async prompt(e){return await this.connection.sendRequest(i.session_prompt,e)}async cancel(e){return await this.connection.sendNotification(i.session_cancel,e)}async unstable_startNes(e){return await this.connection.sendRequest(i.nes_start,e)}async unstable_suggestNes(e){return await this.connection.sendRequest(i.nes_suggest,e)}async unstable_closeNes(e){return await this.connection.sendRequest(i.nes_close,e)??{}}async unstable_didOpenDocument(e){return await this.connection.sendNotification(i.document_did_open,e)}async unstable_didChangeDocument(e){return await this.connection.sendNotification(i.document_did_change,e)}async unstable_didCloseDocument(e){return await this.connection.sendNotification(i.document_did_close,e)}async unstable_didSaveDocument(e){return await this.connection.sendNotification(i.document_did_save,e)}async unstable_didFocusDocument(e){return await this.connection.sendNotification(i.document_did_focus,e)}async unstable_acceptNes(e){return await this.connection.sendNotification(i.nes_accept,e)}async unstable_rejectNes(e){return await this.connection.sendNotification(i.nes_reject,e)}async extMethod(e,t){return await this.connection.sendRequest(e,t)}async extNotification(e,t){return await this.connection.sendNotification(e,t)}get signal(){return this.connection.signal}get closed(){return this.connection.closed}},Tr=class{pendingResponses=new Map;nextRequestId=0;requestHandler;notificationHandler;stream;writeQueue=Promise.resolve();abortController=new AbortController;closedPromise;constructor(e,t,n){this.requestHandler=e,this.notificationHandler=t,this.stream=n,this.closedPromise=new Promise(e=>{this.abortController.signal.addEventListener(`abort`,()=>e())}),this.receive()}get signal(){return this.abortController.signal}get closed(){return this.closedPromise}async receive(){let e;try{let e=this.stream.readable.getReader();try{for(;!this.abortController.signal.aborted;){let{value:t,done:n}=await e.read();if(n)break;if(t)try{this.processMessage(t)}catch(e){console.error(`Unexpected error during message processing:`,t,e),`id`in t&&t.id!==void 0&&this.sendMessage({jsonrpc:`2.0`,id:t.id,error:{code:-32700,message:`Parse error`}})}}}finally{e.releaseLock()}}catch(t){e=t}finally{this.close(e)}}close(e){if(this.abortController.signal.aborted)return;let t=e??Error(`ACP connection closed`);for(let e of this.pendingResponses.values())e.reject(t);this.pendingResponses.clear(),this.abortController.abort(t)}async processMessage(e){if(`method`in e&&`id`in e){let t=await this.tryCallRequestHandler(e.method,e.params);`error`in t&&console.error(`Error handling request`,e,t.error),await this.sendMessage({jsonrpc:`2.0`,id:e.id,...t})}else if(`method`in e){let t=await this.tryCallNotificationHandler(e.method,e.params);`error`in t&&console.error(`Error handling notification`,e,t.error)}else `id`in e?this.handleResponse(e):console.error(`Invalid message`,{message:e})}async tryCallRequestHandler(e,t){try{return{result:await this.requestHandler(e,t)??null}}catch(e){if(e instanceof $)return e.toResult();if(e instanceof r.ZodError)return $.invalidParams(e.format()).toResult();let t;(e instanceof Error||typeof e==`object`&&e&&`message`in e&&typeof e.message==`string`)&&(t=e.message);try{return $.internalError(t?JSON.parse(t):{}).toResult()}catch{return $.internalError({details:t}).toResult()}}}async tryCallNotificationHandler(e,t){try{return await this.notificationHandler(e,t),{result:null}}catch(e){if(e instanceof $)return e.toResult();if(e instanceof r.ZodError)return $.invalidParams(e.format()).toResult();let t;(e instanceof Error||typeof e==`object`&&e&&`message`in e&&typeof e.message==`string`)&&(t=e.message);try{return $.internalError(t?JSON.parse(t):{}).toResult()}catch{return $.internalError({details:t}).toResult()}}}handleResponse(e){let t=this.pendingResponses.get(e.id);if(t){if(`result`in e)t.resolve(e.result);else if(`error`in e){let{code:n,message:r,data:i}=e.error;t.reject(new $(n,r,i))}this.pendingResponses.delete(e.id)}else console.error(`Got response to unknown request`,e.id)}sendRequest(e,t){this.throwIfClosed();let n=this.nextRequestId++,r=new Promise((e,t)=>{this.pendingResponses.set(n,{resolve:e,reject:t})});return r.catch(()=>{}),this.sendMessage({jsonrpc:`2.0`,id:n,method:e,params:t}),r}async sendNotification(e,t){this.throwIfClosed(),await this.sendMessage({jsonrpc:`2.0`,method:e,params:t})}throwIfClosed(){if(this.abortController.signal.aborted)throw this.abortController.signal.reason??Error(`ACP connection closed`)}async sendMessage(e){return this.writeQueue=this.writeQueue.then(async()=>{let t=this.stream.writable.getWriter();try{await t.write(e)}finally{t.releaseLock()}}).catch(e=>{this.close(e)}),this.writeQueue}},$=class e extends Error{code;data;constructor(e,t,n){super(t),this.code=e,this.name=`RequestError`,this.data=n}static parseError(t,n){return new e(-32700,`Parse error${n?`: ${n}`:``}`,t)}static invalidRequest(t,n){return new e(-32600,`Invalid request${n?`: ${n}`:``}`,t)}static methodNotFound(t){return new e(-32601,`"Method not found": ${t}`,{method:t})}static invalidParams(t,n){return new e(-32602,`Invalid params${n?`: ${n}`:``}`,t)}static internalError(t,n){return new e(-32603,`Internal error${n?`: ${n}`:``}`,t)}static authRequired(t,n){return new e(-32e3,`Authentication required${n?`: ${n}`:``}`,t)}static resourceNotFound(t){return new e(-32002,`Resource not found${t?`: ${t}`:``}`,t&&{uri:t})}toResult(){return{error:{code:this.code,message:this.message,data:this.data}}}toErrorResponse(){return{code:this.code,message:this.message,data:this.data}}};function Er(e){return new Promise((t,n)=>{let r=()=>{e.off(`error`,i),t()},i=t=>{e.off(`spawn`,r),n(t)};e.once(`spawn`,r),e.once(`error`,i)})}async function Dr(e){e.stdin?.destroy(),e.stdout?.destroy(),e.stderr?.destroy(),e.kill(`SIGTERM`),await new Promise(t=>{e.once(`exit`,()=>t()),e.once(`close`,()=>t()),setTimeout(t,100)})}function Or(e){return e}function kr(e){return e}async function Ar(r,i){let a=e(i.command,i.args,{cwd:i.cwd,env:i.env,stdio:[`pipe`,`pipe`,`pipe`]});try{await Er(a)}catch(e){throw i.onError?.(e),e}i.onStderr&&a.stderr&&a.stderr.on(`data`,e=>{i.onStderr(e.toString(`utf-8`))});let o=new Promise(e=>{a.once(`exit`,t=>{i.onExit?.(t),e(t)})});a.on(`error`,e=>{i.onError?.(e)});let s;try{let e=t.toWeb(a.stdout);s=new wr(r,Cr(kr(n.toWeb(a.stdin)),Or(e)))}catch(e){throw await Dr(a),e}return{connection:s,kill:()=>a.kill(`SIGTERM`),exited:o}}var jr=class{config;constructor(e){this.config=e}async sessionUpdate(e){await this.config.onSessionUpdate(e)}async requestPermission(e){return this.config.onRequestPermission(e)}async readTextFile(e){if(!this.config.onReadTextFile)throw Error(`readTextFile not supported: no handler configured`);return this.config.onReadTextFile(e)}async writeTextFile(e){if(!this.config.onWriteTextFile)throw Error(`writeTextFile not supported: no handler configured`);return this.config.onWriteTextFile(e)}async createTerminal(e){if(!this.config.terminalManager)throw Error(`createTerminal not supported: no terminal manager configured`);return this.config.terminalManager.createTerminal(e)}async terminalOutput(e){if(!this.config.terminalManager)throw Error(`terminalOutput not supported: no terminal manager configured`);return this.config.terminalManager.getOutput(e)}async waitForTerminalExit(e){if(!this.config.terminalManager)throw Error(`waitForTerminalExit not supported: no terminal manager configured`);return this.config.terminalManager.waitForExit(e)}async killTerminal(e){if(!this.config.terminalManager)throw Error(`killTerminal not supported: no terminal manager configured`);return this.config.terminalManager.killTerminal(e)}async releaseTerminal(e){if(!this.config.terminalManager)throw Error(`releaseTerminal not supported: no terminal manager configured`);return this.config.terminalManager.releaseTerminal(e)}},Mr=class{terminals=new Map;nextId=0;async createTerminal(t){let n=`terminal-${(++this.nextId).toString()}`,r=t.outputByteLimit??1024*1024,i={...process.env};if(t.env)for(let e of t.env)i[e.name]=e.value;let a=e(t.command,t.args??[],{cwd:t.cwd??void 0,env:i,stdio:[`pipe`,`pipe`,`pipe`]});try{await Er(a)}catch(e){throw await Dr(a),e}let o={process:a,output:``,outputByteLimit:r,truncated:!1,exitCode:void 0,signal:void 0,hasExited:!1,exitPromise:new Promise(e=>{a.on(`exit`,(e,t)=>{o.exitCode=e,o.signal=t??null}),a.on(`close`,()=>{o.hasExited=!0,e({exitCode:o.exitCode??null,signal:o.signal??null})})})},s=e=>{if(o.output+=e.toString(`utf-8`),Buffer.byteLength(o.output,`utf-8`)>o.outputByteLimit){let e=Buffer.from(o.output,`utf-8`),t=e.length-o.outputByteLimit;for(;t<e.length&&(e[t]&192)==128;)t+=1;o.output=e.subarray(t).toString(`utf-8`),o.truncated=!0}};return a.stdout?.on(`data`,s),a.stderr?.on(`data`,s),this.terminals.set(n,o),{terminalId:n}}async getOutput(e){let t=this.requireTerminal(e.terminalId);return{output:t.output,truncated:t.truncated,...t.hasExited&&{exitStatus:{exitCode:t.exitCode??null,signal:t.signal??null}}}}async waitForExit(e){let{exitCode:t,signal:n}=await this.requireTerminal(e.terminalId).exitPromise;return{exitCode:t??void 0,signal:n??void 0}}async killTerminal(e){return this.requireTerminal(e.terminalId).process.kill(`SIGTERM`),{}}async releaseTerminal(e){let t=this.terminals.get(e.terminalId);return t&&(t.process.kill(`SIGKILL`),this.terminals.delete(e.terminalId)),{}}releaseAll(){for(let[e,t]of this.terminals)t.process.kill(`SIGKILL`),this.terminals.delete(e)}requireTerminal(e){let t=this.terminals.get(e);if(!t)throw Error(`Terminal not found: ${e}`);return t}};export{jr as MakaioAcpClient,Mr as TerminalManager,Ar as createAcpConnection};
3
+ `,i=e.getWriter();try{await i.write(n.encode(r))}finally{i.releaseLock()}}})}}var wr=class{connection;constructor(e,t){let n=e(this),r=async(e,t)=>{switch(e){case a.fs_write_text_file:{let e=xr.parse(t);return n.writeTextFile?.(e)}case a.fs_read_text_file:{let e=F.parse(t);return n.readTextFile?.(e)}case a.session_request_permission:{let e=X.parse(t);return n.requestPermission(e)}case a.terminal_create:{let e=N.parse(t);return n.createTerminal?.(e)}case a.terminal_output:{let e=B.parse(t);return n.terminalOutput?.(e)}case a.terminal_release:{let e=I.parse(t);return await n.releaseTerminal?.(e)??{}}case a.terminal_wait_for_exit:{let e=_r.parse(t);return n.waitForTerminalExit?.(e)}case a.terminal_kill:{let e=P.parse(t);return await n.killTerminal?.(e)??{}}case a.elicitation_create:{if(!n.unstable_createElicitation)throw $.methodNotFound(e);let r=Z.parse(t);return n.unstable_createElicitation(r)}default:if(n.extMethod)return n.extMethod(e,t);throw $.methodNotFound(e)}},i=async(e,t)=>{switch(e){case a.session_update:{let e=Q.parse(t);return n.sessionUpdate(e)}case a.elicitation_complete:{if(!n.unstable_completeElicitation)return;let e=l.parse(t);return n.unstable_completeElicitation(e)}default:if(n.extNotification)return n.extNotification(e,t);throw $.methodNotFound(e)}};this.connection=new Tr(r,i,t)}async initialize(e){return await this.connection.sendRequest(i.initialize,e)}async newSession(e){return await this.connection.sendRequest(i.session_new,e)}async loadSession(e){return await this.connection.sendRequest(i.session_load,e)??{}}async unstable_forkSession(e){return await this.connection.sendRequest(i.session_fork,e)}async listSessions(e){return await this.connection.sendRequest(i.session_list,e)}async resumeSession(e){return await this.connection.sendRequest(i.session_resume,e)}async closeSession(e){return await this.connection.sendRequest(i.session_close,e)}async setSessionMode(e){return await this.connection.sendRequest(i.session_set_mode,e)??{}}async unstable_setSessionModel(e){return await this.connection.sendRequest(i.session_set_model,e)??{}}async setSessionConfigOption(e){return await this.connection.sendRequest(i.session_set_config_option,e)}async authenticate(e){return await this.connection.sendRequest(i.authenticate,e)??{}}async unstable_listProviders(e){return await this.connection.sendRequest(i.providers_list,e)}async unstable_setProvider(e){return await this.connection.sendRequest(i.providers_set,e)??{}}async unstable_disableProvider(e){return await this.connection.sendRequest(i.providers_disable,e)??{}}async unstable_logout(e){return await this.connection.sendRequest(i.logout,e)??{}}async prompt(e){return await this.connection.sendRequest(i.session_prompt,e)}async cancel(e){return await this.connection.sendNotification(i.session_cancel,e)}async unstable_startNes(e){return await this.connection.sendRequest(i.nes_start,e)}async unstable_suggestNes(e){return await this.connection.sendRequest(i.nes_suggest,e)}async unstable_closeNes(e){return await this.connection.sendRequest(i.nes_close,e)??{}}async unstable_didOpenDocument(e){return await this.connection.sendNotification(i.document_did_open,e)}async unstable_didChangeDocument(e){return await this.connection.sendNotification(i.document_did_change,e)}async unstable_didCloseDocument(e){return await this.connection.sendNotification(i.document_did_close,e)}async unstable_didSaveDocument(e){return await this.connection.sendNotification(i.document_did_save,e)}async unstable_didFocusDocument(e){return await this.connection.sendNotification(i.document_did_focus,e)}async unstable_acceptNes(e){return await this.connection.sendNotification(i.nes_accept,e)}async unstable_rejectNes(e){return await this.connection.sendNotification(i.nes_reject,e)}async extMethod(e,t){return await this.connection.sendRequest(e,t)}async extNotification(e,t){return await this.connection.sendNotification(e,t)}get signal(){return this.connection.signal}get closed(){return this.connection.closed}},Tr=class{pendingResponses=new Map;nextRequestId=0;requestHandler;notificationHandler;stream;writeQueue=Promise.resolve();abortController=new AbortController;closedPromise;constructor(e,t,n){this.requestHandler=e,this.notificationHandler=t,this.stream=n,this.closedPromise=new Promise(e=>{this.abortController.signal.addEventListener(`abort`,()=>e())}),this.receive()}get signal(){return this.abortController.signal}get closed(){return this.closedPromise}async receive(){let e;try{let e=this.stream.readable.getReader();try{for(;!this.abortController.signal.aborted;){let{value:t,done:n}=await e.read();if(n)break;if(t)try{this.processMessage(t)}catch(e){console.error(`Unexpected error during message processing:`,t,e),`id`in t&&t.id!==void 0&&this.sendMessage({jsonrpc:`2.0`,id:t.id,error:{code:-32700,message:`Parse error`}})}}}finally{e.releaseLock()}}catch(t){e=t}finally{this.close(e)}}close(e){if(this.abortController.signal.aborted)return;let t=e??Error(`ACP connection closed`);for(let e of this.pendingResponses.values())e.reject(t);this.pendingResponses.clear(),this.abortController.abort(t)}async processMessage(e){if(`method`in e&&`id`in e){let t=await this.tryCallRequestHandler(e.method,e.params);`error`in t&&console.error(`Error handling request`,e,t.error),await this.sendMessage({jsonrpc:`2.0`,id:e.id,...t})}else if(`method`in e){let t=await this.tryCallNotificationHandler(e.method,e.params);`error`in t&&console.error(`Error handling notification`,e,t.error)}else `id`in e?this.handleResponse(e):console.error(`Invalid message`,{message:e})}async tryCallRequestHandler(e,t){try{return{result:await this.requestHandler(e,t)??null}}catch(e){if(e instanceof $)return e.toResult();if(e instanceof r.ZodError)return $.invalidParams(e.format()).toResult();let t;(e instanceof Error||typeof e==`object`&&e&&`message`in e&&typeof e.message==`string`)&&(t=e.message);try{return $.internalError(t?JSON.parse(t):{}).toResult()}catch{return $.internalError({details:t}).toResult()}}}async tryCallNotificationHandler(e,t){try{return await this.notificationHandler(e,t),{result:null}}catch(e){if(e instanceof $)return e.toResult();if(e instanceof r.ZodError)return $.invalidParams(e.format()).toResult();let t;(e instanceof Error||typeof e==`object`&&e&&`message`in e&&typeof e.message==`string`)&&(t=e.message);try{return $.internalError(t?JSON.parse(t):{}).toResult()}catch{return $.internalError({details:t}).toResult()}}}handleResponse(e){let t=this.pendingResponses.get(e.id);if(t){if(`result`in e)t.resolve(e.result);else if(`error`in e){let{code:n,message:r,data:i}=e.error;t.reject(new $(n,r,i))}this.pendingResponses.delete(e.id)}else console.error(`Got response to unknown request`,e.id)}sendRequest(e,t){this.throwIfClosed();let n=this.nextRequestId++,r=new Promise((e,t)=>{this.pendingResponses.set(n,{resolve:e,reject:t})});return r.catch(()=>{}),this.sendMessage({jsonrpc:`2.0`,id:n,method:e,params:t}),r}async sendNotification(e,t){this.throwIfClosed(),await this.sendMessage({jsonrpc:`2.0`,method:e,params:t})}throwIfClosed(){if(this.abortController.signal.aborted)throw this.abortController.signal.reason??Error(`ACP connection closed`)}async sendMessage(e){return this.writeQueue=this.writeQueue.then(async()=>{let t=this.stream.writable.getWriter();try{await t.write(e)}finally{t.releaseLock()}}).catch(e=>{this.close(e)}),this.writeQueue}},$=class e extends Error{code;data;constructor(e,t,n){super(t),this.code=e,this.name=`RequestError`,this.data=n}static parseError(t,n){return new e(-32700,`Parse error${n?`: ${n}`:``}`,t)}static invalidRequest(t,n){return new e(-32600,`Invalid request${n?`: ${n}`:``}`,t)}static methodNotFound(t){return new e(-32601,`"Method not found": ${t}`,{method:t})}static invalidParams(t,n){return new e(-32602,`Invalid params${n?`: ${n}`:``}`,t)}static internalError(t,n){return new e(-32603,`Internal error${n?`: ${n}`:``}`,t)}static authRequired(t,n){return new e(-32e3,`Authentication required${n?`: ${n}`:``}`,t)}static resourceNotFound(t){return new e(-32002,`Resource not found${t?`: ${t}`:``}`,t&&{uri:t})}toResult(){return{error:{code:this.code,message:this.message,data:this.data}}}toErrorResponse(){return{code:this.code,message:this.message,data:this.data}}};function Er(e){return new Promise((t,n)=>{let r=()=>{e.off(`error`,i),t()},i=t=>{e.off(`spawn`,r),n(t)};e.once(`spawn`,r),e.once(`error`,i)})}async function Dr(e){e.stdin?.destroy(),e.stdout?.destroy(),e.stderr?.destroy(),e.kill(`SIGTERM`),await new Promise(t=>{e.once(`exit`,()=>t()),e.once(`close`,()=>t()),setTimeout(t,100)})}function Or(e){return e}function kr(e){return e}async function Ar(r,i){let a=e(i.command,i.args,{cwd:i.cwd,env:i.env,stdio:[`pipe`,`pipe`,`pipe`]});try{await Er(a)}catch(e){throw i.onError?.(e),e}i.onStderr&&a.stderr&&a.stderr.on(`data`,e=>{i.onStderr(e.toString(`utf-8`))});let o=new Promise(e=>{a.once(`exit`,t=>{i.onExit?.(t),e(t)})});a.on(`error`,e=>{i.onError?.(e)});let s;try{let e=t.toWeb(a.stdout);s=new wr(r,Cr(kr(n.toWeb(a.stdin)),Or(e)))}catch(e){throw await Dr(a),e}return{connection:s,kill:()=>a.kill(`SIGTERM`),exited:o}}var jr=class{config;constructor(e){this.config=e}async sessionUpdate(e){await this.config.onSessionUpdate(e)}async requestPermission(e){return this.config.onRequestPermission(e)}async readTextFile(e){if(!this.config.onReadTextFile)throw Error(`readTextFile not supported: no handler configured`);return this.config.onReadTextFile(e)}async writeTextFile(e){if(!this.config.onWriteTextFile)throw Error(`writeTextFile not supported: no handler configured`);return this.config.onWriteTextFile(e)}async createTerminal(e){if(!this.config.terminalManager)throw Error(`createTerminal not supported: no terminal manager configured`);return this.config.terminalManager.createTerminal(e)}async terminalOutput(e){if(!this.config.terminalManager)throw Error(`terminalOutput not supported: no terminal manager configured`);return this.config.terminalManager.getOutput(e)}async waitForTerminalExit(e){if(!this.config.terminalManager)throw Error(`waitForTerminalExit not supported: no terminal manager configured`);return this.config.terminalManager.waitForExit(e)}async killTerminal(e){if(!this.config.terminalManager)throw Error(`killTerminal not supported: no terminal manager configured`);return this.config.terminalManager.killTerminal(e)}async releaseTerminal(e){if(!this.config.terminalManager)throw Error(`releaseTerminal not supported: no terminal manager configured`);return this.config.terminalManager.releaseTerminal(e)}},Mr=class{terminals=new Map;baseEnv;scrubEnvVars;nextId=0;constructor(e){this.scrubEnvVars=new Set(e.scrubEnvVars??[]),this.baseEnv=Object.freeze(Object.fromEntries(Object.entries(e.baseEnv).filter(([e])=>!this.scrubEnvVars.has(e))))}async createTerminal(t){let n=`terminal-${(++this.nextId).toString()}`,r=t.outputByteLimit??1024*1024,i=(t.env??[]).filter(({name:e})=>!this.scrubEnvVars.has(e)).map(({name:e,value:t})=>[e,t]),a=Object.fromEntries([...Object.entries(this.baseEnv),...i]),o=e(t.command,t.args??[],{cwd:t.cwd??void 0,env:a,stdio:[`pipe`,`pipe`,`pipe`]});try{await Er(o)}catch(e){throw await Dr(o),e}let s={process:o,output:``,outputByteLimit:r,truncated:!1,exitCode:void 0,signal:void 0,hasExited:!1,exitPromise:new Promise(e=>{o.on(`exit`,(e,t)=>{s.exitCode=e,s.signal=t??null}),o.on(`close`,()=>{s.hasExited=!0,e({exitCode:s.exitCode??null,signal:s.signal??null})})})},c=e=>{if(s.output+=e.toString(`utf-8`),Buffer.byteLength(s.output,`utf-8`)>s.outputByteLimit){let e=Buffer.from(s.output,`utf-8`),t=e.length-s.outputByteLimit;for(;t<e.length&&(e[t]&192)==128;)t+=1;s.output=e.subarray(t).toString(`utf-8`),s.truncated=!0}};return o.stdout?.on(`data`,c),o.stderr?.on(`data`,c),this.terminals.set(n,s),{terminalId:n}}async getOutput(e){let t=this.requireTerminal(e.terminalId);return{output:t.output,truncated:t.truncated,...t.hasExited&&{exitStatus:{exitCode:t.exitCode??null,signal:t.signal??null}}}}async waitForExit(e){let{exitCode:t,signal:n}=await this.requireTerminal(e.terminalId).exitPromise;return{exitCode:t??void 0,signal:n??void 0}}async killTerminal(e){return this.requireTerminal(e.terminalId).process.kill(`SIGTERM`),{}}async releaseTerminal(e){let t=this.terminals.get(e.terminalId);return t&&(t.process.kill(`SIGKILL`),this.terminals.delete(e.terminalId)),{}}releaseAll(){for(let[e,t]of this.terminals)t.process.kill(`SIGKILL`),this.terminals.delete(e)}requireTerminal(e){let t=this.terminals.get(e);if(!t)throw Error(`Terminal not found: ${e}`);return t}};export{jr as MakaioAcpClient,Mr as TerminalManager,Ar as createAcpConnection};