dsh-keys-manager 0.0.0 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.js","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"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"}
package/lib/store.d.ts ADDED
@@ -0,0 +1,62 @@
1
+ import type { KeyRecord, ProviderRecord, StateDocument } from './domain.js';
2
+ export declare const STATE_VERSION: 1;
3
+ export declare const STATE_DIRNAME = "keys-manager";
4
+ export declare const STATE_FILENAME = "state.json";
5
+ /** State document plus a non-fatal load diagnostic. */
6
+ export type LoadedState = StateDocument & {
7
+ loadError?: string;
8
+ readOnly?: boolean;
9
+ };
10
+ /** Resolve the durable state directory for the current Harness home. */
11
+ export declare function stateDirectory(env?: NodeJS.ProcessEnv, home?: string): string;
12
+ /** Resolve the complete state file path. */
13
+ export declare function statePath(env?: NodeJS.ProcessEnv, home?: string): string;
14
+ /** Fresh, empty state. */
15
+ export declare function emptyState(): StateDocument;
16
+ /** Sanitize a whole document, dropping anything the current schema cannot express. */
17
+ export declare function sanitizeState(raw: unknown): StateDocument;
18
+ /** Read a state file; only parse corruption is preserved and reset. */
19
+ export declare function readStateFile(file: string): LoadedState;
20
+ export interface KeysManagerStoreOptions {
21
+ warn?: (message: string) => void;
22
+ }
23
+ /** Durable store with a debounced atomic writer. */
24
+ export declare class KeysManagerStore {
25
+ readonly file: string;
26
+ state: StateDocument;
27
+ loadError: string | undefined;
28
+ readonly readOnly: boolean;
29
+ private readonly warn;
30
+ private dirty;
31
+ private timer;
32
+ private writeChain;
33
+ private closed;
34
+ constructor(file: string, options?: KeysManagerStoreOptions);
35
+ get settings(): import("./domain.js").ManagerSettings;
36
+ get providers(): Record<string, ProviderRecord>;
37
+ provider(id: string): ProviderRecord | undefined;
38
+ key(providerId: string, keyId: string): KeyRecord | undefined;
39
+ bind(sessionId: string, providerId: string, keyId: string, now?: number): void;
40
+ binding(sessionId: string, providerId: string): {
41
+ keyId: string;
42
+ boundAt: number;
43
+ } | undefined;
44
+ clearBindings(predicate?: (key: string, binding: {
45
+ keyId: string;
46
+ boundAt: number;
47
+ }) => boolean): void;
48
+ /** Drop session bindings older than the TTL; safe to call periodically. */
49
+ pruneBindings(now?: number): boolean;
50
+ /** Mark state dirty and schedule a write. */
51
+ touch(): void;
52
+ /** Persist pending changes now, serialized after any in-flight write. */
53
+ flush(): Promise<void>;
54
+ /** Stop the timer and persist once. */
55
+ close(): Promise<void>;
56
+ }
57
+ /**
58
+ * Synchronous bootstrap used by a Host plugin before its first request:
59
+ * ensure the directory exists and, when the file is absent, write an empty
60
+ * state once. The regular debounced writer owns later updates.
61
+ */
62
+ export declare function ensureStateFile(file: string): void;
package/lib/store.js ADDED
@@ -0,0 +1,398 @@
1
+ /**
2
+ * Durable, secret-free state for the Keys Manager.
3
+ *
4
+ * The file at `<DSH_HOME>/keys-manager/state.json` holds provider/key
5
+ * metadata only: aliases, refs, health, counters, and session bindings. API
6
+ * key literals live in the Harness credential store under each key's
7
+ * `ref`. The shape is deliberately additive so a future OAuth2 account
8
+ * record can sit beside `kind: 'api-key'` without a migration that rewrites
9
+ * existing rows.
10
+ */
11
+ import { mkdirSync, readFileSync, renameSync, statSync, writeFileSync } from 'node:fs';
12
+ import { chmod, mkdir, rename, writeFile } from 'node:fs/promises';
13
+ import { dirname, join } from 'node:path';
14
+ import { homedir } from 'node:os';
15
+ import { normalizeCursor, normalizeSettings } from './core.js';
16
+ export const STATE_VERSION = 1;
17
+ export const STATE_DIRNAME = 'keys-manager';
18
+ export const STATE_FILENAME = 'state.json';
19
+ const BINDING_TTL_MS = 30 * 24 * 60 * 60 * 1000;
20
+ /** Resolve the durable state directory for the current Harness home. */
21
+ export function stateDirectory(env = process.env, home = homedir()) {
22
+ const dshHome = typeof env.DSH_HOME === 'string' && env.DSH_HOME.length > 0 ? env.DSH_HOME : join(home, '.dsh');
23
+ return join(dshHome, STATE_DIRNAME);
24
+ }
25
+ /** Resolve the complete state file path. */
26
+ export function statePath(env = process.env, home = homedir()) {
27
+ return join(stateDirectory(env, home), STATE_FILENAME);
28
+ }
29
+ /** Fresh, empty state. */
30
+ export function emptyState() {
31
+ return {
32
+ version: STATE_VERSION,
33
+ settings: normalizeSettings(undefined),
34
+ providers: {},
35
+ sessionBindings: {},
36
+ };
37
+ }
38
+ function numberOr(value, fallback) {
39
+ return typeof value === 'number' && Number.isFinite(value) ? value : fallback;
40
+ }
41
+ function integerOr(value, fallback) {
42
+ return typeof value === 'number' && Number.isInteger(value) && value >= 0 ? value : fallback;
43
+ }
44
+ /** Strip any accidental secret-looking field from a key record. */
45
+ function sanitizeKey(raw) {
46
+ if (raw === null || typeof raw !== 'object')
47
+ return undefined;
48
+ const source = raw;
49
+ if (typeof source.id !== 'string' || source.id.length === 0)
50
+ return undefined;
51
+ if (typeof source.ref !== 'string' || source.ref.length === 0)
52
+ return undefined;
53
+ return {
54
+ id: source.id,
55
+ alias: typeof source.alias === 'string' && source.alias.length > 0 ? source.alias.slice(0, 80) : 'Key',
56
+ ref: source.ref,
57
+ kind: source.kind === 'oauth' ? 'oauth' : 'api-key',
58
+ enabled: source.enabled !== false,
59
+ createdAt: numberOr(source.createdAt, Date.now()),
60
+ lastUsedAt: numberOr(source.lastUsedAt, 0),
61
+ cooldownUntil: numberOr(source.cooldownUntil, 0),
62
+ lastFailureAt: numberOr(source.lastFailureAt, 0),
63
+ lastFailureCode: typeof source.lastFailureCode === 'string' ? source.lastFailureCode : '',
64
+ failureLevel: integerOr(source.failureLevel, 0),
65
+ consecutiveFailures: integerOr(source.consecutiveFailures, 0),
66
+ totalUses: integerOr(source.totalUses, 0),
67
+ totalFailures: integerOr(source.totalFailures, 0),
68
+ // Legacy builds persisted transient read failures as valueMissing. The
69
+ // credential may be healthy again; re-probe on the next selection instead
70
+ // of carrying a permanent marker across restarts.
71
+ valueMissing: false,
72
+ importedFrom: typeof source.importedFrom === 'string' ? source.importedFrom : null,
73
+ oauth: source.oauth !== null && typeof source.oauth === 'object' ? source.oauth : null,
74
+ };
75
+ }
76
+ function sanitizeModels(raw) {
77
+ if (!Array.isArray(raw))
78
+ return [];
79
+ const models = [];
80
+ for (const entry of raw) {
81
+ if (entry === null || typeof entry !== 'object')
82
+ continue;
83
+ const source = entry;
84
+ if (typeof source.id !== 'string' || source.id.length === 0)
85
+ continue;
86
+ const model = { id: source.id };
87
+ if (typeof source.name === 'string')
88
+ model.name = source.name;
89
+ if (typeof source.contextWindow === 'number')
90
+ model.contextWindow = source.contextWindow;
91
+ if (typeof source.maxTokens === 'number')
92
+ model.maxTokens = source.maxTokens;
93
+ if (Array.isArray(source.input)) {
94
+ model.input = source.input.filter((value) => value === 'text' || value === 'image');
95
+ }
96
+ if (source.reasoningEfforts !== null && typeof source.reasoningEfforts === 'object') {
97
+ model.reasoningEfforts = source.reasoningEfforts;
98
+ }
99
+ if (source.compat !== null && typeof source.compat === 'object') {
100
+ model.compat = source.compat;
101
+ }
102
+ models.push(model);
103
+ }
104
+ return models;
105
+ }
106
+ /** Validate one persisted provider record. */
107
+ function sanitizeProvider(raw) {
108
+ if (raw === null || typeof raw !== 'object')
109
+ return undefined;
110
+ const source = raw;
111
+ if (typeof source.provider !== 'string' || source.provider.length === 0)
112
+ return undefined;
113
+ const settingsPath = Array.isArray(source.settingsPath)
114
+ ? source.settingsPath.filter((part) => typeof part === 'string')
115
+ : [];
116
+ const keys = Array.isArray(source.keys) ? source.keys.map(sanitizeKey).filter((key) => key !== undefined) : [];
117
+ return {
118
+ provider: source.provider,
119
+ displayName: typeof source.displayName === 'string' && source.displayName.length > 0 ? source.displayName : source.provider,
120
+ source: source.source === 'extra' ? 'extra' : 'dsh',
121
+ settingsNs: typeof source.settingsNs === 'string' ? source.settingsNs : 'llm-pi-ai',
122
+ settingsPath,
123
+ adapter: source.adapter === 'deepseek' ? 'deepseek' : 'pi-ai',
124
+ brokerRef: typeof source.brokerRef === 'string' ? source.brokerRef : '',
125
+ originalApiKeyEnv: typeof source.originalApiKeyEnv === 'string' && source.originalApiKeyEnv.length > 0 ? source.originalApiKeyEnv : null,
126
+ createdProfile: source.createdProfile === true,
127
+ hadProfile: source.hadProfile === true,
128
+ extraId: typeof source.extraId === 'string' ? source.extraId : null,
129
+ api: typeof source.api === 'string' ? source.api : null,
130
+ baseURL: typeof source.baseURL === 'string' ? source.baseURL : null,
131
+ models: sanitizeModels(source.models),
132
+ adoptedAt: numberOr(source.adoptedAt, Date.now()),
133
+ cursor: normalizeCursor(typeof source.cursor === 'number' ? source.cursor : 0, keys.length),
134
+ keys,
135
+ };
136
+ }
137
+ /** Sanitize a whole document, dropping anything the current schema cannot express. */
138
+ export function sanitizeState(raw) {
139
+ const state = emptyState();
140
+ if (raw === null || typeof raw !== 'object')
141
+ return state;
142
+ const source = raw;
143
+ state.settings = normalizeSettings(source.settings);
144
+ if (source.providers !== null && typeof source.providers === 'object' && !Array.isArray(source.providers)) {
145
+ for (const [id, provider] of Object.entries(source.providers)) {
146
+ const clean = sanitizeProvider(provider);
147
+ if (clean !== undefined && clean.provider === id)
148
+ state.providers[id] = clean;
149
+ }
150
+ }
151
+ if (source.sessionBindings !== null && typeof source.sessionBindings === 'object' && !Array.isArray(source.sessionBindings)) {
152
+ const now = Date.now();
153
+ for (const [key, binding] of Object.entries(source.sessionBindings)) {
154
+ if (binding === null || typeof binding !== 'object')
155
+ continue;
156
+ const record = binding;
157
+ const keyId = typeof record.keyId === 'string' ? record.keyId : '';
158
+ const boundAt = numberOr(record.boundAt, 0);
159
+ if (keyId.length === 0 || now - boundAt > BINDING_TTL_MS)
160
+ continue;
161
+ state.sessionBindings[key] = { keyId, boundAt };
162
+ }
163
+ }
164
+ return state;
165
+ }
166
+ /** Read a state file; only parse corruption is preserved and reset. */
167
+ export function readStateFile(file) {
168
+ let stats;
169
+ try {
170
+ stats = statSync(file);
171
+ }
172
+ catch (error) {
173
+ if (error.code === 'ENOENT')
174
+ return emptyState();
175
+ return {
176
+ ...emptyState(),
177
+ readOnly: true,
178
+ loadError: `Could not inspect ${file}: ${error instanceof Error ? error.message : String(error)}`,
179
+ };
180
+ }
181
+ if (!stats.isFile()) {
182
+ return {
183
+ ...emptyState(),
184
+ readOnly: true,
185
+ loadError: `${file} is not a regular file; refusing to overwrite it.`,
186
+ };
187
+ }
188
+ let text;
189
+ try {
190
+ text = readFileSync(file, 'utf8');
191
+ }
192
+ catch (error) {
193
+ // A read failure is not corruption. Keep the file untouched and refuse to
194
+ // overwrite it; the manager starts read-only/in-memory.
195
+ return {
196
+ ...emptyState(),
197
+ readOnly: true,
198
+ loadError: `Could not read ${file}: ${error instanceof Error ? error.message : String(error)}`,
199
+ };
200
+ }
201
+ let parsed;
202
+ try {
203
+ parsed = JSON.parse(text);
204
+ }
205
+ catch (error) {
206
+ const stamp = new Date().toISOString().replace(/[:.]/g, '-');
207
+ const backup = `${file}.corrupt-${stamp}`;
208
+ let preserved = false;
209
+ try {
210
+ renameSync(file, backup);
211
+ preserved = true;
212
+ }
213
+ catch {
214
+ // Keep the original bytes if the backup could not be created.
215
+ }
216
+ return {
217
+ ...emptyState(),
218
+ readOnly: !preserved,
219
+ loadError: preserved
220
+ ? `State file was corrupt; preserved at ${backup} (${error instanceof Error ? error.message : String(error)})`
221
+ : `State file was corrupt and could not be backed up; refusing to overwrite it (${error instanceof Error ? error.message : String(error)})`,
222
+ };
223
+ }
224
+ const version = parsed !== null && typeof parsed === 'object' ? parsed.version : undefined;
225
+ if (version !== undefined && version !== STATE_VERSION) {
226
+ return {
227
+ ...emptyState(),
228
+ readOnly: true,
229
+ loadError: `Unsupported state schema version ${String(version)}; refusing to overwrite ${file}.`,
230
+ };
231
+ }
232
+ return sanitizeState(parsed);
233
+ }
234
+ /** Durable store with a debounced atomic writer. */
235
+ export class KeysManagerStore {
236
+ file;
237
+ state;
238
+ loadError;
239
+ readOnly;
240
+ warn;
241
+ dirty = false;
242
+ timer;
243
+ writeChain = Promise.resolve();
244
+ closed = false;
245
+ constructor(file, options = {}) {
246
+ this.file = file;
247
+ this.warn = options.warn ?? (() => { });
248
+ const loaded = readStateFile(file);
249
+ this.loadError = loaded.loadError;
250
+ this.readOnly = loaded.readOnly === true;
251
+ const { loadError: _loadError, readOnly: _readOnly, ...state } = loaded;
252
+ this.state = state;
253
+ }
254
+ get settings() {
255
+ return this.state.settings;
256
+ }
257
+ get providers() {
258
+ return this.state.providers;
259
+ }
260
+ provider(id) {
261
+ return this.state.providers[id];
262
+ }
263
+ key(providerId, keyId) {
264
+ return this.state.providers[providerId]?.keys.find(key => key.id === keyId);
265
+ }
266
+ bind(sessionId, providerId, keyId, now = Date.now()) {
267
+ if (sessionId.length === 0)
268
+ return;
269
+ this.state.sessionBindings[`${sessionId}\u0000${providerId}`] = { keyId, boundAt: now };
270
+ this.touch();
271
+ }
272
+ binding(sessionId, providerId) {
273
+ if (sessionId.length === 0)
274
+ return undefined;
275
+ return this.state.sessionBindings[`${sessionId}\u0000${providerId}`];
276
+ }
277
+ clearBindings(predicate) {
278
+ let changed = false;
279
+ for (const key of Object.keys(this.state.sessionBindings)) {
280
+ const binding = this.state.sessionBindings[key];
281
+ if (predicate === undefined || predicate(key, binding)) {
282
+ delete this.state.sessionBindings[key];
283
+ changed = true;
284
+ }
285
+ }
286
+ if (changed)
287
+ this.touch();
288
+ }
289
+ /** Drop session bindings older than the TTL; safe to call periodically. */
290
+ pruneBindings(now = Date.now()) {
291
+ let changed = false;
292
+ for (const [key, binding] of Object.entries(this.state.sessionBindings)) {
293
+ if (now - binding.boundAt > BINDING_TTL_MS) {
294
+ delete this.state.sessionBindings[key];
295
+ changed = true;
296
+ }
297
+ }
298
+ if (changed)
299
+ this.touch();
300
+ return changed;
301
+ }
302
+ /** Mark state dirty and schedule a write. */
303
+ touch() {
304
+ if (this.closed || this.readOnly)
305
+ return;
306
+ this.dirty = true;
307
+ if (this.timer !== undefined)
308
+ return;
309
+ this.timer = setTimeout(() => {
310
+ this.timer = undefined;
311
+ void this.flush().catch(error => {
312
+ this.warn(`keys-manager: failed to persist state: ${error instanceof Error ? error.message : String(error)}`);
313
+ });
314
+ }, 150);
315
+ this.timer.unref?.();
316
+ }
317
+ /** Persist pending changes now, serialized after any in-flight write. */
318
+ flush() {
319
+ if (this.timer !== undefined) {
320
+ clearTimeout(this.timer);
321
+ this.timer = undefined;
322
+ }
323
+ if (this.readOnly) {
324
+ this.dirty = false;
325
+ return this.writeChain;
326
+ }
327
+ if (!this.dirty)
328
+ return this.writeChain;
329
+ this.dirty = false;
330
+ const snapshot = JSON.stringify(this.state, null, 2);
331
+ const file = this.file;
332
+ const attempt = this.writeChain.then(async () => {
333
+ try {
334
+ await mkdir(dirname(file), { recursive: true, mode: 0o700 });
335
+ const temp = `${file}.${process.pid}.${Date.now()}.tmp`;
336
+ await writeFile(temp, snapshot, { mode: 0o600 });
337
+ await rename(temp, file);
338
+ try {
339
+ await chmod(file, 0o600);
340
+ }
341
+ catch {
342
+ // Non-POSIX platforms have no mode to tighten.
343
+ }
344
+ }
345
+ catch (error) {
346
+ // Keep the latest snapshot pending and let an explicit flush retry it.
347
+ this.dirty = true;
348
+ throw error;
349
+ }
350
+ });
351
+ // The internal chain must stay usable after a rejected attempt; callers
352
+ // that care about the result receive `attempt` itself.
353
+ this.writeChain = attempt.catch(() => { });
354
+ return attempt;
355
+ }
356
+ /** Stop the timer and persist once. */
357
+ async close() {
358
+ this.closed = true;
359
+ if (this.readOnly)
360
+ return;
361
+ if (this.timer !== undefined) {
362
+ clearTimeout(this.timer);
363
+ this.timer = undefined;
364
+ }
365
+ this.dirty = true;
366
+ try {
367
+ await this.flush();
368
+ }
369
+ catch (error) {
370
+ this.warn(`keys-manager: failed to persist state on close: ${error instanceof Error ? error.message : String(error)}`);
371
+ }
372
+ }
373
+ }
374
+ /**
375
+ * Synchronous bootstrap used by a Host plugin before its first request:
376
+ * ensure the directory exists and, when the file is absent, write an empty
377
+ * state once. The regular debounced writer owns later updates.
378
+ */
379
+ export function ensureStateFile(file) {
380
+ try {
381
+ statSync(file);
382
+ return;
383
+ }
384
+ catch (error) {
385
+ if (error.code !== 'ENOENT')
386
+ return;
387
+ }
388
+ try {
389
+ mkdirSync(dirname(file), { recursive: true, mode: 0o700 });
390
+ const temp = `${file}.${process.pid}.tmp`;
391
+ writeFileSync(temp, JSON.stringify(emptyState(), null, 2), { mode: 0o600 });
392
+ renameSync(temp, file);
393
+ }
394
+ catch {
395
+ // A read-only home still serves in-memory state.
396
+ }
397
+ }
398
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
package/locale/en.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "Keys Manager",
4
+ "description": "Multiple API keys per provider with sticky sessions, round-robin selection, retry failover, cooldown recovery, and searchable extra providers."
5
+ }
6
+ }
package/locale/zh.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "密钥管理",
4
+ "description": "为同一个 Provider 配置多个 API Key,支持单会话固定、Round Robin、重试切换、冷却恢复,并提供可搜索的扩展 Provider。"
5
+ }
6
+ }
package/package.json CHANGED
@@ -1,27 +1,92 @@
1
1
  {
2
2
  "name": "dsh-keys-manager",
3
- "version": "0.0.0",
4
- "description": "Placeholder release that reserves the package name. The real package ships from https://github.com/btspoony/dsh-keys-manager via CI trusted publishing. Do not install 0.0.0.",
5
- "license": "MIT",
6
- "main": "index.js",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "description": "Multi-key management for DSH providers: sticky per-session round-robin, retry failover, cooldown recovery, and searchable extra providers.",
7
6
  "repository": {
8
7
  "type": "git",
9
- "url": "git+https://github.com/btspoony/dsh-keys-manager.git"
10
- },
11
- "bugs": {
12
- "url": "https://github.com/btspoony/dsh-keys-manager/issues"
8
+ "url": "https://github.com/btspoony/dsh-keys-manager"
13
9
  },
14
- "homepage": "https://github.com/btspoony/dsh-keys-manager#readme",
15
10
  "keywords": [
16
11
  "dsh",
17
12
  "dsh-plugin",
18
13
  "keys",
19
14
  "provider",
20
- "llm",
21
- "placeholder"
15
+ "llm"
16
+ ],
17
+ "license": "MIT",
18
+ "main": "./lib/index.js",
19
+ "types": "./lib/index.d.ts",
20
+ "icon": "./icon.svg",
21
+ "exports": {
22
+ ".": {
23
+ "types": "./lib/index.d.ts",
24
+ "default": "./lib/index.js"
25
+ },
26
+ "./client": {
27
+ "types": "./lib/client/index.d.ts",
28
+ "default": "./lib/client.js"
29
+ },
30
+ "./bundle/cordis.patch.yml": "./bundle/cordis.patch.yml",
31
+ "./locale/*.json": "./locale/*.json",
32
+ "./icon": "./icon.svg",
33
+ "./package.json": "./package.json"
34
+ },
35
+ "files": [
36
+ "lib",
37
+ "bundle",
38
+ "locale",
39
+ "icon.svg",
40
+ "scripts"
22
41
  ],
23
- "publishConfig": {
24
- "access": "public",
25
- "registry": "https://registry.npmjs.org/"
42
+ "dsh": {
43
+ "bundle": {
44
+ "patch": "./bundle/cordis.patch.yml"
45
+ },
46
+ "client": {
47
+ "platform": "web",
48
+ "inject": [
49
+ "@deepseek-ai/dsh-client-ui-plugin-manager",
50
+ "@deepseek-ai/dsh-client-ui-settings",
51
+ "@deepseek-ai/dsh-client-ui-settings-models",
52
+ "@deepseek-ai/dsh-client-locale",
53
+ "@deepseek-ai/dsh-client-connection"
54
+ ]
55
+ }
56
+ },
57
+ "scripts": {
58
+ "typecheck": "tsc --noEmit && tsc -p tsconfig.client.json --noEmit && tsc -p tsconfig.spec.json --noEmit",
59
+ "build": "tsc -p tsconfig.build.json && tsc -p tsconfig.client.json && node scripts/build-client.mjs && node scripts/verify-dist.mjs",
60
+ "build:client": "tsc -p tsconfig.client.json && node scripts/build-client.mjs",
61
+ "test": "vitest run",
62
+ "release:prepare": "node scripts/prepare-release.mjs",
63
+ "prepare": "pnpm run build",
64
+ "prepack": "pnpm run build"
65
+ },
66
+ "engines": {
67
+ "node": "^22.19 || >=24"
68
+ },
69
+ "peerDependencies": {
70
+ "@deepseek-ai/cordis": "^4.0.5",
71
+ "@deepseek-ai/dsh-client-connection": "^0.2.1-rc.2",
72
+ "@deepseek-ai/dsh-client-locale": "^0.2.1-rc.2",
73
+ "@deepseek-ai/dsh-client-ui-plugin-manager": "^0.2.1-rc.2",
74
+ "@deepseek-ai/dsh-client-ui-settings": "^0.2.1-rc.2",
75
+ "@deepseek-ai/dsh-client-ui-settings-models": "^0.2.1-rc.2",
76
+ "@deepseek-ai/dsh-client-ui-slots": "^0.2.1-rc.2",
77
+ "@deepseek-ai/dsh-credentials": "^0.2.1-rc.2",
78
+ "@deepseek-ai/dsh-llm": "^0.2.1-rc.2",
79
+ "@deepseek-ai/dsh-settings": "^0.2.1-rc.2",
80
+ "@deepseek-ai/dsh-typert-registry": "^0.2.1-rc.2",
81
+ "react": "^18.2.0"
82
+ },
83
+ "devDependencies": {
84
+ "@deepseek-ai/cordis": "^4.0.5",
85
+ "@types/node": "^22.20.0",
86
+ "@types/react": "~18.3.31",
87
+ "esbuild": "^0.28.2",
88
+ "react": "^18.3.1",
89
+ "typescript": "^5.9.3",
90
+ "vitest": "^4.1.8"
26
91
  }
27
92
  }