@eddyskywalker/dsh-chatgpt-subscription 0.26.0 → 0.26.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/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 0.26.1 - 2026-10-17
|
|
6
|
+
- **[WorkBuddy] 一次上游 401 把整个号池写成「需要重新登录」且永不恢复:线路跑着跑着忽然全部国区账号要重登**
|
|
7
|
+
- **现象**:运行中的一轮突然失败,报 `WorkBuddy(CodeBuddy 订阅) rejected the stored credential (401). Sign in again with the CodeBuddy desktop client.`;随后设置卡片里**每一个**国区账号都显示「需要重新登录」,只有重新登录(重新加号)才能恢复。
|
|
8
|
+
- **本机实证(非推断)**:解密号池文件读到事发那几秒——22:52:42 / 22:52:48 两个国际区账号先被 429 冷却,同一个请求随即把两个国区账号依次判 401;22:54:05 / 22:54:41 用户重新登录,`authStatus` 才被清掉。同时用库里的 bearer 打两个面:`GET /v3/config` → **200**,`POST /v2/chat/completions` → **401 + APISIX HTML**;同一枚 token 在一个面被接受、在另一个面被拒,即这个 401 是 chat 路由/会话层的判定,不是「token 坏了」。库里 5 枚国区 bearer 中 4 枚在 chat 面拿到 `400 {"code":11101}`(鉴权已过),只有会话被后登录顶掉的那枚 401。
|
|
9
|
+
- **根因**:`classifyFailure` 对 401 一律 `INVALID_CREDENTIAL`(403 有正文翻案,401 没有),请求循环随即对**每个**被拒账号写 `markAuthFailed → authStatus='expired'` 再轮下一个——**一个请求就能把整池写死**;而本线路从不调用 `clearAuthFailed`,也没有 heal,写死的行再也回不来。雪上加霜的是本地时钟:access token 有效期约 28 天,`needsRefresh` 几乎永远不会在 401 时触发,于是「会话被顶掉」直接等于「永久 401 + 全池登出 + 只能人工重登」。签到路径(`checkin.ts`)一直有「401 → 强制续期一次再重试」的处理,chat 路径却没有。
|
|
10
|
+
- **改法(三处)**:① chat 请求收到 401 时,先对**同一个账号**强制 `renewCredential` 一次并用新 token 重放同一份 body;续期成功=凭据还活着,什么都不写;续期被上游拒绝=真死,由号池既有的 `refreshFailureStatus` 写标记——**请求期不再写 `markAuthFailed`**。② 新增 `healStaleAuthFailures`:选号前与列表前重新对照权威存储,账号已换另一枚**未过期** token 就清掉标记并采用它,仍持着被拒那枚的保留标记。③ 两处都守「一次」纪律:一次续期、一次重放,第二次仍 401 就换号或如实报错,不写永久状态。
|
|
11
|
+
- **验证**:`npm run typecheck` 0 错误;全量 **231 passed | 1 skipped(232 文件)、3813 passed | 7 skipped、0 failed**(基线 3809,新增 4 例)。**承重已双向检查**:关掉续期 → 2 例红;把 `markAuthFailed` 加回请求期 → 1 例红;关掉 heal → 1 例红;恢复后全绿。
|
|
12
|
+
- **升级提示**:升级前已被标成「需要重新登录」的账号,若权威存储里已有更新过的 token 会自动恢复;没有的更动过的仍需重新登录一次。
|
|
13
|
+
|
|
5
14
|
## 0.26.0 - 2026-10-17
|
|
6
15
|
|
|
7
16
|
- **[MiniMax Code] 无答案轮次现在会自动续跑跑完(社区 PR #61),并把「续跑预算」真正做成有界**
|
package/README.md
CHANGED
|
@@ -629,6 +629,13 @@ DSH 设置页的「Subagent」卡片会把勾选的模型写成会话级的允
|
|
|
629
629
|
|
|
630
630
|
目录里通常同时存在当前凭据与若干带时间戳的历史快照。插件**优先取 `workbuddy-desktop.info` / `codebuddy-desktop.info` 这类规范文件名**,其余按 token 剩余有效期取最长的一个——只按文件 mtime 选会选到过期快照。卡片会列出目录里所有可用凭据,标明各自区域。
|
|
631
631
|
|
|
632
|
+
**失败分类与重试**:这条线路把失败分成「换号能解决」与「换号也一样」两类,判据不是状态码本身。
|
|
633
|
+
|
|
634
|
+
- **401 不等于凭据失效**:实测同一枚 bearer 在 `GET /v3/config` 上是 200、在 `POST /v2/chat/completions` 上是 401(APISIX 生成的 HTML 拒绝页)。本线路的 access token 有效期约 28 天,本地时钟**几乎永远不会**在 401 时触发续期,因此这类 401 多半是会话被顶掉或网关/路由层拒绝。收到 401 时先对**同一个账号**强制续期一次(`POST /v2/plugin/auth/token/refresh`)并用新 token **原样重放同一份请求体**:续期成功即说明凭据还活着,不写任何账号状态;**只有续期本身被上游拒绝**才把该账号记为需要重新登录,此时才换号。
|
|
635
|
+
- **请求期不写「需要重新登录」**:401 只让该账号退出**本次请求**的轮换,不写号池状态。此前一次 lane 级的 401 会在同一个请求里把每一个账号依次写成 `expired`,而号池没有任何清除路径,于是整条线路要求全部重新登录。
|
|
636
|
+
- **自愈**:被标记的账号在**每个请求前**与卡片列表前都会重新对照权威存储(桌面账号看 CodeBuddy 自己的凭据文件、托管账号看插件的加密存储);换了另一枚**未过期** token 就清掉标记并采用新凭据,仍持着被拒那枚的账号保留标记。
|
|
637
|
+
- **429 冷却换号**:按 `Retry-After`(缺省 5 分钟,上限 10 分钟)冷却该账号,并用同一份 body 换下一个账号重试。
|
|
638
|
+
|
|
632
639
|
**上游接口**:
|
|
633
640
|
|
|
634
641
|
| 用途 | 路径(前缀为区域后端) |
|
package/lib/index.js
CHANGED
|
@@ -31336,7 +31336,7 @@ function projectAccount$2(input) {
|
|
|
31336
31336
|
* Takes the summary shape as well as the pool row, because both the card's list
|
|
31337
31337
|
* and the routing read ask the same question about it.
|
|
31338
31338
|
*/
|
|
31339
|
-
function isMarkedFailed(account) {
|
|
31339
|
+
function isMarkedFailed$1(account) {
|
|
31340
31340
|
return account.authStatus !== void 0 && account.authStatus !== "ok";
|
|
31341
31341
|
}
|
|
31342
31342
|
/** The alias an account is labelled with when the user has not named it. */
|
|
@@ -31575,7 +31575,7 @@ var MinimaxCodeAccountPool = class extends AccountPoolCore {
|
|
|
31575
31575
|
*/
|
|
31576
31576
|
async listAccounts() {
|
|
31577
31577
|
const summaries = await super.listAccounts();
|
|
31578
|
-
if (!summaries.some(isMarkedFailed)) return summaries;
|
|
31578
|
+
if (!summaries.some(isMarkedFailed$1)) return summaries;
|
|
31579
31579
|
await this.healStaleAuthFailures().catch(() => void 0);
|
|
31580
31580
|
return await super.listAccounts();
|
|
31581
31581
|
}
|
|
@@ -31591,7 +31591,7 @@ var MinimaxCodeAccountPool = class extends AccountPoolCore {
|
|
|
31591
31591
|
*/
|
|
31592
31592
|
async getEffectiveAccount(excludeIds, fetchFn = fetch) {
|
|
31593
31593
|
const data = await this.read();
|
|
31594
|
-
if (data.accounts.some(isMarkedFailed)) await this.healStaleAuthFailures(data).catch(() => void 0);
|
|
31594
|
+
if (data.accounts.some(isMarkedFailed$1)) await this.healStaleAuthFailures(data).catch(() => void 0);
|
|
31595
31595
|
return await super.getEffectiveAccount(excludeIds, fetchFn);
|
|
31596
31596
|
}
|
|
31597
31597
|
/**
|
|
@@ -31610,7 +31610,7 @@ var MinimaxCodeAccountPool = class extends AccountPoolCore {
|
|
|
31610
31610
|
* because that one genuinely needs a sign-in.
|
|
31611
31611
|
*/
|
|
31612
31612
|
async healStaleAuthFailures(current) {
|
|
31613
|
-
const failedAccounts = (current ?? await this.read()).accounts.filter(isMarkedFailed);
|
|
31613
|
+
const failedAccounts = (current ?? await this.read()).accounts.filter(isMarkedFailed$1);
|
|
31614
31614
|
if (failedAccounts.length === 0) return false;
|
|
31615
31615
|
const targets = new Map(failedAccounts.map((account) => [account.id, {
|
|
31616
31616
|
credentials: account.credentials,
|
|
@@ -36784,7 +36784,7 @@ var WorkBuddyAdapter = class extends LlmAdapter {
|
|
|
36784
36784
|
const pool = this.accountPool;
|
|
36785
36785
|
const tried = /* @__PURE__ */ new Set();
|
|
36786
36786
|
let response;
|
|
36787
|
-
while (true) {
|
|
36787
|
+
rotation: while (true) {
|
|
36788
36788
|
let credentials;
|
|
36789
36789
|
let accountId;
|
|
36790
36790
|
if (pool === null) {
|
|
@@ -36804,27 +36804,41 @@ var WorkBuddyAdapter = class extends LlmAdapter {
|
|
|
36804
36804
|
tried.add(accountId);
|
|
36805
36805
|
credentials = effective.credentials;
|
|
36806
36806
|
}
|
|
36807
|
-
|
|
36808
|
-
|
|
36809
|
-
|
|
36810
|
-
|
|
36811
|
-
|
|
36812
|
-
|
|
36813
|
-
|
|
36814
|
-
|
|
36815
|
-
|
|
36816
|
-
|
|
36807
|
+
let renewed = false;
|
|
36808
|
+
let refusedDetail = "";
|
|
36809
|
+
while (true) {
|
|
36810
|
+
try {
|
|
36811
|
+
response = await fetchWithContextBudgetRecovery(fetchFn)(`${credentials.backend}${CHAT_PATH}`, {
|
|
36812
|
+
method: "POST",
|
|
36813
|
+
headers: workBuddyHeaders(credentials, { accept: "text/event-stream" }, { ...requestOptions.sessionId === void 0 ? {} : { sessionId: String(requestOptions.sessionId) } }),
|
|
36814
|
+
body,
|
|
36815
|
+
signal
|
|
36816
|
+
});
|
|
36817
|
+
} catch (error) {
|
|
36818
|
+
if (signal.aborted) throw new LlmError("WorkBuddy request aborted", "ABORTED", { cause: error });
|
|
36819
|
+
throw new LlmError(`WorkBuddy request failed: ${error instanceof Error ? error.message : String(error)}`, "TRANSPORT", { cause: error });
|
|
36820
|
+
}
|
|
36821
|
+
if (response.ok) break;
|
|
36822
|
+
refusedDetail = (await response.text().catch(() => "")).slice(0, 600);
|
|
36823
|
+
if (renewed || response.status !== 401 || pool === null || accountId === void 0) break;
|
|
36824
|
+
renewed = true;
|
|
36825
|
+
const refusedAccount = accountId;
|
|
36826
|
+
try {
|
|
36827
|
+
credentials = await pool.renewCredential(refusedAccount, fetchFn, credentials);
|
|
36828
|
+
} catch (error) {
|
|
36829
|
+
const verdict = error instanceof LlmError ? error : new LlmError(`${PROVIDER_NAME$3} credential could not be renewed after the service refused it: ${error instanceof Error ? error.message : String(error)}`, "INVALID_CREDENTIAL", { cause: error });
|
|
36830
|
+
if (await pool.hasAnotherAvailableAccount(tried)) continue rotation;
|
|
36831
|
+
throw verdict;
|
|
36832
|
+
}
|
|
36817
36833
|
}
|
|
36818
36834
|
if (response.ok) break;
|
|
36819
|
-
const
|
|
36820
|
-
const failure = classifyFailure$1(response.status, detail, response.headers);
|
|
36835
|
+
const failure = classifyFailure$1(response.status, refusedDetail, response.headers);
|
|
36821
36836
|
if (pool !== null && accountId !== void 0) {
|
|
36822
36837
|
const after = retryAfterMs$1(response.headers);
|
|
36823
36838
|
if (failure.code === "RATE_LIMIT") {
|
|
36824
36839
|
await pool.markCooldown(accountId, after ?? 3e5, `${PROVIDER_NAME$3} 429`).catch(() => void 0);
|
|
36825
36840
|
if (await pool.hasAnotherAvailableAccount(tried)) continue;
|
|
36826
36841
|
} else if (failure.code === "INVALID_CREDENTIAL") {
|
|
36827
|
-
await pool.markAuthFailed(accountId, failure.message).catch(() => void 0);
|
|
36828
36842
|
if (await pool.hasAnotherAvailableAccount(tried)) continue;
|
|
36829
36843
|
}
|
|
36830
36844
|
}
|
|
@@ -37262,6 +37276,65 @@ var WorkBuddyAccountPool = class extends AccountPoolCore {
|
|
|
37262
37276
|
return this.listAccounts();
|
|
37263
37277
|
}
|
|
37264
37278
|
/**
|
|
37279
|
+
* A stale `authStatus` is cleared once the credential in force has moved on.
|
|
37280
|
+
*
|
|
37281
|
+
* The marker records that ONE token was refused; it does not record that the
|
|
37282
|
+
* sign-in is gone. This line can still produce it from a token-endpoint
|
|
37283
|
+
* refusal, and the copy that refusal was about can be replaced afterwards by
|
|
37284
|
+
* whoever owns it — the IDE rotates a desktop account's token on its own
|
|
37285
|
+
* schedule, and the daily check-in renews a managed one and writes it back to
|
|
37286
|
+
* this plugin's store. Nothing else in the system ever revisits an
|
|
37287
|
+
* `authStatus`, so without this a row stays out of rotation for good and the
|
|
37288
|
+
* card keeps saying "需要重新登录" for an account that is signed in.
|
|
37289
|
+
*
|
|
37290
|
+
* The verdict is re-checked against what the store holds NOW: a row whose
|
|
37291
|
+
* account has a DIFFERENT, unexpired token is routable again and adopts it,
|
|
37292
|
+
* while a row still holding the refused token keeps its marker — that one
|
|
37293
|
+
* really does need a sign-in.
|
|
37294
|
+
*/
|
|
37295
|
+
async healStaleAuthFailures(current) {
|
|
37296
|
+
if (!(current ?? await this.read()).accounts.some(isMarkedFailed)) return false;
|
|
37297
|
+
const live = await this.store.list().catch(() => []);
|
|
37298
|
+
if (live.length === 0) return false;
|
|
37299
|
+
const byId = /* @__PURE__ */ new Map();
|
|
37300
|
+
for (const credentials of live) byId.set(workBuddyAccountId(credentials), credentials);
|
|
37301
|
+
return await this.updatePool((draft) => {
|
|
37302
|
+
let changed = false;
|
|
37303
|
+
for (const account of draft.accounts) {
|
|
37304
|
+
if (!isMarkedFailed(account)) continue;
|
|
37305
|
+
const candidate = byId.get(account.id);
|
|
37306
|
+
if (candidate === void 0) continue;
|
|
37307
|
+
if (candidate.accessToken === account.credentials.accessToken) continue;
|
|
37308
|
+
if (isExpired(candidate)) continue;
|
|
37309
|
+
account.authStatus = void 0;
|
|
37310
|
+
account.authFailedReason = void 0;
|
|
37311
|
+
account.credentials = candidate;
|
|
37312
|
+
changed = true;
|
|
37313
|
+
}
|
|
37314
|
+
return changed;
|
|
37315
|
+
});
|
|
37316
|
+
}
|
|
37317
|
+
/** Account summaries, with a marker the credentials have outlived cleared. */
|
|
37318
|
+
async listAccounts() {
|
|
37319
|
+
const summaries = await super.listAccounts();
|
|
37320
|
+
if (!summaries.some(isMarkedFailed)) return summaries;
|
|
37321
|
+
await this.healStaleAuthFailures().catch(() => void 0);
|
|
37322
|
+
return await super.listAccounts();
|
|
37323
|
+
}
|
|
37324
|
+
/**
|
|
37325
|
+
* Pick an account, healing a stale marker first.
|
|
37326
|
+
*
|
|
37327
|
+
* The healing belongs on the request path, not only on the card: an account
|
|
37328
|
+
* marked expired is excluded by the core's eligibility rule, so until the
|
|
37329
|
+
* marker is gone the next request is answered with "全部 N 个账号都需要重新登录"
|
|
37330
|
+
* for a credential the store has already replaced.
|
|
37331
|
+
*/
|
|
37332
|
+
async getEffectiveAccount(excludeIds, fetchFn = fetch, forceRefresh = false) {
|
|
37333
|
+
const data = await this.read();
|
|
37334
|
+
if (data.accounts.some(isMarkedFailed)) await this.healStaleAuthFailures(data).catch(() => void 0);
|
|
37335
|
+
return await super.getEffectiveAccount(excludeIds, fetchFn, forceRefresh);
|
|
37336
|
+
}
|
|
37337
|
+
/**
|
|
37265
37338
|
* Pick the account for the next request.
|
|
37266
37339
|
*
|
|
37267
37340
|
* A desktop account's credential is re-read from the IDE's file first: the IDE
|
|
@@ -37328,6 +37401,15 @@ var WorkBuddyAccountPool = class extends AccountPoolCore {
|
|
|
37328
37401
|
super.deleteAccountFromPool(data, accountId);
|
|
37329
37402
|
}
|
|
37330
37403
|
};
|
|
37404
|
+
/**
|
|
37405
|
+
* Whether a row's credential was reported as refused and never cleared.
|
|
37406
|
+
*
|
|
37407
|
+
* Mirrors the core's own eligibility predicate (`authStatus` present and not
|
|
37408
|
+
* `ok`), so the heal agrees with the rule that excluded the row.
|
|
37409
|
+
*/
|
|
37410
|
+
function isMarkedFailed(account) {
|
|
37411
|
+
return account.authStatus !== void 0 && account.authStatus !== "ok";
|
|
37412
|
+
}
|
|
37331
37413
|
//#endregion
|
|
37332
37414
|
//#region src/host/claude/types.ts
|
|
37333
37415
|
/**
|
|
@@ -106,6 +106,38 @@ export declare class WorkBuddyAccountPool extends AccountPoolCore<WorkBuddyCrede
|
|
|
106
106
|
* account in place, where the user can hide or delete the managed ones.
|
|
107
107
|
*/
|
|
108
108
|
syncDesktopAccounts(): Promise<WorkBuddyAccountSummaryDto[]>;
|
|
109
|
+
/**
|
|
110
|
+
* A stale `authStatus` is cleared once the credential in force has moved on.
|
|
111
|
+
*
|
|
112
|
+
* The marker records that ONE token was refused; it does not record that the
|
|
113
|
+
* sign-in is gone. This line can still produce it from a token-endpoint
|
|
114
|
+
* refusal, and the copy that refusal was about can be replaced afterwards by
|
|
115
|
+
* whoever owns it — the IDE rotates a desktop account's token on its own
|
|
116
|
+
* schedule, and the daily check-in renews a managed one and writes it back to
|
|
117
|
+
* this plugin's store. Nothing else in the system ever revisits an
|
|
118
|
+
* `authStatus`, so without this a row stays out of rotation for good and the
|
|
119
|
+
* card keeps saying "需要重新登录" for an account that is signed in.
|
|
120
|
+
*
|
|
121
|
+
* The verdict is re-checked against what the store holds NOW: a row whose
|
|
122
|
+
* account has a DIFFERENT, unexpired token is routable again and adopts it,
|
|
123
|
+
* while a row still holding the refused token keeps its marker — that one
|
|
124
|
+
* really does need a sign-in.
|
|
125
|
+
*/
|
|
126
|
+
private healStaleAuthFailures;
|
|
127
|
+
/** Account summaries, with a marker the credentials have outlived cleared. */
|
|
128
|
+
listAccounts(): Promise<WorkBuddyAccountSummaryDto[]>;
|
|
129
|
+
/**
|
|
130
|
+
* Pick an account, healing a stale marker first.
|
|
131
|
+
*
|
|
132
|
+
* The healing belongs on the request path, not only on the card: an account
|
|
133
|
+
* marked expired is excluded by the core's eligibility rule, so until the
|
|
134
|
+
* marker is gone the next request is answered with "全部 N 个账号都需要重新登录"
|
|
135
|
+
* for a credential the store has already replaced.
|
|
136
|
+
*/
|
|
137
|
+
getEffectiveAccount(excludeIds?: ReadonlySet<string>, fetchFn?: typeof fetch, forceRefresh?: boolean): Promise<{
|
|
138
|
+
account: WorkBuddyPoolAccount;
|
|
139
|
+
credentials: WorkBuddyCredentials;
|
|
140
|
+
}>;
|
|
109
141
|
/**
|
|
110
142
|
* Pick the account for the next request.
|
|
111
143
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account-pool.d.ts","sourceRoot":"","sources":["../../../../src/host/workbuddy/account-pool.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"account-pool.d.ts","sourceRoot":"","sources":["../../../../src/host/workbuddy/account-pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../src/host/workbuddy/adapter.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,UAAU,EACV,QAAQ,EACR,iBAAiB,EAEjB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EAGL,WAAW,EACX,aAAa,EAGd,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EAEtB,KAAK,wBAAwB,EAC9B,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAQL,KAAK,mBAAmB,EACzB,MAAM,oBAAoB,CAAA;AAG3B,OAAO,EAQL,KAAK,qBAAqB,EAC3B,MAAM,aAAa,CAAA;AAIpB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAkB7D;;;;;;;;;GASG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,EAChC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,GACjC,iBAAiB,GAAG,SAAS,CAQ/B;AAED,sEAAsE;AACtE,eAAO,MAAM,gBAAgB,QAAgB,CAAA;AAE7C,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,EAAE,OAAO,KAAK,CAAA;IACtB,WAAW,CAAC,EAAE,qBAAqB,CAAA;IACnC,2EAA2E;IAC3E,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,oBAAoB,KAAK,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAA;IACnF;;;;;OAKG;IACH,WAAW,CAAC,EAAE,oBAAoB,CAAA;CACnC;AAED,qBAAa,gBAAiB,SAAQ,UAAU;IAK5C,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAP1B,sDAAsD;IACtD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6B;gBAGtC,KAAK,sBAA4B,EACjC,aAAa,yBAA+B,EAC5C,WAAW,CAAC,EAAE,wBAAwB,YAAA,EACtC,OAAO,GAAE,uBAA4B;IAMxD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe;IAI/C,mBAAmB,IAAI,mBAAmB;IAI1C,mBAAmB,IAAI,SAAS;IAIhC,OAAO,CAAC,QAAQ;YAIF,WAAW;IAQzB;;;;;;;OAOG;YACW,OAAO;IAOrB;;;;;;OAMG;IACG,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC;IA4B/D,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAsCpG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAO/F,MAAM,CAAC,OAAO,EAAE,eAAe,GAAG,aAAa,CAAC,WAAW,CAAC;IAenE;;;;;;;;;;;;;;OAcG;YACW,SAAS;YAeR,aAAa;
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../src/host/workbuddy/adapter.ts"],"names":[],"mappings":"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"}
|