@humain/terminal 0.0.18 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (360) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/dist/bun/cli.d.ts +3 -1
  3. package/dist/bun/cli.d.ts.map +1 -1
  4. package/dist/bun/cli.js +3 -8
  5. package/dist/bun/cli.js.map +1 -1
  6. package/dist/bun/runtime-setup.d.ts +2 -0
  7. package/dist/bun/runtime-setup.d.ts.map +1 -0
  8. package/dist/bun/runtime-setup.js +9 -0
  9. package/dist/bun/runtime-setup.js.map +1 -0
  10. package/dist/bun/sandbox-env-setup.d.ts +2 -0
  11. package/dist/bun/sandbox-env-setup.d.ts.map +1 -0
  12. package/dist/bun/sandbox-env-setup.js +4 -0
  13. package/dist/bun/sandbox-env-setup.js.map +1 -0
  14. package/dist/bundle/chunks/anthropic-messages-XULXUBIG.js +6 -0
  15. package/dist/bundle/chunks/{azure-openai-responses-ZN52D6YC.js → azure-openai-responses-JEG2XOYC.js} +1 -1
  16. package/dist/bundle/chunks/bedrock-converse-stream.js +6 -6
  17. package/dist/bundle/chunks/{chunk-ARF4OE6X.js → chunk-2LC3S3VV.js} +8 -8
  18. package/dist/bundle/chunks/chunk-43O5DDAH.js +31 -0
  19. package/dist/bundle/chunks/{chunk-H2O6VOXT.js → chunk-46DC2JD6.js} +2 -2
  20. package/dist/bundle/chunks/chunk-7ZC4UXSL.js +2 -0
  21. package/dist/bundle/chunks/{chunk-WJZ4KLGL.js → chunk-E6KP6V7F.js} +1 -1
  22. package/dist/bundle/chunks/{chunk-PSKDLDLZ.js → chunk-HPPQHK3J.js} +3 -3
  23. package/dist/bundle/chunks/chunk-JUPSJTFQ.js +42 -0
  24. package/dist/bundle/chunks/chunk-PL7O7J4J.js +133 -0
  25. package/dist/bundle/chunks/{chunk-QLVZGOBY.js → chunk-RM336IEI.js} +360 -352
  26. package/dist/bundle/chunks/chunk-USJZMAIR.js +2 -0
  27. package/dist/bundle/chunks/{extract-2L7ZVN7F.js → extract-TRW5FBY6.js} +2 -2
  28. package/dist/bundle/chunks/github-copilot.js +1 -1
  29. package/dist/bundle/chunks/{google-generative-ai-FF7M7XHT.js → google-generative-ai-OX6VSCA6.js} +1 -1
  30. package/dist/bundle/chunks/{google-vertex-YMUBFRBA.js → google-vertex-GW76GSS2.js} +1 -1
  31. package/dist/bundle/chunks/image-resize-worker.js +1 -1
  32. package/dist/bundle/chunks/{mistral-conversations-O4M7IQML.js → mistral-conversations-WXGXZOFJ.js} +1 -1
  33. package/dist/bundle/chunks/node-AUOGOBCN.js +2 -0
  34. package/dist/bundle/chunks/node-KOIP55YZ.js +16 -0
  35. package/dist/bundle/chunks/openai-codex-responses-NPLWP6ZC.js +10 -0
  36. package/dist/bundle/chunks/{openai-completions-L4AHDQ5D.js → openai-completions-OT2GTJKC.js} +3 -3
  37. package/dist/bundle/chunks/openai-responses-5A6CR7GI.js +2 -0
  38. package/dist/bundle/chunks/{openrouter-images-Y2PCWAQH.js → openrouter-images-YLQ4RJ2F.js} +1 -1
  39. package/dist/bundle/chunks/{pi-messages-57K43J6J.js → pi-messages-OJF77SY3.js} +1 -1
  40. package/dist/bundle/chunks/{undici-D6ABF53Q.js → undici-KA2LJNVT.js} +1 -1
  41. package/dist/bundle/chunks/webapi-RFAXLI2D.js +5 -0
  42. package/dist/bundle/cli.js +1 -1
  43. package/dist/bundle/index.js +1 -1
  44. package/dist/bundle/rpc-entry.js +1 -1
  45. package/dist/cli/config-selector.d.ts.map +1 -1
  46. package/dist/cli/config-selector.js +2 -1
  47. package/dist/cli/config-selector.js.map +1 -1
  48. package/dist/cli/setup.d.ts +2 -0
  49. package/dist/cli/setup.d.ts.map +1 -0
  50. package/dist/cli/setup.js +13 -0
  51. package/dist/cli/setup.js.map +1 -0
  52. package/dist/cli.js +2 -14
  53. package/dist/cli.js.map +1 -1
  54. package/dist/config.d.ts +1 -0
  55. package/dist/config.d.ts.map +1 -1
  56. package/dist/config.js +1 -0
  57. package/dist/config.js.map +1 -1
  58. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  59. package/dist/core/agent-session-runtime.js +15 -7
  60. package/dist/core/agent-session-runtime.js.map +1 -1
  61. package/dist/core/agent-session.d.ts +2 -6
  62. package/dist/core/agent-session.d.ts.map +1 -1
  63. package/dist/core/agent-session.js +14 -6
  64. package/dist/core/agent-session.js.map +1 -1
  65. package/dist/core/compaction/branch-summarization.d.ts +1 -1
  66. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  67. package/dist/core/compaction/branch-summarization.js +2 -1
  68. package/dist/core/compaction/branch-summarization.js.map +1 -1
  69. package/dist/core/extensions/loader.d.ts.map +1 -1
  70. package/dist/core/extensions/loader.js +1 -2
  71. package/dist/core/extensions/loader.js.map +1 -1
  72. package/dist/core/extensions/types.d.ts +8 -2
  73. package/dist/core/extensions/types.d.ts.map +1 -1
  74. package/dist/core/extensions/types.js.map +1 -1
  75. package/dist/core/http-dispatcher.d.ts.map +1 -1
  76. package/dist/core/http-dispatcher.js +2 -0
  77. package/dist/core/http-dispatcher.js.map +1 -1
  78. package/dist/core/keybindings.d.ts +5 -0
  79. package/dist/core/keybindings.d.ts.map +1 -1
  80. package/dist/core/keybindings.js +4 -0
  81. package/dist/core/keybindings.js.map +1 -1
  82. package/dist/core/messages.d.ts +1 -1
  83. package/dist/core/messages.d.ts.map +1 -1
  84. package/dist/core/messages.js.map +1 -1
  85. package/dist/core/model-config.d.ts +15 -0
  86. package/dist/core/model-config.d.ts.map +1 -1
  87. package/dist/core/model-config.js +3 -0
  88. package/dist/core/model-config.js.map +1 -1
  89. package/dist/core/model-runtime.d.ts +1 -0
  90. package/dist/core/model-runtime.d.ts.map +1 -1
  91. package/dist/core/model-runtime.js +5 -2
  92. package/dist/core/model-runtime.js.map +1 -1
  93. package/dist/core/provider-composer.d.ts.map +1 -1
  94. package/dist/core/provider-composer.js +8 -2
  95. package/dist/core/provider-composer.js.map +1 -1
  96. package/dist/core/session-manager.d.ts +3 -2
  97. package/dist/core/session-manager.d.ts.map +1 -1
  98. package/dist/core/session-manager.js +40 -13
  99. package/dist/core/session-manager.js.map +1 -1
  100. package/dist/core/settings-manager.js.map +1 -1
  101. package/dist/core/skills.d.ts +1 -1
  102. package/dist/core/skills.d.ts.map +1 -1
  103. package/dist/core/skills.js +4 -2
  104. package/dist/core/skills.js.map +1 -1
  105. package/dist/core/system-prompt.d.ts.map +1 -1
  106. package/dist/core/system-prompt.js +8 -9
  107. package/dist/core/system-prompt.js.map +1 -1
  108. package/dist/core/tools/bash.d.ts.map +1 -1
  109. package/dist/core/tools/bash.js +3 -120
  110. package/dist/core/tools/bash.js.map +1 -1
  111. package/dist/core/tools/edit.d.ts +1 -12
  112. package/dist/core/tools/edit.d.ts.map +1 -1
  113. package/dist/core/tools/edit.js +5 -163
  114. package/dist/core/tools/edit.js.map +1 -1
  115. package/dist/core/tools/find.d.ts.map +1 -1
  116. package/dist/core/tools/find.js +4 -55
  117. package/dist/core/tools/find.js.map +1 -1
  118. package/dist/core/tools/grep.d.ts.map +1 -1
  119. package/dist/core/tools/grep.js +4 -60
  120. package/dist/core/tools/grep.js.map +1 -1
  121. package/dist/core/tools/ls.d.ts.map +1 -1
  122. package/dist/core/tools/ls.js +4 -49
  123. package/dist/core/tools/ls.js.map +1 -1
  124. package/dist/core/tools/read.d.ts.map +1 -1
  125. package/dist/core/tools/read.js +4 -120
  126. package/dist/core/tools/read.js.map +1 -1
  127. package/dist/core/tools/renderers/bash.d.ts +12 -0
  128. package/dist/core/tools/renderers/bash.d.ts.map +1 -0
  129. package/dist/core/tools/renderers/bash.js +133 -0
  130. package/dist/core/tools/renderers/bash.js.map +1 -0
  131. package/dist/core/tools/renderers/edit.d.ts +23 -0
  132. package/dist/core/tools/renderers/edit.d.ts.map +1 -0
  133. package/dist/core/tools/renderers/edit.js +167 -0
  134. package/dist/core/tools/renderers/edit.js.map +1 -0
  135. package/dist/core/tools/renderers/find.d.ts +10 -0
  136. package/dist/core/tools/renderers/find.d.ts.map +1 -0
  137. package/dist/core/tools/renderers/find.js +64 -0
  138. package/dist/core/tools/renderers/find.js.map +1 -0
  139. package/dist/core/tools/renderers/grep.d.ts +10 -0
  140. package/dist/core/tools/renderers/grep.d.ts.map +1 -0
  141. package/dist/core/tools/renderers/grep.js +69 -0
  142. package/dist/core/tools/renderers/grep.js.map +1 -0
  143. package/dist/core/tools/renderers/index.d.ts +22 -0
  144. package/dist/core/tools/renderers/index.d.ts.map +1 -0
  145. package/dist/core/tools/renderers/index.js +48 -0
  146. package/dist/core/tools/renderers/index.js.map +1 -0
  147. package/dist/core/tools/renderers/ls.d.ts +10 -0
  148. package/dist/core/tools/renderers/ls.d.ts.map +1 -0
  149. package/dist/core/tools/renderers/ls.js +58 -0
  150. package/dist/core/tools/renderers/ls.js.map +1 -0
  151. package/dist/core/tools/renderers/read.d.ts +11 -0
  152. package/dist/core/tools/renderers/read.d.ts.map +1 -0
  153. package/dist/core/tools/renderers/read.js +129 -0
  154. package/dist/core/tools/renderers/read.js.map +1 -0
  155. package/dist/core/tools/renderers/write.d.ts +10 -0
  156. package/dist/core/tools/renderers/write.d.ts.map +1 -0
  157. package/dist/core/tools/renderers/write.js +152 -0
  158. package/dist/core/tools/renderers/write.js.map +1 -0
  159. package/dist/core/tools/write.d.ts.map +1 -1
  160. package/dist/core/tools/write.js +5 -145
  161. package/dist/core/tools/write.js.map +1 -1
  162. package/dist/humain/bedrock-provider/vendor/index.bundle.mjs +51 -12
  163. package/dist/humain/mcp-adapter/vendor/package.json +2 -2
  164. package/dist/humain/web-access/vendor/curator-page.d.ts.map +1 -1
  165. package/dist/humain/web-access/vendor/curator-page.js +3 -1
  166. package/dist/humain/web-access/vendor/curator-page.js.map +1 -1
  167. package/dist/humain/web-access/vendor/curator-server.d.ts +2 -0
  168. package/dist/humain/web-access/vendor/curator-server.d.ts.map +1 -1
  169. package/dist/humain/web-access/vendor/curator-server.js +4 -2
  170. package/dist/humain/web-access/vendor/curator-server.js.map +1 -1
  171. package/dist/humain/web-access/vendor/gemini-search.d.ts +2 -2
  172. package/dist/humain/web-access/vendor/gemini-search.d.ts.map +1 -1
  173. package/dist/humain/web-access/vendor/gemini-search.js +11 -4
  174. package/dist/humain/web-access/vendor/gemini-search.js.map +1 -1
  175. package/dist/humain/web-access/vendor/github-extract.d.ts.map +1 -1
  176. package/dist/humain/web-access/vendor/github-extract.js +238 -1
  177. package/dist/humain/web-access/vendor/github-extract.js.map +1 -1
  178. package/dist/humain/web-access/vendor/index.d.ts.map +1 -1
  179. package/dist/humain/web-access/vendor/index.js +118 -64
  180. package/dist/humain/web-access/vendor/index.js.map +1 -1
  181. package/dist/humain/web-access/vendor/mistral-search.d.ts +4 -0
  182. package/dist/humain/web-access/vendor/mistral-search.d.ts.map +1 -0
  183. package/dist/humain/web-access/vendor/mistral-search.js +274 -0
  184. package/dist/humain/web-access/vendor/mistral-search.js.map +1 -0
  185. package/dist/humain/web-access/vendor/perplexity.d.ts.map +1 -1
  186. package/dist/humain/web-access/vendor/perplexity.js +12 -1
  187. package/dist/humain/web-access/vendor/perplexity.js.map +1 -1
  188. package/dist/humain/web-access/vendor/utils.d.ts.map +1 -1
  189. package/dist/humain/web-access/vendor/utils.js +1 -2
  190. package/dist/humain/web-access/vendor/utils.js.map +1 -1
  191. package/dist/humain/web-access/vendor/xai-search.d.ts.map +1 -1
  192. package/dist/humain/web-access/vendor/xai-search.js +92 -35
  193. package/dist/humain/web-access/vendor/xai-search.js.map +1 -1
  194. package/dist/index.d.ts +1 -1
  195. package/dist/index.d.ts.map +1 -1
  196. package/dist/index.js.map +1 -1
  197. package/dist/main.d.ts.map +1 -1
  198. package/dist/main.js +4 -1
  199. package/dist/main.js.map +1 -1
  200. package/dist/modes/interactive/chat-viewport.d.ts +20 -0
  201. package/dist/modes/interactive/chat-viewport.d.ts.map +1 -0
  202. package/dist/modes/interactive/chat-viewport.js +28 -0
  203. package/dist/modes/interactive/chat-viewport.js.map +1 -0
  204. package/dist/modes/interactive/components/assistant-message.d.ts +1 -0
  205. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  206. package/dist/modes/interactive/components/assistant-message.js +18 -10
  207. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  208. package/dist/modes/interactive/components/custom-editor.d.ts +10 -1
  209. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  210. package/dist/modes/interactive/components/custom-editor.js +37 -1
  211. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  212. package/dist/modes/interactive/components/index.d.ts +1 -1
  213. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  214. package/dist/modes/interactive/components/index.js.map +1 -1
  215. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  216. package/dist/modes/interactive/components/model-selector.js +8 -17
  217. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  218. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  219. package/dist/modes/interactive/components/scoped-models-selector.js +21 -23
  220. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  221. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  222. package/dist/modes/interactive/components/settings-selector.js +14 -10
  223. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  224. package/dist/modes/interactive/components/status-indicator.d.ts +3 -1
  225. package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -1
  226. package/dist/modes/interactive/components/status-indicator.js +10 -3
  227. package/dist/modes/interactive/components/status-indicator.js.map +1 -1
  228. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  229. package/dist/modes/interactive/components/thinking-selector.js +4 -4
  230. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  231. package/dist/modes/interactive/components/tool-execution.d.ts +21 -4
  232. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  233. package/dist/modes/interactive/components/tool-execution.js +34 -32
  234. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  235. package/dist/modes/interactive/components/trust-selector.js +2 -2
  236. package/dist/modes/interactive/components/trust-selector.js.map +1 -1
  237. package/dist/modes/interactive/interactive-mode.d.ts +8 -15
  238. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  239. package/dist/modes/interactive/interactive-mode.js +96 -81
  240. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  241. package/dist/modes/interactive/session-share.d.ts.map +1 -1
  242. package/dist/modes/interactive/session-share.js +8 -12
  243. package/dist/modes/interactive/session-share.js.map +1 -1
  244. package/dist/modes/interactive/theme/dark.json +2 -1
  245. package/dist/modes/interactive/theme/light.json +2 -1
  246. package/dist/modes/interactive/theme/theme-controller.d.ts +1 -0
  247. package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
  248. package/dist/modes/interactive/theme/theme-controller.js +5 -0
  249. package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
  250. package/dist/modes/interactive/theme/theme-json.d.ts +84 -0
  251. package/dist/modes/interactive/theme/theme-json.d.ts.map +1 -0
  252. package/dist/modes/interactive/theme/theme-json.js +130 -0
  253. package/dist/modes/interactive/theme/theme-json.js.map +1 -0
  254. package/dist/modes/interactive/theme/theme-schema.json +6 -2
  255. package/dist/modes/interactive/theme/theme.d.ts +14 -5
  256. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  257. package/dist/modes/interactive/theme/theme.js +18 -119
  258. package/dist/modes/interactive/theme/theme.js.map +1 -1
  259. package/dist/modes/interactive/tui-renderer.d.ts +21 -0
  260. package/dist/modes/interactive/tui-renderer.d.ts.map +1 -0
  261. package/dist/modes/interactive/tui-renderer.js +66 -0
  262. package/dist/modes/interactive/tui-renderer.js.map +1 -0
  263. package/dist/utils/exif-orientation.d.ts.map +1 -1
  264. package/dist/utils/exif-orientation.js +2 -3
  265. package/dist/utils/exif-orientation.js.map +1 -1
  266. package/dist/utils/tools-manager.d.ts +1 -0
  267. package/dist/utils/tools-manager.d.ts.map +1 -1
  268. package/dist/utils/tools-manager.js +41 -19
  269. package/dist/utils/tools-manager.js.map +1 -1
  270. package/docs/containerization.md +45 -0
  271. package/docs/development.md +19 -0
  272. package/docs/environment-variables.md +2 -0
  273. package/docs/extensions.md +5 -2
  274. package/docs/keybindings.md +5 -2
  275. package/docs/models.md +4 -1
  276. package/docs/rpc.md +1 -1
  277. package/docs/sdk.md +5 -0
  278. package/docs/settings.md +3 -3
  279. package/docs/skills.md +1 -1
  280. package/docs/terminal-setup.md +15 -0
  281. package/docs/themes.md +8 -6
  282. package/docs/tui.md +19 -0
  283. package/examples/README.md +3 -0
  284. package/examples/extensions/custom-provider-anthropic/package-lock.json +84 -84
  285. package/examples/extensions/custom-provider-anthropic/package.json +17 -17
  286. package/examples/extensions/custom-provider-gitlab-duo/package.json +14 -14
  287. package/examples/extensions/dynamic-resources/dynamic.json +2 -0
  288. package/examples/extensions/gondolin/package-lock.json +8 -8
  289. package/examples/extensions/gondolin/package.json +1 -1
  290. package/examples/extensions/sandbox/package-lock.json +6 -6
  291. package/examples/extensions/sandbox/package.json +2 -2
  292. package/examples/extensions/with-deps/package-lock.json +29 -29
  293. package/examples/extensions/with-deps/package.json +20 -20
  294. package/examples/plugins/pi-example-plugin/README.md +38 -0
  295. package/examples/plugins/pi-example-plugin/package.json +10 -0
  296. package/examples/plugins/pi-example-plugin/src/contract.ts +13 -0
  297. package/examples/plugins/pi-example-plugin/src/session.ts +23 -0
  298. package/examples/plugins/pi-example-plugin/src/tui.ts +31 -0
  299. package/npm-shrinkwrap.json +772 -205
  300. package/package.json +31 -24
  301. package/src/humain/web-access/UPSTREAM.md +12 -1
  302. package/src/humain/web-access/upstream.json +4 -4
  303. package/dist/bundle/chunks/anthropic-messages-M4LCS3KH.js +0 -6
  304. package/dist/bundle/chunks/chunk-3VI4HD7D.js +0 -31
  305. package/dist/bundle/chunks/chunk-BOW22LW6.js +0 -42
  306. package/dist/bundle/chunks/chunk-CBHC6EL7.js +0 -133
  307. package/dist/bundle/chunks/chunk-JUUC5AZY.js +0 -2
  308. package/dist/bundle/chunks/node-ZHY4LHC7.js +0 -15
  309. package/dist/bundle/chunks/openai-codex-responses-HRVCDY54.js +0 -8
  310. package/dist/bundle/chunks/openai-responses-4MWLJHIK.js +0 -2
  311. package/dist/bundle/chunks/webapi-AFS5FDJJ.js +0 -5
  312. package/dist/bundle/client.js +0 -2
  313. package/dist/cli/experimental/auth.d.ts +0 -16
  314. package/dist/cli/experimental/auth.d.ts.map +0 -1
  315. package/dist/cli/experimental/auth.js +0 -13
  316. package/dist/cli/experimental/auth.js.map +0 -1
  317. package/dist/cli/experimental/cli.d.ts +0 -6
  318. package/dist/cli/experimental/cli.d.ts.map +0 -1
  319. package/dist/cli/experimental/cli.js +0 -5
  320. package/dist/cli/experimental/cli.js.map +0 -1
  321. package/dist/cli/experimental/command-options.d.ts +0 -17
  322. package/dist/cli/experimental/command-options.d.ts.map +0 -1
  323. package/dist/cli/experimental/command-options.js +0 -35
  324. package/dist/cli/experimental/command-options.js.map +0 -1
  325. package/dist/cli/experimental/command.d.ts +0 -63
  326. package/dist/cli/experimental/command.d.ts.map +0 -1
  327. package/dist/cli/experimental/command.js +0 -127
  328. package/dist/cli/experimental/command.js.map +0 -1
  329. package/dist/cli/experimental/commands/client.d.ts +0 -13
  330. package/dist/cli/experimental/commands/client.d.ts.map +0 -1
  331. package/dist/cli/experimental/commands/client.js +0 -25
  332. package/dist/cli/experimental/commands/client.js.map +0 -1
  333. package/dist/cli/experimental/commands/pi.d.ts +0 -15
  334. package/dist/cli/experimental/commands/pi.d.ts.map +0 -1
  335. package/dist/cli/experimental/commands/pi.js +0 -28
  336. package/dist/cli/experimental/commands/pi.js.map +0 -1
  337. package/dist/cli/experimental/commands/server.d.ts +0 -13
  338. package/dist/cli/experimental/commands/server.d.ts.map +0 -1
  339. package/dist/cli/experimental/commands/server.js +0 -25
  340. package/dist/cli/experimental/commands/server.js.map +0 -1
  341. package/dist/cli/experimental/transport-address.d.ts +0 -10
  342. package/dist/cli/experimental/transport-address.d.ts.map +0 -1
  343. package/dist/cli/experimental/transport-address.js +0 -38
  344. package/dist/cli/experimental/transport-address.js.map +0 -1
  345. package/dist/client/index.d.ts +0 -3
  346. package/dist/client/index.d.ts.map +0 -1
  347. package/dist/client/index.js +0 -3
  348. package/dist/client/index.js.map +0 -1
  349. package/dist/client/remote-session.d.ts +0 -53
  350. package/dist/client/remote-session.d.ts.map +0 -1
  351. package/dist/client/remote-session.js +0 -340
  352. package/dist/client/remote-session.js.map +0 -1
  353. package/dist/client/transcript.d.ts +0 -12
  354. package/dist/client/transcript.d.ts.map +0 -1
  355. package/dist/client/transcript.js +0 -98
  356. package/dist/client/transcript.js.map +0 -1
  357. package/dist/server/create-harness.d.ts +0 -26
  358. package/dist/server/create-harness.d.ts.map +0 -1
  359. package/dist/server/create-harness.js +0 -106
  360. package/dist/server/create-harness.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@humain/terminal",
3
- "version": "0.0.18",
3
+ "version": "0.1.0",
4
4
  "description": "Coding agent CLI with read, bash, edit, write tools and session management",
5
5
  "type": "module",
6
6
  "humainTerminalConfig": {
@@ -9,7 +9,7 @@
9
9
  "configDir": ".humain-terminal",
10
10
  "envPrefix": "HUMAIN_TERMINAL",
11
11
  "firstTimeSetup": true,
12
- "upstreamPiVersion": "0.84.4"
12
+ "upstreamPiVersion": "0.85.1"
13
13
  },
14
14
  "piConfig": {
15
15
  "name": "humain-terminal",
@@ -32,12 +32,17 @@
32
32
  "import": "./dist/bundle/rpc-entry.js"
33
33
  },
34
34
  "./client": {
35
- "types": "./dist/client/index.d.ts",
36
- "import": "./dist/client/index.js"
35
+ "source": "./src/client/index.ts"
36
+ },
37
+ "./experimental/plugin": {
38
+ "source": "./src/experimental/plugin.ts"
37
39
  }
38
40
  },
39
41
  "files": [
40
42
  "dist",
43
+ "!dist/client",
44
+ "!dist/experimental",
45
+ "!dist/cli/experimental",
41
46
  "docs",
42
47
  "examples",
43
48
  "src/humain/web-access/UPSTREAM.md",
@@ -62,20 +67,18 @@
62
67
  "prepublishOnly": "npm run clean && npm run build && npm run shrinkwrap"
63
68
  },
64
69
  "dependencies": {
65
- "@humain/terminal-contracts": "0.0.3",
66
- "@aws-sdk/client-bedrock-runtime": "3.1119.0",
67
- "@earendil-works/pi-agent-core": "0.84.4",
68
- "@earendil-works/pi-ai": "0.84.4",
69
- "@earendil-works/pi-client": "0.84.4",
70
- "@earendil-works/pi-protocol": "0.84.4",
71
- "@earendil-works/pi-tui": "0.84.4",
70
+ "@humain/terminal-contracts": "0.1.0",
71
+ "@aws-sdk/client-bedrock-runtime": "3.1127.0",
72
+ "@earendil-works/pi-agent-core": "0.85.1",
73
+ "@earendil-works/pi-ai": "0.85.1",
74
+ "@earendil-works/pi-tui": "0.85.1",
72
75
  "@modelcontextprotocol/client": "2.0.0",
73
76
  "@modelcontextprotocol/core": "2.0.0",
74
77
  "@modelcontextprotocol/ext-apps": "1.7.5",
75
78
  "@mozilla/readability": "0.6.0",
76
- "@napi-rs/keyring": "1.3.0",
79
+ "@napi-rs/keyring": "2.0.0",
77
80
  "@silvia-odwyer/photon-node": "0.3.4",
78
- "@smithy/node-http-handler": "4.11.3",
81
+ "@smithy/node-http-handler": "4.12.1",
79
82
  "chalk": "6.0.0",
80
83
  "ajv": "8.20.0",
81
84
  "ajv-formats": "3.0.1",
@@ -86,15 +89,15 @@
86
89
  "grok-mermaid": "0.2.3",
87
90
  "highlight.js": "11.12.0",
88
91
  "hosted-git-info": "10.1.1",
89
- "ignore": "7.0.6",
92
+ "ignore": "7.0.8",
90
93
  "http-proxy-agent": "9.1.0",
91
94
  "https-proxy-agent": "9.1.0",
92
95
  "jiti": "2.7.0",
93
96
  "linkedom": "0.18.13",
94
97
  "minimatch": "10.2.6",
95
- "p-limit": "7.3.1",
98
+ "p-limit": "7.3.2",
96
99
  "partial-json": "0.1.7",
97
- "open": "11.0.1",
100
+ "open": "11.0.2",
98
101
  "promise.try": "2.0.1",
99
102
  "proper-lockfile": "4.1.2",
100
103
  "recheck": "4.5.0",
@@ -102,17 +105,18 @@
102
105
  "smol-toml": "1.8.0",
103
106
  "strip-json-comments": "5.0.3",
104
107
  "turndown": "7.2.4",
105
- "typebox": "1.3.19",
106
- "undici": "8.10.0",
108
+ "typebox": "1.3.27",
109
+ "undici": "8.10.2",
107
110
  "unpdf": "1.8.1",
108
111
  "yaml": "2.9.0",
109
- "zod": "4.5.2"
112
+ "zod": "4.5.4",
113
+ "@earendil-works/chord": "0.85.1"
110
114
  },
111
115
  "overrides": {
112
- "protobufjs": "7.6.5",
113
- "rimraf": "6.1.2",
116
+ "protobufjs": "7.6.6",
117
+ "rimraf": "6.1.3",
114
118
  "gaxios": {
115
- "rimraf": "6.1.2"
119
+ "rimraf": "6.1.3"
116
120
  }
117
121
  },
118
122
  "optionalDependencies": {
@@ -123,13 +127,16 @@
123
127
  "@types/diff": "8.0.0",
124
128
  "@types/hosted-git-info": "3.0.5",
125
129
  "@types/ms": "2.1.0",
126
- "@types/node": "26.4.0",
130
+ "@types/node": "26.4.1",
127
131
  "@types/proper-lockfile": "4.1.4",
128
132
  "@types/semver": "7.8.0",
129
133
  "@types/turndown": "5.0.6",
130
134
  "shx": "0.4.0",
131
135
  "typescript": "7.0.2",
132
- "vitest": "4.1.11"
136
+ "vitest": "5.0.0",
137
+ "@earendil-works/pi-client": "0.85.1",
138
+ "@earendil-works/pi-server": "0.85.1",
139
+ "@earendil-works/pi-protocol": "0.85.1"
133
140
  },
134
141
  "keywords": [
135
142
  "humain-terminal",
@@ -1,7 +1,7 @@
1
1
  # pi-web-access upstream tracking
2
2
 
3
3
  The vendored implementation in `vendor/` is based on
4
- [`pi-web-access`](https://github.com/nicobailon/pi-web-access) version `0.27.0`
4
+ [`pi-web-access`](https://github.com/nicobailon/pi-web-access) version `0.28.0`
5
5
  and remains licensed under the upstream MIT license in `vendor/LICENSE`.
6
6
 
7
7
  `upstream.json` records the npm tarball URL, SHA-1 shasum, SHA-512 integrity,
@@ -15,3 +15,14 @@ reviewing the upstream source and dependency diff, replacing the vendored
15
15
  TypeScript runtime files and license, reapplying the config-directory changes
16
16
  listed in `upstream.json`, updating the metadata, and running the focused tests,
17
17
  `npm run check`, and local Node/Bun release smoke tests.
18
+
19
+ The 0.28.0 refresh was reviewed against both published npm tarballs with their
20
+ SHA-1 and SHA-512 metadata verified. It adds opt-in Mistral and xAI X search,
21
+ ordered concurrent query batches, stored-result identifiers in tool output,
22
+ preserved cited Perplexity sources, and abandoned GitHub clone cleanup. Runtime
23
+ dependencies, lifecycle scripts, and the MIT license are unchanged.
24
+
25
+ The three-way refresh retains HUMAIN's `getAgentDir()` config lookup instead
26
+ of Pi's XDG/legacy lookup and keeps explicit null proxy scopes so direct web
27
+ requests cannot inherit an outer proxy decision. Other recorded HUMAIN patches
28
+ remain in place. Mistral remains excluded from automatic all-provider fan-out.
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "pi-web-access",
3
3
  "repository": "https://github.com/nicobailon/pi-web-access",
4
- "version": "0.27.0",
5
- "tarball": "https://registry.npmjs.org/pi-web-access/-/pi-web-access-0.27.0.tgz",
6
- "shasum": "f97ea9371f81d44c9bb34e43e1868db32e2c21ae",
7
- "integrity": "sha512-D/z7ILwbnJeDjzFPC1j3G1OvO+j2vl2H13ByYcH5FLbrJ1yBdbBwTBcl96Bbt2NEqH5vdmoZ/EpbDG8BTF9W7Q==",
4
+ "version": "0.28.0",
5
+ "tarball": "https://registry.npmjs.org/pi-web-access/-/pi-web-access-0.28.0.tgz",
6
+ "shasum": "fa14439d050527f994003c981a1bde7fdde146b0",
7
+ "integrity": "sha512-NMiRWiRXt46oNOoef+9WUN9IKzwADXuM9Wu6fPgMBScIVO8wQK3+dUV0CkmkvTHWADv8PBCqxcDSufVwqF++9Q==",
8
8
  "humainPatches": [
9
9
  "extract.ts",
10
10
  "gemini-adc.ts",
@@ -1,6 +0,0 @@
1
- import { createRequire as __piCreateRequire } from "node:module"; const require = __piCreateRequire(import.meta.url);
2
- import{splitDeferredTools}from"./chunk-GMWCTUPB.js";import{buildCopilotDynamicHeaders,hasCopilotVisionInput}from"./chunk-PGXDEOVV.js";import{retryProviderRequest}from"./chunk-XNGRGP62.js";import{adjustMaxTokensForThinking,buildBaseOptions,clampMaxTokensToContext,getJsonSchemaToolParameters,getPiUserAgent,resolveJsonSchemaStrictSampling,transformMessages}from"./chunk-TXBQIIIO.js";import{sanitizeSurrogates}from"./chunk-L2ZPNLYD.js";import{headersToRecord}from"./chunk-6R7UI4IY.js";import{getProviderEnvValue}from"./chunk-7DDKXS2Q.js";import{parseJsonWithRepair,parseStreamingJson}from"./chunk-D7XAASZM.js";import{calculateCost}from"./chunk-WJZ4KLGL.js";import{AssistantMessageEventStream}from"./chunk-72KO4OMP.js";import{Anthropic}from"./chunk-BOW22LW6.js";import"./chunk-JXWJOIH4.js";function resolveCacheRetention(cacheRetention,env){return cacheRetention||(getProviderEnvValue("HUMAIN_TERMINAL_CACHE_RETENTION",env)==="long"||getProviderEnvValue("PI_CACHE_RETENTION",env)==="long"?"long":"short")}function getCacheControl(model,cacheRetention,env){let retention=resolveCacheRetention(cacheRetention,env);if(retention==="none")return{retention};let ttl=retention==="long"&&getAnthropicCompat(model).supportsLongCacheRetention?"1h":void 0;return{retention,cacheControl:{type:"ephemeral",...ttl&&{ttl}}}}var claudeCodeVersion="2.1.75",claudeCodeTools=["Read","Write","Edit","Bash","Grep","Glob","AskUserQuestion","EnterPlanMode","ExitPlanMode","KillShell","NotebookEdit","Skill","Task","TaskOutput","TodoWrite","WebFetch","WebSearch"],ccToolLookup=new Map(claudeCodeTools.map(t=>[t.toLowerCase(),t])),toClaudeCodeName=name=>ccToolLookup.get(name.toLowerCase())??name,fromClaudeCodeName=(name,tools)=>{if(tools&&tools.length>0){let lowerName=name.toLowerCase(),matchedTool=tools.find(tool=>tool.name.toLowerCase()===lowerName);if(matchedTool)return matchedTool.name}return name};function convertContentBlocks(content){if(!content.some(c=>c.type==="image"))return sanitizeSurrogates(content.map(c=>c.text).join(`
3
- `));let blocks=content.map(block=>block.type==="text"?{type:"text",text:sanitizeSurrogates(block.text)}:{type:"image",source:{type:"base64",media_type:block.mimeType,data:block.data}});return blocks.some(b=>b.type==="text")||blocks.unshift({type:"text",text:"(see attached image)"}),blocks}var FINE_GRAINED_TOOL_STREAMING_BETA="fine-grained-tool-streaming-2025-05-14",INTERLEAVED_THINKING_BETA="interleaved-thinking-2025-05-14",SERVER_SIDE_FALLBACK_BETA="server-side-fallback-2026-07-01";function shouldUseServerSideFallbackBeta(model){return(model.compat?.allowedFallbackModels?.length??0)>0}function getAnthropicCompat(model){return{supportsEagerToolInputStreaming:model.compat?.supportsEagerToolInputStreaming??!0,supportsLongCacheRetention:model.compat?.supportsLongCacheRetention??!0,sendSessionAffinityHeaders:model.compat?.sendSessionAffinityHeaders??!1,supportsCacheControlOnTools:model.compat?.supportsCacheControlOnTools??!0,supportsTemperature:model.compat?.supportsTemperature??!0,allowEmptySignature:model.compat?.allowEmptySignature??!1,supportsStrictTools:model.compat?.supportsStrictTools??!1,supportsToolReferences:model.compat?.supportsToolReferences??defaultSupportsToolReferences(model)}}function defaultSupportsToolReferences(model){if(model.provider!=="anthropic"||model.id.includes("haiku"))return!1;let version=model.id.match(/^claude-(?:opus|sonnet|fable)-(\d+)(?:-(\d+))?(?:-|$)/);if(!version)return!1;let major=Number(version[1]),minor=version[2]&&version[2].length<8?Number(version[2]):0;return major>4||major===4&&minor>=5}function mergeHeaders(...headerSources){let merged={};for(let headers of headerSources)headers&&Object.assign(merged,headers);return merged}function mergeClientHeaders(...headerSources){return mergeHeaders({"User-Agent":getPiUserAgent()},...headerSources)}function hasHeader(headers,name){if(!headers)return!1;let expected=name.toLowerCase();for(let[key,value]of Object.entries(headers))if(key.toLowerCase()===expected&&value!==null&&value.trim().length>0)return!0;return!1}function assertRequestAuth(provider,apiKey,headers){if(!apiKey&&!(hasHeader(headers,"authorization")||hasHeader(headers,"x-api-key")||hasHeader(headers,"cf-aig-authorization")))throw new Error(`No API key for provider: ${provider}`)}var ANTHROPIC_MESSAGE_EVENTS=new Set(["message_start","message_delta","message_stop","content_block_start","content_block_delta","content_block_stop"]);function flushSseEvent(state){if(!state.event&&state.data.length===0)return null;let event={event:state.event,data:state.data.join(`
4
- `),raw:[...state.raw]};return state.event=null,state.data=[],state.raw=[],event}function decodeSseLine(line,state){if(line==="")return flushSseEvent(state);if(state.raw.push(line),line.startsWith(":"))return null;let delimiterIndex=line.indexOf(":"),fieldName=delimiterIndex===-1?line:line.slice(0,delimiterIndex),value=delimiterIndex===-1?"":line.slice(delimiterIndex+1);return value.startsWith(" ")&&(value=value.slice(1)),fieldName==="event"?state.event=value:fieldName==="data"&&state.data.push(value),null}function nextLineBreakIndex(text){let carriageReturnIndex=text.indexOf("\r"),newlineIndex=text.indexOf(`
5
- `);return carriageReturnIndex===-1?newlineIndex:newlineIndex===-1?carriageReturnIndex:Math.min(carriageReturnIndex,newlineIndex)}function consumeLine(text){let lineBreakIndex=nextLineBreakIndex(text);if(lineBreakIndex===-1)return null;let nextIndex=lineBreakIndex+1;return text[lineBreakIndex]==="\r"&&text[nextIndex]===`
6
- `&&(nextIndex+=1),{line:text.slice(0,lineBreakIndex),rest:text.slice(nextIndex)}}async function*iterateSseMessages(body,signal){let reader=body.getReader(),decoder=new TextDecoder,state={event:null,data:[],raw:[]},buffer="";try{for(;;){if(signal?.aborted)throw new Error("Request was aborted");let{value,done}=await reader.read();if(done)break;buffer+=decoder.decode(value,{stream:!0});let consumed2=consumeLine(buffer);for(;consumed2;){buffer=consumed2.rest;let event=decodeSseLine(consumed2.line,state);event&&(yield event),consumed2=consumeLine(buffer)}}buffer+=decoder.decode();let consumed=consumeLine(buffer);for(;consumed;){buffer=consumed.rest;let event=decodeSseLine(consumed.line,state);event&&(yield event),consumed=consumeLine(buffer)}if(buffer.length>0){let event=decodeSseLine(buffer,state);event&&(yield event)}let trailingEvent=flushSseEvent(state);trailingEvent&&(yield trailingEvent)}finally{reader.releaseLock()}}async function*iterateAnthropicEvents(response,signal){if(!response.body)throw new Error("Attempted to iterate over an Anthropic response with no body");let sawMessageStart=!1,sawMessageEnd=!1;for await(let sse of iterateSseMessages(response.body,signal)){if(sse.event==="error")throw new Error(sse.data);if(ANTHROPIC_MESSAGE_EVENTS.has(sse.event??""))try{let event=parseJsonWithRepair(sse.data);event.type==="message_start"?sawMessageStart=!0:event.type==="message_stop"&&(sawMessageEnd=!0),yield event}catch(error){let message=error instanceof Error?error.message:String(error);throw new Error(`Could not parse Anthropic SSE event ${sse.event}: ${message}; data=${sse.data}; raw=${sse.raw.join("\\n")}`)}}if(sawMessageStart&&!sawMessageEnd)throw new Error("Anthropic stream ended before message_stop")}var stream=(model,context,options)=>{let stream2=new AssistantMessageEventStream;return(async()=>{let output={role:"assistant",content:[],api:model.api,provider:model.provider,model:model.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:"pending",timestamp:Date.now()};try{let client,isOAuth,usageModel=model;if(options?.client)client=options.client,isOAuth=!1;else{let apiKey=options?.apiKey;assertRequestAuth(model.provider,apiKey,options?.headers);let copilotDynamicHeaders;if(model.provider==="github-copilot"){let hasImages=hasCopilotVisionInput(context.messages);copilotDynamicHeaders=buildCopilotDynamicHeaders({messages:context.messages,hasImages})}let cacheSessionId=resolveCacheRetention(options?.cacheRetention,options?.env)==="none"?void 0:options?.sessionId,created=createClient(model,apiKey,options?.interleavedThinking??!0,shouldUseFineGrainedToolStreamingBeta(model,context),shouldUseServerSideFallbackBeta(model),options?.headers,options?.fetch,copilotDynamicHeaders,cacheSessionId);client=created.client,isOAuth=created.isOAuthToken}let params=buildParams(model,context,isOAuth,options),nextParams=await options?.onPayload?.(params,model);nextParams!==void 0&&(params=nextParams);let requestOptions={...options?.signal?{signal:options.signal}:{},...options?.timeoutMs!==void 0?{timeout:options.timeoutMs}:{},maxRetries:0},response=await retryProviderRequest(()=>client.messages.create({...params,stream:!0},requestOptions).asResponse(),{maxRetries:options?.maxRetries,maxRetryDelayMs:options?.maxRetryDelayMs,signal:options?.signal});await options?.onResponse?.({status:response.status,headers:headersToRecord(response.headers)},model),stream2.push({type:"start",partial:output});let blocks=output.content;for await(let event of iterateAnthropicEvents(response,options?.signal))if(event.type==="message_start"){output.responseId=event.message.id,output.model=event.message.model;let fallbackCost=output.model===model.id?void 0:model.compat?.allowedFallbackModels?.find(fallback=>fallback.provider===model.provider&&fallback.model===output.model)?.cost;usageModel=fallbackCost?{...model,id:output.model,cost:fallbackCost}:model,output.usage.input=event.message.usage.input_tokens||0,output.usage.output=event.message.usage.output_tokens||0,output.usage.cacheRead=event.message.usage.cache_read_input_tokens||0,output.usage.cacheWrite=event.message.usage.cache_creation_input_tokens||0,output.usage.cacheWrite1h=event.message.usage.cache_creation?.ephemeral_1h_input_tokens||0,output.usage.totalTokens=output.usage.input+output.usage.output+output.usage.cacheRead+output.usage.cacheWrite,calculateCost(usageModel,output.usage)}else if(event.type==="content_block_start"){if(event.content_block.type==="text"){let block={type:"text",text:event.content_block.text??"",index:event.index};output.content.push(block),stream2.push({type:"text_start",contentIndex:output.content.length-1,partial:output})}else if(event.content_block.type==="thinking"){let block={type:"thinking",thinking:event.content_block.thinking??"",thinkingSignature:event.content_block.signature??"",index:event.index};output.content.push(block),stream2.push({type:"thinking_start",contentIndex:output.content.length-1,partial:output})}else if(event.content_block.type==="redacted_thinking"){let block={type:"thinking",thinking:"[Reasoning redacted]",thinkingSignature:event.content_block.data,redacted:!0,index:event.index};output.content.push(block),stream2.push({type:"thinking_start",contentIndex:output.content.length-1,partial:output})}else if(event.content_block.type==="tool_use"){let block={type:"toolCall",id:event.content_block.id,name:isOAuth?fromClaudeCodeName(event.content_block.name,context.tools):event.content_block.name,arguments:event.content_block.input??{},partialJson:"",index:event.index};output.content.push(block),stream2.push({type:"toolcall_start",contentIndex:output.content.length-1,partial:output})}}else if(event.type==="content_block_delta"){if(event.delta.type==="text_delta"){let index=blocks.findIndex(b=>b.index===event.index),block=blocks[index];block&&block.type==="text"&&(block.text+=event.delta.text,stream2.push({type:"text_delta",contentIndex:index,delta:event.delta.text,partial:output}))}else if(event.delta.type==="thinking_delta"){let index=blocks.findIndex(b=>b.index===event.index),block=blocks[index];block&&block.type==="thinking"&&(block.thinking+=event.delta.thinking,stream2.push({type:"thinking_delta",contentIndex:index,delta:event.delta.thinking,partial:output}))}else if(event.delta.type==="input_json_delta"){let index=blocks.findIndex(b=>b.index===event.index),block=blocks[index];block&&block.type==="toolCall"&&(block.partialJson+=event.delta.partial_json,block.arguments=parseStreamingJson(block.partialJson),stream2.push({type:"toolcall_delta",contentIndex:index,delta:event.delta.partial_json,partial:output}))}else if(event.delta.type==="signature_delta"){let index=blocks.findIndex(b=>b.index===event.index),block=blocks[index];block&&block.type==="thinking"&&(block.thinkingSignature=block.thinkingSignature||"",block.thinkingSignature+=event.delta.signature)}}else if(event.type==="content_block_stop"){let index=blocks.findIndex(b=>b.index===event.index),block=blocks[index];block&&(delete block.index,block.type==="text"?stream2.push({type:"text_end",contentIndex:index,content:block.text,partial:output}):block.type==="thinking"?stream2.push({type:"thinking_end",contentIndex:index,content:block.thinking,partial:output}):block.type==="toolCall"&&(block.arguments=parseStreamingJson(block.partialJson),delete block.partialJson,stream2.push({type:"toolcall_end",contentIndex:index,toolCall:block,partial:output})))}else if(event.type==="message_delta"){if(event.delta.stop_reason){output.rawStopReason=event.delta.stop_reason;let stopReasonResult=mapStopReason(event.delta.stop_reason,event.delta.stop_details);output.stopReason=stopReasonResult.stopReason,stopReasonResult.errorMessage&&(output.errorMessage=stopReasonResult.errorMessage)}if(event.usage){event.usage.input_tokens!=null&&(output.usage.input=event.usage.input_tokens),event.usage.output_tokens!=null&&(output.usage.output=event.usage.output_tokens),event.usage.cache_read_input_tokens!=null&&(output.usage.cacheRead=event.usage.cache_read_input_tokens),event.usage.cache_creation_input_tokens!=null&&(output.usage.cacheWrite=event.usage.cache_creation_input_tokens);let thinkingTokens=event.usage.output_tokens_details?.thinking_tokens;thinkingTokens!=null&&(output.usage.reasoning=thinkingTokens)}output.usage.totalTokens=output.usage.input+output.usage.output+output.usage.cacheRead+output.usage.cacheWrite,calculateCost(usageModel,output.usage)}if(options?.signal?.aborted)throw new Error("Request was aborted");if(output.stopReason==="pending")throw new Error("Anthropic stream ended without a stop reason");if(output.stopReason==="aborted"||output.stopReason==="error")throw new Error(output.errorMessage||"An unknown error occurred");stream2.push({type:"done",reason:output.stopReason,message:output}),stream2.end()}catch(error){for(let block of output.content)delete block.index,delete block.partialJson;output.stopReason=options?.signal?.aborted?"aborted":"error",output.errorMessage=error instanceof Error?error.message:JSON.stringify(error),stream2.push({type:"error",reason:output.stopReason,error:output}),stream2.end()}})(),stream2};function mapThinkingLevelToEffort(model,level){let mapped=level?model.thinkingLevelMap?.[level]:void 0;if(typeof mapped=="string")return mapped;switch(level){case"minimal":case"low":return"low";case"medium":return"medium";case"high":return"high";default:return"high"}}var streamSimple=(model,context,options)=>{assertRequestAuth(model.provider,options?.apiKey,options?.headers);let base={...buildBaseOptions(model,context,options,options?.apiKey),toolChoice:options?.toolChoice};if(!options?.reasoning)return stream(model,context,{...base,thinkingEnabled:!1});if(model.compat?.forceAdaptiveThinking===!0){let effort=mapThinkingLevelToEffort(model,options.reasoning);return stream(model,context,{...base,thinkingEnabled:!0,effort})}let adjusted=adjustMaxTokensForThinking(base.maxTokens,model.maxTokens,options.reasoning,options.thinkingBudgets),maxTokens=clampMaxTokensToContext(model,context,adjusted.maxTokens);return stream(model,context,{...base,maxTokens,thinkingEnabled:!0,thinkingBudgetTokens:Math.min(adjusted.thinkingBudget,Math.max(0,maxTokens-1024))})};function isOAuthToken(apiKey){return apiKey.startsWith("sk-ant-oat")}function createClient(model,apiKey,interleavedThinking,useFineGrainedToolStreamingBeta,useServerSideFallbackBeta,optionsHeaders,fetch,dynamicHeaders,sessionId){let needsInterleavedBeta=interleavedThinking&&model.compat?.forceAdaptiveThinking!==!0,betaFeatures=[];if(useFineGrainedToolStreamingBeta&&betaFeatures.push(FINE_GRAINED_TOOL_STREAMING_BETA),needsInterleavedBeta&&betaFeatures.push(INTERLEAVED_THINKING_BETA),useServerSideFallbackBeta&&betaFeatures.push(SERVER_SIDE_FALLBACK_BETA),model.provider==="github-copilot")return{client:new Anthropic({apiKey:null,authToken:apiKey??null,baseURL:model.baseUrl,dangerouslyAllowBrowser:!0,fetch,defaultHeaders:mergeClientHeaders({accept:"application/json","anthropic-dangerous-direct-browser-access":"true",...betaFeatures.length>0?{"anthropic-beta":betaFeatures.join(",")}:{}},model.headers,dynamicHeaders,optionsHeaders)}),isOAuthToken:!1};if(apiKey&&isOAuthToken(apiKey))return{client:new Anthropic({apiKey:null,authToken:apiKey,baseURL:model.baseUrl,dangerouslyAllowBrowser:!0,fetch,defaultHeaders:mergeClientHeaders({accept:"application/json","anthropic-dangerous-direct-browser-access":"true","anthropic-beta":["claude-code-20250219","oauth-2025-04-20",...betaFeatures].join(","),"user-agent":`claude-cli/${claudeCodeVersion}`,"x-app":"cli"},model.headers,optionsHeaders)}),isOAuthToken:!0};let sessionAffinityHeaders=sessionId&&getAnthropicCompat(model).sendSessionAffinityHeaders?{"x-session-affinity":sessionId}:{},defaultHeaders=mergeClientHeaders({accept:"application/json","anthropic-dangerous-direct-browser-access":"true",...betaFeatures.length>0?{"anthropic-beta":betaFeatures.join(",")}:{}},sessionAffinityHeaders,model.headers,optionsHeaders);return{client:new Anthropic({apiKey:apiKey??null,authToken:null,baseURL:model.baseUrl,dangerouslyAllowBrowser:!0,fetch,defaultHeaders}),isOAuthToken:!1}}function buildParams(model,context,isOAuthToken2,options){let{cacheControl}=getCacheControl(model,options?.cacheRetention,options?.env),compat=getAnthropicCompat(model),transformedMessages=transformMessages(context.messages,model,normalizeToolCallId),normalizeToolName=isOAuthToken2?toClaudeCodeName:name=>name,toolPlacement=splitDeferredTools({...context,messages:transformedMessages},compat.supportsToolReferences,normalizeToolName),immediateTools=toolPlacement.immediate,deferredTools=[...toolPlacement.deferred.values()];immediateTools.length===0&&deferredTools.length>0&&(immediateTools=deferredTools,deferredTools=[]);let deferredToolNames=new Set(deferredTools.map(tool=>normalizeToolName(tool.name))),params={model:model.id,messages:convertMessages(transformedMessages,isOAuthToken2,cacheControl,compat.allowEmptySignature,deferredToolNames,normalizeToolName),max_tokens:options?.maxTokens??model.maxTokens,stream:!0};if(isOAuthToken2?(params.system=[{type:"text",text:"You are Claude Code, Anthropic's official CLI for Claude.",...cacheControl?{cache_control:cacheControl}:{}}],context.systemPrompt&&params.system.push({type:"text",text:sanitizeSurrogates(context.systemPrompt),...cacheControl?{cache_control:cacheControl}:{}})):context.systemPrompt&&(params.system=[{type:"text",text:sanitizeSurrogates(context.systemPrompt),...cacheControl?{cache_control:cacheControl}:{}}]),options?.temperature!==void 0&&!options?.thinkingEnabled&&compat.supportsTemperature&&(params.temperature=options.temperature),(immediateTools.length>0||deferredTools.length>0)&&(params.tools=[...convertTools(immediateTools,isOAuthToken2,compat.supportsEagerToolInputStreaming,compat.supportsStrictTools,compat.supportsCacheControlOnTools?cacheControl:void 0),...convertTools(deferredTools,isOAuthToken2,compat.supportsEagerToolInputStreaming,compat.supportsStrictTools,void 0,!0)]),model.reasoning)if(options?.thinkingEnabled){let display=options.thinkingDisplay??"summarized";model.compat?.forceAdaptiveThinking===!0?(params.thinking={type:"adaptive",display},options.effort&&(params.output_config=options.effort==="xhigh"?{effort:options.effort}:{effort:options.effort})):params.thinking={type:"enabled",budget_tokens:options.thinkingBudgetTokens||1024,display}}else options?.thinkingEnabled===!1&&model.thinkingLevelMap?.off!==null&&(params.thinking={type:"disabled"});if(options?.metadata){let userId=options.metadata.user_id;typeof userId=="string"&&(params.metadata={user_id:userId})}options?.toolChoice&&(typeof options.toolChoice=="string"?params.tool_choice={type:options.toolChoice}:params.tool_choice=options.toolChoice);let allowedFallbackModels=model.compat?.allowedFallbackModels;return allowedFallbackModels&&allowedFallbackModels.length>0&&(params.fallbacks=allowedFallbackModels.map(fallback=>({model:fallback.model}))),params}function normalizeToolCallId(id){return id.replace(/[^a-zA-Z0-9_-]/g,"_").slice(0,64)}function convertToolResult(msg,isOAuthToken2,deferredToolNames,loadedToolNames,normalizeToolName){let references=[];for(let name of msg.addedToolNames??[]){let normalizedName=normalizeToolName(name);!deferredToolNames.has(normalizedName)||loadedToolNames.has(normalizedName)||(loadedToolNames.add(normalizedName),references.push({type:"tool_reference",tool_name:isOAuthToken2?toClaudeCodeName(name):name}))}let convertedContent=convertContentBlocks(msg.content);return{toolResult:{type:"tool_result",tool_use_id:msg.toolCallId,content:references.length>0?references:convertedContent,is_error:msg.isError},siblingContent:references.length===0?[]:typeof convertedContent=="string"?[{type:"text",text:convertedContent}]:convertedContent}}function convertMessages(transformedMessages,isOAuthToken2,cacheControl,allowEmptySignature=!1,deferredToolNames=new Set,normalizeToolName=name=>name){let params=[],loadedToolNames=new Set;for(let i=0;i<transformedMessages.length;i++){let msg=transformedMessages[i];if(msg.role==="user")if(typeof msg.content=="string")msg.content.trim().length>0&&params.push({role:"user",content:sanitizeSurrogates(msg.content)});else{let filteredBlocks=msg.content.map(item=>item.type==="text"?{type:"text",text:sanitizeSurrogates(item.text)}:{type:"image",source:{type:"base64",media_type:item.mimeType,data:item.data}}).filter(b=>b.type==="text"?b.text.trim().length>0:!0);if(filteredBlocks.length===0)continue;params.push({role:"user",content:filteredBlocks})}else if(msg.role==="assistant"){let blocks=[];for(let block of msg.content)if(block.type==="text"){if(block.text.trim().length===0)continue;blocks.push({type:"text",text:sanitizeSurrogates(block.text)})}else if(block.type==="thinking"){if(block.redacted){blocks.push({type:"redacted_thinking",data:block.thinkingSignature});continue}let thinkingSignature=block.thinkingSignature,hasThinkingSignature=!!thinkingSignature&&thinkingSignature.trim().length>0;if(block.thinking.trim().length===0&&!hasThinkingSignature)continue;hasThinkingSignature?blocks.push({type:"thinking",thinking:sanitizeSurrogates(block.thinking),signature:thinkingSignature}):blocks.push(allowEmptySignature?{type:"thinking",thinking:sanitizeSurrogates(block.thinking),signature:""}:{type:"text",text:sanitizeSurrogates(block.thinking)})}else block.type==="toolCall"&&blocks.push({type:"tool_use",id:block.id,name:isOAuthToken2?toClaudeCodeName(block.name):block.name,input:block.arguments??{}});if(blocks.length===0)continue;params.push({role:"assistant",content:blocks})}else if(msg.role==="toolResult"){let toolResults=[],siblingContent=[],j=i;for(;j<transformedMessages.length&&transformedMessages[j].role==="toolResult";){let converted=convertToolResult(transformedMessages[j],isOAuthToken2,deferredToolNames,loadedToolNames,normalizeToolName);toolResults.push(converted.toolResult),siblingContent.push(...converted.siblingContent),j++}i=j-1,params.push({role:"user",content:[...toolResults,...siblingContent]})}}if(cacheControl&&params.length>0){let lastMessage=params[params.length-1];if(lastMessage.role==="user")if(Array.isArray(lastMessage.content)){let lastBlock=lastMessage.content[lastMessage.content.length-1];lastBlock&&(lastBlock.type==="text"||lastBlock.type==="image"||lastBlock.type==="tool_result")&&(lastBlock.cache_control=cacheControl)}else typeof lastMessage.content=="string"&&(lastMessage.content=[{type:"text",text:lastMessage.content,cache_control:cacheControl}])}return params}function shouldUseFineGrainedToolStreamingBeta(model,context){return!!context.tools?.length&&!getAnthropicCompat(model).supportsEagerToolInputStreaming}function convertTools(tools,isOAuthToken2,supportsEagerToolInputStreaming,supportsStrictTools,cacheControl,deferLoading=!1){return tools?tools.map((tool,index)=>{let strict=resolveJsonSchemaStrictSampling(tool,supportsStrictTools),parameters=getJsonSchemaToolParameters(tool,strict),schema=parameters,legacyInputSchema={type:"object",properties:schema.properties??{},required:schema.required??[]},inputSchema=strict===!0?{...parameters,...legacyInputSchema}:legacyInputSchema;return{name:isOAuthToken2?toClaudeCodeName(tool.name):tool.name,description:tool.description,...supportsEagerToolInputStreaming?{eager_input_streaming:!0}:{},...strict===!0?{strict:!0}:{},input_schema:inputSchema,...deferLoading?{defer_loading:!0}:{},...cacheControl&&index===tools.length-1?{cache_control:cacheControl}:{}}}):[]}function mapStopReason(reason,stopDetails){switch(reason){case"end_turn":return{stopReason:"stop"};case"max_tokens":return{stopReason:"length"};case"tool_use":return{stopReason:"toolUse"};case"refusal":return{stopReason:"error",errorMessage:stopDetails?.explanation||"The model refused to complete the request"};case"pause_turn":return{stopReason:"stop"};case"stop_sequence":return{stopReason:"stop"};case"sensitive":return{stopReason:"error",errorMessage:"Provider stopped with: sensitive"};default:throw new Error(`Unhandled stop reason: ${reason}`)}}export{stream,streamSimple};