dsh-llm-ustc 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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;AAatD,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,EACL,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;IACxB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAPhC,OAAO,CAAC,QAAQ,CAAmD;IACnE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA4F;gBAG9F,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,YAAY,EACrB,aAAa,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC;IAK9C,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;IAiB7B,OAAO,CAAC,cAAc;CAGvB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAOtE"}
@@ -1,10 +1,13 @@
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";
4
+ readonly keySource: "Key source";
5
+ readonly manualKey: "Enter API Key";
6
+ readonly tokenworksKey: "Tokenworks sign-in";
7
+ readonly beginTokenworks: "Sign in to Tokenworks";
8
+ readonly awaitingLogin: "Waiting for browser sign-in...";
9
+ readonly cancelLogin: "Cancel sign-in";
10
+ readonly signedIn: "Signed in";
8
11
  readonly apiKeyPlaceholder: "Enter a new key";
9
12
  readonly configured: "Configured";
10
13
  readonly readOnly: "The active credential or settings provider is read-only.";
@@ -31,6 +34,8 @@ declare const en: {
31
34
  readonly models: "Model catalog";
32
35
  readonly syncModels: "Sync models";
33
36
  readonly syncingModels: "Syncing...";
37
+ readonly removeModel: "Remove model";
38
+ readonly modelsEmpty: "No models";
34
39
  readonly refreshedAt: "Refreshed";
35
40
  readonly never: "Never";
36
41
  readonly loading: "Loading...";
@@ -53,11 +58,19 @@ interface SettingsSnapshot {
53
58
  writable: boolean;
54
59
  revision: number;
55
60
  selectedServerId?: string;
61
+ keySource: 'manual' | 'tokenworks';
56
62
  apiKey: {
57
63
  configured: boolean;
58
64
  source?: string;
59
65
  writable: boolean;
60
66
  };
67
+ tokenworks: {
68
+ configured: boolean;
69
+ writable: boolean;
70
+ pending: boolean;
71
+ name?: string;
72
+ error?: string;
73
+ };
61
74
  iwan: {
62
75
  configured: boolean;
63
76
  source?: string;
@@ -75,18 +88,21 @@ interface OidcBegin {
75
88
  authUrl: string;
76
89
  expiresInSeconds: number;
77
90
  }
78
- type Action = 'load' | 'saveApiKey' | 'unsetApiKey' | 'beginOidc' | 'completeOidc' | 'logoutIwan' | 'refreshRoute' | 'selectServer' | 'syncModels';
91
+ type Action = 'load' | 'saveApiKey' | 'unsetApiKey' | 'selectKeySource' | 'beginTokenworks' | 'cancelTokenworks' | 'logoutTokenworks' | 'beginOidc' | 'completeOidc' | 'logoutIwan' | 'refreshRoute' | 'selectServer' | 'syncModels' | 'removeModel';
79
92
  interface ViewState {
80
93
  status: 'idle' | 'loading' | 'ready' | 'error';
81
94
  snapshot?: SettingsSnapshot | undefined;
82
95
  oidc?: OidcBegin | undefined;
96
+ tokenworksUrl?: string | undefined;
83
97
  action?: Action | undefined;
84
98
  error?: string | undefined;
99
+ errorAction?: Action | undefined;
85
100
  }
86
101
  export declare class UstcSettingsController {
87
102
  private current;
88
103
  private readonly listeners;
89
104
  private generation;
105
+ private polling;
90
106
  subscribe: (listener: () => void) => (() => void);
91
107
  snapshot: () => ViewState;
92
108
  private set;
@@ -95,6 +111,8 @@ export declare class UstcSettingsController {
95
111
  run<T>(action: Action, request: Record<string, unknown>, apply: (value: T, state: ViewState) => ViewState): Promise<void>;
96
112
  mutateSnapshot(action: Action, request?: Record<string, unknown>): Promise<void>;
97
113
  beginOidc(): Promise<void>;
114
+ beginTokenworks(): Promise<void>;
115
+ pollLogin(): Promise<void>;
98
116
  completeOidc(callbackUrl: string): Promise<void>;
99
117
  }
100
118
  export declare const inject: string[];
@@ -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,9 +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
- directRecoverySeconds?: number;
4
+ apiKeyEnv: Volatile<string>;
5
+ keySource: Volatile<'manual' | 'tokenworks'>;
6
+ selectedServerId: Volatile<string | undefined>;
7
+ directRecoverySeconds: Volatile<number>;
5
8
  }
6
- export declare const Config: z<Config>;
9
+ export declare const Config: z<Schemastery.ObjectS<NoInfer<{
10
+ apiKeyEnv: z<string, string, "volatile-defined">;
11
+ keySource: z<"manual" | "tokenworks", "manual" | "tokenworks", "volatile-defined">;
12
+ selectedServerId: z<string, string, "volatile">;
13
+ directRecoverySeconds: z<number, number, "volatile-defined">;
14
+ }>>, Schemastery.ObjectT<NoInfer<{
15
+ apiKeyEnv: z<string, string, "volatile-defined">;
16
+ keySource: z<"manual" | "tokenworks", "manual" | "tokenworks", "volatile-defined">;
17
+ selectedServerId: z<string, string, "volatile">;
18
+ directRecoverySeconds: z<number, number, "volatile-defined">;
19
+ }>>, "plain">;
7
20
  export interface ResolvedConfig {
8
21
  selectedServerId?: string;
9
22
  directRecoverySeconds: number;
@@ -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,qBAAqB,CAAC,EAAE,MAAM,CAAA;CAC/B;AAED,eAAO,MAAM,MAAM,EAAE,CAAC,CAAC,MAAM,CAG3B,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"}
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,SAAS,EAAE,QAAQ,CAAC,QAAQ,GAAG,YAAY,CAAC,CAAA;IAC5C,gBAAgB,EAAE,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IAC9C,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;CACxC;AAED,eAAO,MAAM,MAAM;;;;;;;;;;aAKjB,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"}
@@ -2,10 +2,11 @@ export declare const PROVIDER = "ustc";
2
2
  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
+ export declare const TOKENWORKS_SESSION_REF = "USTC_LLM_TOKENWORKS_SESSION";
5
6
  export declare const IWAN_CONFIG_REF = "USTC_LLM_IWAN_CONFIG";
6
- export declare const DEFAULT_MODEL = "deepseek-v4-flash-ascend";
7
+ export declare const DEFAULT_MODEL = "deepseek-flash";
7
8
  export declare const DEFAULT_CONTEXT_WINDOW = 262144;
8
9
  export declare const DEFAULT_MAX_TOKENS = 32768;
9
10
  export declare const HELPER_PROTOCOL = "v2";
10
- export declare const SETTINGS_ROUTE = "/_dsh/llm-ustc/settings";
11
+ export declare const SETTINGS_ROUTE = "/api/llm-ustc/settings";
11
12
  //# 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,sBAAsB,gCAAgC,CAAA;AACnE,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"}
@@ -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;AAQlD,OAAO,EAAE,MAAM,EAAiB,KAAK,MAAM,IAAI,YAAY,EAAE,MAAM,aAAa,CAAA;AAQhF,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,CAiC5F"}
@@ -1,12 +1,11 @@
1
- import type { Context } from '@deepseek-ai/cordis';
2
1
  import type { HelperManager } from './helper.ts';
3
2
  import { StateStore } from './state.ts';
4
3
  import type { CachedModel } from './types.ts';
5
4
  export declare class ModelCatalog {
6
- private readonly ctx;
5
+ private readonly resolveApiKey;
7
6
  private readonly helper;
8
7
  private readonly store;
9
- constructor(ctx: Context, helper: HelperManager, store: StateStore);
8
+ constructor(resolveApiKey: () => Promise<string>, helper: HelperManager, store: StateStore);
10
9
  models(): CachedModel[];
11
10
  refresh(signal?: AbortSignal): Promise<CachedModel[]>;
12
11
  accept(input: readonly CachedModel[]): Promise<CachedModel[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"model-catalog.d.ts","sourceRoot":"","sources":["../../src/model-catalog.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAmB,UAAU,EAAE,MAAM,YAAY,CAAA;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAE7C,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAFL,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,UAAU;IAKpC,MAAM,IAAI,WAAW,EAAE;IAIjB,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAoBrD,MAAM,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;CAMpE"}
1
+ {"version":3,"file":"model-catalog.d.ts","sourceRoot":"","sources":["../../src/model-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAmB,UAAU,EAAE,MAAM,YAAY,CAAA;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAE7C,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAFL,aAAa,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,EACpC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,UAAU;IAKpC,MAAM,IAAI,WAAW,EAAE;IAIjB,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAmBrD,MAAM,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;CAMpE"}
@@ -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;
@@ -9,6 +8,7 @@ export declare class StateStore {
9
8
  snapshot(): PluginState;
10
9
  models(): CachedModel[];
11
10
  setModels(models: readonly CachedModel[]): Promise<void>;
11
+ removeModel(id: string): Promise<void>;
12
12
  private persist;
13
13
  }
14
14
  export declare function normalizeModels(models: readonly CachedModel[]): CachedModel[];
@@ -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;IAUxD,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAK9B,OAAO;CAUtB;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,GAAG,WAAW,EAAE,CAc7E"}
@@ -0,0 +1,44 @@
1
+ import type { Context } from '@deepseek-ai/cordis';
2
+ export type TokenworksRequester = (url: string, init?: RequestInit) => Promise<Response>;
3
+ /** Only obtains a gateway key; inference still uses the existing USTC helper. */
4
+ export declare class TokenworksAuth {
5
+ private readonly ctx;
6
+ private readonly request;
7
+ private readonly publisherKey;
8
+ private pending;
9
+ private config;
10
+ private key;
11
+ private fetching;
12
+ private credentialWrites;
13
+ private generation;
14
+ private error;
15
+ private readonly ref;
16
+ constructor(ctx: Context, request?: TokenworksRequester, publisherKey?: string);
17
+ snapshot(): Promise<{
18
+ configured: boolean;
19
+ writable: boolean;
20
+ pending: boolean;
21
+ name?: string;
22
+ error?: string;
23
+ }>;
24
+ begin(): Promise<{
25
+ authUrl: string;
26
+ }>;
27
+ cancel(): void;
28
+ logout(): Promise<void>;
29
+ dispose(): void;
30
+ apiKey(): Promise<string>;
31
+ private closeLogin;
32
+ private complete;
33
+ private fetchKey;
34
+ private readSession;
35
+ private writeSession;
36
+ private exchange;
37
+ private sessionFromToken;
38
+ private bootstrap;
39
+ private loginConfig;
40
+ private loadLoginConfig;
41
+ private verifyIdToken;
42
+ private json;
43
+ }
44
+ //# sourceMappingURL=tokenworks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenworks.d.ts","sourceRoot":"","sources":["../../src/tokenworks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AA2ClD,MAAM,MAAM,mBAAmB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAExF,iFAAiF;AACjF,qBAAa,cAAc;IAWvB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAZ/B,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,GAAG,CAAqE;IAChF,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,gBAAgB,CAAmC;IAC3D,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAwC;gBAGzC,GAAG,EAAE,OAAO,EACZ,OAAO,GAAE,mBAAmC,EAC5C,YAAY,SAAgB;IAGzC,QAAQ,IAAI,OAAO,CAAC;QAAE,UAAU,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAWhH,KAAK,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IA0D3C,MAAM,IAAI,IAAI;IAMR,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAO7B,OAAO,IAAI,IAAI;IAKT,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAS/B,OAAO,CAAC,UAAU;YAOJ,QAAQ;YAmBR,QAAQ;YAkCR,WAAW;IAMzB,OAAO,CAAC,YAAY;YASN,QAAQ;IAYtB,OAAO,CAAC,gBAAgB;YAWV,SAAS;IAqBvB,OAAO,CAAC,WAAW;YAKL,eAAe;YA2Bf,aAAa;YAoBb,IAAI;CAKnB"}
@@ -1,18 +1,28 @@
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';
4
5
  import { IwanAuthenticator } from './oidc.ts';
5
6
  import type { StateStore } from './state.ts';
6
7
  import type { PublicServer } from './types.ts';
8
+ import { TokenworksAuth } from './tokenworks.ts';
7
9
  export interface SettingsSnapshot {
8
10
  writable: boolean;
9
11
  revision: number;
10
12
  selectedServerId?: string;
13
+ keySource: 'manual' | 'tokenworks';
11
14
  apiKey: {
12
15
  configured: boolean;
13
16
  source?: string;
14
17
  writable: boolean;
15
18
  };
19
+ tokenworks: {
20
+ configured: boolean;
21
+ writable: boolean;
22
+ pending: boolean;
23
+ name?: string;
24
+ error?: string;
25
+ };
16
26
  iwan: {
17
27
  configured: boolean;
18
28
  source?: string;
@@ -27,6 +37,12 @@ export interface SettingsSnapshot {
27
37
  modelsUpdatedAt?: string;
28
38
  }
29
39
  type WebRequest = {
40
+ action: 'selectKeySource';
41
+ keySource: 'manual' | 'tokenworks';
42
+ expectedRevision: number;
43
+ } | {
44
+ action: 'beginTokenworks' | 'cancelTokenworks' | 'logoutTokenworks';
45
+ } | {
30
46
  action: 'saveApiKey';
31
47
  value: string;
32
48
  } | {
@@ -47,6 +63,9 @@ type WebRequest = {
47
63
  expectedRevision: number;
48
64
  } | {
49
65
  action: 'syncModels';
66
+ } | {
67
+ action: 'removeModel';
68
+ modelId: string;
50
69
  };
51
70
  export declare class UstcWebBackend {
52
71
  private readonly ctx;
@@ -54,7 +73,10 @@ export declare class UstcWebBackend {
54
73
  private readonly catalog;
55
74
  private readonly store;
56
75
  private readonly iwanAuth;
57
- constructor(ctx: Context, helper: HelperManager, catalog: ModelCatalog, store: StateStore, iwanAuth?: IwanAuthenticator);
76
+ private readonly settingsId;
77
+ private readonly config?;
78
+ private readonly tokenworks;
79
+ constructor(ctx: Context, helper: HelperManager, catalog: ModelCatalog, store: StateStore, iwanAuth?: IwanAuthenticator, settingsId?: string, config?: Config | undefined, tokenworks?: TokenworksAuth);
58
80
  snapshot(): Promise<SettingsSnapshot>;
59
81
  handle(request: WebRequest): Promise<unknown>;
60
82
  }
@@ -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;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;gBAJR,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,UAAU,EACjB,QAAQ,GAAE,iBAA2C;IAGlE,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAyBrC,MAAM,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;CAkDpD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAoBtE;AAoED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAMpD"}
1
+ {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"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"}
package/lib/web.js CHANGED
@@ -1,37 +1,48 @@
1
1
  import { credentialRef } from '@deepseek-ai/dsh-credentials';
2
- import { SettingsConflictError, settingsNamespace } from '@deepseek-ai/dsh-settings';
2
+ import { SettingsConflictError } from '@deepseek-ai/dsh-settings';
3
3
  import { API_KEY_REF, IWAN_CONFIG_REF, SETTINGS_NS, SETTINGS_ROUTE } from "./constants.js";
4
+ import { resolveConfig } from "./config.js";
4
5
  import { parseIwanConfig, publicIwanServers } from "./iwan.js";
5
6
  import { IwanAuthenticator } from "./oidc.js";
7
+ import { TokenworksAuth } from "./tokenworks.js";
6
8
  export class UstcWebBackend {
7
9
  ctx;
8
10
  helper;
9
11
  catalog;
10
12
  store;
11
13
  iwanAuth;
12
- constructor(ctx, helper, catalog, store, iwanAuth = new IwanAuthenticator()) {
14
+ settingsId;
15
+ config;
16
+ tokenworks;
17
+ constructor(ctx, helper, catalog, store, iwanAuth = new IwanAuthenticator(), settingsId = SETTINGS_NS, config, tokenworks = new TokenworksAuth(ctx)) {
13
18
  this.ctx = ctx;
14
19
  this.helper = helper;
15
20
  this.catalog = catalog;
16
21
  this.store = store;
17
22
  this.iwanAuth = iwanAuth;
23
+ this.settingsId = settingsId;
24
+ this.config = config;
25
+ this.tokenworks = tokenworks;
18
26
  }
19
27
  async snapshot() {
20
- const descriptor = this.ctx.settings.describe({ redactSecrets: true }).find(row => row.ns === SETTINGS_NS);
28
+ const descriptor = this.ctx.settings.describe({ redactSecrets: true }).find(row => row.ns === this.settingsId);
21
29
  if (descriptor === undefined)
22
30
  throw new Error('llm-ustc settings namespace is not registered');
23
31
  const value = descriptor.value;
24
- const [apiKey, iwan, iwanSecret] = await Promise.all([
32
+ const [apiKey, iwan, iwanSecret, tokenworks] = await Promise.all([
25
33
  this.ctx.credentials.describe(credentialRef(API_KEY_REF)),
26
34
  this.ctx.credentials.describe(credentialRef(IWAN_CONFIG_REF)),
27
35
  this.ctx.credentials.resolve(credentialRef(IWAN_CONFIG_REF)),
36
+ this.tokenworks.snapshot(),
28
37
  ]);
29
38
  const state = this.store.snapshot();
30
39
  return {
31
40
  writable: this.ctx.settings.writable,
32
41
  revision: descriptor.revision,
33
42
  ...(value.selectedServerId === undefined ? {} : { selectedServerId: value.selectedServerId }),
43
+ keySource: value.keySource ?? 'manual',
34
44
  apiKey: publicCredential(apiKey),
45
+ tokenworks: { ...tokenworks, ...(tokenworks.error === undefined ? {} : { error: publicMessage(new Error(tokenworks.error)) }) },
35
46
  iwan: {
36
47
  ...publicCredential(iwan),
37
48
  servers: publicIwanServers(iwanSecret?.value),
@@ -43,6 +54,20 @@ export class UstcWebBackend {
43
54
  }
44
55
  async handle(request) {
45
56
  switch (request.action) {
57
+ case 'selectKeySource':
58
+ await this.ctx.settings.update(this.settingsId, { keySource: request.keySource }, request.expectedRevision);
59
+ this.tokenworks.cancel();
60
+ return this.snapshot();
61
+ case 'beginTokenworks': {
62
+ const login = await this.tokenworks.begin();
63
+ return { ...login, snapshot: await this.snapshot() };
64
+ }
65
+ case 'cancelTokenworks':
66
+ this.tokenworks.cancel();
67
+ return this.snapshot();
68
+ case 'logoutTokenworks':
69
+ await this.tokenworks.logout();
70
+ return this.snapshot();
46
71
  case 'saveApiKey': {
47
72
  const key = request.value.trim();
48
73
  if (key.length === 0)
@@ -64,8 +89,10 @@ export class UstcWebBackend {
64
89
  return { servers: publicIwanServers(JSON.stringify(config)), snapshot: await this.snapshot() };
65
90
  }
66
91
  case 'logoutIwan':
67
- await this.ctx.settings.mutate(settingsNamespace(SETTINGS_NS), [{ op: 'unset', path: ['selectedServerId'] }], request.expectedRevision);
92
+ await this.ctx.settings.mutate(this.settingsId, [{ op: 'unset', path: ['selectedServerId'] }], request.expectedRevision);
68
93
  await this.ctx.credentials.unset(credentialRef(IWAN_CONFIG_REF));
94
+ if (this.config !== undefined)
95
+ this.helper.reconfigure(resolveConfig(this.config));
69
96
  await this.helper.stop();
70
97
  return this.snapshot();
71
98
  case 'refreshRoute': {
@@ -79,88 +106,79 @@ export class UstcWebBackend {
79
106
  }
80
107
  const rollback = this.helper.stageSelectedServer(request.serverId);
81
108
  try {
82
- await this.ctx.settings.update(settingsNamespace(SETTINGS_NS), { selectedServerId: request.serverId }, request.expectedRevision);
109
+ await this.ctx.settings.update(this.settingsId, { selectedServerId: request.serverId }, request.expectedRevision);
83
110
  }
84
111
  catch (error) {
85
112
  rollback();
86
113
  throw error;
87
114
  }
115
+ if (this.config !== undefined)
116
+ this.helper.reconfigure(resolveConfig(this.config));
88
117
  await this.helper.refreshRoute();
89
118
  return this.snapshot();
90
119
  }
91
120
  case 'syncModels':
92
121
  await this.catalog.refresh();
93
122
  return this.snapshot();
123
+ case 'removeModel':
124
+ await this.store.removeModel(request.modelId);
125
+ return this.snapshot();
94
126
  }
95
127
  }
96
128
  }
97
129
  export function installWeb(ctx, backend) {
98
- ctx.inject(['webServer'], webCtx => {
99
- const dispose = webCtx.webServer.register({
100
- kind: 'exact',
130
+ ctx.inject(['connection'], connectionCtx => {
131
+ connectionCtx.connection.fetch.register({
101
132
  path: SETTINGS_ROUTE,
102
- handler: async (req, res) => {
133
+ methods: ['GET', 'POST'],
134
+ requestBody: 'buffered',
135
+ fetch: async (request) => {
103
136
  try {
104
- if (req.method === 'GET')
105
- return responseJson(res, 200, { ok: true, value: await backend.snapshot() });
106
- if (req.method !== 'POST')
107
- return responseError(res, 405, 'METHOD_NOT_ALLOWED', 'use GET or POST');
108
- if (!sameOriginPost(req))
109
- return responseError(res, 403, 'CROSS_ORIGIN', 'cross-origin request refused');
110
- const request = parseWebRequest(await readJson(req));
111
- responseJson(res, 200, { ok: true, value: await backend.handle(request) });
137
+ if (request.method === 'GET')
138
+ return responseJson(200, { ok: true, value: await backend.snapshot() });
139
+ const input = parseWebRequest(await readJson(request));
140
+ return responseJson(200, { ok: true, value: await backend.handle(input) });
112
141
  }
113
142
  catch (error) {
114
143
  const status = error instanceof SettingsConflictError ? 409 : error instanceof TypeError ? 400 : 500;
115
- responseError(res, status, error instanceof SettingsConflictError ? 'SETTINGS_CONFLICT' : 'REQUEST_FAILED', publicMessage(error));
144
+ return responseError(status, error instanceof SettingsConflictError ? 'SETTINGS_CONFLICT' : 'REQUEST_FAILED', publicMessage(error));
116
145
  }
117
146
  },
118
147
  });
119
- webCtx.effect(() => dispose, 'dsh-llm-ustc: web settings route');
120
148
  });
121
149
  }
122
150
  function publicCredential(info) {
123
151
  return { configured: info.configured, ...(info.source === undefined ? {} : { source: info.source }), writable: info.writable };
124
152
  }
125
- function responseJson(res, status, body) {
126
- const bytes = Buffer.from(JSON.stringify(body));
127
- res.setHeader('content-type', 'application/json; charset=utf-8');
128
- res.setHeader('content-length', String(bytes.length));
129
- res.setHeader('cache-control', 'no-store');
130
- res.setHeader('x-content-type-options', 'nosniff');
131
- res.setHeader('content-security-policy', "default-src 'none'; frame-ancestors 'none'");
132
- res.writeHead(status);
133
- res.end(bytes);
153
+ function responseJson(status, body) {
154
+ return new Response(JSON.stringify(body), { status, headers: {
155
+ 'content-type': 'application/json; charset=utf-8',
156
+ 'cache-control': 'no-store',
157
+ 'x-content-type-options': 'nosniff',
158
+ 'content-security-policy': "default-src 'none'; frame-ancestors 'none'",
159
+ } });
134
160
  }
135
- function responseError(res, status, code, message) {
136
- responseJson(res, status, { ok: false, error: { code, message } });
137
- }
138
- function sameOriginPost(req) {
139
- if (req.headers['sec-fetch-site'] === 'cross-site')
140
- return false;
141
- const origin = req.headers.origin;
142
- if (origin === undefined)
143
- return ['same-origin', 'same-site', 'none'].includes(req.headers['sec-fetch-site'] ?? '');
144
- if (req.headers.host === undefined)
145
- return false;
146
- try {
147
- const parsed = new URL(origin);
148
- return ['http:', 'https:'].includes(parsed.protocol) && parsed.host === req.headers.host;
149
- }
150
- catch {
151
- return false;
152
- }
161
+ function responseError(status, code, message) {
162
+ return responseJson(status, { ok: false, error: { code, message } });
153
163
  }
154
164
  async function readJson(req) {
155
- if (req.headers['content-type']?.split(';', 1)[0]?.trim().toLowerCase() !== 'application/json')
165
+ if (req.headers.get('content-type')?.split(';', 1)[0]?.trim().toLowerCase() !== 'application/json')
156
166
  throw new TypeError('Content-Type must be application/json');
167
+ const reader = req.body?.getReader();
168
+ if (reader === undefined)
169
+ throw new TypeError('request body is empty');
157
170
  const parts = [];
158
171
  let size = 0;
159
- for await (const part of req) {
160
- const bytes = Buffer.isBuffer(part) ? part : Buffer.from(part);
172
+ while (true) {
173
+ const { done, value } = await reader.read();
174
+ if (done)
175
+ break;
176
+ const bytes = Buffer.from(value);
161
177
  size += bytes.length;
162
- if (size > 64 * 1024)
178
+ if (size > 64 * 1024) {
179
+ await reader.cancel();
163
180
  throw new TypeError('request body exceeds 65536 bytes');
181
+ }
164
182
  parts.push(bytes);
165
183
  }
166
184
  if (parts.length === 0)
@@ -171,6 +189,10 @@ function parseWebRequest(value) {
171
189
  if (!isRecord(value) || typeof value.action !== 'string')
172
190
  throw new TypeError('request action is required');
173
191
  switch (value.action) {
192
+ case 'selectKeySource':
193
+ if ((value.keySource !== 'manual' && value.keySource !== 'tokenworks') || !Number.isSafeInteger(value.expectedRevision))
194
+ throw new TypeError('keySource and expectedRevision are required');
195
+ return { action: value.action, keySource: value.keySource, expectedRevision: value.expectedRevision };
174
196
  case 'saveApiKey':
175
197
  if (typeof value.value !== 'string')
176
198
  throw new TypeError('API Key must be a string');
@@ -179,6 +201,10 @@ function parseWebRequest(value) {
179
201
  if (typeof value.callbackUrl !== 'string')
180
202
  throw new TypeError('callbackUrl must be a string');
181
203
  return { action: value.action, callbackUrl: value.callbackUrl };
204
+ case 'removeModel':
205
+ if (typeof value.modelId !== 'string' || !value.modelId.trim())
206
+ throw new TypeError('modelId is required');
207
+ return { action: value.action, modelId: value.modelId };
182
208
  case 'selectServer':
183
209
  if (typeof value.serverId !== 'string' || !Number.isSafeInteger(value.expectedRevision))
184
210
  throw new TypeError('serverId and expectedRevision are required');
@@ -191,6 +217,9 @@ function parseWebRequest(value) {
191
217
  case 'beginOidc':
192
218
  case 'refreshRoute':
193
219
  case 'syncModels':
220
+ case 'beginTokenworks':
221
+ case 'cancelTokenworks':
222
+ case 'logoutTokenworks':
194
223
  return { action: value.action };
195
224
  default:
196
225
  throw new TypeError(`unsupported action: ${value.action}`);
package/lib/web.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"web.js","sourceRoot":"","sources":["../src/web.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web.js","sourceRoot":"","sources":["../src/web.ts"],"names":[],"mappings":"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"}