@fitchmultz/pi-mcp-adapter 5.0.0 → 7.0.0
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/CHANGELOG.md +50 -0
- package/OAUTH.md +3 -3
- package/README.md +160 -88
- package/dist/app-bridge.bundle.js +75 -33
- package/dist/commands.js +9 -6
- package/dist/config.js +41 -16
- package/dist/direct-tools.d.ts +2 -4
- package/dist/direct-tools.js +21 -319
- package/dist/gateway-arguments.d.ts +33 -0
- package/dist/gateway-arguments.js +63 -0
- package/dist/index.js +181 -276
- package/dist/init.js +6 -20
- package/dist/lifecycle.d.ts +2 -2
- package/dist/lifecycle.js +2 -2
- package/dist/mcp-auth-flow.js +2 -2
- package/dist/mcp-auth.d.ts +1 -1
- package/dist/mcp-auth.js +3 -3
- package/dist/mcp-code.d.ts +7 -6
- package/dist/mcp-code.js +98 -51
- package/dist/mcp-oauth-provider.d.ts +5 -5
- package/dist/mcp-oauth-provider.js +5 -5
- package/dist/mcp-output-guard.d.ts +57 -2
- package/dist/mcp-output-guard.js +129 -24
- package/dist/mcp-panel.d.ts +3 -3
- package/dist/mcp-panel.js +36 -99
- package/dist/mcp-script-worker.mjs +5 -2
- package/dist/mcp-setup-panel.d.ts +5 -4
- package/dist/mcp-setup-panel.js +15 -7
- package/dist/mcp-status.js +2 -1
- package/dist/mcp-trace.d.ts +1 -1
- package/dist/mcp-trace.js +1 -1
- package/dist/metadata-cache.d.ts +1 -1
- package/dist/metadata-cache.js +25 -88
- package/dist/npx-resolver.js +8 -4
- package/dist/prompts.d.ts +1 -1
- package/dist/prompts.js +1 -1
- package/dist/proxy-modes.d.ts +41 -7
- package/dist/proxy-modes.js +275 -490
- package/dist/resource-tools.d.ts +15 -0
- package/dist/resource-tools.js +26 -1
- package/dist/sampling-handler.js +5 -1
- package/dist/search-ranking.d.ts +0 -2
- package/dist/search-ranking.js +70 -137
- package/dist/server-manager.d.ts +2 -2
- package/dist/server-manager.js +44 -27
- package/dist/session-recovery.d.ts +7 -4
- package/dist/session-recovery.js +76 -10
- package/dist/state.d.ts +1 -1
- package/dist/tool-loader.d.ts +32 -0
- package/dist/tool-loader.js +152 -0
- package/dist/tool-metadata.d.ts +67 -0
- package/dist/tool-metadata.js +23 -17
- package/dist/tool-registrar.d.ts +4 -4
- package/dist/tool-registrar.js +18 -13
- package/dist/tool-result-renderer.d.ts +6 -3
- package/dist/tool-result-renderer.js +11 -6
- package/dist/types.d.ts +11 -36
- package/dist/ui-resource-handler.d.ts +2 -2
- package/dist/ui-resource-handler.js +2 -2
- package/dist/ui-server.js +4 -3
- package/dist/ui-stream-types.d.ts +8 -8
- package/dist/unix-socket-transport.d.ts +1 -1
- package/dist/unix-socket-transport.js +1 -1
- package/dist/utils.d.ts +1 -0
- package/dist/utils.js +16 -4
- package/package.json +37 -96
- package/skills/mcp-scripting/SKILL.md +67 -20
- package/abort.ts +0 -34
- package/agent-dir.ts +0 -24
- package/app-bridge.bundle.js +0 -67
- package/banner.png +0 -0
- package/checkpoint.ts +0 -55
- package/commands.ts +0 -619
- package/config.ts +0 -1204
- package/consent-manager.ts +0 -25
- package/direct-tools.ts +0 -408
- package/dist/ts-shape.d.ts +0 -2
- package/dist/ts-shape.js +0 -147
- package/elicitation-handler.ts +0 -349
- package/error-signal.ts +0 -21
- package/glimpse-ui.ts +0 -80
- package/host-html-template.ts +0 -456
- package/index.ts +0 -900
- package/init.ts +0 -627
- package/legacy-migration.ts +0 -47
- package/lifecycle.ts +0 -165
- package/logger.ts +0 -127
- package/mcp-auth-flow.ts +0 -975
- package/mcp-auth.ts +0 -793
- package/mcp-callback-server.ts +0 -450
- package/mcp-code.ts +0 -386
- package/mcp-keyring-helper.cjs +0 -89
- package/mcp-oauth-provider.ts +0 -774
- package/mcp-output-guard.ts +0 -412
- package/mcp-panel.ts +0 -978
- package/mcp-script-worker.mjs +0 -128
- package/mcp-setup-panel.ts +0 -666
- package/mcp-status.ts +0 -109
- package/mcp-trace.ts +0 -295
- package/metadata-cache.ts +0 -333
- package/npx-resolver.ts +0 -488
- package/onboarding-state.ts +0 -58
- package/panel-keys.ts +0 -37
- package/prompts.ts +0 -337
- package/proxy-modes.ts +0 -1361
- package/resource-tools.ts +0 -17
- package/runtime-owner.ts +0 -123
- package/sampling-handler.ts +0 -273
- package/scripts/build.mjs +0 -131
- package/scripts/prepare.mjs +0 -102
- package/search-ranking.ts +0 -196
- package/server-manager.ts +0 -1320
- package/session-recovery.ts +0 -316
- package/state.ts +0 -64
- package/tool-approval.ts +0 -78
- package/tool-metadata.ts +0 -235
- package/tool-registrar.ts +0 -69
- package/tool-result-renderer.ts +0 -286
- package/ts-shape.ts +0 -145
- package/tsconfig.build.json +0 -13
- package/tsconfig.json +0 -16
- package/types.ts +0 -810
- package/ui-resource-handler.ts +0 -249
- package/ui-server.ts +0 -808
- package/ui-session.ts +0 -568
- package/ui-stream-types.ts +0 -89
- package/ui-tool-visibility.ts +0 -25
- package/unix-socket-transport.ts +0 -85
- package/utils.ts +0 -309
package/dist/metadata-cache.js
CHANGED
|
@@ -3,12 +3,11 @@ import { existsSync, readFileSync, writeFileSync, renameSync, mkdirSync } from "
|
|
|
3
3
|
import { dirname } from "node:path";
|
|
4
4
|
import { getAdapterPath } from "./agent-dir.js";
|
|
5
5
|
import { createHash } from "node:crypto";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const CACHE_VERSION = 1;
|
|
6
|
+
import { formatPromptCommandName, isServerDisabled, resolveToolPrefix } from "./types.js";
|
|
7
|
+
import { buildToolMetadata } from "./tool-metadata.js";
|
|
8
|
+
import { interpolateEnvRecord, resolveBearerToken, resolveConfigPath, resolveServerUrl, } from "./utils.js";
|
|
9
|
+
// Version 2 stores raw descriptors; version 1 readers cannot enforce raw UI visibility.
|
|
10
|
+
const CACHE_VERSION = 2;
|
|
12
11
|
const CACHE_MAX_AGE_MS = 7 * 24 * 60 * 60 * 1000;
|
|
13
12
|
export function getMetadataCachePath() {
|
|
14
13
|
return getAdapterPath("mcp-cache.json");
|
|
@@ -23,7 +22,7 @@ export function loadMetadataCache(enabled = true) {
|
|
|
23
22
|
const raw = JSON.parse(readFileSync(cachePath, "utf-8"));
|
|
24
23
|
if (!raw || typeof raw !== "object")
|
|
25
24
|
return null;
|
|
26
|
-
if (raw.version !== CACHE_VERSION)
|
|
25
|
+
if (raw.version !== 1 && raw.version !== CACHE_VERSION)
|
|
27
26
|
return null;
|
|
28
27
|
if (!raw.servers || typeof raw.servers !== "object")
|
|
29
28
|
return null;
|
|
@@ -43,7 +42,7 @@ export function saveMetadataCache(cache, enabled = true) {
|
|
|
43
42
|
try {
|
|
44
43
|
if (existsSync(cachePath)) {
|
|
45
44
|
const existing = JSON.parse(readFileSync(cachePath, "utf-8"));
|
|
46
|
-
if (existing && existing.version === CACHE_VERSION && existing.servers) {
|
|
45
|
+
if (existing && (existing.version === 1 || existing.version === CACHE_VERSION) && existing.servers) {
|
|
47
46
|
merged.servers = { ...existing.servers };
|
|
48
47
|
}
|
|
49
48
|
}
|
|
@@ -139,83 +138,29 @@ export function getMissingConfiguredDirectToolServers(config, cache, envOverride
|
|
|
139
138
|
return missing;
|
|
140
139
|
}
|
|
141
140
|
export function reconstructToolMetadata(serverName, entry, prefix, definition) {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
if (!isUiToolVisibleToModel(tool.uiVisibility)) {
|
|
149
|
-
continue;
|
|
150
|
-
}
|
|
151
|
-
if (!isToolAllowed(tool.name, serverName, effectivePrefix, definition.includeTools, definition.excludeTools)) {
|
|
152
|
-
continue;
|
|
153
|
-
}
|
|
154
|
-
const name = formatToolName(tool.name, serverName, effectivePrefix);
|
|
155
|
-
if (seenNames.has(name)) {
|
|
156
|
-
continue;
|
|
157
|
-
}
|
|
158
|
-
seenNames.add(name);
|
|
159
|
-
metadata.push({
|
|
160
|
-
name,
|
|
161
|
-
originalName: tool.name,
|
|
162
|
-
description: tool.description ?? "",
|
|
163
|
-
...(tool.inputSchema !== undefined ? { inputSchema: tool.inputSchema } : {}),
|
|
164
|
-
...(tool.annotations !== undefined ? { annotations: tool.annotations } : {}),
|
|
165
|
-
...(tool.uiResourceUri !== undefined ? { uiResourceUri: tool.uiResourceUri } : {}),
|
|
166
|
-
...(tool.uiVisibility !== undefined ? { uiVisibility: tool.uiVisibility } : {}),
|
|
167
|
-
...(tool.uiStreamMode !== undefined ? { uiStreamMode: tool.uiStreamMode } : {}),
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
if (definition.exposeResources !== false) {
|
|
171
|
-
for (const resource of entry.resources ?? []) {
|
|
172
|
-
if (!resource?.name || !resource?.uri)
|
|
173
|
-
continue;
|
|
174
|
-
const baseName = `read_${resourceNameToToolName(resource.name)}`;
|
|
175
|
-
if (!isToolAllowed(baseName, serverName, effectivePrefix, definition.includeTools, definition.excludeTools)) {
|
|
176
|
-
continue;
|
|
177
|
-
}
|
|
178
|
-
const name = formatToolName(baseName, serverName, effectivePrefix);
|
|
179
|
-
if (seenNames.has(name)) {
|
|
180
|
-
continue;
|
|
181
|
-
}
|
|
182
|
-
seenNames.add(name);
|
|
183
|
-
metadata.push({
|
|
184
|
-
name,
|
|
185
|
-
originalName: baseName,
|
|
186
|
-
description: resource.description ?? `Read resource: ${resource.uri}`,
|
|
187
|
-
resourceUri: resource.uri,
|
|
188
|
-
});
|
|
189
|
-
}
|
|
141
|
+
return buildToolMetadata((entry.tools ?? []).filter(tool => tool?.name).map(restoreCachedTool), entry.resources ?? [], definition, serverName, prefix).metadata;
|
|
142
|
+
}
|
|
143
|
+
function restoreCachedTool(tool) {
|
|
144
|
+
const { uiResourceUri, uiVisibility, uiStreamMode, ...descriptor } = tool;
|
|
145
|
+
if (descriptor._meta !== undefined || (uiResourceUri === undefined && uiVisibility === undefined && uiStreamMode === undefined)) {
|
|
146
|
+
return descriptor;
|
|
190
147
|
}
|
|
191
|
-
return
|
|
148
|
+
return {
|
|
149
|
+
...descriptor,
|
|
150
|
+
_meta: {
|
|
151
|
+
ui: {
|
|
152
|
+
...(uiResourceUri !== undefined ? { resourceUri: uiResourceUri } : {}),
|
|
153
|
+
...(uiVisibility !== undefined ? { visibility: uiVisibility } : {}),
|
|
154
|
+
...(uiStreamMode !== undefined ? { "pi-mcp-adapter.streamMode": uiStreamMode } : {}),
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
};
|
|
192
158
|
}
|
|
193
159
|
export function serializeTools(tools) {
|
|
194
|
-
return tools
|
|
195
|
-
.filter(t => t?.name)
|
|
196
|
-
.map(t => {
|
|
197
|
-
const uiResourceUri = tryGetToolUiResourceUri(t);
|
|
198
|
-
const uiVisibility = extractUiToolVisibility(t._meta);
|
|
199
|
-
const uiStreamMode = extractToolUiStreamMode(t._meta);
|
|
200
|
-
return {
|
|
201
|
-
name: t.name,
|
|
202
|
-
...(t.description !== undefined ? { description: t.description } : {}),
|
|
203
|
-
...(t.inputSchema !== undefined ? { inputSchema: t.inputSchema } : {}),
|
|
204
|
-
...(t.annotations !== undefined ? { annotations: t.annotations } : {}),
|
|
205
|
-
...(uiResourceUri !== undefined ? { uiResourceUri } : {}),
|
|
206
|
-
...(uiVisibility !== undefined ? { uiVisibility } : {}),
|
|
207
|
-
...(uiStreamMode !== undefined ? { uiStreamMode } : {}),
|
|
208
|
-
};
|
|
209
|
-
});
|
|
160
|
+
return tools.filter(tool => tool?.name);
|
|
210
161
|
}
|
|
211
162
|
export function serializeResources(resources) {
|
|
212
|
-
return resources
|
|
213
|
-
.filter(r => r?.name && r?.uri)
|
|
214
|
-
.map(r => ({
|
|
215
|
-
uri: r.uri,
|
|
216
|
-
name: r.name,
|
|
217
|
-
...(r.description !== undefined ? { description: r.description } : {}),
|
|
218
|
-
}));
|
|
163
|
+
return resources.filter(resource => resource?.name && resource?.uri);
|
|
219
164
|
}
|
|
220
165
|
export function serializePrompts(prompts) {
|
|
221
166
|
return (prompts ?? [])
|
|
@@ -267,11 +212,3 @@ function stableStringify(value) {
|
|
|
267
212
|
const keys = Object.keys(obj).sort();
|
|
268
213
|
return `{${keys.map(k => `${JSON.stringify(k)}:${stableStringify(obj[k])}`).join(",")}}`;
|
|
269
214
|
}
|
|
270
|
-
function tryGetToolUiResourceUri(tool) {
|
|
271
|
-
try {
|
|
272
|
-
return getToolUiResourceUri({ _meta: tool._meta });
|
|
273
|
-
}
|
|
274
|
-
catch {
|
|
275
|
-
return undefined;
|
|
276
|
-
}
|
|
277
|
-
}
|
package/dist/npx-resolver.js
CHANGED
|
@@ -17,13 +17,15 @@ export async function resolveNpxBinary(command, args, signal) {
|
|
|
17
17
|
if (!parsed)
|
|
18
18
|
return null;
|
|
19
19
|
const packageSpec = parsePackageSpec(parsed.packageSpec);
|
|
20
|
+
if (!packageSpec)
|
|
21
|
+
return null;
|
|
20
22
|
const cacheKey = JSON.stringify([command, ...args]);
|
|
21
23
|
const cache = loadCache();
|
|
22
24
|
const cached = cache?.entries?.[cacheKey];
|
|
23
25
|
if (cached
|
|
24
26
|
&& Date.now() - cached.resolvedAt < CACHE_TTL_MS
|
|
25
27
|
&& existsSync(cached.resolvedBin)
|
|
26
|
-
&& (!packageSpec
|
|
28
|
+
&& (!packageSpec.exactVersion || cached.packageVersion === packageSpec.exactVersion)) {
|
|
27
29
|
return { binPath: cached.resolvedBin, extraArgs: parsed.extraArgs, isJs: cached.isJs };
|
|
28
30
|
}
|
|
29
31
|
const resolved = resolveFromNpmCache(parsed.packageSpec, parsed.binName);
|
|
@@ -289,11 +291,13 @@ function parsePackageSpec(spec) {
|
|
|
289
291
|
if (!packageName)
|
|
290
292
|
return null;
|
|
291
293
|
const normalizedVersion = requestedVersion?.replace(/^=/, "").replace(/^v/i, "");
|
|
294
|
+
// Let npm resolve ranges and tags rather than choosing an arbitrary cached version.
|
|
295
|
+
if (requestedVersion !== undefined && (!normalizedVersion || !EXACT_PACKAGE_VERSION_RE.test(normalizedVersion))) {
|
|
296
|
+
return null;
|
|
297
|
+
}
|
|
292
298
|
return {
|
|
293
299
|
packageName,
|
|
294
|
-
...(normalizedVersion
|
|
295
|
-
? { exactVersion: normalizedVersion }
|
|
296
|
-
: {}),
|
|
300
|
+
...(normalizedVersion ? { exactVersion: normalizedVersion } : {}),
|
|
297
301
|
};
|
|
298
302
|
}
|
|
299
303
|
function defaultBinName(packageName) {
|
package/dist/prompts.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import type { McpExtensionState } from "./state.ts";
|
|
|
4
4
|
import { type McpConfig, type PromptMetadata } from "./types.ts";
|
|
5
5
|
/**
|
|
6
6
|
* Resolve prompt metadata for slash-command registration at extension load
|
|
7
|
-
* time.
|
|
7
|
+
* time. Like typed tool registration, reads the persistent metadata cache so
|
|
8
8
|
* commands are available before any server connects.
|
|
9
9
|
*/
|
|
10
10
|
export declare function resolveCachedPrompts(config: McpConfig, cacheEnabled?: boolean): PromptMetadata[];
|
package/dist/prompts.js
CHANGED
|
@@ -5,7 +5,7 @@ import { logger } from "./logger.js";
|
|
|
5
5
|
import { truncateAtWord } from "./utils.js";
|
|
6
6
|
/**
|
|
7
7
|
* Resolve prompt metadata for slash-command registration at extension load
|
|
8
|
-
* time.
|
|
8
|
+
* time. Like typed tool registration, reads the persistent metadata cache so
|
|
9
9
|
* commands are available before any server connects.
|
|
10
10
|
*/
|
|
11
11
|
export function resolveCachedPrompts(config, cacheEnabled = true) {
|
package/dist/proxy-modes.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { AgentToolResult, ToolInfo } from "@earendil-works/pi-coding-agent";
|
|
2
2
|
import type { McpExtensionState } from "./state.ts";
|
|
3
|
+
import type { ServerConnection } from "./server-manager.ts";
|
|
3
4
|
import type { ToolMetadata, McpOperationContext, McpToolCallIdentity } from "./types.ts";
|
|
4
5
|
import { type SessionRecoveryDeps } from "./session-recovery.ts";
|
|
5
6
|
type ProxyToolResult = AgentToolResult<Record<string, unknown>>;
|
|
@@ -7,8 +8,8 @@ export declare function executeUiMessages(state: McpExtensionState): ProxyToolRe
|
|
|
7
8
|
export declare function executeStatus(state: McpExtensionState): ProxyToolResult;
|
|
8
9
|
export declare function executeAuthStart(state: McpExtensionState, serverName: string, signal?: AbortSignal): Promise<ProxyToolResult>;
|
|
9
10
|
export declare function executeAuthComplete(state: McpExtensionState, serverName: string, input?: string, signal?: AbortSignal): Promise<ProxyToolResult>;
|
|
10
|
-
export declare function executeDescribe(state: McpExtensionState, toolName: string): ProxyToolResult;
|
|
11
|
-
export declare function executeSearch(state: McpExtensionState, query: string, server?: string, includeSchemas?: boolean, limit?: number, offset?: number): ProxyToolResult;
|
|
11
|
+
export declare function executeDescribe(state: McpExtensionState, toolName: string, serverFilter?: string): ProxyToolResult;
|
|
12
|
+
export declare function executeSearch(state: McpExtensionState, query: string, server?: string, includeSchemas?: boolean, limit?: number, offset?: number, caller?: "mcp" | "mcp_search"): ProxyToolResult;
|
|
12
13
|
export declare function executeList(state: McpExtensionState, server: string, limit?: number, offset?: number): ProxyToolResult;
|
|
13
14
|
export declare function executeInstructions(state: McpExtensionState, server: string): ProxyToolResult;
|
|
14
15
|
export declare function executeConnect(state: McpExtensionState, serverName: string, signal?: AbortSignal, limit?: number, offset?: number): Promise<ProxyToolResult>;
|
|
@@ -24,15 +25,48 @@ interface ToolCallOptions extends McpToolCallIdentity {
|
|
|
24
25
|
recoverAuthConnection: NonNullable<SessionRecoveryDeps["onNeedsAuth"]>;
|
|
25
26
|
authRequiredMessage: () => string;
|
|
26
27
|
autoAuthAttempted: () => boolean;
|
|
27
|
-
|
|
28
|
+
raw?: boolean;
|
|
28
29
|
}
|
|
29
30
|
/**
|
|
30
31
|
* Executes an already-approved tool call against a connected server.
|
|
31
32
|
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
* auth strategy, approval) differs between them and stays with the caller.
|
|
33
|
+
* Direct, gateway, resource and script calls share executeCall preparation.
|
|
34
|
+
* Raw scripts skip content rendering but retain protocol results and artifacts.
|
|
35
35
|
*/
|
|
36
36
|
export declare function runToolCall(state: McpExtensionState, serverName: string, target: ToolCallTarget, args: Record<string, unknown> | undefined, options: ToolCallOptions): Promise<ProxyToolResult>;
|
|
37
|
-
export
|
|
37
|
+
export interface ExecuteCallOptions {
|
|
38
|
+
exactOriginalName?: boolean;
|
|
39
|
+
resourceUri?: string;
|
|
40
|
+
/** Scripts receive the raw protocol result without model-facing content transformation. */
|
|
41
|
+
raw?: boolean;
|
|
42
|
+
}
|
|
43
|
+
/** Connect/auth once for calls and resource discovery. Recovery stays bounded by withSessionRecovery. */
|
|
44
|
+
export declare function prepareMcpConnection(state: McpExtensionState, serverName: string, signal?: AbortSignal): Promise<{
|
|
45
|
+
error: {
|
|
46
|
+
content: {
|
|
47
|
+
type: "text";
|
|
48
|
+
text: string;
|
|
49
|
+
}[];
|
|
50
|
+
details: {
|
|
51
|
+
mode: string;
|
|
52
|
+
error: string;
|
|
53
|
+
server: string;
|
|
54
|
+
message: string;
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
connection?: never;
|
|
58
|
+
recoverAuthConnection?: never;
|
|
59
|
+
autoAuthAttempted?: never;
|
|
60
|
+
} | {
|
|
61
|
+
error: ProxyToolResult;
|
|
62
|
+
connection?: never;
|
|
63
|
+
recoverAuthConnection?: never;
|
|
64
|
+
autoAuthAttempted?: never;
|
|
65
|
+
} | {
|
|
66
|
+
error?: never;
|
|
67
|
+
connection: ServerConnection;
|
|
68
|
+
recoverAuthConnection: (serverName: string, signal?: AbortSignal, challenge?: import("./session-recovery.ts").AuthChallengeContext) => Promise<ServerConnection | undefined>;
|
|
69
|
+
autoAuthAttempted: () => boolean;
|
|
70
|
+
}>;
|
|
71
|
+
export declare function executeCall(state: McpExtensionState, toolName: string, args?: Record<string, unknown>, serverOverride?: string, getPiTools?: () => ToolInfo[], signal?: AbortSignal, identity?: McpToolCallIdentity, beforeDispatch?: (signal: AbortSignal | undefined, operation: McpOperationContext) => Promise<void>, options?: ExecuteCallOptions): Promise<ProxyToolResult>;
|
|
38
72
|
export {};
|