funolio-agent 1.0.4 → 1.0.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/dist/auth/anthropic-subscription.d.ts +29 -9
- package/dist/auth/anthropic-subscription.d.ts.map +1 -1
- package/dist/auth/anthropic-subscription.js +133 -12
- package/dist/auth/anthropic-subscription.js.map +1 -1
- package/dist/auth/auto-detect.d.ts +6 -28
- package/dist/auth/auto-detect.d.ts.map +1 -1
- package/dist/auth/auto-detect.js +200 -57
- package/dist/auth/auto-detect.js.map +1 -1
- package/dist/auth/credential-reader.d.ts +4 -24
- package/dist/auth/credential-reader.d.ts.map +1 -1
- package/dist/auth/credential-reader.js +256 -31
- package/dist/auth/credential-reader.js.map +1 -1
- package/dist/auth/credential-status.d.ts +27 -7
- package/dist/auth/credential-status.d.ts.map +1 -1
- package/dist/auth/credential-status.js +95 -7
- package/dist/auth/credential-status.js.map +1 -1
- package/dist/auth/index.d.ts +2 -9
- 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 +23 -19
- package/dist/auth/subscription-runtime.d.ts.map +1 -1
- package/dist/auth/subscription-runtime.js +292 -24
- package/dist/auth/subscription-runtime.js.map +1 -1
- package/dist/auth/token-refresh.d.ts +28 -19
- package/dist/auth/token-refresh.d.ts.map +1 -1
- package/dist/auth/token-refresh.js +464 -26
- package/dist/auth/token-refresh.js.map +1 -1
- package/dist/bot-manager.d.ts +6 -6
- package/dist/bot-manager.d.ts.map +1 -1
- package/dist/bot-manager.js +61 -26
- package/dist/bot-manager.js.map +1 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +223 -49
- package/dist/commands/start.js.map +1 -1
- package/dist/message-loop.d.ts +10 -2
- package/dist/message-loop.d.ts.map +1 -1
- package/dist/message-loop.js +249 -184
- package/dist/message-loop.js.map +1 -1
- package/dist/providers/anthropic.d.ts +5 -0
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +48 -13
- 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/wizard-support.d.ts +2 -2
- package/dist/wizard-support.d.ts.map +1 -1
- package/dist/wizard-support.js +93 -80
- package/dist/wizard-support.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,36 +1,304 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
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
|
+
})();
|
|
9
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.resolveClaudeSubscriptionRuntime = resolveClaudeSubscriptionRuntime;
|
|
11
|
-
exports.resolveCodexSubscriptionRuntime = resolveCodexSubscriptionRuntime;
|
|
12
36
|
exports.claudeSubscriptionRuntimeLabel = claudeSubscriptionRuntimeLabel;
|
|
13
37
|
exports.resolveClaudeSubscriptionRequestShape = resolveClaudeSubscriptionRequestShape;
|
|
14
38
|
exports.resolveSubscriptionApiModel = resolveSubscriptionApiModel;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
39
|
+
exports.resolveClaudeSubscriptionRuntime = resolveClaudeSubscriptionRuntime;
|
|
40
|
+
exports.resolveCodexSubscriptionRuntime = resolveCodexSubscriptionRuntime;
|
|
41
|
+
const data = __importStar(require("../local-data"));
|
|
42
|
+
const credential_reader_1 = require("./credential-reader");
|
|
43
|
+
const token_refresh_1 = require("./token-refresh");
|
|
44
|
+
const anthropic_subscription_1 = require("./anthropic-subscription");
|
|
45
|
+
function claudeSubscriptionRuntimeLabel(source) {
|
|
46
|
+
const normalized = String(source || '').trim().toLowerCase();
|
|
47
|
+
if (normalized.includes('openclaw'))
|
|
48
|
+
return 'OpenClaw Connection';
|
|
49
|
+
return 'Subscription API';
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Anthropic/OpenClaw request shape should stay on native structured messages by default.
|
|
53
|
+
* Source selection tells us where credentials came from, not how to flatten prompts.
|
|
54
|
+
*/
|
|
55
|
+
function resolveClaudeSubscriptionRequestShape(_source) {
|
|
56
|
+
return 'default';
|
|
18
57
|
}
|
|
19
|
-
|
|
20
|
-
|
|
58
|
+
function resolveSubscriptionApiModel(profileModel, configuredDefaultModel) {
|
|
59
|
+
const isPlaceholder = (value) => {
|
|
60
|
+
const normalized = value.trim().toLowerCase();
|
|
61
|
+
return normalized === ''
|
|
62
|
+
|| normalized === 'default'
|
|
63
|
+
|| normalized === 'claude-code'
|
|
64
|
+
|| normalized === 'codex-cli';
|
|
65
|
+
};
|
|
66
|
+
const resolvedProfileModel = (profileModel || '').trim();
|
|
67
|
+
if (!isPlaceholder(resolvedProfileModel)) {
|
|
68
|
+
return resolvedProfileModel;
|
|
69
|
+
}
|
|
70
|
+
const resolvedDefaultModel = (configuredDefaultModel || '').trim();
|
|
71
|
+
if (!isPlaceholder(resolvedDefaultModel)) {
|
|
72
|
+
return resolvedDefaultModel;
|
|
73
|
+
}
|
|
21
74
|
return null;
|
|
22
75
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
76
|
+
function readDbOauthCredential(providerId) {
|
|
77
|
+
const connection = data.findProviderConnection(providerId, 'oauth') || data.findProviderConnection(providerId);
|
|
78
|
+
if (!connection?.oauth_token) {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
return {
|
|
82
|
+
source: `db:${providerId}`,
|
|
83
|
+
credential: {
|
|
84
|
+
provider: providerId === 'anthropic' || providerId === 'claude-cli' ? 'anthropic' : 'openai',
|
|
85
|
+
accessToken: connection.oauth_token,
|
|
86
|
+
refreshToken: connection.oauth_refresh_token || '',
|
|
87
|
+
expiresAt: connection.oauth_expires_at ?? 0,
|
|
88
|
+
},
|
|
89
|
+
};
|
|
26
90
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
91
|
+
function shouldImportCandidate(current, incoming) {
|
|
92
|
+
if (!incoming?.accessToken)
|
|
93
|
+
return false;
|
|
94
|
+
if (!current?.accessToken)
|
|
95
|
+
return true;
|
|
96
|
+
if (incoming.accessToken === current.accessToken) {
|
|
97
|
+
return (incoming.expiresAt || 0) > (current.expiresAt || 0)
|
|
98
|
+
|| (!!incoming.refreshToken && !current.refreshToken);
|
|
99
|
+
}
|
|
100
|
+
return (incoming.expiresAt || 0) > (current.expiresAt || 0)
|
|
101
|
+
|| (!!incoming.refreshToken && !current.refreshToken);
|
|
102
|
+
}
|
|
103
|
+
function syncProviderOauthCredential(providerId, credential, defaultModel) {
|
|
104
|
+
if (!credential.accessToken)
|
|
105
|
+
return;
|
|
106
|
+
data.upsertOauthProviderConnection({
|
|
107
|
+
providerId,
|
|
108
|
+
oauthToken: credential.accessToken,
|
|
109
|
+
oauthRefreshToken: credential.refreshToken || null,
|
|
110
|
+
oauthExpiresAt: credential.expiresAt ?? null,
|
|
111
|
+
defaultModel: defaultModel ?? null,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
async function ensureFreshCredential(credential, providerForLog, onRefresh) {
|
|
115
|
+
if (!credential)
|
|
116
|
+
return null;
|
|
117
|
+
const needsCodexIdTokenRepair = providerForLog === 'openai' && !credential.idToken;
|
|
118
|
+
const expired = (0, credential_reader_1.isExpired)(credential);
|
|
119
|
+
if (!expired && !needsCodexIdTokenRepair) {
|
|
120
|
+
return credential;
|
|
121
|
+
}
|
|
122
|
+
if (!credential.refreshToken) {
|
|
123
|
+
return expired ? null : (credential.accessToken ? credential : null);
|
|
124
|
+
}
|
|
125
|
+
try {
|
|
126
|
+
const refreshed = await (0, token_refresh_1.refreshToken)(credential);
|
|
127
|
+
onRefresh?.(refreshed.credential);
|
|
128
|
+
return refreshed.credential;
|
|
129
|
+
}
|
|
130
|
+
catch (err) {
|
|
131
|
+
console.warn(`[subscription-runtime] ${providerForLog} OAuth token refresh failed: ${err?.message || err}`);
|
|
132
|
+
return expired ? null : (credential.accessToken ? credential : null);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
async function resolveDbPrimaryClaudeCredentialCandidates(preferredModel, inputCredential, inputToken, inputAccessMode, inputSource = 'request:anthropic', persistInputCredential = false) {
|
|
136
|
+
const candidates = [];
|
|
137
|
+
const seen = new Set();
|
|
138
|
+
const pushCandidate = (candidate) => {
|
|
139
|
+
if (!candidate?.credential?.accessToken)
|
|
140
|
+
return;
|
|
141
|
+
const key = `${candidate.source}:${candidate.credential.accessToken}`;
|
|
142
|
+
if (seen.has(key))
|
|
143
|
+
return;
|
|
144
|
+
seen.add(key);
|
|
145
|
+
candidates.push(candidate);
|
|
146
|
+
};
|
|
147
|
+
const openClawConnection = data.findProviderConnection('anthropic', 'openclaw');
|
|
148
|
+
if (inputAccessMode === 'openclaw' && inputToken?.trim()) {
|
|
149
|
+
pushCandidate({
|
|
150
|
+
source: 'request:anthropic:openclaw',
|
|
151
|
+
credential: {
|
|
152
|
+
provider: 'anthropic',
|
|
153
|
+
accessToken: inputToken.trim(),
|
|
154
|
+
refreshToken: '',
|
|
155
|
+
expiresAt: 0,
|
|
156
|
+
},
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
if (openClawConnection?.api_key_enc) {
|
|
160
|
+
pushCandidate({
|
|
161
|
+
source: 'db:anthropic:openclaw',
|
|
162
|
+
credential: {
|
|
163
|
+
provider: 'anthropic',
|
|
164
|
+
accessToken: openClawConnection.api_key_enc,
|
|
165
|
+
refreshToken: '',
|
|
166
|
+
expiresAt: 0,
|
|
167
|
+
},
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
const dbCandidate = readDbOauthCredential('anthropic');
|
|
171
|
+
const legacyCandidate = readDbOauthCredential('claude-cli');
|
|
172
|
+
const fileCredential = (0, credential_reader_1.readClaudeCredentials)();
|
|
173
|
+
let selected = dbCandidate;
|
|
174
|
+
if (legacyCandidate && shouldImportCandidate(dbCandidate?.credential || null, legacyCandidate.credential)) {
|
|
175
|
+
syncProviderOauthCredential('anthropic', legacyCandidate.credential, preferredModel);
|
|
176
|
+
selected = { source: 'db:anthropic', credential: legacyCandidate.credential };
|
|
177
|
+
}
|
|
178
|
+
if (fileCredential && shouldImportCandidate(selected?.credential || null, fileCredential)) {
|
|
179
|
+
syncProviderOauthCredential('anthropic', fileCredential, preferredModel);
|
|
180
|
+
selected = { source: 'db:anthropic', credential: fileCredential };
|
|
181
|
+
}
|
|
182
|
+
if (inputCredential?.accessToken && shouldImportCandidate(selected?.credential || null, inputCredential)) {
|
|
183
|
+
if (persistInputCredential) {
|
|
184
|
+
syncProviderOauthCredential('anthropic', inputCredential, preferredModel);
|
|
185
|
+
selected = { source: 'db:anthropic', credential: inputCredential };
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
selected = { source: inputSource, credential: inputCredential };
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
if (!selected?.credential?.accessToken) {
|
|
192
|
+
return candidates;
|
|
193
|
+
}
|
|
194
|
+
const refreshed = await ensureFreshCredential(selected.credential, 'anthropic', selected.source === 'db:anthropic' || selected.source === inputSource
|
|
195
|
+
? (credential) => syncProviderOauthCredential('anthropic', credential, preferredModel)
|
|
196
|
+
: (credential) => syncProviderOauthCredential('anthropic', credential, preferredModel));
|
|
197
|
+
if (!refreshed?.accessToken) {
|
|
198
|
+
return candidates;
|
|
199
|
+
}
|
|
200
|
+
if (selected.source !== inputSource || persistInputCredential) {
|
|
201
|
+
syncProviderOauthCredential('anthropic', refreshed, preferredModel);
|
|
202
|
+
pushCandidate({ source: 'db:anthropic', credential: refreshed });
|
|
203
|
+
return candidates;
|
|
204
|
+
}
|
|
205
|
+
pushCandidate({ source: selected.source, credential: refreshed });
|
|
206
|
+
return candidates;
|
|
207
|
+
}
|
|
208
|
+
async function resolveDbPrimaryCodexCredential(preferredModel, inputCredential, inputSource = 'request:openai', persistInputCredential = false) {
|
|
209
|
+
const dbCandidate = readDbOauthCredential('openai');
|
|
210
|
+
const legacyCandidate = readDbOauthCredential('codex-cli');
|
|
211
|
+
const fileCredential = (0, credential_reader_1.readCodexCredentials)();
|
|
212
|
+
let selected = dbCandidate;
|
|
213
|
+
if (legacyCandidate && shouldImportCandidate(dbCandidate?.credential || null, legacyCandidate.credential)) {
|
|
214
|
+
syncProviderOauthCredential('openai', legacyCandidate.credential, preferredModel);
|
|
215
|
+
selected = { source: 'db:openai', credential: legacyCandidate.credential };
|
|
216
|
+
}
|
|
217
|
+
if (fileCredential && shouldImportCandidate(selected?.credential || null, fileCredential)) {
|
|
218
|
+
syncProviderOauthCredential('openai', fileCredential, preferredModel);
|
|
219
|
+
selected = { source: 'db:openai', credential: fileCredential };
|
|
220
|
+
}
|
|
221
|
+
if (inputCredential?.accessToken && shouldImportCandidate(selected?.credential || null, inputCredential)) {
|
|
222
|
+
if (persistInputCredential) {
|
|
223
|
+
syncProviderOauthCredential('openai', inputCredential, preferredModel);
|
|
224
|
+
selected = { source: 'db:openai', credential: inputCredential };
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
selected = { source: inputSource, credential: inputCredential };
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
if (!selected?.credential?.accessToken) {
|
|
231
|
+
return null;
|
|
232
|
+
}
|
|
233
|
+
const refreshed = await ensureFreshCredential(selected.credential, 'openai', selected.source === 'db:openai' || persistInputCredential
|
|
234
|
+
? (credential) => syncProviderOauthCredential('openai', credential, preferredModel)
|
|
235
|
+
: null);
|
|
236
|
+
if (!refreshed?.accessToken) {
|
|
237
|
+
return null;
|
|
238
|
+
}
|
|
239
|
+
if (selected.source !== inputSource || persistInputCredential) {
|
|
240
|
+
syncProviderOauthCredential('openai', refreshed, preferredModel);
|
|
241
|
+
return { source: 'db:openai', credential: refreshed };
|
|
242
|
+
}
|
|
243
|
+
return { source: selected.source, credential: refreshed };
|
|
244
|
+
}
|
|
245
|
+
async function resolveClaudeSubscriptionRuntime(options = {}) {
|
|
246
|
+
const model = resolveSubscriptionApiModel(options.preferredModel, data.findProviderConnection('anthropic')?.default_model
|
|
247
|
+
|| data.findProviderConnection('claude-cli')?.default_model
|
|
248
|
+
|| null);
|
|
249
|
+
if (!model)
|
|
250
|
+
return null;
|
|
251
|
+
const candidates = await resolveDbPrimaryClaudeCredentialCandidates(model, options.inputCredential, options.inputToken, options.inputAccessMode, options.inputSource || 'request:anthropic', options.persistInputCredential === true);
|
|
252
|
+
if (candidates.length === 0) {
|
|
253
|
+
return null;
|
|
254
|
+
}
|
|
255
|
+
let lastError = null;
|
|
256
|
+
for (const selected of candidates) {
|
|
257
|
+
try {
|
|
258
|
+
const requestConfig = (0, anthropic_subscription_1.getClaudeSubscriptionRequestConfig)(selected.source);
|
|
259
|
+
const resolved = await (0, anthropic_subscription_1.resolveAnthropicSubscriptionAuth)({
|
|
260
|
+
accessToken: selected.credential.accessToken,
|
|
261
|
+
refreshToken: selected.credential.refreshToken || null,
|
|
262
|
+
expiresAt: selected.credential.expiresAt ?? null,
|
|
263
|
+
onRefresh: (credential) => syncProviderOauthCredential('anthropic', credential, model),
|
|
264
|
+
});
|
|
265
|
+
return {
|
|
266
|
+
providerName: 'anthropic',
|
|
267
|
+
apiKey: resolved.token,
|
|
268
|
+
model,
|
|
269
|
+
source: selected.source,
|
|
270
|
+
authMode: resolved.authMode,
|
|
271
|
+
baseUrl: requestConfig.baseUrl,
|
|
272
|
+
apiQuery: requestConfig.apiQuery,
|
|
273
|
+
extraHeaders: requestConfig.extraHeaders,
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
catch (err) {
|
|
277
|
+
lastError = err;
|
|
278
|
+
console.warn(`[subscription-runtime] Claude credential candidate failed (${selected.source}); trying next candidate if available: ${err?.message || err}`);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
if (lastError)
|
|
282
|
+
throw lastError;
|
|
283
|
+
return null;
|
|
30
284
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
285
|
+
async function resolveCodexSubscriptionRuntime(options = {}) {
|
|
286
|
+
const model = resolveSubscriptionApiModel(options.preferredModel, data.findProviderConnection('openai')?.default_model
|
|
287
|
+
|| data.findProviderConnection('codex-cli')?.default_model
|
|
288
|
+
|| null);
|
|
289
|
+
if (!model)
|
|
290
|
+
return null;
|
|
291
|
+
const selected = await resolveDbPrimaryCodexCredential(model, options.inputCredential, options.inputSource || 'request:openai', options.persistInputCredential === true);
|
|
292
|
+
if (!selected?.credential?.accessToken) {
|
|
293
|
+
return null;
|
|
294
|
+
}
|
|
295
|
+
return {
|
|
296
|
+
providerName: 'openai',
|
|
297
|
+
apiKey: selected.credential.accessToken,
|
|
298
|
+
model,
|
|
299
|
+
source: selected.source,
|
|
300
|
+
baseUrl: 'https://chatgpt.com/backend-api/codex',
|
|
301
|
+
apiStyle: 'codex-chatgpt-responses',
|
|
302
|
+
};
|
|
35
303
|
}
|
|
36
304
|
//# sourceMappingURL=subscription-runtime.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscription-runtime.js","sourceRoot":"","sources":["../../src/auth/subscription-runtime.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"subscription-runtime.js","sourceRoot":"","sources":["../../src/auth/subscription-runtime.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDA,wEAIC;AAMD,sFAIC;AAED,kEAuBC;AA4ND,4EAmDC;AAED,0EA6BC;AA1YD,oDAAsC;AACtC,2DAK6B;AAC7B,mDAA+C;AAC/C,qEAIkC;AAyClC,SAAgB,8BAA8B,CAAC,MAA2C;IACxF,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC7D,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,qBAAqB,CAAC;IAClE,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,SAAgB,qCAAqC,CACnD,OAA4C;IAE5C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAgB,2BAA2B,CACzC,YAA4B,EAC5B,sBAAsC;IAEtC,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,EAAE;QACtC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC9C,OAAO,UAAU,KAAK,EAAE;eACnB,UAAU,KAAK,SAAS;eACxB,UAAU,KAAK,aAAa;eAC5B,UAAU,KAAK,WAAW,CAAC;IAClC,CAAC,CAAC;IAEF,MAAM,oBAAoB,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACzD,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,EAAE,CAAC;QACzC,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED,MAAM,oBAAoB,GAAG,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACnE,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,EAAE,CAAC;QACzC,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,qBAAqB,CAC5B,UAA+D;IAE/D,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAC/G,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO;QACL,MAAM,EAAE,MAAM,UAAU,EAAwB;QAChD,UAAU,EAAE;YACV,QAAQ,EAAE,UAAU,KAAK,WAAW,IAAI,UAAU,KAAK,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ;YAC5F,WAAW,EAAE,UAAU,CAAC,WAAW;YACnC,YAAY,EAAE,UAAU,CAAC,mBAAmB,IAAI,EAAE;YAClD,SAAS,EAAE,UAAU,CAAC,gBAAgB,IAAI,CAAC;SAC5C;KACF,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,OAA+B,EAAE,QAAgC;IAC9F,IAAI,CAAC,QAAQ,EAAE,WAAW;QAAE,OAAO,KAAK,CAAC;IACzC,IAAI,CAAC,OAAO,EAAE,WAAW;QAAE,OAAO,IAAI,CAAC;IACvC,IAAI,QAAQ,CAAC,WAAW,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC;QACjD,OAAO,CAAC,QAAQ,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC;eACtD,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,CAAC,QAAQ,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC;WACtD,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,2BAA2B,CAClC,UAAkC,EAClC,UAA2B,EAC3B,YAA4B;IAE5B,IAAI,CAAC,UAAU,CAAC,WAAW;QAAE,OAAO;IACpC,IAAI,CAAC,6BAA6B,CAAC;QACjC,UAAU;QACV,UAAU,EAAE,UAAU,CAAC,WAAW;QAClC,iBAAiB,EAAE,UAAU,CAAC,YAAY,IAAI,IAAI;QAClD,cAAc,EAAE,UAAU,CAAC,SAAS,IAAI,IAAI;QAC5C,YAAY,EAAE,YAAY,IAAI,IAAI;KACnC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,UAAkC,EAClC,cAAsC,EACtC,SAA0D;IAE1D,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7B,MAAM,uBAAuB,GAAG,cAAc,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;IACnF,MAAM,OAAO,GAAG,IAAA,6BAAS,EAAC,UAAU,CAAC,CAAC;IACtC,IAAI,CAAC,OAAO,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACzC,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;QAC7B,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,IAAA,4BAAY,EAAC,UAAU,CAAC,CAAC;QACjD,SAAS,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAClC,OAAO,SAAS,CAAC,UAAU,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,0BAA0B,cAAc,gCAAgC,GAAG,EAAE,OAAO,IAAI,GAAG,EAAE,CAAC,CAAC;QAC5G,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACvE,CAAC;AACH,CAAC;AAED,KAAK,UAAU,0CAA0C,CACvD,cAA8B,EAC9B,eAAwC,EACxC,UAA0B,EAC1B,eAA+B,EAC/B,cAAkC,mBAAmB,EACrD,sBAAsB,GAAG,KAAK;IAE9B,MAAM,UAAU,GAAkC,EAAE,CAAC;IACrD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,aAAa,GAAG,CAAC,SAAyD,EAAE,EAAE;QAClF,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,WAAW;YAAE,OAAO;QAChD,MAAM,GAAG,GAAG,GAAG,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QACtE,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO;QAC1B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAChF,IAAI,eAAe,KAAK,UAAU,IAAI,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;QACzD,aAAa,CAAC;YACZ,MAAM,EAAE,4BAA4B;YACpC,UAAU,EAAE;gBACV,QAAQ,EAAE,WAAW;gBACrB,WAAW,EAAE,UAAU,CAAC,IAAI,EAAE;gBAC9B,YAAY,EAAE,EAAE;gBAChB,SAAS,EAAE,CAAC;aACb;SACF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,kBAAkB,EAAE,WAAW,EAAE,CAAC;QACpC,aAAa,CAAC;YACZ,MAAM,EAAE,uBAAuB;YAC/B,UAAU,EAAE;gBACV,QAAQ,EAAE,WAAW;gBACrB,WAAW,EAAE,kBAAkB,CAAC,WAAW;gBAC3C,YAAY,EAAE,EAAE;gBAChB,SAAS,EAAE,CAAC;aACb;SACF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,WAAW,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;IACvD,MAAM,eAAe,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;IAC5D,MAAM,cAAc,GAAG,IAAA,yCAAqB,GAAE,CAAC;IAE/C,IAAI,QAAQ,GAAG,WAAW,CAAC;IAE3B,IAAI,eAAe,IAAI,qBAAqB,CAAC,WAAW,EAAE,UAAU,IAAI,IAAI,EAAE,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1G,2BAA2B,CAAC,WAAW,EAAE,eAAe,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QACrF,QAAQ,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,eAAe,CAAC,UAAU,EAAE,CAAC;IAChF,CAAC;IAED,IAAI,cAAc,IAAI,qBAAqB,CAAC,QAAQ,EAAE,UAAU,IAAI,IAAI,EAAE,cAAc,CAAC,EAAE,CAAC;QAC1F,2BAA2B,CAAC,WAAW,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;QACzE,QAAQ,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;IACpE,CAAC;IAED,IAAI,eAAe,EAAE,WAAW,IAAI,qBAAqB,CAAC,QAAQ,EAAE,UAAU,IAAI,IAAI,EAAE,eAAe,CAAC,EAAE,CAAC;QACzG,IAAI,sBAAsB,EAAE,CAAC;YAC3B,2BAA2B,CAAC,WAAW,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;YAC1E,QAAQ,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC;QACrE,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC;QAClE,CAAC;IACH,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;QACvC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,qBAAqB,CAC3C,QAAQ,CAAC,UAAU,EACnB,WAAW,EACX,QAAQ,CAAC,MAAM,KAAK,cAAc,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW;QACnE,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,2BAA2B,CAAC,WAAW,EAAE,UAAU,EAAE,cAAc,CAAC;QACtF,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,2BAA2B,CAAC,WAAW,EAAE,UAAU,EAAE,cAAc,CAAC,CACzF,CAAC;IAEF,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC;QAC5B,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,IAAI,sBAAsB,EAAE,CAAC;QAC9D,2BAA2B,CAAC,WAAW,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;QACpE,aAAa,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;QACjE,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,aAAa,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;IAClE,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,KAAK,UAAU,+BAA+B,CAC5C,cAA8B,EAC9B,eAAwC,EACxC,cAAkC,gBAAgB,EAClD,sBAAsB,GAAG,KAAK;IAE9B,MAAM,WAAW,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,eAAe,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;IAC3D,MAAM,cAAc,GAAG,IAAA,wCAAoB,GAAE,CAAC;IAE9C,IAAI,QAAQ,GAAG,WAAW,CAAC;IAE3B,IAAI,eAAe,IAAI,qBAAqB,CAAC,WAAW,EAAE,UAAU,IAAI,IAAI,EAAE,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1G,2BAA2B,CAAC,QAAQ,EAAE,eAAe,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAClF,QAAQ,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,CAAC,UAAU,EAAE,CAAC;IAC7E,CAAC;IAED,IAAI,cAAc,IAAI,qBAAqB,CAAC,QAAQ,EAAE,UAAU,IAAI,IAAI,EAAE,cAAc,CAAC,EAAE,CAAC;QAC1F,2BAA2B,CAAC,QAAQ,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;QACtE,QAAQ,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;IACjE,CAAC;IAED,IAAI,eAAe,EAAE,WAAW,IAAI,qBAAqB,CAAC,QAAQ,EAAE,UAAU,IAAI,IAAI,EAAE,eAAe,CAAC,EAAE,CAAC;QACzG,IAAI,sBAAsB,EAAE,CAAC;YAC3B,2BAA2B,CAAC,QAAQ,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;YACvE,QAAQ,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC;QAClE,CAAC;IACH,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,qBAAqB,CAC3C,QAAQ,CAAC,UAAU,EACnB,QAAQ,EACR,QAAQ,CAAC,MAAM,KAAK,WAAW,IAAI,sBAAsB;QACvD,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,2BAA2B,CAAC,QAAQ,EAAE,UAAU,EAAE,cAAc,CAAC;QACnF,CAAC,CAAC,IAAI,CACT,CAAC;IAEF,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,IAAI,sBAAsB,EAAE,CAAC;QAC9D,2BAA2B,CAAC,QAAQ,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;QACjE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;IACxD,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AAC5D,CAAC;AAEM,KAAK,UAAU,gCAAgC,CACpD,UAAiC,EAAE;IAEnC,MAAM,KAAK,GAAG,2BAA2B,CACvC,OAAO,CAAC,cAAc,EACtB,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,EAAE,aAAa;WAClD,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,EAAE,aAAa;WACxD,IAAI,CACV,CAAC;IACF,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,MAAM,UAAU,GAAG,MAAM,0CAA0C,CACjE,KAAK,EACL,OAAO,CAAC,eAAe,EACvB,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,eAAe,EACvB,OAAO,CAAC,WAAW,IAAI,mBAAmB,EAC1C,OAAO,CAAC,sBAAsB,KAAK,IAAI,CACxC,CAAC;IACF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,SAAS,GAAY,IAAI,CAAC;IAC9B,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,IAAA,2DAAkC,EAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC1E,MAAM,QAAQ,GAAG,MAAM,IAAA,yDAAgC,EAAC;gBACtD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,WAAW;gBAC5C,YAAY,EAAE,QAAQ,CAAC,UAAU,CAAC,YAAY,IAAI,IAAI;gBACtD,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,SAAS,IAAI,IAAI;gBAChD,SAAS,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,2BAA2B,CAAC,WAAW,EAAE,UAAU,EAAE,KAAK,CAAC;aACvF,CAAC,CAAC;YAEH,OAAO;gBACL,YAAY,EAAE,WAAW;gBACzB,MAAM,EAAE,QAAQ,CAAC,KAAK;gBACtB,KAAK;gBACL,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,OAAO,EAAE,aAAa,CAAC,OAAO;gBAC9B,QAAQ,EAAE,aAAa,CAAC,QAAQ;gBAChC,YAAY,EAAE,aAAa,CAAC,YAAY;aACzC,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,SAAS,GAAG,GAAG,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,8DAA8D,QAAQ,CAAC,MAAM,0CAA2C,GAAW,EAAE,OAAO,IAAI,GAAG,EAAE,CAAC,CAAC;QACtK,CAAC;IACH,CAAC;IAED,IAAI,SAAS;QAAE,MAAM,SAAS,CAAC;IAC/B,OAAO,IAAI,CAAC;AACd,CAAC;AAEM,KAAK,UAAU,+BAA+B,CACnD,UAAiC,EAAE;IAEnC,MAAM,KAAK,GAAG,2BAA2B,CACvC,OAAO,CAAC,cAAc,EACtB,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,EAAE,aAAa;WAC/C,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,EAAE,aAAa;WACvD,IAAI,CACV,CAAC;IACF,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,MAAM,QAAQ,GAAG,MAAM,+BAA+B,CACpD,KAAK,EACL,OAAO,CAAC,eAAe,EACvB,OAAO,CAAC,WAAW,IAAI,gBAAgB,EACvC,OAAO,CAAC,sBAAsB,KAAK,IAAI,CACxC,CAAC;IACF,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,YAAY,EAAE,QAAQ;QACtB,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,WAAW;QACvC,KAAK;QACL,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,OAAO,EAAE,uCAAuC;QAChD,QAAQ,EAAE,yBAAyB;KACpC,CAAC;AACJ,CAAC"}
|
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Token Refresh Module — Funolio Agent OAuth System
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* For Anthropic tokens: delegates refresh to the Funolio server (cloud mode)
|
|
5
|
+
* to prevent race conditions with single-use refresh tokens.
|
|
6
|
+
* The server is the sole authority for refreshing with Anthropic.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
* - Anthropic OAuth token refresh (single-use rotation)
|
|
10
|
-
* - OpenAI OAuth token refresh
|
|
11
|
-
* - Google/Gemini OAuth token refresh
|
|
12
|
-
* - Server-delegated token refresh (cloud mode)
|
|
8
|
+
* For OpenAI/Gemini: refreshes directly (their tokens aren't single-use).
|
|
13
9
|
*
|
|
14
|
-
*
|
|
10
|
+
* Config: `tokenRefreshAuthority` in ~/.funolio/config.json
|
|
11
|
+
* - "cloud" (default): Server refreshes Anthropic tokens
|
|
12
|
+
* - "local": Legacy direct refresh (for self-hosted without a server)
|
|
15
13
|
*/
|
|
16
14
|
import { OAuthCredential } from './credential-reader';
|
|
17
15
|
export declare class TokenRefreshError extends Error {
|
|
@@ -23,13 +21,24 @@ export interface RefreshResult {
|
|
|
23
21
|
credential: OAuthCredential;
|
|
24
22
|
written: boolean;
|
|
25
23
|
}
|
|
26
|
-
|
|
27
|
-
export declare function
|
|
28
|
-
|
|
29
|
-
export declare function
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
export declare function seedServerWithToken(
|
|
24
|
+
export declare function refreshOpenAIToken(credential: OAuthCredential): Promise<OAuthCredential>;
|
|
25
|
+
export declare function refreshGeminiToken(credential: OAuthCredential): Promise<OAuthCredential>;
|
|
26
|
+
export declare function writeClaudeCredentials(credential: OAuthCredential): boolean;
|
|
27
|
+
export declare function writeCodexCredentials(credential: OAuthCredential): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Push a fresh credential to the Funolio server so it can perform
|
|
30
|
+
* server-side refresh later. Fire-and-forget after local refresh.
|
|
31
|
+
*/
|
|
32
|
+
export declare function seedServerWithToken(credential: OAuthCredential): Promise<boolean>;
|
|
33
|
+
/**
|
|
34
|
+
* Check if a credential needs refresh (expired or within 5-minute buffer).
|
|
35
|
+
*/
|
|
36
|
+
export declare function needsRefresh(credential: OAuthCredential): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Refresh a single credential. For Anthropic in cloud mode, delegates to the
|
|
39
|
+
* Funolio server. For other providers (or local mode), refreshes directly.
|
|
40
|
+
*
|
|
41
|
+
* After refresh, writes updated tokens back to the source files.
|
|
42
|
+
*/
|
|
43
|
+
export declare function refreshToken(credential: OAuthCredential): Promise<RefreshResult>;
|
|
35
44
|
//# sourceMappingURL=token-refresh.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-refresh.d.ts","sourceRoot":"","sources":["../../src/auth/token-refresh.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"token-refresh.d.ts","sourceRoot":"","sources":["../../src/auth/token-refresh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,OAAO,EAAE,eAAe,EAAc,MAAM,qBAAqB,CAAC;AAyBlE,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,SAAgB,QAAQ,EAAE,MAAM,CAAC;IACjC,SAAgB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;gBAEnC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;CAMnE;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,eAAe,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;CAClB;AAuMD,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,eAAe,GAC1B,OAAO,CAAC,eAAe,CAAC,CAoC1B;AAED,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,eAAe,GAC1B,OAAO,CAAC,eAAe,CAAC,CAmC1B;AAID,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,eAAe,GAAG,OAAO,CA0C3E;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,eAAe,GAAG,OAAO,CA4C1E;AA6BD;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,UAAU,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CA4BvF;AAID;;GAEG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,eAAe,GAAG,OAAO,CAEjE;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,UAAU,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC,CA4DtF"}
|