@awiki/dsh-plugin 0.2.5 → 0.3.0-rc.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 (110) hide show
  1. package/README.md +63 -23
  2. package/README.zh.md +55 -20
  3. package/THIRD_PARTY_NOTICES.md +1 -1
  4. package/cordis.patch.yml +0 -8
  5. package/lib/client.js +5452 -1849
  6. package/lib/client.js.map +1 -1
  7. package/lib/index.js +950 -38
  8. package/lib/model-proxy-contract.js +8 -1
  9. package/lib/provider.js +3 -1
  10. package/lib/{sdk-adapter-DKgkyApB.mjs → sdk-adapter-DLhLrLI6.mjs} +219 -2
  11. package/lib/typert.host.js +796 -49
  12. package/lib/typert.remote-client.d.ts +33 -1
  13. package/lib/typert.remote-client.d.ts.map +1 -1
  14. package/lib/typert.remote-client.js +796 -49
  15. package/lib/types/client/AwikiGroupDetails.d.ts +16 -0
  16. package/lib/types/client/AwikiGroupDetails.d.ts.map +1 -0
  17. package/lib/types/client/AwikiGroupDetails.js +108 -0
  18. package/lib/types/client/AwikiGroupDetails.js.map +1 -0
  19. package/lib/types/client/AwikiIdentityAccess.d.ts +21 -0
  20. package/lib/types/client/AwikiIdentityAccess.d.ts.map +1 -0
  21. package/lib/types/client/AwikiIdentityAccess.js +148 -0
  22. package/lib/types/client/AwikiIdentityAccess.js.map +1 -0
  23. package/lib/types/client/AwikiIdentityPage.d.ts +11 -0
  24. package/lib/types/client/AwikiIdentityPage.d.ts.map +1 -0
  25. package/lib/types/client/AwikiIdentityPage.js +8 -0
  26. package/lib/types/client/AwikiIdentityPage.js.map +1 -0
  27. package/lib/types/client/AwikiMail.d.ts +2 -1
  28. package/lib/types/client/AwikiMail.d.ts.map +1 -1
  29. package/lib/types/client/AwikiMail.js +153 -33
  30. package/lib/types/client/AwikiMail.js.map +1 -1
  31. package/lib/types/client/AwikiOnboarding.d.ts.map +1 -1
  32. package/lib/types/client/AwikiOnboarding.js +26 -9
  33. package/lib/types/client/AwikiOnboarding.js.map +1 -1
  34. package/lib/types/client/AwikiOverlay.d.ts +0 -5
  35. package/lib/types/client/AwikiOverlay.d.ts.map +1 -1
  36. package/lib/types/client/AwikiOverlay.js +136 -124
  37. package/lib/types/client/AwikiOverlay.js.map +1 -1
  38. package/lib/types/client/AwikiProfileCard.d.ts +9 -0
  39. package/lib/types/client/AwikiProfileCard.d.ts.map +1 -0
  40. package/lib/types/client/AwikiProfileCard.js +90 -0
  41. package/lib/types/client/AwikiProfileCard.js.map +1 -0
  42. package/lib/types/client/AwikiRecoveryForm.d.ts +24 -0
  43. package/lib/types/client/AwikiRecoveryForm.d.ts.map +1 -0
  44. package/lib/types/client/AwikiRecoveryForm.js +148 -0
  45. package/lib/types/client/AwikiRecoveryForm.js.map +1 -0
  46. package/lib/types/client/AwikiSettingsSection.d.ts +0 -2
  47. package/lib/types/client/AwikiSettingsSection.d.ts.map +1 -1
  48. package/lib/types/client/AwikiSettingsSection.js +13 -15
  49. package/lib/types/client/AwikiSettingsSection.js.map +1 -1
  50. package/lib/types/client/MentionText.d.ts +7 -0
  51. package/lib/types/client/MentionText.d.ts.map +1 -0
  52. package/lib/types/client/MentionText.js +10 -0
  53. package/lib/types/client/MentionText.js.map +1 -0
  54. package/lib/types/client/controller.d.ts +94 -2
  55. package/lib/types/client/controller.d.ts.map +1 -1
  56. package/lib/types/client/controller.js +466 -13
  57. package/lib/types/client/controller.js.map +1 -1
  58. package/lib/types/client/index.d.ts.map +1 -1
  59. package/lib/types/client/index.js +21 -4
  60. package/lib/types/client/index.js.map +1 -1
  61. package/lib/types/client/mail-list-cache.d.ts +15 -0
  62. package/lib/types/client/mail-list-cache.d.ts.map +1 -0
  63. package/lib/types/client/mail-list-cache.js +212 -0
  64. package/lib/types/client/mail-list-cache.js.map +1 -0
  65. package/lib/types/client/mentions.d.ts +51 -0
  66. package/lib/types/client/mentions.d.ts.map +1 -0
  67. package/lib/types/client/mentions.js +165 -0
  68. package/lib/types/client/mentions.js.map +1 -0
  69. package/lib/types/client/model-proxy-controller.d.ts +4 -0
  70. package/lib/types/client/model-proxy-controller.d.ts.map +1 -1
  71. package/lib/types/client/model-proxy-controller.js +68 -3
  72. package/lib/types/client/model-proxy-controller.js.map +1 -1
  73. package/lib/types/client/settings-locales.js +8 -8
  74. package/lib/types/client/settings-locales.js.map +1 -1
  75. package/lib/types/client/slots.d.ts +21 -2
  76. package/lib/types/client/slots.d.ts.map +1 -1
  77. package/lib/types/index.d.ts +40 -6
  78. package/lib/types/index.d.ts.map +1 -1
  79. package/lib/types/index.js +523 -23
  80. package/lib/types/index.js.map +1 -1
  81. package/lib/types/model-proxy-contract.d.ts +6 -0
  82. package/lib/types/model-proxy-contract.d.ts.map +1 -1
  83. package/lib/types/model-proxy-contract.js +6 -0
  84. package/lib/types/model-proxy-contract.js.map +1 -1
  85. package/lib/types/provider-api.d.ts +29 -1
  86. package/lib/types/provider-api.d.ts.map +1 -1
  87. package/lib/types/provider.d.ts.map +1 -1
  88. package/lib/types/provider.js +2 -0
  89. package/lib/types/provider.js.map +1 -1
  90. package/lib/types/sdk-adapter.d.ts +18 -1
  91. package/lib/types/sdk-adapter.d.ts.map +1 -1
  92. package/lib/types/sdk-adapter.js +244 -2
  93. package/lib/types/sdk-adapter.js.map +1 -1
  94. package/lib/types/sent-mail-store.d.ts +22 -0
  95. package/lib/types/sent-mail-store.d.ts.map +1 -0
  96. package/lib/types/sent-mail-store.js +246 -0
  97. package/lib/types/sent-mail-store.js.map +1 -0
  98. package/lib/types/types.d.ts +152 -2
  99. package/lib/types/types.d.ts.map +1 -1
  100. package/lib/types/types.js.map +1 -1
  101. package/package.json +15 -26
  102. package/lib/model-proxy.js +0 -383
  103. package/lib/types/client/model-account-settings-availability.d.ts +0 -4
  104. package/lib/types/client/model-account-settings-availability.d.ts.map +0 -1
  105. package/lib/types/client/model-account-settings-availability.js +0 -4
  106. package/lib/types/client/model-account-settings-availability.js.map +0 -1
  107. package/lib/types/model-proxy.d.ts +0 -14
  108. package/lib/types/model-proxy.d.ts.map +0 -1
  109. package/lib/types/model-proxy.js +0 -371
  110. package/lib/types/model-proxy.js.map +0 -1
@@ -1,371 +0,0 @@
1
- /** Host-only AWiki-authenticated model-proxy provider and loopback account API. */
2
- import z from '@deepseek-ai/schemastery';
3
- import { getOrCreateAnonymousUserId } from '@deepseek-ai/dsh-anonymous-user-id';
4
- import { credentialRef } from '@deepseek-ai/dsh-credentials';
5
- import { LlmError, resolveRetryPolicy } from '@deepseek-ai/dsh-llm';
6
- import { DeepSeekAdapter } from '@deepseek-ai/dsh-llm-deepseek';
7
- import { settingsNamespace } from '@deepseek-ai/dsh-settings';
8
- import { AWIKI_MODEL_PROXY_RPC_CHANNEL, AWIKI_MODEL_PROXY_RPC_ENDPOINTS, decodeModelProxyStatus, decodeModelProxyUsage, decodeRechargeOrder, } from "./model-proxy-contract.js";
9
- export const name = 'awiki-model-proxy';
10
- export const inject = ['awiki', 'llm', 'settings', 'agentDefaultModel', 'connection'];
11
- const SETTINGS = settingsNamespace('awiki-model-proxy');
12
- const PROVIDER = 'awiki-deepseek';
13
- const FLASH = 'deepseek-v4-flash';
14
- const PRO = 'deepseek-v4-pro';
15
- const MODELS = [FLASH, PRO];
16
- const PROVIDER_NAME = 'AWiki-hosted DeepSeek';
17
- const SettingsSchema = z.object({
18
- enabled: z.boolean().default(false),
19
- previousProvider: z.string(),
20
- previousModel: z.string(),
21
- previousReasoningEffort: z.string(),
22
- });
23
- export const Config = z.object({
24
- baseURL: z.string().default('https://model.awiki.info'),
25
- contextWindow: z.number().step(1).min(1).default(1_000_000),
26
- maxTokens: z.number().step(1).min(1).default(8_192),
27
- tokenRefreshSkewSeconds: z.number().step(1).min(0).default(60),
28
- });
29
- export function apply(ctx, input = {}) {
30
- const config = resolveConfig(input);
31
- const settings = ctx.settings.register(SETTINGS, SettingsSchema, {
32
- base: { enabled: false },
33
- applies: 'live',
34
- });
35
- const token = new ModelProxyToken(ctx, config);
36
- const adapter = new AwikiHostedDeepSeekAdapter({
37
- options: () => ({
38
- baseURL: new URL('/v1', config.baseURL).toString().replace(/\/$/, ''),
39
- apiKeyEnv: credentialRef('AWIKI_MODEL_PROXY_TOKEN'),
40
- defaults: {},
41
- maxTokens: config.maxTokens,
42
- defaultContextWindow: config.contextWindow,
43
- models: [
44
- { id: FLASH, name: 'DeepSeek V4 Flash', contextWindow: config.contextWindow, maxTokens: config.maxTokens },
45
- { id: PRO, name: 'DeepSeek V4 Pro', contextWindow: config.contextWindow, maxTokens: config.maxTokens },
46
- ],
47
- streamIdleTimeoutMs: 300_000,
48
- retryPolicy: resolveRetryPolicy(undefined, 'awiki-model-proxy: retryPolicy'),
49
- }),
50
- resolveApiKey: () => token.get(),
51
- resolveUserId: () => getOrCreateAnonymousUserId(),
52
- });
53
- let route;
54
- let directory;
55
- let sessionStatus;
56
- let sessionRefresh;
57
- const sync = () => {
58
- const enabled = settings.get().enabled;
59
- if (enabled && sessionStatus === 'active' && route === undefined) {
60
- directory = ctx.llm.registerConfigurableProviders([{
61
- provider: PROVIDER,
62
- displayName: PROVIDER_NAME,
63
- settingsNs: SETTINGS,
64
- settingsPath: [],
65
- }]);
66
- route = ctx.llm.registerAdapter([PROVIDER], adapter);
67
- }
68
- else if ((!enabled || sessionStatus !== 'active') && route !== undefined) {
69
- route();
70
- directory?.();
71
- route = undefined;
72
- directory = undefined;
73
- token.clear();
74
- }
75
- };
76
- const publishSession = (session) => {
77
- sessionStatus = session.status;
78
- token.clear();
79
- sync();
80
- };
81
- const refreshSession = () => {
82
- if (sessionStatus !== undefined)
83
- return Promise.resolve(sessionStatus);
84
- return sessionRefresh ??= ctx.awiki.getSession().then((result) => {
85
- if (!result.ok)
86
- return undefined;
87
- publishSession(result.value);
88
- return result.value.status;
89
- }).finally(() => { sessionRefresh = undefined; });
90
- };
91
- sync();
92
- void refreshSession();
93
- ctx.on('awiki/session', (session) => { publishSession(session); });
94
- ctx.on('settings/updated', (namespace) => {
95
- if (namespace === SETTINGS)
96
- sync();
97
- });
98
- ctx.effect(() => () => {
99
- route?.();
100
- directory?.();
101
- token.clear();
102
- }, 'awiki-model-proxy: release adapter and token');
103
- const handler = createRpcHandler(ctx, config, token, () => settings.get(), sync, async () => (await refreshSession()) === 'active');
104
- ctx.connection.rpc.handle(AWIKI_MODEL_PROXY_RPC_CHANNEL, handler, { authority: 'loopback' });
105
- }
106
- class ModelProxyToken {
107
- ctx;
108
- config;
109
- value;
110
- expiresAt = 0;
111
- pending;
112
- generation = 0;
113
- constructor(ctx, config) {
114
- this.ctx = ctx;
115
- this.config = config;
116
- }
117
- get() {
118
- if (this.value !== undefined && Date.now() < this.expiresAt - this.config.tokenRefreshSkewMs) {
119
- return Promise.resolve(this.value);
120
- }
121
- if (this.pending !== undefined)
122
- return this.pending;
123
- const generation = this.generation;
124
- const pending = this.refresh(generation).finally(() => {
125
- if (this.pending === pending)
126
- this.pending = undefined;
127
- });
128
- this.pending = pending;
129
- return pending;
130
- }
131
- clear() {
132
- this.generation += 1;
133
- this.value = undefined;
134
- this.expiresAt = 0;
135
- this.pending = undefined;
136
- }
137
- invalidate(value) {
138
- if (this.value === value)
139
- this.clear();
140
- }
141
- async refresh(generation) {
142
- const response = await this.ctx.awiki.externalHttpAuth.dispatch(new Request(new URL('/api/token', this.config.baseURL), { method: 'POST' }), request => fetch(request));
143
- if (!response.ok)
144
- throw await modelProxyError(response, 'AWiki-hosted DeepSeek authentication failed');
145
- const value = await response.json();
146
- if (!isRecord(value)
147
- || typeof value.access_token !== 'string'
148
- || value.access_token.length === 0
149
- || !Number.isSafeInteger(value.expires_in)
150
- || value.expires_in <= 0) {
151
- throw new LlmError('AWiki-hosted DeepSeek authentication returned an invalid response', 'AUTH');
152
- }
153
- const token = value;
154
- if (generation !== this.generation) {
155
- throw new LlmError('AWiki-hosted DeepSeek authentication state changed', 'AUTH');
156
- }
157
- this.value = token.access_token;
158
- this.expiresAt = Date.now() + token.expires_in * 1_000;
159
- return token.access_token;
160
- }
161
- }
162
- class AwikiHostedDeepSeekAdapter extends DeepSeekAdapter {
163
- providerInfo(provider) {
164
- return { id: provider, name: PROVIDER_NAME };
165
- }
166
- }
167
- function createRpcHandler(ctx, config, token, currentSettings, sync, sessionActive) {
168
- return async (endpoint, payload, signal) => {
169
- try {
170
- if (signal.aborted)
171
- throw new Error('request cancelled');
172
- if (!await sessionActive())
173
- throw new LlmError('Sign in to AWiki before using AWiki-hosted DeepSeek.', 'AUTH');
174
- if (endpoint === AWIKI_MODEL_PROXY_RPC_ENDPOINTS.status) {
175
- return { ok: true, value: await status(config, token, currentSettings().enabled, signal) };
176
- }
177
- if (endpoint === AWIKI_MODEL_PROXY_RPC_ENDPOINTS.usage) {
178
- const value = await authenticatedJson(config, token, '/api/usage', { signal });
179
- const usage = decodeModelProxyUsage(value);
180
- if (usage === undefined)
181
- throw new Error('invalid usage response');
182
- return { ok: true, value: usage };
183
- }
184
- if (endpoint === AWIKI_MODEL_PROXY_RPC_ENDPOINTS.createRecharge) {
185
- if (!isRecord(payload) || !Number.isSafeInteger(payload.amount_cents))
186
- return badRequest();
187
- const value = await authenticatedJson(config, token, '/api/recharge/orders', {
188
- method: 'POST',
189
- headers: {
190
- 'content-type': 'application/json',
191
- 'idempotency-key': globalThis.crypto.randomUUID(),
192
- },
193
- body: JSON.stringify({ amount_cents: payload.amount_cents }),
194
- signal,
195
- });
196
- const order = decodeRechargeOrder(value);
197
- if (order === undefined || order.payment_action === undefined)
198
- throw new Error('invalid recharge response');
199
- return { ok: true, value: order };
200
- }
201
- if (endpoint === AWIKI_MODEL_PROXY_RPC_ENDPOINTS.rechargeStatus) {
202
- if (!isRecord(payload) || typeof payload.out_trade_no !== 'string')
203
- return badRequest();
204
- const value = await authenticatedJson(config, token, `/api/recharge/orders/${encodeURIComponent(payload.out_trade_no)}`, { signal });
205
- const order = decodeRechargeOrder(value);
206
- if (order === undefined)
207
- throw new Error('invalid recharge status response');
208
- return { ok: true, value: order };
209
- }
210
- if (endpoint === AWIKI_MODEL_PROXY_RPC_ENDPOINTS.closeRecharge) {
211
- if (!isRecord(payload) || typeof payload.out_trade_no !== 'string')
212
- return badRequest();
213
- const response = await authenticatedResponse(config, token, `/api/recharge/orders/${encodeURIComponent(payload.out_trade_no)}/close`, { method: 'POST', signal });
214
- if (response.status !== 204)
215
- throw new Error('invalid recharge close response');
216
- return { ok: true, value: { closed: true } };
217
- }
218
- if (endpoint === AWIKI_MODEL_PROXY_RPC_ENDPOINTS.setEnabled) {
219
- if (!isRecord(payload) || typeof payload.enabled !== 'boolean')
220
- return badRequest();
221
- if (payload.enabled) {
222
- const current = await status(config, token, false, signal);
223
- if (!current.account.model_access_available) {
224
- return modelUnavailable('Account balance is required before enabling AWiki-hosted DeepSeek.');
225
- }
226
- const previous = ctx.agentDefaultModel.currentSelection();
227
- await ctx.settings.update(SETTINGS, {
228
- enabled: true,
229
- previousProvider: previous.provider,
230
- previousModel: previous.model,
231
- ...previous.reasoningEffort === undefined
232
- ? {}
233
- : { previousReasoningEffort: String(previous.reasoningEffort) },
234
- });
235
- sync();
236
- await ctx.agentDefaultModel.saveSelection({ provider: PROVIDER, model: FLASH });
237
- }
238
- else {
239
- const stored = currentSettings();
240
- await ctx.settings.update(SETTINGS, { enabled: false });
241
- sync();
242
- const selected = ctx.agentDefaultModel.currentSelection();
243
- if (selected.provider === PROVIDER) {
244
- await ctx.agentDefaultModel.saveSelection({
245
- provider: stored.previousProvider ?? 'deepseek-official',
246
- model: stored.previousModel ?? FLASH,
247
- ...stored.previousReasoningEffort === undefined
248
- ? {}
249
- : { reasoningEffort: stored.previousReasoningEffort },
250
- });
251
- }
252
- }
253
- return { ok: true, value: await status(config, token, payload.enabled, signal) };
254
- }
255
- return badRequest();
256
- }
257
- catch (error) {
258
- ctx.logger.warn('awiki-model-proxy: loopback request failed');
259
- ctx.logger.warn(error);
260
- return internal(displayMessage(error));
261
- }
262
- };
263
- }
264
- async function status(config, token, enabled, signal) {
265
- const [account, pendingRechargeOrder] = await Promise.all([
266
- authenticatedJson(config, token, '/api/account', { signal }),
267
- authenticatedJson(config, token, '/api/recharge/orders/pending', { signal }),
268
- ]);
269
- const value = {
270
- enabled,
271
- account,
272
- pending_recharge_order: pendingRechargeOrder,
273
- recommended_model: FLASH,
274
- models: MODELS,
275
- };
276
- const decoded = decodeModelProxyStatus(value);
277
- if (decoded === undefined)
278
- throw new Error('invalid account response');
279
- return decoded;
280
- }
281
- async function authenticatedJson(config, token, path, init) {
282
- const response = await authenticatedResponse(config, token, path, init);
283
- return response.json();
284
- }
285
- async function authenticatedResponse(config, token, path, init) {
286
- const send = async () => {
287
- const accessToken = await token.get();
288
- const response = await fetch(new URL(path, config.baseURL), {
289
- ...init,
290
- headers: { ...headersRecord(init.headers), authorization: `Bearer ${accessToken}` },
291
- });
292
- return { response, accessToken };
293
- };
294
- let result = await send();
295
- if (result.response.status === 401) {
296
- token.invalidate(result.accessToken);
297
- result = await send();
298
- }
299
- const { response } = result;
300
- if (!response.ok)
301
- throw await modelProxyError(response, `AWiki-hosted DeepSeek service returned HTTP ${response.status}`);
302
- return response;
303
- }
304
- async function modelProxyError(response, fallback) {
305
- let message = fallback;
306
- try {
307
- const body = await response.text();
308
- if (body !== '') {
309
- try {
310
- const value = JSON.parse(body);
311
- if (isRecord(value) && isRecord(value.error) && typeof value.error.message === 'string') {
312
- message = value.error.message;
313
- }
314
- }
315
- catch {
316
- message = body;
317
- }
318
- }
319
- }
320
- catch { }
321
- return new LlmError(message, response.status === 401 || response.status === 403 ? 'AUTH' : `HTTP_${response.status}`, {
322
- status: response.status,
323
- });
324
- }
325
- function resolveConfig(input) {
326
- const baseURL = new URL(input.baseURL ?? 'https://model.awiki.info');
327
- if (baseURL.username !== '' || baseURL.password !== '' || baseURL.search !== '' || baseURL.hash !== '') {
328
- throw new Error('awiki-model-proxy: baseURL must not contain credentials, query, or fragment');
329
- }
330
- if (baseURL.protocol !== 'https:'
331
- && !(baseURL.protocol === 'http:' && ['127.0.0.1', 'localhost', '::1'].includes(baseURL.hostname))) {
332
- throw new Error('awiki-model-proxy: baseURL must use HTTPS or loopback HTTP');
333
- }
334
- const contextWindow = positiveInteger(input.contextWindow ?? 1_000_000, 'contextWindow');
335
- const maxTokens = positiveInteger(input.maxTokens ?? 8_192, 'maxTokens');
336
- const skew = input.tokenRefreshSkewSeconds ?? 60;
337
- if (!Number.isSafeInteger(skew) || skew < 0) {
338
- throw new Error('awiki-model-proxy: tokenRefreshSkewSeconds must be a non-negative integer');
339
- }
340
- return { baseURL, contextWindow, maxTokens, tokenRefreshSkewMs: skew * 1_000 };
341
- }
342
- function positiveInteger(value, name) {
343
- if (!Number.isSafeInteger(value) || value <= 0)
344
- throw new Error(`awiki-model-proxy: ${name} must be a positive integer`);
345
- return value;
346
- }
347
- function headersRecord(headers) {
348
- return Object.fromEntries(new Headers(headers));
349
- }
350
- function isRecord(value) {
351
- return typeof value === 'object' && value !== null && !Array.isArray(value);
352
- }
353
- function displayMessage(error) {
354
- return error instanceof Error && error.message !== '' ? error.message : 'AWiki-hosted DeepSeek service is unavailable.';
355
- }
356
- function badRequest() {
357
- return {
358
- ok: false,
359
- error: { code: 'bad-request', message: 'The AWiki-hosted DeepSeek request is invalid.', details: { issues: [] } },
360
- };
361
- }
362
- function modelUnavailable(message) {
363
- return {
364
- ok: false,
365
- error: { code: 'model-unavailable', message, details: { provider: PROVIDER, model: FLASH } },
366
- };
367
- }
368
- function internal(message) {
369
- return { ok: false, error: { code: 'internal', message, details: {} } };
370
- }
371
- //# sourceMappingURL=model-proxy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"model-proxy.js","sourceRoot":"","sources":["../../src/model-proxy.ts"],"names":[],"mappings":"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"}