@coralai/sps-cli 0.62.1 → 0.63.0
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/commands/cardAdd.d.ts.map +1 -1
- package/dist/commands/cardAdd.js +14 -2
- package/dist/commands/cardAdd.js.map +1 -1
- package/dist/commands/projectInit.d.ts +1 -10
- package/dist/commands/projectInit.d.ts.map +1 -1
- package/dist/commands/projectInit.js +0 -26
- package/dist/commands/projectInit.js.map +1 -1
- package/dist/commands/skillCommand.d.ts.map +1 -1
- package/dist/commands/skillCommand.js +76 -4
- package/dist/commands/skillCommand.js.map +1 -1
- package/dist/commands/tick.d.ts +0 -2
- package/dist/commands/tick.d.ts.map +1 -1
- package/dist/commands/tick.js +2 -61
- package/dist/commands/tick.js.map +1 -1
- package/dist/console/index.d.ts.map +1 -1
- package/dist/console/index.js +0 -2
- package/dist/console/index.js.map +1 -1
- package/dist/console/routes/cards.d.ts.map +1 -1
- package/dist/console/routes/cards.js +1 -0
- package/dist/console/routes/cards.js.map +1 -1
- package/dist/console/routes/chat.d.ts.map +1 -1
- package/dist/console/routes/chat.js +3 -4
- package/dist/console/routes/chat.js.map +1 -1
- package/dist/console/routes/fs.js +8 -0
- package/dist/console/routes/fs.js.map +1 -1
- package/dist/console/routes/projects.d.ts.map +1 -1
- package/dist/console/routes/projects.js +0 -3
- package/dist/console/routes/projects.js.map +1 -1
- package/dist/console/routes/workers.d.ts.map +1 -1
- package/dist/console/routes/workers.js +4 -36
- package/dist/console/routes/workers.js.map +1 -1
- package/dist/console-assets/assets/index-DdWQnwf0.js +849 -0
- package/dist/console-assets/assets/index-kvQdjMeT.css +1 -0
- package/dist/console-assets/fonts/saiba-45.woff2 +0 -0
- package/dist/console-assets/index.html +2 -2
- package/dist/core/config.d.ts +2 -4
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +0 -2
- package/dist/core/config.js.map +1 -1
- package/dist/core/intel/types.d.ts +2 -51
- package/dist/core/intel/types.d.ts.map +1 -1
- package/dist/core/intel/types.js +2 -2
- package/dist/core/skills/SkillsManager.d.ts +7 -1
- package/dist/core/skills/SkillsManager.d.ts.map +1 -1
- package/dist/core/skills/SkillsManager.js +60 -15
- package/dist/core/skills/SkillsManager.js.map +1 -1
- package/dist/core/skills/match/embeddingRecall.d.ts +4 -0
- package/dist/core/skills/match/embeddingRecall.d.ts.map +1 -0
- package/dist/core/skills/match/embeddingRecall.js +101 -0
- package/dist/core/skills/match/embeddingRecall.js.map +1 -0
- package/dist/core/skills/match/skillEnrich.d.ts +36 -0
- package/dist/core/skills/match/skillEnrich.d.ts.map +1 -0
- package/dist/core/skills/match/skillEnrich.js +90 -0
- package/dist/core/skills/match/skillEnrich.js.map +1 -0
- package/dist/core/skills/match/skillMatcher.d.ts +26 -0
- package/dist/core/skills/match/skillMatcher.d.ts.map +1 -0
- package/dist/core/skills/match/skillMatcher.js +69 -0
- package/dist/core/skills/match/skillMatcher.js.map +1 -0
- package/dist/core/skills/match/skillSelect.d.ts +20 -0
- package/dist/core/skills/match/skillSelect.d.ts.map +1 -0
- package/dist/core/skills/match/skillSelect.js +55 -0
- package/dist/core/skills/match/skillSelect.js.map +1 -0
- package/dist/core/skills/registration.d.ts +32 -0
- package/dist/core/skills/registration.d.ts.map +1 -0
- package/dist/core/skills/registration.js +141 -0
- package/dist/core/skills/registration.js.map +1 -0
- package/dist/core/skills/types.d.ts +10 -0
- package/dist/core/skills/types.d.ts.map +1 -1
- package/dist/engines/StageEngine.d.ts +13 -2
- package/dist/engines/StageEngine.d.ts.map +1 -1
- package/dist/engines/StageEngine.js +42 -23
- package/dist/engines/StageEngine.js.map +1 -1
- package/dist/im/router.d.ts +1 -1
- package/dist/im/router.d.ts.map +1 -1
- package/dist/im/router.js +3 -10
- package/dist/im/router.js.map +1 -1
- package/dist/interfaces/TaskBackend.d.ts +2 -0
- package/dist/interfaces/TaskBackend.d.ts.map +1 -1
- package/dist/main.js +2 -46
- package/dist/main.js.map +1 -1
- package/dist/providers/LLMClient.d.ts +1 -22
- package/dist/providers/LLMClient.d.ts.map +1 -1
- package/dist/providers/LLMClient.js +5 -90
- package/dist/providers/LLMClient.js.map +1 -1
- package/dist/providers/MarkdownTaskBackend.d.ts +1 -0
- package/dist/providers/MarkdownTaskBackend.d.ts.map +1 -1
- package/dist/providers/MarkdownTaskBackend.js +8 -0
- package/dist/providers/MarkdownTaskBackend.js.map +1 -1
- package/dist/providers/llm/chatTools.d.ts +0 -5
- package/dist/providers/llm/chatTools.d.ts.map +1 -1
- package/dist/providers/llm/chatTools.js +4 -9
- package/dist/providers/llm/chatTools.js.map +1 -1
- package/dist/providers/mcp/spsMcpServer.d.ts.map +1 -1
- package/dist/providers/mcp/spsMcpServer.js +42 -11
- package/dist/providers/mcp/spsMcpServer.js.map +1 -1
- package/dist/providers/media/mediaProviders.d.ts +1 -1
- package/dist/providers/media/mediaProviders.d.ts.map +1 -1
- package/dist/providers/media/mediaProviders.js +1 -1
- package/dist/providers/media/mediaProviders.js.map +1 -1
- package/dist/providers/models/utilityModels.d.ts +26 -0
- package/dist/providers/models/utilityModels.d.ts.map +1 -0
- package/dist/providers/models/utilityModels.js +75 -0
- package/dist/providers/models/utilityModels.js.map +1 -0
- package/dist/services/CardService.d.ts +6 -0
- package/dist/services/CardService.d.ts.map +1 -1
- package/dist/services/CardService.js +17 -0
- package/dist/services/CardService.js.map +1 -1
- package/dist/services/ProjectService.d.ts +1 -9
- package/dist/services/ProjectService.d.ts.map +1 -1
- package/dist/services/ProjectService.js +0 -1
- package/dist/services/ProjectService.js.map +1 -1
- package/dist/services/WorkerService.d.ts +0 -8
- package/dist/services/WorkerService.d.ts.map +1 -1
- package/dist/services/WorkerService.js +2 -72
- package/dist/services/WorkerService.js.map +1 -1
- package/dist/services/container.d.ts +0 -2
- package/dist/services/container.d.ts.map +1 -1
- package/dist/services/container.js +0 -2
- package/dist/services/container.js.map +1 -1
- package/dist/shared/types.d.ts +6 -0
- package/dist/shared/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/skills/checklist-review/SKILL.md +2 -0
- package/skills/probe-playbook/SKILL.md +10 -1
- package/skills/registry.yaml +8 -1
- package/skills/skill-creator/SKILL.md +14 -1
- package/skills/sps-chat/SKILL.md +33 -11
- package/skills/sps-pipeline/SKILL.md +26 -4
- package/skills/sps-subagent/SKILL.md +13 -4
- package/skills/visual-rubric/SKILL.md +2 -0
- package/skills/writer/SKILL.md +2 -0
- package/dist/console/routes/smartarrange.d.ts +0 -4
- package/dist/console/routes/smartarrange.d.ts.map +0 -1
- package/dist/console/routes/smartarrange.js +0 -107
- package/dist/console/routes/smartarrange.js.map +0 -1
- package/dist/console-assets/assets/index-B5aqtaR6.js +0 -859
- package/dist/console-assets/assets/index-IdqQLk1r.css +0 -10
- package/dist/core/intel/planStore.d.ts +0 -23
- package/dist/core/intel/planStore.d.ts.map +0 -1
- package/dist/core/intel/planStore.js +0 -67
- package/dist/core/intel/planStore.js.map +0 -1
- package/dist/engines/SmartArrangeEngine.d.ts +0 -75
- package/dist/engines/SmartArrangeEngine.d.ts.map +0 -1
- package/dist/engines/SmartArrangeEngine.js +0 -112
- package/dist/engines/SmartArrangeEngine.js.map +0 -1
- package/dist/engines/smartarrange/PipelineWorkerExec.d.ts +0 -37
- package/dist/engines/smartarrange/PipelineWorkerExec.d.ts.map +0 -1
- package/dist/engines/smartarrange/PipelineWorkerExec.js +0 -43
- package/dist/engines/smartarrange/PipelineWorkerExec.js.map +0 -1
- package/dist/engines/smartarrange/cardSink.d.ts +0 -29
- package/dist/engines/smartarrange/cardSink.d.ts.map +0 -1
- package/dist/engines/smartarrange/cardSink.js +0 -43
- package/dist/engines/smartarrange/cardSink.js.map +0 -1
- package/dist/engines/smartarrange/runner.d.ts +0 -24
- package/dist/engines/smartarrange/runner.d.ts.map +0 -1
- package/dist/engines/smartarrange/runner.js +0 -72
- package/dist/engines/smartarrange/runner.js.map +0 -1
- package/dist/engines/smartarrange/screenshot.d.ts +0 -5
- package/dist/engines/smartarrange/screenshot.d.ts.map +0 -1
- package/dist/engines/smartarrange/screenshot.js +0 -117
- package/dist/engines/smartarrange/screenshot.js.map +0 -1
- package/dist/services/SmartArrangeService.d.ts +0 -22
- package/dist/services/SmartArrangeService.d.ts.map +0 -1
- package/dist/services/SmartArrangeService.js +0 -58
- package/dist/services/SmartArrangeService.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SkillsManager.js","sourceRoot":"","sources":["../../../src/core/skills/SkillsManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SkillsManager.js","sourceRoot":"","sources":["../../../src/core/skills/SkillsManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { SkillMeta } from '../types.js';
|
|
2
|
+
/** 语义召回:embed(query) → cosine top-K。无 provider / 任何异常 → null(调用方退化纯 BM25)。 */
|
|
3
|
+
export declare function embeddingRecall(need: string, metas: SkillMeta[], k?: number): Promise<SkillMeta[] | null>;
|
|
4
|
+
//# sourceMappingURL=embeddingRecall.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embeddingRecall.d.ts","sourceRoot":"","sources":["../../../../src/core/skills/match/embeddingRecall.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AA6E7C,8EAA8E;AAC9E,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,SAAI,GAAG,OAAO,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAiB1G"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module core/skills/match/embeddingRecall
|
|
3
|
+
* @description 三段管线①的**语义召回**(与 BM25 并联,提升召回:抓同义/近义,BM25 抓词面)。
|
|
4
|
+
* 向量索引 = **派生·可重建缓存**(仿 memory-v2 FTS):指纹=技能数+最新mtime+model,
|
|
5
|
+
* 变了就重建;落 ~/.coral/skills-embed-index.json,无 DB。无 embedding provider / 失败
|
|
6
|
+
* → 返回 null,调用方静默降级到纯 BM25。
|
|
7
|
+
* @layer core
|
|
8
|
+
* @boundedContext skills
|
|
9
|
+
*/
|
|
10
|
+
import { existsSync, readFileSync, statSync, writeFileSync } from 'node:fs';
|
|
11
|
+
import { resolve } from 'node:path';
|
|
12
|
+
import { embed, hasEmbeddingProvider } from '../../../providers/models/utilityModels.js';
|
|
13
|
+
function indexPath() {
|
|
14
|
+
return resolve(process.env.HOME ?? '/home/coral', '.coral', 'skills-embed-index.json');
|
|
15
|
+
}
|
|
16
|
+
/** 参与向量的判别文本(与 BM25 文档一致的信号面)。 */
|
|
17
|
+
function docText(m) {
|
|
18
|
+
return [m.name, m.description, m.whenToUse, m.insteadUse].filter(Boolean).join(' | ');
|
|
19
|
+
}
|
|
20
|
+
/** 全库指纹:技能数 + 最新 SKILL.md mtime(变了就重建索引)。 */
|
|
21
|
+
function fingerprint(metas) {
|
|
22
|
+
let maxM = 0;
|
|
23
|
+
for (const m of metas) {
|
|
24
|
+
try {
|
|
25
|
+
const t = statSync(m.path).mtimeMs;
|
|
26
|
+
if (t > maxM)
|
|
27
|
+
maxM = t;
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
/* 文件刚被删 */
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return `${metas.length}:${Math.round(maxM)}`;
|
|
34
|
+
}
|
|
35
|
+
function cosine(a, b) {
|
|
36
|
+
let dot = 0;
|
|
37
|
+
let na = 0;
|
|
38
|
+
let nb = 0;
|
|
39
|
+
const n = Math.min(a.length, b.length);
|
|
40
|
+
for (let i = 0; i < n; i++) {
|
|
41
|
+
dot += a[i] * b[i];
|
|
42
|
+
na += a[i] * a[i];
|
|
43
|
+
nb += b[i] * b[i];
|
|
44
|
+
}
|
|
45
|
+
return dot / (Math.sqrt(na) * Math.sqrt(nb) || 1);
|
|
46
|
+
}
|
|
47
|
+
/** 建/读向量索引(命中缓存直接用;指纹变则批量 embed 全库重建)。无 provider → null。 */
|
|
48
|
+
async function ensureIndex(metas) {
|
|
49
|
+
if (!hasEmbeddingProvider() || metas.length === 0)
|
|
50
|
+
return null;
|
|
51
|
+
const fp = fingerprint(metas);
|
|
52
|
+
const p = indexPath();
|
|
53
|
+
if (existsSync(p)) {
|
|
54
|
+
try {
|
|
55
|
+
const cached = JSON.parse(readFileSync(p, 'utf-8'));
|
|
56
|
+
if (cached.fingerprint === fp && cached.entries?.length === metas.length)
|
|
57
|
+
return cached;
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
/* 损坏 → 重建 */
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
const res = await embed(metas.map(docText));
|
|
64
|
+
if (!res || res.vectors.length !== metas.length)
|
|
65
|
+
return null;
|
|
66
|
+
const idx = {
|
|
67
|
+
fingerprint: fp,
|
|
68
|
+
model: res.model,
|
|
69
|
+
entries: metas.map((m, i) => ({ name: m.name, vector: res.vectors[i] })),
|
|
70
|
+
};
|
|
71
|
+
try {
|
|
72
|
+
writeFileSync(p, JSON.stringify(idx));
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
/* 缓存写失败不阻塞召回 */
|
|
76
|
+
}
|
|
77
|
+
return idx;
|
|
78
|
+
}
|
|
79
|
+
/** 语义召回:embed(query) → cosine top-K。无 provider / 任何异常 → null(调用方退化纯 BM25)。 */
|
|
80
|
+
export async function embeddingRecall(need, metas, k = 8) {
|
|
81
|
+
try {
|
|
82
|
+
const idx = await ensureIndex(metas);
|
|
83
|
+
if (!idx)
|
|
84
|
+
return null;
|
|
85
|
+
const q = await embed([need]);
|
|
86
|
+
const qv = q?.vectors[0];
|
|
87
|
+
if (!qv)
|
|
88
|
+
return null;
|
|
89
|
+
const byName = new Map(metas.map((m) => [m.name, m]));
|
|
90
|
+
return idx.entries
|
|
91
|
+
.map((e) => ({ name: e.name, score: cosine(qv, e.vector) }))
|
|
92
|
+
.sort((a, b) => b.score - a.score)
|
|
93
|
+
.slice(0, k)
|
|
94
|
+
.map((s) => byName.get(s.name))
|
|
95
|
+
.filter((m) => !!m);
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=embeddingRecall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embeddingRecall.js","sourceRoot":"","sources":["../../../../src/core/skills/match/embeddingRecall.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { SkillsManager } from '../SkillsManager.js';
|
|
3
|
+
import type { SkillMeta } from '../types.js';
|
|
4
|
+
declare const EnrichSchema: z.ZodObject<{
|
|
5
|
+
description: z.ZodString;
|
|
6
|
+
category: z.ZodNullable<z.ZodString>;
|
|
7
|
+
tags: z.ZodArray<z.ZodString>;
|
|
8
|
+
whenToUse: z.ZodString;
|
|
9
|
+
insteadUse: z.ZodString;
|
|
10
|
+
}, z.core.$strip>;
|
|
11
|
+
export type EnrichResult = z.infer<typeof EnrichSchema>;
|
|
12
|
+
/** 读一个 skill 的正文 → LLM 提炼元数据(纯函数,不落盘)。 */
|
|
13
|
+
export declare function enrichSkillMeta(input: {
|
|
14
|
+
name: string;
|
|
15
|
+
body: string;
|
|
16
|
+
existingDescription?: string;
|
|
17
|
+
categories: string[];
|
|
18
|
+
tags: string[];
|
|
19
|
+
siblings: string[];
|
|
20
|
+
}): Promise<EnrichResult>;
|
|
21
|
+
/** 把提炼结果**合并**写回 SKILL.md frontmatter(默认只填缺失字段,overwrite=true 才覆盖既有)。 */
|
|
22
|
+
export declare function applyEnrich(path: string, e: EnrichResult, opts?: {
|
|
23
|
+
overwrite?: boolean;
|
|
24
|
+
}): string[];
|
|
25
|
+
/** 编排:按名找 skill → 读正文/受控词表/同类兄弟 → LLM 提炼 → 写回。返回写入的字段名。 */
|
|
26
|
+
export declare function enrichSkill(name: string, mgr: SkillsManager, metas: SkillMeta[], taxonomy: {
|
|
27
|
+
categories: string[];
|
|
28
|
+
tags: string[];
|
|
29
|
+
}, opts?: {
|
|
30
|
+
overwrite?: boolean;
|
|
31
|
+
}): Promise<{
|
|
32
|
+
written: string[];
|
|
33
|
+
result: EnrichResult;
|
|
34
|
+
} | null>;
|
|
35
|
+
export {};
|
|
36
|
+
//# sourceMappingURL=skillEnrich.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skillEnrich.d.ts","sourceRoot":"","sources":["../../../../src/core/skills/match/skillEnrich.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,QAAA,MAAM,YAAY;;;;;;iBAMhB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD,0CAA0C;AAC1C,wBAAsB,eAAe,CAAC,KAAK,EAAE;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,GAAG,OAAO,CAAC,YAAY,CAAC,CAaxB;AAED,yEAAyE;AACzE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,MAAM,EAAE,CAqBvG;AAED,2DAA2D;AAC3D,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,SAAS,EAAE,EAClB,QAAQ,EAAE;IAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,EAClD,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GAAG,IAAI,CAAC,CAuB7D"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module core/skills/match/skillEnrich
|
|
3
|
+
* @description 技能入口层:**检查第三方技能、从正文提炼元数据**(description/tags/category/
|
|
4
|
+
* whenToUse/insteadUse),写回 SKILL.md frontmatter → 无门槛接入的技能自动升为
|
|
5
|
+
* "一等公民"(可精准召回+消歧)。用配置的 reviewer 模型;受控词表来自 registry.yaml。
|
|
6
|
+
* @layer core
|
|
7
|
+
* @boundedContext skills
|
|
8
|
+
*/
|
|
9
|
+
import { readFileSync, writeFileSync } from 'node:fs';
|
|
10
|
+
import { parse as parseYaml, stringify as stringifyYaml } from 'yaml';
|
|
11
|
+
import { Agent, run } from '@openai/agents';
|
|
12
|
+
import { z } from 'zod';
|
|
13
|
+
import { createReviewerModel } from '../../../providers/llm/modelFactory.js';
|
|
14
|
+
import { loadAgentsConfig } from '../../intel/agentsConfig.js';
|
|
15
|
+
const EnrichSchema = z.object({
|
|
16
|
+
description: z.string().describe('一句话:做什么 + 大致何时用(≤120字,中文)'),
|
|
17
|
+
category: z.string().nullable().describe('从受控 categories 选一个,不确定填 null'),
|
|
18
|
+
tags: z.array(z.string()).describe('从受控 tags 选(0个或多个,只填相关的)'),
|
|
19
|
+
whenToUse: z.string().describe('什么需求该选它——具体触发条件/典型措辞(正例)'),
|
|
20
|
+
insteadUse: z.string().describe('相邻/易混需求改用哪个兄弟技能(负例+指针);没有填空串'),
|
|
21
|
+
});
|
|
22
|
+
/** 读一个 skill 的正文 → LLM 提炼元数据(纯函数,不落盘)。 */
|
|
23
|
+
export async function enrichSkillMeta(input) {
|
|
24
|
+
const model = createReviewerModel(loadAgentsConfig().reviewer);
|
|
25
|
+
const instructions = `你在为技能库策展。读一个 skill 的正文,提炼精准元数据,用于"按需求匹配 + 相似技能消歧"。
|
|
26
|
+
- category: 只能从这些里选一个(不确定填 null):${input.categories.join(' / ') || '(无约束)'}。
|
|
27
|
+
- tags: 只能从这些里选(0个或多个,只填真正相关的):${input.tags.join(' / ') || '(无约束)'}。
|
|
28
|
+
- whenToUse: 写清什么样的需求该选它(正例,具体触发条件/措辞)。
|
|
29
|
+
- insteadUse: 相邻/易混的需求该改用哪个兄弟技能(负例+指针);兄弟名只能从这里选:${input.siblings.join(', ') || '(无)'};确实没有就填空串。
|
|
30
|
+
description ≤120字。忠于正文实际能力,别夸大。`;
|
|
31
|
+
const agent = new Agent({ name: 'skill-enricher', instructions, model, outputType: EnrichSchema });
|
|
32
|
+
const prompt = `skill 名:${input.name}\n${input.existingDescription ? `现有描述:${input.existingDescription}\n` : ''}\n正文:\n${input.body.slice(0, 6000)}`;
|
|
33
|
+
const r = await run(agent, prompt, { stream: true });
|
|
34
|
+
await r.completed;
|
|
35
|
+
return r.finalOutput;
|
|
36
|
+
}
|
|
37
|
+
/** 把提炼结果**合并**写回 SKILL.md frontmatter(默认只填缺失字段,overwrite=true 才覆盖既有)。 */
|
|
38
|
+
export function applyEnrich(path, e, opts = {}) {
|
|
39
|
+
const md = readFileSync(path, 'utf-8');
|
|
40
|
+
const m = md.match(/^---\n([\s\S]*?)\n---\n?/);
|
|
41
|
+
const fm = (m ? (parseYaml(m[1]) ?? {}) : {});
|
|
42
|
+
const body = m ? md.slice(m[0].length) : md;
|
|
43
|
+
const written = [];
|
|
44
|
+
const set = (k, v) => {
|
|
45
|
+
if (v == null || v === '' || (Array.isArray(v) && v.length === 0))
|
|
46
|
+
return;
|
|
47
|
+
if (opts.overwrite || fm[k] == null || fm[k] === '') {
|
|
48
|
+
fm[k] = v;
|
|
49
|
+
written.push(k);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
set('description', e.description);
|
|
53
|
+
if (e.category)
|
|
54
|
+
set('category', e.category);
|
|
55
|
+
set('tags', e.tags);
|
|
56
|
+
set('whenToUse', e.whenToUse);
|
|
57
|
+
set('insteadUse', e.insteadUse);
|
|
58
|
+
const fmText = stringifyYaml(fm).trimEnd();
|
|
59
|
+
writeFileSync(path, `---\n${fmText}\n---\n${body.startsWith('\n') ? body : `\n${body}`}`);
|
|
60
|
+
return written;
|
|
61
|
+
}
|
|
62
|
+
/** 编排:按名找 skill → 读正文/受控词表/同类兄弟 → LLM 提炼 → 写回。返回写入的字段名。 */
|
|
63
|
+
export async function enrichSkill(name, mgr, metas, taxonomy, opts = {}) {
|
|
64
|
+
const meta = metas.find((x) => x.name === name);
|
|
65
|
+
if (!meta)
|
|
66
|
+
return null;
|
|
67
|
+
const body = mgr.load(name);
|
|
68
|
+
if (!body)
|
|
69
|
+
return null;
|
|
70
|
+
const siblings = metas
|
|
71
|
+
.filter((x) => x.name !== name && x.category && x.category === meta.category)
|
|
72
|
+
.map((x) => x.name);
|
|
73
|
+
const result = await enrichSkillMeta({
|
|
74
|
+
name,
|
|
75
|
+
body,
|
|
76
|
+
existingDescription: meta.description || undefined,
|
|
77
|
+
categories: taxonomy.categories,
|
|
78
|
+
tags: taxonomy.tags,
|
|
79
|
+
siblings,
|
|
80
|
+
});
|
|
81
|
+
// 健壮性:LLM 可能填出受控词表外的 category/tags(易把 tag 当 category)→ 过滤掉非法值。
|
|
82
|
+
const catSet = new Set(taxonomy.categories);
|
|
83
|
+
const tagSet = new Set(taxonomy.tags);
|
|
84
|
+
if (result.category && !catSet.has(result.category))
|
|
85
|
+
result.category = null;
|
|
86
|
+
result.tags = result.tags.filter((t) => tagSet.has(t));
|
|
87
|
+
const written = applyEnrich(meta.path, result, opts);
|
|
88
|
+
return { written, result };
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=skillEnrich.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skillEnrich.js","sourceRoot":"","sources":["../../../../src/core/skills/match/skillEnrich.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module core/skills/match/skillMatcher
|
|
3
|
+
* @description 技能匹配三段管线编排(可插拔·配置驱动·可降级):
|
|
4
|
+
* ① 召回 recall(BM25 永在;embedding 语义召回后续接入,接口点在此)
|
|
5
|
+
* ② 重排 rerank(配了 rerank provider 就用,免费/快)
|
|
6
|
+
* ③ 定夺 select(LLM 读判别字段;低置信 → 给 top 补正文再定一次,body-aware)
|
|
7
|
+
* 每段输出记进 stages 供观测;没配 embedding/rerank 就自动跳过、退化成 BM25→LLM。
|
|
8
|
+
* @layer core
|
|
9
|
+
* @boundedContext skills
|
|
10
|
+
*/
|
|
11
|
+
import type { SkillsManager } from '../SkillsManager.js';
|
|
12
|
+
import type { SkillMeta } from '../types.js';
|
|
13
|
+
import { type SkillSelection } from './skillSelect.js';
|
|
14
|
+
export interface MatchResult {
|
|
15
|
+
selection: SkillSelection;
|
|
16
|
+
/** 召回+重排后的候选顺序(name),供调用方 fallback/展示。 */
|
|
17
|
+
candidates: string[];
|
|
18
|
+
/** 走了哪几段 + 结果,可观测(如 ['bm25:8','rerank:5','select:writer@0.82'])。 */
|
|
19
|
+
stages: string[];
|
|
20
|
+
}
|
|
21
|
+
export declare function matchSkill(need: string, mgr: SkillsManager, metas: SkillMeta[], opts?: {
|
|
22
|
+
recallK?: number;
|
|
23
|
+
rerankN?: number;
|
|
24
|
+
bodyThreshold?: number;
|
|
25
|
+
}): Promise<MatchResult>;
|
|
26
|
+
//# sourceMappingURL=skillMatcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skillMatcher.d.ts","sourceRoot":"","sources":["../../../../src/core/skills/match/skillMatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,EAAoC,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEzF,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,cAAc,CAAC;IAC1B,0CAA0C;IAC1C,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,oEAAoE;IACpE,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAUD,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,SAAS,EAAE,EAClB,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAO,GACxE,OAAO,CAAC,WAAW,CAAC,CA4DtB"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { hasEmbeddingProvider, hasRerankProvider, rerank } from '../../../providers/models/utilityModels.js';
|
|
2
|
+
import { embeddingRecall } from './embeddingRecall.js';
|
|
3
|
+
import { skillSelect } from './skillSelect.js';
|
|
4
|
+
function candidateDoc(m) {
|
|
5
|
+
return [m.name, m.description, m.whenToUse].filter(Boolean).join(' | ');
|
|
6
|
+
}
|
|
7
|
+
function toCandidate(m, body) {
|
|
8
|
+
return { name: m.name, description: m.description, whenToUse: m.whenToUse, insteadUse: m.insteadUse, body };
|
|
9
|
+
}
|
|
10
|
+
export async function matchSkill(need, mgr, metas, opts = {}) {
|
|
11
|
+
const stages = [];
|
|
12
|
+
const recallK = opts.recallK ?? 8;
|
|
13
|
+
const rerankN = opts.rerankN ?? 5;
|
|
14
|
+
const bodyThreshold = opts.bodyThreshold ?? 0.6;
|
|
15
|
+
// ① 召回:BM25 词面 ∪ embedding 语义(配了 embedding provider 就并入,抓同义/近义;失败降级纯 BM25)
|
|
16
|
+
let cands = mgr.search(need, metas, recallK);
|
|
17
|
+
stages.push(`bm25:${cands.length}`);
|
|
18
|
+
if (hasEmbeddingProvider()) {
|
|
19
|
+
const sem = await embeddingRecall(need, metas, recallK);
|
|
20
|
+
if (sem && sem.length) {
|
|
21
|
+
const seen = new Set(cands.map((m) => m.name));
|
|
22
|
+
let added = 0;
|
|
23
|
+
for (const m of sem) {
|
|
24
|
+
if (!seen.has(m.name)) {
|
|
25
|
+
cands.push(m);
|
|
26
|
+
seen.add(m.name);
|
|
27
|
+
added++;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
cands = cands.slice(0, recallK + 4); // 并集留余量给 rerank 收窄
|
|
31
|
+
stages.push(`embed:+${added}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
if (cands.length === 0) {
|
|
35
|
+
return { selection: { best: null, confidence: 0, alternatives: [], reason: '无召回候选' }, candidates: [], stages };
|
|
36
|
+
}
|
|
37
|
+
// ② 重排(配了 rerank provider 才走;失败静默降级)
|
|
38
|
+
if (cands.length > 1 && hasRerankProvider()) {
|
|
39
|
+
try {
|
|
40
|
+
const ranked = await rerank(need, cands.map(candidateDoc), { topN: rerankN });
|
|
41
|
+
if (ranked && ranked.length) {
|
|
42
|
+
cands = ranked.map((h) => cands[h.index]).filter((m) => !!m);
|
|
43
|
+
stages.push(`rerank:${cands.length}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
stages.push('rerank:err');
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
cands = cands.slice(0, rerankN);
|
|
51
|
+
// ③ 定夺:LLM 先按元数据(whenToUse/insteadUse)
|
|
52
|
+
let selection = await skillSelect(need, cands.map((m) => toCandidate(m)));
|
|
53
|
+
stages.push(`select:${selection.best ?? 'none'}@${selection.confidence.toFixed(2)}`);
|
|
54
|
+
// ③b body-aware:低置信 → 给 top-2 补正文再定一次(SkillRouter:正文才是决定性信号)
|
|
55
|
+
if (selection.confidence < bodyThreshold && cands.length > 1) {
|
|
56
|
+
const top = cands.slice(0, 2).map((m) => toCandidate(m, mgr.load(m.name) ?? undefined));
|
|
57
|
+
try {
|
|
58
|
+
const s2 = await skillSelect(need, top);
|
|
59
|
+
stages.push(`select-body:${s2.best ?? 'none'}@${s2.confidence.toFixed(2)}`);
|
|
60
|
+
if (s2.confidence >= selection.confidence)
|
|
61
|
+
selection = s2;
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
stages.push('select-body:err');
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return { selection, candidates: cands.map((m) => m.name), stages };
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=skillMatcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skillMatcher.js","sourceRoot":"","sources":["../../../../src/core/skills/match/skillMatcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface SkillCandidate {
|
|
2
|
+
name: string;
|
|
3
|
+
description?: string;
|
|
4
|
+
whenToUse?: string;
|
|
5
|
+
insteadUse?: string;
|
|
6
|
+
/** 难分时提供正文节选(body-aware);不传则只按元数据判。 */
|
|
7
|
+
body?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface SkillSelection {
|
|
10
|
+
best: string | null;
|
|
11
|
+
confidence: number;
|
|
12
|
+
alternatives: string[];
|
|
13
|
+
reason: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* 从候选里选一个。0/1 个候选直接短路(不调模型)。
|
|
17
|
+
* body 字段可选:调用方对"难分/低置信"的候选补正文再调一次(body-aware)。
|
|
18
|
+
*/
|
|
19
|
+
export declare function skillSelect(need: string, candidates: SkillCandidate[]): Promise<SkillSelection>;
|
|
20
|
+
//# sourceMappingURL=skillSelect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skillSelect.d.ts","sourceRoot":"","sources":["../../../../src/core/skills/match/skillSelect.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAgBD;;;GAGG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAoBrG"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module core/skills/match/skillSelect
|
|
3
|
+
* @description 精排定夺(三段管线第③段):LLM 读候选的判别字段(whenToUse/insteadUse)、
|
|
4
|
+
* 难分时读正文(body-aware,对齐 SkillRouter 结论),出**可解释的结构化决策**
|
|
5
|
+
* {best, confidence, alternatives, reason}。用配置的 reviewer 模型(可指快模型)。
|
|
6
|
+
* @layer core
|
|
7
|
+
* @boundedContext skills
|
|
8
|
+
*/
|
|
9
|
+
import { Agent, run } from '@openai/agents';
|
|
10
|
+
import { z } from 'zod';
|
|
11
|
+
import { createReviewerModel } from '../../../providers/llm/modelFactory.js';
|
|
12
|
+
import { loadAgentsConfig } from '../../intel/agentsConfig.js';
|
|
13
|
+
const SelectSchema = z.object({
|
|
14
|
+
best: z.string().nullable().describe('最匹配的 skill name;都不贴切填 null'),
|
|
15
|
+
confidence: z.number().min(0).max(1).describe('置信度 0-1'),
|
|
16
|
+
alternatives: z.array(z.string()).describe('次优候选 name(可空)'),
|
|
17
|
+
reason: z.string().describe('一句话理由'),
|
|
18
|
+
});
|
|
19
|
+
const INSTRUCTIONS = `你是技能路由消歧器。给定用户需求 + 若干候选 skill,选出**最匹配的一个**。
|
|
20
|
+
判据(优先级从高到低):
|
|
21
|
+
① 需求命中某候选的「✅何时用(whenToUse)」→ 选它;
|
|
22
|
+
② 命中某候选的「↪相邻场景(insteadUse)」→ 该候选让位、选它指向的兄弟技能;
|
|
23
|
+
③ 提供了正文节选时,以**正文实际能力**为准(描述常夸大)。
|
|
24
|
+
都不贴切就 best=null(别硬套)。best/alternatives 只能用给定候选里出现过的 name。reason 一句话。`;
|
|
25
|
+
/**
|
|
26
|
+
* 从候选里选一个。0/1 个候选直接短路(不调模型)。
|
|
27
|
+
* body 字段可选:调用方对"难分/低置信"的候选补正文再调一次(body-aware)。
|
|
28
|
+
*/
|
|
29
|
+
export async function skillSelect(need, candidates) {
|
|
30
|
+
if (candidates.length === 0)
|
|
31
|
+
return { best: null, confidence: 0, alternatives: [], reason: '无候选' };
|
|
32
|
+
if (candidates.length === 1) {
|
|
33
|
+
return { best: candidates[0].name, confidence: 0.5, alternatives: [], reason: '唯一候选' };
|
|
34
|
+
}
|
|
35
|
+
const model = createReviewerModel(loadAgentsConfig().reviewer);
|
|
36
|
+
const list = candidates
|
|
37
|
+
.map((c, i) => {
|
|
38
|
+
const lines = [`${i + 1}. ${c.name}`];
|
|
39
|
+
if (c.description)
|
|
40
|
+
lines.push(` 描述:${c.description}`);
|
|
41
|
+
if (c.whenToUse)
|
|
42
|
+
lines.push(` ✅何时用:${c.whenToUse}`);
|
|
43
|
+
if (c.insteadUse)
|
|
44
|
+
lines.push(` ↪相邻场景:${c.insteadUse}`);
|
|
45
|
+
if (c.body)
|
|
46
|
+
lines.push(` 正文节选:${c.body.slice(0, 1200)}`);
|
|
47
|
+
return lines.join('\n');
|
|
48
|
+
})
|
|
49
|
+
.join('\n\n');
|
|
50
|
+
const agent = new Agent({ name: 'skill-router', instructions: INSTRUCTIONS, model, outputType: SelectSchema });
|
|
51
|
+
const r = await run(agent, `用户需求:${need}\n\n候选:\n${list}\n\n选出最匹配的一个。`, { stream: true });
|
|
52
|
+
await r.completed;
|
|
53
|
+
return r.finalOutput;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=skillSelect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skillSelect.js","sourceRoot":"","sources":["../../../../src/core/skills/match/skillSelect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export interface Provenance {
|
|
2
|
+
owner: string;
|
|
3
|
+
source: string;
|
|
4
|
+
version: string;
|
|
5
|
+
registeredAt: string;
|
|
6
|
+
/** copy=拷快照(发布/部署);link=软链源(本机开发/频繁维护,实时生效)。 */
|
|
7
|
+
mode: 'copy' | 'link';
|
|
8
|
+
}
|
|
9
|
+
type Manifest = Record<string, Provenance>;
|
|
10
|
+
export declare function readManifest(): Manifest;
|
|
11
|
+
export interface RegisterResult {
|
|
12
|
+
registered: string[];
|
|
13
|
+
skipped: Array<{
|
|
14
|
+
name: string;
|
|
15
|
+
reason: string;
|
|
16
|
+
}>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* 把 srcDir 下所有 skill 注册进 SPS 库。冲突(同名已属别的 owner)→ 跳过(除非 force)。
|
|
20
|
+
* 幂等:同 owner 重注册 = 覆盖更新。返回注册/跳过清单;不跑 lint/enrich(交命令层)。
|
|
21
|
+
*/
|
|
22
|
+
export declare function registerSkillsFrom(srcDir: string, owner: string, opts?: {
|
|
23
|
+
force?: boolean;
|
|
24
|
+
version?: string;
|
|
25
|
+
link?: boolean;
|
|
26
|
+
}): RegisterResult;
|
|
27
|
+
/** 撤销某 owner 注册的全部技能(删目录 + manifest 项)。返回移除的名字。 */
|
|
28
|
+
export declare function unregisterByOwner(owner: string): string[];
|
|
29
|
+
/** 撤销单个技能(按名)。 */
|
|
30
|
+
export declare function unregisterOne(name: string): boolean;
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=registration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registration.d.ts","sourceRoot":"","sources":["../../../src/core/skills/registration.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AACD,KAAK,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAM3C,wBAAgB,YAAY,IAAI,QAAQ,CAMvC;AA4BD,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/D,cAAc,CAoChB;AAWD,mDAAmD;AACnD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAgBzD;AAED,kBAAkB;AAClB,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAWnD"}
|