@humain/terminal 0.0.4-beta.1 → 0.0.4-beta.2

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 (672) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +1 -0
  3. package/dist/bun/cli.d.ts.map +1 -1
  4. package/dist/bun/cli.js.map +1 -1
  5. package/dist/bun/restore-sandbox-env.d.ts.map +1 -1
  6. package/dist/bun/restore-sandbox-env.js.map +1 -1
  7. package/dist/cli/args.d.ts +1 -0
  8. package/dist/cli/args.d.ts.map +1 -1
  9. package/dist/cli/args.js +11 -0
  10. package/dist/cli/args.js.map +1 -1
  11. package/dist/cli/auth-check.d.ts.map +1 -1
  12. package/dist/cli/auth-check.js.map +1 -1
  13. package/dist/cli/auth-command.d.ts.map +1 -1
  14. package/dist/cli/auth-command.js.map +1 -1
  15. package/dist/cli/config-selector.d.ts.map +1 -1
  16. package/dist/cli/config-selector.js.map +1 -1
  17. package/dist/cli/credential-print.d.ts.map +1 -1
  18. package/dist/cli/credential-print.js.map +1 -1
  19. package/dist/cli/experimental/auth.d.ts.map +1 -1
  20. package/dist/cli/experimental/auth.js.map +1 -1
  21. package/dist/cli/experimental/cli.d.ts.map +1 -1
  22. package/dist/cli/experimental/command-options.d.ts.map +1 -1
  23. package/dist/cli/experimental/command-options.js.map +1 -1
  24. package/dist/cli/experimental/command.d.ts.map +1 -1
  25. package/dist/cli/experimental/command.js +2 -5
  26. package/dist/cli/experimental/command.js.map +1 -1
  27. package/dist/cli/experimental/commands/client.d.ts.map +1 -1
  28. package/dist/cli/experimental/commands/client.js.map +1 -1
  29. package/dist/cli/experimental/commands/pi.d.ts.map +1 -1
  30. package/dist/cli/experimental/commands/pi.js.map +1 -1
  31. package/dist/cli/experimental/commands/server.d.ts.map +1 -1
  32. package/dist/cli/experimental/commands/server.js.map +1 -1
  33. package/dist/cli/experimental/transport-address.d.ts.map +1 -1
  34. package/dist/cli/experimental/transport-address.js.map +1 -1
  35. package/dist/cli/file-processor.d.ts.map +1 -1
  36. package/dist/cli/file-processor.js.map +1 -1
  37. package/dist/cli/initial-message.d.ts +1 -1
  38. package/dist/cli/initial-message.d.ts.map +1 -1
  39. package/dist/cli/initial-message.js.map +1 -1
  40. package/dist/cli/list-models.d.ts.map +1 -1
  41. package/dist/cli/list-models.js.map +1 -1
  42. package/dist/cli/project-trust.d.ts.map +1 -1
  43. package/dist/cli/project-trust.js.map +1 -1
  44. package/dist/cli/session-picker.d.ts.map +1 -1
  45. package/dist/cli/session-picker.js.map +1 -1
  46. package/dist/cli/startup-ui.d.ts.map +1 -1
  47. package/dist/cli/startup-ui.js.map +1 -1
  48. package/dist/cli.d.ts.map +1 -1
  49. package/dist/cli.js.map +1 -1
  50. package/dist/client/index.d.ts.map +1 -1
  51. package/dist/client/remote-session.d.ts.map +1 -1
  52. package/dist/client/remote-session.js.map +1 -1
  53. package/dist/client/transcript.d.ts.map +1 -1
  54. package/dist/client/transcript.js +1 -1
  55. package/dist/client/transcript.js.map +1 -1
  56. package/dist/config.d.ts.map +1 -1
  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 +0 -8
  60. package/dist/core/agent-session-runtime.js.map +1 -1
  61. package/dist/core/agent-session-services.d.ts.map +1 -1
  62. package/dist/core/agent-session-services.js.map +1 -1
  63. package/dist/core/agent-session.d.ts +36 -2
  64. package/dist/core/agent-session.d.ts.map +1 -1
  65. package/dist/core/agent-session.js +100 -128
  66. package/dist/core/agent-session.js.map +1 -1
  67. package/dist/core/auth-guidance.d.ts.map +1 -1
  68. package/dist/core/auth-guidance.js.map +1 -1
  69. package/dist/core/auth-storage.d.ts.map +1 -1
  70. package/dist/core/auth-storage.js +3 -8
  71. package/dist/core/auth-storage.js.map +1 -1
  72. package/dist/core/bash-executor.d.ts.map +1 -1
  73. package/dist/core/bash-executor.js.map +1 -1
  74. package/dist/core/cache-stats.d.ts.map +1 -1
  75. package/dist/core/cache-stats.js.map +1 -1
  76. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  77. package/dist/core/compaction/branch-summarization.js.map +1 -1
  78. package/dist/core/compaction/compaction.d.ts.map +1 -1
  79. package/dist/core/compaction/compaction.js.map +1 -1
  80. package/dist/core/compaction/index.d.ts.map +1 -1
  81. package/dist/core/compaction/utils.d.ts.map +1 -1
  82. package/dist/core/compaction/utils.js.map +1 -1
  83. package/dist/core/defaults.d.ts.map +1 -1
  84. package/dist/core/diagnostics.d.ts.map +1 -1
  85. package/dist/core/event-bus.d.ts.map +1 -1
  86. package/dist/core/event-bus.js.map +1 -1
  87. package/dist/core/exec.d.ts.map +1 -1
  88. package/dist/core/exec.js.map +1 -1
  89. package/dist/core/experimental.d.ts +4 -0
  90. package/dist/core/experimental.d.ts.map +1 -1
  91. package/dist/core/experimental.js +4 -0
  92. package/dist/core/experimental.js.map +1 -1
  93. package/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
  94. package/dist/core/export-html/ansi-to-html.js.map +1 -1
  95. package/dist/core/export-html/index.d.ts.map +1 -1
  96. package/dist/core/export-html/index.js.map +1 -1
  97. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  98. package/dist/core/export-html/tool-renderer.js.map +1 -1
  99. package/dist/core/extensions/index.d.ts.map +1 -1
  100. package/dist/core/extensions/loader.d.ts.map +1 -1
  101. package/dist/core/extensions/loader.js.map +1 -1
  102. package/dist/core/extensions/runner.d.ts.map +1 -1
  103. package/dist/core/extensions/runner.js +22 -30
  104. package/dist/core/extensions/runner.js.map +1 -1
  105. package/dist/core/extensions/types.d.ts +4 -0
  106. package/dist/core/extensions/types.d.ts.map +1 -1
  107. package/dist/core/extensions/types.js.map +1 -1
  108. package/dist/core/extensions/wrapper.d.ts.map +1 -1
  109. package/dist/core/extensions/wrapper.js.map +1 -1
  110. package/dist/core/footer-data-provider.d.ts.map +1 -1
  111. package/dist/core/footer-data-provider.js +17 -18
  112. package/dist/core/footer-data-provider.js.map +1 -1
  113. package/dist/core/http-dispatcher.d.ts.map +1 -1
  114. package/dist/core/http-dispatcher.js.map +1 -1
  115. package/dist/core/index.d.ts.map +1 -1
  116. package/dist/core/keybindings.d.ts +24 -0
  117. package/dist/core/keybindings.d.ts.map +1 -1
  118. package/dist/core/keybindings.js +0 -1
  119. package/dist/core/keybindings.js.map +1 -1
  120. package/dist/core/messages.d.ts.map +1 -1
  121. package/dist/core/messages.js.map +1 -1
  122. package/dist/core/model-config.d.ts +5 -0
  123. package/dist/core/model-config.d.ts.map +1 -1
  124. package/dist/core/model-config.js +1 -2
  125. package/dist/core/model-config.js.map +1 -1
  126. package/dist/core/model-registry.d.ts.map +1 -1
  127. package/dist/core/model-registry.js +0 -1
  128. package/dist/core/model-registry.js.map +1 -1
  129. package/dist/core/model-resolver.d.ts.map +1 -1
  130. package/dist/core/model-resolver.js.map +1 -1
  131. package/dist/core/model-runtime.d.ts.map +1 -1
  132. package/dist/core/model-runtime.js +15 -25
  133. package/dist/core/model-runtime.js.map +1 -1
  134. package/dist/core/models-store.d.ts.map +1 -1
  135. package/dist/core/models-store.js +3 -4
  136. package/dist/core/models-store.js.map +1 -1
  137. package/dist/core/output-guard.d.ts.map +1 -1
  138. package/dist/core/output-guard.js.map +1 -1
  139. package/dist/core/package-manager.d.ts.map +1 -1
  140. package/dist/core/package-manager.js +0 -7
  141. package/dist/core/package-manager.js.map +1 -1
  142. package/dist/core/pi-manifest.d.ts.map +1 -1
  143. package/dist/core/pi-manifest.js.map +1 -1
  144. package/dist/core/project-trust.d.ts.map +1 -1
  145. package/dist/core/project-trust.js.map +1 -1
  146. package/dist/core/prompt-templates.d.ts.map +1 -1
  147. package/dist/core/prompt-templates.js.map +1 -1
  148. package/dist/core/provider-attribution.d.ts.map +1 -1
  149. package/dist/core/provider-attribution.js.map +1 -1
  150. package/dist/core/provider-composer.d.ts.map +1 -1
  151. package/dist/core/provider-composer.js.map +1 -1
  152. package/dist/core/radius.d.ts.map +1 -1
  153. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  154. package/dist/core/remote-catalog-provider.js.map +1 -1
  155. package/dist/core/resolve-config-value.d.ts.map +1 -1
  156. package/dist/core/resolve-config-value.js.map +1 -1
  157. package/dist/core/resource-loader.d.ts.map +1 -1
  158. package/dist/core/resource-loader.js +0 -44
  159. package/dist/core/resource-loader.js.map +1 -1
  160. package/dist/core/runtime-credentials.d.ts.map +1 -1
  161. package/dist/core/runtime-credentials.js +1 -2
  162. package/dist/core/runtime-credentials.js.map +1 -1
  163. package/dist/core/sdk.d.ts +5 -3
  164. package/dist/core/sdk.d.ts.map +1 -1
  165. package/dist/core/sdk.js +2 -1
  166. package/dist/core/sdk.js.map +1 -1
  167. package/dist/core/session-cwd.d.ts.map +1 -1
  168. package/dist/core/session-cwd.js +0 -1
  169. package/dist/core/session-cwd.js.map +1 -1
  170. package/dist/core/session-manager.d.ts.map +1 -1
  171. package/dist/core/session-manager.js +9 -13
  172. package/dist/core/session-manager.js.map +1 -1
  173. package/dist/core/settings-manager.d.ts +6 -0
  174. package/dist/core/settings-manager.d.ts.map +1 -1
  175. package/dist/core/settings-manager.js +19 -17
  176. package/dist/core/settings-manager.js.map +1 -1
  177. package/dist/core/skills.d.ts.map +1 -1
  178. package/dist/core/skills.js.map +1 -1
  179. package/dist/core/slash-commands.d.ts.map +1 -1
  180. package/dist/core/source-info.d.ts.map +1 -1
  181. package/dist/core/source-info.js.map +1 -1
  182. package/dist/core/system-prompt.d.ts.map +1 -1
  183. package/dist/core/system-prompt.js +1 -1
  184. package/dist/core/system-prompt.js.map +1 -1
  185. package/dist/core/telemetry.d.ts.map +1 -1
  186. package/dist/core/telemetry.js.map +1 -1
  187. package/dist/core/timings.d.ts.map +1 -1
  188. package/dist/core/timings.js.map +1 -1
  189. package/dist/core/tools/bash.d.ts.map +1 -1
  190. package/dist/core/tools/bash.js +10 -5
  191. package/dist/core/tools/bash.js.map +1 -1
  192. package/dist/core/tools/edit-diff.d.ts.map +1 -1
  193. package/dist/core/tools/edit-diff.js.map +1 -1
  194. package/dist/core/tools/edit.d.ts.map +1 -1
  195. package/dist/core/tools/edit.js +2 -0
  196. package/dist/core/tools/edit.js.map +1 -1
  197. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
  198. package/dist/core/tools/file-mutation-queue.js.map +1 -1
  199. package/dist/core/tools/find.d.ts +1 -1
  200. package/dist/core/tools/find.d.ts.map +1 -1
  201. package/dist/core/tools/find.js +1 -1
  202. package/dist/core/tools/find.js.map +1 -1
  203. package/dist/core/tools/grep.d.ts.map +1 -1
  204. package/dist/core/tools/grep.js +1 -1
  205. package/dist/core/tools/grep.js.map +1 -1
  206. package/dist/core/tools/index.d.ts.map +1 -1
  207. package/dist/core/tools/index.js.map +1 -1
  208. package/dist/core/tools/ls.d.ts.map +1 -1
  209. package/dist/core/tools/ls.js.map +1 -1
  210. package/dist/core/tools/output-accumulator.d.ts.map +1 -1
  211. package/dist/core/tools/output-accumulator.js +12 -18
  212. package/dist/core/tools/output-accumulator.js.map +1 -1
  213. package/dist/core/tools/path-utils.d.ts.map +1 -1
  214. package/dist/core/tools/path-utils.js.map +1 -1
  215. package/dist/core/tools/read.d.ts.map +1 -1
  216. package/dist/core/tools/read.js +2 -0
  217. package/dist/core/tools/read.js.map +1 -1
  218. package/dist/core/tools/render-utils.d.ts.map +1 -1
  219. package/dist/core/tools/render-utils.js.map +1 -1
  220. package/dist/core/tools/subagent.d.ts.map +1 -1
  221. package/dist/core/tools/subagent.js.map +1 -1
  222. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  223. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  224. package/dist/core/tools/truncate.d.ts.map +1 -1
  225. package/dist/core/tools/truncate.js.map +1 -1
  226. package/dist/core/tools/write.d.ts.map +1 -1
  227. package/dist/core/tools/write.js +2 -1
  228. package/dist/core/tools/write.js.map +1 -1
  229. package/dist/core/trust-manager.d.ts.map +1 -1
  230. package/dist/core/trust-manager.js +0 -1
  231. package/dist/core/trust-manager.js.map +1 -1
  232. package/dist/core/usage-totals.d.ts.map +1 -1
  233. package/dist/core/usage-totals.js.map +1 -1
  234. package/dist/extensions/index.d.ts.map +1 -1
  235. package/dist/extensions/llama/client.d.ts.map +1 -1
  236. package/dist/extensions/llama/client.js +0 -2
  237. package/dist/extensions/llama/client.js.map +1 -1
  238. package/dist/extensions/llama/huggingface.d.ts.map +1 -1
  239. package/dist/extensions/llama/huggingface.js +0 -2
  240. package/dist/extensions/llama/huggingface.js.map +1 -1
  241. package/dist/extensions/llama/index.d.ts.map +1 -1
  242. package/dist/extensions/llama/index.js.map +1 -1
  243. package/dist/extensions/llama/provider.d.ts.map +1 -1
  244. package/dist/extensions/llama/provider.js.map +1 -1
  245. package/dist/extensions/llama/ui.d.ts.map +1 -1
  246. package/dist/extensions/llama/ui.js +12 -28
  247. package/dist/extensions/llama/ui.js.map +1 -1
  248. package/dist/humain/agent-execution-protocol.d.ts.map +1 -1
  249. package/dist/humain/agent-execution-protocol.js.map +1 -1
  250. package/dist/humain/agent-execution-runtime.d.ts.map +1 -1
  251. package/dist/humain/agent-execution-runtime.js.map +1 -1
  252. package/dist/humain/bedrock-provider/vendor/index.bundle.mjs +127 -7
  253. package/dist/humain/brand-logo.d.ts.map +1 -1
  254. package/dist/humain/index.d.ts.map +1 -1
  255. package/dist/humain/index.js.map +1 -1
  256. package/dist/humain/legacy-workflow-tiers.d.ts.map +1 -1
  257. package/dist/humain/legacy-workflow-tiers.js.map +1 -1
  258. package/dist/humain/mcp-adapter/vendor/package.json +3 -3
  259. package/dist/humain/mcp-adapter.d.ts.map +1 -1
  260. package/dist/humain/mcp-adapter.js.map +1 -1
  261. package/dist/humain/pi-agent-execution-host.d.ts.map +1 -1
  262. package/dist/humain/pi-agent-execution-host.js.map +1 -1
  263. package/dist/humain/web-access/host.d.ts.map +1 -1
  264. package/dist/humain/web-access/index.d.ts.map +1 -1
  265. package/dist/humain/web-access/index.js.map +1 -1
  266. package/dist/humain/web-access/vendor/activity.d.ts.map +1 -1
  267. package/dist/humain/web-access/vendor/activity.js +7 -5
  268. package/dist/humain/web-access/vendor/activity.js.map +1 -1
  269. package/dist/humain/web-access/vendor/anysearch.d.ts.map +1 -1
  270. package/dist/humain/web-access/vendor/anysearch.js.map +1 -1
  271. package/dist/humain/web-access/vendor/auth-fetch.d.ts.map +1 -1
  272. package/dist/humain/web-access/vendor/auth-fetch.js.map +1 -1
  273. package/dist/humain/web-access/vendor/bocha.d.ts.map +1 -1
  274. package/dist/humain/web-access/vendor/bocha.js.map +1 -1
  275. package/dist/humain/web-access/vendor/brave.d.ts.map +1 -1
  276. package/dist/humain/web-access/vendor/brave.js.map +1 -1
  277. package/dist/humain/web-access/vendor/brightdata-unlocker.d.ts.map +1 -1
  278. package/dist/humain/web-access/vendor/brightdata-unlocker.js.map +1 -1
  279. package/dist/humain/web-access/vendor/brightdata.d.ts.map +1 -1
  280. package/dist/humain/web-access/vendor/brightdata.js.map +1 -1
  281. package/dist/humain/web-access/vendor/chrome-cookies.d.ts.map +1 -1
  282. package/dist/humain/web-access/vendor/chrome-cookies.js +92 -14
  283. package/dist/humain/web-access/vendor/chrome-cookies.js.map +1 -1
  284. package/dist/humain/web-access/vendor/content-find.d.ts.map +1 -1
  285. package/dist/humain/web-access/vendor/content-find.js.map +1 -1
  286. package/dist/humain/web-access/vendor/credential-source.d.ts.map +1 -1
  287. package/dist/humain/web-access/vendor/credential-source.js +0 -2
  288. package/dist/humain/web-access/vendor/credential-source.js.map +1 -1
  289. package/dist/humain/web-access/vendor/curator-page.d.ts.map +1 -1
  290. package/dist/humain/web-access/vendor/curator-page.js.map +1 -1
  291. package/dist/humain/web-access/vendor/curator-server.d.ts.map +1 -1
  292. package/dist/humain/web-access/vendor/curator-server.js.map +1 -1
  293. package/dist/humain/web-access/vendor/data-uri-sanitize.d.ts +21 -0
  294. package/dist/humain/web-access/vendor/data-uri-sanitize.d.ts.map +1 -0
  295. package/dist/humain/web-access/vendor/data-uri-sanitize.js +373 -0
  296. package/dist/humain/web-access/vendor/data-uri-sanitize.js.map +1 -0
  297. package/dist/humain/web-access/vendor/datalab-pdf-extract.d.ts.map +1 -1
  298. package/dist/humain/web-access/vendor/datalab-pdf-extract.js.map +1 -1
  299. package/dist/humain/web-access/vendor/declared-web-links.d.ts.map +1 -1
  300. package/dist/humain/web-access/vendor/declared-web-links.js.map +1 -1
  301. package/dist/humain/web-access/vendor/duckduckgo.d.ts.map +1 -1
  302. package/dist/humain/web-access/vendor/duckduckgo.js.map +1 -1
  303. package/dist/humain/web-access/vendor/exa.d.ts.map +1 -1
  304. package/dist/humain/web-access/vendor/exa.js.map +1 -1
  305. package/dist/humain/web-access/vendor/extract.d.ts.map +1 -1
  306. package/dist/humain/web-access/vendor/extract.js +14 -2
  307. package/dist/humain/web-access/vendor/extract.js.map +1 -1
  308. package/dist/humain/web-access/vendor/feature-config.d.ts.map +1 -1
  309. package/dist/humain/web-access/vendor/feature-config.js.map +1 -1
  310. package/dist/humain/web-access/vendor/fetch-params.d.ts.map +1 -1
  311. package/dist/humain/web-access/vendor/fetch-params.js.map +1 -1
  312. package/dist/humain/web-access/vendor/firecrawl.d.ts.map +1 -1
  313. package/dist/humain/web-access/vendor/firecrawl.js +15 -2
  314. package/dist/humain/web-access/vendor/firecrawl.js.map +1 -1
  315. package/dist/humain/web-access/vendor/gemini-api.d.ts.map +1 -1
  316. package/dist/humain/web-access/vendor/gemini-api.js.map +1 -1
  317. package/dist/humain/web-access/vendor/gemini-pdf-extract.d.ts.map +1 -1
  318. package/dist/humain/web-access/vendor/gemini-pdf-extract.js.map +1 -1
  319. package/dist/humain/web-access/vendor/gemini-search.d.ts.map +1 -1
  320. package/dist/humain/web-access/vendor/gemini-search.js +0 -4
  321. package/dist/humain/web-access/vendor/gemini-search.js.map +1 -1
  322. package/dist/humain/web-access/vendor/gemini-url-context.d.ts.map +1 -1
  323. package/dist/humain/web-access/vendor/gemini-url-context.js.map +1 -1
  324. package/dist/humain/web-access/vendor/gemini-web-config.d.ts.map +1 -1
  325. package/dist/humain/web-access/vendor/gemini-web-config.js.map +1 -1
  326. package/dist/humain/web-access/vendor/gemini-web.d.ts.map +1 -1
  327. package/dist/humain/web-access/vendor/gemini-web.js.map +1 -1
  328. package/dist/humain/web-access/vendor/github-api.d.ts.map +1 -1
  329. package/dist/humain/web-access/vendor/github-api.js.map +1 -1
  330. package/dist/humain/web-access/vendor/github-extract.d.ts.map +1 -1
  331. package/dist/humain/web-access/vendor/github-extract.js +69 -35
  332. package/dist/humain/web-access/vendor/github-extract.js.map +1 -1
  333. package/dist/humain/web-access/vendor/index.d.ts.map +1 -1
  334. package/dist/humain/web-access/vendor/index.js +22 -5
  335. package/dist/humain/web-access/vendor/index.js.map +1 -1
  336. package/dist/humain/web-access/vendor/jina-search.d.ts.map +1 -1
  337. package/dist/humain/web-access/vendor/jina-search.js.map +1 -1
  338. package/dist/humain/web-access/vendor/kagi.d.ts.map +1 -1
  339. package/dist/humain/web-access/vendor/kagi.js.map +1 -1
  340. package/dist/humain/web-access/vendor/ollama.d.ts.map +1 -1
  341. package/dist/humain/web-access/vendor/ollama.js.map +1 -1
  342. package/dist/humain/web-access/vendor/openai-search.d.ts +1 -1
  343. package/dist/humain/web-access/vendor/openai-search.d.ts.map +1 -1
  344. package/dist/humain/web-access/vendor/openai-search.js +15 -5
  345. package/dist/humain/web-access/vendor/openai-search.js.map +1 -1
  346. package/dist/humain/web-access/vendor/page-query.d.ts.map +1 -1
  347. package/dist/humain/web-access/vendor/page-query.js.map +1 -1
  348. package/dist/humain/web-access/vendor/parallel-mcp.d.ts.map +1 -1
  349. package/dist/humain/web-access/vendor/parallel-mcp.js.map +1 -1
  350. package/dist/humain/web-access/vendor/parallel.d.ts.map +1 -1
  351. package/dist/humain/web-access/vendor/parallel.js.map +1 -1
  352. package/dist/humain/web-access/vendor/pdf-extract.d.ts +1 -0
  353. package/dist/humain/web-access/vendor/pdf-extract.d.ts.map +1 -1
  354. package/dist/humain/web-access/vendor/pdf-extract.js +15 -5
  355. package/dist/humain/web-access/vendor/pdf-extract.js.map +1 -1
  356. package/dist/humain/web-access/vendor/perplexity.d.ts.map +1 -1
  357. package/dist/humain/web-access/vendor/perplexity.js.map +1 -1
  358. package/dist/humain/web-access/vendor/querit.d.ts.map +1 -1
  359. package/dist/humain/web-access/vendor/querit.js.map +1 -1
  360. package/dist/humain/web-access/vendor/query-rewrite.d.ts.map +1 -1
  361. package/dist/humain/web-access/vendor/query-rewrite.js.map +1 -1
  362. package/dist/humain/web-access/vendor/render-search-error.d.ts.map +1 -1
  363. package/dist/humain/web-access/vendor/render-search-error.js.map +1 -1
  364. package/dist/humain/web-access/vendor/rsc-extract.d.ts.map +1 -1
  365. package/dist/humain/web-access/vendor/rsc-extract.js.map +1 -1
  366. package/dist/humain/web-access/vendor/search1api.d.ts.map +1 -1
  367. package/dist/humain/web-access/vendor/search1api.js.map +1 -1
  368. package/dist/humain/web-access/vendor/searchinfinity.d.ts.map +1 -1
  369. package/dist/humain/web-access/vendor/searchinfinity.js.map +1 -1
  370. package/dist/humain/web-access/vendor/searxng.d.ts.map +1 -1
  371. package/dist/humain/web-access/vendor/searxng.js.map +1 -1
  372. package/dist/humain/web-access/vendor/serpbase.d.ts.map +1 -1
  373. package/dist/humain/web-access/vendor/serpbase.js.map +1 -1
  374. package/dist/humain/web-access/vendor/serpdive.d.ts.map +1 -1
  375. package/dist/humain/web-access/vendor/serpdive.js.map +1 -1
  376. package/dist/humain/web-access/vendor/serper.d.ts.map +1 -1
  377. package/dist/humain/web-access/vendor/serper.js.map +1 -1
  378. package/dist/humain/web-access/vendor/source-check.d.ts.map +1 -1
  379. package/dist/humain/web-access/vendor/source-check.js.map +1 -1
  380. package/dist/humain/web-access/vendor/ssrf-protection.d.ts +2 -0
  381. package/dist/humain/web-access/vendor/ssrf-protection.d.ts.map +1 -1
  382. package/dist/humain/web-access/vendor/ssrf-protection.js +11 -2
  383. package/dist/humain/web-access/vendor/ssrf-protection.js.map +1 -1
  384. package/dist/humain/web-access/vendor/storage.d.ts.map +1 -1
  385. package/dist/humain/web-access/vendor/storage.js.map +1 -1
  386. package/dist/humain/web-access/vendor/summary-model-scope.d.ts.map +1 -1
  387. package/dist/humain/web-access/vendor/summary-model-scope.js.map +1 -1
  388. package/dist/humain/web-access/vendor/summary-review.d.ts.map +1 -1
  389. package/dist/humain/web-access/vendor/summary-review.js.map +1 -1
  390. package/dist/humain/web-access/vendor/tavily.d.ts.map +1 -1
  391. package/dist/humain/web-access/vendor/tavily.js.map +1 -1
  392. package/dist/humain/web-access/vendor/tinyfish.d.ts.map +1 -1
  393. package/dist/humain/web-access/vendor/tinyfish.js.map +1 -1
  394. package/dist/humain/web-access/vendor/utils.d.ts.map +1 -1
  395. package/dist/humain/web-access/vendor/utils.js.map +1 -1
  396. package/dist/humain/web-access/vendor/valyu.d.ts.map +1 -1
  397. package/dist/humain/web-access/vendor/valyu.js.map +1 -1
  398. package/dist/humain/web-access/vendor/video-extract.d.ts.map +1 -1
  399. package/dist/humain/web-access/vendor/video-extract.js.map +1 -1
  400. package/dist/humain/web-access/vendor/xai-search.d.ts.map +1 -1
  401. package/dist/humain/web-access/vendor/xai-search.js.map +1 -1
  402. package/dist/humain/web-access/vendor/youtube-extract.d.ts.map +1 -1
  403. package/dist/humain/web-access/vendor/youtube-extract.js.map +1 -1
  404. package/dist/index.d.ts +1 -1
  405. package/dist/index.d.ts.map +1 -1
  406. package/dist/index.js.map +1 -1
  407. package/dist/main.d.ts.map +1 -1
  408. package/dist/main.js +4 -0
  409. package/dist/main.js.map +1 -1
  410. package/dist/migrations.d.ts.map +1 -1
  411. package/dist/migrations.js.map +1 -1
  412. package/dist/modes/agent-exec-mode.d.ts.map +1 -1
  413. package/dist/modes/agent-exec-mode.js.map +1 -1
  414. package/dist/modes/index.d.ts.map +1 -1
  415. package/dist/modes/interactive/components/armin.d.ts.map +1 -1
  416. package/dist/modes/interactive/components/armin.js +6 -10
  417. package/dist/modes/interactive/components/armin.js.map +1 -1
  418. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  419. package/dist/modes/interactive/components/assistant-message.js +2 -9
  420. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  421. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  422. package/dist/modes/interactive/components/bash-execution.js +4 -9
  423. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  424. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  425. package/dist/modes/interactive/components/bordered-loader.js +0 -3
  426. package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  427. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  428. package/dist/modes/interactive/components/branch-summary-message.js +1 -3
  429. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  430. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  431. package/dist/modes/interactive/components/compaction-summary-message.js +1 -3
  432. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  433. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  434. package/dist/modes/interactive/components/config-selector.js +5 -22
  435. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  436. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  437. package/dist/modes/interactive/components/countdown-timer.js +0 -5
  438. package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  439. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  440. package/dist/modes/interactive/components/custom-editor.js +1 -8
  441. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  442. package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -1
  443. package/dist/modes/interactive/components/custom-entry.js +1 -4
  444. package/dist/modes/interactive/components/custom-entry.js.map +1 -1
  445. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  446. package/dist/modes/interactive/components/custom-message.js +1 -7
  447. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  448. package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
  449. package/dist/modes/interactive/components/daxnuts.js +6 -8
  450. package/dist/modes/interactive/components/daxnuts.js.map +1 -1
  451. package/dist/modes/interactive/components/diff.d.ts.map +1 -1
  452. package/dist/modes/interactive/components/diff.js +2 -2
  453. package/dist/modes/interactive/components/diff.js.map +1 -1
  454. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
  455. package/dist/modes/interactive/components/dynamic-border.js +0 -1
  456. package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  457. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -1
  458. package/dist/modes/interactive/components/earendil-announcement.js.map +1 -1
  459. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  460. package/dist/modes/interactive/components/extension-editor.js +1 -7
  461. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  462. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  463. package/dist/modes/interactive/components/extension-input.js +2 -8
  464. package/dist/modes/interactive/components/extension-input.js.map +1 -1
  465. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  466. package/dist/modes/interactive/components/extension-selector.js +1 -9
  467. package/dist/modes/interactive/components/extension-selector.js.map +1 -1
  468. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -1
  469. package/dist/modes/interactive/components/first-time-setup.js +2 -4
  470. package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
  471. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  472. package/dist/modes/interactive/components/footer.js +1 -3
  473. package/dist/modes/interactive/components/footer.js.map +1 -1
  474. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  475. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  476. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  477. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  478. package/dist/modes/interactive/components/login-dialog.js +3 -9
  479. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  480. package/dist/modes/interactive/components/markdown-transform.d.ts.map +1 -1
  481. package/dist/modes/interactive/components/markdown-transform.js.map +1 -1
  482. package/dist/modes/interactive/components/mermaid.d.ts.map +1 -1
  483. package/dist/modes/interactive/components/mermaid.js.map +1 -1
  484. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  485. package/dist/modes/interactive/components/model-selector.js +14 -26
  486. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  487. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  488. package/dist/modes/interactive/components/oauth-selector.js +3 -11
  489. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  490. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  491. package/dist/modes/interactive/components/scoped-models-selector.js +9 -14
  492. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  493. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
  494. package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  495. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  496. package/dist/modes/interactive/components/session-selector.js +33 -57
  497. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  498. package/dist/modes/interactive/components/settings-selector.d.ts +3 -1
  499. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  500. package/dist/modes/interactive/components/settings-selector.js +10 -14
  501. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  502. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
  503. package/dist/modes/interactive/components/show-images-selector.js +0 -1
  504. package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
  505. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  506. package/dist/modes/interactive/components/skill-invocation-message.js +1 -3
  507. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  508. package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -1
  509. package/dist/modes/interactive/components/status-indicator.js +0 -2
  510. package/dist/modes/interactive/components/status-indicator.js.map +1 -1
  511. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
  512. package/dist/modes/interactive/components/theme-selector.js +0 -2
  513. package/dist/modes/interactive/components/theme-selector.js.map +1 -1
  514. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  515. package/dist/modes/interactive/components/thinking-selector.js +0 -1
  516. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  517. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  518. package/dist/modes/interactive/components/tool-execution.js +19 -25
  519. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  520. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  521. package/dist/modes/interactive/components/tree-selector.js +18 -34
  522. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  523. package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -1
  524. package/dist/modes/interactive/components/trust-selector.js +0 -6
  525. package/dist/modes/interactive/components/trust-selector.js.map +1 -1
  526. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  527. package/dist/modes/interactive/components/user-message-selector.js +3 -6
  528. package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  529. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  530. package/dist/modes/interactive/components/user-message.js +0 -4
  531. package/dist/modes/interactive/components/user-message.js.map +1 -1
  532. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
  533. package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
  534. package/dist/modes/interactive/external-editor.d.ts.map +1 -1
  535. package/dist/modes/interactive/external-editor.js.map +1 -1
  536. package/dist/modes/interactive/interactive-mode.d.ts +18 -2
  537. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  538. package/dist/modes/interactive/interactive-mode.js +147 -137
  539. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  540. package/dist/modes/interactive/model-catalog-refresh.d.ts +7 -0
  541. package/dist/modes/interactive/model-catalog-refresh.d.ts.map +1 -0
  542. package/dist/modes/interactive/model-catalog-refresh.js +36 -0
  543. package/dist/modes/interactive/model-catalog-refresh.js.map +1 -0
  544. package/dist/modes/interactive/model-search.d.ts.map +1 -1
  545. package/dist/modes/interactive/model-search.js.map +1 -1
  546. package/dist/modes/interactive/theme/dark.json +2 -0
  547. package/dist/modes/interactive/theme/light.json +2 -0
  548. package/dist/modes/interactive/theme/theme-controller.d.ts +10 -2
  549. package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
  550. package/dist/modes/interactive/theme/theme-controller.js +25 -18
  551. package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
  552. package/dist/modes/interactive/theme/theme-schema.json +9 -1
  553. package/dist/modes/interactive/theme/theme.d.ts +7 -5
  554. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  555. package/dist/modes/interactive/theme/theme.js +12 -8
  556. package/dist/modes/interactive/theme/theme.js.map +1 -1
  557. package/dist/modes/json-event.d.ts +4 -1
  558. package/dist/modes/json-event.d.ts.map +1 -1
  559. package/dist/modes/json-event.js +5 -2
  560. package/dist/modes/json-event.js.map +1 -1
  561. package/dist/modes/print-mode.d.ts.map +1 -1
  562. package/dist/modes/print-mode.js.map +1 -1
  563. package/dist/modes/rpc/jsonl.d.ts.map +1 -1
  564. package/dist/modes/rpc/jsonl.js.map +1 -1
  565. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  566. package/dist/modes/rpc/rpc-client.js +9 -10
  567. package/dist/modes/rpc/rpc-client.js.map +1 -1
  568. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  569. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  570. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  571. package/dist/package-manager-cli.d.ts.map +1 -1
  572. package/dist/package-manager-cli.js.map +1 -1
  573. package/dist/rpc-entry.d.ts.map +1 -1
  574. package/dist/rpc-entry.js.map +1 -1
  575. package/dist/server/create-harness.d.ts.map +1 -1
  576. package/dist/server/create-harness.js +2 -0
  577. package/dist/server/create-harness.js.map +1 -1
  578. package/dist/utils/abort.d.ts.map +1 -1
  579. package/dist/utils/abort.js.map +1 -1
  580. package/dist/utils/ansi.d.ts.map +1 -1
  581. package/dist/utils/ansi.js.map +1 -1
  582. package/dist/utils/changelog.d.ts.map +1 -1
  583. package/dist/utils/changelog.js.map +1 -1
  584. package/dist/utils/child-process.d.ts.map +1 -1
  585. package/dist/utils/child-process.js.map +1 -1
  586. package/dist/utils/clipboard-image.d.ts.map +1 -1
  587. package/dist/utils/clipboard-image.js +1 -1
  588. package/dist/utils/clipboard-image.js.map +1 -1
  589. package/dist/utils/clipboard-native.d.ts.map +1 -1
  590. package/dist/utils/clipboard-native.js.map +1 -1
  591. package/dist/utils/clipboard.d.ts.map +1 -1
  592. package/dist/utils/clipboard.js.map +1 -1
  593. package/dist/utils/deprecation.d.ts.map +1 -1
  594. package/dist/utils/deprecation.js.map +1 -1
  595. package/dist/utils/exif-orientation.d.ts.map +1 -1
  596. package/dist/utils/exif-orientation.js.map +1 -1
  597. package/dist/utils/frontmatter.d.ts.map +1 -1
  598. package/dist/utils/frontmatter.js.map +1 -1
  599. package/dist/utils/fs-watch.d.ts.map +1 -1
  600. package/dist/utils/fs-watch.js.map +1 -1
  601. package/dist/utils/git.d.ts.map +1 -1
  602. package/dist/utils/git.js.map +1 -1
  603. package/dist/utils/html.d.ts.map +1 -1
  604. package/dist/utils/html.js.map +1 -1
  605. package/dist/utils/image-convert.d.ts.map +1 -1
  606. package/dist/utils/image-convert.js.map +1 -1
  607. package/dist/utils/image-process.d.ts.map +1 -1
  608. package/dist/utils/image-process.js.map +1 -1
  609. package/dist/utils/image-resize-core.d.ts.map +1 -1
  610. package/dist/utils/image-resize-core.js.map +1 -1
  611. package/dist/utils/image-resize-worker.d.ts.map +1 -1
  612. package/dist/utils/image-resize-worker.js.map +1 -1
  613. package/dist/utils/image-resize.d.ts.map +1 -1
  614. package/dist/utils/image-resize.js.map +1 -1
  615. package/dist/utils/json.d.ts.map +1 -1
  616. package/dist/utils/json.js.map +1 -1
  617. package/dist/utils/management-http.d.ts.map +1 -1
  618. package/dist/utils/management-http.js.map +1 -1
  619. package/dist/utils/mime.d.ts.map +1 -1
  620. package/dist/utils/mime.js.map +1 -1
  621. package/dist/utils/open-browser.d.ts.map +1 -1
  622. package/dist/utils/open-browser.js.map +1 -1
  623. package/dist/utils/paths.d.ts.map +1 -1
  624. package/dist/utils/paths.js.map +1 -1
  625. package/dist/utils/photon.d.ts.map +1 -1
  626. package/dist/utils/photon.js.map +1 -1
  627. package/dist/utils/pi-user-agent.d.ts.map +1 -1
  628. package/dist/utils/pi-user-agent.js.map +1 -1
  629. package/dist/utils/shell.d.ts.map +1 -1
  630. package/dist/utils/shell.js.map +1 -1
  631. package/dist/utils/sleep.d.ts.map +1 -1
  632. package/dist/utils/sleep.js.map +1 -1
  633. package/dist/utils/syntax-highlight.d.ts.map +1 -1
  634. package/dist/utils/syntax-highlight.js +1 -1
  635. package/dist/utils/syntax-highlight.js.map +1 -1
  636. package/dist/utils/tool-result-images.d.ts.map +1 -1
  637. package/dist/utils/tool-result-images.js.map +1 -1
  638. package/dist/utils/tools-manager.d.ts +10 -1
  639. package/dist/utils/tools-manager.d.ts.map +1 -1
  640. package/dist/utils/tools-manager.js +14 -19
  641. package/dist/utils/tools-manager.js.map +1 -1
  642. package/dist/utils/version-check.d.ts.map +1 -1
  643. package/dist/utils/version-check.js.map +1 -1
  644. package/dist/utils/windows-self-update.d.ts.map +1 -1
  645. package/dist/utils/windows-self-update.js.map +1 -1
  646. package/docs/compaction.md +3 -3
  647. package/docs/custom-provider.md +1 -1
  648. package/docs/environment-variables.md +1 -0
  649. package/docs/extensions.md +4 -0
  650. package/docs/json.md +6 -4
  651. package/docs/keybindings.md +8 -2
  652. package/docs/rpc.md +15 -4
  653. package/docs/sdk.md +9 -0
  654. package/docs/settings.md +31 -0
  655. package/docs/terminal-setup.md +23 -2
  656. package/docs/themes.md +23 -3
  657. package/docs/tui.md +2 -2
  658. package/docs/usage.md +3 -2
  659. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  660. package/examples/extensions/custom-provider-anthropic/package.json +2 -2
  661. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  662. package/examples/extensions/gondolin/package-lock.json +2 -2
  663. package/examples/extensions/gondolin/package.json +1 -1
  664. package/examples/extensions/minimal-mode.ts +6 -6
  665. package/examples/extensions/sandbox/package-lock.json +2 -2
  666. package/examples/extensions/sandbox/package.json +2 -2
  667. package/examples/extensions/with-deps/package-lock.json +2 -2
  668. package/examples/extensions/with-deps/package.json +1 -1
  669. package/npm-shrinkwrap.json +853 -661
  670. package/package.json +33 -33
  671. package/src/humain/web-access/UPSTREAM.md +1 -1
  672. package/src/humain/web-access/upstream.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"agent-execution-protocol.js","sourceRoot":"","sources":["../../src/humain/agent-execution-protocol.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Static, Type } from \"typebox\";\nimport { Compile } from \"typebox/compile\";\n\nexport const HUMAIN_AGENT_EXECUTION_SCHEMA_VERSION = 1 as const;\n\nconst StrictObject = <const T extends Parameters<typeof Type.Object>[0]>(properties: T) =>\n\tType.Object(properties, { additionalProperties: false });\nconst StableIdentifier = Type.String({ minLength: 1, maxLength: 256 });\nconst PositiveInteger = Type.Integer({ minimum: 1, maximum: Number.MAX_SAFE_INTEGER });\nconst NonnegativeInteger = Type.Integer({ minimum: 0, maximum: Number.MAX_SAFE_INTEGER });\nconst Digest = Type.String({ pattern: \"^[a-f0-9]{64}$\" });\nconst SafeArtifactReference = Type.String({\n\tminLength: 1,\n\tmaxLength: 512,\n\tpattern: \"^(?!/)(?!.*(?:^|/)\\\\.\\\\.(?:/|$))[A-Za-z0-9._-]+(?:/[A-Za-z0-9._-]+)*$\",\n});\n\nexport const HumainAgentRouteRefSchema = Type.Union([\n\tType.Literal(\"route:fast\"),\n\tType.Literal(\"route:balanced\"),\n\tType.Literal(\"route:thorough\"),\n]);\nexport type HumainAgentRouteRef = Static<typeof HumainAgentRouteRefSchema>;\n\nexport const HumainAgentArtifactSchema = StrictObject({\n\tid: StableIdentifier,\n\tkind: Type.Union([\n\t\tType.Literal(\"candidate-patch\"),\n\t\tType.Literal(\"dependency-output\"),\n\t\tType.Literal(\"source-observation\"),\n\t\tType.Literal(\"validation-report\"),\n\t]),\n\treference: SafeArtifactReference,\n\tdigest: Digest,\n});\nexport type HumainAgentArtifact = Static<typeof HumainAgentArtifactSchema>;\n\nexport const HumainAgentExecutionControlsSchema = StrictObject({\n\tmaxConcurrency: Type.Integer({ minimum: 1, maximum: 16 }),\n\tmaxDepth: Type.Integer({ minimum: 1, maximum: 16 }),\n\tdepth: Type.Integer({ minimum: 0, maximum: 16 }),\n\ttimeoutMs: Type.Integer({ minimum: 1, maximum: 86_400_000 }),\n});\nexport type HumainAgentExecutionControls = Static<typeof HumainAgentExecutionControlsSchema>;\n\nexport const HumainAgentExecutionClaimSchema = StrictObject({\n\tworkUnitId: StableIdentifier,\n\tnodeId: StableIdentifier,\n\tattemptNumber: PositiveInteger,\n\tattemptFence: PositiveInteger,\n\tsegmentFence: PositiveInteger,\n\trouteRef: HumainAgentRouteRefSchema,\n\ttask: Type.String({ minLength: 1, maxLength: 100_000 }),\n\tcontrols: HumainAgentExecutionControlsSchema,\n\tinput: StrictObject({\n\t\tartifacts: Type.Array(HumainAgentArtifactSchema, { maxItems: 16 }),\n\t}),\n});\nexport type HumainAgentExecutionClaim = Static<typeof HumainAgentExecutionClaimSchema>;\n\nexport const HumainAgentExecutionRequestSchema = StrictObject({\n\tschemaVersion: Type.Literal(HUMAIN_AGENT_EXECUTION_SCHEMA_VERSION),\n\tkind: Type.Literal(\"execute\"),\n\tmode: Type.Union([Type.Literal(\"node\"), Type.Literal(\"workflow\")]),\n\tinvocationId: StableIdentifier,\n\tbatchId: Type.Optional(StableIdentifier),\n\tclaims: Type.Array(HumainAgentExecutionClaimSchema, { minItems: 1, maxItems: 8 }),\n});\nexport type HumainAgentExecutionRequest = Static<typeof HumainAgentExecutionRequestSchema>;\n\nexport const HumainAgentUsageSchema = Type.Union([\n\tStrictObject({ status: Type.Literal(\"unknown\") }),\n\tStrictObject({\n\t\tstatus: Type.Literal(\"measured\"),\n\t\ttotalCalls: Type.Optional(NonnegativeInteger),\n\t\ttotalTurns: Type.Optional(NonnegativeInteger),\n\t\ttotalTokens: NonnegativeInteger,\n\t\tcostMicrocents: NonnegativeInteger,\n\t}),\n]);\nexport type HumainAgentUsage = Static<typeof HumainAgentUsageSchema>;\n\nexport const HUMAIN_AGENT_EXECUTION_FAILURE_CODES = [\n\t\"adapter_execution_failed\",\n\t\"incompatible_adapter_capability\",\n\t\"invalid_adapter_result\",\n\t\"invalid_execution_request\",\n\t\"provider_timeout\",\n\t\"provider_unavailable\",\n\t\"reused_execution_context\",\n\t\"transport_interrupted\",\n] as const;\nexport type HumainAgentExecutionFailureCode = (typeof HUMAIN_AGENT_EXECUTION_FAILURE_CODES)[number];\n\nconst HumainAgentExecutionFailureCodeSchema = Type.Union([\n\tType.Literal(\"adapter_execution_failed\"),\n\tType.Literal(\"incompatible_adapter_capability\"),\n\tType.Literal(\"invalid_adapter_result\"),\n\tType.Literal(\"invalid_execution_request\"),\n\tType.Literal(\"provider_timeout\"),\n\tType.Literal(\"provider_unavailable\"),\n\tType.Literal(\"reused_execution_context\"),\n\tType.Literal(\"transport_interrupted\"),\n]);\n\nconst OutcomeIdentity = {\n\tworkUnitId: StableIdentifier,\n\tnodeId: StableIdentifier,\n\tattemptNumber: PositiveInteger,\n\tattemptFence: PositiveInteger,\n\tsegmentFence: PositiveInteger,\n};\n\nexport const HumainAgentExecutionOutcomeSchema = Type.Union([\n\tStrictObject({\n\t\t...OutcomeIdentity,\n\t\tkind: Type.Literal(\"succeeded\"),\n\t\toutput: StrictObject({\n\t\t\tsummary: Type.String({ minLength: 1, maxLength: 512 }),\n\t\t\tartifacts: Type.Array(HumainAgentArtifactSchema, { maxItems: 16 }),\n\t\t}),\n\t\tusage: HumainAgentUsageSchema,\n\t}),\n\tStrictObject({\n\t\t...OutcomeIdentity,\n\t\tkind: Type.Literal(\"failed\"),\n\t\tfailureCode: HumainAgentExecutionFailureCodeSchema,\n\t\tusage: HumainAgentUsageSchema,\n\t}),\n\tStrictObject({\n\t\t...OutcomeIdentity,\n\t\tkind: Type.Literal(\"cancelled\"),\n\t\tterminationConfirmed: Type.Boolean(),\n\t\tusage: HumainAgentUsageSchema,\n\t}),\n]);\nexport type HumainAgentExecutionOutcome = Static<typeof HumainAgentExecutionOutcomeSchema>;\n\nexport const HumainAgentExecutionResponseSchema = StrictObject({\n\tschemaVersion: Type.Literal(HUMAIN_AGENT_EXECUTION_SCHEMA_VERSION),\n\tkind: Type.Literal(\"result\"),\n\tmode: Type.Union([Type.Literal(\"node\"), Type.Literal(\"workflow\")]),\n\tinvocationId: StableIdentifier,\n\tbatchId: Type.Optional(StableIdentifier),\n\ttermination: Type.Union([Type.Literal(\"not-requested\"), Type.Literal(\"confirmed\"), Type.Literal(\"unconfirmed\")]),\n\toutcomes: Type.Array(HumainAgentExecutionOutcomeSchema, { minItems: 1, maxItems: 8 }),\n});\nexport type HumainAgentExecutionResponse = Static<typeof HumainAgentExecutionResponseSchema>;\n\nconst RequestValidator = Compile(HumainAgentExecutionRequestSchema);\nconst ResponseValidator = Compile(HumainAgentExecutionResponseSchema);\n\nexport function parseHumainAgentExecutionRequest(input: unknown): HumainAgentExecutionRequest {\n\tif (!RequestValidator.Check(input)) {\n\t\tthrow new Error(\"Invalid HUMAIN agent execution request\");\n\t}\n\tif (input.mode === \"node\" && (input.claims.length !== 1 || input.batchId !== undefined)) {\n\t\tthrow new Error(\"Invalid HUMAIN agent execution request: node mode requires one claim and no batch identity\");\n\t}\n\tif (input.mode === \"workflow\" && input.batchId === undefined) {\n\t\tthrow new Error(\"Invalid HUMAIN agent execution request: workflow mode requires a batch identity\");\n\t}\n\tconst workUnitIds = new Set(input.claims.map(({ workUnitId }) => workUnitId));\n\tconst nodeIds = new Set(input.claims.map(({ nodeId }) => nodeId));\n\tif (workUnitIds.size !== input.claims.length || nodeIds.size !== input.claims.length) {\n\t\tthrow new Error(\"Invalid HUMAIN agent execution request: claim identities must be unique\");\n\t}\n\tif (input.claims.some(({ controls }) => controls.depth >= controls.maxDepth)) {\n\t\tthrow new Error(\"Invalid HUMAIN agent execution request: delegation depth limit is exhausted\");\n\t}\n\treturn deepFreeze(structuredClone(input));\n}\n\nexport function parseHumainAgentExecutionResponse(\n\trequestInput: unknown,\n\tresponseInput: unknown,\n): HumainAgentExecutionResponse {\n\tconst request = parseHumainAgentExecutionRequest(requestInput);\n\tif (!ResponseValidator.Check(responseInput)) {\n\t\tthrow new Error(\"Invalid HUMAIN agent execution response\");\n\t}\n\tconst response = responseInput;\n\tif (response.outcomes.some((outcome) => outcome.kind === \"succeeded\" && !isSafeSummary(outcome.output.summary))) {\n\t\tthrow new Error(\"Invalid HUMAIN agent execution response\");\n\t}\n\tif (\n\t\tresponse.mode !== request.mode ||\n\t\tresponse.invocationId !== request.invocationId ||\n\t\tresponse.batchId !== request.batchId\n\t) {\n\t\tthrow new Error(\"HUMAIN agent result envelope mismatch\");\n\t}\n\tif (response.outcomes.length !== request.claims.length) {\n\t\tthrow new Error(\"HUMAIN agent result cardinality mismatch\");\n\t}\n\tfor (const [index, outcome] of response.outcomes.entries()) {\n\t\tconst claim = request.claims[index];\n\t\tif (\n\t\t\t!claim ||\n\t\t\toutcome.workUnitId !== claim.workUnitId ||\n\t\t\toutcome.nodeId !== claim.nodeId ||\n\t\t\toutcome.attemptNumber !== claim.attemptNumber ||\n\t\t\toutcome.attemptFence !== claim.attemptFence ||\n\t\t\toutcome.segmentFence !== claim.segmentFence\n\t\t) {\n\t\t\tthrow new Error(\"HUMAIN agent result identity mismatch\");\n\t\t}\n\t}\n\tconst cancelled = response.outcomes.filter((outcome) => outcome.kind === \"cancelled\");\n\tconst expectedTermination =\n\t\tcancelled.length === 0\n\t\t\t? \"not-requested\"\n\t\t\t: cancelled.every((outcome) => outcome.terminationConfirmed)\n\t\t\t\t? \"confirmed\"\n\t\t\t\t: \"unconfirmed\";\n\tif (response.termination !== expectedTermination) {\n\t\tthrow new Error(\"HUMAIN agent result termination evidence mismatch\");\n\t}\n\treturn deepFreeze(structuredClone(response));\n}\n\nfunction isSafeSummary(value: string): boolean {\n\treturn (\n\t\tvalue === value.trim() &&\n\t\t/^[\\p{L}\\p{N}][\\p{L}\\p{N} .,;:!?()&'-]*$/u.test(value) &&\n\t\t!/\\b(?:[A-Za-z0-9-]+\\.)+[A-Za-z]{2,}(?::\\d{1,5})?\\b/u.test(value) &&\n\t\t!/\\b(?:\\d{1,3}\\.){3}\\d{1,3}(?::\\d{1,5})?\\b/u.test(value) &&\n\t\t!/^(?:rm|curl|wget|sh|bash|zsh|fish|pwsh|powershell|cmd|node|bun|deno|npx|npm|pnpm|yarn|python(?:3)?|perl|ruby|git|docker|kubectl|ssh|scp|sudo|cat|ls|cd|mkdir|touch|chmod|chown|env|export|set|eval|exec)\\b/iu.test(\n\t\t\tvalue,\n\t\t) &&\n\t\t!/\\b(?:api[- ]?key|secret|token|credential|password)\\s*:/iu.test(value) &&\n\t\t!/\\b(?:claude|gpt|gemini|llama|mistral)[-_:][A-Za-z0-9._:-]+\\b/iu.test(value)\n\t);\n}\n\nfunction deepFreeze<T>(value: T): T {\n\tif (value === null || typeof value !== \"object\" || Object.isFrozen(value)) return value;\n\tObject.freeze(value);\n\tfor (const child of Object.values(value)) deepFreeze(child);\n\treturn value;\n}\n"]}
1
+ {"version":3,"file":"agent-execution-protocol.js","sourceRoot":"","sources":["../../src/humain/agent-execution-protocol.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Static, Type } from \"typebox\";\nimport { Compile } from \"typebox/compile\";\n\nexport const HUMAIN_AGENT_EXECUTION_SCHEMA_VERSION = 1 as const;\n\nconst StrictObject = <const T extends Parameters<typeof Type.Object>[0]>(properties: T) =>\n\tType.Object(properties, { additionalProperties: false });\nconst StableIdentifier = Type.String({ minLength: 1, maxLength: 256 });\nconst PositiveInteger = Type.Integer({ minimum: 1, maximum: Number.MAX_SAFE_INTEGER });\nconst NonnegativeInteger = Type.Integer({ minimum: 0, maximum: Number.MAX_SAFE_INTEGER });\nconst Digest = Type.String({ pattern: \"^[a-f0-9]{64}$\" });\nconst SafeArtifactReference = Type.String({\n\tminLength: 1,\n\tmaxLength: 512,\n\tpattern: \"^(?!/)(?!.*(?:^|/)\\\\.\\\\.(?:/|$))[A-Za-z0-9._-]+(?:/[A-Za-z0-9._-]+)*$\",\n});\n\nexport const HumainAgentRouteRefSchema = Type.Union([\n\tType.Literal(\"route:fast\"),\n\tType.Literal(\"route:balanced\"),\n\tType.Literal(\"route:thorough\"),\n]);\nexport type HumainAgentRouteRef = Static<typeof HumainAgentRouteRefSchema>;\n\nexport const HumainAgentArtifactSchema = StrictObject({\n\tid: StableIdentifier,\n\tkind: Type.Union([\n\t\tType.Literal(\"candidate-patch\"),\n\t\tType.Literal(\"dependency-output\"),\n\t\tType.Literal(\"source-observation\"),\n\t\tType.Literal(\"validation-report\"),\n\t]),\n\treference: SafeArtifactReference,\n\tdigest: Digest,\n});\nexport type HumainAgentArtifact = Static<typeof HumainAgentArtifactSchema>;\n\nexport const HumainAgentExecutionControlsSchema = StrictObject({\n\tmaxConcurrency: Type.Integer({ minimum: 1, maximum: 16 }),\n\tmaxDepth: Type.Integer({ minimum: 1, maximum: 16 }),\n\tdepth: Type.Integer({ minimum: 0, maximum: 16 }),\n\ttimeoutMs: Type.Integer({ minimum: 1, maximum: 86_400_000 }),\n});\nexport type HumainAgentExecutionControls = Static<typeof HumainAgentExecutionControlsSchema>;\n\nexport const HumainAgentExecutionClaimSchema = StrictObject({\n\tworkUnitId: StableIdentifier,\n\tnodeId: StableIdentifier,\n\tattemptNumber: PositiveInteger,\n\tattemptFence: PositiveInteger,\n\tsegmentFence: PositiveInteger,\n\trouteRef: HumainAgentRouteRefSchema,\n\ttask: Type.String({ minLength: 1, maxLength: 100_000 }),\n\tcontrols: HumainAgentExecutionControlsSchema,\n\tinput: StrictObject({\n\t\tartifacts: Type.Array(HumainAgentArtifactSchema, { maxItems: 16 }),\n\t}),\n});\nexport type HumainAgentExecutionClaim = Static<typeof HumainAgentExecutionClaimSchema>;\n\nexport const HumainAgentExecutionRequestSchema = StrictObject({\n\tschemaVersion: Type.Literal(HUMAIN_AGENT_EXECUTION_SCHEMA_VERSION),\n\tkind: Type.Literal(\"execute\"),\n\tmode: Type.Union([Type.Literal(\"node\"), Type.Literal(\"workflow\")]),\n\tinvocationId: StableIdentifier,\n\tbatchId: Type.Optional(StableIdentifier),\n\tclaims: Type.Array(HumainAgentExecutionClaimSchema, { minItems: 1, maxItems: 8 }),\n});\nexport type HumainAgentExecutionRequest = Static<typeof HumainAgentExecutionRequestSchema>;\n\nexport const HumainAgentUsageSchema = Type.Union([\n\tStrictObject({ status: Type.Literal(\"unknown\") }),\n\tStrictObject({\n\t\tstatus: Type.Literal(\"measured\"),\n\t\ttotalCalls: Type.Optional(NonnegativeInteger),\n\t\ttotalTurns: Type.Optional(NonnegativeInteger),\n\t\ttotalTokens: NonnegativeInteger,\n\t\tcostMicrocents: NonnegativeInteger,\n\t}),\n]);\nexport type HumainAgentUsage = Static<typeof HumainAgentUsageSchema>;\n\nexport const HUMAIN_AGENT_EXECUTION_FAILURE_CODES = [\n\t\"adapter_execution_failed\",\n\t\"incompatible_adapter_capability\",\n\t\"invalid_adapter_result\",\n\t\"invalid_execution_request\",\n\t\"provider_timeout\",\n\t\"provider_unavailable\",\n\t\"reused_execution_context\",\n\t\"transport_interrupted\",\n] as const;\nexport type HumainAgentExecutionFailureCode = (typeof HUMAIN_AGENT_EXECUTION_FAILURE_CODES)[number];\n\nconst HumainAgentExecutionFailureCodeSchema = Type.Union([\n\tType.Literal(\"adapter_execution_failed\"),\n\tType.Literal(\"incompatible_adapter_capability\"),\n\tType.Literal(\"invalid_adapter_result\"),\n\tType.Literal(\"invalid_execution_request\"),\n\tType.Literal(\"provider_timeout\"),\n\tType.Literal(\"provider_unavailable\"),\n\tType.Literal(\"reused_execution_context\"),\n\tType.Literal(\"transport_interrupted\"),\n]);\n\nconst OutcomeIdentity = {\n\tworkUnitId: StableIdentifier,\n\tnodeId: StableIdentifier,\n\tattemptNumber: PositiveInteger,\n\tattemptFence: PositiveInteger,\n\tsegmentFence: PositiveInteger,\n};\n\nexport const HumainAgentExecutionOutcomeSchema = Type.Union([\n\tStrictObject({\n\t\t...OutcomeIdentity,\n\t\tkind: Type.Literal(\"succeeded\"),\n\t\toutput: StrictObject({\n\t\t\tsummary: Type.String({ minLength: 1, maxLength: 512 }),\n\t\t\tartifacts: Type.Array(HumainAgentArtifactSchema, { maxItems: 16 }),\n\t\t}),\n\t\tusage: HumainAgentUsageSchema,\n\t}),\n\tStrictObject({\n\t\t...OutcomeIdentity,\n\t\tkind: Type.Literal(\"failed\"),\n\t\tfailureCode: HumainAgentExecutionFailureCodeSchema,\n\t\tusage: HumainAgentUsageSchema,\n\t}),\n\tStrictObject({\n\t\t...OutcomeIdentity,\n\t\tkind: Type.Literal(\"cancelled\"),\n\t\tterminationConfirmed: Type.Boolean(),\n\t\tusage: HumainAgentUsageSchema,\n\t}),\n]);\nexport type HumainAgentExecutionOutcome = Static<typeof HumainAgentExecutionOutcomeSchema>;\n\nexport const HumainAgentExecutionResponseSchema = StrictObject({\n\tschemaVersion: Type.Literal(HUMAIN_AGENT_EXECUTION_SCHEMA_VERSION),\n\tkind: Type.Literal(\"result\"),\n\tmode: Type.Union([Type.Literal(\"node\"), Type.Literal(\"workflow\")]),\n\tinvocationId: StableIdentifier,\n\tbatchId: Type.Optional(StableIdentifier),\n\ttermination: Type.Union([Type.Literal(\"not-requested\"), Type.Literal(\"confirmed\"), Type.Literal(\"unconfirmed\")]),\n\toutcomes: Type.Array(HumainAgentExecutionOutcomeSchema, { minItems: 1, maxItems: 8 }),\n});\nexport type HumainAgentExecutionResponse = Static<typeof HumainAgentExecutionResponseSchema>;\n\nconst RequestValidator = Compile(HumainAgentExecutionRequestSchema);\nconst ResponseValidator = Compile(HumainAgentExecutionResponseSchema);\n\nexport function parseHumainAgentExecutionRequest(input: unknown): HumainAgentExecutionRequest {\n\tif (!RequestValidator.Check(input)) {\n\t\tthrow new Error(\"Invalid HUMAIN agent execution request\");\n\t}\n\tif (input.mode === \"node\" && (input.claims.length !== 1 || input.batchId !== undefined)) {\n\t\tthrow new Error(\"Invalid HUMAIN agent execution request: node mode requires one claim and no batch identity\");\n\t}\n\tif (input.mode === \"workflow\" && input.batchId === undefined) {\n\t\tthrow new Error(\"Invalid HUMAIN agent execution request: workflow mode requires a batch identity\");\n\t}\n\tconst workUnitIds = new Set(input.claims.map(({ workUnitId }) => workUnitId));\n\tconst nodeIds = new Set(input.claims.map(({ nodeId }) => nodeId));\n\tif (workUnitIds.size !== input.claims.length || nodeIds.size !== input.claims.length) {\n\t\tthrow new Error(\"Invalid HUMAIN agent execution request: claim identities must be unique\");\n\t}\n\tif (input.claims.some(({ controls }) => controls.depth >= controls.maxDepth)) {\n\t\tthrow new Error(\"Invalid HUMAIN agent execution request: delegation depth limit is exhausted\");\n\t}\n\treturn deepFreeze(structuredClone(input));\n}\n\nexport function parseHumainAgentExecutionResponse(\n\trequestInput: unknown,\n\tresponseInput: unknown,\n): HumainAgentExecutionResponse {\n\tconst request = parseHumainAgentExecutionRequest(requestInput);\n\tif (!ResponseValidator.Check(responseInput)) {\n\t\tthrow new Error(\"Invalid HUMAIN agent execution response\");\n\t}\n\tconst response = responseInput;\n\tif (response.outcomes.some((outcome) => outcome.kind === \"succeeded\" && !isSafeSummary(outcome.output.summary))) {\n\t\tthrow new Error(\"Invalid HUMAIN agent execution response\");\n\t}\n\tif (\n\t\tresponse.mode !== request.mode ||\n\t\tresponse.invocationId !== request.invocationId ||\n\t\tresponse.batchId !== request.batchId\n\t) {\n\t\tthrow new Error(\"HUMAIN agent result envelope mismatch\");\n\t}\n\tif (response.outcomes.length !== request.claims.length) {\n\t\tthrow new Error(\"HUMAIN agent result cardinality mismatch\");\n\t}\n\tfor (const [index, outcome] of response.outcomes.entries()) {\n\t\tconst claim = request.claims[index];\n\t\tif (\n\t\t\t!claim ||\n\t\t\toutcome.workUnitId !== claim.workUnitId ||\n\t\t\toutcome.nodeId !== claim.nodeId ||\n\t\t\toutcome.attemptNumber !== claim.attemptNumber ||\n\t\t\toutcome.attemptFence !== claim.attemptFence ||\n\t\t\toutcome.segmentFence !== claim.segmentFence\n\t\t) {\n\t\t\tthrow new Error(\"HUMAIN agent result identity mismatch\");\n\t\t}\n\t}\n\tconst cancelled = response.outcomes.filter((outcome) => outcome.kind === \"cancelled\");\n\tconst expectedTermination =\n\t\tcancelled.length === 0\n\t\t\t? \"not-requested\"\n\t\t\t: cancelled.every((outcome) => outcome.terminationConfirmed)\n\t\t\t\t? \"confirmed\"\n\t\t\t\t: \"unconfirmed\";\n\tif (response.termination !== expectedTermination) {\n\t\tthrow new Error(\"HUMAIN agent result termination evidence mismatch\");\n\t}\n\treturn deepFreeze(structuredClone(response));\n}\n\nfunction isSafeSummary(value: string): boolean {\n\treturn (\n\t\tvalue === value.trim() &&\n\t\t/^[\\p{L}\\p{N}][\\p{L}\\p{N} .,;:!?()&'-]*$/u.test(value) &&\n\t\t!/\\b(?:[A-Za-z0-9-]+\\.)+[A-Za-z]{2,}(?::\\d{1,5})?\\b/u.test(value) &&\n\t\t!/\\b(?:\\d{1,3}\\.){3}\\d{1,3}(?::\\d{1,5})?\\b/u.test(value) &&\n\t\t!/^(?:rm|curl|wget|sh|bash|zsh|fish|pwsh|powershell|cmd|node|bun|deno|npx|npm|pnpm|yarn|python(?:3)?|perl|ruby|git|docker|kubectl|ssh|scp|sudo|cat|ls|cd|mkdir|touch|chmod|chown|env|export|set|eval|exec)\\b/iu.test(\n\t\t\tvalue,\n\t\t) &&\n\t\t!/\\b(?:api[- ]?key|secret|token|credential|password)\\s*:/iu.test(value) &&\n\t\t!/\\b(?:claude|gpt|gemini|llama|mistral)[-_:][A-Za-z0-9._:-]+\\b/iu.test(value)\n\t);\n}\n\nfunction deepFreeze<T>(value: T): T {\n\tif (value === null || typeof value !== \"object\" || Object.isFrozen(value)) return value;\n\tObject.freeze(value);\n\tfor (const child of Object.values(value)) deepFreeze(child);\n\treturn value;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"agent-execution-runtime.d.ts","sourceRoot":"","sources":["../../src/humain/agent-execution-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,mBAAmB,EAKxB,KAAK,4BAA4B,EACjC,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EAGrB,MAAM,+BAA+B,CAAC;AAEvC,MAAM,MAAM,yBAAyB,GAClC;IACA,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,mBAAmB,EAAE,CAAA;KAAE,CAAC;IAC9D,KAAK,EAAE,gBAAgB,CAAC;CACvB,GACD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,WAAW,EAAE,0BAA0B,GAAG,wBAAwB,CAAC;IAAC,KAAK,EAAE,gBAAgB,CAAA;CAAE,GAC/G;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,oBAAoB,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAEjF,MAAM,WAAW,0BAA0B;IAC1C,UAAU,EAAE,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAC/C,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,oBAAoB,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACnE,OAAO,IAAI,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACxC,MAAM,CAAC,OAAO,EAAE;QACf,QAAQ,EAAE,mBAAmB,CAAC;QAC9B,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,mBAAmB,EAAE,CAAC;KACjC,GAAG,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC,CAAC;CAC/C;AAID,wBAAsB,yBAAyB,CAC9C,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,wBAAwB,EAC9B,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAO,GACpC,OAAO,CAAC,4BAA4B,CAAC,CAyHvC","sourcesContent":["import {\n\ttype HumainAgentArtifact,\n\ttype HumainAgentExecutionClaim,\n\ttype HumainAgentExecutionFailureCode,\n\ttype HumainAgentExecutionOutcome,\n\ttype HumainAgentExecutionRequest,\n\ttype HumainAgentExecutionResponse,\n\ttype HumainAgentRouteRef,\n\ttype HumainAgentUsage,\n\tparseHumainAgentExecutionRequest,\n\tparseHumainAgentExecutionResponse,\n} from \"./agent-execution-protocol.ts\";\n\nexport type HumainAgentHostCompletion =\n\t| {\n\t\t\tkind: \"succeeded\";\n\t\t\toutput: { summary: string; artifacts: HumainAgentArtifact[] };\n\t\t\tusage: HumainAgentUsage;\n\t }\n\t| { kind: \"failed\"; failureCode: \"adapter_execution_failed\" | \"invalid_adapter_result\"; usage: HumainAgentUsage }\n\t| { kind: \"cancelled\"; terminationConfirmed: boolean; usage: HumainAgentUsage };\n\nexport interface HumainAgentExecutionHandle {\n\tcompletion: Promise<HumainAgentHostCompletion>;\n\tcancel(reason: string): Promise<{ terminationConfirmed: boolean }>;\n\tdispose(): void;\n}\n\nexport interface HumainAgentExecutionHost {\n\tlaunch(request: {\n\t\trouteRef: HumainAgentRouteRef;\n\t\ttask: string;\n\t\tartifacts: HumainAgentArtifact[];\n\t}): Promise<HumainAgentExecutionHandle | null>;\n}\n\nconst UNKNOWN_USAGE = { status: \"unknown\" } as const;\n\nexport async function executeHumainAgentRequest(\n\tinput: unknown,\n\thost: HumainAgentExecutionHost,\n\toptions: { signal?: AbortSignal } = {},\n): Promise<HumainAgentExecutionResponse> {\n\tconst request = parseHumainAgentExecutionRequest(input);\n\tif (request.mode === \"workflow\") {\n\t\treturn checkedResponse(request, {\n\t\t\tschemaVersion: 1,\n\t\t\tkind: \"result\",\n\t\t\tmode: request.mode,\n\t\t\tinvocationId: request.invocationId,\n\t\t\tbatchId: request.batchId,\n\t\t\ttermination: \"not-requested\",\n\t\t\toutcomes: request.claims.map((claim) => failedOutcome(claim, \"incompatible_adapter_capability\")),\n\t\t});\n\t}\n\n\tconst claim = request.claims[0];\n\tif (!claim) throw new Error(\"Parsed node execution request has no claim\");\n\tif (options.signal?.aborted) {\n\t\treturn cancelledResponse(request, claim, false);\n\t}\n\n\tconst launchStartedAt = Date.now();\n\tlet cancelLaunch: ((reason: string) => void) | undefined;\n\tconst launchCancellation = new Promise<string>((resolve) => {\n\t\tcancelLaunch = resolve;\n\t});\n\tconst launchTimeout = setTimeout(() => cancelLaunch?.(\"execution timeout\"), claim.controls.timeoutMs);\n\tconst onLaunchAbort = () => cancelLaunch?.(\"execution cancelled\");\n\toptions.signal?.addEventListener(\"abort\", onLaunchAbort, { once: true });\n\tif (options.signal?.aborted) onLaunchAbort();\n\tlet launchPromise: ReturnType<HumainAgentExecutionHost[\"launch\"]>;\n\ttry {\n\t\tlaunchPromise = host.launch({\n\t\t\trouteRef: claim.routeRef,\n\t\t\ttask: claim.task,\n\t\t\tartifacts: claim.input.artifacts,\n\t\t});\n\t} catch {\n\t\tclearTimeout(launchTimeout);\n\t\toptions.signal?.removeEventListener(\"abort\", onLaunchAbort);\n\t\treturn singleOutcomeResponse(request, failedOutcome(claim, \"adapter_execution_failed\"));\n\t}\n\tconst launchResult = await Promise.race([\n\t\tlaunchPromise.then(\n\t\t\t(handle) => ({ kind: \"launched\" as const, handle }),\n\t\t\t() => ({ kind: \"failed\" as const }),\n\t\t),\n\t\tlaunchCancellation.then((reason) => ({ kind: \"cancelled\" as const, reason })),\n\t]);\n\tclearTimeout(launchTimeout);\n\toptions.signal?.removeEventListener(\"abort\", onLaunchAbort);\n\tif (launchResult.kind === \"cancelled\") {\n\t\tvoid launchPromise\n\t\t\t.then(async (lateHandle) => {\n\t\t\t\tif (!lateHandle) return;\n\t\t\t\ttry {\n\t\t\t\t\tawait lateHandle.cancel(launchResult.reason);\n\t\t\t\t} catch {\n\t\t\t\t\t// The correlated response remains honestly unconfirmed.\n\t\t\t\t} finally {\n\t\t\t\t\tlateHandle.dispose();\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(() => {});\n\t\treturn cancelledResponse(request, claim, false);\n\t}\n\tif (launchResult.kind === \"failed\") {\n\t\treturn singleOutcomeResponse(request, failedOutcome(claim, \"adapter_execution_failed\"));\n\t}\n\tconst handle = launchResult.handle;\n\tif (!handle) {\n\t\treturn singleOutcomeResponse(request, failedOutcome(claim, \"incompatible_adapter_capability\"));\n\t}\n\n\tlet timeout: ReturnType<typeof setTimeout> | undefined;\n\tlet removeAbortListener: (() => void) | undefined;\n\tlet cancellationInFlight: Promise<void> | undefined;\n\tlet cancellationCompletion: HumainAgentHostCompletion | undefined;\n\ttry {\n\t\tconst cancellation = new Promise<HumainAgentHostCompletion>((resolve) => {\n\t\t\tconst cancel = (reason: string) => {\n\t\t\t\tif (cancellationInFlight) return;\n\t\t\t\tcancellationInFlight = (async () => {\n\t\t\t\t\tlet terminationConfirmed = false;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tterminationConfirmed = (await handle.cancel(reason)).terminationConfirmed;\n\t\t\t\t\t} catch {\n\t\t\t\t\t\tterminationConfirmed = false;\n\t\t\t\t\t}\n\t\t\t\t\tcancellationCompletion = { kind: \"cancelled\", terminationConfirmed, usage: UNKNOWN_USAGE };\n\t\t\t\t\tresolve(cancellationCompletion);\n\t\t\t\t})();\n\t\t\t};\n\t\t\tconst remainingTimeoutMs = Math.max(1, claim.controls.timeoutMs - (Date.now() - launchStartedAt));\n\t\t\ttimeout = setTimeout(() => cancel(\"execution timeout\"), remainingTimeoutMs);\n\t\t\tif (options.signal) {\n\t\t\t\tconst onAbort = () => cancel(\"execution cancelled\");\n\t\t\t\toptions.signal.addEventListener(\"abort\", onAbort, { once: true });\n\t\t\t\tremoveAbortListener = () => options.signal?.removeEventListener(\"abort\", onAbort);\n\t\t\t\tif (options.signal.aborted) onAbort();\n\t\t\t}\n\t\t});\n\t\tlet completion = await Promise.race([handle.completion, cancellation]);\n\t\tif (cancellationInFlight) {\n\t\t\tawait cancellationInFlight;\n\t\t\tif (cancellationCompletion) completion = cancellationCompletion;\n\t\t}\n\t\ttry {\n\t\t\treturn singleOutcomeResponse(request, toOutcome(claim, completion));\n\t\t} catch {\n\t\t\treturn singleOutcomeResponse(request, failedOutcome(claim, \"invalid_adapter_result\"));\n\t\t}\n\t} finally {\n\t\tif (timeout) clearTimeout(timeout);\n\t\tremoveAbortListener?.();\n\t\tawait cancellationInFlight;\n\t\ttry {\n\t\t\thandle.dispose();\n\t\t} catch {\n\t\t\t// Cleanup failure cannot replace the already-correlated protocol result.\n\t\t}\n\t}\n}\n\nfunction toOutcome(\n\tclaim: HumainAgentExecutionClaim,\n\tcompletion: HumainAgentHostCompletion,\n): HumainAgentExecutionOutcome {\n\treturn { ...claimIdentity(claim), ...completion };\n}\n\nfunction failedOutcome(\n\tclaim: HumainAgentExecutionClaim,\n\tfailureCode: HumainAgentExecutionFailureCode,\n): HumainAgentExecutionOutcome {\n\treturn { ...claimIdentity(claim), kind: \"failed\", failureCode, usage: UNKNOWN_USAGE };\n}\n\nfunction claimIdentity(claim: HumainAgentExecutionClaim) {\n\treturn {\n\t\tworkUnitId: claim.workUnitId,\n\t\tnodeId: claim.nodeId,\n\t\tattemptNumber: claim.attemptNumber,\n\t\tattemptFence: claim.attemptFence,\n\t\tsegmentFence: claim.segmentFence,\n\t};\n}\n\nfunction singleOutcomeResponse(\n\trequest: HumainAgentExecutionRequest,\n\toutcome: HumainAgentExecutionOutcome,\n): HumainAgentExecutionResponse {\n\tconst termination =\n\t\toutcome.kind !== \"cancelled\" ? \"not-requested\" : outcome.terminationConfirmed ? \"confirmed\" : \"unconfirmed\";\n\treturn checkedResponse(request, {\n\t\tschemaVersion: 1,\n\t\tkind: \"result\",\n\t\tmode: \"node\",\n\t\tinvocationId: request.invocationId,\n\t\ttermination,\n\t\toutcomes: [outcome],\n\t});\n}\n\nfunction cancelledResponse(\n\trequest: HumainAgentExecutionRequest,\n\tclaim: HumainAgentExecutionClaim,\n\tterminationConfirmed: boolean,\n): HumainAgentExecutionResponse {\n\treturn singleOutcomeResponse(request, {\n\t\t...claimIdentity(claim),\n\t\tkind: \"cancelled\",\n\t\tterminationConfirmed,\n\t\tusage: UNKNOWN_USAGE,\n\t});\n}\n\nfunction checkedResponse(\n\trequest: HumainAgentExecutionRequest,\n\tresponse: HumainAgentExecutionResponse,\n): HumainAgentExecutionResponse {\n\treturn parseHumainAgentExecutionResponse(request, response);\n}\n"]}
1
+ {"version":3,"file":"agent-execution-runtime.d.ts","sourceRoot":"","sources":["../../src/humain/agent-execution-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,mBAAmB,EAKxB,KAAK,4BAA4B,EACjC,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EAGrB,MAAM,+BAA+B,CAAC;AAEvC,MAAM,MAAM,yBAAyB,GAClC;IACA,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,mBAAmB,EAAE,CAAA;KAAE,CAAC;IAC9D,KAAK,EAAE,gBAAgB,CAAC;CACvB,GACD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,WAAW,EAAE,0BAA0B,GAAG,wBAAwB,CAAC;IAAC,KAAK,EAAE,gBAAgB,CAAA;CAAE,GAC/G;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,oBAAoB,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAEjF,MAAM,WAAW,0BAA0B;IAC1C,UAAU,EAAE,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAC/C,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,oBAAoB,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACnE,OAAO,IAAI,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACxC,MAAM,CAAC,OAAO,EAAE;QACf,QAAQ,EAAE,mBAAmB,CAAC;QAC9B,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,mBAAmB,EAAE,CAAC;KACjC,GAAG,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC,CAAC;CAC/C;AAID,wBAAsB,yBAAyB,CAC9C,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,wBAAwB,EAC9B,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAO,GACpC,OAAO,CAAC,4BAA4B,CAAC,CAyHvC"}
@@ -1 +1 @@
1
- {"version":3,"file":"agent-execution-runtime.js","sourceRoot":"","sources":["../../src/humain/agent-execution-runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\ttype HumainAgentArtifact,\n\ttype HumainAgentExecutionClaim,\n\ttype HumainAgentExecutionFailureCode,\n\ttype HumainAgentExecutionOutcome,\n\ttype HumainAgentExecutionRequest,\n\ttype HumainAgentExecutionResponse,\n\ttype HumainAgentRouteRef,\n\ttype HumainAgentUsage,\n\tparseHumainAgentExecutionRequest,\n\tparseHumainAgentExecutionResponse,\n} from \"./agent-execution-protocol.ts\";\n\nexport type HumainAgentHostCompletion =\n\t| {\n\t\t\tkind: \"succeeded\";\n\t\t\toutput: { summary: string; artifacts: HumainAgentArtifact[] };\n\t\t\tusage: HumainAgentUsage;\n\t }\n\t| { kind: \"failed\"; failureCode: \"adapter_execution_failed\" | \"invalid_adapter_result\"; usage: HumainAgentUsage }\n\t| { kind: \"cancelled\"; terminationConfirmed: boolean; usage: HumainAgentUsage };\n\nexport interface HumainAgentExecutionHandle {\n\tcompletion: Promise<HumainAgentHostCompletion>;\n\tcancel(reason: string): Promise<{ terminationConfirmed: boolean }>;\n\tdispose(): void;\n}\n\nexport interface HumainAgentExecutionHost {\n\tlaunch(request: {\n\t\trouteRef: HumainAgentRouteRef;\n\t\ttask: string;\n\t\tartifacts: HumainAgentArtifact[];\n\t}): Promise<HumainAgentExecutionHandle | null>;\n}\n\nconst UNKNOWN_USAGE = { status: \"unknown\" } as const;\n\nexport async function executeHumainAgentRequest(\n\tinput: unknown,\n\thost: HumainAgentExecutionHost,\n\toptions: { signal?: AbortSignal } = {},\n): Promise<HumainAgentExecutionResponse> {\n\tconst request = parseHumainAgentExecutionRequest(input);\n\tif (request.mode === \"workflow\") {\n\t\treturn checkedResponse(request, {\n\t\t\tschemaVersion: 1,\n\t\t\tkind: \"result\",\n\t\t\tmode: request.mode,\n\t\t\tinvocationId: request.invocationId,\n\t\t\tbatchId: request.batchId,\n\t\t\ttermination: \"not-requested\",\n\t\t\toutcomes: request.claims.map((claim) => failedOutcome(claim, \"incompatible_adapter_capability\")),\n\t\t});\n\t}\n\n\tconst claim = request.claims[0];\n\tif (!claim) throw new Error(\"Parsed node execution request has no claim\");\n\tif (options.signal?.aborted) {\n\t\treturn cancelledResponse(request, claim, false);\n\t}\n\n\tconst launchStartedAt = Date.now();\n\tlet cancelLaunch: ((reason: string) => void) | undefined;\n\tconst launchCancellation = new Promise<string>((resolve) => {\n\t\tcancelLaunch = resolve;\n\t});\n\tconst launchTimeout = setTimeout(() => cancelLaunch?.(\"execution timeout\"), claim.controls.timeoutMs);\n\tconst onLaunchAbort = () => cancelLaunch?.(\"execution cancelled\");\n\toptions.signal?.addEventListener(\"abort\", onLaunchAbort, { once: true });\n\tif (options.signal?.aborted) onLaunchAbort();\n\tlet launchPromise: ReturnType<HumainAgentExecutionHost[\"launch\"]>;\n\ttry {\n\t\tlaunchPromise = host.launch({\n\t\t\trouteRef: claim.routeRef,\n\t\t\ttask: claim.task,\n\t\t\tartifacts: claim.input.artifacts,\n\t\t});\n\t} catch {\n\t\tclearTimeout(launchTimeout);\n\t\toptions.signal?.removeEventListener(\"abort\", onLaunchAbort);\n\t\treturn singleOutcomeResponse(request, failedOutcome(claim, \"adapter_execution_failed\"));\n\t}\n\tconst launchResult = await Promise.race([\n\t\tlaunchPromise.then(\n\t\t\t(handle) => ({ kind: \"launched\" as const, handle }),\n\t\t\t() => ({ kind: \"failed\" as const }),\n\t\t),\n\t\tlaunchCancellation.then((reason) => ({ kind: \"cancelled\" as const, reason })),\n\t]);\n\tclearTimeout(launchTimeout);\n\toptions.signal?.removeEventListener(\"abort\", onLaunchAbort);\n\tif (launchResult.kind === \"cancelled\") {\n\t\tvoid launchPromise\n\t\t\t.then(async (lateHandle) => {\n\t\t\t\tif (!lateHandle) return;\n\t\t\t\ttry {\n\t\t\t\t\tawait lateHandle.cancel(launchResult.reason);\n\t\t\t\t} catch {\n\t\t\t\t\t// The correlated response remains honestly unconfirmed.\n\t\t\t\t} finally {\n\t\t\t\t\tlateHandle.dispose();\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(() => {});\n\t\treturn cancelledResponse(request, claim, false);\n\t}\n\tif (launchResult.kind === \"failed\") {\n\t\treturn singleOutcomeResponse(request, failedOutcome(claim, \"adapter_execution_failed\"));\n\t}\n\tconst handle = launchResult.handle;\n\tif (!handle) {\n\t\treturn singleOutcomeResponse(request, failedOutcome(claim, \"incompatible_adapter_capability\"));\n\t}\n\n\tlet timeout: ReturnType<typeof setTimeout> | undefined;\n\tlet removeAbortListener: (() => void) | undefined;\n\tlet cancellationInFlight: Promise<void> | undefined;\n\tlet cancellationCompletion: HumainAgentHostCompletion | undefined;\n\ttry {\n\t\tconst cancellation = new Promise<HumainAgentHostCompletion>((resolve) => {\n\t\t\tconst cancel = (reason: string) => {\n\t\t\t\tif (cancellationInFlight) return;\n\t\t\t\tcancellationInFlight = (async () => {\n\t\t\t\t\tlet terminationConfirmed = false;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tterminationConfirmed = (await handle.cancel(reason)).terminationConfirmed;\n\t\t\t\t\t} catch {\n\t\t\t\t\t\tterminationConfirmed = false;\n\t\t\t\t\t}\n\t\t\t\t\tcancellationCompletion = { kind: \"cancelled\", terminationConfirmed, usage: UNKNOWN_USAGE };\n\t\t\t\t\tresolve(cancellationCompletion);\n\t\t\t\t})();\n\t\t\t};\n\t\t\tconst remainingTimeoutMs = Math.max(1, claim.controls.timeoutMs - (Date.now() - launchStartedAt));\n\t\t\ttimeout = setTimeout(() => cancel(\"execution timeout\"), remainingTimeoutMs);\n\t\t\tif (options.signal) {\n\t\t\t\tconst onAbort = () => cancel(\"execution cancelled\");\n\t\t\t\toptions.signal.addEventListener(\"abort\", onAbort, { once: true });\n\t\t\t\tremoveAbortListener = () => options.signal?.removeEventListener(\"abort\", onAbort);\n\t\t\t\tif (options.signal.aborted) onAbort();\n\t\t\t}\n\t\t});\n\t\tlet completion = await Promise.race([handle.completion, cancellation]);\n\t\tif (cancellationInFlight) {\n\t\t\tawait cancellationInFlight;\n\t\t\tif (cancellationCompletion) completion = cancellationCompletion;\n\t\t}\n\t\ttry {\n\t\t\treturn singleOutcomeResponse(request, toOutcome(claim, completion));\n\t\t} catch {\n\t\t\treturn singleOutcomeResponse(request, failedOutcome(claim, \"invalid_adapter_result\"));\n\t\t}\n\t} finally {\n\t\tif (timeout) clearTimeout(timeout);\n\t\tremoveAbortListener?.();\n\t\tawait cancellationInFlight;\n\t\ttry {\n\t\t\thandle.dispose();\n\t\t} catch {\n\t\t\t// Cleanup failure cannot replace the already-correlated protocol result.\n\t\t}\n\t}\n}\n\nfunction toOutcome(\n\tclaim: HumainAgentExecutionClaim,\n\tcompletion: HumainAgentHostCompletion,\n): HumainAgentExecutionOutcome {\n\treturn { ...claimIdentity(claim), ...completion };\n}\n\nfunction failedOutcome(\n\tclaim: HumainAgentExecutionClaim,\n\tfailureCode: HumainAgentExecutionFailureCode,\n): HumainAgentExecutionOutcome {\n\treturn { ...claimIdentity(claim), kind: \"failed\", failureCode, usage: UNKNOWN_USAGE };\n}\n\nfunction claimIdentity(claim: HumainAgentExecutionClaim) {\n\treturn {\n\t\tworkUnitId: claim.workUnitId,\n\t\tnodeId: claim.nodeId,\n\t\tattemptNumber: claim.attemptNumber,\n\t\tattemptFence: claim.attemptFence,\n\t\tsegmentFence: claim.segmentFence,\n\t};\n}\n\nfunction singleOutcomeResponse(\n\trequest: HumainAgentExecutionRequest,\n\toutcome: HumainAgentExecutionOutcome,\n): HumainAgentExecutionResponse {\n\tconst termination =\n\t\toutcome.kind !== \"cancelled\" ? \"not-requested\" : outcome.terminationConfirmed ? \"confirmed\" : \"unconfirmed\";\n\treturn checkedResponse(request, {\n\t\tschemaVersion: 1,\n\t\tkind: \"result\",\n\t\tmode: \"node\",\n\t\tinvocationId: request.invocationId,\n\t\ttermination,\n\t\toutcomes: [outcome],\n\t});\n}\n\nfunction cancelledResponse(\n\trequest: HumainAgentExecutionRequest,\n\tclaim: HumainAgentExecutionClaim,\n\tterminationConfirmed: boolean,\n): HumainAgentExecutionResponse {\n\treturn singleOutcomeResponse(request, {\n\t\t...claimIdentity(claim),\n\t\tkind: \"cancelled\",\n\t\tterminationConfirmed,\n\t\tusage: UNKNOWN_USAGE,\n\t});\n}\n\nfunction checkedResponse(\n\trequest: HumainAgentExecutionRequest,\n\tresponse: HumainAgentExecutionResponse,\n): HumainAgentExecutionResponse {\n\treturn parseHumainAgentExecutionResponse(request, response);\n}\n"]}
1
+ {"version":3,"file":"agent-execution-runtime.js","sourceRoot":"","sources":["../../src/humain/agent-execution-runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\ttype HumainAgentArtifact,\n\ttype HumainAgentExecutionClaim,\n\ttype HumainAgentExecutionFailureCode,\n\ttype HumainAgentExecutionOutcome,\n\ttype HumainAgentExecutionRequest,\n\ttype HumainAgentExecutionResponse,\n\ttype HumainAgentRouteRef,\n\ttype HumainAgentUsage,\n\tparseHumainAgentExecutionRequest,\n\tparseHumainAgentExecutionResponse,\n} from \"./agent-execution-protocol.ts\";\n\nexport type HumainAgentHostCompletion =\n\t| {\n\t\t\tkind: \"succeeded\";\n\t\t\toutput: { summary: string; artifacts: HumainAgentArtifact[] };\n\t\t\tusage: HumainAgentUsage;\n\t }\n\t| { kind: \"failed\"; failureCode: \"adapter_execution_failed\" | \"invalid_adapter_result\"; usage: HumainAgentUsage }\n\t| { kind: \"cancelled\"; terminationConfirmed: boolean; usage: HumainAgentUsage };\n\nexport interface HumainAgentExecutionHandle {\n\tcompletion: Promise<HumainAgentHostCompletion>;\n\tcancel(reason: string): Promise<{ terminationConfirmed: boolean }>;\n\tdispose(): void;\n}\n\nexport interface HumainAgentExecutionHost {\n\tlaunch(request: {\n\t\trouteRef: HumainAgentRouteRef;\n\t\ttask: string;\n\t\tartifacts: HumainAgentArtifact[];\n\t}): Promise<HumainAgentExecutionHandle | null>;\n}\n\nconst UNKNOWN_USAGE = { status: \"unknown\" } as const;\n\nexport async function executeHumainAgentRequest(\n\tinput: unknown,\n\thost: HumainAgentExecutionHost,\n\toptions: { signal?: AbortSignal } = {},\n): Promise<HumainAgentExecutionResponse> {\n\tconst request = parseHumainAgentExecutionRequest(input);\n\tif (request.mode === \"workflow\") {\n\t\treturn checkedResponse(request, {\n\t\t\tschemaVersion: 1,\n\t\t\tkind: \"result\",\n\t\t\tmode: request.mode,\n\t\t\tinvocationId: request.invocationId,\n\t\t\tbatchId: request.batchId,\n\t\t\ttermination: \"not-requested\",\n\t\t\toutcomes: request.claims.map((claim) => failedOutcome(claim, \"incompatible_adapter_capability\")),\n\t\t});\n\t}\n\n\tconst claim = request.claims[0];\n\tif (!claim) throw new Error(\"Parsed node execution request has no claim\");\n\tif (options.signal?.aborted) {\n\t\treturn cancelledResponse(request, claim, false);\n\t}\n\n\tconst launchStartedAt = Date.now();\n\tlet cancelLaunch: ((reason: string) => void) | undefined;\n\tconst launchCancellation = new Promise<string>((resolve) => {\n\t\tcancelLaunch = resolve;\n\t});\n\tconst launchTimeout = setTimeout(() => cancelLaunch?.(\"execution timeout\"), claim.controls.timeoutMs);\n\tconst onLaunchAbort = () => cancelLaunch?.(\"execution cancelled\");\n\toptions.signal?.addEventListener(\"abort\", onLaunchAbort, { once: true });\n\tif (options.signal?.aborted) onLaunchAbort();\n\tlet launchPromise: ReturnType<HumainAgentExecutionHost[\"launch\"]>;\n\ttry {\n\t\tlaunchPromise = host.launch({\n\t\t\trouteRef: claim.routeRef,\n\t\t\ttask: claim.task,\n\t\t\tartifacts: claim.input.artifacts,\n\t\t});\n\t} catch {\n\t\tclearTimeout(launchTimeout);\n\t\toptions.signal?.removeEventListener(\"abort\", onLaunchAbort);\n\t\treturn singleOutcomeResponse(request, failedOutcome(claim, \"adapter_execution_failed\"));\n\t}\n\tconst launchResult = await Promise.race([\n\t\tlaunchPromise.then(\n\t\t\t(handle) => ({ kind: \"launched\" as const, handle }),\n\t\t\t() => ({ kind: \"failed\" as const }),\n\t\t),\n\t\tlaunchCancellation.then((reason) => ({ kind: \"cancelled\" as const, reason })),\n\t]);\n\tclearTimeout(launchTimeout);\n\toptions.signal?.removeEventListener(\"abort\", onLaunchAbort);\n\tif (launchResult.kind === \"cancelled\") {\n\t\tvoid launchPromise\n\t\t\t.then(async (lateHandle) => {\n\t\t\t\tif (!lateHandle) return;\n\t\t\t\ttry {\n\t\t\t\t\tawait lateHandle.cancel(launchResult.reason);\n\t\t\t\t} catch {\n\t\t\t\t\t// The correlated response remains honestly unconfirmed.\n\t\t\t\t} finally {\n\t\t\t\t\tlateHandle.dispose();\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(() => {});\n\t\treturn cancelledResponse(request, claim, false);\n\t}\n\tif (launchResult.kind === \"failed\") {\n\t\treturn singleOutcomeResponse(request, failedOutcome(claim, \"adapter_execution_failed\"));\n\t}\n\tconst handle = launchResult.handle;\n\tif (!handle) {\n\t\treturn singleOutcomeResponse(request, failedOutcome(claim, \"incompatible_adapter_capability\"));\n\t}\n\n\tlet timeout: ReturnType<typeof setTimeout> | undefined;\n\tlet removeAbortListener: (() => void) | undefined;\n\tlet cancellationInFlight: Promise<void> | undefined;\n\tlet cancellationCompletion: HumainAgentHostCompletion | undefined;\n\ttry {\n\t\tconst cancellation = new Promise<HumainAgentHostCompletion>((resolve) => {\n\t\t\tconst cancel = (reason: string) => {\n\t\t\t\tif (cancellationInFlight) return;\n\t\t\t\tcancellationInFlight = (async () => {\n\t\t\t\t\tlet terminationConfirmed = false;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tterminationConfirmed = (await handle.cancel(reason)).terminationConfirmed;\n\t\t\t\t\t} catch {\n\t\t\t\t\t\tterminationConfirmed = false;\n\t\t\t\t\t}\n\t\t\t\t\tcancellationCompletion = { kind: \"cancelled\", terminationConfirmed, usage: UNKNOWN_USAGE };\n\t\t\t\t\tresolve(cancellationCompletion);\n\t\t\t\t})();\n\t\t\t};\n\t\t\tconst remainingTimeoutMs = Math.max(1, claim.controls.timeoutMs - (Date.now() - launchStartedAt));\n\t\t\ttimeout = setTimeout(() => cancel(\"execution timeout\"), remainingTimeoutMs);\n\t\t\tif (options.signal) {\n\t\t\t\tconst onAbort = () => cancel(\"execution cancelled\");\n\t\t\t\toptions.signal.addEventListener(\"abort\", onAbort, { once: true });\n\t\t\t\tremoveAbortListener = () => options.signal?.removeEventListener(\"abort\", onAbort);\n\t\t\t\tif (options.signal.aborted) onAbort();\n\t\t\t}\n\t\t});\n\t\tlet completion = await Promise.race([handle.completion, cancellation]);\n\t\tif (cancellationInFlight) {\n\t\t\tawait cancellationInFlight;\n\t\t\tif (cancellationCompletion) completion = cancellationCompletion;\n\t\t}\n\t\ttry {\n\t\t\treturn singleOutcomeResponse(request, toOutcome(claim, completion));\n\t\t} catch {\n\t\t\treturn singleOutcomeResponse(request, failedOutcome(claim, \"invalid_adapter_result\"));\n\t\t}\n\t} finally {\n\t\tif (timeout) clearTimeout(timeout);\n\t\tremoveAbortListener?.();\n\t\tawait cancellationInFlight;\n\t\ttry {\n\t\t\thandle.dispose();\n\t\t} catch {\n\t\t\t// Cleanup failure cannot replace the already-correlated protocol result.\n\t\t}\n\t}\n}\n\nfunction toOutcome(\n\tclaim: HumainAgentExecutionClaim,\n\tcompletion: HumainAgentHostCompletion,\n): HumainAgentExecutionOutcome {\n\treturn { ...claimIdentity(claim), ...completion };\n}\n\nfunction failedOutcome(\n\tclaim: HumainAgentExecutionClaim,\n\tfailureCode: HumainAgentExecutionFailureCode,\n): HumainAgentExecutionOutcome {\n\treturn { ...claimIdentity(claim), kind: \"failed\", failureCode, usage: UNKNOWN_USAGE };\n}\n\nfunction claimIdentity(claim: HumainAgentExecutionClaim) {\n\treturn {\n\t\tworkUnitId: claim.workUnitId,\n\t\tnodeId: claim.nodeId,\n\t\tattemptNumber: claim.attemptNumber,\n\t\tattemptFence: claim.attemptFence,\n\t\tsegmentFence: claim.segmentFence,\n\t};\n}\n\nfunction singleOutcomeResponse(\n\trequest: HumainAgentExecutionRequest,\n\toutcome: HumainAgentExecutionOutcome,\n): HumainAgentExecutionResponse {\n\tconst termination =\n\t\toutcome.kind !== \"cancelled\" ? \"not-requested\" : outcome.terminationConfirmed ? \"confirmed\" : \"unconfirmed\";\n\treturn checkedResponse(request, {\n\t\tschemaVersion: 1,\n\t\tkind: \"result\",\n\t\tmode: \"node\",\n\t\tinvocationId: request.invocationId,\n\t\ttermination,\n\t\toutcomes: [outcome],\n\t});\n}\n\nfunction cancelledResponse(\n\trequest: HumainAgentExecutionRequest,\n\tclaim: HumainAgentExecutionClaim,\n\tterminationConfirmed: boolean,\n): HumainAgentExecutionResponse {\n\treturn singleOutcomeResponse(request, {\n\t\t...claimIdentity(claim),\n\t\tkind: \"cancelled\",\n\t\tterminationConfirmed,\n\t\tusage: UNKNOWN_USAGE,\n\t});\n}\n\nfunction checkedResponse(\n\trequest: HumainAgentExecutionRequest,\n\tresponse: HumainAgentExecutionResponse,\n): HumainAgentExecutionResponse {\n\treturn parseHumainAgentExecutionResponse(request, response);\n}\n"]}
@@ -405,13 +405,121 @@ function sanitizeSurrogates(text) {
405
405
  }
406
406
 
407
407
  // packages/ai/src/api/constrained-sampling.ts
408
+ var UnsupportedStrictJsonSchemaError = class extends Error {
409
+ };
410
+ var UNSUPPORTED_STRICT_SCHEMA_KEYS = [
411
+ "$ref",
412
+ "$defs",
413
+ "definitions",
414
+ "allOf",
415
+ "oneOf",
416
+ "patternProperties",
417
+ "dependentSchemas",
418
+ "dependencies",
419
+ "unevaluatedProperties",
420
+ "propertyNames",
421
+ "contains",
422
+ "prefixItems",
423
+ "not",
424
+ "if",
425
+ "then",
426
+ "else"
427
+ ];
428
+ function isJsonSchemaObject(value) {
429
+ return typeof value === "object" && value !== null && !Array.isArray(value);
430
+ }
431
+ function isStructuredSchema(schema) {
432
+ if (!isJsonSchemaObject(schema)) return false;
433
+ const types = typeof schema.type === "string" ? [schema.type] : Array.isArray(schema.type) ? schema.type : [];
434
+ return types.includes("object") || types.includes("array") || schema.properties !== void 0 || schema.items !== void 0;
435
+ }
436
+ function schemaAllowsNull(schema) {
437
+ if (!isJsonSchemaObject(schema)) return false;
438
+ if (schema.type === "null" || Array.isArray(schema.type) && schema.type.includes("null")) return true;
439
+ if (schema.const === null || Array.isArray(schema.enum) && schema.enum.includes(null)) return true;
440
+ return Array.isArray(schema.anyOf) && schema.anyOf.some((variant) => schemaAllowsNull(variant));
441
+ }
442
+ function makeJsonSchemaNodeStrict(schema) {
443
+ if (!isJsonSchemaObject(schema)) {
444
+ throw new UnsupportedStrictJsonSchemaError("boolean schemas are unsupported");
445
+ }
446
+ for (const key of UNSUPPORTED_STRICT_SCHEMA_KEYS) {
447
+ if (schema[key] !== void 0) {
448
+ throw new UnsupportedStrictJsonSchemaError(`${key} schemas are unsupported`);
449
+ }
450
+ }
451
+ if (schema.anyOf !== void 0) {
452
+ if (!Array.isArray(schema.anyOf) || schema.anyOf.length === 0) {
453
+ throw new UnsupportedStrictJsonSchemaError("anyOf must contain at least one schema");
454
+ }
455
+ for (const variant of schema.anyOf) {
456
+ if (isStructuredSchema(variant)) {
457
+ throw new UnsupportedStrictJsonSchemaError("object and array unions are unsupported");
458
+ }
459
+ makeJsonSchemaNodeStrict(variant);
460
+ }
461
+ }
462
+ if (schema.items !== void 0) {
463
+ if (Array.isArray(schema.items)) {
464
+ throw new UnsupportedStrictJsonSchemaError("tuple schemas are unsupported");
465
+ }
466
+ makeJsonSchemaNodeStrict(schema.items);
467
+ }
468
+ const isObjectSchema = schema.type === "object";
469
+ if (schema.properties !== void 0 && !isObjectSchema) {
470
+ throw new UnsupportedStrictJsonSchemaError("properties require type object");
471
+ }
472
+ if (!isObjectSchema) return;
473
+ if (schema.additionalProperties !== void 0 && schema.additionalProperties !== false) {
474
+ throw new UnsupportedStrictJsonSchemaError("schema-valued or true additionalProperties is unsupported");
475
+ }
476
+ if (schema.properties !== void 0 && !isJsonSchemaObject(schema.properties)) {
477
+ throw new UnsupportedStrictJsonSchemaError("object properties must be a schema map");
478
+ }
479
+ if (schema.required !== void 0 && (!Array.isArray(schema.required) || schema.required.some((key) => typeof key !== "string"))) {
480
+ throw new UnsupportedStrictJsonSchemaError("object required must be a string array");
481
+ }
482
+ const properties = schema.properties ?? {};
483
+ const propertyNames = Object.keys(properties);
484
+ const required = new Set(Array.isArray(schema.required) ? schema.required : []);
485
+ if ([...required].some((key) => !propertyNames.includes(key))) {
486
+ throw new UnsupportedStrictJsonSchemaError("required contains an unknown property");
487
+ }
488
+ for (const [key, property] of Object.entries(properties)) {
489
+ makeJsonSchemaNodeStrict(property);
490
+ if (!required.has(key) && !schemaAllowsNull(property)) {
491
+ properties[key] = { anyOf: [property, { type: "null" }] };
492
+ }
493
+ }
494
+ schema.required = propertyNames;
495
+ schema.additionalProperties = false;
496
+ }
497
+ function makeStrictJsonSchema(schema) {
498
+ const cloned = structuredClone(schema);
499
+ if (!isJsonSchemaObject(cloned)) {
500
+ throw new UnsupportedStrictJsonSchemaError("root schema must have type object");
501
+ }
502
+ makeJsonSchemaNodeStrict(cloned);
503
+ if (cloned.type !== "object") {
504
+ throw new UnsupportedStrictJsonSchemaError("root schema must have type object");
505
+ }
506
+ return cloned;
507
+ }
508
+ function getJsonSchemaToolParameters(tool, strict) {
509
+ return strict === true ? makeStrictJsonSchema(tool.parameters) : tool.parameters;
510
+ }
408
511
  function resolveJsonSchemaStrictSampling(tool, supportsStrictMode) {
409
512
  const config = tool.constrainedSampling;
410
- if (!config || config.type !== "json_schema") {
411
- return void 0;
412
- }
513
+ if (typeof config !== "object" || config.type !== "json_schema") return void 0;
413
514
  if (supportsStrictMode) {
414
- return true;
515
+ try {
516
+ makeStrictJsonSchema(tool.parameters);
517
+ return true;
518
+ } catch (error) {
519
+ if (!(error instanceof UnsupportedStrictJsonSchemaError)) throw error;
520
+ if (config.strict !== "require") return void 0;
521
+ throw new Error(`Tool "${tool.name}" requires JSON-schema constrained sampling, but ${error.message}.`);
522
+ }
415
523
  }
416
524
  if (config.strict === "require") {
417
525
  throw new Error(
@@ -807,6 +915,7 @@ var stream = (model, context, options = {}) => {
807
915
  let responseRequestId;
808
916
  let client;
809
917
  try {
918
+ const supportsStrictMode = model.compat?.supportsStrictMode ?? false;
810
919
  client = new BedrockRuntimeClient(config);
811
920
  const customHeaders = providerHeadersToRecord(options.headers);
812
921
  if (customHeaders) {
@@ -822,7 +931,7 @@ var stream = (model, context, options = {}) => {
822
931
  ...inferenceMaxTokens !== void 0 && { maxTokens: inferenceMaxTokens },
823
932
  ...options.temperature !== void 0 && { temperature: options.temperature }
824
933
  },
825
- toolConfig: convertToolConfig(context.tools, options.toolChoice, model.compat?.supportsStrictMode ?? false),
934
+ toolConfig: convertToolConfig(context.tools, options.toolChoice, supportsStrictMode),
826
935
  additionalModelRequestFields: buildAdditionalModelRequestFields(model, options),
827
936
  ...options.requestMetadata !== void 0 && { requestMetadata: options.requestMetadata }
828
937
  };
@@ -1176,6 +1285,17 @@ function createNonBlankTextBlock(text) {
1176
1285
  function createRequiredTextBlock(text) {
1177
1286
  return createNonBlankTextBlock(text) ?? { text: EMPTY_TEXT_PLACEHOLDER };
1178
1287
  }
1288
+ function sanitizeBedrockDocument(value) {
1289
+ if (Array.isArray(value)) {
1290
+ return value.map(sanitizeBedrockDocument);
1291
+ }
1292
+ if (value !== null && typeof value === "object") {
1293
+ return Object.fromEntries(
1294
+ Object.entries(value).filter(([key]) => key.length > 0).map(([key, nestedValue]) => [key, sanitizeBedrockDocument(nestedValue)])
1295
+ );
1296
+ }
1297
+ return value;
1298
+ }
1179
1299
  function convertToolResultContent(content) {
1180
1300
  const result = [];
1181
1301
  for (const c of content) {
@@ -1237,7 +1357,7 @@ function convertMessages(context, model, cacheRetention, env) {
1237
1357
  }
1238
1358
  case "toolCall":
1239
1359
  contentBlocks.push({
1240
- toolUse: { toolUseId: c.id, name: c.name, input: c.arguments }
1360
+ toolUse: { toolUseId: c.id, name: c.name, input: sanitizeBedrockDocument(c.arguments) }
1241
1361
  });
1242
1362
  break;
1243
1363
  case "thinking": {
@@ -1332,7 +1452,7 @@ function convertToolConfig(tools, toolChoice, supportsStrictMode) {
1332
1452
  toolSpec: {
1333
1453
  name: tool.name,
1334
1454
  description: tool.description,
1335
- inputSchema: { json: tool.parameters },
1455
+ inputSchema: { json: getJsonSchemaToolParameters(tool, strict) },
1336
1456
  ...strict === true ? { strict: true } : {}
1337
1457
  }
1338
1458
  };
@@ -1 +1 @@
1
- {"version":3,"file":"brand-logo.d.ts","sourceRoot":"","sources":["../../src/humain/brand-logo.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,6BAA6B,oKACwH,CAAC;AAEnK,eAAO,MAAM,0BAA0B,UAA6E,CAAC","sourcesContent":["export const HUMAIN_BRAND_ICON_MARK_SOURCE =\n\t\"M17.6855 7.8359H6.2825V4.8445H3.4402V19.1555H6.2825V16.147H17.6855V19.1555H20.5277V4.8445H17.6855V7.8528V7.8359ZM6.2825 13.5466V10.4363H17.6855V13.5466H6.2825Z\";\n\nexport const HUMAIN_TERMINAL_LOGO_LINES = [\"| | | |\", \"| |_| |\", \"| _ |\", \"| | | |\", \"|_| |_|\", \"HUMAIN TERMINAL\"];\n"]}
1
+ {"version":3,"file":"brand-logo.d.ts","sourceRoot":"","sources":["../../src/humain/brand-logo.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,6BAA6B,oKACwH,CAAC;AAEnK,eAAO,MAAM,0BAA0B,UAA6E,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/humain/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAgB,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAMjE,eAAO,MAAM,qBAAqB,iBAAiB,CAAC;AACpD,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAClD,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAChD,eAAO,MAAM,oBAAoB,8BAA8B,CAAC;AAqHhE,wBAAsB,0BAA0B,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAIvG;AA8LD,wBAAgB,8BAA8B,IAAI,aAAa,EAAE,CAEhE;AAED,wBAAgB,oCAAoC,CACnD,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,aAAa,GAAE,MAAkB,GAC/B,gBAAgB,CAWlB;AAED,wBAAgB,kCAAkC,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,gBAAgB,EAAE,CAM7F","sourcesContent":["import { homedir } from \"node:os\";\nimport type { Api, OAuthCredentials } from \"@earendil-works/pi-ai\";\nimport { setBedrockProviderModule } from \"@earendil-works/pi-ai/compat\";\nimport type { ExtensionAPI, ExtensionFactory, ProviderModelConfig } from \"../core/extensions/types.ts\";\nimport type { PackageSource } from \"../core/settings-manager.ts\";\nimport { bedrockProviderModule } from \"./bedrock-provider/vendor/index.bundle.mjs\";\nimport { cleanupLegacyWorkflowTiers, getLegacyWorkflowTierPaths } from \"./legacy-workflow-tiers.ts\";\nimport { createHumainMcpAdapterExtensionFactory } from \"./mcp-adapter.ts\";\nimport { createHumainWebAccessExtensionFactory } from \"./web-access/index.ts\";\n\nexport const HUMAIN_LOCAL_PROVIDER = \"humain-local\";\nexport const HUMAIN_CODE_PROVIDER = \"humain-code\";\nexport const HUMAIN_SSO_PROVIDER = \"humain-sso\";\nexport const HUMAIN_FORGE_CWD_ENV = \"HUMAIN_TERMINAL_FORGE_CWD\";\n\nsetBedrockProviderModule(bedrockProviderModule);\n\nconst LOCAL_MODELS_ENV = \"HUMAIN_TERMINAL_LOCAL_MODELS\";\nconst LOCAL_BASE_URL_ENV = \"HUMAIN_TERMINAL_LOCAL_BASE_URL\";\nconst LEGACY_LOCAL_BASE_URL_ENV = \"HUMAIN_TERMINAL_AI_BASE_URL\";\nconst LOCAL_API_KEY_ENV = \"HUMAIN_TERMINAL_LOCAL_API_KEY\";\nconst LEGACY_LOCAL_API_KEY_ENV = \"HUMAIN_TERMINAL_AI_API_KEY\";\nconst LOCAL_DISCOVERY_TIMEOUT_ENV = \"HUMAIN_TERMINAL_LOCAL_MODELS_DISCOVERY_TIMEOUT_MS\";\nconst HC_BASE_URL_ENV = \"HUMAIN_TERMINAL_HC_BASE_URL\";\nconst HC_API_KEY_ENV = \"HUMAIN_TERMINAL_HC_API_KEY\";\nconst HC_MODELS_ENV = \"HUMAIN_TERMINAL_HC_MODELS\";\nconst HUMAIN_CODE_BASE_URL_ENV = \"HUMAIN_TERMINAL_HUMAIN_CODE_BASE_URL\";\nconst HUMAIN_CODE_API_KEY_ENV = \"HUMAIN_TERMINAL_HUMAIN_CODE_API_KEY\";\nconst HUMAIN_CODE_MODELS_ENV = \"HUMAIN_TERMINAL_HUMAIN_CODE_MODELS\";\nconst DEPLOYNOW_PROXY_SENTINEL = \"deploynow-proxy\";\nconst DEPLOYNOW_BROKER_SENTINEL = \"deploynow-broker\";\nconst DEPLOYNOW_ANTHROPIC_LEGACY_SENTINEL = \"not-a-real-key-routed-via-proxy\";\nconst DEPLOYNOW_PROXY_SENTINELS = new Set([\n\tDEPLOYNOW_PROXY_SENTINEL,\n\tDEPLOYNOW_BROKER_SENTINEL,\n\tDEPLOYNOW_ANTHROPIC_LEGACY_SENTINEL,\n]);\nconst DEPLOYNOW_BEDROCK_BASE_URL_ENV = \"ANTHROPIC_BEDROCK_BASE_URL\";\nconst DEPLOYNOW_ANTHROPIC_BASE_URL_ENV = \"ANTHROPIC_BASE_URL\";\nconst DEPLOYNOW_OPENAI_BASE_URL_ENV = \"OPENAI_BASE_URL\";\nconst AWS_REGION_ENV = \"AWS_REGION\";\nconst AWS_ACCESS_KEY_ID_ENV = \"AWS_ACCESS_KEY_ID\";\nconst AWS_SECRET_ACCESS_KEY_ENV = \"AWS_SECRET_ACCESS_KEY\";\nconst AWS_SESSION_TOKEN_ENV = \"AWS_SESSION_TOKEN\";\nconst ANTHROPIC_API_KEY_ENV = \"ANTHROPIC_API_KEY\";\nconst OPENAI_API_KEY_ENV = \"OPENAI_API_KEY\";\nconst BEDROCK_MODEL_ID_ENV = \"BEDROCK_MODEL_ID\";\nconst OPENAI_MODEL_ID_ENV = \"OPENAI_MODEL_ID\";\nconst ANTHROPIC_MODEL_ID_ENV = \"ANTHROPIC_MODEL_ID\";\nconst FORGE_RUNTIME_MODEL_PROVIDER_ENV = \"FORGE_RUNTIME_MODEL_PROVIDER\";\nconst FORGE_RUNTIME_MODEL_ID_ENV = \"FORGE_RUNTIME_MODEL_ID\";\nconst DEFAULT_LOCAL_CONTEXT_WINDOW = 128000;\nconst DEFAULT_LOCAL_MAX_TOKENS = 16384;\nconst DEFAULT_LOCAL_MODEL_COST = { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 };\nconst AMAZON_BEDROCK_PROVIDER = \"amazon-bedrock\";\nconst ANTHROPIC_PROVIDER = \"anthropic\";\nconst OPENAI_PROVIDER = \"openai\";\nconst HUMAIN_SSO_UNSUPPORTED_MESSAGE = \"HUMAIN SSO is not supported yet.\";\n\ninterface DiscoveryModelList {\n\tdata?: Array<{ id?: unknown }>;\n}\n\nconst DEFAULT_HUMAIN_CODE_MODELS = [\"humain-planning\", \"humain-code\", \"humain-review\", \"humain-long-context\"];\n\nfunction readCsvEnv(env: NodeJS.ProcessEnv, key: string): string[] {\n\tconst raw = env[key];\n\tif (!raw) return [];\n\treturn raw\n\t\t.split(\",\")\n\t\t.map((item) => item.trim())\n\t\t.filter((item) => item.length > 0);\n}\n\nfunction readNonEmptyEnv(env: NodeJS.ProcessEnv, key: string): string | undefined {\n\tconst value = env[key]?.trim();\n\treturn value ? value : undefined;\n}\n\nfunction toModelConfig(id: string, api: Api = \"openai-completions\"): ProviderModelConfig {\n\tconst config: ProviderModelConfig = {\n\t\tid,\n\t\tname: id,\n\t\tapi,\n\t\treasoning: false,\n\t\tinput: [\"text\"],\n\t\tcost: DEFAULT_LOCAL_MODEL_COST,\n\t\tcontextWindow: DEFAULT_LOCAL_CONTEXT_WINDOW,\n\t\tmaxTokens: DEFAULT_LOCAL_MAX_TOKENS,\n\t};\n\n\tif (api === \"openai-completions\") {\n\t\tconfig.compat = {\n\t\t\tsupportsStore: false,\n\t\t\tsupportsDeveloperRole: false,\n\t\t\tsupportsReasoningEffort: false,\n\t\t\tsupportsUsageInStreaming: false,\n\t\t\tmaxTokensField: \"max_tokens\",\n\t\t\tsupportsStrictMode: false,\n\t\t\tsupportsLongCacheRetention: false,\n\t\t};\n\t}\n\n\treturn config;\n}\n\nasync function discoverLocalModelIds(env: NodeJS.ProcessEnv): Promise<string[]> {\n\tconst baseUrl = getLocalBaseUrl(env);\n\tif (!baseUrl) return [];\n\tconst timeoutMs = Number(env[LOCAL_DISCOVERY_TIMEOUT_ENV] ?? \"750\");\n\tconst controller = new AbortController();\n\tconst timeout = setTimeout(() => controller.abort(), Number.isFinite(timeoutMs) && timeoutMs > 0 ? timeoutMs : 750);\n\tconst apiKey = getLocalApiKey(env);\n\ttry {\n\t\tconst response = await fetch(new URL(\"models\", baseUrl.endsWith(\"/\") ? baseUrl : `${baseUrl}/`), {\n\t\t\tsignal: controller.signal,\n\t\t\theaders: apiKey ? { Authorization: `Bearer ${apiKey}` } : undefined,\n\t\t});\n\t\tif (!response.ok) return [];\n\t\tconst payload = (await response.json()) as DiscoveryModelList;\n\t\treturn (payload.data ?? [])\n\t\t\t.map((model) => (typeof model.id === \"string\" ? model.id.trim() : \"\"))\n\t\t\t.filter((id) => id.length > 0);\n\t} catch {\n\t\treturn [];\n\t} finally {\n\t\tclearTimeout(timeout);\n\t}\n}\n\nexport async function getHumainLocalModelConfigs(env: NodeJS.ProcessEnv): Promise<ProviderModelConfig[]> {\n\tconst envModelIds = readCsvEnv(env, LOCAL_MODELS_ENV);\n\tconst modelIds = envModelIds.length > 0 ? envModelIds : await discoverLocalModelIds(env);\n\treturn [...new Set(modelIds)].map((id) => toModelConfig(id));\n}\n\nfunction getLocalBaseUrl(env: NodeJS.ProcessEnv): string | undefined {\n\treturn env[LOCAL_BASE_URL_ENV] ?? env[LEGACY_LOCAL_BASE_URL_ENV];\n}\n\nfunction getLocalApiKey(env: NodeJS.ProcessEnv): string | undefined {\n\treturn env[LOCAL_API_KEY_ENV] ?? env[LEGACY_LOCAL_API_KEY_ENV];\n}\n\nfunction getHumainCodeBaseUrl(env: NodeJS.ProcessEnv): string | undefined {\n\treturn env[HUMAIN_CODE_BASE_URL_ENV] ?? env[HC_BASE_URL_ENV];\n}\n\nfunction getHumainCodeApiKey(env: NodeJS.ProcessEnv): string | undefined {\n\treturn env[HUMAIN_CODE_API_KEY_ENV] ?? env[HC_API_KEY_ENV];\n}\n\nfunction isDeployNowProxyCredential(value: string | undefined): boolean {\n\treturn value !== undefined && DEPLOYNOW_PROXY_SENTINELS.has(value);\n}\n\nfunction getDeployNowCredential(env: NodeJS.ProcessEnv, key: string): string {\n\treturn readNonEmptyEnv(env, key) ?? DEPLOYNOW_PROXY_SENTINEL;\n}\n\nfunction getDeployNowBedrockRequestEnv(env: NodeJS.ProcessEnv): Record<string, string> {\n\tconst requestEnv: Record<string, string> = {\n\t\t[AWS_ACCESS_KEY_ID_ENV]: getDeployNowCredential(env, AWS_ACCESS_KEY_ID_ENV),\n\t\t[AWS_SECRET_ACCESS_KEY_ENV]: getDeployNowCredential(env, AWS_SECRET_ACCESS_KEY_ENV),\n\t\t[AWS_REGION_ENV]: readNonEmptyEnv(env, AWS_REGION_ENV) ?? \"\",\n\t};\n\tconst sessionToken = readNonEmptyEnv(env, AWS_SESSION_TOKEN_ENV);\n\tif (sessionToken) {\n\t\trequestEnv[AWS_SESSION_TOKEN_ENV] = sessionToken;\n\t}\n\treturn requestEnv;\n}\n\nfunction hasDeployNowBedrockBindingConfig(env: NodeJS.ProcessEnv): boolean {\n\treturn Boolean(\n\t\treadNonEmptyEnv(env, DEPLOYNOW_BEDROCK_BASE_URL_ENV) &&\n\t\t\treadNonEmptyEnv(env, AWS_REGION_ENV) &&\n\t\t\tisDeployNowProxyCredential(env[AWS_ACCESS_KEY_ID_ENV]) &&\n\t\t\tisDeployNowProxyCredential(env[AWS_SECRET_ACCESS_KEY_ENV]),\n\t);\n}\n\nfunction hasDeployNowAnthropicBindingConfig(env: NodeJS.ProcessEnv): boolean {\n\treturn Boolean(\n\t\treadNonEmptyEnv(env, DEPLOYNOW_ANTHROPIC_BASE_URL_ENV) && isDeployNowProxyCredential(env[ANTHROPIC_API_KEY_ENV]),\n\t);\n}\n\nfunction hasDeployNowOpenAiBindingConfig(env: NodeJS.ProcessEnv): boolean {\n\treturn Boolean(\n\t\treadNonEmptyEnv(env, DEPLOYNOW_OPENAI_BASE_URL_ENV) && isDeployNowProxyCredential(env[OPENAI_API_KEY_ENV]),\n\t);\n}\n\nfunction getDeployNowBedrockModelId(env: NodeJS.ProcessEnv): string | undefined {\n\treturn (\n\t\t(isForgeRuntimeBedrockProvider(env) ? readNonEmptyEnv(env, FORGE_RUNTIME_MODEL_ID_ENV) : undefined) ??\n\t\treadNonEmptyEnv(env, BEDROCK_MODEL_ID_ENV)\n\t);\n}\n\nfunction getDeployNowOpenAiModelId(env: NodeJS.ProcessEnv): string | undefined {\n\treturn (\n\t\t(getForgeRuntimeModelProvider(env) === \"openai\" ? readNonEmptyEnv(env, FORGE_RUNTIME_MODEL_ID_ENV) : undefined) ??\n\t\treadNonEmptyEnv(env, OPENAI_MODEL_ID_ENV)\n\t);\n}\n\nfunction getDeployNowAnthropicModelId(env: NodeJS.ProcessEnv): string | undefined {\n\treturn (\n\t\t(getForgeRuntimeModelProvider(env) === \"anthropic\"\n\t\t\t? readNonEmptyEnv(env, FORGE_RUNTIME_MODEL_ID_ENV)\n\t\t\t: undefined) ?? readNonEmptyEnv(env, ANTHROPIC_MODEL_ID_ENV)\n\t);\n}\n\nfunction getForgeRuntimeModelProvider(env: NodeJS.ProcessEnv): string | undefined {\n\treturn readNonEmptyEnv(env, FORGE_RUNTIME_MODEL_PROVIDER_ENV)?.toLowerCase();\n}\n\nfunction isForgeRuntimeBedrockProvider(env: NodeJS.ProcessEnv): boolean {\n\tconst runtimeProvider = getForgeRuntimeModelProvider(env);\n\treturn runtimeProvider === \"bedrock\" || runtimeProvider === AMAZON_BEDROCK_PROVIDER;\n}\n\nfunction createUnsupportedHumainSsoProvider() {\n\treturn {\n\t\tname: \"HUMAIN SSO\",\n\t\tasync login(): Promise<OAuthCredentials> {\n\t\t\tthrow new Error(HUMAIN_SSO_UNSUPPORTED_MESSAGE);\n\t\t},\n\t\tasync refreshToken(): Promise<OAuthCredentials> {\n\t\t\tthrow new Error(HUMAIN_SSO_UNSUPPORTED_MESSAGE);\n\t\t},\n\t\tgetApiKey(): string {\n\t\t\tthrow new Error(HUMAIN_SSO_UNSUPPORTED_MESSAGE);\n\t\t},\n\t};\n}\n\nfunction getHumainCodeModelIds(env: NodeJS.ProcessEnv): string[] {\n\tconst configuredModels = readCsvEnv(env, HUMAIN_CODE_MODELS_ENV);\n\tconst shorthandModels = configuredModels.length > 0 ? configuredModels : readCsvEnv(env, HC_MODELS_ENV);\n\treturn shorthandModels.length > 0 ? shorthandModels : DEFAULT_HUMAIN_CODE_MODELS;\n}\n\nfunction getHumainCodeModels(env: NodeJS.ProcessEnv): ProviderModelConfig[] {\n\treturn getHumainCodeModelIds(env).map((id) => toModelConfig(id));\n}\n\nfunction registerDeployNowBindingProviders(pi: ExtensionAPI, env: NodeJS.ProcessEnv): void {\n\tconst bedrockBaseUrl = readNonEmptyEnv(env, DEPLOYNOW_BEDROCK_BASE_URL_ENV);\n\tconst bedrockModel = getDeployNowBedrockModelId(env);\n\tif (bedrockBaseUrl && hasDeployNowBedrockBindingConfig(env)) {\n\t\tpi.registerProvider(AMAZON_BEDROCK_PROVIDER, {\n\t\t\tname: \"DeployNow Bedrock Binding\",\n\t\t\tbaseUrl: bedrockBaseUrl,\n\t\t\tapiKey: getDeployNowCredential(env, AWS_ACCESS_KEY_ID_ENV),\n\t\t\tenv: getDeployNowBedrockRequestEnv(env),\n\t\t\tapi: \"bedrock-converse-stream\",\n\t\t\t...(bedrockModel ? { models: [toModelConfig(bedrockModel, \"bedrock-converse-stream\")] } : {}),\n\t\t});\n\t}\n\n\tconst anthropicBaseUrl = readNonEmptyEnv(env, DEPLOYNOW_ANTHROPIC_BASE_URL_ENV);\n\tconst anthropicModel = getDeployNowAnthropicModelId(env);\n\tif (anthropicBaseUrl && hasDeployNowAnthropicBindingConfig(env)) {\n\t\tpi.registerProvider(ANTHROPIC_PROVIDER, {\n\t\t\tname: \"DeployNow Anthropic Binding\",\n\t\t\tbaseUrl: anthropicBaseUrl,\n\t\t\tapiKey: getDeployNowCredential(env, ANTHROPIC_API_KEY_ENV),\n\t\t\tapi: \"anthropic-messages\",\n\t\t\t...(anthropicModel ? { models: [toModelConfig(anthropicModel, \"anthropic-messages\")] } : {}),\n\t\t});\n\t}\n\n\tconst openAiBaseUrl = readNonEmptyEnv(env, DEPLOYNOW_OPENAI_BASE_URL_ENV);\n\tconst openAiModel = getDeployNowOpenAiModelId(env);\n\tif (openAiBaseUrl && hasDeployNowOpenAiBindingConfig(env)) {\n\t\tpi.registerProvider(OPENAI_PROVIDER, {\n\t\t\tname: \"DeployNow OpenAI Binding\",\n\t\t\tbaseUrl: openAiBaseUrl,\n\t\t\tapiKey: getDeployNowCredential(env, OPENAI_API_KEY_ENV),\n\t\t\tapi: \"openai-completions\",\n\t\t\t...(openAiModel ? { models: [toModelConfig(openAiModel, \"openai-completions\")] } : {}),\n\t\t});\n\t}\n}\n\nasync function registerHumainProviders(pi: ExtensionAPI, env: NodeJS.ProcessEnv): Promise<void> {\n\tconst localBaseUrl = getLocalBaseUrl(env);\n\tconst localModels = await getHumainLocalModelConfigs(env);\n\tif (localBaseUrl && localModels.length > 0) {\n\t\tpi.registerProvider(HUMAIN_LOCAL_PROVIDER, {\n\t\t\tname: \"HUMAIN Local\",\n\t\t\tbaseUrl: localBaseUrl,\n\t\t\tapiKey: getLocalApiKey(env) ?? \"local\",\n\t\t\tapi: \"openai-completions\",\n\t\t\tauthHeader: Boolean(getLocalApiKey(env)),\n\t\t\tmodels: localModels,\n\t\t});\n\t}\n\n\tconst humainCodeBaseUrl = getHumainCodeBaseUrl(env);\n\tconst humainCodeApiKey = getHumainCodeApiKey(env);\n\tif (humainCodeBaseUrl && humainCodeApiKey) {\n\t\tpi.registerProvider(HUMAIN_CODE_PROVIDER, {\n\t\t\tname: \"HUMAIN Code\",\n\t\t\tbaseUrl: humainCodeBaseUrl,\n\t\t\tapiKey: humainCodeApiKey,\n\t\t\tapi: \"openai-completions\",\n\t\t\tauthHeader: true,\n\t\t\tmodels: getHumainCodeModels(env),\n\t\t});\n\t}\n\n\tregisterDeployNowBindingProviders(pi, env);\n\n\tpi.registerProvider(HUMAIN_SSO_PROVIDER, {\n\t\tname: \"HUMAIN SSO\",\n\t\toauth: createUnsupportedHumainSsoProvider(),\n\t});\n}\n\nexport function getHumainDefaultPackageSources(): PackageSource[] {\n\treturn [];\n}\n\nexport function createHumainProviderExtensionFactory(\n\tenv: NodeJS.ProcessEnv,\n\thomeDirectory: string = homedir(),\n): ExtensionFactory {\n\treturn async (pi) => {\n\t\tawait registerHumainProviders(pi, env);\n\n\t\tpi.on(\"session_start\", (event, ctx) => {\n\t\t\tif (event.reason === \"startup\") {\n\t\t\t\tctx.ui.setTheme(\"humain-dark\");\n\t\t\t\tcleanupLegacyWorkflowTiers(getLegacyWorkflowTierPaths(homeDirectory));\n\t\t\t}\n\t\t});\n\t};\n}\n\nexport function getHumainBundledExtensionFactories(env: NodeJS.ProcessEnv): ExtensionFactory[] {\n\treturn [\n\t\tcreateHumainProviderExtensionFactory(env),\n\t\tcreateHumainWebAccessExtensionFactory(),\n\t\tcreateHumainMcpAdapterExtensionFactory(),\n\t];\n}\n"]}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/humain/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAgB,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAMjE,eAAO,MAAM,qBAAqB,iBAAiB,CAAC;AACpD,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAClD,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAChD,eAAO,MAAM,oBAAoB,8BAA8B,CAAC;AAqHhE,wBAAsB,0BAA0B,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAIvG;AA8LD,wBAAgB,8BAA8B,IAAI,aAAa,EAAE,CAEhE;AAED,wBAAgB,oCAAoC,CACnD,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,aAAa,GAAE,MAAkB,GAC/B,gBAAgB,CAWlB;AAED,wBAAgB,kCAAkC,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,gBAAgB,EAAE,CAM7F"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/humain/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { homedir } from \"node:os\";\nimport type { Api, OAuthCredentials } from \"@earendil-works/pi-ai\";\nimport { setBedrockProviderModule } from \"@earendil-works/pi-ai/compat\";\nimport type { ExtensionAPI, ExtensionFactory, ProviderModelConfig } from \"../core/extensions/types.ts\";\nimport type { PackageSource } from \"../core/settings-manager.ts\";\nimport { bedrockProviderModule } from \"./bedrock-provider/vendor/index.bundle.mjs\";\nimport { cleanupLegacyWorkflowTiers, getLegacyWorkflowTierPaths } from \"./legacy-workflow-tiers.ts\";\nimport { createHumainMcpAdapterExtensionFactory } from \"./mcp-adapter.ts\";\nimport { createHumainWebAccessExtensionFactory } from \"./web-access/index.ts\";\n\nexport const HUMAIN_LOCAL_PROVIDER = \"humain-local\";\nexport const HUMAIN_CODE_PROVIDER = \"humain-code\";\nexport const HUMAIN_SSO_PROVIDER = \"humain-sso\";\nexport const HUMAIN_FORGE_CWD_ENV = \"HUMAIN_TERMINAL_FORGE_CWD\";\n\nsetBedrockProviderModule(bedrockProviderModule);\n\nconst LOCAL_MODELS_ENV = \"HUMAIN_TERMINAL_LOCAL_MODELS\";\nconst LOCAL_BASE_URL_ENV = \"HUMAIN_TERMINAL_LOCAL_BASE_URL\";\nconst LEGACY_LOCAL_BASE_URL_ENV = \"HUMAIN_TERMINAL_AI_BASE_URL\";\nconst LOCAL_API_KEY_ENV = \"HUMAIN_TERMINAL_LOCAL_API_KEY\";\nconst LEGACY_LOCAL_API_KEY_ENV = \"HUMAIN_TERMINAL_AI_API_KEY\";\nconst LOCAL_DISCOVERY_TIMEOUT_ENV = \"HUMAIN_TERMINAL_LOCAL_MODELS_DISCOVERY_TIMEOUT_MS\";\nconst HC_BASE_URL_ENV = \"HUMAIN_TERMINAL_HC_BASE_URL\";\nconst HC_API_KEY_ENV = \"HUMAIN_TERMINAL_HC_API_KEY\";\nconst HC_MODELS_ENV = \"HUMAIN_TERMINAL_HC_MODELS\";\nconst HUMAIN_CODE_BASE_URL_ENV = \"HUMAIN_TERMINAL_HUMAIN_CODE_BASE_URL\";\nconst HUMAIN_CODE_API_KEY_ENV = \"HUMAIN_TERMINAL_HUMAIN_CODE_API_KEY\";\nconst HUMAIN_CODE_MODELS_ENV = \"HUMAIN_TERMINAL_HUMAIN_CODE_MODELS\";\nconst DEPLOYNOW_PROXY_SENTINEL = \"deploynow-proxy\";\nconst DEPLOYNOW_BROKER_SENTINEL = \"deploynow-broker\";\nconst DEPLOYNOW_ANTHROPIC_LEGACY_SENTINEL = \"not-a-real-key-routed-via-proxy\";\nconst DEPLOYNOW_PROXY_SENTINELS = new Set([\n\tDEPLOYNOW_PROXY_SENTINEL,\n\tDEPLOYNOW_BROKER_SENTINEL,\n\tDEPLOYNOW_ANTHROPIC_LEGACY_SENTINEL,\n]);\nconst DEPLOYNOW_BEDROCK_BASE_URL_ENV = \"ANTHROPIC_BEDROCK_BASE_URL\";\nconst DEPLOYNOW_ANTHROPIC_BASE_URL_ENV = \"ANTHROPIC_BASE_URL\";\nconst DEPLOYNOW_OPENAI_BASE_URL_ENV = \"OPENAI_BASE_URL\";\nconst AWS_REGION_ENV = \"AWS_REGION\";\nconst AWS_ACCESS_KEY_ID_ENV = \"AWS_ACCESS_KEY_ID\";\nconst AWS_SECRET_ACCESS_KEY_ENV = \"AWS_SECRET_ACCESS_KEY\";\nconst AWS_SESSION_TOKEN_ENV = \"AWS_SESSION_TOKEN\";\nconst ANTHROPIC_API_KEY_ENV = \"ANTHROPIC_API_KEY\";\nconst OPENAI_API_KEY_ENV = \"OPENAI_API_KEY\";\nconst BEDROCK_MODEL_ID_ENV = \"BEDROCK_MODEL_ID\";\nconst OPENAI_MODEL_ID_ENV = \"OPENAI_MODEL_ID\";\nconst ANTHROPIC_MODEL_ID_ENV = \"ANTHROPIC_MODEL_ID\";\nconst FORGE_RUNTIME_MODEL_PROVIDER_ENV = \"FORGE_RUNTIME_MODEL_PROVIDER\";\nconst FORGE_RUNTIME_MODEL_ID_ENV = \"FORGE_RUNTIME_MODEL_ID\";\nconst DEFAULT_LOCAL_CONTEXT_WINDOW = 128000;\nconst DEFAULT_LOCAL_MAX_TOKENS = 16384;\nconst DEFAULT_LOCAL_MODEL_COST = { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 };\nconst AMAZON_BEDROCK_PROVIDER = \"amazon-bedrock\";\nconst ANTHROPIC_PROVIDER = \"anthropic\";\nconst OPENAI_PROVIDER = \"openai\";\nconst HUMAIN_SSO_UNSUPPORTED_MESSAGE = \"HUMAIN SSO is not supported yet.\";\n\ninterface DiscoveryModelList {\n\tdata?: Array<{ id?: unknown }>;\n}\n\nconst DEFAULT_HUMAIN_CODE_MODELS = [\"humain-planning\", \"humain-code\", \"humain-review\", \"humain-long-context\"];\n\nfunction readCsvEnv(env: NodeJS.ProcessEnv, key: string): string[] {\n\tconst raw = env[key];\n\tif (!raw) return [];\n\treturn raw\n\t\t.split(\",\")\n\t\t.map((item) => item.trim())\n\t\t.filter((item) => item.length > 0);\n}\n\nfunction readNonEmptyEnv(env: NodeJS.ProcessEnv, key: string): string | undefined {\n\tconst value = env[key]?.trim();\n\treturn value ? value : undefined;\n}\n\nfunction toModelConfig(id: string, api: Api = \"openai-completions\"): ProviderModelConfig {\n\tconst config: ProviderModelConfig = {\n\t\tid,\n\t\tname: id,\n\t\tapi,\n\t\treasoning: false,\n\t\tinput: [\"text\"],\n\t\tcost: DEFAULT_LOCAL_MODEL_COST,\n\t\tcontextWindow: DEFAULT_LOCAL_CONTEXT_WINDOW,\n\t\tmaxTokens: DEFAULT_LOCAL_MAX_TOKENS,\n\t};\n\n\tif (api === \"openai-completions\") {\n\t\tconfig.compat = {\n\t\t\tsupportsStore: false,\n\t\t\tsupportsDeveloperRole: false,\n\t\t\tsupportsReasoningEffort: false,\n\t\t\tsupportsUsageInStreaming: false,\n\t\t\tmaxTokensField: \"max_tokens\",\n\t\t\tsupportsStrictMode: false,\n\t\t\tsupportsLongCacheRetention: false,\n\t\t};\n\t}\n\n\treturn config;\n}\n\nasync function discoverLocalModelIds(env: NodeJS.ProcessEnv): Promise<string[]> {\n\tconst baseUrl = getLocalBaseUrl(env);\n\tif (!baseUrl) return [];\n\tconst timeoutMs = Number(env[LOCAL_DISCOVERY_TIMEOUT_ENV] ?? \"750\");\n\tconst controller = new AbortController();\n\tconst timeout = setTimeout(() => controller.abort(), Number.isFinite(timeoutMs) && timeoutMs > 0 ? timeoutMs : 750);\n\tconst apiKey = getLocalApiKey(env);\n\ttry {\n\t\tconst response = await fetch(new URL(\"models\", baseUrl.endsWith(\"/\") ? baseUrl : `${baseUrl}/`), {\n\t\t\tsignal: controller.signal,\n\t\t\theaders: apiKey ? { Authorization: `Bearer ${apiKey}` } : undefined,\n\t\t});\n\t\tif (!response.ok) return [];\n\t\tconst payload = (await response.json()) as DiscoveryModelList;\n\t\treturn (payload.data ?? [])\n\t\t\t.map((model) => (typeof model.id === \"string\" ? model.id.trim() : \"\"))\n\t\t\t.filter((id) => id.length > 0);\n\t} catch {\n\t\treturn [];\n\t} finally {\n\t\tclearTimeout(timeout);\n\t}\n}\n\nexport async function getHumainLocalModelConfigs(env: NodeJS.ProcessEnv): Promise<ProviderModelConfig[]> {\n\tconst envModelIds = readCsvEnv(env, LOCAL_MODELS_ENV);\n\tconst modelIds = envModelIds.length > 0 ? envModelIds : await discoverLocalModelIds(env);\n\treturn [...new Set(modelIds)].map((id) => toModelConfig(id));\n}\n\nfunction getLocalBaseUrl(env: NodeJS.ProcessEnv): string | undefined {\n\treturn env[LOCAL_BASE_URL_ENV] ?? env[LEGACY_LOCAL_BASE_URL_ENV];\n}\n\nfunction getLocalApiKey(env: NodeJS.ProcessEnv): string | undefined {\n\treturn env[LOCAL_API_KEY_ENV] ?? env[LEGACY_LOCAL_API_KEY_ENV];\n}\n\nfunction getHumainCodeBaseUrl(env: NodeJS.ProcessEnv): string | undefined {\n\treturn env[HUMAIN_CODE_BASE_URL_ENV] ?? env[HC_BASE_URL_ENV];\n}\n\nfunction getHumainCodeApiKey(env: NodeJS.ProcessEnv): string | undefined {\n\treturn env[HUMAIN_CODE_API_KEY_ENV] ?? env[HC_API_KEY_ENV];\n}\n\nfunction isDeployNowProxyCredential(value: string | undefined): boolean {\n\treturn value !== undefined && DEPLOYNOW_PROXY_SENTINELS.has(value);\n}\n\nfunction getDeployNowCredential(env: NodeJS.ProcessEnv, key: string): string {\n\treturn readNonEmptyEnv(env, key) ?? DEPLOYNOW_PROXY_SENTINEL;\n}\n\nfunction getDeployNowBedrockRequestEnv(env: NodeJS.ProcessEnv): Record<string, string> {\n\tconst requestEnv: Record<string, string> = {\n\t\t[AWS_ACCESS_KEY_ID_ENV]: getDeployNowCredential(env, AWS_ACCESS_KEY_ID_ENV),\n\t\t[AWS_SECRET_ACCESS_KEY_ENV]: getDeployNowCredential(env, AWS_SECRET_ACCESS_KEY_ENV),\n\t\t[AWS_REGION_ENV]: readNonEmptyEnv(env, AWS_REGION_ENV) ?? \"\",\n\t};\n\tconst sessionToken = readNonEmptyEnv(env, AWS_SESSION_TOKEN_ENV);\n\tif (sessionToken) {\n\t\trequestEnv[AWS_SESSION_TOKEN_ENV] = sessionToken;\n\t}\n\treturn requestEnv;\n}\n\nfunction hasDeployNowBedrockBindingConfig(env: NodeJS.ProcessEnv): boolean {\n\treturn Boolean(\n\t\treadNonEmptyEnv(env, DEPLOYNOW_BEDROCK_BASE_URL_ENV) &&\n\t\t\treadNonEmptyEnv(env, AWS_REGION_ENV) &&\n\t\t\tisDeployNowProxyCredential(env[AWS_ACCESS_KEY_ID_ENV]) &&\n\t\t\tisDeployNowProxyCredential(env[AWS_SECRET_ACCESS_KEY_ENV]),\n\t);\n}\n\nfunction hasDeployNowAnthropicBindingConfig(env: NodeJS.ProcessEnv): boolean {\n\treturn Boolean(\n\t\treadNonEmptyEnv(env, DEPLOYNOW_ANTHROPIC_BASE_URL_ENV) && isDeployNowProxyCredential(env[ANTHROPIC_API_KEY_ENV]),\n\t);\n}\n\nfunction hasDeployNowOpenAiBindingConfig(env: NodeJS.ProcessEnv): boolean {\n\treturn Boolean(\n\t\treadNonEmptyEnv(env, DEPLOYNOW_OPENAI_BASE_URL_ENV) && isDeployNowProxyCredential(env[OPENAI_API_KEY_ENV]),\n\t);\n}\n\nfunction getDeployNowBedrockModelId(env: NodeJS.ProcessEnv): string | undefined {\n\treturn (\n\t\t(isForgeRuntimeBedrockProvider(env) ? readNonEmptyEnv(env, FORGE_RUNTIME_MODEL_ID_ENV) : undefined) ??\n\t\treadNonEmptyEnv(env, BEDROCK_MODEL_ID_ENV)\n\t);\n}\n\nfunction getDeployNowOpenAiModelId(env: NodeJS.ProcessEnv): string | undefined {\n\treturn (\n\t\t(getForgeRuntimeModelProvider(env) === \"openai\" ? readNonEmptyEnv(env, FORGE_RUNTIME_MODEL_ID_ENV) : undefined) ??\n\t\treadNonEmptyEnv(env, OPENAI_MODEL_ID_ENV)\n\t);\n}\n\nfunction getDeployNowAnthropicModelId(env: NodeJS.ProcessEnv): string | undefined {\n\treturn (\n\t\t(getForgeRuntimeModelProvider(env) === \"anthropic\"\n\t\t\t? readNonEmptyEnv(env, FORGE_RUNTIME_MODEL_ID_ENV)\n\t\t\t: undefined) ?? readNonEmptyEnv(env, ANTHROPIC_MODEL_ID_ENV)\n\t);\n}\n\nfunction getForgeRuntimeModelProvider(env: NodeJS.ProcessEnv): string | undefined {\n\treturn readNonEmptyEnv(env, FORGE_RUNTIME_MODEL_PROVIDER_ENV)?.toLowerCase();\n}\n\nfunction isForgeRuntimeBedrockProvider(env: NodeJS.ProcessEnv): boolean {\n\tconst runtimeProvider = getForgeRuntimeModelProvider(env);\n\treturn runtimeProvider === \"bedrock\" || runtimeProvider === AMAZON_BEDROCK_PROVIDER;\n}\n\nfunction createUnsupportedHumainSsoProvider() {\n\treturn {\n\t\tname: \"HUMAIN SSO\",\n\t\tasync login(): Promise<OAuthCredentials> {\n\t\t\tthrow new Error(HUMAIN_SSO_UNSUPPORTED_MESSAGE);\n\t\t},\n\t\tasync refreshToken(): Promise<OAuthCredentials> {\n\t\t\tthrow new Error(HUMAIN_SSO_UNSUPPORTED_MESSAGE);\n\t\t},\n\t\tgetApiKey(): string {\n\t\t\tthrow new Error(HUMAIN_SSO_UNSUPPORTED_MESSAGE);\n\t\t},\n\t};\n}\n\nfunction getHumainCodeModelIds(env: NodeJS.ProcessEnv): string[] {\n\tconst configuredModels = readCsvEnv(env, HUMAIN_CODE_MODELS_ENV);\n\tconst shorthandModels = configuredModels.length > 0 ? configuredModels : readCsvEnv(env, HC_MODELS_ENV);\n\treturn shorthandModels.length > 0 ? shorthandModels : DEFAULT_HUMAIN_CODE_MODELS;\n}\n\nfunction getHumainCodeModels(env: NodeJS.ProcessEnv): ProviderModelConfig[] {\n\treturn getHumainCodeModelIds(env).map((id) => toModelConfig(id));\n}\n\nfunction registerDeployNowBindingProviders(pi: ExtensionAPI, env: NodeJS.ProcessEnv): void {\n\tconst bedrockBaseUrl = readNonEmptyEnv(env, DEPLOYNOW_BEDROCK_BASE_URL_ENV);\n\tconst bedrockModel = getDeployNowBedrockModelId(env);\n\tif (bedrockBaseUrl && hasDeployNowBedrockBindingConfig(env)) {\n\t\tpi.registerProvider(AMAZON_BEDROCK_PROVIDER, {\n\t\t\tname: \"DeployNow Bedrock Binding\",\n\t\t\tbaseUrl: bedrockBaseUrl,\n\t\t\tapiKey: getDeployNowCredential(env, AWS_ACCESS_KEY_ID_ENV),\n\t\t\tenv: getDeployNowBedrockRequestEnv(env),\n\t\t\tapi: \"bedrock-converse-stream\",\n\t\t\t...(bedrockModel ? { models: [toModelConfig(bedrockModel, \"bedrock-converse-stream\")] } : {}),\n\t\t});\n\t}\n\n\tconst anthropicBaseUrl = readNonEmptyEnv(env, DEPLOYNOW_ANTHROPIC_BASE_URL_ENV);\n\tconst anthropicModel = getDeployNowAnthropicModelId(env);\n\tif (anthropicBaseUrl && hasDeployNowAnthropicBindingConfig(env)) {\n\t\tpi.registerProvider(ANTHROPIC_PROVIDER, {\n\t\t\tname: \"DeployNow Anthropic Binding\",\n\t\t\tbaseUrl: anthropicBaseUrl,\n\t\t\tapiKey: getDeployNowCredential(env, ANTHROPIC_API_KEY_ENV),\n\t\t\tapi: \"anthropic-messages\",\n\t\t\t...(anthropicModel ? { models: [toModelConfig(anthropicModel, \"anthropic-messages\")] } : {}),\n\t\t});\n\t}\n\n\tconst openAiBaseUrl = readNonEmptyEnv(env, DEPLOYNOW_OPENAI_BASE_URL_ENV);\n\tconst openAiModel = getDeployNowOpenAiModelId(env);\n\tif (openAiBaseUrl && hasDeployNowOpenAiBindingConfig(env)) {\n\t\tpi.registerProvider(OPENAI_PROVIDER, {\n\t\t\tname: \"DeployNow OpenAI Binding\",\n\t\t\tbaseUrl: openAiBaseUrl,\n\t\t\tapiKey: getDeployNowCredential(env, OPENAI_API_KEY_ENV),\n\t\t\tapi: \"openai-completions\",\n\t\t\t...(openAiModel ? { models: [toModelConfig(openAiModel, \"openai-completions\")] } : {}),\n\t\t});\n\t}\n}\n\nasync function registerHumainProviders(pi: ExtensionAPI, env: NodeJS.ProcessEnv): Promise<void> {\n\tconst localBaseUrl = getLocalBaseUrl(env);\n\tconst localModels = await getHumainLocalModelConfigs(env);\n\tif (localBaseUrl && localModels.length > 0) {\n\t\tpi.registerProvider(HUMAIN_LOCAL_PROVIDER, {\n\t\t\tname: \"HUMAIN Local\",\n\t\t\tbaseUrl: localBaseUrl,\n\t\t\tapiKey: getLocalApiKey(env) ?? \"local\",\n\t\t\tapi: \"openai-completions\",\n\t\t\tauthHeader: Boolean(getLocalApiKey(env)),\n\t\t\tmodels: localModels,\n\t\t});\n\t}\n\n\tconst humainCodeBaseUrl = getHumainCodeBaseUrl(env);\n\tconst humainCodeApiKey = getHumainCodeApiKey(env);\n\tif (humainCodeBaseUrl && humainCodeApiKey) {\n\t\tpi.registerProvider(HUMAIN_CODE_PROVIDER, {\n\t\t\tname: \"HUMAIN Code\",\n\t\t\tbaseUrl: humainCodeBaseUrl,\n\t\t\tapiKey: humainCodeApiKey,\n\t\t\tapi: \"openai-completions\",\n\t\t\tauthHeader: true,\n\t\t\tmodels: getHumainCodeModels(env),\n\t\t});\n\t}\n\n\tregisterDeployNowBindingProviders(pi, env);\n\n\tpi.registerProvider(HUMAIN_SSO_PROVIDER, {\n\t\tname: \"HUMAIN SSO\",\n\t\toauth: createUnsupportedHumainSsoProvider(),\n\t});\n}\n\nexport function getHumainDefaultPackageSources(): PackageSource[] {\n\treturn [];\n}\n\nexport function createHumainProviderExtensionFactory(\n\tenv: NodeJS.ProcessEnv,\n\thomeDirectory: string = homedir(),\n): ExtensionFactory {\n\treturn async (pi) => {\n\t\tawait registerHumainProviders(pi, env);\n\n\t\tpi.on(\"session_start\", (event, ctx) => {\n\t\t\tif (event.reason === \"startup\") {\n\t\t\t\tctx.ui.setTheme(\"humain-dark\");\n\t\t\t\tcleanupLegacyWorkflowTiers(getLegacyWorkflowTierPaths(homeDirectory));\n\t\t\t}\n\t\t});\n\t};\n}\n\nexport function getHumainBundledExtensionFactories(env: NodeJS.ProcessEnv): ExtensionFactory[] {\n\treturn [\n\t\tcreateHumainProviderExtensionFactory(env),\n\t\tcreateHumainWebAccessExtensionFactory(),\n\t\tcreateHumainMcpAdapterExtensionFactory(),\n\t];\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/humain/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { homedir } from \"node:os\";\nimport type { Api, OAuthCredentials } from \"@earendil-works/pi-ai\";\nimport { setBedrockProviderModule } from \"@earendil-works/pi-ai/compat\";\nimport type { ExtensionAPI, ExtensionFactory, ProviderModelConfig } from \"../core/extensions/types.ts\";\nimport type { PackageSource } from \"../core/settings-manager.ts\";\nimport { bedrockProviderModule } from \"./bedrock-provider/vendor/index.bundle.mjs\";\nimport { cleanupLegacyWorkflowTiers, getLegacyWorkflowTierPaths } from \"./legacy-workflow-tiers.ts\";\nimport { createHumainMcpAdapterExtensionFactory } from \"./mcp-adapter.ts\";\nimport { createHumainWebAccessExtensionFactory } from \"./web-access/index.ts\";\n\nexport const HUMAIN_LOCAL_PROVIDER = \"humain-local\";\nexport const HUMAIN_CODE_PROVIDER = \"humain-code\";\nexport const HUMAIN_SSO_PROVIDER = \"humain-sso\";\nexport const HUMAIN_FORGE_CWD_ENV = \"HUMAIN_TERMINAL_FORGE_CWD\";\n\nsetBedrockProviderModule(bedrockProviderModule);\n\nconst LOCAL_MODELS_ENV = \"HUMAIN_TERMINAL_LOCAL_MODELS\";\nconst LOCAL_BASE_URL_ENV = \"HUMAIN_TERMINAL_LOCAL_BASE_URL\";\nconst LEGACY_LOCAL_BASE_URL_ENV = \"HUMAIN_TERMINAL_AI_BASE_URL\";\nconst LOCAL_API_KEY_ENV = \"HUMAIN_TERMINAL_LOCAL_API_KEY\";\nconst LEGACY_LOCAL_API_KEY_ENV = \"HUMAIN_TERMINAL_AI_API_KEY\";\nconst LOCAL_DISCOVERY_TIMEOUT_ENV = \"HUMAIN_TERMINAL_LOCAL_MODELS_DISCOVERY_TIMEOUT_MS\";\nconst HC_BASE_URL_ENV = \"HUMAIN_TERMINAL_HC_BASE_URL\";\nconst HC_API_KEY_ENV = \"HUMAIN_TERMINAL_HC_API_KEY\";\nconst HC_MODELS_ENV = \"HUMAIN_TERMINAL_HC_MODELS\";\nconst HUMAIN_CODE_BASE_URL_ENV = \"HUMAIN_TERMINAL_HUMAIN_CODE_BASE_URL\";\nconst HUMAIN_CODE_API_KEY_ENV = \"HUMAIN_TERMINAL_HUMAIN_CODE_API_KEY\";\nconst HUMAIN_CODE_MODELS_ENV = \"HUMAIN_TERMINAL_HUMAIN_CODE_MODELS\";\nconst DEPLOYNOW_PROXY_SENTINEL = \"deploynow-proxy\";\nconst DEPLOYNOW_BROKER_SENTINEL = \"deploynow-broker\";\nconst DEPLOYNOW_ANTHROPIC_LEGACY_SENTINEL = \"not-a-real-key-routed-via-proxy\";\nconst DEPLOYNOW_PROXY_SENTINELS = new Set([\n\tDEPLOYNOW_PROXY_SENTINEL,\n\tDEPLOYNOW_BROKER_SENTINEL,\n\tDEPLOYNOW_ANTHROPIC_LEGACY_SENTINEL,\n]);\nconst DEPLOYNOW_BEDROCK_BASE_URL_ENV = \"ANTHROPIC_BEDROCK_BASE_URL\";\nconst DEPLOYNOW_ANTHROPIC_BASE_URL_ENV = \"ANTHROPIC_BASE_URL\";\nconst DEPLOYNOW_OPENAI_BASE_URL_ENV = \"OPENAI_BASE_URL\";\nconst AWS_REGION_ENV = \"AWS_REGION\";\nconst AWS_ACCESS_KEY_ID_ENV = \"AWS_ACCESS_KEY_ID\";\nconst AWS_SECRET_ACCESS_KEY_ENV = \"AWS_SECRET_ACCESS_KEY\";\nconst AWS_SESSION_TOKEN_ENV = \"AWS_SESSION_TOKEN\";\nconst ANTHROPIC_API_KEY_ENV = \"ANTHROPIC_API_KEY\";\nconst OPENAI_API_KEY_ENV = \"OPENAI_API_KEY\";\nconst BEDROCK_MODEL_ID_ENV = \"BEDROCK_MODEL_ID\";\nconst OPENAI_MODEL_ID_ENV = \"OPENAI_MODEL_ID\";\nconst ANTHROPIC_MODEL_ID_ENV = \"ANTHROPIC_MODEL_ID\";\nconst FORGE_RUNTIME_MODEL_PROVIDER_ENV = \"FORGE_RUNTIME_MODEL_PROVIDER\";\nconst FORGE_RUNTIME_MODEL_ID_ENV = \"FORGE_RUNTIME_MODEL_ID\";\nconst DEFAULT_LOCAL_CONTEXT_WINDOW = 128000;\nconst DEFAULT_LOCAL_MAX_TOKENS = 16384;\nconst DEFAULT_LOCAL_MODEL_COST = { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 };\nconst AMAZON_BEDROCK_PROVIDER = \"amazon-bedrock\";\nconst ANTHROPIC_PROVIDER = \"anthropic\";\nconst OPENAI_PROVIDER = \"openai\";\nconst HUMAIN_SSO_UNSUPPORTED_MESSAGE = \"HUMAIN SSO is not supported yet.\";\n\ninterface DiscoveryModelList {\n\tdata?: Array<{ id?: unknown }>;\n}\n\nconst DEFAULT_HUMAIN_CODE_MODELS = [\"humain-planning\", \"humain-code\", \"humain-review\", \"humain-long-context\"];\n\nfunction readCsvEnv(env: NodeJS.ProcessEnv, key: string): string[] {\n\tconst raw = env[key];\n\tif (!raw) return [];\n\treturn raw\n\t\t.split(\",\")\n\t\t.map((item) => item.trim())\n\t\t.filter((item) => item.length > 0);\n}\n\nfunction readNonEmptyEnv(env: NodeJS.ProcessEnv, key: string): string | undefined {\n\tconst value = env[key]?.trim();\n\treturn value ? value : undefined;\n}\n\nfunction toModelConfig(id: string, api: Api = \"openai-completions\"): ProviderModelConfig {\n\tconst config: ProviderModelConfig = {\n\t\tid,\n\t\tname: id,\n\t\tapi,\n\t\treasoning: false,\n\t\tinput: [\"text\"],\n\t\tcost: DEFAULT_LOCAL_MODEL_COST,\n\t\tcontextWindow: DEFAULT_LOCAL_CONTEXT_WINDOW,\n\t\tmaxTokens: DEFAULT_LOCAL_MAX_TOKENS,\n\t};\n\n\tif (api === \"openai-completions\") {\n\t\tconfig.compat = {\n\t\t\tsupportsStore: false,\n\t\t\tsupportsDeveloperRole: false,\n\t\t\tsupportsReasoningEffort: false,\n\t\t\tsupportsUsageInStreaming: false,\n\t\t\tmaxTokensField: \"max_tokens\",\n\t\t\tsupportsStrictMode: false,\n\t\t\tsupportsLongCacheRetention: false,\n\t\t};\n\t}\n\n\treturn config;\n}\n\nasync function discoverLocalModelIds(env: NodeJS.ProcessEnv): Promise<string[]> {\n\tconst baseUrl = getLocalBaseUrl(env);\n\tif (!baseUrl) return [];\n\tconst timeoutMs = Number(env[LOCAL_DISCOVERY_TIMEOUT_ENV] ?? \"750\");\n\tconst controller = new AbortController();\n\tconst timeout = setTimeout(() => controller.abort(), Number.isFinite(timeoutMs) && timeoutMs > 0 ? timeoutMs : 750);\n\tconst apiKey = getLocalApiKey(env);\n\ttry {\n\t\tconst response = await fetch(new URL(\"models\", baseUrl.endsWith(\"/\") ? baseUrl : `${baseUrl}/`), {\n\t\t\tsignal: controller.signal,\n\t\t\theaders: apiKey ? { Authorization: `Bearer ${apiKey}` } : undefined,\n\t\t});\n\t\tif (!response.ok) return [];\n\t\tconst payload = (await response.json()) as DiscoveryModelList;\n\t\treturn (payload.data ?? [])\n\t\t\t.map((model) => (typeof model.id === \"string\" ? model.id.trim() : \"\"))\n\t\t\t.filter((id) => id.length > 0);\n\t} catch {\n\t\treturn [];\n\t} finally {\n\t\tclearTimeout(timeout);\n\t}\n}\n\nexport async function getHumainLocalModelConfigs(env: NodeJS.ProcessEnv): Promise<ProviderModelConfig[]> {\n\tconst envModelIds = readCsvEnv(env, LOCAL_MODELS_ENV);\n\tconst modelIds = envModelIds.length > 0 ? envModelIds : await discoverLocalModelIds(env);\n\treturn [...new Set(modelIds)].map((id) => toModelConfig(id));\n}\n\nfunction getLocalBaseUrl(env: NodeJS.ProcessEnv): string | undefined {\n\treturn env[LOCAL_BASE_URL_ENV] ?? env[LEGACY_LOCAL_BASE_URL_ENV];\n}\n\nfunction getLocalApiKey(env: NodeJS.ProcessEnv): string | undefined {\n\treturn env[LOCAL_API_KEY_ENV] ?? env[LEGACY_LOCAL_API_KEY_ENV];\n}\n\nfunction getHumainCodeBaseUrl(env: NodeJS.ProcessEnv): string | undefined {\n\treturn env[HUMAIN_CODE_BASE_URL_ENV] ?? env[HC_BASE_URL_ENV];\n}\n\nfunction getHumainCodeApiKey(env: NodeJS.ProcessEnv): string | undefined {\n\treturn env[HUMAIN_CODE_API_KEY_ENV] ?? env[HC_API_KEY_ENV];\n}\n\nfunction isDeployNowProxyCredential(value: string | undefined): boolean {\n\treturn value !== undefined && DEPLOYNOW_PROXY_SENTINELS.has(value);\n}\n\nfunction getDeployNowCredential(env: NodeJS.ProcessEnv, key: string): string {\n\treturn readNonEmptyEnv(env, key) ?? DEPLOYNOW_PROXY_SENTINEL;\n}\n\nfunction getDeployNowBedrockRequestEnv(env: NodeJS.ProcessEnv): Record<string, string> {\n\tconst requestEnv: Record<string, string> = {\n\t\t[AWS_ACCESS_KEY_ID_ENV]: getDeployNowCredential(env, AWS_ACCESS_KEY_ID_ENV),\n\t\t[AWS_SECRET_ACCESS_KEY_ENV]: getDeployNowCredential(env, AWS_SECRET_ACCESS_KEY_ENV),\n\t\t[AWS_REGION_ENV]: readNonEmptyEnv(env, AWS_REGION_ENV) ?? \"\",\n\t};\n\tconst sessionToken = readNonEmptyEnv(env, AWS_SESSION_TOKEN_ENV);\n\tif (sessionToken) {\n\t\trequestEnv[AWS_SESSION_TOKEN_ENV] = sessionToken;\n\t}\n\treturn requestEnv;\n}\n\nfunction hasDeployNowBedrockBindingConfig(env: NodeJS.ProcessEnv): boolean {\n\treturn Boolean(\n\t\treadNonEmptyEnv(env, DEPLOYNOW_BEDROCK_BASE_URL_ENV) &&\n\t\t\treadNonEmptyEnv(env, AWS_REGION_ENV) &&\n\t\t\tisDeployNowProxyCredential(env[AWS_ACCESS_KEY_ID_ENV]) &&\n\t\t\tisDeployNowProxyCredential(env[AWS_SECRET_ACCESS_KEY_ENV]),\n\t);\n}\n\nfunction hasDeployNowAnthropicBindingConfig(env: NodeJS.ProcessEnv): boolean {\n\treturn Boolean(\n\t\treadNonEmptyEnv(env, DEPLOYNOW_ANTHROPIC_BASE_URL_ENV) && isDeployNowProxyCredential(env[ANTHROPIC_API_KEY_ENV]),\n\t);\n}\n\nfunction hasDeployNowOpenAiBindingConfig(env: NodeJS.ProcessEnv): boolean {\n\treturn Boolean(\n\t\treadNonEmptyEnv(env, DEPLOYNOW_OPENAI_BASE_URL_ENV) && isDeployNowProxyCredential(env[OPENAI_API_KEY_ENV]),\n\t);\n}\n\nfunction getDeployNowBedrockModelId(env: NodeJS.ProcessEnv): string | undefined {\n\treturn (\n\t\t(isForgeRuntimeBedrockProvider(env) ? readNonEmptyEnv(env, FORGE_RUNTIME_MODEL_ID_ENV) : undefined) ??\n\t\treadNonEmptyEnv(env, BEDROCK_MODEL_ID_ENV)\n\t);\n}\n\nfunction getDeployNowOpenAiModelId(env: NodeJS.ProcessEnv): string | undefined {\n\treturn (\n\t\t(getForgeRuntimeModelProvider(env) === \"openai\" ? readNonEmptyEnv(env, FORGE_RUNTIME_MODEL_ID_ENV) : undefined) ??\n\t\treadNonEmptyEnv(env, OPENAI_MODEL_ID_ENV)\n\t);\n}\n\nfunction getDeployNowAnthropicModelId(env: NodeJS.ProcessEnv): string | undefined {\n\treturn (\n\t\t(getForgeRuntimeModelProvider(env) === \"anthropic\"\n\t\t\t? readNonEmptyEnv(env, FORGE_RUNTIME_MODEL_ID_ENV)\n\t\t\t: undefined) ?? readNonEmptyEnv(env, ANTHROPIC_MODEL_ID_ENV)\n\t);\n}\n\nfunction getForgeRuntimeModelProvider(env: NodeJS.ProcessEnv): string | undefined {\n\treturn readNonEmptyEnv(env, FORGE_RUNTIME_MODEL_PROVIDER_ENV)?.toLowerCase();\n}\n\nfunction isForgeRuntimeBedrockProvider(env: NodeJS.ProcessEnv): boolean {\n\tconst runtimeProvider = getForgeRuntimeModelProvider(env);\n\treturn runtimeProvider === \"bedrock\" || runtimeProvider === AMAZON_BEDROCK_PROVIDER;\n}\n\nfunction createUnsupportedHumainSsoProvider() {\n\treturn {\n\t\tname: \"HUMAIN SSO\",\n\t\tasync login(): Promise<OAuthCredentials> {\n\t\t\tthrow new Error(HUMAIN_SSO_UNSUPPORTED_MESSAGE);\n\t\t},\n\t\tasync refreshToken(): Promise<OAuthCredentials> {\n\t\t\tthrow new Error(HUMAIN_SSO_UNSUPPORTED_MESSAGE);\n\t\t},\n\t\tgetApiKey(): string {\n\t\t\tthrow new Error(HUMAIN_SSO_UNSUPPORTED_MESSAGE);\n\t\t},\n\t};\n}\n\nfunction getHumainCodeModelIds(env: NodeJS.ProcessEnv): string[] {\n\tconst configuredModels = readCsvEnv(env, HUMAIN_CODE_MODELS_ENV);\n\tconst shorthandModels = configuredModels.length > 0 ? configuredModels : readCsvEnv(env, HC_MODELS_ENV);\n\treturn shorthandModels.length > 0 ? shorthandModels : DEFAULT_HUMAIN_CODE_MODELS;\n}\n\nfunction getHumainCodeModels(env: NodeJS.ProcessEnv): ProviderModelConfig[] {\n\treturn getHumainCodeModelIds(env).map((id) => toModelConfig(id));\n}\n\nfunction registerDeployNowBindingProviders(pi: ExtensionAPI, env: NodeJS.ProcessEnv): void {\n\tconst bedrockBaseUrl = readNonEmptyEnv(env, DEPLOYNOW_BEDROCK_BASE_URL_ENV);\n\tconst bedrockModel = getDeployNowBedrockModelId(env);\n\tif (bedrockBaseUrl && hasDeployNowBedrockBindingConfig(env)) {\n\t\tpi.registerProvider(AMAZON_BEDROCK_PROVIDER, {\n\t\t\tname: \"DeployNow Bedrock Binding\",\n\t\t\tbaseUrl: bedrockBaseUrl,\n\t\t\tapiKey: getDeployNowCredential(env, AWS_ACCESS_KEY_ID_ENV),\n\t\t\tenv: getDeployNowBedrockRequestEnv(env),\n\t\t\tapi: \"bedrock-converse-stream\",\n\t\t\t...(bedrockModel ? { models: [toModelConfig(bedrockModel, \"bedrock-converse-stream\")] } : {}),\n\t\t});\n\t}\n\n\tconst anthropicBaseUrl = readNonEmptyEnv(env, DEPLOYNOW_ANTHROPIC_BASE_URL_ENV);\n\tconst anthropicModel = getDeployNowAnthropicModelId(env);\n\tif (anthropicBaseUrl && hasDeployNowAnthropicBindingConfig(env)) {\n\t\tpi.registerProvider(ANTHROPIC_PROVIDER, {\n\t\t\tname: \"DeployNow Anthropic Binding\",\n\t\t\tbaseUrl: anthropicBaseUrl,\n\t\t\tapiKey: getDeployNowCredential(env, ANTHROPIC_API_KEY_ENV),\n\t\t\tapi: \"anthropic-messages\",\n\t\t\t...(anthropicModel ? { models: [toModelConfig(anthropicModel, \"anthropic-messages\")] } : {}),\n\t\t});\n\t}\n\n\tconst openAiBaseUrl = readNonEmptyEnv(env, DEPLOYNOW_OPENAI_BASE_URL_ENV);\n\tconst openAiModel = getDeployNowOpenAiModelId(env);\n\tif (openAiBaseUrl && hasDeployNowOpenAiBindingConfig(env)) {\n\t\tpi.registerProvider(OPENAI_PROVIDER, {\n\t\t\tname: \"DeployNow OpenAI Binding\",\n\t\t\tbaseUrl: openAiBaseUrl,\n\t\t\tapiKey: getDeployNowCredential(env, OPENAI_API_KEY_ENV),\n\t\t\tapi: \"openai-completions\",\n\t\t\t...(openAiModel ? { models: [toModelConfig(openAiModel, \"openai-completions\")] } : {}),\n\t\t});\n\t}\n}\n\nasync function registerHumainProviders(pi: ExtensionAPI, env: NodeJS.ProcessEnv): Promise<void> {\n\tconst localBaseUrl = getLocalBaseUrl(env);\n\tconst localModels = await getHumainLocalModelConfigs(env);\n\tif (localBaseUrl && localModels.length > 0) {\n\t\tpi.registerProvider(HUMAIN_LOCAL_PROVIDER, {\n\t\t\tname: \"HUMAIN Local\",\n\t\t\tbaseUrl: localBaseUrl,\n\t\t\tapiKey: getLocalApiKey(env) ?? \"local\",\n\t\t\tapi: \"openai-completions\",\n\t\t\tauthHeader: Boolean(getLocalApiKey(env)),\n\t\t\tmodels: localModels,\n\t\t});\n\t}\n\n\tconst humainCodeBaseUrl = getHumainCodeBaseUrl(env);\n\tconst humainCodeApiKey = getHumainCodeApiKey(env);\n\tif (humainCodeBaseUrl && humainCodeApiKey) {\n\t\tpi.registerProvider(HUMAIN_CODE_PROVIDER, {\n\t\t\tname: \"HUMAIN Code\",\n\t\t\tbaseUrl: humainCodeBaseUrl,\n\t\t\tapiKey: humainCodeApiKey,\n\t\t\tapi: \"openai-completions\",\n\t\t\tauthHeader: true,\n\t\t\tmodels: getHumainCodeModels(env),\n\t\t});\n\t}\n\n\tregisterDeployNowBindingProviders(pi, env);\n\n\tpi.registerProvider(HUMAIN_SSO_PROVIDER, {\n\t\tname: \"HUMAIN SSO\",\n\t\toauth: createUnsupportedHumainSsoProvider(),\n\t});\n}\n\nexport function getHumainDefaultPackageSources(): PackageSource[] {\n\treturn [];\n}\n\nexport function createHumainProviderExtensionFactory(\n\tenv: NodeJS.ProcessEnv,\n\thomeDirectory: string = homedir(),\n): ExtensionFactory {\n\treturn async (pi) => {\n\t\tawait registerHumainProviders(pi, env);\n\n\t\tpi.on(\"session_start\", (event, ctx) => {\n\t\t\tif (event.reason === \"startup\") {\n\t\t\t\tctx.ui.setTheme(\"humain-dark\");\n\t\t\t\tcleanupLegacyWorkflowTiers(getLegacyWorkflowTierPaths(homeDirectory));\n\t\t\t}\n\t\t});\n\t};\n}\n\nexport function getHumainBundledExtensionFactories(env: NodeJS.ProcessEnv): ExtensionFactory[] {\n\treturn [\n\t\tcreateHumainProviderExtensionFactory(env),\n\t\tcreateHumainWebAccessExtensionFactory(),\n\t\tcreateHumainMcpAdapterExtensionFactory(),\n\t];\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"legacy-workflow-tiers.d.ts","sourceRoot":"","sources":["../../src/humain/legacy-workflow-tiers.ts"],"names":[],"mappings":"AASA,wBAAgB,0BAA0B,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAK1E;AAuBD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAYzE","sourcesContent":["import { existsSync, readFileSync, rmSync } from \"node:fs\";\nimport { join } from \"node:path\";\n\nconst LEGACY_WORKFLOW_TIERS = {\n\tbig: \"humain-sso/humain-long-context\",\n\tmedium: \"humain-sso/humain-code\",\n\tsmall: \"humain-sso/humain-code\",\n} as const;\n\nexport function getLegacyWorkflowTierPaths(homeDirectory: string): string[] {\n\treturn [\n\t\tjoin(homeDirectory, \".pi\", \"workflows\", \"model-tiers.json\"),\n\t\tjoin(homeDirectory, \".humain-terminal\", \"workflows\", \"model-tiers.json\"),\n\t];\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction hasExactlyKeys(value: Record<string, unknown>, expectedKeys: readonly string[]): boolean {\n\tconst keys = Object.keys(value);\n\treturn keys.length === expectedKeys.length && expectedKeys.every((key) => Object.hasOwn(value, key));\n}\n\nfunction isLegacyWorkflowTiers(value: unknown): boolean {\n\tif (!isRecord(value) || !hasExactlyKeys(value, [\"tiers\"])) return false;\n\tconst tiers = value.tiers;\n\treturn (\n\t\tisRecord(tiers) &&\n\t\thasExactlyKeys(tiers, [\"small\", \"medium\", \"big\"]) &&\n\t\ttiers.small === LEGACY_WORKFLOW_TIERS.small &&\n\t\ttiers.medium === LEGACY_WORKFLOW_TIERS.medium &&\n\t\ttiers.big === LEGACY_WORKFLOW_TIERS.big\n\t);\n}\n\nexport function cleanupLegacyWorkflowTiers(paths: readonly string[]): void {\n\tfor (const path of paths) {\n\t\ttry {\n\t\t\tif (!existsSync(path)) continue;\n\t\t\tconst value: unknown = JSON.parse(readFileSync(path, \"utf-8\"));\n\t\t\tif (isLegacyWorkflowTiers(value)) {\n\t\t\t\trmSync(path);\n\t\t\t}\n\t\t} catch {\n\t\t\t// Legacy cleanup is best-effort and must never block terminal startup.\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"file":"legacy-workflow-tiers.d.ts","sourceRoot":"","sources":["../../src/humain/legacy-workflow-tiers.ts"],"names":[],"mappings":"AASA,wBAAgB,0BAA0B,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAK1E;AAuBD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAYzE"}
@@ -1 +1 @@
1
- {"version":3,"file":"legacy-workflow-tiers.js","sourceRoot":"","sources":["../../src/humain/legacy-workflow-tiers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,qBAAqB,GAAG;IAC7B,GAAG,EAAE,gCAAgC;IACrC,MAAM,EAAE,wBAAwB;IAChC,KAAK,EAAE,wBAAwB;CACtB,CAAC;AAEX,MAAM,UAAU,0BAA0B,CAAC,aAAqB,EAAY;IAC3E,OAAO;QACN,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE,kBAAkB,CAAC;QAC3D,IAAI,CAAC,aAAa,EAAE,kBAAkB,EAAE,WAAW,EAAE,kBAAkB,CAAC;KACxE,CAAC;AAAA,CACF;AAED,SAAS,QAAQ,CAAC,KAAc,EAAoC;IACnE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAAA,CAC5E;AAED,SAAS,cAAc,CAAC,KAA8B,EAAE,YAA+B,EAAW;IACjG,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,OAAO,IAAI,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;AAAA,CACrG;AAED,SAAS,qBAAqB,CAAC,KAAc,EAAW;IACvD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACxE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,OAAO,CACN,QAAQ,CAAC,KAAK,CAAC;QACf,cAAc,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QACjD,KAAK,CAAC,KAAK,KAAK,qBAAqB,CAAC,KAAK;QAC3C,KAAK,CAAC,MAAM,KAAK,qBAAqB,CAAC,MAAM;QAC7C,KAAK,CAAC,GAAG,KAAK,qBAAqB,CAAC,GAAG,CACvC,CAAC;AAAA,CACF;AAED,MAAM,UAAU,0BAA0B,CAAC,KAAwB,EAAQ;IAC1E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC;YACJ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBAAE,SAAS;YAChC,MAAM,KAAK,GAAY,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;YAC/D,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClC,MAAM,CAAC,IAAI,CAAC,CAAC;YACd,CAAC;QACF,CAAC;QAAC,MAAM,CAAC;YACR,uEAAuE;QACxE,CAAC;IACF,CAAC;AAAA,CACD","sourcesContent":["import { existsSync, readFileSync, rmSync } from \"node:fs\";\nimport { join } from \"node:path\";\n\nconst LEGACY_WORKFLOW_TIERS = {\n\tbig: \"humain-sso/humain-long-context\",\n\tmedium: \"humain-sso/humain-code\",\n\tsmall: \"humain-sso/humain-code\",\n} as const;\n\nexport function getLegacyWorkflowTierPaths(homeDirectory: string): string[] {\n\treturn [\n\t\tjoin(homeDirectory, \".pi\", \"workflows\", \"model-tiers.json\"),\n\t\tjoin(homeDirectory, \".humain-terminal\", \"workflows\", \"model-tiers.json\"),\n\t];\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction hasExactlyKeys(value: Record<string, unknown>, expectedKeys: readonly string[]): boolean {\n\tconst keys = Object.keys(value);\n\treturn keys.length === expectedKeys.length && expectedKeys.every((key) => Object.hasOwn(value, key));\n}\n\nfunction isLegacyWorkflowTiers(value: unknown): boolean {\n\tif (!isRecord(value) || !hasExactlyKeys(value, [\"tiers\"])) return false;\n\tconst tiers = value.tiers;\n\treturn (\n\t\tisRecord(tiers) &&\n\t\thasExactlyKeys(tiers, [\"small\", \"medium\", \"big\"]) &&\n\t\ttiers.small === LEGACY_WORKFLOW_TIERS.small &&\n\t\ttiers.medium === LEGACY_WORKFLOW_TIERS.medium &&\n\t\ttiers.big === LEGACY_WORKFLOW_TIERS.big\n\t);\n}\n\nexport function cleanupLegacyWorkflowTiers(paths: readonly string[]): void {\n\tfor (const path of paths) {\n\t\ttry {\n\t\t\tif (!existsSync(path)) continue;\n\t\t\tconst value: unknown = JSON.parse(readFileSync(path, \"utf-8\"));\n\t\t\tif (isLegacyWorkflowTiers(value)) {\n\t\t\t\trmSync(path);\n\t\t\t}\n\t\t} catch {\n\t\t\t// Legacy cleanup is best-effort and must never block terminal startup.\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"file":"legacy-workflow-tiers.js","sourceRoot":"","sources":["../../src/humain/legacy-workflow-tiers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,qBAAqB,GAAG;IAC7B,GAAG,EAAE,gCAAgC;IACrC,MAAM,EAAE,wBAAwB;IAChC,KAAK,EAAE,wBAAwB;CACtB,CAAC;AAEX,MAAM,UAAU,0BAA0B,CAAC,aAAqB;IAC/D,OAAO;QACN,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE,kBAAkB,CAAC;QAC3D,IAAI,CAAC,aAAa,EAAE,kBAAkB,EAAE,WAAW,EAAE,kBAAkB,CAAC;KACxE,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC/B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,cAAc,CAAC,KAA8B,EAAE,YAA+B;IACtF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,OAAO,IAAI,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;AACtG,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC5C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACxE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,OAAO,CACN,QAAQ,CAAC,KAAK,CAAC;QACf,cAAc,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QACjD,KAAK,CAAC,KAAK,KAAK,qBAAqB,CAAC,KAAK;QAC3C,KAAK,CAAC,MAAM,KAAK,qBAAqB,CAAC,MAAM;QAC7C,KAAK,CAAC,GAAG,KAAK,qBAAqB,CAAC,GAAG,CACvC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAAwB;IAClE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC;YACJ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBAAE,SAAS;YAChC,MAAM,KAAK,GAAY,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;YAC/D,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClC,MAAM,CAAC,IAAI,CAAC,CAAC;YACd,CAAC;QACF,CAAC;QAAC,MAAM,CAAC;YACR,uEAAuE;QACxE,CAAC;IACF,CAAC;AACF,CAAC","sourcesContent":["import { existsSync, readFileSync, rmSync } from \"node:fs\";\nimport { join } from \"node:path\";\n\nconst LEGACY_WORKFLOW_TIERS = {\n\tbig: \"humain-sso/humain-long-context\",\n\tmedium: \"humain-sso/humain-code\",\n\tsmall: \"humain-sso/humain-code\",\n} as const;\n\nexport function getLegacyWorkflowTierPaths(homeDirectory: string): string[] {\n\treturn [\n\t\tjoin(homeDirectory, \".pi\", \"workflows\", \"model-tiers.json\"),\n\t\tjoin(homeDirectory, \".humain-terminal\", \"workflows\", \"model-tiers.json\"),\n\t];\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction hasExactlyKeys(value: Record<string, unknown>, expectedKeys: readonly string[]): boolean {\n\tconst keys = Object.keys(value);\n\treturn keys.length === expectedKeys.length && expectedKeys.every((key) => Object.hasOwn(value, key));\n}\n\nfunction isLegacyWorkflowTiers(value: unknown): boolean {\n\tif (!isRecord(value) || !hasExactlyKeys(value, [\"tiers\"])) return false;\n\tconst tiers = value.tiers;\n\treturn (\n\t\tisRecord(tiers) &&\n\t\thasExactlyKeys(tiers, [\"small\", \"medium\", \"big\"]) &&\n\t\ttiers.small === LEGACY_WORKFLOW_TIERS.small &&\n\t\ttiers.medium === LEGACY_WORKFLOW_TIERS.medium &&\n\t\ttiers.big === LEGACY_WORKFLOW_TIERS.big\n\t);\n}\n\nexport function cleanupLegacyWorkflowTiers(paths: readonly string[]): void {\n\tfor (const path of paths) {\n\t\ttry {\n\t\t\tif (!existsSync(path)) continue;\n\t\t\tconst value: unknown = JSON.parse(readFileSync(path, \"utf-8\"));\n\t\t\tif (isLegacyWorkflowTiers(value)) {\n\t\t\t\trmSync(path);\n\t\t\t}\n\t\t} catch {\n\t\t\t// Legacy cleanup is best-effort and must never block terminal startup.\n\t\t}\n\t}\n}\n"]}
@@ -148,7 +148,7 @@
148
148
  "zod": "^3.25.0 || ^4.0.0"
149
149
  },
150
150
  "peerDependencies": {
151
- "@earendil-works/pi-ai": "^0.84.1",
151
+ "@earendil-works/pi-ai": "^0.84.2",
152
152
  "@earendil-works/pi-tui": "*",
153
153
  "typebox": "*",
154
154
  "zod": "^3.25.0 || ^4.0.0"
@@ -165,9 +165,9 @@
165
165
  }
166
166
  },
167
167
  "devDependencies": {
168
- "@earendil-works/pi-ai": "^0.84.1",
168
+ "@earendil-works/pi-ai": "^0.84.2",
169
169
  "@earendil-works/pi-coding-agent": "0.84.1",
170
- "@earendil-works/pi-tui": "^0.84.1",
170
+ "@earendil-works/pi-tui": "^0.84.2",
171
171
  "@modelcontextprotocol/conformance": "0.1.16",
172
172
  "@types/bun": "^1.0.0",
173
173
  "@types/cross-spawn": "6.0.6",
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-adapter.d.ts","sourceRoot":"","sources":["../../src/humain/mcp-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAGpE,wBAAgB,sCAAsC,IAAI,gBAAgB,CAEzE","sourcesContent":["import type { ExtensionFactory } from \"../core/extensions/types.ts\";\nimport mcpAdapter from \"./mcp-adapter/vendor/index.bundle.mjs\";\n\nexport function createHumainMcpAdapterExtensionFactory(): ExtensionFactory {\n\treturn mcpAdapter;\n}\n"]}
1
+ {"version":3,"file":"mcp-adapter.d.ts","sourceRoot":"","sources":["../../src/humain/mcp-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAGpE,wBAAgB,sCAAsC,IAAI,gBAAgB,CAEzE"}
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-adapter.js","sourceRoot":"","sources":["../../src/humain/mcp-adapter.ts"],"names":[],"mappings":"AACA,OAAO,UAAU,MAAM,uCAAuC,CAAC;AAE/D,MAAM,UAAU,sCAAsC,GAAqB;IAC1E,OAAO,UAAU,CAAC;AAAA,CAClB","sourcesContent":["import type { ExtensionFactory } from \"../core/extensions/types.ts\";\nimport mcpAdapter from \"./mcp-adapter/vendor/index.bundle.mjs\";\n\nexport function createHumainMcpAdapterExtensionFactory(): ExtensionFactory {\n\treturn mcpAdapter;\n}\n"]}
1
+ {"version":3,"file":"mcp-adapter.js","sourceRoot":"","sources":["../../src/humain/mcp-adapter.ts"],"names":[],"mappings":"AACA,OAAO,UAAU,MAAM,uCAAuC,CAAC;AAE/D,MAAM,UAAU,sCAAsC;IACrD,OAAO,UAAU,CAAC;AACnB,CAAC","sourcesContent":["import type { ExtensionFactory } from \"../core/extensions/types.ts\";\nimport mcpAdapter from \"./mcp-adapter/vendor/index.bundle.mjs\";\n\nexport function createHumainMcpAdapterExtensionFactory(): ExtensionFactory {\n\treturn mcpAdapter;\n}\n"]}