@eddyskywalker/dsh-chatgpt-subscription 0.21.0 → 0.23.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/CHANGELOG.md +46 -0
- package/README.md +56 -3
- package/lib/client.js +2719 -491
- package/lib/client.js.map +1 -1
- package/lib/index.js +8041 -3092
- package/lib/types/client/glm-coding-plan/GlmCodingPlanSection.d.ts.map +1 -1
- package/lib/types/client/glm-coding-plan/locales.d.ts +17 -26
- package/lib/types/client/glm-coding-plan/locales.d.ts.map +1 -1
- package/lib/types/client/glm-coding-plan/styles.d.ts +2 -2
- package/lib/types/client/glm-coding-plan/styles.d.ts.map +1 -1
- package/lib/types/client/hub/brand-icons.d.ts +2 -2
- package/lib/types/client/hub/brand-icons.d.ts.map +1 -1
- package/lib/types/client/hub/providers.d.ts.map +1 -1
- package/lib/types/client/index.d.ts +2 -0
- package/lib/types/client/index.d.ts.map +1 -1
- package/lib/types/client/ollama/OllamaSection.d.ts.map +1 -1
- package/lib/types/client/ollama/api.d.ts +13 -0
- package/lib/types/client/ollama/api.d.ts.map +1 -1
- package/lib/types/client/ollama/locales.d.ts +24 -0
- package/lib/types/client/ollama/locales.d.ts.map +1 -1
- package/lib/types/client/step-code/StepCodeComposerQuota.d.ts +52 -0
- package/lib/types/client/step-code/StepCodeComposerQuota.d.ts.map +1 -0
- package/lib/types/client/step-code/StepCodeSection.d.ts +28 -0
- package/lib/types/client/step-code/StepCodeSection.d.ts.map +1 -0
- package/lib/types/client/step-code/api.d.ts +4 -0
- package/lib/types/client/step-code/api.d.ts.map +1 -0
- package/lib/types/client/step-code/locales.d.ts +648 -0
- package/lib/types/client/step-code/locales.d.ts.map +1 -0
- package/lib/types/client/step-code/styles.d.ts +28 -0
- package/lib/types/client/step-code/styles.d.ts.map +1 -0
- package/lib/types/client/step-code/useStepCodeSection.d.ts +122 -0
- package/lib/types/client/step-code/useStepCodeSection.d.ts.map +1 -0
- package/lib/types/host/antigravity/account-pool.d.ts.map +1 -1
- package/lib/types/host/common/account-pool.d.ts +38 -3
- package/lib/types/host/common/account-pool.d.ts.map +1 -1
- package/lib/types/host/common/model-request-control.d.ts +1 -1
- package/lib/types/host/common/model-request-control.d.ts.map +1 -1
- package/lib/types/host/common/request-diagnostics.d.ts +1 -1
- package/lib/types/host/common/request-diagnostics.d.ts.map +1 -1
- package/lib/types/host/glm-coding-plan/account-pool.d.ts.map +1 -1
- package/lib/types/host/glm-coding-plan/adapter.d.ts +1 -14
- package/lib/types/host/glm-coding-plan/adapter.d.ts.map +1 -1
- package/lib/types/host/glm-coding-plan/client.d.ts.map +1 -1
- package/lib/types/host/glm-coding-plan/types.d.ts +0 -10
- package/lib/types/host/glm-coding-plan/types.d.ts.map +1 -1
- package/lib/types/host/ollama/adapter.d.ts +26 -2
- package/lib/types/host/ollama/adapter.d.ts.map +1 -1
- package/lib/types/host/ollama/client.d.ts +16 -1
- package/lib/types/host/ollama/client.d.ts.map +1 -1
- package/lib/types/host/ollama/routes.d.ts +1 -1
- package/lib/types/host/ollama/routes.d.ts.map +1 -1
- package/lib/types/host/ollama/types.d.ts +74 -8
- package/lib/types/host/ollama/types.d.ts.map +1 -1
- package/lib/types/host/step-code/account-pool.d.ts +187 -0
- package/lib/types/host/step-code/account-pool.d.ts.map +1 -0
- package/lib/types/host/step-code/adapter.d.ts +142 -0
- package/lib/types/host/step-code/adapter.d.ts.map +1 -0
- package/lib/types/host/step-code/adopt.d.ts +201 -0
- package/lib/types/host/step-code/adopt.d.ts.map +1 -0
- package/lib/types/host/step-code/cache-stats.d.ts +181 -0
- package/lib/types/host/step-code/cache-stats.d.ts.map +1 -0
- package/lib/types/host/step-code/client.d.ts +331 -0
- package/lib/types/host/step-code/client.d.ts.map +1 -0
- package/lib/types/host/step-code/mapper.d.ts +301 -0
- package/lib/types/host/step-code/mapper.d.ts.map +1 -0
- package/lib/types/host/step-code/model-catalog.d.ts +230 -0
- package/lib/types/host/step-code/model-catalog.d.ts.map +1 -0
- package/lib/types/host/step-code/oauth.d.ts +265 -0
- package/lib/types/host/step-code/oauth.d.ts.map +1 -0
- package/lib/types/host/step-code/routes.d.ts +126 -0
- package/lib/types/host/step-code/routes.d.ts.map +1 -0
- package/lib/types/host/step-code/token-store.d.ts +325 -0
- package/lib/types/host/step-code/token-store.d.ts.map +1 -0
- package/lib/types/host/step-code/types.d.ts +488 -0
- package/lib/types/host/step-code/types.d.ts.map +1 -0
- package/lib/types/host/workbuddy/adapter.d.ts.map +1 -1
- package/lib/types/index.d.ts +5 -1
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/shared/ollama-contracts.d.ts +30 -0
- package/lib/types/shared/ollama-contracts.d.ts.map +1 -1
- package/lib/types/shared/step-code-contracts.d.ts +438 -0
- package/lib/types/shared/step-code-contracts.d.ts.map +1 -0
- package/package.json +1 -1
- package/lib/types/host/glm-coding-plan/signing.d.ts +0 -323
- package/lib/types/host/glm-coding-plan/signing.d.ts.map +0 -1
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Step Code(Step Plan 订阅)线路的凭据 / 模型设置 / 偏好三件套。
|
|
3
|
+
*
|
|
4
|
+
* 本线路的凭据有一个别的线路都没有的性质,先说清楚,因为它决定了本文件几乎所有设计:
|
|
5
|
+
*
|
|
6
|
+
* **凭据是静态的。** Step 的 api_key 不是会话令牌——它不轮换、不刷新、不过期
|
|
7
|
+
* (逐字:官方把它存成 `expires: Number.MAX_SAFE_INTEGER`,`step-provider/index.ts:367`,
|
|
8
|
+
* 且 `refreshStepOAuth` 对任何别的 refresh 一律抛错)。所以:
|
|
9
|
+
*
|
|
10
|
+
* - 本文件**没有** refresh 相关的一切(没有提前刷新量、没有抖动、没有刷新链);
|
|
11
|
+
* - 号池不得因为 `expires` 是 MAX_SAFE_INTEGER 就判成异常——那正是「永不过期」的写法;
|
|
12
|
+
* - 号池不得轮换它,一个池里的账号只有「能用」与「被用户撤销」两种状态,
|
|
13
|
+
* 后者由上游拒绝表现为鉴权失败,不是本地时钟到期。
|
|
14
|
+
*
|
|
15
|
+
* 第二件必须记住的事:**本线路自己拥有它的凭据副本,但从不拥有 stepcode 的文件**。
|
|
16
|
+
* adopt 只是把 `~/.stepcode/auth.json` 读成一份快照存进本插件自己的凭据存储
|
|
17
|
+
* (波次 2A 的 `adopt.ts` 只读、不写、不删)。所以这里落盘的 adopt 凭据带
|
|
18
|
+
* `adopted / source / sourcePath` 三个判别式字段,与其它线路的 adopt 语义一致。
|
|
19
|
+
*
|
|
20
|
+
* 三件套的分工与兄弟线路一致:凭据走 DPAPI / Keychain / Secret Service;
|
|
21
|
+
* 模型设置是明文 JSON,带写后回读校验;偏好在 harness 还提供 register 接缝时注册进
|
|
22
|
+
* 设置文档,没有就落回那个 JSON 文件。
|
|
23
|
+
*/
|
|
24
|
+
import type { CredentialStore } from '../token-store.ts';
|
|
25
|
+
import { type ContextWindowOverridePatch } from '../common/context-window-overrides.ts';
|
|
26
|
+
import type { StepCodeProfile, StepCodeReasoningEffort } from '../../shared/step-code-contracts.ts';
|
|
27
|
+
import { listModelIds } from './model-catalog.ts';
|
|
28
|
+
/** 本线路在设置文档里注册的命名空间。 */
|
|
29
|
+
export declare const STEP_CODE_PREFERENCES_NAMESPACE = "dsh-step-code";
|
|
30
|
+
/**
|
|
31
|
+
* 这份凭据是从哪条路来的。
|
|
32
|
+
*
|
|
33
|
+
* - `browser`:云端轮询登录换到的 api_key。
|
|
34
|
+
* - `manual`:用户手动粘贴的开放平台 API Key(按量计费)。
|
|
35
|
+
* - `adopt`:从本机 stepcode 客户端读来的登录态快照。
|
|
36
|
+
*
|
|
37
|
+
* 它与 `profile` 是**两件事**:`profile` 决定打哪个端点,`origin` 决定这份东西
|
|
38
|
+
* 本插件能不能对它做任何写操作。adopt 来的那份是别人登录态的拷贝,
|
|
39
|
+
* 本插件对它连写都不写(上游那边才是权威)。
|
|
40
|
+
*/
|
|
41
|
+
export type StepCodeCredentialOrigin = 'browser' | 'manual' | 'adopt';
|
|
42
|
+
/** 本线路读 stepcode 登录态时的来源标记(与 `src/host/token-store.ts` 的 adopt 判别式同构)。 */
|
|
43
|
+
export declare const STEPCODE_CREDENTIAL_SOURCE = "stepcode-client";
|
|
44
|
+
/**
|
|
45
|
+
* 一份可服务请求的 Step 凭据。
|
|
46
|
+
*
|
|
47
|
+
* 真正发请求只用 `apiKey` 一个字段(Bearer)。其余字段分三类:
|
|
48
|
+
*
|
|
49
|
+
* - **非机密的账号事实**(`uid` / `accountName`):卡片渲染与诊断用;
|
|
50
|
+
* - **路由事实**(`profile`):它唯一决定区域与两个 base,见 `./types.ts` 的 `PROFILE_HOSTS`;
|
|
51
|
+
* - adopt 判别式(`adopted` / `source` / `sourcePath`):见文件头。
|
|
52
|
+
*
|
|
53
|
+
* **刻意不落 `refreshToken` / `expiresAt`**:它们对静态凭据没有意义,而落两个永远为
|
|
54
|
+
* 常量的字段只会诱使后来的代码写出「检查过期 → 刷新」这条在这条线路上永远走不通的分支。
|
|
55
|
+
* 需要表达「永不过期」时读 `STATIC_EXPIRES_AT` 与 `STATIC_REFRESH_TOKEN` 常量。
|
|
56
|
+
*/
|
|
57
|
+
export interface StepCodeCredentials {
|
|
58
|
+
/** 真正发请求用的 Key。Host-only,永不过这条边界。 */
|
|
59
|
+
apiKey: string;
|
|
60
|
+
origin: StepCodeCredentialOrigin;
|
|
61
|
+
/** 凭据自述的 profile;**区域与端点都由它唯一决定**,不另存一份。 */
|
|
62
|
+
profile: StepCodeProfile;
|
|
63
|
+
/** 上游可选的账号标识(已按长度与字符集过滤);没有时为 null。 */
|
|
64
|
+
uid: string | null;
|
|
65
|
+
/** 控制台侧的账号显示名(非机密);没有时为 null。 */
|
|
66
|
+
accountName: string | null;
|
|
67
|
+
/** 本插件接管这份凭据的时刻(Unix 毫秒)。 */
|
|
68
|
+
authenticatedAt: number;
|
|
69
|
+
/**
|
|
70
|
+
* 判别式,取字面量 `true`。一个布尔比一句注释更难被忽略,
|
|
71
|
+
* 而这条判断一旦失效就是对本插件不拥有的登录态做一次写操作。
|
|
72
|
+
*/
|
|
73
|
+
adopted?: true;
|
|
74
|
+
/** 恒为 {@link STEPCODE_CREDENTIAL_SOURCE}。 */
|
|
75
|
+
source?: typeof STEPCODE_CREDENTIAL_SOURCE;
|
|
76
|
+
/** 读的是哪个文件,卡片照它显示。 */
|
|
77
|
+
sourcePath?: string;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* 校验并归一化一份落盘的凭据。
|
|
81
|
+
*
|
|
82
|
+
* 缺的字段一律拒绝而不是补默认值:缺 `apiKey` 的凭据发出去一定是一次 401,
|
|
83
|
+
* 而「给它编一个 profile」只会把请求静默打到另一个区域的端点上——
|
|
84
|
+
* 那是一次跨区请求,不是一次本地失败。
|
|
85
|
+
*
|
|
86
|
+
* `profile` 认不出来时**拒绝**而不是回落到默认 profile:默认 profile 是给
|
|
87
|
+
* 「凭据没自述区域」的猜测准备的(`DEFAULT_PROFILE`),而落盘的凭据总该自述;
|
|
88
|
+
* 猜错的代价是一次拿国区凭据去打国际区端点的明确鉴权失败,排查成本远高于让它重新登录。
|
|
89
|
+
*/
|
|
90
|
+
export declare function parseStepCodeCredentials(value: unknown): StepCodeCredentials;
|
|
91
|
+
/**
|
|
92
|
+
* 一份凭据是不是 adopt 快照(号池与适配器据此拒绝对它做任何写操作)。
|
|
93
|
+
*
|
|
94
|
+
* 它读的是**凭据对象本身**而不是某个内存标记:号池文件会被重新读、会被别处改写,
|
|
95
|
+
* 一个只活在内存里的判断会在重启后消失,于是 adopt 凭据被当成插件自有的写一次——
|
|
96
|
+
* 那是一次对别人的登录态的越权操作。
|
|
97
|
+
*/
|
|
98
|
+
export declare function isAdoptedStepCodeCredential(credentials: StepCodeCredentials): boolean;
|
|
99
|
+
/**
|
|
100
|
+
* 凭据的失效时刻:恒为 `STATIC_EXPIRES_AT`。
|
|
101
|
+
*
|
|
102
|
+
* 它存在的意义是**让号池有一个可以调用的钩子**(`AccountPoolHooks.expiresAt`),
|
|
103
|
+
* 而不是让号池去猜。返回 MAX_SAFE_INTEGER 是诚实的:这条线路的凭据本地永不到期,
|
|
104
|
+
* 上游撤销它表现为一次鉴权失败,由号池的 `markAuthFailed` 路径处理。
|
|
105
|
+
*/
|
|
106
|
+
export declare function stepCodeCredentialsExpireAt(_credentials: StepCodeCredentials): number;
|
|
107
|
+
/**
|
|
108
|
+
* 这份凭据需不需要刷新:**永远为 false**。
|
|
109
|
+
*
|
|
110
|
+
* 它存在的意义与上面那个一样:号池的 `needsRefresh` 钩子是可选的,
|
|
111
|
+
* 本线路提供它并如实回答「不需要」,是为了让「不刷新」成为**一个被断言的事实**
|
|
112
|
+
* 而不是「没实现那个钩子」。真接上刷新钩子的后果是:一次必然失败的刷新
|
|
113
|
+
* (上游没有刷新端点,`refreshStepOAuth` 直接抛错)会把一个能用的账号标成 expired。
|
|
114
|
+
*/
|
|
115
|
+
export declare function stepCodeCredentialsNeedRefresh(_credentials: StepCodeCredentials, _now: number): boolean;
|
|
116
|
+
/** 浏览器登录换到的凭据 → 落盘形态。 */
|
|
117
|
+
export declare function credentialsFromLogin(input: {
|
|
118
|
+
apiKey: string;
|
|
119
|
+
profile: StepCodeProfile;
|
|
120
|
+
uid?: string | null;
|
|
121
|
+
accountName?: string | null;
|
|
122
|
+
}): StepCodeCredentials;
|
|
123
|
+
/** 手动粘贴的开放平台 Key → 落盘形态。 */
|
|
124
|
+
export declare function credentialsFromApiKey(input: {
|
|
125
|
+
apiKey: string;
|
|
126
|
+
profile: StepCodeProfile;
|
|
127
|
+
}): StepCodeCredentials;
|
|
128
|
+
/**
|
|
129
|
+
* adopt 快照 → 落盘形态。
|
|
130
|
+
*
|
|
131
|
+
* 判别式与 `sourcePath` 一并写入,让 `isAdoptedStepCodeCredential()`
|
|
132
|
+
* 在**任何一次读回**之后仍然给出同一个答案——这是「永不做写操作」能跨重启成立的全部原因。
|
|
133
|
+
*/
|
|
134
|
+
export declare function credentialsFromAdopt(input: {
|
|
135
|
+
apiKey: string;
|
|
136
|
+
profile: StepCodeProfile;
|
|
137
|
+
uid?: string | null;
|
|
138
|
+
sourcePath: string;
|
|
139
|
+
}): StepCodeCredentials;
|
|
140
|
+
/** 凭据文件路径(本线路自己拥有;号池把主账号镜像到这里)。 */
|
|
141
|
+
export declare function credentialPath(): string;
|
|
142
|
+
/** 模型设置文件路径。 */
|
|
143
|
+
export declare function modelSettingsPath(): string;
|
|
144
|
+
/**
|
|
145
|
+
* 额度凭据文件路径(**与线路凭据分开的一份**)。
|
|
146
|
+
*
|
|
147
|
+
* 分开是因为两者性质不同:线路凭据是「一把长期 Key」,额度凭据是
|
|
148
|
+
* 「一次账号密码会话换来的 Oasis-Token」,后者会过期、会需要重登。
|
|
149
|
+
* 合成一份会让「删掉额度登录」变成「登出整条线路」,而这两件事在用户看来完全无关。
|
|
150
|
+
*
|
|
151
|
+
* 它的内容**只存在于 host**:共享契约里的 `StepCodeQuotaCredentialStatusDto`
|
|
152
|
+
* 只下发「有没有、从哪来、什么时候过期、上次读它出了什么问题」。
|
|
153
|
+
*/
|
|
154
|
+
export declare function quotaCredentialPath(): string;
|
|
155
|
+
/**
|
|
156
|
+
* 加密凭据存储。
|
|
157
|
+
*
|
|
158
|
+
* 与兄弟线路同构:写入之后回读比对,避免「写成功了但下一次启动读到的是别的东西」;
|
|
159
|
+
* 按路径排队,避免两个同时落地的写互相丢掉。
|
|
160
|
+
*
|
|
161
|
+
* **没有明文迁移分支**——这是本线路与 glm / kimi 的唯一结构差异,而且是刻意的:
|
|
162
|
+
* 那两条线路的历史上真的存在过明文凭据文件要迁移,本线路从未发布过,
|
|
163
|
+
* 一个「读明文再删掉它」的分支在这里只会是一段永不执行的死代码,
|
|
164
|
+
* 以及一个将来可能被人加上去的、写 stepcode 文件的机会。
|
|
165
|
+
*/
|
|
166
|
+
export declare class StepCodeCredentialStore {
|
|
167
|
+
private readonly filePath;
|
|
168
|
+
private readonly backend;
|
|
169
|
+
constructor(filePath?: string, backend?: CredentialStore<StepCodeCredentials>);
|
|
170
|
+
/** 人可读的存储位置说明(Windows DPAPI / macOS Keychain / Linux Secret Service)。 */
|
|
171
|
+
path(): string;
|
|
172
|
+
read(): Promise<StepCodeCredentials | null>;
|
|
173
|
+
write(credentials: StepCodeCredentials): Promise<void>;
|
|
174
|
+
delete(): Promise<void>;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* 开发者中心的额度凭据。
|
|
178
|
+
*
|
|
179
|
+
* 它等价于一次账号密码会话:`Oasis-Token` 是登录态,`deviceId` 必须与该 token 的
|
|
180
|
+
* `device_id` claim 一致(计划 `5、`10 风险 5),少一个都不行。
|
|
181
|
+
*
|
|
182
|
+
* `source` 如实记录它是怎么来的——自动登录失败时的手动粘贴兜底是这条线路的
|
|
183
|
+
* 正路之一(不是降级的临时措施),所以两种来源在卡片上是并列的。
|
|
184
|
+
*
|
|
185
|
+
* **绝不进入任何共享契约**:契约里只有它的状态 DTO。
|
|
186
|
+
*/
|
|
187
|
+
export interface StepCodeQuotaCredential {
|
|
188
|
+
/** `Oasis-Token`。Host-only。 */
|
|
189
|
+
token: string;
|
|
190
|
+
/** `Oasis-Webid`:必须与 token 的 `device_id` claim 一致。 */
|
|
191
|
+
deviceId: string;
|
|
192
|
+
/** 登录用到的账号(非机密,用于卡片显示是哪一路凭据在服务)。 */
|
|
193
|
+
account: string | null;
|
|
194
|
+
source: 'auto' | 'manual';
|
|
195
|
+
/** 过期时刻(Unix 毫秒);上游未给出时为 null。 */
|
|
196
|
+
expiresAt: number | null;
|
|
197
|
+
}
|
|
198
|
+
/** 校验并归一化一份落盘的额度凭据。缺 token 或 deviceId 一律拒绝——少一个就是一次必然的鉴权失败。 */
|
|
199
|
+
export declare function parseStepCodeQuotaCredential(value: unknown): StepCodeQuotaCredential;
|
|
200
|
+
/**
|
|
201
|
+
* 额度凭据的加密存储。
|
|
202
|
+
*
|
|
203
|
+
* 与线路凭据**分开存**(路径见 {@link quotaCredentialPath} 的理由),
|
|
204
|
+
* 但用的是同一个平台矩阵:DPAPI / Keychain / Secret Service。
|
|
205
|
+
*/
|
|
206
|
+
export declare class StepCodeQuotaCredentialStore {
|
|
207
|
+
private readonly filePath;
|
|
208
|
+
private readonly backend;
|
|
209
|
+
constructor(filePath?: string);
|
|
210
|
+
path(): string;
|
|
211
|
+
read(): Promise<StepCodeQuotaCredential | null>;
|
|
212
|
+
write(credential: StepCodeQuotaCredential): Promise<void>;
|
|
213
|
+
delete(): Promise<void>;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* 本线路设置文档里**用户自己**的那一半。
|
|
217
|
+
*
|
|
218
|
+
* 随包目录 `STEP_CODE_MODEL_CATALOG` 刻意不存:它跟着代码走,存一份副本会让一个
|
|
219
|
+
* 落后一个版本的设置文件读到这份构建已经不再服务的模型列表。
|
|
220
|
+
*/
|
|
221
|
+
export interface StepCodeModelSettings {
|
|
222
|
+
/** 线路总开关。只有显式 false 才是关闭。 */
|
|
223
|
+
enabled?: boolean;
|
|
224
|
+
/**
|
|
225
|
+
* 用户勾选的模型 id;缺省或空数组 = **不过滤(全选)**,非空 = 显式选择。
|
|
226
|
+
*
|
|
227
|
+
* 为什么不是三态(`null` = 不过滤):冻结契约里的
|
|
228
|
+
* `StepCodeSettingsUpdateDto.enabledModelIds` 是 `string[]`,没有 null 这一格;
|
|
229
|
+
* 而本线路的目录**登录后才运行时发现**,一个刚装上还没登录的用户手里必然只有一个
|
|
230
|
+
* 空数组。把空数组读成「一个都不启用」会让设置页在用户还没登录时就显示成
|
|
231
|
+
* 「已禁用全部模型」——那是关于目录的谎报,目录这时根本还不存在。
|
|
232
|
+
* 真要把模型全关,关线路总开关(`enabled`)是明确且语义正确的那一个动作。
|
|
233
|
+
*
|
|
234
|
+
* 字段**可选**是同一件事的另一半:它必须能区分「用户没选过」与「用户选了空集」。
|
|
235
|
+
* 装配侧(`catalogModelOptions`)与本文件的合并逻辑都以这条注释为准。
|
|
236
|
+
*/
|
|
237
|
+
enabledModelIds?: string[];
|
|
238
|
+
/** 逐模型上下文窗口覆盖;缺省用目录声明值。 */
|
|
239
|
+
contextWindowOverrides: Record<string, number>;
|
|
240
|
+
/** 会话没指定档位时用的档位;null 表示各模型用自己的默认。 */
|
|
241
|
+
defaultReasoningEffort: StepCodeReasoningEffort | null;
|
|
242
|
+
/** 手动指定下一个请求使用的账号;null 交回号池调度。 */
|
|
243
|
+
selectedAccountId: string | null;
|
|
244
|
+
/** 请求侧是否发送缓存参数(默认 false,见共享契约的缓存一节)。 */
|
|
245
|
+
cacheRequestParams: boolean;
|
|
246
|
+
}
|
|
247
|
+
/** 一个设置补丁。 */
|
|
248
|
+
export interface StepCodeSettingsPatch {
|
|
249
|
+
enabled?: boolean;
|
|
250
|
+
enabledModelIds?: string[];
|
|
251
|
+
/**
|
|
252
|
+
* 补丁而不是整张表:`null` 必须能作为一个**值**活下来,
|
|
253
|
+
* 它是卡片上的「恢复目录默认」,删掉恰好一个键。
|
|
254
|
+
*/
|
|
255
|
+
contextWindowOverrides?: ContextWindowOverridePatch;
|
|
256
|
+
defaultReasoningEffort?: StepCodeReasoningEffort | null;
|
|
257
|
+
selectedAccountId?: string | null;
|
|
258
|
+
cacheRequestParams?: boolean;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* 路由与适配器共用的接缝。
|
|
262
|
+
*
|
|
263
|
+
* `status()` 同步:它在模型选择器查询与卡片轮询上被调用,两者都只需要一份快照;
|
|
264
|
+
* 把它做成 promise 会让每一条热路径都去等一次磁盘读,而它的变化速度是人的速度。
|
|
265
|
+
*/
|
|
266
|
+
export interface StepCodePreferenceStore {
|
|
267
|
+
/**
|
|
268
|
+
* 文件后端是异步预热的,所以 `status()` 在那次读落定之前先回答出厂默认值。
|
|
269
|
+
* 启动时按偏好行动的一方必须先 await 它,否则它行动在默认值而不是用户的选择上。
|
|
270
|
+
*/
|
|
271
|
+
ready(): Promise<void>;
|
|
272
|
+
status(): StepCodeModelSettings;
|
|
273
|
+
update(patch: StepCodeSettingsPatch): Promise<StepCodeModelSettings>;
|
|
274
|
+
}
|
|
275
|
+
/** 一次全新安装的设置:全开、无过滤、无覆盖、无指定账号、缓存参数不发。 */
|
|
276
|
+
export declare function defaultStepCodeModelSettings(): StepCodeModelSettings;
|
|
277
|
+
/**
|
|
278
|
+
* 归一化一份解析出来的设置文档。
|
|
279
|
+
*
|
|
280
|
+
* 这里什么都不抛:它在启动和每次状态轮询上被读,手改过或降级过的文档必须降级成一份
|
|
281
|
+
* 可用的选择,而不是让整条线路不可用。
|
|
282
|
+
*/
|
|
283
|
+
export declare function parseStepCodeModelSettings(value: unknown): StepCodeModelSettings;
|
|
284
|
+
/**
|
|
285
|
+
* 把一个补丁应用到一份设置文档上。
|
|
286
|
+
*
|
|
287
|
+
* 合并逻辑住在两个 store 之外:register 后端必须用与文件后端**同一套**规则归一化 scope 的值,
|
|
288
|
+
* 同一份逻辑写两遍就是两条存储路径第一次学到新字段时开始漂移的方式。
|
|
289
|
+
*/
|
|
290
|
+
export declare function mergeStepCodeSettings(current: StepCodeModelSettings, patch: StepCodeSettingsPatch): StepCodeModelSettings;
|
|
291
|
+
/**
|
|
292
|
+
* 凭据旁边的设置文件。
|
|
293
|
+
*
|
|
294
|
+
* 没有 register 接缝的 harness(0.1.7,以及无头 host)启动时读的就是它,所以它必须扛得住崩溃:
|
|
295
|
+
* 写入走「临时文件 + rename」,写完立刻回读比对再报告成功。
|
|
296
|
+
*/
|
|
297
|
+
export declare class StepCodeModelSettingsStore {
|
|
298
|
+
private readonly filePath;
|
|
299
|
+
constructor(filePath?: string);
|
|
300
|
+
path(): string;
|
|
301
|
+
read(): Promise<StepCodeModelSettings>;
|
|
302
|
+
write(settings: StepCodeModelSettings): Promise<void>;
|
|
303
|
+
/**
|
|
304
|
+
* 在与凭据写入同一条按路径排队的锁里做「读-改-写」。
|
|
305
|
+
*
|
|
306
|
+
* 没有它,两个同时落地的补丁各读同一份文档,后一个写会把前一个悄悄丢掉——
|
|
307
|
+
* 一次没有任何报错的模型选择丢失。
|
|
308
|
+
*/
|
|
309
|
+
updateSettings(patch: StepCodeSettingsPatch): Promise<StepCodeModelSettings>;
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* 把模型选择绑到 DSH 设置文档(harness 还提供 register 接缝时),
|
|
313
|
+
* 否则绑到凭据旁边的 JSON 文件。
|
|
314
|
+
*
|
|
315
|
+
* ⚠ **scope 形状里的 `enabledModelIds` 是 optional,而 schemastery 会把
|
|
316
|
+
* 缺省的 `z.array(z.string())` 归一化成 `[]`**(实测:空对象经过一个
|
|
317
|
+
* 只有 `z.array(z.string())` 的 object 会得到 `{ ids: [] }`)。
|
|
318
|
+
* 所以这里**不给它写 `.default()`**,缺省就让它读成空数组——
|
|
319
|
+
* 而空数组在本线路的语义里正好就是「不过滤」(见 {@link StepCodeModelSettings})。
|
|
320
|
+
* 外面那个类型断言是必需的:schemastery 的输出类型会把这个键声明成必填,
|
|
321
|
+
* 而运行时它是可缺省的,不断言就是一处类型层面的谎报。
|
|
322
|
+
*/
|
|
323
|
+
export declare function registerStepCodePreferenceStore(settings?: unknown, fallbackStore?: StepCodeModelSettingsStore): StepCodePreferenceStore;
|
|
324
|
+
export { listModelIds };
|
|
325
|
+
//# sourceMappingURL=token-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-store.d.ts","sourceRoot":"","sources":["../../../../src/host/step-code/token-store.ts"],"names":[],"mappings":"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"}
|