@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.
Files changed (192) hide show
  1. package/README.md +4 -4
  2. package/THIRD_PARTY_NOTICES.md +1 -1
  3. package/node_modules/@herbertgao/pi-cc-extensions/package.json +1 -1
  4. package/node_modules/@herbertgao/pi-subagents/CHANGELOG.md +8 -0
  5. package/node_modules/@herbertgao/pi-subagents/package.json +1 -1
  6. package/node_modules/@herbertgao/pi-subagents/src/agent-manager.ts +5 -4
  7. package/node_modules/@herbertgao/pi-subagents/src/mention-clone.ts +39 -16
  8. package/node_modules/@juicesharp/rpiv-ask-user-question/package.json +2 -2
  9. package/node_modules/@narumitw/pi-btw/README.md +21 -4
  10. package/node_modules/@narumitw/pi-btw/dist/index.ts +1668 -958
  11. package/node_modules/@narumitw/pi-btw/dist/index.ts.map +4 -4
  12. package/node_modules/@narumitw/pi-btw/docs/workflows.md +10 -2
  13. package/node_modules/@narumitw/pi-btw/package.json +1 -1
  14. package/node_modules/@narumitw/pi-btw/src/btw.ts +17 -79
  15. package/node_modules/@narumitw/pi-btw/src/conversation-context.ts +74 -0
  16. package/node_modules/@narumitw/pi-btw/src/fullscreen-ui.ts +196 -7
  17. package/node_modules/@narumitw/pi-btw/src/main-thread-updates.ts +40 -0
  18. package/node_modules/@narumitw/pi-btw/src/menu.ts +34 -2
  19. package/node_modules/@narumitw/pi-btw/src/settings.ts +49 -0
  20. package/node_modules/@narumitw/pi-btw/src/transcript-pager.ts +9 -1
  21. package/node_modules/@narumitw/pi-btw/src/workspace-layout.ts +559 -0
  22. package/node_modules/pi-mcp-adapter/CHANGELOG.md +62 -0
  23. package/node_modules/pi-mcp-adapter/README.md +75 -7
  24. package/node_modules/pi-mcp-adapter/bearer-command-resolver.ts +193 -0
  25. package/node_modules/pi-mcp-adapter/cli.js +56 -5
  26. package/node_modules/pi-mcp-adapter/commands.ts +96 -5
  27. package/node_modules/pi-mcp-adapter/config.ts +73 -6
  28. package/node_modules/pi-mcp-adapter/direct-tool-surface.ts +22 -28
  29. package/node_modules/pi-mcp-adapter/direct-tools.ts +13 -5
  30. package/node_modules/pi-mcp-adapter/dist/abort.d.ts +2 -0
  31. package/node_modules/pi-mcp-adapter/dist/abort.js +36 -0
  32. package/node_modules/pi-mcp-adapter/dist/abort.js.map +1 -0
  33. package/node_modules/pi-mcp-adapter/dist/bearer-command-resolver.d.ts +6 -0
  34. package/node_modules/pi-mcp-adapter/dist/bearer-command-resolver.js +194 -0
  35. package/node_modules/pi-mcp-adapter/dist/bearer-command-resolver.js.map +1 -0
  36. package/node_modules/pi-mcp-adapter/dist/config.d.ts +5 -0
  37. package/node_modules/pi-mcp-adapter/dist/config.js +75 -6
  38. package/node_modules/pi-mcp-adapter/dist/config.js.map +1 -1
  39. package/node_modules/pi-mcp-adapter/dist/consent-manager.d.ts +18 -0
  40. package/node_modules/pi-mcp-adapter/dist/consent-manager.js +88 -0
  41. package/node_modules/pi-mcp-adapter/dist/consent-manager.js.map +1 -0
  42. package/node_modules/pi-mcp-adapter/dist/elicitation-handler.d.ts +17 -0
  43. package/node_modules/pi-mcp-adapter/dist/elicitation-handler.js +316 -0
  44. package/node_modules/pi-mcp-adapter/dist/elicitation-handler.js.map +1 -0
  45. package/node_modules/pi-mcp-adapter/dist/errors.d.ts +131 -0
  46. package/node_modules/pi-mcp-adapter/dist/errors.js +278 -0
  47. package/node_modules/pi-mcp-adapter/dist/errors.js.map +1 -0
  48. package/node_modules/pi-mcp-adapter/dist/http-ca.d.ts +8 -0
  49. package/node_modules/pi-mcp-adapter/dist/http-ca.js +88 -0
  50. package/node_modules/pi-mcp-adapter/dist/http-ca.js.map +1 -0
  51. package/node_modules/pi-mcp-adapter/dist/jev-client.d.ts +15 -0
  52. package/node_modules/pi-mcp-adapter/dist/jev-client.js +340 -0
  53. package/node_modules/pi-mcp-adapter/dist/jev-client.js.map +1 -0
  54. package/node_modules/pi-mcp-adapter/dist/jev-contracts.d.ts +77 -0
  55. package/node_modules/pi-mcp-adapter/dist/jev-contracts.js +2 -0
  56. package/node_modules/pi-mcp-adapter/dist/jev-contracts.js.map +1 -0
  57. package/node_modules/pi-mcp-adapter/dist/jev-key-store.d.ts +22 -0
  58. package/node_modules/pi-mcp-adapter/dist/jev-key-store.js +85 -0
  59. package/node_modules/pi-mcp-adapter/dist/jev-key-store.js.map +1 -0
  60. package/node_modules/pi-mcp-adapter/dist/json-schema-validator.d.ts +2 -0
  61. package/node_modules/pi-mcp-adapter/dist/json-schema-validator.js +55 -0
  62. package/node_modules/pi-mcp-adapter/dist/json-schema-validator.js.map +1 -0
  63. package/node_modules/pi-mcp-adapter/dist/lifecycle.d.ts +56 -0
  64. package/node_modules/pi-mcp-adapter/dist/lifecycle.js +410 -0
  65. package/node_modules/pi-mcp-adapter/dist/lifecycle.js.map +1 -0
  66. package/node_modules/pi-mcp-adapter/dist/logger.d.ts +51 -0
  67. package/node_modules/pi-mcp-adapter/dist/logger.js +131 -0
  68. package/node_modules/pi-mcp-adapter/dist/logger.js.map +1 -0
  69. package/node_modules/pi-mcp-adapter/dist/mcp-auth-fetch.d.ts +26 -0
  70. package/node_modules/pi-mcp-adapter/dist/mcp-auth-fetch.js +103 -0
  71. package/node_modules/pi-mcp-adapter/dist/mcp-auth-fetch.js.map +1 -0
  72. package/node_modules/pi-mcp-adapter/dist/mcp-auth-flow.d.ts +118 -0
  73. package/node_modules/pi-mcp-adapter/dist/mcp-auth-flow.js +1098 -0
  74. package/node_modules/pi-mcp-adapter/dist/mcp-auth-flow.js.map +1 -0
  75. package/node_modules/pi-mcp-adapter/dist/mcp-auth.d.ts +168 -0
  76. package/node_modules/pi-mcp-adapter/dist/mcp-auth.js +1117 -0
  77. package/node_modules/pi-mcp-adapter/dist/mcp-auth.js.map +1 -0
  78. package/node_modules/pi-mcp-adapter/dist/mcp-bearer-store.js +7 -140
  79. package/node_modules/pi-mcp-adapter/dist/mcp-bearer-store.js.map +1 -1
  80. package/node_modules/pi-mcp-adapter/dist/mcp-callback-server.d.ts +53 -0
  81. package/node_modules/pi-mcp-adapter/dist/mcp-callback-server.js +441 -0
  82. package/node_modules/pi-mcp-adapter/dist/mcp-callback-server.js.map +1 -0
  83. package/node_modules/pi-mcp-adapter/dist/mcp-oauth-provider.d.ts +148 -0
  84. package/node_modules/pi-mcp-adapter/dist/mcp-oauth-provider.js +689 -0
  85. package/node_modules/pi-mcp-adapter/dist/mcp-oauth-provider.js.map +1 -0
  86. package/node_modules/pi-mcp-adapter/dist/mcp-probe.d.ts +6 -0
  87. package/node_modules/pi-mcp-adapter/dist/mcp-probe.js +166 -0
  88. package/node_modules/pi-mcp-adapter/dist/mcp-probe.js.map +1 -0
  89. package/node_modules/pi-mcp-adapter/dist/mcp-tasks.d.ts +102 -0
  90. package/node_modules/pi-mcp-adapter/dist/mcp-tasks.js +369 -0
  91. package/node_modules/pi-mcp-adapter/dist/mcp-tasks.js.map +1 -0
  92. package/node_modules/pi-mcp-adapter/dist/mcp-trace.d.ts +95 -0
  93. package/node_modules/pi-mcp-adapter/dist/mcp-trace.js +242 -0
  94. package/node_modules/pi-mcp-adapter/dist/mcp-trace.js.map +1 -0
  95. package/node_modules/pi-mcp-adapter/dist/metadata-cache.js +2 -11
  96. package/node_modules/pi-mcp-adapter/dist/metadata-cache.js.map +1 -1
  97. package/node_modules/pi-mcp-adapter/dist/npx-resolver.d.ts +6 -0
  98. package/node_modules/pi-mcp-adapter/dist/npx-resolver.js +505 -0
  99. package/node_modules/pi-mcp-adapter/dist/npx-resolver.js.map +1 -0
  100. package/node_modules/pi-mcp-adapter/dist/request-headers-command.d.ts +10 -0
  101. package/node_modules/pi-mcp-adapter/dist/request-headers-command.js +312 -0
  102. package/node_modules/pi-mcp-adapter/dist/request-headers-command.js.map +1 -0
  103. package/node_modules/pi-mcp-adapter/dist/runtime-owner.d.ts +13 -0
  104. package/node_modules/pi-mcp-adapter/dist/runtime-owner.js +97 -0
  105. package/node_modules/pi-mcp-adapter/dist/runtime-owner.js.map +1 -0
  106. package/node_modules/pi-mcp-adapter/dist/sampling-handler.d.ts +17 -0
  107. package/node_modules/pi-mcp-adapter/dist/sampling-handler.js +203 -0
  108. package/node_modules/pi-mcp-adapter/dist/sampling-handler.js.map +1 -0
  109. package/node_modules/pi-mcp-adapter/dist/secure-keyring.d.ts +11 -0
  110. package/node_modules/pi-mcp-adapter/dist/secure-keyring.js +172 -0
  111. package/node_modules/pi-mcp-adapter/dist/secure-keyring.js.map +1 -0
  112. package/node_modules/pi-mcp-adapter/dist/server-manager.d.ts +157 -0
  113. package/node_modules/pi-mcp-adapter/dist/server-manager.js +1743 -0
  114. package/node_modules/pi-mcp-adapter/dist/server-manager.js.map +1 -0
  115. package/node_modules/pi-mcp-adapter/dist/session-approvals.d.ts +34 -0
  116. package/node_modules/pi-mcp-adapter/dist/session-approvals.js +140 -0
  117. package/node_modules/pi-mcp-adapter/dist/session-approvals.js.map +1 -0
  118. package/node_modules/pi-mcp-adapter/dist/session-recovery.d.ts +26 -0
  119. package/node_modules/pi-mcp-adapter/dist/session-recovery.js +142 -0
  120. package/node_modules/pi-mcp-adapter/dist/session-recovery.js.map +1 -0
  121. package/node_modules/pi-mcp-adapter/dist/state.d.ts +73 -0
  122. package/node_modules/pi-mcp-adapter/dist/state.js +2 -0
  123. package/node_modules/pi-mcp-adapter/dist/state.js.map +1 -0
  124. package/node_modules/pi-mcp-adapter/dist/types.d.ts +36 -0
  125. package/node_modules/pi-mcp-adapter/dist/types.js +18 -0
  126. package/node_modules/pi-mcp-adapter/dist/types.js.map +1 -1
  127. package/node_modules/pi-mcp-adapter/dist/ui-resource-handler.d.ts +17 -0
  128. package/node_modules/pi-mcp-adapter/dist/ui-resource-handler.js +219 -0
  129. package/node_modules/pi-mcp-adapter/dist/ui-resource-handler.js.map +1 -0
  130. package/node_modules/pi-mcp-adapter/dist/unix-socket-transport.d.ts +15 -0
  131. package/node_modules/pi-mcp-adapter/dist/unix-socket-transport.js +85 -0
  132. package/node_modules/pi-mcp-adapter/dist/unix-socket-transport.js.map +1 -0
  133. package/node_modules/pi-mcp-adapter/dist/utils.d.ts +1 -0
  134. package/node_modules/pi-mcp-adapter/dist/utils.js +13 -0
  135. package/node_modules/pi-mcp-adapter/dist/utils.js.map +1 -1
  136. package/node_modules/pi-mcp-adapter/elicitation-handler.ts +29 -19
  137. package/node_modules/pi-mcp-adapter/examples/jev-accessibility-loop.mjs +85 -0
  138. package/node_modules/pi-mcp-adapter/examples/jev-semantic-filter.mjs +34 -0
  139. package/node_modules/pi-mcp-adapter/index.ts +129 -6
  140. package/node_modules/pi-mcp-adapter/init.ts +6 -19
  141. package/node_modules/pi-mcp-adapter/jev-client.ts +273 -0
  142. package/node_modules/pi-mcp-adapter/jev-contracts.ts +53 -0
  143. package/node_modules/pi-mcp-adapter/jev-key-store.ts +79 -0
  144. package/node_modules/pi-mcp-adapter/lifecycle.ts +14 -3
  145. package/node_modules/pi-mcp-adapter/mcp-bearer-store.ts +7 -142
  146. package/node_modules/pi-mcp-adapter/mcp-code.ts +119 -11
  147. package/node_modules/pi-mcp-adapter/mcp-output-guard.ts +4 -0
  148. package/node_modules/pi-mcp-adapter/mcp-references.ts +5 -3
  149. package/node_modules/pi-mcp-adapter/mcp-script-worker.mjs +5 -0
  150. package/node_modules/pi-mcp-adapter/mcp-tasks.ts +467 -0
  151. package/node_modules/pi-mcp-adapter/metadata-cache.ts +2 -13
  152. package/node_modules/pi-mcp-adapter/namespace-tools.ts +1 -1
  153. package/node_modules/pi-mcp-adapter/package.json +17 -9
  154. package/node_modules/pi-mcp-adapter/proxy-modes.ts +319 -166
  155. package/node_modules/pi-mcp-adapter/request-headers-command.ts +6 -3
  156. package/node_modules/pi-mcp-adapter/search-ranking.ts +38 -7
  157. package/node_modules/pi-mcp-adapter/secure-keyring.ts +170 -0
  158. package/node_modules/pi-mcp-adapter/semantic-search.ts +186 -0
  159. package/node_modules/pi-mcp-adapter/server-manager.ts +293 -50
  160. package/node_modules/pi-mcp-adapter/session-approvals.ts +14 -0
  161. package/node_modules/pi-mcp-adapter/skills/mcp-scripting/SKILL.md +2 -0
  162. package/node_modules/pi-mcp-adapter/state.ts +3 -1
  163. package/node_modules/pi-mcp-adapter/tool-approval.ts +26 -4
  164. package/node_modules/pi-mcp-adapter/tool-metadata.ts +6 -14
  165. package/node_modules/pi-mcp-adapter/tool-registrar.ts +8 -6
  166. package/node_modules/pi-mcp-adapter/tool-result-renderer.ts +4 -1
  167. package/node_modules/pi-mcp-adapter/types.ts +53 -0
  168. package/node_modules/pi-mcp-adapter/ui-server.ts +17 -9
  169. package/node_modules/pi-mcp-adapter/utils.ts +16 -0
  170. package/node_modules/pi-multi-account/CHANGELOG.md +23 -0
  171. package/node_modules/pi-multi-account/README.md +38 -11
  172. package/node_modules/pi-multi-account/index.ts +371 -96
  173. package/node_modules/pi-multi-account/package.json +5 -4
  174. package/node_modules/pi-multi-account/provider-payload-stream.ts +36 -28
  175. package/node_modules/pi-multi-account/usage.ts +31 -2
  176. package/node_modules/pi-typesafe/README.md +3 -1
  177. package/node_modules/pi-typesafe/dist/auth.d.ts +10 -3
  178. package/node_modules/pi-typesafe/dist/auth.js +13 -7
  179. package/node_modules/pi-typesafe/dist/backends.d.ts +31 -0
  180. package/node_modules/pi-typesafe/dist/backends.js +33 -0
  181. package/node_modules/pi-typesafe/dist/client.d.ts +3 -9
  182. package/node_modules/pi-typesafe/dist/client.js +63 -39
  183. package/node_modules/pi-typesafe/dist/credentials.d.ts +11 -5
  184. package/node_modules/pi-typesafe/dist/credentials.js +15 -8
  185. package/node_modules/pi-typesafe/dist/extension.js +4 -1
  186. package/node_modules/pi-typesafe/dist/index.d.ts +1 -1
  187. package/node_modules/pi-typesafe/dist/index.js +1 -1
  188. package/node_modules/pi-typesafe/dist/login.d.ts +13 -7
  189. package/node_modules/pi-typesafe/dist/login.js +17 -8
  190. package/node_modules/pi-typesafe/dist/schema.js +19 -13
  191. package/node_modules/pi-typesafe/package.json +1 -1
  192. 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":"AAAA,sBAAsB;AACtB,EAAE;AACF,oCAAoC;AACpC,EAAE;AACF,gDAAgD;AAChD,4EAA4E;AAC5E,iEAAiE;AACjE,sDAAsD;AACtD,EAAE;AACF,4EAA4E;AAC5E,wEAAwE;AACxE,4EAA4E;AAC5E,6EAA6E;AAC7E,4EAA4E;AAC5E,wBAAwB;AACxB,EAAE;AACF,sCAAsC;AACtC,4DAA4D;AAC5D,yEAAyE;AACzE,oDAAoD;AACpD,qEAAqE;AACrE,yDAAyD;AACzD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAC9F,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAkB,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAGzD;;;;;;;;;GASG;AACH,MAAM,+BAA+B,GAAG,CAAC,KAAK,CAAC;AAC/C,MAAM,mCAAmC,GAAG,IAAI,GAAG,CAAC;IAClD,wBAAwB;IACxB,qCAAqC;CACtC,CAAC,CAAC;AAEH,MAAM,UAAU,mBAAmB,CAAC,GAAY,EAAE,YAAqB;IACrE,IAAI,CAAC,YAAY;QAAE,OAAO,KAAK,CAAC;IAChC,IAAI,GAAG,YAAY,YAAY,EAAE,CAAC;QAChC,OAAO,GAAG,CAAC,MAAM,KAAK,GAAG;eACpB,CAAC,GAAG,CAAC,MAAM,KAAK,GAAG;mBACjB,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;mBACvC,uDAAuD,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,GAAG,YAAY,aAAa;WAC9B,GAAG,CAAC,IAAI,KAAK,+BAA+B;WAC5C,mCAAmC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,YAAY,CAAC,UAA4B;IAChD,oEAAoE;IACpE,sEAAsE;IACtE,4BAA4B;IAC5B,MAAM,SAAS,GAAG,UAAU,CAAC,SAA+C,CAAC;IAC7E,OAAO,SAAS,EAAE,SAAS,IAAI,IAAI,CAAC;AACtC,CAAC;AAED,MAAM,OAAO,gCAAiC,SAAQ,KAAK;IACpC;IAA6B;IAAlD,YAAqB,UAAkB,EAAW,WAAoB;QACpE,KAAK,CAAC,WAAW,IAAI,eAAe,UAAU,kDAAkD,CAAC,CAAC;QAD/E,eAAU,GAAV,UAAU,CAAQ;QAAW,gBAAW,GAAX,WAAW,CAAS;QAEpE,IAAI,CAAC,IAAI,GAAG,kCAAkC,CAAC;IACjD,CAAC;CACF;AASD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAAyB,EACzB,UAAkB,EAClB,EAA0C;IAE1C,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CAAC,eAAe,UAAU,eAAe,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAC1D,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,oBAAoB,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,YAAY,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;IAE9C,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,UAAU,IAAI,aAAa,CAAC,UAAU,CAAC;eACtC,CAAC,GAAG,YAAY,iBAAiB,IAAI,CAAC,GAAG,YAAY,YAAY,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;YAC/F,wBAAwB,CAAC,UAAU,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,CAAC;YAC5C,MAAM,GAAG,CAAC;QACZ,CAAC;QAED,4DAA4D;QAC5D,wEAAwE;QACxE,qEAAqE;QACrE,+CAA+C;QAC/C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,GAAG,CAAC;QACZ,CAAC;QAED,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5B,MAAM,CAAC,KAAK,CAAC,oBAAoB,UAAU,yBAAyB,EAAE;YACpE,MAAM,EAAE,UAAU;SACnB,CAAC,CAAC;QACH,IAAI,eAAe,GAAG,IAAI,CAAC,MAAM;YAC/B,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;YAC/E,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QACrE,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE5B,IAAI,eAAe,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;YAC5C,eAAe,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,eAAe,CAAC;YAC1E,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,eAAe,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;YAC5C,MAAM,IAAI,gCAAgC,CAAC,UAAU,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,eAAe,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAC3C,MAAM,GAAG,CAAC;QACZ,CAAC;QAED,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,UAAU,EAAE,eAAe,EAAE,mBAAmB,CAAC,CAAC;QACxF,CAAC;QAAC,OAAO,gBAAgB,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,gBAAgB,YAAY,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;YACxG,MAAM,CAAC,KAAK,CAAC,wDAAwD,UAAU,MAAM,OAAO,EAAE,CAAC,CAAC;QAClG,CAAC;QACD,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5B,OAAO,EAAE,CAAC,eAAe,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC"}
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../state.ts"],"names":[],"mappings":""}