@humain/terminal 0.0.2 → 0.0.3-beta.1

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 (688) hide show
  1. package/CHANGELOG.md +251 -24
  2. package/README.md +143 -119
  3. package/dist/cli/args.d.ts +4 -2
  4. package/dist/cli/args.d.ts.map +1 -1
  5. package/dist/cli/args.js +37 -39
  6. package/dist/cli/args.js.map +1 -1
  7. package/dist/cli/auth-check.d.ts +19 -0
  8. package/dist/cli/auth-check.d.ts.map +1 -0
  9. package/dist/cli/auth-check.js +50 -0
  10. package/dist/cli/auth-check.js.map +1 -0
  11. package/dist/cli/auth-command.d.ts +24 -0
  12. package/dist/cli/auth-command.d.ts.map +1 -0
  13. package/dist/cli/auth-command.js +103 -0
  14. package/dist/cli/auth-command.js.map +1 -0
  15. package/dist/cli/config-selector.d.ts.map +1 -1
  16. package/dist/cli/config-selector.js +2 -2
  17. package/dist/cli/config-selector.js.map +1 -1
  18. package/dist/cli/credential-print.d.ts +5 -15
  19. package/dist/cli/credential-print.d.ts.map +1 -1
  20. package/dist/cli/credential-print.js +42 -83
  21. package/dist/cli/credential-print.js.map +1 -1
  22. package/dist/cli/experimental/auth.d.ts +16 -0
  23. package/dist/cli/experimental/auth.d.ts.map +1 -0
  24. package/dist/cli/experimental/auth.js +13 -0
  25. package/dist/cli/experimental/auth.js.map +1 -0
  26. package/dist/cli/experimental/cli.d.ts +6 -0
  27. package/dist/cli/experimental/cli.d.ts.map +1 -0
  28. package/dist/cli/experimental/cli.js +5 -0
  29. package/dist/cli/experimental/cli.js.map +1 -0
  30. package/dist/cli/experimental/command-options.d.ts +17 -0
  31. package/dist/cli/experimental/command-options.d.ts.map +1 -0
  32. package/dist/cli/experimental/command-options.js +35 -0
  33. package/dist/cli/experimental/command-options.js.map +1 -0
  34. package/dist/cli/experimental/command.d.ts +63 -0
  35. package/dist/cli/experimental/command.d.ts.map +1 -0
  36. package/dist/cli/experimental/command.js +130 -0
  37. package/dist/cli/experimental/command.js.map +1 -0
  38. package/dist/cli/experimental/commands/client.d.ts +13 -0
  39. package/dist/cli/experimental/commands/client.d.ts.map +1 -0
  40. package/dist/cli/experimental/commands/client.js +25 -0
  41. package/dist/cli/experimental/commands/client.js.map +1 -0
  42. package/dist/cli/experimental/commands/pi.d.ts +15 -0
  43. package/dist/cli/experimental/commands/pi.d.ts.map +1 -0
  44. package/dist/cli/experimental/commands/pi.js +28 -0
  45. package/dist/cli/experimental/commands/pi.js.map +1 -0
  46. package/dist/cli/experimental/commands/server.d.ts +13 -0
  47. package/dist/cli/experimental/commands/server.d.ts.map +1 -0
  48. package/dist/cli/experimental/commands/server.js +25 -0
  49. package/dist/cli/experimental/commands/server.js.map +1 -0
  50. package/dist/cli/experimental/transport-address.d.ts +10 -0
  51. package/dist/cli/experimental/transport-address.d.ts.map +1 -0
  52. package/dist/cli/experimental/transport-address.js +38 -0
  53. package/dist/cli/experimental/transport-address.js.map +1 -0
  54. package/dist/cli/list-models.d.ts +1 -1
  55. package/dist/cli/list-models.d.ts.map +1 -1
  56. package/dist/cli/list-models.js +2 -2
  57. package/dist/cli/list-models.js.map +1 -1
  58. package/dist/cli/startup-ui.d.ts +1 -1
  59. package/dist/cli/startup-ui.d.ts.map +1 -1
  60. package/dist/cli/startup-ui.js +2 -2
  61. package/dist/cli/startup-ui.js.map +1 -1
  62. package/dist/client/index.d.ts +3 -0
  63. package/dist/client/index.d.ts.map +1 -0
  64. package/dist/client/index.js +3 -0
  65. package/dist/client/index.js.map +1 -0
  66. package/dist/client/remote-session.d.ts +53 -0
  67. package/dist/client/remote-session.d.ts.map +1 -0
  68. package/dist/client/remote-session.js +340 -0
  69. package/dist/client/remote-session.js.map +1 -0
  70. package/dist/client/transcript.d.ts +12 -0
  71. package/dist/client/transcript.d.ts.map +1 -0
  72. package/dist/client/transcript.js +98 -0
  73. package/dist/client/transcript.js.map +1 -0
  74. package/dist/config.d.ts.map +1 -1
  75. package/dist/config.js +4 -3
  76. package/dist/config.js.map +1 -1
  77. package/dist/core/agent-session-services.d.ts +1 -0
  78. package/dist/core/agent-session-services.d.ts.map +1 -1
  79. package/dist/core/agent-session-services.js +1 -0
  80. package/dist/core/agent-session-services.js.map +1 -1
  81. package/dist/core/agent-session.d.ts +1 -10
  82. package/dist/core/agent-session.d.ts.map +1 -1
  83. package/dist/core/agent-session.js +72 -70
  84. package/dist/core/agent-session.js.map +1 -1
  85. package/dist/core/auth-storage.d.ts +25 -9
  86. package/dist/core/auth-storage.d.ts.map +1 -1
  87. package/dist/core/auth-storage.js +237 -39
  88. package/dist/core/auth-storage.js.map +1 -1
  89. package/dist/core/extensions/index.d.ts +1 -1
  90. package/dist/core/extensions/index.d.ts.map +1 -1
  91. package/dist/core/extensions/index.js.map +1 -1
  92. package/dist/core/extensions/loader.d.ts.map +1 -1
  93. package/dist/core/extensions/loader.js +60 -41
  94. package/dist/core/extensions/loader.js.map +1 -1
  95. package/dist/core/extensions/runner.d.ts +2 -1
  96. package/dist/core/extensions/runner.d.ts.map +1 -1
  97. package/dist/core/extensions/runner.js +3 -0
  98. package/dist/core/extensions/runner.js.map +1 -1
  99. package/dist/core/extensions/types.d.ts +27 -4
  100. package/dist/core/extensions/types.d.ts.map +1 -1
  101. package/dist/core/extensions/types.js.map +1 -1
  102. package/dist/core/http-dispatcher.d.ts.map +1 -1
  103. package/dist/core/http-dispatcher.js +5 -0
  104. package/dist/core/http-dispatcher.js.map +1 -1
  105. package/dist/core/keybindings.d.ts +45 -5
  106. package/dist/core/keybindings.d.ts.map +1 -1
  107. package/dist/core/keybindings.js.map +1 -1
  108. package/dist/core/model-config.d.ts +29 -5
  109. package/dist/core/model-config.d.ts.map +1 -1
  110. package/dist/core/model-config.js +4 -0
  111. package/dist/core/model-config.js.map +1 -1
  112. package/dist/core/model-registry.d.ts +5 -3
  113. package/dist/core/model-registry.d.ts.map +1 -1
  114. package/dist/core/model-registry.js +13 -10
  115. package/dist/core/model-registry.js.map +1 -1
  116. package/dist/core/model-resolver.d.ts +4 -3
  117. package/dist/core/model-resolver.d.ts.map +1 -1
  118. package/dist/core/model-resolver.js +42 -10
  119. package/dist/core/model-resolver.js.map +1 -1
  120. package/dist/core/model-runtime.d.ts +30 -13
  121. package/dist/core/model-runtime.d.ts.map +1 -1
  122. package/dist/core/model-runtime.js +233 -73
  123. package/dist/core/model-runtime.js.map +1 -1
  124. package/dist/core/models-store.d.ts +12 -7
  125. package/dist/core/models-store.d.ts.map +1 -1
  126. package/dist/core/models-store.js +83 -14
  127. package/dist/core/models-store.js.map +1 -1
  128. package/dist/core/package-manager.d.ts +6 -3
  129. package/dist/core/package-manager.d.ts.map +1 -1
  130. package/dist/core/package-manager.js +80 -61
  131. package/dist/core/package-manager.js.map +1 -1
  132. package/dist/core/pi-manifest.d.ts +8 -0
  133. package/dist/core/pi-manifest.d.ts.map +1 -0
  134. package/dist/core/pi-manifest.js +28 -0
  135. package/dist/core/pi-manifest.js.map +1 -0
  136. package/dist/core/provider-composer.d.ts +4 -1
  137. package/dist/core/provider-composer.d.ts.map +1 -1
  138. package/dist/core/provider-composer.js +36 -15
  139. package/dist/core/provider-composer.js.map +1 -1
  140. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  141. package/dist/core/remote-catalog-provider.js +73 -67
  142. package/dist/core/remote-catalog-provider.js.map +1 -1
  143. package/dist/core/resource-loader.d.ts.map +1 -1
  144. package/dist/core/resource-loader.js +2 -2
  145. package/dist/core/resource-loader.js.map +1 -1
  146. package/dist/core/runtime-credentials.d.ts +5 -5
  147. package/dist/core/runtime-credentials.d.ts.map +1 -1
  148. package/dist/core/runtime-credentials.js +11 -8
  149. package/dist/core/runtime-credentials.js.map +1 -1
  150. package/dist/core/sdk.d.ts +1 -1
  151. package/dist/core/sdk.d.ts.map +1 -1
  152. package/dist/core/sdk.js +2 -2
  153. package/dist/core/sdk.js.map +1 -1
  154. package/dist/core/session-manager.d.ts.map +1 -1
  155. package/dist/core/session-manager.js +3 -1
  156. package/dist/core/session-manager.js.map +1 -1
  157. package/dist/core/settings-manager.d.ts +12 -0
  158. package/dist/core/settings-manager.d.ts.map +1 -1
  159. package/dist/core/settings-manager.js +40 -16
  160. package/dist/core/settings-manager.js.map +1 -1
  161. package/dist/core/system-prompt.d.ts.map +1 -1
  162. package/dist/core/system-prompt.js +8 -0
  163. package/dist/core/system-prompt.js.map +1 -1
  164. package/dist/core/tools/bash.d.ts +5 -1
  165. package/dist/core/tools/bash.d.ts.map +1 -1
  166. package/dist/core/tools/bash.js +16 -15
  167. package/dist/core/tools/bash.js.map +1 -1
  168. package/dist/core/tools/edit.d.ts +4 -0
  169. package/dist/core/tools/edit.d.ts.map +1 -1
  170. package/dist/core/tools/edit.js +11 -7
  171. package/dist/core/tools/edit.js.map +1 -1
  172. package/dist/core/tools/find.d.ts +7 -0
  173. package/dist/core/tools/find.d.ts.map +1 -1
  174. package/dist/core/tools/find.js +16 -19
  175. package/dist/core/tools/find.js.map +1 -1
  176. package/dist/core/tools/grep.d.ts +4 -0
  177. package/dist/core/tools/grep.d.ts.map +1 -1
  178. package/dist/core/tools/grep.js +5 -1
  179. package/dist/core/tools/grep.js.map +1 -1
  180. package/dist/core/tools/ls.d.ts +4 -0
  181. package/dist/core/tools/ls.d.ts.map +1 -1
  182. package/dist/core/tools/ls.js +5 -1
  183. package/dist/core/tools/ls.js.map +1 -1
  184. package/dist/core/tools/read.d.ts +4 -0
  185. package/dist/core/tools/read.d.ts.map +1 -1
  186. package/dist/core/tools/read.js +7 -3
  187. package/dist/core/tools/read.js.map +1 -1
  188. package/dist/core/tools/write.d.ts +4 -0
  189. package/dist/core/tools/write.d.ts.map +1 -1
  190. package/dist/core/tools/write.js +6 -2
  191. package/dist/core/tools/write.js.map +1 -1
  192. package/dist/extensions/llama/index.d.ts.map +1 -1
  193. package/dist/extensions/llama/index.js +11 -2
  194. package/dist/extensions/llama/index.js.map +1 -1
  195. package/dist/extensions/llama/provider.d.ts.map +1 -1
  196. package/dist/extensions/llama/provider.js +21 -7
  197. package/dist/extensions/llama/provider.js.map +1 -1
  198. package/dist/humain/agent-execution-protocol.d.ts +218 -0
  199. package/dist/humain/agent-execution-protocol.d.ts.map +1 -0
  200. package/dist/humain/agent-execution-protocol.js +204 -0
  201. package/dist/humain/agent-execution-protocol.js.map +1 -0
  202. package/dist/humain/agent-execution-runtime.d.ts +35 -0
  203. package/dist/humain/agent-execution-runtime.d.ts.map +1 -0
  204. package/dist/humain/agent-execution-runtime.js +170 -0
  205. package/dist/humain/agent-execution-runtime.js.map +1 -0
  206. package/dist/humain/index.d.ts.map +1 -1
  207. package/dist/humain/index.js +8 -7
  208. package/dist/humain/index.js.map +1 -1
  209. package/dist/humain/mcp-adapter/vendor/CHANGELOG.md +673 -0
  210. package/dist/humain/mcp-adapter/vendor/LICENSE +21 -0
  211. package/dist/humain/mcp-adapter/vendor/README.md +736 -0
  212. package/dist/humain/mcp-adapter/vendor/abort.ts +34 -0
  213. package/dist/humain/mcp-adapter/vendor/agent-dir.ts +68 -0
  214. package/dist/humain/mcp-adapter/vendor/agent-plugin-loader.ts +377 -0
  215. package/dist/humain/mcp-adapter/vendor/app-bridge.bundle.js +67 -0
  216. package/dist/humain/mcp-adapter/vendor/banner.png +0 -0
  217. package/dist/humain/mcp-adapter/vendor/cli.js +230 -0
  218. package/dist/humain/mcp-adapter/vendor/commands.ts +627 -0
  219. package/dist/humain/mcp-adapter/vendor/config.ts +1226 -0
  220. package/dist/humain/mcp-adapter/vendor/consent-manager.ts +64 -0
  221. package/dist/humain/mcp-adapter/vendor/direct-tools.ts +607 -0
  222. package/dist/humain/mcp-adapter/vendor/elicitation-handler.ts +348 -0
  223. package/dist/humain/mcp-adapter/vendor/error-signal.ts +21 -0
  224. package/dist/humain/mcp-adapter/vendor/errors.ts +223 -0
  225. package/dist/humain/mcp-adapter/vendor/glimpse-ui.ts +80 -0
  226. package/dist/humain/mcp-adapter/vendor/host-html-template.ts +461 -0
  227. package/dist/humain/mcp-adapter/vendor/index.bundle.d.mts +4 -0
  228. package/dist/humain/mcp-adapter/vendor/index.bundle.mjs +16279 -0
  229. package/dist/humain/mcp-adapter/vendor/index.ts +898 -0
  230. package/dist/humain/mcp-adapter/vendor/init.ts +649 -0
  231. package/dist/humain/mcp-adapter/vendor/json-schema-validator.ts +69 -0
  232. package/dist/humain/mcp-adapter/vendor/lifecycle.ts +147 -0
  233. package/dist/humain/mcp-adapter/vendor/logger.ts +169 -0
  234. package/dist/humain/mcp-adapter/vendor/mcp-auth-flow.ts +993 -0
  235. package/dist/humain/mcp-adapter/vendor/mcp-auth.ts +1000 -0
  236. package/dist/humain/mcp-adapter/vendor/mcp-callback-server.ts +510 -0
  237. package/dist/humain/mcp-adapter/vendor/mcp-code.ts +354 -0
  238. package/dist/humain/mcp-adapter/vendor/mcp-keyring-helper.cjs +89 -0
  239. package/dist/humain/mcp-adapter/vendor/mcp-oauth-provider.ts +616 -0
  240. package/dist/humain/mcp-adapter/vendor/mcp-output-guard.ts +408 -0
  241. package/dist/humain/mcp-adapter/vendor/mcp-panel.ts +1015 -0
  242. package/dist/humain/mcp-adapter/vendor/mcp-probe.ts +187 -0
  243. package/dist/humain/mcp-adapter/vendor/mcp-script-worker.mjs +130 -0
  244. package/dist/humain/mcp-adapter/vendor/mcp-setup-panel.ts +667 -0
  245. package/dist/humain/mcp-adapter/vendor/mcp-status.ts +109 -0
  246. package/dist/humain/mcp-adapter/vendor/mcp-trace.ts +306 -0
  247. package/dist/humain/mcp-adapter/vendor/metadata-cache.ts +363 -0
  248. package/dist/humain/mcp-adapter/vendor/npx-resolver.ts +543 -0
  249. package/dist/humain/mcp-adapter/vendor/oauth-handler.ts +30 -0
  250. package/dist/humain/mcp-adapter/vendor/oauth.ts +48 -0
  251. package/dist/humain/mcp-adapter/vendor/onboarding-state.ts +76 -0
  252. package/dist/humain/mcp-adapter/vendor/package.json +179 -0
  253. package/dist/humain/mcp-adapter/vendor/panel-keys.ts +53 -0
  254. package/dist/humain/mcp-adapter/vendor/prompts.ts +353 -0
  255. package/dist/humain/mcp-adapter/vendor/proxy-modes.ts +1331 -0
  256. package/dist/humain/mcp-adapter/vendor/request-headers-command.ts +336 -0
  257. package/dist/humain/mcp-adapter/vendor/resource-tools.ts +17 -0
  258. package/dist/humain/mcp-adapter/vendor/runtime-owner.ts +91 -0
  259. package/dist/humain/mcp-adapter/vendor/sampling-handler.ts +284 -0
  260. package/dist/humain/mcp-adapter/vendor/search-ranking.ts +206 -0
  261. package/dist/humain/mcp-adapter/vendor/server-manager.ts +1129 -0
  262. package/dist/humain/mcp-adapter/vendor/session-recovery.ts +151 -0
  263. package/dist/humain/mcp-adapter/vendor/skills/mcp-scripting/SKILL.md +38 -0
  264. package/dist/humain/mcp-adapter/vendor/state.ts +62 -0
  265. package/dist/humain/mcp-adapter/vendor/tool-approval.ts +182 -0
  266. package/dist/humain/mcp-adapter/vendor/tool-metadata.ts +296 -0
  267. package/dist/humain/mcp-adapter/vendor/tool-registrar.ts +253 -0
  268. package/dist/humain/mcp-adapter/vendor/tool-result-renderer.ts +423 -0
  269. package/dist/humain/mcp-adapter/vendor/ts-shape.ts +149 -0
  270. package/dist/humain/mcp-adapter/vendor/types.ts +942 -0
  271. package/dist/humain/mcp-adapter/vendor/ui-app-bridge-helpers.ts +40 -0
  272. package/dist/humain/mcp-adapter/vendor/ui-resource-handler.ts +250 -0
  273. package/dist/humain/mcp-adapter/vendor/ui-server.ts +866 -0
  274. package/dist/humain/mcp-adapter/vendor/ui-session.ts +570 -0
  275. package/dist/humain/mcp-adapter/vendor/ui-stream-types.ts +89 -0
  276. package/dist/humain/mcp-adapter/vendor/ui-tool-visibility.ts +25 -0
  277. package/dist/humain/mcp-adapter/vendor/unix-socket-transport.ts +85 -0
  278. package/dist/humain/mcp-adapter/vendor/utils.ts +310 -0
  279. package/dist/humain/mcp-adapter.d.ts +3 -0
  280. package/dist/humain/mcp-adapter.d.ts.map +1 -0
  281. package/dist/humain/mcp-adapter.js +5 -0
  282. package/dist/humain/mcp-adapter.js.map +1 -0
  283. package/dist/humain/pi-agent-execution-host.d.ts +34 -0
  284. package/dist/humain/pi-agent-execution-host.d.ts.map +1 -0
  285. package/dist/humain/pi-agent-execution-host.js +77 -0
  286. package/dist/humain/pi-agent-execution-host.js.map +1 -0
  287. package/dist/humain/web-access/host.d.ts +4 -0
  288. package/dist/humain/web-access/host.d.ts.map +1 -0
  289. package/dist/humain/web-access/host.js +3 -0
  290. package/dist/humain/web-access/host.js.map +1 -0
  291. package/dist/humain/web-access/index.d.ts +3 -0
  292. package/dist/humain/web-access/index.d.ts.map +1 -0
  293. package/dist/humain/web-access/index.js +5 -0
  294. package/dist/humain/web-access/index.js.map +1 -0
  295. package/dist/humain/web-access/vendor/activity.d.ts +34 -0
  296. package/dist/humain/web-access/vendor/activity.d.ts.map +1 -0
  297. package/dist/humain/web-access/vendor/activity.js +68 -0
  298. package/dist/humain/web-access/vendor/activity.js.map +1 -0
  299. package/dist/humain/web-access/vendor/anysearch.d.ts +8 -0
  300. package/dist/humain/web-access/vendor/anysearch.d.ts.map +1 -0
  301. package/dist/humain/web-access/vendor/anysearch.js +167 -0
  302. package/dist/humain/web-access/vendor/anysearch.js.map +1 -0
  303. package/dist/humain/web-access/vendor/auth-fetch.d.ts +13 -0
  304. package/dist/humain/web-access/vendor/auth-fetch.d.ts.map +1 -0
  305. package/dist/humain/web-access/vendor/auth-fetch.js +134 -0
  306. package/dist/humain/web-access/vendor/auth-fetch.js.map +1 -0
  307. package/dist/humain/web-access/vendor/bocha.d.ts +4 -0
  308. package/dist/humain/web-access/vendor/bocha.d.ts.map +1 -0
  309. package/dist/humain/web-access/vendor/bocha.js +219 -0
  310. package/dist/humain/web-access/vendor/bocha.js.map +1 -0
  311. package/dist/humain/web-access/vendor/brave.d.ts +4 -0
  312. package/dist/humain/web-access/vendor/brave.d.ts.map +1 -0
  313. package/dist/humain/web-access/vendor/brave.js +194 -0
  314. package/dist/humain/web-access/vendor/brave.js.map +1 -0
  315. package/dist/humain/web-access/vendor/brightdata-unlocker.d.ts +12 -0
  316. package/dist/humain/web-access/vendor/brightdata-unlocker.d.ts.map +1 -0
  317. package/dist/humain/web-access/vendor/brightdata-unlocker.js +230 -0
  318. package/dist/humain/web-access/vendor/brightdata-unlocker.js.map +1 -0
  319. package/dist/humain/web-access/vendor/brightdata.d.ts +8 -0
  320. package/dist/humain/web-access/vendor/brightdata.d.ts.map +1 -0
  321. package/dist/humain/web-access/vendor/brightdata.js +519 -0
  322. package/dist/humain/web-access/vendor/brightdata.js.map +1 -0
  323. package/dist/humain/web-access/vendor/chrome-cookies.d.ts +23 -0
  324. package/dist/humain/web-access/vendor/chrome-cookies.d.ts.map +1 -0
  325. package/dist/humain/web-access/vendor/chrome-cookies.js +522 -0
  326. package/dist/humain/web-access/vendor/chrome-cookies.js.map +1 -0
  327. package/dist/humain/web-access/vendor/content-find.d.ts +11 -0
  328. package/dist/humain/web-access/vendor/content-find.d.ts.map +1 -0
  329. package/dist/humain/web-access/vendor/content-find.js +117 -0
  330. package/dist/humain/web-access/vendor/content-find.js.map +1 -0
  331. package/dist/humain/web-access/vendor/credential-source.d.ts +28 -0
  332. package/dist/humain/web-access/vendor/credential-source.d.ts.map +1 -0
  333. package/dist/humain/web-access/vendor/credential-source.js +151 -0
  334. package/dist/humain/web-access/vendor/credential-source.js.map +1 -0
  335. package/dist/humain/web-access/vendor/curator-page.d.ts +30 -0
  336. package/dist/humain/web-access/vendor/curator-page.d.ts.map +1 -0
  337. package/dist/humain/web-access/vendor/curator-page.js +3556 -0
  338. package/dist/humain/web-access/vendor/curator-page.js.map +1 -0
  339. package/dist/humain/web-access/vendor/curator-server.d.ts +94 -0
  340. package/dist/humain/web-access/vendor/curator-server.d.ts.map +1 -0
  341. package/dist/humain/web-access/vendor/curator-server.js +690 -0
  342. package/dist/humain/web-access/vendor/curator-server.js.map +1 -0
  343. package/dist/humain/web-access/vendor/datalab-pdf-extract.d.ts +60 -0
  344. package/dist/humain/web-access/vendor/datalab-pdf-extract.d.ts.map +1 -0
  345. package/dist/humain/web-access/vendor/datalab-pdf-extract.js +416 -0
  346. package/dist/humain/web-access/vendor/datalab-pdf-extract.js.map +1 -0
  347. package/dist/humain/web-access/vendor/declared-web-links.d.ts +16 -0
  348. package/dist/humain/web-access/vendor/declared-web-links.d.ts.map +1 -0
  349. package/dist/humain/web-access/vendor/declared-web-links.js +168 -0
  350. package/dist/humain/web-access/vendor/declared-web-links.js.map +1 -0
  351. package/dist/humain/web-access/vendor/duckduckgo.d.ts +4 -0
  352. package/dist/humain/web-access/vendor/duckduckgo.d.ts.map +1 -0
  353. package/dist/humain/web-access/vendor/duckduckgo.js +123 -0
  354. package/dist/humain/web-access/vendor/duckduckgo.js.map +1 -0
  355. package/dist/humain/web-access/vendor/exa.d.ts +10 -0
  356. package/dist/humain/web-access/vendor/exa.d.ts.map +1 -0
  357. package/dist/humain/web-access/vendor/exa.js +426 -0
  358. package/dist/humain/web-access/vendor/exa.js.map +1 -0
  359. package/dist/humain/web-access/vendor/extract.d.ts +48 -0
  360. package/dist/humain/web-access/vendor/extract.d.ts.map +1 -0
  361. package/dist/humain/web-access/vendor/extract.js +1126 -0
  362. package/dist/humain/web-access/vendor/extract.js.map +1 -0
  363. package/dist/humain/web-access/vendor/feature-config.d.ts +3 -0
  364. package/dist/humain/web-access/vendor/feature-config.d.ts.map +1 -0
  365. package/dist/humain/web-access/vendor/feature-config.js +27 -0
  366. package/dist/humain/web-access/vendor/feature-config.js.map +1 -0
  367. package/dist/humain/web-access/vendor/fetch-params.d.ts +27 -0
  368. package/dist/humain/web-access/vendor/fetch-params.d.ts.map +1 -0
  369. package/dist/humain/web-access/vendor/fetch-params.js +71 -0
  370. package/dist/humain/web-access/vendor/fetch-params.js.map +1 -0
  371. package/dist/humain/web-access/vendor/firecrawl.d.ts +19 -0
  372. package/dist/humain/web-access/vendor/firecrawl.d.ts.map +1 -0
  373. package/dist/humain/web-access/vendor/firecrawl.js +370 -0
  374. package/dist/humain/web-access/vendor/firecrawl.js.map +1 -0
  375. package/dist/humain/web-access/vendor/gemini-api.d.ts +27 -0
  376. package/dist/humain/web-access/vendor/gemini-api.d.ts.map +1 -0
  377. package/dist/humain/web-access/vendor/gemini-api.js +230 -0
  378. package/dist/humain/web-access/vendor/gemini-api.js.map +1 -0
  379. package/dist/humain/web-access/vendor/gemini-pdf-extract.d.ts +9 -0
  380. package/dist/humain/web-access/vendor/gemini-pdf-extract.d.ts.map +1 -0
  381. package/dist/humain/web-access/vendor/gemini-pdf-extract.js +85 -0
  382. package/dist/humain/web-access/vendor/gemini-pdf-extract.js.map +1 -0
  383. package/dist/humain/web-access/vendor/gemini-search.d.ts +40 -0
  384. package/dist/humain/web-access/vendor/gemini-search.d.ts.map +1 -0
  385. package/dist/humain/web-access/vendor/gemini-search.js +832 -0
  386. package/dist/humain/web-access/vendor/gemini-search.js.map +1 -0
  387. package/dist/humain/web-access/vendor/gemini-url-context.d.ts +4 -0
  388. package/dist/humain/web-access/vendor/gemini-url-context.d.ts.map +1 -0
  389. package/dist/humain/web-access/vendor/gemini-url-context.js +101 -0
  390. package/dist/humain/web-access/vendor/gemini-url-context.js.map +1 -0
  391. package/dist/humain/web-access/vendor/gemini-web-config.d.ts +4 -0
  392. package/dist/humain/web-access/vendor/gemini-web-config.d.ts.map +1 -0
  393. package/dist/humain/web-access/vendor/gemini-web-config.js +42 -0
  394. package/dist/humain/web-access/vendor/gemini-web-config.js.map +1 -0
  395. package/dist/humain/web-access/vendor/gemini-web.d.ts +18 -0
  396. package/dist/humain/web-access/vendor/gemini-web.d.ts.map +1 -0
  397. package/dist/humain/web-access/vendor/gemini-web.js +385 -0
  398. package/dist/humain/web-access/vendor/gemini-web.js.map +1 -0
  399. package/dist/humain/web-access/vendor/github-api.d.ts +7 -0
  400. package/dist/humain/web-access/vendor/github-api.d.ts.map +1 -0
  401. package/dist/humain/web-access/vendor/github-api.js +160 -0
  402. package/dist/humain/web-access/vendor/github-api.js.map +1 -0
  403. package/dist/humain/web-access/vendor/github-extract.d.ts +13 -0
  404. package/dist/humain/web-access/vendor/github-extract.d.ts.map +1 -0
  405. package/dist/humain/web-access/vendor/github-extract.js +635 -0
  406. package/dist/humain/web-access/vendor/github-extract.js.map +1 -0
  407. package/dist/humain/web-access/vendor/index.d.ts +4 -0
  408. package/dist/humain/web-access/vendor/index.d.ts.map +1 -0
  409. package/dist/humain/web-access/vendor/index.js +3076 -0
  410. package/dist/humain/web-access/vendor/index.js.map +1 -0
  411. package/dist/humain/web-access/vendor/jina-search.d.ts +8 -0
  412. package/dist/humain/web-access/vendor/jina-search.d.ts.map +1 -0
  413. package/dist/humain/web-access/vendor/jina-search.js +255 -0
  414. package/dist/humain/web-access/vendor/jina-search.js.map +1 -0
  415. package/dist/humain/web-access/vendor/kagi.d.ts +15 -0
  416. package/dist/humain/web-access/vendor/kagi.d.ts.map +1 -0
  417. package/dist/humain/web-access/vendor/kagi.js +262 -0
  418. package/dist/humain/web-access/vendor/kagi.js.map +1 -0
  419. package/dist/humain/web-access/vendor/ollama.d.ts +15 -0
  420. package/dist/humain/web-access/vendor/ollama.d.ts.map +1 -0
  421. package/dist/humain/web-access/vendor/ollama.js +216 -0
  422. package/dist/humain/web-access/vendor/ollama.js.map +1 -0
  423. package/dist/humain/web-access/vendor/openai-search.d.ts +15 -0
  424. package/dist/humain/web-access/vendor/openai-search.d.ts.map +1 -0
  425. package/dist/humain/web-access/vendor/openai-search.js +459 -0
  426. package/dist/humain/web-access/vendor/openai-search.js.map +1 -0
  427. package/dist/humain/web-access/vendor/page-query.d.ts +16 -0
  428. package/dist/humain/web-access/vendor/page-query.d.ts.map +1 -0
  429. package/dist/humain/web-access/vendor/page-query.js +79 -0
  430. package/dist/humain/web-access/vendor/page-query.js.map +1 -0
  431. package/dist/humain/web-access/vendor/parallel.d.ts +12 -0
  432. package/dist/humain/web-access/vendor/parallel.d.ts.map +1 -0
  433. package/dist/humain/web-access/vendor/parallel.js +343 -0
  434. package/dist/humain/web-access/vendor/parallel.js.map +1 -0
  435. package/dist/humain/web-access/vendor/pdf-extract.d.ts +44 -0
  436. package/dist/humain/web-access/vendor/pdf-extract.d.ts.map +1 -0
  437. package/dist/humain/web-access/vendor/pdf-extract.js +298 -0
  438. package/dist/humain/web-access/vendor/pdf-extract.js.map +1 -0
  439. package/dist/humain/web-access/vendor/perplexity.d.ts +20 -0
  440. package/dist/humain/web-access/vendor/perplexity.d.ts.map +1 -0
  441. package/dist/humain/web-access/vendor/perplexity.js +159 -0
  442. package/dist/humain/web-access/vendor/perplexity.js.map +1 -0
  443. package/dist/humain/web-access/vendor/querit.d.ts +10 -0
  444. package/dist/humain/web-access/vendor/querit.d.ts.map +1 -0
  445. package/dist/humain/web-access/vendor/querit.js +335 -0
  446. package/dist/humain/web-access/vendor/querit.js.map +1 -0
  447. package/dist/humain/web-access/vendor/render-search-error.d.ts +57 -0
  448. package/dist/humain/web-access/vendor/render-search-error.d.ts.map +1 -0
  449. package/dist/humain/web-access/vendor/render-search-error.js +130 -0
  450. package/dist/humain/web-access/vendor/render-search-error.js.map +1 -0
  451. package/dist/humain/web-access/vendor/rsc-extract.d.ts +12 -0
  452. package/dist/humain/web-access/vendor/rsc-extract.d.ts.map +1 -0
  453. package/dist/humain/web-access/vendor/rsc-extract.js +329 -0
  454. package/dist/humain/web-access/vendor/rsc-extract.js.map +1 -0
  455. package/dist/humain/web-access/vendor/search1api.d.ts +10 -0
  456. package/dist/humain/web-access/vendor/search1api.d.ts.map +1 -0
  457. package/dist/humain/web-access/vendor/search1api.js +251 -0
  458. package/dist/humain/web-access/vendor/search1api.js.map +1 -0
  459. package/dist/humain/web-access/vendor/searchinfinity.d.ts +8 -0
  460. package/dist/humain/web-access/vendor/searchinfinity.d.ts.map +1 -0
  461. package/dist/humain/web-access/vendor/searchinfinity.js +229 -0
  462. package/dist/humain/web-access/vendor/searchinfinity.js.map +1 -0
  463. package/dist/humain/web-access/vendor/searxng.d.ts +4 -0
  464. package/dist/humain/web-access/vendor/searxng.d.ts.map +1 -0
  465. package/dist/humain/web-access/vendor/searxng.js +238 -0
  466. package/dist/humain/web-access/vendor/searxng.js.map +1 -0
  467. package/dist/humain/web-access/vendor/serpbase.d.ts +4 -0
  468. package/dist/humain/web-access/vendor/serpbase.d.ts.map +1 -0
  469. package/dist/humain/web-access/vendor/serpbase.js +211 -0
  470. package/dist/humain/web-access/vendor/serpbase.js.map +1 -0
  471. package/dist/humain/web-access/vendor/serpdive.d.ts +8 -0
  472. package/dist/humain/web-access/vendor/serpdive.d.ts.map +1 -0
  473. package/dist/humain/web-access/vendor/serpdive.js +267 -0
  474. package/dist/humain/web-access/vendor/serpdive.js.map +1 -0
  475. package/dist/humain/web-access/vendor/source-check.d.ts +99 -0
  476. package/dist/humain/web-access/vendor/source-check.d.ts.map +1 -0
  477. package/dist/humain/web-access/vendor/source-check.js +205 -0
  478. package/dist/humain/web-access/vendor/source-check.js.map +1 -0
  479. package/dist/humain/web-access/vendor/ssrf-protection.d.ts +50 -0
  480. package/dist/humain/web-access/vendor/ssrf-protection.d.ts.map +1 -0
  481. package/dist/humain/web-access/vendor/ssrf-protection.js +466 -0
  482. package/dist/humain/web-access/vendor/ssrf-protection.js.map +1 -0
  483. package/dist/humain/web-access/vendor/storage.d.ts +55 -0
  484. package/dist/humain/web-access/vendor/storage.d.ts.map +1 -0
  485. package/dist/humain/web-access/vendor/storage.js +485 -0
  486. package/dist/humain/web-access/vendor/storage.js.map +1 -0
  487. package/dist/humain/web-access/vendor/summary-model-scope.d.ts +25 -0
  488. package/dist/humain/web-access/vendor/summary-model-scope.d.ts.map +1 -0
  489. package/dist/humain/web-access/vendor/summary-model-scope.js +98 -0
  490. package/dist/humain/web-access/vendor/summary-model-scope.js.map +1 -0
  491. package/dist/humain/web-access/vendor/summary-review.d.ts +26 -0
  492. package/dist/humain/web-access/vendor/summary-review.d.ts.map +1 -0
  493. package/dist/humain/web-access/vendor/summary-review.js +344 -0
  494. package/dist/humain/web-access/vendor/summary-review.js.map +1 -0
  495. package/dist/humain/web-access/vendor/tavily.d.ts +8 -0
  496. package/dist/humain/web-access/vendor/tavily.d.ts.map +1 -0
  497. package/dist/humain/web-access/vendor/tavily.js +194 -0
  498. package/dist/humain/web-access/vendor/tavily.js.map +1 -0
  499. package/dist/humain/web-access/vendor/tinyfish.d.ts +11 -0
  500. package/dist/humain/web-access/vendor/tinyfish.d.ts.map +1 -0
  501. package/dist/humain/web-access/vendor/tinyfish.js +331 -0
  502. package/dist/humain/web-access/vendor/tinyfish.js.map +1 -0
  503. package/dist/humain/web-access/vendor/utils.d.ts +20 -0
  504. package/dist/humain/web-access/vendor/utils.d.ts.map +1 -0
  505. package/dist/humain/web-access/vendor/utils.js +91 -0
  506. package/dist/humain/web-access/vendor/utils.js.map +1 -0
  507. package/dist/humain/web-access/vendor/video-extract.d.ts +16 -0
  508. package/dist/humain/web-access/vendor/video-extract.d.ts.map +1 -0
  509. package/dist/humain/web-access/vendor/video-extract.js +335 -0
  510. package/dist/humain/web-access/vendor/video-extract.js.map +1 -0
  511. package/dist/humain/web-access/vendor/xai-search.d.ts +13 -0
  512. package/dist/humain/web-access/vendor/xai-search.d.ts.map +1 -0
  513. package/dist/humain/web-access/vendor/xai-search.js +331 -0
  514. package/dist/humain/web-access/vendor/xai-search.js.map +1 -0
  515. package/dist/humain/web-access/vendor/youtube-extract.d.ts +27 -0
  516. package/dist/humain/web-access/vendor/youtube-extract.d.ts.map +1 -0
  517. package/dist/humain/web-access/vendor/youtube-extract.js +282 -0
  518. package/dist/humain/web-access/vendor/youtube-extract.js.map +1 -0
  519. package/dist/index.d.ts +7 -4
  520. package/dist/index.d.ts.map +1 -1
  521. package/dist/index.js +5 -2
  522. package/dist/index.js.map +1 -1
  523. package/dist/main.d.ts +2 -2
  524. package/dist/main.d.ts.map +1 -1
  525. package/dist/main.js +169 -102
  526. package/dist/main.js.map +1 -1
  527. package/dist/modes/agent-exec-mode.d.ts +14 -0
  528. package/dist/modes/agent-exec-mode.d.ts.map +1 -0
  529. package/dist/modes/agent-exec-mode.js +92 -0
  530. package/dist/modes/agent-exec-mode.js.map +1 -0
  531. package/dist/modes/index.d.ts +4 -2
  532. package/dist/modes/index.d.ts.map +1 -1
  533. package/dist/modes/index.js +2 -1
  534. package/dist/modes/index.js.map +1 -1
  535. package/dist/modes/interactive/components/assistant-message.d.ts +5 -2
  536. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  537. package/dist/modes/interactive/components/assistant-message.js +13 -4
  538. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  539. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  540. package/dist/modes/interactive/components/custom-editor.js +7 -0
  541. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  542. package/dist/modes/interactive/components/earendil-announcement.d.ts +5 -0
  543. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -0
  544. package/dist/modes/interactive/components/earendil-announcement.js +40 -0
  545. package/dist/modes/interactive/components/earendil-announcement.js.map +1 -0
  546. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  547. package/dist/modes/interactive/components/footer.js +1 -1
  548. package/dist/modes/interactive/components/footer.js.map +1 -1
  549. package/dist/modes/interactive/components/markdown-transform.d.ts +3 -0
  550. package/dist/modes/interactive/components/markdown-transform.d.ts.map +1 -0
  551. package/dist/modes/interactive/components/markdown-transform.js +19 -0
  552. package/dist/modes/interactive/components/markdown-transform.js.map +1 -0
  553. package/dist/modes/interactive/components/mermaid.d.ts +11 -0
  554. package/dist/modes/interactive/components/mermaid.d.ts.map +1 -0
  555. package/dist/modes/interactive/components/mermaid.js +75 -0
  556. package/dist/modes/interactive/components/mermaid.js.map +1 -0
  557. package/dist/modes/interactive/components/model-selector.d.ts +1 -1
  558. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  559. package/dist/modes/interactive/components/model-selector.js +16 -4
  560. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  561. package/dist/modes/interactive/components/scoped-models-selector.d.ts +4 -0
  562. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  563. package/dist/modes/interactive/components/scoped-models-selector.js +26 -0
  564. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  565. package/dist/modes/interactive/components/settings-selector.d.ts +8 -2
  566. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  567. package/dist/modes/interactive/components/settings-selector.js +30 -0
  568. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  569. package/dist/modes/interactive/components/user-message.d.ts +3 -1
  570. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  571. package/dist/modes/interactive/components/user-message.js +9 -2
  572. package/dist/modes/interactive/components/user-message.js.map +1 -1
  573. package/dist/modes/interactive/interactive-mode.d.ts +45 -9
  574. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  575. package/dist/modes/interactive/interactive-mode.js +581 -211
  576. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  577. package/dist/modes/interactive/theme/dark.json +1 -0
  578. package/dist/modes/interactive/theme/light.json +1 -0
  579. package/dist/modes/interactive/theme/theme-controller.d.ts +3 -0
  580. package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
  581. package/dist/modes/interactive/theme/theme-controller.js +10 -1
  582. package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
  583. package/dist/modes/interactive/theme/theme-schema.json +5 -1
  584. package/dist/modes/interactive/theme/theme.d.ts +2 -2
  585. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  586. package/dist/modes/interactive/theme/theme.js +24 -6
  587. package/dist/modes/interactive/theme/theme.js.map +1 -1
  588. package/dist/modes/json-event.d.ts +28 -0
  589. package/dist/modes/json-event.d.ts.map +1 -0
  590. package/dist/modes/json-event.js +12 -0
  591. package/dist/modes/json-event.js.map +1 -0
  592. package/dist/modes/print-mode.d.ts.map +1 -1
  593. package/dist/modes/print-mode.js +12 -2
  594. package/dist/modes/print-mode.js.map +1 -1
  595. package/dist/modes/rpc/rpc-client.d.ts +12 -5
  596. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  597. package/dist/modes/rpc/rpc-client.js +55 -1
  598. package/dist/modes/rpc/rpc-client.js.map +1 -1
  599. package/dist/modes/rpc/rpc-mode.d.ts +1 -1
  600. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  601. package/dist/modes/rpc/rpc-mode.js +13 -3
  602. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  603. package/dist/modes/rpc/rpc-types.d.ts +15 -0
  604. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  605. package/dist/modes/rpc/rpc-types.js.map +1 -1
  606. package/dist/package-manager-cli.d.ts.map +1 -1
  607. package/dist/package-manager-cli.js +11 -9
  608. package/dist/package-manager-cli.js.map +1 -1
  609. package/dist/rpc-entry.d.ts.map +1 -1
  610. package/dist/rpc-entry.js +3 -2
  611. package/dist/rpc-entry.js.map +1 -1
  612. package/dist/server/create-harness.d.ts +26 -0
  613. package/dist/server/create-harness.d.ts.map +1 -0
  614. package/dist/server/create-harness.js +104 -0
  615. package/dist/server/create-harness.js.map +1 -0
  616. package/dist/utils/abort.d.ts +5 -0
  617. package/dist/utils/abort.d.ts.map +1 -0
  618. package/dist/utils/abort.js +48 -0
  619. package/dist/utils/abort.js.map +1 -0
  620. package/dist/utils/clipboard.d.ts +1 -1
  621. package/dist/utils/clipboard.d.ts.map +1 -1
  622. package/dist/utils/clipboard.js +22 -2
  623. package/dist/utils/clipboard.js.map +1 -1
  624. package/dist/utils/management-http.d.ts +23 -0
  625. package/dist/utils/management-http.d.ts.map +1 -0
  626. package/dist/utils/management-http.js +50 -0
  627. package/dist/utils/management-http.js.map +1 -0
  628. package/dist/utils/paths.d.ts +3 -0
  629. package/dist/utils/paths.d.ts.map +1 -1
  630. package/dist/utils/paths.js +23 -1
  631. package/dist/utils/paths.js.map +1 -1
  632. package/dist/utils/tool-result-images.d.ts +19 -0
  633. package/dist/utils/tool-result-images.d.ts.map +1 -0
  634. package/dist/utils/tool-result-images.js +45 -0
  635. package/dist/utils/tool-result-images.js.map +1 -0
  636. package/dist/utils/tools-manager.d.ts.map +1 -1
  637. package/dist/utils/tools-manager.js +13 -25
  638. package/dist/utils/tools-manager.js.map +1 -1
  639. package/dist/utils/version-check.d.ts +4 -0
  640. package/dist/utils/version-check.d.ts.map +1 -1
  641. package/dist/utils/version-check.js +23 -5
  642. package/dist/utils/version-check.js.map +1 -1
  643. package/docs/compaction.md +2 -2
  644. package/docs/custom-provider.md +7 -5
  645. package/docs/extensions.md +30 -5
  646. package/docs/humain-terminal.md +21 -1
  647. package/docs/json.md +24 -19
  648. package/docs/keybindings.md +46 -14
  649. package/docs/models.md +32 -11
  650. package/docs/providers.md +9 -1
  651. package/docs/quickstart.md +39 -37
  652. package/docs/rpc.md +31 -11
  653. package/docs/sdk.md +21 -2
  654. package/docs/security.md +21 -21
  655. package/docs/session-format.md +14 -14
  656. package/docs/settings.md +4 -1
  657. package/docs/themes.md +5 -3
  658. package/docs/usage.md +7 -0
  659. package/examples/extensions/custom-compaction.ts +3 -18
  660. package/examples/extensions/custom-provider-anthropic/index.ts +5 -1
  661. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  662. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  663. package/examples/extensions/custom-provider-gitlab-duo/index.ts +5 -1
  664. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  665. package/examples/extensions/doom-overlay/wad-finder.ts +7 -3
  666. package/examples/extensions/gondolin/package-lock.json +2 -2
  667. package/examples/extensions/gondolin/package.json +1 -1
  668. package/examples/extensions/handoff.ts +4 -13
  669. package/examples/extensions/qna.ts +5 -9
  670. package/examples/extensions/sandbox/package-lock.json +2 -2
  671. package/examples/extensions/sandbox/package.json +1 -1
  672. package/examples/extensions/summarize.ts +9 -20
  673. package/examples/extensions/with-deps/package-lock.json +2 -2
  674. package/examples/extensions/with-deps/package.json +1 -1
  675. package/examples/rpc-extension-ui.ts +11 -2
  676. package/examples/sdk/02-custom-model.ts +2 -3
  677. package/examples/sdk/09-api-keys-and-oauth.ts +1 -1
  678. package/examples/sdk/12-full-control.ts +1 -1
  679. package/examples/sdk/README.md +1 -1
  680. package/npm-shrinkwrap.json +2771 -535
  681. package/package.json +40 -11
  682. package/src/humain/mcp-adapter/UPSTREAM.md +15 -0
  683. package/src/humain/mcp-adapter/upstream.json +7 -0
  684. package/src/humain/mcp-adapter/vendor/CHANGELOG.md +673 -0
  685. package/src/humain/mcp-adapter/vendor/LICENSE +21 -0
  686. package/src/humain/web-access/UPSTREAM.md +17 -0
  687. package/src/humain/web-access/upstream.json +23 -0
  688. package/src/humain/web-access/vendor/LICENSE +21 -0
@@ -0,0 +1,673 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [2.26.0] - 2026-08-14
11
+
12
+ ### Added
13
+ - Added per-server `requestHeadersCommand` support for deriving fail-closed HTTP headers from the exact outbound request on every Streamable HTTP or SSE call. Thanks @kgreen18 for PR #353.
14
+ - Added `settings.warnOnLargeDirectTools` to suppress the advisory for 75 or more resolved direct tools. Thanks @Roshvan for issue #358.
15
+
16
+ ### Changed
17
+ - Refined request-header command result handling types without changing runtime behavior.
18
+
19
+ ### Fixed
20
+ - Matched adapter-owned config and state paths to the host agent directory when Pi is rebranded, including its environment override and config directory. Thanks @mindplay-dk for issue #356.
21
+ - Avoided O(tools²) cross-server tool-name collision scans at startup by skipping collision candidates when selectors are absent and sharing one indexed candidate set when `includeTools` or `excludeTools` is configured. Thanks @mjlbach for PR #357 and @cataldoc for issue #354.
22
+
23
+ ## [2.25.0] - 2026-08-13
24
+
25
+ ### Added
26
+ - Added `settings.notifyOnStartupConnect` to suppress successful MCP startup connection notices. Thanks @pierre-mgmt for issue #341.
27
+ - Added compact self-rendered MCP proxy and direct-tool result rows by default, with `settings.toolResultRendering: "boxed"` for the legacy boxed row and `settings.collapsedResultLines` for 1-3 collapsed result lines. Thanks @pierre-mgmt for issue #349.
28
+
29
+ ### Changed
30
+ - Removed unused TypeScript declarations found by stricter compiler checks.
31
+
32
+ ### Fixed
33
+ - Kept `mcpScript` tool-call replies flowing when Pi runs as a Bun-compiled binary by starting worker execution without module-level top-level await. Thanks @AndreiKopylov for issue #340 and @thesobercoder for the verified fix.
34
+ - Fixed direct-tool server prefixes to preserve provider-valid underscores and hyphens, including `codebase-memory-mcp`, while retaining safe escaping, collision handling, and exact proxy routing. Thanks @mightymatth for issue #342 and @JasonLandbridge for issue #343.
35
+
36
+ ## [2.24.0] - 2026-08-13
37
+
38
+ ### Added
39
+ - Added per-server `searchKeywords` so `mcp({ search })` and `mcpScript` `tools.search` understand user-defined synonyms and aliases for tools. Keywords are keyed by tool name or glob and boost ranked and regex search only. They never appear in tool schemas, describe output, or the metadata cache. Thanks @Serisium for PR #336.
40
+
41
+ ### Fixed
42
+ - Interpolated environment placeholders in stdio server arguments. Thanks @vjik for issue #333.
43
+ - Kept remote `/mcp-auth` authorization links reachable before the callback input opens. Thanks @trevorleibert-mixpanel for PR #331.
44
+ - Cached OAuth credentials in memory and refreshed them after OAuth-backed 401 responses. Thanks @daniel-sampliner for PR #335.
45
+ - Sanitized MCP server-name prefixes for provider-safe tool names while preserving server resolution. Thanks @triple-dex for issue #334.
46
+ - Validated persisted npx resolver cache entries before reuse, including malformed and prototype-sensitive persisted keys.
47
+
48
+ ## [2.23.0] - 2026-08-11
49
+
50
+ ### Added
51
+ - Added interactive callback URL pasting to `/mcp-auth` for OAuth flows running on remote or headless machines. Thanks @trevorleibert-mixpanel for PR #330.
52
+
53
+ ### Fixed
54
+ - Stopped load-time MCP initialization from printing a TUI startup error when Pi action methods are not bound yet. Thanks @21307369 for issue #327.
55
+ - Kept interactive OAuth authorization URLs clickable as a single terminal hyperlink. Thanks @rfccg for PR #329.
56
+
57
+ ## [2.22.0] - 2026-08-11
58
+
59
+ ### Added
60
+ - Added the `pi-mcp-adapter/oauth` subpath for URL-bound OAuth token reuse by cooperating Pi extensions. Thanks @ThePhoenixCoding for issue #323.
61
+ - Added `oauth.logoUri` for OAuth Dynamic Client Registration, with validation that requires an absolute HTTP(S) URL. Thanks @grinich for PR #321.
62
+
63
+ ### Fixed
64
+ - Materialized binary MCP resources as private temporary files before model-facing output, with bounded per-session cleanup. Thanks @zenworr and @shaworr for PR #324.
65
+ - Named OAuth callback pages and dynamic client registrations after rebranded Pi hosts, while preserving stock Pi defaults and avoiding guessed client homepages. Thanks @grinich for PR #320.
66
+
67
+ ## [2.21.2] - 2026-08-09
68
+
69
+ ### Fixed
70
+ - Reported MCP servers still connecting after a zero-result tool search, so agents retry instead of treating the result as definitive. Thanks @Leon69924 for issue #316.
71
+ - Rejected malformed MCP config server entries and persisted OAuth credential records at their trust boundaries, so invalid local state fails before it reaches runtime connection or token code.
72
+ - Sized OAuth credential chunks below the Windows Credential Manager per-value limit, so oversized OAuth records persist on Windows instead of failing at every payload size. The previous 1800-character chunk size exceeded the 1280-character ceiling, which left the chunking added in #246 ineffective on Windows. Thanks @CrazyCoder for PR #318.
73
+
74
+ ## [2.21.1] - 2026-08-08
75
+
76
+ ### Changed
77
+ - Refined MCP elicitation and sampling handler TypeScript contracts without changing runtime behavior.
78
+
79
+ ### Fixed
80
+ - Rendered closed JSON Schema object shapes that use `additionalProperties: false`. Thanks @giuseppecrj for PR #313.
81
+ - Stopped app-only MCP tool calls from triggering model turns or persisting as UI intents. Thanks @VikashLoomba for issue #314.
82
+ - Restored MCP sampling builds with current Pi AI releases by using its compatibility entry point. Thanks @eric-kansas for issue #308.
83
+ - Simplified empty MCP form elicitation to one confirmation dialog. Thanks @shardulbee for issue #309.
84
+
85
+ ## [2.21.0] - 2026-08-06
86
+
87
+ ### Added
88
+ - Added MCP 2026-07-28 endpoint probing and defaulted curated remote setup presets to automatic protocol negotiation for stateless MCP servers.
89
+ - Added `resolveServerFromToolName` so permission brokers can map prefixed MCP tool names back to their owning server. Thanks @jagaliano for PR #295.
90
+ - Added per-server `oauth.skipIssuerMetadataValidation` for known-misconfigured OAuth servers. Thanks @embik for issue #297.
91
+ - Added a configurable `mcp.panel.save` keybinding for the MCP panel Save action. Thanks @tim-hilde for issue #299.
92
+ - Added `settings.agentPluginPaths` to load MCP servers from Agent Plugins 1.0 packages.
93
+
94
+ ### Changed
95
+ - Refined MCP endpoint probing internals with typed strategies while preserving request order, fallback behavior, and diagnostics.
96
+
97
+ ### Fixed
98
+ - Rejected Agent Plugin command paths that escape the plugin directory and skipped normalized server-name collisions instead of overwriting servers.
99
+ - Stopped `/mcp` from inspecting host-specific config files when host config discovery is disabled. Thanks @rtfmkiesel for issue #292.
100
+ - Stopped optional numeric `mcp` and `mcpScript` tool parameters from leaking TypeBox internal markers into serialized schemas. Thanks @RainbowXie for issue #289 and PR #290.
101
+ - Forwarded RFC 9207 OAuth callback issuers to the MCP SDK during manual authorization completion. Thanks @tkoenig for issue #293 and PR #294, and @ugur-murat-alt for independent live verification.
102
+ - Kept `mcpScript` `tools.describe()` from omitting parameter information when TypeScript shape rendering falls back. Thanks @sheurich for issue #288.
103
+ - Reduced repeated collapsed MCP result rendering allocation after large or truncated tool outputs. Thanks @cp-yu for issue #291.
104
+
105
+ ## [2.20.1] - 2026-08-04
106
+
107
+ ### Fixed
108
+ - Stopped server-side MCP app helper imports from requiring the legacy `@modelcontextprotocol/sdk` peer at extension load time, fixing peerless Pi installs of 2.20.0. Thanks @aryzing for issue #285 and @DevDominic, @Shinkicast, and @marceloid for confirmations.
109
+
110
+ ## [2.20.0] - 2026-08-04
111
+
112
+ ### Added
113
+ - Added an MCP tool approval broker event so permission extensions can allow, deny, or abstain on proxy, direct, `mcpScript`, resource, and iframe-originated MCP calls before the built-in `approveTools` prompt runs. Thanks @geshido for issue #279.
114
+ - Added opt-in per-server MCP protocol selection with `protocolVersion: "legacy" | "auto" | "2026-07-28"`. Legacy remains the default; auto negotiates the modern era with conservative legacy fallback, while the pinned mode fails instead of falling back. Thanks @mjfaga for PR #272.
115
+ - Added a strict TypeScript typecheck command and CI gate.
116
+
117
+ ### Changed
118
+ - Migrated the MCP client from the monolithic SDK v1 package to the stable modular `@modelcontextprotocol/client` and `@modelcontextprotocol/core` v2 packages. The stable release restores conservative legacy discovery fallback and declared JSON Schema dialect support while retaining strict OAuth issuer validation.
119
+
120
+ ### Fixed
121
+ - Renamed the MCP scripting tool to camel-case `mcpScript` because Anthropic rejects the previous underscore-form name. Thanks @ritvij14 for issue #278 and @wierdbytes for confirmation and the workaround.
122
+ - Pinned the Chrome DevTools setup preset and README examples to `chrome-devtools-mcp@1.6.0` instead of `@latest`, so reviewed scaffolded commands stay stable. Thanks @fitchmultz for issue #274.
123
+ - Removed the adapter's throwaway Streamable HTTP initialize probe. HTTP connections now initialize once on the real client and use narrowly classified SSE fallback, avoiding duplicate sessions and preventing authentication, cancellation, timeout, negotiation, and server failures from being misclassified as transport incompatibility.
124
+ - Stopped tokenless discovery requests, sandboxed MCP app documents, unrelated child windows, and app-opened popups from gaining session authority; discovery now serves a non-sensitive landing page, app HTML loads with a separate resource-only token, host messages accept only the app frame as their source, and the app response enforces sandboxing even when opened as a top-level page.
125
+
126
+ ## [2.19.0] - 2026-08-03
127
+
128
+ ### Added
129
+ - `mcp_script` now records each search, describe, and call with its input, outcome, and duration in result details; emitted, returned, and console values retain readable Maps, Sets, cycles, functions, symbols, and BigInts. Its docs now lead with the plain JavaScript agents write and position it as the primary MCP multi-call workflow surface.
130
+ - Documented how to hide the bundled `mcp-scripting` Pi skill while keeping the adapter extension installed. Thanks @aryzing for issue #267.
131
+ - Documented Linux revoked-keyring recovery in the OAuth guide and `_meta.ui.visibility` behavior in the MCP UI guide.
132
+
133
+ ### Changed
134
+ - `mcp_script` is now registered by default for trusted JavaScript MCP multi-call workflows, while `mcp` remains the right tool for status, discovery, auth, and single calls. Set `settings.scriptMode` to `false` to hide the tool.
135
+
136
+ ### Fixed
137
+ - `mcp_script` traces now include missing describe attempts, and shared acyclic values no longer render as circular in script output formatting.
138
+
139
+ ## [2.18.0] - 2026-08-02
140
+
141
+ ### Added
142
+ - Added `settings.freezeDirectTools` to keep direct MCP tool registration stable after initial sync while preserving explicit reconnect refreshes. Thanks @ddfourtwo for PR #254.
143
+ - Added best-effort Linux OAuth credential recovery when Pi inherits a revoked session keyring, allowing explicit re-authentication through a fresh `keyctl` session helper. Thanks @anthod0 for issue #248 and the validation prototype.
144
+ - Ranked, paginated MCP tool search: best matches come first in a short page of 12 instead of an unranked dump of every match with full schemas, so the model stops guessing and each search costs a fraction of the tokens. Misses on describe/call now return top-5 "Did you mean" suggestions, letting the model self-correct a typo or missing prefix in the same turn instead of burning a round trip.
145
+ - Optional `approveTools` patterns (global and per-server) add the missing middle tier between "tool runs instantly" and "tool hidden entirely": flag risky tools and Pi asks before running them — Allow once / Allow for session / Deny — across proxy, direct, resource, and iframe-originated calls. Safe tools keep full speed; a deny is a normal result the model adapts to, not a crash.
146
+ - Opt-in `mcp_script` trusted JavaScript MCP scripting turns N-step jobs into one call: loop, filter, and chain tools for tool-restricted subagents where every round trip costs child context. Scripts discover tools with `await tools.search({ query })`, inspect exact shapes with `await tools.describe({ path })`, and call them with `tools.call(path, args)` — no more guessing names from outside the script. A runaway script can never freeze Pi itself: scripts run isolated from the main process and are force-stopped at their time limit, even if stuck in an infinite loop. Result details include a `calls` trace of every invoked path and outcome, and a bundled `mcp-scripting` skill teaches the full workflow on demand. Every scripted call still goes through auth, output guarding, and the approval gate.
147
+ - HTTP connection failures are now probe-classified into a plain-language diagnosis (for example "endpoint returned HTML (200) — this URL does not appear to speak MCP") instead of an opaque "fetch failed", so setup mistakes are fixed in seconds. Healthy connections are never probed.
148
+ - Tool parameters render as compact TypeScript shapes (`{ query: string; limit?: number }`) in describe and search, replacing multi-line schema dumps — the model reads less and acts sooner, with the previous formatting kept as a fallback for exotic schemas.
149
+ - `/mcp setup` gained curated one-click presets (DeepWiki, Context7, Notion, GitHub, Chrome DevTools): pick, preview the exact config write, confirm — new servers in under a minute with no hand-typed setup.
150
+
151
+ The ranked search scoring, did-you-mean suggestions, approval patterns, endpoint shape probe, TypeScript-shaped schemas, and codemode design in this release are adapted from [Executor](https://github.com/UsefulSoftwareCo/executor) by Rhys Sullivan (@RhysSullivan). Thanks Rhys.
152
+
153
+ ### Fixed
154
+ - Brought MCP Apps UI hosting in line with the current spec: provider HTML now runs in a real sandbox, gets a restrictive default CSP even when the resource omits one, and `_meta.ui.visibility` is honored so app-only tools stay out of the model tool list while model-only tools cannot be called from the UI.
155
+ - MCP Apps UI sessions are now easier to open from Moshi and remote terminals: the local UI server uses Moshi-discoverable low ports, answers preview discovery probes, serves a loopback-only landing shell, prints Moshi/SSH access hints for remote sessions, and fits the host shell better in narrow in-app browsers. UI-submitted model context is now captured as a bounded handoff, wakes the agent like prompts and intents, and remains available through `mcp({ action: "ui-messages" })` after the UI closes.
156
+
157
+ ## [2.17.0] - 2026-07-31
158
+
159
+ ### Added
160
+ - Added `settings.mcpFooterStatus` to compact or hide the persistent MCP footer status. Thanks @jwintz for issue #5.
161
+ - Added per-server OAuth `authorizationParams` for provider-specific authorization URL parameters such as Google's `access_type=offline`, while rejecting OAuth flow-owned parameter overrides. Thanks @hank-warren for issue #238.
162
+
163
+ ### Fixed
164
+ - Added a best-effort absolute-path fallback for loading the `@napi-rs/keyring` native binding when compiled Pi/Bun cannot resolve the package loader. Thanks @sgiath for issue #230.
165
+ - Bound collapsed MCP tool result rendering by character count as well as line count, preventing huge single-line results from slowing long TUI sessions. Thanks @Whisperfall for issue #249.
166
+ - Let configured `oauth.scope` override OAuth discovery scopes during authorization flows. Thanks @viggy28 for issue #225 and @adity982 for PR #226.
167
+
168
+ ## [2.16.0] - 2026-07-30
169
+
170
+ ### Added
171
+ - Added an optional per-server `toolPrefix` override for direct MCP tools, prompts, and proxy summaries, falling back to the global prefix when unset. Thanks @FurryWolfX for issue #229.
172
+ - Added an advisory warning when resolved direct tools pass the documented 75-tool threshold, with no cap or enforcement. Thanks @JasonLandbridge for issue #240.
173
+
174
+ ### Changed
175
+ - Restored the MCP SDK v1 client for compatibility with deployed MCP servers and OAuth providers. This rollback temporarily removes SDK v2-only protocol negotiation while retaining OAuth issuer binding and callback issuer validation. Thanks @hyknerf for PR #237 and issue #236, @leonfox28 for issue #227, and @JorelLatraille for issue #241.
176
+
177
+ ### Fixed
178
+ - Avoided a double-close race when disconnecting MCP connections by letting the SDK client own transport shutdown. Thanks Szymon Wiszczuk (@golota60) for PR #235.
179
+ - Prevented `/mcp` and `/mcp-auth` from crashing when the OS OAuth credential store is unavailable.
180
+ - Stored oversized OAuth credential payloads as secure-store manifests plus chunks, so Windows Credential Manager value limits no longer block OAuth completion for large token records. Thanks @LysanderdeJong for issue #223.
181
+ - Stored OAuth credential payloads as compact JSON, so multiline secrets no longer corrupt gnome-keyring plaintext keyrings. Thanks @hank-warren for issue #239.
182
+ - Kept collapsed MCP tool results from re-wrapping full multi-10KB payloads on repeated TUI renders, avoiding composer keystroke lag after large MCP dumps. Thanks @hyknerf for PR #233 and @chapmanb for the held-Text follow-up fix.
183
+
184
+ ## [2.15.0] - 2026-07-25
185
+
186
+ ### Added
187
+ - Added native `rmcp-mux` Unix-socket connections for explicitly sharing external MCP server processes across Pi sessions. Thanks j0e1 (@pWoLiAn) for issue #76.
188
+ - Added connection-time command resolution for HTTP bearer tokens and headers, OAuth client secrets, and stdio environment values, with `!!` escaping and fail-closed execution. Thanks @estrizhok for issue #221.
189
+
190
+ ### Fixed
191
+ - Treated null optional server URLs as absent and cleaned unpublished runtimes after initialization failures, preventing `not_initialized` sessions with surviving MCP children. Thanks @autopeasant for the diagnosis in issue #222.
192
+ - Registered env-selected direct MCP tools before child `agent_start` when their metadata cache must be populated first. Thanks @peedrr for the original report in pi-subagents issue #638 and issue #219.
193
+
194
+ ## [2.14.0] - 2026-07-25
195
+
196
+ ### Added
197
+ - Added the global `settings.showStatusIcon` opt-out for plain `MCP: ...` status and connection text while keeping the plug icon enabled by default. Thanks @vaultboy001 for issue #216.
198
+
199
+ ### Fixed
200
+ - Deferred implicit OAuth credential-store access until an HTTP server actually challenges for authentication, so unauthenticated remote Streamable HTTP servers work in headless environments. Thanks @vdom-1 for issue #218.
201
+ - Accepted draft-07 tool output schemas alongside JSON Schema 2020-12 while preserving structured-content validation. Thanks Daniel Marbach (@danielmarbach) for issue #217.
202
+
203
+ ## [2.13.0] - 2026-07-25
204
+
205
+ ### Added
206
+ - Added a versioned, sanitized MCP runtime status snapshot on Pi's shared event bus for extensions, without connecting lazy servers or exposing SDK internals. Thanks Ludev (@ludevdot) for issue #110.
207
+ - Added opt-in host-specific MCP config discovery with source/provenance and conflict reporting. Standard shared and Pi-owned config precedence remains unchanged, and external host files are never written or silently executed. Thanks @lsmir2 for issue #169.
208
+ - Added opt-in metadata-only JSONL MCP protocol tracing with bounded per-session files and redaction. Thanks @66-firebat for issue #45.
209
+ - Added per-server `includeTools` allowlists with exact-name and glob matching for proxy, direct-tool, and `/mcp` panel surfaces. Thanks Finn (@finnvyrn) for issue #136.
210
+ - Made `mcp({ connect: "server" })` refresh an already connected server instead of reusing stale tool metadata. Thanks Sebastiano Poggi (@rock3r) for issue #28 and @theflysurfer for the refresh analysis.
211
+ - Added a plug icon prefix to MCP footer status text. Thanks Felipe Cadal (@cadal-cw) for issue #145.
212
+ - Discovered user-global MCP configs from `~/.agents/mcp.json` and `~/.agents/mcp/mcp.json`. Thanks David Jadczyk (@davidjadczyk) for issue #117.
213
+ - Accepted JSONC-style comments and trailing commas in MCP JSON config files. Thanks @GoCoder7 for issue #124.
214
+
215
+ ### Changed
216
+ - Measured and spilled oversized raw MCP result details as compact JSON instead of pretty-printed JSON, reducing hot-path allocation and event-loop work. Thanks José Maia (@glitch-ux) for issue #214 and PR #215.
217
+ - Renamed generated MCP resource tools from `get_<resource>` to `read_<resource>` to match the MCP `resources/read` operation. Thanks @vdom-1 for issue #185.
218
+
219
+ ### Security
220
+ - Moved persistent OAuth credentials from plaintext `tokens.json` files into the operating system credential store, with one-way legacy import and fail-closed behavior when secure storage is unavailable. Thanks Sam Atkins (@atkinsam) for issue #180.
221
+
222
+ ### Fixed
223
+ - Skipped `resources/list` for MCP servers that do not advertise the `resources` capability, matching the existing prompt discovery gate and silencing the SDK v2 debug line that tools-only servers printed on every connect. Thanks Aleksandr Davydenko (@kotuke) for PR #213.
224
+ - Made the MCP footer show enabled configured servers as the primary count, with active connections as secondary state, so lazy servers no longer look broken before first use or after idle shutdown. Thanks blumlaut (@Blumlaut) for issue #93.
225
+ - Show the actual proxied MCP server/tool name in `mcp` tool results. Thanks Finn (@finnvyrn) and @dillontkh for issue #68.
226
+ - Removed the remaining TypeScript import cycles reported by `madge`. Thanks @av1155 for issue #101.
227
+
228
+ ## [2.12.1] - 2026-07-24
229
+
230
+ ### Fixed
231
+ - Restored the SDK v1 dependency required by the MCP Apps bridge during Pi managed installs, where peer dependencies are intentionally not auto-installed. Thanks Nikolai Ugelvik (@NikolaiUgelvik), @warmwaffles, and @max-miller1204 for issue #212.
232
+
233
+ ## [2.12.0] - 2026-07-24
234
+
235
+ ### Added
236
+ - Added MCP prompts support as Pi slash commands under the `mcp__<server>__<prompt>` namespace, with capability-gated discovery, cache-backed startup registration, argument validation, lazy dispatch, and `/mcp prompts` listing. Thanks to Egor Egorov (@ee92) for PR #203.
237
+ - Hot-loaded refreshed direct MCP tools after metadata reconnects, lazy connects, direct-tool panel changes, and MCP list-change notifications. Thanks Devin Bost (@devinbost) for PR #72.
238
+ - Migrated the MCP client and interactive visualizer to the exact-pinned MCP SDK v2 beta.5 packages, with automatic protocol negotiation and client conformance coverage. Thanks Matt Carey (@mattzcarey) for PR #210.
239
+ - Added disabled MCP server definitions plus `/mcp disable` and `/mcp enable` project-local overrides that preserve visibility while preventing execution. Thanks Ömer Ulusoy (@ulusoyomer) for PR #61.
240
+ - Added argument completions for `/mcp` subcommands and reconnect/logout server names. Thanks @sting8k for PR #8.
241
+ - Surfaced MCP connection failure reasons from bounded stdio diagnostics in status output and the `/mcp` panel, with a shortcut to copy the selected failure. Thanks @parkuman for PR #197.
242
+ - Added Codex MCP imports from `.codex/config.toml`, with fallback to the existing JSON config. Thanks @npo-mmenke for PR #31.
243
+ - Added explicit OpenCode V1 MCP imports from global and project `opencode.json` files, including nested config merging and environment interpolation. Thanks @NicoAvanzDev for PR #25.
244
+ - Added environment-variable interpolation for HTTP MCP server URLs, with missing URL variables failing closed before requests are sent. Thanks @ozeias for PR #206.
245
+ - Added `settings.oauthDir` to store MCP OAuth credentials in a project-specific directory, with `MCP_OAUTH_DIR` still taking precedence. Thanks @Termina1 for PR #105.
246
+ - Added `lazy-keep-alive` lifecycle mode for MCP servers that should start on first use and then stay resident with health-check reconnects. Thanks @ricardoraposo for PR #143.
247
+ - Added `MCP_UI_VIEWER=none` / `off` / `disabled` to suppress MCP UI browser or Glimpse windows while keeping inline tool results available. Thanks @stevekrouse for PR #172.
248
+ - Surfaced MCP server `instructions` from the initialize handshake: captured at connect time, cached alongside tool metadata, shown as a truncated head in the `mcp` proxy tool description, previewed in `mcp({ server: "name" })` listings, and available in full via the new `mcp({ instructions: "name" })` mode. Thanks @JeongJuhyeon for issue #188 and PR #189.
249
+ - Added `createMcpAdapter({ config, configPath })` for isolated SDK configuration and file-path overrides. Thanks @Cansiny0320 for PR #86.
250
+
251
+ ### Changed
252
+ - Removed stale hot-loaded direct tools from Pi's registry when `pi.unregisterTool()` is available, while preserving active-tool deactivation fallback for older Pi hosts.
253
+ - Deferred loading the regex safety checker until regex search is used, improving startup time. Thanks @kaushikgopal for PR #175.
254
+ - Declared Pi host packages as optional peer dependencies with exact development pins, reducing extension install footprint and avoiding host version conflicts. Thanks @t0dorakis for PR #200.
255
+
256
+ ### Fixed
257
+ - Started MCP initialization at extension load when any server is configured with `lifecycle: "eager"` or `"keep-alive"`, so hosts that drive Pi programmatically without `session_start` still connect startup servers. Thanks Brian Gebel (@ductiletoaster) for PR #170.
258
+ - Enforced normalized standard `_meta.ui.csp` and OpenAI-compatible `_meta["openai/widgetCSP"]` metadata with response headers while preserving provider HTML. Thanks @IdoHadar for PR #195.
259
+ - Avoided MCP renderer crashes without a TUI theme and preserved status-bar updates with plain fallback text. Thanks @fankangsong for PR #183.
260
+ - Abandoned MCP initialization quietly when a session is disposed during eager or keep-alive connection setup. Thanks @luisfontes for PR #192.
261
+ - Fenced MCP runtime ownership across Pi reloads so stale callbacks and late connections cannot outlive their session. Thanks @uuunk (Paul Lorsbach) for PR #202.
262
+ - Added `toolPrefix: "mcp"` support for `mcp__<server>_<tool>` names across direct and proxy MCP tool paths. Thanks @riicodespretty for PR #99.
263
+ - Sanitized dotted MCP tool names before registering them with Pi. Thanks @benjaminrickels for PR #190.
264
+ - Reconnected OAuth MCP servers automatically after successful panel or `/mcp-auth` authorization, and made panel reconnect force a fresh connection like `/mcp reconnect`. Thanks @mightymatth for issue #171.
265
+ - Recovered stale Streamable HTTP MCP sessions that report `-32000 Server not initialized` after a server restart. Thanks @vicary for issue #184.
266
+ - Kept npm cache lookups working on Windows by resolving `npm` through `cross-spawn`. Thanks @zeyadhost for PR #201.
267
+ - Kept direct MCP tool registration working when a host TypeBox shim does not expose `Type.Unsafe`. Thanks @RaviTharuma for PR #198.
268
+ - Kept exact `npx` package specs from reusing a different same-name package version from npm's `_npx` cache. Thanks @danhrahal for issue #178.
269
+ - Kept POST-only Streamable HTTP servers on the Streamable HTTP transport when the optional GET stream returns 405. Thanks @ramhaidar for issue #204.
270
+ - Kept manual OAuth `auth-start` / `auth-complete` flows from being invalidated by keep-alive health checks, and made reserved manual callback states show a manual completion page instead of a CSRF error. Thanks @oozle for issue #207.
271
+ - Accepted object-valued `mcp.args` in addition to JSON strings, avoiding double-encoded tool arguments while preserving provider-compatible string calls. Thanks @johnny-smitherson for issue #205.
272
+ - Collapsed long single-line MCP results according to terminal-wrapped visual lines. Thanks @xz-dev for PR #181 and @maxpaulus43 for PR #177.
273
+ - Recovered Streamable HTTP MCP sessions after a server restart invalidates the previous session ID. Thanks @damselem for PR #194.
274
+ - Used server-advertised OAuth protected-resource metadata during authorization so resource servers can point Pi at the correct authorization server. Thanks @jameswarren for issue #173 and PR #174.
275
+ - Dropped inherited HTTP auth when a higher-precedence MCP config repoints a server URL, while preserving explicit OAuth disable flags. Thanks @ductiletoaster for PR #182.
276
+
277
+ ## [2.11.0] - 2026-07-03
278
+
279
+ ### Changed
280
+ - Restored the tracked npm lockfile for reproducible installs and downstream packaging. Thanks @fmoda3 for issue #71.
281
+
282
+ ### Added
283
+ - Added default-on MCP output guarding with temp-file spillover for oversized text results, compact summaries for large proxy result details, and `settings.outputGuard` tuning. Thanks @tmustier for PR #160.
284
+
285
+ ### Fixed
286
+ - Defaulted stdio MCP servers without an explicit `cwd` to the Pi session cwd so relative server output lands in the workspace. Thanks @TimoFreiberg for PR #152.
287
+ - Kept multiline/control MCP panel metadata from corrupting rows and made Keep & Close save dirty changes. Thanks @gpmarques for issue/PR #14, @Vahor for issue #115, and @markokocic for issue #134/PR #135.
288
+ - Preserved `--` separators when resolving `npx` wrapper commands so subcommand flags are not consumed by tools like `dotenv-cli`. Thanks @sherif-fanous for issue #15.
289
+ - Merged partial per-server Pi overrides into imported MCP server definitions instead of replacing the full server entry. Thanks @cfbraun for issue #94.
290
+ - Fixed the `pi-mcp-adapter` bin entrypoint when invoked through installed symlinks, so `init` runs instead of silently exiting. Thanks @cfbraun for issue #95.
291
+ - Normalized direct MCP tool schemas so draft metadata and strict top-level additional properties do not break Pi registration. Thanks @marchellodev for issue #2/PR #3 and @comtihon for PR #144.
292
+ - Routed interactive `/mcp-auth` OAuth URLs through Pi UI notifications so long authorization links remain intact instead of being truncated by raw terminal output. Thanks @feoh for issue #147/PR #148.
293
+ - Respected configured HTTP headers before implicit OAuth auto-detection so API-key/custom-header MCP servers do not trigger OAuth DCR. Thanks @OnlyXianzo for issue #158.
294
+ - Propagated Pi abort signals into MCP connect, resource, and tool requests so cancelled calls settle promptly. Thanks @xz-dev for PR #159 and @murrayju for PR #149.
295
+ - Re-flagged failed MCP tool calls (`tool_error`/`call_failed`) as errors so they are recorded as failures (`isError: true`) instead of successes. Thanks @ishinder for PR #157.
296
+ - Honored configured `requestTimeoutMs` during MCP connection, discovery, tool, resource, and UI proxy requests. Thanks @mizuikki for PR #155 and @danecando for PR #62.
297
+ - Rendered successful MCP `structuredContent` when servers return it without `content`. Thanks @dovixman for PR #146.
298
+
299
+ ## [2.10.0] - 2026-06-13
300
+
301
+ ### Added
302
+ - Added manual remote/headless OAuth proxy actions for copying authorization URLs and completing pasted redirect URLs or codes. Thanks @Gabrielgvl for PR #120.
303
+
304
+ ### Fixed
305
+ - Honored user `tui.select.*` keybindings in MCP management, setup, and auth panels. Thanks @owenniles for PR #138.
306
+ - Included configured OAuth scopes in authorization-code flows while preserving token endpoint authentication method selection. Thanks @carlosdagos for PR #140.
307
+ - Fixed MCP elicitation on stock Pi, including form dialogs with validation and review, consent-based URL handling, URL-required errors, completion notifications, and TUI-only browser navigation. Thanks @dmmulroy for PR #139.
308
+ - Expanded MCP schema formatting for nested `anyOf`/`oneOf` variants, `const` discriminators, nested object properties, and array items.
309
+
310
+ ## [2.9.0] - 2026-06-04
311
+
312
+ ### Added
313
+ - Added MCP elicitation support with Pi form prompts and browser-opening URL requests.
314
+
315
+ ### Fixed
316
+ - Rejected non-http/https MCP URL elicitations before prompting or opening a browser.
317
+ - Preserved empty string form values for MCP string elicitations unless schema constraints reject them.
318
+
319
+ ## [2.8.0] - 2026-05-25
320
+
321
+ ### Added
322
+ - Added per-server OAuth `redirectUri`, `clientName`, and `clientUri` overrides for pre-registered callbacks and dynamic client metadata.
323
+
324
+ ### Fixed
325
+ - Avoided OAuth callback port exhaustion by starting the callback server lazily and using OS-assigned ports for dynamic OAuth flows.
326
+ - Re-register dynamic OAuth clients before browser auth when cached redirect URI metadata is missing or no longer matches the active callback URI.
327
+
328
+ ## [2.7.0] - 2026-05-22
329
+
330
+ ### Added
331
+ - Added TUI call rendering for MCP proxy and direct tool inputs. Thanks @dmmulroy for PR #102.
332
+
333
+ ### Fixed
334
+ - Hardened OAuth credential storage paths against server-name path traversal without rejecting valid configured server names.
335
+ - Rejected unsafe regex-mode MCP search patterns before executing them.
336
+
337
+ ## [2.6.1] - 2026-05-13
338
+
339
+ ### Added
340
+ - Added `/mcp logout <server>` to clear stored OAuth credentials and disconnect the server. Thanks @mattzcarey for PR #96.
341
+
342
+ ### Fixed
343
+ - Cancel pending OAuth callbacks when logging out of an MCP server.
344
+
345
+ ## [2.6.0] - 2026-05-10
346
+
347
+ ### Added
348
+ - Added a no-argument `/mcp-auth` OAuth picker and in-panel auth shortcut for OAuth-capable MCP servers.
349
+ - Added compact collapsed rendering for MCP proxy and direct-tool result rows while keeping full tool results available when expanded.
350
+
351
+ ### Changed
352
+ - Migrated Pi runtime dependencies and imports from deprecated `@mariozechner/*` packages to `@earendil-works/*` packages.
353
+
354
+ ### Fixed
355
+ - Re-register dynamic OAuth clients during fresh auth when cached DCR client info exists without tokens, avoiding dead authorization URLs after server-side client invalidation.
356
+ - Kept OAuth tokens, dynamic client info, PKCE verifiers, and OAuth state bound to the server URL so stale credentials cannot be reused after a server URL changes.
357
+ - Kept the `/mcp-auth` OAuth picker search focused on OAuth server rows and prevented hidden panel shortcuts from unexpectedly launching auth.
358
+ - Kept long MCP error results expanded in compact tool result rendering.
359
+
360
+ ## [2.5.4] - 2026-05-04
361
+
362
+ ### Changed
363
+ - Ignored npm lockfiles and removed checked-in `package-lock.json` files.
364
+
365
+ ### Fixed
366
+ - Resolved `${VAR}` and `$env:VAR` placeholders in HTTP bearer tokens.
367
+ - Honored MCP sampling `modelPreferences.hints` before falling back to the current/default model.
368
+
369
+ ## [2.5.3] - 2026-05-01
370
+
371
+ ### Added
372
+ - Added environment variable and `~` expansion for stdio server `cwd` values.
373
+
374
+ ## [2.5.2] - 2026-04-29
375
+
376
+ ### Fixed
377
+ - Respected `PI_CODING_AGENT_DIR` for Pi-owned MCP config and state files, including metadata cache, npx cache, onboarding state, OAuth credentials, and `pi-mcp-adapter init` writes.
378
+
379
+ ## [2.5.1] - 2026-04-24
380
+
381
+ ### Fixed
382
+ - Changed OAuth browser callbacks to `http://localhost:<port>/callback` for pre-registered clients such as Slack MCP. Thanks @shenal for PR #53.
383
+
384
+ ## [2.5.0] - 2026-04-24
385
+
386
+ ### Added
387
+ - Added MCP `sampling/createMessage` support with conservative human approval by default and opt-in `settings.samplingAutoApprove` for non-interactive flows.
388
+ - Added configured Vitest coverage for OAuth provider authorization fallback behavior.
389
+ - Added `test:oauth-provider` for running the root OAuth provider node test with the required TypeScript loader.
390
+
391
+ ### Fixed
392
+ - Applied `settings.authRequiredMessage` to proxy and direct-tool auth-required paths, including non-UI `autoAuth` failures.
393
+ - Fixed `/mcp-auth <server>` reporting success for expired stored OAuth tokens without forcing the SDK refresh/re-auth flow.
394
+ - Kept `mcp` search focused on MCP tools and added a direct-call hint when native Pi tools are accidentally routed through the proxy.
395
+
396
+ ## [2.4.2] - 2026-04-22
397
+
398
+ ### Fixed
399
+ - Migrated extension tool schemas from `@sinclair/typebox` to `typebox` 1.x so packaged installs follow Pi's current extension runtime contract.
400
+
401
+ ### Changed
402
+ - Replaced the legacy `@sinclair/typebox` runtime dependency with `typebox`.
403
+
404
+ ## [2.4.1] - 2026-04-22
405
+
406
+ ### Added
407
+ - Added standard-MCP-first config discovery: `~/.config/mcp/mcp.json` and project `.mcp.json` now load automatically, with Pi-owned files preserved as override layers.
408
+ - Added `pi-mcp-adapter init` as a native post-install helper that detects host-specific MCP configs and scaffolds Pi compatibility imports without using the old raw GitHub downloader flow.
409
+ - Added first-run onboarding inside the extension: `/mcp` now shows shared-config hints or actionable empty states, and `/mcp setup` opens a guided setup flow for compatibility imports, minimal `.mcp.json` scaffolding, detected config paths, RepoPrompt quick-add, and exact before/after write previews.
410
+ - Added automatic Pi-core reload after setup or direct-tool config changes, using the same flow as `/reload` so freshly configured direct tools can appear without a manual restart.
411
+ - Added a dedicated Pi-owned onboarding state file so shared-config hints behave as one-time guidance instead of repeating every session.
412
+
413
+ ### Changed
414
+ - Updated config precedence to prefer shared MCP files first, then Pi overrides, with `.pi/mcp.json` acting as the final Pi-specific project override.
415
+ - Updated Claude Code compatibility probing to prefer modern Claude MCP config locations before legacy paths.
416
+ - Updated project scaffolding so generated `.mcp.json` files are safe minimal shells instead of fake placeholder servers that fail on first reload.
417
+ - Updated the setup panel and README for clearer first-run guidance, improved spacing, and a more digestible shared-MCP-first setup story.
418
+
419
+ ## [2.4.0] - 2026-04-13
420
+
421
+ ### Added
422
+ - `settings.disableProxyTool` to hide the `mcp` proxy tool once configured direct tools are fully available from cache. Thanks @tanavamsikrishna for PR #41.
423
+ - Per-server `excludeTools` to hide specific MCP tools/resources by original or prefixed name across direct tools, proxy discovery, and the `/mcp` panel. Thanks @ahmadaccino for issue #36.
424
+ - `settings.autoAuth` to optionally trigger OAuth automatically from proxy/direct tool usage, then rerun the original blocked connect/tool operation once after authentication succeeds. Thanks @unimonkiez for issue #34.
425
+
426
+ ### Fixed
427
+ - Regenerated `package-lock.json` so the root lockfile metadata matches `package.json` again, including the declared `open`, `@types/bun`, `@types/open`, and `tsx` entries.
428
+ - Kept the `mcp` proxy tool available as a first-session fallback when configured direct tools are still missing cache metadata, avoiding no-tool startup gaps.
429
+
430
+ ## [2.3.5] - 2026-04-13
431
+
432
+ ### Fixed
433
+ - Session lifecycle now always tears down OAuth callback state on restart and shutdown, preventing callback-server leaks across session transitions.
434
+ - OAuth callback server now calls `unref()` after successful bind so it no longer keeps sub-agent processes alive by itself.
435
+ - Strict OAuth port mode now rebinds to the configured callback port when safe, while refusing to switch ports when authorizations are still pending.
436
+ - Added focused lifecycle/callback-server regression coverage for teardown, `unref()`, strict rebinding, and pending-auth guardrails.
437
+ - Thanks @blai for the investigation and PR #43 that surfaced the sub-agent hang/root lifecycle issues.
438
+
439
+ ## [2.3.4] - 2026-04-12
440
+
441
+ ### Fixed
442
+ - OAuth callback handling now allows dynamic-registration flows to fall back to a free local port when the preferred callback port is busy, while keeping pre-registered clients on their exact configured redirect port.
443
+ - Documented the new callback-port behavior and added focused auth-flow regression coverage.
444
+
445
+ ## [2.3.3] - 2026-04-12
446
+
447
+ ### Fixed
448
+ - Remove the blank footer status line when no MCP servers are configured by clearing the MCP status entry instead of setting it to an empty string. Thanks @HazAT for PR #27.
449
+
450
+ ## [2.3.2] - 2026-04-11
451
+
452
+ ### Added
453
+ - Optional `oauth.grantType: "client_credentials"` for non-interactive machine-to-machine OAuth on HTTP MCP servers.
454
+
455
+ ### Fixed
456
+ - `/mcp-auth <server>` now handles `client_credentials` without browser/callback flow.
457
+ - MCP panel status no longer marks `client_credentials` servers as auth-blocked solely because no stored user tokens exist yet.
458
+ - OAuth auth flow now closes temporary transports consistently on success, refresh, and auth removal paths.
459
+ - Init paths now preserve debug-level context for previously silent direct-tool bootstrap and lazy-connect failures.
460
+
461
+ ## [2.3.1] - 2026-04-11
462
+
463
+ ### Fixed
464
+ - Removed `/mcp-auth-callback`. OAuth auth now hard-cuts to `/mcp-auth <server>` only.
465
+
466
+ ## [2.3.0] - 2026-04-11
467
+
468
+ ### Added
469
+ - OAuth callback server initialization on session start and a deprecated `/mcp-auth-callback` command that now points users to `/mcp-auth <server>`.
470
+
471
+ ### Fixed
472
+ - OAuth `needs-auth` handling across `/mcp` status/panel, `mcp({ connect })`, `mcp({ tool })`, reconnect flow, lazy/direct tool execution, and startup bootstrap.
473
+ - OAuth callback cleanup now cancels by stored OAuth state and closes pending transports on failure/cancel paths.
474
+ - Callback server now fails fast when the OAuth callback port is occupied by another process.
475
+ - Package manifest test now ignores root `*.test.ts` files.
476
+
477
+ ## [2.2.2] - 2026-04-03
478
+
479
+ ### Fixed
480
+ - Session lifecycle teardown now handles repeated `session_start` transitions safely and prevents stale async init results from replacing newer state.
481
+ - Shutdown now still runs `gracefulShutdown()` even if metadata cache flushing throws, avoiding leaked MCP processes.
482
+ - Proxy/direct tool init error paths now preserve and surface underlying error messages instead of returning generic failures.
483
+ - Invalid `mcp` tool `args` now fail by throwing with parse/type context instead of returning non-failing tool payloads.
484
+ - Added focused lifecycle regressions tests for stale init cleanup and init-error visibility.
485
+
486
+ ## [2.2.1] - 2026-03-23
487
+
488
+ ### Fixed
489
+ - Added `promptSnippet` to MCP proxy tool and direct MCP tools so they appear in the system prompt's Available tools section (required since pi 0.59.0)
490
+
491
+ ## [2.2.0] - 2026-03-16
492
+
493
+ ### Added
494
+ - **MCP UI Integration** - Support for the [MCP UI](https://github.com/MCP-UI-Org/mcp-ui) standard. Tools with `_meta.ui.resourceUri` open interactive UIs:
495
+ - Bidirectional AppBridge communication (tool calls, messages, context updates)
496
+ - Works with both stdio and HTTP MCP servers
497
+ - User consent management for tool calls from UI (configurable: never/once-per-server/always)
498
+ - Keyboard shortcuts: Cmd/Ctrl+Enter to complete, Escape to cancel
499
+ - UI prompts/intents trigger agent turns via `pi.sendMessage({ triggerTurn: true })`
500
+ - `mcp({ action: "ui-messages" })` retrieves accumulated messages from UI sessions
501
+
502
+ - **Session reuse** - When the agent calls the same tool while its UI is already open, results push to the existing window instead of replacing it. Per-call stream IDs with independent sequences. Error results scoped to the individual call.
503
+
504
+ - **Glimpse integration** - MCP UI opens in a native macOS WKWebView window instead of a browser tab when [Glimpse](https://github.com/hazat/glimpse) is installed (`pi install npm:glimpseui`). Falls back to browser on non-macOS or when unavailable. Override with `MCP_UI_VIEWER=browser` or `MCP_UI_VIEWER=glimpse`.
505
+
506
+ - **Logger module** (`logger.ts`) - Centralized logging with levels (debug/info/warn/error), contextual child loggers, and `MCP_UI_DEBUG=1` env var.
507
+
508
+ - **Error types** (`errors.ts`) - Structured errors with recovery hints: `ResourceFetchError`, `ResourceParseError`, `BridgeConnectionError`, `ConsentError`, `SessionError`, `ServerError`, and `wrapError()` helper.
509
+
510
+ - **Test suite** - 178 tests covering consent manager, UI resource handler, host HTML template, logger, and error types.
511
+
512
+ - **Interactive visualizer example** (`examples/interactive-visualizer`) - Minimal MCP server demonstrating charts (bar/line/pie/doughnut via Chart.js), bidirectional messaging, and streaming.
513
+
514
+ ### Fixed
515
+ - Host-iframe timing: bridge now connects before loading iframe, fixing `ui/initialize` timeout on first load
516
+ - All internal `log.info` calls demoted to `log.debug` to eliminate stdout noise during normal use
517
+
518
+ ### Technical Notes
519
+ - Uses local minified AppBridge bundle (408KB) to avoid CDN Zod bundling issues
520
+ - Serves app HTML from `/ui-app` endpoint instead of blob URLs to avoid iframe issues
521
+ - SSE for real-time tool result streaming to browser
522
+
523
+ ## [2.1.2] - 2026-02-03
524
+
525
+ ### Changed
526
+ - Added demo video and `pi.video` field to package.json for pi package browser.
527
+
528
+ ## [2.1.0] - 2026-02-02
529
+
530
+ ### Added
531
+ - **Direct tool registration** - Promote specific MCP tools to first-class Pi tools via `directTools` config (per-server or global). Direct tools appear in the agent's tool list alongside builtins, so the LLM uses them without needing to search through the proxy first. Registers from cached metadata at startup — no server connections needed.
532
+ - **`/mcp` interactive panel** - New TUI overlay replacing the text-based status dump. Shows server connection status, tool lists with direct/proxy toggles, token cost estimates, inline reconnect, and auth notices. Changes written to config on save.
533
+ - **Auto-enriched proxy description** - The `mcp` proxy tool description now includes server names and tool counts from the metadata cache, so the LLM knows what's available without a search call (~30 extra tokens).
534
+ - **`MCP_DIRECT_TOOLS` env var** - Subagent processes receive their direct tool configuration via environment variable, keeping subagents lean by default.
535
+ - **First-run bootstrap** - Servers with `directTools` configured but no cache entry are connected during `session_start` to populate the cache. Direct tools become available after restart.
536
+ - Config provenance tracking for correct write-back to user/project/import sources
537
+ - Builtin name collision guard (skips direct tools that would shadow `read`, `write`, etc.)
538
+ - Cross-server name deduplication for `prefix: "none"` and `prefix: "short"` modes
539
+
540
+ ## [2.0.1] - 2026-02-01
541
+
542
+ ### Fixed
543
+ - Adapt execute signature to pi v0.51.0: add signal, onUpdate, ctx parameters
544
+
545
+ ## [2.0.0] - 2026-01-29
546
+
547
+ ### Changed
548
+ - **BREAKING: Lazy startup by default** - All servers now default to `lifecycle: "lazy"` and only connect when a tool call needs them. Previously all servers connected eagerly on session start. Set `lifecycle: "keep-alive"` or `lifecycle: "eager"` to restore the old behavior per-server.
549
+ - **Idle timeout** - Connected servers are automatically disconnected after 10 minutes of inactivity (configurable via `settings.idleTimeout` or per-server `idleTimeout`). Cached metadata keeps search/list working after disconnect. Set `idleTimeout: 0` to disable.
550
+ - `/mcp reconnect` accepts an optional server name to connect or reconnect a single server
551
+
552
+ ### Added
553
+ - **Metadata cache** - Tool and resource metadata persisted to `~/.pi/agent/mcp-cache.json`. Enables search/list/describe without live connections. Per-server config hashing with 7-day staleness. Multi-session safe via read-merge-write with per-process tmp files.
554
+ - **npx binary resolution** - Resolves npx package binaries to direct paths, eliminating the ~143 MB npm parent process per server. Persistent cache at `~/.pi/agent/mcp-npx-cache.json` with 24h TTL.
555
+ - **`mcp({ connect: "server-name" })` mode** - Explicitly trigger connection and metadata refresh for a named server
556
+ - **Failure backoff** - Servers that fail to connect are skipped for 60 seconds to avoid repeated connection storms
557
+ - **In-flight tracking** - Active tool calls prevent idle timeout from shutting down a server mid-request
558
+ - **Prefix-match fallback** - Tool calls with unrecognized names try to match a server prefix and lazy-connect the matching server
559
+ - Lifecycle options: `lazy` (default), `eager` (connect at startup, no auto-reconnect), `keep-alive` (unchanged)
560
+ - Per-server `idleTimeout` override and global `settings.idleTimeout`
561
+ - First-run bootstrap: connects all servers on first session to populate the cache
562
+
563
+ ### Fixed
564
+ - Connection close race condition: concurrent close + connect no longer orphans server processes
565
+ - **Fuzzy tool name matching** - Hyphens and underscores are treated as equivalent during tool lookup. MCP tools like `resolve-library-id` are now found when called as `resolve_library_id`, which LLMs naturally guess since the prefix separator is `_`.
566
+ - **Better "tool not found" errors** - When a server is identified (via prefix match or override) but the tool isn't found, the error now lists that server's available tools so the LLM can self-correct immediately instead of needing a separate list call
567
+
568
+ ## [1.6.0] - 2026-01-29
569
+
570
+ ### Added
571
+ - **Unified pi tool search** - `mcp({ search: "..." })` now searches both MCP tools and Pi tools (from installed extensions)
572
+ - Pi tools appear first in results with `[pi tool]` prefix
573
+ - Details object includes `server: "pi"` for pi tools
574
+ - Banner image for README
575
+
576
+ ## [1.5.1] - 2026-01-26
577
+
578
+ ### Changed
579
+ - Added `pi-package` keyword for npm discoverability (pi v0.50.0 package system)
580
+
581
+ ## [1.5.0] - 2026-01-22
582
+
583
+ ### Changed
584
+ - **BREAKING: `args` parameter is now a JSON string** - The `args` parameter which previously accepted an object now accepts a JSON string. This change was required for compatibility with Claude's Vertex AI API (`google-antigravity` provider) which rejects `patternProperties` in JSON schemas (generated by `Type.Record()`).
585
+
586
+ ### Added
587
+ - **Type validation for args** - Parsed args are now validated to ensure they're a JSON object (not null, array, or primitive). Clear error messages for invalid input.
588
+ - **`isError: true` on error responses** - JSON parse errors and type validation errors now properly set `isError: true` to indicate failure to the LLM.
589
+
590
+ ### Migration
591
+ ```typescript
592
+ // Before (1.4.x)
593
+ mcp({ tool: "my_tool", args: { key: "value" } })
594
+
595
+ // After (1.5.0)
596
+ mcp({ tool: "my_tool", args: '{"key": "value"}' })
597
+ ```
598
+
599
+ ## [1.4.1] - 2026-01-19
600
+
601
+ ### Changed
602
+
603
+ - Status bar shows server count instead of tool count ("MCP: 5 servers")
604
+
605
+ ## [1.4.0] - 2026-01-19
606
+
607
+ ### Changed
608
+
609
+ - **Non-blocking startup** - Pi starts immediately, MCP servers connect in background. First MCP call waits only if init isn't done yet.
610
+
611
+ ### Fixed
612
+
613
+ - Tool metadata now includes `inputSchema` after `/mcp reconnect` (was missing, breaking describe and error hints)
614
+
615
+ ## [1.3.0] - 2026-01-19
616
+
617
+ ### Changed
618
+
619
+ - **Parallel server connections** - All MCP servers now connect in parallel on startup instead of sequentially, significantly faster with many servers
620
+
621
+ ## [1.2.2] - 2026-01-19
622
+
623
+ ### Fixed
624
+
625
+ - Installer now downloads from `main` branch (renamed from `master`)
626
+
627
+ ## [1.2.1] - 2026-01-19
628
+
629
+ ### Added
630
+
631
+ - **npx installer** - Run `npx pi-mcp-adapter` to install (downloads files, installs deps, configures settings.json)
632
+
633
+ ## [1.1.0] - 2026-01-19
634
+
635
+ ### Changed
636
+
637
+ - **Search includes schemas by default** - Search results now include parameter schemas, reducing tool calls needed (search + call instead of search + describe + call)
638
+ - **Space-separated search terms match as OR** - `"navigate screenshot"` finds tools matching either word (like most search engines)
639
+ - **Suppress server stderr by default** - MCP server logs no longer clutter terminal on startup
640
+ - Use `includeSchemas: false` for compact output without schemas
641
+ - Use `debug: true` per-server to show stderr when troubleshooting
642
+
643
+ ## [1.0.0] - 2026-01-19
644
+
645
+ ### Added
646
+
647
+ - **Single unified `mcp` tool** with token-efficient architecture (~200 tokens vs ~15,000 for individual tools)
648
+ - **Five operation modes:**
649
+ - `mcp({})` - Show server status
650
+ - `mcp({ server: "name" })` - List tools from a server
651
+ - `mcp({ search: "query" })` - Search tools by name/description
652
+ - `mcp({ describe: "tool_name" })` - Show tool details and parameter schema
653
+ - `mcp({ tool: "name", args: {...} })` - Call a tool
654
+ - **Stdio transport** for local MCP servers (command + args)
655
+ - **HTTP transport** with automatic fallback (StreamableHTTP → SSE)
656
+ - **Config imports** from Cursor, Claude Code, Claude Desktop, VS Code, Windsurf, Codex
657
+ - **Resource tools** - MCP resources exposed as callable tools
658
+ - **OAuth support** - Token file-based authentication
659
+ - **Bearer token auth** - Static or environment variable tokens
660
+ - **Keep-alive connections** with automatic health checks and reconnection
661
+ - **Schema on-demand** - Parameter schemas shown in `describe` mode and error responses
662
+ - **Commands:**
663
+ - `/mcp` or `/mcp status` - Show server status
664
+ - `/mcp tools` - List all tools
665
+ - `/mcp reconnect` - Force reconnect all servers
666
+ - `/mcp-auth <server>` - Show OAuth setup instructions
667
+
668
+ ### Architecture
669
+
670
+ - Tools stored in metadata map, not registered individually with Pi
671
+ - MCP server validates arguments (no client-side schema conversion)
672
+ - Reconnect callback updates metadata after auto-reconnect
673
+ - Human-readable schema formatting for LLM consumption