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.
- package/README.md +15 -10
- package/lib/adapter.js +24 -21
- package/lib/adapter.js.map +1 -1
- package/lib/client.js +107 -121
- package/lib/config.js +9 -7
- package/lib/config.js.map +1 -1
- package/lib/constants.js +3 -3
- package/lib/constants.js.map +1 -1
- package/lib/helper.js +54 -131
- package/lib/helper.js.map +1 -1
- package/lib/index.js +9 -14
- package/lib/index.js.map +1 -1
- package/lib/iwan.js +93 -0
- package/lib/iwan.js.map +1 -0
- package/lib/model-catalog.js +1 -1
- package/lib/model-catalog.js.map +1 -1
- package/lib/oidc.js +208 -0
- package/lib/oidc.js.map +1 -0
- package/lib/state.js +3 -7
- package/lib/state.js.map +1 -1
- package/lib/types/adapter.d.ts +1 -0
- package/lib/types/adapter.d.ts.map +1 -1
- package/lib/types/client/index.d.ts +3 -15
- package/lib/types/client/index.d.ts.map +1 -1
- package/lib/types/config.d.ts +14 -4
- package/lib/types/config.d.ts.map +1 -1
- package/lib/types/constants.d.ts +3 -3
- package/lib/types/constants.d.ts.map +1 -1
- package/lib/types/helper.d.ts +5 -22
- package/lib/types/helper.d.ts.map +1 -1
- package/lib/types/index.d.ts +1 -1
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/iwan.d.ts +8 -0
- package/lib/types/iwan.d.ts.map +1 -0
- package/lib/types/oidc.d.ts +17 -0
- package/lib/types/oidc.d.ts.map +1 -0
- package/lib/types/state.d.ts +0 -1
- package/lib/types/state.d.ts.map +1 -1
- package/lib/types/types.d.ts +6 -8
- package/lib/types/types.d.ts.map +1 -1
- package/lib/types/web.d.ts +8 -5
- package/lib/types/web.d.ts.map +1 -1
- package/lib/web.js +62 -79
- package/lib/web.js.map +1 -1
- package/locale/en.json +6 -0
- package/locale/zh.json +6 -0
- 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
|
package/lib/oidc.js.map
ADDED
|
@@ -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
|
|
3
|
-
import {
|
|
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 =
|
|
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":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"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"}
|
package/lib/types/adapter.d.ts
CHANGED
|
@@ -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;
|
|
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/
|
|
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
|
-
|
|
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":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.tsx"],"names":[],"mappings":"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"}
|
package/lib/types/config.d.ts
CHANGED
|
@@ -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
|
-
|
|
4
|
-
|
|
4
|
+
apiKeyEnv: Volatile<string>;
|
|
5
|
+
selectedServerId: Volatile<string | undefined>;
|
|
6
|
+
directRecoverySeconds: Volatile<number>;
|
|
5
7
|
}
|
|
6
|
-
export declare const Config: z<
|
|
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
|
-
|
|
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;
|
|
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"}
|
package/lib/types/constants.d.ts
CHANGED
|
@@ -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-
|
|
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 = "
|
|
10
|
-
export declare const SETTINGS_ROUTE = "/
|
|
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,
|
|
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"}
|
package/lib/types/helper.d.ts
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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
|
-
|
|
40
|
-
refreshRoute(
|
|
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;
|
|
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"}
|
package/lib/types/index.d.ts
CHANGED
|
@@ -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
|
|
6
|
+
export declare function apply(ctx: Context, config: PluginConfig): Promise<() => Promise<void>>;
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/types/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/lib/types/state.d.ts
CHANGED
package/lib/types/state.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/lib/types/types.d.ts
CHANGED
|
@@ -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
|
package/lib/types/types.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/lib/types/web.d.ts
CHANGED
|
@@ -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 {
|
|
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
|
-
|
|
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
|
-
|
|
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
|
package/lib/types/web.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"
|
|
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"}
|