funolio-agent 0.17.7 → 0.17.9
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/dist/approval.d.ts.map +1 -1
- package/dist/approval.js +1 -1
- package/dist/approval.js.map +1 -1
- package/dist/auth/anthropic-subscription.d.ts +9 -29
- package/dist/auth/anthropic-subscription.d.ts.map +1 -1
- package/dist/auth/anthropic-subscription.js +12 -133
- package/dist/auth/anthropic-subscription.js.map +1 -1
- package/dist/auth/auto-detect.d.ts +28 -6
- package/dist/auth/auto-detect.d.ts.map +1 -1
- package/dist/auth/auto-detect.js +52 -205
- package/dist/auth/auto-detect.js.map +1 -1
- package/dist/auth/credential-reader.d.ts +24 -4
- package/dist/auth/credential-reader.d.ts.map +1 -1
- package/dist/auth/credential-reader.js +31 -256
- package/dist/auth/credential-reader.js.map +1 -1
- package/dist/auth/credential-status.d.ts +7 -27
- package/dist/auth/credential-status.d.ts.map +1 -1
- package/dist/auth/credential-status.js +7 -95
- package/dist/auth/credential-status.js.map +1 -1
- package/dist/auth/index.d.ts +9 -2
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +10 -10
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/subscription-runtime.d.ts +19 -23
- package/dist/auth/subscription-runtime.d.ts.map +1 -1
- package/dist/auth/subscription-runtime.js +24 -292
- package/dist/auth/subscription-runtime.js.map +1 -1
- package/dist/auth/token-refresh.d.ts +19 -28
- package/dist/auth/token-refresh.d.ts.map +1 -1
- package/dist/auth/token-refresh.js +26 -464
- package/dist/auth/token-refresh.js.map +1 -1
- package/dist/bot-manager.d.ts +5 -6
- package/dist/bot-manager.d.ts.map +1 -1
- package/dist/bot-manager.js +20 -62
- package/dist/bot-manager.js.map +1 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +105 -226
- package/dist/commands/start.js.map +1 -1
- package/dist/context-compressor.d.ts +24 -0
- package/dist/context-compressor.d.ts.map +1 -0
- package/dist/context-compressor.js +134 -0
- package/dist/context-compressor.js.map +1 -0
- package/dist/local-data.d.ts +6 -0
- package/dist/local-data.d.ts.map +1 -1
- package/dist/local-data.js +9 -0
- package/dist/local-data.js.map +1 -1
- package/dist/mcp/manager.d.ts +12 -1
- package/dist/mcp/manager.d.ts.map +1 -1
- package/dist/mcp/manager.js +263 -13
- package/dist/mcp/manager.js.map +1 -1
- package/dist/mcp/stdio-protocol.d.ts +9 -0
- package/dist/mcp/stdio-protocol.d.ts.map +1 -1
- package/dist/mcp/stdio-protocol.js +10 -3
- package/dist/mcp/stdio-protocol.js.map +1 -1
- package/dist/mcp/tool-grouping.d.ts +35 -0
- package/dist/mcp/tool-grouping.d.ts.map +1 -0
- package/dist/mcp/tool-grouping.js +101 -0
- package/dist/mcp/tool-grouping.js.map +1 -0
- package/dist/message-loop.d.ts +1 -10
- package/dist/message-loop.d.ts.map +1 -1
- package/dist/message-loop.js +166 -285
- package/dist/message-loop.js.map +1 -1
- package/dist/mqtt-client.js +2 -2
- package/dist/mqtt-client.js.map +1 -1
- package/dist/providers/anthropic.d.ts +0 -5
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +10 -48
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/index.d.ts +2 -2
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/response-guard.d.ts +13 -0
- package/dist/response-guard.d.ts.map +1 -1
- package/dist/response-guard.js +37 -0
- package/dist/response-guard.js.map +1 -1
- package/dist/tools/analyze-image.js +2 -2
- package/dist/tools/analyze-image.js.map +1 -1
- package/dist/tools/edit-file.d.ts.map +1 -1
- package/dist/tools/edit-file.js +16 -1
- package/dist/tools/edit-file.js.map +1 -1
- package/dist/tools/git-tools.d.ts.map +1 -1
- package/dist/tools/git-tools.js +32 -1
- package/dist/tools/git-tools.js.map +1 -1
- package/dist/tools/list-directory.d.ts.map +1 -1
- package/dist/tools/list-directory.js +23 -0
- package/dist/tools/list-directory.js.map +1 -1
- package/dist/tools/notify-user.d.ts.map +1 -1
- package/dist/tools/notify-user.js +15 -1
- package/dist/tools/notify-user.js.map +1 -1
- package/dist/tools/read-file.d.ts.map +1 -1
- package/dist/tools/read-file.js +3 -1
- package/dist/tools/read-file.js.map +1 -1
- package/dist/tools/request-mcp-install.js +5 -5
- package/dist/tools/request-mcp-install.js.map +1 -1
- package/dist/tools/run-command.d.ts.map +1 -1
- package/dist/tools/run-command.js +16 -4
- package/dist/tools/run-command.js.map +1 -1
- package/dist/tools/sandbox.d.ts.map +1 -1
- package/dist/tools/sandbox.js +6 -0
- package/dist/tools/sandbox.js.map +1 -1
- package/dist/tools/schedule-task.d.ts.map +1 -1
- package/dist/tools/schedule-task.js +37 -0
- package/dist/tools/schedule-task.js.map +1 -1
- package/dist/tools/search-codebase.d.ts.map +1 -1
- package/dist/tools/search-codebase.js +251 -32
- package/dist/tools/search-codebase.js.map +1 -1
- package/dist/tools/web-fetch.d.ts.map +1 -1
- package/dist/tools/web-fetch.js +21 -2
- package/dist/tools/web-fetch.js.map +1 -1
- package/dist/tools/web-search.d.ts.map +1 -1
- package/dist/tools/web-search.js +38 -34
- package/dist/tools/web-search.js.map +1 -1
- package/dist/wizard-support.js.map +1 -1
- package/dist/workflow-engine.js.map +1 -1
- package/package.json +2 -1
package/dist/approval.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approval.d.ts","sourceRoot":"","sources":["../src/approval.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAMtC,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,qBAAqB,GAAG,aAAa,CAAC;AA4BjF,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAID,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,SAAS,EAAE,MAAM,GAAG,aAAa,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA0BD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAInD;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED,wBAAgB,eAAe,IAAI,IAAI,CAGtC;AAID;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,cAAc,EAC9B,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,cAAc,CAmChB;AAmCD,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,KAAK,IAAI,CAAC;AAE1F,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,OAAO,CAAC,OAAO,CAGV;IAEL,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,cAAc,CAAS;gBAEnB,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"approval.d.ts","sourceRoot":"","sources":["../src/approval.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAMtC,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,qBAAqB,GAAG,aAAa,CAAC;AA4BjF,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAID,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,SAAS,EAAE,MAAM,GAAG,aAAa,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA0BD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAInD;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED,wBAAgB,eAAe,IAAI,IAAI,CAGtC;AAID;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,cAAc,EAC9B,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,cAAc,CAmChB;AAmCD,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,KAAK,IAAI,CAAC;AAE1F,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,OAAO,CAAC,OAAO,CAGV;IAEL,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,cAAc,CAAS;gBAEnB,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,SAAU;IAO1E;;;OAGG;IACG,eAAe,CACnB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,cAAc,CAAC;IAI1B;;;OAGG;IACG,qBAAqB,CACzB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,cAAc,CAAC;IA+B1B;;;OAGG;IACH,cAAc,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAsBhD;;OAEG;IACH,SAAS,IAAI,IAAI;IAQjB;;OAEG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAMzC,IAAI,YAAY,IAAI,MAAM,CAEzB;CACF"}
|
package/dist/approval.js
CHANGED
|
@@ -184,7 +184,7 @@ class ApprovalManager extends events_1.EventEmitter {
|
|
|
184
184
|
userId;
|
|
185
185
|
publishFn;
|
|
186
186
|
defaultTimeout;
|
|
187
|
-
constructor(userId, publishFn, defaultTimeout =
|
|
187
|
+
constructor(userId, publishFn, defaultTimeout = 300_000) {
|
|
188
188
|
super();
|
|
189
189
|
this.userId = userId;
|
|
190
190
|
this.publishFn = publishFn;
|
package/dist/approval.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approval.js","sourceRoot":"","sources":["../src/approval.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"approval.js","sourceRoot":"","sources":["../src/approval.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* REMOVED: Anthropic Subscription OAuth auth has been removed.
|
|
3
|
+
*
|
|
4
|
+
* Connection to Anthropic is now exclusively via:
|
|
5
|
+
* 1. claude-cli — spawns the Claude CLI binary (uses your subscription)
|
|
6
|
+
* 2. API key (BYOK) — standard x-api-key authentication
|
|
7
|
+
*/
|
|
2
8
|
export declare const ANTHROPIC_OAUTH_BETA_HEADER = "oauth-2025-04-20";
|
|
3
|
-
export declare const ANTHROPIC_CLAUDE_CODE_API_KEY_URL = "https://api.anthropic.com/api/oauth/claude_cli/create_api_key";
|
|
4
|
-
export declare const ANTHROPIC_CLAUDE_CODE_MESSAGES_BASE_URL = "https://api.anthropic.com/v1";
|
|
5
|
-
export declare const ANTHROPIC_CLAUDE_CODE_MESSAGES_QUERY = "beta=true";
|
|
6
|
-
export interface AnthropicSubscriptionTokenInput {
|
|
7
|
-
accessToken: string;
|
|
8
|
-
refreshToken?: string | null;
|
|
9
|
-
expiresAt?: number | null;
|
|
10
|
-
onRefresh?: ((credential: OAuthCredential) => void) | null;
|
|
11
|
-
}
|
|
12
9
|
export type AnthropicAuthMode = 'api-key' | 'oauth-bearer';
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
authMode: AnthropicAuthMode;
|
|
16
|
-
credential: OAuthCredential;
|
|
17
|
-
refreshed: boolean;
|
|
18
|
-
source: 'api-key-exchange' | 'oauth-bearer';
|
|
19
|
-
}
|
|
20
|
-
export interface ClaudeSubscriptionRequestConfig {
|
|
21
|
-
baseUrl: string;
|
|
22
|
-
apiQuery: string;
|
|
23
|
-
extraHeaders: Record<string, string>;
|
|
24
|
-
}
|
|
25
|
-
export declare function ensureFreshAnthropicCredential(input: AnthropicSubscriptionTokenInput): Promise<{
|
|
26
|
-
credential: OAuthCredential;
|
|
27
|
-
refreshed: boolean;
|
|
28
|
-
}>;
|
|
29
|
-
export declare function createAnthropicApiKeyFromOauth(accessToken: string): Promise<string>;
|
|
30
|
-
export declare function resolveAnthropicSubscriptionAuth(input: AnthropicSubscriptionTokenInput): Promise<AnthropicSubscriptionAuthResult>;
|
|
31
|
-
export declare function getClaudeSubscriptionRequestConfig(source?: string | null): ClaudeSubscriptionRequestConfig;
|
|
10
|
+
/** @deprecated Subscription API removed. Always throws. */
|
|
11
|
+
export declare function resolveAnthropicSubscriptionAuth(_input: any): Promise<never>;
|
|
32
12
|
//# sourceMappingURL=anthropic-subscription.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic-subscription.d.ts","sourceRoot":"","sources":["../../src/auth/anthropic-subscription.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"anthropic-subscription.d.ts","sourceRoot":"","sources":["../../src/auth/anthropic-subscription.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,eAAO,MAAM,2BAA2B,qBAAqB,CAAC;AAE9D,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,cAAc,CAAC;AAE3D,2DAA2D;AAC3D,wBAAsB,gCAAgC,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAElF"}
|
|
@@ -1,139 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* REMOVED: Anthropic Subscription OAuth auth has been removed.
|
|
4
|
+
*
|
|
5
|
+
* Connection to Anthropic is now exclusively via:
|
|
6
|
+
* 1. claude-cli — spawns the Claude CLI binary (uses your subscription)
|
|
7
|
+
* 2. API key (BYOK) — standard x-api-key authentication
|
|
8
|
+
*/
|
|
2
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.ensureFreshAnthropicCredential = ensureFreshAnthropicCredential;
|
|
5
|
-
exports.createAnthropicApiKeyFromOauth = createAnthropicApiKeyFromOauth;
|
|
10
|
+
exports.ANTHROPIC_OAUTH_BETA_HEADER = void 0;
|
|
6
11
|
exports.resolveAnthropicSubscriptionAuth = resolveAnthropicSubscriptionAuth;
|
|
7
|
-
|
|
8
|
-
const credential_reader_1 = require("./credential-reader");
|
|
9
|
-
const token_refresh_1 = require("./token-refresh");
|
|
10
|
-
const child_process_1 = require("child_process");
|
|
12
|
+
// Stub types retained for backwards compatibility.
|
|
11
13
|
exports.ANTHROPIC_OAUTH_BETA_HEADER = 'oauth-2025-04-20';
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const API_KEY_CACHE_TTL_MS = 30 * 60_000;
|
|
16
|
-
let cachedClaudeCliUserAgent = null;
|
|
17
|
-
function getClaudeCliUserAgent() {
|
|
18
|
-
if (cachedClaudeCliUserAgent)
|
|
19
|
-
return cachedClaudeCliUserAgent;
|
|
20
|
-
try {
|
|
21
|
-
const raw = (0, child_process_1.execSync)('claude --version', {
|
|
22
|
-
encoding: 'utf8',
|
|
23
|
-
timeout: 5000,
|
|
24
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
25
|
-
windowsHide: true,
|
|
26
|
-
}).trim();
|
|
27
|
-
const version = raw.match(/\d+\.\d+\.\d+/)?.[0] || '2.1.63';
|
|
28
|
-
cachedClaudeCliUserAgent = `claude-cli/${version}`;
|
|
29
|
-
return cachedClaudeCliUserAgent;
|
|
30
|
-
}
|
|
31
|
-
catch {
|
|
32
|
-
cachedClaudeCliUserAgent = 'claude-cli/2.1.63';
|
|
33
|
-
return cachedClaudeCliUserAgent;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
const apiKeyCache = new Map();
|
|
37
|
-
function readCachedApiKey(accessToken) {
|
|
38
|
-
const cached = apiKeyCache.get(accessToken);
|
|
39
|
-
if (!cached)
|
|
40
|
-
return null;
|
|
41
|
-
if (cached.expiresAt <= Date.now()) {
|
|
42
|
-
apiKeyCache.delete(accessToken);
|
|
43
|
-
return null;
|
|
44
|
-
}
|
|
45
|
-
return cached.rawKey;
|
|
46
|
-
}
|
|
47
|
-
function storeCachedApiKey(accessToken, rawKey) {
|
|
48
|
-
apiKeyCache.set(accessToken, {
|
|
49
|
-
rawKey,
|
|
50
|
-
expiresAt: Date.now() + API_KEY_CACHE_TTL_MS,
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
function toCredential(input) {
|
|
54
|
-
return {
|
|
55
|
-
provider: 'anthropic',
|
|
56
|
-
accessToken: input.accessToken,
|
|
57
|
-
refreshToken: input.refreshToken || '',
|
|
58
|
-
expiresAt: input.expiresAt || 0,
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
function isScopeLimitedOauthError(message) {
|
|
62
|
-
const normalized = message.toLowerCase();
|
|
63
|
-
return normalized.includes('org:create_api_key')
|
|
64
|
-
|| normalized.includes('permission_error')
|
|
65
|
-
|| normalized.includes('scope requirement');
|
|
66
|
-
}
|
|
67
|
-
async function ensureFreshAnthropicCredential(input) {
|
|
68
|
-
const credential = toCredential(input);
|
|
69
|
-
if (!credential.refreshToken || !(0, credential_reader_1.isExpired)(credential)) {
|
|
70
|
-
return { credential, refreshed: false };
|
|
71
|
-
}
|
|
72
|
-
const refreshed = await (0, token_refresh_1.refreshToken)(credential);
|
|
73
|
-
input.onRefresh?.(refreshed.credential);
|
|
74
|
-
return { credential: refreshed.credential, refreshed: true };
|
|
75
|
-
}
|
|
76
|
-
async function createAnthropicApiKeyFromOauth(accessToken) {
|
|
77
|
-
const cached = readCachedApiKey(accessToken);
|
|
78
|
-
if (cached)
|
|
79
|
-
return cached;
|
|
80
|
-
const response = await fetch(exports.ANTHROPIC_CLAUDE_CODE_API_KEY_URL, {
|
|
81
|
-
method: 'POST',
|
|
82
|
-
headers: {
|
|
83
|
-
Authorization: `Bearer ${accessToken}`,
|
|
84
|
-
'anthropic-beta': exports.ANTHROPIC_OAUTH_BETA_HEADER,
|
|
85
|
-
'Content-Type': 'application/json',
|
|
86
|
-
'User-Agent': 'funolio-agent',
|
|
87
|
-
'x-app': 'funolio-desktop',
|
|
88
|
-
},
|
|
89
|
-
body: '{}',
|
|
90
|
-
});
|
|
91
|
-
if (!response.ok) {
|
|
92
|
-
const body = await response.text().catch(() => '');
|
|
93
|
-
throw new Error(`Anthropic Claude subscription API key exchange failed (${response.status}): ${body}`);
|
|
94
|
-
}
|
|
95
|
-
const data = await response.json();
|
|
96
|
-
if (!data.raw_key) {
|
|
97
|
-
throw new Error('Anthropic Claude subscription API key exchange returned no raw_key');
|
|
98
|
-
}
|
|
99
|
-
storeCachedApiKey(accessToken, data.raw_key);
|
|
100
|
-
return data.raw_key;
|
|
101
|
-
}
|
|
102
|
-
async function resolveAnthropicSubscriptionAuth(input) {
|
|
103
|
-
const { credential, refreshed } = await ensureFreshAnthropicCredential(input);
|
|
104
|
-
try {
|
|
105
|
-
const apiKey = await createAnthropicApiKeyFromOauth(credential.accessToken);
|
|
106
|
-
return {
|
|
107
|
-
token: apiKey,
|
|
108
|
-
authMode: 'api-key',
|
|
109
|
-
credential,
|
|
110
|
-
refreshed,
|
|
111
|
-
source: 'api-key-exchange',
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
|
-
catch (err) {
|
|
115
|
-
const message = err?.message || String(err);
|
|
116
|
-
if (!isScopeLimitedOauthError(message)) {
|
|
117
|
-
throw err;
|
|
118
|
-
}
|
|
119
|
-
return {
|
|
120
|
-
token: credential.accessToken,
|
|
121
|
-
authMode: 'oauth-bearer',
|
|
122
|
-
credential,
|
|
123
|
-
refreshed,
|
|
124
|
-
source: 'oauth-bearer',
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
function getClaudeSubscriptionRequestConfig(source) {
|
|
129
|
-
const isOpenClaw = String(source || '').toLowerCase().includes('openclaw');
|
|
130
|
-
return {
|
|
131
|
-
baseUrl: exports.ANTHROPIC_CLAUDE_CODE_MESSAGES_BASE_URL,
|
|
132
|
-
apiQuery: exports.ANTHROPIC_CLAUDE_CODE_MESSAGES_QUERY,
|
|
133
|
-
extraHeaders: {
|
|
134
|
-
'User-Agent': isOpenClaw ? getClaudeCliUserAgent() : 'funolio-agent',
|
|
135
|
-
'x-app': 'funolio-desktop',
|
|
136
|
-
},
|
|
137
|
-
};
|
|
14
|
+
/** @deprecated Subscription API removed. Always throws. */
|
|
15
|
+
async function resolveAnthropicSubscriptionAuth(_input) {
|
|
16
|
+
throw new Error('Subscription API has been removed. Use claude-cli or API key instead.');
|
|
138
17
|
}
|
|
139
18
|
//# sourceMappingURL=anthropic-subscription.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic-subscription.js","sourceRoot":"","sources":["../../src/auth/anthropic-subscription.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"anthropic-subscription.js","sourceRoot":"","sources":["../../src/auth/anthropic-subscription.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AASH,4EAEC;AATD,mDAAmD;AAEtC,QAAA,2BAA2B,GAAG,kBAAkB,CAAC;AAI9D,2DAA2D;AACpD,KAAK,UAAU,gCAAgC,CAAC,MAAW;IAChE,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;AAC3F,CAAC"}
|
|
@@ -1,16 +1,38 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Auth Auto-Detect — Funolio Agent
|
|
3
|
+
*
|
|
4
|
+
* Resolves the best available authentication method for LLM providers.
|
|
5
|
+
* Supported auth methods:
|
|
6
|
+
* 1. Explicit API key (BYOK) — passed via config or CLI flag
|
|
7
|
+
* 2. Environment variable API keys — ANTHROPIC_API_KEY, OPENAI_API_KEY, etc.
|
|
8
|
+
*
|
|
9
|
+
* CLI providers (claude-cli, codex-cli) do not need auth resolution here —
|
|
10
|
+
* they spawn the CLI binary which handles its own authentication.
|
|
11
|
+
*
|
|
12
|
+
* NOTE: Subscription API / OAuth credential resolution has been removed.
|
|
13
|
+
* OAuth tokens passed in config are ignored. Use CLI providers for
|
|
14
|
+
* subscription-based access, or provide an explicit API key.
|
|
15
|
+
*/
|
|
2
16
|
export interface ResolvedAuth {
|
|
3
17
|
provider: string;
|
|
4
18
|
model: string;
|
|
5
19
|
apiKey: string;
|
|
6
|
-
source: '
|
|
7
|
-
credential?: OAuthCredential;
|
|
20
|
+
source: 'api-key' | 'env';
|
|
8
21
|
expired?: boolean;
|
|
9
22
|
error?: string;
|
|
10
23
|
}
|
|
11
24
|
/**
|
|
12
25
|
* Resolve the best available authentication method.
|
|
13
|
-
*
|
|
26
|
+
*
|
|
27
|
+
* Priority:
|
|
28
|
+
* 1. Explicit API key (from config.apiKey)
|
|
29
|
+
* 2. Environment variable API key
|
|
30
|
+
*
|
|
31
|
+
* OAuth/subscription tokens are ignored. For subscription-based access,
|
|
32
|
+
* use a CLI provider (claude-cli, codex-cli) instead.
|
|
33
|
+
*
|
|
34
|
+
* @param config - Auth configuration. oauthToken fields are accepted for
|
|
35
|
+
* backwards compatibility but are ignored.
|
|
14
36
|
*/
|
|
15
37
|
export declare function resolveAuth(config: {
|
|
16
38
|
provider?: string;
|
|
@@ -21,8 +43,8 @@ export declare function resolveAuth(config: {
|
|
|
21
43
|
oauthExpiresAt?: number;
|
|
22
44
|
}): Promise<ResolvedAuth | null>;
|
|
23
45
|
/**
|
|
24
|
-
* Ensure the
|
|
25
|
-
*
|
|
46
|
+
* Ensure the auth is still valid. For API keys, this is a no-op passthrough.
|
|
47
|
+
* OAuth token refresh has been removed.
|
|
26
48
|
*/
|
|
27
49
|
export declare function ensureFreshToken(auth: ResolvedAuth): Promise<ResolvedAuth>;
|
|
28
50
|
//# sourceMappingURL=auto-detect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-detect.d.ts","sourceRoot":"","sources":["../../src/auth/auto-detect.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"auto-detect.d.ts","sourceRoot":"","sources":["../../src/auth/auto-detect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,GAAG,KAAK,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAwBD;;;;;;;;;;;;GAYG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAgC/B;AAID;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAGhF"}
|
package/dist/auth/auto-detect.js
CHANGED
|
@@ -1,242 +1,89 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
2
|
+
/**
|
|
3
|
+
* Auth Auto-Detect — Funolio Agent
|
|
4
|
+
*
|
|
5
|
+
* Resolves the best available authentication method for LLM providers.
|
|
6
|
+
* Supported auth methods:
|
|
7
|
+
* 1. Explicit API key (BYOK) — passed via config or CLI flag
|
|
8
|
+
* 2. Environment variable API keys — ANTHROPIC_API_KEY, OPENAI_API_KEY, etc.
|
|
9
|
+
*
|
|
10
|
+
* CLI providers (claude-cli, codex-cli) do not need auth resolution here —
|
|
11
|
+
* they spawn the CLI binary which handles its own authentication.
|
|
12
|
+
*
|
|
13
|
+
* NOTE: Subscription API / OAuth credential resolution has been removed.
|
|
14
|
+
* OAuth tokens passed in config are ignored. Use CLI providers for
|
|
15
|
+
* subscription-based access, or provide an explicit API key.
|
|
16
|
+
*/
|
|
35
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
18
|
exports.resolveAuth = resolveAuth;
|
|
37
19
|
exports.ensureFreshToken = ensureFreshToken;
|
|
38
|
-
const credential_reader_1 = require("./credential-reader");
|
|
39
|
-
const token_refresh_1 = require("./token-refresh");
|
|
40
|
-
const fs = __importStar(require("fs"));
|
|
41
|
-
const path = __importStar(require("path"));
|
|
42
|
-
const os = __importStar(require("os"));
|
|
43
20
|
// ── Default Models ──────────────────────────────────────────────────────────
|
|
44
21
|
const DEFAULT_MODELS = {
|
|
45
22
|
anthropic: 'claude-sonnet-4-5',
|
|
46
23
|
openai: 'gpt-4o',
|
|
47
24
|
'google-gemini': 'gemini-2.5-flash',
|
|
48
25
|
};
|
|
26
|
+
// ── Environment API Key Detection ───────────────────────────────────────────
|
|
27
|
+
function getEnvApiKey(provider) {
|
|
28
|
+
switch (provider) {
|
|
29
|
+
case 'anthropic': return process.env.ANTHROPIC_API_KEY;
|
|
30
|
+
case 'openai': return process.env.OPENAI_API_KEY;
|
|
31
|
+
case 'google':
|
|
32
|
+
case 'google-gemini': return process.env.GOOGLE_API_KEY;
|
|
33
|
+
default: return undefined;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
49
36
|
// ── resolveAuth ─────────────────────────────────────────────────────────────
|
|
50
37
|
/**
|
|
51
38
|
* Resolve the best available authentication method.
|
|
52
|
-
*
|
|
39
|
+
*
|
|
40
|
+
* Priority:
|
|
41
|
+
* 1. Explicit API key (from config.apiKey)
|
|
42
|
+
* 2. Environment variable API key
|
|
43
|
+
*
|
|
44
|
+
* OAuth/subscription tokens are ignored. For subscription-based access,
|
|
45
|
+
* use a CLI provider (claude-cli, codex-cli) instead.
|
|
46
|
+
*
|
|
47
|
+
* @param config - Auth configuration. oauthToken fields are accepted for
|
|
48
|
+
* backwards compatibility but are ignored.
|
|
53
49
|
*/
|
|
54
50
|
async function resolveAuth(config) {
|
|
51
|
+
const provider = config.provider || 'anthropic';
|
|
52
|
+
const model = config.model || DEFAULT_MODELS[provider] || 'claude-sonnet-4-5';
|
|
55
53
|
// 1. Explicit API key takes priority (BYOK)
|
|
56
54
|
if (config.apiKey) {
|
|
57
|
-
const provider = config.provider || 'anthropic';
|
|
58
55
|
console.log(`[auto-detect] Using explicit API key (source: api-key, provider: ${provider})`);
|
|
59
56
|
return {
|
|
60
57
|
provider,
|
|
61
|
-
model
|
|
58
|
+
model,
|
|
62
59
|
apiKey: config.apiKey,
|
|
63
60
|
source: 'api-key',
|
|
64
61
|
};
|
|
65
62
|
}
|
|
66
|
-
// 2.
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
const credential = {
|
|
71
|
-
provider: provider,
|
|
72
|
-
accessToken: config.oauthToken,
|
|
73
|
-
refreshToken: config.oauthRefreshToken || '',
|
|
74
|
-
expiresAt: config.oauthExpiresAt || 0,
|
|
75
|
-
};
|
|
76
|
-
// If token is expired OR has no expiry info, and no refresh token in config,
|
|
77
|
-
// try to find one from CLI credentials (which track expiry properly)
|
|
78
|
-
if (!credential.refreshToken && ((0, credential_reader_1.isExpired)(credential) || !credential.expiresAt)) {
|
|
79
|
-
console.log(`[auto-detect] Config OAuth token expired with no refresh token — checking CLI credentials...`);
|
|
80
|
-
const cliCreds = detectClaudeCodeCredentials();
|
|
81
|
-
if (cliCreds?.refreshToken) {
|
|
82
|
-
console.log(`[auto-detect] Found refresh token in Claude Code credentials`);
|
|
83
|
-
credential.refreshToken = cliCreds.refreshToken;
|
|
84
|
-
credential.expiresAt = cliCreds.expiresAt || credential.expiresAt;
|
|
85
|
-
// Use CLI access token if it's newer
|
|
86
|
-
if (cliCreds.accessToken && (!(0, credential_reader_1.isExpired)(cliCreds) || cliCreds.expiresAt > credential.expiresAt)) {
|
|
87
|
-
credential.accessToken = cliCreds.accessToken;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
// Refresh if expired (or if we just imported CLI expiry that shows it's expired)
|
|
92
|
-
if (credential.refreshToken && ((0, credential_reader_1.isExpired)(credential) || (credential.expiresAt > 0 && Date.now() >= credential.expiresAt))) {
|
|
93
|
-
try {
|
|
94
|
-
const result = await (0, token_refresh_1.refreshToken)(credential);
|
|
95
|
-
credential.accessToken = result.credential.accessToken;
|
|
96
|
-
credential.refreshToken = result.credential.refreshToken;
|
|
97
|
-
credential.expiresAt = result.credential.expiresAt;
|
|
98
|
-
// Persist the refresh token back to config so we don't lose it
|
|
99
|
-
try {
|
|
100
|
-
const configPath = path.join(os.homedir(), '.funolio', 'config.json');
|
|
101
|
-
if (fs.existsSync(configPath)) {
|
|
102
|
-
const cfg = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
103
|
-
const idx = cfg.providers?.findIndex((p) => p.id === provider);
|
|
104
|
-
if (idx >= 0 && cfg.providers[idx]) {
|
|
105
|
-
cfg.providers[idx].oauthToken = credential.accessToken;
|
|
106
|
-
cfg.providers[idx].oauthRefreshToken = credential.refreshToken;
|
|
107
|
-
cfg.providers[idx].oauthExpiresAt = credential.expiresAt;
|
|
108
|
-
fs.writeFileSync(configPath, JSON.stringify(cfg, null, 2), 'utf-8');
|
|
109
|
-
console.log(`[auto-detect] Persisted refreshed tokens to config`);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
catch (writeErr) {
|
|
114
|
-
console.warn(`[auto-detect] Failed to persist refreshed tokens:`, writeErr);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
catch {
|
|
118
|
-
console.log(`[auto-detect] OAuth token expired and refresh failed for ${provider}`);
|
|
119
|
-
return {
|
|
120
|
-
provider,
|
|
121
|
-
model,
|
|
122
|
-
apiKey: credential.accessToken,
|
|
123
|
-
source: 'oauth',
|
|
124
|
-
credential,
|
|
125
|
-
expired: true,
|
|
126
|
-
error: `OAuth token expired for ${provider}. Run \`funolio-agent configure\` to re-authenticate.`,
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
console.log(`[auto-detect] Resolved auth: provider=${provider}, model=${model}, source=oauth (from config)`);
|
|
131
|
-
return {
|
|
132
|
-
provider,
|
|
133
|
-
model,
|
|
134
|
-
apiKey: credential.accessToken,
|
|
135
|
-
source: 'oauth',
|
|
136
|
-
credential,
|
|
137
|
-
};
|
|
138
|
-
}
|
|
139
|
-
// 3. Try to auto-detect OAuth token from Claude Code credentials
|
|
140
|
-
const claudeCodeAuth = detectClaudeCodeCredentials();
|
|
141
|
-
if (claudeCodeAuth) {
|
|
142
|
-
const provider = config.provider || 'anthropic';
|
|
143
|
-
const model = config.model || DEFAULT_MODELS[provider] || 'claude-sonnet-4-5';
|
|
144
|
-
// Refresh if expired
|
|
145
|
-
if ((0, credential_reader_1.isExpired)(claudeCodeAuth) && claudeCodeAuth.refreshToken) {
|
|
146
|
-
try {
|
|
147
|
-
const result = await (0, token_refresh_1.refreshToken)(claudeCodeAuth);
|
|
148
|
-
claudeCodeAuth.accessToken = result.credential.accessToken;
|
|
149
|
-
claudeCodeAuth.refreshToken = result.credential.refreshToken;
|
|
150
|
-
claudeCodeAuth.expiresAt = result.credential.expiresAt;
|
|
151
|
-
}
|
|
152
|
-
catch {
|
|
153
|
-
console.log(`[auto-detect] Claude Code OAuth token expired and refresh failed`);
|
|
154
|
-
return {
|
|
155
|
-
provider,
|
|
156
|
-
model,
|
|
157
|
-
apiKey: claudeCodeAuth.accessToken,
|
|
158
|
-
source: 'oauth',
|
|
159
|
-
credential: claudeCodeAuth,
|
|
160
|
-
expired: true,
|
|
161
|
-
error: `Claude Code OAuth token expired and refresh failed. Run \`claude login\` to re-authenticate.`,
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
console.log(`[auto-detect] Resolved auth: provider=${provider}, model=${model}, source=oauth (from Claude Code credentials)`);
|
|
63
|
+
// 2. Check environment variable API keys
|
|
64
|
+
const envKey = getEnvApiKey(provider);
|
|
65
|
+
if (envKey) {
|
|
66
|
+
console.log(`[auto-detect] Using environment variable API key (source: env, provider: ${provider})`);
|
|
166
67
|
return {
|
|
167
68
|
provider,
|
|
168
69
|
model,
|
|
169
|
-
apiKey:
|
|
170
|
-
source: '
|
|
171
|
-
credential: claudeCodeAuth,
|
|
70
|
+
apiKey: envKey,
|
|
71
|
+
source: 'env',
|
|
172
72
|
};
|
|
173
73
|
}
|
|
174
|
-
|
|
74
|
+
// No API key found — CLI providers handle their own auth, so returning null
|
|
75
|
+
// is expected for claude-cli / codex-cli. For API-based providers, this
|
|
76
|
+
// means the user needs to configure an API key.
|
|
77
|
+
console.log(`[auto-detect] No API key found for provider: ${provider}`);
|
|
175
78
|
return null;
|
|
176
79
|
}
|
|
177
|
-
// ── Claude Code Credential Detection ────────────────────────────────────────
|
|
178
|
-
/**
|
|
179
|
-
* Detect OAuth credentials from Claude Code's local credential files.
|
|
180
|
-
* Checks ~/.claude/.credentials.json for claudeAiOauth tokens.
|
|
181
|
-
*/
|
|
182
|
-
function detectClaudeCodeCredentials() {
|
|
183
|
-
try {
|
|
184
|
-
const credPath = path.join(os.homedir(), '.claude', '.credentials.json');
|
|
185
|
-
if (!fs.existsSync(credPath))
|
|
186
|
-
return null;
|
|
187
|
-
const raw = JSON.parse(fs.readFileSync(credPath, 'utf-8'));
|
|
188
|
-
const oauth = raw?.claudeAiOauth;
|
|
189
|
-
if (!oauth?.accessToken?.startsWith('sk-ant-oat01-'))
|
|
190
|
-
return null;
|
|
191
|
-
const credential = {
|
|
192
|
-
provider: 'anthropic',
|
|
193
|
-
accessToken: oauth.accessToken,
|
|
194
|
-
refreshToken: oauth.refreshToken || '',
|
|
195
|
-
expiresAt: oauth.expiresAt || 0,
|
|
196
|
-
};
|
|
197
|
-
if ((0, credential_reader_1.isExpired)(credential)) {
|
|
198
|
-
console.log('[auto-detect] Claude Code OAuth token is expired, will attempt refresh');
|
|
199
|
-
}
|
|
200
|
-
return credential;
|
|
201
|
-
}
|
|
202
|
-
catch {
|
|
203
|
-
return null;
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
80
|
// ── ensureFreshToken ────────────────────────────────────────────────────────
|
|
207
81
|
/**
|
|
208
|
-
* Ensure the
|
|
209
|
-
*
|
|
82
|
+
* Ensure the auth is still valid. For API keys, this is a no-op passthrough.
|
|
83
|
+
* OAuth token refresh has been removed.
|
|
210
84
|
*/
|
|
211
85
|
async function ensureFreshToken(auth) {
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
}
|
|
215
|
-
if (!(0, credential_reader_1.isExpired)(auth.credential)) {
|
|
216
|
-
return auth;
|
|
217
|
-
}
|
|
218
|
-
try {
|
|
219
|
-
const result = await (0, token_refresh_1.refreshToken)(auth.credential);
|
|
220
|
-
const refreshed = result.credential;
|
|
221
|
-
if (refreshed.accessToken === auth.credential.accessToken) {
|
|
222
|
-
return auth; // refresh failed or not needed, return as-is
|
|
223
|
-
}
|
|
224
|
-
return {
|
|
225
|
-
...auth,
|
|
226
|
-
apiKey: refreshed.accessToken,
|
|
227
|
-
credential: refreshed,
|
|
228
|
-
};
|
|
229
|
-
}
|
|
230
|
-
catch (err) {
|
|
231
|
-
if (err instanceof token_refresh_1.TokenRefreshError) {
|
|
232
|
-
console.error(`[auto-detect] Token refresh failed for ${err.provider}: ${err.message}`);
|
|
233
|
-
return {
|
|
234
|
-
...auth,
|
|
235
|
-
expired: true,
|
|
236
|
-
error: `Token refresh failed for ${err.provider}${err.httpStatus ? ` (HTTP ${err.httpStatus})` : ''}: ${err.message}`,
|
|
237
|
-
};
|
|
238
|
-
}
|
|
239
|
-
throw err;
|
|
240
|
-
}
|
|
86
|
+
// API keys don't expire — return as-is
|
|
87
|
+
return auth;
|
|
241
88
|
}
|
|
242
89
|
//# sourceMappingURL=auto-detect.js.map
|