dsh-llm-ustc 0.1.1 → 0.2.1

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.
Files changed (47) hide show
  1. package/README.md +15 -10
  2. package/lib/adapter.js +24 -21
  3. package/lib/adapter.js.map +1 -1
  4. package/lib/client.js +107 -121
  5. package/lib/config.js +9 -7
  6. package/lib/config.js.map +1 -1
  7. package/lib/constants.js +3 -3
  8. package/lib/constants.js.map +1 -1
  9. package/lib/helper.js +54 -131
  10. package/lib/helper.js.map +1 -1
  11. package/lib/index.js +9 -14
  12. package/lib/index.js.map +1 -1
  13. package/lib/iwan.js +93 -0
  14. package/lib/iwan.js.map +1 -0
  15. package/lib/model-catalog.js +1 -1
  16. package/lib/model-catalog.js.map +1 -1
  17. package/lib/oidc.js +208 -0
  18. package/lib/oidc.js.map +1 -0
  19. package/lib/state.js +3 -7
  20. package/lib/state.js.map +1 -1
  21. package/lib/types/adapter.d.ts +1 -0
  22. package/lib/types/adapter.d.ts.map +1 -1
  23. package/lib/types/client/index.d.ts +3 -15
  24. package/lib/types/client/index.d.ts.map +1 -1
  25. package/lib/types/config.d.ts +14 -4
  26. package/lib/types/config.d.ts.map +1 -1
  27. package/lib/types/constants.d.ts +3 -3
  28. package/lib/types/constants.d.ts.map +1 -1
  29. package/lib/types/helper.d.ts +5 -22
  30. package/lib/types/helper.d.ts.map +1 -1
  31. package/lib/types/index.d.ts +1 -1
  32. package/lib/types/index.d.ts.map +1 -1
  33. package/lib/types/iwan.d.ts +8 -0
  34. package/lib/types/iwan.d.ts.map +1 -0
  35. package/lib/types/oidc.d.ts +17 -0
  36. package/lib/types/oidc.d.ts.map +1 -0
  37. package/lib/types/state.d.ts +0 -1
  38. package/lib/types/state.d.ts.map +1 -1
  39. package/lib/types/types.d.ts +6 -8
  40. package/lib/types/types.d.ts.map +1 -1
  41. package/lib/types/web.d.ts +8 -5
  42. package/lib/types/web.d.ts.map +1 -1
  43. package/lib/web.js +62 -79
  44. package/lib/web.js.map +1 -1
  45. package/locale/en.json +6 -0
  46. package/locale/zh.json +6 -0
  47. package/package.json +63 -43
package/lib/web.js CHANGED
@@ -1,40 +1,47 @@
1
1
  import { credentialRef } from '@deepseek-ai/dsh-credentials';
2
- import { SettingsConflictError, settingsNamespace } from '@deepseek-ai/dsh-settings';
2
+ import { SettingsConflictError } from '@deepseek-ai/dsh-settings';
3
3
  import { API_KEY_REF, IWAN_CONFIG_REF, SETTINGS_NS, SETTINGS_ROUTE } from "./constants.js";
4
+ import { resolveConfig } from "./config.js";
5
+ import { parseIwanConfig, publicIwanServers } from "./iwan.js";
6
+ import { IwanAuthenticator } from "./oidc.js";
4
7
  export class UstcWebBackend {
5
8
  ctx;
6
9
  helper;
7
10
  catalog;
8
11
  store;
9
- constructor(ctx, helper, catalog, store) {
12
+ iwanAuth;
13
+ settingsId;
14
+ config;
15
+ constructor(ctx, helper, catalog, store, iwanAuth = new IwanAuthenticator(), settingsId = SETTINGS_NS, config) {
10
16
  this.ctx = ctx;
11
17
  this.helper = helper;
12
18
  this.catalog = catalog;
13
19
  this.store = store;
20
+ this.iwanAuth = iwanAuth;
21
+ this.settingsId = settingsId;
22
+ this.config = config;
14
23
  }
15
24
  async snapshot() {
16
- const descriptor = this.ctx.settings.describe({ redactSecrets: true }).find(row => row.ns === SETTINGS_NS);
25
+ const descriptor = this.ctx.settings.describe({ redactSecrets: true }).find(row => row.ns === this.settingsId);
17
26
  if (descriptor === undefined)
18
27
  throw new Error('llm-ustc settings namespace is not registered');
19
28
  const value = descriptor.value;
20
- const [apiKey, iwan, iwanSecret, helper] = await Promise.all([
29
+ const [apiKey, iwan, iwanSecret] = await Promise.all([
21
30
  this.ctx.credentials.describe(credentialRef(API_KEY_REF)),
22
31
  this.ctx.credentials.describe(credentialRef(IWAN_CONFIG_REF)),
23
32
  this.ctx.credentials.resolve(credentialRef(IWAN_CONFIG_REF)),
24
- this.helper.statusIfRunning(),
25
33
  ]);
26
34
  const state = this.store.snapshot();
27
35
  return {
28
36
  writable: this.ctx.settings.writable,
29
37
  revision: descriptor.revision,
30
38
  ...(value.selectedServerId === undefined ? {} : { selectedServerId: value.selectedServerId }),
31
- directReprobeSeconds: value.directReprobeSeconds ?? 300,
32
39
  apiKey: publicCredential(apiKey),
33
40
  iwan: {
34
41
  ...publicCredential(iwan),
35
42
  servers: publicIwanServers(iwanSecret?.value),
36
43
  },
37
- ...(helper === undefined ? {} : { helper }),
44
+ usingIwan: this.helper.route,
38
45
  models: state.models,
39
46
  ...(state.modelsUpdatedAt === undefined ? {} : { modelsUpdatedAt: state.modelsUpdatedAt }),
40
47
  };
@@ -54,33 +61,40 @@ export class UstcWebBackend {
54
61
  await this.helper.stop();
55
62
  return this.snapshot();
56
63
  case 'beginOidc':
57
- return this.helper.beginOidc();
64
+ return this.iwanAuth.begin();
58
65
  case 'completeOidc': {
59
- const result = await this.helper.completeOidc(request.callbackUrl);
60
- return { servers: result.servers, snapshot: await this.snapshot() };
66
+ const config = await this.iwanAuth.complete(request.callbackUrl);
67
+ await this.ctx.credentials.set(credentialRef(IWAN_CONFIG_REF), JSON.stringify(config));
68
+ await this.helper.stop();
69
+ return { servers: publicIwanServers(JSON.stringify(config)), snapshot: await this.snapshot() };
61
70
  }
62
71
  case 'logoutIwan':
63
- await this.ctx.settings.mutate(settingsNamespace(SETTINGS_NS), [{ op: 'unset', path: ['selectedServerId'] }], request.expectedRevision);
72
+ await this.ctx.settings.mutate(this.settingsId, [{ op: 'unset', path: ['selectedServerId'] }], request.expectedRevision);
64
73
  await this.ctx.credentials.unset(credentialRef(IWAN_CONFIG_REF));
74
+ if (this.config !== undefined)
75
+ this.helper.reconfigure(resolveConfig(this.config));
65
76
  await this.helper.stop();
66
- await this.helper.status();
67
77
  return this.snapshot();
68
78
  case 'refreshRoute': {
69
- const key = await this.ctx.credentials.resolve(credentialRef(API_KEY_REF));
70
- await this.helper.refreshRoute(key?.value.trim());
79
+ await this.helper.refreshRoute();
71
80
  return this.snapshot();
72
81
  }
73
82
  case 'selectServer': {
74
- const key = await this.ctx.credentials.resolve(credentialRef(API_KEY_REF));
83
+ const iwan = await this.ctx.credentials.resolve(credentialRef(IWAN_CONFIG_REF));
84
+ if (iwan === undefined || !parseIwanConfig(iwan.value).servers.some(server => server.id === request.serverId)) {
85
+ throw new TypeError('selected iWAN line is unavailable');
86
+ }
75
87
  const rollback = this.helper.stageSelectedServer(request.serverId);
76
88
  try {
77
- await this.ctx.settings.update(settingsNamespace(SETTINGS_NS), { selectedServerId: request.serverId }, request.expectedRevision);
89
+ await this.ctx.settings.update(this.settingsId, { selectedServerId: request.serverId }, request.expectedRevision);
78
90
  }
79
91
  catch (error) {
80
92
  rollback();
81
93
  throw error;
82
94
  }
83
- await this.helper.selectServer(request.serverId, key?.value.trim());
95
+ if (this.config !== undefined)
96
+ this.helper.reconfigure(resolveConfig(this.config));
97
+ await this.helper.refreshRoute();
84
98
  return this.snapshot();
85
99
  }
86
100
  case 'syncModels':
@@ -90,89 +104,58 @@ export class UstcWebBackend {
90
104
  }
91
105
  }
92
106
  export function installWeb(ctx, backend) {
93
- ctx.inject(['webServer'], webCtx => {
94
- const dispose = webCtx.webServer.register({
95
- kind: 'exact',
107
+ ctx.inject(['connection'], connectionCtx => {
108
+ connectionCtx.connection.fetch.register({
96
109
  path: SETTINGS_ROUTE,
97
- handler: async (req, res) => {
110
+ methods: ['GET', 'POST'],
111
+ requestBody: 'buffered',
112
+ fetch: async (request) => {
98
113
  try {
99
- if (req.method === 'GET')
100
- return responseJson(res, 200, { ok: true, value: await backend.snapshot() });
101
- if (req.method !== 'POST')
102
- return responseError(res, 405, 'METHOD_NOT_ALLOWED', 'use GET or POST');
103
- if (!sameOriginPost(req))
104
- return responseError(res, 403, 'CROSS_ORIGIN', 'cross-origin request refused');
105
- const request = parseWebRequest(await readJson(req));
106
- responseJson(res, 200, { ok: true, value: await backend.handle(request) });
114
+ if (request.method === 'GET')
115
+ return responseJson(200, { ok: true, value: await backend.snapshot() });
116
+ const input = parseWebRequest(await readJson(request));
117
+ return responseJson(200, { ok: true, value: await backend.handle(input) });
107
118
  }
108
119
  catch (error) {
109
120
  const status = error instanceof SettingsConflictError ? 409 : error instanceof TypeError ? 400 : 500;
110
- responseError(res, status, error instanceof SettingsConflictError ? 'SETTINGS_CONFLICT' : 'REQUEST_FAILED', publicMessage(error));
121
+ return responseError(status, error instanceof SettingsConflictError ? 'SETTINGS_CONFLICT' : 'REQUEST_FAILED', publicMessage(error));
111
122
  }
112
123
  },
113
124
  });
114
- webCtx.effect(() => dispose, 'dsh-llm-ustc: web settings route');
115
125
  });
116
126
  }
117
127
  function publicCredential(info) {
118
128
  return { configured: info.configured, ...(info.source === undefined ? {} : { source: info.source }), writable: info.writable };
119
129
  }
120
- export function publicIwanServers(raw) {
121
- if (raw === undefined)
122
- return [];
123
- try {
124
- const value = JSON.parse(raw);
125
- if (!Array.isArray(value.servers))
126
- return [];
127
- return value.servers.flatMap(server => {
128
- if (typeof server.id !== 'string' || typeof server.name !== 'string' || typeof server.host !== 'string' || !Number.isSafeInteger(server.port))
129
- return [];
130
- return [{ id: server.id, name: server.name, endpoint: `${server.host}:${server.port}` }];
131
- });
132
- }
133
- catch {
134
- return [];
135
- }
136
- }
137
- function responseJson(res, status, body) {
138
- const bytes = Buffer.from(JSON.stringify(body));
139
- res.setHeader('content-type', 'application/json; charset=utf-8');
140
- res.setHeader('content-length', String(bytes.length));
141
- res.setHeader('cache-control', 'no-store');
142
- res.setHeader('x-content-type-options', 'nosniff');
143
- res.setHeader('content-security-policy', "default-src 'none'; frame-ancestors 'none'");
144
- res.writeHead(status);
145
- res.end(bytes);
130
+ function responseJson(status, body) {
131
+ return new Response(JSON.stringify(body), { status, headers: {
132
+ 'content-type': 'application/json; charset=utf-8',
133
+ 'cache-control': 'no-store',
134
+ 'x-content-type-options': 'nosniff',
135
+ 'content-security-policy': "default-src 'none'; frame-ancestors 'none'",
136
+ } });
146
137
  }
147
- function responseError(res, status, code, message) {
148
- responseJson(res, status, { ok: false, error: { code, message } });
149
- }
150
- function sameOriginPost(req) {
151
- if (req.headers['sec-fetch-site'] === 'cross-site')
152
- return false;
153
- const origin = req.headers.origin;
154
- if (origin === undefined)
155
- return ['same-origin', 'same-site', 'none'].includes(req.headers['sec-fetch-site'] ?? '');
156
- if (req.headers.host === undefined)
157
- return false;
158
- try {
159
- const parsed = new URL(origin);
160
- return ['http:', 'https:'].includes(parsed.protocol) && parsed.host === req.headers.host;
161
- }
162
- catch {
163
- return false;
164
- }
138
+ function responseError(status, code, message) {
139
+ return responseJson(status, { ok: false, error: { code, message } });
165
140
  }
166
141
  async function readJson(req) {
167
- if (req.headers['content-type']?.split(';', 1)[0]?.trim().toLowerCase() !== 'application/json')
142
+ if (req.headers.get('content-type')?.split(';', 1)[0]?.trim().toLowerCase() !== 'application/json')
168
143
  throw new TypeError('Content-Type must be application/json');
144
+ const reader = req.body?.getReader();
145
+ if (reader === undefined)
146
+ throw new TypeError('request body is empty');
169
147
  const parts = [];
170
148
  let size = 0;
171
- for await (const part of req) {
172
- const bytes = Buffer.isBuffer(part) ? part : Buffer.from(part);
149
+ while (true) {
150
+ const { done, value } = await reader.read();
151
+ if (done)
152
+ break;
153
+ const bytes = Buffer.from(value);
173
154
  size += bytes.length;
174
- if (size > 64 * 1024)
155
+ if (size > 64 * 1024) {
156
+ await reader.cancel();
175
157
  throw new TypeError('request body exceeds 65536 bytes');
158
+ }
176
159
  parts.push(bytes);
177
160
  }
178
161
  if (parts.length === 0)
package/lib/web.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"web.js","sourceRoot":"","sources":["../src/web.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web.js","sourceRoot":"","sources":["../src/web.ts"],"names":[],"mappings":"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"}
package/locale/en.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "USTC LLM",
4
+ "description": "USTC LLM models with optional iWAN access."
5
+ }
6
+ }
package/locale/zh.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "科大大模型",
4
+ "description": "访问科大大模型,按需使用 iWAN 线路。"
5
+ }
6
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-llm-ustc",
3
- "version": "0.1.1",
3
+ "version": "0.2.1",
4
4
  "description": "USTC LLM provider for DeepSeek Harness with a provider-scoped iWAN tunnel",
5
5
  "repository": {
6
6
  "type": "git",
@@ -22,11 +22,13 @@
22
22
  "default": "./lib/client.js"
23
23
  },
24
24
  "./cordis.patch.yml": "./cordis.patch.yml",
25
+ "./locale/*.json": "./locale/*.json",
25
26
  "./package.json": "./package.json"
26
27
  },
27
28
  "files": [
28
29
  "lib",
29
30
  "cordis.patch.yml",
31
+ "locale/*.json",
30
32
  "README.md",
31
33
  "LICENSE"
32
34
  ],
@@ -36,67 +38,85 @@
36
38
  },
37
39
  "client": {
38
40
  "inject": [
39
- "@deepseek-ai/dsh-client-runtime",
40
- "@deepseek-ai/dsh-client-ui-settings",
41
- "@deepseek-ai/dsh-client-ui-settings-plugins",
41
+ "@deepseek-ai/dsh-client-ui-plugin-manager",
42
42
  "@deepseek-ai/dsh-client-ui-slots",
43
43
  "@deepseek-ai/dsh-client-ui-primitives",
44
+ "@deepseek-ai/dsh-client-ui-renderer",
45
+ "@deepseek-ai/dsh-client-connection",
44
46
  "@deepseek-ai/dsh-client-locale"
45
47
  ],
46
48
  "platform": "web"
47
49
  }
48
50
  },
49
51
  "peerDependencies": {
50
- "@deepseek-ai/cordis": "^4.0.1",
51
- "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.6",
52
- "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.6",
53
- "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.6",
54
- "@deepseek-ai/dsh-client-ui-settings": "^0.1.0-rc.6",
55
- "@deepseek-ai/dsh-client-ui-settings-plugins": "^0.1.0-rc.6",
56
- "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.6",
57
- "@deepseek-ai/dsh-credentials": "^0.1.0-rc.6",
58
- "@deepseek-ai/dsh-host-webserver": "^0.1.0-rc.6",
59
- "@deepseek-ai/dsh-llm": "^0.1.0-rc.6",
60
- "@deepseek-ai/dsh-llm-pi-ai": "^0.1.0-rc.6",
61
- "@deepseek-ai/dsh-settings": "^0.1.0-rc.6",
62
- "@deepseek-ai/schemastery": "^3.18.1",
63
- "@earendil-works/pi-ai": "^0.82.1",
52
+ "@deepseek-ai/cordis": "~4.0.4",
53
+ "@deepseek-ai/cordis-plugin-loader": "~1.0.5",
54
+ "@deepseek-ai/dsh": "0.2.0-rc.2",
55
+ "@deepseek-ai/dsh-client-connection": "0.2.0-rc.2",
56
+ "@deepseek-ai/dsh-client-locale": "0.2.0-rc.2",
57
+ "@deepseek-ai/dsh-client-ui-plugin-manager": "0.2.0-rc.2",
58
+ "@deepseek-ai/dsh-client-ui-primitives": "0.2.0-rc.2",
59
+ "@deepseek-ai/dsh-client-ui-renderer": "0.2.0-rc.2",
60
+ "@deepseek-ai/dsh-client-ui-slots": "0.2.0-rc.2",
61
+ "@deepseek-ai/dsh-credentials": "0.2.0-rc.2",
62
+ "@deepseek-ai/dsh-home-paths": "0.2.0-rc.2",
63
+ "@deepseek-ai/dsh-llm": "0.2.0-rc.2",
64
+ "@deepseek-ai/dsh-llm-pi-ai": "0.2.0-rc.2",
65
+ "@deepseek-ai/dsh-settings": "0.2.0-rc.2",
66
+ "@deepseek-ai/schemastery": "~3.18.4",
67
+ "@earendil-works/pi-ai": "^0.87.1",
64
68
  "react": "^18.2.0"
65
69
  },
66
70
  "peerDependenciesMeta": {
67
- "@deepseek-ai/dsh-host-webserver": {
71
+ "@deepseek-ai/dsh": {
72
+ "optional": true
73
+ },
74
+ "@deepseek-ai/dsh-client-connection": {
68
75
  "optional": true
69
76
  }
70
77
  },
71
78
  "optionalDependencies": {
72
- "@dsh-llm-ustc/helper-darwin-arm64": "0.1.1",
73
- "@dsh-llm-ustc/helper-linux-arm64": "0.1.1",
74
- "@dsh-llm-ustc/helper-linux-x64": "0.1.1",
75
- "@dsh-llm-ustc/helper-darwin-x64": "0.1.1",
76
- "@dsh-llm-ustc/helper-win32-x64": "0.1.1",
77
- "@dsh-llm-ustc/helper-win32-arm64": "0.1.1"
79
+ "@dsh-llm-ustc/helper-darwin-arm64": "0.2.1",
80
+ "@dsh-llm-ustc/helper-linux-arm64": "0.2.1",
81
+ "@dsh-llm-ustc/helper-linux-x64": "0.2.1",
82
+ "@dsh-llm-ustc/helper-win32-x64": "0.2.1",
83
+ "@dsh-llm-ustc/helper-darwin-x64": "0.2.1",
84
+ "@dsh-llm-ustc/helper-win32-arm64": "0.2.1"
78
85
  },
79
86
  "devDependencies": {
80
- "@deepseek-ai/cordis": "^4.0.1",
81
- "@deepseek-ai/dsh-client-locale": "0.1.0-rc.6",
82
- "@deepseek-ai/dsh-client-runtime": "0.1.0-rc.6",
83
- "@deepseek-ai/dsh-client-ui-primitives": "0.1.0-rc.6",
84
- "@deepseek-ai/dsh-client-ui-settings": "0.1.0-rc.6",
85
- "@deepseek-ai/dsh-client-ui-settings-plugins": "0.1.0-rc.6",
86
- "@deepseek-ai/dsh-client-ui-slots": "0.1.0-rc.6",
87
- "@deepseek-ai/dsh-credentials": "0.1.0-rc.6",
88
- "@deepseek-ai/dsh-host-webserver": "0.1.0-rc.6",
89
- "@deepseek-ai/dsh-llm": "0.1.0-rc.6",
90
- "@deepseek-ai/dsh-llm-pi-ai": "0.1.0-rc.6",
91
- "@deepseek-ai/dsh-settings": "0.1.0-rc.6",
92
- "@deepseek-ai/schemastery": "^3.18.1",
93
- "@earendil-works/pi-ai": "0.82.1",
94
- "@types/node": "^24.13.3",
87
+ "@deepseek-ai/cordis": "4.0.4",
88
+ "@deepseek-ai/cordis-plugin-group": "1.0.4",
89
+ "@deepseek-ai/cordis-plugin-include": "1.0.9",
90
+ "@deepseek-ai/cordis-plugin-loader": "1.0.5",
91
+ "@deepseek-ai/dsh-app-boot": "0.2.0-rc.2",
92
+ "@deepseek-ai/dsh-attachment": "0.2.0-rc.2",
93
+ "@deepseek-ai/dsh-authorization": "0.2.0-rc.2",
94
+ "@deepseek-ai/dsh-client-connection": "0.2.0-rc.2",
95
+ "@deepseek-ai/dsh-client-locale": "0.2.0-rc.2",
96
+ "@deepseek-ai/dsh-client-ui-plugin-manager": "0.2.0-rc.2",
97
+ "@deepseek-ai/dsh-client-ui-primitives": "0.2.0-rc.2",
98
+ "@deepseek-ai/dsh-client-ui-renderer": "0.2.0-rc.2",
99
+ "@deepseek-ai/dsh-client-ui-slots": "0.2.0-rc.2",
100
+ "@deepseek-ai/dsh-credentials": "0.2.0-rc.2",
101
+ "@deepseek-ai/dsh-fs": "0.2.0-rc.2",
102
+ "@deepseek-ai/dsh-home-paths": "0.2.0-rc.2",
103
+ "@deepseek-ai/dsh-host-webserver": "0.2.0-rc.2",
104
+ "@deepseek-ai/dsh-invariants": "0.2.0-rc.2",
105
+ "@deepseek-ai/dsh-launch-environment": "0.2.0-rc.2",
106
+ "@deepseek-ai/dsh-llm": "0.2.0-rc.2",
107
+ "@deepseek-ai/dsh-llm-pi-ai": "0.2.0-rc.2",
108
+ "@deepseek-ai/dsh-sandbox": "0.2.0-rc.2",
109
+ "@deepseek-ai/dsh-scope": "0.2.0-rc.2",
110
+ "@deepseek-ai/dsh-session": "0.2.0-rc.2",
111
+ "@deepseek-ai/dsh-settings": "0.2.0-rc.2",
112
+ "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2",
113
+ "@deepseek-ai/schemastery": "3.18.4",
114
+ "@earendil-works/pi-ai": "0.87.1",
115
+ "@types/node": "^24.19.0",
95
116
  "@types/react": "~18.3.31",
96
- "@types/react-dom": "~18.3.7",
97
- "rolldown": "^1.2.4",
117
+ "rolldown": "^1.2.11",
98
118
  "typescript": "^6.0.3",
99
- "vitest": "^4.1.10"
119
+ "vitest": "^4.1.11"
100
120
  },
101
121
  "license": "MIT",
102
122
  "scripts": {