pi-mcp-adapter 3.2.0 → 3.3.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 +29 -0
- package/README.md +12 -2
- package/cli.js +1 -0
- package/direct-tools.ts +9 -1
- package/dist/elicitation-handler.d.ts +9 -1
- package/dist/elicitation-handler.js +65 -2
- package/dist/elicitation-handler.js.map +1 -1
- package/dist/jev-client.js +7 -5
- package/dist/jev-client.js.map +1 -1
- package/dist/jev-key-store.d.ts +1 -0
- package/dist/jev-key-store.js +11 -0
- package/dist/jev-key-store.js.map +1 -1
- package/dist/metadata-cache.js +5 -1
- package/dist/metadata-cache.js.map +1 -1
- package/dist/output-shape.d.ts +23 -0
- package/dist/output-shape.js +194 -0
- package/dist/output-shape.js.map +1 -0
- package/dist/state.d.ts +4 -0
- package/dist/ts-shape.d.ts +3 -0
- package/dist/ts-shape.js +153 -0
- package/dist/ts-shape.js.map +1 -0
- package/dist/types.d.ts +13 -2
- package/dist/types.js.map +1 -1
- package/dist/unix-socket-transport.js +1 -1
- package/dist/unix-socket-transport.js.map +1 -1
- package/dist/utils.d.ts +6 -1
- package/dist/utils.js +17 -0
- package/dist/utils.js.map +1 -1
- package/elicitation-handler.ts +78 -1
- package/jev-client.ts +7 -4
- package/jev-key-store.ts +7 -0
- package/mcp-code.ts +10 -0
- package/metadata-cache.ts +5 -0
- package/output-shape.ts +209 -0
- package/package.json +2 -2
- package/prompts.ts +68 -0
- package/proxy-modes.ts +28 -1
- package/skills/mcp-scripting/SKILL.md +2 -0
- package/state.ts +4 -0
- package/tool-approval.ts +17 -4
- package/tool-metadata.ts +3 -1
- package/ts-shape.ts +1 -1
- package/types.ts +14 -2
- package/ui-server.ts +5 -2
- package/unix-socket-transport.ts +1 -1
- package/utils.ts +16 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unix-socket-transport.js","sourceRoot":"","sources":["../unix-socket-transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAe,MAAM,UAAU,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAI5E,2EAA2E;AAC3E,MAAM,OAAO,yBAAyB;IAQP;IAPrB,MAAM,CAAqB;IAClB,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;IAE/C,OAAO,CAAc;IACrB,OAAO,CAA0B;IACjC,SAAS,CAAqC;IAE9C,YAA6B,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;IAAG,CAAC;IAEnD,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACjD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,IAAI,SAAS,GAAG,KAAK,CAAC;YAEtB,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;gBAC1B,SAAS,GAAG,IAAI,CAAC;gBACjB,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;gBACxB,IAAI,CAAC;oBACH,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"unix-socket-transport.js","sourceRoot":"","sources":["../unix-socket-transport.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
2
|
-
import type { McpConfig, ServerEntry } from "./types.ts";
|
|
2
|
+
import type { McpConfig, McpToolAnnotations, ServerEntry } from "./types.ts";
|
|
3
3
|
export declare function stripUtf8Bom(raw: string): string;
|
|
4
4
|
export declare function parseJsonWithComments(raw: string): unknown;
|
|
5
5
|
/** Resolve a candidate only when its real path stays within the real root. */
|
|
@@ -43,3 +43,8 @@ export declare function formatMcpFooterStatus(config: Pick<McpConfig, "settings"
|
|
|
43
43
|
* Extract the adapter-owned UI stream mode from tool metadata.
|
|
44
44
|
*/
|
|
45
45
|
export declare function extractToolUiStreamMode(toolMeta: Record<string, unknown> | undefined): "eager" | "stream-first" | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* Keep only the spec tool annotations with the right types. Server and cache
|
|
48
|
+
* input is untrusted, so a malformed field is dropped instead of failing the tool list.
|
|
49
|
+
*/
|
|
50
|
+
export declare function extractToolAnnotations(annotations: unknown): McpToolAnnotations | undefined;
|
package/dist/utils.js
CHANGED
|
@@ -424,4 +424,21 @@ export function extractToolUiStreamMode(toolMeta) {
|
|
|
424
424
|
}
|
|
425
425
|
return undefined;
|
|
426
426
|
}
|
|
427
|
+
/**
|
|
428
|
+
* Keep only the spec tool annotations with the right types. Server and cache
|
|
429
|
+
* input is untrusted, so a malformed field is dropped instead of failing the tool list.
|
|
430
|
+
*/
|
|
431
|
+
export function extractToolAnnotations(annotations) {
|
|
432
|
+
if (!annotations || typeof annotations !== "object")
|
|
433
|
+
return undefined;
|
|
434
|
+
const source = annotations;
|
|
435
|
+
const kept = {};
|
|
436
|
+
if (typeof source.title === "string")
|
|
437
|
+
kept.title = source.title;
|
|
438
|
+
for (const key of ["readOnlyHint", "destructiveHint", "idempotentHint", "openWorldHint"]) {
|
|
439
|
+
if (typeof source[key] === "boolean")
|
|
440
|
+
kept[key] = source[key];
|
|
441
|
+
}
|
|
442
|
+
return Object.keys(kept).length > 0 ? kept : undefined;
|
|
443
|
+
}
|
|
427
444
|
//# sourceMappingURL=utils.js.map
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../utils.ts"],"names":[],"mappings":"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"}
|
package/elicitation-handler.ts
CHANGED
|
@@ -1,17 +1,22 @@
|
|
|
1
1
|
import type { ExtensionUIContext } from "@earendil-works/pi-coding-agent";
|
|
2
2
|
import type { Client } from "@modelcontextprotocol/client";
|
|
3
3
|
import {
|
|
4
|
+
DEFAULT_REQUEST_TIMEOUT_MSEC,
|
|
4
5
|
ProtocolError,
|
|
5
6
|
ProtocolErrorCode,
|
|
7
|
+
SdkError,
|
|
8
|
+
SdkErrorCode,
|
|
6
9
|
type ElicitRequest,
|
|
7
10
|
type ElicitRequestFormParams,
|
|
8
11
|
type ElicitRequestURLParams,
|
|
9
12
|
type ElicitResult,
|
|
13
|
+
type RequestOptions,
|
|
10
14
|
} from "@modelcontextprotocol/client";
|
|
11
15
|
import { AjvJsonSchemaValidator } from "@modelcontextprotocol/client/validators/ajv";
|
|
12
16
|
import type { JsonSchemaType } from "@modelcontextprotocol/client";
|
|
13
17
|
import open from "open";
|
|
14
18
|
import { abortable, throwIfAborted } from "./abort.ts";
|
|
19
|
+
import { combineAbortSignals } from "./runtime-owner.ts";
|
|
15
20
|
|
|
16
21
|
export type ElicitationValue = string | number | boolean | string[] | undefined;
|
|
17
22
|
type FormProperty = ElicitRequestFormParams["requestedSchema"]["properties"][string];
|
|
@@ -28,9 +33,81 @@ export interface ElicitationHandlerOptions {
|
|
|
28
33
|
|
|
29
34
|
export type ServerElicitationConfig = Omit<ElicitationHandlerOptions, "serverName" | "onUrlAccepted">;
|
|
30
35
|
|
|
36
|
+
// A server's elicitation/create arrives as its own request, and transports do
|
|
37
|
+
// not reliably tie it to the tools/call that triggered it, so an open prompt
|
|
38
|
+
// pauses the deadline of every tool call in flight on that client.
|
|
39
|
+
interface PromptPause {
|
|
40
|
+
open: number;
|
|
41
|
+
deadlines: Set<{ pause(): void; resume(): void }>;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const promptPauses = new WeakMap<Client, PromptPause>();
|
|
45
|
+
|
|
31
46
|
export function registerElicitationHandler(client: Client, options: ElicitationHandlerOptions): void {
|
|
47
|
+
const state: PromptPause = { open: 0, deadlines: new Set() };
|
|
48
|
+
promptPauses.set(client, state);
|
|
32
49
|
client.setRequestHandler("elicitation/create", request =>
|
|
33
|
-
handleElicitationRequest(options, request));
|
|
50
|
+
whilePromptOpen(state, () => handleElicitationRequest(options, request)));
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
async function whilePromptOpen<T>(state: PromptPause, run: () => Promise<T>): Promise<T> {
|
|
54
|
+
if (state.open++ === 0) for (const deadline of state.deadlines) deadline.pause();
|
|
55
|
+
try {
|
|
56
|
+
return await run();
|
|
57
|
+
} finally {
|
|
58
|
+
if (--state.open === 0) for (const deadline of state.deadlines) deadline.resume();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// setTimeout fires immediately for delays above this.
|
|
63
|
+
const MAX_TIMER_MS = 2 ** 31 - 1;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Calls a tool with the request timeout counting only time the user is not
|
|
67
|
+
* answering an elicitation prompt from the same server. The SDK's own timer
|
|
68
|
+
* cannot be paused, so it is pushed out of the way and the deadline aborts the
|
|
69
|
+
* request with the same timeout error the SDK would raise. A client without an
|
|
70
|
+
* elicitation handler cannot prompt, so it keeps the SDK's timer.
|
|
71
|
+
*/
|
|
72
|
+
export async function callToolPausingForElicitation(
|
|
73
|
+
client: Client,
|
|
74
|
+
params: Parameters<Client["callTool"]>[0],
|
|
75
|
+
options?: RequestOptions,
|
|
76
|
+
): ReturnType<Client["callTool"]> {
|
|
77
|
+
const state = promptPauses.get(client);
|
|
78
|
+
if (!state) return client.callTool(params, options);
|
|
79
|
+
const timeout = Math.min(options?.timeout ?? DEFAULT_REQUEST_TIMEOUT_MSEC, MAX_TIMER_MS);
|
|
80
|
+
const expired = new AbortController();
|
|
81
|
+
let remaining = timeout;
|
|
82
|
+
let startedAt = 0;
|
|
83
|
+
let timer: ReturnType<typeof setTimeout> | undefined;
|
|
84
|
+
const deadline = {
|
|
85
|
+
pause() {
|
|
86
|
+
if (timer === undefined) return;
|
|
87
|
+
clearTimeout(timer);
|
|
88
|
+
timer = undefined;
|
|
89
|
+
remaining -= Date.now() - startedAt;
|
|
90
|
+
},
|
|
91
|
+
resume() {
|
|
92
|
+
startedAt = Date.now();
|
|
93
|
+
timer = setTimeout(
|
|
94
|
+
() => expired.abort(new SdkError(SdkErrorCode.RequestTimeout, "Request timed out", { timeout })),
|
|
95
|
+
Math.max(remaining, 0),
|
|
96
|
+
);
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
state.deadlines.add(deadline);
|
|
100
|
+
if (state.open === 0) deadline.resume();
|
|
101
|
+
try {
|
|
102
|
+
return await client.callTool(params, {
|
|
103
|
+
...options,
|
|
104
|
+
timeout: MAX_TIMER_MS,
|
|
105
|
+
signal: combineAbortSignals(options?.signal, expired.signal) ?? expired.signal,
|
|
106
|
+
});
|
|
107
|
+
} finally {
|
|
108
|
+
state.deadlines.delete(deadline);
|
|
109
|
+
deadline.pause();
|
|
110
|
+
}
|
|
34
111
|
}
|
|
35
112
|
|
|
36
113
|
export async function handleElicitationRequest(
|
package/jev-client.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { TypeSafeClient } from "@typesafe-ai/sdk";
|
|
|
2
2
|
import type { McpExtensionState } from "./state.ts";
|
|
3
3
|
import { isServerDisabled } from "./types.ts";
|
|
4
4
|
import { combineAbortSignals } from "./runtime-owner.ts";
|
|
5
|
-
import { JEV_SDK_PATH, resolveJevCredential, resolveJevEndpoint, type JevCredentialResolution, type ResolvedJevEndpoint } from "./jev-key-store.ts";
|
|
5
|
+
import { JEV_SDK_PATH, OPENROUTER_ORIGIN, resolveJevCredential, resolveJevEndpoint, type JevCredentialResolution, type ResolvedJevEndpoint } from "./jev-key-store.ts";
|
|
6
6
|
import type { JevAnswer, JevBudget, JevEvaluateInput, JevEvaluationData, JevEvaluationEnvelope, JevJson, JevQuestion, ResolvedJevSettings } from "./jev-contracts.ts";
|
|
7
7
|
|
|
8
8
|
export type { ResolvedJevSettings } from "./jev-contracts.ts";
|
|
@@ -15,6 +15,8 @@ const DEFAULTS: ResolvedJevSettings = {
|
|
|
15
15
|
semanticMinProbability: 0.2,
|
|
16
16
|
};
|
|
17
17
|
const DANGEROUS_KEYS = new Set(["__proto__", "constructor", "prototype"]);
|
|
18
|
+
/** OpenRouter's name for Jev, used there when `settings.jev.model` is not configured. */
|
|
19
|
+
const OPENROUTER_DEFAULT_MODEL = "typesafe/jev-1.13";
|
|
18
20
|
|
|
19
21
|
type JevSettingsInput = Partial<ResolvedJevSettings>;
|
|
20
22
|
type Host = { endpoint: ResolvedJevEndpoint; client: TypeSafeClient };
|
|
@@ -192,8 +194,8 @@ function sameKeys(actual: Record<string, unknown>, expected: string[]): boolean
|
|
|
192
194
|
return keys.length === expected.length && expected.every(key => Object.hasOwn(actual, key));
|
|
193
195
|
}
|
|
194
196
|
function validateResponse(value: unknown, input: JevEvaluateInput): JevEvaluationData {
|
|
197
|
+
// Providers may add metadata such as `id`, `provider`, or `usage.cost`; only the fields validated here are kept.
|
|
195
198
|
const response = record(value, "response");
|
|
196
|
-
exactKeys(response, ["model", "answers", "usage"], "response");
|
|
197
199
|
const answers = record(response.answers, "response answers");
|
|
198
200
|
const questionNames = Object.keys(input.questions);
|
|
199
201
|
if (!sameKeys(answers, questionNames)) throw new Error("Response answer keys do not match questions");
|
|
@@ -224,7 +226,6 @@ function validateResponse(value: unknown, input: JevEvaluateInput): JevEvaluatio
|
|
|
224
226
|
}
|
|
225
227
|
if (typeof response.model !== "string" || response.model.length === 0 || response.model.length > 128) throw new Error("Invalid response model");
|
|
226
228
|
const usage = record(response.usage, "response usage");
|
|
227
|
-
if (!sameKeys(usage, ["input_tokens", "output_tokens"])) throw new Error("Invalid response usage");
|
|
228
229
|
return { answers: validated, model: response.model, usage: { inputTokens: safeNumber(usage.input_tokens, "input tokens", true), outputTokens: safeNumber(usage.output_tokens, "output tokens", true) } };
|
|
229
230
|
}
|
|
230
231
|
|
|
@@ -291,7 +292,9 @@ export async function evaluateJev(state: McpExtensionState, value: JevEvaluateIn
|
|
|
291
292
|
const timer = setTimeout(() => { timedOut = true; deadline.abort(new Error("Jev evaluation deadline exceeded")); }, settings.requestTimeoutMs);
|
|
292
293
|
const signal = combineAbortSignals(options.signal, state.owner.signal, deadline.signal);
|
|
293
294
|
try {
|
|
294
|
-
const
|
|
295
|
+
const configured = state.config.settings?.jev;
|
|
296
|
+
const model = resolved.endpoint.origin === OPENROUTER_ORIGIN && (!configured || configured.model === undefined) ? OPENROUTER_DEFAULT_MODEL : settings.model;
|
|
297
|
+
const request = { state: input.state, questions: input.questions, model };
|
|
295
298
|
const raw = await resolved.client.systemOne(request as Parameters<TypeSafeClient["systemOne"]>[0], { ...(signal ? { signal } : {}), timeout: settings.requestTimeoutMs, retry: { maxRetries: settings.maxRetries } });
|
|
296
299
|
try { return { ok: true, data: validateResponse(raw, input) }; }
|
|
297
300
|
catch { return { ok: false, error: { code: "invalid_response", message: "Jev returned an invalid response." } }; }
|
package/jev-key-store.ts
CHANGED
|
@@ -6,6 +6,9 @@ const SYSTEMONE_ENDPOINT_ENV = "SYSTEMONE_ENDPOINT";
|
|
|
6
6
|
const SYSTEMONE_API_KEY_ENV = "SYSTEMONE_API_KEY";
|
|
7
7
|
/** TypeSafe-issued key: honored only for the default endpoint and never sent anywhere else. */
|
|
8
8
|
const LEGACY_TYPESAFE_API_KEY_ENV = "TYPESAFE_API_KEY";
|
|
9
|
+
/** OpenRouter's general-purpose key: honored only for an OpenRouter endpoint and never sent anywhere else. */
|
|
10
|
+
const OPENROUTER_API_KEY_ENV = "OPENROUTER_API_KEY";
|
|
11
|
+
export const OPENROUTER_ORIGIN = "https://openrouter.ai";
|
|
9
12
|
/** Origin recorded in version 1 credential records. */
|
|
10
13
|
export const TYPESAFE_API_ORIGIN = "https://api.typesafe.ai";
|
|
11
14
|
/** Version 1 credential account, still read for the default endpoint. */
|
|
@@ -158,6 +161,10 @@ export function resolveJevCredential(
|
|
|
158
161
|
try { return { status: "present", source: "environment", apiKey: validateApiKey(env[LEGACY_TYPESAFE_API_KEY_ENV]) }; }
|
|
159
162
|
catch { return { status: "unavailable", message: `${LEGACY_TYPESAFE_API_KEY_ENV} is present but invalid.` }; }
|
|
160
163
|
}
|
|
164
|
+
if (target.origin === OPENROUTER_ORIGIN && Object.hasOwn(env, OPENROUTER_API_KEY_ENV)) {
|
|
165
|
+
try { return { status: "present", source: "environment", apiKey: validateApiKey(env[OPENROUTER_API_KEY_ENV]) }; }
|
|
166
|
+
catch { return { status: "unavailable", message: `${OPENROUTER_API_KEY_ENV} is present but invalid.` }; }
|
|
167
|
+
}
|
|
161
168
|
let stored: string | undefined;
|
|
162
169
|
try { stored = readStoredKey(secretStore, target); }
|
|
163
170
|
catch (error) {
|
package/mcp-code.ts
CHANGED
|
@@ -14,6 +14,7 @@ import { isServerInActiveFailureBackoff } from "./failure-backoff.ts";
|
|
|
14
14
|
import type { McpExtensionState } from "./state.ts";
|
|
15
15
|
import { findToolByName, formatSchema, hasSchemaDescriptions } from "./tool-metadata.ts";
|
|
16
16
|
import { renderTsShape } from "./ts-shape.ts";
|
|
17
|
+
import { getObservedOutput, renderOutputShape } from "./output-shape.ts";
|
|
17
18
|
import type { ContentBlock } from "./types.ts";
|
|
18
19
|
|
|
19
20
|
export const DEFAULT_MCP_SCRIPT_TIMEOUT_MS = 30_000;
|
|
@@ -338,6 +339,7 @@ export async function runMcpScript(
|
|
|
338
339
|
if (!tool) continue;
|
|
339
340
|
const inputShape = tool.inputSchema ? renderTsShape(tool.inputSchema) : null;
|
|
340
341
|
const inputTypeScript = inputShape ?? (tool.inputSchema ? formatSchema(tool.inputSchema) : null);
|
|
342
|
+
const observed = tool.resourceUri ? undefined : getObservedOutput(state, server, tool);
|
|
341
343
|
return {
|
|
342
344
|
path: tool.name,
|
|
343
345
|
name: tool.originalName,
|
|
@@ -350,6 +352,14 @@ export async function runMcpScript(
|
|
|
350
352
|
outputSchemaTarget: "data.structuredContent",
|
|
351
353
|
outputSchema: tool.outputSchema,
|
|
352
354
|
} : {}),
|
|
355
|
+
...(tool.annotations ? { annotations: tool.annotations } : {}),
|
|
356
|
+
...(observed ? {
|
|
357
|
+
observedOutput: {
|
|
358
|
+
target: observed.source === "structuredContent" ? "data.structuredContent" : "JSON.parse(data.content[0].text)",
|
|
359
|
+
typeScript: renderOutputShape(observed.shape),
|
|
360
|
+
calls: observed.calls,
|
|
361
|
+
},
|
|
362
|
+
} : {}),
|
|
353
363
|
};
|
|
354
364
|
}
|
|
355
365
|
const suggestions = path ? rankSuggestions(state, path, 5) : [];
|
package/metadata-cache.ts
CHANGED
|
@@ -23,6 +23,7 @@ import type {
|
|
|
23
23
|
import { createToolSelectorCandidateIndex, formatPromptCommandName, formatToolName, getToolNameCandidates, isServerDisabled, isToolAllowed, resolveToolPrefix, resolveUniqueNameOwnership, type ToolPrefix, type ToolSelectorCandidateIndex } from "./types.ts";
|
|
24
24
|
import { resourceNameToToolName } from "./resource-tools.ts";
|
|
25
25
|
import {
|
|
26
|
+
extractToolAnnotations,
|
|
26
27
|
extractToolUiStreamMode,
|
|
27
28
|
interpolateEnvRecord,
|
|
28
29
|
interpolateEnvVars,
|
|
@@ -225,6 +226,7 @@ export function reconstructToolMetadata(
|
|
|
225
226
|
}
|
|
226
227
|
|
|
227
228
|
const name = formatToolName(tool.name, serverName, effectivePrefix);
|
|
229
|
+
const annotations = extractToolAnnotations(tool.annotations);
|
|
228
230
|
metadata.push({
|
|
229
231
|
name,
|
|
230
232
|
originalName: tool.name,
|
|
@@ -234,6 +236,7 @@ export function reconstructToolMetadata(
|
|
|
234
236
|
...(tool.uiResourceUri !== undefined ? { uiResourceUri: tool.uiResourceUri } : {}),
|
|
235
237
|
...(tool.uiVisibility !== undefined ? { uiVisibility: tool.uiVisibility } : {}),
|
|
236
238
|
...(tool.uiStreamMode !== undefined ? { uiStreamMode: tool.uiStreamMode } : {}),
|
|
239
|
+
...(annotations !== undefined ? { annotations } : {}),
|
|
237
240
|
});
|
|
238
241
|
}
|
|
239
242
|
|
|
@@ -289,6 +292,7 @@ export function serializeTools(tools: McpTool[]): CachedTool[] {
|
|
|
289
292
|
const uiResourceUri = tryGetToolUiResourceUri(t);
|
|
290
293
|
const uiVisibility = extractUiToolVisibility(t._meta);
|
|
291
294
|
const uiStreamMode = extractToolUiStreamMode(t._meta);
|
|
295
|
+
const annotations = extractToolAnnotations(t.annotations);
|
|
292
296
|
return {
|
|
293
297
|
name: t.name,
|
|
294
298
|
...(t.description !== undefined ? { description: t.description } : {}),
|
|
@@ -297,6 +301,7 @@ export function serializeTools(tools: McpTool[]): CachedTool[] {
|
|
|
297
301
|
...(uiResourceUri !== undefined ? { uiResourceUri } : {}),
|
|
298
302
|
...(uiVisibility !== undefined ? { uiVisibility } : {}),
|
|
299
303
|
...(uiStreamMode !== undefined ? { uiStreamMode } : {}),
|
|
304
|
+
...(annotations !== undefined ? { annotations } : {}),
|
|
300
305
|
};
|
|
301
306
|
});
|
|
302
307
|
}
|
package/output-shape.ts
ADDED
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import type { McpExtensionState } from "./state.ts";
|
|
2
|
+
import { formatPropertyName } from "./ts-shape.ts";
|
|
3
|
+
import type { ToolMetadata } from "./types.ts";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Session-only output shapes for tools that declare no outputSchema.
|
|
7
|
+
* Field names and broad JSON types only, never values; every dimension is
|
|
8
|
+
* bounded because inference runs on arbitrary upstream payloads after each call.
|
|
9
|
+
*/
|
|
10
|
+
export interface OutputShape {
|
|
11
|
+
type?: "null" | "boolean" | "number" | "string" | "object" | "array";
|
|
12
|
+
properties?: Record<string, OutputShape>;
|
|
13
|
+
required?: string[];
|
|
14
|
+
items?: OutputShape;
|
|
15
|
+
additionalProperties?: OutputShape;
|
|
16
|
+
anyOf?: OutputShape[];
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface ObservedOutput {
|
|
20
|
+
source: "structuredContent" | "jsonText";
|
|
21
|
+
shape: OutputShape;
|
|
22
|
+
calls: number;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const MAX_DEPTH = 6;
|
|
26
|
+
const MAX_ARRAY_SAMPLE = 5;
|
|
27
|
+
// Objects wider than this, or with any key that does not look like a field name, are treated as maps
|
|
28
|
+
// keyed by data (ids, emails, dates), so their keys are not kept.
|
|
29
|
+
const MAX_OBJECT_KEYS = 40;
|
|
30
|
+
const FIELD_NAME = /^[A-Za-z_$][A-Za-z0-9_$]{0,39}$/;
|
|
31
|
+
const MAX_UNION = 4;
|
|
32
|
+
const MAX_NODES_PER_CALL = 1000;
|
|
33
|
+
// Sizes count UTF-16 code units (string length), not bytes.
|
|
34
|
+
const MAX_SHAPE_CHARS = 4 * 1024;
|
|
35
|
+
const MAX_JSON_TEXT_CHARS = 256 * 1024;
|
|
36
|
+
|
|
37
|
+
export function recordObservedOutput(
|
|
38
|
+
state: McpExtensionState,
|
|
39
|
+
serverName: string,
|
|
40
|
+
toolName: string,
|
|
41
|
+
result: Record<string, unknown>,
|
|
42
|
+
): void {
|
|
43
|
+
if (findTool(state, serverName, toolName)?.outputSchema !== undefined) return;
|
|
44
|
+
const observed = readResultValue(result);
|
|
45
|
+
if (!observed) return;
|
|
46
|
+
const definition = state.config.mcpServers[serverName];
|
|
47
|
+
if (!definition) return;
|
|
48
|
+
const shape = inferShape(observed.value, 0, { nodes: MAX_NODES_PER_CALL });
|
|
49
|
+
const observedOutputs = state.observedOutputs ??= new WeakMap();
|
|
50
|
+
let byTool = observedOutputs.get(definition);
|
|
51
|
+
if (!byTool) observedOutputs.set(definition, byTool = new Map());
|
|
52
|
+
const previous = byTool.get(toolName);
|
|
53
|
+
byTool.set(toolName, previous?.source === observed.source
|
|
54
|
+
? { source: observed.source, shape: fitShape(mergeShapes(previous.shape, shape)), calls: previous.calls + 1 }
|
|
55
|
+
: { source: observed.source, shape: fitShape(shape), calls: 1 });
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export function getObservedOutput(
|
|
59
|
+
state: McpExtensionState,
|
|
60
|
+
serverName: string,
|
|
61
|
+
tool: Pick<ToolMetadata, "originalName" | "outputSchema">,
|
|
62
|
+
): ObservedOutput | undefined {
|
|
63
|
+
if (tool.outputSchema !== undefined) return undefined;
|
|
64
|
+
const definition = state.config.mcpServers[serverName];
|
|
65
|
+
const observed = definition && state.observedOutputs?.get(definition)?.get(tool.originalName);
|
|
66
|
+
return observed && !isUnknown(observed.shape) ? observed : undefined;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export function renderOutputShape(shape: OutputShape): string {
|
|
70
|
+
if (shape.anyOf) return shape.anyOf.map(renderOutputShape).join(" | ");
|
|
71
|
+
switch (shape.type) {
|
|
72
|
+
case undefined:
|
|
73
|
+
return "unknown";
|
|
74
|
+
case "object": {
|
|
75
|
+
if (shape.additionalProperties) return `Record<string, ${renderOutputShape(shape.additionalProperties)}>`;
|
|
76
|
+
const required = new Set(shape.required);
|
|
77
|
+
const properties = Object.entries(shape.properties ?? {})
|
|
78
|
+
.map(([name, property]) => `${formatPropertyName(name)}${required.has(name) ? "" : "?"}: ${renderOutputShape(property)};`);
|
|
79
|
+
return properties.length === 0 ? "{}" : `{ ${properties.join(" ")} }`;
|
|
80
|
+
}
|
|
81
|
+
case "array": {
|
|
82
|
+
if (!shape.items) return "unknown[]";
|
|
83
|
+
const item = renderOutputShape(shape.items);
|
|
84
|
+
return item.includes(" | ") ? `(${item})[]` : `${item}[]`;
|
|
85
|
+
}
|
|
86
|
+
default:
|
|
87
|
+
return shape.type;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
function findTool(state: McpExtensionState, serverName: string, toolName: string): ToolMetadata | undefined {
|
|
92
|
+
return state.toolMetadata.get(serverName)?.find(tool => tool.originalName === toolName && !tool.resourceUri);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function readResultValue(result: Record<string, unknown>): { source: ObservedOutput["source"]; value: unknown } | undefined {
|
|
96
|
+
const structured = result.structuredContent;
|
|
97
|
+
if (typeof structured === "object" && structured !== null) return { source: "structuredContent", value: structured };
|
|
98
|
+
const content = result.content;
|
|
99
|
+
if (!Array.isArray(content) || content.length !== 1) return undefined;
|
|
100
|
+
const block = content[0] as { type?: unknown; text?: unknown };
|
|
101
|
+
if (block.type !== "text" || typeof block.text !== "string" || block.text.length > MAX_JSON_TEXT_CHARS) return undefined;
|
|
102
|
+
const text = block.text.trim();
|
|
103
|
+
if (!text.startsWith("{") && !text.startsWith("[")) return undefined;
|
|
104
|
+
try {
|
|
105
|
+
return { source: "jsonText", value: JSON.parse(text) };
|
|
106
|
+
} catch {
|
|
107
|
+
return undefined;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
function inferShape(value: unknown, depth: number, budget: { nodes: number }): OutputShape {
|
|
112
|
+
if (--budget.nodes < 0) return {};
|
|
113
|
+
if (value === null) return { type: "null" };
|
|
114
|
+
if (typeof value === "boolean" || typeof value === "number" || typeof value === "string") return { type: typeof value as "boolean" | "number" | "string" };
|
|
115
|
+
if (typeof value !== "object" || depth >= MAX_DEPTH) return {};
|
|
116
|
+
if (Array.isArray(value)) {
|
|
117
|
+
const items = value.slice(0, MAX_ARRAY_SAMPLE).map(item => inferShape(item, depth + 1, budget));
|
|
118
|
+
return items.length === 0 ? { type: "array" } : { type: "array", items: items.reduce(mergeShapes) };
|
|
119
|
+
}
|
|
120
|
+
const record = value as Record<string, unknown>;
|
|
121
|
+
const keys: string[] = [];
|
|
122
|
+
let isMap = false;
|
|
123
|
+
// Stops at the first key that makes this a map, so a huge object costs O(MAX_OBJECT_KEYS) here.
|
|
124
|
+
for (const key in record) {
|
|
125
|
+
if (!Object.hasOwn(record, key)) continue;
|
|
126
|
+
keys.push(key);
|
|
127
|
+
// An own "__proto__" key would set the prototype of the shape's properties object instead of adding a field.
|
|
128
|
+
if (keys.length > MAX_OBJECT_KEYS || !FIELD_NAME.test(key) || /\d{4}/.test(key) || key === "__proto__") {
|
|
129
|
+
isMap = true;
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
if (isMap) {
|
|
134
|
+
const values = keys.slice(0, MAX_ARRAY_SAMPLE).map(key => inferShape(record[key], depth + 1, budget));
|
|
135
|
+
return { type: "object", additionalProperties: values.reduce(mergeShapes) };
|
|
136
|
+
}
|
|
137
|
+
const properties: Record<string, OutputShape> = {};
|
|
138
|
+
for (const key of keys) properties[key] = inferShape(record[key], depth + 1, budget);
|
|
139
|
+
return { type: "object", properties, required: keys };
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
function isUnknown(shape: OutputShape): boolean {
|
|
143
|
+
return shape.type === undefined && shape.anyOf === undefined;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
function mergeShapes(left: OutputShape, right: OutputShape): OutputShape {
|
|
147
|
+
if (isUnknown(left) || isUnknown(right)) return {};
|
|
148
|
+
const variants = [...(left.anyOf ?? [left])];
|
|
149
|
+
for (const variant of right.anyOf ?? [right]) {
|
|
150
|
+
const index = variants.findIndex(existing => existing.type === variant.type);
|
|
151
|
+
if (index === -1) variants.push(variant);
|
|
152
|
+
else variants[index] = mergeSameType(variants[index]!, variant);
|
|
153
|
+
}
|
|
154
|
+
if (variants.length > MAX_UNION) return {};
|
|
155
|
+
return variants.length === 1 ? variants[0]! : { anyOf: variants };
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
function mergeSameType(left: OutputShape, right: OutputShape): OutputShape {
|
|
159
|
+
if (left.type === "array") {
|
|
160
|
+
const items = left.items && right.items ? mergeShapes(left.items, right.items) : left.items ?? right.items;
|
|
161
|
+
return items ? { type: "array", items } : { type: "array" };
|
|
162
|
+
}
|
|
163
|
+
if (left.type !== "object") return left;
|
|
164
|
+
const keys = new Set([...Object.keys(left.properties ?? {}), ...Object.keys(right.properties ?? {})]);
|
|
165
|
+
if (left.additionalProperties || right.additionalProperties || keys.size > MAX_OBJECT_KEYS) {
|
|
166
|
+
const values = [
|
|
167
|
+
left.additionalProperties,
|
|
168
|
+
right.additionalProperties,
|
|
169
|
+
...Object.values(left.properties ?? {}),
|
|
170
|
+
...Object.values(right.properties ?? {}),
|
|
171
|
+
].filter((shape): shape is OutputShape => shape !== undefined);
|
|
172
|
+
return { type: "object", additionalProperties: values.reduce(mergeShapes) };
|
|
173
|
+
}
|
|
174
|
+
const properties: Record<string, OutputShape> = {};
|
|
175
|
+
for (const key of keys) {
|
|
176
|
+
const leftProperty = left.properties?.[key];
|
|
177
|
+
const rightProperty = right.properties?.[key];
|
|
178
|
+
properties[key] = leftProperty && rightProperty ? mergeShapes(leftProperty, rightProperty) : (leftProperty ?? rightProperty)!;
|
|
179
|
+
}
|
|
180
|
+
const rightRequired = new Set(right.required);
|
|
181
|
+
return { type: "object", properties, required: (left.required ?? []).filter(key => rightRequired.has(key)) };
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/** Drops nesting from the deepest level up until the stored shape fits the size bound. */
|
|
185
|
+
function fitShape(shape: OutputShape): OutputShape {
|
|
186
|
+
for (let depth = MAX_DEPTH; depth > 0; depth--) {
|
|
187
|
+
const pruned = pruneShape(shape, depth);
|
|
188
|
+
if (JSON.stringify(pruned).length <= MAX_SHAPE_CHARS) return pruned;
|
|
189
|
+
}
|
|
190
|
+
return {};
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
function pruneShape(shape: OutputShape, depth: number): OutputShape {
|
|
194
|
+
if (shape.anyOf) {
|
|
195
|
+
const variants = shape.anyOf.map(variant => pruneShape(variant, depth));
|
|
196
|
+
return variants.some(isUnknown) ? {} : { anyOf: variants };
|
|
197
|
+
}
|
|
198
|
+
if (shape.type !== "object" && shape.type !== "array") return shape;
|
|
199
|
+
if (depth === 0) return {};
|
|
200
|
+
const prune = (child: OutputShape) => pruneShape(child, depth - 1);
|
|
201
|
+
return {
|
|
202
|
+
...shape,
|
|
203
|
+
...(shape.properties
|
|
204
|
+
? { properties: Object.fromEntries(Object.entries(shape.properties).map(([key, child]) => [key, prune(child)])) }
|
|
205
|
+
: {}),
|
|
206
|
+
...(shape.items ? { items: prune(shape.items) } : {}),
|
|
207
|
+
...(shape.additionalProperties ? { additionalProperties: prune(shape.additionalProperties) } : {}),
|
|
208
|
+
};
|
|
209
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-mcp-adapter",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.3.0",
|
|
4
4
|
"description": "MCP (Model Context Protocol) adapter extension for Pi coding agent",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"types": "./index.ts",
|
|
@@ -89,6 +89,7 @@
|
|
|
89
89
|
"runtime-owner.ts",
|
|
90
90
|
"tool-metadata.ts",
|
|
91
91
|
"ts-shape.ts",
|
|
92
|
+
"output-shape.ts",
|
|
92
93
|
"search-ranking.ts",
|
|
93
94
|
"tool-approval.ts",
|
|
94
95
|
"tool-parameters.ts",
|
|
@@ -180,7 +181,6 @@
|
|
|
180
181
|
"dependencies": {
|
|
181
182
|
"@modelcontextprotocol/client": "2.0.0",
|
|
182
183
|
"@modelcontextprotocol/core": "2.0.0",
|
|
183
|
-
"@modelcontextprotocol/ext-apps": "^1.2.2",
|
|
184
184
|
"@modelcontextprotocol/ext-tasks": "^0.1.0",
|
|
185
185
|
"@napi-rs/keyring": "^2.1.0",
|
|
186
186
|
"@typesafe-ai/sdk": "0.6.0",
|