@coralai/sps-cli 0.65.26 → 0.65.28
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/dist/console/index.d.ts.map +1 -1
- package/dist/console/index.js +2 -0
- package/dist/console/index.js.map +1 -1
- package/dist/console/routes/modelConfig.d.ts +9 -0
- package/dist/console/routes/modelConfig.d.ts.map +1 -0
- package/dist/console/routes/modelConfig.js +27 -0
- package/dist/console/routes/modelConfig.js.map +1 -0
- package/dist/console-assets/assets/{ShowcasePage-C-Qcrrsm.js → ShowcasePage-r_b2tHWD.js} +1 -1
- package/dist/console-assets/assets/{index-Cs0N0RAL.js → index-DC_jSU5P.js} +98 -98
- package/dist/console-assets/index.html +1 -1
- package/dist/core/modelConfigBundle.d.ts +31 -0
- package/dist/core/modelConfigBundle.d.ts.map +1 -0
- package/dist/core/modelConfigBundle.js +93 -0
- package/dist/core/modelConfigBundle.js.map +1 -0
- package/package.json +1 -1
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
9
9
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
10
10
|
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
|
|
11
|
-
<script type="module" crossorigin src="/assets/index-
|
|
11
|
+
<script type="module" crossorigin src="/assets/index-DC_jSU5P.js"></script>
|
|
12
12
|
<link rel="stylesheet" crossorigin href="/assets/index-5SxV_3Ku.css">
|
|
13
13
|
</head>
|
|
14
14
|
<body>
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type ProviderEntry } from '../providers/llm/providers.js';
|
|
2
|
+
import { type MediaCapability, type MediaDefault, type MediaProvider } from '../providers/media/mediaProviders.js';
|
|
3
|
+
export declare const MODEL_CONFIG_BUNDLE_TYPE = "sps-model-config";
|
|
4
|
+
export declare const MODEL_CONFIG_BUNDLE_VERSION = 1;
|
|
5
|
+
export interface ModelConfigBundle {
|
|
6
|
+
type: typeof MODEL_CONFIG_BUNDLE_TYPE;
|
|
7
|
+
version: typeof MODEL_CONFIG_BUNDLE_VERSION;
|
|
8
|
+
exportedAt: string;
|
|
9
|
+
llmProviders: {
|
|
10
|
+
anthropic: ProviderEntry[];
|
|
11
|
+
openai: ProviderEntry[];
|
|
12
|
+
};
|
|
13
|
+
mediaProviders: MediaProvider[];
|
|
14
|
+
mediaDefaults: Partial<Record<MediaCapability, MediaDefault>>;
|
|
15
|
+
workerDefaults: unknown | null;
|
|
16
|
+
}
|
|
17
|
+
export interface ImportSummary {
|
|
18
|
+
llmAnthropic: number;
|
|
19
|
+
llmOpenai: number;
|
|
20
|
+
media: number;
|
|
21
|
+
mediaDefaults: number;
|
|
22
|
+
workerDefaults: boolean;
|
|
23
|
+
skipped: number;
|
|
24
|
+
}
|
|
25
|
+
/** 当前机器的模型配置全量导出。 */
|
|
26
|
+
export declare function exportModelConfigBundle(): ModelConfigBundle;
|
|
27
|
+
/** bundle 是否为本契约(嵌入平台的导入口用它分流)。 */
|
|
28
|
+
export declare function isModelConfigBundle(v: unknown): v is ModelConfigBundle;
|
|
29
|
+
/** 合并导入(按 id 覆盖,不删除既有;worker 默认整体替换留备份)。非法条目计入 skipped。 */
|
|
30
|
+
export declare function importModelConfigBundle(bundle: ModelConfigBundle): ImportSummary;
|
|
31
|
+
//# sourceMappingURL=modelConfigBundle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modelConfigBundle.d.ts","sourceRoot":"","sources":["../../src/core/modelConfigBundle.ts"],"names":[],"mappings":"AAeA,OAAO,EAAiC,KAAK,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAClG,OAAO,EAML,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,aAAa,EACnB,MAAM,sCAAsC,CAAC;AAE9C,eAAO,MAAM,wBAAwB,qBAAqB,CAAC;AAC3D,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAE7C,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,wBAAwB,CAAC;IACtC,OAAO,EAAE,OAAO,2BAA2B,CAAC;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE;QAAE,SAAS,EAAE,aAAa,EAAE,CAAC;QAAC,MAAM,EAAE,aAAa,EAAE,CAAA;KAAE,CAAC;IACtE,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC;IAC9D,cAAc,EAAE,OAAO,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB;AAeD,qBAAqB;AACrB,wBAAgB,uBAAuB,IAAI,iBAAiB,CAa3D;AAED,mCAAmC;AACnC,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,iBAAiB,CAGtE;AAED,2DAA2D;AAC3D,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,iBAAiB,GAAG,aAAa,CAqChF"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module core/modelConfigBundle
|
|
3
|
+
* @description 模型配置导出/导入的**库形态**(sps console 路由与嵌入平台共用)。
|
|
4
|
+
*
|
|
5
|
+
* 契约:bundle = { type:'sps-model-config', version:1, ... }(见 ModelConfigBundle)。
|
|
6
|
+
* 嵌入平台(coral-platform)兼容方式:其导入口检测到 type='sps-model-config' → 直接调
|
|
7
|
+
* `importModelConfigBundle(bundle)` 应用到内嵌 sps 引擎(零 schema 翻译);平台自己的
|
|
8
|
+
* 配置包用独立 type(如 'coral-model-config')走平台逻辑。
|
|
9
|
+
*
|
|
10
|
+
* 语义:导出=四类真源全量(经各 loader,懒迁移回落生效);导入=**按 id 合并覆盖,绝不删除
|
|
11
|
+
* 既有条目**;worker 全局默认整体替换(旧文件留 .bak-<ts>)。密钥明文,调用方负责提示保管。
|
|
12
|
+
*/
|
|
13
|
+
import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs';
|
|
14
|
+
import { homedir } from 'node:os';
|
|
15
|
+
import { dirname, resolve } from 'node:path';
|
|
16
|
+
import { listProviders, upsertProvider } from '../providers/llm/providers.js';
|
|
17
|
+
import { listMediaProviders, MEDIA_CAPABILITIES, readMediaDefaults, setMediaDefault, upsertMediaProvider, } from '../providers/media/mediaProviders.js';
|
|
18
|
+
export const MODEL_CONFIG_BUNDLE_TYPE = 'sps-model-config';
|
|
19
|
+
export const MODEL_CONFIG_BUNDLE_VERSION = 1;
|
|
20
|
+
function workerDefaultsFile() {
|
|
21
|
+
return resolve(homedir(), '.coral', 'agents', 'defaults.json');
|
|
22
|
+
}
|
|
23
|
+
function readWorkerDefaults() {
|
|
24
|
+
const p = workerDefaultsFile();
|
|
25
|
+
try {
|
|
26
|
+
return existsSync(p) ? JSON.parse(readFileSync(p, 'utf-8')) : null;
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/** 当前机器的模型配置全量导出。 */
|
|
33
|
+
export function exportModelConfigBundle() {
|
|
34
|
+
return {
|
|
35
|
+
type: MODEL_CONFIG_BUNDLE_TYPE,
|
|
36
|
+
version: MODEL_CONFIG_BUNDLE_VERSION,
|
|
37
|
+
exportedAt: new Date().toISOString(),
|
|
38
|
+
llmProviders: {
|
|
39
|
+
anthropic: listProviders('anthropic'),
|
|
40
|
+
openai: listProviders('openai'),
|
|
41
|
+
},
|
|
42
|
+
mediaProviders: listMediaProviders(),
|
|
43
|
+
mediaDefaults: readMediaDefaults(),
|
|
44
|
+
workerDefaults: readWorkerDefaults(),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/** bundle 是否为本契约(嵌入平台的导入口用它分流)。 */
|
|
48
|
+
export function isModelConfigBundle(v) {
|
|
49
|
+
const b = v;
|
|
50
|
+
return !!b && b.type === MODEL_CONFIG_BUNDLE_TYPE && b.version === MODEL_CONFIG_BUNDLE_VERSION;
|
|
51
|
+
}
|
|
52
|
+
/** 合并导入(按 id 覆盖,不删除既有;worker 默认整体替换留备份)。非法条目计入 skipped。 */
|
|
53
|
+
export function importModelConfigBundle(bundle) {
|
|
54
|
+
const summary = {
|
|
55
|
+
llmAnthropic: 0, llmOpenai: 0, media: 0, mediaDefaults: 0, workerDefaults: false, skipped: 0,
|
|
56
|
+
};
|
|
57
|
+
for (const [kind, key] of [['anthropic', 'llmAnthropic'], ['openai', 'llmOpenai']]) {
|
|
58
|
+
for (const e of bundle.llmProviders?.[kind] ?? []) {
|
|
59
|
+
if (!e || typeof e.id !== 'string' || !e.id) {
|
|
60
|
+
summary.skipped++;
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
upsertProvider(kind, e);
|
|
64
|
+
summary[key]++;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
for (const p of bundle.mediaProviders ?? []) {
|
|
68
|
+
if (!p || typeof p.id !== 'string' || !p.id || !MEDIA_CAPABILITIES.includes(p.capability)) {
|
|
69
|
+
summary.skipped++;
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
upsertMediaProvider(p);
|
|
73
|
+
summary.media++;
|
|
74
|
+
}
|
|
75
|
+
for (const [cap, def] of Object.entries(bundle.mediaDefaults ?? {})) {
|
|
76
|
+
if (!MEDIA_CAPABILITIES.includes(cap) || !def) {
|
|
77
|
+
summary.skipped++;
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
setMediaDefault(cap, def);
|
|
81
|
+
summary.mediaDefaults++;
|
|
82
|
+
}
|
|
83
|
+
if (bundle.workerDefaults && typeof bundle.workerDefaults === 'object') {
|
|
84
|
+
const p = workerDefaultsFile();
|
|
85
|
+
mkdirSync(dirname(p), { recursive: true });
|
|
86
|
+
if (existsSync(p))
|
|
87
|
+
renameSync(p, `${p}.bak-${Date.now()}`);
|
|
88
|
+
writeFileSync(p, JSON.stringify(bundle.workerDefaults, null, 2));
|
|
89
|
+
summary.workerDefaults = true;
|
|
90
|
+
}
|
|
91
|
+
return summary;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=modelConfigBundle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modelConfigBundle.js","sourceRoot":"","sources":["../../src/core/modelConfigBundle.ts"],"names":[],"mappings":"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"}
|