agentxl 1.1.3 → 1.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -37
- package/bin/agentxl.js +460 -521
- package/dist/agent/models.d.ts +8 -3
- package/dist/agent/models.d.ts.map +1 -1
- package/dist/agent/models.js +33 -21
- package/dist/agent/models.js.map +1 -1
- package/dist/agent/session.d.ts +19 -2
- package/dist/agent/session.d.ts.map +1 -1
- package/dist/agent/session.js +37 -6
- package/dist/agent/session.js.map +1 -1
- package/dist/server/excel-bridge.d.ts.map +1 -1
- package/dist/server/excel-bridge.js +6 -1
- package/dist/server/excel-bridge.js.map +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +6 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/routes/agent.d.ts.map +1 -1
- package/dist/server/routes/agent.js +88 -1
- package/dist/server/routes/agent.js.map +1 -1
- package/dist/server/routes/auth.d.ts +12 -0
- package/dist/server/routes/auth.d.ts.map +1 -0
- package/dist/server/routes/auth.js +50 -0
- package/dist/server/routes/auth.js.map +1 -0
- package/package.json +5 -5
- package/taskpane/dist/assets/index-BMcoQ8v_.js +229 -0
- package/taskpane/dist/assets/index-DY4oaVhg.css +1 -0
- package/taskpane/dist/index.html +2 -2
- package/taskpane/dist/assets/index-BnD8psE_.js +0 -224
- package/taskpane/dist/assets/index-BuAcDfRq.css +0 -1
package/dist/agent/models.d.ts
CHANGED
|
@@ -6,14 +6,19 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import type { Model, Api } from "@mariozechner/pi-ai";
|
|
8
8
|
import { type ModelRegistry } from "@mariozechner/pi-coding-agent";
|
|
9
|
+
/**
|
|
10
|
+
* Providers AgentXL knows how to drive end-to-end via API key.
|
|
11
|
+
* Anything else (OAuth-only providers, leftover Pi credentials, etc.) is
|
|
12
|
+
* ignored so we don't accidentally route requests through a stale token.
|
|
13
|
+
*/
|
|
14
|
+
export declare const SUPPORTED_PROVIDERS: Set<string>;
|
|
9
15
|
/**
|
|
10
16
|
* Get the best available model based on configured auth.
|
|
11
17
|
*
|
|
12
18
|
* Priority:
|
|
13
19
|
* 1. Pi settings (`defaultProvider` / `defaultModel`) if that model is available
|
|
14
|
-
* 2.
|
|
15
|
-
* 3.
|
|
16
|
-
* 4. First available authenticated model
|
|
20
|
+
* 2. AgentXL's preferred list (OpenRouter first, then Anthropic, then OpenAI)
|
|
21
|
+
* 3. Any OpenRouter model, otherwise first available authenticated model
|
|
17
22
|
*
|
|
18
23
|
* Returns null if no provider has auth configured.
|
|
19
24
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/agent/models.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/agent/models.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEpF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,aAI9B,CAAC;AAiCH;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,aAAa,EAAE,aAAa,EAC5B,GAAG,CAAC,EAAE,MAAM,GACX,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAwCnB"}
|
package/dist/agent/models.js
CHANGED
|
@@ -5,11 +5,24 @@
|
|
|
5
5
|
* `defaultModel`), then falls back to AgentXL's built-in preference order.
|
|
6
6
|
*/
|
|
7
7
|
import { SettingsManager } from "@mariozechner/pi-coding-agent";
|
|
8
|
+
/**
|
|
9
|
+
* Providers AgentXL knows how to drive end-to-end via API key.
|
|
10
|
+
* Anything else (OAuth-only providers, leftover Pi credentials, etc.) is
|
|
11
|
+
* ignored so we don't accidentally route requests through a stale token.
|
|
12
|
+
*/
|
|
13
|
+
export const SUPPORTED_PROVIDERS = new Set([
|
|
14
|
+
"openrouter",
|
|
15
|
+
"anthropic",
|
|
16
|
+
"openai",
|
|
17
|
+
]);
|
|
8
18
|
/** Provider → preferred model ID, checked in priority order. */
|
|
9
19
|
const PREFERRED_MODELS = [
|
|
10
|
-
{ provider: "
|
|
11
|
-
{ provider: "
|
|
20
|
+
{ provider: "openrouter", modelId: "anthropic/claude-sonnet-4.6" },
|
|
21
|
+
{ provider: "openrouter", modelId: "anthropic/claude-sonnet-4.5" },
|
|
12
22
|
{ provider: "openrouter", modelId: "anthropic/claude-sonnet-4" },
|
|
23
|
+
{ provider: "anthropic", modelId: "claude-sonnet-4-6" },
|
|
24
|
+
{ provider: "anthropic", modelId: "claude-sonnet-4-5-20250929" },
|
|
25
|
+
{ provider: "anthropic", modelId: "claude-sonnet-4-20250514" },
|
|
13
26
|
{ provider: "openai", modelId: "gpt-4o" },
|
|
14
27
|
];
|
|
15
28
|
/** Read the user's configured default model from Pi settings, if available. */
|
|
@@ -35,18 +48,23 @@ function getConfiguredModelPreference(cwd) {
|
|
|
35
48
|
*
|
|
36
49
|
* Priority:
|
|
37
50
|
* 1. Pi settings (`defaultProvider` / `defaultModel`) if that model is available
|
|
38
|
-
* 2.
|
|
39
|
-
* 3.
|
|
40
|
-
* 4. First available authenticated model
|
|
51
|
+
* 2. AgentXL's preferred list (OpenRouter first, then Anthropic, then OpenAI)
|
|
52
|
+
* 3. Any OpenRouter model, otherwise first available authenticated model
|
|
41
53
|
*
|
|
42
54
|
* Returns null if no provider has auth configured.
|
|
43
55
|
*/
|
|
44
56
|
export function getDefaultModel(modelRegistry, cwd) {
|
|
45
|
-
// Only consider
|
|
46
|
-
|
|
57
|
+
// Only consider providers AgentXL supports. Other authenticated providers
|
|
58
|
+
// (e.g., stale Pi OAuth tokens for antigravity / gemini-cli) are ignored
|
|
59
|
+
// so the user gets prompted to paste a real key instead of crashing on a
|
|
60
|
+
// 404 from a token we never intended to use.
|
|
61
|
+
const available = modelRegistry
|
|
62
|
+
.getAvailable()
|
|
63
|
+
.filter((m) => SUPPORTED_PROVIDERS.has(m.provider));
|
|
47
64
|
if (available.length === 0)
|
|
48
65
|
return null;
|
|
49
|
-
// First honor Pi's configured default model/provider when possible
|
|
66
|
+
// First honor Pi's configured default model/provider when possible
|
|
67
|
+
// (still constrained to supported providers via `available`).
|
|
50
68
|
const configured = getConfiguredModelPreference(cwd);
|
|
51
69
|
if (configured?.provider && configured?.modelId) {
|
|
52
70
|
const exact = available.find((m) => m.provider === configured.provider && m.id === configured.modelId);
|
|
@@ -63,20 +81,14 @@ export function getDefaultModel(modelRegistry, cwd) {
|
|
|
63
81
|
if (byProvider)
|
|
64
82
|
return byProvider;
|
|
65
83
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
for (const pool of [oauthModels, apiKeyModels]) {
|
|
71
|
-
for (const { provider, modelId } of PREFERRED_MODELS) {
|
|
72
|
-
const match = pool.find((m) => m.provider === provider && m.id === modelId);
|
|
73
|
-
if (match)
|
|
74
|
-
return match;
|
|
75
|
-
}
|
|
84
|
+
for (const { provider, modelId } of PREFERRED_MODELS) {
|
|
85
|
+
const match = available.find((m) => m.provider === provider && m.id === modelId);
|
|
86
|
+
if (match)
|
|
87
|
+
return match;
|
|
76
88
|
}
|
|
77
|
-
|
|
78
|
-
if (
|
|
79
|
-
return
|
|
89
|
+
const openrouterAny = available.find((m) => m.provider === "openrouter");
|
|
90
|
+
if (openrouterAny)
|
|
91
|
+
return openrouterAny;
|
|
80
92
|
return available[0];
|
|
81
93
|
}
|
|
82
94
|
//# sourceMappingURL=models.js.map
|
package/dist/agent/models.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/agent/models.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,eAAe,EAAsB,MAAM,+BAA+B,CAAC;AAEpF,gEAAgE;AAChE,MAAM,gBAAgB,GAAiD;IACrE,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/agent/models.ts"],"names":[],"mappings":"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"}
|
package/dist/agent/session.d.ts
CHANGED
|
@@ -24,8 +24,12 @@ export declare function initSession(cwd?: string): Promise<AgentSession>;
|
|
|
24
24
|
*/
|
|
25
25
|
export declare function getSession(cwd?: string): Promise<AgentSession>;
|
|
26
26
|
/**
|
|
27
|
-
* Check if
|
|
28
|
-
*
|
|
27
|
+
* Check if a supported provider has auth configured.
|
|
28
|
+
*
|
|
29
|
+
* Only counts AgentXL's known providers (openrouter / anthropic / openai)
|
|
30
|
+
* — stale OAuth credentials for unsupported providers (e.g., a leftover
|
|
31
|
+
* Pi setup for antigravity or gemini-cli) are ignored so the UI keeps
|
|
32
|
+
* prompting for a real API key instead of routing through a dead token.
|
|
29
33
|
*/
|
|
30
34
|
export declare function isAuthenticated(): boolean;
|
|
31
35
|
/**
|
|
@@ -40,6 +44,19 @@ export declare function getAuthProvider(): string | null;
|
|
|
40
44
|
* from the current auth source.
|
|
41
45
|
*/
|
|
42
46
|
export declare function resetSession(): void;
|
|
47
|
+
/**
|
|
48
|
+
* Detect an API-key provider from the key prefix.
|
|
49
|
+
* Mirrors the auto-detection used in the CLI login flow.
|
|
50
|
+
*/
|
|
51
|
+
export declare function detectApiKeyProvider(key: string): string | null;
|
|
52
|
+
/**
|
|
53
|
+
* Save an API key for a provider and reset the session so the next
|
|
54
|
+
* request picks up the new credentials.
|
|
55
|
+
*
|
|
56
|
+
* @param provider - One of: anthropic, openrouter, openai (others passed through).
|
|
57
|
+
* @param key - The raw API key string.
|
|
58
|
+
*/
|
|
59
|
+
export declare function saveApiKey(provider: string, key: string): void;
|
|
43
60
|
/**
|
|
44
61
|
* Abort the current in-flight prompt, if any.
|
|
45
62
|
* Used on client disconnect to stop wasting tokens.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/agent/session.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAIL,WAAW,EAEX,aAAa,EAGb,KAAK,YAAY,EAClB,MAAM,+BAA+B,CAAC;AA6BvC,QAAA,IAAI,WAAW,aAAwC,CAAC;AACxD,QAAA,IAAI,aAAa,eAAiC,CAAC;AA6BnD;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/agent/session.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAIL,WAAW,EAEX,aAAa,EAGb,KAAK,YAAY,EAClB,MAAM,+BAA+B,CAAC;AA6BvC,QAAA,IAAI,WAAW,aAAwC,CAAC;AACxD,QAAA,IAAI,aAAa,eAAiC,CAAC;AA6BnD;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAuDrE;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAiBpE;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAIzC;AAED;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAQ/C;AAED;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAOnC;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM/D;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAG9D;AAED;;;GAGG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAQlD;AAGD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC"}
|
package/dist/agent/session.js
CHANGED
|
@@ -8,7 +8,7 @@ import { join } from "path";
|
|
|
8
8
|
import { homedir } from "os";
|
|
9
9
|
import { existsSync } from "fs";
|
|
10
10
|
import { createAgentSession, createReadOnlyTools, createBashTool, AuthStorage, DefaultResourceLoader, ModelRegistry, SessionManager, SettingsManager, } from "@mariozechner/pi-coding-agent";
|
|
11
|
-
import { getDefaultModel } from "./models.js";
|
|
11
|
+
import { getDefaultModel, SUPPORTED_PROVIDERS } from "./models.js";
|
|
12
12
|
import { excelTool } from "./tools/excel.js";
|
|
13
13
|
import { AGENTXL_SYSTEM_PROMPT } from "./prompt/system-prompt.js";
|
|
14
14
|
// ---------------------------------------------------------------------------
|
|
@@ -20,8 +20,8 @@ const PI_AUTH_PATH = join(homedir(), ".pi", "agent", "auth.json");
|
|
|
20
20
|
/**
|
|
21
21
|
* Resolve auth file path.
|
|
22
22
|
* Uses AgentXL's own auth.json if it exists, otherwise falls back to
|
|
23
|
-
* Pi's auth.json. This lets users who already have Pi set up
|
|
24
|
-
*
|
|
23
|
+
* Pi's auth.json. This lets users who already have Pi set up reuse
|
|
24
|
+
* the same API keys without re-entering them.
|
|
25
25
|
*/
|
|
26
26
|
function resolveAuthPath() {
|
|
27
27
|
if (existsSync(AGENTXL_AUTH_PATH))
|
|
@@ -74,6 +74,7 @@ export async function initSession(cwd) {
|
|
|
74
74
|
}
|
|
75
75
|
// Track the selected provider
|
|
76
76
|
selectedProvider = model.provider;
|
|
77
|
+
console.log(`[session] init provider=${model.provider} model=${model.id} cwd=${effectiveCwd}`);
|
|
77
78
|
const readOnly = createReadOnlyTools(effectiveCwd);
|
|
78
79
|
const bash = createBashTool(effectiveCwd);
|
|
79
80
|
const tools = [...readOnly, bash];
|
|
@@ -119,6 +120,7 @@ export async function getSession(cwd) {
|
|
|
119
120
|
const effectiveCwd = cwd || process.cwd();
|
|
120
121
|
// Recreate session if the working directory changed
|
|
121
122
|
if (currentSession && currentSessionCwd !== effectiveCwd) {
|
|
123
|
+
console.log(`[session] cwd changed (${currentSessionCwd} → ${effectiveCwd}) — disposing session`);
|
|
122
124
|
currentSession.dispose();
|
|
123
125
|
currentSession = null;
|
|
124
126
|
currentSessionCwd = null;
|
|
@@ -129,13 +131,17 @@ export async function getSession(cwd) {
|
|
|
129
131
|
return initSession(effectiveCwd);
|
|
130
132
|
}
|
|
131
133
|
/**
|
|
132
|
-
* Check if
|
|
133
|
-
*
|
|
134
|
+
* Check if a supported provider has auth configured.
|
|
135
|
+
*
|
|
136
|
+
* Only counts AgentXL's known providers (openrouter / anthropic / openai)
|
|
137
|
+
* — stale OAuth credentials for unsupported providers (e.g., a leftover
|
|
138
|
+
* Pi setup for antigravity or gemini-cli) are ignored so the UI keeps
|
|
139
|
+
* prompting for a real API key instead of routing through a dead token.
|
|
134
140
|
*/
|
|
135
141
|
export function isAuthenticated() {
|
|
136
142
|
modelRegistry.refresh();
|
|
137
143
|
const available = modelRegistry.getAvailable();
|
|
138
|
-
return available.
|
|
144
|
+
return available.some((m) => SUPPORTED_PROVIDERS.has(m.provider));
|
|
139
145
|
}
|
|
140
146
|
/**
|
|
141
147
|
* Get the provider for the model the session is actually using.
|
|
@@ -164,6 +170,31 @@ export function resetSession() {
|
|
|
164
170
|
}
|
|
165
171
|
rebuildAuth();
|
|
166
172
|
}
|
|
173
|
+
/**
|
|
174
|
+
* Detect an API-key provider from the key prefix.
|
|
175
|
+
* Mirrors the auto-detection used in the CLI login flow.
|
|
176
|
+
*/
|
|
177
|
+
export function detectApiKeyProvider(key) {
|
|
178
|
+
const k = key.trim();
|
|
179
|
+
if (k.startsWith("sk-ant-"))
|
|
180
|
+
return "anthropic";
|
|
181
|
+
if (k.startsWith("sk-or-"))
|
|
182
|
+
return "openrouter";
|
|
183
|
+
if (k.startsWith("sk-"))
|
|
184
|
+
return "openai";
|
|
185
|
+
return null;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Save an API key for a provider and reset the session so the next
|
|
189
|
+
* request picks up the new credentials.
|
|
190
|
+
*
|
|
191
|
+
* @param provider - One of: anthropic, openrouter, openai (others passed through).
|
|
192
|
+
* @param key - The raw API key string.
|
|
193
|
+
*/
|
|
194
|
+
export function saveApiKey(provider, key) {
|
|
195
|
+
authStorage.set(provider, { type: "api_key", key });
|
|
196
|
+
resetSession();
|
|
197
|
+
}
|
|
167
198
|
/**
|
|
168
199
|
* Abort the current in-flight prompt, if any.
|
|
169
200
|
* Used on client disconnect to stop wasting tokens.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/agent/session.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,WAAW,EACX,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,eAAe,GAEhB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/agent/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"excel-bridge.d.ts","sourceRoot":"","sources":["../../src/server/excel-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAcH;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,MAAM,EAClB,SAAS,GAAE,MAA2B,GACrC,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"excel-bridge.d.ts","sourceRoot":"","sources":["../../src/server/excel-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAcH;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,MAAM,EAClB,SAAS,GAAE,MAA2B,GACrC,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAYT;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,OAAO,CAQT;AAED,yDAAyD;AACzD,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,0DAA0D;AAC1D,wBAAgB,eAAe,IAAI,IAAI,CAMtC"}
|
|
@@ -24,10 +24,12 @@ export function registerPendingExecution(toolCallId, timeoutMs = DEFAULT_TIMEOUT
|
|
|
24
24
|
return new Promise((resolve, reject) => {
|
|
25
25
|
const timeout = setTimeout(() => {
|
|
26
26
|
pending.delete(toolCallId);
|
|
27
|
+
console.log(`[excel-bridge] TIMEOUT id=${toolCallId} after ${timeoutMs / 1000}s — taskpane never POSTed result`);
|
|
27
28
|
reject(new Error(`Excel execution timed out after ${timeoutMs / 1000}s. ` +
|
|
28
29
|
`The taskpane may not be connected or Excel may be unresponsive.`));
|
|
29
30
|
}, timeoutMs);
|
|
30
31
|
pending.set(toolCallId, { resolve, reject, timeout });
|
|
32
|
+
console.log(`[excel-bridge] waiting for taskpane result id=${toolCallId}`);
|
|
31
33
|
});
|
|
32
34
|
}
|
|
33
35
|
/**
|
|
@@ -38,11 +40,14 @@ export function registerPendingExecution(toolCallId, timeoutMs = DEFAULT_TIMEOUT
|
|
|
38
40
|
*/
|
|
39
41
|
export function resolveExecution(toolCallId, result) {
|
|
40
42
|
const entry = pending.get(toolCallId);
|
|
41
|
-
if (!entry)
|
|
43
|
+
if (!entry) {
|
|
44
|
+
console.log(`[excel-bridge] resolve miss id=${toolCallId} (already gone)`);
|
|
42
45
|
return false;
|
|
46
|
+
}
|
|
43
47
|
clearTimeout(entry.timeout);
|
|
44
48
|
pending.delete(toolCallId);
|
|
45
49
|
entry.resolve(result);
|
|
50
|
+
console.log(`[excel-bridge] resolved id=${toolCallId} (${result.length}b)`);
|
|
46
51
|
return true;
|
|
47
52
|
}
|
|
48
53
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"excel-bridge.js","sourceRoot":"","sources":["../../src/server/excel-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,gDAAgD;AAChD,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAQlC,qDAAqD;AACrD,MAAM,OAAO,GAAG,IAAI,GAAG,EAA4B,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,UAAkB,EAClB,YAAoB,kBAAkB;IAEtC,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC7C,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC3B,MAAM,CACJ,IAAI,KAAK,CACP,mCAAmC,SAAS,GAAG,IAAI,KAAK;gBACtD,iEAAiE,CACpE,CACF,CAAC;QACJ,CAAC,EAAE,SAAS,CAAC,CAAC;QAEd,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"excel-bridge.js","sourceRoot":"","sources":["../../src/server/excel-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,gDAAgD;AAChD,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAQlC,qDAAqD;AACrD,MAAM,OAAO,GAAG,IAAI,GAAG,EAA4B,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,UAAkB,EAClB,YAAoB,kBAAkB;IAEtC,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC7C,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,6BAA6B,UAAU,UAAU,SAAS,GAAG,IAAI,kCAAkC,CAAC,CAAC;YACjH,MAAM,CACJ,IAAI,KAAK,CACP,mCAAmC,SAAS,GAAG,IAAI,KAAK;gBACtD,iEAAiE,CACpE,CACF,CAAC;QACJ,CAAC,EAAE,SAAS,CAAC,CAAC;QAEd,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,iDAAiD,UAAU,EAAE,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,UAAkB,EAClB,MAAc;IAEd,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACtC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,kCAAkC,UAAU,iBAAiB,CAAC,CAAC;QAC3E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5B,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC3B,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtB,OAAO,CAAC,GAAG,CAAC,8BAA8B,UAAU,KAAK,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;IAC5E,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,UAAkB,EAClB,YAAoB;IAEpB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACtC,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IAEzB,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5B,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC3B,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,gBAAgB,YAAY,EAAE,CAAC,CAAC,CAAC;IACxD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,eAAe;IAC7B,OAAO,OAAO,CAAC,IAAI,CAAC;AACtB,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,eAAe;IAC7B,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;QAClC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5B,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,OAAO,EAAe,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,OAAO,EAAe,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAwKxD,yCAAyC;AACzC,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEjD;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,IAAI,GAAE,MAAa,EACnB,KAAK,CAAC,EAAE,QAAQ,GACf,OAAO,CAAC,IAAI,CAAC,CA4Cf;AAED,wCAAwC;AACxC,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAWhD"}
|
package/dist/server/index.js
CHANGED
|
@@ -22,6 +22,7 @@ import { resolveTaskpaneRoot, handleTaskpane } from "./static.js";
|
|
|
22
22
|
import { handleWorkbookResolve } from "./routes/workbook.js";
|
|
23
23
|
import { handleFolderStatus, handleFolderPick, handleFolderSelect, handleFolderFiles, handleFolderRefresh, } from "./routes/folder.js";
|
|
24
24
|
import { handleAgent, handleConfigStatus } from "./routes/agent.js";
|
|
25
|
+
import { handleAuthApiKey } from "./routes/auth.js";
|
|
25
26
|
import { handleExcelResult } from "./routes/excel.js";
|
|
26
27
|
const __filename = fileURLToPath(import.meta.url);
|
|
27
28
|
const __dirname = dirname(__filename);
|
|
@@ -59,6 +60,7 @@ const API_ROUTES = {
|
|
|
59
60
|
"/api/folder/files": "GET",
|
|
60
61
|
"/api/folder/refresh": "POST",
|
|
61
62
|
"/api/agent": "POST",
|
|
63
|
+
"/api/auth/apikey": "POST",
|
|
62
64
|
"/api/config/status": "GET",
|
|
63
65
|
"/api/excel/result": "POST",
|
|
64
66
|
};
|
|
@@ -120,6 +122,10 @@ async function handleRequest(req, res, taskpaneRoot) {
|
|
|
120
122
|
await handleExcelResult(req, res);
|
|
121
123
|
return;
|
|
122
124
|
}
|
|
125
|
+
if (url === "/api/auth/apikey" && method === "POST") {
|
|
126
|
+
await handleAuthApiKey(req, res);
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
123
129
|
// 405 for known routes with wrong method
|
|
124
130
|
if (url in API_ROUTES) {
|
|
125
131
|
sendMethodNotAllowed(res, method, API_ROUTES[url]);
|
package/dist/server/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/server/routes/agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/server/routes/agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AA0UvD,sDAAsD;AACtD,wBAAsB,WAAW,CAC/B,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED,6BAA6B;AAC7B,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,eAAe,EACrB,GAAG,EAAE,cAAc,EACnB,UAAU,EAAE,MAAM,MAAM,GACvB,IAAI,CAMN"}
|
|
@@ -29,7 +29,7 @@ async function resolveAgentRequestContext(req, res) {
|
|
|
29
29
|
}
|
|
30
30
|
// Auth check
|
|
31
31
|
if (!isAuthenticated()) {
|
|
32
|
-
sendError(res, 401, "Not authenticated.
|
|
32
|
+
sendError(res, 401, "Not authenticated. Paste an API key in the AgentXL taskpane (or run 'agentxl login').");
|
|
33
33
|
return null;
|
|
34
34
|
}
|
|
35
35
|
const b = body;
|
|
@@ -112,6 +112,65 @@ async function withLinkedFolderCwd(folderPath, fn) {
|
|
|
112
112
|
}
|
|
113
113
|
}
|
|
114
114
|
// ---------------------------------------------------------------------------
|
|
115
|
+
// Session event logging
|
|
116
|
+
// ---------------------------------------------------------------------------
|
|
117
|
+
function lastAssistantSummary(messages) {
|
|
118
|
+
if (!Array.isArray(messages) || messages.length === 0)
|
|
119
|
+
return null;
|
|
120
|
+
const last = messages[messages.length - 1];
|
|
121
|
+
if (!last || last.role !== "assistant")
|
|
122
|
+
return null;
|
|
123
|
+
const stop = last.stopReason;
|
|
124
|
+
const err = last.errorMessage;
|
|
125
|
+
if (err)
|
|
126
|
+
return `stop=${stop ?? "?"} err="${err.slice(0, 200)}"`;
|
|
127
|
+
if (stop && stop !== "stop")
|
|
128
|
+
return `stop=${stop}`;
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
function logSessionEvent(event) {
|
|
132
|
+
if (!event || typeof event !== "object")
|
|
133
|
+
return;
|
|
134
|
+
const e = event;
|
|
135
|
+
const type = e.type;
|
|
136
|
+
switch (type) {
|
|
137
|
+
case "agent_start":
|
|
138
|
+
console.log(`[agent] agent_start`);
|
|
139
|
+
return;
|
|
140
|
+
case "tool_execution_start":
|
|
141
|
+
case "tool_execution_end": {
|
|
142
|
+
const toolName = e.toolName;
|
|
143
|
+
const toolCallId = e.toolCallId;
|
|
144
|
+
const isError = e.isError;
|
|
145
|
+
console.log(`[agent] ${type} tool=${toolName ?? "?"} id=${toolCallId ?? "?"}` +
|
|
146
|
+
(type === "tool_execution_end" && isError ? " ERROR" : ""));
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
case "agent_end": {
|
|
150
|
+
const messages = e.messages;
|
|
151
|
+
const summary = lastAssistantSummary(messages);
|
|
152
|
+
console.log(`[agent] agent_end messages=${messages?.length ?? 0}` +
|
|
153
|
+
(summary ? ` ${summary}` : ""));
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
case "auto_compaction_start":
|
|
157
|
+
console.log(`[agent] auto_compaction_start reason=${e.reason}`);
|
|
158
|
+
return;
|
|
159
|
+
case "auto_compaction_end":
|
|
160
|
+
console.log(`[agent] auto_compaction_end aborted=${e.aborted}` +
|
|
161
|
+
(e.errorMessage ? ` error=${e.errorMessage}` : ""));
|
|
162
|
+
return;
|
|
163
|
+
case "auto_retry_start":
|
|
164
|
+
console.log(`[agent] auto_retry_start attempt=${e.attempt}/${e.maxAttempts} err=${e.errorMessage}`);
|
|
165
|
+
return;
|
|
166
|
+
case "error":
|
|
167
|
+
console.log(`[agent] error ${JSON.stringify(e).slice(0, 500)}`);
|
|
168
|
+
return;
|
|
169
|
+
default:
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
// ---------------------------------------------------------------------------
|
|
115
174
|
// SSE stream runner
|
|
116
175
|
// ---------------------------------------------------------------------------
|
|
117
176
|
/**
|
|
@@ -135,9 +194,35 @@ async function runAgentStream(res, req, fullMessage, linkedFolderPath) {
|
|
|
135
194
|
try {
|
|
136
195
|
const session = await getSession(linkedFolderPath ?? undefined);
|
|
137
196
|
// Subscribe to session events and stream them as SSE
|
|
197
|
+
let sawAssistantContent = false;
|
|
138
198
|
unsubscribe = session.subscribe((event) => {
|
|
199
|
+
logSessionEvent(event);
|
|
200
|
+
// Track whether the assistant produced anything we can show
|
|
201
|
+
const e = event;
|
|
202
|
+
if (e.type === "message_update") {
|
|
203
|
+
const ame = e.assistantMessageEvent;
|
|
204
|
+
const t = ame?.type;
|
|
205
|
+
if (t === "text_delta" ||
|
|
206
|
+
t === "text_start" ||
|
|
207
|
+
t === "thinking_delta" ||
|
|
208
|
+
t === "thinking_start" ||
|
|
209
|
+
t === "toolcall_start") {
|
|
210
|
+
sawAssistantContent = true;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
else if (e.type === "tool_execution_start") {
|
|
214
|
+
sawAssistantContent = true;
|
|
215
|
+
}
|
|
139
216
|
sendSSE(event);
|
|
140
217
|
if (event.type === "agent_end") {
|
|
218
|
+
if (!sawAssistantContent) {
|
|
219
|
+
console.log("[agent] EMPTY response — model returned no text/thinking/tool calls. " +
|
|
220
|
+
"Likely causes: deprecated model id or provider quota / billing issue.");
|
|
221
|
+
sendSSE({
|
|
222
|
+
type: "error",
|
|
223
|
+
error: "The model returned an empty response. Check the server console — the configured model id may be deprecated or the provider returned no content.",
|
|
224
|
+
});
|
|
225
|
+
}
|
|
141
226
|
completed = true;
|
|
142
227
|
cleanup();
|
|
143
228
|
if (!res.writableEnded) {
|
|
@@ -176,6 +261,8 @@ export async function handleAgent(req, res) {
|
|
|
176
261
|
if (!ctx)
|
|
177
262
|
return; // Validation error already sent
|
|
178
263
|
const fullMessage = buildAgentPrompt(ctx.contextParts, ctx.message);
|
|
264
|
+
const ctxBytes = ctx.contextParts.reduce((n, p) => n + p.length, 0);
|
|
265
|
+
console.log(`[agent] prompt msg=${ctx.message.length}b context=${ctxBytes}b parts=${ctx.contextParts.length} total=${fullMessage.length}b`);
|
|
179
266
|
// SSE headers
|
|
180
267
|
res.writeHead(200, {
|
|
181
268
|
"Content-Type": "text/event-stream; charset=utf-8",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/server/routes/agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EACL,eAAe,EACf,eAAe,EACf,UAAU,EACV,YAAY,GACb,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAY1E;;;GAGG;AACH,KAAK,UAAU,0BAA0B,CACvC,GAAoB,EACpB,GAAmB;IAEnB,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC;IAEtC,wDAAwD;IACxD,IACE,CAAC,IAAI;QACL,OAAO,IAAI,KAAK,QAAQ;QACxB,OAAQ,IAAgC,CAAC,OAAO,KAAK,QAAQ;QAC3D,IAAgC,CAAC,OAAkB,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EACzE,CAAC;QACD,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,mCAAmC,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa;IACb,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;QACvB,SAAS,CACP,GAAG,EACH,GAAG,EACH
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/server/routes/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auth route — accept an API key from the taskpane UI and save it.
|
|
3
|
+
*
|
|
4
|
+
* The user pastes a key (sk-ant-..., sk-or-..., sk-...) into the UI.
|
|
5
|
+
* The server detects the provider from the prefix, persists the key
|
|
6
|
+
* via the Pi SDK auth storage, and resets the session so the next
|
|
7
|
+
* agent request picks up the new credentials.
|
|
8
|
+
*/
|
|
9
|
+
import { IncomingMessage, ServerResponse } from "http";
|
|
10
|
+
/** POST /api/auth/apikey — accept and persist an API key. */
|
|
11
|
+
export declare function handleAuthApiKey(req: IncomingMessage, res: ServerResponse): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/server/routes/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAMvD,6DAA6D;AAC7D,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,IAAI,CAAC,CAmDf"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auth route — accept an API key from the taskpane UI and save it.
|
|
3
|
+
*
|
|
4
|
+
* The user pastes a key (sk-ant-..., sk-or-..., sk-...) into the UI.
|
|
5
|
+
* The server detects the provider from the prefix, persists the key
|
|
6
|
+
* via the Pi SDK auth storage, and resets the session so the next
|
|
7
|
+
* agent request picks up the new credentials.
|
|
8
|
+
*/
|
|
9
|
+
import { sendError, sendJson, parseJsonBody } from "../http.js";
|
|
10
|
+
import { detectApiKeyProvider, saveApiKey } from "../../agent/session.js";
|
|
11
|
+
const KNOWN_PROVIDERS = new Set(["anthropic", "openrouter", "openai"]);
|
|
12
|
+
/** POST /api/auth/apikey — accept and persist an API key. */
|
|
13
|
+
export async function handleAuthApiKey(req, res) {
|
|
14
|
+
const body = await parseJsonBody(req);
|
|
15
|
+
if (!body || typeof body !== "object") {
|
|
16
|
+
sendError(res, 400, "Invalid JSON body");
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const b = body;
|
|
20
|
+
const key = typeof b.key === "string" ? b.key.trim() : "";
|
|
21
|
+
const explicitProvider = typeof b.provider === "string" ? b.provider.trim().toLowerCase() : "";
|
|
22
|
+
if (key.length === 0) {
|
|
23
|
+
sendError(res, 400, "Missing 'key' in request body");
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
// Sanity check on length — keys are at least ~20 chars
|
|
27
|
+
if (key.length < 16) {
|
|
28
|
+
sendError(res, 400, "API key looks too short");
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
let provider = explicitProvider || detectApiKeyProvider(key) || "";
|
|
32
|
+
if (!provider) {
|
|
33
|
+
sendError(res, 400, "Could not detect provider from key prefix. Send 'provider' explicitly (anthropic | openrouter | openai).");
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
if (!KNOWN_PROVIDERS.has(provider)) {
|
|
37
|
+
sendError(res, 400, `Unsupported provider '${provider}'. Use anthropic, openrouter, or openai.`);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
try {
|
|
41
|
+
saveApiKey(provider, key);
|
|
42
|
+
console.log(`[auth] saved api_key provider=${provider}`);
|
|
43
|
+
sendJson(res, 200, { provider, saved: true });
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
47
|
+
sendError(res, 500, `Failed to save key: ${message}`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=auth.js.map
|