opencode-claude-auth 2.1.4 → 2.1.6
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 +20 -10
- package/dist/credentials.d.ts +90 -7
- package/dist/credentials.d.ts.map +1 -1
- package/dist/credentials.js +557 -59
- package/dist/credentials.js.map +1 -1
- package/dist/http.d.ts +3 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +74 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +183 -68
- package/dist/index.js.map +1 -1
- package/dist/keychain.d.ts +20 -1
- package/dist/keychain.d.ts.map +1 -1
- package/dist/keychain.js +66 -1
- package/dist/keychain.js.map +1 -1
- package/dist/refresh-backoff.d.ts +49 -0
- package/dist/refresh-backoff.d.ts.map +1 -0
- package/dist/refresh-backoff.js +99 -0
- package/dist/refresh-backoff.js.map +1 -0
- package/dist/refresh-lock.d.ts +22 -0
- package/dist/refresh-lock.d.ts.map +1 -0
- package/dist/refresh-lock.js +117 -0
- package/dist/refresh-lock.js.map +1 -0
- package/dist/transforms.d.ts +41 -1
- package/dist/transforms.d.ts.map +1 -1
- package/dist/transforms.js +238 -46
- package/dist/transforms.js.map +1 -1
- package/package.json +1 -1
package/dist/keychain.d.ts
CHANGED
|
@@ -22,6 +22,25 @@ export declare function updateCredentialBlob(existingJson: string, newCreds: {
|
|
|
22
22
|
refreshToken: string;
|
|
23
23
|
expiresAt: number;
|
|
24
24
|
}): string | null;
|
|
25
|
-
|
|
25
|
+
/**
|
|
26
|
+
* Whether a stored credential blob still carries the access token we expect.
|
|
27
|
+
*
|
|
28
|
+
* Guards write-back against an external switch landing between the read that
|
|
29
|
+
* produced the token being refreshed and the write of its replacement. An
|
|
30
|
+
* unparseable blob returns false: a write into state we cannot identify is
|
|
31
|
+
* exactly what this is meant to prevent.
|
|
32
|
+
*
|
|
33
|
+
* Deliberately stricter than the write it guards: this validates through
|
|
34
|
+
* parseCredentials (field types, mcpOAuth-only rejection) while
|
|
35
|
+
* updateCredentialBlob rewrites anything JSON.parse accepts. So a blob the
|
|
36
|
+
* write path would happily update can still be refused here. That gap is
|
|
37
|
+
* intentional — reaching this guard means an earlier parseCredentials
|
|
38
|
+
* succeeded, so a blob that no longer parses changed shape after we read it
|
|
39
|
+
* (a truncated non-atomic external write, or a hand edit), and declining to
|
|
40
|
+
* write over it is correct. Anyone tightening parseCredentials should know it
|
|
41
|
+
* narrows write-back too, not just reads.
|
|
42
|
+
*/
|
|
43
|
+
export declare function credentialBlobMatches(raw: string, expectedAccessToken: string): boolean;
|
|
44
|
+
export declare function writeBackCredentials(source: string, creds: ClaudeCredentials, configDir?: string, expectedPriorAccessToken?: string): boolean;
|
|
26
45
|
export declare function refreshAccount(source: string, configDir?: string): ClaudeCredentials | null;
|
|
27
46
|
//# sourceMappingURL=keychain.d.ts.map
|
package/dist/keychain.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keychain.d.ts","sourceRoot":"","sources":["../src/keychain.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,iBAAiB,CAAA;CAC/B;AAED,eAAO,MAAM,eAAe,4BAA4B,CAAA;AAExD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAmDtE;AAkID,wBAAgB,mBAAmB,CACjC,SAAS,SAA8D,GACtE,iBAAiB,GAAG,IAAI,CAW1B;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAExD;AAwCD,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAcD,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,iBAAiB,EAAE,EAC9B,MAAM,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,EAC1B,OAAO,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,GAC1B,MAAM,EAAE,CA4BV;AAED,wBAAgB,qBAAqB,IAAI,aAAa,EAAE,CAgFvD;AAED,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACzE,MAAM,GAAG,IAAI,CAgBf;
|
|
1
|
+
{"version":3,"file":"keychain.d.ts","sourceRoot":"","sources":["../src/keychain.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,iBAAiB,CAAA;CAC/B;AAED,eAAO,MAAM,eAAe,4BAA4B,CAAA;AAExD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAmDtE;AAkID,wBAAgB,mBAAmB,CACjC,SAAS,SAA8D,GACtE,iBAAiB,GAAG,IAAI,CAW1B;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAExD;AAwCD,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAcD,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,iBAAiB,EAAE,EAC9B,MAAM,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,EAC1B,OAAO,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,GAC1B,MAAM,EAAE,CA4BV;AAED,wBAAgB,qBAAqB,IAAI,aAAa,EAAE,CAgFvD;AAED,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACzE,MAAM,GAAG,IAAI,CAgBf;AAgCD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,EACX,mBAAmB,EAAE,MAAM,GAC1B,OAAO,CAGT;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,iBAAiB,EACxB,SAAS,CAAC,EAAE,MAAM,EAClB,wBAAwB,CAAC,EAAE,MAAM,GAChC,OAAO,CA8FT;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,GACjB,iBAAiB,GAAG,IAAI,CAO1B"}
|
package/dist/keychain.js
CHANGED
|
@@ -340,7 +340,37 @@ function getKeychainAccountName(serviceName) {
|
|
|
340
340
|
return null;
|
|
341
341
|
}
|
|
342
342
|
}
|
|
343
|
-
|
|
343
|
+
/**
|
|
344
|
+
* A short, non-reversible tag for an access token, so write-back decisions
|
|
345
|
+
* can be correlated across log lines (and against another account's) without
|
|
346
|
+
* putting token material in the log.
|
|
347
|
+
*/
|
|
348
|
+
function tokenFingerprint(token) {
|
|
349
|
+
return createHash("sha256").update(token).digest("hex").slice(0, 8);
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Whether a stored credential blob still carries the access token we expect.
|
|
353
|
+
*
|
|
354
|
+
* Guards write-back against an external switch landing between the read that
|
|
355
|
+
* produced the token being refreshed and the write of its replacement. An
|
|
356
|
+
* unparseable blob returns false: a write into state we cannot identify is
|
|
357
|
+
* exactly what this is meant to prevent.
|
|
358
|
+
*
|
|
359
|
+
* Deliberately stricter than the write it guards: this validates through
|
|
360
|
+
* parseCredentials (field types, mcpOAuth-only rejection) while
|
|
361
|
+
* updateCredentialBlob rewrites anything JSON.parse accepts. So a blob the
|
|
362
|
+
* write path would happily update can still be refused here. That gap is
|
|
363
|
+
* intentional — reaching this guard means an earlier parseCredentials
|
|
364
|
+
* succeeded, so a blob that no longer parses changed shape after we read it
|
|
365
|
+
* (a truncated non-atomic external write, or a hand edit), and declining to
|
|
366
|
+
* write over it is correct. Anyone tightening parseCredentials should know it
|
|
367
|
+
* narrows write-back too, not just reads.
|
|
368
|
+
*/
|
|
369
|
+
export function credentialBlobMatches(raw, expectedAccessToken) {
|
|
370
|
+
const parsed = parseCredentials(raw);
|
|
371
|
+
return parsed?.accessToken === expectedAccessToken;
|
|
372
|
+
}
|
|
373
|
+
export function writeBackCredentials(source, creds, configDir, expectedPriorAccessToken) {
|
|
344
374
|
const newCreds = {
|
|
345
375
|
accessToken: creds.accessToken,
|
|
346
376
|
refreshToken: creds.refreshToken,
|
|
@@ -351,6 +381,25 @@ export function writeBackCredentials(source, creds, configDir) {
|
|
|
351
381
|
const dir = configDir ?? process.env.CLAUDE_CONFIG_DIR ?? join(homedir(), ".claude");
|
|
352
382
|
const credPath = join(dir, ".credentials.json");
|
|
353
383
|
const raw = readFileSync(credPath, "utf-8");
|
|
384
|
+
if (expectedPriorAccessToken !== undefined &&
|
|
385
|
+
!credentialBlobMatches(raw, expectedPriorAccessToken)) {
|
|
386
|
+
// Two operationally opposite causes: another account legitimately
|
|
387
|
+
// holds the slot (benign, no action) versus a blob we cannot read at
|
|
388
|
+
// all (corruption, needs a human). Same refusal, different events.
|
|
389
|
+
const stored = parseCredentials(raw);
|
|
390
|
+
if (stored === null) {
|
|
391
|
+
log("writeback_skipped_unparseable", { source, configDir: dir });
|
|
392
|
+
}
|
|
393
|
+
else {
|
|
394
|
+
log("writeback_skipped_stale", {
|
|
395
|
+
source,
|
|
396
|
+
configDir: dir,
|
|
397
|
+
expected: tokenFingerprint(expectedPriorAccessToken),
|
|
398
|
+
stored: tokenFingerprint(stored.accessToken),
|
|
399
|
+
});
|
|
400
|
+
}
|
|
401
|
+
return false;
|
|
402
|
+
}
|
|
354
403
|
const updated = updateCredentialBlob(raw, newCreds);
|
|
355
404
|
if (!updated)
|
|
356
405
|
return false;
|
|
@@ -371,6 +420,22 @@ export function writeBackCredentials(source, creds, configDir) {
|
|
|
371
420
|
const raw = readKeychainService(source);
|
|
372
421
|
if (!raw)
|
|
373
422
|
return false;
|
|
423
|
+
if (expectedPriorAccessToken !== undefined &&
|
|
424
|
+
!credentialBlobMatches(raw, expectedPriorAccessToken)) {
|
|
425
|
+
// See the file branch: a mismatch is expected, an unreadable blob is not.
|
|
426
|
+
const stored = parseCredentials(raw);
|
|
427
|
+
if (stored === null) {
|
|
428
|
+
log("writeback_skipped_unparseable", { source });
|
|
429
|
+
}
|
|
430
|
+
else {
|
|
431
|
+
log("writeback_skipped_stale", {
|
|
432
|
+
source,
|
|
433
|
+
expected: tokenFingerprint(expectedPriorAccessToken),
|
|
434
|
+
stored: tokenFingerprint(stored.accessToken),
|
|
435
|
+
});
|
|
436
|
+
}
|
|
437
|
+
return false;
|
|
438
|
+
}
|
|
374
439
|
const updated = updateCredentialBlob(raw, newCreds);
|
|
375
440
|
if (!updated)
|
|
376
441
|
return false;
|
package/dist/keychain.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keychain.js","sourceRoot":"","sources":["../src/keychain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EACL,SAAS,EACT,UAAU,EACV,WAAW,EACX,YAAY,EACZ,aAAa,GACd,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAgBjC,MAAM,CAAC,MAAM,eAAe,GAAG,yBAAyB,CAAA;AAExD,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,IAAI,MAAe,CAAA;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,IAAI,GAAI,MAAsC,CAAC,aAAa,IAAI,MAAM,CAAA;IAC5E,MAAM,KAAK,GAAG,IAMb,CAAA;IAED,IAAK,MAAiC,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACtE,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IACE,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ;QACrC,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ;QACtC,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,EACnC,CAAC;QACD,GAAG,CAAC,oBAAoB,EAAE;YACxB,cAAc,EAAE,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ;YACrD,eAAe,EAAE,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ;YACvD,SAAS,EAAE,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;YAC9C,SAAS,EAAE,KAAK;SACjB,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,GAAG,CAAC,oBAAoB,EAAE;QACxB,cAAc,EAAE,IAAI;QACpB,eAAe,EAAE,IAAI;QACrB,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,KAAK;KACjB,CAAC,CAAA;IAEF,OAAO;QACL,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;QACtC,gBAAgB,EACd,OAAO,KAAK,CAAC,gBAAgB,KAAK,QAAQ;YACxC,CAAC,CAAC,KAAK,CAAC,gBAAgB;YACxB,CAAC,CAAC,SAAS;KAChB,CAAA;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,WAAmB;IAC9C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CACrB,sCAAsC,WAAW,MAAM,EACvD;YACE,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,OAAO;SAClB,CACF,CAAC,IAAI,EAAE,CAAA;QACR,GAAG,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QAC7D,OAAO,MAAM,CAAA;IACf,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,GAA2D,CAAA;QAEzE,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC/C,GAAG,CAAC,qBAAqB,EAAE;gBACzB,OAAO,EAAE,WAAW;gBACpB,SAAS,EAAE,SAAS;aACrB,CAAC,CAAA;YACF,MAAM,IAAI,KAAK,CACb,0FAA0F,EAC1F,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAA;QACH,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YACxB,GAAG,CAAC,qBAAqB,EAAE;gBACzB,OAAO,EAAE,WAAW;gBACpB,SAAS,EAAE,QAAQ;aACpB,CAAC,CAAA;YACF,MAAM,IAAI,KAAK,CACb,mHAAmH,EACnH,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAA;QACH,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACzB,GAAG,CAAC,qBAAqB,EAAE;gBACzB,OAAO,EAAE,WAAW;gBACpB,SAAS,EAAE,QAAQ;aACpB,CAAC,CAAA;YACF,MAAM,IAAI,KAAK,CACb,yEAAyE,EACzE,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAA;QACH,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YACxB,GAAG,CAAC,qBAAqB,EAAE;gBACzB,OAAO,EAAE,WAAW;gBACpB,SAAS,EAAE,WAAW;aACvB,CAAC,CAAA;YACF,OAAO,IAAI,CAAA;QACb,CAAC;QACD,GAAG,CAAC,qBAAqB,EAAE;YACzB,OAAO,EAAE,WAAW;YACpB,SAAS,EAAE,QAAQ,KAAK,CAAC,MAAM,IAAI,SAAS,EAAE;SAC/C,CAAC,CAAA;QACF,MAAM,IAAI,KAAK,CACb,kCAAkC,WAAW,WAAW,KAAK,CAAC,MAAM,IAAI,SAAS,4CAA4C,EAC7H,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAA;IACH,CAAC;AACH,CAAC;AAED,SAAS,0BAA0B;IACjC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,QAAQ,CAAC,wBAAwB,EAAE;YAC9C,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,EAAE,QAAQ;YACrC,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAa,EAAE,CAAA;QAC7B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;QAE9B,iEAAiE;QACjE,+DAA+D;QAC/D,0CAA0C;QAC1C,MAAM,EAAE,GAAG,2CAA2C,CAAA;QACtD,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrB,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;YAClB,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YAC7B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBACb,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACpB,CAAC;YACD,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnB,CAAC;QAED,MAAM,OAAO,GAAa,EAAE,CAAA;QAC5B,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAC5D,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,GAAG,KAAK,eAAe;gBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAChD,CAAC;QACD,GAAG,CAAC,eAAe,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,CAAA;QAChD,OAAO,OAAO,CAAA;IAChB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,eAAe,EAAE;YACnB,KAAK,EAAE,kCAAkC;YACzC,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SAC1D,CAAC,CAAA;QACF,OAAO,CAAC,eAAe,CAAC,CAAA;IAC1B,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,SAAiB;IAC/C,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAA;IACnD,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC;QAC/B,GAAG,CAAC,SAAS,KAAK,gBAAgB;YAChC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;YACnC,CAAC,CAAC,EAAE,CAAC;KACR,CAAA;IAED,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;YACvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAE1B,CAAA;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,YAAY,CAAA;YAC7C,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAA;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,qBAAqB;QACvB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC;IAEvE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAA;QACrD,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAC3C,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;QACnC,GAAG,CAAC,uBAAuB,EAAE,EAAE,OAAO,EAAE,KAAK,KAAK,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;QACpE,OAAO,KAAK,CAAA;IACd,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,uBAAuB,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;QAC3D,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACnE,CAAC;AAED,IAAI,gBAAgB,GAA+B,IAAI,CAAA;AAEvD,SAAS,qBAAqB,CAAC,MAAmB;IAChD,MAAM,YAAY,GAAG,CAAC,KAA0B,EAAE,EAAE,CAClD,CAAC,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;IAElD,IAAI,gBAAgB,IAAI,YAAY,CAAC,gBAAgB,CAAC;QACpD,OAAO,gBAAgB,CAAA;IAEzB,MAAM,KAAK,GAAG,gBAAgB,IAAI,IAAI,GAAG,EAAkB,CAAA;IAE3D,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAA;QACxC,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACtE,CAAC,CAAA;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAClC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;IACvC,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IACtB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;QAC1D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAQ;YACjE,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;YAClC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;gBAAE,SAAQ;YACpD,MAAM,CAAC,GAAG,CAAC,CAAA;YACX,IAAI,YAAY,CAAC,KAAK,CAAC;gBAAE,MAAK;QAChC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,EAAE;IACJ,CAAC;IAED,gBAAgB,GAAG,KAAK,CAAA;IACxB,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,gBAAgB,GAAG,IAAI,CAAA;AACzB,CAAC;AAED,SAAS,6BAA6B,CACpC,gBAA6B;IAE7B,MAAM,KAAK,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,CAAA;IACrD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAA;IACxC,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC7B,IAAI,GAAG;YAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAClC,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,SAA8B,EAC9B,MAA0B,EAC1B,OAA2B;IAE3B,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACrC,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACvB,MAAM,IAAI,GACR,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAC1E,OAAO,UAAU,IAAI,EAAE,CAAA;QACzB,CAAC;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAA;IACxC,KAAK,MAAM,CAAC,IAAI,UAAU;QAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IAEnE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAA;IACtC,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QAChC,IAAI,KAAa,CAAA;QACjB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,KAAK,GAAG,IAAI,CAAA;QACd,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;YACnC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;YACjB,KAAK,GAAG,GAAG,IAAI,IAAI,CAAC,EAAE,CAAA;QACxB,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAA;QACzB,IAAI,KAAK;YAAE,OAAO,GAAG,KAAK,KAAK,KAAK,EAAE,CAAA;QACtC,MAAM,MAAM,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,CAAA;QAC3B,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,CAAA;IAC/C,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,MAAM,SAAS,GACb,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAA;QAC7D,MAAM,KAAK,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAA;QAC5C,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAA;QACrB,MAAM,KAAK,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAA;QAC/C,MAAM,CAAC,KAAK,CAAC,GAAG,kBAAkB,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;QACpD,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAA;IACnE,CAAC;IAED,MAAM,QAAQ,GAAG,0BAA0B,EAAE,CAAA;IAC7C,MAAM,gBAAgB,GAIjB,EAAE,CAAA;IAEP,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAA;QACpC,IAAI,CAAC,GAAG;YAAE,SAAQ;QAClB,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;QACnC,IAAI,CAAC,KAAK;YAAE,SAAQ;QACpB,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;QAChD,gBAAgB,CAAC,IAAI,CAAC;YACpB,MAAM,EAAE,GAAG;YACX,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;YAC3C,WAAW,EAAE,KAAK;SACnB,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,SAAS,GACb,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAA;QAC7D,MAAM,KAAK,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAA;QAC5C,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAA;QACrB,MAAM,KAAK,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAA;QAC/C,MAAM,CAAC,KAAK,CAAC,GAAG,kBAAkB,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;QACpD,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAA;IACnE,CAAC;IAED,MAAM,WAAW,GAAG,6BAA6B,CAC/C,IAAI,GAAG,CACL,gBAAgB;SACb,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAC1C,CACF,CAAA;IAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC1C,MAAM,SAAS,GACb,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;QAC5E,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAClE,GAAG,CAAC,oBAAoB,EAAE;YACxB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,SAAS,EAAE,SAAS,IAAI,IAAI;SAC7B,CAAC,CAAA;QACF,OAAO;YACL,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,SAAS;YACT,KAAK;SACN,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,kBAAkB,CAC/B,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,EAClC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAC5B,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAC9B,CAAA;IAED,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC3B,MAAM,OAAO,GAAkB;YAC7B,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;YAChB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,WAAW,EAAE,CAAC,CAAC,WAAW;SAC3B,CAAA;QACD,IAAI,CAAC,CAAC,SAAS;YAAE,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAA;QAChD,OAAO,OAAO,CAAA;IAChB,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,YAAoB,EACpB,QAA0E;IAE1E,IAAI,MAA+B,CAAA;IACnC,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,aAAoD,CAAA;IAC3E,MAAM,MAAM,GAAG,OAAO,IAAI,MAAM,CAAA;IAEhC,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAA;IACzC,MAAM,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAA;IAC3C,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAA;IAErC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;AAC/B,CAAC;AAED,SAAS,sBAAsB,CAAC,WAAmB;IACjD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CACzB,mBAAmB,EACnB,CAAC,uBAAuB,EAAE,IAAI,EAAE,WAAW,CAAC,EAC5C,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CACtE,CAAA;QACD,MAAM,KAAK,GAAG,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACnD,IAAI,KAAK,EAAE,CAAC;YACV,GAAG,CAAC,uBAAuB,EAAE;gBAC3B,OAAO,EAAE,WAAW;gBACpB,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;aAClB,CAAC,CAAA;YACF,OAAO,KAAK,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,MAAc,EACd,KAAwB,EACxB,SAAkB;IAElB,MAAM,QAAQ,GAAG;QACf,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAA;IAED,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,GAAG,GACP,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAA;YAC1E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAA;YAC/C,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YAC3C,MAAM,OAAO,GAAG,oBAAoB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;YACnD,IAAI,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAA;YAC1B,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;YACpE,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;gBACjC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;YAC5B,CAAC;YACD,GAAG,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAA;YACpD,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,IAAI,IAAI,EAAE,CAAC,CAAA;YACjE,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAA;YACvC,IAAI,CAAC,GAAG;gBAAE,OAAO,KAAK,CAAA;YACtB,MAAM,OAAO,GAAG,oBAAoB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;YACnD,IAAI,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAA;YAC1B,MAAM,WAAW,GAAG,sBAAsB,CAAC,MAAM,CAAC,IAAI,MAAM,CAAA;YAC5D,YAAY,CACV,mBAAmB,EACnB;gBACE,sBAAsB;gBACtB,IAAI;gBACJ,MAAM;gBACN,IAAI;gBACJ,WAAW;gBACX,IAAI;gBACJ,OAAO;gBACP,IAAI;aACL,EACD,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CACnC,CAAA;YACD,GAAG,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAA;YACjD,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;YACnC,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,MAAc,EACd,SAAkB;IAElB,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,mBAAmB,CAAC,SAAS,CAAC,CAAA;IACvC,CAAC;IACD,MAAM,GAAG,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAA;IACvC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAA;IACrB,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAA;AAC9B,CAAC"}
|
|
1
|
+
{"version":3,"file":"keychain.js","sourceRoot":"","sources":["../src/keychain.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transient-vs-terminal classification and per-account backoff for OAuth token
|
|
3
|
+
* refreshes.
|
|
4
|
+
*
|
|
5
|
+
* The token endpoint (`claude.ai/v1/oauth/token`) rate-limits refresh requests
|
|
6
|
+
* with HTTP 429 `rate_limit_error`. That is transient — the refresh token is
|
|
7
|
+
* still valid — but the plugin previously treated every non-OK refresh as a
|
|
8
|
+
* hard failure, surfacing "credentials unavailable. Run `claude`" and then
|
|
9
|
+
* hammering the same endpoint (and the `claude` CLI, which hits it too). This
|
|
10
|
+
* module lets callers tell a transient rate-limit apart from a genuinely dead
|
|
11
|
+
* refresh token (`invalid_grant`), and imposes a cooldown so a rate-limited
|
|
12
|
+
* account is not re-hit until the window has plausibly cleared.
|
|
13
|
+
*/
|
|
14
|
+
export type RefreshFailureKind = "transient" | "terminal";
|
|
15
|
+
/** Base cooldown after the first transient failure (env-overridable). */
|
|
16
|
+
export declare const BASE_COOLDOWN_MS: number;
|
|
17
|
+
/** Hard ceiling for a single cooldown, regardless of consecutive failures. */
|
|
18
|
+
export declare const MAX_COOLDOWN_MS = 60000;
|
|
19
|
+
export declare function classifyRefreshFailure(_status: number, oauthError?: string): RefreshFailureKind;
|
|
20
|
+
interface BackoffOptions {
|
|
21
|
+
retryAfterMs?: number;
|
|
22
|
+
now?: number;
|
|
23
|
+
rng?: () => number;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Delay before the next refresh attempt. An explicit `retry-after` from the
|
|
27
|
+
* endpoint wins (still clamped to `MAX_COOLDOWN_MS`); otherwise an exponential
|
|
28
|
+
* schedule (base · 2^(n-1),
|
|
29
|
+
* capped) with jitter in the [50%, 100%] band to desynchronize the several
|
|
30
|
+
* OpenCode instances / CLI invocations that all refresh the same account.
|
|
31
|
+
*/
|
|
32
|
+
export declare function computeBackoffMs(consecutive: number, opts?: BackoffOptions): number;
|
|
33
|
+
/**
|
|
34
|
+
* Record a transient refresh failure for `source` and return the cooldown
|
|
35
|
+
* duration applied. The cooldown escalates with consecutive transient
|
|
36
|
+
* failures and is exposed via {@link isRefreshCooldownActive}.
|
|
37
|
+
*/
|
|
38
|
+
export declare function noteRefreshTransient(source: string, opts?: BackoffOptions): number;
|
|
39
|
+
/** Record a terminal refresh failure (dead refresh token). No cooldown. */
|
|
40
|
+
export declare function noteRefreshTerminal(source: string): void;
|
|
41
|
+
/** Clear all backoff state for `source` after a successful refresh/adopt. */
|
|
42
|
+
export declare function clearRefreshOutcome(source: string): void;
|
|
43
|
+
export declare function isRefreshCooldownActive(source: string, now?: number): boolean;
|
|
44
|
+
export declare function getRefreshCooldownUntil(source: string): number | null;
|
|
45
|
+
export declare function getRefreshFailureKind(source: string): RefreshFailureKind | null;
|
|
46
|
+
/** Test seam: drop all in-memory backoff state. */
|
|
47
|
+
export declare function resetRefreshBackoffState(): void;
|
|
48
|
+
export {};
|
|
49
|
+
//# sourceMappingURL=refresh-backoff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refresh-backoff.d.ts","sourceRoot":"","sources":["../src/refresh-backoff.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,UAAU,CAAA;AAEzD,yEAAyE;AACzE,eAAO,MAAM,gBAAgB,QAIzB,CAAA;AAEJ,8EAA8E;AAC9E,eAAO,MAAM,eAAe,QAAS,CAAA;AAerC,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,GAClB,kBAAkB,CAIpB;AAED,UAAU,cAAc;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,IAAI,GAAE,cAAmB,GACxB,MAAM,CAYR;AAUD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,cAAmB,GACxB,MAAM,CAOR;AAED,2EAA2E;AAC3E,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAGxD;AAED,6EAA6E;AAC7E,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAGxD;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,GAAG,GAAE,MAAmB,GACvB,OAAO,CAGT;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAErE;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,GACb,kBAAkB,GAAG,IAAI,CAE3B;AAED,mDAAmD;AACnD,wBAAgB,wBAAwB,IAAI,IAAI,CAG/C"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transient-vs-terminal classification and per-account backoff for OAuth token
|
|
3
|
+
* refreshes.
|
|
4
|
+
*
|
|
5
|
+
* The token endpoint (`claude.ai/v1/oauth/token`) rate-limits refresh requests
|
|
6
|
+
* with HTTP 429 `rate_limit_error`. That is transient — the refresh token is
|
|
7
|
+
* still valid — but the plugin previously treated every non-OK refresh as a
|
|
8
|
+
* hard failure, surfacing "credentials unavailable. Run `claude`" and then
|
|
9
|
+
* hammering the same endpoint (and the `claude` CLI, which hits it too). This
|
|
10
|
+
* module lets callers tell a transient rate-limit apart from a genuinely dead
|
|
11
|
+
* refresh token (`invalid_grant`), and imposes a cooldown so a rate-limited
|
|
12
|
+
* account is not re-hit until the window has plausibly cleared.
|
|
13
|
+
*/
|
|
14
|
+
/** Base cooldown after the first transient failure (env-overridable). */
|
|
15
|
+
export const BASE_COOLDOWN_MS = (() => {
|
|
16
|
+
const raw = process.env.OPENCODE_CLAUDE_AUTH_REFRESH_COOLDOWN_MS;
|
|
17
|
+
const parsed = raw ? Number.parseInt(raw, 10) : NaN;
|
|
18
|
+
return Number.isFinite(parsed) && parsed > 0 ? parsed : 15_000;
|
|
19
|
+
})();
|
|
20
|
+
/** Hard ceiling for a single cooldown, regardless of consecutive failures. */
|
|
21
|
+
export const MAX_COOLDOWN_MS = 60_000;
|
|
22
|
+
/**
|
|
23
|
+
* OAuth token-endpoint error codes that mean the refresh token itself is no
|
|
24
|
+
* longer usable. Everything else — rate limits, 5xx, network errors, unknown
|
|
25
|
+
* codes — is treated as transient so a recoverable blip never surfaces as a
|
|
26
|
+
* hard "re-authenticate" error.
|
|
27
|
+
*/
|
|
28
|
+
const TERMINAL_OAUTH_ERRORS = new Set([
|
|
29
|
+
"invalid_grant",
|
|
30
|
+
"invalid_client",
|
|
31
|
+
"unauthorized_client",
|
|
32
|
+
"unsupported_grant_type",
|
|
33
|
+
]);
|
|
34
|
+
export function classifyRefreshFailure(_status, oauthError) {
|
|
35
|
+
return oauthError && TERMINAL_OAUTH_ERRORS.has(oauthError)
|
|
36
|
+
? "terminal"
|
|
37
|
+
: "transient";
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Delay before the next refresh attempt. An explicit `retry-after` from the
|
|
41
|
+
* endpoint wins (still clamped to `MAX_COOLDOWN_MS`); otherwise an exponential
|
|
42
|
+
* schedule (base · 2^(n-1),
|
|
43
|
+
* capped) with jitter in the [50%, 100%] band to desynchronize the several
|
|
44
|
+
* OpenCode instances / CLI invocations that all refresh the same account.
|
|
45
|
+
*/
|
|
46
|
+
export function computeBackoffMs(consecutive, opts = {}) {
|
|
47
|
+
if (opts.retryAfterMs !== undefined && opts.retryAfterMs > 0) {
|
|
48
|
+
// Honor the server's hint, but keep it under the documented cap so a large
|
|
49
|
+
// `Retry-After` (e.g. an hour-long quota reset) can't pin every request to
|
|
50
|
+
// the full wait budget for that whole window.
|
|
51
|
+
return Math.min(MAX_COOLDOWN_MS, opts.retryAfterMs);
|
|
52
|
+
}
|
|
53
|
+
const rng = opts.rng ?? Math.random;
|
|
54
|
+
const exponent = Math.max(0, consecutive - 1);
|
|
55
|
+
const scheduled = Math.min(MAX_COOLDOWN_MS, BASE_COOLDOWN_MS * 2 ** exponent);
|
|
56
|
+
const jitterFactor = 0.5 + rng() * 0.5;
|
|
57
|
+
return Math.min(MAX_COOLDOWN_MS, Math.round(scheduled * jitterFactor));
|
|
58
|
+
}
|
|
59
|
+
const cooldowns = new Map();
|
|
60
|
+
const lastFailureKind = new Map();
|
|
61
|
+
/**
|
|
62
|
+
* Record a transient refresh failure for `source` and return the cooldown
|
|
63
|
+
* duration applied. The cooldown escalates with consecutive transient
|
|
64
|
+
* failures and is exposed via {@link isRefreshCooldownActive}.
|
|
65
|
+
*/
|
|
66
|
+
export function noteRefreshTransient(source, opts = {}) {
|
|
67
|
+
const now = opts.now ?? Date.now();
|
|
68
|
+
const consecutive = (cooldowns.get(source)?.consecutive ?? 0) + 1;
|
|
69
|
+
const ms = computeBackoffMs(consecutive, opts);
|
|
70
|
+
cooldowns.set(source, { until: now + ms, consecutive });
|
|
71
|
+
lastFailureKind.set(source, "transient");
|
|
72
|
+
return ms;
|
|
73
|
+
}
|
|
74
|
+
/** Record a terminal refresh failure (dead refresh token). No cooldown. */
|
|
75
|
+
export function noteRefreshTerminal(source) {
|
|
76
|
+
cooldowns.delete(source);
|
|
77
|
+
lastFailureKind.set(source, "terminal");
|
|
78
|
+
}
|
|
79
|
+
/** Clear all backoff state for `source` after a successful refresh/adopt. */
|
|
80
|
+
export function clearRefreshOutcome(source) {
|
|
81
|
+
cooldowns.delete(source);
|
|
82
|
+
lastFailureKind.delete(source);
|
|
83
|
+
}
|
|
84
|
+
export function isRefreshCooldownActive(source, now = Date.now()) {
|
|
85
|
+
const state = cooldowns.get(source);
|
|
86
|
+
return state !== undefined && state.until > now;
|
|
87
|
+
}
|
|
88
|
+
export function getRefreshCooldownUntil(source) {
|
|
89
|
+
return cooldowns.get(source)?.until ?? null;
|
|
90
|
+
}
|
|
91
|
+
export function getRefreshFailureKind(source) {
|
|
92
|
+
return lastFailureKind.get(source) ?? null;
|
|
93
|
+
}
|
|
94
|
+
/** Test seam: drop all in-memory backoff state. */
|
|
95
|
+
export function resetRefreshBackoffState() {
|
|
96
|
+
cooldowns.clear();
|
|
97
|
+
lastFailureKind.clear();
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=refresh-backoff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refresh-backoff.js","sourceRoot":"","sources":["../src/refresh-backoff.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/** How long before a held lock is considered stale (env-overridable). */
|
|
2
|
+
export declare const DEFAULT_LOCK_TTL_MS: number;
|
|
3
|
+
export interface RefreshLock {
|
|
4
|
+
release(): void;
|
|
5
|
+
}
|
|
6
|
+
export interface AcquireOptions {
|
|
7
|
+
/** Directory to hold lock files in. Defaults to the OpenCode data dir. */
|
|
8
|
+
dir?: string;
|
|
9
|
+
/** Staleness threshold in ms. Defaults to {@link DEFAULT_LOCK_TTL_MS}. */
|
|
10
|
+
ttlMs?: number;
|
|
11
|
+
now?: () => number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Try to acquire the refresh lock for `source`.
|
|
15
|
+
*
|
|
16
|
+
* Returns a {@link RefreshLock} when this process may refresh (either it won the
|
|
17
|
+
* lock, or a filesystem error made the lock unavailable and we degrade to
|
|
18
|
+
* best-effort). Returns null when a live holder currently owns it — the caller
|
|
19
|
+
* should wait and adopt the holder's result instead of refreshing.
|
|
20
|
+
*/
|
|
21
|
+
export declare function acquireRefreshLock(source: string, opts?: AcquireOptions): RefreshLock | null;
|
|
22
|
+
//# sourceMappingURL=refresh-lock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refresh-lock.d.ts","sourceRoot":"","sources":["../src/refresh-lock.ts"],"names":[],"mappings":"AA4BA,yEAAyE;AACzE,eAAO,MAAM,mBAAmB,QAI5B,CAAA;AAEJ,MAAM,WAAW,WAAW;IAC1B,OAAO,IAAI,IAAI,CAAA;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,0EAA0E;IAC1E,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CACnB;AAkBD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,cAAmB,GACxB,WAAW,GAAG,IAAI,CAmEpB"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Best-effort cross-process single-flight lock for OAuth token refreshes.
|
|
3
|
+
*
|
|
4
|
+
* The plugin runs inside every OpenCode process, so several instances (plus the
|
|
5
|
+
* `claude` CLI) can all decide to refresh the same expired token at once and
|
|
6
|
+
* bury the endpoint in duplicate requests — the token endpoint answers the pile
|
|
7
|
+
* with HTTP 429. An advisory lock file lets exactly one refresher proceed; the
|
|
8
|
+
* others wait briefly and adopt the winner's freshly written token from the
|
|
9
|
+
* shared credential store.
|
|
10
|
+
*
|
|
11
|
+
* "Best-effort" is deliberate: any filesystem error degrades to running the
|
|
12
|
+
* refresh without a lock rather than blocking it. A crashed holder cannot
|
|
13
|
+
* wedge the system either — the lock carries a TTL and a stale one is taken
|
|
14
|
+
* over.
|
|
15
|
+
*/
|
|
16
|
+
import { closeSync, mkdirSync, openSync, statSync, unlinkSync, writeSync, } from "node:fs";
|
|
17
|
+
import { homedir } from "node:os";
|
|
18
|
+
import { join } from "node:path";
|
|
19
|
+
import { createHash } from "node:crypto";
|
|
20
|
+
import { log } from "./logger.js";
|
|
21
|
+
/** How long before a held lock is considered stale (env-overridable). */
|
|
22
|
+
export const DEFAULT_LOCK_TTL_MS = (() => {
|
|
23
|
+
const raw = process.env.OPENCODE_CLAUDE_AUTH_REFRESH_LOCK_TTL_MS;
|
|
24
|
+
const parsed = raw ? Number.parseInt(raw, 10) : NaN;
|
|
25
|
+
return Number.isFinite(parsed) && parsed > 0 ? parsed : 20_000;
|
|
26
|
+
})();
|
|
27
|
+
function defaultLockDir() {
|
|
28
|
+
// Read at call time so tests (and unusual deployments) can redirect the lock
|
|
29
|
+
// directory without reloading the module.
|
|
30
|
+
return (process.env.OPENCODE_CLAUDE_AUTH_REFRESH_LOCK_DIR ??
|
|
31
|
+
join(homedir(), ".local", "share", "opencode"));
|
|
32
|
+
}
|
|
33
|
+
function lockPathFor(source, dir) {
|
|
34
|
+
const digest = createHash("sha256").update(source).digest("hex").slice(0, 16);
|
|
35
|
+
return join(dir, `claude-auth-refresh-${digest}.lock`);
|
|
36
|
+
}
|
|
37
|
+
const NOOP_LOCK = { release() { } };
|
|
38
|
+
/**
|
|
39
|
+
* Try to acquire the refresh lock for `source`.
|
|
40
|
+
*
|
|
41
|
+
* Returns a {@link RefreshLock} when this process may refresh (either it won the
|
|
42
|
+
* lock, or a filesystem error made the lock unavailable and we degrade to
|
|
43
|
+
* best-effort). Returns null when a live holder currently owns it — the caller
|
|
44
|
+
* should wait and adopt the holder's result instead of refreshing.
|
|
45
|
+
*/
|
|
46
|
+
export function acquireRefreshLock(source, opts = {}) {
|
|
47
|
+
const dir = opts.dir ?? defaultLockDir();
|
|
48
|
+
const ttlMs = opts.ttlMs ?? DEFAULT_LOCK_TTL_MS;
|
|
49
|
+
const now = opts.now ?? Date.now;
|
|
50
|
+
const path = lockPathFor(source, dir);
|
|
51
|
+
try {
|
|
52
|
+
mkdirSync(dir, { recursive: true });
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
// Non-fatal: openSync below will surface a real problem.
|
|
56
|
+
}
|
|
57
|
+
// Two attempts: the second only runs after clearing a stale lock.
|
|
58
|
+
for (let attempt = 0; attempt < 2; attempt++) {
|
|
59
|
+
let fd;
|
|
60
|
+
try {
|
|
61
|
+
fd = openSync(path, "wx");
|
|
62
|
+
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
const code = err.code;
|
|
65
|
+
if (code !== "EEXIST") {
|
|
66
|
+
// Unexpected FS failure — never let the lock block a refresh.
|
|
67
|
+
log("refresh_lock_error", { source, error: String(code ?? err) });
|
|
68
|
+
return NOOP_LOCK;
|
|
69
|
+
}
|
|
70
|
+
// Someone holds it. Take over only if it is stale.
|
|
71
|
+
let stale = false;
|
|
72
|
+
try {
|
|
73
|
+
stale = now() - statSync(path).mtimeMs > ttlMs;
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
// Vanished between open and stat — retry the acquire.
|
|
77
|
+
stale = true;
|
|
78
|
+
}
|
|
79
|
+
if (stale) {
|
|
80
|
+
log("refresh_lock_stale_takeover", { source });
|
|
81
|
+
try {
|
|
82
|
+
unlinkSync(path);
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
// Lost the race to remove it; the next attempt/stat settles it.
|
|
86
|
+
}
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
try {
|
|
92
|
+
writeSync(fd, JSON.stringify({ pid: process.pid, ts: now() }));
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
// The lock is held regardless of whether the payload wrote.
|
|
96
|
+
}
|
|
97
|
+
log("refresh_lock_acquired", { source });
|
|
98
|
+
return {
|
|
99
|
+
release() {
|
|
100
|
+
try {
|
|
101
|
+
closeSync(fd);
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
// already closed
|
|
105
|
+
}
|
|
106
|
+
try {
|
|
107
|
+
unlinkSync(path);
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
// already gone (e.g. a stale-takeover removed it)
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=refresh-lock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refresh-lock.js","sourceRoot":"","sources":["../src/refresh-lock.ts"],"names":[],"mappings":"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"}
|
package/dist/transforms.d.ts
CHANGED
|
@@ -7,8 +7,48 @@ type Message = {
|
|
|
7
7
|
role?: string;
|
|
8
8
|
content?: string | ContentBlock[];
|
|
9
9
|
};
|
|
10
|
+
/**
|
|
11
|
+
* Strategy for reconciling `tool_use` / `tool_result` adjacency that OpenCode's
|
|
12
|
+
* automatic compaction can break (issues #212/#226/#261):
|
|
13
|
+
*
|
|
14
|
+
* - `placeholder` (default): never delete blocks. For any `tool_use` left
|
|
15
|
+
* without an adjacent `tool_result`, synthesize a paired placeholder result.
|
|
16
|
+
* Because assistant `content[]` is never rewritten, `thinking` /
|
|
17
|
+
* `redacted_thinking` blocks stay byte-identical, sidestepping Anthropic's
|
|
18
|
+
* thinking-preservation contract (issue #261).
|
|
19
|
+
* - `drop`: remove orphaned blocks (the upstream behavior), but omit an entire
|
|
20
|
+
* assistant turn when it carries `thinking` blocks and an orphaned `tool_use`
|
|
21
|
+
* rather than partially rewriting it (which #261 forbids).
|
|
22
|
+
*/
|
|
23
|
+
export type ToolRepairMode = "placeholder" | "drop";
|
|
24
|
+
/** Content used for a synthesized `tool_result` whose real output was compacted away. */
|
|
25
|
+
export declare const TOOL_RESULT_PLACEHOLDER = "Tool result unavailable (removed during context compaction).";
|
|
26
|
+
/**
|
|
27
|
+
* Resolve the repair strategy from the environment. Defaults to `placeholder`,
|
|
28
|
+
* the lossless strategy. Set `OPENCODE_CLAUDE_AUTH_TOOL_REPAIR=drop` to opt into
|
|
29
|
+
* the drop strategy.
|
|
30
|
+
*/
|
|
31
|
+
export declare function resolveToolRepairMode(env?: Record<string, string | undefined>): ToolRepairMode;
|
|
32
|
+
/**
|
|
33
|
+
* Drop-strategy repair. Iterated to a fixed point so that cascades — e.g. an
|
|
34
|
+
* omitted thinking turn orphaning the result that followed it — are fully
|
|
35
|
+
* reconciled rather than left half-repaired.
|
|
36
|
+
*/
|
|
10
37
|
export declare function repairToolPairs(messages: Message[]): Message[];
|
|
11
|
-
|
|
38
|
+
/**
|
|
39
|
+
* Placeholder-strategy repair (default). Guarantees `tool_use` ↔ `tool_result`
|
|
40
|
+
* adjacency without ever deleting a block from an assistant turn, so thinking
|
|
41
|
+
* blocks are preserved exactly. Two passes:
|
|
42
|
+
*
|
|
43
|
+
* 1. Remove `tool_result` blocks that have no adjacent preceding `tool_use`
|
|
44
|
+
* (these live in user turns, so no thinking block is affected).
|
|
45
|
+
* 2. Synthesize a placeholder `tool_result`, adjacent, for every `tool_use`
|
|
46
|
+
* that still lacks one.
|
|
47
|
+
*/
|
|
48
|
+
export declare function synthesizeMissingToolResults(messages: Message[]): Message[];
|
|
49
|
+
/** Dispatch to the configured repair strategy. */
|
|
50
|
+
export declare function applyToolRepair(messages: Message[], mode: ToolRepairMode): Message[];
|
|
51
|
+
export declare function transformBody(body: BodyInit | null | undefined, mode?: ToolRepairMode): BodyInit | null | undefined;
|
|
12
52
|
export declare function stripToolPrefix(text: string): string;
|
|
13
53
|
export declare function transformResponseStream(response: Response): Response;
|
|
14
54
|
export {};
|
package/dist/transforms.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transforms.d.ts","sourceRoot":"","sources":["../src/transforms.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"transforms.d.ts","sourceRoot":"","sources":["../src/transforms.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,eAAe,8DACiC,CAAA;AAG7D,KAAK,YAAY,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAC9E,KAAK,OAAO,GAAG;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE,CAAA;CAClC,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,MAAM,CAAA;AAEnD,yFAAyF;AACzF,eAAO,MAAM,uBAAuB,iEAC4B,CAAA;AAEhE;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,cAAc,CAGhB;AA8ID;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAa9D;AAED;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAsF3E;AAED,kDAAkD;AAClD,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,OAAO,EAAE,EACnB,IAAI,EAAE,cAAc,GACnB,OAAO,EAAE,CAIX;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EACjC,IAAI,GAAE,cAAwC,GAC7C,QAAQ,GAAG,IAAI,GAAG,SAAS,CA2K7B;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKpD;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAqEpE"}
|