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.
- package/THIRD_PARTY_NOTICES.md +10 -0
- package/dist/assets/model-brands/aws-bedrock.svg +12 -0
- package/dist/assets/model-brands/azure-foundry.svg +1 -0
- package/dist/assets/model-brands/azure-openai.svg +1 -0
- package/dist/assets/model-brands/cerebras.png +0 -0
- package/dist/assets/model-brands/claude.svg +1 -0
- package/dist/assets/model-brands/dashscope.svg +45 -0
- package/dist/assets/model-brands/deepseek.svg +3 -0
- package/dist/assets/model-brands/fireworks.svg +5 -0
- package/dist/assets/model-brands/gemini.png +0 -0
- package/dist/assets/model-brands/google-vertex.svg +25 -0
- package/dist/assets/model-brands/huggingface.svg +8 -0
- package/dist/assets/model-brands/kimi-dark.svg +5 -0
- package/dist/assets/model-brands/kimi-light.svg +5 -0
- package/dist/assets/model-brands/minimax-dark.svg +1 -0
- package/dist/assets/model-brands/minimax-light.svg +1 -0
- package/dist/assets/model-brands/moonshot-dark.svg +1 -0
- package/dist/assets/model-brands/moonshot-light.svg +1 -0
- package/dist/assets/model-brands/openai.svg +1 -0
- package/dist/assets/model-brands/opencode-dark.svg +18 -0
- package/dist/assets/model-brands/opencode-light.svg +18 -0
- package/dist/assets/model-brands/openrouter-dark.svg +3 -0
- package/dist/assets/model-brands/openrouter-light.svg +3 -0
- package/dist/assets/model-brands/siliconflow.png +0 -0
- package/dist/assets/model-brands/together.svg +21 -0
- package/dist/assets/model-brands/xai-dark.svg +19 -0
- package/dist/assets/model-brands/xai-light.svg +19 -0
- package/dist/assets/model-brands/zai-dark.svg +35 -0
- package/dist/assets/model-brands/zai-light.svg +35 -0
- package/dist/shortcut-presentation.js +19 -2
- package/dist/src/app-launcher/install.test.d.ts +2 -0
- package/dist/src/app-launcher/install.test.d.ts.map +1 -0
- package/dist/src/app-launcher/install.test.js +57 -0
- package/dist/src/app-launcher/install.test.js.map +1 -0
- package/dist/src/app-launcher/model.d.ts +23 -0
- package/dist/src/app-launcher/model.d.ts.map +1 -0
- package/dist/src/app-launcher/model.js +18 -0
- package/dist/src/app-launcher/model.js.map +1 -0
- package/dist/src/app-launcher/runtime.test.d.ts +2 -0
- package/dist/src/app-launcher/runtime.test.d.ts.map +1 -0
- package/dist/src/app-launcher/runtime.test.js +92 -0
- package/dist/src/app-launcher/runtime.test.js.map +1 -0
- package/dist/src/cli/activate-owned-host.d.ts +10 -0
- package/dist/src/cli/activate-owned-host.d.ts.map +1 -0
- package/dist/src/cli/activate-owned-host.js +29 -0
- package/dist/src/cli/activate-owned-host.js.map +1 -0
- package/dist/src/cli/app-command.d.ts +7 -0
- package/dist/src/cli/app-command.d.ts.map +1 -0
- package/dist/src/cli/app-command.js +111 -0
- package/dist/src/cli/app-command.js.map +1 -0
- package/dist/src/cli/app-entry.d.ts +12 -0
- package/dist/src/cli/app-entry.d.ts.map +1 -0
- package/dist/src/cli/app-entry.js +99 -0
- package/dist/src/cli/app-entry.js.map +1 -0
- package/dist/src/cli/parse.d.ts +5 -2
- package/dist/src/cli/parse.d.ts.map +1 -1
- package/dist/src/cli/parse.js +2 -1
- package/dist/src/cli/parse.js.map +1 -1
- package/dist/src/cli/run-command-dispatch.d.ts.map +1 -1
- package/dist/src/cli/run-command-dispatch.js +5 -0
- package/dist/src/cli/run-command-dispatch.js.map +1 -1
- package/dist/src/cli/run-command.d.ts.map +1 -1
- package/dist/src/cli/run-command.js +15 -3
- package/dist/src/cli/run-command.js.map +1 -1
- package/dist/src/cli/run-support.d.ts +8 -1
- package/dist/src/cli/run-support.d.ts.map +1 -1
- package/dist/src/cli/run-support.js +1 -0
- package/dist/src/cli/run-support.js.map +1 -1
- package/dist/src/cli/shortcut-entry.d.ts +2 -6
- package/dist/src/cli/shortcut-entry.d.ts.map +1 -1
- package/dist/src/cli/shortcut-entry.js +2 -25
- package/dist/src/cli/shortcut-entry.js.map +1 -1
- package/dist/src/cli/supervisor-command.d.ts.map +1 -1
- package/dist/src/cli/supervisor-command.js +12 -4
- package/dist/src/cli/supervisor-command.js.map +1 -1
- package/dist/src/config/home-config-model-catalogs.d.ts +13 -0
- package/dist/src/config/home-config-model-catalogs.d.ts.map +1 -0
- package/dist/src/config/home-config-model-catalogs.js +107 -0
- package/dist/src/config/home-config-model-catalogs.js.map +1 -0
- package/dist/src/config/home-config.d.ts +3 -0
- package/dist/src/config/home-config.d.ts.map +1 -1
- package/dist/src/config/home-config.js +10 -8
- package/dist/src/config/home-config.js.map +1 -1
- package/dist/src/current-user-native-pins.d.ts +6 -0
- package/dist/src/current-user-native-pins.d.ts.map +1 -1
- package/dist/src/current-user-native-pins.js +7 -0
- package/dist/src/current-user-native-pins.js.map +1 -1
- package/dist/src/launcher/codex-config-model-providers.d.ts +9 -1
- package/dist/src/launcher/codex-config-model-providers.d.ts.map +1 -1
- package/dist/src/launcher/codex-config-model-providers.js +86 -23
- package/dist/src/launcher/codex-config-model-providers.js.map +1 -1
- package/dist/src/launcher/model-catalog/abort.d.ts +3 -0
- package/dist/src/launcher/model-catalog/abort.d.ts.map +1 -0
- package/dist/src/launcher/model-catalog/abort.js +16 -0
- package/dist/src/launcher/model-catalog/abort.js.map +1 -0
- package/dist/src/launcher/model-catalog/atomic-store.d.ts +13 -0
- package/dist/src/launcher/model-catalog/atomic-store.d.ts.map +1 -0
- package/dist/src/launcher/model-catalog/atomic-store.js +85 -0
- package/dist/src/launcher/model-catalog/atomic-store.js.map +1 -0
- package/dist/src/launcher/model-catalog/builtin-registry.d.ts +4 -0
- package/dist/src/launcher/model-catalog/builtin-registry.d.ts.map +1 -0
- package/dist/src/launcher/model-catalog/builtin-registry.js +7 -0
- package/dist/src/launcher/model-catalog/builtin-registry.js.map +1 -0
- package/dist/src/launcher/model-catalog/configured-source.d.ts +15 -0
- package/dist/src/launcher/model-catalog/configured-source.d.ts.map +1 -0
- package/dist/src/launcher/model-catalog/configured-source.js +99 -0
- package/dist/src/launcher/model-catalog/configured-source.js.map +1 -0
- package/dist/src/launcher/model-catalog/contracts.d.ts +87 -0
- package/dist/src/launcher/model-catalog/contracts.d.ts.map +1 -0
- package/dist/src/launcher/model-catalog/contracts.js +54 -0
- package/dist/src/launcher/model-catalog/contracts.js.map +1 -0
- package/dist/src/launcher/model-catalog/deepseek.d.ts +4 -0
- package/dist/src/launcher/model-catalog/deepseek.d.ts.map +1 -0
- package/dist/src/launcher/model-catalog/deepseek.js +123 -0
- package/dist/src/launcher/model-catalog/deepseek.js.map +1 -0
- package/dist/src/launcher/model-catalog/file-source.d.ts +10 -0
- package/dist/src/launcher/model-catalog/file-source.d.ts.map +1 -0
- package/dist/src/launcher/model-catalog/file-source.js +136 -0
- package/dist/src/launcher/model-catalog/file-source.js.map +1 -0
- package/dist/src/launcher/model-catalog/managed-catalog-composition.d.ts +33 -0
- package/dist/src/launcher/model-catalog/managed-catalog-composition.d.ts.map +1 -0
- package/dist/src/launcher/model-catalog/managed-catalog-composition.js +528 -0
- package/dist/src/launcher/model-catalog/managed-catalog-composition.js.map +1 -0
- package/dist/src/launcher/model-catalog/managed-catalog-state.d.ts +16 -0
- package/dist/src/launcher/model-catalog/managed-catalog-state.d.ts.map +1 -0
- package/dist/src/launcher/model-catalog/managed-catalog-state.js +130 -0
- package/dist/src/launcher/model-catalog/managed-catalog-state.js.map +1 -0
- package/dist/src/launcher/model-catalog/managed-provider-api.d.ts +14 -0
- package/dist/src/launcher/model-catalog/managed-provider-api.d.ts.map +1 -0
- package/dist/src/launcher/model-catalog/managed-provider-api.js +53 -0
- package/dist/src/launcher/model-catalog/managed-provider-api.js.map +1 -0
- package/dist/src/launcher/model-catalog/managed-provider-capture.d.ts +4 -0
- package/dist/src/launcher/model-catalog/managed-provider-capture.d.ts.map +1 -0
- package/dist/src/launcher/model-catalog/managed-provider-capture.js +71 -0
- package/dist/src/launcher/model-catalog/managed-provider-capture.js.map +1 -0
- package/dist/src/launcher/model-catalog/managed-provider-owner.d.ts +38 -0
- package/dist/src/launcher/model-catalog/managed-provider-owner.d.ts.map +1 -0
- package/dist/src/launcher/model-catalog/managed-provider-owner.js +348 -0
- package/dist/src/launcher/model-catalog/managed-provider-owner.js.map +1 -0
- package/dist/src/launcher/model-catalog/managed-provider-schema.d.ts +31 -0
- package/dist/src/launcher/model-catalog/managed-provider-schema.d.ts.map +1 -0
- package/dist/src/launcher/model-catalog/managed-provider-schema.js +71 -0
- package/dist/src/launcher/model-catalog/managed-provider-schema.js.map +1 -0
- package/dist/src/launcher/model-catalog/owner-projection.d.ts +20 -0
- package/dist/src/launcher/model-catalog/owner-projection.d.ts.map +1 -0
- package/dist/src/launcher/model-catalog/owner-projection.js +37 -0
- package/dist/src/launcher/model-catalog/owner-projection.js.map +1 -0
- package/dist/src/launcher/model-catalog/registry.d.ts +7 -0
- package/dist/src/launcher/model-catalog/registry.d.ts.map +1 -0
- package/dist/src/launcher/model-catalog/registry.js +19 -0
- package/dist/src/launcher/model-catalog/registry.js.map +1 -0
- package/dist/src/launcher/model-catalog/request-capability.d.ts +10 -0
- package/dist/src/launcher/model-catalog/request-capability.d.ts.map +1 -0
- package/dist/src/launcher/model-catalog/request-capability.js +74 -0
- package/dist/src/launcher/model-catalog/request-capability.js.map +1 -0
- package/dist/src/launcher/model-catalog/script-composition.d.ts +18 -0
- package/dist/src/launcher/model-catalog/script-composition.d.ts.map +1 -0
- package/dist/src/launcher/model-catalog/script-composition.js +25 -0
- package/dist/src/launcher/model-catalog/script-composition.js.map +1 -0
- package/dist/src/launcher/model-catalog/script-executor.d.ts +5 -0
- package/dist/src/launcher/model-catalog/script-executor.d.ts.map +1 -0
- package/dist/src/launcher/model-catalog/script-executor.js +140 -0
- package/dist/src/launcher/model-catalog/script-executor.js.map +1 -0
- package/dist/src/launcher/model-catalog/script-management.d.ts +4 -0
- package/dist/src/launcher/model-catalog/script-management.d.ts.map +1 -0
- package/dist/src/launcher/model-catalog/script-management.js +29 -0
- package/dist/src/launcher/model-catalog/script-management.js.map +1 -0
- package/dist/src/launcher/model-catalog/script-output-parser.d.ts +3 -0
- package/dist/src/launcher/model-catalog/script-output-parser.d.ts.map +1 -0
- package/dist/src/launcher/model-catalog/script-output-parser.js +59 -0
- package/dist/src/launcher/model-catalog/script-output-parser.js.map +1 -0
- package/dist/src/launcher/model-catalog/script-runtime.d.ts +30 -0
- package/dist/src/launcher/model-catalog/script-runtime.d.ts.map +1 -0
- package/dist/src/launcher/model-catalog/script-runtime.js +164 -0
- package/dist/src/launcher/model-catalog/script-runtime.js.map +1 -0
- package/dist/src/launcher/model-catalog/script-schema.d.ts +42 -0
- package/dist/src/launcher/model-catalog/script-schema.d.ts.map +1 -0
- package/dist/src/launcher/model-catalog/script-schema.js +129 -0
- package/dist/src/launcher/model-catalog/script-schema.js.map +1 -0
- package/dist/src/launcher/model-catalog/script-types.d.ts +84 -0
- package/dist/src/launcher/model-catalog/script-types.d.ts.map +1 -0
- package/dist/src/launcher/model-catalog/script-types.js +9 -0
- package/dist/src/launcher/model-catalog/script-types.js.map +1 -0
- package/dist/src/launcher/model-catalog/service.d.ts +39 -0
- package/dist/src/launcher/model-catalog/service.d.ts.map +1 -0
- package/dist/src/launcher/model-catalog/service.js +292 -0
- package/dist/src/launcher/model-catalog/service.js.map +1 -0
- package/dist/src/launcher/model-catalog/supplement.d.ts +4 -0
- package/dist/src/launcher/model-catalog/supplement.d.ts.map +1 -0
- package/dist/src/launcher/model-catalog/supplement.js +44 -0
- package/dist/src/launcher/model-catalog/supplement.js.map +1 -0
- package/dist/src/launcher/native-model-provider-catalog.d.ts +6 -1
- package/dist/src/launcher/native-model-provider-catalog.d.ts.map +1 -1
- package/dist/src/launcher/native-model-provider-catalog.js +16 -3
- package/dist/src/launcher/native-model-provider-catalog.js.map +1 -1
- package/dist/src/launcher/native-submission-cdp-channel.d.ts +7 -0
- package/dist/src/launcher/native-submission-cdp-channel.d.ts.map +1 -1
- package/dist/src/launcher/native-submission-cdp-channel.js +54 -7
- package/dist/src/launcher/native-submission-cdp-channel.js.map +1 -1
- package/dist/src/launcher/native-submission-composition.d.ts +6 -0
- package/dist/src/launcher/native-submission-composition.d.ts.map +1 -1
- package/dist/src/launcher/native-submission-composition.js +58 -8
- package/dist/src/launcher/native-submission-composition.js.map +1 -1
- package/dist/src/launcher/native-submission-controller.d.ts +1 -0
- package/dist/src/launcher/native-submission-controller.d.ts.map +1 -1
- package/dist/src/launcher/native-submission-controller.js +24 -3
- package/dist/src/launcher/native-submission-controller.js.map +1 -1
- package/dist/src/launcher/native-submission-structure.d.ts.map +1 -1
- package/dist/src/launcher/native-submission-structure.js +15 -1
- package/dist/src/launcher/native-submission-structure.js.map +1 -1
- package/dist/src/launcher/secret-resolver.d.ts.map +1 -1
- package/dist/src/launcher/secret-resolver.js +3 -0
- package/dist/src/launcher/secret-resolver.js.map +1 -1
- package/dist/src/model-catalog/management-overlay.d.ts +67 -0
- package/dist/src/model-catalog/management-overlay.d.ts.map +1 -0
- package/dist/src/model-catalog/management-overlay.js +193 -0
- package/dist/src/model-catalog/management-overlay.js.map +1 -0
- package/dist/src/model-catalog-management.d.ts +130 -0
- package/dist/src/model-catalog-management.d.ts.map +1 -0
- package/dist/src/model-catalog-management.js +2 -0
- package/dist/src/model-catalog-management.js.map +1 -0
- package/dist/src/model-selector-branding.d.ts +24 -0
- package/dist/src/model-selector-branding.d.ts.map +1 -0
- package/dist/src/model-selector-branding.js +201 -0
- package/dist/src/model-selector-branding.js.map +1 -0
- package/dist/src/renderer/adapter/native-model-provider-interaction.d.ts +4 -0
- package/dist/src/renderer/adapter/native-model-provider-interaction.d.ts.map +1 -0
- package/dist/src/renderer/adapter/native-model-provider-interaction.js +45 -0
- package/dist/src/renderer/adapter/native-model-provider-interaction.js.map +1 -0
- package/dist/src/renderer/adapter/native-model-provider-seat.d.ts +2 -0
- package/dist/src/renderer/adapter/native-model-provider-seat.d.ts.map +1 -1
- package/dist/src/renderer/adapter/native-model-provider-seat.js +7 -7
- package/dist/src/renderer/adapter/native-model-provider-seat.js.map +1 -1
- package/dist/src/renderer/current-user/native.d.ts +17 -1
- package/dist/src/renderer/current-user/native.d.ts.map +1 -1
- package/dist/src/renderer/current-user/native.js +20 -7
- package/dist/src/renderer/current-user/native.js.map +1 -1
- package/dist/src/renderer/host-ui/HostMenu.d.ts +2 -1
- package/dist/src/renderer/host-ui/HostMenu.d.ts.map +1 -1
- package/dist/src/renderer/host-ui/HostMenu.js +13 -4
- package/dist/src/renderer/host-ui/HostMenu.js.map +1 -1
- package/dist/src/renderer/host-ui/ModelBrandIcon.d.ts +8 -0
- package/dist/src/renderer/host-ui/ModelBrandIcon.d.ts.map +1 -0
- package/dist/src/renderer/host-ui/ModelBrandIcon.js +93 -0
- package/dist/src/renderer/host-ui/ModelBrandIcon.js.map +1 -0
- package/dist/src/renderer/install-model-provider-selector.d.ts.map +1 -1
- package/dist/src/renderer/install-model-provider-selector.js +23 -7
- package/dist/src/renderer/install-model-provider-selector.js.map +1 -1
- package/dist/src/renderer/model-provider-selector.d.ts +2 -1
- package/dist/src/renderer/model-provider-selector.d.ts.map +1 -1
- package/dist/src/renderer/model-provider-selector.js +46 -12
- package/dist/src/renderer/model-provider-selector.js.map +1 -1
- package/dist/src/renderer/model-providers.css +14 -1
- package/dist/src/renderer/model-providers.d.ts +17 -2
- package/dist/src/renderer/model-providers.d.ts.map +1 -1
- package/dist/src/renderer/model-providers.js +51 -1
- package/dist/src/renderer/model-providers.js.map +1 -1
- package/dist/src/renderer/native-model-provider-transport.d.ts +1 -0
- package/dist/src/renderer/native-model-provider-transport.d.ts.map +1 -1
- package/dist/src/renderer/native-model-provider-transport.js +36 -6
- package/dist/src/renderer/native-model-provider-transport.js.map +1 -1
- package/dist/src/renderer/native-provider-selection-client.d.ts +6 -0
- package/dist/src/renderer/native-provider-selection-client.d.ts.map +1 -1
- package/dist/src/renderer/native-provider-selection-client.js.map +1 -1
- package/dist/src/shortcuts/native.d.ts +2 -0
- package/dist/src/shortcuts/native.d.ts.map +1 -1
- package/dist/src/shortcuts/native.js +7 -0
- package/dist/src/shortcuts/native.js.map +1 -1
- package/package.json +1 -1
- package/third_party/lobe-icons-MIT.txt +21 -0
- package/third_party/openai-apps-sdk-ui-MIT.txt +19 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
export class CatalogError extends Error {
|
|
2
|
+
code;
|
|
3
|
+
retryAfterMs;
|
|
4
|
+
constructor(code, retryAfterMs) {
|
|
5
|
+
super(code);
|
|
6
|
+
this.code = code;
|
|
7
|
+
this.retryAfterMs = retryAfterMs;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export const object = (value) => value !== null && typeof value === 'object' && !Array.isArray(value) ? value : undefined;
|
|
11
|
+
export function boundedString(value, max = 512) {
|
|
12
|
+
return typeof value === 'string' && value.trim().length > 0 && value.length <= max
|
|
13
|
+
&& !/[\u0000-\u001f\u007f]/u.test(value);
|
|
14
|
+
}
|
|
15
|
+
export function catalogModels(ids) {
|
|
16
|
+
if (!Array.isArray(ids) || ids.length > 10_000 || ids.some(id => !boundedString(id))) {
|
|
17
|
+
throw new CatalogError('source-invalid');
|
|
18
|
+
}
|
|
19
|
+
return Object.freeze([...new Set(ids)].sort().map(id => Object.freeze({ id, label: id, aliases: Object.freeze([]) })));
|
|
20
|
+
}
|
|
21
|
+
export function parseCatalogStrategy(value) {
|
|
22
|
+
const source = object(value);
|
|
23
|
+
if (!source)
|
|
24
|
+
throw new CatalogError('source-invalid');
|
|
25
|
+
const exact = (keys) => Object.keys(source).every(key => keys.includes(key));
|
|
26
|
+
const mode = source.mode;
|
|
27
|
+
if (source.kind === 'native' && exact(['kind', 'mode']) && (mode === undefined || mode === 'only' || mode === 'augment')) {
|
|
28
|
+
return Object.freeze({ kind: 'native', ...(mode === undefined ? {} : { mode }) });
|
|
29
|
+
}
|
|
30
|
+
if (source.kind === 'manual') {
|
|
31
|
+
if (exact(['kind', 'ids']) && source.ids !== undefined) {
|
|
32
|
+
return Object.freeze({ kind: 'manual', ids: Object.freeze(catalogModels(source.ids).map(model => model.id)) });
|
|
33
|
+
}
|
|
34
|
+
if (exact(['kind', 'file']) && boundedString(source.file, 4096) && !/^[a-z]+:\/\//iu.test(source.file)) {
|
|
35
|
+
return Object.freeze({ kind: 'manual', file: source.file });
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (source.kind === 'auto' && exact(['kind', 'adapter', 'ttlMs', 'mode'])
|
|
39
|
+
&& (mode === undefined || mode === 'only' || mode === 'augment')) {
|
|
40
|
+
const adapter = source.adapter ?? 'detect';
|
|
41
|
+
const ttlMs = source.ttlMs ?? 3_600_000;
|
|
42
|
+
if (boundedString(adapter, 128) && Number.isSafeInteger(ttlMs) && Number(ttlMs) >= 60_000
|
|
43
|
+
&& Number(ttlMs) <= 86_400_000) {
|
|
44
|
+
return Object.freeze({ kind: 'auto', adapter, ttlMs: Number(ttlMs), ...(mode === undefined ? {} : { mode }) });
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (source.kind === 'script' && exact(['kind', 'commandRef', 'mode']) && boundedString(source.commandRef, 128)
|
|
48
|
+
&& (mode === undefined || mode === 'replace' || mode === 'supplement')) {
|
|
49
|
+
// A recognized strategy is not an execution grant. The runner is not implemented.
|
|
50
|
+
return Object.freeze({ kind: 'script', commandRef: source.commandRef, ...(mode === undefined ? {} : { mode }) });
|
|
51
|
+
}
|
|
52
|
+
throw new CatalogError('source-invalid');
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=contracts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../../src/launcher/model-catalog/contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deepseek.d.ts","sourceRoot":"","sources":["../../../../src/launcher/model-catalog/deepseek.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,gBAAgB,EAGtB,MAAM,gBAAgB,CAAA;AAGvB,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAKpE;AAkDD,wBAAgB,wBAAwB,IAAI,gBAAgB,CA4D3D"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { boundedString, CatalogError, catalogModels, object, } from './contracts.js';
|
|
2
|
+
import { withAbort } from './abort.js';
|
|
3
|
+
export function isDeepSeekOfficialEndpoint(endpoint) {
|
|
4
|
+
// Check spelling before URL normalization can discard dot segments or empty delimiters.
|
|
5
|
+
if (!/^https:\/\/api\.deepseek\.com(?::443)?\/?$/u.test(endpoint))
|
|
6
|
+
return false;
|
|
7
|
+
const url = new URL(endpoint);
|
|
8
|
+
return url.origin === 'https://api.deepseek.com' && url.pathname === '/';
|
|
9
|
+
}
|
|
10
|
+
function statusError(response) {
|
|
11
|
+
const status = response.status;
|
|
12
|
+
if (status === 401)
|
|
13
|
+
return new CatalogError('authentication');
|
|
14
|
+
if (status === 403)
|
|
15
|
+
return new CatalogError('permission');
|
|
16
|
+
if (status === 402)
|
|
17
|
+
return new CatalogError('account');
|
|
18
|
+
if (status === 429) {
|
|
19
|
+
const raw = response.headers.get('retry-after');
|
|
20
|
+
const seconds = raw === null ? NaN : Number(raw);
|
|
21
|
+
const delay = Number.isFinite(seconds) ? seconds * 1000 : Date.parse(raw ?? '') - Date.now();
|
|
22
|
+
return new CatalogError('rate-limit', Number.isFinite(delay) ? Math.max(0, delay) : undefined);
|
|
23
|
+
}
|
|
24
|
+
return new CatalogError(status >= 500 ? 'temporary' : 'protocol');
|
|
25
|
+
}
|
|
26
|
+
async function readResponse(response, signal) {
|
|
27
|
+
if (!response.headers.get('content-type')?.toLowerCase().includes('application/json') || !response.body) {
|
|
28
|
+
void response.body?.cancel().catch(() => undefined);
|
|
29
|
+
throw new CatalogError('protocol');
|
|
30
|
+
}
|
|
31
|
+
const reader = response.body.getReader();
|
|
32
|
+
const cancel = () => {
|
|
33
|
+
void reader.cancel().catch(() => undefined);
|
|
34
|
+
};
|
|
35
|
+
signal.addEventListener('abort', cancel, { once: true });
|
|
36
|
+
const chunks = [];
|
|
37
|
+
let size = 0;
|
|
38
|
+
try {
|
|
39
|
+
while (true) {
|
|
40
|
+
signal.throwIfAborted();
|
|
41
|
+
const { done, value } = await reader.read();
|
|
42
|
+
signal.throwIfAborted();
|
|
43
|
+
if (done)
|
|
44
|
+
break;
|
|
45
|
+
size += value.byteLength;
|
|
46
|
+
if (size > 1024 * 1024)
|
|
47
|
+
throw new CatalogError('protocol');
|
|
48
|
+
chunks.push(value);
|
|
49
|
+
}
|
|
50
|
+
try {
|
|
51
|
+
return JSON.parse(new TextDecoder('utf-8', { fatal: true }).decode(Buffer.concat(chunks)));
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
throw new CatalogError('protocol');
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
finally {
|
|
58
|
+
signal.removeEventListener('abort', cancel);
|
|
59
|
+
void reader.cancel().catch(() => undefined);
|
|
60
|
+
reader.releaseLock();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
export function deepSeekDiscoveryAdapter() {
|
|
64
|
+
return Object.freeze({
|
|
65
|
+
id: 'deepseek-official',
|
|
66
|
+
version: '2',
|
|
67
|
+
pagination: 'none',
|
|
68
|
+
matches: isDeepSeekOfficialEndpoint,
|
|
69
|
+
async discover(connection, externalSignal) {
|
|
70
|
+
if (!isDeepSeekOfficialEndpoint(connection.endpoint))
|
|
71
|
+
throw new CatalogError('unsupported');
|
|
72
|
+
const timeout = new AbortController();
|
|
73
|
+
const timer = setTimeout(() => timeout.abort(), 10_000);
|
|
74
|
+
timer.unref?.();
|
|
75
|
+
const signal = AbortSignal.any([externalSignal, timeout.signal]);
|
|
76
|
+
try {
|
|
77
|
+
signal.throwIfAborted();
|
|
78
|
+
if (!connection.current())
|
|
79
|
+
throw new CatalogError('cancelled');
|
|
80
|
+
const response = await withAbort(connection.request({ origin: 'https://api.deepseek.com', method: 'GET', path: '/models' }, signal), signal);
|
|
81
|
+
if (response.status !== 200) {
|
|
82
|
+
void response.body?.cancel().catch(() => undefined);
|
|
83
|
+
throw statusError(response);
|
|
84
|
+
}
|
|
85
|
+
if (response.redirected || (response.url && response.url !== 'https://api.deepseek.com/models')) {
|
|
86
|
+
void response.body?.cancel().catch(() => undefined);
|
|
87
|
+
throw new CatalogError('protocol');
|
|
88
|
+
}
|
|
89
|
+
const body = object(await readResponse(response, signal));
|
|
90
|
+
if (!body || body.object !== 'list' || !Array.isArray(body.data) || body.data.length > 1000
|
|
91
|
+
|| body.has_more === true || body.nextCursor != null || body.next_cursor != null)
|
|
92
|
+
throw new CatalogError('protocol');
|
|
93
|
+
const ids = body.data.map(item => {
|
|
94
|
+
const model = object(item);
|
|
95
|
+
if (!model || model.object !== 'model' || !boundedString(model.id) || !boundedString(model.owned_by, 256)) {
|
|
96
|
+
throw new CatalogError('protocol');
|
|
97
|
+
}
|
|
98
|
+
return model.id;
|
|
99
|
+
});
|
|
100
|
+
if (!connection.current())
|
|
101
|
+
throw new CatalogError('cancelled');
|
|
102
|
+
// Official Codex integration documents these exact IDs. Unknown and legacy IDs stay unconfirmed.
|
|
103
|
+
return Object.freeze(catalogModels(ids).map(model => Object.freeze({
|
|
104
|
+
...model,
|
|
105
|
+
protocolCapabilities: Object.freeze({
|
|
106
|
+
responses: ['deepseek-flash', 'deepseek-v4-pro'].includes(model.id),
|
|
107
|
+
}),
|
|
108
|
+
})));
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
if (externalSignal.aborted)
|
|
112
|
+
throw new CatalogError('cancelled');
|
|
113
|
+
if (error instanceof CatalogError)
|
|
114
|
+
throw error;
|
|
115
|
+
throw new CatalogError(signal.aborted || error instanceof TypeError ? 'temporary' : 'protocol');
|
|
116
|
+
}
|
|
117
|
+
finally {
|
|
118
|
+
clearTimeout(timer);
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=deepseek.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deepseek.js","sourceRoot":"","sources":["../../../../src/launcher/model-catalog/deepseek.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type CatalogModel } from './contracts.js';
|
|
2
|
+
export declare function readCatalogFile(file: string, signal?: AbortSignal): Promise<readonly CatalogModel[]>;
|
|
3
|
+
/** Watch parent directories so atomic-save renames do not strand an inode watcher. */
|
|
4
|
+
export declare function watchCatalogFiles(files: readonly string[], changed: () => void, options?: {
|
|
5
|
+
debounceMs?: number;
|
|
6
|
+
reconcileMs?: number;
|
|
7
|
+
}): {
|
|
8
|
+
dispose(): void;
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=file-source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-source.d.ts","sourceRoot":"","sources":["../../../../src/launcher/model-catalog/file-source.ts"],"names":[],"mappings":"AAGA,OAAO,EAA+B,KAAK,YAAY,EAAU,MAAM,gBAAgB,CAAA;AAEvF,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC,CAoC1G;AAED,sFAAsF;AACtF,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,OAAO,EAAE,MAAM,IAAI,EACnB,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1D;IAAE,OAAO,IAAI,IAAI,CAAA;CAAE,CA0ErB"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { watch } from 'node:fs';
|
|
2
|
+
import { open, stat } from 'node:fs/promises';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { boundedString, CatalogError, object } from './contracts.js';
|
|
5
|
+
export async function readCatalogFile(file, signal) {
|
|
6
|
+
const handle = await open(file, 'r');
|
|
7
|
+
try {
|
|
8
|
+
signal?.throwIfAborted();
|
|
9
|
+
const before = await handle.stat();
|
|
10
|
+
if (!before.isFile() || before.size > 32 * 1024 * 1024)
|
|
11
|
+
throw new CatalogError('source-invalid');
|
|
12
|
+
// Read one byte beyond the budget, even if a writer grows the file after stat.
|
|
13
|
+
const bytes = Buffer.alloc(Math.min(before.size + 1, 32 * 1024 * 1024 + 1));
|
|
14
|
+
const { bytesRead } = await handle.read(bytes, 0, bytes.length, 0);
|
|
15
|
+
const after = await handle.stat();
|
|
16
|
+
signal?.throwIfAborted();
|
|
17
|
+
if (bytesRead !== before.size || before.size !== after.size || before.mtimeMs !== after.mtimeMs) {
|
|
18
|
+
throw new CatalogError('source-invalid');
|
|
19
|
+
}
|
|
20
|
+
const body = object(JSON.parse(bytes.subarray(0, bytesRead).toString('utf8')));
|
|
21
|
+
if (!Array.isArray(body?.models) || body.models.length > 10_000)
|
|
22
|
+
throw new CatalogError('source-invalid');
|
|
23
|
+
const models = new Map();
|
|
24
|
+
for (const item of body.models) {
|
|
25
|
+
const model = object(item);
|
|
26
|
+
const id = model?.id ?? model?.slug;
|
|
27
|
+
const label = model?.label ?? model?.display_name ?? id;
|
|
28
|
+
const aliases = model?.aliases ?? [];
|
|
29
|
+
if (!boundedString(id) || !boundedString(label, 256) || !Array.isArray(aliases)
|
|
30
|
+
|| aliases.length > 128 || aliases.some(alias => !boundedString(alias, 256))) {
|
|
31
|
+
throw new CatalogError('source-invalid');
|
|
32
|
+
}
|
|
33
|
+
if (!models.has(id))
|
|
34
|
+
models.set(id, Object.freeze({ id, label, aliases: Object.freeze([...aliases]) }));
|
|
35
|
+
}
|
|
36
|
+
return Object.freeze([...models.values()].sort((a, b) => a.id < b.id ? -1 : a.id > b.id ? 1 : 0));
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
throw new CatalogError('source-invalid');
|
|
40
|
+
}
|
|
41
|
+
finally {
|
|
42
|
+
await handle.close();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/** Watch parent directories so atomic-save renames do not strand an inode watcher. */
|
|
46
|
+
export function watchCatalogFiles(files, changed, options = {}) {
|
|
47
|
+
const paths = [...new Set(files.map(file => path.resolve(file)))];
|
|
48
|
+
if (paths.length > 256)
|
|
49
|
+
throw new Error('Too many catalog files');
|
|
50
|
+
const watchers = [];
|
|
51
|
+
let disposed = false;
|
|
52
|
+
let debounce;
|
|
53
|
+
let maximum;
|
|
54
|
+
let polling = false;
|
|
55
|
+
let signatures;
|
|
56
|
+
const flush = () => {
|
|
57
|
+
if (debounce)
|
|
58
|
+
clearTimeout(debounce);
|
|
59
|
+
if (maximum)
|
|
60
|
+
clearTimeout(maximum);
|
|
61
|
+
debounce = maximum = undefined;
|
|
62
|
+
if (!disposed)
|
|
63
|
+
changed();
|
|
64
|
+
};
|
|
65
|
+
const dirty = () => {
|
|
66
|
+
if (disposed)
|
|
67
|
+
return;
|
|
68
|
+
if (debounce)
|
|
69
|
+
clearTimeout(debounce);
|
|
70
|
+
debounce = setTimeout(flush, options.debounceMs ?? 250);
|
|
71
|
+
debounce.unref?.();
|
|
72
|
+
maximum ??= setTimeout(flush, 2000);
|
|
73
|
+
maximum.unref?.();
|
|
74
|
+
};
|
|
75
|
+
const directories = new Map();
|
|
76
|
+
for (const file of paths) {
|
|
77
|
+
const directory = path.dirname(file);
|
|
78
|
+
const names = directories.get(directory) ?? new Set();
|
|
79
|
+
names.add(path.basename(file));
|
|
80
|
+
directories.set(directory, names);
|
|
81
|
+
}
|
|
82
|
+
for (const [directory, names] of directories) {
|
|
83
|
+
try {
|
|
84
|
+
const watcher = watch(directory, { persistent: false }, (_event, name) => {
|
|
85
|
+
if (name === null || names.has(String(name)))
|
|
86
|
+
dirty();
|
|
87
|
+
});
|
|
88
|
+
watcher.on('error', () => {
|
|
89
|
+
watcher.close();
|
|
90
|
+
dirty();
|
|
91
|
+
});
|
|
92
|
+
watchers.push(watcher);
|
|
93
|
+
}
|
|
94
|
+
catch { /* A missing directory is handled by bounded reconciliation. */ }
|
|
95
|
+
}
|
|
96
|
+
const reconcile = async () => {
|
|
97
|
+
if (disposed || polling)
|
|
98
|
+
return;
|
|
99
|
+
polling = true;
|
|
100
|
+
try {
|
|
101
|
+
const next = await Promise.all(paths.map(async (file) => {
|
|
102
|
+
try {
|
|
103
|
+
const value = await stat(file);
|
|
104
|
+
return `${value.dev}:${value.ino}:${value.size}:${value.mtimeMs}`;
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
return 'missing';
|
|
108
|
+
}
|
|
109
|
+
}));
|
|
110
|
+
if (signatures && next.some((value, index) => value !== signatures[index]))
|
|
111
|
+
dirty();
|
|
112
|
+
signatures = next;
|
|
113
|
+
}
|
|
114
|
+
finally {
|
|
115
|
+
polling = false;
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
void reconcile();
|
|
119
|
+
const timer = setInterval(() => {
|
|
120
|
+
void reconcile();
|
|
121
|
+
}, options.reconcileMs ?? 30_000);
|
|
122
|
+
timer.unref?.();
|
|
123
|
+
return {
|
|
124
|
+
dispose() {
|
|
125
|
+
disposed = true;
|
|
126
|
+
clearInterval(timer);
|
|
127
|
+
if (debounce)
|
|
128
|
+
clearTimeout(debounce);
|
|
129
|
+
if (maximum)
|
|
130
|
+
clearTimeout(maximum);
|
|
131
|
+
for (const watcher of watchers)
|
|
132
|
+
watcher.close();
|
|
133
|
+
},
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=file-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-source.js","sourceRoot":"","sources":["../../../../src/launcher/model-catalog/file-source.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { CatalogManagementCommand, CatalogManagementResult, CatalogManagementSnapshot } from '../../model-catalog-management.js';
|
|
2
|
+
import type { NativeModelProviderCatalogEntry } from '../native-model-provider-catalog.js';
|
|
3
|
+
import { ManagedProviderOwner } from './managed-provider-owner.js';
|
|
4
|
+
/** One profile-owned composition; its owner and all secret/configuration methods remain Node-private. */
|
|
5
|
+
export declare class ManagedCatalogComposition {
|
|
6
|
+
#private;
|
|
7
|
+
private readonly options;
|
|
8
|
+
private constructor();
|
|
9
|
+
static open(options: Parameters<typeof ManagedProviderOwner.open>[0] & {
|
|
10
|
+
capture?: (signal: AbortSignal) => Promise<string>;
|
|
11
|
+
responsesAvailable: boolean;
|
|
12
|
+
environment?: () => Readonly<Record<string, string | undefined>>;
|
|
13
|
+
}): Promise<ManagedCatalogComposition>;
|
|
14
|
+
private reconcile;
|
|
15
|
+
private persist;
|
|
16
|
+
private members;
|
|
17
|
+
private rows;
|
|
18
|
+
snapshot(): CatalogManagementSnapshot;
|
|
19
|
+
private revision;
|
|
20
|
+
catalog(): readonly NativeModelProviderCatalogEntry[];
|
|
21
|
+
owns(id: string): boolean;
|
|
22
|
+
admits(id: string, model: string): boolean;
|
|
23
|
+
validateSelection(id: string, model: string): Promise<boolean>;
|
|
24
|
+
nativeConnection(id: string): Promise<import("../managed-service-native-connection.js").NativeManagedGatewayConnectionSession>;
|
|
25
|
+
subscribe(listener: () => void): () => void;
|
|
26
|
+
private changed;
|
|
27
|
+
private serial;
|
|
28
|
+
private capture;
|
|
29
|
+
command(command: CatalogManagementCommand, authorized: () => boolean): Promise<CatalogManagementResult>;
|
|
30
|
+
private apply;
|
|
31
|
+
close(): Promise<void>;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=managed-catalog-composition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"managed-catalog-composition.d.ts","sourceRoot":"","sources":["../../../../src/launcher/model-catalog/managed-catalog-composition.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EAE1B,MAAM,mCAAmC,CAAA;AAM1C,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,qCAAqC,CAAA;AAG1F,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAmClE,yGAAyG;AACzG,qBAAa,yBAAyB;;IAuBlC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAH1B,OAAO;WAqDM,IAAI,CACf,OAAO,EAAE,UAAU,CAAC,OAAO,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG;QACzD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;QAClD,kBAAkB,EAAE,OAAO,CAAA;QAC3B,WAAW,CAAC,EAAE,MAAM,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAA;KACjE,GACA,OAAO,CAAC,yBAAyB,CAAC;IAerC,OAAO,CAAC,SAAS;YA+BH,OAAO;IAqBrB,OAAO,CAAC,OAAO;IAkBf,OAAO,CAAC,IAAI;IAkCZ,QAAQ,IAAI,yBAAyB;IAuFrC,OAAO,CAAC,QAAQ;IAShB,OAAO,IAAI,SAAS,+BAA+B,EAAE;IAgBrD,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAGzB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAIpC,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIpE,gBAAgB,CAAC,EAAE,EAAE,MAAM;IAS3B,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAM3C,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,OAAO;IAKf,OAAO,CACL,OAAO,EAAE,wBAAwB,EACjC,UAAU,EAAE,MAAM,OAAO,GACxB,OAAO,CAAC,uBAAuB,CAAC;YAyErB,KAAK;IA0FnB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAoBvB"}
|