dsh-provider-qoder 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.
- package/README.md +9 -8
- package/README_CN.md +9 -8
- package/cordis.patch.yml +5 -0
- package/lib/client.js +408 -176
- package/lib/index.d.ts +113 -2
- package/lib/index.js +638 -79
- package/package.json +4 -2
package/lib/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import z from "@deepseek-ai/schemastery";
|
|
2
|
+
import { GenerateOptions, StreamChunk } from "@deepseek-ai/dsh-llm";
|
|
3
|
+
import { WebSearchProvider, WebSearchRequest, WebSearchResult } from "@deepseek-ai/dsh-web";
|
|
2
4
|
import { Context } from "@deepseek-ai/cordis";
|
|
3
|
-
|
|
4
5
|
//#region src/qoder/catalog.d.ts
|
|
5
6
|
/** Browser-safe Qoder model catalog types and built-in fallback entries. */
|
|
6
7
|
interface QoderCatalogModel {
|
|
@@ -38,12 +39,16 @@ interface QoderModelsByRegion {
|
|
|
38
39
|
global?: QoderCatalogModel[];
|
|
39
40
|
china?: QoderCatalogModel[];
|
|
40
41
|
}
|
|
42
|
+
type QoderWebSearchMode = 'auto' | 'always' | 'disabled';
|
|
41
43
|
interface Config {
|
|
42
44
|
region?: QoderRegion;
|
|
43
45
|
modelsByRegion?: QoderModelsByRegion;
|
|
44
46
|
/** @deprecated Migrated to modelsByRegion for the selected region. */
|
|
45
47
|
models?: QoderCatalogModel[];
|
|
46
48
|
streamIdleTimeoutMs?: number;
|
|
49
|
+
responseHeaderTimeoutMs?: number;
|
|
50
|
+
preserveThinking?: boolean;
|
|
51
|
+
webSearchMode?: QoderWebSearchMode;
|
|
47
52
|
}
|
|
48
53
|
declare const Config: z<Config>;
|
|
49
54
|
//#endregion
|
|
@@ -66,9 +71,37 @@ interface QoderQuota {
|
|
|
66
71
|
percentage: number;
|
|
67
72
|
unit: string;
|
|
68
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* Provider copy carried verbatim across the host/client seam.
|
|
76
|
+
*
|
|
77
|
+
* The host has no browser language, so it never picks one: the language map
|
|
78
|
+
* travels intact and the client resolves it against the active UI locale.
|
|
79
|
+
*/
|
|
80
|
+
interface QoderLocalizedText {
|
|
81
|
+
/** Language tag (e.g. 'zh-CN', 'en-US') to copy. */
|
|
82
|
+
values: Readonly<Record<string, string>>;
|
|
83
|
+
/** Provider copy that carries no language tag; empty when absent. */
|
|
84
|
+
fallback: string;
|
|
85
|
+
}
|
|
86
|
+
/** One dedicated (entitlement-scoped) resource package carved out of the plan. */
|
|
87
|
+
interface QoderResourcePackage {
|
|
88
|
+
id?: string;
|
|
89
|
+
title?: QoderLocalizedText;
|
|
90
|
+
description?: QoderLocalizedText;
|
|
91
|
+
total: number;
|
|
92
|
+
used: number;
|
|
93
|
+
remaining: number;
|
|
94
|
+
percentage: number;
|
|
95
|
+
unit: string;
|
|
96
|
+
/** Package expiry, distinct from the usage-level subscription expiry. */
|
|
97
|
+
expiresAt?: string;
|
|
98
|
+
available?: boolean;
|
|
99
|
+
status?: string;
|
|
100
|
+
}
|
|
69
101
|
interface QoderQuotaUsage {
|
|
70
102
|
userQuota?: QoderQuota;
|
|
71
103
|
orgResourcePackage?: QoderQuota;
|
|
104
|
+
dedicatedResourcePackages?: QoderResourcePackage[];
|
|
72
105
|
totalUsagePercentage?: number;
|
|
73
106
|
isQuotaExceeded?: boolean;
|
|
74
107
|
expiresAt?: string;
|
|
@@ -114,4 +147,82 @@ interface QoderAccountInfo {
|
|
|
114
147
|
updatedAt: string;
|
|
115
148
|
}
|
|
116
149
|
//#endregion
|
|
117
|
-
|
|
150
|
+
//#region src/qoder/transport/logging.d.ts
|
|
151
|
+
/** Bounded, redacted diagnostics internal to the Qoder transport. */
|
|
152
|
+
interface QoderLogger {
|
|
153
|
+
debug?(message: string, ...details: unknown[]): void;
|
|
154
|
+
warn?(message: string, ...details: unknown[]): void;
|
|
155
|
+
error?(message: string, ...details: unknown[]): void;
|
|
156
|
+
}
|
|
157
|
+
//#endregion
|
|
158
|
+
//#region src/qoder/transport/endpoints.d.ts
|
|
159
|
+
/** Path of the center web search route. */
|
|
160
|
+
declare const qoderWebSearchPath = "/api/v1/webSearch/oneSearch";
|
|
161
|
+
declare function getQoderWebSearchUrl(region?: QoderRegion): string;
|
|
162
|
+
//#endregion
|
|
163
|
+
//#region src/qoder/transport/wire/cosy.d.ts
|
|
164
|
+
interface CosyCredentials {
|
|
165
|
+
userID: string;
|
|
166
|
+
authToken: string;
|
|
167
|
+
name: string;
|
|
168
|
+
email: string;
|
|
169
|
+
machineID?: string;
|
|
170
|
+
}
|
|
171
|
+
//#endregion
|
|
172
|
+
//#region src/qoder/transport/search.d.ts
|
|
173
|
+
interface QoderSearchClientOptions {
|
|
174
|
+
fetch?: typeof fetch;
|
|
175
|
+
region?: QoderRegion;
|
|
176
|
+
logger?: QoderLogger;
|
|
177
|
+
timeoutMs?: number;
|
|
178
|
+
resolveCredentials: (signal?: AbortSignal) => Promise<CosyCredentials>;
|
|
179
|
+
refreshCredentials?: (signal?: AbortSignal) => Promise<CosyCredentials>;
|
|
180
|
+
now?: () => number;
|
|
181
|
+
}
|
|
182
|
+
declare class QoderSearchClient {
|
|
183
|
+
private readonly fetchImpl;
|
|
184
|
+
private readonly region;
|
|
185
|
+
private readonly logger?;
|
|
186
|
+
private readonly timeoutMs;
|
|
187
|
+
private readonly resolveCredentials;
|
|
188
|
+
private readonly refreshCredentials?;
|
|
189
|
+
private readonly now;
|
|
190
|
+
constructor(options: QoderSearchClientOptions);
|
|
191
|
+
search(request: WebSearchRequest, signal?: AbortSignal): Promise<WebSearchResult>;
|
|
192
|
+
private attempt;
|
|
193
|
+
}
|
|
194
|
+
//#endregion
|
|
195
|
+
//#region src/qoder/transport/index.d.ts
|
|
196
|
+
interface QoderTransport {
|
|
197
|
+
stream(options: GenerateOptions, model?: QoderCatalogModel): AsyncIterable<StreamChunk>;
|
|
198
|
+
discoverModels(signal?: AbortSignal): Promise<readonly QoderCatalogModel[]>;
|
|
199
|
+
readAccount(options?: {
|
|
200
|
+
force?: boolean;
|
|
201
|
+
signal?: AbortSignal;
|
|
202
|
+
}): Promise<QoderAccountInfo>;
|
|
203
|
+
searchWeb(request: WebSearchRequest, signal?: AbortSignal): Promise<WebSearchResult>;
|
|
204
|
+
}
|
|
205
|
+
//#endregion
|
|
206
|
+
//#region src/dsh/search-provider.d.ts
|
|
207
|
+
declare const QODER_SEARCH_PROVIDER_ID = "qoder";
|
|
208
|
+
interface QoderSearchProviderOptions {
|
|
209
|
+
ctx: Context;
|
|
210
|
+
resolveTransport?: () => QoderTransport;
|
|
211
|
+
searchClient?: QoderSearchClient;
|
|
212
|
+
getWebSearchMode: () => QoderWebSearchMode;
|
|
213
|
+
fallbackProvider?: WebSearchProvider;
|
|
214
|
+
}
|
|
215
|
+
declare class QoderSearchProvider implements WebSearchProvider {
|
|
216
|
+
readonly id = "qoder";
|
|
217
|
+
private readonly ctx;
|
|
218
|
+
private readonly resolveTransport?;
|
|
219
|
+
private readonly searchClient?;
|
|
220
|
+
private readonly getWebSearchMode;
|
|
221
|
+
private readonly fallbackProvider?;
|
|
222
|
+
constructor(options: QoderSearchProviderOptions);
|
|
223
|
+
available(): boolean;
|
|
224
|
+
search(request: WebSearchRequest, signal?: AbortSignal): Promise<WebSearchResult>;
|
|
225
|
+
private resolveFallback;
|
|
226
|
+
}
|
|
227
|
+
//#endregion
|
|
228
|
+
export { Config, QODER_SEARCH_PROVIDER_ID, type QoderAccountInfo, type QoderCatalogModel, type QoderModelsByRegion, type QoderRegion, QoderSearchClient, type QoderSearchClientOptions, QoderSearchProvider, type QoderSearchProviderOptions, type QoderWebSearchMode, apply, getQoderWebSearchUrl, inject, name, qoderWebSearchPath };
|