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.
@@ -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. Subscriptions (OAuth) from AgentXL's preferred fallback list
15
- * 3. API keys from AgentXL's preferred fallback list
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;AA8BpF;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,aAAa,EAAE,aAAa,EAC5B,GAAG,CAAC,EAAE,MAAM,GACX,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAyCnB"}
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"}
@@ -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: "anthropic", modelId: "claude-sonnet-4-20250514" },
11
- { provider: "openai-codex", modelId: "gpt-5.1" },
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. Subscriptions (OAuth) from AgentXL's preferred fallback list
39
- * 3. API keys from AgentXL's preferred fallback list
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 models that have auth configured
46
- const available = modelRegistry.getAvailable();
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
- // Split into OAuth (subscriptions) vs API key models
67
- const oauthModels = available.filter((m) => modelRegistry.isUsingOAuth(m));
68
- const apiKeyModels = available.filter((m) => !modelRegistry.isUsingOAuth(m));
69
- // Check preferred models — subscriptions first, then API keys
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
- // Fallback: first OAuth model, then first API key model
78
- if (oauthModels.length > 0)
79
- return oauthModels[0];
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
@@ -1 +1 @@
1
- {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/agent/models.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/agent/models.ts"],"names":[],"mappings":"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"}
@@ -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 any provider has auth configured.
28
- * Fast check — does not refresh OAuth tokens.
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,CAoDrE;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAcpE;AAED;;;GAGG;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,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAQlD;AAGD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,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"}
@@ -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 get seamless
24
- * auth same subscriptions, same OAuth tokens, auto-refreshed.
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 any provider has auth configured.
133
- * Fast check — does not refresh OAuth tokens.
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.length > 0;
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":"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"}
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,CAcjB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAQT;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"}
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;IACxD,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;QAAE,OAAO,KAAK,CAAC;IAEzB,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,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
+ {"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;AAiKxD,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"}
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"}
@@ -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]);
@@ -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;AAiOvD,sDAAsD;AACtD,wBAAsB,WAAW,CAC/B,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,IAAI,CAAC,CAef;AAED,6BAA6B;AAC7B,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,eAAe,EACrB,GAAG,EAAE,cAAc,EACnB,UAAU,EAAE,MAAM,MAAM,GACvB,IAAI,CAMN"}
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. Run 'agentxl login' to set up credentials.");
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":"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"}
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