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/oidc.js ADDED
@@ -0,0 +1,208 @@
1
+ import { createHash, createHmac, randomBytes } from 'node:crypto';
2
+ import { request as httpsRequest } from 'node:https';
3
+ import { IWAN_APP_SECRET, validateIwanConfig } from "./iwan.js";
4
+ const AUTH_URL = 'https://auth.ivpn.ustc.edu.cn/login/oauth/authorize';
5
+ const ISSUER = 'https://auth.ivpn.ustc.edu.cn';
6
+ const TOKEN_URL = 'https://auth.ivpn.ustc.edu.cn/api/login/oauth/access_token';
7
+ const CONTROLLER = 'https://crtl.ivpn.ustc.edu.cn';
8
+ const CLIENT_ID = 'afc6479ffb531d71daef';
9
+ const REDIRECT = 'com.panabit.mobile://oauth2redirect';
10
+ const SCOPE = 'openid profile email offline_access';
11
+ const DOMAIN = 'iwan.ustc';
12
+ const APP_ID = 'controller-ustc';
13
+ const TRANSACTION_TTL_MS = 10 * 60 * 1_000;
14
+ const REQUEST_TIMEOUT_MS = 8_000;
15
+ const MAX_RESPONSE_BYTES = 1024 * 1024;
16
+ export class IwanAuthenticator {
17
+ requester;
18
+ pending = new Map();
19
+ constructor(requester = requestJson) {
20
+ this.requester = requester;
21
+ }
22
+ begin() {
23
+ const verifier = randomBytes(64).toString('base64url');
24
+ const challenge = createHash('sha256').update(verifier).digest('base64url');
25
+ const state = randomBytes(24).toString('base64url');
26
+ const expiresAt = Date.now() + TRANSACTION_TTL_MS;
27
+ for (const [key, transaction] of this.pending) {
28
+ if (transaction.expiresAt <= Date.now())
29
+ this.pending.delete(key);
30
+ }
31
+ this.pending.set(state, { verifier, expiresAt });
32
+ const url = new URL(AUTH_URL);
33
+ url.searchParams.set('client_id', CLIENT_ID);
34
+ url.searchParams.set('redirect_uri', REDIRECT);
35
+ url.searchParams.set('response_type', 'code');
36
+ url.searchParams.set('scope', SCOPE);
37
+ url.searchParams.set('code_challenge', challenge);
38
+ url.searchParams.set('code_challenge_method', 'S256');
39
+ url.searchParams.set('state', state);
40
+ return { authUrl: url.toString(), expiresInSeconds: TRANSACTION_TTL_MS / 1_000 };
41
+ }
42
+ async complete(callbackUrl) {
43
+ const { code, verifier } = this.takeTransaction(callbackUrl);
44
+ const tokenBody = Buffer.from(JSON.stringify({
45
+ client_id: CLIENT_ID,
46
+ code,
47
+ code_verifier: verifier,
48
+ redirect_uri: REDIRECT,
49
+ grant_type: 'authorization_code',
50
+ }));
51
+ const token = await this.requester(new URL(TOKEN_URL), tokenBody, { 'content-type': 'application/json' });
52
+ if (!isRecord(token) || typeof token.access_token !== 'string' || token.access_token.length === 0) {
53
+ throw new Error('OIDC response has no access token');
54
+ }
55
+ const username = typeof token.id_token === 'string' ? usernameFromIdToken(token.id_token) : undefined;
56
+ return this.fetchServers(token.access_token, username ?? 'unknown');
57
+ }
58
+ takeTransaction(callbackUrl) {
59
+ let url;
60
+ try {
61
+ url = new URL(callbackUrl);
62
+ }
63
+ catch (error) {
64
+ throw new TypeError('invalid callback URL', { cause: error });
65
+ }
66
+ if (url.protocol !== 'com.panabit.mobile:' || url.hostname !== 'oauth2redirect') {
67
+ throw new TypeError('callback URL has an unexpected scheme or target');
68
+ }
69
+ const state = url.searchParams.get('state');
70
+ const code = url.searchParams.get('code');
71
+ if (state === null || state.length === 0)
72
+ throw new TypeError('callback URL has no state');
73
+ if (code === null || code.length === 0)
74
+ throw new TypeError('callback URL has no authorization code');
75
+ const transaction = this.pending.get(state);
76
+ this.pending.delete(state);
77
+ if (transaction === undefined)
78
+ throw new TypeError('OIDC transaction is missing or already consumed');
79
+ if (transaction.expiresAt <= Date.now())
80
+ throw new TypeError('OIDC transaction expired');
81
+ const issuer = url.searchParams.get('iss');
82
+ if (issuer !== null && issuer.replace(/\/+$/u, '') !== ISSUER) {
83
+ throw new TypeError('callback URL has an unexpected issuer');
84
+ }
85
+ return { code, verifier: transaction.verifier };
86
+ }
87
+ async fetchServers(accessToken, username) {
88
+ const body = {
89
+ domain: DOMAIN,
90
+ type: 'android',
91
+ oem_name: 'panabit',
92
+ device_id: randomBytes(8).toString('hex'),
93
+ userName: username,
94
+ serverlist_version: '0',
95
+ ipfilter_version: '0',
96
+ branding_version: '0',
97
+ };
98
+ await this.controllerPost('/m/auth', body, accessToken);
99
+ await this.controllerPost('/m/keepalive', { ...body, type: 'keepalive' }, accessToken);
100
+ const response = await this.controllerPost('/m/config', body, accessToken);
101
+ const serverList = readServerList(response);
102
+ return validateIwanConfig({
103
+ domain: DOMAIN,
104
+ servers: serverList.map((server, index) => {
105
+ const host = requiredString(server, 'serverName');
106
+ const port = typeof server.serverPort === 'number' ? server.serverPort : 6001;
107
+ const lineUsername = requiredString(server, 'userName');
108
+ return {
109
+ id: `line-${createHash('sha256').update(`${index}\0${host}\0${port}\0${lineUsername}`).digest('hex').slice(0, 16)}`,
110
+ name: requiredString(server, 'name'),
111
+ host,
112
+ port,
113
+ username: lineUsername,
114
+ passWord: requiredString(server, 'passWord'),
115
+ };
116
+ }),
117
+ });
118
+ }
119
+ controllerPost(path, body, accessToken) {
120
+ const timestamp = Math.floor(Date.now() / 1_000).toString();
121
+ const nonce = randomBytes(16).toString('hex').toUpperCase();
122
+ const bytes = Buffer.from(JSON.stringify(body));
123
+ const bodyHash = createHash('sha256').update(bytes).digest('hex');
124
+ const canonical = `POST\n${path}\n\n${bodyHash}\n${timestamp}\n${nonce}`;
125
+ const signature = createHmac('sha256', IWAN_APP_SECRET).update(canonical).digest('hex');
126
+ return this.requester(new URL(path, CONTROLLER), bytes, {
127
+ authorization: `Bearer ${accessToken}`,
128
+ 'x-auth-appid': APP_ID,
129
+ 'x-auth-timestamp': timestamp,
130
+ 'x-auth-nonce': nonce,
131
+ 'x-auth-sign': signature,
132
+ 'content-type': 'application/json',
133
+ });
134
+ }
135
+ }
136
+ function requestJson(url, body, headers) {
137
+ return new Promise((resolve, reject) => {
138
+ const request = httpsRequest(url, {
139
+ method: 'POST',
140
+ agent: false,
141
+ headers: { ...headers, 'content-length': String(body.length), accept: 'application/json' },
142
+ }, response => {
143
+ const chunks = [];
144
+ let size = 0;
145
+ response.on('data', (chunk) => {
146
+ const bytes = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
147
+ size += bytes.length;
148
+ if (size > MAX_RESPONSE_BYTES) {
149
+ request.destroy(new Error('iWAN control response is too large'));
150
+ return;
151
+ }
152
+ chunks.push(bytes);
153
+ });
154
+ response.once('end', () => {
155
+ const status = response.statusCode ?? 0;
156
+ if (status < 200 || status >= 300) {
157
+ reject(new Error(`${url.hostname} answered HTTP ${status}`));
158
+ return;
159
+ }
160
+ try {
161
+ resolve(JSON.parse(Buffer.concat(chunks).toString('utf8')));
162
+ }
163
+ catch (error) {
164
+ reject(new Error(`${url.hostname} returned invalid JSON`, { cause: error }));
165
+ }
166
+ });
167
+ });
168
+ request.setTimeout(REQUEST_TIMEOUT_MS, () => request.destroy(new Error(`${url.hostname} connection timed out`)));
169
+ request.once('error', reject);
170
+ request.end(body);
171
+ });
172
+ }
173
+ function readServerList(value) {
174
+ if (!isRecord(value) || !isRecord(value.serverlist) || !Array.isArray(value.serverlist.serverlist)) {
175
+ throw new Error('controller response has no server list');
176
+ }
177
+ return value.serverlist.serverlist.map(server => {
178
+ if (!isRecord(server))
179
+ throw new Error('controller response contains an invalid server');
180
+ return server;
181
+ });
182
+ }
183
+ function requiredString(value, key) {
184
+ const result = value[key];
185
+ if (typeof result !== 'string' || result.length === 0)
186
+ throw new Error(`server has no ${key}`);
187
+ return result;
188
+ }
189
+ function usernameFromIdToken(token) {
190
+ const payload = token.split('.')[1];
191
+ if (payload === undefined)
192
+ return undefined;
193
+ try {
194
+ const value = JSON.parse(Buffer.from(payload, 'base64url').toString('utf8'));
195
+ if (!isRecord(value))
196
+ return undefined;
197
+ for (const key of ['name', 'preferred_username', 'sub']) {
198
+ if (typeof value[key] === 'string')
199
+ return value[key];
200
+ }
201
+ }
202
+ catch { }
203
+ return undefined;
204
+ }
205
+ function isRecord(value) {
206
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
207
+ }
208
+ //# sourceMappingURL=oidc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oidc.js","sourceRoot":"","sources":["../src/oidc.ts"],"names":[],"mappings":"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"}
package/lib/state.js CHANGED
@@ -1,20 +1,16 @@
1
1
  import { mkdir, readFile, rename, writeFile } from 'node:fs/promises';
2
- import { dirname, join } from 'node:path';
3
- import { homedir } from 'node:os';
2
+ import { dirname } from 'node:path';
3
+ import { dshCachePath, resolveDshHome } from '@deepseek-ai/dsh-home-paths';
4
4
  import { DEFAULT_MODEL } from "./constants.js";
5
5
  const FALLBACK = {
6
6
  models: [{ id: DEFAULT_MODEL, name: DEFAULT_MODEL }],
7
7
  };
8
- export function resolveDshHome() {
9
- const configured = process.env.DSH_HOME?.trim();
10
- return configured === undefined || configured.length === 0 ? join(homedir(), '.dsh') : configured;
11
- }
12
8
  export class StateStore {
13
9
  filename;
14
10
  current = structuredClone(FALLBACK);
15
11
  writes = Promise.resolve();
16
12
  constructor(dshHome = resolveDshHome()) {
17
- this.filename = join(dshHome, 'plugins', 'dsh-llm-ustc', 'state.json');
13
+ this.filename = dshCachePath({ dshHome }, 'dsh-llm-ustc', 'models.json');
18
14
  }
19
15
  async load() {
20
16
  try {
package/lib/state.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ export declare class UstcAdapter extends LlmAdapter {
7
7
  private readonly helper;
8
8
  private readonly catalog;
9
9
  private delegate;
10
+ private readonly auth;
10
11
  constructor(ctx: Context, helper: HelperManager, catalog: ModelCatalog);
11
12
  providerInfo(provider: string): {
12
13
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,EAEL,UAAU,EAIV,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAA;AAW7B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAiBtD,qBAAa,WAAY,SAAQ,UAAU;IAIvC,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAL1B,OAAO,CAAC,QAAQ,CAAmD;gBAGhD,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,YAAY;IAK/B,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;IAK5D,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB;IAKpD,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC;IAU9D,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAe3E,MAAM,CAAC,OAAO,EAAE,eAAe,GAAG,aAAa,CAAC,WAAW,CAAC;IAY5E,UAAU,IAAI,IAAI;YAIJ,eAAe;IAuB7B,OAAO,CAAC,cAAc;CAGvB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAOtE"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,EAEL,UAAU,EAIV,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAA;AAW7B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAatD,qBAAa,WAAY,SAAQ,UAAU;IAKvC,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAN1B,OAAO,CAAC,QAAQ,CAAmD;IACnE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA4F;gBAG9F,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,YAAY;IAK/B,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;IAK5D,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB;IAKpD,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC;IAa9D,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAe3E,MAAM,CAAC,OAAO,EAAE,eAAe,GAAG,aAAa,CAAC,WAAW,CAAC;IAY5E,UAAU,IAAI,IAAI;YAIJ,eAAe;IAwB7B,OAAO,CAAC,cAAc;CAGvB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAOtE"}
@@ -1,9 +1,5 @@
1
- import type { ClientContext } from '@deepseek-ai/dsh-client-runtime/client';
1
+ import type { Context as ClientContext } from '@deepseek-ai/cordis';
2
2
  declare const en: {
3
- readonly title: "USTC LLM";
4
- readonly intro: "Manage the USTC API credential, model catalog, and iWAN access.";
5
- readonly expand: "Show settings";
6
- readonly collapse: "Hide settings";
7
3
  readonly apiKeyLabel: "USTC API Key";
8
4
  readonly apiKeyPlaceholder: "Enter a new key";
9
5
  readonly configured: "Configured";
@@ -49,19 +45,10 @@ interface PublicServer {
49
45
  name: string;
50
46
  endpoint: string;
51
47
  }
52
- interface HelperStatus {
53
- protocol: 'v1';
54
- target: 'api.llm.ustc.edu.cn:443';
55
- route: 'direct' | 'iwan';
56
- iwanConfigured: boolean;
57
- selectedServerId?: string;
58
- tunnelRunning: boolean;
59
- }
60
48
  interface SettingsSnapshot {
61
49
  writable: boolean;
62
50
  revision: number;
63
51
  selectedServerId?: string;
64
- directReprobeSeconds: number;
65
52
  apiKey: {
66
53
  configured: boolean;
67
54
  source?: string;
@@ -73,7 +60,7 @@ interface SettingsSnapshot {
73
60
  writable: boolean;
74
61
  servers: PublicServer[];
75
62
  };
76
- helper?: HelperStatus;
63
+ usingIwan: boolean;
77
64
  models: {
78
65
  id: string;
79
66
  name: string;
@@ -91,6 +78,7 @@ interface ViewState {
91
78
  oidc?: OidcBegin | undefined;
92
79
  action?: Action | undefined;
93
80
  error?: string | undefined;
81
+ errorAction?: Action | undefined;
94
82
  }
95
83
  export declare class UstcSettingsController {
96
84
  private current;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.tsx"],"names":[],"mappings":"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"}
@@ -1,12 +1,22 @@
1
+ import type { Volatile } from '@deepseek-ai/cordis';
1
2
  import z from '@deepseek-ai/schemastery';
2
3
  export interface Config {
3
- selectedServerId?: string;
4
- directReprobeSeconds?: number;
4
+ apiKeyEnv: Volatile<string>;
5
+ selectedServerId: Volatile<string | undefined>;
6
+ directRecoverySeconds: Volatile<number>;
5
7
  }
6
- export declare const Config: z<Config>;
8
+ export declare const Config: z<Schemastery.ObjectS<NoInfer<{
9
+ apiKeyEnv: z<string, string, "volatile-defined">;
10
+ selectedServerId: z<string, string, "volatile">;
11
+ directRecoverySeconds: z<number, number, "volatile-defined">;
12
+ }>>, Schemastery.ObjectT<NoInfer<{
13
+ apiKeyEnv: z<string, string, "volatile-defined">;
14
+ selectedServerId: z<string, string, "volatile">;
15
+ directRecoverySeconds: z<number, number, "volatile-defined">;
16
+ }>>, "plain">;
7
17
  export interface ResolvedConfig {
8
18
  selectedServerId?: string;
9
- directReprobeSeconds: number;
19
+ directRecoverySeconds: number;
10
20
  }
11
21
  export declare function resolveConfig(config: Config): ResolvedConfig;
12
22
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,0BAA0B,CAAA;AAExC,MAAM,WAAW,MAAM;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED,eAAO,MAAM,MAAM,EAAE,CAAC,CAAC,MAAM,CAG3B,CAAA;AAEF,MAAM,WAAW,cAAc;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,oBAAoB,EAAE,MAAM,CAAA;CAC7B;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAU5D"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,CAAC,MAAM,0BAA0B,CAAA;AAGxC,MAAM,WAAW,MAAM;IACrB,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC3B,gBAAgB,EAAE,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IAC9C,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;CACxC;AAED,eAAO,MAAM,MAAM;;;;;;;;aAIjB,CAAA;AAEF,MAAM,WAAW,cAAc;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,qBAAqB,EAAE,MAAM,CAAA;CAC9B;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAU5D"}
@@ -3,9 +3,9 @@ export declare const PROVIDER_NAME = "USTC LLM";
3
3
  export declare const SETTINGS_NS = "llm-ustc";
4
4
  export declare const API_KEY_REF = "USTC_LLM_API_KEY";
5
5
  export declare const IWAN_CONFIG_REF = "USTC_LLM_IWAN_CONFIG";
6
- export declare const DEFAULT_MODEL = "deepseek-v4-flash-ascend";
6
+ export declare const DEFAULT_MODEL = "deepseek-flash";
7
7
  export declare const DEFAULT_CONTEXT_WINDOW = 262144;
8
8
  export declare const DEFAULT_MAX_TOKENS = 32768;
9
- export declare const HELPER_PROTOCOL = "v1";
10
- export declare const SETTINGS_ROUTE = "/_dsh/llm-ustc/settings";
9
+ export declare const HELPER_PROTOCOL = "v2";
10
+ export declare const SETTINGS_ROUTE = "/api/llm-ustc/settings";
11
11
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,SAAS,CAAA;AAC9B,eAAO,MAAM,aAAa,aAAa,CAAA;AACvC,eAAO,MAAM,WAAW,aAAa,CAAA;AACrC,eAAO,MAAM,WAAW,qBAAqB,CAAA;AAC7C,eAAO,MAAM,eAAe,yBAAyB,CAAA;AACrD,eAAO,MAAM,aAAa,6BAA6B,CAAA;AACvD,eAAO,MAAM,sBAAsB,SAAU,CAAA;AAC7C,eAAO,MAAM,kBAAkB,QAAS,CAAA;AACxC,eAAO,MAAM,eAAe,OAAO,CAAA;AACnC,eAAO,MAAM,cAAc,4BAA4B,CAAA"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,SAAS,CAAA;AAC9B,eAAO,MAAM,aAAa,aAAa,CAAA;AACvC,eAAO,MAAM,WAAW,aAAa,CAAA;AACrC,eAAO,MAAM,WAAW,qBAAqB,CAAA;AAC7C,eAAO,MAAM,eAAe,yBAAyB,CAAA;AACrD,eAAO,MAAM,aAAa,mBAAmB,CAAA;AAC7C,eAAO,MAAM,sBAAsB,SAAU,CAAA;AAC7C,eAAO,MAAM,kBAAkB,QAAS,CAAA;AACxC,eAAO,MAAM,eAAe,OAAO,CAAA;AACnC,eAAO,MAAM,cAAc,2BAA2B,CAAA"}
@@ -1,19 +1,10 @@
1
1
  import type { Context } from '@deepseek-ai/cordis';
2
2
  import type { ResolvedConfig } from './config.ts';
3
- import type { CachedModel, HelperStatus, IwanConfig, PublicServer } from './types.ts';
4
3
  export interface HelperEndpoint {
5
4
  baseURL: string;
6
5
  generation: number;
7
6
  headers: Readonly<Record<string, string>>;
8
7
  }
9
- export interface OidcBegin {
10
- authUrl: string;
11
- expiresInSeconds: number;
12
- }
13
- export interface OidcComplete {
14
- servers: PublicServer[];
15
- iwanConfig: IwanConfig;
16
- }
17
8
  export declare class HelperManager {
18
9
  private readonly ctx;
19
10
  private child;
@@ -22,30 +13,22 @@ export declare class HelperManager {
22
13
  private starting;
23
14
  private lifecycle;
24
15
  private closed;
25
- private recoveredModels;
16
+ private usingIwan;
17
+ private directRecovered;
26
18
  private config;
27
19
  private generation;
28
20
  constructor(ctx: Context, config: ResolvedConfig);
29
21
  reconfigure(config: ResolvedConfig): void;
30
22
  stageSelectedServer(serverId: string): () => void;
31
- onRecoveredModels(handler: (models: CachedModel[]) => Promise<void>): void;
23
+ onDirectRecovered(handler: () => Promise<void>): void;
32
24
  ensureStarted(): Promise<string>;
33
25
  endpoint(): Promise<HelperEndpoint>;
34
26
  stop(): Promise<void>;
35
27
  private stopNow;
36
28
  dispose(): Promise<void>;
37
- request<T>(path: string, init?: RequestInit, timeoutMs?: number): Promise<T>;
38
29
  fetch(path: string, init?: RequestInit): Promise<Response>;
39
- status(): Promise<HelperStatus>;
40
- refreshRoute(apiKey?: string): Promise<HelperStatus>;
41
- statusIfRunning(): Promise<HelperStatus | undefined>;
42
- servers(): Promise<PublicServer[]>;
43
- beginOidc(): Promise<OidcBegin>;
44
- completeOidc(callbackUrl: string): Promise<OidcComplete>;
45
- selectServer(serverId: string, apiKey?: string): Promise<void>;
30
+ get route(): boolean;
31
+ refreshRoute(): Promise<void>;
46
32
  private start;
47
33
  }
48
- export declare function parseHelperEvent(line: string): CachedModel[] | undefined;
49
- export declare function sanitizedEnvironment(source: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
50
- export declare function secretFingerprint(secret: string): string;
51
34
  //# sourceMappingURL=helper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../../src/helper.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAGlD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAQrF,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAC1C;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,UAAU,EAAE,UAAU,CAAA;CACvB;AAED,qBAAa,aAAa;IAWZ,OAAO,CAAC,QAAQ,CAAC,GAAG;IAVhC,OAAO,CAAC,KAAK,CAA4C;IACzD,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,eAAe,CAAwD;IAC/E,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,UAAU,CAAI;gBAEO,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc;IAIjE,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAMzC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,IAAI;IAMjD,iBAAiB,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAIpE,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAShC,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC;IAWnC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAKb,OAAO;IAef,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAKxB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,WAAgB,EAAE,SAAS,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC;IAkBhF,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAapE,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IAIzB,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAOpD,eAAe,IAAI,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAe1D,OAAO,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAIlC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC;IAIzB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IASxD,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAQtD,KAAK;CAkEpB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,GAAG,SAAS,CAYxE;AAYD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAQjF;AAyBD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAExD"}
1
+ {"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../../src/helper.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAGlD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAIjD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAC1C;AAED,qBAAa,aAAa;IAYZ,OAAO,CAAC,QAAQ,CAAC,GAAG;IAXhC,OAAO,CAAC,KAAK,CAA4C;IACzD,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,eAAe,CAAmC;IAC1D,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,UAAU,CAAI;gBAEO,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc;IAIjE,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAMzC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,IAAI;IAMjD,iBAAiB,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAI/C,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAShC,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC;IASnC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAKb,OAAO;IAgBf,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAKxB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAapE,IAAI,KAAK,IAAI,OAAO,CAEnB;IAEK,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;YAoBrB,KAAK;CA+EpB"}
@@ -3,5 +3,5 @@ import { Config, type Config as PluginConfig } from './config.ts';
3
3
  export declare const name = "dsh-llm-ustc";
4
4
  export declare const inject: string[];
5
5
  export { Config };
6
- export declare function apply(ctx: Context, config?: PluginConfig): Promise<() => Promise<void>>;
6
+ export declare function apply(ctx: Context, config: PluginConfig): Promise<() => Promise<void>>;
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAMlD,OAAO,EAAE,MAAM,EAAiB,KAAK,MAAM,IAAI,YAAY,EAAE,MAAM,aAAa,CAAA;AAOhF,eAAO,MAAM,IAAI,iBAAiB,CAAA;AAClC,eAAO,MAAM,MAAM,UAAqC,CAAA;AACxD,OAAO,EAAE,MAAM,EAAE,CAAA;AAEjB,wBAAsB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,GAAE,YAAiB,GAAG,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CA8BjG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAMlD,OAAO,EAAE,MAAM,EAAiB,KAAK,MAAM,IAAI,YAAY,EAAE,MAAM,aAAa,CAAA;AAOhF,eAAO,MAAM,IAAI,iBAAiB,CAAA;AAClC,eAAO,MAAM,MAAM,UAAqC,CAAA;AACxD,OAAO,EAAE,MAAM,EAAE,CAAA;AAEjB,wBAAsB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAyB5F"}
@@ -0,0 +1,8 @@
1
+ import type { IwanConfig, PublicServer, TunnelCredential } from './types.ts';
2
+ export declare const IWAN_APP_SECRET = "ca6a3532abd2986a03b86b3a";
3
+ export declare function parseIwanConfig(raw: string): IwanConfig;
4
+ export declare function validateIwanConfig(value: unknown): IwanConfig;
5
+ export declare function publicIwanServers(raw: string | undefined): PublicServer[];
6
+ export declare function selectedTunnel(raw: string | undefined, serverId: string | undefined): TunnelCredential | undefined;
7
+ export declare function decryptPassword(domain: string, username: string, encrypted: string): string;
8
+ //# sourceMappingURL=iwan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iwan.d.ts","sourceRoot":"","sources":["../../src/iwan.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAc,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAExF,eAAO,MAAM,eAAe,6BAA6B,CAAA;AAEzD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAQvD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAM7D;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,EAAE,CAWzE;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,gBAAgB,GAAG,SAAS,CAWlH;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAiB3F"}
@@ -0,0 +1,17 @@
1
+ import type { IwanConfig } from './types.ts';
2
+ export interface OidcBegin {
3
+ authUrl: string;
4
+ expiresInSeconds: number;
5
+ }
6
+ export type IwanRequester = (url: URL, body: Buffer, headers: Readonly<Record<string, string>>) => Promise<unknown>;
7
+ export declare class IwanAuthenticator {
8
+ private readonly requester;
9
+ private readonly pending;
10
+ constructor(requester?: IwanRequester);
11
+ begin(): OidcBegin;
12
+ complete(callbackUrl: string): Promise<IwanConfig>;
13
+ private takeTransaction;
14
+ private fetchServers;
15
+ private controllerPost;
16
+ }
17
+ //# sourceMappingURL=oidc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oidc.d.ts","sourceRoot":"","sources":["../../src/oidc.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAoB5C,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,MAAM,aAAa,GAAG,CAC1B,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,KACtC,OAAO,CAAC,OAAO,CAAC,CAAA;AAErB,qBAAa,iBAAiB;IAGhB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAFtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;gBAE5B,SAAS,GAAE,aAA2B;IAEnE,KAAK,IAAI,SAAS;IAoBZ,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAiBxD,OAAO,CAAC,eAAe;YAuBT,YAAY;IAiC1B,OAAO,CAAC,cAAc;CAiBvB"}
@@ -1,5 +1,4 @@
1
1
  import type { CachedModel, PluginState } from './types.ts';
2
- export declare function resolveDshHome(): string;
3
2
  export declare class StateStore {
4
3
  readonly filename: string;
5
4
  private current;
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/state.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAM1D,wBAAgB,cAAc,IAAI,MAAM,CAGvC;AAED,qBAAa,UAAU;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,OAAO,CAAC,OAAO,CAAyC;IACxD,OAAO,CAAC,MAAM,CAAmC;gBAErC,OAAO,SAAmB;IAIhC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAU3B,QAAQ,IAAI,WAAW;IAIvB,MAAM,IAAI,WAAW,EAAE;IAIjB,SAAS,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;YAUhD,OAAO;CAUtB;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,GAAG,WAAW,EAAE,CAc7E"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/state.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAM1D,qBAAa,UAAU;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,OAAO,CAAC,OAAO,CAAyC;IACxD,OAAO,CAAC,MAAM,CAAmC;gBAErC,OAAO,SAAmB;IAIhC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAU3B,QAAQ,IAAI,WAAW;IAIvB,MAAM,IAAI,WAAW,EAAE;IAIjB,SAAS,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;YAUhD,OAAO;CAUtB;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,GAAG,WAAW,EAAE,CAc7E"}
@@ -15,6 +15,12 @@ export interface PublicServer {
15
15
  name: string;
16
16
  endpoint: string;
17
17
  }
18
+ export interface TunnelCredential {
19
+ host: string;
20
+ port: number;
21
+ username: string;
22
+ password: string;
23
+ }
18
24
  export interface CachedModel {
19
25
  id: string;
20
26
  name: string;
@@ -23,12 +29,4 @@ export interface PluginState {
23
29
  models: CachedModel[];
24
30
  modelsUpdatedAt?: string;
25
31
  }
26
- export interface HelperStatus {
27
- protocol: 'v1';
28
- target: 'api.llm.ustc.edu.cn:443';
29
- route: 'direct' | 'iwan';
30
- iwanConfigured: boolean;
31
- selectedServerId?: string;
32
- tunnelRunning: boolean;
33
- }
34
32
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,UAAU,EAAE,CAAA;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,IAAI,CAAA;IACd,MAAM,EAAE,yBAAyB,CAAA;IACjC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAA;IACxB,cAAc,EAAE,OAAO,CAAA;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,aAAa,EAAE,OAAO,CAAA;CACvB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,UAAU,EAAE,CAAA;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB"}
@@ -1,13 +1,14 @@
1
1
  import type { Context } from '@deepseek-ai/cordis';
2
+ import type { Config } from './config.ts';
2
3
  import type { HelperManager } from './helper.ts';
3
4
  import type { ModelCatalog } from './model-catalog.ts';
5
+ import { IwanAuthenticator } from './oidc.ts';
4
6
  import type { StateStore } from './state.ts';
5
- import type { HelperStatus, PublicServer } from './types.ts';
7
+ import type { PublicServer } from './types.ts';
6
8
  export interface SettingsSnapshot {
7
9
  writable: boolean;
8
10
  revision: number;
9
11
  selectedServerId?: string;
10
- directReprobeSeconds: number;
11
12
  apiKey: {
12
13
  configured: boolean;
13
14
  source?: string;
@@ -19,7 +20,7 @@ export interface SettingsSnapshot {
19
20
  writable: boolean;
20
21
  servers: PublicServer[];
21
22
  };
22
- helper?: HelperStatus;
23
+ usingIwan: boolean;
23
24
  models: {
24
25
  id: string;
25
26
  name: string;
@@ -53,12 +54,14 @@ export declare class UstcWebBackend {
53
54
  private readonly helper;
54
55
  private readonly catalog;
55
56
  private readonly store;
56
- constructor(ctx: Context, helper: HelperManager, catalog: ModelCatalog, store: StateStore);
57
+ private readonly iwanAuth;
58
+ private readonly settingsId;
59
+ private readonly config?;
60
+ constructor(ctx: Context, helper: HelperManager, catalog: ModelCatalog, store: StateStore, iwanAuth?: IwanAuthenticator, settingsId?: string, config?: Config | undefined);
57
61
  snapshot(): Promise<SettingsSnapshot>;
58
62
  handle(request: WebRequest): Promise<unknown>;
59
63
  }
60
64
  export declare function installWeb(ctx: Context, backend: UstcWebBackend): void;
61
- export declare function publicIwanServers(raw: string | undefined): PublicServer[];
62
65
  export declare function publicMessage(error: unknown): string;
63
66
  export {};
64
67
  //# sourceMappingURL=web.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAMlD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAc,YAAY,EAAE,MAAM,YAAY,CAAA;AAExE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,oBAAoB,EAAE,MAAM,CAAA;IAC5B,MAAM,EAAE;QAAE,UAAU,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAA;IACnE,IAAI,EAAE;QACJ,UAAU,EAAE,OAAO,CAAA;QACnB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,QAAQ,EAAE,OAAO,CAAA;QACjB,OAAO,EAAE,YAAY,EAAE,CAAA;KACxB,CAAA;IACD,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACtC,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,KAAK,UAAU,GACX;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,MAAM,EAAE,aAAa,CAAA;CAAE,GACzB;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,GACvB;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,MAAM,EAAE,cAAc,CAAA;CAAE,GAC1B;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,GACtE;IAAE,MAAM,EAAE,YAAY,CAAA;CAAE,CAAA;AAE5B,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAHL,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,UAAU;IAG9B,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC;IA2BrC,MAAM,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;CA+CpD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAoBtE;AAMD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,EAAE,CAYzE;AAgED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAMpD"}
1
+ {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAKlD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,MAAM,EAAE;QAAE,UAAU,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAA;IACnE,IAAI,EAAE;QACJ,UAAU,EAAE,OAAO,CAAA;QACnB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,QAAQ,EAAE,OAAO,CAAA;QACjB,OAAO,EAAE,YAAY,EAAE,CAAA;KACxB,CAAA;IACD,SAAS,EAAE,OAAO,CAAA;IAClB,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACtC,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,KAAK,UAAU,GACX;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,MAAM,EAAE,aAAa,CAAA;CAAE,GACzB;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,GACvB;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,MAAM,EAAE,cAAc,CAAA;CAAE,GAC1B;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,GACtE;IAAE,MAAM,EAAE,YAAY,CAAA;CAAE,CAAA;AAE5B,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;gBANP,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,UAAU,EACjB,QAAQ,GAAE,iBAA2C,EACrD,UAAU,SAAc,EACxB,MAAM,CAAC,EAAE,MAAM,YAAA;IAG5B,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAyBrC,MAAM,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;CAoDpD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAkBtE;AA8DD,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAMpD"}