@herbertgao/pi-extensions 2026.8.13 → 2026.8.14

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.
Files changed (51) hide show
  1. package/README.md +8 -6
  2. package/node_modules/@czottmann/pi-automode/CHANGELOG.md +12 -0
  3. package/node_modules/@czottmann/pi-automode/README.md +1 -1
  4. package/node_modules/@czottmann/pi-automode/extensions/auto-mode/classifier.ts +55 -4
  5. package/node_modules/@czottmann/pi-automode/extensions/auto-mode/config.ts +7 -3
  6. package/node_modules/@czottmann/pi-automode/extensions/auto-mode/constants.ts +2 -0
  7. package/node_modules/@czottmann/pi-automode/extensions/auto-mode/hard-deny.ts +134 -23
  8. package/node_modules/@czottmann/pi-automode/package.json +1 -1
  9. package/node_modules/@herbertgao/pi-cc-extensions/README.en.md +1 -1
  10. package/node_modules/@herbertgao/pi-cc-extensions/README.md +1 -1
  11. package/node_modules/@herbertgao/pi-cc-extensions/package.json +3 -3
  12. package/node_modules/@herbertgao/pi-subagents/CHANGELOG.md +6 -0
  13. package/node_modules/@herbertgao/pi-subagents/package.json +2 -1
  14. package/node_modules/@herbertgao/pi-subagents/src/ui/conversation-viewer.ts +8 -1
  15. package/node_modules/@tifan/pi-preferred-thinking/README.md +1 -1
  16. package/node_modules/@tifan/pi-preferred-thinking/package.json +1 -1
  17. package/node_modules/@tifan/pi-preferred-thinking/src/index.ts +15 -2
  18. package/node_modules/pi-mcp-adapter/CHANGELOG.md +20 -0
  19. package/node_modules/pi-mcp-adapter/README.md +3 -0
  20. package/node_modules/pi-mcp-adapter/cli.js +4 -4
  21. package/node_modules/pi-mcp-adapter/config.ts +1 -0
  22. package/node_modules/pi-mcp-adapter/dist/config.js +1 -0
  23. package/node_modules/pi-mcp-adapter/dist/config.js.map +1 -1
  24. package/node_modules/pi-mcp-adapter/dist/mcp-bearer-store.d.ts +24 -0
  25. package/node_modules/pi-mcp-adapter/dist/mcp-bearer-store.js +336 -0
  26. package/node_modules/pi-mcp-adapter/dist/mcp-bearer-store.js.map +1 -0
  27. package/node_modules/pi-mcp-adapter/dist/types.d.ts +2 -0
  28. package/node_modules/pi-mcp-adapter/dist/types.js.map +1 -1
  29. package/node_modules/pi-mcp-adapter/index.ts +90 -6
  30. package/node_modules/pi-mcp-adapter/mcp-auth-flow.ts +19 -0
  31. package/node_modules/pi-mcp-adapter/mcp-bearer-store.ts +0 -2
  32. package/node_modules/pi-mcp-adapter/mcp-oauth-provider.ts +89 -0
  33. package/node_modules/pi-mcp-adapter/mcp-references.ts +9 -1
  34. package/node_modules/pi-mcp-adapter/package.json +1 -1
  35. package/node_modules/pi-mcp-adapter/proxy-modes.ts +40 -10
  36. package/node_modules/pi-mcp-adapter/request-headers-command.ts +1 -1
  37. package/node_modules/pi-mcp-adapter/types.ts +2 -0
  38. package/node_modules/pi-web-access/CHANGELOG.md +22 -0
  39. package/node_modules/pi-web-access/README.md +11 -8
  40. package/node_modules/pi-web-access/curator-page.ts +12 -3
  41. package/node_modules/pi-web-access/curator-server.ts +3 -1
  42. package/node_modules/pi-web-access/extract.ts +31 -1
  43. package/node_modules/pi-web-access/gemini-search.ts +10 -5
  44. package/node_modules/pi-web-access/index.ts +39 -39
  45. package/node_modules/pi-web-access/package.json +1 -1
  46. package/node_modules/pi-web-access/xcrawl.ts +264 -0
  47. package/package.json +7 -10
  48. package/node_modules/@herbertgao/pi-stash/LICENSE +0 -22
  49. package/node_modules/@herbertgao/pi-stash/README.md +0 -34
  50. package/node_modules/@herbertgao/pi-stash/package.json +0 -51
  51. package/node_modules/@herbertgao/pi-stash/src/index.ts +0 -118
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"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"}
@@ -56,6 +56,9 @@ export interface McpServerRegistration {
56
56
  export const MCP_RUNTIME_REGISTER_EVENT = "pi-mcp-adapter:runtime-register:v1" as const;
57
57
  export const MCP_RUNTIME_REGISTER_VERSION = 1 as const;
58
58
 
59
+ export const MCP_RUNTIME_SNAPSHOT_EVENT = "pi-mcp-adapter:runtime-snapshot:v1" as const;
60
+ export const MCP_RUNTIME_SNAPSHOT_VERSION = 1 as const;
61
+
59
62
  export type McpRuntimeRegistrationResult =
60
63
  | { ok: true; registration: McpServerRegistration }
61
64
  | { ok: false; error: Error };
@@ -67,8 +70,26 @@ export interface McpRuntimeRegistrationRequest {
67
70
  result?: McpRuntimeRegistrationResult;
68
71
  }
69
72
 
73
+ export interface McpRuntimeServerSnapshot {
74
+ readonly name: string;
75
+ readonly definition: ServerEntry;
76
+ readonly runtime: true;
77
+ readonly persisted: false;
78
+ }
79
+
80
+ export type McpRuntimeSnapshotResult =
81
+ | { ok: true; snapshot: McpRuntimeServerSnapshot }
82
+ | { ok: false; error: Error };
83
+
84
+ export interface McpRuntimeSnapshotRequest {
85
+ version: typeof MCP_RUNTIME_SNAPSHOT_VERSION;
86
+ name: string;
87
+ result?: McpRuntimeSnapshotResult;
88
+ }
89
+
70
90
  // Fast path for callers that share the adapter's module and ExtensionAPI.
71
91
  const runtimeRegistrars = new WeakMap<ExtensionAPI, (name: string, definition: ServerEntry) => McpServerRegistration>();
92
+ const runtimeSnapshotters = new WeakMap<ExtensionAPI, (name: string) => McpRuntimeServerSnapshot>();
72
93
 
73
94
  async function awaitWithTimeout<T>(promise: Promise<T>, timeoutMs: number): Promise<T | typeof INIT_WAIT_TIMED_OUT> {
74
95
  let timer: ReturnType<typeof setTimeout> | undefined;
@@ -213,7 +234,7 @@ function installMcpAdapter(pi: ExtensionAPI, options: McpAdapterOptions) {
213
234
  let directToolsFrozen = false;
214
235
  // Session/runtime scoped server registrations from other extensions. They
215
236
  // survive session restarts within this install and die with the process.
216
- const runtimeServers = new Map<string, ServerEntry>();
237
+ const runtimeServers = new Map<string, { definition: ServerEntry; entry: ServerEntry }>();
217
238
 
218
239
  // Mirrors init's per-server lifecycle registration so runtime servers get
219
240
  // idle cleanup and keep-alive health recovery like configured servers.
@@ -428,8 +449,9 @@ function installMcpAdapter(pi: ExtensionAPI, options: McpAdapterOptions) {
428
449
  }
429
450
  // Runtime-registered servers are proxy-tool-only: direct tools are frozen
430
451
  // at startup and must not be rebuilt for late registrations.
431
- const entry: ServerEntry = { ...structuredClone(definition), directTools: false };
432
- runtimeServers.set(name, entry);
452
+ const snapshotDefinition = structuredClone(definition);
453
+ const entry: ServerEntry = { ...structuredClone(snapshotDefinition), directTools: false };
454
+ runtimeServers.set(name, { definition: snapshotDefinition, entry });
433
455
  const registeredState = state;
434
456
  if (registeredState) {
435
457
  registeredState.config.mcpServers[name] = entry;
@@ -453,7 +475,34 @@ function installMcpAdapter(pi: ExtensionAPI, options: McpAdapterOptions) {
453
475
  },
454
476
  };
455
477
  };
478
+ const getRuntimeServerSnapshot = (name: string): McpRuntimeServerSnapshot => {
479
+ if (typeof name !== "string" || name.trim() === "") {
480
+ throw new Error("MCP runtime server name must be a non-empty string");
481
+ }
482
+ const runtimeServer = runtimeServers.get(name);
483
+ if (!runtimeServer) {
484
+ throw new Error(`MCP runtime server "${name}" is not registered or has been disposed`);
485
+ }
486
+ const activeState = state;
487
+ if (!activeState) {
488
+ throw new Error(`MCP runtime server "${name}" is unavailable because the adapter has no active state`);
489
+ }
490
+ const activeEntry = activeState.config.mcpServers[name];
491
+ if (Object.hasOwn(activeState.config.mcpServers, name) && activeEntry !== runtimeServer.entry) {
492
+ throw new Error(`MCP runtime server "${name}" is shadowed by a configured server`);
493
+ }
494
+ if (activeEntry !== runtimeServer.entry) {
495
+ throw new Error(`MCP runtime server "${name}" is unavailable in the active adapter state`);
496
+ }
497
+ return {
498
+ name,
499
+ definition: structuredClone(runtimeServer.definition),
500
+ runtime: true,
501
+ persisted: false,
502
+ };
503
+ };
456
504
  runtimeRegistrars.set(pi, registerRuntimeServer);
505
+ runtimeSnapshotters.set(pi, getRuntimeServerSnapshot);
457
506
  pi.events.on(MCP_RUNTIME_REGISTER_EVENT, (rawRequest: unknown) => {
458
507
  if (typeof rawRequest !== "object" || rawRequest === null || Array.isArray(rawRequest)) return;
459
508
  const request = rawRequest as McpRuntimeRegistrationRequest;
@@ -468,6 +517,20 @@ function installMcpAdapter(pi: ExtensionAPI, options: McpAdapterOptions) {
468
517
  request.result = { ok: false, error: error instanceof Error ? error : new Error(String(error)) };
469
518
  }
470
519
  });
520
+ pi.events.on(MCP_RUNTIME_SNAPSHOT_EVENT, (rawRequest: unknown) => {
521
+ if (typeof rawRequest !== "object" || rawRequest === null || Array.isArray(rawRequest)) return;
522
+ const request = rawRequest as McpRuntimeSnapshotRequest;
523
+ if (request.result !== undefined) return;
524
+ if (request.version !== MCP_RUNTIME_SNAPSHOT_VERSION) {
525
+ request.result = { ok: false, error: new Error(`Unsupported MCP runtime snapshot version: ${String(request.version)}`) };
526
+ return;
527
+ }
528
+ try {
529
+ request.result = { ok: true, snapshot: getRuntimeServerSnapshot(request.name) };
530
+ } catch (error) {
531
+ request.result = { ok: false, error: error instanceof Error ? error : new Error(String(error)) };
532
+ }
533
+ });
471
534
 
472
535
  const getPiTools = (): ToolInfo[] => pi.getAllTools();
473
536
 
@@ -501,13 +564,13 @@ function installMcpAdapter(pi: ExtensionAPI, options: McpAdapterOptions) {
501
564
 
502
565
  state = nextState;
503
566
  clearRetainedInitFailure();
504
- for (const [name, definition] of runtimeServers) {
567
+ for (const [name, { entry }] of runtimeServers) {
505
568
  if (Object.hasOwn(nextState.config.mcpServers, name)) {
506
569
  console.error(`MCP: runtime-registered server "${name}" now collides with a configured server; keeping the configured server`);
507
570
  continue;
508
571
  }
509
- nextState.config.mcpServers[name] = definition;
510
- attachRuntimeServerLifecycle(nextState, name, definition);
572
+ nextState.config.mcpServers[name] = entry;
573
+ attachRuntimeServerLifecycle(nextState, name, entry);
511
574
  }
512
575
  nextState.onToolMetadataUpdated = (_serverName, _reason) => {
513
576
  if (state !== nextState || !owner.isActive()) return;
@@ -1204,4 +1267,25 @@ export function registerMcpServer(options: { pi: ExtensionAPI; name: string; def
1204
1267
  return request.result.registration;
1205
1268
  }
1206
1269
 
1270
+ /**
1271
+ * Return a detached, non-persisted snapshot of one runtime-registered MCP
1272
+ * server. Configured servers and runtime registrations shadowed by config are
1273
+ * never exported through this API.
1274
+ */
1275
+ export function getRuntimeMcpServerSnapshot(options: { pi: ExtensionAPI; name: string }): McpRuntimeServerSnapshot {
1276
+ const { pi, name } = options;
1277
+ const getSnapshot = runtimeSnapshotters.get(pi);
1278
+ if (getSnapshot) return getSnapshot(name);
1279
+ const request: McpRuntimeSnapshotRequest = {
1280
+ version: MCP_RUNTIME_SNAPSHOT_VERSION,
1281
+ name,
1282
+ };
1283
+ pi.events.emit(MCP_RUNTIME_SNAPSHOT_EVENT, request);
1284
+ if (!request.result) {
1285
+ throw new Error("pi-mcp-adapter is not installed for this Pi instance");
1286
+ }
1287
+ if (!request.result.ok) throw request.result.error;
1288
+ return request.result.snapshot;
1289
+ }
1290
+
1207
1291
  export default createMcpAdapter();
@@ -238,6 +238,25 @@ export function extractOAuthConfig(definition: ServerEntry): McpOAuthConfig {
238
238
  }
239
239
  config.logoUri = logoUri
240
240
  }
241
+ if (definition.oauth?.authServerMetadataUrl !== undefined) {
242
+ if (typeof definition.oauth.authServerMetadataUrl !== "string") {
243
+ throw new Error("OAuth authServerMetadataUrl must be a string")
244
+ }
245
+ const authServerMetadataUrl = interpolateEnvVars(definition.oauth.authServerMetadataUrl).trim()
246
+ if (!authServerMetadataUrl) {
247
+ throw new Error("OAuth authServerMetadataUrl must not be empty")
248
+ }
249
+ let parsed: URL
250
+ try {
251
+ parsed = new URL(authServerMetadataUrl)
252
+ } catch {
253
+ throw new Error("OAuth authServerMetadataUrl must be an absolute https:// URL")
254
+ }
255
+ if (parsed.protocol !== "https:") {
256
+ throw new Error("OAuth authServerMetadataUrl must be an absolute https:// URL")
257
+ }
258
+ config.authServerMetadataUrl = authServerMetadataUrl
259
+ }
241
260
  if (definition.oauth?.skipIssuerMetadataValidation !== undefined) {
242
261
  if (typeof definition.oauth.skipIssuerMetadataValidation !== "boolean") {
243
262
  throw new Error("OAuth skipIssuerMetadataValidation must be a boolean")
@@ -43,8 +43,6 @@ export class BearerCredentialStoreError extends Error {
43
43
  readonly code = "BEARER_CREDENTIAL_STORE_UNAVAILABLE";
44
44
  readonly operation: "read" | "write" | "remove";
45
45
 
46
- // No parameter properties: cli.js loads this module under plain Node
47
- // type stripping, which rejects non-erasable TypeScript syntax.
48
46
  constructor(message: string, operation: "read" | "write" | "remove", cause: unknown) {
49
47
  super(message, { cause });
50
48
  this.name = "BearerCredentialStoreError";
@@ -29,6 +29,7 @@ import {
29
29
  type StoredTokens,
30
30
  type StoredClientInfo,
31
31
  } from "./mcp-auth.ts"
32
+ import { OAuthMetadataSchema, OpenIdProviderDiscoveryMetadataSchema } from "@modelcontextprotocol/core"
32
33
  import { resolveCommandSecret } from "./utils.ts"
33
34
  import { getAppClientUri, getAppName } from "./agent-dir.ts"
34
35
 
@@ -130,6 +131,7 @@ export interface McpOAuthConfig {
130
131
  clientName?: string
131
132
  clientUri?: string
132
133
  logoUri?: string
134
+ authServerMetadataUrl?: string
133
135
  skipIssuerMetadataValidation?: boolean
134
136
  }
135
137
 
@@ -161,6 +163,85 @@ export interface McpOAuthCallbacks {
161
163
  onRedirect: (url: URL) => void | Promise<void>
162
164
  }
163
165
 
166
+ function inferIssuerFromMetadataUrl(metadataUrl: string): string | undefined {
167
+ const url = new URL(metadataUrl)
168
+ const pathname = url.pathname.replace(/\/+$/, "") || "/"
169
+ const oauthPrefix = "/.well-known/oauth-authorization-server"
170
+ if (pathname === oauthPrefix || pathname.startsWith(`${oauthPrefix}/`)) {
171
+ const issuerPath = pathname.slice(oauthPrefix.length) || "/"
172
+ return new URL(issuerPath, url.origin).toString()
173
+ }
174
+
175
+ const oidcPath = "/.well-known/openid-configuration"
176
+ if (pathname === oidcPath || pathname.startsWith(`${oidcPath}/`)) {
177
+ const issuerPath = pathname.slice(oidcPath.length) || "/"
178
+ return new URL(issuerPath, url.origin).toString()
179
+ }
180
+ if (pathname.endsWith(oidcPath)) {
181
+ const issuerPath = pathname.slice(0, -oidcPath.length) || "/"
182
+ return new URL(issuerPath, url.origin).toString()
183
+ }
184
+ return undefined
185
+ }
186
+
187
+ function validateConfiguredIssuer(metadataUrl: string, issuer: string, skipIssuerValidation: boolean): void {
188
+ let parsedIssuer: URL
189
+ try {
190
+ parsedIssuer = new URL(issuer)
191
+ } catch (error) {
192
+ throw new Error("OAuth authorization-server metadata issuer must be an absolute URL", { cause: error })
193
+ }
194
+ if (parsedIssuer.protocol !== "http:" && parsedIssuer.protocol !== "https:") {
195
+ throw new Error("OAuth authorization-server metadata issuer must use http:// or https://")
196
+ }
197
+
198
+ const expectedIssuer = inferIssuerFromMetadataUrl(metadataUrl)
199
+ if (skipIssuerValidation) return
200
+ if (expectedIssuer !== undefined && !issuersMatch(expectedIssuer, issuer)) {
201
+ throw new Error(
202
+ `OAuth authorization-server metadata issuer does not match authServerMetadataUrl: expected ${expectedIssuer}`,
203
+ )
204
+ }
205
+ if (expectedIssuer === undefined && !issuersMatch(new URL(metadataUrl).origin, issuer)) {
206
+ throw new Error(
207
+ `OAuth authorization-server metadata issuer does not match authServerMetadataUrl origin: expected ${new URL(metadataUrl).origin}`,
208
+ )
209
+ }
210
+ }
211
+
212
+ async function loadConfiguredDiscoveryState(
213
+ metadataUrl: string,
214
+ serverUrl: string,
215
+ skipIssuerValidation: boolean,
216
+ signal?: AbortSignal,
217
+ ): Promise<OAuthDiscoveryState> {
218
+ const response = await fetch(metadataUrl, {
219
+ headers: { accept: "application/json" },
220
+ ...(signal !== undefined ? { signal } : {}),
221
+ })
222
+ if (!response.ok) {
223
+ await response.text().catch(() => {})
224
+ throw new Error(`OAuth authServerMetadataUrl request failed with HTTP ${response.status}`)
225
+ }
226
+
227
+ const payload = await response.json()
228
+ const oauthResult = OAuthMetadataSchema.safeParse(payload)
229
+ const metadata = oauthResult.success
230
+ ? oauthResult.data
231
+ : OpenIdProviderDiscoveryMetadataSchema.parse(payload)
232
+ validateConfiguredIssuer(metadataUrl, metadata.issuer, skipIssuerValidation)
233
+
234
+ const resource = new URL(serverUrl)
235
+ resource.hash = ""
236
+ return {
237
+ authorizationServerUrl: metadata.issuer,
238
+ authorizationServerMetadata: metadata,
239
+ // The configured AS document is authoritative, so avoid a second PRM
240
+ // lookup while still binding the token request to the configured resource.
241
+ resourceMetadata: { resource: resource.toString() },
242
+ }
243
+ }
244
+
164
245
  /**
165
246
  * OAuth provider implementation for MCP servers.
166
247
  * Implements the OAuthClientProvider interface from the MCP SDK.
@@ -525,6 +606,14 @@ export class McpOAuthProvider implements OAuthClientProvider {
525
606
 
526
607
  async discoveryState(): Promise<OAuthDiscoveryState | undefined> {
527
608
  this.throwIfInactive()
609
+ if (!this.flowDiscoveryState && this.config.authServerMetadataUrl !== undefined) {
610
+ this.flowDiscoveryState = await loadConfiguredDiscoveryState(
611
+ this.config.authServerMetadataUrl,
612
+ this.serverUrl,
613
+ this.config.skipIssuerMetadataValidation === true,
614
+ this.runtimeSignal,
615
+ )
616
+ }
528
617
  return this.flowDiscoveryState ? structuredClone(this.flowDiscoveryState) : undefined
529
618
  }
530
619
 
@@ -32,9 +32,17 @@ type DirectNameEntry = { name: string; originalName: string };
32
32
  type CachedServer = { serverName: string; definition: ServerEntry; entry: ServerCacheEntry; prefix: ToolPrefix };
33
33
 
34
34
  const BUILTIN_NAMES = new Set(["read", "bash", "edit", "write", "grep", "find", "ls", "mcp"]);
35
+ const ENCODED_NAMESPACE_MARKER = "_mcpns_";
36
+
37
+ function namespaceServerPart(serverName: string): string {
38
+ const normalized = serverName.replace(/-/g, "_");
39
+ if (normalized === "" || (/^[A-Za-z0-9_]+$/.test(normalized) && !normalized.startsWith(ENCODED_NAMESPACE_MARKER))) return normalized;
40
+ const codePoints = Array.from(normalized, char => char.codePointAt(0)!.toString(16)).join("_");
41
+ return `${ENCODED_NAMESPACE_MARKER}${codePoints}`;
42
+ }
35
43
 
36
44
  export function namespaceProxyName(serverName: string): string {
37
- return `mcp__${serverName.replace(/-/g, "_")}`;
45
+ return `mcp__${namespaceServerPart(serverName)}`;
38
46
  }
39
47
 
40
48
  export function parseMcpReference(raw: string): ParsedMcpReference {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-mcp-adapter",
3
- "version": "2.29.0",
3
+ "version": "2.30.0",
4
4
  "description": "MCP (Model Context Protocol) adapter extension for Pi coding agent",
5
5
  "type": "module",
6
6
  "types": "./index.ts",
@@ -93,6 +93,24 @@ function getSingleToolMatch(metadata: ToolMetadata[] | undefined, toolName: stri
93
93
  return matches.length > 1 ? "ambiguous" : matches[0];
94
94
  }
95
95
 
96
+ type ServerScopedToolMatch = { tool: ToolMetadata; precedence: number } | "ambiguous";
97
+
98
+ function getServerScopedToolMatch(metadata: ToolMetadata[] | undefined, toolName: string): ServerScopedToolMatch | undefined {
99
+ if (!metadata) return undefined;
100
+ const normalizedName = toolName.replace(/-/g, "_");
101
+ const matchesByPrecedence = [
102
+ metadata.filter((tool) => tool.name === toolName),
103
+ metadata.filter((tool) => tool.originalName === toolName),
104
+ metadata.filter((tool) => tool.name.replace(/-/g, "_") === normalizedName),
105
+ metadata.filter((tool) => tool.originalName.replace(/-/g, "_") === normalizedName),
106
+ ];
107
+ for (const [precedence, matches] of matchesByPrecedence.entries()) {
108
+ if (matches.length > 1) return "ambiguous";
109
+ if (matches.length === 1) return { tool: matches[0]!, precedence };
110
+ }
111
+ return undefined;
112
+ }
113
+
96
114
  function ambiguousToolResult(mode: "call" | "describe", toolName: string): ProxyToolResult {
97
115
  const message = `Tool "${toolName}" matches multiple servers. Specify a server.`;
98
116
  return {
@@ -894,9 +912,9 @@ export async function executeCall(
894
912
  };
895
913
  }
896
914
  if (serverName) {
897
- const match = getSingleToolMatch(state.toolMetadata.get(serverName), toolName);
915
+ const match = getServerScopedToolMatch(state.toolMetadata.get(serverName), toolName);
898
916
  if (match === "ambiguous") return ambiguousToolResult("call", toolName);
899
- toolMeta = match;
917
+ toolMeta = match?.tool;
900
918
  if (isServerDisabled(state.config.mcpServers[serverName])) {
901
919
  return disabledCallResult(serverName, toolMeta);
902
920
  }
@@ -938,9 +956,15 @@ export async function executeCall(
938
956
  if (serverName && !toolMeta) {
939
957
  const connected = await lazyConnect(state, serverName, ownedSignal);
940
958
  if (connected) {
941
- const match = getSingleToolMatch(state.toolMetadata.get(serverName), toolName);
942
- if (match === "ambiguous") return ambiguousToolResult("call", toolName);
943
- toolMeta = match;
959
+ if (serverOverride) {
960
+ const match = getServerScopedToolMatch(state.toolMetadata.get(serverName), toolName);
961
+ if (match === "ambiguous") return ambiguousToolResult("call", toolName);
962
+ toolMeta = match?.tool;
963
+ } else {
964
+ const match = getSingleToolMatch(state.toolMetadata.get(serverName), toolName);
965
+ if (match === "ambiguous") return ambiguousToolResult("call", toolName);
966
+ toolMeta = match;
967
+ }
944
968
  } else {
945
969
  const needsAuthConnection = state.manager.getConnection(serverName);
946
970
  if (needsAuthConnection?.status === "needs-auth") {
@@ -958,9 +982,9 @@ export async function executeCall(
958
982
  clearFailure(state, serverName);
959
983
  const connectedAfterAuth = await lazyConnect(state, serverName, ownedSignal);
960
984
  if (connectedAfterAuth) {
961
- const match = getSingleToolMatch(state.toolMetadata.get(serverName), toolName);
985
+ const match = getServerScopedToolMatch(state.toolMetadata.get(serverName), toolName);
962
986
  if (match === "ambiguous") return ambiguousToolResult("call", toolName);
963
- toolMeta = match;
987
+ toolMeta = match?.tool;
964
988
  if (!toolMeta) {
965
989
  const suggestions = rankSuggestions(state, toolName, 5);
966
990
  const suggestionText = suggestions.length > 0 ? ` Did you mean: ${suggestions.join(", ")}` : "";
@@ -1157,9 +1181,15 @@ export async function executeCall(
1157
1181
  if (!restored) notifyToolMetadataUpdated(state, serverName, "proxy-call-reconnect");
1158
1182
  markKeepAliveAfterConnect(state, serverName);
1159
1183
  updateStatusBar(state);
1160
- const match = getSingleToolMatch(state.toolMetadata.get(serverName), toolName);
1161
- if (match === "ambiguous") return ambiguousToolResult("call", toolName);
1162
- toolMeta = match;
1184
+ if (serverOverride) {
1185
+ const match = getServerScopedToolMatch(state.toolMetadata.get(serverName), toolName);
1186
+ if (match === "ambiguous") return ambiguousToolResult("call", toolName);
1187
+ toolMeta = match?.tool;
1188
+ } else {
1189
+ const match = getSingleToolMatch(state.toolMetadata.get(serverName), toolName);
1190
+ if (match === "ambiguous") return ambiguousToolResult("call", toolName);
1191
+ toolMeta = match;
1192
+ }
1163
1193
  if (!toolMeta) {
1164
1194
  const available = getToolNames(state, serverName);
1165
1195
  const hint = available.length > 0
@@ -92,7 +92,7 @@ function killRequestHeadersCommand(child: ChildProcess, trackedPosixDescendantPi
92
92
  encoding: "utf8",
93
93
  windowsHide: true,
94
94
  });
95
- if (result.status === 0 || isTaskkillNoSuchProcess(result)) return;
95
+ if (result.status === 0 || result.status === 128 || isTaskkillNoSuchProcess(result)) return;
96
96
  throw new Error(`HTTP request headers command cleanup failed: taskkill exited with code ${result.status ?? "unknown"}`);
97
97
  }
98
98
 
@@ -386,6 +386,8 @@ export interface OAuthConfig {
386
386
  clientUri?: string;
387
387
  /** Client logo URL for dynamic registration; shown on consent screens */
388
388
  logoUri?: string;
389
+ /** HTTPS URL for an authorization-server metadata document used instead of MCP discovery */
390
+ authServerMetadataUrl?: string;
389
391
  /** Security-weakening escape hatch for known-misconfigured authorization servers. */
390
392
  skipIssuerMetadataValidation?: boolean;
391
393
  }
@@ -4,6 +4,28 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.26.0] - 2026-08-28
8
+
9
+ ### Highlights
10
+ - `web_search` now includes XCrawl as an explicit search provider.
11
+ - XCrawl results now produce safer clickable links, including relative redirect links from the API.
12
+ - Local models can send multiple web-search queries as a JSON string and still get separate searches.
13
+ - HTML fallback extraction is quieter and more accurate when Defuddle cannot process a page.
14
+
15
+ ### Added
16
+
17
+ - Added XCrawl as an explicit-only search provider (`provider: "xcrawl"`) with `xcrawlApiKey` / `XCRAWL_API_KEY` credentials, client-side domain filtering, fallback titles, and retriable provider-timeout errors. Thanks to [@zeroicey](https://github.com/zeroicey) for #312 and #313.
18
+
19
+ ### Changed
20
+
21
+ - Refined the XCrawl provider docs, parser shape, availability metadata, and focused tests.
22
+
23
+ ### Fixed
24
+
25
+ - Expanded JSON-array strings supplied in the singular `web_search` `query` field into independent searches, with a clear no-query error for empty arrays. Thanks to [@alex-rs](https://github.com/alex-rs) for #317 and [@zeroicey](https://github.com/zeroicey) for PR #319.
26
+ - Kept Defuddle selector-processing failures out of the Pi console and stopped treating the raw page body as a successful extraction. Thanks to [@riabiy](https://github.com/riabiy) for #315.
27
+ - Resolved API-origin-relative XCrawl result links to absolute URLs and rejected blank result links instead of emitting fabricated source URLs. Thanks to [@zeroicey](https://github.com/zeroicey) for #318.
28
+
7
29
  ## [0.25.0] - 2026-08-25
8
30
 
9
31
  ### Highlights