cordisx 0.1.0-beta.21 → 0.1.0-beta.23

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 (566) hide show
  1. package/THIRD_PARTY_NOTICES.md +10 -0
  2. package/dist/assets/launcher/native-app-server-intermediary.mjs +4 -0
  3. package/dist/assets/model-brands/aws-bedrock.svg +12 -0
  4. package/dist/assets/model-brands/azure-foundry.svg +1 -0
  5. package/dist/assets/model-brands/azure-openai.svg +1 -0
  6. package/dist/assets/model-brands/cerebras.png +0 -0
  7. package/dist/assets/model-brands/claude.svg +1 -0
  8. package/dist/assets/model-brands/dashscope.svg +45 -0
  9. package/dist/assets/model-brands/deepseek.svg +3 -0
  10. package/dist/assets/model-brands/fireworks.svg +5 -0
  11. package/dist/assets/model-brands/gemini.png +0 -0
  12. package/dist/assets/model-brands/google-vertex.svg +25 -0
  13. package/dist/assets/model-brands/huggingface.svg +8 -0
  14. package/dist/assets/model-brands/kimi-dark.svg +5 -0
  15. package/dist/assets/model-brands/kimi-light.svg +5 -0
  16. package/dist/assets/model-brands/minimax-dark.svg +1 -0
  17. package/dist/assets/model-brands/minimax-light.svg +1 -0
  18. package/dist/assets/model-brands/moonshot-dark.svg +1 -0
  19. package/dist/assets/model-brands/moonshot-light.svg +1 -0
  20. package/dist/assets/model-brands/openai.svg +1 -0
  21. package/dist/assets/model-brands/opencode-dark.svg +18 -0
  22. package/dist/assets/model-brands/opencode-light.svg +18 -0
  23. package/dist/assets/model-brands/openrouter-dark.svg +3 -0
  24. package/dist/assets/model-brands/openrouter-light.svg +3 -0
  25. package/dist/assets/model-brands/siliconflow.png +0 -0
  26. package/dist/assets/model-brands/together.svg +21 -0
  27. package/dist/assets/model-brands/xai-dark.svg +19 -0
  28. package/dist/assets/model-brands/xai-light.svg +19 -0
  29. package/dist/assets/model-brands/zai-dark.svg +35 -0
  30. package/dist/assets/model-brands/zai-light.svg +35 -0
  31. package/dist/bundled-plugins/@cordisx/plugin-cli-proxy-api/README.md +68 -33
  32. package/dist/bundled-plugins/@cordisx/plugin-cli-proxy-api/README.zh-Hans.md +59 -25
  33. package/dist/bundled-plugins/@cordisx/plugin-cli-proxy-api/THIRD_PARTY_NOTICES.md +6 -2
  34. package/dist/bundled-plugins/@cordisx/plugin-cli-proxy-api/config/cli-proxy-api.yaml +7 -0
  35. package/dist/bundled-plugins/@cordisx/plugin-cli-proxy-api/cordisx-package.json +2 -2
  36. package/dist/bundled-plugins/@cordisx/plugin-cli-proxy-api/dist/extensions.mjs +427 -0
  37. package/dist/bundled-plugins/@cordisx/plugin-cli-proxy-api/dist/gateway.mjs +600 -56
  38. package/dist/bundled-plugins/@cordisx/plugin-cli-proxy-api/dist/service.mjs +426 -0
  39. package/dist/bundled-plugins/@cordisx/plugin-cli-proxy-api/dist/types/service/extension-context.d.ts +2 -0
  40. package/dist/bundled-plugins/@cordisx/plugin-cli-proxy-api/dist/types/service/extension-registry.d.ts +163 -0
  41. package/dist/bundled-plugins/@cordisx/plugin-cli-proxy-api/dist/types/service/gateway-definition.d.ts +7 -0
  42. package/dist/bundled-plugins/@cordisx/plugin-cli-proxy-api/dist/types/service/gateway.d.ts +4 -1
  43. package/dist/bundled-plugins/@cordisx/plugin-cli-proxy-api/dist/types/service/index.d.ts +1 -0
  44. package/dist/bundled-plugins/@cordisx/plugin-cli-proxy-api/package.json +10 -3
  45. package/dist/bundled-plugins/@cordisx/plugin-cli-proxy-api/runtime/cli-proxy-plugins/darwin/arm64/cordisx-gateway-bridge.dylib +0 -0
  46. package/dist/bundled-plugins/@cordisx/plugin-cli-proxy-api/runtime/cli-proxy-plugins/linux/x64/cordisx-gateway-bridge.so +0 -0
  47. package/dist/bundled-plugins/@cordisx/plugin-cli-proxy-api/runtime-manifest.json +44 -2
  48. package/dist/bundled-plugins/@cordisx/plugin-cli-proxy-api/schemas/cli-proxy-gateway-adapter.v1.schema.json +94 -0
  49. package/dist/bundled-plugins/@cordisx/plugin-cli-proxy-api/schemas/cli-proxy-gateway-connection.v1.schema.json +66 -0
  50. package/dist/bundled-plugins/@cordisx/plugin-cli-proxy-api/schemas/cli-proxy-gateway-extension-plan.v1.schema.json +71 -0
  51. package/dist/shortcut-presentation.js +19 -2
  52. package/dist/src/app-launcher/install.test.d.ts +2 -0
  53. package/dist/src/app-launcher/install.test.d.ts.map +1 -0
  54. package/dist/src/app-launcher/install.test.js +204 -0
  55. package/dist/src/app-launcher/install.test.js.map +1 -0
  56. package/dist/src/app-launcher/model.d.ts +23 -0
  57. package/dist/src/app-launcher/model.d.ts.map +1 -0
  58. package/dist/src/app-launcher/model.js +18 -0
  59. package/dist/src/app-launcher/model.js.map +1 -0
  60. package/dist/src/app-launcher/postinstall.d.ts +12 -0
  61. package/dist/src/app-launcher/postinstall.d.ts.map +1 -0
  62. package/dist/src/app-launcher/postinstall.js +39 -0
  63. package/dist/src/app-launcher/postinstall.js.map +1 -0
  64. package/dist/src/app-launcher/runtime-install.d.ts +16 -0
  65. package/dist/src/app-launcher/runtime-install.d.ts.map +1 -0
  66. package/dist/src/app-launcher/runtime-install.js +276 -0
  67. package/dist/src/app-launcher/runtime-install.js.map +1 -0
  68. package/dist/src/app-launcher/runtime.test.d.ts +2 -0
  69. package/dist/src/app-launcher/runtime.test.d.ts.map +1 -0
  70. package/dist/src/app-launcher/runtime.test.js +106 -0
  71. package/dist/src/app-launcher/runtime.test.js.map +1 -0
  72. package/dist/src/cli/activate-owned-host.d.ts +10 -0
  73. package/dist/src/cli/activate-owned-host.d.ts.map +1 -0
  74. package/dist/src/cli/activate-owned-host.js +29 -0
  75. package/dist/src/cli/activate-owned-host.js.map +1 -0
  76. package/dist/src/cli/app-command.d.ts +19 -0
  77. package/dist/src/cli/app-command.d.ts.map +1 -0
  78. package/dist/src/cli/app-command.js +246 -0
  79. package/dist/src/cli/app-command.js.map +1 -0
  80. package/dist/src/cli/app-entry.d.ts +13 -0
  81. package/dist/src/cli/app-entry.d.ts.map +1 -0
  82. package/dist/src/cli/app-entry.js +105 -0
  83. package/dist/src/cli/app-entry.js.map +1 -0
  84. package/dist/src/cli/help.d.ts +2 -0
  85. package/dist/src/cli/help.d.ts.map +1 -0
  86. package/dist/src/cli/help.js +30 -0
  87. package/dist/src/cli/help.js.map +1 -0
  88. package/dist/src/cli/host-lifecycle.d.ts +38 -0
  89. package/dist/src/cli/host-lifecycle.d.ts.map +1 -0
  90. package/dist/src/cli/host-lifecycle.js +57 -0
  91. package/dist/src/cli/host-lifecycle.js.map +1 -0
  92. package/dist/src/cli/native-submission-catalog-options.d.ts +17 -0
  93. package/dist/src/cli/native-submission-catalog-options.d.ts.map +1 -0
  94. package/dist/src/cli/native-submission-catalog-options.js +17 -0
  95. package/dist/src/cli/native-submission-catalog-options.js.map +1 -0
  96. package/dist/src/cli/parse.d.ts +6 -2
  97. package/dist/src/cli/parse.d.ts.map +1 -1
  98. package/dist/src/cli/parse.js +11 -4
  99. package/dist/src/cli/parse.js.map +1 -1
  100. package/dist/src/cli/production-host-bootstrap.d.ts +26 -0
  101. package/dist/src/cli/production-host-bootstrap.d.ts.map +1 -0
  102. package/dist/src/cli/production-host-bootstrap.js +115 -0
  103. package/dist/src/cli/production-host-bootstrap.js.map +1 -0
  104. package/dist/src/cli/production-plugin-management.d.ts +17 -0
  105. package/dist/src/cli/production-plugin-management.d.ts.map +1 -0
  106. package/dist/src/cli/production-plugin-management.js +52 -0
  107. package/dist/src/cli/production-plugin-management.js.map +1 -0
  108. package/dist/src/cli/renderer-composition.d.ts +2 -0
  109. package/dist/src/cli/renderer-composition.d.ts.map +1 -1
  110. package/dist/src/cli/renderer-composition.js +37 -17
  111. package/dist/src/cli/renderer-composition.js.map +1 -1
  112. package/dist/src/cli/run-command-dispatch.d.ts.map +1 -1
  113. package/dist/src/cli/run-command-dispatch.js +18 -2
  114. package/dist/src/cli/run-command-dispatch.js.map +1 -1
  115. package/dist/src/cli/run-command.d.ts +1 -16
  116. package/dist/src/cli/run-command.d.ts.map +1 -1
  117. package/dist/src/cli/run-command.js +96 -112
  118. package/dist/src/cli/run-command.js.map +1 -1
  119. package/dist/src/cli/run-support.d.ts +25 -13
  120. package/dist/src/cli/run-support.d.ts.map +1 -1
  121. package/dist/src/cli/run-support.js +86 -77
  122. package/dist/src/cli/run-support.js.map +1 -1
  123. package/dist/src/cli/shortcut-entry.d.ts +2 -6
  124. package/dist/src/cli/shortcut-entry.d.ts.map +1 -1
  125. package/dist/src/cli/shortcut-entry.js +2 -25
  126. package/dist/src/cli/shortcut-entry.js.map +1 -1
  127. package/dist/src/cli/shortcut-presentation-worker.d.ts +25 -0
  128. package/dist/src/cli/shortcut-presentation-worker.d.ts.map +1 -0
  129. package/dist/src/cli/shortcut-presentation-worker.js +125 -0
  130. package/dist/src/cli/shortcut-presentation-worker.js.map +1 -0
  131. package/dist/src/cli/startup-gate.d.ts +11 -0
  132. package/dist/src/cli/startup-gate.d.ts.map +1 -0
  133. package/dist/src/cli/startup-gate.js +156 -0
  134. package/dist/src/cli/startup-gate.js.map +1 -0
  135. package/dist/src/cli/supervisor-command.d.ts +7 -2
  136. package/dist/src/cli/supervisor-command.d.ts.map +1 -1
  137. package/dist/src/cli/supervisor-command.js +187 -46
  138. package/dist/src/cli/supervisor-command.js.map +1 -1
  139. package/dist/src/cli/supervisor-control.d.ts +1 -1
  140. package/dist/src/cli/supervisor-control.d.ts.map +1 -1
  141. package/dist/src/cli/supervisor-control.js +19 -4
  142. package/dist/src/cli/supervisor-control.js.map +1 -1
  143. package/dist/src/cli/supervisor-cwd.test.d.ts +2 -0
  144. package/dist/src/cli/supervisor-cwd.test.d.ts.map +1 -0
  145. package/dist/src/cli/supervisor-cwd.test.js +101 -0
  146. package/dist/src/cli/supervisor-cwd.test.js.map +1 -0
  147. package/dist/src/cli/supervisor-generation.test.d.ts +2 -0
  148. package/dist/src/cli/supervisor-generation.test.d.ts.map +1 -0
  149. package/dist/src/cli/supervisor-generation.test.js +91 -0
  150. package/dist/src/cli/supervisor-generation.test.js.map +1 -0
  151. package/dist/src/cli/supervisor-runtime.d.ts +6 -3
  152. package/dist/src/cli/supervisor-runtime.d.ts.map +1 -1
  153. package/dist/src/cli/supervisor-runtime.js +113 -32
  154. package/dist/src/cli/supervisor-runtime.js.map +1 -1
  155. package/dist/src/cli/supervisor-state.d.ts +8 -0
  156. package/dist/src/cli/supervisor-state.d.ts.map +1 -1
  157. package/dist/src/cli/supervisor-state.js +22 -33
  158. package/dist/src/cli/supervisor-state.js.map +1 -1
  159. package/dist/src/config/home-config-model-catalogs.d.ts +27 -0
  160. package/dist/src/config/home-config-model-catalogs.d.ts.map +1 -0
  161. package/dist/src/config/home-config-model-catalogs.js +168 -0
  162. package/dist/src/config/home-config-model-catalogs.js.map +1 -0
  163. package/dist/src/config/home-config.d.ts +5 -0
  164. package/dist/src/config/home-config.d.ts.map +1 -1
  165. package/dist/src/config/home-config.js +10 -8
  166. package/dist/src/config/home-config.js.map +1 -1
  167. package/dist/src/current-user-native-pins.d.ts +6 -0
  168. package/dist/src/current-user-native-pins.d.ts.map +1 -1
  169. package/dist/src/current-user-native-pins.js +7 -0
  170. package/dist/src/current-user-native-pins.js.map +1 -1
  171. package/dist/src/launcher/bundle.d.ts +4 -0
  172. package/dist/src/launcher/bundle.d.ts.map +1 -1
  173. package/dist/src/launcher/bundle.js +25 -0
  174. package/dist/src/launcher/bundle.js.map +1 -1
  175. package/dist/src/launcher/cdp-installation-bootstrap.d.ts.map +1 -1
  176. package/dist/src/launcher/cdp-installation-bootstrap.js +4 -2
  177. package/dist/src/launcher/cdp-installation-bootstrap.js.map +1 -1
  178. package/dist/src/launcher/cdp-installation-support.d.ts +3 -22
  179. package/dist/src/launcher/cdp-installation-support.d.ts.map +1 -1
  180. package/dist/src/launcher/cdp-installation-support.js +58 -131
  181. package/dist/src/launcher/cdp-installation-support.js.map +1 -1
  182. package/dist/src/launcher/cdp-installation.d.ts.map +1 -1
  183. package/dist/src/launcher/cdp-installation.js +18 -32
  184. package/dist/src/launcher/cdp-installation.js.map +1 -1
  185. package/dist/src/launcher/cdp-runtime-bindings.d.ts +4 -0
  186. package/dist/src/launcher/cdp-runtime-bindings.d.ts.map +1 -0
  187. package/dist/src/launcher/cdp-runtime-bindings.js +8 -0
  188. package/dist/src/launcher/cdp-runtime-bindings.js.map +1 -0
  189. package/dist/src/launcher/cdp.d.ts.map +1 -1
  190. package/dist/src/launcher/cdp.js +52 -3
  191. package/dist/src/launcher/cdp.js.map +1 -1
  192. package/dist/src/launcher/codex-config-model-providers.d.ts +25 -1
  193. package/dist/src/launcher/codex-config-model-providers.d.ts.map +1 -1
  194. package/dist/src/launcher/codex-config-model-providers.js +113 -23
  195. package/dist/src/launcher/codex-config-model-providers.js.map +1 -1
  196. package/dist/src/launcher/host-generation-bootloader.d.ts +3 -0
  197. package/dist/src/launcher/host-generation-bootloader.d.ts.map +1 -0
  198. package/dist/src/launcher/host-generation-bootloader.js +94 -0
  199. package/dist/src/launcher/host-generation-bootloader.js.map +1 -0
  200. package/dist/src/launcher/host-generation-graph.d.ts +11 -5
  201. package/dist/src/launcher/host-generation-graph.d.ts.map +1 -1
  202. package/dist/src/launcher/host-generation-graph.js +197 -29
  203. package/dist/src/launcher/host-generation-graph.js.map +1 -1
  204. package/dist/src/launcher/kernel-operation-lock.d.ts +5 -0
  205. package/dist/src/launcher/kernel-operation-lock.d.ts.map +1 -0
  206. package/dist/src/launcher/kernel-operation-lock.js +42 -0
  207. package/dist/src/launcher/kernel-operation-lock.js.map +1 -0
  208. package/dist/src/launcher/loopback-permissions.d.ts +25 -0
  209. package/dist/src/launcher/loopback-permissions.d.ts.map +1 -0
  210. package/dist/src/launcher/loopback-permissions.js +112 -0
  211. package/dist/src/launcher/loopback-permissions.js.map +1 -0
  212. package/dist/src/launcher/main-inspector.d.ts +22 -0
  213. package/dist/src/launcher/main-inspector.d.ts.map +1 -0
  214. package/dist/src/launcher/main-inspector.js +101 -0
  215. package/dist/src/launcher/main-inspector.js.map +1 -0
  216. package/dist/src/launcher/model-catalog/abort.d.ts +3 -0
  217. package/dist/src/launcher/model-catalog/abort.d.ts.map +1 -0
  218. package/dist/src/launcher/model-catalog/abort.js +16 -0
  219. package/dist/src/launcher/model-catalog/abort.js.map +1 -0
  220. package/dist/src/launcher/model-catalog/atomic-store.d.ts +13 -0
  221. package/dist/src/launcher/model-catalog/atomic-store.d.ts.map +1 -0
  222. package/dist/src/launcher/model-catalog/atomic-store.js +85 -0
  223. package/dist/src/launcher/model-catalog/atomic-store.js.map +1 -0
  224. package/dist/src/launcher/model-catalog/builtin-registry.d.ts +4 -0
  225. package/dist/src/launcher/model-catalog/builtin-registry.d.ts.map +1 -0
  226. package/dist/src/launcher/model-catalog/builtin-registry.js +13 -0
  227. package/dist/src/launcher/model-catalog/builtin-registry.js.map +1 -0
  228. package/dist/src/launcher/model-catalog/configured-source.d.ts +15 -0
  229. package/dist/src/launcher/model-catalog/configured-source.d.ts.map +1 -0
  230. package/dist/src/launcher/model-catalog/configured-source.js +99 -0
  231. package/dist/src/launcher/model-catalog/configured-source.js.map +1 -0
  232. package/dist/src/launcher/model-catalog/contracts.d.ts +95 -0
  233. package/dist/src/launcher/model-catalog/contracts.d.ts.map +1 -0
  234. package/dist/src/launcher/model-catalog/contracts.js +55 -0
  235. package/dist/src/launcher/model-catalog/contracts.js.map +1 -0
  236. package/dist/src/launcher/model-catalog/deepseek.d.ts +4 -0
  237. package/dist/src/launcher/model-catalog/deepseek.d.ts.map +1 -0
  238. package/dist/src/launcher/model-catalog/deepseek.js +47 -0
  239. package/dist/src/launcher/model-catalog/deepseek.js.map +1 -0
  240. package/dist/src/launcher/model-catalog/discovery-http.d.ts +3 -0
  241. package/dist/src/launcher/model-catalog/discovery-http.d.ts.map +1 -0
  242. package/dist/src/launcher/model-catalog/discovery-http.js +90 -0
  243. package/dist/src/launcher/model-catalog/discovery-http.js.map +1 -0
  244. package/dist/src/launcher/model-catalog/file-source.d.ts +10 -0
  245. package/dist/src/launcher/model-catalog/file-source.d.ts.map +1 -0
  246. package/dist/src/launcher/model-catalog/file-source.js +136 -0
  247. package/dist/src/launcher/model-catalog/file-source.js.map +1 -0
  248. package/dist/src/launcher/model-catalog/managed-catalog-composition.d.ts +36 -0
  249. package/dist/src/launcher/model-catalog/managed-catalog-composition.d.ts.map +1 -0
  250. package/dist/src/launcher/model-catalog/managed-catalog-composition.js +568 -0
  251. package/dist/src/launcher/model-catalog/managed-catalog-composition.js.map +1 -0
  252. package/dist/src/launcher/model-catalog/managed-catalog-state.d.ts +16 -0
  253. package/dist/src/launcher/model-catalog/managed-catalog-state.d.ts.map +1 -0
  254. package/dist/src/launcher/model-catalog/managed-catalog-state.js +130 -0
  255. package/dist/src/launcher/model-catalog/managed-catalog-state.js.map +1 -0
  256. package/dist/src/launcher/model-catalog/managed-provider-api.d.ts +14 -0
  257. package/dist/src/launcher/model-catalog/managed-provider-api.d.ts.map +1 -0
  258. package/dist/src/launcher/model-catalog/managed-provider-api.js +53 -0
  259. package/dist/src/launcher/model-catalog/managed-provider-api.js.map +1 -0
  260. package/dist/src/launcher/model-catalog/managed-provider-capture.d.ts +4 -0
  261. package/dist/src/launcher/model-catalog/managed-provider-capture.d.ts.map +1 -0
  262. package/dist/src/launcher/model-catalog/managed-provider-capture.js +71 -0
  263. package/dist/src/launcher/model-catalog/managed-provider-capture.js.map +1 -0
  264. package/dist/src/launcher/model-catalog/managed-provider-owner.d.ts +38 -0
  265. package/dist/src/launcher/model-catalog/managed-provider-owner.d.ts.map +1 -0
  266. package/dist/src/launcher/model-catalog/managed-provider-owner.js +352 -0
  267. package/dist/src/launcher/model-catalog/managed-provider-owner.js.map +1 -0
  268. package/dist/src/launcher/model-catalog/managed-provider-schema.d.ts +28 -0
  269. package/dist/src/launcher/model-catalog/managed-provider-schema.d.ts.map +1 -0
  270. package/dist/src/launcher/model-catalog/managed-provider-schema.js +71 -0
  271. package/dist/src/launcher/model-catalog/managed-provider-schema.js.map +1 -0
  272. package/dist/src/launcher/model-catalog/native-catalog-management.d.ts +60 -0
  273. package/dist/src/launcher/model-catalog/native-catalog-management.d.ts.map +1 -0
  274. package/dist/src/launcher/model-catalog/native-catalog-management.js +408 -0
  275. package/dist/src/launcher/model-catalog/native-catalog-management.js.map +1 -0
  276. package/dist/src/launcher/model-catalog/native-config-catalog-discovery.d.ts +28 -0
  277. package/dist/src/launcher/model-catalog/native-config-catalog-discovery.d.ts.map +1 -0
  278. package/dist/src/launcher/model-catalog/native-config-catalog-discovery.js +203 -0
  279. package/dist/src/launcher/model-catalog/native-config-catalog-discovery.js.map +1 -0
  280. package/dist/src/launcher/model-catalog/opencode-go.d.ts +4 -0
  281. package/dist/src/launcher/model-catalog/opencode-go.d.ts.map +1 -0
  282. package/dist/src/launcher/model-catalog/opencode-go.js +39 -0
  283. package/dist/src/launcher/model-catalog/opencode-go.js.map +1 -0
  284. package/dist/src/launcher/model-catalog/openrouter.d.ts +4 -0
  285. package/dist/src/launcher/model-catalog/openrouter.d.ts.map +1 -0
  286. package/dist/src/launcher/model-catalog/openrouter.js +71 -0
  287. package/dist/src/launcher/model-catalog/openrouter.js.map +1 -0
  288. package/dist/src/launcher/model-catalog/owner-projection.d.ts +20 -0
  289. package/dist/src/launcher/model-catalog/owner-projection.d.ts.map +1 -0
  290. package/dist/src/launcher/model-catalog/owner-projection.js +37 -0
  291. package/dist/src/launcher/model-catalog/owner-projection.js.map +1 -0
  292. package/dist/src/launcher/model-catalog/registry.d.ts +7 -0
  293. package/dist/src/launcher/model-catalog/registry.d.ts.map +1 -0
  294. package/dist/src/launcher/model-catalog/registry.js +19 -0
  295. package/dist/src/launcher/model-catalog/registry.js.map +1 -0
  296. package/dist/src/launcher/model-catalog/request-capability.d.ts +10 -0
  297. package/dist/src/launcher/model-catalog/request-capability.d.ts.map +1 -0
  298. package/dist/src/launcher/model-catalog/request-capability.js +74 -0
  299. package/dist/src/launcher/model-catalog/request-capability.js.map +1 -0
  300. package/dist/src/launcher/model-catalog/script-composition.d.ts +21 -0
  301. package/dist/src/launcher/model-catalog/script-composition.d.ts.map +1 -0
  302. package/dist/src/launcher/model-catalog/script-composition.js +26 -0
  303. package/dist/src/launcher/model-catalog/script-composition.js.map +1 -0
  304. package/dist/src/launcher/model-catalog/script-executor.d.ts +5 -0
  305. package/dist/src/launcher/model-catalog/script-executor.d.ts.map +1 -0
  306. package/dist/src/launcher/model-catalog/script-executor.js +140 -0
  307. package/dist/src/launcher/model-catalog/script-executor.js.map +1 -0
  308. package/dist/src/launcher/model-catalog/script-management.d.ts +4 -0
  309. package/dist/src/launcher/model-catalog/script-management.d.ts.map +1 -0
  310. package/dist/src/launcher/model-catalog/script-management.js +29 -0
  311. package/dist/src/launcher/model-catalog/script-management.js.map +1 -0
  312. package/dist/src/launcher/model-catalog/script-output-parser.d.ts +3 -0
  313. package/dist/src/launcher/model-catalog/script-output-parser.d.ts.map +1 -0
  314. package/dist/src/launcher/model-catalog/script-output-parser.js +59 -0
  315. package/dist/src/launcher/model-catalog/script-output-parser.js.map +1 -0
  316. package/dist/src/launcher/model-catalog/script-runtime.d.ts +30 -0
  317. package/dist/src/launcher/model-catalog/script-runtime.d.ts.map +1 -0
  318. package/dist/src/launcher/model-catalog/script-runtime.js +164 -0
  319. package/dist/src/launcher/model-catalog/script-runtime.js.map +1 -0
  320. package/dist/src/launcher/model-catalog/script-schema.d.ts +42 -0
  321. package/dist/src/launcher/model-catalog/script-schema.d.ts.map +1 -0
  322. package/dist/src/launcher/model-catalog/script-schema.js +129 -0
  323. package/dist/src/launcher/model-catalog/script-schema.js.map +1 -0
  324. package/dist/src/launcher/model-catalog/script-types.d.ts +84 -0
  325. package/dist/src/launcher/model-catalog/script-types.d.ts.map +1 -0
  326. package/dist/src/launcher/model-catalog/script-types.js +9 -0
  327. package/dist/src/launcher/model-catalog/script-types.js.map +1 -0
  328. package/dist/src/launcher/model-catalog/service.d.ts +39 -0
  329. package/dist/src/launcher/model-catalog/service.d.ts.map +1 -0
  330. package/dist/src/launcher/model-catalog/service.js +292 -0
  331. package/dist/src/launcher/model-catalog/service.js.map +1 -0
  332. package/dist/src/launcher/model-catalog/supplement.d.ts +4 -0
  333. package/dist/src/launcher/model-catalog/supplement.d.ts.map +1 -0
  334. package/dist/src/launcher/model-catalog/supplement.js +59 -0
  335. package/dist/src/launcher/model-catalog/supplement.js.map +1 -0
  336. package/dist/src/launcher/native-account-structure.d.ts +3 -0
  337. package/dist/src/launcher/native-account-structure.d.ts.map +1 -1
  338. package/dist/src/launcher/native-account-structure.js +5 -2
  339. package/dist/src/launcher/native-account-structure.js.map +1 -1
  340. package/dist/src/launcher/native-model-provider-catalog.d.ts +6 -1
  341. package/dist/src/launcher/native-model-provider-catalog.d.ts.map +1 -1
  342. package/dist/src/launcher/native-model-provider-catalog.js +16 -3
  343. package/dist/src/launcher/native-model-provider-catalog.js.map +1 -1
  344. package/dist/src/launcher/native-predispatch-interception.d.ts +6 -2
  345. package/dist/src/launcher/native-predispatch-interception.d.ts.map +1 -1
  346. package/dist/src/launcher/native-predispatch-interception.js +5 -1
  347. package/dist/src/launcher/native-predispatch-interception.js.map +1 -1
  348. package/dist/src/launcher/native-submission-cdp-channel.d.ts +7 -0
  349. package/dist/src/launcher/native-submission-cdp-channel.d.ts.map +1 -1
  350. package/dist/src/launcher/native-submission-cdp-channel.js +54 -7
  351. package/dist/src/launcher/native-submission-cdp-channel.js.map +1 -1
  352. package/dist/src/launcher/native-submission-composition.d.ts +25 -2
  353. package/dist/src/launcher/native-submission-composition.d.ts.map +1 -1
  354. package/dist/src/launcher/native-submission-composition.js +378 -59
  355. package/dist/src/launcher/native-submission-composition.js.map +1 -1
  356. package/dist/src/launcher/native-submission-controller.d.ts +1 -0
  357. package/dist/src/launcher/native-submission-controller.d.ts.map +1 -1
  358. package/dist/src/launcher/native-submission-controller.js +27 -3
  359. package/dist/src/launcher/native-submission-controller.js.map +1 -1
  360. package/dist/src/launcher/native-submission-structure.d.ts +7 -0
  361. package/dist/src/launcher/native-submission-structure.d.ts.map +1 -1
  362. package/dist/src/launcher/native-submission-structure.js +25 -3
  363. package/dist/src/launcher/native-submission-structure.js.map +1 -1
  364. package/dist/src/launcher/process-identity.d.ts +25 -0
  365. package/dist/src/launcher/process-identity.d.ts.map +1 -0
  366. package/dist/src/launcher/process-identity.js +126 -0
  367. package/dist/src/launcher/process-identity.js.map +1 -0
  368. package/dist/src/launcher/process.d.ts +18 -6
  369. package/dist/src/launcher/process.d.ts.map +1 -1
  370. package/dist/src/launcher/process.js +186 -145
  371. package/dist/src/launcher/process.js.map +1 -1
  372. package/dist/src/launcher/production-graph-admission.d.ts +1 -1
  373. package/dist/src/launcher/production-graph-admission.d.ts.map +1 -1
  374. package/dist/src/launcher/production-graph-admission.js +8 -3
  375. package/dist/src/launcher/production-graph-admission.js.map +1 -1
  376. package/dist/src/launcher/profile-launch-lease.d.ts +17 -0
  377. package/dist/src/launcher/profile-launch-lease.d.ts.map +1 -0
  378. package/dist/src/launcher/profile-launch-lease.js +180 -0
  379. package/dist/src/launcher/profile-launch-lease.js.map +1 -0
  380. package/dist/src/launcher/provider-profile-sync-codex-target.d.ts +22 -0
  381. package/dist/src/launcher/provider-profile-sync-codex-target.d.ts.map +1 -0
  382. package/dist/src/launcher/provider-profile-sync-codex-target.js +213 -0
  383. package/dist/src/launcher/provider-profile-sync-codex-target.js.map +1 -0
  384. package/dist/src/launcher/provider-profile-sync-codex.d.ts +21 -0
  385. package/dist/src/launcher/provider-profile-sync-codex.d.ts.map +1 -0
  386. package/dist/src/launcher/provider-profile-sync-codex.js +589 -0
  387. package/dist/src/launcher/provider-profile-sync-codex.js.map +1 -0
  388. package/dist/src/launcher/provider-profile-sync-contracts.d.ts +134 -0
  389. package/dist/src/launcher/provider-profile-sync-contracts.d.ts.map +1 -0
  390. package/dist/src/launcher/provider-profile-sync-contracts.js +114 -0
  391. package/dist/src/launcher/provider-profile-sync-contracts.js.map +1 -0
  392. package/dist/src/launcher/provider-profile-sync-ledger.d.ts +82 -0
  393. package/dist/src/launcher/provider-profile-sync-ledger.d.ts.map +1 -0
  394. package/dist/src/launcher/provider-profile-sync-ledger.js +355 -0
  395. package/dist/src/launcher/provider-profile-sync-ledger.js.map +1 -0
  396. package/dist/src/launcher/provider-profile-sync-projection.d.ts +21 -0
  397. package/dist/src/launcher/provider-profile-sync-projection.d.ts.map +1 -0
  398. package/dist/src/launcher/provider-profile-sync-projection.js +120 -0
  399. package/dist/src/launcher/provider-profile-sync-projection.js.map +1 -0
  400. package/dist/src/launcher/secret-resolver.d.ts.map +1 -1
  401. package/dist/src/launcher/secret-resolver.js +3 -0
  402. package/dist/src/launcher/secret-resolver.js.map +1 -1
  403. package/dist/src/model-catalog/management-overlay.d.ts +67 -0
  404. package/dist/src/model-catalog/management-overlay.d.ts.map +1 -0
  405. package/dist/src/model-catalog/management-overlay.js +193 -0
  406. package/dist/src/model-catalog/management-overlay.js.map +1 -0
  407. package/dist/src/model-catalog-management.d.ts +132 -0
  408. package/dist/src/model-catalog-management.d.ts.map +1 -0
  409. package/dist/src/model-catalog-management.js +2 -0
  410. package/dist/src/model-catalog-management.js.map +1 -0
  411. package/dist/src/model-selector-branding.d.ts +24 -0
  412. package/dist/src/model-selector-branding.d.ts.map +1 -0
  413. package/dist/src/model-selector-branding.js +201 -0
  414. package/dist/src/model-selector-branding.js.map +1 -0
  415. package/dist/src/renderer/adapter/native-model-provider-interaction.d.ts +4 -0
  416. package/dist/src/renderer/adapter/native-model-provider-interaction.d.ts.map +1 -0
  417. package/dist/src/renderer/adapter/native-model-provider-interaction.js +45 -0
  418. package/dist/src/renderer/adapter/native-model-provider-interaction.js.map +1 -0
  419. package/dist/src/renderer/adapter/native-model-provider-seat.d.ts +2 -0
  420. package/dist/src/renderer/adapter/native-model-provider-seat.d.ts.map +1 -1
  421. package/dist/src/renderer/adapter/native-model-provider-seat.js +7 -7
  422. package/dist/src/renderer/adapter/native-model-provider-seat.js.map +1 -1
  423. package/dist/src/renderer/adapter/reasoning.d.ts.map +1 -1
  424. package/dist/src/renderer/adapter/reasoning.js +6 -3
  425. package/dist/src/renderer/adapter/reasoning.js.map +1 -1
  426. package/dist/src/renderer/adapter/startup-presentation.d.ts +17 -0
  427. package/dist/src/renderer/adapter/startup-presentation.d.ts.map +1 -0
  428. package/dist/src/renderer/adapter/startup-presentation.js +21 -0
  429. package/dist/src/renderer/adapter/startup-presentation.js.map +1 -0
  430. package/dist/src/renderer/adapter/startup-readiness.d.ts +21 -0
  431. package/dist/src/renderer/adapter/startup-readiness.d.ts.map +1 -0
  432. package/dist/src/renderer/adapter/startup-readiness.js +196 -0
  433. package/dist/src/renderer/adapter/startup-readiness.js.map +1 -0
  434. package/dist/src/renderer/current-user/native.d.ts +17 -1
  435. package/dist/src/renderer/current-user/native.d.ts.map +1 -1
  436. package/dist/src/renderer/current-user/native.js +20 -7
  437. package/dist/src/renderer/current-user/native.js.map +1 -1
  438. package/dist/src/renderer/host-ui/HostMenu.d.ts +2 -1
  439. package/dist/src/renderer/host-ui/HostMenu.d.ts.map +1 -1
  440. package/dist/src/renderer/host-ui/HostMenu.js +17 -5
  441. package/dist/src/renderer/host-ui/HostMenu.js.map +1 -1
  442. package/dist/src/renderer/host-ui/ModelBrandIcon.d.ts +8 -0
  443. package/dist/src/renderer/host-ui/ModelBrandIcon.d.ts.map +1 -0
  444. package/dist/src/renderer/host-ui/ModelBrandIcon.js +93 -0
  445. package/dist/src/renderer/host-ui/ModelBrandIcon.js.map +1 -0
  446. package/dist/src/renderer/host-ui/SelectField.d.ts +2 -1
  447. package/dist/src/renderer/host-ui/SelectField.d.ts.map +1 -1
  448. package/dist/src/renderer/host-ui/SelectField.js +2 -2
  449. package/dist/src/renderer/host-ui/SelectField.js.map +1 -1
  450. package/dist/src/renderer/install-model-provider-selector.d.ts.map +1 -1
  451. package/dist/src/renderer/install-model-provider-selector.js +24 -8
  452. package/dist/src/renderer/install-model-provider-selector.js.map +1 -1
  453. package/dist/src/renderer/manager/pages/ModelServicesPage.d.ts.map +1 -1
  454. package/dist/src/renderer/manager/pages/ModelServicesPage.js +47 -6
  455. package/dist/src/renderer/manager/pages/ModelServicesPage.js.map +1 -1
  456. package/dist/src/renderer/manager/pages/model-catalog/CatalogBinding.d.ts +16 -0
  457. package/dist/src/renderer/manager/pages/model-catalog/CatalogBinding.d.ts.map +1 -0
  458. package/dist/src/renderer/manager/pages/model-catalog/CatalogBinding.js +131 -0
  459. package/dist/src/renderer/manager/pages/model-catalog/CatalogBinding.js.map +1 -0
  460. package/dist/src/renderer/manager/pages/model-catalog/CatalogInput.d.ts +6 -0
  461. package/dist/src/renderer/manager/pages/model-catalog/CatalogInput.d.ts.map +1 -0
  462. package/dist/src/renderer/manager/pages/model-catalog/CatalogInput.js +12 -0
  463. package/dist/src/renderer/manager/pages/model-catalog/CatalogInput.js.map +1 -0
  464. package/dist/src/renderer/manager/pages/model-catalog/ConnectionEditor.d.ts +8 -0
  465. package/dist/src/renderer/manager/pages/model-catalog/ConnectionEditor.d.ts.map +1 -0
  466. package/dist/src/renderer/manager/pages/model-catalog/ConnectionEditor.js +82 -0
  467. package/dist/src/renderer/manager/pages/model-catalog/ConnectionEditor.js.map +1 -0
  468. package/dist/src/renderer/manager/pages/model-catalog/ModelEditor.d.ts +10 -0
  469. package/dist/src/renderer/manager/pages/model-catalog/ModelEditor.d.ts.map +1 -0
  470. package/dist/src/renderer/manager/pages/model-catalog/ModelEditor.js +74 -0
  471. package/dist/src/renderer/manager/pages/model-catalog/ModelEditor.js.map +1 -0
  472. package/dist/src/renderer/manager/pages/model-catalog/ScriptEditor.d.ts +9 -0
  473. package/dist/src/renderer/manager/pages/model-catalog/ScriptEditor.d.ts.map +1 -0
  474. package/dist/src/renderer/manager/pages/model-catalog/ScriptEditor.js +82 -0
  475. package/dist/src/renderer/manager/pages/model-catalog/ScriptEditor.js.map +1 -0
  476. package/dist/src/renderer/manager/pages/model-catalog/model-catalog.css +254 -0
  477. package/dist/src/renderer/model-catalog-client.d.ts +26 -0
  478. package/dist/src/renderer/model-catalog-client.d.ts.map +1 -0
  479. package/dist/src/renderer/model-catalog-client.js +122 -0
  480. package/dist/src/renderer/model-catalog-client.js.map +1 -0
  481. package/dist/src/renderer/model-catalog-projection.d.ts +5 -0
  482. package/dist/src/renderer/model-catalog-projection.d.ts.map +1 -0
  483. package/dist/src/renderer/model-catalog-projection.js +176 -0
  484. package/dist/src/renderer/model-catalog-projection.js.map +1 -0
  485. package/dist/src/renderer/model-provider-selector.d.ts +2 -1
  486. package/dist/src/renderer/model-provider-selector.d.ts.map +1 -1
  487. package/dist/src/renderer/model-provider-selector.js +58 -18
  488. package/dist/src/renderer/model-provider-selector.js.map +1 -1
  489. package/dist/src/renderer/model-providers.css +14 -1
  490. package/dist/src/renderer/model-providers.d.ts +19 -2
  491. package/dist/src/renderer/model-providers.d.ts.map +1 -1
  492. package/dist/src/renderer/model-providers.js +62 -2
  493. package/dist/src/renderer/model-providers.js.map +1 -1
  494. package/dist/src/renderer/native-model-provider-transport.d.ts +2 -0
  495. package/dist/src/renderer/native-model-provider-transport.d.ts.map +1 -1
  496. package/dist/src/renderer/native-model-provider-transport.js +57 -9
  497. package/dist/src/renderer/native-model-provider-transport.js.map +1 -1
  498. package/dist/src/renderer/native-provider-selection-client.d.ts +8 -1
  499. package/dist/src/renderer/native-provider-selection-client.d.ts.map +1 -1
  500. package/dist/src/renderer/native-provider-selection-client.js.map +1 -1
  501. package/dist/src/renderer/runtime-install.d.ts +2 -2
  502. package/dist/src/renderer/runtime-install.d.ts.map +1 -1
  503. package/dist/src/renderer/runtime-install.js +27 -11
  504. package/dist/src/renderer/runtime-install.js.map +1 -1
  505. package/dist/src/renderer/runtime-plugin-mount.d.ts +1 -1
  506. package/dist/src/renderer/runtime-plugin-mount.d.ts.map +1 -1
  507. package/dist/src/renderer/runtime-plugin-mount.js +5 -1
  508. package/dist/src/renderer/runtime-plugin-mount.js.map +1 -1
  509. package/dist/src/renderer/runtime-shared.d.ts +1 -0
  510. package/dist/src/renderer/runtime-shared.d.ts.map +1 -1
  511. package/dist/src/renderer/runtime-shared.js.map +1 -1
  512. package/dist/src/renderer/runtime-start-completion.d.ts +3 -0
  513. package/dist/src/renderer/runtime-start-completion.d.ts.map +1 -0
  514. package/dist/src/renderer/runtime-start-completion.js +12 -0
  515. package/dist/src/renderer/runtime-start-completion.js.map +1 -0
  516. package/dist/src/renderer/runtime-start.d.ts.map +1 -1
  517. package/dist/src/renderer/runtime-start.js +7 -6
  518. package/dist/src/renderer/runtime-start.js.map +1 -1
  519. package/dist/src/renderer/ui-copy/model-catalog.d.ts +455 -0
  520. package/dist/src/renderer/ui-copy/model-catalog.d.ts.map +1 -0
  521. package/dist/src/renderer/ui-copy/model-catalog.js +158 -0
  522. package/dist/src/renderer/ui-copy/model-catalog.js.map +1 -0
  523. package/dist/src/renderer/ui-copy.d.ts +453 -1
  524. package/dist/src/renderer/ui-copy.d.ts.map +1 -1
  525. package/dist/src/renderer/ui-copy.js +2 -0
  526. package/dist/src/renderer/ui-copy.js.map +1 -1
  527. package/dist/src/shortcuts/create.d.ts +17 -1
  528. package/dist/src/shortcuts/create.d.ts.map +1 -1
  529. package/dist/src/shortcuts/create.js +37 -0
  530. package/dist/src/shortcuts/create.js.map +1 -1
  531. package/dist/src/shortcuts/create.test.js +22 -1
  532. package/dist/src/shortcuts/create.test.js.map +1 -1
  533. package/dist/src/shortcuts/dock.d.ts +22 -6
  534. package/dist/src/shortcuts/dock.d.ts.map +1 -1
  535. package/dist/src/shortcuts/dock.js +156 -33
  536. package/dist/src/shortcuts/dock.js.map +1 -1
  537. package/dist/src/shortcuts/model.d.ts +7 -0
  538. package/dist/src/shortcuts/model.d.ts.map +1 -1
  539. package/dist/src/shortcuts/model.js +5 -1
  540. package/dist/src/shortcuts/model.js.map +1 -1
  541. package/dist/src/shortcuts/native.d.ts +6 -2
  542. package/dist/src/shortcuts/native.d.ts.map +1 -1
  543. package/dist/src/shortcuts/native.js +18 -4
  544. package/dist/src/shortcuts/native.js.map +1 -1
  545. package/dist/src/shortcuts/presentation.test.js +45 -0
  546. package/dist/src/shortcuts/presentation.test.js.map +1 -1
  547. package/dist/src/shortcuts/startup-brand.d.ts +6 -0
  548. package/dist/src/shortcuts/startup-brand.d.ts.map +1 -0
  549. package/dist/src/shortcuts/startup-brand.js +32 -0
  550. package/dist/src/shortcuts/startup-brand.js.map +1 -0
  551. package/dist/src/shortcuts/startup-cover.d.ts +15 -0
  552. package/dist/src/shortcuts/startup-cover.d.ts.map +1 -0
  553. package/dist/src/shortcuts/startup-cover.js +202 -0
  554. package/dist/src/shortcuts/startup-cover.js.map +1 -0
  555. package/dist/src/shortcuts/startup-release.d.ts +7 -0
  556. package/dist/src/shortcuts/startup-release.d.ts.map +1 -0
  557. package/dist/src/shortcuts/startup-release.js +11 -0
  558. package/dist/src/shortcuts/startup-release.js.map +1 -0
  559. package/dist/src/shortcuts/startup-timing.d.ts +7 -0
  560. package/dist/src/shortcuts/startup-timing.d.ts.map +1 -0
  561. package/dist/src/shortcuts/startup-timing.js +77 -0
  562. package/dist/src/shortcuts/startup-timing.js.map +1 -0
  563. package/package.json +4 -2
  564. package/scripts/refresh-existing-app.mjs +11 -0
  565. package/third_party/lobe-icons-MIT.txt +21 -0
  566. package/third_party/openai-apps-sdk-ui-MIT.txt +19 -0
@@ -1,11 +1,12 @@
1
1
  // src/service/gateway.ts
2
- import { createHash as createHash4 } from "node:crypto";
2
+ import { createHash as createHash5 } from "node:crypto";
3
3
 
4
4
  // src/service/gateway-definition.ts
5
5
  import { createHash } from "node:crypto";
6
6
  var CLI_PROXY_GATEWAY_MODEL_CATALOG_SCHEMA_V1 = "https://raw.githubusercontent.com/cordisx/plugin-cli-proxy-api/main/schemas/cli-proxy-gateway-model-catalog.v1.schema.json";
7
7
  var CLI_PROXY_GATEWAY_CODEX_UPSTREAMS_SCHEMA_V1 = "https://raw.githubusercontent.com/cordisx/plugin-cli-proxy-api/main/schemas/cli-proxy-gateway-codex-upstream.v1.schema.json";
8
8
  var CLI_PROXY_GATEWAY_OPENAI_UPSTREAMS_SCHEMA_V1 = "https://raw.githubusercontent.com/cordisx/plugin-cli-proxy-api/main/schemas/cli-proxy-gateway-openai-upstream.v1.schema.json";
9
+ var CLI_PROXY_GATEWAY_EXTENSION_PLAN_SCHEMA_V1 = "https://raw.githubusercontent.com/cordisx/plugin-cli-proxy-api/main/schemas/cli-proxy-gateway-extension-plan.v1.schema.json";
9
10
  var CLI_PROXY_MANAGEMENT_AUTH_FILES_SCHEMA_V1 = "https://raw.githubusercontent.com/cordisx/plugin-cli-proxy-api/main/schemas/cli-proxy-management-auth-files.v1.schema.json";
10
11
  var CLI_PROXY_MANAGEMENT_OPERATION_SCHEMA_V1 = "https://raw.githubusercontent.com/cordisx/plugin-cli-proxy-api/main/schemas/cli-proxy-management-operation.v1.schema.json";
11
12
  var CLI_PROXY_GATEWAY_SERVICE_ID = "gateway-runtime";
@@ -62,6 +63,13 @@ var cliProxyGatewayDefinition = {
62
63
  target: "configuration",
63
64
  pointer: "/openai-compatibility",
64
65
  valueSchema: CLI_PROXY_GATEWAY_OPENAI_UPSTREAMS_SCHEMA_V1
66
+ },
67
+ {
68
+ slot: "gateway-extensions",
69
+ source: "composition",
70
+ target: "configuration",
71
+ pointer: "/plugins/configs/cordisx-gateway-bridge",
72
+ valueSchema: CLI_PROXY_GATEWAY_EXTENSION_PLAN_SCHEMA_V1
65
73
  }
66
74
  ],
67
75
  authentication: { mode: "none" },
@@ -161,8 +169,8 @@ function providerId(value) {
161
169
  return `custom:${safe}`;
162
170
  }
163
171
  function revision(value) {
164
- const digest2 = createHash2("sha256").update(JSON.stringify(value)).digest("hex").slice(0, 12);
165
- return Number.parseInt(digest2, 16);
172
+ const digest3 = createHash2("sha256").update(JSON.stringify(value)).digest("hex").slice(0, 12);
173
+ return Number.parseInt(digest3, 16);
166
174
  }
167
175
  function bindingMatches(left, right) {
168
176
  return left.bindingId === right.bindingId && left.identity.pluginId === right.identity.pluginId && left.identity.serviceId === right.identity.serviceId && left.scope.profileId === right.scope.profileId && left.scope.generation === right.scope.generation;
@@ -482,21 +490,486 @@ var managedServiceUI = Object.freeze({
482
490
  }
483
491
  });
484
492
 
485
- // src/service/upstream-registry.ts
493
+ // src/service/extension-registry.ts
486
494
  import { createHash as createHash3 } from "node:crypto";
495
+ var CLI_PROXY_GATEWAY_ADAPTER_SCHEMA_V1 = "https://raw.githubusercontent.com/cordisx/plugin-cli-proxy-api/main/schemas/cli-proxy-gateway-adapter.v1.schema.json";
496
+ var CLI_PROXY_GATEWAY_CONNECTION_SCHEMA_V1 = "https://raw.githubusercontent.com/cordisx/plugin-cli-proxy-api/main/schemas/cli-proxy-gateway-connection.v1.schema.json";
497
+ var CLI_PROXY_GATEWAY_ADAPTER_CONTRACT_V1 = "cordisx.cli-proxy-gateway-adapter/v1";
498
+ var CLI_PROXY_GATEWAY_CONNECTION_CONTRACT_V1 = "cordisx.cli-proxy-gateway-connection/v1";
499
+ var CLI_PROXY_GATEWAY_EXTENSION_PLAN_CONTRACT_V1 = "cordisx.cli-proxy-gateway-extension-plan/v1";
500
+ var CLI_PROXY_GATEWAY_EXTENSION_REGISTRY_SERVICE_V1 = "cliProxyGatewayExtensions";
501
+ var ID_PATTERN = /^[a-z0-9][a-z0-9._-]{0,95}$/;
502
+ var HEADER_PATTERN = /^[!#$%&'*+.^_`|~0-9A-Za-z-]{1,128}$/;
503
+ var POINTER_PATTERN = /^(?:\/(?:[^~/]|~0|~1)*)+$/;
504
+ var MAX_ADAPTERS = 64;
505
+ var MAX_CONNECTIONS = 128;
506
+ var MAX_MODELS = 256;
507
+ function isText(value, maximum) {
508
+ return value.length > 0 && value.length <= maximum && value === value.trim() && !/[\u0000-\u001f\u007f]/.test(value);
509
+ }
510
+ function stableValue(value) {
511
+ if (Array.isArray(value)) return value.map(stableValue);
512
+ if (value === null || typeof value !== "object") return value;
513
+ return Object.fromEntries(
514
+ Object.entries(value).sort(([left], [right]) => left.localeCompare(right)).map(
515
+ ([key, item]) => [key, stableValue(item)]
516
+ )
517
+ );
518
+ }
519
+ function stableStringify(value) {
520
+ return JSON.stringify(stableValue(value));
521
+ }
522
+ function digest(value) {
523
+ return `sha256:${createHash3("sha256").update(stableStringify(value)).digest("hex")}`;
524
+ }
525
+ function rejection(failure) {
526
+ return { status: "rejected", diagnostic: failure };
527
+ }
528
+ function validRevision(value) {
529
+ return Number.isSafeInteger(value) && value > 0;
530
+ }
531
+ function validTemplate(value, depth = 0) {
532
+ if (depth > 12) return false;
533
+ if (value === null || typeof value === "boolean") return true;
534
+ if (typeof value === "number") return Number.isFinite(value);
535
+ if (typeof value === "string") return value.length <= 8192 && !value.includes("\0");
536
+ if (Array.isArray(value)) return value.length <= 128 && value.every((item) => validTemplate(item, depth + 1));
537
+ const entries = Object.entries(value);
538
+ return entries.length <= 128 && entries.every(([key, item]) => isText(key, 256) && validTemplate(item, depth + 1));
539
+ }
540
+ function validateAdapter(adapter) {
541
+ if (adapter.$schema !== CLI_PROXY_GATEWAY_ADAPTER_SCHEMA_V1 || adapter.contract !== CLI_PROXY_GATEWAY_ADAPTER_CONTRACT_V1 || adapter.schemaVersion !== 1) return { code: "invalid-registration", field: "contract", message: "Unsupported gateway adapter contract" };
542
+ if (!ID_PATTERN.test(adapter.adapterId)) {
543
+ return { code: "invalid-registration", field: "adapterId", message: "Invalid adapter id" };
544
+ }
545
+ if (!validRevision(adapter.revision)) {
546
+ return { code: "invalid-registration", field: "revision", message: "Revision must be a positive safe integer" };
547
+ }
548
+ if (adapter.sessionSources.length > 16) {
549
+ return { code: "invalid-registration", field: "sessionSources", message: "Too many session sources" };
550
+ }
551
+ for (const source of adapter.sessionSources) {
552
+ if (source.kind === "header" ? !HEADER_PATTERN.test(source.name) : !POINTER_PATTERN.test(source.pointer) || source.pointer.length > 512) return { code: "invalid-registration", field: "sessionSources", message: "Invalid session source" };
553
+ }
554
+ for (const name of adapter.request.clearHeaders ?? []) {
555
+ if (!HEADER_PATTERN.test(name)) {
556
+ return { code: "invalid-registration", field: "request.clearHeaders", message: "Invalid header name" };
557
+ }
558
+ }
559
+ for (const [name, value] of Object.entries(adapter.request.setHeaders ?? {})) {
560
+ if (!HEADER_PATTERN.test(name) || !validTemplate(value)) {
561
+ return { code: "invalid-registration", field: "request.setHeaders", message: "Invalid header transform" };
562
+ }
563
+ }
564
+ for (const [pointer, value] of Object.entries(adapter.request.setBody ?? {})) {
565
+ if (!POINTER_PATTERN.test(pointer) || pointer.length > 512 || !validTemplate(value)) {
566
+ return { code: "invalid-registration", field: "request.setBody", message: "Invalid body transform" };
567
+ }
568
+ }
569
+ if (stableStringify(adapter).length > 64 * 1024) {
570
+ return { code: "invalid-registration", message: "Adapter exceeds the supported size" };
571
+ }
572
+ return void 0;
573
+ }
574
+ function validateConnection(connection) {
575
+ if (connection.$schema !== CLI_PROXY_GATEWAY_CONNECTION_SCHEMA_V1 || connection.contract !== CLI_PROXY_GATEWAY_CONNECTION_CONTRACT_V1 || connection.schemaVersion !== 1) return { code: "invalid-registration", field: "contract", message: "Unsupported gateway connection contract" };
576
+ if (!ID_PATTERN.test(connection.connectionId)) {
577
+ return { code: "invalid-registration", field: "connectionId", message: "Invalid connection id" };
578
+ }
579
+ if (!validRevision(connection.revision)) {
580
+ return { code: "invalid-registration", field: "revision", message: "Revision must be a positive safe integer" };
581
+ }
582
+ if (connection.wireApi !== "responses" && connection.wireApi !== "chat-completions") {
583
+ return { code: "invalid-registration", field: "wireApi", message: "Unsupported wire API" };
584
+ }
585
+ if (!connection.endpointPath.startsWith("/") || connection.endpointPath.startsWith("//") || connection.endpointPath.length > 512 || /[?#\u0000-\u001f\u007f]/.test(connection.endpointPath)) return { code: "invalid-registration", field: "endpointPath", message: "Invalid endpoint path" };
586
+ if (!ID_PATTERN.test(connection.adapter.adapterId) || !validRevision(connection.adapter.revision)) {
587
+ return { code: "invalid-registration", field: "adapter", message: "Invalid adapter reference" };
588
+ }
589
+ if (connection.models.length === 0 || connection.models.length > MAX_MODELS) {
590
+ return { code: "invalid-registration", field: "models", message: "Model routes are outside the supported range" };
591
+ }
592
+ const gatewayModels = /* @__PURE__ */ new Set();
593
+ const sourceModels = /* @__PURE__ */ new Set();
594
+ let defaults = 0;
595
+ for (const model of connection.models) {
596
+ if (!isText(model.sourceModelId, 256) || !isText(model.modelId, 256) || model.modelId.includes("/")) {
597
+ return { code: "invalid-registration", field: "models", message: "Invalid model identity" };
598
+ }
599
+ if (model.displayName !== void 0 && !isText(model.displayName, 200)) {
600
+ return { code: "invalid-registration", field: "models.displayName", message: "Invalid model display name" };
601
+ }
602
+ if (gatewayModels.has(model.modelId) || sourceModels.has(model.sourceModelId)) {
603
+ return { code: "conflicting-model", field: "models", message: "Duplicate connection model route" };
604
+ }
605
+ gatewayModels.add(model.modelId);
606
+ sourceModels.add(model.sourceModelId);
607
+ if (model.enabled && model.isDefault) defaults += 1;
608
+ }
609
+ if (!connection.models.some((model) => model.enabled)) {
610
+ return { code: "invalid-registration", field: "models", message: "At least one enabled model route is required" };
611
+ }
612
+ if (defaults > 1) {
613
+ return { code: "conflicting-model", field: "models.isDefault", message: "Only one default model is allowed" };
614
+ }
615
+ return void 0;
616
+ }
617
+ var CliProxyGatewayExtensionRegistryV1 = class {
618
+ constructor(pluginGeneration, sourceKey3) {
619
+ this.pluginGeneration = pluginGeneration;
620
+ this.sourceKey = sourceKey3;
621
+ if (!isText(pluginGeneration, 256)) throw new Error("Invalid plugin generation");
622
+ }
623
+ pluginGeneration;
624
+ sourceKey;
625
+ adapters = /* @__PURE__ */ new Map();
626
+ connections = /* @__PURE__ */ new Map();
627
+ producerGenerations = /* @__PURE__ */ new Map();
628
+ listeners = /* @__PURE__ */ new Set();
629
+ revision = 0;
630
+ disposed = false;
631
+ activateProducer(producer, registryGeneration) {
632
+ if (this.disposed || registryGeneration !== this.pluginGeneration) {
633
+ throw new Error("Gateway extension registry generation is stale");
634
+ }
635
+ if (!ID_PATTERN.test(producer.pluginId) || !isText(producer.pluginGeneration, 256)) {
636
+ throw new Error("Invalid gateway extension producer authority");
637
+ }
638
+ if (this.producerGenerations.get(producer.pluginId) === producer.pluginGeneration) return;
639
+ this.producerGenerations.set(producer.pluginId, producer.pluginGeneration);
640
+ if (this.removeProducerEntries(producer.pluginId)) this.changed();
641
+ }
642
+ registerAdapter(adapter, registryGeneration, producer) {
643
+ const generationFailure = this.generationFailure(registryGeneration, producer);
644
+ if (generationFailure !== void 0) return generationFailure;
645
+ const validation = validateAdapter(adapter);
646
+ if (validation !== void 0) return rejection(validation);
647
+ const current = this.adapters.get(adapter.adapterId);
648
+ const ownership = this.ownershipFailure(current?.producer, producer);
649
+ if (ownership !== void 0) return ownership;
650
+ if (current !== void 0) {
651
+ const revision2 = this.revisionResult(current.adapter.revision, adapter.revision, current.adapter, adapter);
652
+ if (revision2 !== void 0) return revision2;
653
+ } else if (this.adapters.size >= MAX_ADAPTERS) {
654
+ return rejection({ code: "capacity-exceeded", message: "Gateway adapter capacity was reached" });
655
+ }
656
+ this.adapters.set(adapter.adapterId, { producer, adapter: structuredClone(adapter) });
657
+ this.changed();
658
+ return { status: current === void 0 ? "registered" : "updated", registryRevision: this.revision };
659
+ }
660
+ registerConnection(connection, registryGeneration, producer) {
661
+ const generationFailure = this.generationFailure(registryGeneration, producer);
662
+ if (generationFailure !== void 0) return generationFailure;
663
+ const validation = validateConnection(connection);
664
+ if (validation !== void 0) return rejection(validation);
665
+ const current = this.connections.get(connection.connectionId);
666
+ const ownership = this.ownershipFailure(current?.producer, producer);
667
+ if (ownership !== void 0) return ownership;
668
+ const sourceKey3 = this.sourceKey(connection.source);
669
+ if (!isText(sourceKey3, 512)) {
670
+ return rejection({
671
+ code: "invalid-registration",
672
+ field: "source",
673
+ message: "Invalid connection source reference"
674
+ });
675
+ }
676
+ if (current !== void 0) {
677
+ const revision2 = this.revisionResult(
678
+ current.connection.revision,
679
+ connection.revision,
680
+ { ...current.connection, source: current.sourceKey },
681
+ { ...connection, source: sourceKey3 }
682
+ );
683
+ if (revision2 !== void 0) return revision2;
684
+ } else if (this.connections.size >= MAX_CONNECTIONS) {
685
+ return rejection({ code: "capacity-exceeded", message: "Gateway connection capacity was reached" });
686
+ }
687
+ for (const [connectionId, entry] of this.connections) {
688
+ if (connectionId === connection.connectionId) continue;
689
+ if (entry.sourceKey === sourceKey3) {
690
+ return rejection({
691
+ code: "conflicting-source",
692
+ field: "source",
693
+ message: "Connection source is already registered"
694
+ });
695
+ }
696
+ const existingModels = new Set(
697
+ entry.connection.models.filter((model) => entry.connection.enabled && model.enabled).map(
698
+ (model) => `${entry.connection.connectionId}/${model.modelId}`
699
+ )
700
+ );
701
+ if (connection.models.some(
702
+ (model) => connection.enabled && model.enabled && existingModels.has(
703
+ `${connection.connectionId}/${model.modelId}`
704
+ )
705
+ )) return rejection({ code: "conflicting-model", field: "models", message: "Gateway model is already registered" });
706
+ }
707
+ this.connections.set(connection.connectionId, {
708
+ producer,
709
+ sourceKey: sourceKey3,
710
+ connection: structuredClone(connection)
711
+ });
712
+ this.changed();
713
+ return { status: current === void 0 ? "registered" : "updated", registryRevision: this.revision };
714
+ }
715
+ revokeAdapter(input, registryGeneration, producer) {
716
+ const generationFailure = this.generationFailure(registryGeneration, producer);
717
+ if (generationFailure !== void 0) return generationFailure;
718
+ const current = this.adapters.get(input.adapterId);
719
+ if (current === void 0) {
720
+ return rejection({ code: "not-found", field: "adapterId", message: "Adapter is not registered" });
721
+ }
722
+ const ownership = this.ownershipFailure(current.producer, producer);
723
+ if (ownership !== void 0) return ownership;
724
+ if (current.adapter.revision !== input.expectedRevision) {
725
+ return rejection({ code: "stale-revision", field: "expectedRevision", message: "Adapter revision is stale" });
726
+ }
727
+ this.adapters.delete(input.adapterId);
728
+ this.changed();
729
+ return { status: "revoked", registryRevision: this.revision };
730
+ }
731
+ revokeConnection(input, registryGeneration, producer) {
732
+ const generationFailure = this.generationFailure(registryGeneration, producer);
733
+ if (generationFailure !== void 0) return generationFailure;
734
+ const current = this.connections.get(input.connectionId);
735
+ if (current === void 0) {
736
+ return rejection({ code: "not-found", field: "connectionId", message: "Connection is not registered" });
737
+ }
738
+ const ownership = this.ownershipFailure(current.producer, producer);
739
+ if (ownership !== void 0) return ownership;
740
+ if (current.connection.revision !== input.expectedRevision) {
741
+ return rejection({ code: "stale-revision", field: "expectedRevision", message: "Connection revision is stale" });
742
+ }
743
+ this.connections.delete(input.connectionId);
744
+ this.changed();
745
+ return { status: "revoked", registryRevision: this.revision };
746
+ }
747
+ disposeProducer(producer, registryGeneration) {
748
+ const generationFailure = this.generationFailure(registryGeneration, producer);
749
+ if (generationFailure !== void 0) return generationFailure;
750
+ this.producerGenerations.delete(producer.pluginId);
751
+ if (!this.removeProducerEntries(producer.pluginId, producer.pluginGeneration)) {
752
+ return { status: "unchanged", registryRevision: this.revision };
753
+ }
754
+ this.changed();
755
+ return { status: "revoked", registryRevision: this.revision };
756
+ }
757
+ subscribe(listener) {
758
+ if (this.disposed) throw new Error("Gateway extension registry generation is stale");
759
+ this.listeners.add(listener);
760
+ return () => this.listeners.delete(listener);
761
+ }
762
+ plan(pluginGeneration) {
763
+ if (this.disposed || pluginGeneration !== this.pluginGeneration) {
764
+ return { code: "stale-generation", message: "Gateway extension plan generation is stale" };
765
+ }
766
+ const adapters = [...this.adapters.values()].map((entry) => structuredClone(entry.adapter)).sort(
767
+ (left, right) => left.adapterId.localeCompare(right.adapterId)
768
+ );
769
+ const connections = [];
770
+ const composition = [];
771
+ for (const entry of [...this.connections.values()].sort(
772
+ (left, right) => left.connection.connectionId.localeCompare(right.connection.connectionId)
773
+ )) {
774
+ const connection = entry.connection;
775
+ const adapter = this.adapters.get(connection.adapter.adapterId)?.adapter;
776
+ const adapterAvailable = adapter?.enabled === true && adapter.revision === connection.adapter.revision;
777
+ const enabled = connection.enabled && (!connection.adapter.required || adapterAvailable);
778
+ const index = connections.length;
779
+ connections.push({
780
+ connectionId: connection.connectionId,
781
+ revision: connection.revision,
782
+ enabled,
783
+ adapterId: connection.adapter.adapterId,
784
+ adapterRevision: connection.adapter.revision,
785
+ adapterRequired: connection.adapter.required,
786
+ adapterAvailable,
787
+ wireApi: connection.wireApi,
788
+ endpointPath: connection.endpointPath,
789
+ endpoint: null,
790
+ authorization: connection.authorization,
791
+ credential: null,
792
+ models: connection.models.filter((model) => model.enabled).sort(
793
+ (left, right) => left.modelId.localeCompare(right.modelId)
794
+ ).map((model) => ({
795
+ sourceModelId: model.sourceModelId,
796
+ gatewayModelId: `${connection.connectionId}/${model.modelId}`,
797
+ displayName: model.displayName ?? model.modelId,
798
+ isDefault: model.isDefault
799
+ }))
800
+ });
801
+ if (!enabled) continue;
802
+ const sourceAlias = `extension-${index}`;
803
+ composition.push({
804
+ connectionId: connection.connectionId,
805
+ sourceAlias,
806
+ source: connection.source,
807
+ originPointer: `/connections/${index}/endpoint`,
808
+ ...connection.authorization === "bearer" ? { authorizationPointer: `/connections/${index}/credential` } : {}
809
+ });
810
+ }
811
+ const base = {
812
+ contract: CLI_PROXY_GATEWAY_EXTENSION_PLAN_CONTRACT_V1,
813
+ schemaVersion: 1,
814
+ pluginGeneration: this.pluginGeneration,
815
+ registryRevision: this.revision,
816
+ configuration: { adapters, connections },
817
+ composition
818
+ };
819
+ return { ...base, planDigest: digest({ ...base, composition: composition.map(({ source: _, ...item }) => item) }) };
820
+ }
821
+ dispose() {
822
+ if (this.disposed) return;
823
+ this.disposed = true;
824
+ this.adapters.clear();
825
+ this.connections.clear();
826
+ this.producerGenerations.clear();
827
+ this.listeners.clear();
828
+ this.revision += 1;
829
+ }
830
+ revisionResult(currentRevision, nextRevision, current, next) {
831
+ if (nextRevision < currentRevision) {
832
+ return rejection({ code: "stale-revision", field: "revision", message: "Extension revision is stale" });
833
+ }
834
+ if (nextRevision !== currentRevision) return void 0;
835
+ return stableStringify(current) === stableStringify(next) ? { status: "unchanged", registryRevision: this.revision } : rejection({ code: "stale-revision", field: "revision", message: "Revision was reused with different content" });
836
+ }
837
+ ownershipFailure(current, producer) {
838
+ if (current === void 0) return void 0;
839
+ if (current.pluginId !== producer.pluginId) {
840
+ return rejection({ code: "conflicting-producer", message: "Extension is owned by another producer" });
841
+ }
842
+ if (current.pluginGeneration !== producer.pluginGeneration) {
843
+ return {
844
+ status: "stale-generation",
845
+ diagnostic: { code: "stale-generation", message: "Extension producer generation is stale" }
846
+ };
847
+ }
848
+ return void 0;
849
+ }
850
+ generationFailure(registryGeneration, producer) {
851
+ if (this.disposed || registryGeneration !== this.pluginGeneration || this.producerGenerations.get(producer.pluginId) !== producer.pluginGeneration) {
852
+ return {
853
+ status: "stale-generation",
854
+ diagnostic: { code: "stale-generation", message: "Gateway extension registry generation is stale" }
855
+ };
856
+ }
857
+ return void 0;
858
+ }
859
+ removeProducerEntries(pluginId, pluginGeneration) {
860
+ let removed = false;
861
+ for (const [adapterId, entry] of this.adapters) {
862
+ if (entry.producer.pluginId !== pluginId || pluginGeneration !== void 0 && entry.producer.pluginGeneration !== pluginGeneration) continue;
863
+ this.adapters.delete(adapterId);
864
+ removed = true;
865
+ }
866
+ for (const [connectionId, entry] of this.connections) {
867
+ if (entry.producer.pluginId !== pluginId || pluginGeneration !== void 0 && entry.producer.pluginGeneration !== pluginGeneration) continue;
868
+ this.connections.delete(connectionId);
869
+ removed = true;
870
+ }
871
+ return removed;
872
+ }
873
+ changed() {
874
+ this.revision += 1;
875
+ for (const listener of this.listeners) listener(this.revision);
876
+ }
877
+ };
878
+ function createCliProxyGatewayExtensionRegistrarV1(registry, producer) {
879
+ registry.activateProducer(producer, registry.pluginGeneration);
880
+ let disposed = false;
881
+ const currentRevision = () => {
882
+ const plan = registry.plan(registry.pluginGeneration);
883
+ return "code" in plan ? 0 : plan.registryRevision;
884
+ };
885
+ return Object.freeze({
886
+ producer,
887
+ registerAdapter: (adapter) => disposed ? {
888
+ status: "stale-generation",
889
+ diagnostic: { code: "stale-generation", message: "Extension registrar is disposed" }
890
+ } : registry.registerAdapter(adapter, registry.pluginGeneration, producer),
891
+ revokeAdapter: (input) => disposed ? {
892
+ status: "stale-generation",
893
+ diagnostic: { code: "stale-generation", message: "Extension registrar is disposed" }
894
+ } : registry.revokeAdapter(input, registry.pluginGeneration, producer),
895
+ registerConnection: (connection) => disposed ? {
896
+ status: "stale-generation",
897
+ diagnostic: { code: "stale-generation", message: "Extension registrar is disposed" }
898
+ } : registry.registerConnection(connection, registry.pluginGeneration, producer),
899
+ revokeConnection: (input) => disposed ? {
900
+ status: "stale-generation",
901
+ diagnostic: { code: "stale-generation", message: "Extension registrar is disposed" }
902
+ } : registry.revokeConnection(input, registry.pluginGeneration, producer),
903
+ dispose: () => {
904
+ if (disposed) return { status: "unchanged", registryRevision: currentRevision() };
905
+ disposed = true;
906
+ return registry.disposeProducer(producer, registry.pluginGeneration);
907
+ }
908
+ });
909
+ }
910
+
911
+ // src/service/extension-context.ts
912
+ function sourceKey(source) {
913
+ return JSON.stringify([source.source, source.pluginId, source.serviceId]);
914
+ }
915
+ function createCliProxyGatewayExtensionContextProviderV1() {
916
+ return Object.freeze({
917
+ service: CLI_PROXY_GATEWAY_EXTENSION_REGISTRY_SERVICE_V1,
918
+ create: ({ target, signal }) => {
919
+ const registry = new CliProxyGatewayExtensionRegistryV1(
920
+ target.pluginGeneration,
921
+ sourceKey
922
+ );
923
+ const bindings = /* @__PURE__ */ new Set();
924
+ let disposed = false;
925
+ const dispose = () => {
926
+ if (disposed) return;
927
+ disposed = true;
928
+ for (const binding of [...bindings]) binding.dispose();
929
+ bindings.clear();
930
+ registry.dispose();
931
+ };
932
+ signal.addEventListener("abort", dispose, { once: true });
933
+ return Object.freeze({
934
+ providerValue: registry,
935
+ bind: ({ producer, target: bindingTarget, signal: bindingSignal }) => {
936
+ if (disposed || bindingSignal.aborted || bindingTarget.pluginId !== target.pluginId || bindingTarget.pluginGeneration !== target.pluginGeneration || bindingTarget.serviceId !== target.serviceId || bindingTarget.serviceGeneration !== target.serviceGeneration) throw new Error("CLIProxyAPI gateway extension context generation is stale");
937
+ const registrar = createCliProxyGatewayExtensionRegistrarV1(registry, producer);
938
+ let bindingDisposed = false;
939
+ const binding = Object.freeze({
940
+ value: registrar,
941
+ dispose: () => {
942
+ if (bindingDisposed) return;
943
+ bindingDisposed = true;
944
+ bindings.delete(binding);
945
+ registrar.dispose();
946
+ }
947
+ });
948
+ bindings.add(binding);
949
+ bindingSignal.addEventListener("abort", () => binding.dispose(), { once: true });
950
+ return binding;
951
+ },
952
+ dispose
953
+ });
954
+ }
955
+ });
956
+ }
957
+
958
+ // src/service/upstream-registry.ts
959
+ import { createHash as createHash4 } from "node:crypto";
487
960
  var CLI_PROXY_UPSTREAM_DESCRIPTOR_SCHEMA_V1 = "https://raw.githubusercontent.com/cordisx/plugin-cli-proxy-api/main/schemas/cli-proxy-upstream-descriptor.v1.schema.json";
488
961
  var CLI_PROXY_UPSTREAM_DESCRIPTOR_CONTRACT_V1 = "cordisx.cli-proxy-upstream-descriptor/v1";
489
962
  var CLI_PROXY_MODEL_CATALOG_CONTRACT_V1 = "cordisx.cli-proxy-model-catalog/v1";
490
963
  var CLI_PROXY_GATEWAY_PLAN_CONTRACT_V1 = "cordisx.cli-proxy-gateway-plan/v1";
491
964
  var CLI_PROXY_UPSTREAM_REGISTRY_SERVICE_V1 = "cliProxyUpstreams";
492
- var ID_PATTERN = /^[a-z0-9][a-z0-9._-]{0,95}$/;
965
+ var ID_PATTERN2 = /^[a-z0-9][a-z0-9._-]{0,95}$/;
493
966
  var PREFIX_PATTERN = /^[a-z0-9][a-z0-9._-]{0,95}$/;
494
- var MAX_MODELS = 256;
967
+ var MAX_MODELS2 = 256;
495
968
  var MAX_REGISTRATIONS = 64;
496
- function rejection(failure) {
969
+ function rejection2(failure) {
497
970
  return { status: "rejected", diagnostic: failure };
498
971
  }
499
- function isText(value, maximum) {
972
+ function isText2(value, maximum) {
500
973
  return value.length > 0 && value.length <= maximum && value === value.trim() && !/[\u0000-\u001f\u007f]/.test(value);
501
974
  }
502
975
  function sameStrings(left, right) {
@@ -509,10 +982,10 @@ function validateDescriptor(descriptor) {
509
982
  if (descriptor.$schema !== CLI_PROXY_UPSTREAM_DESCRIPTOR_SCHEMA_V1 || descriptor.contract !== CLI_PROXY_UPSTREAM_DESCRIPTOR_CONTRACT_V1 || descriptor.schemaVersion !== 1) {
510
983
  return { code: "invalid-registration", field: "contract", message: "Unsupported upstream descriptor contract" };
511
984
  }
512
- if (!ID_PATTERN.test(descriptor.upstreamId)) {
985
+ if (!ID_PATTERN2.test(descriptor.upstreamId)) {
513
986
  return { code: "invalid-registration", field: "upstreamId", message: "Invalid upstream id" };
514
987
  }
515
- if (!isText(descriptor.displayName, 200)) {
988
+ if (!isText2(descriptor.displayName, 200)) {
516
989
  return { code: "invalid-registration", field: "displayName", message: "Invalid upstream display name" };
517
990
  }
518
991
  if (descriptor.wireApi !== "responses" && descriptor.wireApi !== "chat-completions") {
@@ -531,7 +1004,7 @@ function validateDescriptor(descriptor) {
531
1004
  message: "Request timeout is outside the supported range"
532
1005
  };
533
1006
  }
534
- if (!ID_PATTERN.test(descriptor.group.groupId) || !isText(descriptor.group.displayName, 200)) {
1007
+ if (!ID_PATTERN2.test(descriptor.group.groupId) || !isText2(descriptor.group.displayName, 200)) {
535
1008
  return { code: "invalid-registration", field: "group", message: "Invalid upstream group" };
536
1009
  }
537
1010
  if (!Number.isSafeInteger(descriptor.group.order) || descriptor.group.order < -1e3 || descriptor.group.order > 1e3) {
@@ -541,17 +1014,17 @@ function validateDescriptor(descriptor) {
541
1014
  if (!PREFIX_PATTERN.test(prefix)) {
542
1015
  return { code: "invalid-registration", field: "prefix", message: "Invalid gateway prefix" };
543
1016
  }
544
- if (descriptor.models.length === 0 || descriptor.models.length > MAX_MODELS) {
1017
+ if (descriptor.models.length === 0 || descriptor.models.length > MAX_MODELS2) {
545
1018
  return { code: "invalid-registration", field: "models", message: "Model routes are outside the supported range" };
546
1019
  }
547
1020
  const sourceModels = /* @__PURE__ */ new Set();
548
1021
  const aliases = /* @__PURE__ */ new Map();
549
1022
  const defaults = /* @__PURE__ */ new Set();
550
1023
  for (const route of descriptor.models) {
551
- if (!isText(route.sourceModelId, 256) || !isText(route.modelId, 256)) {
1024
+ if (!isText2(route.sourceModelId, 256) || !isText2(route.modelId, 256)) {
552
1025
  return { code: "invalid-registration", field: "models", message: "Invalid model identity" };
553
1026
  }
554
- if (route.displayName !== void 0 && !isText(route.displayName, 200)) {
1027
+ if (route.displayName !== void 0 && !isText2(route.displayName, 200)) {
555
1028
  return { code: "invalid-registration", field: "models.displayName", message: "Invalid model display name" };
556
1029
  }
557
1030
  if (sourceModels.has(route.sourceModelId)) {
@@ -589,26 +1062,26 @@ function validateDescriptor(descriptor) {
589
1062
  function compareOrderThenId(left, right) {
590
1063
  return left.order - right.order || left.id.localeCompare(right.id);
591
1064
  }
592
- function stableValue(value) {
593
- if (Array.isArray(value)) return value.map(stableValue);
1065
+ function stableValue2(value) {
1066
+ if (Array.isArray(value)) return value.map(stableValue2);
594
1067
  if (value === null || typeof value !== "object") return value;
595
1068
  return Object.fromEntries(
596
1069
  Object.entries(value).sort(([left], [right]) => left.localeCompare(right)).map(
597
- ([key, item]) => [key, stableValue(item)]
1070
+ ([key, item]) => [key, stableValue2(item)]
598
1071
  )
599
1072
  );
600
1073
  }
601
- function stableStringify(value) {
602
- return JSON.stringify(stableValue(value));
1074
+ function stableStringify2(value) {
1075
+ return JSON.stringify(stableValue2(value));
603
1076
  }
604
- function digest(value) {
605
- return `sha256:${createHash3("sha256").update(stableStringify(value)).digest("hex")}`;
1077
+ function digest2(value) {
1078
+ return `sha256:${createHash4("sha256").update(stableStringify2(value)).digest("hex")}`;
606
1079
  }
607
1080
  var CliProxyUpstreamRegistryV1 = class {
608
- constructor(pluginGeneration, sourceKey2) {
1081
+ constructor(pluginGeneration, sourceKey3) {
609
1082
  this.pluginGeneration = pluginGeneration;
610
- this.sourceKey = sourceKey2;
611
- if (!isText(pluginGeneration, 256)) throw new Error("Invalid plugin generation");
1083
+ this.sourceKey = sourceKey3;
1084
+ if (!isText2(pluginGeneration, 256)) throw new Error("Invalid plugin generation");
612
1085
  }
613
1086
  pluginGeneration;
614
1087
  sourceKey;
@@ -622,7 +1095,7 @@ var CliProxyUpstreamRegistryV1 = class {
622
1095
  if (generationFailure !== void 0) return generationFailure;
623
1096
  const current = this.entries.get(registration.descriptor.upstreamId);
624
1097
  if (current !== void 0 && current.producer.pluginId !== producer.pluginId) {
625
- return rejection({
1098
+ return rejection2({
626
1099
  code: "conflicting-producer",
627
1100
  field: "upstreamId",
628
1101
  message: "Upstream is owned by another producer"
@@ -635,29 +1108,29 @@ var CliProxyUpstreamRegistryV1 = class {
635
1108
  };
636
1109
  }
637
1110
  const validation = validateDescriptor(registration.descriptor);
638
- if (validation !== void 0) return rejection(validation);
639
- const sourceKey2 = this.sourceKey(registration.source);
640
- if (!isText(sourceKey2, 512)) {
641
- return rejection({ code: "invalid-registration", field: "source", message: "Invalid upstream source reference" });
1111
+ if (validation !== void 0) return rejection2(validation);
1112
+ const sourceKey3 = this.sourceKey(registration.source);
1113
+ if (!isText2(sourceKey3, 512)) {
1114
+ return rejection2({ code: "invalid-registration", field: "source", message: "Invalid upstream source reference" });
642
1115
  }
643
1116
  if (current !== void 0) {
644
1117
  if (registration.descriptor.revision < current.descriptor.revision) {
645
- return rejection({ code: "stale-revision", field: "revision", message: "Upstream revision is stale" });
1118
+ return rejection2({ code: "stale-revision", field: "revision", message: "Upstream revision is stale" });
646
1119
  }
647
1120
  if (registration.descriptor.revision === current.descriptor.revision) {
648
- return stableStringify(registration.descriptor) === stableStringify(current.descriptor) && sourceKey2 === current.sourceKey ? { status: "unchanged", registryRevision: this.revision } : rejection({
1121
+ return stableStringify2(registration.descriptor) === stableStringify2(current.descriptor) && sourceKey3 === current.sourceKey ? { status: "unchanged", registryRevision: this.revision } : rejection2({
649
1122
  code: "stale-revision",
650
1123
  field: "revision",
651
1124
  message: "Revision was reused with different content"
652
1125
  });
653
1126
  }
654
1127
  } else if (this.entries.size >= MAX_REGISTRATIONS) {
655
- return rejection({ code: "capacity-exceeded", message: "Upstream registry capacity was reached" });
1128
+ return rejection2({ code: "capacity-exceeded", message: "Upstream registry capacity was reached" });
656
1129
  }
657
1130
  for (const [upstreamId, entry] of this.entries) {
658
1131
  if (upstreamId === registration.descriptor.upstreamId) continue;
659
- if (entry.sourceKey === sourceKey2) {
660
- return rejection({
1132
+ if (entry.sourceKey === sourceKey3) {
1133
+ return rejection2({
661
1134
  code: "conflicting-source",
662
1135
  field: "source",
663
1136
  message: "Upstream source is already registered"
@@ -665,20 +1138,20 @@ var CliProxyUpstreamRegistryV1 = class {
665
1138
  }
666
1139
  if (entry.descriptor.enabled && registration.descriptor.enabled) {
667
1140
  if ((entry.descriptor.prefix ?? entry.descriptor.upstreamId) === (registration.descriptor.prefix ?? registration.descriptor.upstreamId)) {
668
- return rejection({
1141
+ return rejection2({
669
1142
  code: "conflicting-prefix",
670
1143
  field: "prefix",
671
1144
  message: "Gateway prefix is already registered"
672
1145
  });
673
1146
  }
674
1147
  if (entry.descriptor.group.groupId === registration.descriptor.group.groupId && (entry.descriptor.group.displayName !== registration.descriptor.group.displayName || entry.descriptor.group.order !== registration.descriptor.group.order)) {
675
- return rejection({ code: "conflicting-group", field: "group", message: "Group metadata is inconsistent" });
1148
+ return rejection2({ code: "conflicting-group", field: "group", message: "Group metadata is inconsistent" });
676
1149
  }
677
1150
  }
678
1151
  }
679
1152
  this.entries.set(registration.descriptor.upstreamId, {
680
1153
  source: registration.source,
681
- sourceKey: sourceKey2,
1154
+ sourceKey: sourceKey3,
682
1155
  producer,
683
1156
  descriptor: structuredClone(registration.descriptor)
684
1157
  });
@@ -691,10 +1164,10 @@ var CliProxyUpstreamRegistryV1 = class {
691
1164
  if (generationFailure !== void 0) return generationFailure;
692
1165
  const current = this.entries.get(input.upstreamId);
693
1166
  if (current === void 0) {
694
- return rejection({ code: "not-found", field: "upstreamId", message: "Upstream is not registered" });
1167
+ return rejection2({ code: "not-found", field: "upstreamId", message: "Upstream is not registered" });
695
1168
  }
696
1169
  if (current.producer.pluginId !== producer.pluginId) {
697
- return rejection({
1170
+ return rejection2({
698
1171
  code: "conflicting-producer",
699
1172
  field: "upstreamId",
700
1173
  message: "Upstream is owned by another producer"
@@ -707,7 +1180,7 @@ var CliProxyUpstreamRegistryV1 = class {
707
1180
  };
708
1181
  }
709
1182
  if (input.expectedRevision !== current.descriptor.revision) {
710
- return rejection({ code: "stale-revision", field: "expectedRevision", message: "Upstream revision is stale" });
1183
+ return rejection2({ code: "stale-revision", field: "expectedRevision", message: "Upstream revision is stale" });
711
1184
  }
712
1185
  this.entries.delete(input.upstreamId);
713
1186
  this.revision += 1;
@@ -718,7 +1191,7 @@ var CliProxyUpstreamRegistryV1 = class {
718
1191
  if (this.disposed || registryGeneration !== this.pluginGeneration) {
719
1192
  throw new Error("Upstream registry generation is stale");
720
1193
  }
721
- if (!ID_PATTERN.test(producer.pluginId) || !isText(producer.pluginGeneration, 256)) {
1194
+ if (!ID_PATTERN2.test(producer.pluginId) || !isText2(producer.pluginGeneration, 256)) {
722
1195
  throw new Error("Invalid upstream producer authority");
723
1196
  }
724
1197
  const currentGeneration = this.producerGenerations.get(producer.pluginId);
@@ -816,7 +1289,7 @@ var CliProxyUpstreamRegistryV1 = class {
816
1289
  ),
817
1290
  groups: orderedGroups
818
1291
  };
819
- return { ...base, catalogDigest: digest(base) };
1292
+ return { ...base, catalogDigest: digest2(base) };
820
1293
  }
821
1294
  gatewayPlan(pluginGeneration) {
822
1295
  const catalog = this.catalog(pluginGeneration);
@@ -943,7 +1416,7 @@ function createCliProxyUpstreamRegistrarV1(registry, producer) {
943
1416
  }
944
1417
 
945
1418
  // src/service/upstream-context.ts
946
- function sourceKey(source) {
1419
+ function sourceKey2(source) {
947
1420
  return JSON.stringify([source.source, source.pluginId, source.serviceId]);
948
1421
  }
949
1422
  function createCliProxyUpstreamContextProviderV1() {
@@ -952,7 +1425,7 @@ function createCliProxyUpstreamContextProviderV1() {
952
1425
  create: ({ target, signal }) => {
953
1426
  const registry = new CliProxyUpstreamRegistryV1(
954
1427
  target.pluginGeneration,
955
- sourceKey
1428
+ sourceKey2
956
1429
  );
957
1430
  const bindings = /* @__PURE__ */ new Set();
958
1431
  let disposed = false;
@@ -991,7 +1464,8 @@ function createCliProxyUpstreamContextProviderV1() {
991
1464
 
992
1465
  // src/service/gateway.ts
993
1466
  var contextServices = Object.freeze([
994
- createCliProxyUpstreamContextProviderV1()
1467
+ createCliProxyUpstreamContextProviderV1(),
1468
+ createCliProxyGatewayExtensionContextProviderV1()
995
1469
  ]);
996
1470
  var CLI_PROXY_NATIVE_PROVIDER_ID = "cli-proxy-api";
997
1471
  function activationError(stage, result) {
@@ -1000,6 +1474,15 @@ function activationError(stage, result) {
1000
1474
  function assertPlan(value) {
1001
1475
  if ("code" in value) throw new Error(`CLIProxyAPI gateway plan failed: ${value.code}`);
1002
1476
  }
1477
+ function assertExtensionPlan(value) {
1478
+ if ("code" in value) throw new Error(`CLIProxyAPI gateway extension plan failed: ${value.code}`);
1479
+ }
1480
+ function combinedRevision(upstreamDigest, extensionDigest) {
1481
+ return `sha256:${createHash5("sha256").update(JSON.stringify([upstreamDigest, extensionDigest])).digest("hex")}`;
1482
+ }
1483
+ function safeValue(value) {
1484
+ return JSON.parse(JSON.stringify(value));
1485
+ }
1003
1486
  function modelIds(value) {
1004
1487
  if (value === null || typeof value !== "object" || Array.isArray(value)) return /* @__PURE__ */ new Set();
1005
1488
  const data = value.data;
@@ -1023,11 +1506,11 @@ function nativeProviderCatalog(models) {
1023
1506
  const routes = [...models].map((model) => ({ alias: model, gatewayModelId: model })).sort((left, right) => compareUtf8Json([left.alias], [right.alias]));
1024
1507
  const defaultAlias = routes[0]?.alias;
1025
1508
  if (defaultAlias === void 0) return void 0;
1026
- const generation = `sha256:${createHash4("sha256").update(JSON.stringify(routes.map((route) => route.gatewayModelId))).digest("hex")}`;
1027
- const digest2 = `sha256:${createHash4("sha256").update(
1509
+ const generation = `sha256:${createHash5("sha256").update(JSON.stringify(routes.map((route) => route.gatewayModelId))).digest("hex")}`;
1510
+ const digest3 = `sha256:${createHash5("sha256").update(
1028
1511
  JSON.stringify([generation, defaultAlias, routes.map((route) => [route.alias, route.gatewayModelId])])
1029
1512
  ).digest("hex")}`;
1030
- return { generation, digest: digest2, defaultAlias, routes };
1513
+ return { generation, digest: digest3, defaultAlias, routes };
1031
1514
  }
1032
1515
  function relativePointer(collection, pointer) {
1033
1516
  const prefix = `/${collection}`;
@@ -1036,9 +1519,11 @@ function relativePointer(collection, pointer) {
1036
1519
  }
1037
1520
  async function activateCliProxyGateway(context, input) {
1038
1521
  const registry = context.cliProxyUpstreams;
1522
+ const extensionRegistry = context.cliProxyGatewayExtensions;
1039
1523
  let active;
1040
1524
  let transition = Promise.resolve();
1041
1525
  let unsubscribe = () => void 0;
1526
+ let unsubscribeExtensions = () => void 0;
1042
1527
  let disposePromise;
1043
1528
  let gatewayHandle;
1044
1529
  let publication;
@@ -1059,9 +1544,9 @@ async function activateCliProxyGateway(context, input) {
1059
1544
  refreshGatewayModels: () => scheduleModelRefresh()
1060
1545
  };
1061
1546
  const unbindGatewayUIState = bindGatewayUIState(uiState);
1062
- const activate = async (catalog, plan) => {
1547
+ const activate = async (catalog, plan, extensionPlan, revision2) => {
1063
1548
  gatewayHandle ??= await context.managedServices.register(cliProxyGatewayDefinition, {
1064
- revision: plan.catalogDigest
1549
+ revision: revision2
1065
1550
  });
1066
1551
  const handle = gatewayHandle;
1067
1552
  const leases = [];
@@ -1106,6 +1591,14 @@ async function activateCliProxyGateway(context, input) {
1106
1591
  );
1107
1592
  }
1108
1593
  }
1594
+ for (const composition of extensionPlan.composition) {
1595
+ const acquired = await input.client.acquire(composition.source, { signal: input.signal });
1596
+ if (acquired.status !== "ready") {
1597
+ throw activationError(`${composition.connectionId} extension acquisition`, acquired);
1598
+ }
1599
+ leases.push(acquired.lease);
1600
+ sources.push({ source: composition.sourceAlias, lease: acquired.lease });
1601
+ }
1109
1602
  const bindings = [
1110
1603
  {
1111
1604
  targetSlot: "codex-upstreams",
@@ -1114,6 +1607,19 @@ async function activateCliProxyGateway(context, input) {
1114
1607
  {
1115
1608
  targetSlot: "openai-upstreams",
1116
1609
  source: { kind: "safe-literal", value: plan.configuration["openai-compatibility"] }
1610
+ },
1611
+ {
1612
+ targetSlot: "gateway-extensions",
1613
+ source: {
1614
+ kind: "safe-literal",
1615
+ value: safeValue({
1616
+ enabled: true,
1617
+ active: extensionPlan.composition.length > 0,
1618
+ revision: extensionPlan.planDigest,
1619
+ adapters: extensionPlan.configuration.adapters,
1620
+ connections: extensionPlan.configuration.connections
1621
+ })
1622
+ }
1117
1623
  }
1118
1624
  ];
1119
1625
  for (const composition of plan.composition) {
@@ -1131,9 +1637,23 @@ async function activateCliProxyGateway(context, input) {
1131
1637
  });
1132
1638
  }
1133
1639
  }
1640
+ for (const composition of extensionPlan.composition) {
1641
+ bindings.push({
1642
+ targetSlot: "gateway-extensions",
1643
+ targetPointer: composition.originPointer,
1644
+ source: { kind: "source-origin", source: composition.sourceAlias, origin: "api" }
1645
+ });
1646
+ if (composition.authorizationPointer !== void 0) {
1647
+ bindings.push({
1648
+ targetSlot: "gateway-extensions",
1649
+ targetPointer: composition.authorizationPointer,
1650
+ source: { kind: "source-authorization", source: composition.sourceAlias }
1651
+ });
1652
+ }
1653
+ }
1134
1654
  const materialized = await input.client.materialize({
1135
1655
  target: handle.binding,
1136
- revision: plan.catalogDigest,
1656
+ revision: revision2,
1137
1657
  sources,
1138
1658
  bindings
1139
1659
  }, { signal: input.signal });
@@ -1149,6 +1669,10 @@ async function activateCliProxyGateway(context, input) {
1149
1669
  const actualGatewayModels = await readGatewayModels();
1150
1670
  const expectedGatewayModels = catalog.groups.flatMap(
1151
1671
  (group) => group.providers.flatMap((provider) => provider.models.map((model) => model.gatewayModelId))
1672
+ ).concat(
1673
+ extensionPlan.configuration.connections.flatMap(
1674
+ (connection) => connection.enabled ? connection.models.map((model) => model.gatewayModelId) : []
1675
+ )
1152
1676
  );
1153
1677
  const missingGatewayModels = expectedGatewayModels.filter((model) => !actualGatewayModels.has(model));
1154
1678
  if (missingGatewayModels.length > 0) {
@@ -1215,7 +1739,10 @@ async function activateCliProxyGateway(context, input) {
1215
1739
  if (input.signal.aborted) return;
1216
1740
  const catalog = registry.catalog(input.owner.pluginGeneration);
1217
1741
  if ("code" in catalog) throw new Error(`CLIProxyAPI catalog failed: ${catalog.code}`);
1218
- if (active?.revision === catalog.registryRevision) return;
1742
+ const extensionPlan = extensionRegistry.plan(input.owner.pluginGeneration);
1743
+ assertExtensionPlan(extensionPlan);
1744
+ const revision2 = combinedRevision(catalog.catalogDigest, extensionPlan.planDigest);
1745
+ if (active?.revision === revision2) return;
1219
1746
  const previous = active;
1220
1747
  active = void 0;
1221
1748
  activeRevision = void 0;
@@ -1224,16 +1751,16 @@ async function activateCliProxyGateway(context, input) {
1224
1751
  assertPlan(plan);
1225
1752
  if (gatewayHandle === void 0) {
1226
1753
  gatewayHandle = await context.managedServices.register(cliProxyGatewayDefinition, {
1227
- revision: plan.catalogDigest
1754
+ revision: revision2
1228
1755
  });
1229
1756
  }
1230
1757
  if (input.signal.aborted) return;
1231
- const cleanup = await activate(catalog, plan);
1758
+ const cleanup = await activate(catalog, plan, extensionPlan, revision2);
1232
1759
  if (input.signal.aborted) {
1233
1760
  await cleanup();
1234
1761
  return;
1235
1762
  }
1236
- active = { revision: catalog.registryRevision, dispose: cleanup };
1763
+ active = { revision: revision2, dispose: cleanup };
1237
1764
  };
1238
1765
  const schedule = () => {
1239
1766
  const pending = transition.then(reconcile);
@@ -1252,6 +1779,7 @@ async function activateCliProxyGateway(context, input) {
1252
1779
  if (disposePromise !== void 0) return disposePromise;
1253
1780
  disposePromise = (async () => {
1254
1781
  unsubscribe();
1782
+ unsubscribeExtensions();
1255
1783
  unbindGatewayUIState();
1256
1784
  await transition;
1257
1785
  const failures = [];
@@ -1282,6 +1810,9 @@ async function activateCliProxyGateway(context, input) {
1282
1810
  unsubscribe = registry.subscribe(() => {
1283
1811
  void schedule().catch(() => void 0);
1284
1812
  });
1813
+ unsubscribeExtensions = extensionRegistry.subscribe(() => {
1814
+ void schedule().catch(() => void 0);
1815
+ });
1285
1816
  const onAbort = () => {
1286
1817
  void dispose().catch(() => void 0);
1287
1818
  };
@@ -1312,10 +1843,21 @@ var gatewayApply = async (context, input) => {
1312
1843
  await activateCliProxyGateway(context, input);
1313
1844
  };
1314
1845
  var apply = Object.assign(gatewayApply, {
1315
- inject: ["managedServices", CLI_PROXY_UPSTREAM_REGISTRY_SERVICE_V1]
1846
+ inject: [
1847
+ "managedServices",
1848
+ CLI_PROXY_UPSTREAM_REGISTRY_SERVICE_V1,
1849
+ CLI_PROXY_GATEWAY_EXTENSION_REGISTRY_SERVICE_V1
1850
+ ]
1316
1851
  });
1317
1852
  export {
1853
+ CLI_PROXY_GATEWAY_ADAPTER_CONTRACT_V1,
1854
+ CLI_PROXY_GATEWAY_ADAPTER_SCHEMA_V1,
1318
1855
  CLI_PROXY_GATEWAY_CODEX_UPSTREAMS_SCHEMA_V1,
1856
+ CLI_PROXY_GATEWAY_CONNECTION_CONTRACT_V1,
1857
+ CLI_PROXY_GATEWAY_CONNECTION_SCHEMA_V1,
1858
+ CLI_PROXY_GATEWAY_EXTENSION_PLAN_CONTRACT_V1,
1859
+ CLI_PROXY_GATEWAY_EXTENSION_PLAN_SCHEMA_V1,
1860
+ CLI_PROXY_GATEWAY_EXTENSION_REGISTRY_SERVICE_V1,
1319
1861
  CLI_PROXY_GATEWAY_MANAGEMENT_V1,
1320
1862
  CLI_PROXY_GATEWAY_MODEL_CATALOG_SCHEMA_V1,
1321
1863
  CLI_PROXY_GATEWAY_OPENAI_UPSTREAMS_SCHEMA_V1,
@@ -1326,12 +1868,14 @@ export {
1326
1868
  CLI_PROXY_UPSTREAM_DESCRIPTOR_CONTRACT_V1,
1327
1869
  CLI_PROXY_UPSTREAM_DESCRIPTOR_SCHEMA_V1,
1328
1870
  CLI_PROXY_UPSTREAM_REGISTRY_SERVICE_V1,
1871
+ CliProxyGatewayExtensionRegistryV1,
1329
1872
  CliProxyUpstreamRegistryV1,
1330
1873
  activateCliProxyGateway,
1331
1874
  apply,
1332
1875
  cliProxyGatewayDefinition,
1333
1876
  cliProxyGatewayDefinitionRevision,
1334
1877
  contextServices,
1878
+ createCliProxyGatewayExtensionRegistrarV1,
1335
1879
  createCliProxyUpstreamRegistrarV1,
1336
1880
  managedServiceUI
1337
1881
  };