cordisx 0.1.0-beta.21 → 0.1.0-beta.22

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 (271) hide show
  1. package/THIRD_PARTY_NOTICES.md +10 -0
  2. package/dist/assets/model-brands/aws-bedrock.svg +12 -0
  3. package/dist/assets/model-brands/azure-foundry.svg +1 -0
  4. package/dist/assets/model-brands/azure-openai.svg +1 -0
  5. package/dist/assets/model-brands/cerebras.png +0 -0
  6. package/dist/assets/model-brands/claude.svg +1 -0
  7. package/dist/assets/model-brands/dashscope.svg +45 -0
  8. package/dist/assets/model-brands/deepseek.svg +3 -0
  9. package/dist/assets/model-brands/fireworks.svg +5 -0
  10. package/dist/assets/model-brands/gemini.png +0 -0
  11. package/dist/assets/model-brands/google-vertex.svg +25 -0
  12. package/dist/assets/model-brands/huggingface.svg +8 -0
  13. package/dist/assets/model-brands/kimi-dark.svg +5 -0
  14. package/dist/assets/model-brands/kimi-light.svg +5 -0
  15. package/dist/assets/model-brands/minimax-dark.svg +1 -0
  16. package/dist/assets/model-brands/minimax-light.svg +1 -0
  17. package/dist/assets/model-brands/moonshot-dark.svg +1 -0
  18. package/dist/assets/model-brands/moonshot-light.svg +1 -0
  19. package/dist/assets/model-brands/openai.svg +1 -0
  20. package/dist/assets/model-brands/opencode-dark.svg +18 -0
  21. package/dist/assets/model-brands/opencode-light.svg +18 -0
  22. package/dist/assets/model-brands/openrouter-dark.svg +3 -0
  23. package/dist/assets/model-brands/openrouter-light.svg +3 -0
  24. package/dist/assets/model-brands/siliconflow.png +0 -0
  25. package/dist/assets/model-brands/together.svg +21 -0
  26. package/dist/assets/model-brands/xai-dark.svg +19 -0
  27. package/dist/assets/model-brands/xai-light.svg +19 -0
  28. package/dist/assets/model-brands/zai-dark.svg +35 -0
  29. package/dist/assets/model-brands/zai-light.svg +35 -0
  30. package/dist/shortcut-presentation.js +19 -2
  31. package/dist/src/app-launcher/install.test.d.ts +2 -0
  32. package/dist/src/app-launcher/install.test.d.ts.map +1 -0
  33. package/dist/src/app-launcher/install.test.js +57 -0
  34. package/dist/src/app-launcher/install.test.js.map +1 -0
  35. package/dist/src/app-launcher/model.d.ts +23 -0
  36. package/dist/src/app-launcher/model.d.ts.map +1 -0
  37. package/dist/src/app-launcher/model.js +18 -0
  38. package/dist/src/app-launcher/model.js.map +1 -0
  39. package/dist/src/app-launcher/runtime.test.d.ts +2 -0
  40. package/dist/src/app-launcher/runtime.test.d.ts.map +1 -0
  41. package/dist/src/app-launcher/runtime.test.js +92 -0
  42. package/dist/src/app-launcher/runtime.test.js.map +1 -0
  43. package/dist/src/cli/activate-owned-host.d.ts +10 -0
  44. package/dist/src/cli/activate-owned-host.d.ts.map +1 -0
  45. package/dist/src/cli/activate-owned-host.js +29 -0
  46. package/dist/src/cli/activate-owned-host.js.map +1 -0
  47. package/dist/src/cli/app-command.d.ts +7 -0
  48. package/dist/src/cli/app-command.d.ts.map +1 -0
  49. package/dist/src/cli/app-command.js +111 -0
  50. package/dist/src/cli/app-command.js.map +1 -0
  51. package/dist/src/cli/app-entry.d.ts +12 -0
  52. package/dist/src/cli/app-entry.d.ts.map +1 -0
  53. package/dist/src/cli/app-entry.js +99 -0
  54. package/dist/src/cli/app-entry.js.map +1 -0
  55. package/dist/src/cli/parse.d.ts +5 -2
  56. package/dist/src/cli/parse.d.ts.map +1 -1
  57. package/dist/src/cli/parse.js +2 -1
  58. package/dist/src/cli/parse.js.map +1 -1
  59. package/dist/src/cli/run-command-dispatch.d.ts.map +1 -1
  60. package/dist/src/cli/run-command-dispatch.js +5 -0
  61. package/dist/src/cli/run-command-dispatch.js.map +1 -1
  62. package/dist/src/cli/run-command.d.ts.map +1 -1
  63. package/dist/src/cli/run-command.js +15 -3
  64. package/dist/src/cli/run-command.js.map +1 -1
  65. package/dist/src/cli/run-support.d.ts +8 -1
  66. package/dist/src/cli/run-support.d.ts.map +1 -1
  67. package/dist/src/cli/run-support.js +1 -0
  68. package/dist/src/cli/run-support.js.map +1 -1
  69. package/dist/src/cli/shortcut-entry.d.ts +2 -6
  70. package/dist/src/cli/shortcut-entry.d.ts.map +1 -1
  71. package/dist/src/cli/shortcut-entry.js +2 -25
  72. package/dist/src/cli/shortcut-entry.js.map +1 -1
  73. package/dist/src/cli/supervisor-command.d.ts.map +1 -1
  74. package/dist/src/cli/supervisor-command.js +12 -4
  75. package/dist/src/cli/supervisor-command.js.map +1 -1
  76. package/dist/src/config/home-config-model-catalogs.d.ts +13 -0
  77. package/dist/src/config/home-config-model-catalogs.d.ts.map +1 -0
  78. package/dist/src/config/home-config-model-catalogs.js +107 -0
  79. package/dist/src/config/home-config-model-catalogs.js.map +1 -0
  80. package/dist/src/config/home-config.d.ts +3 -0
  81. package/dist/src/config/home-config.d.ts.map +1 -1
  82. package/dist/src/config/home-config.js +10 -8
  83. package/dist/src/config/home-config.js.map +1 -1
  84. package/dist/src/current-user-native-pins.d.ts +6 -0
  85. package/dist/src/current-user-native-pins.d.ts.map +1 -1
  86. package/dist/src/current-user-native-pins.js +7 -0
  87. package/dist/src/current-user-native-pins.js.map +1 -1
  88. package/dist/src/launcher/codex-config-model-providers.d.ts +9 -1
  89. package/dist/src/launcher/codex-config-model-providers.d.ts.map +1 -1
  90. package/dist/src/launcher/codex-config-model-providers.js +86 -23
  91. package/dist/src/launcher/codex-config-model-providers.js.map +1 -1
  92. package/dist/src/launcher/model-catalog/abort.d.ts +3 -0
  93. package/dist/src/launcher/model-catalog/abort.d.ts.map +1 -0
  94. package/dist/src/launcher/model-catalog/abort.js +16 -0
  95. package/dist/src/launcher/model-catalog/abort.js.map +1 -0
  96. package/dist/src/launcher/model-catalog/atomic-store.d.ts +13 -0
  97. package/dist/src/launcher/model-catalog/atomic-store.d.ts.map +1 -0
  98. package/dist/src/launcher/model-catalog/atomic-store.js +85 -0
  99. package/dist/src/launcher/model-catalog/atomic-store.js.map +1 -0
  100. package/dist/src/launcher/model-catalog/builtin-registry.d.ts +4 -0
  101. package/dist/src/launcher/model-catalog/builtin-registry.d.ts.map +1 -0
  102. package/dist/src/launcher/model-catalog/builtin-registry.js +7 -0
  103. package/dist/src/launcher/model-catalog/builtin-registry.js.map +1 -0
  104. package/dist/src/launcher/model-catalog/configured-source.d.ts +15 -0
  105. package/dist/src/launcher/model-catalog/configured-source.d.ts.map +1 -0
  106. package/dist/src/launcher/model-catalog/configured-source.js +99 -0
  107. package/dist/src/launcher/model-catalog/configured-source.js.map +1 -0
  108. package/dist/src/launcher/model-catalog/contracts.d.ts +87 -0
  109. package/dist/src/launcher/model-catalog/contracts.d.ts.map +1 -0
  110. package/dist/src/launcher/model-catalog/contracts.js +54 -0
  111. package/dist/src/launcher/model-catalog/contracts.js.map +1 -0
  112. package/dist/src/launcher/model-catalog/deepseek.d.ts +4 -0
  113. package/dist/src/launcher/model-catalog/deepseek.d.ts.map +1 -0
  114. package/dist/src/launcher/model-catalog/deepseek.js +123 -0
  115. package/dist/src/launcher/model-catalog/deepseek.js.map +1 -0
  116. package/dist/src/launcher/model-catalog/file-source.d.ts +10 -0
  117. package/dist/src/launcher/model-catalog/file-source.d.ts.map +1 -0
  118. package/dist/src/launcher/model-catalog/file-source.js +136 -0
  119. package/dist/src/launcher/model-catalog/file-source.js.map +1 -0
  120. package/dist/src/launcher/model-catalog/managed-catalog-composition.d.ts +33 -0
  121. package/dist/src/launcher/model-catalog/managed-catalog-composition.d.ts.map +1 -0
  122. package/dist/src/launcher/model-catalog/managed-catalog-composition.js +528 -0
  123. package/dist/src/launcher/model-catalog/managed-catalog-composition.js.map +1 -0
  124. package/dist/src/launcher/model-catalog/managed-catalog-state.d.ts +16 -0
  125. package/dist/src/launcher/model-catalog/managed-catalog-state.d.ts.map +1 -0
  126. package/dist/src/launcher/model-catalog/managed-catalog-state.js +130 -0
  127. package/dist/src/launcher/model-catalog/managed-catalog-state.js.map +1 -0
  128. package/dist/src/launcher/model-catalog/managed-provider-api.d.ts +14 -0
  129. package/dist/src/launcher/model-catalog/managed-provider-api.d.ts.map +1 -0
  130. package/dist/src/launcher/model-catalog/managed-provider-api.js +53 -0
  131. package/dist/src/launcher/model-catalog/managed-provider-api.js.map +1 -0
  132. package/dist/src/launcher/model-catalog/managed-provider-capture.d.ts +4 -0
  133. package/dist/src/launcher/model-catalog/managed-provider-capture.d.ts.map +1 -0
  134. package/dist/src/launcher/model-catalog/managed-provider-capture.js +71 -0
  135. package/dist/src/launcher/model-catalog/managed-provider-capture.js.map +1 -0
  136. package/dist/src/launcher/model-catalog/managed-provider-owner.d.ts +38 -0
  137. package/dist/src/launcher/model-catalog/managed-provider-owner.d.ts.map +1 -0
  138. package/dist/src/launcher/model-catalog/managed-provider-owner.js +348 -0
  139. package/dist/src/launcher/model-catalog/managed-provider-owner.js.map +1 -0
  140. package/dist/src/launcher/model-catalog/managed-provider-schema.d.ts +31 -0
  141. package/dist/src/launcher/model-catalog/managed-provider-schema.d.ts.map +1 -0
  142. package/dist/src/launcher/model-catalog/managed-provider-schema.js +71 -0
  143. package/dist/src/launcher/model-catalog/managed-provider-schema.js.map +1 -0
  144. package/dist/src/launcher/model-catalog/owner-projection.d.ts +20 -0
  145. package/dist/src/launcher/model-catalog/owner-projection.d.ts.map +1 -0
  146. package/dist/src/launcher/model-catalog/owner-projection.js +37 -0
  147. package/dist/src/launcher/model-catalog/owner-projection.js.map +1 -0
  148. package/dist/src/launcher/model-catalog/registry.d.ts +7 -0
  149. package/dist/src/launcher/model-catalog/registry.d.ts.map +1 -0
  150. package/dist/src/launcher/model-catalog/registry.js +19 -0
  151. package/dist/src/launcher/model-catalog/registry.js.map +1 -0
  152. package/dist/src/launcher/model-catalog/request-capability.d.ts +10 -0
  153. package/dist/src/launcher/model-catalog/request-capability.d.ts.map +1 -0
  154. package/dist/src/launcher/model-catalog/request-capability.js +74 -0
  155. package/dist/src/launcher/model-catalog/request-capability.js.map +1 -0
  156. package/dist/src/launcher/model-catalog/script-composition.d.ts +18 -0
  157. package/dist/src/launcher/model-catalog/script-composition.d.ts.map +1 -0
  158. package/dist/src/launcher/model-catalog/script-composition.js +25 -0
  159. package/dist/src/launcher/model-catalog/script-composition.js.map +1 -0
  160. package/dist/src/launcher/model-catalog/script-executor.d.ts +5 -0
  161. package/dist/src/launcher/model-catalog/script-executor.d.ts.map +1 -0
  162. package/dist/src/launcher/model-catalog/script-executor.js +140 -0
  163. package/dist/src/launcher/model-catalog/script-executor.js.map +1 -0
  164. package/dist/src/launcher/model-catalog/script-management.d.ts +4 -0
  165. package/dist/src/launcher/model-catalog/script-management.d.ts.map +1 -0
  166. package/dist/src/launcher/model-catalog/script-management.js +29 -0
  167. package/dist/src/launcher/model-catalog/script-management.js.map +1 -0
  168. package/dist/src/launcher/model-catalog/script-output-parser.d.ts +3 -0
  169. package/dist/src/launcher/model-catalog/script-output-parser.d.ts.map +1 -0
  170. package/dist/src/launcher/model-catalog/script-output-parser.js +59 -0
  171. package/dist/src/launcher/model-catalog/script-output-parser.js.map +1 -0
  172. package/dist/src/launcher/model-catalog/script-runtime.d.ts +30 -0
  173. package/dist/src/launcher/model-catalog/script-runtime.d.ts.map +1 -0
  174. package/dist/src/launcher/model-catalog/script-runtime.js +164 -0
  175. package/dist/src/launcher/model-catalog/script-runtime.js.map +1 -0
  176. package/dist/src/launcher/model-catalog/script-schema.d.ts +42 -0
  177. package/dist/src/launcher/model-catalog/script-schema.d.ts.map +1 -0
  178. package/dist/src/launcher/model-catalog/script-schema.js +129 -0
  179. package/dist/src/launcher/model-catalog/script-schema.js.map +1 -0
  180. package/dist/src/launcher/model-catalog/script-types.d.ts +84 -0
  181. package/dist/src/launcher/model-catalog/script-types.d.ts.map +1 -0
  182. package/dist/src/launcher/model-catalog/script-types.js +9 -0
  183. package/dist/src/launcher/model-catalog/script-types.js.map +1 -0
  184. package/dist/src/launcher/model-catalog/service.d.ts +39 -0
  185. package/dist/src/launcher/model-catalog/service.d.ts.map +1 -0
  186. package/dist/src/launcher/model-catalog/service.js +292 -0
  187. package/dist/src/launcher/model-catalog/service.js.map +1 -0
  188. package/dist/src/launcher/model-catalog/supplement.d.ts +4 -0
  189. package/dist/src/launcher/model-catalog/supplement.d.ts.map +1 -0
  190. package/dist/src/launcher/model-catalog/supplement.js +44 -0
  191. package/dist/src/launcher/model-catalog/supplement.js.map +1 -0
  192. package/dist/src/launcher/native-model-provider-catalog.d.ts +6 -1
  193. package/dist/src/launcher/native-model-provider-catalog.d.ts.map +1 -1
  194. package/dist/src/launcher/native-model-provider-catalog.js +16 -3
  195. package/dist/src/launcher/native-model-provider-catalog.js.map +1 -1
  196. package/dist/src/launcher/native-submission-cdp-channel.d.ts +7 -0
  197. package/dist/src/launcher/native-submission-cdp-channel.d.ts.map +1 -1
  198. package/dist/src/launcher/native-submission-cdp-channel.js +54 -7
  199. package/dist/src/launcher/native-submission-cdp-channel.js.map +1 -1
  200. package/dist/src/launcher/native-submission-composition.d.ts +6 -0
  201. package/dist/src/launcher/native-submission-composition.d.ts.map +1 -1
  202. package/dist/src/launcher/native-submission-composition.js +58 -8
  203. package/dist/src/launcher/native-submission-composition.js.map +1 -1
  204. package/dist/src/launcher/native-submission-controller.d.ts +1 -0
  205. package/dist/src/launcher/native-submission-controller.d.ts.map +1 -1
  206. package/dist/src/launcher/native-submission-controller.js +24 -3
  207. package/dist/src/launcher/native-submission-controller.js.map +1 -1
  208. package/dist/src/launcher/native-submission-structure.d.ts.map +1 -1
  209. package/dist/src/launcher/native-submission-structure.js +15 -1
  210. package/dist/src/launcher/native-submission-structure.js.map +1 -1
  211. package/dist/src/launcher/secret-resolver.d.ts.map +1 -1
  212. package/dist/src/launcher/secret-resolver.js +3 -0
  213. package/dist/src/launcher/secret-resolver.js.map +1 -1
  214. package/dist/src/model-catalog/management-overlay.d.ts +67 -0
  215. package/dist/src/model-catalog/management-overlay.d.ts.map +1 -0
  216. package/dist/src/model-catalog/management-overlay.js +193 -0
  217. package/dist/src/model-catalog/management-overlay.js.map +1 -0
  218. package/dist/src/model-catalog-management.d.ts +130 -0
  219. package/dist/src/model-catalog-management.d.ts.map +1 -0
  220. package/dist/src/model-catalog-management.js +2 -0
  221. package/dist/src/model-catalog-management.js.map +1 -0
  222. package/dist/src/model-selector-branding.d.ts +24 -0
  223. package/dist/src/model-selector-branding.d.ts.map +1 -0
  224. package/dist/src/model-selector-branding.js +201 -0
  225. package/dist/src/model-selector-branding.js.map +1 -0
  226. package/dist/src/renderer/adapter/native-model-provider-interaction.d.ts +4 -0
  227. package/dist/src/renderer/adapter/native-model-provider-interaction.d.ts.map +1 -0
  228. package/dist/src/renderer/adapter/native-model-provider-interaction.js +45 -0
  229. package/dist/src/renderer/adapter/native-model-provider-interaction.js.map +1 -0
  230. package/dist/src/renderer/adapter/native-model-provider-seat.d.ts +2 -0
  231. package/dist/src/renderer/adapter/native-model-provider-seat.d.ts.map +1 -1
  232. package/dist/src/renderer/adapter/native-model-provider-seat.js +7 -7
  233. package/dist/src/renderer/adapter/native-model-provider-seat.js.map +1 -1
  234. package/dist/src/renderer/current-user/native.d.ts +17 -1
  235. package/dist/src/renderer/current-user/native.d.ts.map +1 -1
  236. package/dist/src/renderer/current-user/native.js +20 -7
  237. package/dist/src/renderer/current-user/native.js.map +1 -1
  238. package/dist/src/renderer/host-ui/HostMenu.d.ts +2 -1
  239. package/dist/src/renderer/host-ui/HostMenu.d.ts.map +1 -1
  240. package/dist/src/renderer/host-ui/HostMenu.js +13 -4
  241. package/dist/src/renderer/host-ui/HostMenu.js.map +1 -1
  242. package/dist/src/renderer/host-ui/ModelBrandIcon.d.ts +8 -0
  243. package/dist/src/renderer/host-ui/ModelBrandIcon.d.ts.map +1 -0
  244. package/dist/src/renderer/host-ui/ModelBrandIcon.js +93 -0
  245. package/dist/src/renderer/host-ui/ModelBrandIcon.js.map +1 -0
  246. package/dist/src/renderer/install-model-provider-selector.d.ts.map +1 -1
  247. package/dist/src/renderer/install-model-provider-selector.js +23 -7
  248. package/dist/src/renderer/install-model-provider-selector.js.map +1 -1
  249. package/dist/src/renderer/model-provider-selector.d.ts +2 -1
  250. package/dist/src/renderer/model-provider-selector.d.ts.map +1 -1
  251. package/dist/src/renderer/model-provider-selector.js +46 -12
  252. package/dist/src/renderer/model-provider-selector.js.map +1 -1
  253. package/dist/src/renderer/model-providers.css +14 -1
  254. package/dist/src/renderer/model-providers.d.ts +17 -2
  255. package/dist/src/renderer/model-providers.d.ts.map +1 -1
  256. package/dist/src/renderer/model-providers.js +51 -1
  257. package/dist/src/renderer/model-providers.js.map +1 -1
  258. package/dist/src/renderer/native-model-provider-transport.d.ts +1 -0
  259. package/dist/src/renderer/native-model-provider-transport.d.ts.map +1 -1
  260. package/dist/src/renderer/native-model-provider-transport.js +36 -6
  261. package/dist/src/renderer/native-model-provider-transport.js.map +1 -1
  262. package/dist/src/renderer/native-provider-selection-client.d.ts +6 -0
  263. package/dist/src/renderer/native-provider-selection-client.d.ts.map +1 -1
  264. package/dist/src/renderer/native-provider-selection-client.js.map +1 -1
  265. package/dist/src/shortcuts/native.d.ts +2 -0
  266. package/dist/src/shortcuts/native.d.ts.map +1 -1
  267. package/dist/src/shortcuts/native.js +7 -0
  268. package/dist/src/shortcuts/native.js.map +1 -1
  269. package/package.json +1 -1
  270. package/third_party/lobe-icons-MIT.txt +21 -0
  271. package/third_party/openai-apps-sdk-ui-MIT.txt +19 -0
@@ -0,0 +1,528 @@
1
+ import { createHash, randomUUID } from 'node:crypto';
2
+ import { ManagementOverlayError, ManagementOverlayStore, projectManagementOverlay, } from '../../model-catalog/management-overlay.js';
3
+ import { builtinDiscoveryRegistry } from './builtin-registry.js';
4
+ import { CatalogError, object } from './contracts.js';
5
+ import { ManagedProviderOwner } from './managed-provider-owner.js';
6
+ import { managedProviderSettings } from './managed-provider-schema.js';
7
+ import { captureManagedProviderCredential } from './managed-provider-capture.js';
8
+ import { ModelCatalogService } from './service.js';
9
+ import { ScriptSourceRuntime } from './script-runtime.js';
10
+ import { parseScriptSourceConfig } from './script-schema.js';
11
+ import { composeScriptMembers } from './script-composition.js';
12
+ import { ScriptSourceError } from './script-types.js';
13
+ import { withAbort } from './abort.js';
14
+ const providerId = (id) => `cordisx-${id}`;
15
+ const scriptStrategy = (view) => view.settings.strategy.kind === 'auto' ? 'auto' : JSON.stringify(view.settings.strategy);
16
+ const authority = (view) => createHash('sha256')
17
+ .update(JSON.stringify([view.scopeRevision, view.settings.strategy])).digest('hex');
18
+ const binding = (view) => ({
19
+ bindingRef: view.id,
20
+ scopeRevision: view.scopeRevision,
21
+ authorityRevision: authority(view),
22
+ strategy: view.settings.strategy,
23
+ });
24
+ /** One profile-owned composition; its owner and all secret/configuration methods remain Node-private. */
25
+ export class ManagedCatalogComposition {
26
+ options;
27
+ #owner;
28
+ #service;
29
+ #scripts;
30
+ #overlay;
31
+ #epoch = randomUUID();
32
+ #listeners = new Set();
33
+ #unsubscribes = [];
34
+ #state;
35
+ #sequence = 0;
36
+ #closed = false;
37
+ #closing = false;
38
+ #closePromise;
39
+ #tail = Promise.resolve();
40
+ #persistTimer;
41
+ #persistError = false;
42
+ #writeAllowed = () => true;
43
+ #knownIds = new Set();
44
+ #abort = new AbortController();
45
+ constructor(owner, state, options) {
46
+ this.options = options;
47
+ this.#owner = owner;
48
+ this.#state = state;
49
+ this.#scripts = new ScriptSourceRuntime(options.environment ? { environment: options.environment } : {});
50
+ this.#overlay = new ManagementOverlayStore(async (overlays) => {
51
+ await this.persist({ ...this.#state, overlays }, this.#writeAllowed);
52
+ }, state.overlays);
53
+ this.#service = new ModelCatalogService({
54
+ registry: builtinDiscoveryRegistry(),
55
+ connection: value => owner.connection(value.bindingRef),
56
+ read: async () => [],
57
+ persistSource: (snapshot, current) => this.serial(async () => {
58
+ if (!current() || this.#closing)
59
+ throw new CatalogError('cancelled');
60
+ try {
61
+ await this.persist(this.#state, () => current() && !this.#closing, snapshot);
62
+ }
63
+ catch (error) {
64
+ this.#persistError = true;
65
+ throw error;
66
+ }
67
+ }),
68
+ });
69
+ this.reconcile();
70
+ this.#unsubscribes.push(owner.subscribe(() => {
71
+ this.reconcile();
72
+ this.changed();
73
+ }), this.#scripts.subscribe(() => this.changed()), this.#service.subscribe(() => {
74
+ this.changed();
75
+ if (!this.#closed && !this.#closing && !this.#persistTimer) {
76
+ this.#persistTimer = setTimeout(() => {
77
+ this.#persistTimer = undefined;
78
+ void this.serial(() => this.persist(this.#state)).catch(() => {
79
+ this.#persistError = true;
80
+ this.changed();
81
+ });
82
+ }, 100);
83
+ this.#persistTimer.unref?.();
84
+ }
85
+ }));
86
+ }
87
+ static async open(options) {
88
+ const owner = await ManagedProviderOwner.open(options);
89
+ try {
90
+ const raw = await owner.readCatalogState();
91
+ const data = raw === undefined ? { version: 1, scripts: {}, caches: {} } : object(raw);
92
+ if (!data || data.version !== 1 || !object(data.scripts) || !object(data.caches)) {
93
+ throw new CatalogError('source-invalid');
94
+ }
95
+ return new ManagedCatalogComposition(owner, data, options);
96
+ }
97
+ catch (error) {
98
+ await owner.close();
99
+ throw error;
100
+ }
101
+ }
102
+ reconcile() {
103
+ const views = this.#owner.snapshot(), ids = new Set(views.map(view => view.id));
104
+ for (const id of this.#knownIds) {
105
+ if (!ids.has(id)) {
106
+ this.#service.remove(id);
107
+ void this.#scripts.remove(id);
108
+ }
109
+ }
110
+ this.#knownIds = ids;
111
+ for (const view of views) {
112
+ const script = this.#state.scripts[view.id];
113
+ const matching = script?.scopeRevision === view.scopeRevision
114
+ && script.strategy === scriptStrategy(view);
115
+ if (matching) {
116
+ this.#scripts.save({ bindingRef: view.id, scopeRevision: view.scopeRevision, mode: script.mode }, script.config);
117
+ }
118
+ else {
119
+ delete this.#state.scripts[view.id];
120
+ void this.#scripts.remove(view.id);
121
+ }
122
+ const paused = matching && script.mode === 'replace'
123
+ || view.settings.strategy.kind === 'auto' && !view.settings.discoveryEnabled;
124
+ const cached = this.#state.caches[view.id];
125
+ this.#service.configure(binding(view), { paused, ...(cached ? { cached } : {}) });
126
+ this.#service.setSupplement(view.id, view.scopeRevision, view.revision, {
127
+ scopeRevision: view.scopeRevision,
128
+ authorityRevision: view.revision,
129
+ models: view.settings.supplement,
130
+ });
131
+ }
132
+ }
133
+ async persist(candidate, authorized = () => true, acquired) {
134
+ const caches = {};
135
+ const scripts = {};
136
+ for (const view of this.#owner.snapshot()) {
137
+ const source = acquired?.bindingRef === view.id ? acquired : this.#service.sourceSnapshot(view.id);
138
+ if (source?.complete)
139
+ caches[view.id] = source;
140
+ const script = candidate.scripts[view.id];
141
+ if (script?.scopeRevision === view.scopeRevision && script.strategy === scriptStrategy(view)) {
142
+ scripts[view.id] = script;
143
+ }
144
+ }
145
+ const next = { ...candidate, scripts, caches };
146
+ await this.#owner.writeCatalogState(next, () => !this.#closed && authorized());
147
+ this.#state = next;
148
+ this.#persistError = false;
149
+ }
150
+ members(view) {
151
+ const base = this.#service.snapshot(view.id)?.models ?? [];
152
+ const script = this.#scripts.readStatus(view.id);
153
+ const strategy = view.settings.strategy;
154
+ return composeScriptMembers({
155
+ bindingRef: view.id,
156
+ scopeRevision: view.scopeRevision,
157
+ authorityRevision: script?.authorityRevision ?? '',
158
+ base,
159
+ ...(script ? { script } : {}),
160
+ strategy: script?.mode === 'replace'
161
+ ? 'script-replace'
162
+ : strategy.kind === 'auto'
163
+ ? strategy.mode === 'augment' ? 'auto-augment' : 'auto-only'
164
+ : 'manual-replace',
165
+ });
166
+ }
167
+ rows(view) {
168
+ const denied = ['authentication', 'permission', 'account'].includes(this.#service.snapshot(view.id)?.error ?? '');
169
+ const route = this.options.responsesAvailable && !this.#persistError
170
+ && !denied;
171
+ const capabilities = this.#service.sourceSnapshot(view.id)?.models ?? [];
172
+ const projected = projectManagementOverlay(this.members(view).map(model => {
173
+ const responses = capabilities.find(source => source.id === model.id)?.protocolCapabilities?.responses
174
+ ?? view.settings.protocol === 'responses';
175
+ return { ...model, protocolCapabilities: { responses }, selectable: route && responses };
176
+ }), this.#overlay.read(view.id, view.scopeRevision));
177
+ return [
178
+ ...projected.active.map(row => ({
179
+ ...row,
180
+ provenance: row.provenance ?? [],
181
+ notListed: row.notListed ?? false,
182
+ ...(row.blocked ? { reason: 'blocked' } : denied
183
+ ? { reason: 'permission' }
184
+ : !row.selectable
185
+ ? { reason: 'pending-apply' }
186
+ : {}),
187
+ })),
188
+ ...projected.dormant.map(row => ({
189
+ ...row,
190
+ aliases: [],
191
+ provenance: [],
192
+ notListed: false,
193
+ reason: 'removed',
194
+ })),
195
+ ];
196
+ }
197
+ snapshot() {
198
+ if (this.#closed)
199
+ return { epoch: this.#epoch, sequence: this.#sequence, views: [], canCreateConnection: false };
200
+ const views = this.#owner.snapshot().map((view) => {
201
+ const snapshot = this.#service.snapshot(view.id), script = this.#scripts.readStatus(view.id);
202
+ const rows = this.rows(view), strategy = view.settings.strategy;
203
+ const replacing = script?.mode === 'replace';
204
+ const status = replacing ? script : snapshot;
205
+ const route = this.options.responsesAvailable && (view.settings.protocol === 'responses'
206
+ || this.#service.sourceSnapshot(view.id)?.models.some(model => model.protocolCapabilities?.responses));
207
+ return {
208
+ bindingRef: view.id,
209
+ providerId: providerId(view.id),
210
+ title: view.settings.title,
211
+ scopeRevision: view.scopeRevision,
212
+ revision: this.revision(view),
213
+ sourceKind: replacing ? 'script' : strategy.kind === 'auto' ? 'auto' : 'manual',
214
+ mode: replacing
215
+ ? 'replace'
216
+ : strategy.kind === 'auto'
217
+ ? strategy.mode ?? 'only'
218
+ : 'replace',
219
+ freshness: status?.freshness ?? 'unknown',
220
+ activity: status?.loading ? 'loading' : 'idle',
221
+ outcome: status?.error ? 'error' : status?.complete ? this.members(view).length ? 'ok' : 'empty' : 'none',
222
+ autoPaused: !view.settings.discoveryEnabled,
223
+ sourceCount: this.members(view).length,
224
+ selectableCount: rows.filter(row => row.selectable).length,
225
+ rows: rows.map(row => ({
226
+ ...row,
227
+ provenance: [...row.provenance].filter((value) => ['native', 'auto', 'manual', 'manual-supplement', 'script', 'script-supplement'].includes(value)),
228
+ })),
229
+ protocolCapabilities: { responses: Boolean(route) },
230
+ supplement: view.settings.supplement,
231
+ capabilities: [
232
+ 'setOverlay',
233
+ 'resetOrder',
234
+ 'restoreBlocked',
235
+ 'editSupplement',
236
+ 'editManual',
237
+ 'convertToManual',
238
+ 'updateConnection',
239
+ 'requestCredentialReplacement',
240
+ 'configureScript',
241
+ ...(strategy.kind === 'auto'
242
+ ? [
243
+ 'setAutoPaused',
244
+ 'setMode',
245
+ ...(!view.settings.discoveryEnabled || replacing ? [] : ['refresh']),
246
+ ]
247
+ : []),
248
+ ...(script ? [script.loading ? 'cancelScript' : 'runScript'] : []),
249
+ ],
250
+ diagnostics: {
251
+ scopeConfirmed: true,
252
+ targetState: route ? 'applied' : 'unavailable',
253
+ ...(this.#persistError ? { code: 'persist-failed' } : status?.error
254
+ ? { code: status.error === 'ambiguous' ? 'unsupported' : status.error }
255
+ : {}),
256
+ ...(status?.lastSuccessAt === undefined ? {} : { lastSuccessAt: status.lastSuccessAt }),
257
+ },
258
+ connection: {
259
+ title: view.settings.title,
260
+ endpoint: view.settings.endpoint,
261
+ protocol: view.settings.protocol,
262
+ discoveryEnabled: view.settings.discoveryEnabled,
263
+ strategy: strategy.kind === 'auto'
264
+ ? { ...strategy, mode: strategy.mode ?? 'only' }
265
+ : { kind: 'manual', ids: strategy.kind === 'manual' && 'ids' in strategy ? strategy.ids : [] },
266
+ },
267
+ ...(script
268
+ ? {
269
+ scriptState: {
270
+ authorityRevision: script.authorityRevision,
271
+ runGeneration: script.runGeneration,
272
+ persistence: script.persistence,
273
+ evidence: script.evidence,
274
+ },
275
+ }
276
+ : {}),
277
+ };
278
+ });
279
+ return Object.freeze({ epoch: this.#epoch, sequence: this.#sequence, views, canCreateConnection: true });
280
+ }
281
+ revision(view) {
282
+ return [
283
+ view.revision,
284
+ this.#service.snapshot(view.id)?.revision ?? 0,
285
+ this.#overlay.read(view.id, view.scopeRevision).revision,
286
+ this.#scripts.readStatus(view.id)?.revision ?? 0,
287
+ ].join(':');
288
+ }
289
+ catalog() {
290
+ return this.#owner.snapshot().map(view => ({
291
+ providerId: providerId(view.id),
292
+ pluginId: 'cordisx-host',
293
+ title: view.settings.title,
294
+ models: this.rows(view).filter(row => row.selectable)
295
+ .map(row => ({
296
+ id: row.id,
297
+ label: row.label,
298
+ aliases: row.aliases,
299
+ notListed: row.notListed,
300
+ provenance: row.provenance,
301
+ })),
302
+ }));
303
+ }
304
+ owns(id) {
305
+ return id.startsWith('cordisx-') && this.#owner.snapshot().some(view => providerId(view.id) === id);
306
+ }
307
+ admits(id, model) {
308
+ return !this.#closed && !this.#closing
309
+ && this.catalog().some(view => view.providerId === id && view.models.some(row => row.id === model));
310
+ }
311
+ async validateSelection(id, model) {
312
+ await this.#owner.validateCurrent();
313
+ return this.admits(id, model);
314
+ }
315
+ nativeConnection(id) {
316
+ if (!this.owns(id) || !this.options.responsesAvailable)
317
+ throw new CatalogError('unsupported');
318
+ return this.#owner.nativeConnection(id.slice('cordisx-'.length), () => !this.#closing && !this.#closed
319
+ && (this.catalog().find(view => view.providerId === id)?.models.length ?? 0) > 0);
320
+ }
321
+ subscribe(listener) {
322
+ this.#listeners.add(listener);
323
+ return () => {
324
+ this.#listeners.delete(listener);
325
+ };
326
+ }
327
+ changed() {
328
+ this.#sequence++;
329
+ for (const listener of this.#listeners) {
330
+ try {
331
+ listener();
332
+ }
333
+ catch { /* Reader isolation. */ }
334
+ }
335
+ }
336
+ serial(action) {
337
+ const job = this.#tail.then(action);
338
+ this.#tail = job.catch(() => undefined);
339
+ return job;
340
+ }
341
+ capture(signal) {
342
+ const combined = AbortSignal.any([signal, this.#abort.signal]);
343
+ return withAbort((this.options.capture ?? captureManagedProviderCredential)(combined), combined);
344
+ }
345
+ command(command, authorized) {
346
+ command = structuredClone(command);
347
+ const admitted = () => !this.#closing && !this.#closed && authorized();
348
+ return this.serial(async () => {
349
+ try {
350
+ if (this.#closed || this.#closing || !authorized())
351
+ return { status: 'rejected', code: 'permission' };
352
+ const input = object(command);
353
+ if (!input)
354
+ throw new CatalogError('source-invalid');
355
+ if (command.operation === 'createConnection') {
356
+ if (Object.keys(command).some(key => !['operation', 'settings'].includes(key))) {
357
+ throw new CatalogError('source-invalid');
358
+ }
359
+ await this.#owner.save({ settings: { ...command.settings, supplement: [] } }, signal => this.capture(signal), admitted);
360
+ }
361
+ else {
362
+ const extra = {
363
+ setOverlay: ['modelId', 'blocked', 'pinned'],
364
+ setAutoPaused: ['paused'],
365
+ editManual: ['models'],
366
+ editSupplement: ['models'],
367
+ setSource: ['source'],
368
+ setMode: ['mode'],
369
+ updateConnection: ['settings'],
370
+ configureScript: ['config', 'mode'],
371
+ refresh: [],
372
+ resetOrder: [],
373
+ restoreBlocked: [],
374
+ convertToManual: [],
375
+ requestCredentialReplacement: [],
376
+ runScript: [],
377
+ cancelScript: [],
378
+ };
379
+ const keys = extra[command.operation];
380
+ if (!keys
381
+ || Object.keys(command).some(key => !['operation', 'bindingRef', 'scopeRevision', 'expectedRevision', ...keys].includes(key))) {
382
+ throw new CatalogError('source-invalid');
383
+ }
384
+ if (command.operation === 'setAutoPaused' && typeof command.paused !== 'boolean') {
385
+ throw new CatalogError('source-invalid');
386
+ }
387
+ const view = this.#owner.snapshot().find(view => view.id === command.bindingRef);
388
+ if (!view || view.scopeRevision !== command.scopeRevision) {
389
+ return { status: 'conflict', code: 'scope-changed' };
390
+ }
391
+ if (this.revision(view) !== command.expectedRevision)
392
+ return { status: 'conflict', code: 'conflict' };
393
+ if (view.settings.supplement.length && (command.operation === 'requestCredentialReplacement'
394
+ || command.operation === 'updateConnection'
395
+ && (command.settings.endpoint !== view.settings.endpoint
396
+ || command.settings.protocol !== view.settings.protocol)))
397
+ return { status: 'conflict', code: 'scope-changed' };
398
+ await this.apply(view, command, () => admitted() && this.revision(view) === command.expectedRevision);
399
+ }
400
+ this.changed();
401
+ return { status: 'applied', snapshot: this.snapshot() };
402
+ }
403
+ catch (error) {
404
+ const code = error instanceof CatalogError
405
+ ? error.code === 'ambiguous' ? 'unsupported' : error.code
406
+ : error instanceof ScriptSourceError || error instanceof ManagementOverlayError
407
+ ? error.code
408
+ : 'persist-failed';
409
+ return { status: 'rejected', code };
410
+ }
411
+ });
412
+ }
413
+ async apply(view, command, authorized) {
414
+ const operation = command.operation;
415
+ if (operation === 'setOverlay' || operation === 'resetOrder' || operation === 'restoreBlocked') {
416
+ this.#writeAllowed = () => authorized() && this.revision(view) === command.expectedRevision;
417
+ try {
418
+ const scope = {
419
+ bindingRef: view.id,
420
+ scopeRevision: view.scopeRevision,
421
+ expectedRevision: this.#overlay.read(view.id, view.scopeRevision).revision,
422
+ };
423
+ const mutation = command.operation === 'setOverlay'
424
+ ? { ...command, ...scope }
425
+ : { ...scope, operation: operation };
426
+ await this.#overlay.mutate(mutation, this.members(view).map(model => model.id));
427
+ }
428
+ finally {
429
+ this.#writeAllowed = () => true;
430
+ }
431
+ return;
432
+ }
433
+ if (operation === 'refresh') {
434
+ void this.#service.refresh(view.id);
435
+ return;
436
+ }
437
+ if (operation === 'runScript' || operation === 'cancelScript') {
438
+ const script = this.#scripts.readStatus(view.id);
439
+ if (!script)
440
+ throw new CatalogError('unsupported');
441
+ const intent = { bindingRef: view.id, scopeRevision: view.scopeRevision, expectedRevision: script.revision };
442
+ if (operation === 'runScript') {
443
+ if (this.#scripts.run(intent).status === 'busy')
444
+ throw new CatalogError('temporary');
445
+ }
446
+ else
447
+ await this.#scripts.cancel(intent);
448
+ return;
449
+ }
450
+ if (operation === 'configureScript') {
451
+ if (!['replace', 'supplement'].includes(command.mode))
452
+ throw new CatalogError('source-invalid');
453
+ const config = parseScriptSourceConfig(command.config);
454
+ await this.persist({
455
+ ...this.#state,
456
+ scripts: {
457
+ ...this.#state.scripts,
458
+ [view.id]: {
459
+ scopeRevision: view.scopeRevision,
460
+ strategy: scriptStrategy(view),
461
+ mode: command.mode,
462
+ config,
463
+ },
464
+ },
465
+ }, authorized);
466
+ this.reconcile();
467
+ return;
468
+ }
469
+ let settings = view.settings;
470
+ if (operation === 'updateConnection') {
471
+ settings = managedProviderSettings({ ...command.settings, supplement: settings.supplement });
472
+ }
473
+ else if (operation === 'setAutoPaused')
474
+ settings = { ...settings, discoveryEnabled: !command.paused };
475
+ else if (operation === 'editSupplement') {
476
+ settings = managedProviderSettings({ ...settings, supplement: command.models });
477
+ }
478
+ else if (operation === 'editManual' || operation === 'convertToManual') {
479
+ settings = {
480
+ ...settings,
481
+ strategy: {
482
+ kind: 'manual',
483
+ ids: operation === 'editManual'
484
+ ? command.models.map(model => model.id)
485
+ : this.members(view).map(model => model.id),
486
+ },
487
+ };
488
+ }
489
+ else if (operation === 'setMode' && settings.strategy.kind === 'auto') {
490
+ settings = { ...settings, strategy: { ...settings.strategy, mode: command.mode } };
491
+ }
492
+ else if (operation !== 'requestCredentialReplacement')
493
+ throw new CatalogError('unsupported');
494
+ if ((operation === 'editManual' || operation === 'convertToManual')
495
+ && JSON.stringify(settings) === JSON.stringify(view.settings)) {
496
+ const scripts = { ...this.#state.scripts };
497
+ delete scripts[view.id];
498
+ await this.persist({ ...this.#state, scripts }, authorized);
499
+ this.reconcile();
500
+ return;
501
+ }
502
+ await this.#owner.save({ id: view.id, expectedRevision: view.revision, settings }, operation === 'requestCredentialReplacement' ? signal => this.capture(signal) : undefined, authorized);
503
+ }
504
+ close() {
505
+ this.#closePromise ??= (async () => {
506
+ this.#closing = true;
507
+ this.#abort.abort();
508
+ clearTimeout(this.#persistTimer);
509
+ for (const unsubscribe of this.#unsubscribes)
510
+ unsubscribe();
511
+ this.#listeners.clear();
512
+ for (const view of this.#owner.snapshot())
513
+ this.#service.setPaused(view.id, true);
514
+ await this.#scripts.dispose();
515
+ await this.#tail;
516
+ try {
517
+ await this.persist(this.#state);
518
+ }
519
+ finally {
520
+ this.#closed = true;
521
+ this.#service.dispose();
522
+ await this.#owner.close();
523
+ }
524
+ })();
525
+ return this.#closePromise;
526
+ }
527
+ }
528
+ //# sourceMappingURL=managed-catalog-composition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managed-catalog-composition.js","sourceRoot":"","sources":["../../../../src/launcher/model-catalog/managed-catalog-composition.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { LauncherKeychainBackend } from '../secret-store.js';
2
+ /** Encrypted profile state. Only the credential owner constructs this, under its exclusive lock. */
3
+ export declare class ManagedCatalogState {
4
+ private readonly file;
5
+ private readonly backend;
6
+ private readonly service;
7
+ private readonly current;
8
+ private raw;
9
+ private initialized;
10
+ constructor(file: string, backend: LauncherKeychainBackend, service: string, current: () => Promise<void>);
11
+ private readRaw;
12
+ private key;
13
+ read(): Promise<unknown>;
14
+ write(value: unknown, authorized: () => boolean): Promise<void>;
15
+ }
16
+ //# sourceMappingURL=managed-catalog-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managed-catalog-state.d.ts","sourceRoot":"","sources":["../../../../src/launcher/model-catalog/managed-catalog-state.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAGjE,oGAAoG;AACpG,qBAAa,mBAAmB;IAK5B,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAP1B,OAAO,CAAC,GAAG,CAAoB;IAC/B,OAAO,CAAC,WAAW,CAAQ;gBAGR,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,uBAAuB,EAChC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC;YAGjC,OAAO;YAkBP,GAAG;IAUX,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IA4BxB,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAwCtE"}