dsh-data-domain-knowledge 0.1.0-alpha.11 → 0.1.0-alpha.13
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/README.md +64 -13
- package/eval/README.md +19 -8
- package/eval/evaluate-retrieval.mjs +17 -8
- package/eval/queries.example.jsonl +1 -0
- package/lib/client.js +2294 -2096
- package/lib/doc-page.js +1 -1
- package/lib/pages.js +2 -2
- package/lib/types/axis-registry.d.ts +9 -4
- package/lib/types/axis-registry.d.ts.map +1 -1
- package/lib/types/axis-registry.js +62 -23
- package/lib/types/axis-registry.js.map +1 -1
- package/lib/types/card-organize.d.ts +5 -0
- package/lib/types/card-organize.d.ts.map +1 -1
- package/lib/types/card-organize.js +15 -0
- package/lib/types/card-organize.js.map +1 -1
- package/lib/types/compiler/embedding-identity.d.ts +3 -0
- package/lib/types/compiler/embedding-identity.d.ts.map +1 -0
- package/lib/types/compiler/embedding-identity.js +24 -0
- package/lib/types/compiler/embedding-identity.js.map +1 -0
- package/lib/types/compiler/snapshot.d.ts +16 -0
- package/lib/types/compiler/snapshot.d.ts.map +1 -0
- package/lib/types/compiler/snapshot.js +2 -0
- package/lib/types/compiler/snapshot.js.map +1 -0
- package/lib/types/diagnosis/store.d.ts.map +1 -1
- package/lib/types/diagnosis/store.js +2 -0
- package/lib/types/diagnosis/store.js.map +1 -1
- package/lib/types/environment/install.d.ts +7 -0
- package/lib/types/environment/install.d.ts.map +1 -0
- package/lib/types/environment/install.js +172 -0
- package/lib/types/environment/install.js.map +1 -0
- package/lib/types/environment/manifest.d.ts +208 -0
- package/lib/types/environment/manifest.d.ts.map +1 -0
- package/lib/types/environment/manifest.js +26 -0
- package/lib/types/environment/manifest.js.map +1 -0
- package/lib/types/environment/model-catalog.d.ts +191 -0
- package/lib/types/environment/model-catalog.d.ts.map +1 -0
- package/lib/types/environment/model-catalog.js +91 -0
- package/lib/types/environment/model-catalog.js.map +1 -0
- package/lib/types/environment/process.d.ts +10 -0
- package/lib/types/environment/process.d.ts.map +1 -0
- package/lib/types/environment/process.js +54 -0
- package/lib/types/environment/process.js.map +1 -0
- package/lib/types/environment/selection.d.ts +9 -0
- package/lib/types/environment/selection.d.ts.map +1 -0
- package/lib/types/environment/selection.js +29 -0
- package/lib/types/environment/selection.js.map +1 -0
- package/lib/types/environment/service.d.ts +47 -0
- package/lib/types/environment/service.d.ts.map +1 -0
- package/lib/types/environment/service.js +253 -0
- package/lib/types/environment/service.js.map +1 -0
- package/lib/types/environment/types.d.ts +37 -0
- package/lib/types/environment/types.d.ts.map +1 -0
- package/lib/types/environment/types.js +2 -0
- package/lib/types/environment/types.js.map +1 -0
- package/lib/types/events.d.ts +10 -0
- package/lib/types/events.d.ts.map +1 -1
- package/lib/types/events.js +38 -1
- package/lib/types/events.js.map +1 -1
- package/lib/types/images.d.ts +26 -0
- package/lib/types/images.d.ts.map +1 -0
- package/lib/types/images.js +196 -0
- package/lib/types/images.js.map +1 -0
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/index.js +59 -3
- package/lib/types/index.js.map +1 -1
- package/lib/types/knowledge-bases.d.ts +3 -0
- package/lib/types/knowledge-bases.d.ts.map +1 -1
- package/lib/types/knowledge-bases.js +9 -0
- package/lib/types/knowledge-bases.js.map +1 -1
- package/lib/types/knowledge.d.ts +14 -6
- package/lib/types/knowledge.d.ts.map +1 -1
- package/lib/types/knowledge.js +56 -39
- package/lib/types/knowledge.js.map +1 -1
- package/lib/types/layout.d.ts +2 -0
- package/lib/types/layout.d.ts.map +1 -1
- package/lib/types/layout.js +2 -0
- package/lib/types/layout.js.map +1 -1
- package/lib/types/retrieval/vector-index.d.ts +31 -0
- package/lib/types/retrieval/vector-index.d.ts.map +1 -0
- package/lib/types/retrieval/vector-index.js +15 -0
- package/lib/types/retrieval/vector-index.js.map +1 -0
- package/lib/types/retrieval/visibility.d.ts +6 -0
- package/lib/types/retrieval/visibility.d.ts.map +1 -0
- package/lib/types/retrieval/visibility.js +11 -0
- package/lib/types/retrieval/visibility.js.map +1 -0
- package/lib/types/runtime.d.ts +36 -6
- package/lib/types/runtime.d.ts.map +1 -1
- package/lib/types/runtime.js +520 -190
- package/lib/types/runtime.js.map +1 -1
- package/lib/types/source-evidence.d.ts +6 -0
- package/lib/types/source-evidence.d.ts.map +1 -0
- package/lib/types/source-evidence.js +28 -0
- package/lib/types/source-evidence.js.map +1 -0
- package/lib/types/store/axis-references.d.ts +5 -0
- package/lib/types/store/axis-references.d.ts.map +1 -0
- package/lib/types/store/axis-references.js +106 -0
- package/lib/types/store/axis-references.js.map +1 -0
- package/lib/types/store/derived.d.ts +11 -0
- package/lib/types/store/derived.d.ts.map +1 -1
- package/lib/types/store/derived.js +31 -6
- package/lib/types/store/derived.js.map +1 -1
- package/lib/types/store/knowledge-db.d.ts +4 -1
- package/lib/types/store/knowledge-db.d.ts.map +1 -1
- package/lib/types/store/knowledge-db.js +15 -9
- package/lib/types/store/knowledge-db.js.map +1 -1
- package/lib/types/store/migrate.d.ts.map +1 -1
- package/lib/types/store/migrate.js +16 -5
- package/lib/types/store/migrate.js.map +1 -1
- package/lib/types/types.d.ts +7 -1
- package/lib/types/types.d.ts.map +1 -1
- package/lib/types/types.js +3 -4
- package/lib/types/types.js.map +1 -1
- package/package.json +3 -1
- package/python/prepare-models.py +19 -0
- package/python/requirements.txt +8 -6
- package/scripts/doctor.mjs +14 -2
- package/scripts/environment.mjs +29 -0
- package/scripts/setup-embedding.sh +11 -2
- package/src/axis-registry.ts +59 -23
- package/src/card-organize.ts +15 -0
- package/src/client/EnvironmentSetup.tsx +145 -0
- package/src/client/KnowledgePanel.tsx +9 -4
- package/src/compiler/embedding-identity.ts +21 -0
- package/src/compiler/snapshot.ts +17 -0
- package/src/diagnosis/store.ts +1 -0
- package/src/environment/install.ts +129 -0
- package/src/environment/manifest.ts +28 -0
- package/src/environment/model-catalog.ts +105 -0
- package/src/environment/process.ts +54 -0
- package/src/environment/selection.ts +29 -0
- package/src/environment/service.ts +211 -0
- package/src/environment/types.ts +34 -0
- package/src/events.ts +46 -0
- package/src/images.ts +203 -0
- package/src/index.ts +54 -3
- package/src/knowledge-bases.ts +9 -0
- package/src/knowledge.ts +56 -40
- package/src/layout.ts +2 -0
- package/src/retrieval/vector-index.ts +44 -0
- package/src/retrieval/visibility.ts +14 -0
- package/src/runtime.ts +473 -233
- package/src/source-evidence.ts +30 -0
- package/src/store/axis-references.ts +96 -0
- package/src/store/derived.ts +31 -6
- package/src/store/knowledge-db.ts +16 -9
- package/src/store/migrate.ts +15 -5
- package/src/types.ts +10 -5
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/** Models supported by the local embedding and reranking workers. Revisions are pinned in manifest.ts. */
|
|
2
|
+
export declare const EMBEDDING_MODELS: readonly [{
|
|
3
|
+
readonly id: "bge-small-zh-v1.5";
|
|
4
|
+
readonly repo: "BAAI/bge-small-zh-v1.5";
|
|
5
|
+
readonly directory: "bge-small-zh-v1.5";
|
|
6
|
+
readonly label: "BGE Small 中文";
|
|
7
|
+
readonly dimension: 512;
|
|
8
|
+
readonly download: "约 96 MB";
|
|
9
|
+
readonly description: "资源占用最低,适合先跑通本地知识检索。";
|
|
10
|
+
}, {
|
|
11
|
+
readonly id: "bge-base-zh-v1.5";
|
|
12
|
+
readonly repo: "BAAI/bge-base-zh-v1.5";
|
|
13
|
+
readonly directory: "bge-base-zh-v1.5";
|
|
14
|
+
readonly label: "BGE Base 中文";
|
|
15
|
+
readonly dimension: 768;
|
|
16
|
+
readonly download: "约 409 MB";
|
|
17
|
+
readonly description: "效果与资源占用较均衡。";
|
|
18
|
+
}, {
|
|
19
|
+
readonly id: "bge-large-zh-v1.5";
|
|
20
|
+
readonly repo: "BAAI/bge-large-zh-v1.5";
|
|
21
|
+
readonly directory: "bge-large-zh-v1.5";
|
|
22
|
+
readonly label: "BGE Large 中文";
|
|
23
|
+
readonly dimension: 1024;
|
|
24
|
+
readonly download: "约 1.3 GB";
|
|
25
|
+
readonly description: "中文向量效果优先,需要更多内存与磁盘。";
|
|
26
|
+
}, {
|
|
27
|
+
readonly id: "wemm-embedding-2b-quantized";
|
|
28
|
+
readonly repo: "ewin-reg/WeMM-Embedding-2B-Quantized";
|
|
29
|
+
readonly directory: "WeMM-Embedding-2B-Quantized";
|
|
30
|
+
readonly label: "WeMM Embedding 2B 社区量化版";
|
|
31
|
+
readonly dimension: 2048;
|
|
32
|
+
readonly download: "约 1.8 GB";
|
|
33
|
+
readonly description: "社区维护的 INT4 / FP8 量化模型,非腾讯官方发布;模型卡标注 license: other,请查看协议。";
|
|
34
|
+
}, {
|
|
35
|
+
readonly id: "wemm-embedding-2b";
|
|
36
|
+
readonly repo: "tencent/WeMM-Embedding-2B";
|
|
37
|
+
readonly directory: "WeMM-Embedding-2B";
|
|
38
|
+
readonly label: "腾讯 WeMM Embedding 2B(BF16)";
|
|
39
|
+
readonly dimension: 2048;
|
|
40
|
+
readonly download: "约 5.5 GB";
|
|
41
|
+
readonly description: "多模态向量模型,支持文本和图片;下载与推理资源占用较高。";
|
|
42
|
+
}];
|
|
43
|
+
export declare const RERANK_MODELS: readonly [{
|
|
44
|
+
readonly id: "bge-reranker-base";
|
|
45
|
+
readonly repo: "BAAI/bge-reranker-base";
|
|
46
|
+
readonly directory: "bge-reranker-base";
|
|
47
|
+
readonly label: "BGE Reranker Base";
|
|
48
|
+
readonly download: "约 1.1 GB";
|
|
49
|
+
readonly description: "中文重排的轻量选项。";
|
|
50
|
+
}, {
|
|
51
|
+
readonly id: "qwen3-reranker-0.6b";
|
|
52
|
+
readonly repo: "Qwen/Qwen3-Reranker-0.6B";
|
|
53
|
+
readonly directory: "Qwen3-Reranker-0.6B";
|
|
54
|
+
readonly label: "Qwen3 Reranker 0.6B";
|
|
55
|
+
readonly download: "约 1.2 GB";
|
|
56
|
+
readonly description: "支持 100 多种语言,适合先试用 Qwen 重排。";
|
|
57
|
+
}, {
|
|
58
|
+
readonly id: "bge-reranker-large";
|
|
59
|
+
readonly repo: "BAAI/bge-reranker-large";
|
|
60
|
+
readonly directory: "bge-reranker-large";
|
|
61
|
+
readonly label: "BGE Reranker Large";
|
|
62
|
+
readonly download: "约 2.2 GB";
|
|
63
|
+
readonly description: "中文和英文重排效果优先,推理速度较慢。";
|
|
64
|
+
}, {
|
|
65
|
+
readonly id: "qwen3-reranker-4b";
|
|
66
|
+
readonly repo: "Qwen/Qwen3-Reranker-4B";
|
|
67
|
+
readonly directory: "Qwen3-Reranker-4B";
|
|
68
|
+
readonly label: "Qwen3 Reranker 4B";
|
|
69
|
+
readonly download: "约 8.1 GB";
|
|
70
|
+
readonly description: "Qwen 中档重排模型;请先确认磁盘与内存充足。";
|
|
71
|
+
}, {
|
|
72
|
+
readonly id: "qwen3-reranker-8b";
|
|
73
|
+
readonly repo: "Qwen/Qwen3-Reranker-8B";
|
|
74
|
+
readonly directory: "Qwen3-Reranker-8B";
|
|
75
|
+
readonly label: "Qwen3 Reranker 8B";
|
|
76
|
+
readonly download: "约 16.4 GB";
|
|
77
|
+
readonly description: "资源占用最高;下载前请确认有足够磁盘与内存。";
|
|
78
|
+
}];
|
|
79
|
+
export type EmbeddingModelId = (typeof EMBEDDING_MODELS)[number]['id'];
|
|
80
|
+
export type RerankModelId = (typeof RERANK_MODELS)[number]['id'];
|
|
81
|
+
export interface ModelSelection {
|
|
82
|
+
embedding: EmbeddingModelId;
|
|
83
|
+
rerank: RerankModelId;
|
|
84
|
+
}
|
|
85
|
+
export interface ModelOptionView {
|
|
86
|
+
id: string;
|
|
87
|
+
label: string;
|
|
88
|
+
dimension?: number;
|
|
89
|
+
download: string;
|
|
90
|
+
description: string;
|
|
91
|
+
modelCardUrl?: string;
|
|
92
|
+
}
|
|
93
|
+
export declare const DEFAULT_MODEL_SELECTION: ModelSelection;
|
|
94
|
+
export declare function isModelSelection(value: unknown): value is ModelSelection;
|
|
95
|
+
export declare function parseModelSelection(value: unknown, fallback?: ModelSelection): ModelSelection;
|
|
96
|
+
export declare function embeddingModel(id: EmbeddingModelId): {
|
|
97
|
+
readonly id: "bge-small-zh-v1.5";
|
|
98
|
+
readonly repo: "BAAI/bge-small-zh-v1.5";
|
|
99
|
+
readonly directory: "bge-small-zh-v1.5";
|
|
100
|
+
readonly label: "BGE Small 中文";
|
|
101
|
+
readonly dimension: 512;
|
|
102
|
+
readonly download: "约 96 MB";
|
|
103
|
+
readonly description: "资源占用最低,适合先跑通本地知识检索。";
|
|
104
|
+
} | {
|
|
105
|
+
readonly id: "bge-base-zh-v1.5";
|
|
106
|
+
readonly repo: "BAAI/bge-base-zh-v1.5";
|
|
107
|
+
readonly directory: "bge-base-zh-v1.5";
|
|
108
|
+
readonly label: "BGE Base 中文";
|
|
109
|
+
readonly dimension: 768;
|
|
110
|
+
readonly download: "约 409 MB";
|
|
111
|
+
readonly description: "效果与资源占用较均衡。";
|
|
112
|
+
} | {
|
|
113
|
+
readonly id: "bge-large-zh-v1.5";
|
|
114
|
+
readonly repo: "BAAI/bge-large-zh-v1.5";
|
|
115
|
+
readonly directory: "bge-large-zh-v1.5";
|
|
116
|
+
readonly label: "BGE Large 中文";
|
|
117
|
+
readonly dimension: 1024;
|
|
118
|
+
readonly download: "约 1.3 GB";
|
|
119
|
+
readonly description: "中文向量效果优先,需要更多内存与磁盘。";
|
|
120
|
+
} | {
|
|
121
|
+
readonly id: "wemm-embedding-2b-quantized";
|
|
122
|
+
readonly repo: "ewin-reg/WeMM-Embedding-2B-Quantized";
|
|
123
|
+
readonly directory: "WeMM-Embedding-2B-Quantized";
|
|
124
|
+
readonly label: "WeMM Embedding 2B 社区量化版";
|
|
125
|
+
readonly dimension: 2048;
|
|
126
|
+
readonly download: "约 1.8 GB";
|
|
127
|
+
readonly description: "社区维护的 INT4 / FP8 量化模型,非腾讯官方发布;模型卡标注 license: other,请查看协议。";
|
|
128
|
+
} | {
|
|
129
|
+
readonly id: "wemm-embedding-2b";
|
|
130
|
+
readonly repo: "tencent/WeMM-Embedding-2B";
|
|
131
|
+
readonly directory: "WeMM-Embedding-2B";
|
|
132
|
+
readonly label: "腾讯 WeMM Embedding 2B(BF16)";
|
|
133
|
+
readonly dimension: 2048;
|
|
134
|
+
readonly download: "约 5.5 GB";
|
|
135
|
+
readonly description: "多模态向量模型,支持文本和图片;下载与推理资源占用较高。";
|
|
136
|
+
};
|
|
137
|
+
export declare function rerankModel(id: RerankModelId): {
|
|
138
|
+
readonly id: "bge-reranker-base";
|
|
139
|
+
readonly repo: "BAAI/bge-reranker-base";
|
|
140
|
+
readonly directory: "bge-reranker-base";
|
|
141
|
+
readonly label: "BGE Reranker Base";
|
|
142
|
+
readonly download: "约 1.1 GB";
|
|
143
|
+
readonly description: "中文重排的轻量选项。";
|
|
144
|
+
} | {
|
|
145
|
+
readonly id: "qwen3-reranker-0.6b";
|
|
146
|
+
readonly repo: "Qwen/Qwen3-Reranker-0.6B";
|
|
147
|
+
readonly directory: "Qwen3-Reranker-0.6B";
|
|
148
|
+
readonly label: "Qwen3 Reranker 0.6B";
|
|
149
|
+
readonly download: "约 1.2 GB";
|
|
150
|
+
readonly description: "支持 100 多种语言,适合先试用 Qwen 重排。";
|
|
151
|
+
} | {
|
|
152
|
+
readonly id: "bge-reranker-large";
|
|
153
|
+
readonly repo: "BAAI/bge-reranker-large";
|
|
154
|
+
readonly directory: "bge-reranker-large";
|
|
155
|
+
readonly label: "BGE Reranker Large";
|
|
156
|
+
readonly download: "约 2.2 GB";
|
|
157
|
+
readonly description: "中文和英文重排效果优先,推理速度较慢。";
|
|
158
|
+
} | {
|
|
159
|
+
readonly id: "qwen3-reranker-4b";
|
|
160
|
+
readonly repo: "Qwen/Qwen3-Reranker-4B";
|
|
161
|
+
readonly directory: "Qwen3-Reranker-4B";
|
|
162
|
+
readonly label: "Qwen3 Reranker 4B";
|
|
163
|
+
readonly download: "约 8.1 GB";
|
|
164
|
+
readonly description: "Qwen 中档重排模型;请先确认磁盘与内存充足。";
|
|
165
|
+
} | {
|
|
166
|
+
readonly id: "qwen3-reranker-8b";
|
|
167
|
+
readonly repo: "Qwen/Qwen3-Reranker-8B";
|
|
168
|
+
readonly directory: "Qwen3-Reranker-8B";
|
|
169
|
+
readonly label: "Qwen3 Reranker 8B";
|
|
170
|
+
readonly download: "约 16.4 GB";
|
|
171
|
+
readonly description: "资源占用最高;下载前请确认有足够磁盘与内存。";
|
|
172
|
+
};
|
|
173
|
+
export declare function modelOptionsView(): {
|
|
174
|
+
embedding: {
|
|
175
|
+
dimension?: number | undefined;
|
|
176
|
+
id: string;
|
|
177
|
+
label: string;
|
|
178
|
+
download: string;
|
|
179
|
+
description: string;
|
|
180
|
+
modelCardUrl: string;
|
|
181
|
+
}[];
|
|
182
|
+
rerank: {
|
|
183
|
+
dimension?: number | undefined;
|
|
184
|
+
id: string;
|
|
185
|
+
label: string;
|
|
186
|
+
download: string;
|
|
187
|
+
description: string;
|
|
188
|
+
modelCardUrl: string;
|
|
189
|
+
}[];
|
|
190
|
+
};
|
|
191
|
+
//# sourceMappingURL=model-catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-catalog.d.ts","sourceRoot":"","sources":["../../../src/environment/model-catalog.ts"],"names":[],"mappings":"AAAA,0GAA0G;AAC1G,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BnB,CAAA;AAEV,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BhB,CAAA;AAEV,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAA;AACtE,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAA;AAChE,MAAM,WAAW,cAAc;IAAG,SAAS,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE;AACtF,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AACD,eAAO,MAAM,uBAAuB,EAAE,cAGrC,CAAA;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAKxE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,iBAA0B,GAAG,cAAc,CAItG;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAElD;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAE5C;AAED,wBAAgB,gBAAgB;;;;;;;;;;;;;;;;;EAU/B"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/** Models supported by the local embedding and reranking workers. Revisions are pinned in manifest.ts. */
|
|
2
|
+
export const EMBEDDING_MODELS = [
|
|
3
|
+
{
|
|
4
|
+
id: 'bge-small-zh-v1.5', repo: 'BAAI/bge-small-zh-v1.5', directory: 'bge-small-zh-v1.5',
|
|
5
|
+
label: 'BGE Small 中文', dimension: 512, download: '约 96 MB',
|
|
6
|
+
description: '资源占用最低,适合先跑通本地知识检索。',
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
id: 'bge-base-zh-v1.5', repo: 'BAAI/bge-base-zh-v1.5', directory: 'bge-base-zh-v1.5',
|
|
10
|
+
label: 'BGE Base 中文', dimension: 768, download: '约 409 MB',
|
|
11
|
+
description: '效果与资源占用较均衡。',
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
id: 'bge-large-zh-v1.5', repo: 'BAAI/bge-large-zh-v1.5', directory: 'bge-large-zh-v1.5',
|
|
15
|
+
label: 'BGE Large 中文', dimension: 1024, download: '约 1.3 GB',
|
|
16
|
+
description: '中文向量效果优先,需要更多内存与磁盘。',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
id: 'wemm-embedding-2b-quantized', repo: 'ewin-reg/WeMM-Embedding-2B-Quantized', directory: 'WeMM-Embedding-2B-Quantized',
|
|
20
|
+
label: 'WeMM Embedding 2B 社区量化版', dimension: 2048, download: '约 1.8 GB',
|
|
21
|
+
description: '社区维护的 INT4 / FP8 量化模型,非腾讯官方发布;模型卡标注 license: other,请查看协议。',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
id: 'wemm-embedding-2b', repo: 'tencent/WeMM-Embedding-2B', directory: 'WeMM-Embedding-2B',
|
|
25
|
+
label: '腾讯 WeMM Embedding 2B(BF16)', dimension: 2048, download: '约 5.5 GB',
|
|
26
|
+
description: '多模态向量模型,支持文本和图片;下载与推理资源占用较高。',
|
|
27
|
+
},
|
|
28
|
+
];
|
|
29
|
+
export const RERANK_MODELS = [
|
|
30
|
+
{
|
|
31
|
+
id: 'bge-reranker-base', repo: 'BAAI/bge-reranker-base', directory: 'bge-reranker-base',
|
|
32
|
+
label: 'BGE Reranker Base', download: '约 1.1 GB',
|
|
33
|
+
description: '中文重排的轻量选项。',
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
id: 'qwen3-reranker-0.6b', repo: 'Qwen/Qwen3-Reranker-0.6B', directory: 'Qwen3-Reranker-0.6B',
|
|
37
|
+
label: 'Qwen3 Reranker 0.6B', download: '约 1.2 GB',
|
|
38
|
+
description: '支持 100 多种语言,适合先试用 Qwen 重排。',
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
id: 'bge-reranker-large', repo: 'BAAI/bge-reranker-large', directory: 'bge-reranker-large',
|
|
42
|
+
label: 'BGE Reranker Large', download: '约 2.2 GB',
|
|
43
|
+
description: '中文和英文重排效果优先,推理速度较慢。',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
id: 'qwen3-reranker-4b', repo: 'Qwen/Qwen3-Reranker-4B', directory: 'Qwen3-Reranker-4B',
|
|
47
|
+
label: 'Qwen3 Reranker 4B', download: '约 8.1 GB',
|
|
48
|
+
description: 'Qwen 中档重排模型;请先确认磁盘与内存充足。',
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
id: 'qwen3-reranker-8b', repo: 'Qwen/Qwen3-Reranker-8B', directory: 'Qwen3-Reranker-8B',
|
|
52
|
+
label: 'Qwen3 Reranker 8B', download: '约 16.4 GB',
|
|
53
|
+
description: '资源占用最高;下载前请确认有足够磁盘与内存。',
|
|
54
|
+
},
|
|
55
|
+
];
|
|
56
|
+
export const DEFAULT_MODEL_SELECTION = {
|
|
57
|
+
embedding: 'bge-small-zh-v1.5',
|
|
58
|
+
rerank: 'bge-reranker-base',
|
|
59
|
+
};
|
|
60
|
+
export function isModelSelection(value) {
|
|
61
|
+
if (!value || typeof value !== 'object')
|
|
62
|
+
return false;
|
|
63
|
+
const selection = value;
|
|
64
|
+
return EMBEDDING_MODELS.some(model => model.id === selection.embedding)
|
|
65
|
+
&& RERANK_MODELS.some(model => model.id === selection.rerank);
|
|
66
|
+
}
|
|
67
|
+
export function parseModelSelection(value, fallback = DEFAULT_MODEL_SELECTION) {
|
|
68
|
+
if (value === undefined || value === null)
|
|
69
|
+
return { ...fallback };
|
|
70
|
+
if (!isModelSelection(value))
|
|
71
|
+
throw new Error('模型选择无效,请重新选择向量模型和重排模型');
|
|
72
|
+
return { embedding: value.embedding, rerank: value.rerank };
|
|
73
|
+
}
|
|
74
|
+
export function embeddingModel(id) {
|
|
75
|
+
return EMBEDDING_MODELS.find(model => model.id === id);
|
|
76
|
+
}
|
|
77
|
+
export function rerankModel(id) {
|
|
78
|
+
return RERANK_MODELS.find(model => model.id === id);
|
|
79
|
+
}
|
|
80
|
+
export function modelOptionsView() {
|
|
81
|
+
const present = (model) => ({
|
|
82
|
+
id: model.id, label: model.label, download: model.download, description: model.description,
|
|
83
|
+
modelCardUrl: `https://huggingface.co/${model.repo}`,
|
|
84
|
+
...('dimension' in model ? { dimension: model.dimension } : {}),
|
|
85
|
+
});
|
|
86
|
+
return {
|
|
87
|
+
embedding: EMBEDDING_MODELS.map(present),
|
|
88
|
+
rerank: RERANK_MODELS.map(present),
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=model-catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-catalog.js","sourceRoot":"","sources":["../../../src/environment/model-catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface ProcessOptions {
|
|
2
|
+
cwd?: string;
|
|
3
|
+
env?: NodeJS.ProcessEnv;
|
|
4
|
+
signal?: AbortSignal;
|
|
5
|
+
timeoutMs?: number;
|
|
6
|
+
onLine?: (line: string) => void;
|
|
7
|
+
}
|
|
8
|
+
/** No shell, bounded output, and only this child PID is stopped. */
|
|
9
|
+
export declare function runProcess(command: string, args: string[], options?: ProcessOptions): Promise<string>;
|
|
10
|
+
//# sourceMappingURL=process.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../../src/environment/process.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACvB,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAChC;AAED,oEAAoE;AACpE,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CA0CzG"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
/** No shell, bounded output, and only this child PID is stopped. */
|
|
3
|
+
export function runProcess(command, args, options = {}) {
|
|
4
|
+
return new Promise((resolve, reject) => {
|
|
5
|
+
if (options.signal?.aborted)
|
|
6
|
+
return reject(new Error('ENVIRONMENT_CANCELLED'));
|
|
7
|
+
const child = spawn(command, args, { cwd: options.cwd, env: options.env ?? process.env, stdio: ['ignore', 'pipe', 'pipe'] });
|
|
8
|
+
let output = '', tail = '', settled = false, stopError;
|
|
9
|
+
let killTimer;
|
|
10
|
+
const end = (error) => {
|
|
11
|
+
if (settled)
|
|
12
|
+
return;
|
|
13
|
+
settled = true;
|
|
14
|
+
clearTimeout(timer);
|
|
15
|
+
clearTimeout(killTimer);
|
|
16
|
+
options.signal?.removeEventListener('abort', cancel);
|
|
17
|
+
if (error)
|
|
18
|
+
reject(error);
|
|
19
|
+
else
|
|
20
|
+
resolve(output);
|
|
21
|
+
};
|
|
22
|
+
// Keep the install lock until this owned child has actually exited.
|
|
23
|
+
const stop = (error) => {
|
|
24
|
+
if (settled || stopError)
|
|
25
|
+
return;
|
|
26
|
+
stopError = error;
|
|
27
|
+
clearTimeout(timer);
|
|
28
|
+
child.kill('SIGTERM');
|
|
29
|
+
killTimer = setTimeout(() => child.kill('SIGKILL'), 1500);
|
|
30
|
+
};
|
|
31
|
+
const cancel = () => stop(new Error('ENVIRONMENT_CANCELLED'));
|
|
32
|
+
const timer = setTimeout(() => stop(new Error(`环境步骤超时:${command}`)), options.timeoutMs ?? 30_000);
|
|
33
|
+
options.signal?.addEventListener('abort', cancel, { once: true });
|
|
34
|
+
const receive = (data) => {
|
|
35
|
+
const text = data.toString();
|
|
36
|
+
output = (output + text).slice(-128_000);
|
|
37
|
+
tail = (tail + text).slice(-16_000);
|
|
38
|
+
const lines = tail.split(/[\r\n]+/);
|
|
39
|
+
tail = lines.pop() ?? '';
|
|
40
|
+
for (const line of lines)
|
|
41
|
+
if (line.trim())
|
|
42
|
+
options.onLine?.(line.trim());
|
|
43
|
+
};
|
|
44
|
+
child.stdout.on('data', receive);
|
|
45
|
+
child.stderr.on('data', receive);
|
|
46
|
+
child.once('error', error => end(error));
|
|
47
|
+
child.once('close', code => {
|
|
48
|
+
if (tail.trim())
|
|
49
|
+
options.onLine?.(tail.trim());
|
|
50
|
+
end(stopError ?? (code === 0 ? undefined : new Error(`环境步骤失败(${code ?? '已停止'}):${output.slice(-3000).trim() || command}`)));
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=process.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../../src/environment/process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAU1C,oEAAoE;AACpE,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,IAAc,EAAE,UAA0B,EAAE;IACtF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO;YAAE,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAA;QAC9E,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;QAC5H,IAAI,MAAM,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,OAAO,GAAG,KAAK,EAAE,SAA4B,CAAA;QACzE,IAAI,SAAoD,CAAA;QACxD,MAAM,GAAG,GAAG,CAAC,KAAa,EAAQ,EAAE;YAClC,IAAI,OAAO;gBAAE,OAAM;YACnB,OAAO,GAAG,IAAI,CAAA;YACd,YAAY,CAAC,KAAK,CAAC,CAAA;YACnB,YAAY,CAAC,SAAS,CAAC,CAAA;YACvB,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;YACpD,IAAI,KAAK;gBAAE,MAAM,CAAC,KAAK,CAAC,CAAA;;gBACnB,OAAO,CAAC,MAAM,CAAC,CAAA;QACtB,CAAC,CAAA;QACD,oEAAoE;QACpE,MAAM,IAAI,GAAG,CAAC,KAAY,EAAQ,EAAE;YAClC,IAAI,OAAO,IAAI,SAAS;gBAAE,OAAM;YAChC,SAAS,GAAG,KAAK,CAAA;YACjB,YAAY,CAAC,KAAK,CAAC,CAAA;YACnB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACrB,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAA;QAC3D,CAAC,CAAA;QACD,MAAM,MAAM,GAAG,GAAS,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAA;QACnE,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,CAAA;QACjG,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QACjE,MAAM,OAAO,GAAG,CAAC,IAAY,EAAQ,EAAE;YACrC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;YAC5B,MAAM,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAA;YACxC,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAA;YACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;YACnC,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAA;YACxB,KAAK,MAAM,IAAI,IAAI,KAAK;gBAAE,IAAI,IAAI,CAAC,IAAI,EAAE;oBAAE,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QAC1E,CAAC,CAAA;QACD,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAChC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAChC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;QACxC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;YACzB,IAAI,IAAI,CAAC,IAAI,EAAE;gBAAE,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;YAC9C,GAAG,CAAC,SAAS,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,UAAU,IAAI,IAAI,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,CAAA;QAC7H,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type ModelSelection } from './model-catalog.js';
|
|
2
|
+
export declare const MODEL_SELECTION_FILE = "environment-model-selection.json";
|
|
3
|
+
export declare function readModelSelection(resourceRoot: string): ModelSelection;
|
|
4
|
+
export declare function selectedEmbedding(resourceRoot: string | undefined): {
|
|
5
|
+
path?: string;
|
|
6
|
+
dimension?: number;
|
|
7
|
+
};
|
|
8
|
+
export declare function writeModelSelection(resourceRoot: string, selection: ModelSelection): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=selection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selection.d.ts","sourceRoot":"","sources":["../../../src/environment/selection.ts"],"names":[],"mappings":"AAGA,OAAO,EAA6D,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnH,eAAO,MAAM,oBAAoB,qCAAqC,CAAA;AAEtE,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,cAAc,CAMvE;AAED,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAKzG;AAED,wBAAsB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAMxG"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
2
|
+
import { mkdir, rename, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { DEFAULT_MODEL_SELECTION, embeddingModel, isModelSelection } from './model-catalog.js';
|
|
5
|
+
export const MODEL_SELECTION_FILE = 'environment-model-selection.json';
|
|
6
|
+
export function readModelSelection(resourceRoot) {
|
|
7
|
+
try {
|
|
8
|
+
const value = JSON.parse(readFileSync(join(resourceRoot, MODEL_SELECTION_FILE), 'utf8'));
|
|
9
|
+
if (isModelSelection(value))
|
|
10
|
+
return { embedding: value.embedding, rerank: value.rerank };
|
|
11
|
+
}
|
|
12
|
+
catch { /* first install or damaged selection: use the shipped defaults */ }
|
|
13
|
+
return { ...DEFAULT_MODEL_SELECTION };
|
|
14
|
+
}
|
|
15
|
+
export function selectedEmbedding(resourceRoot) {
|
|
16
|
+
if (!resourceRoot)
|
|
17
|
+
return {};
|
|
18
|
+
const model = embeddingModel(readModelSelection(resourceRoot).embedding);
|
|
19
|
+
const path = join(resourceRoot, 'models', model.directory);
|
|
20
|
+
return existsSync(path) ? { path, dimension: model.dimension } : {};
|
|
21
|
+
}
|
|
22
|
+
export async function writeModelSelection(resourceRoot, selection) {
|
|
23
|
+
await mkdir(resourceRoot, { recursive: true });
|
|
24
|
+
const destination = join(resourceRoot, MODEL_SELECTION_FILE);
|
|
25
|
+
const temporary = `${destination}.${process.pid}.tmp`;
|
|
26
|
+
await writeFile(temporary, `${JSON.stringify(selection, null, 2)}\n`, 'utf8');
|
|
27
|
+
await rename(temporary, destination);
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=selection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selection.js","sourceRoot":"","sources":["../../../src/environment/selection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,uBAAuB,EAAE,cAAc,EAAE,gBAAgB,EAAuB,MAAM,oBAAoB,CAAA;AAEnH,MAAM,CAAC,MAAM,oBAAoB,GAAG,kCAAkC,CAAA;AAEtE,MAAM,UAAU,kBAAkB,CAAC,YAAoB;IACrD,IAAI,CAAC;QACH,MAAM,KAAK,GAAY,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,oBAAoB,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;QACjG,IAAI,gBAAgB,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAA;IAC1F,CAAC;IAAC,MAAM,CAAC,CAAC,kEAAkE,CAAC,CAAC;IAC9E,OAAO,EAAE,GAAG,uBAAuB,EAAE,CAAA;AACvC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,YAAgC;IAChE,IAAI,CAAC,YAAY;QAAE,OAAO,EAAE,CAAA;IAC5B,MAAM,KAAK,GAAG,cAAc,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,CAAA;IACxE,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;IAC1D,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;AACrE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,YAAoB,EAAE,SAAyB;IACvF,MAAM,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAA;IAC5D,MAAM,SAAS,GAAG,GAAG,WAAW,IAAI,OAAO,CAAC,GAAG,MAAM,CAAA;IACrD,MAAM,SAAS,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAC7E,MAAM,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;AACtC,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { RuntimeKnowledgeConfig } from '../types.js';
|
|
2
|
+
import { installRequiredEnvironment } from './install.js';
|
|
3
|
+
import { runProcess } from './process.js';
|
|
4
|
+
import type { EnvironmentReport, EnvironmentView } from './types.js';
|
|
5
|
+
export interface EnvironmentOptions {
|
|
6
|
+
resourceRoot: string;
|
|
7
|
+
snapshot: () => {
|
|
8
|
+
config: RuntimeKnowledgeConfig;
|
|
9
|
+
paths: {
|
|
10
|
+
python: string;
|
|
11
|
+
embeddingModel: string;
|
|
12
|
+
rerankModel: string;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
probe: (kind: 'embedding' | 'rerank') => Promise<{
|
|
16
|
+
ok: boolean;
|
|
17
|
+
message: string;
|
|
18
|
+
}>;
|
|
19
|
+
reload: () => void;
|
|
20
|
+
run?: typeof runProcess;
|
|
21
|
+
install?: typeof installRequiredEnvironment;
|
|
22
|
+
}
|
|
23
|
+
export declare function modelFilesProblem(path: string): string | undefined;
|
|
24
|
+
/** Preparation and readiness are shared by all bases in one deployment. */
|
|
25
|
+
export declare class KnowledgeEnvironment {
|
|
26
|
+
private readonly options;
|
|
27
|
+
private report;
|
|
28
|
+
private job?;
|
|
29
|
+
private checkPending?;
|
|
30
|
+
private work?;
|
|
31
|
+
private controller?;
|
|
32
|
+
private checkController?;
|
|
33
|
+
private disposed;
|
|
34
|
+
constructor(options: EnvironmentOptions);
|
|
35
|
+
private fingerprint;
|
|
36
|
+
view(): EnvironmentView;
|
|
37
|
+
invalidate(): void;
|
|
38
|
+
requireReady(): Promise<void>;
|
|
39
|
+
check(deep?: boolean): Promise<EnvironmentReport>;
|
|
40
|
+
private item;
|
|
41
|
+
private performCheck;
|
|
42
|
+
start(action: 'check' | 'install', requestedSelection?: unknown): EnvironmentView;
|
|
43
|
+
wait(): Promise<void>;
|
|
44
|
+
cancel(): void;
|
|
45
|
+
close(): void;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/environment/service.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EAAE,0BAA0B,EAAoB,MAAM,cAAc,CAAA;AAG3E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,OAAO,KAAK,EAAsC,iBAAiB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAExG,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM;QAAE,MAAM,EAAE,sBAAsB,CAAC;QAAC,KAAK,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,cAAc,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAA;IAC1H,KAAK,EAAE,CAAC,IAAI,EAAE,WAAW,GAAG,QAAQ,KAAK,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAClF,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,GAAG,CAAC,EAAE,OAAO,UAAU,CAAA;IACvB,OAAO,CAAC,EAAE,OAAO,0BAA0B,CAAA;CAC5C;AAmBD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAWlE;AAED,2EAA2E;AAC3E,qBAAa,oBAAoB;IAQnB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAPpC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,GAAG,CAAC,CAAwB;IACpC,OAAO,CAAC,YAAY,CAAC,CAA4B;IACjD,OAAO,CAAC,IAAI,CAAC,CAAe;IAC5B,OAAO,CAAC,UAAU,CAAC,CAAiB;IACpC,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAQ;gBACK,OAAO,EAAE,kBAAkB;IAExD,OAAO,CAAC,WAAW;IAWnB,IAAI,IAAI,eAAe;IAKvB,UAAU,IAAI,IAAI;IAEZ,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IASnC,KAAK,CAAC,IAAI,UAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAQ9C,OAAO,CAAC,IAAI;YAIE,YAAY;IAqC1B,KAAK,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,EAAE,kBAAkB,CAAC,EAAE,OAAO,GAAG,eAAe;IAiE3E,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAC3B,MAAM,IAAI,IAAI;IAId,KAAK,IAAI,IAAI;CACd"}
|