dsh-diary-memory 0.1.0 → 0.1.2
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 +71 -15
- package/cordis.patch.yml +0 -1
- package/lib/bailian-client.js +8 -3
- package/lib/bailian-client.js.map +1 -1
- package/lib/client/choices.d.ts +53 -0
- package/lib/client/choices.js +51 -0
- package/lib/client/choices.js.map +1 -0
- package/lib/client/controller.d.ts +40 -0
- package/lib/client/controller.js +130 -0
- package/lib/client/controller.js.map +1 -0
- package/lib/client/index.d.ts +5 -0
- package/lib/client/index.js +19 -0
- package/lib/client/index.js.map +1 -0
- package/lib/client/page.d.ts +5 -0
- package/lib/client/page.js +24 -0
- package/lib/client/page.js.map +1 -0
- package/lib/client.js +430 -0
- package/lib/client.js.map +7 -0
- package/lib/config.d.ts +63 -1
- package/lib/config.js +33 -4
- package/lib/config.js.map +1 -1
- package/lib/diary-runtime.d.ts +10 -0
- package/lib/diary-runtime.js +65 -0
- package/lib/diary-runtime.js.map +1 -0
- package/lib/index.d.ts +3 -3
- package/lib/index.js +7 -2
- package/lib/index.js.map +1 -1
- package/lib/memory-store.d.ts +6 -3
- package/lib/memory-store.js +6 -3
- package/lib/memory-store.js.map +1 -1
- package/lib/model-parameters.d.ts +7 -0
- package/lib/model-parameters.js +38 -0
- package/lib/model-parameters.js.map +1 -0
- package/lib/orchestrator.js +4 -66
- package/lib/orchestrator.js.map +1 -1
- package/lib/retrieval-service.d.ts +12 -3
- package/lib/retrieval-service.js +25 -13
- package/lib/retrieval-service.js.map +1 -1
- package/lib/session-memory.d.ts +20 -0
- package/lib/session-memory.js +161 -0
- package/lib/session-memory.js.map +1 -0
- package/lib/session-selection.d.ts +1 -0
- package/lib/session-selection.js +6 -0
- package/lib/session-selection.js.map +1 -0
- package/lib/sqlite.d.ts +25 -0
- package/lib/sqlite.js +64 -0
- package/lib/sqlite.js.map +1 -0
- package/lib/tools.d.ts +1 -0
- package/lib/tools.js +3 -0
- package/lib/tools.js.map +1 -1
- package/package.json +140 -26
- package/src/bailian-client.ts +7 -3
- package/src/client/choices.ts +66 -0
- package/src/client/controller.ts +108 -0
- package/src/client/index.ts +26 -0
- package/src/client/page.tsx +100 -0
- package/src/config.ts +41 -4
- package/src/diary-runtime.ts +62 -0
- package/src/index.ts +11 -5
- package/src/memory-store.ts +10 -6
- package/src/model-parameters.ts +32 -0
- package/src/orchestrator.ts +4 -57
- package/src/retrieval-service.ts +27 -14
- package/src/session-memory.ts +151 -0
- package/src/session-selection.ts +4 -0
- package/src/sqlite.ts +78 -0
- package/src/tools.ts +4 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/client/page.tsx"],"names":[],"mappings":"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"}
|
package/lib/client.js
ADDED
|
@@ -0,0 +1,430 @@
|
|
|
1
|
+
window.__ModuleLoader__.load({ id: "dsh-diary-memory", factory: (require) => { var module = { exports: {} }; var exports = module.exports;
|
|
2
|
+
"use strict";
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
+
|
|
21
|
+
// src/client/index.ts
|
|
22
|
+
var index_exports = {};
|
|
23
|
+
__export(index_exports, {
|
|
24
|
+
DiarySettingsController: () => DiarySettingsController,
|
|
25
|
+
DiarySettingsPage: () => DiarySettingsPage,
|
|
26
|
+
apply: () => apply,
|
|
27
|
+
inject: () => inject
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(index_exports);
|
|
30
|
+
|
|
31
|
+
// src/client/controller.ts
|
|
32
|
+
var import_dsh_client_ui_primitives = require("@deepseek-ai/dsh-client-ui-primitives");
|
|
33
|
+
|
|
34
|
+
// src/model-parameters.ts
|
|
35
|
+
function validateModelParameters(value, kind) {
|
|
36
|
+
if (!value || typeof value !== "object" || Array.isArray(value) || ![Object.prototype, null].includes(Object.getPrototypeOf(value))) throw new Error(`${kind} \u53C2\u6570\u5FC5\u987B\u4E3A JSON \u5BF9\u8C61`);
|
|
37
|
+
const visit = (item, depth = 0) => {
|
|
38
|
+
if (depth > 16) throw new Error(`${kind} \u53C2\u6570\u5D4C\u5957\u8FC7\u6DF1`);
|
|
39
|
+
if (item === null || typeof item === "boolean" || typeof item === "string") return item;
|
|
40
|
+
if (typeof item === "number" && Number.isFinite(item)) return item;
|
|
41
|
+
if (Array.isArray(item)) return Object.freeze(item.map((child) => visit(child, depth + 1)));
|
|
42
|
+
if (item && typeof item === "object" && [Object.prototype, null].includes(Object.getPrototypeOf(item))) {
|
|
43
|
+
return Object.freeze(Object.fromEntries(Object.entries(item).map(([key, child]) => [key, visit(child, depth + 1)])));
|
|
44
|
+
}
|
|
45
|
+
throw new Error(`${kind} \u53C2\u6570\u53EA\u80FD\u5305\u542B JSON \u503C`);
|
|
46
|
+
};
|
|
47
|
+
const parameters = visit(value);
|
|
48
|
+
if (JSON.stringify(parameters).length > 16e3) throw new Error(`${kind} \u53C2\u6570\u4E0D\u80FD\u8D85\u8FC7 16000 \u5B57\u7B26`);
|
|
49
|
+
const reserved = kind === "embedding" ? ["dimension", "text_type"] : ["top_n"];
|
|
50
|
+
if (reserved.some((key) => Object.hasOwn(parameters, key))) throw new Error(kind === "embedding" ? "dimension \u8BF7\u5728\u5411\u91CF\u7EF4\u5EA6\u4E2D\u586B\u5199\uFF1Btext_type \u7531\u5165\u5E93\u548C\u53EC\u56DE\u81EA\u52A8\u8BBE\u7F6E" : "top_n \u8BF7\u5728\u53EC\u56DE\u6761\u6570\u4E2D\u586B\u5199");
|
|
51
|
+
if (kind === "embedding" && parameters.output_type !== void 0 && parameters.output_type !== "dense") throw new Error("\u672C\u5730\u5411\u91CF\u68C0\u7D22\u9700\u8981 dense \u5411\u91CF\uFF0Coutput_type \u4EC5\u652F\u6301 dense");
|
|
52
|
+
if (kind === "rerank" && parameters.return_documents !== void 0 && typeof parameters.return_documents !== "boolean") throw new Error("return_documents \u5FC5\u987B\u662F\u5E03\u5C14\u503C");
|
|
53
|
+
return parameters;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// src/session-selection.ts
|
|
57
|
+
function validateSessionIds(value) {
|
|
58
|
+
if (!Array.isArray(value) || value.length > 1e3 || value.some((id) => typeof id !== "string" || !id.length || id.length > 256 || /[\r\n\0]/.test(id))) throw new Error("\u6307\u5B9A\u4F1A\u8BDD\u5FC5\u987B\u662F\u81F3\u591A 1000 \u4E2A\u6709\u6548\u4F1A\u8BDD ID \u7684\u6570\u7EC4");
|
|
59
|
+
return [...new Set(value)];
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// src/client/choices.ts
|
|
63
|
+
var import_dsh_client_store = require("@deepseek-ai/dsh-client-store");
|
|
64
|
+
var DiaryChoices = class {
|
|
65
|
+
constructor(catalog, loadModels, refreshSessions) {
|
|
66
|
+
this.catalog = catalog;
|
|
67
|
+
this.loadModels = loadModels;
|
|
68
|
+
this.refreshSessions = refreshSessions;
|
|
69
|
+
this.unsubscribe = catalog?.subscribe(() => this.readSessions());
|
|
70
|
+
this.readSessions();
|
|
71
|
+
void this.refreshModels();
|
|
72
|
+
}
|
|
73
|
+
catalog;
|
|
74
|
+
loadModels;
|
|
75
|
+
refreshSessions;
|
|
76
|
+
store = (0, import_dsh_client_store.createSnapshotStore)({ sessions: [], sessionsReady: false, writers: [], modelsStatus: "loading" });
|
|
77
|
+
unsubscribe;
|
|
78
|
+
generation = 0;
|
|
79
|
+
disposed = false;
|
|
80
|
+
readSessions() {
|
|
81
|
+
const value = this.catalog?.getSnapshot();
|
|
82
|
+
this.store.update((state) => {
|
|
83
|
+
state.sessionsReady = value?.phase === "ready";
|
|
84
|
+
state.sessions = value ? value.ids.flatMap((id) => {
|
|
85
|
+
const row = value.byId[id];
|
|
86
|
+
return row && row.origin !== "subagent" ? [{ id, title: row.displayTitle }] : [];
|
|
87
|
+
}) : [];
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
async refreshModels() {
|
|
91
|
+
const generation = ++this.generation;
|
|
92
|
+
this.store.update((state) => {
|
|
93
|
+
state.modelsStatus = "loading";
|
|
94
|
+
});
|
|
95
|
+
try {
|
|
96
|
+
const response = await this.loadModels?.();
|
|
97
|
+
if (this.disposed || generation !== this.generation) return;
|
|
98
|
+
this.store.update((state) => {
|
|
99
|
+
state.writers = response?.ok && response.value ? response.value.groups.flatMap((group) => group.models.map((model) => ({ provider: group.id, model: model.id, label: `${group.name} / ${model.name}` }))) : [];
|
|
100
|
+
state.modelsStatus = response?.ok ? "ready" : "error";
|
|
101
|
+
});
|
|
102
|
+
} catch {
|
|
103
|
+
if (!this.disposed && generation === this.generation) this.store.update((state) => {
|
|
104
|
+
state.modelsStatus = "error";
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
async refresh() {
|
|
109
|
+
await Promise.allSettled([this.refreshSessions?.(), this.refreshModels()]);
|
|
110
|
+
}
|
|
111
|
+
dispose() {
|
|
112
|
+
this.disposed = true;
|
|
113
|
+
this.generation++;
|
|
114
|
+
this.unsubscribe?.();
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
// src/client/controller.ts
|
|
119
|
+
var editableFields = ["apiKey", "baseUrl", "embeddingModel", "embeddingDimensions", "embeddingParameters", "rerankModel", "rerankParameters", "candidateCount", "recallCount", "compressionRounds", "retainRounds", "autoRecall", "sessionIds", "diaryProvider", "diaryModel"];
|
|
120
|
+
function numberField(field, min, max) {
|
|
121
|
+
return {
|
|
122
|
+
field,
|
|
123
|
+
format: (value) => typeof value === "number" ? String(value) : "",
|
|
124
|
+
parse: (text) => !text.trim() ? { kind: "clear" } : Number.isSafeInteger(Number(text)) && Number(text) >= min && Number(text) <= max ? { kind: "set", value: Number(text) } : void 0
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
function parametersField(field, kind) {
|
|
128
|
+
return {
|
|
129
|
+
field,
|
|
130
|
+
format: (value) => value && typeof value === "object" ? JSON.stringify(value, null, 2) : "{}",
|
|
131
|
+
parse: (text) => {
|
|
132
|
+
if (!text.trim()) return { kind: "clear" };
|
|
133
|
+
try {
|
|
134
|
+
return { kind: "set", value: validateModelParameters(JSON.parse(text), kind) };
|
|
135
|
+
} catch {
|
|
136
|
+
return void 0;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
var specs = [
|
|
142
|
+
...["apiKey", "baseUrl", "embeddingModel", "rerankModel", "diaryProvider", "diaryModel"].map(import_dsh_client_ui_primitives.settingsTextField),
|
|
143
|
+
{ field: "sessionIds", format: (value) => JSON.stringify(value ?? []), parse: (text) => {
|
|
144
|
+
try {
|
|
145
|
+
return { kind: "set", value: validateSessionIds(JSON.parse(text || "[]")) };
|
|
146
|
+
} catch {
|
|
147
|
+
return void 0;
|
|
148
|
+
}
|
|
149
|
+
} },
|
|
150
|
+
numberField("embeddingDimensions", 1, 4096),
|
|
151
|
+
numberField("candidateCount", 1, 100),
|
|
152
|
+
numberField("recallCount", 1, 100),
|
|
153
|
+
numberField("compressionRounds", 2, 1e6),
|
|
154
|
+
numberField("retainRounds", 1, 1e6),
|
|
155
|
+
parametersField("embeddingParameters", "embedding"),
|
|
156
|
+
parametersField("rerankParameters", "rerank"),
|
|
157
|
+
{ field: "autoRecall", format: (value) => String(value ?? true), parse: (text) => text === "true" || text === "false" ? { kind: "set", value: text === "true" } : void 0 }
|
|
158
|
+
];
|
|
159
|
+
var DiarySettingsController = class {
|
|
160
|
+
constructor(scope, keyConfigured = () => false, choices = new DiaryChoices()) {
|
|
161
|
+
this.scope = scope;
|
|
162
|
+
this.keyConfigured = keyConfigured;
|
|
163
|
+
this.choices = choices;
|
|
164
|
+
this.form = new import_dsh_client_ui_primitives.SettingsFormModel(scope, specs);
|
|
165
|
+
this.store = this.form.bind(() => this.projection());
|
|
166
|
+
this.unsubscribeChoices = choices.store.subscribe(() => this.store.set(this.projection()));
|
|
167
|
+
}
|
|
168
|
+
scope;
|
|
169
|
+
keyConfigured;
|
|
170
|
+
choices;
|
|
171
|
+
form;
|
|
172
|
+
store;
|
|
173
|
+
unsubscribeChoices;
|
|
174
|
+
projection() {
|
|
175
|
+
const fields = Object.fromEntries(editableFields.map((field) => [field, this.form.field(field)]));
|
|
176
|
+
const base = this.scope.getSnapshot().base;
|
|
177
|
+
const number = (field, fallback) => fields[field].text.trim() ? Number(fields[field].text) : base?.[field] ?? fallback;
|
|
178
|
+
let error = null;
|
|
179
|
+
let selectedSessions = [];
|
|
180
|
+
try {
|
|
181
|
+
selectedSessions = validateSessionIds(JSON.parse(fields.sessionIds.text || "[]"));
|
|
182
|
+
} catch (failure) {
|
|
183
|
+
error = failure.message;
|
|
184
|
+
}
|
|
185
|
+
const writerProvider = fields.diaryProvider.text.trim();
|
|
186
|
+
const writerModel = fields.diaryModel.text.trim();
|
|
187
|
+
if (Boolean(writerProvider) !== Boolean(writerModel)) error = "\u5199\u65E5\u8BB0\u7684\u6A21\u578B\u63D0\u4F9B\u65B9\u4E0E\u6A21\u578B\u540D\u5FC5\u987B\u540C\u65F6\u586B\u5199\uFF0C\u6216\u540C\u65F6\u7559\u7A7A\u8DDF\u968F\u804A\u5929\u6A21\u578B\u3002";
|
|
188
|
+
if (writerProvider.length > 200 || writerModel.length > 200) error = "\u5199\u65E5\u8BB0\u7684\u63D0\u4F9B\u65B9\u4E0E\u6A21\u578B\u540D\u4E0D\u80FD\u8D85\u8FC7 200 \u5B57\u7B26\u3002";
|
|
189
|
+
if (number("compressionRounds", 20) <= number("retainRounds", 2)) error = "\u538B\u7F29\u8F6E\u6B21\u5FC5\u987B\u5927\u4E8E\u4FDD\u7559\u8F6E\u6B21\u3002";
|
|
190
|
+
if (number("recallCount", 6) > number("candidateCount", 30)) error = "\u53EC\u56DE\u6761\u6570\u4E0D\u80FD\u5927\u4E8E\u5019\u9009\u6570\u91CF\u3002";
|
|
191
|
+
for (const kind of ["embedding", "rerank"]) {
|
|
192
|
+
const text = fields[`${kind}Parameters`].text.trim();
|
|
193
|
+
try {
|
|
194
|
+
validateModelParameters(JSON.parse(text || "{}"), kind);
|
|
195
|
+
} catch (failure) {
|
|
196
|
+
error = failure instanceof SyntaxError ? `${kind} \u53C2\u6570\u9700\u8981\u5408\u6CD5\u7684 JSON \u5BF9\u8C61\u3002` : failure.message;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
const endpoint = fields.baseUrl.text.trim();
|
|
200
|
+
try {
|
|
201
|
+
if (endpoint) {
|
|
202
|
+
const url = new URL(endpoint);
|
|
203
|
+
if (url.username || url.password || url.search || url.hash || url.pathname !== "/" || url.protocol !== "https:" && !(url.protocol === "http:" && ["localhost", "127.0.0.1", "[::1]"].includes(url.hostname))) throw new Error();
|
|
204
|
+
}
|
|
205
|
+
} catch {
|
|
206
|
+
fields.baseUrl.invalid = true;
|
|
207
|
+
error = "\u767E\u70BC\u7AEF\u70B9\u9700\u8981 HTTPS origin\uFF0C\u4F8B\u5982 https://dashscope.aliyuncs.com\u3002";
|
|
208
|
+
}
|
|
209
|
+
for (const field of ["embeddingModel", "rerankModel"]) {
|
|
210
|
+
if (fields[field].text.trim().length > 200) {
|
|
211
|
+
fields[field].invalid = true;
|
|
212
|
+
error = "\u6A21\u578B\u540D\u4E0D\u80FD\u8D85\u8FC7 200 \u5B57\u7B26\u3002";
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
const shell = this.form.shell();
|
|
216
|
+
return { ...shell, ...this.choices.store.getSnapshot(), selectedSessions, invalid: shell.invalid || Boolean(error) || !shell.writable, fields, keyConfigured: this.keyConfigured(), error };
|
|
217
|
+
}
|
|
218
|
+
async save() {
|
|
219
|
+
if (!this.projection().invalid) await this.form.save();
|
|
220
|
+
}
|
|
221
|
+
inject() {
|
|
222
|
+
return {
|
|
223
|
+
hooks: { diarySettings: this.store },
|
|
224
|
+
...this.form.actions(),
|
|
225
|
+
save: () => {
|
|
226
|
+
void this.save();
|
|
227
|
+
},
|
|
228
|
+
toggleSession: (id, enabled) => {
|
|
229
|
+
const ids = this.projection().selectedSessions;
|
|
230
|
+
this.form.actions().edit("sessionIds", JSON.stringify(enabled ? validateSessionIds([...ids, id]) : ids.filter((item) => item !== id)));
|
|
231
|
+
},
|
|
232
|
+
chooseWriter: (selection) => {
|
|
233
|
+
const [provider, model] = selection ? JSON.parse(selection) : ["", ""];
|
|
234
|
+
this.form.actions().edit("diaryProvider", provider);
|
|
235
|
+
this.form.actions().edit("diaryModel", model);
|
|
236
|
+
},
|
|
237
|
+
refreshChoices: () => {
|
|
238
|
+
void this.choices.refresh();
|
|
239
|
+
}
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
dispose() {
|
|
243
|
+
this.unsubscribeChoices();
|
|
244
|
+
this.choices.dispose();
|
|
245
|
+
this.form.dispose();
|
|
246
|
+
}
|
|
247
|
+
};
|
|
248
|
+
|
|
249
|
+
// src/client/page.tsx
|
|
250
|
+
var import_dsh_client_ui_primitives2 = require("@deepseek-ai/dsh-client-ui-primitives");
|
|
251
|
+
var import_react = require("react");
|
|
252
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
253
|
+
var card = { border: "1px solid var(--dsw-alias-border-l2)", borderRadius: 14, padding: "16px 20px", marginTop: 16, minWidth: 0 };
|
|
254
|
+
var hint = { fontSize: 12, lineHeight: 1.6, color: "var(--dsw-alias-label-tertiary)", margin: "8px 0 0" };
|
|
255
|
+
var textarea = { display: "block", width: "100%", boxSizing: "border-box", minHeight: 110, padding: 12, borderRadius: 8, border: "1px solid var(--dsw-alias-border-l2)", background: "var(--dsw-alias-bg-layer-3)", color: "var(--dsw-alias-label-primary)", fontFamily: "var(--dsw-font-mono, monospace)", fontSize: 12, lineHeight: 1.6, resize: "vertical" };
|
|
256
|
+
function Group({ title, children }) {
|
|
257
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("section", { "aria-label": title, style: card, children: [
|
|
258
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h3", { style: { fontSize: 14, margin: "0 0 8px" }, children: title }),
|
|
259
|
+
children
|
|
260
|
+
] });
|
|
261
|
+
}
|
|
262
|
+
function DiarySettingsPage(props) {
|
|
263
|
+
const state = props.useDiarySettings((value) => value);
|
|
264
|
+
const disabled = !state.writable || state.saving;
|
|
265
|
+
const [sessionFilter, setSessionFilter] = (0, import_react.useState)("");
|
|
266
|
+
const sessions = [...state.sessions, ...state.selectedSessions.filter((id) => !state.sessions.some((item) => item.id === id)).map((id) => ({ id, title: "\u5DF2\u9009\u4F1A\u8BDD\uFF08\u4E0D\u5728\u5F53\u524D\u5217\u8868\uFF09" }))].filter((item) => `${item.title}
|
|
267
|
+
${item.id}`.toLowerCase().includes(sessionFilter.toLowerCase()));
|
|
268
|
+
const writer = state.fields.diaryProvider.text && state.fields.diaryModel.text ? JSON.stringify([state.fields.diaryProvider.text, state.fields.diaryModel.text]) : "";
|
|
269
|
+
const valueField = (field, label, description, numeric = false) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
270
|
+
import_dsh_client_ui_primitives2.SettingsValueField,
|
|
271
|
+
{
|
|
272
|
+
id: `diary-${field}`,
|
|
273
|
+
label,
|
|
274
|
+
hint: description,
|
|
275
|
+
numeric,
|
|
276
|
+
...state.fields[field],
|
|
277
|
+
disabled,
|
|
278
|
+
overriddenLabel: "\u5DF2\u81EA\u5B9A\u4E49",
|
|
279
|
+
resetLabel: "\u6062\u590D\u9ED8\u8BA4",
|
|
280
|
+
invalidLabel: numeric ? "\u8BF7\u586B\u5199\u8303\u56F4\u5185\u7684\u6574\u6570\u3002" : "\u8BF7\u68C0\u67E5\u586B\u5199\u7684\u5185\u5BB9\u3002",
|
|
281
|
+
onEdit: (text) => props.edit(field, text),
|
|
282
|
+
onReset: () => props.resetField(field)
|
|
283
|
+
},
|
|
284
|
+
field
|
|
285
|
+
);
|
|
286
|
+
const parameters = (field, description) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { padding: "12px 0" }, children: [
|
|
287
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("label", { htmlFor: `diary-${field}`, style: { display: "block", fontSize: 13, fontWeight: 500, marginBottom: 8 }, children: "\u989D\u5916\u53C2\u6570\uFF08JSON\uFF09" }),
|
|
288
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
289
|
+
"textarea",
|
|
290
|
+
{
|
|
291
|
+
id: `diary-${field}`,
|
|
292
|
+
"aria-describedby": `diary-${field}-hint`,
|
|
293
|
+
"aria-invalid": state.fields[field].invalid || void 0,
|
|
294
|
+
value: state.fields[field].text,
|
|
295
|
+
onChange: (event) => props.edit(field, event.target.value),
|
|
296
|
+
disabled,
|
|
297
|
+
spellCheck: false,
|
|
298
|
+
rows: 5,
|
|
299
|
+
style: textarea
|
|
300
|
+
}
|
|
301
|
+
),
|
|
302
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { id: `diary-${field}-hint`, style: hint, children: description })
|
|
303
|
+
] });
|
|
304
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { "data-diary-settings": true, style: { color: "var(--dsw-alias-label-primary)", paddingBottom: 16 }, children: [
|
|
305
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", { style: { fontSize: 18, margin: "0 0 8px" }, children: "\u966A\u4F34\u65E5\u8BB0" }),
|
|
306
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { style: hint, children: "\u8BBE\u7F6E\u767E\u70BC\u8FDE\u63A5\u3001\u56DE\u5FC6\u6A21\u578B\u4E0E\u65E5\u8BB0\u538B\u7F29\u65B9\u5F0F\u3002\u586B\u5199\u540E\u70B9\u51FB\u4FDD\u5B58\u3002" }),
|
|
307
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_dsh_client_ui_primitives2.SettingsForm, { state, onSave: props.save, onDiscard: props.discard, labels: {
|
|
308
|
+
unavailable: "\u6B63\u5728\u52A0\u8F7D\u914D\u7F6E\uFF1B\u82E5\u6301\u7EED\u4E0D\u53EF\u7528\uFF0C\u8BF7\u68C0\u67E5\u966A\u4F34\u65E5\u8BB0\u63D2\u4EF6\u662F\u5426\u5DF2\u542F\u7528\u3002",
|
|
309
|
+
readOnly: "\u5F53\u524D\u914D\u7F6E\u53EA\u8BFB\u3002",
|
|
310
|
+
saveFailed: "\u4FDD\u5B58\u5931\u8D25\u6216\u914D\u7F6E\u5DF2\u5728\u5176\u4ED6\u7A97\u53E3\u4FEE\u6539\u3002\u8F93\u5165\u5DF2\u4FDD\u7559\uFF0C\u8BF7\u68C0\u67E5\u540E\u91CD\u8BD5\u3002",
|
|
311
|
+
save: "\u4FDD\u5B58\u914D\u7F6E",
|
|
312
|
+
saving: "\u6B63\u5728\u4FDD\u5B58\u2026"
|
|
313
|
+
}, children: [
|
|
314
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Group, { title: "\u6307\u5B9A\u5DF2\u6709\u4F1A\u8BDD", children: [
|
|
315
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { style: hint, children: "\u52FE\u9009\u540E\u4FDD\u5B58\uFF0C\u5728\u539F\u4F1A\u8BDD\u7EE7\u7EED\u804A\u5929\u5373\u53EF\u3002\u4FDD\u7559\u539F\u4EBA\u8BBE\u3001\u6A21\u578B\u4E0E\u5DE5\u5177\uFF1B\u672A\u9009\u4F1A\u8BDD\u4FDD\u6301\u539F\u6765\u7684\u538B\u7F29\u65B9\u5F0F\u3002\u201C\u966A\u4F34\u65E5\u8BB0\u201D\u9884\u8BBE\u672C\u8EAB\u5DF2\u542F\u7528\u8BB0\u5FC6\u3002" }),
|
|
316
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("label", { htmlFor: "diary-session-filter", style: { display: "block", fontSize: 13, marginTop: 12 }, children: "\u67E5\u627E\u4F1A\u8BDD" }),
|
|
317
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
318
|
+
"input",
|
|
319
|
+
{
|
|
320
|
+
id: "diary-session-filter",
|
|
321
|
+
type: "search",
|
|
322
|
+
value: sessionFilter,
|
|
323
|
+
onChange: (event) => setSessionFilter(event.target.value),
|
|
324
|
+
placeholder: "\u6309\u4F1A\u8BDD\u6807\u9898\u6216 ID \u641C\u7D22",
|
|
325
|
+
style: { ...textarea, minHeight: 0, height: 36, marginTop: 6 }
|
|
326
|
+
}
|
|
327
|
+
),
|
|
328
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { "aria-label": "\u5DF2\u6709\u4F1A\u8BDD\u5217\u8868", style: { maxHeight: 300, overflowY: "auto", marginTop: 10 }, children: [
|
|
329
|
+
sessions.map((item) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { display: "flex", gap: 12, alignItems: "center", padding: "10px 0", borderBottom: "1px solid var(--dsw-alias-border-l2)" }, children: [
|
|
330
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { minWidth: 0, flex: 1 }, children: [
|
|
331
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { style: { fontSize: 13, overflowWrap: "anywhere" }, children: item.title }),
|
|
332
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { style: { ...hint, margin: 0, overflowWrap: "anywhere" }, children: item.id })
|
|
333
|
+
] }),
|
|
334
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_dsh_client_ui_primitives2.Switch, { label: `\u4E3A ${item.title} \u542F\u7528\u8BB0\u5FC6`, checked: state.selectedSessions.includes(item.id), disabled, onChange: (value) => props.toggleSession(item.id, value) })
|
|
335
|
+
] }, item.id)),
|
|
336
|
+
!sessions.length ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { style: hint, children: state.sessionsReady ? "\u6CA1\u6709\u5339\u914D\u7684\u4F1A\u8BDD\u3002" : "\u6B63\u5728\u8BFB\u53D6\u4F1A\u8BDD\u5217\u8868\u2026" }) : null
|
|
337
|
+
] }),
|
|
338
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", { style: hint, children: [
|
|
339
|
+
"\u5DF2\u9009 ",
|
|
340
|
+
state.selectedSessions.length,
|
|
341
|
+
" \u4E2A\u4F1A\u8BDD\u3002\u540C\u4E00\u8BB0\u5FC6\u7A7A\u95F4\u4E2D\u7684\u5DF2\u9009\u4F1A\u8BDD\u5171\u4EAB\u65E5\u8BB0\uFF1B\u53D6\u6D88\u52FE\u9009\u4E0D\u4F1A\u5220\u9664\u5DF2\u4FDD\u5B58\u7684\u8BB0\u5FC6\u3002"
|
|
342
|
+
] }),
|
|
343
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", { type: "button", onClick: props.refreshChoices, disabled: state.saving, style: { marginTop: 10 }, children: "\u5237\u65B0\u4F1A\u8BDD\u4E0E\u6A21\u578B\u5217\u8868" })
|
|
344
|
+
] }),
|
|
345
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Group, { title: "\u4E13\u7528\u5199\u65E5\u8BB0\u6A21\u578B", children: [
|
|
346
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("label", { htmlFor: "diary-writer", style: { display: "block", fontSize: 13, marginBottom: 6 }, children: "\u9009\u62E9\u5DF2\u914D\u7F6E\u7684 DSH \u6A21\u578B" }),
|
|
347
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("select", { id: "diary-writer", value: writer, disabled, onChange: (event) => props.chooseWriter(event.target.value), style: { ...textarea, minHeight: 0, height: 40, padding: "0 10px", fontFamily: "inherit" }, children: [
|
|
348
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("option", { value: "", children: "\u8DDF\u968F\u5F53\u524D\u4F1A\u8BDD\u7684\u804A\u5929\u6A21\u578B" }),
|
|
349
|
+
writer && !state.writers.some((item) => JSON.stringify([item.provider, item.model]) === writer) ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("option", { value: writer, children: [
|
|
350
|
+
"\u5F53\u524D\u624B\u586B\u6A21\u578B\uFF1A",
|
|
351
|
+
state.fields.diaryProvider.text,
|
|
352
|
+
" / ",
|
|
353
|
+
state.fields.diaryModel.text
|
|
354
|
+
] }) : null,
|
|
355
|
+
state.writers.map((item) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("option", { value: JSON.stringify([item.provider, item.model]), children: item.label }, JSON.stringify([item.provider, item.model])))
|
|
356
|
+
] }),
|
|
357
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { style: hint, children: "\u4E13\u7528\u6A21\u578B\u53EA\u8D1F\u8D23\u5199\u65E5\u8BB0\uFF0C\u4E0D\u6539\u53D8\u804A\u5929\u6A21\u578B\u3002\u5148\u5728 DSH \u7684\u6A21\u578B\u8BBE\u7F6E\u91CC\u914D\u7F6E\u63D0\u4F9B\u65B9\uFF0C\u4E5F\u53EF\u4EE5\u5728\u4E0B\u9762\u624B\u586B\u5176\u8DEF\u7531\u540D\u4E0E\u6A21\u578B\u540D\u3002" }),
|
|
358
|
+
state.modelsStatus === "error" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { style: hint, children: "\u6A21\u578B\u5217\u8868\u6682\u4E0D\u53EF\u7528\uFF0C\u5DF2\u4FDD\u5B58\u7684\u6A21\u578B\u4ECD\u4FDD\u7559\uFF0C\u53EF\u624B\u586B\u6216\u5237\u65B0\u91CD\u8BD5\u3002" }) : null,
|
|
359
|
+
valueField("diaryProvider", "\u5199\u65E5\u8BB0\u7684\u6A21\u578B\u63D0\u4F9B\u65B9", "\u586B\u5199 DSH \u5DF2\u6CE8\u518C\u7684 provider \u8DEF\u7531\u540D\uFF1B\u4E0E\u6A21\u578B\u540D\u540C\u65F6\u7559\u7A7A\u5219\u8DDF\u968F\u804A\u5929\u6A21\u578B\u3002"),
|
|
360
|
+
valueField("diaryModel", "\u5199\u65E5\u8BB0\u7684\u6A21\u578B\u540D", "\u586B\u5199\u8BE5\u63D0\u4F9B\u65B9\u652F\u6301\u7684\u751F\u6210\u6A21\u578B\u3002\u8FD9\u91CC\u53EA\u8BBE\u7F6E\u6A21\u578B\uFF0C\u4E0D\u589E\u52A0\u751F\u6210\u53C2\u6570\u3002")
|
|
361
|
+
] }),
|
|
362
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Group, { title: "\u767E\u70BC\u8FDE\u63A5", children: [
|
|
363
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
364
|
+
import_dsh_client_ui_primitives2.SettingsSecretField,
|
|
365
|
+
{
|
|
366
|
+
id: "diary-apiKey",
|
|
367
|
+
label: "\u767E\u70BC API Key",
|
|
368
|
+
hint: "\u5BC6\u94A5\u4E0D\u4F1A\u56DE\u663E\uFF1B\u7559\u7A7A\u4FDD\u7559\u5DF2\u4FDD\u5B58\u7684 Key\u3002\u4E5F\u53EF\u901A\u8FC7 DSH \u7684\u73AF\u5883\u53D8\u91CF\u63D0\u4F9B\u3002",
|
|
369
|
+
text: state.fields.apiKey.text,
|
|
370
|
+
configured: state.keyConfigured,
|
|
371
|
+
stateLabel: state.keyConfigured ? "\u5DF2\u4FDD\u5B58\uFF08\u4E0D\u56DE\u663E\uFF09" : "\u5C1A\u672A\u4FDD\u5B58",
|
|
372
|
+
disabled,
|
|
373
|
+
onEdit: (text) => props.edit("apiKey", text)
|
|
374
|
+
}
|
|
375
|
+
),
|
|
376
|
+
valueField("baseUrl", "\u767E\u70BC API \u5730\u5740", "\u9700\u8981\u4E0E API Key \u7684\u5730\u57DF\u4E00\u81F4\uFF0C\u4F8B\u5982 https://dashscope.aliyuncs.com\u3002")
|
|
377
|
+
] }),
|
|
378
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Group, { title: "Embedding \xB7 \u5411\u91CF\u53EC\u56DE", children: [
|
|
379
|
+
valueField("embeddingModel", "Embedding \u6A21\u578B\u540D", "\u53EF\u624B\u52A8\u586B\u5199\u767E\u70BC\u652F\u6301\u7684\u6587\u672C\u5411\u91CF\u6A21\u578B\uFF0C\u4F8B\u5982 text-embedding-v4\u3002"),
|
|
380
|
+
valueField("embeddingDimensions", "\u5411\u91CF\u7EF4\u5EA6", "1\u20134096\uFF1B\u8BF7\u586B\u5199\u6240\u9009\u6A21\u578B\u652F\u6301\u7684\u7EF4\u5EA6\u3002", true),
|
|
381
|
+
parameters("embeddingParameters", '\u586B\u5199\u8BE5\u6A21\u578B\u652F\u6301\u7684 parameters\uFF0C\u4F8B\u5982 {"output_type":"dense"}\u3002dimension \u5728\u4E0A\u65B9\u586B\u5199\uFF0Ctext_type \u7531\u5165\u5E93\u4E0E\u53EC\u56DE\u81EA\u52A8\u8BBE\u7F6E\u3002'),
|
|
382
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { style: hint, children: "\u66F4\u6539 Embedding \u6A21\u578B\u3001\u7EF4\u5EA6\u6216\u53C2\u6570\u540E\uFF0C\u65E7\u5411\u91CF\u4E0D\u4F1A\u53C2\u4E0E\u65B0\u914D\u7F6E\u7684\u68C0\u7D22\u3002" })
|
|
383
|
+
] }),
|
|
384
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Group, { title: "Rerank \xB7 \u56DE\u5FC6\u6392\u5E8F", children: [
|
|
385
|
+
valueField("rerankModel", "Rerank \u6A21\u578B\u540D", "\u53EF\u624B\u52A8\u586B\u5199\u767E\u70BC\u652F\u6301\u7684\u91CD\u6392\u6A21\u578B\uFF0C\u4F8B\u5982 gte-rerank-v2\u3002"),
|
|
386
|
+
valueField("candidateCount", "\u5019\u9009\u6570\u91CF", "1\u2013100\uFF1B\u5148\u7531\u5411\u91CF\u68C0\u7D22\u9009\u51FA\u8FD9\u4E9B\u65E5\u8BB0\u4EA4\u7ED9 Rerank\u3002", true),
|
|
387
|
+
valueField("recallCount", "\u53EC\u56DE\u6761\u6570\uFF08top_n\uFF09", "1\u2013100\uFF0C\u4E14\u4E0D\u5927\u4E8E\u5019\u9009\u6570\u91CF\u3002", true),
|
|
388
|
+
parameters("rerankParameters", '\u586B\u5199\u8BE5\u6A21\u578B\u652F\u6301\u7684 parameters\uFF0C\u4F8B\u5982 {"return_documents":false}\u3002top_n \u7531\u4E0A\u65B9\u7684\u53EC\u56DE\u6761\u6570\u8BBE\u7F6E\u3002')
|
|
389
|
+
] }),
|
|
390
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Group, { title: "\u65E5\u8BB0\u4E0E\u966A\u4F34", children: [
|
|
391
|
+
valueField("compressionRounds", "\u89E6\u53D1\u538B\u7F29\u7684\u8F6E\u6B21", "\u5B8C\u6210\u591A\u5C11\u8F6E\u540E\u4FDD\u5B58\u65E5\u8BB0\u5E76\u5B89\u5168\u538B\u7F29\uFF1B\u987B\u5927\u4E8E\u4FDD\u7559\u8F6E\u6B21\u3002", true),
|
|
392
|
+
valueField("retainRounds", "\u4FDD\u7559\u6700\u8FD1\u8F6E\u6B21", "\u81F3\u5C11\u4FDD\u7559\u6700\u8FD1\u591A\u5C11\u4E2A\u7528\u6237\u8F93\u5165\u53CA\u540E\u7EED\u6D88\u606F\u3002", true),
|
|
393
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { display: "flex", gap: 10, justifyContent: "space-between", alignItems: "center", padding: "12px 0", fontSize: 13 }, children: [
|
|
394
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "\u81EA\u52A8\u56DE\u60F3\u76F8\u5173\u65E5\u8BB0" }),
|
|
395
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
396
|
+
import_dsh_client_ui_primitives2.Switch,
|
|
397
|
+
{
|
|
398
|
+
label: "\u81EA\u52A8\u56DE\u60F3\u76F8\u5173\u65E5\u8BB0",
|
|
399
|
+
checked: state.fields.autoRecall.text === "true",
|
|
400
|
+
disabled,
|
|
401
|
+
onChange: (value) => props.edit("autoRecall", String(value))
|
|
402
|
+
}
|
|
403
|
+
)
|
|
404
|
+
] })
|
|
405
|
+
] }),
|
|
406
|
+
state.error ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { role: "alert", style: { ...hint, color: "var(--dsw-alias-label-error)" }, children: state.error }) : null
|
|
407
|
+
] })
|
|
408
|
+
] });
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
// src/client/index.ts
|
|
412
|
+
var inject = ["slots", "configForms", "sessions", "remote", "remote.session"];
|
|
413
|
+
function apply(ctx) {
|
|
414
|
+
const sessions = ctx.get("sessions");
|
|
415
|
+
const choices = new DiaryChoices(sessions.list, () => ctx.remote.session.modelCatalog(), () => sessions.refresh());
|
|
416
|
+
const controller = new DiarySettingsController(ctx.configForms.get("diary-memory"), () => {
|
|
417
|
+
const entry = ctx.configForms.describe().getSnapshot().view?.namespaces.find((item) => item.ns === "diary-memory");
|
|
418
|
+
return entry?.secrets?.some((item) => item.path.length === 1 && item.path[0] === "apiKey" && item.set) ?? false;
|
|
419
|
+
}, choices);
|
|
420
|
+
ctx.effect(() => () => controller.dispose(), "diary-memory: settings form");
|
|
421
|
+
ctx.effect(() => ctx.configForms.whileServed(["diary-memory"], () => ctx.slots.inject("settings.section", () => ctx.slots.register({
|
|
422
|
+
name: "settings.section",
|
|
423
|
+
id: "diary-memory",
|
|
424
|
+
order: 65,
|
|
425
|
+
label: "\u966A\u4F34\u65E5\u8BB0",
|
|
426
|
+
inject: () => controller.inject()
|
|
427
|
+
}, DiarySettingsPage))), "diary-memory: settings page");
|
|
428
|
+
}
|
|
429
|
+
return module.exports; } });
|
|
430
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/client/index.ts", "../src/client/controller.ts", "../src/model-parameters.ts", "../src/session-selection.ts", "../src/client/choices.ts", "../src/client/page.tsx"],
|
|
4
|
+
"sourcesContent": ["import type { Context } from '@deepseek-ai/cordis'\nimport type {} from '@deepseek-ai/dsh-client-ui-settings/client'\nimport type {} from '@deepseek-ai/dsh-client-ui-renderer/client'\nimport { DiarySettingsController } from './controller.js'\nimport type { FormValues } from './controller.js'\nimport { DiarySettingsPage } from './page.js'\nimport { DiaryChoices } from './choices.js'\nimport type { ISessions } from '@deepseek-ai/dsh-api-session-controller/client'\nimport type {} from '@deepseek-ai/dsh-api-remotes/client'\n\nexport { DiarySettingsController } from './controller.js'\nexport { DiarySettingsPage } from './page.js'\nexport const inject = ['slots', 'configForms', 'sessions', 'remote', 'remote.session']\n\nexport function apply(ctx: Context): void {\n const sessions = ctx.get('sessions') as unknown as ISessions\n const choices = new DiaryChoices(sessions.list, () => ctx.remote.session.modelCatalog(), () => sessions.refresh())\n const controller = new DiarySettingsController(ctx.configForms.get<FormValues>('diary-memory'), () => {\n const entry = ctx.configForms.describe().getSnapshot().view?.namespaces.find(item => item.ns === 'diary-memory')\n return entry?.secrets?.some(item => item.path.length === 1 && item.path[0] === 'apiKey' && item.set) ?? false\n }, choices)\n ctx.effect(() => () => controller.dispose(), 'diary-memory: settings form')\n ctx.effect(() => ctx.configForms.whileServed(['diary-memory'], () => ctx.slots.inject('settings.section', () => ctx.slots.register({\n name: 'settings.section', id: 'diary-memory', order: 65, label: '\u966A\u4F34\u65E5\u8BB0', inject: () => controller.inject(),\n }, DiarySettingsPage))), 'diary-memory: settings page')\n}\n", "import { SettingsFormModel, settingsTextField } from '@deepseek-ai/dsh-client-ui-primitives'\nimport type { SettingsFieldSpec, SettingsFieldState, SettingsFormScope, SettingsFormShell } from '@deepseek-ai/dsh-client-ui-primitives'\nimport type { SnapshotStore } from '@deepseek-ai/dsh-client-store'\nimport type { DiaryConfig } from '../config.js'\nimport { validateModelParameters } from '../model-parameters.js'\nimport { validateSessionIds } from '../session-selection.js'\nimport { DiaryChoices } from './choices.js'\nimport type { ChoicesState } from './choices.js'\n\nexport const editableFields = ['apiKey', 'baseUrl', 'embeddingModel', 'embeddingDimensions', 'embeddingParameters', 'rerankModel', 'rerankParameters', 'candidateCount', 'recallCount', 'compressionRounds', 'retainRounds', 'autoRecall', 'sessionIds', 'diaryProvider', 'diaryModel'] as const\nexport type EditableField = typeof editableFields[number]\nexport type FormValues = Partial<Pick<DiaryConfig, EditableField>>\nexport interface DiarySettingsState extends SettingsFormShell, ChoicesState {\n fields: Record<EditableField, SettingsFieldState>\n keyConfigured: boolean\n error: string | null\n selectedSessions: string[]\n}\n\nfunction numberField(field: string, min: number, max: number): SettingsFieldSpec {\n return {\n field, format: value => typeof value === 'number' ? String(value) : '',\n parse: text => !text.trim() ? { kind: 'clear' }\n : Number.isSafeInteger(Number(text)) && Number(text) >= min && Number(text) <= max ? { kind: 'set', value: Number(text) } : undefined,\n }\n}\nfunction parametersField(field: string, kind: 'embedding' | 'rerank'): SettingsFieldSpec {\n return {\n field, format: value => value && typeof value === 'object' ? JSON.stringify(value, null, 2) : '{}',\n parse: text => {\n if (!text.trim()) return { kind: 'clear' }\n try { return { kind: 'set', value: validateModelParameters(JSON.parse(text), kind) } } catch { return undefined }\n },\n }\n}\nconst specs: SettingsFieldSpec[] = [\n ...['apiKey', 'baseUrl', 'embeddingModel', 'rerankModel', 'diaryProvider', 'diaryModel'].map(settingsTextField),\n { field: 'sessionIds', format: value => JSON.stringify(value ?? []), parse: text => {\n try { return { kind: 'set', value: validateSessionIds(JSON.parse(text || '[]')) } } catch { return undefined }\n } },\n numberField('embeddingDimensions', 1, 4096), numberField('candidateCount', 1, 100), numberField('recallCount', 1, 100),\n numberField('compressionRounds', 2, 1000000), numberField('retainRounds', 1, 1000000),\n parametersField('embeddingParameters', 'embedding'), parametersField('rerankParameters', 'rerank'),\n { field: 'autoRecall', format: value => String(value ?? true), parse: text => text === 'true' || text === 'false' ? { kind: 'set', value: text === 'true' } : undefined },\n]\n\n/** Native staged form: only edited paths are sent, preserving undisclosed secrets. */\nexport class DiarySettingsController {\n readonly form: SettingsFormModel<FormValues>\n readonly store: SnapshotStore<DiarySettingsState>\n private readonly unsubscribeChoices: () => void\n\n constructor(private readonly scope: SettingsFormScope<FormValues>, private readonly keyConfigured: () => boolean = () => false, readonly choices = new DiaryChoices()) {\n this.form = new SettingsFormModel(scope, specs)\n this.store = this.form.bind(() => this.projection())\n this.unsubscribeChoices = choices.store.subscribe(() => this.store.set(this.projection()))\n }\n\n private projection(): DiarySettingsState {\n const fields = Object.fromEntries(editableFields.map(field => [field, this.form.field(field)])) as DiarySettingsState['fields']\n const base = this.scope.getSnapshot().base as FormValues | undefined\n const number = (field: 'compressionRounds' | 'retainRounds' | 'recallCount' | 'candidateCount', fallback: number) => fields[field].text.trim() ? Number(fields[field].text) : base?.[field] ?? fallback\n let error: string | null = null\n let selectedSessions: string[] = []\n try { selectedSessions = validateSessionIds(JSON.parse(fields.sessionIds.text || '[]')) } catch (failure) { error = (failure as Error).message }\n const writerProvider = fields.diaryProvider.text.trim()\n const writerModel = fields.diaryModel.text.trim()\n if (Boolean(writerProvider) !== Boolean(writerModel)) error = '\u5199\u65E5\u8BB0\u7684\u6A21\u578B\u63D0\u4F9B\u65B9\u4E0E\u6A21\u578B\u540D\u5FC5\u987B\u540C\u65F6\u586B\u5199\uFF0C\u6216\u540C\u65F6\u7559\u7A7A\u8DDF\u968F\u804A\u5929\u6A21\u578B\u3002'\n if (writerProvider.length > 200 || writerModel.length > 200) error = '\u5199\u65E5\u8BB0\u7684\u63D0\u4F9B\u65B9\u4E0E\u6A21\u578B\u540D\u4E0D\u80FD\u8D85\u8FC7 200 \u5B57\u7B26\u3002'\n if (number('compressionRounds', 20) <= number('retainRounds', 2)) error = '\u538B\u7F29\u8F6E\u6B21\u5FC5\u987B\u5927\u4E8E\u4FDD\u7559\u8F6E\u6B21\u3002'\n if (number('recallCount', 6) > number('candidateCount', 30)) error = '\u53EC\u56DE\u6761\u6570\u4E0D\u80FD\u5927\u4E8E\u5019\u9009\u6570\u91CF\u3002'\n for (const kind of ['embedding', 'rerank'] as const) {\n const text = fields[`${kind}Parameters`].text.trim()\n try { validateModelParameters(JSON.parse(text || '{}'), kind) }\n catch (failure) { error = failure instanceof SyntaxError ? `${kind} \u53C2\u6570\u9700\u8981\u5408\u6CD5\u7684 JSON \u5BF9\u8C61\u3002` : (failure as Error).message }\n }\n const endpoint = fields.baseUrl.text.trim()\n try {\n if (endpoint) {\n const url = new URL(endpoint)\n if (url.username || url.password || url.search || url.hash || url.pathname !== '/' || url.protocol !== 'https:' && !(url.protocol === 'http:' && ['localhost', '127.0.0.1', '[::1]'].includes(url.hostname))) throw new Error()\n }\n } catch { fields.baseUrl.invalid = true; error = '\u767E\u70BC\u7AEF\u70B9\u9700\u8981 HTTPS origin\uFF0C\u4F8B\u5982 https://dashscope.aliyuncs.com\u3002' }\n for (const field of ['embeddingModel', 'rerankModel'] as const) {\n if (fields[field].text.trim().length > 200) { fields[field].invalid = true; error = '\u6A21\u578B\u540D\u4E0D\u80FD\u8D85\u8FC7 200 \u5B57\u7B26\u3002' }\n }\n const shell = this.form.shell()\n return { ...shell, ...this.choices.store.getSnapshot(), selectedSessions, invalid: shell.invalid || Boolean(error) || !shell.writable, fields, keyConfigured: this.keyConfigured(), error }\n }\n\n async save(): Promise<void> { if (!this.projection().invalid) await this.form.save() }\n inject() {\n return {\n hooks: { diarySettings: this.store }, ...this.form.actions(), save: () => { void this.save() },\n toggleSession: (id: string, enabled: boolean) => {\n const ids = this.projection().selectedSessions\n this.form.actions().edit('sessionIds', JSON.stringify(enabled ? validateSessionIds([...ids, id]) : ids.filter(item => item !== id)))\n },\n chooseWriter: (selection: string) => {\n const [provider, model] = selection ? JSON.parse(selection) as [string, string] : ['', '']\n this.form.actions().edit('diaryProvider', provider)\n this.form.actions().edit('diaryModel', model)\n },\n refreshChoices: () => { void this.choices.refresh() },\n }\n }\n dispose(): void { this.unsubscribeChoices(); this.choices.dispose(); this.form.dispose() }\n}\n", "export type JsonValue = null | boolean | number | string | JsonValue[] | { [key: string]: JsonValue }\nexport type ModelParameters = Readonly<Record<string, JsonValue>>\n\n/** Shared by the native configuration reader and the browser parameter editors. */\nexport function validateModelParameters(value: unknown, kind: 'embedding' | 'rerank'): ModelParameters {\n if (!value || typeof value !== 'object' || Array.isArray(value) || ![Object.prototype, null].includes(Object.getPrototypeOf(value))) throw new Error(`${kind} \u53C2\u6570\u5FC5\u987B\u4E3A JSON \u5BF9\u8C61`)\n const visit = (item: unknown, depth = 0): JsonValue => {\n if (depth > 16) throw new Error(`${kind} \u53C2\u6570\u5D4C\u5957\u8FC7\u6DF1`)\n if (item === null || typeof item === 'boolean' || typeof item === 'string') return item\n if (typeof item === 'number' && Number.isFinite(item)) return item\n if (Array.isArray(item)) return Object.freeze(item.map(child => visit(child, depth + 1))) as unknown as JsonValue[]\n if (item && typeof item === 'object' && [Object.prototype, null].includes(Object.getPrototypeOf(item))) {\n return Object.freeze(Object.fromEntries(Object.entries(item).map(([key, child]) => [key, visit(child, depth + 1)])))\n }\n throw new Error(`${kind} \u53C2\u6570\u53EA\u80FD\u5305\u542B JSON \u503C`)\n }\n const parameters = visit(value) as ModelParameters\n if (JSON.stringify(parameters).length > 16000) throw new Error(`${kind} \u53C2\u6570\u4E0D\u80FD\u8D85\u8FC7 16000 \u5B57\u7B26`)\n const reserved = kind === 'embedding' ? ['dimension', 'text_type'] : ['top_n']\n if (reserved.some(key => Object.hasOwn(parameters, key))) throw new Error(kind === 'embedding'\n ? 'dimension \u8BF7\u5728\u5411\u91CF\u7EF4\u5EA6\u4E2D\u586B\u5199\uFF1Btext_type \u7531\u5165\u5E93\u548C\u53EC\u56DE\u81EA\u52A8\u8BBE\u7F6E'\n : 'top_n \u8BF7\u5728\u53EC\u56DE\u6761\u6570\u4E2D\u586B\u5199')\n if (kind === 'embedding' && parameters.output_type !== undefined && parameters.output_type !== 'dense') throw new Error('\u672C\u5730\u5411\u91CF\u68C0\u7D22\u9700\u8981 dense \u5411\u91CF\uFF0Coutput_type \u4EC5\u652F\u6301 dense')\n if (kind === 'rerank' && parameters.return_documents !== undefined && typeof parameters.return_documents !== 'boolean') throw new Error('return_documents \u5FC5\u987B\u662F\u5E03\u5C14\u503C')\n return parameters\n}\n\nexport function stableParameters(value: ModelParameters): string {\n const ordered = (item: JsonValue): JsonValue => Array.isArray(item) ? item.map(ordered)\n : item !== null && typeof item === 'object' ? Object.fromEntries(Object.keys(item).sort().map(key => [key, ordered(item[key])])) : item\n return JSON.stringify(ordered(value as JsonValue))\n}\n", "export function validateSessionIds(value: unknown): string[] {\n if (!Array.isArray(value) || value.length > 1000 || value.some(id => typeof id !== 'string' || !id.length || id.length > 256 || /[\\r\\n\\0]/.test(id))) throw new Error('\u6307\u5B9A\u4F1A\u8BDD\u5FC5\u987B\u662F\u81F3\u591A 1000 \u4E2A\u6709\u6548\u4F1A\u8BDD ID \u7684\u6570\u7EC4')\n return [...new Set(value as string[])]\n}\n", "import { createSnapshotStore } from '@deepseek-ai/dsh-client-store'\nimport type { ObservableSnapshot } from '@deepseek-ai/dsh-client-store'\n\nexport interface SessionChoice { id: string; title: string }\nexport interface WriterChoice { provider: string; model: string; label: string }\nexport interface ChoicesState {\n sessions: SessionChoice[]\n sessionsReady: boolean\n writers: WriterChoice[]\n modelsStatus: 'loading' | 'ready' | 'error'\n}\nexport interface SessionCatalog {\n phase: string\n ids: readonly string[]\n byId: Record<string, { id: string; displayTitle: string; origin?: string }>\n}\nexport interface ModelCatalogResult {\n ok: boolean\n value?: { groups: readonly { id: string; name: string; models: readonly { id: string; name: string }[] }[] }\n}\n\n/** Read only the native metadata catalog; never open or upload conversation bodies. */\nexport class DiaryChoices {\n readonly store = createSnapshotStore<ChoicesState>({ sessions: [], sessionsReady: false, writers: [], modelsStatus: 'loading' })\n private readonly unsubscribe?: () => void\n private generation = 0\n private disposed = false\n\n constructor(private readonly catalog?: ObservableSnapshot<SessionCatalog>, private readonly loadModels?: () => Promise<ModelCatalogResult>, private readonly refreshSessions?: () => Promise<void>) {\n this.unsubscribe = catalog?.subscribe(() => this.readSessions())\n this.readSessions()\n void this.refreshModels()\n }\n\n private readSessions(): void {\n const value = this.catalog?.getSnapshot()\n this.store.update(state => {\n state.sessionsReady = value?.phase === 'ready'\n state.sessions = value ? value.ids.flatMap(id => {\n const row = value.byId[id]\n return row && row.origin !== 'subagent' ? [{ id, title: row.displayTitle }] : []\n }) : []\n })\n }\n\n async refreshModels(): Promise<void> {\n const generation = ++this.generation\n this.store.update(state => { state.modelsStatus = 'loading' })\n try {\n const response = await this.loadModels?.()\n if (this.disposed || generation !== this.generation) return\n this.store.update(state => {\n state.writers = response?.ok && response.value ? response.value.groups.flatMap(group => group.models.map(model => ({ provider: group.id, model: model.id, label: `${group.name} / ${model.name}` }))) : []\n state.modelsStatus = response?.ok ? 'ready' : 'error'\n })\n } catch {\n if (!this.disposed && generation === this.generation) this.store.update(state => { state.modelsStatus = 'error' })\n }\n }\n\n async refresh(): Promise<void> {\n await Promise.allSettled([this.refreshSessions?.(), this.refreshModels()])\n }\n\n dispose(): void { this.disposed = true; this.generation++; this.unsubscribe?.() }\n}\n", "import { SettingsForm, SettingsSecretField, SettingsValueField, Switch } from '@deepseek-ai/dsh-client-ui-primitives'\nimport type { CSSProperties, ReactNode } from 'react'\nimport { useState } from 'react'\nimport type { InjectFace } from '@deepseek-ai/dsh-client-ui-slots'\nimport type { DiarySettingsController, EditableField } from './controller.js'\n\ntype PageProps = InjectFace<ReturnType<DiarySettingsController['inject']>>\nconst card: CSSProperties = { border: '1px solid var(--dsw-alias-border-l2)', borderRadius: 14, padding: '16px 20px', marginTop: 16, minWidth: 0 }\nconst hint: CSSProperties = { fontSize: 12, lineHeight: 1.6, color: 'var(--dsw-alias-label-tertiary)', margin: '8px 0 0' }\nconst textarea: CSSProperties = { display: 'block', width: '100%', boxSizing: 'border-box', minHeight: 110, padding: 12, borderRadius: 8, border: '1px solid var(--dsw-alias-border-l2)', background: 'var(--dsw-alias-bg-layer-3)', color: 'var(--dsw-alias-label-primary)', fontFamily: 'var(--dsw-font-mono, monospace)', fontSize: 12, lineHeight: 1.6, resize: 'vertical' }\n\nfunction Group({ title, children }: { title: string; children: ReactNode }) {\n return <section aria-label={title} style={card}><h3 style={{ fontSize: 14, margin: '0 0 8px' }}>{title}</h3>{children}</section>\n}\n\nexport function DiarySettingsPage(props: PageProps) {\n const state = props.useDiarySettings(value => value)\n const disabled = !state.writable || state.saving\n const [sessionFilter, setSessionFilter] = useState('')\n const sessions = [...state.sessions, ...state.selectedSessions.filter(id => !state.sessions.some(item => item.id === id)).map(id => ({ id, title: '\u5DF2\u9009\u4F1A\u8BDD\uFF08\u4E0D\u5728\u5F53\u524D\u5217\u8868\uFF09' }))]\n .filter(item => `${item.title}\\n${item.id}`.toLowerCase().includes(sessionFilter.toLowerCase()))\n const writer = state.fields.diaryProvider.text && state.fields.diaryModel.text ? JSON.stringify([state.fields.diaryProvider.text, state.fields.diaryModel.text]) : ''\n const valueField = (field: EditableField, label: string, description: string, numeric = false) => <SettingsValueField\n key={field} id={`diary-${field}`} label={label} hint={description} numeric={numeric}\n {...state.fields[field]} disabled={disabled} overriddenLabel=\"\u5DF2\u81EA\u5B9A\u4E49\" resetLabel=\"\u6062\u590D\u9ED8\u8BA4\"\n invalidLabel={numeric ? '\u8BF7\u586B\u5199\u8303\u56F4\u5185\u7684\u6574\u6570\u3002' : '\u8BF7\u68C0\u67E5\u586B\u5199\u7684\u5185\u5BB9\u3002'}\n onEdit={text => props.edit(field, text)} onReset={() => props.resetField(field)}\n />\n const parameters = (field: 'embeddingParameters' | 'rerankParameters', description: string) => <div style={{ padding: '12px 0' }}>\n <label htmlFor={`diary-${field}`} style={{ display: 'block', fontSize: 13, fontWeight: 500, marginBottom: 8 }}>\u989D\u5916\u53C2\u6570\uFF08JSON\uFF09</label>\n <textarea id={`diary-${field}`} aria-describedby={`diary-${field}-hint`} aria-invalid={state.fields[field].invalid || undefined}\n value={state.fields[field].text} onChange={event => props.edit(field, event.target.value)} disabled={disabled}\n spellCheck={false} rows={5} style={textarea} />\n <p id={`diary-${field}-hint`} style={hint}>{description}</p>\n </div>\n return <div data-diary-settings style={{ color: 'var(--dsw-alias-label-primary)', paddingBottom: 16 }}>\n <h2 style={{ fontSize: 18, margin: '0 0 8px' }}>\u966A\u4F34\u65E5\u8BB0</h2>\n <p style={hint}>\u8BBE\u7F6E\u767E\u70BC\u8FDE\u63A5\u3001\u56DE\u5FC6\u6A21\u578B\u4E0E\u65E5\u8BB0\u538B\u7F29\u65B9\u5F0F\u3002\u586B\u5199\u540E\u70B9\u51FB\u4FDD\u5B58\u3002</p>\n <SettingsForm state={state} onSave={props.save} onDiscard={props.discard} labels={{\n unavailable: '\u6B63\u5728\u52A0\u8F7D\u914D\u7F6E\uFF1B\u82E5\u6301\u7EED\u4E0D\u53EF\u7528\uFF0C\u8BF7\u68C0\u67E5\u966A\u4F34\u65E5\u8BB0\u63D2\u4EF6\u662F\u5426\u5DF2\u542F\u7528\u3002', readOnly: '\u5F53\u524D\u914D\u7F6E\u53EA\u8BFB\u3002',\n saveFailed: '\u4FDD\u5B58\u5931\u8D25\u6216\u914D\u7F6E\u5DF2\u5728\u5176\u4ED6\u7A97\u53E3\u4FEE\u6539\u3002\u8F93\u5165\u5DF2\u4FDD\u7559\uFF0C\u8BF7\u68C0\u67E5\u540E\u91CD\u8BD5\u3002', save: '\u4FDD\u5B58\u914D\u7F6E', saving: '\u6B63\u5728\u4FDD\u5B58\u2026',\n }}>\n <Group title=\"\u6307\u5B9A\u5DF2\u6709\u4F1A\u8BDD\">\n <p style={hint}>\u52FE\u9009\u540E\u4FDD\u5B58\uFF0C\u5728\u539F\u4F1A\u8BDD\u7EE7\u7EED\u804A\u5929\u5373\u53EF\u3002\u4FDD\u7559\u539F\u4EBA\u8BBE\u3001\u6A21\u578B\u4E0E\u5DE5\u5177\uFF1B\u672A\u9009\u4F1A\u8BDD\u4FDD\u6301\u539F\u6765\u7684\u538B\u7F29\u65B9\u5F0F\u3002\u201C\u966A\u4F34\u65E5\u8BB0\u201D\u9884\u8BBE\u672C\u8EAB\u5DF2\u542F\u7528\u8BB0\u5FC6\u3002</p>\n <label htmlFor=\"diary-session-filter\" style={{ display: 'block', fontSize: 13, marginTop: 12 }}>\u67E5\u627E\u4F1A\u8BDD</label>\n <input id=\"diary-session-filter\" type=\"search\" value={sessionFilter} onChange={event => setSessionFilter(event.target.value)}\n placeholder=\"\u6309\u4F1A\u8BDD\u6807\u9898\u6216 ID \u641C\u7D22\" style={{ ...textarea, minHeight: 0, height: 36, marginTop: 6 }} />\n <div aria-label=\"\u5DF2\u6709\u4F1A\u8BDD\u5217\u8868\" style={{ maxHeight: 300, overflowY: 'auto', marginTop: 10 }}>\n {sessions.map(item => <div key={item.id} style={{ display: 'flex', gap: 12, alignItems: 'center', padding: '10px 0', borderBottom: '1px solid var(--dsw-alias-border-l2)' }}>\n <div style={{ minWidth: 0, flex: 1 }}><div style={{ fontSize: 13, overflowWrap: 'anywhere' }}>{item.title}</div><div style={{ ...hint, margin: 0, overflowWrap: 'anywhere' }}>{item.id}</div></div>\n <Switch label={`\u4E3A ${item.title} \u542F\u7528\u8BB0\u5FC6`} checked={state.selectedSessions.includes(item.id)} disabled={disabled} onChange={value => props.toggleSession(item.id, value)} />\n </div>)}\n {!sessions.length ? <p style={hint}>{state.sessionsReady ? '\u6CA1\u6709\u5339\u914D\u7684\u4F1A\u8BDD\u3002' : '\u6B63\u5728\u8BFB\u53D6\u4F1A\u8BDD\u5217\u8868\u2026'}</p> : null}\n </div>\n <p style={hint}>\u5DF2\u9009 {state.selectedSessions.length} \u4E2A\u4F1A\u8BDD\u3002\u540C\u4E00\u8BB0\u5FC6\u7A7A\u95F4\u4E2D\u7684\u5DF2\u9009\u4F1A\u8BDD\u5171\u4EAB\u65E5\u8BB0\uFF1B\u53D6\u6D88\u52FE\u9009\u4E0D\u4F1A\u5220\u9664\u5DF2\u4FDD\u5B58\u7684\u8BB0\u5FC6\u3002</p>\n <button type=\"button\" onClick={props.refreshChoices} disabled={state.saving} style={{ marginTop: 10 }}>\u5237\u65B0\u4F1A\u8BDD\u4E0E\u6A21\u578B\u5217\u8868</button>\n </Group>\n <Group title=\"\u4E13\u7528\u5199\u65E5\u8BB0\u6A21\u578B\">\n <label htmlFor=\"diary-writer\" style={{ display: 'block', fontSize: 13, marginBottom: 6 }}>\u9009\u62E9\u5DF2\u914D\u7F6E\u7684 DSH \u6A21\u578B</label>\n <select id=\"diary-writer\" value={writer} disabled={disabled} onChange={event => props.chooseWriter(event.target.value)} style={{ ...textarea, minHeight: 0, height: 40, padding: '0 10px', fontFamily: 'inherit' }}>\n <option value=\"\">\u8DDF\u968F\u5F53\u524D\u4F1A\u8BDD\u7684\u804A\u5929\u6A21\u578B</option>\n {writer && !state.writers.some(item => JSON.stringify([item.provider, item.model]) === writer) ? <option value={writer}>\u5F53\u524D\u624B\u586B\u6A21\u578B\uFF1A{state.fields.diaryProvider.text} / {state.fields.diaryModel.text}</option> : null}\n {state.writers.map(item => <option key={JSON.stringify([item.provider, item.model])} value={JSON.stringify([item.provider, item.model])}>{item.label}</option>)}\n </select>\n <p style={hint}>\u4E13\u7528\u6A21\u578B\u53EA\u8D1F\u8D23\u5199\u65E5\u8BB0\uFF0C\u4E0D\u6539\u53D8\u804A\u5929\u6A21\u578B\u3002\u5148\u5728 DSH \u7684\u6A21\u578B\u8BBE\u7F6E\u91CC\u914D\u7F6E\u63D0\u4F9B\u65B9\uFF0C\u4E5F\u53EF\u4EE5\u5728\u4E0B\u9762\u624B\u586B\u5176\u8DEF\u7531\u540D\u4E0E\u6A21\u578B\u540D\u3002</p>\n {state.modelsStatus === 'error' ? <p style={hint}>\u6A21\u578B\u5217\u8868\u6682\u4E0D\u53EF\u7528\uFF0C\u5DF2\u4FDD\u5B58\u7684\u6A21\u578B\u4ECD\u4FDD\u7559\uFF0C\u53EF\u624B\u586B\u6216\u5237\u65B0\u91CD\u8BD5\u3002</p> : null}\n {valueField('diaryProvider', '\u5199\u65E5\u8BB0\u7684\u6A21\u578B\u63D0\u4F9B\u65B9', '\u586B\u5199 DSH \u5DF2\u6CE8\u518C\u7684 provider \u8DEF\u7531\u540D\uFF1B\u4E0E\u6A21\u578B\u540D\u540C\u65F6\u7559\u7A7A\u5219\u8DDF\u968F\u804A\u5929\u6A21\u578B\u3002')}\n {valueField('diaryModel', '\u5199\u65E5\u8BB0\u7684\u6A21\u578B\u540D', '\u586B\u5199\u8BE5\u63D0\u4F9B\u65B9\u652F\u6301\u7684\u751F\u6210\u6A21\u578B\u3002\u8FD9\u91CC\u53EA\u8BBE\u7F6E\u6A21\u578B\uFF0C\u4E0D\u589E\u52A0\u751F\u6210\u53C2\u6570\u3002')}\n </Group>\n <Group title=\"\u767E\u70BC\u8FDE\u63A5\">\n <SettingsSecretField id=\"diary-apiKey\" label=\"\u767E\u70BC API Key\" hint=\"\u5BC6\u94A5\u4E0D\u4F1A\u56DE\u663E\uFF1B\u7559\u7A7A\u4FDD\u7559\u5DF2\u4FDD\u5B58\u7684 Key\u3002\u4E5F\u53EF\u901A\u8FC7 DSH \u7684\u73AF\u5883\u53D8\u91CF\u63D0\u4F9B\u3002\"\n text={state.fields.apiKey.text} configured={state.keyConfigured} stateLabel={state.keyConfigured ? '\u5DF2\u4FDD\u5B58\uFF08\u4E0D\u56DE\u663E\uFF09' : '\u5C1A\u672A\u4FDD\u5B58'}\n disabled={disabled} onEdit={text => props.edit('apiKey', text)} />\n {valueField('baseUrl', '\u767E\u70BC API \u5730\u5740', '\u9700\u8981\u4E0E API Key \u7684\u5730\u57DF\u4E00\u81F4\uFF0C\u4F8B\u5982 https://dashscope.aliyuncs.com\u3002')}\n </Group>\n <Group title=\"Embedding \u00B7 \u5411\u91CF\u53EC\u56DE\">\n {valueField('embeddingModel', 'Embedding \u6A21\u578B\u540D', '\u53EF\u624B\u52A8\u586B\u5199\u767E\u70BC\u652F\u6301\u7684\u6587\u672C\u5411\u91CF\u6A21\u578B\uFF0C\u4F8B\u5982 text-embedding-v4\u3002')}\n {valueField('embeddingDimensions', '\u5411\u91CF\u7EF4\u5EA6', '1\u20134096\uFF1B\u8BF7\u586B\u5199\u6240\u9009\u6A21\u578B\u652F\u6301\u7684\u7EF4\u5EA6\u3002', true)}\n {parameters('embeddingParameters', '\u586B\u5199\u8BE5\u6A21\u578B\u652F\u6301\u7684 parameters\uFF0C\u4F8B\u5982 {\"output_type\":\"dense\"}\u3002dimension \u5728\u4E0A\u65B9\u586B\u5199\uFF0Ctext_type \u7531\u5165\u5E93\u4E0E\u53EC\u56DE\u81EA\u52A8\u8BBE\u7F6E\u3002')}\n <p style={hint}>\u66F4\u6539 Embedding \u6A21\u578B\u3001\u7EF4\u5EA6\u6216\u53C2\u6570\u540E\uFF0C\u65E7\u5411\u91CF\u4E0D\u4F1A\u53C2\u4E0E\u65B0\u914D\u7F6E\u7684\u68C0\u7D22\u3002</p>\n </Group>\n <Group title=\"Rerank \u00B7 \u56DE\u5FC6\u6392\u5E8F\">\n {valueField('rerankModel', 'Rerank \u6A21\u578B\u540D', '\u53EF\u624B\u52A8\u586B\u5199\u767E\u70BC\u652F\u6301\u7684\u91CD\u6392\u6A21\u578B\uFF0C\u4F8B\u5982 gte-rerank-v2\u3002')}\n {valueField('candidateCount', '\u5019\u9009\u6570\u91CF', '1\u2013100\uFF1B\u5148\u7531\u5411\u91CF\u68C0\u7D22\u9009\u51FA\u8FD9\u4E9B\u65E5\u8BB0\u4EA4\u7ED9 Rerank\u3002', true)}\n {valueField('recallCount', '\u53EC\u56DE\u6761\u6570\uFF08top_n\uFF09', '1\u2013100\uFF0C\u4E14\u4E0D\u5927\u4E8E\u5019\u9009\u6570\u91CF\u3002', true)}\n {parameters('rerankParameters', '\u586B\u5199\u8BE5\u6A21\u578B\u652F\u6301\u7684 parameters\uFF0C\u4F8B\u5982 {\"return_documents\":false}\u3002top_n \u7531\u4E0A\u65B9\u7684\u53EC\u56DE\u6761\u6570\u8BBE\u7F6E\u3002')}\n </Group>\n <Group title=\"\u65E5\u8BB0\u4E0E\u966A\u4F34\">\n {valueField('compressionRounds', '\u89E6\u53D1\u538B\u7F29\u7684\u8F6E\u6B21', '\u5B8C\u6210\u591A\u5C11\u8F6E\u540E\u4FDD\u5B58\u65E5\u8BB0\u5E76\u5B89\u5168\u538B\u7F29\uFF1B\u987B\u5927\u4E8E\u4FDD\u7559\u8F6E\u6B21\u3002', true)}\n {valueField('retainRounds', '\u4FDD\u7559\u6700\u8FD1\u8F6E\u6B21', '\u81F3\u5C11\u4FDD\u7559\u6700\u8FD1\u591A\u5C11\u4E2A\u7528\u6237\u8F93\u5165\u53CA\u540E\u7EED\u6D88\u606F\u3002', true)}\n <div style={{ display: 'flex', gap: 10, justifyContent: 'space-between', alignItems: 'center', padding: '12px 0', fontSize: 13 }}>\n <span>\u81EA\u52A8\u56DE\u60F3\u76F8\u5173\u65E5\u8BB0</span>\n <Switch label=\"\u81EA\u52A8\u56DE\u60F3\u76F8\u5173\u65E5\u8BB0\" checked={state.fields.autoRecall.text === 'true'} disabled={disabled}\n onChange={value => props.edit('autoRecall', String(value))} />\n </div>\n </Group>\n {state.error ? <p role=\"alert\" style={{ ...hint, color: 'var(--dsw-alias-label-error)' }}>{state.error}</p> : null}\n </SettingsForm>\n </div>\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_dsh_client_ui_primitives"]
|
|
7
|
+
}
|