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

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 (449) 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 +110 -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/{base-orchestrator-J1WKAUkF.d.mts → base-orchestrator-BiShpVKL.d.mts} +6 -0
  20. package/dist/bus/index.d.mts +21 -21
  21. package/dist/bus/index.mjs +1 -1
  22. package/dist/{canonical-model-DV-Z8gsb.mjs → canonical-model-CVRCW9h7.mjs} +1 -1
  23. package/dist/client-BkpLM8Fx.mjs +1 -0
  24. package/dist/client-binary-version-verifier-BK_vIjIo.mjs +2 -0
  25. package/dist/client-binary-version-verifier-BwrMTAh2.d.mts +179 -0
  26. package/dist/clients/index.d.mts +74 -90
  27. package/dist/clients/index.mjs +1 -2
  28. package/dist/clients/managed-install.d.mts +2 -0
  29. package/dist/clients/managed-install.mjs +1 -0
  30. package/dist/{clients-namespace-Bt_VTkEU.d.mts → clients-namespace-B96QIJOs.d.mts} +224 -21
  31. package/dist/compression-CZ_6fYq8.mjs +1 -0
  32. package/dist/config-namespace-DTA6EQL8.mjs +1 -0
  33. package/dist/{config-namespace-DqdFE6zk.d.mts → config-namespace-x0fuhEXe.d.mts} +73 -1
  34. package/dist/contracts/adapter/index.d.mts +3 -3
  35. package/dist/contracts/adapter/index.mjs +1 -1
  36. package/dist/contracts/adapter/schemas/session-lineage.d.mts +1 -1
  37. package/dist/contracts/artifact/index.d.mts +1 -1
  38. package/dist/contracts/auth/index.d.mts +3 -0
  39. package/dist/contracts/auth/index.mjs +1 -0
  40. package/dist/contracts/canonical-model/index.d.mts +1 -1
  41. package/dist/contracts/canonical-model/index.mjs +1 -1
  42. package/dist/contracts/client/index.d.mts +3 -3
  43. package/dist/contracts/client/index.mjs +1 -1
  44. package/dist/contracts/common/index.d.mts +1 -1
  45. package/dist/contracts/config/index.d.mts +20 -93
  46. package/dist/contracts/config/index.mjs +1 -1
  47. package/dist/contracts/extension/index.d.mts +3 -3
  48. package/dist/contracts/extension/index.mjs +1 -1
  49. package/dist/contracts/facet/index.d.mts +1 -1
  50. package/dist/contracts/facet/index.mjs +1 -1
  51. package/dist/contracts/harness/index.d.mts +1 -1
  52. package/dist/contracts/harness/index.mjs +1 -1
  53. package/dist/contracts/host/index.d.mts +1 -1
  54. package/dist/contracts/host/index.mjs +1 -1
  55. package/dist/contracts/index.d.mts +1214 -261
  56. package/dist/contracts/index.mjs +1 -1
  57. package/dist/contracts/materialization/index.d.mts +3 -3
  58. package/dist/contracts/materialization/index.mjs +1 -1
  59. package/dist/contracts/model-registry/index.d.mts +1 -1
  60. package/dist/contracts/model-registry/index.mjs +1 -1
  61. package/dist/contracts/native-session-supervisor/index.d.mts +1 -1
  62. package/dist/contracts/native-session-supervisor/index.mjs +1 -1
  63. package/dist/contracts/platform/index.d.mts +1 -1
  64. package/dist/contracts/platform/index.mjs +1 -1
  65. package/dist/contracts/provider/index.d.mts +2 -2
  66. package/dist/contracts/provider/index.mjs +1 -1
  67. package/dist/contracts/session/index.d.mts +2 -2
  68. package/dist/contracts/session/index.mjs +1 -1
  69. package/dist/contracts/shared/index.d.mts +2 -2
  70. package/dist/contracts/shared/index.mjs +1 -1
  71. package/dist/contracts/skill/index.d.mts +1 -1
  72. package/dist/contracts/skill/index.mjs +1 -1
  73. package/dist/contracts/telemetry/index.d.mts +1 -1
  74. package/dist/contracts/telemetry/index.mjs +1 -1
  75. package/dist/contracts/timeout/index.d.mts +1 -1
  76. package/dist/contracts/timeout/index.mjs +1 -1
  77. package/dist/contracts/toast/index.mjs +1 -1
  78. package/dist/contracts/variant/index.d.mts +1 -1
  79. package/dist/contracts/variant/index.mjs +1 -1
  80. package/dist/contracts/workflow/index.d.mts +2 -2
  81. package/dist/contracts/workflow/index.mjs +1 -1
  82. package/dist/{definition-s9PIua2B.d.mts → definition-Bj9Vr16H.d.mts} +1 -1
  83. package/dist/{definition-Cllhr9mi.d.mts → definition-BsTlOz99.d.mts} +36 -4
  84. package/dist/{definition-CuJvtYeG.d.mts → definition-Cbl0k6Fc.d.mts} +31 -1
  85. package/dist/definition-K3m51lgO.mjs +1 -0
  86. package/dist/definitions-C1pgx0Nq.mjs +1 -0
  87. package/dist/{detached-extension-handle-Cx6-0eqg.mjs → detached-extension-handle-CTaQoolf.mjs} +1 -1
  88. package/dist/execution-target-Bg2wpfML.mjs +1 -0
  89. package/dist/{extension-CJClssfp.mjs → extension-CjTu6mzW.mjs} +1 -1
  90. package/dist/extension-D4iKUUMG.mjs +1 -0
  91. package/dist/{filesystem-service-Bmyqo6po.mjs → filesystem-service-maY_P3yA.mjs} +1 -1
  92. package/dist/git/index.mjs +1 -1
  93. package/dist/{globby-D4SANVoq.mjs → globby-CisClzat.mjs} +1 -1
  94. package/dist/handlers-RGs3eC9X.mjs +57 -0
  95. package/dist/{harness-DkUpbsuY.mjs → harness-DflvHAGV.mjs} +1 -1
  96. package/dist/{index-C23g_M_J2.d.mts → index-5s_dN3cg2.d.mts} +18 -1
  97. package/dist/index-9dISOTLT.d.mts +174 -0
  98. package/dist/{index-B9d_8_V2.d.mts → index-9g0agW_p.d.mts} +55 -55
  99. package/dist/{index-DoEF9LAc.d.mts → index-BcejR1Jc.d.mts} +3 -3
  100. package/dist/index-BsEvzFey.d.mts +1175 -0
  101. package/dist/{index-ntS1EXlf.d.mts → index-BtL7ONuM.d.mts} +1 -1
  102. package/dist/index-BxuiHVFi.d.mts +284 -0
  103. package/dist/{index-PIlYSC73.d.mts → index-C9Q1E8Y-.d.mts} +66 -53
  104. package/dist/{index-CaerrEDH.d.mts → index-CB2XTzvd.d.mts} +3 -3
  105. package/dist/{index-Cx1Bm6WD.d.mts → index-CVs0Qxks.d.mts} +8 -8
  106. package/dist/{index-WHUV7neB.d.mts → index-CW6-0k3Z.d.mts} +105 -105
  107. package/dist/index-CagRgpXI2.d.mts +84 -0
  108. package/dist/{index-DZPNuWMc.d.mts → index-Cw3cjGAT.d.mts} +7 -7
  109. package/dist/{index-DnnKUwHm.d.mts → index-D5IEq4_E.d.mts} +36 -32
  110. package/dist/{index-h5go5Dtd.d.mts → index-D75FnT0B.d.mts} +1 -1
  111. package/dist/{index-O08Q2ikz.d.mts → index-DNc1yLQs.d.mts} +8 -8
  112. package/dist/{index-FFVwQMad.d.mts → index-DlUPWOh4.d.mts} +737 -97
  113. package/dist/{index-DScUb-hF.d.mts → index-Do7Wgio_2.d.mts} +35 -12
  114. package/dist/{index-C9FCWOhp.d.mts → index-DxatNFz7.d.mts} +124 -22
  115. package/dist/{index-BvTd61i5.d.mts → index-T96ydgVk.d.mts} +260 -160
  116. package/dist/{index-DLNRgZPo2.d.mts → index-j2YlW_Fc.d.mts} +1 -1
  117. package/dist/{index-BcvG3wPv.d.mts → index-p6dWV52m.d.mts} +513 -373
  118. package/dist/{index-B2DjrVb8.d.mts → index-sCOlgPyj.d.mts} +1589 -482
  119. package/dist/kernel/cli/index.d.mts +2 -2
  120. package/dist/kernel/cli/index.mjs +1 -1
  121. package/dist/kernel/cli/register.d.mts +1 -1
  122. package/dist/kernel/cli/register.mjs +1 -1
  123. package/dist/kernel/cli/schemas.mjs +1 -1
  124. package/dist/kernel/extension/index.d.mts +1 -1
  125. package/dist/kernel/extension/index.mjs +1 -1
  126. package/dist/kernel/index.d.mts +5 -5
  127. package/dist/kernel/index.mjs +1 -1
  128. package/dist/kernel/namespace/index.d.mts +1 -1
  129. package/dist/kernel/namespace/index.mjs +1 -1
  130. package/dist/kernel/observability/index.d.mts +1 -1
  131. package/dist/kernel/observability/index.mjs +1 -1
  132. package/dist/kernel/providers/index.d.mts +1 -1
  133. package/dist/kernel/providers/index.mjs +1 -1
  134. package/dist/kernel/window/index.d.mts +1 -1
  135. package/dist/kernel/window/index.mjs +1 -1
  136. package/dist/{lib-BOmKyjWD.mjs → lib-DIVnpS8e.mjs} +1 -1
  137. package/dist/{lib-DLZYp5z3.mjs → lib-DymjnkAP.mjs} +1 -1
  138. package/dist/{load-extensions-Cze1RHcG.mjs → load-extensions-BtUrq2_t.mjs} +1 -1
  139. package/dist/{load-extensions-DNRIy4zC.d.mts → load-extensions-_EnedkUp.d.mts} +1 -1
  140. package/dist/{loop-gate-handlers-o2B5FPdF.mjs → loop-gate-handlers-0a3dIY8O.mjs} +1 -1
  141. package/dist/mcp-http-server/index.mjs +1 -1
  142. package/dist/model-uE5IyUFJ.mjs +1 -0
  143. package/dist/namespace-C05pkLbN.mjs +1 -0
  144. package/dist/{namespace-D8P8Sxce2.d.mts → namespace-CGgOLxiW2.d.mts} +2 -2
  145. package/dist/{namespace-BGIeqwfU.d.mts → namespace-CQBSXm1U.d.mts} +20 -20
  146. package/dist/{namespace-CfvtDD_U.d.mts → namespace-CfgtqUWS.d.mts} +156 -156
  147. package/dist/{namespace-D9PLFmPQ.d.mts → namespace-CpyL93kW.d.mts} +27 -27
  148. package/dist/{namespace-CZK2ff3B.d.mts → namespace-D3SQQgxa2.d.mts} +1 -1
  149. package/dist/namespace-D7pE2QWv.mjs +1 -0
  150. package/dist/{namespace-dFBD2ZmS.mjs → namespace-DwQtzlY-.mjs} +1 -1
  151. package/dist/namespace-HsI0Jbbr.mjs +1 -0
  152. package/dist/namespace-VmsT_tLJ.d.mts +3729 -0
  153. package/dist/namespace-Xp9-g_r-.mjs +1 -0
  154. package/dist/{native-session-supervisor-7ElwM6Is.mjs → native-session-supervisor-CdtVGWA9.mjs} +1 -1
  155. package/dist/node/bus-server/index.d.mts +1 -1
  156. package/dist/node/bus-server/index.mjs +1 -1
  157. package/dist/node/bus-server/server-lifecycle.d.mts +1 -1
  158. package/dist/node/bus-server/server-lifecycle.mjs +1 -1
  159. package/dist/node/transports/index.d.mts +36 -1
  160. package/dist/node/transports/index.mjs +2 -2
  161. package/dist/{orchestrator-shared-ChygCvR1.mjs → orchestrator-shared-DAkGOu9H.mjs} +1 -1
  162. package/dist/{orchestrator-shared-DFLb1otg.d.mts → orchestrator-shared-pxtyNu3W.d.mts} +13 -6
  163. package/dist/{package-Co_GO3UD.mjs → package-0gVhAVkO.mjs} +1 -1
  164. package/dist/package-BwvGaKwn.mjs +1 -0
  165. package/dist/package.json +1 -1
  166. package/dist/{profile-BMBXUqqh.mjs → profile-D2m94ZYD.mjs} +1 -1
  167. package/dist/provider-context-BYkMl--1.mjs +1 -0
  168. package/dist/provider-context-DOsjOjiR.mjs +1 -0
  169. package/dist/{providers-namespace-5GoTlHXz.d.mts → providers-namespace-O4de1tgO.d.mts} +161 -14
  170. package/dist/resolved-O2XXjTeu.mjs +1 -0
  171. package/dist/rules/index.d.mts +1 -1
  172. package/dist/rules/index.mjs +1 -1
  173. package/dist/rules/schemas.d.mts +1 -1
  174. package/dist/runtime-bun/index.mjs +1 -1
  175. package/dist/runtime-node/client-binary-strategy-dependencies.d.mts +34 -0
  176. package/dist/runtime-node/client-binary-strategy-dependencies.mjs +1 -0
  177. package/dist/runtime-node/extension-discovery.d.mts +1 -1
  178. package/dist/runtime-node/extension-validation.d.mts +1 -1
  179. package/dist/runtime-node/extension-validation.mjs +1 -1
  180. package/dist/runtime-node/index.d.mts +32 -6
  181. package/dist/runtime-node/index.mjs +24 -24
  182. package/dist/runtime-node/makaio-config.d.mts +1 -1
  183. package/dist/runtime-node/makaio-config.mjs +1 -1
  184. package/dist/runtime-node/workflow-worker/index.d.mts +1 -1
  185. package/dist/runtime-node/workflow-worker/index.mjs +1 -1
  186. package/dist/runtime-node/workflow-worker/worker-entry.mjs +1 -1
  187. package/dist/{schema-7aKBGB7S.mjs → schema-BI0aCHvV.mjs} +1 -1
  188. package/dist/{schema-B5vHi7Uu.d.mts → schema-BnTOFCdU.d.mts} +1 -1
  189. package/dist/{schemas-Br-rSxPE2.d.mts → schemas--uwN5dfK2.d.mts} +11 -11
  190. package/dist/schemas-C-J4W1ID.mjs +1 -0
  191. package/dist/{schemas-CoFCV42v.d.mts → schemas-C17AifUQ.d.mts} +156 -156
  192. package/dist/schemas-D6lj9NMg.mjs +1 -0
  193. package/dist/schemas-K3Td_WdR.d.mts +3175 -0
  194. package/dist/schemas-n9Ff6_RX.mjs +1 -0
  195. package/dist/selection-YRuVSdck.mjs +1 -0
  196. package/dist/services/adapter-runtime/index.d.mts +3 -3
  197. package/dist/services/adapter-runtime/index.mjs +1 -1
  198. package/dist/services/adapter-runtime/namespace.d.mts +1 -1
  199. package/dist/services/adapter-runtime/schemas.d.mts +1 -1
  200. package/dist/services/adapter-subsystem/index.d.mts +4 -3
  201. package/dist/services/adapter-subsystem/index.mjs +1 -1
  202. package/dist/services/adapter-subsystem/namespace.d.mts +1 -1
  203. package/dist/services/adapter-subsystem/namespace.mjs +1 -1
  204. package/dist/services/agent-runtime/index.d.mts +2 -2
  205. package/dist/services/agent-runtime/namespace.d.mts +1 -1
  206. package/dist/services/agent-runtime/schemas.d.mts +1 -1
  207. package/dist/services/capability/index.d.mts +1 -1
  208. package/dist/services/capability/index.mjs +1 -1
  209. package/dist/services/codebase/index.d.mts +2 -2
  210. package/dist/services/codebase/namespace.d.mts +1 -1
  211. package/dist/services/codebase/schemas.d.mts +1 -1
  212. package/dist/services/compression/index.d.mts +2 -2
  213. package/dist/services/compression/namespace.d.mts +1 -1
  214. package/dist/services/compression/schemas.d.mts +1 -1
  215. package/dist/services/context-rules/index.d.mts +1 -1
  216. package/dist/services/context-rules/index.mjs +1 -1
  217. package/dist/services/definition/namespace.d.mts +1 -19
  218. package/dist/services/definition/schemas.d.mts +0 -9
  219. package/dist/services/definition/schemas.mjs +1 -1
  220. package/dist/services/execution-target/index.d.mts +4 -4
  221. package/dist/services/execution-target/index.mjs +1 -1
  222. package/dist/services/execution-target/namespace.d.mts +1 -1
  223. package/dist/services/execution-target/namespace.mjs +1 -1
  224. package/dist/services/execution-target/schemas.d.mts +1 -1
  225. package/dist/services/execution-target/schemas.mjs +1 -1
  226. package/dist/services/filesystem/index.d.mts +1 -1
  227. package/dist/services/filesystem/index.mjs +1 -1
  228. package/dist/services/filesystem/namespace.d.mts +6 -6
  229. package/dist/services/filesystem/schemas.d.mts +3 -3
  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 +1671 -253
  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/index.d.mts +3 -3
  278. package/dist/services/settings/storage/index.mjs +1 -1
  279. package/dist/services/settings/storage/providers-namespace.d.mts +1 -1
  280. package/dist/services/settings/storage/providers-namespace.mjs +1 -1
  281. package/dist/services/subagent/index.d.mts +2 -2
  282. package/dist/services/subagent/index.mjs +1 -1
  283. package/dist/services/subagent-template/index.d.mts +2 -2
  284. package/dist/services/subagent-template/namespace.d.mts +1 -1
  285. package/dist/services/subagent-template/schemas.d.mts +1 -1
  286. package/dist/services/tool-approval/index.d.mts +1 -1
  287. package/dist/services/tool-approval/index.mjs +1 -1
  288. package/dist/services/tools/index.d.mts +1 -1
  289. package/dist/services/tools/index.mjs +1 -1
  290. package/dist/services/tray-menu/index.d.mts +3 -3
  291. package/dist/services/tray-menu/index.mjs +1 -1
  292. package/dist/services/tray-menu/namespace.d.mts +1 -1
  293. package/dist/services/tray-menu/schemas.d.mts +1 -1
  294. package/dist/services/turn/index.d.mts +1 -1
  295. package/dist/services/turn/namespace.d.mts +1 -1
  296. package/dist/session-CAjudDuJ.mjs +76 -0
  297. package/dist/{session-DBfQkgdy.mjs → session-lRd8HZNZ.mjs} +1 -1
  298. package/dist/{session-lineage-C1M7-O3C.d.mts → session-lineage-BLw8iWAj.d.mts} +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 +1 -1
  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-C8vqn1KY.mjs +1 -0
  312. package/dist/{transition-OzGXyy3p.d.mts → transition-Bfe8VVc1.d.mts} +2 -2
  313. package/dist/{types-BWduCvRU.d.mts → types-B-xY9WW2.d.mts} +1 -1
  314. package/dist/{types-BrUOVfwe.d.mts → types-DvKaEOOn.d.mts} +252 -19
  315. package/dist/{types-CBLPaQXe.d.mts → types-q95p55BF.d.mts} +437 -287
  316. package/dist/ui-hooks/index.d.mts +103 -14
  317. package/dist/ui-hooks/index.mjs +1 -1
  318. package/dist/ui-kernel/index.d.mts +3 -3
  319. package/dist/ui-kernel/pages/schemas.d.mts +1 -1
  320. package/dist/utils/keychain.mjs +1 -1
  321. package/dist/{version-DoV_pSzT.mjs → version-C1-VD-XL.mjs} +1 -1
  322. package/dist/workflow-CvVAZ89A.mjs +1 -0
  323. package/dist/workflow-engine/index.d.mts +33 -33
  324. package/dist/workflow-engine/index.mjs +1 -1
  325. package/dist/workflow-engine/package.d.mts +1 -1
  326. package/dist/workflow-engine/package.mjs +1 -1
  327. package/dist/workflow-engine/workflow-orchestrator.mjs +1 -1
  328. package/dist/{workflow-worker-dH70EbjE.mjs → workflow-worker-CudfEstp.mjs} +1 -1
  329. package/package.json +5 -1
  330. package/dist/account-identity-C7Kx_ieU.mjs +0 -1
  331. package/dist/cleanEnvForAdapter-BooAgM2R.mjs +0 -1
  332. package/dist/client-DaR4mzqn.mjs +0 -1
  333. package/dist/compression-C5JAWdgZ.mjs +0 -1
  334. package/dist/config-namespace-CY9leBnE.mjs +0 -1
  335. package/dist/credential-ref-YWQQENEo.mjs +0 -1
  336. package/dist/definition-C-GVz7uw.mjs +0 -1
  337. package/dist/execution-target-BR8bLkCR.mjs +0 -1
  338. package/dist/extension-BS_4BOeO.mjs +0 -1
  339. package/dist/handlers-B74FvKlA.mjs +0 -57
  340. package/dist/index-BcwOnvUh.d.mts +0 -749
  341. package/dist/index-D6aAzr32.d.mts +0 -997
  342. package/dist/index-DtwGhFFQ.d.mts +0 -40
  343. package/dist/namespace-B4cV_pk3.d.mts +0 -1317
  344. package/dist/namespace-BO3tODGC.mjs +0 -1
  345. package/dist/namespace-CVMZVqB5.mjs +0 -1
  346. package/dist/namespace-DBHwyhME.mjs +0 -1
  347. package/dist/namespace-DibbhCPP.mjs +0 -1
  348. package/dist/package-CF_Zm2v4.mjs +0 -1
  349. package/dist/provider-context-CqMgPOWF.mjs +0 -1
  350. package/dist/provider-context-DC_eq7es.mjs +0 -1
  351. package/dist/schemas-CVo8qAK-.mjs +0 -1
  352. package/dist/schemas-CuG17U3L.mjs +0 -1
  353. package/dist/session-CX6QDhi2.mjs +0 -76
  354. package/dist/tools-CGFZkB7F.mjs +0 -1
  355. package/dist/workflow-C3dgVwTY.mjs +0 -1
  356. /package/dist/{ajv-B5dPIck0.mjs → ajv-DfHhgdS5.mjs} +0 -0
  357. /package/dist/{await-trigger-DwVldnMt.mjs → await-trigger-D623tvig.mjs} +0 -0
  358. /package/dist/{capability-service-XlymTzz1.mjs → capability-service-Dg2bU8qc.mjs} +0 -0
  359. /package/dist/{client-CebV_fZc.d.mts → client-DmJwprw1.d.mts} +0 -0
  360. /package/dist/{create-static-mount-DkK28kKW.mjs → create-static-mount-CBTXRtbN.mjs} +0 -0
  361. /package/dist/{cross-spawn-CDXy3BjE.mjs → cross-spawn-D9WWFl2a.mjs} +0 -0
  362. /package/dist/{cursor-storage-luQAg7E_.mjs → cursor-storage-Bw-7ROzx.mjs} +0 -0
  363. /package/dist/{descriptor-to-package-DdpjpT7n.mjs → descriptor-to-package-D5SWf6TL.mjs} +0 -0
  364. /package/dist/{drizzle-DVTAl7Us.mjs → drizzle-DYfaDzlO.mjs} +0 -0
  365. /package/dist/{esm-CQG9Pc7n.mjs → esm-oHhRYTEn.mjs} +0 -0
  366. /package/dist/{event-DguYjV6D.mjs → event-DTM0-qWP.mjs} +0 -0
  367. /package/dist/{extension-discovery-CIZn5bkq.d.mts → extension-discovery-APMf1Tes.d.mts} +0 -0
  368. /package/dist/{extension-namespace-v3K0qVry.mjs → extension-namespace-vrh4ERXR.mjs} +0 -0
  369. /package/dist/{facet-BM4y4aQP.mjs → facet-DqPBpqkl.mjs} +0 -0
  370. /package/dist/{filesystem-service-Cwp0sWNc.d.mts → filesystem-service-Bx0bR2Lb.d.mts} +0 -0
  371. /package/dist/{handler-BFNvtv5t.mjs → handler-4pKQi3eo.mjs} +0 -0
  372. /package/dist/{host-vY07gek-.mjs → host-BfgdjlII.mjs} +0 -0
  373. /package/dist/{identity-DC3Pk0ps.mjs → identity-2qUT1NME.mjs} +0 -0
  374. /package/dist/{index-COI1tjAf.d.mts → index-BZ_DSGnE.d.mts} +0 -0
  375. /package/dist/{index-D7rWAEY0.d.mts → index-Bd52mmj9.d.mts} +0 -0
  376. /package/dist/{index-Dfi8Rorw.d.mts → index-BkAKfh4d.d.mts} +0 -0
  377. /package/dist/{index-CuHqL95P.d.mts → index-Bv9lm0Kf.d.mts} +0 -0
  378. /package/dist/{index-C4nStEdA.d.mts → index-C18Pn3zP.d.mts} +0 -0
  379. /package/dist/{index-Cr9lh21j.d.mts → index-CarbJsC92.d.mts} +0 -0
  380. /package/dist/{index-BjoOSg95.d.mts → index-Ctw617Tj.d.mts} +0 -0
  381. /package/dist/{index-DUD7wikz2.d.mts → index-D0eUQjTU2.d.mts} +0 -0
  382. /package/dist/{index-DEzdNQum.d.mts → index-DfVSWBBp.d.mts} +0 -0
  383. /package/dist/{index-D3ahzHwb.d.mts → index-DnWZdG6C.d.mts} +0 -0
  384. /package/dist/{index-CpKikwK4.d.mts → index-DoLdETfR.d.mts} +0 -0
  385. /package/dist/{index-B92mToDo2.d.mts → index-DvaPrL6C.d.mts} +0 -0
  386. /package/dist/{index-D7Hkmrr3.d.mts → index-DwDBa2mb.d.mts} +0 -0
  387. /package/dist/{index-Y8rMeYYX.d.mts → index-FDyqQIt5.d.mts} +0 -0
  388. /package/dist/{index-BWIkf5oJ.d.mts → index-Lp0T_V1W.d.mts} +0 -0
  389. /package/dist/{index-OGIC4puQ.d.mts → index-Rhcr4YNA.d.mts} +0 -0
  390. /package/dist/{index-BvLXySoB2.d.mts → index-S-mAqWwq.d.mts} +0 -0
  391. /package/dist/{index-DOOrKin9.d.mts → index-_zsihEmk.d.mts} +0 -0
  392. /package/dist/{index-wq7XeqyG.d.mts → index-iJP-l15K.d.mts} +0 -0
  393. /package/dist/{json-value-DtIkQN7g.d.mts → json-value-C8duSh9X.d.mts} +0 -0
  394. /package/dist/{jsonl-transport-CGPgD8iU.mjs → jsonl-transport-l5NPcQ_2.mjs} +0 -0
  395. /package/dist/{lib-ZKtnbCqH.mjs → lib-ClRTNIuz.mjs} +0 -0
  396. /package/dist/{materialization-CUYxZCfk.mjs → materialization-BwTORtBr.mjs} +0 -0
  397. /package/dist/{model-registry-C2VXobZj.mjs → model-registry-BneK5SGo.mjs} +0 -0
  398. /package/dist/{model-registry-rYICIwyR.mjs → model-registry-C8MInDtX.mjs} +0 -0
  399. /package/dist/{namespace-65uwTpbg.d.mts → namespace-3YVLQ_bM.d.mts} +0 -0
  400. /package/dist/{namespace-CQ8uza7o.d.mts → namespace-BcDHt-ww.d.mts} +0 -0
  401. /package/dist/{namespace-BigVYQyx.d.mts → namespace-BhVlHfoO.d.mts} +0 -0
  402. /package/dist/{namespace-j7vFsmYL.d.mts → namespace-Bl1UhLnK.d.mts} +0 -0
  403. /package/dist/{namespace-Dk4OslmY.d.mts → namespace-BsEoWXV_.d.mts} +0 -0
  404. /package/dist/{namespace-DYSFDC2G.mjs → namespace-C238RqwB.mjs} +0 -0
  405. /package/dist/{namespace-BdO4e1Fm.mjs → namespace-CDO4rY11.mjs} +0 -0
  406. /package/dist/{namespace-wke7juzy.mjs → namespace-DDx4NVJm.mjs} +0 -0
  407. /package/dist/{namespace-D1_9WVCo.d.mts → namespace-Dar3O6iT.d.mts} +0 -0
  408. /package/dist/{namespace-DAj_riOn.d.mts → namespace-DoNigVgx.d.mts} +0 -0
  409. /package/dist/{namespace-D2s-4pyg.d.mts → namespace-Dvi66QS6.d.mts} +0 -0
  410. /package/dist/{out-BoEZjBNz.mjs → out-BB6Kb4Xu.mjs} +0 -0
  411. /package/dist/{package-DmVZxufT.d.mts → package-CdBiknf3.d.mts} +0 -0
  412. /package/dist/{platform-DnbSvm2u.mjs → platform-CWhGFQFX.mjs} +0 -0
  413. /package/dist/{providers-Bd7BOZs0.mjs → providers-CUnrif24.mjs} +0 -0
  414. /package/dist/{quick-lru-6e7I1Bgf.mjs → quick-lru-BLaSzINB.mjs} +0 -0
  415. /package/dist/{registry-U_3aYSin.mjs → registry-TJjQgTgp.mjs} +0 -0
  416. /package/dist/{schema-CHp6I33k.mjs → schema-cus0dJ81.mjs} +0 -0
  417. /package/dist/{schema-introspection-B7xODt4I.mjs → schema-introspection-BsWLmoFp.mjs} +0 -0
  418. /package/dist/{schemas-KlH1hB7u.d.mts → schemas-9QJf1FtS.d.mts} +0 -0
  419. /package/dist/{schemas-CJ2JvA7d.d.mts → schemas-BolSW7pQ.d.mts} +0 -0
  420. /package/dist/{schemas-D4zaFE2p.d.mts → schemas-CLsbsX1W.d.mts} +0 -0
  421. /package/dist/{schemas-XeIBqwvE.mjs → schemas-CMyv7l7-.mjs} +0 -0
  422. /package/dist/{schemas-CPI00yvh.mjs → schemas-CWxf_Yut.mjs} +0 -0
  423. /package/dist/{schemas-BemsLc_V.d.mts → schemas-D_9X_CRo.d.mts} +0 -0
  424. /package/dist/{schemas-DZGnr9Tl.mjs → schemas-DwfTUQIa.mjs} +0 -0
  425. /package/dist/{schemas-B6tEKf9T.d.mts → schemas-XRhqOgVE.d.mts} +0 -0
  426. /package/dist/{schemas-DKncXGnb.d.mts → schemas-fRLDhefF.d.mts} +0 -0
  427. /package/dist/{schemas-DWfo0wp4.d.mts → schemas-jDRSOXJL.d.mts} +0 -0
  428. /package/dist/{schemas-lnE9YoG7.d.mts → schemas-qpo1Goit.d.mts} +0 -0
  429. /package/dist/{schemas-t6h9oSct.d.mts → schemas-qt5QTjVc.d.mts} +0 -0
  430. /package/dist/{semver-CIhHqMkw.mjs → semver-BccS1s9R.mjs} +0 -0
  431. /package/dist/{server-lifecycle-C5Z5PSMD.mjs → server-lifecycle-D-jxVr_0.mjs} +0 -0
  432. /package/dist/{server-lifecycle-_AA6EfzL.d.mts → server-lifecycle-r5Tkk8bU.d.mts} +0 -0
  433. /package/dist/{shared-schemas-BEVG96xW.mjs → shared-schemas-BNCPgGYP.mjs} +0 -0
  434. /package/dist/{src-_VODAJnf.mjs → src-Ci_WY9uw.mjs} +0 -0
  435. /package/dist/{storage-namespace-D5q9CrBp.mjs → storage-namespace-BzE2M4Hq.mjs} +0 -0
  436. /package/dist/{storage-namespace-Di1A3DMm.d.mts → storage-namespace-DWKFqEW-.d.mts} +0 -0
  437. /package/dist/{storage-namespace-definition-CzXPW45M.mjs → storage-namespace-definition-4UYuij1r.mjs} +0 -0
  438. /package/dist/{storage-namespace-definition-BffdI5Bz.d.mts → storage-namespace-definition-BZJGSaX3.d.mts} +0 -0
  439. /package/dist/{supports-color-DcXkvGDF.mjs → supports-color-Dzp6WuF5.mjs} +0 -0
  440. /package/dist/{telemetry-Cvi4rxiE.mjs → telemetry-B42EMbZt.mjs} +0 -0
  441. /package/dist/{timeout-XsYIOKrc.mjs → timeout-CvONPl0l.mjs} +0 -0
  442. /package/dist/{tray-menu-service-B2AxiQqL.mjs → tray-menu-service-Bonl2KXf.mjs} +0 -0
  443. /package/dist/{types-Bo78h9e3.d.mts → types-BCW9kr4L.d.mts} +0 -0
  444. /package/dist/{types-DCvp_swt.d.mts → types-CrJ7KEZ0.d.mts} +0 -0
  445. /package/dist/{types-BNW5n6qm.d.mts → types-DWNoZ3Sd.d.mts} +0 -0
  446. /package/dist/{ui-config-9bDRwFZr.mjs → ui-config-B2L3Xgqo.mjs} +0 -0
  447. /package/dist/{variant-5huHjUTm.mjs → variant-ByI-RZua.mjs} +0 -0
  448. /package/dist/{window-registry-PkrFIwX2.mjs → window-registry-DsWnCc8z.mjs} +0 -0
  449. /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 ne}from"@makaio/framework/contracts";import{BaseService as re}from"@makaio/framework/service-base";import{ProviderConfigAuthSchema as p,assertAdapterAuthBindingMatchesMethod as ie}from"@makaio/framework/contracts/auth";import{ADAPTER_FILE_SCHEMA_VERSION as ae,AdapterFileSchema as oe,PROVIDER_CONFIG_SCHEMA_VERSION as m,ProviderConfigFileSchema as se,resolveCanonicalProviderConfigName as ce,slugifyProviderConfigName as h}from"@makaio/framework/contracts/config";import{resolveModelVisibility as le}from"@makaio/framework/contracts/provider";import{buildDeterministicAdapterId as g}from"@makaio/framework/services/adapter-runtime";import{ClientSubjects as ue}from"@makaio/framework/contracts/client";import{ClientStorageSubjects as _,ProviderStorageSubjects as v}from"@makaio/framework/services/settings/storage";import{ExtensionSubjects as y}from"@makaio/framework/kernel";import{AdapterSubsystemSubjects as b}from"@makaio/framework/services/adapter-subsystem";import{ModelRegistryProviderNotFoundError as de,ModelRegistrySubjects as fe}from"@makaio/framework/services/model-registry";function x(e){return e?{...e}:void 0}function S(e){return e?{...e}:void 0}function pe(e){return e?structuredClone(e):void 0}function me(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 he(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 ge(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 _e(e,t,n){let r=me(t,n);if(r.length===0)return;let i=[];try{for(let t of r)i.push(t),await he(e,t)}catch(t){try{await ve(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 ve(e,t){let n=[];for(let r of[...t].reverse())try{await ge(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 C(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:ye(t),...t.managedBy?{managedBy:{...t.managedBy}}:{}}}function ye(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 w(e,t){return(t??[]).map(t=>({adapterName:e,providerConfigId:t.providerConfigId,isDefault:t.isDefault??!1}))}function be(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 xe(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 Se(e){let t=new Map,n=new Map,r=new Map;for(let[i,a]of e.providerConfigs){let e=C(i,a);t.set(i,e),n.set(h(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=w(n,r.bindings),c=be(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 T(e,t){let n=e.get(t);return n!==void 0&&(n.enabled??!0)}function Ce(e,t){return e.some(e=>T(t,e.providerConfigId))}function E(e,t){let n=e.find(e=>T(t,e.providerConfigId));return{bindings:e.map(e=>({...e,isDefault:e.providerConfigId===n?.providerConfigId})),...n?{promoted:{...n,isDefault:!0}}:{}}}function we(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})=>T(n,e))?.id??null;for(let{id:e,config:t}of r)n.set(e,{...t,isDefault:i!==null&&e===i});return i}function D(e){if(!e.provider.enabled)throw new O(`provider-definition-disabled`,`Provider definition is disabled for auth selection: ${e.provider.id}`);if(e.client!==void 0&&!e.client.enabled)throw new O(`client-definition-disabled`,`Client definition is disabled for auth selection: ${e.client.id}`)}var O=class extends Error{code;constructor(e,t){super(t),this.code=e,this.name=`ProviderConfigAuthValidationError`}};async function k(e,t,n,r){let i=r??(await e.request(v.get,{id:t})).provider;if(!i||i.id!==t)throw new O(`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 O(`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(_.get,{id:n.method.clientId}),!o)throw new O(`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 O(`auth-method-not-found`,`Authentication method "${n.method.methodId}" is not declared by ${n.method.owner} "${e}".`)}if(a.mode!==n.mode)throw new O(`auth-mode-mismatch`,`Authentication method "${a.id}" declares mode "${a.mode}", not "${n.mode}".`);return a.mode===`explicit`&&n.mode===`explicit`&&Te(a,n),{method:a,provider:i,...o?{client:o}:{}}}function Te(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 O(`auth-credential-fields-mismatch`,`Authentication method "${e.id}" has ${a.join(` and `)}.`)}var A=class extends Error{code;constructor(e,t){super(t),this.code=e,this.name=`ProviderRuntimeContextError`}};async function j(e,t,n){if(n.enabled===!1)throw new A(`provider-config-disabled`,`ProviderConfig '${t}' is disabled and cannot be used for adapter startup.`);let r=await k(e,n.definitionId,n.auth);D(r);let i=Ee(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 Ee(e,t){switch(e.mode){case`explicit`:if(t.mode!==`explicit`)throw M(e.mode,t.mode);return{mode:e.mode,method:{...e.method},definition:structuredClone(t),credentialRefs:{...e.credentialRefs}};case`inferred`:if(t.mode!==`inferred`)throw M(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 M(e.mode,t.mode);return{mode:e.mode,method:{...e.method},definition:{...t}}}}function M(e,t){return new O(`auth-mode-mismatch`,`Validated authentication mode changed during context assembly: selected "${e}", declared "${t}".`)}var De=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}},Oe=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 De;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 _e(this.configRepository,this.snapshot,e),this.replaceSnapshot(e)}applyDerivedState(){let e=Se(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=h(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:ae,...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:pe(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??xe(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 j(this.bus,e,t);return{config:C(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&&w(e,i?.bindings).some(e=>e.providerConfigId===t);if(!r)return{snapshot:null,isBound:!1};let{context:o,definition:s}=await j(this.bus,t,r);return{isBound:a,snapshot:{config:C(t,r),context:o,definition:s}}}removeBindingsForConfig(e,t,n){let r=new Map,i=[],a=[];for(let[o,s]of t){let t=w(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=E(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 we(e,t,n)}};const N=process.env.MAKAIO_SKIP_CLIENT_VERSION_CHECK===`1`;function ke(e){if(!(e===void 0||e.length===0))return e.map(e=>({...e}))}function Ae(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 P(e,t){return e.clientId!==void 0&&t?.some(t=>t.id===e.clientId)?e.clientId:t?.[0]?.id}async function F(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}"`);je(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(ue.resolveBinary,{clientId:t.id});if(!n.handled){if(N){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(N){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(!ne(i,t.binaryVersion)){let n=`Adapter "${e}" client "${t.id}" binary version ${i}`;if(N){console.warn(`[SKIP_VERSION_CHECK] ${n} does not satisfy ${t.binaryVersion} — check bypassed`);return}throw Error(`${n} does not satisfy ${t.binaryVersion}`)}}))}function je(e,t,n){if(!ne(e,t))throw Error(`${n} does not satisfy ${t}`)}function Me(e){let t=e.split(`/`).pop()?.replace(/^ai-adapters-/,``)?.trim();return t&&t.length>0?t:e}function I(e){let t=P(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 L(e,t,n=5e3){let r=Fe(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 R(e){for(let[t,n]of e)try{await L(t,n)}catch(e){console.error(`[adapter-runtime] Error shutting down adapter ${t}:`,e)}e.clear()}async function Ne(e,t,n){try{await L(e,t)}finally{n.delete(e)}}async function Pe(e,t){let{config:n}=await e.request(b.getAdapterConfig,{name:t});return n?.enabled??!1}function z(e,t){return e.options.adapterId??g(t,e.name)}function Fe(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 B(e,t,n,r,i){let a=[];for(let s of n)try{if(!await Pe(e,s.name)){console.info(`Skipping disabled adapter: ${s.name}`);continue}let n=z(s,t),a=P(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 L(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 Ne(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 Ie(e,t){await t.request(b.ensureReady,{});let n=await Promise.all(e.map(async e=>({adapter:e,config:(await t.request(b.getAdapterConfig,{name:e.name})).config})));await Promise.all(n.filter(({config:e})=>!e).map(({adapter:e})=>t.request(b.setAdapterConfig,{name:e.name,patch:{displayName:e.displayName,description:e.description,helpLinks:e.helpLinks?.map(e=>({...e})),instructions:e.instructions,clientId:P(e.options,e.clients),protocol:e.protocol,providerDefinitionIds:[...e.providerDefinitionIds],enabled:!1}})))}var Le=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 z(e,this.machineId)}getSettingsAvailableAdapters(){return[...this.loadedAdapters.values()].map(I)}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 L(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(b.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 B(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 L(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 R(this.adapterInstances),this.loadedAdapters.clear(),this.packageAdapters.clear()}};function Re(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 ze=class{configStore;bus;constructor(e){this.configStore=e.configStore,this.bus=e.bus}async createProviderConfig(e){let t=await this.getProviderDefinitionOrThrow(e.definitionId),n=p.parse(e.auth),r=e.enabled??!0,i=await k(this.bus,e.definitionId,n,t);r&&D(i);let a=this.resolveProviderConfigNameFromDefinition(e.definitionId,t.name,e.name),o=h(a),s=x(e.endpointOverrides),c=S(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:m,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(b.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(b.providerConfig.updated,r),n&&await this.bus.emit(b.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)&&D(await k(this.bus,r.definitionId,r.auth));let o=Re(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:x(n.endpointOverrides),modelVisibility:n.modelVisibility===void 0?r.modelVisibility:S(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=p.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 k(this.bus,r.definitionId,n);(r.enabled??!0)&&D(i),t.providerConfigs.set(e,{...r,auth:structuredClone(n)})},()=>this.configStore.requireProviderConfig(e,`auth update`));return await this.bus.emit(b.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(b.providerConfig.updated,s),i&&await this.bus.emit(b.providerConfig.defaultChanged,{definitionId:r,configId:a}),{deleted:!1}):{deleted:!1};await this.cleanupDeletedProviderCredentials(e);for(let e of o.deletedBindings)await this.bus.emit(b.binding.deleted,e);for(let e of o.defaultChangedBindings)await this.bus.emit(b.binding.defaultChanged,e);return await this.bus.emit(b.providerConfig.deleted,{id:e}),i&&await this.bus.emit(b.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(b.providerConfig.updated,n),await this.bus.emit(b.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(b.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=ce({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(v.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(v.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=le(e,`allowlist`,t.modelVisibility);if(n===`enabled`||n===`visible`)return}return i[0]}},Be=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=w(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)&&!Ce(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(b.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=w(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=E(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(b.binding.deleted,{adapterName:e,providerConfigId:t}),n&&await this.bus.emit(b.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=w(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(!T(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(b.binding.defaultChanged,{adapterName:e,providerConfigId:t})}};function V(e){return e.map(e=>({...e}))}function H(e){if(e instanceof de)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:H(t.cause)}async function U(e,t,n,r={}){let i=r.providerDefinitionCache;if(!i){i=new Map;let t=await e.request(y.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:Ve(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 Ve(e,t,n,r){let i=a.parse(e),o=new Set(i.scrubEnvVars);W(t.authMethods??[],o);for(let e of n)W(e.authMethods,o);for(let e of i.bindings)f(e,He(e.method,t,n,r));return a.parse({bindings:i.bindings,scrubEnvVars:[...o]})}function He(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 W(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 G(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(fe.getProviderModels,{providerId:i});t=a.handled?a.data.models:n.definition.availableModels??[],r.set(i,t)}return{...n,definition:{...n.definition,availableModels:V(t)}}}catch(e){return H(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:V(n.definition.availableModels??[])}}}}))}async function Ue(e,t,n,r){let i=await U(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 G(t,e.name,i,n)}function We(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 Ge(e,t,n){let r=We(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 Ke=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(y.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 Ue(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(y.contributions.catalog,{})).clients;await F(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(y.contributions.catalog,{})).clients;await F(l,c.clients,u,n,{checkBinaryVersions:!1});let d=Ae(c.clients,u),f=await G(n,l,await U(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:g(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:ke(c.clients),...d!==void 0&&{clientDefinitions:d},protocol:Ge(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:P(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 qe(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 Ye(e,a,t,o.method,i);ie(o,s);let c=$e(n,o.method),l=Ze(n,o.method,s),u=r.get(c);if(u){if(!Je(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}])=>Qe(e,[...t].sort((e,t)=>e.localeCompare(t))))}function Je(t,n){return e(t,n)}async function Ye(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=Xe(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 Xe(e,t){let{client:n}=await e.request(_.get,{id:t});if(!n)throw Error(`Authentication binding references missing client definition "${t}".`);return n}function Ze(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 Qe(e,t){switch(e.mode){case`explicit`:return{...e,compatibleAdapterNames:t};case`inferred`:return{...e,compatibleAdapterNames:t};case`none`:return{...e,compatibleAdapterNames:t}}}function $e(e,t){return JSON.stringify(t.owner===`provider`?[e,t.owner,t.providerDefinitionId,t.methodId]:[e,t.owner,t.clientId,t.methodId])}const K=-100;function et(e,t){let n=e.on(v.get,async n=>{let r=(await q(e,t())).get(n.payload.id)??null;n.setResult({provider:r})},{priority:K}),r=e.on(v.list,async n=>{n.setResult({providers:[...(await q(e,t())).values()]})},{priority:K}),i=e.on(v.listByProtocol,async n=>{let r=[...(await q(e,t())).values()].filter(e=>e.endpoints!==void 0&&n.payload.protocol in e.endpoints);n.setResult({providers:r})},{priority:K});return()=>{n(),r(),i()}}async function q(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)J(n,t.providerPackageName,t.definition)}let i=[...r].filter(e=>!n.has(e));if(i.length>0){let t=await e.request(y.contributions.catalog,{});for(let e of t.providers)i.includes(e.definition.id)&&J(n,e.packageName,e.definition)}return n}function J(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})}const Y=-100;function tt(e,t){let n=e.on(_.get,async n=>{let r=(await X(e,t())).get(n.payload.id)??null;n.setResult({client:r})},{priority:Y}),r=e.on(_.list,async n=>{n.setResult({clients:[...(await X(e,t())).values()]})},{priority:Y}),i=e.on(_.listByBinaryName,async n=>{let r=[...(await X(e,t())).values()].filter(e=>e.binary?.name===n.payload.binaryName);n.setResult({clients:r})},{priority:Y});return()=>{n(),r(),i()}}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(y.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,nt(e.packageName,t))}return i}function nt(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 rt(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 it(e,t){return t===void 0||e.clients?.some(e=>e.id===t)===!0}function at(e,t){return e?.bindings.some(e=>ct(e.method,t))===!0}function ot(e,t,n,r){return e.trim().length>0&&t.trim().length>0&&(n===void 0||(r?.trim().length??0)>0)}async function st(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=rt(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(!at(i,a))return{status:`error`,code:`auth-binding-missing`};let o=a.owner===`client`?a.clientId:P(e.adapter.options,e.adapter.clients);if(!it(e.adapter,o))return{status:`error`,code:`client-incompatible`};let s=await e.bus.request(y.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(!ot(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 ct(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 re{configStore;registry;providerConfigService;bindingService;contributionProcessor;constructor(e){super(e.bus),this.configStore=new Oe({configRepository:e.configRepository,bus:e.bus}),this.registry=new Le({bus:e.bus,machineId:e.machineId}),this.providerConfigService=new ze({configStore:this.configStore,bus:e.bus}),this.bindingService=new Be({configStore:this.configStore,bus:e.bus}),this.contributionProcessor=new Ke({configStore:this.configStore,registry:this.registry,coordinator:e.coordinator,machineId:e.machineId,platformDefaults:e.platformDefaults,...e.prepareAuthRuntime!==void 0&&{prepareAuthRuntime:e.prepareAuthRuntime}})}async onInit(){await this.configStore.loadSnapshot(),this.configStore.registerListeners(e=>this.addCleanup(e)),this.registerBusHandlers(),await this.bus.emit(b.ready,{})}registerBusHandlers(){this.addCleanup(et(this.bus,()=>this.registry.getLoadedAdapters())),this.addCleanup(tt(this.bus,()=>this.registry.getLoadedAdapters())),this.registerReadHandlers(),this.registerMutationHandlers()}registerReadHandlers(){this.registerConfigReadHandlers(),this.registerRuntimeReadHandlers()}registerConfigReadHandlers(){this.registerHandler(b.getAdapterConfig,e=>{e.setResult({config:this.configStore.getAdapterConfig(e.payload.name)})}),this.registerHandler(b.listAdapterConfigs,e=>{e.setResult({configs:this.configStore.listAdapterConfigs()})}),this.registerHandler(b.getProviderConfig,e=>{e.setResult({config:this.configStore.getProviderConfig(e.payload.id)})}),this.registerHandler(b.listProviderConfigs,e=>{e.setResult({configs:this.configStore.listProviderConfigs(e.payload.enabled)})}),this.registerHandler(b.listProviderConfigsByDefinition,e=>{e.setResult({configs:this.configStore.listProviderConfigsByDefinition(e.payload.definitionId)})}),this.registerHandler(b.listBindings,e=>{e.setResult({bindings:this.configStore.listBindings(e.payload.adapterName)})}),this.registerHandler(b.listBindingsByConfig,e=>{e.setResult({bindings:this.configStore.listBindingsByConfig(e.payload.providerConfigId)})}),this.registerHandler(b.getDefaultBinding,e=>{e.setResult({binding:this.configStore.getDefaultBinding(e.payload.adapterName)})}),this.registerHandler(b.findConfigForDefinitionAndAdapter,e=>{e.setResult({config:this.configStore.findConfigForDefinitionAndAdapter(e.payload.definitionId,e.payload.adapterName)})})}registerRuntimeReadHandlers(){this.registerHandler(b.resolveProviderRuntimeSnapshot,async e=>{e.setResult({snapshot:await this.configStore.resolveProviderRuntimeSnapshot(e.payload.providerConfigId)})}),this.registerHandler(b.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 st({bus:this.bus,adapter:t,snapshot:n.snapshot,isBound:n.isBound}))}catch(t){if(t instanceof A&&t.code===`provider-config-disabled`){e.setResult({status:`error`,code:`provider-config-disabled`});return}throw t}}),this.registerHandler(b.listAdapters,async e=>{e.setResult({adapters:await this.configStore.buildEffectiveAdapters()})}),this.registerHandler(b.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(y.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(b.listCompatibleAuthOptions,async e=>{e.setResult({options:await qe(this.bus,this.registry.getLoadedAdapters(),e.payload.definitionId)})}),this.registerHandler(b.ensureReady,e=>{e.setResult({ready:!0})})}registerMutationHandlers(){this.registerHandler(b.createProviderConfig,async e=>{e.setResult(await this.providerConfigService.createProviderConfig(e.payload))}),this.registerHandler(b.updateProviderConfig,async e=>{e.setResult(await this.providerConfigService.updateProviderConfig(e.payload.id,e.payload.patch))}),this.registerHandler(b.setProviderConfigAuth,async e=>{e.setResult(await this.providerConfigService.setProviderConfigAuth(e.payload.id,e.payload.auth))}),this.registerHandler(b.deleteProviderConfig,async e=>{e.setResult(await this.providerConfigService.deleteProviderConfig(e.payload.id))}),this.registerHandler(b.setDefaultProviderConfig,async e=>{e.setResult(await this.providerConfigService.setDefaultProviderConfig(e.payload.id))}),this.registerHandler(b.setModelFilterMode,async e=>{e.setResult(await this.providerConfigService.setModelFilterMode(e.payload.id,e.payload.modelFilterMode,e.payload.preferredModel))}),this.registerHandler(b.setAdapterConfig,async e=>{e.setResult(await this.configStore.setAdapterConfig(e.payload.name,e.payload.patch))}),this.registerHandler(b.setAdapterEnabled,async e=>{await this.configStore.setAdapterEnabled(e.payload.name,e.payload.enabled),e.setResult({success:!0})}),this.registerHandler(b.bind,async e=>{e.setResult({binding:await this.bindingService.bind(e.payload.adapterName,e.payload.providerConfigId)})}),this.registerHandler(b.unbind,async e=>{await this.bindingService.unbind(e.payload.adapterName,e.payload.providerConfigId),e.setResult({})}),this.registerHandler(b.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 lt=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=oe.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=oe.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`,ut(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!==m)throw new Q(`unsupported-provider-config-version`,t,`expected $schema "${m}". Recreate the config with the current schema.`);let a=se.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 ut(e){return n.basename(e).replace(/[^A-Za-z0-9._-]/g,`_`)||`provider-config.json`}function dt(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 ft=ee(`adapter-subsystem`);function pt(e){return{name:ft.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}})}}export{Z as AdapterSubsystemService,ft as AdapterSubsystemToken,lt as FileAdapterConfigRepository,O as ProviderConfigAuthValidationError,Q as ProviderConfigDiagnosticError,A as ProviderRuntimeContextError,D as assertProviderConfigAuthDefinitionsEnabled,dt as createAdapterSubsystemContributionProcessor,pt as createAdapterSubsystemPackage,Ie as ensureAdapterConfigs,Me as extractAdapterIdFromPackageName,B as initializeEnabledAdapters,R as shutdownAdapterInstances,I as toAvailableAdapter,k 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};