@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,505 @@
1
+ // npx-resolver.ts - Resolve npx/npm exec binaries to avoid npm parent processes
2
+ import { existsSync, readFileSync, realpathSync, readdirSync, statSync, writeFileSync, renameSync, mkdirSync, openSync, readSync, closeSync, unlinkSync } from "node:fs";
3
+ import { join, dirname, extname, resolve, sep } from "node:path";
4
+ import { getAgentPath } from "./agent-dir.js";
5
+ import { throwIfAborted } from "./abort.js";
6
+ import crossSpawn from "cross-spawn";
7
+ const CACHE_VERSION = 2;
8
+ const CACHE_TTL_MS = 24 * 60 * 60 * 1000;
9
+ const EXACT_PACKAGE_VERSION_RE = /^\d+\.\d+\.\d+(?:-[0-9A-Za-z][0-9A-Za-z.-]*)?(?:\+[0-9A-Za-z][0-9A-Za-z.-]*)?$/;
10
+ export async function resolveNpxBinary(command, args, signal) {
11
+ throwIfAborted(signal);
12
+ const parsed = command === "npx"
13
+ ? parseNpxArgs(args)
14
+ : command === "npm"
15
+ ? parseNpmExecArgs(args)
16
+ : null;
17
+ if (!parsed)
18
+ return null;
19
+ const packageSpec = parsePackageSpec(parsed.packageSpec);
20
+ const cacheKey = JSON.stringify([command, parsed.packageSpec, parsed.binName ?? ""]);
21
+ const cache = loadCache();
22
+ const cached = cache?.entries?.[cacheKey];
23
+ if (cached
24
+ && Date.now() - cached.resolvedAt < CACHE_TTL_MS
25
+ && existsSync(cached.resolvedBin)
26
+ && (!packageSpec?.exactVersion || cached.packageVersion === packageSpec.exactVersion)) {
27
+ return { binPath: cached.resolvedBin, extraArgs: parsed.extraArgs, isJs: cached.isJs };
28
+ }
29
+ const resolved = resolveFromNpmCache(parsed.packageSpec, parsed.binName);
30
+ if (resolved) {
31
+ saveCacheEntry(cacheKey, resolved);
32
+ return { binPath: resolved.resolvedBin, extraArgs: parsed.extraArgs, isJs: resolved.isJs };
33
+ }
34
+ // Slow path: force npx cache population
35
+ await forceNpxCache(parsed.packageSpec, signal);
36
+ const resolvedAfterInstall = resolveFromNpmCache(parsed.packageSpec, parsed.binName);
37
+ if (resolvedAfterInstall) {
38
+ saveCacheEntry(cacheKey, resolvedAfterInstall);
39
+ return { binPath: resolvedAfterInstall.resolvedBin, extraArgs: parsed.extraArgs, isJs: resolvedAfterInstall.isJs };
40
+ }
41
+ return null;
42
+ }
43
+ function parseNpxArgs(args) {
44
+ const separatorIndex = args.indexOf("--");
45
+ const before = separatorIndex >= 0 ? args.slice(0, separatorIndex) : args;
46
+ const after = separatorIndex >= 0 ? args.slice(separatorIndex + 1) : [];
47
+ const positionals = [];
48
+ let packageSpec;
49
+ let sawPackageFlag = false;
50
+ let foundFirstPositional = false;
51
+ for (let i = 0; i < before.length; i++) {
52
+ const arg = before[i];
53
+ if (arg === undefined)
54
+ return null;
55
+ if (foundFirstPositional) {
56
+ positionals.push(arg);
57
+ continue;
58
+ }
59
+ if (arg === "-y" || arg === "--yes")
60
+ continue;
61
+ if (arg === "-p" || arg === "--package") {
62
+ const value = before[i + 1];
63
+ if (!value || value.startsWith("-"))
64
+ return null;
65
+ if (!packageSpec)
66
+ packageSpec = value;
67
+ sawPackageFlag = true;
68
+ i++;
69
+ continue;
70
+ }
71
+ if (arg.startsWith("--package=")) {
72
+ const value = arg.slice("--package=".length);
73
+ if (!value)
74
+ return null;
75
+ if (!packageSpec)
76
+ packageSpec = value;
77
+ sawPackageFlag = true;
78
+ continue;
79
+ }
80
+ if (arg.startsWith("-")) {
81
+ return null;
82
+ }
83
+ positionals.push(arg);
84
+ foundFirstPositional = true;
85
+ }
86
+ const separatedAfter = separatorIndex >= 0 && after.length > 0 ? ["--", ...after] : after;
87
+ if (sawPackageFlag) {
88
+ const binName = positionals[0];
89
+ if (!packageSpec || !binName)
90
+ return null;
91
+ const extraArgs = positionals.slice(1).concat(separatedAfter);
92
+ return { packageSpec, binName, extraArgs };
93
+ }
94
+ const packagePositional = positionals[0];
95
+ if (!packagePositional)
96
+ return null;
97
+ const extraArgs = positionals.slice(1).concat(separatedAfter);
98
+ return { packageSpec: packagePositional, extraArgs };
99
+ }
100
+ function parseNpmExecArgs(args) {
101
+ if (args[0] !== "exec")
102
+ return null;
103
+ const execArgs = args.slice(1);
104
+ const separatorIndex = execArgs.indexOf("--");
105
+ if (separatorIndex < 0)
106
+ return null;
107
+ const before = execArgs.slice(0, separatorIndex);
108
+ const after = execArgs.slice(separatorIndex + 1);
109
+ let packageSpec;
110
+ for (let i = 0; i < before.length; i++) {
111
+ const arg = before[i];
112
+ if (arg === undefined)
113
+ return null;
114
+ if (arg === "-y" || arg === "--yes")
115
+ continue;
116
+ if (arg === "--package") {
117
+ const value = before[i + 1];
118
+ if (!value || value.startsWith("-"))
119
+ return null;
120
+ if (!packageSpec)
121
+ packageSpec = value;
122
+ i++;
123
+ continue;
124
+ }
125
+ if (arg.startsWith("--package=")) {
126
+ const value = arg.slice("--package=".length);
127
+ if (!value)
128
+ return null;
129
+ if (!packageSpec)
130
+ packageSpec = value;
131
+ continue;
132
+ }
133
+ if (arg.startsWith("-")) {
134
+ return null;
135
+ }
136
+ }
137
+ const binName = after[0];
138
+ if (!packageSpec || !binName)
139
+ return null;
140
+ const extraArgs = after.slice(1);
141
+ return { packageSpec, binName, extraArgs };
142
+ }
143
+ function resolveFromNpmCache(packageSpec, binName) {
144
+ const cacheDir = getNpmCacheDir();
145
+ if (!cacheDir)
146
+ return null;
147
+ const parsedSpec = parsePackageSpec(packageSpec);
148
+ if (!parsedSpec)
149
+ return null;
150
+ const { packageName, exactVersion } = parsedSpec;
151
+ const packageDir = findCachedPackageDir(cacheDir, packageName, exactVersion);
152
+ if (!packageDir)
153
+ return null;
154
+ const packageJsonPath = join(packageDir, "package.json");
155
+ if (!existsSync(packageJsonPath))
156
+ return null;
157
+ let pkg = null;
158
+ try {
159
+ pkg = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
160
+ }
161
+ catch {
162
+ return null;
163
+ }
164
+ const binField = pkg?.bin;
165
+ if (!binField)
166
+ return null;
167
+ const candidates = buildBinCandidates(packageName, binName);
168
+ let chosenBinName;
169
+ let binRel;
170
+ if (typeof binField === "string") {
171
+ chosenBinName = defaultBinName(packageName);
172
+ binRel = binField;
173
+ }
174
+ else {
175
+ for (const candidate of candidates) {
176
+ if (binField[candidate]) {
177
+ chosenBinName = candidate;
178
+ binRel = binField[candidate];
179
+ break;
180
+ }
181
+ }
182
+ if (!binRel) {
183
+ const firstEntry = Object.entries(binField)[0];
184
+ if (firstEntry) {
185
+ chosenBinName = firstEntry[0];
186
+ binRel = firstEntry[1];
187
+ }
188
+ }
189
+ }
190
+ if (!binRel)
191
+ return null;
192
+ const nodeModulesDir = findNodeModulesDir(packageDir);
193
+ const binLink = chosenBinName ? join(nodeModulesDir, ".bin", chosenBinName) : null;
194
+ let resolvedBin = binLink && existsSync(binLink) ? safeRealpath(binLink) : "";
195
+ if (!resolvedBin) {
196
+ resolvedBin = resolve(packageDir, binRel);
197
+ if (!existsSync(resolvedBin))
198
+ return null;
199
+ }
200
+ const isJs = detectJsBinary(resolvedBin);
201
+ return {
202
+ resolvedBin,
203
+ resolvedAt: Date.now(),
204
+ ...(pkg?.version !== undefined ? { packageVersion: pkg.version } : {}),
205
+ isJs,
206
+ };
207
+ }
208
+ const FORCE_CACHE_TIMEOUT_MS = 30_000;
209
+ async function forceNpxCache(packageSpec, signal) {
210
+ throwIfAborted(signal);
211
+ try {
212
+ await new Promise((resolve, reject) => {
213
+ const proc = crossSpawn("npm", ["exec", "--yes", "--package", packageSpec, "--", "node", "-e", "1"], { stdio: "ignore" });
214
+ const timer = setTimeout(() => {
215
+ proc.kill();
216
+ reject(new Error("timeout"));
217
+ }, FORCE_CACHE_TIMEOUT_MS);
218
+ const abort = () => {
219
+ proc.kill();
220
+ reject(signal?.reason instanceof Error ? signal.reason : new Error("MCP request aborted"));
221
+ };
222
+ signal?.addEventListener("abort", abort, { once: true });
223
+ timer.unref();
224
+ proc.on("close", () => {
225
+ clearTimeout(timer);
226
+ signal?.removeEventListener("abort", abort);
227
+ resolve();
228
+ });
229
+ proc.on("error", (err) => {
230
+ clearTimeout(timer);
231
+ signal?.removeEventListener("abort", abort);
232
+ reject(err);
233
+ });
234
+ });
235
+ }
236
+ catch (error) {
237
+ if (signal?.aborted)
238
+ throwIfAborted(signal);
239
+ // Ignore failures, resolution will fall back to original command
240
+ }
241
+ throwIfAborted(signal);
242
+ }
243
+ function buildBinCandidates(packageName, explicitBin) {
244
+ const candidates = [];
245
+ if (explicitBin)
246
+ candidates.push(explicitBin);
247
+ if (packageName.startsWith("@")) {
248
+ const namePart = packageName.split("/")[1] ?? "";
249
+ const scopePart = packageName.split("/")[0]?.replace("@", "") ?? "";
250
+ if (namePart)
251
+ candidates.push(namePart);
252
+ if (scopePart && namePart)
253
+ candidates.push(`${scopePart}-${namePart}`);
254
+ }
255
+ else {
256
+ candidates.push(packageName);
257
+ }
258
+ return [...new Set(candidates.filter(Boolean))];
259
+ }
260
+ function parsePackageSpec(spec) {
261
+ const trimmed = spec.trim();
262
+ if (!trimmed)
263
+ return null;
264
+ let packageName;
265
+ let requestedVersion;
266
+ if (trimmed.startsWith("@")) {
267
+ const slashIndex = trimmed.indexOf("/");
268
+ if (slashIndex < 0)
269
+ return null;
270
+ const atIndex = trimmed.lastIndexOf("@");
271
+ if (atIndex > slashIndex) {
272
+ packageName = trimmed.slice(0, atIndex);
273
+ requestedVersion = trimmed.slice(atIndex + 1);
274
+ }
275
+ else {
276
+ packageName = trimmed;
277
+ }
278
+ }
279
+ else {
280
+ const atIndex = trimmed.indexOf("@");
281
+ if (atIndex >= 0) {
282
+ packageName = trimmed.slice(0, atIndex);
283
+ requestedVersion = trimmed.slice(atIndex + 1);
284
+ }
285
+ else {
286
+ packageName = trimmed;
287
+ }
288
+ }
289
+ if (!packageName)
290
+ return null;
291
+ const normalizedVersion = requestedVersion?.replace(/^=/, "").replace(/^v/i, "");
292
+ return {
293
+ packageName,
294
+ ...(normalizedVersion && EXACT_PACKAGE_VERSION_RE.test(normalizedVersion)
295
+ ? { exactVersion: normalizedVersion }
296
+ : {}),
297
+ };
298
+ }
299
+ function defaultBinName(packageName) {
300
+ if (packageName.startsWith("@")) {
301
+ const parts = packageName.split("/");
302
+ return parts[1] ?? packageName.replace("@", "").replace("/", "-");
303
+ }
304
+ return packageName;
305
+ }
306
+ function findCachedPackageDir(cacheDir, packageName, exactVersion) {
307
+ const npxDir = join(cacheDir, "_npx");
308
+ if (!existsSync(npxDir))
309
+ return null;
310
+ const packagePathParts = packageName.startsWith("@")
311
+ ? packageName.split("/")
312
+ : [packageName];
313
+ const candidates = readdirSync(npxDir, { withFileTypes: true })
314
+ .filter(entry => entry.isDirectory())
315
+ .map(entry => {
316
+ const full = join(npxDir, entry.name);
317
+ const mtime = safeStatMtime(full);
318
+ return { name: entry.name, mtime };
319
+ })
320
+ .sort((a, b) => b.mtime - a.mtime);
321
+ for (const entry of candidates) {
322
+ const pkgDir = join(npxDir, entry.name, "node_modules", ...packagePathParts);
323
+ const packageJsonPath = join(pkgDir, "package.json");
324
+ if (!existsSync(packageJsonPath))
325
+ continue;
326
+ if (exactVersion) {
327
+ try {
328
+ const pkg = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
329
+ if (pkg.version !== exactVersion)
330
+ continue;
331
+ }
332
+ catch {
333
+ continue;
334
+ }
335
+ }
336
+ return pkgDir;
337
+ }
338
+ return null;
339
+ }
340
+ function findNodeModulesDir(packageDir) {
341
+ const parts = packageDir.split(sep);
342
+ const idx = parts.lastIndexOf("node_modules");
343
+ if (idx >= 0) {
344
+ return parts.slice(0, idx + 1).join(sep);
345
+ }
346
+ return join(packageDir, "..");
347
+ }
348
+ function detectJsBinary(binPath) {
349
+ const ext = extname(binPath).toLowerCase();
350
+ if (ext === ".js" || ext === ".mjs" || ext === ".cjs")
351
+ return true;
352
+ try {
353
+ const fd = openSync(binPath, "r");
354
+ try {
355
+ const buf = Buffer.alloc(256);
356
+ readSync(fd, buf, 0, 256, 0);
357
+ const firstLine = buf.toString("utf-8").split("\n")[0] ?? "";
358
+ return firstLine.startsWith("#!") && firstLine.includes("node");
359
+ }
360
+ finally {
361
+ closeSync(fd);
362
+ }
363
+ }
364
+ catch {
365
+ return false;
366
+ }
367
+ }
368
+ let npmCacheDirCached;
369
+ function getNpmCacheDir() {
370
+ if (npmCacheDirCached !== undefined)
371
+ return npmCacheDirCached;
372
+ if (process.env.NPM_CONFIG_CACHE) {
373
+ npmCacheDirCached = process.env.NPM_CONFIG_CACHE;
374
+ return npmCacheDirCached;
375
+ }
376
+ try {
377
+ const result = crossSpawn.sync("npm", ["config", "get", "cache"], { encoding: "utf-8" });
378
+ if (result.status === 0) {
379
+ const path = String(result.stdout).trim();
380
+ npmCacheDirCached = path || null;
381
+ return npmCacheDirCached;
382
+ }
383
+ }
384
+ catch {
385
+ npmCacheDirCached = null;
386
+ return null;
387
+ }
388
+ npmCacheDirCached = null;
389
+ return null;
390
+ }
391
+ function getNpxCachePath() {
392
+ return getAgentPath("mcp-npx-cache.json");
393
+ }
394
+ function readNpxCachePayload(cachePath) {
395
+ if (!existsSync(cachePath))
396
+ return null;
397
+ try {
398
+ return JSON.parse(readFileSync(cachePath, "utf-8"));
399
+ }
400
+ catch {
401
+ return null;
402
+ }
403
+ }
404
+ function asRecord(value) {
405
+ return typeof value === "object" && value !== null && !Array.isArray(value)
406
+ ? value
407
+ : null;
408
+ }
409
+ function createCacheEntries() {
410
+ return Object.create(null);
411
+ }
412
+ function toNpxCacheEntry(value) {
413
+ const raw = asRecord(value);
414
+ if (!raw)
415
+ return null;
416
+ if (typeof raw.resolvedBin !== "string")
417
+ return null;
418
+ if (typeof raw.resolvedAt !== "number" || !Number.isFinite(raw.resolvedAt))
419
+ return null;
420
+ if (typeof raw.isJs !== "boolean")
421
+ return null;
422
+ if (raw.packageVersion !== undefined && typeof raw.packageVersion !== "string")
423
+ return null;
424
+ return {
425
+ resolvedBin: raw.resolvedBin,
426
+ resolvedAt: raw.resolvedAt,
427
+ ...(raw.packageVersion !== undefined ? { packageVersion: raw.packageVersion } : {}),
428
+ isJs: raw.isJs,
429
+ };
430
+ }
431
+ function toNpxCache(value) {
432
+ const raw = asRecord(value);
433
+ if (!raw || raw.version !== CACHE_VERSION)
434
+ return null;
435
+ const rawEntries = asRecord(raw.entries);
436
+ if (!rawEntries)
437
+ return null;
438
+ const entries = createCacheEntries();
439
+ for (const [key, rawEntry] of Object.entries(rawEntries)) {
440
+ const entry = toNpxCacheEntry(rawEntry);
441
+ if (entry)
442
+ entries[key] = entry;
443
+ }
444
+ return { version: CACHE_VERSION, entries };
445
+ }
446
+ function clearLegacyCache() {
447
+ const cachePath = getNpxCachePath();
448
+ const raw = asRecord(readNpxCachePayload(cachePath));
449
+ if (raw?.version !== 1)
450
+ return false;
451
+ try {
452
+ unlinkSync(cachePath);
453
+ }
454
+ catch {
455
+ try {
456
+ writeFileSync(cachePath, "", "utf-8");
457
+ }
458
+ catch {
459
+ // Cache cleanup is best effort; resolution must still proceed.
460
+ }
461
+ }
462
+ return true;
463
+ }
464
+ clearLegacyCache();
465
+ function loadCache() {
466
+ if (clearLegacyCache())
467
+ return null;
468
+ return toNpxCache(readNpxCachePayload(getNpxCachePath()));
469
+ }
470
+ function saveCacheEntry(key, entry) {
471
+ try {
472
+ const cachePath = getNpxCachePath();
473
+ const dir = dirname(cachePath);
474
+ mkdirSync(dir, { recursive: true });
475
+ const existing = toNpxCache(readNpxCachePayload(cachePath));
476
+ const entries = createCacheEntries();
477
+ if (existing)
478
+ Object.assign(entries, existing.entries);
479
+ const merged = { version: CACHE_VERSION, entries };
480
+ merged.entries[key] = entry;
481
+ const tmpPath = `${cachePath}.${process.pid}.tmp`;
482
+ writeFileSync(tmpPath, JSON.stringify(merged, null, 2), "utf-8");
483
+ renameSync(tmpPath, cachePath);
484
+ }
485
+ catch {
486
+ // Cache writes are best effort; resolution must still proceed.
487
+ }
488
+ }
489
+ function safeRealpath(path) {
490
+ try {
491
+ return realpathSync(path);
492
+ }
493
+ catch {
494
+ return "";
495
+ }
496
+ }
497
+ function safeStatMtime(path) {
498
+ try {
499
+ return statSync(path).mtimeMs;
500
+ }
501
+ catch {
502
+ return 0;
503
+ }
504
+ }
505
+ //# sourceMappingURL=npx-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npx-resolver.js","sourceRoot":"","sources":["../npx-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { FetchLike } from "@modelcontextprotocol/client";
2
+ import type { HttpRequestHeadersCommand } from "./types.ts";
3
+ export interface HttpRequestCommandEnvelope {
4
+ version: 1;
5
+ method: string;
6
+ url: string;
7
+ bodyBase64: string;
8
+ }
9
+ /** Wrap fetch so a trusted command can derive headers from the exact request. */
10
+ export declare function createRequestHeadersCommandFetch(config: HttpRequestHeadersCommand, delegate?: FetchLike): (input: URL | RequestInfo, init?: RequestInit) => Promise<Response>;