funolio-agent 0.17.8 → 1.0.3
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 +7 -6
- package/dist/approval.d.ts.map +1 -1
- package/dist/approval.js +40 -10
- 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/backfill.js +2 -2
- package/dist/backfill.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/clerk-model.d.ts +0 -1
- package/dist/clerk-model.d.ts.map +1 -1
- package/dist/clerk-model.js +24 -50
- package/dist/clerk-model.js.map +1 -1
- package/dist/commands/configure-provider.js +2 -2
- package/dist/commands/configure-provider.js.map +1 -1
- package/dist/commands/configure.d.ts.map +1 -1
- package/dist/commands/configure.js +10 -14
- package/dist/commands/configure.js.map +1 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +51 -229
- package/dist/commands/start.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -2
- package/dist/config.js.map +1 -1
- package/dist/context-compressor.d.ts +6 -1
- package/dist/context-compressor.d.ts.map +1 -1
- package/dist/context-compressor.js +87 -18
- package/dist/context-compressor.js.map +1 -1
- package/dist/context-window.d.ts +2 -8
- package/dist/context-window.d.ts.map +1 -1
- package/dist/context-window.js +4 -4
- package/dist/context-window.js.map +1 -1
- package/dist/eval/orchestrator-front-door-replay.js +43 -2
- package/dist/eval/orchestrator-front-door-replay.js.map +1 -1
- package/dist/eval/orchestrator-todo-dispatch-replay.d.ts +2 -0
- package/dist/eval/orchestrator-todo-dispatch-replay.d.ts.map +1 -0
- package/dist/eval/orchestrator-todo-dispatch-replay.js +253 -0
- package/dist/eval/orchestrator-todo-dispatch-replay.js.map +1 -0
- package/dist/eval/orchestrator-todo-planning-replay.d.ts +2 -0
- package/dist/eval/orchestrator-todo-planning-replay.d.ts.map +1 -0
- package/dist/eval/orchestrator-todo-planning-replay.js +247 -0
- package/dist/eval/orchestrator-todo-planning-replay.js.map +1 -0
- package/dist/eval/policy-detection-replay.d.ts +2 -0
- package/dist/eval/policy-detection-replay.d.ts.map +1 -0
- package/dist/eval/policy-detection-replay.js +122 -0
- package/dist/eval/policy-detection-replay.js.map +1 -0
- package/dist/eval/todo-worker-runtime-replay.d.ts +2 -0
- package/dist/eval/todo-worker-runtime-replay.d.ts.map +1 -0
- package/dist/eval/todo-worker-runtime-replay.js +520 -0
- package/dist/eval/todo-worker-runtime-replay.js.map +1 -0
- package/dist/integration-tokens.d.ts +6 -0
- package/dist/integration-tokens.d.ts.map +1 -1
- package/dist/integration-tokens.js +43 -0
- package/dist/integration-tokens.js.map +1 -1
- package/dist/local-data.d.ts +134 -1
- package/dist/local-data.d.ts.map +1 -1
- package/dist/local-data.js +711 -18
- package/dist/local-data.js.map +1 -1
- package/dist/local-db.d.ts.map +1 -1
- package/dist/local-db.js +216 -12
- package/dist/local-db.js.map +1 -1
- package/dist/local-funnel.d.ts.map +1 -1
- package/dist/local-funnel.js +7 -0
- package/dist/local-funnel.js.map +1 -1
- package/dist/local-server.d.ts.map +1 -1
- package/dist/local-server.js +119 -96
- package/dist/local-server.js.map +1 -1
- package/dist/mcp/bridge-server.d.ts.map +1 -1
- package/dist/mcp/bridge-server.js +8 -2
- package/dist/mcp/bridge-server.js.map +1 -1
- package/dist/mcp/manager.d.ts +5 -0
- package/dist/mcp/manager.d.ts.map +1 -1
- package/dist/mcp/manager.js +131 -2
- package/dist/mcp/manager.js.map +1 -1
- package/dist/mcp/sync-cli-config.d.ts +5 -0
- package/dist/mcp/sync-cli-config.d.ts.map +1 -1
- package/dist/mcp/sync-cli-config.js +10 -2
- package/dist/mcp/sync-cli-config.js.map +1 -1
- package/dist/message-loop.d.ts +1 -10
- package/dist/message-loop.d.ts.map +1 -1
- package/dist/message-loop.js +179 -250
- package/dist/message-loop.js.map +1 -1
- package/dist/mqtt-client.d.ts +44 -0
- package/dist/mqtt-client.d.ts.map +1 -1
- package/dist/mqtt-client.js +2 -2
- package/dist/mqtt-client.js.map +1 -1
- package/dist/orchestration/front-door-policy.d.ts +26 -9
- package/dist/orchestration/front-door-policy.d.ts.map +1 -1
- package/dist/orchestration/front-door-policy.js +242 -69
- package/dist/orchestration/front-door-policy.js.map +1 -1
- package/dist/orchestration/orchestrator-blocked-prompt.d.ts +18 -0
- package/dist/orchestration/orchestrator-blocked-prompt.d.ts.map +1 -0
- package/dist/orchestration/orchestrator-blocked-prompt.js +46 -0
- package/dist/orchestration/orchestrator-blocked-prompt.js.map +1 -0
- package/dist/orchestration/orchestrator-final-response-prompt.d.ts +10 -0
- package/dist/orchestration/orchestrator-final-response-prompt.d.ts.map +1 -0
- package/dist/orchestration/orchestrator-final-response-prompt.js +39 -0
- package/dist/orchestration/orchestrator-final-response-prompt.js.map +1 -0
- package/dist/orchestration/orchestrator-operating-prompt.d.ts +11 -0
- package/dist/orchestration/orchestrator-operating-prompt.d.ts.map +1 -1
- package/dist/orchestration/orchestrator-operating-prompt.js +106 -36
- package/dist/orchestration/orchestrator-operating-prompt.js.map +1 -1
- package/dist/orchestration/policy-prompt.d.ts +6 -0
- package/dist/orchestration/policy-prompt.d.ts.map +1 -0
- package/dist/orchestration/policy-prompt.js +40 -0
- package/dist/orchestration/policy-prompt.js.map +1 -0
- package/dist/orchestration/worker-operating-prompt.d.ts +16 -0
- package/dist/orchestration/worker-operating-prompt.d.ts.map +1 -0
- package/dist/orchestration/worker-operating-prompt.js +75 -0
- package/dist/orchestration/worker-operating-prompt.js.map +1 -0
- package/dist/orchestrator.d.ts +19 -0
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator.js +614 -54
- package/dist/orchestrator.js.map +1 -1
- package/dist/policy-detection.d.ts +40 -0
- package/dist/policy-detection.d.ts.map +1 -0
- package/dist/policy-detection.js +298 -0
- package/dist/policy-detection.js.map +1 -0
- package/dist/providers/anthropic.d.ts +0 -5
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +34 -51
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/claude-cli.d.ts.map +1 -1
- package/dist/providers/claude-cli.js +11 -2
- package/dist/providers/claude-cli.js.map +1 -1
- package/dist/providers/codex-cli.d.ts.map +1 -1
- package/dist/providers/codex-cli.js +121 -2
- package/dist/providers/codex-cli.js.map +1 -1
- package/dist/providers/index.d.ts +6 -2
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/summarization-pipeline.d.ts +1 -4
- package/dist/summarization-pipeline.d.ts.map +1 -1
- package/dist/summarization-pipeline.js +43 -56
- package/dist/summarization-pipeline.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/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.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/todo-tasks.d.ts +2 -0
- package/dist/tools/todo-tasks.d.ts.map +1 -1
- package/dist/tools/todo-tasks.js +203 -6
- package/dist/tools/todo-tasks.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/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/wizard-state.d.ts.map +1 -1
- package/dist/wizard-state.js +30 -8
- package/dist/wizard-state.js.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 +80 -93
- package/dist/wizard-support.js.map +1 -1
- package/dist/workflow-engine.d.ts +3 -0
- package/dist/workflow-engine.d.ts.map +1 -1
- package/dist/workflow-engine.js +111 -82
- package/dist/workflow-engine.js.map +1 -1
- package/package.json +6 -1
|
@@ -1,304 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
})();
|
|
2
|
+
/**
|
|
3
|
+
* REMOVED: Subscription API runtime has been removed.
|
|
4
|
+
*
|
|
5
|
+
* Connection to LLM providers is now exclusively via:
|
|
6
|
+
* 1. CLI providers (claude-cli, codex-cli) — spawns the CLI binary
|
|
7
|
+
* 2. API key (BYOK) — standard x-api-key authentication
|
|
8
|
+
*/
|
|
35
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.resolveClaudeSubscriptionRuntime = resolveClaudeSubscriptionRuntime;
|
|
11
|
+
exports.resolveCodexSubscriptionRuntime = resolveCodexSubscriptionRuntime;
|
|
36
12
|
exports.claudeSubscriptionRuntimeLabel = claudeSubscriptionRuntimeLabel;
|
|
37
13
|
exports.resolveClaudeSubscriptionRequestShape = resolveClaudeSubscriptionRequestShape;
|
|
38
14
|
exports.resolveSubscriptionApiModel = resolveSubscriptionApiModel;
|
|
39
|
-
|
|
40
|
-
|
|
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';
|
|
57
|
-
}
|
|
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
|
-
}
|
|
15
|
+
/** @deprecated Always returns null. */
|
|
16
|
+
async function resolveClaudeSubscriptionRuntime(_options) {
|
|
74
17
|
return null;
|
|
75
18
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
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
|
-
};
|
|
90
|
-
}
|
|
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;
|
|
19
|
+
/** @deprecated Always returns null. */
|
|
20
|
+
async function resolveCodexSubscriptionRuntime(_options) {
|
|
21
|
+
return null;
|
|
207
22
|
}
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
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 };
|
|
23
|
+
/** @deprecated Subscription API removed. Returns a display label. */
|
|
24
|
+
function claudeSubscriptionRuntimeLabel(_source) {
|
|
25
|
+
return 'Subscription (removed)';
|
|
244
26
|
}
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
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;
|
|
27
|
+
/** @deprecated Subscription API removed. Always returns undefined. */
|
|
28
|
+
function resolveClaudeSubscriptionRequestShape(_source) {
|
|
29
|
+
return undefined;
|
|
284
30
|
}
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
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
|
-
};
|
|
31
|
+
/** @deprecated Subscription API removed. Returns the preferred model or fallback. */
|
|
32
|
+
function resolveSubscriptionApiModel(preferred, fallback) {
|
|
33
|
+
const model = (preferred || '').trim() || (fallback || '').trim();
|
|
34
|
+
return model || undefined;
|
|
303
35
|
}
|
|
304
36
|
//# 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":";AAAA;;;;;;GAMG;;AAmBH,4EAEC;AAGD,0EAEC;AAGD,wEAEC;AAGD,sFAEC;AAGD,kEAGC;AAxBD,uCAAuC;AAChC,KAAK,UAAU,gCAAgC,CAAC,QAAc;IACnE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,uCAAuC;AAChC,KAAK,UAAU,+BAA+B,CAAC,QAAc;IAClE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,qEAAqE;AACrE,SAAgB,8BAA8B,CAAC,OAAuB;IACpE,OAAO,wBAAwB,CAAC;AAClC,CAAC;AAED,sEAAsE;AACtE,SAAgB,qCAAqC,CAAC,OAAuB;IAC3E,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,qFAAqF;AACrF,SAAgB,2BAA2B,CAAC,SAAyB,EAAE,QAAwB;IAC7F,MAAM,KAAK,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAClE,OAAO,KAAK,IAAI,SAAS,CAAC;AAC5B,CAAC"}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* REMOVED: OAuth token refresh has been removed.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Connection to LLM providers is now exclusively via:
|
|
5
|
+
* 1. CLI providers (claude-cli, codex-cli) — handle their own auth/refresh
|
|
6
|
+
* 2. API key (BYOK) — API keys don't expire
|
|
7
7
|
*
|
|
8
|
-
*
|
|
8
|
+
* The token-refresh module previously handled:
|
|
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)
|
|
9
13
|
*
|
|
10
|
-
*
|
|
11
|
-
* - "cloud" (default): Server refreshes Anthropic tokens
|
|
12
|
-
* - "local": Legacy direct refresh (for self-hosted without a server)
|
|
14
|
+
* CLI providers now handle all token lifecycle internally.
|
|
13
15
|
*/
|
|
14
16
|
import { OAuthCredential } from './credential-reader';
|
|
15
17
|
export declare class TokenRefreshError extends Error {
|
|
@@ -21,24 +23,13 @@ export interface RefreshResult {
|
|
|
21
23
|
credential: OAuthCredential;
|
|
22
24
|
written: boolean;
|
|
23
25
|
}
|
|
24
|
-
|
|
25
|
-
export declare function
|
|
26
|
-
|
|
27
|
-
export declare function
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
export declare function seedServerWithToken(
|
|
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>;
|
|
26
|
+
/** @deprecated Always returns false. API keys don't expire. */
|
|
27
|
+
export declare function needsRefresh(_credential: OAuthCredential): boolean;
|
|
28
|
+
/** @deprecated Always throws. Use CLI providers or API keys instead. */
|
|
29
|
+
export declare function refreshToken(_credential: OAuthCredential): Promise<RefreshResult>;
|
|
30
|
+
export declare function refreshOpenAIToken(_credential: OAuthCredential): Promise<OAuthCredential>;
|
|
31
|
+
export declare function refreshGeminiToken(_credential: OAuthCredential): Promise<OAuthCredential>;
|
|
32
|
+
export declare function writeClaudeCredentials(_credential: OAuthCredential): boolean;
|
|
33
|
+
export declare function writeCodexCredentials(_credential: OAuthCredential): boolean;
|
|
34
|
+
export declare function seedServerWithToken(_credential: OAuthCredential): Promise<boolean>;
|
|
44
35
|
//# 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;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,eAAe,EAAc,MAAM,qBAAqB,CAAC;AAElE,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;AAED,+DAA+D;AAC/D,wBAAgB,YAAY,CAAC,WAAW,EAAE,eAAe,GAAG,OAAO,CAElE;AAED,wEAAwE;AACxE,wBAAsB,YAAY,CAAC,WAAW,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC,CAKvF;AAGD,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAE/F;AAED,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAE/F;AAED,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,eAAe,GAAG,OAAO,CAAkB;AAC/F,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,eAAe,GAAG,OAAO,CAAkB;AAC9F,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAAkB"}
|