@herbertgao/pi-extensions 2026.9.11 → 2026.9.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/THIRD_PARTY_NOTICES.md +1 -1
- package/node_modules/@herbertgao/pi-cc-extensions/package.json +1 -1
- package/node_modules/@herbertgao/pi-subagents/CHANGELOG.md +8 -0
- package/node_modules/@herbertgao/pi-subagents/package.json +1 -1
- package/node_modules/@herbertgao/pi-subagents/src/agent-manager.ts +5 -4
- package/node_modules/@herbertgao/pi-subagents/src/mention-clone.ts +39 -16
- package/node_modules/@juicesharp/rpiv-ask-user-question/package.json +2 -2
- package/node_modules/@narumitw/pi-btw/README.md +21 -4
- package/node_modules/@narumitw/pi-btw/dist/index.ts +1668 -958
- package/node_modules/@narumitw/pi-btw/dist/index.ts.map +4 -4
- package/node_modules/@narumitw/pi-btw/docs/workflows.md +10 -2
- package/node_modules/@narumitw/pi-btw/package.json +1 -1
- package/node_modules/@narumitw/pi-btw/src/btw.ts +17 -79
- package/node_modules/@narumitw/pi-btw/src/conversation-context.ts +74 -0
- package/node_modules/@narumitw/pi-btw/src/fullscreen-ui.ts +196 -7
- package/node_modules/@narumitw/pi-btw/src/main-thread-updates.ts +40 -0
- package/node_modules/@narumitw/pi-btw/src/menu.ts +34 -2
- package/node_modules/@narumitw/pi-btw/src/settings.ts +49 -0
- package/node_modules/@narumitw/pi-btw/src/transcript-pager.ts +9 -1
- package/node_modules/@narumitw/pi-btw/src/workspace-layout.ts +559 -0
- package/node_modules/pi-mcp-adapter/CHANGELOG.md +62 -0
- package/node_modules/pi-mcp-adapter/README.md +75 -7
- package/node_modules/pi-mcp-adapter/bearer-command-resolver.ts +193 -0
- package/node_modules/pi-mcp-adapter/cli.js +56 -5
- package/node_modules/pi-mcp-adapter/commands.ts +96 -5
- package/node_modules/pi-mcp-adapter/config.ts +73 -6
- package/node_modules/pi-mcp-adapter/direct-tool-surface.ts +22 -28
- package/node_modules/pi-mcp-adapter/direct-tools.ts +13 -5
- package/node_modules/pi-mcp-adapter/dist/abort.d.ts +2 -0
- package/node_modules/pi-mcp-adapter/dist/abort.js +36 -0
- package/node_modules/pi-mcp-adapter/dist/abort.js.map +1 -0
- package/node_modules/pi-mcp-adapter/dist/bearer-command-resolver.d.ts +6 -0
- package/node_modules/pi-mcp-adapter/dist/bearer-command-resolver.js +194 -0
- package/node_modules/pi-mcp-adapter/dist/bearer-command-resolver.js.map +1 -0
- package/node_modules/pi-mcp-adapter/dist/config.d.ts +5 -0
- package/node_modules/pi-mcp-adapter/dist/config.js +75 -6
- package/node_modules/pi-mcp-adapter/dist/config.js.map +1 -1
- package/node_modules/pi-mcp-adapter/dist/consent-manager.d.ts +18 -0
- package/node_modules/pi-mcp-adapter/dist/consent-manager.js +88 -0
- package/node_modules/pi-mcp-adapter/dist/consent-manager.js.map +1 -0
- package/node_modules/pi-mcp-adapter/dist/elicitation-handler.d.ts +17 -0
- package/node_modules/pi-mcp-adapter/dist/elicitation-handler.js +316 -0
- package/node_modules/pi-mcp-adapter/dist/elicitation-handler.js.map +1 -0
- package/node_modules/pi-mcp-adapter/dist/errors.d.ts +131 -0
- package/node_modules/pi-mcp-adapter/dist/errors.js +278 -0
- package/node_modules/pi-mcp-adapter/dist/errors.js.map +1 -0
- package/node_modules/pi-mcp-adapter/dist/http-ca.d.ts +8 -0
- package/node_modules/pi-mcp-adapter/dist/http-ca.js +88 -0
- package/node_modules/pi-mcp-adapter/dist/http-ca.js.map +1 -0
- package/node_modules/pi-mcp-adapter/dist/jev-client.d.ts +15 -0
- package/node_modules/pi-mcp-adapter/dist/jev-client.js +340 -0
- package/node_modules/pi-mcp-adapter/dist/jev-client.js.map +1 -0
- package/node_modules/pi-mcp-adapter/dist/jev-contracts.d.ts +77 -0
- package/node_modules/pi-mcp-adapter/dist/jev-contracts.js +2 -0
- package/node_modules/pi-mcp-adapter/dist/jev-contracts.js.map +1 -0
- package/node_modules/pi-mcp-adapter/dist/jev-key-store.d.ts +22 -0
- package/node_modules/pi-mcp-adapter/dist/jev-key-store.js +85 -0
- package/node_modules/pi-mcp-adapter/dist/jev-key-store.js.map +1 -0
- package/node_modules/pi-mcp-adapter/dist/json-schema-validator.d.ts +2 -0
- package/node_modules/pi-mcp-adapter/dist/json-schema-validator.js +55 -0
- package/node_modules/pi-mcp-adapter/dist/json-schema-validator.js.map +1 -0
- package/node_modules/pi-mcp-adapter/dist/lifecycle.d.ts +56 -0
- package/node_modules/pi-mcp-adapter/dist/lifecycle.js +410 -0
- package/node_modules/pi-mcp-adapter/dist/lifecycle.js.map +1 -0
- package/node_modules/pi-mcp-adapter/dist/logger.d.ts +51 -0
- package/node_modules/pi-mcp-adapter/dist/logger.js +131 -0
- package/node_modules/pi-mcp-adapter/dist/logger.js.map +1 -0
- package/node_modules/pi-mcp-adapter/dist/mcp-auth-fetch.d.ts +26 -0
- package/node_modules/pi-mcp-adapter/dist/mcp-auth-fetch.js +103 -0
- package/node_modules/pi-mcp-adapter/dist/mcp-auth-fetch.js.map +1 -0
- package/node_modules/pi-mcp-adapter/dist/mcp-auth-flow.d.ts +118 -0
- package/node_modules/pi-mcp-adapter/dist/mcp-auth-flow.js +1098 -0
- package/node_modules/pi-mcp-adapter/dist/mcp-auth-flow.js.map +1 -0
- package/node_modules/pi-mcp-adapter/dist/mcp-auth.d.ts +168 -0
- package/node_modules/pi-mcp-adapter/dist/mcp-auth.js +1117 -0
- package/node_modules/pi-mcp-adapter/dist/mcp-auth.js.map +1 -0
- package/node_modules/pi-mcp-adapter/dist/mcp-bearer-store.js +7 -140
- package/node_modules/pi-mcp-adapter/dist/mcp-bearer-store.js.map +1 -1
- package/node_modules/pi-mcp-adapter/dist/mcp-callback-server.d.ts +53 -0
- package/node_modules/pi-mcp-adapter/dist/mcp-callback-server.js +441 -0
- package/node_modules/pi-mcp-adapter/dist/mcp-callback-server.js.map +1 -0
- package/node_modules/pi-mcp-adapter/dist/mcp-oauth-provider.d.ts +148 -0
- package/node_modules/pi-mcp-adapter/dist/mcp-oauth-provider.js +689 -0
- package/node_modules/pi-mcp-adapter/dist/mcp-oauth-provider.js.map +1 -0
- package/node_modules/pi-mcp-adapter/dist/mcp-probe.d.ts +6 -0
- package/node_modules/pi-mcp-adapter/dist/mcp-probe.js +166 -0
- package/node_modules/pi-mcp-adapter/dist/mcp-probe.js.map +1 -0
- package/node_modules/pi-mcp-adapter/dist/mcp-tasks.d.ts +102 -0
- package/node_modules/pi-mcp-adapter/dist/mcp-tasks.js +369 -0
- package/node_modules/pi-mcp-adapter/dist/mcp-tasks.js.map +1 -0
- package/node_modules/pi-mcp-adapter/dist/mcp-trace.d.ts +95 -0
- package/node_modules/pi-mcp-adapter/dist/mcp-trace.js +242 -0
- package/node_modules/pi-mcp-adapter/dist/mcp-trace.js.map +1 -0
- package/node_modules/pi-mcp-adapter/dist/metadata-cache.js +2 -11
- package/node_modules/pi-mcp-adapter/dist/metadata-cache.js.map +1 -1
- package/node_modules/pi-mcp-adapter/dist/npx-resolver.d.ts +6 -0
- package/node_modules/pi-mcp-adapter/dist/npx-resolver.js +505 -0
- package/node_modules/pi-mcp-adapter/dist/npx-resolver.js.map +1 -0
- package/node_modules/pi-mcp-adapter/dist/request-headers-command.d.ts +10 -0
- package/node_modules/pi-mcp-adapter/dist/request-headers-command.js +312 -0
- package/node_modules/pi-mcp-adapter/dist/request-headers-command.js.map +1 -0
- package/node_modules/pi-mcp-adapter/dist/runtime-owner.d.ts +13 -0
- package/node_modules/pi-mcp-adapter/dist/runtime-owner.js +97 -0
- package/node_modules/pi-mcp-adapter/dist/runtime-owner.js.map +1 -0
- package/node_modules/pi-mcp-adapter/dist/sampling-handler.d.ts +17 -0
- package/node_modules/pi-mcp-adapter/dist/sampling-handler.js +203 -0
- package/node_modules/pi-mcp-adapter/dist/sampling-handler.js.map +1 -0
- package/node_modules/pi-mcp-adapter/dist/secure-keyring.d.ts +11 -0
- package/node_modules/pi-mcp-adapter/dist/secure-keyring.js +172 -0
- package/node_modules/pi-mcp-adapter/dist/secure-keyring.js.map +1 -0
- package/node_modules/pi-mcp-adapter/dist/server-manager.d.ts +157 -0
- package/node_modules/pi-mcp-adapter/dist/server-manager.js +1743 -0
- package/node_modules/pi-mcp-adapter/dist/server-manager.js.map +1 -0
- package/node_modules/pi-mcp-adapter/dist/session-approvals.d.ts +34 -0
- package/node_modules/pi-mcp-adapter/dist/session-approvals.js +140 -0
- package/node_modules/pi-mcp-adapter/dist/session-approvals.js.map +1 -0
- package/node_modules/pi-mcp-adapter/dist/session-recovery.d.ts +26 -0
- package/node_modules/pi-mcp-adapter/dist/session-recovery.js +142 -0
- package/node_modules/pi-mcp-adapter/dist/session-recovery.js.map +1 -0
- package/node_modules/pi-mcp-adapter/dist/state.d.ts +73 -0
- package/node_modules/pi-mcp-adapter/dist/state.js +2 -0
- package/node_modules/pi-mcp-adapter/dist/state.js.map +1 -0
- package/node_modules/pi-mcp-adapter/dist/types.d.ts +36 -0
- package/node_modules/pi-mcp-adapter/dist/types.js +18 -0
- package/node_modules/pi-mcp-adapter/dist/types.js.map +1 -1
- package/node_modules/pi-mcp-adapter/dist/ui-resource-handler.d.ts +17 -0
- package/node_modules/pi-mcp-adapter/dist/ui-resource-handler.js +219 -0
- package/node_modules/pi-mcp-adapter/dist/ui-resource-handler.js.map +1 -0
- package/node_modules/pi-mcp-adapter/dist/unix-socket-transport.d.ts +15 -0
- package/node_modules/pi-mcp-adapter/dist/unix-socket-transport.js +85 -0
- package/node_modules/pi-mcp-adapter/dist/unix-socket-transport.js.map +1 -0
- package/node_modules/pi-mcp-adapter/dist/utils.d.ts +1 -0
- package/node_modules/pi-mcp-adapter/dist/utils.js +13 -0
- package/node_modules/pi-mcp-adapter/dist/utils.js.map +1 -1
- package/node_modules/pi-mcp-adapter/elicitation-handler.ts +29 -19
- package/node_modules/pi-mcp-adapter/examples/jev-accessibility-loop.mjs +85 -0
- package/node_modules/pi-mcp-adapter/examples/jev-semantic-filter.mjs +34 -0
- package/node_modules/pi-mcp-adapter/index.ts +129 -6
- package/node_modules/pi-mcp-adapter/init.ts +6 -19
- package/node_modules/pi-mcp-adapter/jev-client.ts +273 -0
- package/node_modules/pi-mcp-adapter/jev-contracts.ts +53 -0
- package/node_modules/pi-mcp-adapter/jev-key-store.ts +79 -0
- package/node_modules/pi-mcp-adapter/lifecycle.ts +14 -3
- package/node_modules/pi-mcp-adapter/mcp-bearer-store.ts +7 -142
- package/node_modules/pi-mcp-adapter/mcp-code.ts +119 -11
- package/node_modules/pi-mcp-adapter/mcp-output-guard.ts +4 -0
- package/node_modules/pi-mcp-adapter/mcp-references.ts +5 -3
- package/node_modules/pi-mcp-adapter/mcp-script-worker.mjs +5 -0
- package/node_modules/pi-mcp-adapter/mcp-tasks.ts +467 -0
- package/node_modules/pi-mcp-adapter/metadata-cache.ts +2 -13
- package/node_modules/pi-mcp-adapter/namespace-tools.ts +1 -1
- package/node_modules/pi-mcp-adapter/package.json +17 -9
- package/node_modules/pi-mcp-adapter/proxy-modes.ts +319 -166
- package/node_modules/pi-mcp-adapter/request-headers-command.ts +6 -3
- package/node_modules/pi-mcp-adapter/search-ranking.ts +38 -7
- package/node_modules/pi-mcp-adapter/secure-keyring.ts +170 -0
- package/node_modules/pi-mcp-adapter/semantic-search.ts +186 -0
- package/node_modules/pi-mcp-adapter/server-manager.ts +293 -50
- package/node_modules/pi-mcp-adapter/session-approvals.ts +14 -0
- package/node_modules/pi-mcp-adapter/skills/mcp-scripting/SKILL.md +2 -0
- package/node_modules/pi-mcp-adapter/state.ts +3 -1
- package/node_modules/pi-mcp-adapter/tool-approval.ts +26 -4
- package/node_modules/pi-mcp-adapter/tool-metadata.ts +6 -14
- package/node_modules/pi-mcp-adapter/tool-registrar.ts +8 -6
- package/node_modules/pi-mcp-adapter/tool-result-renderer.ts +4 -1
- package/node_modules/pi-mcp-adapter/types.ts +53 -0
- package/node_modules/pi-mcp-adapter/ui-server.ts +17 -9
- package/node_modules/pi-mcp-adapter/utils.ts +16 -0
- package/node_modules/pi-multi-account/CHANGELOG.md +23 -0
- package/node_modules/pi-multi-account/README.md +38 -11
- package/node_modules/pi-multi-account/index.ts +371 -96
- package/node_modules/pi-multi-account/package.json +5 -4
- package/node_modules/pi-multi-account/provider-payload-stream.ts +36 -28
- package/node_modules/pi-multi-account/usage.ts +31 -2
- package/node_modules/pi-typesafe/README.md +3 -1
- package/node_modules/pi-typesafe/dist/auth.d.ts +10 -3
- package/node_modules/pi-typesafe/dist/auth.js +13 -7
- package/node_modules/pi-typesafe/dist/backends.d.ts +31 -0
- package/node_modules/pi-typesafe/dist/backends.js +33 -0
- package/node_modules/pi-typesafe/dist/client.d.ts +3 -9
- package/node_modules/pi-typesafe/dist/client.js +63 -39
- package/node_modules/pi-typesafe/dist/credentials.d.ts +11 -5
- package/node_modules/pi-typesafe/dist/credentials.js +15 -8
- package/node_modules/pi-typesafe/dist/extension.js +4 -1
- package/node_modules/pi-typesafe/dist/index.d.ts +1 -1
- package/node_modules/pi-typesafe/dist/index.js +1 -1
- package/node_modules/pi-typesafe/dist/login.d.ts +13 -7
- package/node_modules/pi-typesafe/dist/login.js +17 -8
- package/node_modules/pi-typesafe/dist/schema.js +19 -13
- package/node_modules/pi-typesafe/package.json +1 -1
- package/package.json +11 -10
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-manager.js","sourceRoot":"","sources":["../server-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { McpExtensionState } from "./state.ts";
|
|
2
|
+
import type { ToolMetadata } from "./types.ts";
|
|
3
|
+
export declare const MCP_APPROVAL_CUSTOM_TYPE = "mcp-approval-v1";
|
|
4
|
+
export type SessionApprovalEntry = {
|
|
5
|
+
version: 1;
|
|
6
|
+
kind: "tool";
|
|
7
|
+
decision: "allow_for_session";
|
|
8
|
+
serverName: string;
|
|
9
|
+
originalToolName: string;
|
|
10
|
+
definitionHash: string;
|
|
11
|
+
argsHash: string;
|
|
12
|
+
} | {
|
|
13
|
+
version: 1;
|
|
14
|
+
kind: "iframe";
|
|
15
|
+
decision: "allow" | "deny";
|
|
16
|
+
serverName: string;
|
|
17
|
+
};
|
|
18
|
+
export type SessionApprovalWriter = (record: SessionApprovalEntry) => void;
|
|
19
|
+
export declare function computeToolArgumentsHash(args: unknown): string;
|
|
20
|
+
export declare function computeToolDefinitionHash(toolMeta: Pick<ToolMetadata, "originalName" | "inputSchema" | "resourceUri" | "uiResourceUri">): string;
|
|
21
|
+
export declare function makeToolApprovalKey(serverName: string, originalToolName: string, definitionHash: string, argsHash: string): string;
|
|
22
|
+
export declare function getToolApprovalIdentity(serverName: string, toolMeta: Pick<ToolMetadata, "originalName" | "inputSchema" | "resourceUri" | "uiResourceUri">, args: unknown): {
|
|
23
|
+
definitionHash: string;
|
|
24
|
+
argsHash: string;
|
|
25
|
+
cacheKey: string;
|
|
26
|
+
};
|
|
27
|
+
export declare function createSessionApprovalWriter(appendEntry: (customType: string, data?: unknown) => void, canAppend?: (() => boolean) | undefined): SessionApprovalWriter;
|
|
28
|
+
export declare function rememberToolApproval(state: McpExtensionState, serverName: string, toolMeta: Pick<ToolMetadata, "originalName" | "inputSchema" | "resourceUri" | "uiResourceUri">, args: unknown): void;
|
|
29
|
+
/** Bind broad consent to this configured server, not a replacement with the same name. */
|
|
30
|
+
export declare function getServerApprovalIdentity(state: McpExtensionState, serverName: string): {
|
|
31
|
+
definition: import("./types.ts").ServerEntry;
|
|
32
|
+
hash: string;
|
|
33
|
+
} | undefined;
|
|
34
|
+
export declare function restoreSessionApprovalState(state: McpExtensionState, branchEntries: readonly unknown[]): void;
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { logger } from "./logger.js";
|
|
3
|
+
import { stableStringify } from "./utils.js";
|
|
4
|
+
export const MCP_APPROVAL_CUSTOM_TYPE = "mcp-approval-v1";
|
|
5
|
+
const TOOL_APPROVAL_KEYS = [
|
|
6
|
+
"version",
|
|
7
|
+
"kind",
|
|
8
|
+
"decision",
|
|
9
|
+
"serverName",
|
|
10
|
+
"originalToolName",
|
|
11
|
+
"definitionHash",
|
|
12
|
+
"argsHash",
|
|
13
|
+
];
|
|
14
|
+
const IFRAME_APPROVAL_KEYS = ["version", "kind", "decision", "serverName"];
|
|
15
|
+
const SHA256_HEX = /^[0-9a-f]{64}$/;
|
|
16
|
+
export function computeToolArgumentsHash(args) {
|
|
17
|
+
return createHash("sha256").update(stableStringify(args ?? {})).digest("hex");
|
|
18
|
+
}
|
|
19
|
+
export function computeToolDefinitionHash(toolMeta) {
|
|
20
|
+
return createHash("sha256").update(stableStringify({
|
|
21
|
+
originalName: toolMeta.originalName,
|
|
22
|
+
inputSchema: toolMeta.inputSchema ?? null,
|
|
23
|
+
resourceUri: toolMeta.resourceUri ?? null,
|
|
24
|
+
uiResourceUri: toolMeta.uiResourceUri ?? null,
|
|
25
|
+
})).digest("hex");
|
|
26
|
+
}
|
|
27
|
+
export function makeToolApprovalKey(serverName, originalToolName, definitionHash, argsHash) {
|
|
28
|
+
return `${serverName}\u0000${originalToolName}\u0000${definitionHash}\u0000${argsHash}`;
|
|
29
|
+
}
|
|
30
|
+
export function getToolApprovalIdentity(serverName, toolMeta, args) {
|
|
31
|
+
const definitionHash = computeToolDefinitionHash(toolMeta);
|
|
32
|
+
const argsHash = computeToolArgumentsHash(args);
|
|
33
|
+
return {
|
|
34
|
+
definitionHash,
|
|
35
|
+
argsHash,
|
|
36
|
+
cacheKey: makeToolApprovalKey(serverName, toolMeta.originalName, definitionHash, argsHash),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function isRecord(value) {
|
|
40
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
41
|
+
}
|
|
42
|
+
function hasExactKeys(value, keys) {
|
|
43
|
+
const actualKeys = Object.keys(value);
|
|
44
|
+
return actualKeys.length === keys.length && keys.every(key => Object.hasOwn(value, key));
|
|
45
|
+
}
|
|
46
|
+
function isNonEmptyString(value) {
|
|
47
|
+
return typeof value === "string" && value.length > 0;
|
|
48
|
+
}
|
|
49
|
+
function isSha256(value) {
|
|
50
|
+
return typeof value === "string" && SHA256_HEX.test(value);
|
|
51
|
+
}
|
|
52
|
+
function isSessionApprovalEntry(value) {
|
|
53
|
+
if (!isRecord(value) || value.version !== 1 || !isNonEmptyString(value.serverName))
|
|
54
|
+
return false;
|
|
55
|
+
if (value.kind === "tool") {
|
|
56
|
+
return hasExactKeys(value, TOOL_APPROVAL_KEYS)
|
|
57
|
+
&& value.decision === "allow_for_session"
|
|
58
|
+
&& isNonEmptyString(value.originalToolName)
|
|
59
|
+
&& isSha256(value.definitionHash)
|
|
60
|
+
&& isSha256(value.argsHash);
|
|
61
|
+
}
|
|
62
|
+
if (value.kind === "iframe") {
|
|
63
|
+
return hasExactKeys(value, IFRAME_APPROVAL_KEYS)
|
|
64
|
+
&& (value.decision === "allow" || value.decision === "deny");
|
|
65
|
+
}
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
function isApprovalCustomEntry(entry) {
|
|
69
|
+
return isRecord(entry)
|
|
70
|
+
&& entry.type === "custom"
|
|
71
|
+
&& entry.customType === MCP_APPROVAL_CUSTOM_TYPE;
|
|
72
|
+
}
|
|
73
|
+
export function createSessionApprovalWriter(appendEntry, canAppend = undefined) {
|
|
74
|
+
return (record) => {
|
|
75
|
+
if (canAppend && !canAppend())
|
|
76
|
+
return;
|
|
77
|
+
try {
|
|
78
|
+
appendEntry(MCP_APPROVAL_CUSTOM_TYPE, record);
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
82
|
+
logger.debug(`MCP: failed to persist session approval: ${detail}`);
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
export function rememberToolApproval(state, serverName, toolMeta, args) {
|
|
87
|
+
const { definitionHash, argsHash, cacheKey } = getToolApprovalIdentity(serverName, toolMeta, args);
|
|
88
|
+
const approvedToolCalls = state.approvedToolCalls ??= new Map();
|
|
89
|
+
if (approvedToolCalls.has(cacheKey))
|
|
90
|
+
return;
|
|
91
|
+
approvedToolCalls.set(cacheKey, true);
|
|
92
|
+
const record = {
|
|
93
|
+
version: 1,
|
|
94
|
+
kind: "tool",
|
|
95
|
+
decision: "allow_for_session",
|
|
96
|
+
serverName,
|
|
97
|
+
originalToolName: toolMeta.originalName,
|
|
98
|
+
definitionHash,
|
|
99
|
+
argsHash,
|
|
100
|
+
};
|
|
101
|
+
try {
|
|
102
|
+
state.persistSessionApproval?.(record);
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
106
|
+
logger.debug(`MCP: session approval persistence callback failed: ${detail}`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/** Bind broad consent to this configured server, not a replacement with the same name. */
|
|
110
|
+
export function getServerApprovalIdentity(state, serverName) {
|
|
111
|
+
if (!Object.hasOwn(state.config.mcpServers, serverName))
|
|
112
|
+
return undefined;
|
|
113
|
+
const definition = state.config.mcpServers[serverName];
|
|
114
|
+
if (!definition)
|
|
115
|
+
return undefined;
|
|
116
|
+
return {
|
|
117
|
+
definition,
|
|
118
|
+
hash: createHash("sha256").update(stableStringify(definition)).digest("hex"),
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
export function restoreSessionApprovalState(state, branchEntries) {
|
|
122
|
+
const approvedToolCalls = state.approvedToolCalls ??= new Map();
|
|
123
|
+
approvedToolCalls.clear();
|
|
124
|
+
// Replace the map so an approval dialog opened on the old branch cannot grant
|
|
125
|
+
// server-wide authority after navigation, resume, or session replacement.
|
|
126
|
+
state.approvedServers = new Map();
|
|
127
|
+
state.consentManager.clear();
|
|
128
|
+
for (const entry of branchEntries) {
|
|
129
|
+
if (!isApprovalCustomEntry(entry))
|
|
130
|
+
continue;
|
|
131
|
+
if (!isSessionApprovalEntry(entry.data))
|
|
132
|
+
continue;
|
|
133
|
+
if (entry.data.kind === "tool") {
|
|
134
|
+
approvedToolCalls.set(makeToolApprovalKey(entry.data.serverName, entry.data.originalToolName, entry.data.definitionHash, entry.data.argsHash), true);
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
state.consentManager.restoreDecision(entry.data.serverName, entry.data.decision === "allow");
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=session-approvals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-approvals.js","sourceRoot":"","sources":["../session-approvals.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type McpConfig } from "./types.ts";
|
|
2
|
+
import type { McpServerManager, ServerConnection } from "./server-manager.ts";
|
|
3
|
+
export declare function isTerminatedSession(err: unknown, hadSessionId: boolean): boolean;
|
|
4
|
+
export declare class SessionRecoveryAuthRequiredError extends Error {
|
|
5
|
+
readonly serverName: string;
|
|
6
|
+
readonly authMessage?: string | undefined;
|
|
7
|
+
constructor(serverName: string, authMessage?: string | undefined);
|
|
8
|
+
}
|
|
9
|
+
export interface SessionRecoveryDeps {
|
|
10
|
+
manager: McpServerManager;
|
|
11
|
+
config: McpConfig;
|
|
12
|
+
signal?: AbortSignal;
|
|
13
|
+
onNeedsAuth?: (serverName: string) => Promise<ServerConnection | undefined>;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Runs `fn` against the current connection for `serverName`. If it fails
|
|
17
|
+
* with a terminated Streamable HTTP session (see `isTerminatedSession`),
|
|
18
|
+
* reconnects exactly once via `McpServerManager.reconnect` (single-flight,
|
|
19
|
+
* identity-guarded — see server-manager.ts) and retries `fn` exactly once
|
|
20
|
+
* against the fresh connection.
|
|
21
|
+
*
|
|
22
|
+
* Any other failure — including a second failure after reconnecting, or the
|
|
23
|
+
* server having been removed from config in the meantime — propagates
|
|
24
|
+
* unchanged through the caller's existing error handling.
|
|
25
|
+
*/
|
|
26
|
+
export declare function withSessionRecovery<T>(deps: SessionRecoveryDeps, serverName: string, fn: (conn: ServerConnection) => Promise<T>): Promise<T>;
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
// session-recovery.ts
|
|
2
|
+
//
|
|
3
|
+
// Streamable HTTP session recovery.
|
|
4
|
+
//
|
|
5
|
+
// Per the MCP spec (Streamable HTTP transport):
|
|
6
|
+
// "When a client receives HTTP 404 in response to a request containing an
|
|
7
|
+
// Mcp-Session-Id, it MUST start a new session by sending a new
|
|
8
|
+
// InitializeRequest without a session ID attached."
|
|
9
|
+
//
|
|
10
|
+
// A 404 for a request that carried a session ID is therefore the spec's own
|
|
11
|
+
// definition of "this session no longer exists" (e.g. the remote server
|
|
12
|
+
// process restarted and lost its in-memory session table). Because the spec
|
|
13
|
+
// requires the server to reject the request *before* processing it, retrying
|
|
14
|
+
// the same call against a freshly initialized session cannot double-execute
|
|
15
|
+
// the original request.
|
|
16
|
+
//
|
|
17
|
+
// This module intentionally does NOT:
|
|
18
|
+
// - match broad error messages without a prior session id
|
|
19
|
+
// - match generic HTTP 400 responses, which are ambiguous and can mean
|
|
20
|
+
// many things other than "your session is gone"
|
|
21
|
+
// - treat generic -32000/ConnectionClosed errors as session expiry
|
|
22
|
+
// - treat AbortError/cancellation as a session failure
|
|
23
|
+
import { ProtocolError, SdkHttpError, UnauthorizedError } from "@modelcontextprotocol/client";
|
|
24
|
+
import { logger } from "./logger.js";
|
|
25
|
+
import { throwIfAborted } from "./abort.js";
|
|
26
|
+
import { isServerDisabled } from "./types.js";
|
|
27
|
+
import { supportsOAuth } from "./mcp-auth-flow.js";
|
|
28
|
+
import { invalidateAuthEntryCache } from "./mcp-auth.js";
|
|
29
|
+
/**
|
|
30
|
+
* True when `err` is a stale Streamable HTTP session signal for a request
|
|
31
|
+
* sent while carrying an `Mcp-Session-Id`: the spec's 404 transport
|
|
32
|
+
* response, or the narrowly-known `-32000 Server not initialized` protocol
|
|
33
|
+
* gate response some servers emit before dispatching to a handler.
|
|
34
|
+
*
|
|
35
|
+
* `hadSessionId` must reflect the transport's session id from *before* the
|
|
36
|
+
* call that produced `err` was made. Callers must capture it before the call
|
|
37
|
+
* rather than rely on catch-time transport state.
|
|
38
|
+
*/
|
|
39
|
+
const CONNECTION_CLOSED_PROTOCOL_CODE = -32000;
|
|
40
|
+
const SERVER_NOT_INITIALIZED_MCP_MESSAGES = new Set([
|
|
41
|
+
"Server not initialized",
|
|
42
|
+
"Bad Request: Server not initialized",
|
|
43
|
+
]);
|
|
44
|
+
export function isTerminatedSession(err, hadSessionId) {
|
|
45
|
+
if (!hadSessionId)
|
|
46
|
+
return false;
|
|
47
|
+
if (err instanceof SdkHttpError) {
|
|
48
|
+
return err.status === 404
|
|
49
|
+
|| (err.status === 400
|
|
50
|
+
&& /"code"\s*:\s*-32000/.test(err.message)
|
|
51
|
+
&& /"message"\s*:\s*"Bad Request: Server not initialized"/.test(err.message));
|
|
52
|
+
}
|
|
53
|
+
return err instanceof ProtocolError
|
|
54
|
+
&& err.code === CONNECTION_CLOSED_PROTOCOL_CODE
|
|
55
|
+
&& SERVER_NOT_INITIALIZED_MCP_MESSAGES.has(err.message);
|
|
56
|
+
}
|
|
57
|
+
function hasSessionId(connection) {
|
|
58
|
+
// Only StreamableHTTPClientTransport exposes `sessionId`; stdio/SSE
|
|
59
|
+
// transports (and test doubles that omit `transport` entirely) simply
|
|
60
|
+
// read as `undefined` here.
|
|
61
|
+
const transport = connection.transport;
|
|
62
|
+
return transport?.sessionId != null;
|
|
63
|
+
}
|
|
64
|
+
export class SessionRecoveryAuthRequiredError extends Error {
|
|
65
|
+
serverName;
|
|
66
|
+
authMessage;
|
|
67
|
+
constructor(serverName, authMessage) {
|
|
68
|
+
super(authMessage ?? `MCP server "${serverName}" requires OAuth authentication after reconnect.`);
|
|
69
|
+
this.serverName = serverName;
|
|
70
|
+
this.authMessage = authMessage;
|
|
71
|
+
this.name = "SessionRecoveryAuthRequiredError";
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Runs `fn` against the current connection for `serverName`. If it fails
|
|
76
|
+
* with a terminated Streamable HTTP session (see `isTerminatedSession`),
|
|
77
|
+
* reconnects exactly once via `McpServerManager.reconnect` (single-flight,
|
|
78
|
+
* identity-guarded — see server-manager.ts) and retries `fn` exactly once
|
|
79
|
+
* against the fresh connection.
|
|
80
|
+
*
|
|
81
|
+
* Any other failure — including a second failure after reconnecting, or the
|
|
82
|
+
* server having been removed from config in the meantime — propagates
|
|
83
|
+
* unchanged through the caller's existing error handling.
|
|
84
|
+
*/
|
|
85
|
+
export async function withSessionRecovery(deps, serverName, fn) {
|
|
86
|
+
if (isServerDisabled(deps.config.mcpServers[serverName])) {
|
|
87
|
+
throw new Error(`MCP server "${serverName}" is disabled`);
|
|
88
|
+
}
|
|
89
|
+
const connection = deps.manager.getConnection(serverName);
|
|
90
|
+
if (!connection) {
|
|
91
|
+
throw new Error(`Server "${serverName}" is not connected`);
|
|
92
|
+
}
|
|
93
|
+
const hadSessionId = hasSessionId(connection);
|
|
94
|
+
try {
|
|
95
|
+
return await fn(connection);
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
const definition = deps.config.mcpServers[serverName];
|
|
99
|
+
if (definition && supportsOAuth(definition)
|
|
100
|
+
&& (err instanceof UnauthorizedError || (err instanceof SdkHttpError && err.status === 401))) {
|
|
101
|
+
invalidateAuthEntryCache(serverName);
|
|
102
|
+
}
|
|
103
|
+
if (!isTerminatedSession(err, hadSessionId)) {
|
|
104
|
+
throw err;
|
|
105
|
+
}
|
|
106
|
+
// Re-read the live definition rather than reusing the stale
|
|
107
|
+
// connection's definition, in case config changed since connect. If the
|
|
108
|
+
// server was removed from config in the meantime there is nothing to
|
|
109
|
+
// reconnect to, so surface the original error.
|
|
110
|
+
if (!definition) {
|
|
111
|
+
throw err;
|
|
112
|
+
}
|
|
113
|
+
throwIfAborted(deps.signal);
|
|
114
|
+
logger.debug(`MCP session for "${serverName}" expired; reconnecting`, {
|
|
115
|
+
server: serverName,
|
|
116
|
+
});
|
|
117
|
+
let freshConnection = deps.signal
|
|
118
|
+
? await deps.manager.reconnect(serverName, definition, connection, deps.signal)
|
|
119
|
+
: await deps.manager.reconnect(serverName, definition, connection);
|
|
120
|
+
throwIfAborted(deps.signal);
|
|
121
|
+
if (freshConnection.status === "needs-auth") {
|
|
122
|
+
freshConnection = await deps.onNeedsAuth?.(serverName) ?? freshConnection;
|
|
123
|
+
throwIfAborted(deps.signal);
|
|
124
|
+
}
|
|
125
|
+
if (freshConnection.status === "needs-auth") {
|
|
126
|
+
throw new SessionRecoveryAuthRequiredError(serverName);
|
|
127
|
+
}
|
|
128
|
+
if (freshConnection.status !== "connected") {
|
|
129
|
+
throw err;
|
|
130
|
+
}
|
|
131
|
+
try {
|
|
132
|
+
deps.manager.publishMetadataChanged(serverName, freshConnection, "session-reconnect");
|
|
133
|
+
}
|
|
134
|
+
catch (publicationError) {
|
|
135
|
+
const message = publicationError instanceof Error ? publicationError.message : String(publicationError);
|
|
136
|
+
logger.debug(`MCP metadata publication after reconnect failed for "${serverName}": ${message}`);
|
|
137
|
+
}
|
|
138
|
+
throwIfAborted(deps.signal);
|
|
139
|
+
return fn(freshConnection);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=session-recovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-recovery.js","sourceRoot":"","sources":["../session-recovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent";
|
|
2
|
+
import type { ConsentManager } from "./consent-manager.ts";
|
|
3
|
+
import type { McpLifecycleManager } from "./lifecycle.ts";
|
|
4
|
+
import type { McpServerManager } from "./server-manager.ts";
|
|
5
|
+
import type { AuthStorageOptions } from "./mcp-auth.ts";
|
|
6
|
+
import type { ServerDefinition, ToolMetadata, PromptMetadata, McpConfig, UiSessionMessages, UiStreamSummary, McpStatusEventBus, UiServerHandle } from "./types.ts";
|
|
7
|
+
import type { UiResourceHandler } from "./ui-resource-handler.ts";
|
|
8
|
+
import type { McpRuntimeOwner } from "./runtime-owner.ts";
|
|
9
|
+
import type { McpOAuthRuntime } from "./mcp-auth-flow.ts";
|
|
10
|
+
import type { SessionApprovalWriter } from "./session-approvals.ts";
|
|
11
|
+
export interface CompletedUiSession {
|
|
12
|
+
serverName: string;
|
|
13
|
+
toolName: string;
|
|
14
|
+
completedAt: Date;
|
|
15
|
+
reason: string;
|
|
16
|
+
messages: UiSessionMessages;
|
|
17
|
+
stream?: UiStreamSummary;
|
|
18
|
+
}
|
|
19
|
+
export type SendMessageFn = (message: {
|
|
20
|
+
customType: string;
|
|
21
|
+
content: Array<{
|
|
22
|
+
type: "text";
|
|
23
|
+
text: string;
|
|
24
|
+
}>;
|
|
25
|
+
display?: string;
|
|
26
|
+
details?: unknown;
|
|
27
|
+
}, options?: {
|
|
28
|
+
triggerTurn?: boolean;
|
|
29
|
+
}) => void;
|
|
30
|
+
export interface McpExtensionState {
|
|
31
|
+
owner: McpRuntimeOwner;
|
|
32
|
+
manager: McpServerManager;
|
|
33
|
+
lifecycle: McpLifecycleManager;
|
|
34
|
+
toolMetadata: Map<string, ToolMetadata[]>;
|
|
35
|
+
/** Number of tools currently registered directly with Pi, by server. */
|
|
36
|
+
directToolCounts: Map<string, number>;
|
|
37
|
+
/** Resource counts retained separately because tool metadata includes resource tools. */
|
|
38
|
+
resourceCounts: Map<string, number>;
|
|
39
|
+
promptMetadata: Map<string, PromptMetadata[]>;
|
|
40
|
+
/** Servers whose prompt inventory came from successful live discovery. */
|
|
41
|
+
promptMetadataLive: Set<string>;
|
|
42
|
+
serverInstructions: Map<string, string>;
|
|
43
|
+
config: McpConfig;
|
|
44
|
+
programmaticConfig?: boolean;
|
|
45
|
+
/** Install validations must not publish durable cache entries before config persistence. */
|
|
46
|
+
provisionalInstalls?: Set<string>;
|
|
47
|
+
oauthRuntime: McpOAuthRuntime;
|
|
48
|
+
authStorageOptions: AuthStorageOptions;
|
|
49
|
+
failureTracker: Map<string, number>;
|
|
50
|
+
failureMessages: Map<string, string>;
|
|
51
|
+
/** Session-only approvals keyed by server, tool definition, and arguments. */
|
|
52
|
+
approvedToolCalls: Map<string, true>;
|
|
53
|
+
/** Runtime-only server grants. Never persisted or restored from session entries. */
|
|
54
|
+
approvedServers?: Map<string, {
|
|
55
|
+
definition: ServerDefinition;
|
|
56
|
+
hash: string;
|
|
57
|
+
}>;
|
|
58
|
+
/** Optional active-session sink for approval decisions. */
|
|
59
|
+
persistSessionApproval?: SessionApprovalWriter;
|
|
60
|
+
/** Session manager used to reject stale session-tree contexts. */
|
|
61
|
+
sessionManager?: ExtensionContext["sessionManager"];
|
|
62
|
+
/** Shared event bus used by permission extensions to broker MCP approvals. */
|
|
63
|
+
approvalEvents?: ExtensionAPI["events"];
|
|
64
|
+
uiResourceHandler: UiResourceHandler;
|
|
65
|
+
consentManager: ConsentManager;
|
|
66
|
+
uiServer: UiServerHandle | null;
|
|
67
|
+
completedUiSessions: CompletedUiSession[];
|
|
68
|
+
openBrowser: (url: string) => Promise<void>;
|
|
69
|
+
ui?: ExtensionContext["ui"];
|
|
70
|
+
sendMessage?: SendMessageFn;
|
|
71
|
+
onToolMetadataUpdated?: (serverName: string, reason: string) => void | Promise<void>;
|
|
72
|
+
statusEvents?: McpStatusEventBus;
|
|
73
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../state.ts"],"names":[],"mappings":""}
|