@humain/terminal 0.0.4-beta.1 → 0.0.5

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 (675) hide show
  1. package/CHANGELOG.md +26 -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 +3 -0
  221. package/dist/core/tools/subagent.d.ts.map +1 -1
  222. package/dist/core/tools/subagent.js +30 -9
  223. package/dist/core/tools/subagent.js.map +1 -1
  224. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  225. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  226. package/dist/core/tools/truncate.d.ts.map +1 -1
  227. package/dist/core/tools/truncate.js.map +1 -1
  228. package/dist/core/tools/write.d.ts.map +1 -1
  229. package/dist/core/tools/write.js +2 -1
  230. package/dist/core/tools/write.js.map +1 -1
  231. package/dist/core/trust-manager.d.ts.map +1 -1
  232. package/dist/core/trust-manager.js +0 -1
  233. package/dist/core/trust-manager.js.map +1 -1
  234. package/dist/core/usage-totals.d.ts.map +1 -1
  235. package/dist/core/usage-totals.js.map +1 -1
  236. package/dist/extensions/index.d.ts.map +1 -1
  237. package/dist/extensions/llama/client.d.ts.map +1 -1
  238. package/dist/extensions/llama/client.js +0 -2
  239. package/dist/extensions/llama/client.js.map +1 -1
  240. package/dist/extensions/llama/huggingface.d.ts.map +1 -1
  241. package/dist/extensions/llama/huggingface.js +0 -2
  242. package/dist/extensions/llama/huggingface.js.map +1 -1
  243. package/dist/extensions/llama/index.d.ts.map +1 -1
  244. package/dist/extensions/llama/index.js.map +1 -1
  245. package/dist/extensions/llama/provider.d.ts.map +1 -1
  246. package/dist/extensions/llama/provider.js.map +1 -1
  247. package/dist/extensions/llama/ui.d.ts.map +1 -1
  248. package/dist/extensions/llama/ui.js +12 -28
  249. package/dist/extensions/llama/ui.js.map +1 -1
  250. package/dist/humain/agent-execution-protocol.d.ts.map +1 -1
  251. package/dist/humain/agent-execution-protocol.js.map +1 -1
  252. package/dist/humain/agent-execution-runtime.d.ts.map +1 -1
  253. package/dist/humain/agent-execution-runtime.js.map +1 -1
  254. package/dist/humain/bedrock-provider/vendor/index.bundle.mjs +127 -7
  255. package/dist/humain/brand-logo.d.ts.map +1 -1
  256. package/dist/humain/index.d.ts.map +1 -1
  257. package/dist/humain/index.js.map +1 -1
  258. package/dist/humain/legacy-workflow-tiers.d.ts.map +1 -1
  259. package/dist/humain/legacy-workflow-tiers.js.map +1 -1
  260. package/dist/humain/mcp-adapter/vendor/package.json +3 -3
  261. package/dist/humain/mcp-adapter.d.ts.map +1 -1
  262. package/dist/humain/mcp-adapter.js.map +1 -1
  263. package/dist/humain/pi-agent-execution-host.d.ts.map +1 -1
  264. package/dist/humain/pi-agent-execution-host.js.map +1 -1
  265. package/dist/humain/web-access/host.d.ts.map +1 -1
  266. package/dist/humain/web-access/index.d.ts.map +1 -1
  267. package/dist/humain/web-access/index.js.map +1 -1
  268. package/dist/humain/web-access/vendor/activity.d.ts.map +1 -1
  269. package/dist/humain/web-access/vendor/activity.js +7 -5
  270. package/dist/humain/web-access/vendor/activity.js.map +1 -1
  271. package/dist/humain/web-access/vendor/anysearch.d.ts.map +1 -1
  272. package/dist/humain/web-access/vendor/anysearch.js.map +1 -1
  273. package/dist/humain/web-access/vendor/auth-fetch.d.ts.map +1 -1
  274. package/dist/humain/web-access/vendor/auth-fetch.js.map +1 -1
  275. package/dist/humain/web-access/vendor/bocha.d.ts.map +1 -1
  276. package/dist/humain/web-access/vendor/bocha.js.map +1 -1
  277. package/dist/humain/web-access/vendor/brave.d.ts.map +1 -1
  278. package/dist/humain/web-access/vendor/brave.js.map +1 -1
  279. package/dist/humain/web-access/vendor/brightdata-unlocker.d.ts.map +1 -1
  280. package/dist/humain/web-access/vendor/brightdata-unlocker.js.map +1 -1
  281. package/dist/humain/web-access/vendor/brightdata.d.ts.map +1 -1
  282. package/dist/humain/web-access/vendor/brightdata.js.map +1 -1
  283. package/dist/humain/web-access/vendor/chrome-cookies.d.ts.map +1 -1
  284. package/dist/humain/web-access/vendor/chrome-cookies.js +101 -19
  285. package/dist/humain/web-access/vendor/chrome-cookies.js.map +1 -1
  286. package/dist/humain/web-access/vendor/content-find.d.ts.map +1 -1
  287. package/dist/humain/web-access/vendor/content-find.js.map +1 -1
  288. package/dist/humain/web-access/vendor/credential-source.d.ts.map +1 -1
  289. package/dist/humain/web-access/vendor/credential-source.js +0 -2
  290. package/dist/humain/web-access/vendor/credential-source.js.map +1 -1
  291. package/dist/humain/web-access/vendor/curator-page.d.ts.map +1 -1
  292. package/dist/humain/web-access/vendor/curator-page.js.map +1 -1
  293. package/dist/humain/web-access/vendor/curator-server.d.ts.map +1 -1
  294. package/dist/humain/web-access/vendor/curator-server.js.map +1 -1
  295. package/dist/humain/web-access/vendor/data-uri-sanitize.d.ts +21 -0
  296. package/dist/humain/web-access/vendor/data-uri-sanitize.d.ts.map +1 -0
  297. package/dist/humain/web-access/vendor/data-uri-sanitize.js +373 -0
  298. package/dist/humain/web-access/vendor/data-uri-sanitize.js.map +1 -0
  299. package/dist/humain/web-access/vendor/datalab-pdf-extract.d.ts.map +1 -1
  300. package/dist/humain/web-access/vendor/datalab-pdf-extract.js.map +1 -1
  301. package/dist/humain/web-access/vendor/declared-web-links.d.ts.map +1 -1
  302. package/dist/humain/web-access/vendor/declared-web-links.js.map +1 -1
  303. package/dist/humain/web-access/vendor/duckduckgo.d.ts.map +1 -1
  304. package/dist/humain/web-access/vendor/duckduckgo.js.map +1 -1
  305. package/dist/humain/web-access/vendor/exa.d.ts.map +1 -1
  306. package/dist/humain/web-access/vendor/exa.js.map +1 -1
  307. package/dist/humain/web-access/vendor/extract.d.ts.map +1 -1
  308. package/dist/humain/web-access/vendor/extract.js +14 -2
  309. package/dist/humain/web-access/vendor/extract.js.map +1 -1
  310. package/dist/humain/web-access/vendor/feature-config.d.ts.map +1 -1
  311. package/dist/humain/web-access/vendor/feature-config.js.map +1 -1
  312. package/dist/humain/web-access/vendor/fetch-params.d.ts.map +1 -1
  313. package/dist/humain/web-access/vendor/fetch-params.js.map +1 -1
  314. package/dist/humain/web-access/vendor/firecrawl.d.ts.map +1 -1
  315. package/dist/humain/web-access/vendor/firecrawl.js +15 -2
  316. package/dist/humain/web-access/vendor/firecrawl.js.map +1 -1
  317. package/dist/humain/web-access/vendor/gemini-api.d.ts.map +1 -1
  318. package/dist/humain/web-access/vendor/gemini-api.js.map +1 -1
  319. package/dist/humain/web-access/vendor/gemini-pdf-extract.d.ts.map +1 -1
  320. package/dist/humain/web-access/vendor/gemini-pdf-extract.js.map +1 -1
  321. package/dist/humain/web-access/vendor/gemini-search.d.ts.map +1 -1
  322. package/dist/humain/web-access/vendor/gemini-search.js +30 -16
  323. package/dist/humain/web-access/vendor/gemini-search.js.map +1 -1
  324. package/dist/humain/web-access/vendor/gemini-url-context.d.ts.map +1 -1
  325. package/dist/humain/web-access/vendor/gemini-url-context.js.map +1 -1
  326. package/dist/humain/web-access/vendor/gemini-web-config.d.ts.map +1 -1
  327. package/dist/humain/web-access/vendor/gemini-web-config.js.map +1 -1
  328. package/dist/humain/web-access/vendor/gemini-web.d.ts.map +1 -1
  329. package/dist/humain/web-access/vendor/gemini-web.js.map +1 -1
  330. package/dist/humain/web-access/vendor/github-api.d.ts.map +1 -1
  331. package/dist/humain/web-access/vendor/github-api.js.map +1 -1
  332. package/dist/humain/web-access/vendor/github-extract.d.ts.map +1 -1
  333. package/dist/humain/web-access/vendor/github-extract.js +69 -35
  334. package/dist/humain/web-access/vendor/github-extract.js.map +1 -1
  335. package/dist/humain/web-access/vendor/index.d.ts +74 -1
  336. package/dist/humain/web-access/vendor/index.d.ts.map +1 -1
  337. package/dist/humain/web-access/vendor/index.js +38 -15
  338. package/dist/humain/web-access/vendor/index.js.map +1 -1
  339. package/dist/humain/web-access/vendor/jina-search.d.ts.map +1 -1
  340. package/dist/humain/web-access/vendor/jina-search.js.map +1 -1
  341. package/dist/humain/web-access/vendor/kagi.d.ts.map +1 -1
  342. package/dist/humain/web-access/vendor/kagi.js.map +1 -1
  343. package/dist/humain/web-access/vendor/ollama.d.ts.map +1 -1
  344. package/dist/humain/web-access/vendor/ollama.js.map +1 -1
  345. package/dist/humain/web-access/vendor/openai-search.d.ts +1 -1
  346. package/dist/humain/web-access/vendor/openai-search.d.ts.map +1 -1
  347. package/dist/humain/web-access/vendor/openai-search.js +15 -5
  348. package/dist/humain/web-access/vendor/openai-search.js.map +1 -1
  349. package/dist/humain/web-access/vendor/page-query.d.ts.map +1 -1
  350. package/dist/humain/web-access/vendor/page-query.js.map +1 -1
  351. package/dist/humain/web-access/vendor/parallel-mcp.d.ts.map +1 -1
  352. package/dist/humain/web-access/vendor/parallel-mcp.js.map +1 -1
  353. package/dist/humain/web-access/vendor/parallel.d.ts.map +1 -1
  354. package/dist/humain/web-access/vendor/parallel.js.map +1 -1
  355. package/dist/humain/web-access/vendor/pdf-extract.d.ts +1 -0
  356. package/dist/humain/web-access/vendor/pdf-extract.d.ts.map +1 -1
  357. package/dist/humain/web-access/vendor/pdf-extract.js +15 -5
  358. package/dist/humain/web-access/vendor/pdf-extract.js.map +1 -1
  359. package/dist/humain/web-access/vendor/perplexity.d.ts.map +1 -1
  360. package/dist/humain/web-access/vendor/perplexity.js.map +1 -1
  361. package/dist/humain/web-access/vendor/querit.d.ts.map +1 -1
  362. package/dist/humain/web-access/vendor/querit.js.map +1 -1
  363. package/dist/humain/web-access/vendor/query-rewrite.d.ts.map +1 -1
  364. package/dist/humain/web-access/vendor/query-rewrite.js.map +1 -1
  365. package/dist/humain/web-access/vendor/render-search-error.d.ts.map +1 -1
  366. package/dist/humain/web-access/vendor/render-search-error.js.map +1 -1
  367. package/dist/humain/web-access/vendor/rsc-extract.d.ts.map +1 -1
  368. package/dist/humain/web-access/vendor/rsc-extract.js.map +1 -1
  369. package/dist/humain/web-access/vendor/search1api.d.ts.map +1 -1
  370. package/dist/humain/web-access/vendor/search1api.js.map +1 -1
  371. package/dist/humain/web-access/vendor/searchinfinity.d.ts.map +1 -1
  372. package/dist/humain/web-access/vendor/searchinfinity.js.map +1 -1
  373. package/dist/humain/web-access/vendor/searxng.d.ts.map +1 -1
  374. package/dist/humain/web-access/vendor/searxng.js.map +1 -1
  375. package/dist/humain/web-access/vendor/serpbase.d.ts.map +1 -1
  376. package/dist/humain/web-access/vendor/serpbase.js.map +1 -1
  377. package/dist/humain/web-access/vendor/serpdive.d.ts.map +1 -1
  378. package/dist/humain/web-access/vendor/serpdive.js.map +1 -1
  379. package/dist/humain/web-access/vendor/serper.d.ts.map +1 -1
  380. package/dist/humain/web-access/vendor/serper.js.map +1 -1
  381. package/dist/humain/web-access/vendor/source-check.d.ts.map +1 -1
  382. package/dist/humain/web-access/vendor/source-check.js.map +1 -1
  383. package/dist/humain/web-access/vendor/ssrf-protection.d.ts +2 -0
  384. package/dist/humain/web-access/vendor/ssrf-protection.d.ts.map +1 -1
  385. package/dist/humain/web-access/vendor/ssrf-protection.js +11 -2
  386. package/dist/humain/web-access/vendor/ssrf-protection.js.map +1 -1
  387. package/dist/humain/web-access/vendor/storage.d.ts.map +1 -1
  388. package/dist/humain/web-access/vendor/storage.js.map +1 -1
  389. package/dist/humain/web-access/vendor/summary-model-scope.d.ts.map +1 -1
  390. package/dist/humain/web-access/vendor/summary-model-scope.js.map +1 -1
  391. package/dist/humain/web-access/vendor/summary-review.d.ts.map +1 -1
  392. package/dist/humain/web-access/vendor/summary-review.js.map +1 -1
  393. package/dist/humain/web-access/vendor/tavily.d.ts.map +1 -1
  394. package/dist/humain/web-access/vendor/tavily.js.map +1 -1
  395. package/dist/humain/web-access/vendor/tinyfish.d.ts.map +1 -1
  396. package/dist/humain/web-access/vendor/tinyfish.js.map +1 -1
  397. package/dist/humain/web-access/vendor/utils.d.ts.map +1 -1
  398. package/dist/humain/web-access/vendor/utils.js.map +1 -1
  399. package/dist/humain/web-access/vendor/valyu.d.ts.map +1 -1
  400. package/dist/humain/web-access/vendor/valyu.js.map +1 -1
  401. package/dist/humain/web-access/vendor/video-extract.d.ts.map +1 -1
  402. package/dist/humain/web-access/vendor/video-extract.js.map +1 -1
  403. package/dist/humain/web-access/vendor/xai-search.d.ts.map +1 -1
  404. package/dist/humain/web-access/vendor/xai-search.js.map +1 -1
  405. package/dist/humain/web-access/vendor/youtube-extract.d.ts.map +1 -1
  406. package/dist/humain/web-access/vendor/youtube-extract.js.map +1 -1
  407. package/dist/index.d.ts +1 -1
  408. package/dist/index.d.ts.map +1 -1
  409. package/dist/index.js.map +1 -1
  410. package/dist/main.d.ts.map +1 -1
  411. package/dist/main.js +4 -0
  412. package/dist/main.js.map +1 -1
  413. package/dist/migrations.d.ts.map +1 -1
  414. package/dist/migrations.js.map +1 -1
  415. package/dist/modes/agent-exec-mode.d.ts.map +1 -1
  416. package/dist/modes/agent-exec-mode.js.map +1 -1
  417. package/dist/modes/index.d.ts.map +1 -1
  418. package/dist/modes/interactive/components/armin.d.ts.map +1 -1
  419. package/dist/modes/interactive/components/armin.js +6 -10
  420. package/dist/modes/interactive/components/armin.js.map +1 -1
  421. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  422. package/dist/modes/interactive/components/assistant-message.js +2 -9
  423. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  424. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  425. package/dist/modes/interactive/components/bash-execution.js +4 -9
  426. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  427. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  428. package/dist/modes/interactive/components/bordered-loader.js +0 -3
  429. package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  430. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  431. package/dist/modes/interactive/components/branch-summary-message.js +1 -3
  432. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  433. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  434. package/dist/modes/interactive/components/compaction-summary-message.js +1 -3
  435. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  436. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  437. package/dist/modes/interactive/components/config-selector.js +5 -22
  438. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  439. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  440. package/dist/modes/interactive/components/countdown-timer.js +0 -5
  441. package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  442. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  443. package/dist/modes/interactive/components/custom-editor.js +1 -8
  444. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  445. package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -1
  446. package/dist/modes/interactive/components/custom-entry.js +1 -4
  447. package/dist/modes/interactive/components/custom-entry.js.map +1 -1
  448. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  449. package/dist/modes/interactive/components/custom-message.js +1 -7
  450. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  451. package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
  452. package/dist/modes/interactive/components/daxnuts.js +6 -8
  453. package/dist/modes/interactive/components/daxnuts.js.map +1 -1
  454. package/dist/modes/interactive/components/diff.d.ts.map +1 -1
  455. package/dist/modes/interactive/components/diff.js +2 -2
  456. package/dist/modes/interactive/components/diff.js.map +1 -1
  457. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
  458. package/dist/modes/interactive/components/dynamic-border.js +0 -1
  459. package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  460. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -1
  461. package/dist/modes/interactive/components/earendil-announcement.js.map +1 -1
  462. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  463. package/dist/modes/interactive/components/extension-editor.js +1 -7
  464. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  465. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  466. package/dist/modes/interactive/components/extension-input.js +2 -8
  467. package/dist/modes/interactive/components/extension-input.js.map +1 -1
  468. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  469. package/dist/modes/interactive/components/extension-selector.js +1 -9
  470. package/dist/modes/interactive/components/extension-selector.js.map +1 -1
  471. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -1
  472. package/dist/modes/interactive/components/first-time-setup.js +2 -4
  473. package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
  474. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  475. package/dist/modes/interactive/components/footer.js +1 -3
  476. package/dist/modes/interactive/components/footer.js.map +1 -1
  477. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  478. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  479. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  480. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  481. package/dist/modes/interactive/components/login-dialog.js +3 -9
  482. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  483. package/dist/modes/interactive/components/markdown-transform.d.ts.map +1 -1
  484. package/dist/modes/interactive/components/markdown-transform.js.map +1 -1
  485. package/dist/modes/interactive/components/mermaid.d.ts.map +1 -1
  486. package/dist/modes/interactive/components/mermaid.js.map +1 -1
  487. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  488. package/dist/modes/interactive/components/model-selector.js +14 -26
  489. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  490. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  491. package/dist/modes/interactive/components/oauth-selector.js +3 -11
  492. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  493. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  494. package/dist/modes/interactive/components/scoped-models-selector.js +9 -14
  495. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  496. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
  497. package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  498. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  499. package/dist/modes/interactive/components/session-selector.js +33 -57
  500. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  501. package/dist/modes/interactive/components/settings-selector.d.ts +3 -1
  502. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  503. package/dist/modes/interactive/components/settings-selector.js +10 -14
  504. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  505. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
  506. package/dist/modes/interactive/components/show-images-selector.js +0 -1
  507. package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
  508. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  509. package/dist/modes/interactive/components/skill-invocation-message.js +1 -3
  510. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  511. package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -1
  512. package/dist/modes/interactive/components/status-indicator.js +0 -2
  513. package/dist/modes/interactive/components/status-indicator.js.map +1 -1
  514. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
  515. package/dist/modes/interactive/components/theme-selector.js +0 -2
  516. package/dist/modes/interactive/components/theme-selector.js.map +1 -1
  517. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  518. package/dist/modes/interactive/components/thinking-selector.js +0 -1
  519. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  520. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  521. package/dist/modes/interactive/components/tool-execution.js +19 -25
  522. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  523. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  524. package/dist/modes/interactive/components/tree-selector.js +18 -34
  525. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  526. package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -1
  527. package/dist/modes/interactive/components/trust-selector.js +0 -6
  528. package/dist/modes/interactive/components/trust-selector.js.map +1 -1
  529. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  530. package/dist/modes/interactive/components/user-message-selector.js +3 -6
  531. package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  532. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  533. package/dist/modes/interactive/components/user-message.js +0 -4
  534. package/dist/modes/interactive/components/user-message.js.map +1 -1
  535. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
  536. package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
  537. package/dist/modes/interactive/external-editor.d.ts.map +1 -1
  538. package/dist/modes/interactive/external-editor.js.map +1 -1
  539. package/dist/modes/interactive/interactive-mode.d.ts +18 -2
  540. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  541. package/dist/modes/interactive/interactive-mode.js +147 -137
  542. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  543. package/dist/modes/interactive/model-catalog-refresh.d.ts +7 -0
  544. package/dist/modes/interactive/model-catalog-refresh.d.ts.map +1 -0
  545. package/dist/modes/interactive/model-catalog-refresh.js +36 -0
  546. package/dist/modes/interactive/model-catalog-refresh.js.map +1 -0
  547. package/dist/modes/interactive/model-search.d.ts.map +1 -1
  548. package/dist/modes/interactive/model-search.js.map +1 -1
  549. package/dist/modes/interactive/theme/dark.json +2 -0
  550. package/dist/modes/interactive/theme/light.json +2 -0
  551. package/dist/modes/interactive/theme/theme-controller.d.ts +10 -2
  552. package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
  553. package/dist/modes/interactive/theme/theme-controller.js +25 -18
  554. package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
  555. package/dist/modes/interactive/theme/theme-schema.json +9 -1
  556. package/dist/modes/interactive/theme/theme.d.ts +7 -5
  557. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  558. package/dist/modes/interactive/theme/theme.js +12 -8
  559. package/dist/modes/interactive/theme/theme.js.map +1 -1
  560. package/dist/modes/json-event.d.ts +4 -1
  561. package/dist/modes/json-event.d.ts.map +1 -1
  562. package/dist/modes/json-event.js +5 -2
  563. package/dist/modes/json-event.js.map +1 -1
  564. package/dist/modes/print-mode.d.ts.map +1 -1
  565. package/dist/modes/print-mode.js.map +1 -1
  566. package/dist/modes/rpc/jsonl.d.ts.map +1 -1
  567. package/dist/modes/rpc/jsonl.js.map +1 -1
  568. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  569. package/dist/modes/rpc/rpc-client.js +9 -10
  570. package/dist/modes/rpc/rpc-client.js.map +1 -1
  571. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  572. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  573. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  574. package/dist/package-manager-cli.d.ts.map +1 -1
  575. package/dist/package-manager-cli.js.map +1 -1
  576. package/dist/rpc-entry.d.ts.map +1 -1
  577. package/dist/rpc-entry.js.map +1 -1
  578. package/dist/server/create-harness.d.ts.map +1 -1
  579. package/dist/server/create-harness.js +2 -0
  580. package/dist/server/create-harness.js.map +1 -1
  581. package/dist/utils/abort.d.ts.map +1 -1
  582. package/dist/utils/abort.js.map +1 -1
  583. package/dist/utils/ansi.d.ts.map +1 -1
  584. package/dist/utils/ansi.js.map +1 -1
  585. package/dist/utils/changelog.d.ts.map +1 -1
  586. package/dist/utils/changelog.js.map +1 -1
  587. package/dist/utils/child-process.d.ts.map +1 -1
  588. package/dist/utils/child-process.js.map +1 -1
  589. package/dist/utils/clipboard-image.d.ts.map +1 -1
  590. package/dist/utils/clipboard-image.js +1 -1
  591. package/dist/utils/clipboard-image.js.map +1 -1
  592. package/dist/utils/clipboard-native.d.ts.map +1 -1
  593. package/dist/utils/clipboard-native.js.map +1 -1
  594. package/dist/utils/clipboard.d.ts.map +1 -1
  595. package/dist/utils/clipboard.js.map +1 -1
  596. package/dist/utils/deprecation.d.ts.map +1 -1
  597. package/dist/utils/deprecation.js.map +1 -1
  598. package/dist/utils/exif-orientation.d.ts.map +1 -1
  599. package/dist/utils/exif-orientation.js.map +1 -1
  600. package/dist/utils/frontmatter.d.ts.map +1 -1
  601. package/dist/utils/frontmatter.js.map +1 -1
  602. package/dist/utils/fs-watch.d.ts.map +1 -1
  603. package/dist/utils/fs-watch.js.map +1 -1
  604. package/dist/utils/git.d.ts.map +1 -1
  605. package/dist/utils/git.js.map +1 -1
  606. package/dist/utils/html.d.ts.map +1 -1
  607. package/dist/utils/html.js.map +1 -1
  608. package/dist/utils/image-convert.d.ts.map +1 -1
  609. package/dist/utils/image-convert.js.map +1 -1
  610. package/dist/utils/image-process.d.ts.map +1 -1
  611. package/dist/utils/image-process.js.map +1 -1
  612. package/dist/utils/image-resize-core.d.ts.map +1 -1
  613. package/dist/utils/image-resize-core.js.map +1 -1
  614. package/dist/utils/image-resize-worker.d.ts.map +1 -1
  615. package/dist/utils/image-resize-worker.js.map +1 -1
  616. package/dist/utils/image-resize.d.ts.map +1 -1
  617. package/dist/utils/image-resize.js.map +1 -1
  618. package/dist/utils/json.d.ts.map +1 -1
  619. package/dist/utils/json.js.map +1 -1
  620. package/dist/utils/management-http.d.ts.map +1 -1
  621. package/dist/utils/management-http.js.map +1 -1
  622. package/dist/utils/mime.d.ts.map +1 -1
  623. package/dist/utils/mime.js.map +1 -1
  624. package/dist/utils/open-browser.d.ts.map +1 -1
  625. package/dist/utils/open-browser.js.map +1 -1
  626. package/dist/utils/paths.d.ts.map +1 -1
  627. package/dist/utils/paths.js.map +1 -1
  628. package/dist/utils/photon.d.ts.map +1 -1
  629. package/dist/utils/photon.js.map +1 -1
  630. package/dist/utils/pi-user-agent.d.ts.map +1 -1
  631. package/dist/utils/pi-user-agent.js.map +1 -1
  632. package/dist/utils/shell.d.ts.map +1 -1
  633. package/dist/utils/shell.js.map +1 -1
  634. package/dist/utils/sleep.d.ts.map +1 -1
  635. package/dist/utils/sleep.js.map +1 -1
  636. package/dist/utils/syntax-highlight.d.ts.map +1 -1
  637. package/dist/utils/syntax-highlight.js +1 -1
  638. package/dist/utils/syntax-highlight.js.map +1 -1
  639. package/dist/utils/tool-result-images.d.ts.map +1 -1
  640. package/dist/utils/tool-result-images.js.map +1 -1
  641. package/dist/utils/tools-manager.d.ts +10 -1
  642. package/dist/utils/tools-manager.d.ts.map +1 -1
  643. package/dist/utils/tools-manager.js +14 -19
  644. package/dist/utils/tools-manager.js.map +1 -1
  645. package/dist/utils/version-check.d.ts.map +1 -1
  646. package/dist/utils/version-check.js.map +1 -1
  647. package/dist/utils/windows-self-update.d.ts.map +1 -1
  648. package/dist/utils/windows-self-update.js.map +1 -1
  649. package/docs/compaction.md +3 -3
  650. package/docs/custom-provider.md +1 -1
  651. package/docs/environment-variables.md +1 -0
  652. package/docs/extensions.md +4 -0
  653. package/docs/json.md +6 -4
  654. package/docs/keybindings.md +8 -2
  655. package/docs/rpc.md +15 -4
  656. package/docs/sdk.md +9 -0
  657. package/docs/settings.md +31 -0
  658. package/docs/terminal-setup.md +23 -2
  659. package/docs/themes.md +23 -3
  660. package/docs/tui.md +2 -2
  661. package/docs/usage.md +3 -2
  662. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  663. package/examples/extensions/custom-provider-anthropic/package.json +2 -2
  664. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  665. package/examples/extensions/gondolin/package-lock.json +2 -2
  666. package/examples/extensions/gondolin/package.json +1 -1
  667. package/examples/extensions/minimal-mode.ts +6 -6
  668. package/examples/extensions/sandbox/package-lock.json +2 -2
  669. package/examples/extensions/sandbox/package.json +2 -2
  670. package/examples/extensions/with-deps/package-lock.json +2 -2
  671. package/examples/extensions/with-deps/package.json +1 -1
  672. package/npm-shrinkwrap.json +853 -661
  673. package/package.json +33 -33
  674. package/src/humain/web-access/UPSTREAM.md +1 -1
  675. package/src/humain/web-access/upstream.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../src/extensions/llama/ui.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\ttype Component,\n\tContainer,\n\ttype Focusable,\n\tfuzzyFilter,\n\tInput,\n\ttype SelectItem,\n\tSelectList,\n\tSpacer,\n\tText,\n\ttype TUI,\n\ttruncateToWidth,\n\tvisibleWidth,\n} from \"@earendil-works/pi-tui\";\nimport type { ExtensionCommandContext } from \"../../core/extensions/types.ts\";\nimport type { KeybindingsManager } from \"../../core/keybindings.ts\";\nimport { DynamicBorder } from \"../../modes/interactive/components/dynamic-border.ts\";\nimport { keyHint } from \"../../modes/interactive/components/keybinding-hints.ts\";\nimport type { Theme } from \"../../modes/interactive/theme/theme.ts\";\nimport type { LlamaModelInfo, LlamaProgress } from \"./client.ts\";\nimport type { HuggingFaceModel } from \"./huggingface.ts\";\n\nconst DOWNLOAD_VALUE = \"\\0download\";\n\nexport type LlamaManagerAction = { type: \"model\"; model: LlamaModelInfo } | { type: \"download\" } | { type: \"close\" };\n\ninterface ProgressState extends LlamaProgress {\n\ttitle: string;\n\tmodel: string;\n}\n\nfunction contextLabel(model: LlamaModelInfo): string | undefined {\n\tconst context = model.meta?.n_ctx ?? model.meta?.n_ctx_train;\n\tif (context) return context >= 1000 ? `${Math.round(context / 1000)}k` : String(context);\n\tconst args = model.status.args ?? [];\n\tfor (let index = 0; index < args.length - 1; index++) {\n\t\tif (args[index] !== \"--ctx-size\" && args[index] !== \"-c\" && args[index] !== \"-ctx\") continue;\n\t\tconst value = Number(args[index + 1]);\n\t\tif (Number.isFinite(value) && value > 0) return value >= 1000 ? `${Math.round(value / 1000)}k` : String(value);\n\t}\n\treturn undefined;\n}\n\nfunction modelDescription(model: LlamaModelInfo): string {\n\tconst details: string[] = [];\n\tconst loaded = model.status.value === \"loaded\" || model.status.value === \"sleeping\";\n\tif (loaded) details.push(\"loaded\");\n\telse if (model.status.value !== \"unloaded\") details.push(model.status.value);\n\tconst context = loaded ? contextLabel(model) : undefined;\n\tif (context) details.push(`${context} context`);\n\treturn details.join(\" · \");\n}\n\nfunction selectTheme(theme: Theme) {\n\treturn {\n\t\tselectedPrefix: (text: string) => theme.fg(\"accent\", text),\n\t\tselectedText: (text: string) => theme.fg(\"accent\", text),\n\t\tdescription: (text: string) => theme.fg(\"muted\", text),\n\t\tscrollInfo: (text: string) => theme.fg(\"dim\", text),\n\t\tnoMatch: (text: string) => theme.fg(\"warning\", text),\n\t};\n}\n\nfunction frame(theme: Theme, title: string, body: Component[], footer?: string): Container {\n\tconst container = new Container();\n\tcontainer.addChild(new DynamicBorder((text: string) => theme.fg(\"accent\", text)));\n\tcontainer.addChild(new Text(theme.fg(\"accent\", theme.bold(title)), 1, 0));\n\tfor (const child of body) container.addChild(child);\n\tif (footer) {\n\t\tcontainer.addChild(new Spacer(1));\n\t\tcontainer.addChild(new Text(theme.fg(\"dim\", footer), 1, 0));\n\t}\n\tcontainer.addChild(new DynamicBorder((text: string) => theme.fg(\"accent\", text)));\n\treturn container;\n}\n\nexport interface LlamaUi {\n\tshowModels(serverUrl: string, models: LlamaModelInfo[]): Promise<LlamaManagerAction>;\n\tselect(title: string, options: string[]): Promise<string | undefined>;\n\tconfirm(title: string, message: string): Promise<boolean>;\n\tconnectionError(serverUrl: string, message: string): Promise<\"retry\" | \"close\">;\n\tsearchModels(\n\t\tsearch: (query: string, signal: AbortSignal) => Promise<HuggingFaceModel[]>,\n\t): Promise<string | undefined>;\n\tshowStatus(title: string, message: string): void;\n\tprogress(state: ProgressState): Promise<void>;\n\tupdateProgress(state: ProgressState): void;\n}\n\nfunction compactCount(value: number): string {\n\tif (value >= 1_000_000) return `${(value / 1_000_000).toFixed(value >= 10_000_000 ? 0 : 1)}M`;\n\tif (value >= 1_000) return `${(value / 1_000).toFixed(value >= 100_000 ? 0 : 1)}k`;\n\treturn String(value);\n}\n\nclass HuggingFaceSearch extends Container implements Focusable {\n\tprivate readonly tui: TUI;\n\tprivate readonly theme: Theme;\n\tprivate readonly keybindings: KeybindingsManager;\n\tprivate readonly search: (query: string, signal: AbortSignal) => Promise<HuggingFaceModel[]>;\n\tprivate readonly cache: Map<string, HuggingFaceModel[]>;\n\tprivate readonly onSelectModel: (model: string | undefined) => void;\n\tprivate readonly input = new Input();\n\tprivate readonly resultsContainer = new Container();\n\tprivate results: HuggingFaceModel[] = [];\n\tprivate filteredResults: HuggingFaceModel[] = [];\n\tprivate selectedIndex = 0;\n\tprivate query = \"\";\n\tprivate status = \"Type at least 2 characters\";\n\tprivate debounce: ReturnType<typeof setTimeout> | undefined;\n\tprivate request: AbortController | undefined;\n\tprivate closed = false;\n\tprivate _focused = false;\n\n\tconstructor(\n\t\ttui: TUI,\n\t\ttheme: Theme,\n\t\tkeybindings: KeybindingsManager,\n\t\tsearch: (query: string, signal: AbortSignal) => Promise<HuggingFaceModel[]>,\n\t\tcache: Map<string, HuggingFaceModel[]>,\n\t\tonSelectModel: (model: string | undefined) => void,\n\t) {\n\t\tsuper();\n\t\tthis.tui = tui;\n\t\tthis.theme = theme;\n\t\tthis.keybindings = keybindings;\n\t\tthis.search = search;\n\t\tthis.cache = cache;\n\t\tthis.onSelectModel = onSelectModel;\n\t\tthis.addChild(new Text(theme.fg(\"dim\", \"Model name or owner/repository[:quant]\"), 1, 0));\n\t\tthis.addChild(this.input);\n\t\tthis.addChild(new Spacer(1));\n\t\tthis.addChild(this.resultsContainer);\n\t\tthis.updateResults();\n\t}\n\n\tget focused(): boolean {\n\t\treturn this._focused;\n\t}\n\n\tset focused(value: boolean) {\n\t\tthis._focused = value;\n\t\tthis.input.focused = value;\n\t}\n\n\tprivate updateResults(): void {\n\t\tthis.resultsContainer.clear();\n\t\tconst maxVisible = 10;\n\t\tconst start = Math.max(\n\t\t\t0,\n\t\t\tMath.min(this.selectedIndex - Math.floor(maxVisible / 2), this.filteredResults.length - maxVisible),\n\t\t);\n\t\tconst end = Math.min(start + maxVisible, this.filteredResults.length);\n\t\tfor (let index = start; index < end; index++) {\n\t\t\tconst model = this.filteredResults[index];\n\t\t\tif (!model) continue;\n\t\t\tconst prefix = index === this.selectedIndex ? \"→ \" : \" \";\n\t\t\tconst details = `${compactCount(model.downloads)} downloads`;\n\t\t\tthis.resultsContainer.addChild(\n\t\t\t\tnew Text(\n\t\t\t\t\tindex === this.selectedIndex\n\t\t\t\t\t\t? this.theme.fg(\"accent\", `${prefix}${model.id} ${details}`)\n\t\t\t\t\t\t: `${prefix}${model.id}${this.theme.fg(\"muted\", ` ${details}`)}`,\n\t\t\t\t\t0,\n\t\t\t\t\t0,\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t\tif (start > 0 || end < this.filteredResults.length) {\n\t\t\tthis.resultsContainer.addChild(\n\t\t\t\tnew Text(this.theme.fg(\"dim\", ` (${this.selectedIndex + 1}/${this.filteredResults.length})`), 0, 0),\n\t\t\t);\n\t\t}\n\t\tif (this.filteredResults.length === 0) {\n\t\t\tthis.resultsContainer.addChild(new Text(this.theme.fg(\"dim\", ` ${this.status}`), 0, 0));\n\t\t} else if (this.status === \"Searching Hugging Face…\") {\n\t\t\tthis.resultsContainer.addChild(new Text(this.theme.fg(\"dim\", ` ${this.status}`), 0, 0));\n\t\t}\n\t\tthis.tui.requestRender();\n\t}\n\n\tprivate filterResults(): void {\n\t\tif (this.query) {\n\t\t\tconst matches = new Set(fuzzyFilter(this.results, this.query, (model) => model.id).map((model) => model.id));\n\t\t\tthis.filteredResults = this.results.filter((model) => matches.has(model.id));\n\t\t} else {\n\t\t\tthis.filteredResults = this.results;\n\t\t}\n\t\tthis.selectedIndex = Math.min(this.selectedIndex, Math.max(0, this.filteredResults.length - 1));\n\t\tthis.updateResults();\n\t}\n\n\tprivate scheduleSearch(): void {\n\t\tif (this.debounce) clearTimeout(this.debounce);\n\t\tthis.request?.abort();\n\t\tthis.request = undefined;\n\t\tif (this.query.length < 2) {\n\t\t\tthis.status = \"Type at least 2 characters\";\n\t\t\tthis.filterResults();\n\t\t\treturn;\n\t\t}\n\t\tconst cached = this.cache.get(this.query.toLowerCase());\n\t\tif (cached) {\n\t\t\tthis.results = cached;\n\t\t\tthis.status = cached.length === 0 ? \"No GGUF models found\" : \"\";\n\t\t\tthis.filterResults();\n\t\t\treturn;\n\t\t}\n\t\tthis.status = \"Searching Hugging Face…\";\n\t\tthis.filterResults();\n\t\tthis.debounce = setTimeout(() => void this.runSearch(this.query), 500);\n\t}\n\n\tprivate async runSearch(query: string): Promise<void> {\n\t\tconst request = new AbortController();\n\t\tthis.request = request;\n\t\ttry {\n\t\t\tconst results = await this.search(query, request.signal);\n\t\t\tthis.cache.set(query.toLowerCase(), results);\n\t\t\tif (this.closed || request.signal.aborted || this.query !== query) return;\n\t\t\tthis.results = results;\n\t\t\tthis.selectedIndex = 0;\n\t\t\tthis.status = results.length === 0 ? \"No GGUF models found\" : \"\";\n\t\t\tthis.filterResults();\n\t\t} catch (error) {\n\t\t\tif (this.closed || request.signal.aborted || this.query !== query) return;\n\t\t\tthis.results = [];\n\t\t\tthis.status = error instanceof Error ? error.message : String(error);\n\t\t\tthis.filterResults();\n\t\t} finally {\n\t\t\tif (this.request === request) this.request = undefined;\n\t\t}\n\t}\n\n\tprivate close(model: string | undefined): void {\n\t\tif (this.closed) return;\n\t\tthis.closed = true;\n\t\tif (this.debounce) clearTimeout(this.debounce);\n\t\tthis.request?.abort();\n\t\tthis.onSelectModel(model);\n\t}\n\n\thandleInput(data: string): void {\n\t\tif (this.keybindings.matches(data, \"tui.select.up\")) {\n\t\t\tif (this.filteredResults.length > 0) {\n\t\t\t\tthis.selectedIndex = this.selectedIndex === 0 ? this.filteredResults.length - 1 : this.selectedIndex - 1;\n\t\t\t\tthis.updateResults();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (this.keybindings.matches(data, \"tui.select.down\")) {\n\t\t\tif (this.filteredResults.length > 0) {\n\t\t\t\tthis.selectedIndex = this.selectedIndex === this.filteredResults.length - 1 ? 0 : this.selectedIndex + 1;\n\t\t\t\tthis.updateResults();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (this.keybindings.matches(data, \"tui.select.confirm\")) {\n\t\t\tconst exact = /^[^/\\s]+\\/[^:\\s]+(?::[^\\s:]+)?$/u.test(this.query) ? this.query : undefined;\n\t\t\tconst selected = exact ?? this.filteredResults[this.selectedIndex]?.id;\n\t\t\tif (selected) this.close(selected);\n\t\t\treturn;\n\t\t}\n\t\tif (this.keybindings.matches(data, \"tui.select.cancel\")) {\n\t\t\tthis.close(undefined);\n\t\t\treturn;\n\t\t}\n\t\tthis.input.handleInput(data);\n\t\tconst query = this.input.getValue().trim();\n\t\tif (query === this.query) return;\n\t\tthis.query = query;\n\t\tthis.scheduleSearch();\n\t}\n}\n\nclass LlamaView implements LlamaUi, Focusable {\n\tprivate readonly tui: TUI;\n\tprivate readonly theme: Theme;\n\tprivate readonly keybindings: KeybindingsManager;\n\tprivate readonly searchCache = new Map<string, HuggingFaceModel[]>();\n\tprivate content: Container;\n\tprivate inputHandler: { handleInput?(data: string): void } | undefined;\n\tprivate inputTarget: Focusable | undefined;\n\tprivate progressPromise: Promise<void> | undefined;\n\tprivate progressResolver: (() => void) | undefined;\n\tprivate showingProgress = false;\n\tprivate _focused = false;\n\n\tconstructor(tui: TUI, theme: Theme, keybindings: KeybindingsManager) {\n\t\tthis.tui = tui;\n\t\tthis.theme = theme;\n\t\tthis.keybindings = keybindings;\n\t\tthis.content = frame(theme, \"llama.cpp models\", [new Text(theme.fg(\"muted\", \"Loading…\"), 1, 1)]);\n\t}\n\n\tget focused(): boolean {\n\t\treturn this._focused;\n\t}\n\n\tset focused(value: boolean) {\n\t\tthis._focused = value;\n\t\tif (this.inputTarget) this.inputTarget.focused = value;\n\t}\n\n\tprivate setContent(\n\t\tcontent: Container,\n\t\tinputHandler?: { handleInput?(data: string): void },\n\t\tinputTarget?: Focusable,\n\t): void {\n\t\tif (this.inputTarget) this.inputTarget.focused = false;\n\t\tthis.progressPromise = undefined;\n\t\tthis.progressResolver = undefined;\n\t\tthis.showingProgress = false;\n\t\tthis.content = content;\n\t\tthis.inputHandler = inputHandler;\n\t\tthis.inputTarget = inputTarget;\n\t\tif (this.inputTarget) this.inputTarget.focused = this._focused;\n\t\tthis.tui.requestRender();\n\t}\n\n\tshowModels(serverUrl: string, models: LlamaModelInfo[]): Promise<LlamaManagerAction> {\n\t\tconst sorted = [...models].sort((left, right) => {\n\t\t\tconst loaded = Number(right.status.value === \"loaded\") - Number(left.status.value === \"loaded\");\n\t\t\treturn loaded || left.id.localeCompare(right.id);\n\t\t});\n\t\tconst byId = new Map(sorted.map((model) => [model.id, model]));\n\t\tconst items: SelectItem[] = [\n\t\t\t...sorted.map((model) => ({\n\t\t\t\tvalue: model.id,\n\t\t\t\tlabel: model.id,\n\t\t\t\tdescription: modelDescription(model),\n\t\t\t})),\n\t\t\t{ value: DOWNLOAD_VALUE, label: \"Download model…\", description: \"Hugging Face owner/repository[:quant]\" },\n\t\t];\n\t\treturn new Promise((resolve) => {\n\t\t\tconst list = new SelectList(items, Math.min(items.length, 12), selectTheme(this.theme), {\n\t\t\t\tminPrimaryColumnWidth: 36,\n\t\t\t\tmaxPrimaryColumnWidth: 56,\n\t\t\t});\n\t\t\tlist.onSelect = (item) => {\n\t\t\t\tif (item.value === DOWNLOAD_VALUE) resolve({ type: \"download\" });\n\t\t\t\telse {\n\t\t\t\t\tconst model = byId.get(item.value);\n\t\t\t\t\tif (model) resolve({ type: \"model\", model });\n\t\t\t\t}\n\t\t\t};\n\t\t\tlist.onCancel = () => resolve({ type: \"close\" });\n\t\t\tthis.setContent(\n\t\t\t\tframe(\n\t\t\t\t\tthis.theme,\n\t\t\t\t\t\"llama.cpp models\",\n\t\t\t\t\t[new Text(this.theme.fg(\"dim\", serverUrl), 1, 0), new Spacer(1), list],\n\t\t\t\t\t`${keyHint(\"tui.select.confirm\", \"load/unload/download\")} • ${keyHint(\"tui.select.cancel\", \"close\")}`,\n\t\t\t\t),\n\t\t\t\tlist,\n\t\t\t);\n\t\t});\n\t}\n\n\tselect(title: string, options: string[]): Promise<string | undefined> {\n\t\treturn new Promise((resolve) => {\n\t\t\tconst list = new SelectList(\n\t\t\t\toptions.map((option) => ({ value: option, label: option })),\n\t\t\t\tMath.min(options.length, 12),\n\t\t\t\tselectTheme(this.theme),\n\t\t\t);\n\t\t\tlist.onSelect = (item) => resolve(item.value);\n\t\t\tlist.onCancel = () => resolve(undefined);\n\t\t\tthis.setContent(\n\t\t\t\tframe(\n\t\t\t\t\tthis.theme,\n\t\t\t\t\ttitle,\n\t\t\t\t\t[new Spacer(1), list],\n\t\t\t\t\t`${keyHint(\"tui.select.confirm\", \"select\")} • ${keyHint(\"tui.select.cancel\", \"cancel\")}`,\n\t\t\t\t),\n\t\t\t\tlist,\n\t\t\t);\n\t\t});\n\t}\n\n\tasync confirm(title: string, message: string): Promise<boolean> {\n\t\treturn (await this.select(`${title}\\n${message}`, [\"Yes\", \"No\"])) === \"Yes\";\n\t}\n\n\tasync connectionError(serverUrl: string, message: string): Promise<\"retry\" | \"close\"> {\n\t\tconst choice = await this.select(`llama.cpp unavailable\\n${serverUrl}\\n\\n${message}`, [\"Retry\", \"Close\"]);\n\t\treturn choice === \"Retry\" ? \"retry\" : \"close\";\n\t}\n\n\tsearchModels(\n\t\tsearch: (query: string, signal: AbortSignal) => Promise<HuggingFaceModel[]>,\n\t): Promise<string | undefined> {\n\t\treturn new Promise((resolve) => {\n\t\t\tconst component = new HuggingFaceSearch(\n\t\t\t\tthis.tui,\n\t\t\t\tthis.theme,\n\t\t\t\tthis.keybindings,\n\t\t\t\tsearch,\n\t\t\t\tthis.searchCache,\n\t\t\t\tresolve,\n\t\t\t);\n\t\t\tthis.setContent(\n\t\t\t\tframe(\n\t\t\t\t\tthis.theme,\n\t\t\t\t\t\"Download model\",\n\t\t\t\t\t[new Spacer(1), component],\n\t\t\t\t\t`${keyHint(\"tui.select.confirm\", \"select\")} • ${keyHint(\"tui.select.cancel\", \"back\")}`,\n\t\t\t\t),\n\t\t\t\tcomponent,\n\t\t\t\tcomponent,\n\t\t\t);\n\t\t});\n\t}\n\n\tshowStatus(title: string, message: string): void {\n\t\tthis.setContent(frame(this.theme, title, [new Spacer(1), new Text(this.theme.fg(\"muted\", message), 1, 0)]));\n\t}\n\n\tprogress(state: ProgressState): Promise<void> {\n\t\tif (!this.progressPromise) {\n\t\t\tthis.progressPromise = new Promise((resolve) => {\n\t\t\t\tthis.progressResolver = resolve;\n\t\t\t});\n\t\t}\n\t\tthis.showingProgress = true;\n\t\tthis.updateProgress(state);\n\t\treturn this.progressPromise;\n\t}\n\n\tupdateProgress(state: ProgressState): void {\n\t\tif (!this.showingProgress) return;\n\t\tconst body = [\n\t\t\tnew Text(this.theme.fg(\"text\", state.model), 1, 0),\n\t\t\tnew Spacer(1),\n\t\t\tnew Text(this.theme.fg(\"muted\", state.message), 1, 0),\n\t\t];\n\t\tif (state.ratio !== undefined) {\n\t\t\tconst available = 40;\n\t\t\tconst filled = Math.round(Math.max(0, Math.min(1, state.ratio)) * available);\n\t\t\tbody.push(\n\t\t\t\tnew Text(\n\t\t\t\t\tthis.theme.fg(\n\t\t\t\t\t\t\"accent\",\n\t\t\t\t\t\t`${\"█\".repeat(filled)}${\"─\".repeat(available - filled)} ${Math.round(state.ratio * 100)}%`,\n\t\t\t\t\t),\n\t\t\t\t\t1,\n\t\t\t\t\t0,\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t\tif (state.detail) body.push(new Text(this.theme.fg(\"dim\", state.detail), 1, 0));\n\t\tthis.content = frame(this.theme, state.title, body, keyHint(\"tui.select.cancel\", \"stop\"));\n\t\tthis.inputHandler = undefined;\n\t\tthis.tui.requestRender();\n\t}\n\n\thandleInput(data: string): void {\n\t\tif (this.progressResolver && this.keybindings.matches(data, \"tui.select.cancel\")) {\n\t\t\tconst resolve = this.progressResolver;\n\t\t\tthis.progressPromise = undefined;\n\t\t\tthis.progressResolver = undefined;\n\t\t\tresolve();\n\t\t\treturn;\n\t\t}\n\t\tthis.inputHandler?.handleInput?.(data);\n\t\tthis.tui.requestRender();\n\t}\n\n\trender(width: number): string[] {\n\t\treturn this.content\n\t\t\t.render(width)\n\t\t\t.map((line) => (visibleWidth(line) > width ? truncateToWidth(line, width, \"\") : line));\n\t}\n\n\tinvalidate(): void {\n\t\tthis.content.invalidate();\n\t}\n}\n\nexport async function showLlamaUi(ctx: ExtensionCommandContext, run: (ui: LlamaUi) => Promise<void>): Promise<void> {\n\tawait ctx.ui.custom<void>((tui, theme, keybindings, done) => {\n\t\tconst view = new LlamaView(tui, theme, keybindings);\n\t\tvoid run(view).then(\n\t\t\t() => done(),\n\t\t\t(error: unknown) => {\n\t\t\t\tctx.ui.notify(error instanceof Error ? error.message : String(error), \"error\");\n\t\t\t\tdone();\n\t\t\t},\n\t\t);\n\t\treturn view;\n\t});\n}\n\nexport async function runWithProgress<T>(\n\tui: LlamaUi,\n\toptions: {\n\t\ttitle: string;\n\t\tmodel: string;\n\t\tinitialMessage: string;\n\t\tcancelTitle: string;\n\t\tcancelMessage: string;\n\t\trun(signal: AbortSignal, update: (progress: LlamaProgress) => void): Promise<T>;\n\t\tcancel(): Promise<void>;\n\t},\n): Promise<{ cancelled: true } | { cancelled: false; value: T }> {\n\tconst controller = new AbortController();\n\tconst state: ProgressState = { title: options.title, model: options.model, message: options.initialMessage };\n\tconst settled = options\n\t\t.run(controller.signal, (progress) => {\n\t\t\tObject.assign(state, progress);\n\t\t\tui.updateProgress(state);\n\t\t})\n\t\t.then(\n\t\t\t(value) => ({ ok: true as const, value }),\n\t\t\t(error: unknown) => ({ ok: false as const, error }),\n\t\t);\n\tlet completed = false;\n\tsettled.finally(() => {\n\t\tcompleted = true;\n\t});\n\n\twhile (!completed) {\n\t\tconst outcome = await Promise.race([\n\t\t\tsettled.then(() => \"settled\" as const),\n\t\t\tui.progress(state).then(() => \"stop\" as const),\n\t\t]);\n\t\tif (outcome === \"settled\") break;\n\t\tconst stop = await ui.confirm(options.cancelTitle, options.cancelMessage);\n\t\tif (!stop || completed) continue;\n\t\ttry {\n\t\t\tawait options.cancel();\n\t\t} finally {\n\t\t\tcontroller.abort(new Error(\"Cancelled\"));\n\t\t}\n\t\tawait settled;\n\t\treturn { cancelled: true };\n\t}\n\n\tconst result = await settled;\n\tif (!result.ok) throw result.error;\n\treturn { cancelled: false, value: result.value };\n}\n"]}
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../src/extensions/llama/ui.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,SAAS,EAET,WAAW,EACX,KAAK,EAEL,UAAU,EACV,MAAM,EACN,IAAI,EAEJ,eAAe,EACf,YAAY,GACZ,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,aAAa,EAAE,MAAM,sDAAsD,CAAC;AACrF,OAAO,EAAE,OAAO,EAAE,MAAM,wDAAwD,CAAC;AAKjF,MAAM,cAAc,GAAG,YAAY,CAAC;AASpC,SAAS,YAAY,CAAC,KAAqB;IAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC;IAC7D,IAAI,OAAO;QAAE,OAAO,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACzF,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;IACrC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QACtD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,MAAM;YAAE,SAAS;QAC7F,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;YAAE,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChH,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAqB;IAC9C,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,UAAU,CAAC;IACpF,IAAI,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC9B,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,UAAU;QAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7E,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzD,IAAI,OAAO;QAAE,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,UAAU,CAAC,CAAC;IAChD,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,WAAW,CAAC,KAAY;IAChC,OAAO;QACN,cAAc,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC;QAC1D,YAAY,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC;QACxD,WAAW,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC;QACtD,UAAU,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC;QACnD,OAAO,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC;KACpD,CAAC;AACH,CAAC;AAED,SAAS,KAAK,CAAC,KAAY,EAAE,KAAa,EAAE,IAAiB,EAAE,MAAe;IAC7E,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;IAClC,SAAS,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAClF,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1E,KAAK,MAAM,KAAK,IAAI,IAAI;QAAE,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,MAAM,EAAE,CAAC;QACZ,SAAS,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,SAAS,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAClF,OAAO,SAAS,CAAC;AAClB,CAAC;AAeD,SAAS,YAAY,CAAC,KAAa;IAClC,IAAI,KAAK,IAAI,SAAS;QAAE,OAAO,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC9F,IAAI,KAAK,IAAI,KAAK;QAAE,OAAO,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACnF,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,iBAAkB,SAAQ,SAAS;IAmBxC,YACC,GAAQ,EACR,KAAY,EACZ,WAA+B,EAC/B,MAA2E,EAC3E,KAAsC,EACtC,aAAkD;QAElD,KAAK,EAAE,CAAC;QApBQ,UAAK,GAAG,IAAI,KAAK,EAAE,CAAC;QACpB,qBAAgB,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5C,YAAO,GAAuB,EAAE,CAAC;QACjC,oBAAe,GAAuB,EAAE,CAAC;QACzC,kBAAa,GAAG,CAAC,CAAC;QAClB,UAAK,GAAG,EAAE,CAAC;QACX,WAAM,GAAG,4BAA4B,CAAC;QAGtC,WAAM,GAAG,KAAK,CAAC;QACf,aAAQ,GAAG,KAAK,CAAC;QAWxB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,wCAAwC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACzF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACrC,IAAI,CAAC,aAAa,EAAE,CAAC;IACtB,CAAC;IAED,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,IAAI,OAAO,CAAC,KAAc;QACzB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;IAC5B,CAAC;IAEO,aAAa;QACpB,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACrB,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,UAAU,CAAC,CACnG,CAAC;QACF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACtE,KAAK,IAAI,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC;YAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK;gBAAE,SAAS;YACrB,MAAM,MAAM,GAAG,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YAC1D,MAAM,OAAO,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC;YAC7D,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAC7B,IAAI,IAAI,CACP,KAAK,KAAK,IAAI,CAAC,aAAa;gBAC3B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,MAAM,GAAG,KAAK,CAAC,EAAE,KAAK,OAAO,EAAE,CAAC;gBAC7D,CAAC,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,OAAO,EAAE,CAAC,EAAE,EAClE,CAAC,EACD,CAAC,CACD,CACD,CAAC;QACH,CAAC;QACD,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;YACpD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAC7B,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACpG,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1F,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,KAAK,yBAAyB,EAAE,CAAC;YACtD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1F,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IAC1B,CAAC;IAEO,aAAa;QACpB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7G,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9E,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC;QACrC,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAChG,IAAI,CAAC,aAAa,EAAE,CAAC;IACtB,CAAC;IAEO,cAAc;QACrB,IAAI,IAAI,CAAC,QAAQ;YAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,GAAG,4BAA4B,CAAC;YAC3C,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,OAAO;QACR,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QACxD,IAAI,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;YACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,OAAO;QACR,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,yBAAyB,CAAC;QACxC,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;IACxE,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,KAAa;QACpC,MAAM,OAAO,GAAG,IAAI,eAAe,EAAE,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YACzD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC;YAC7C,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK;gBAAE,OAAO;YAC1E,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACvB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC;YACjE,IAAI,CAAC,aAAa,EAAE,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK;gBAAE,OAAO;YAC1E,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACrE,IAAI,CAAC,aAAa,EAAE,CAAC;QACtB,CAAC;gBAAS,CAAC;YACV,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO;gBAAE,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACxD,CAAC;IACF,CAAC;IAEO,KAAK,CAAC,KAAyB;QACtC,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,IAAI,CAAC,QAAQ;YAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,WAAW,CAAC,IAAY;QACvB,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE,CAAC;YACrD,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;gBACzG,IAAI,CAAC,aAAa,EAAE,CAAC;YACtB,CAAC;YACD,OAAO;QACR,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,iBAAiB,CAAC,EAAE,CAAC;YACvD,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;gBACzG,IAAI,CAAC,aAAa,EAAE,CAAC;YACtB,CAAC;YACD,OAAO;QACR,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,oBAAoB,CAAC,EAAE,CAAC;YAC1D,MAAM,KAAK,GAAG,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3F,MAAM,QAAQ,GAAG,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC;YACvE,IAAI,QAAQ;gBAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACnC,OAAO;QACR,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,mBAAmB,CAAC,EAAE,CAAC;YACzD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACtB,OAAO;QACR,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;QAC3C,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK;YAAE,OAAO;QACjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,cAAc,EAAE,CAAC;IACvB,CAAC;CACD;AAED,MAAM,SAAS;IAad,YAAY,GAAQ,EAAE,KAAY,EAAE,WAA+B;QATlD,gBAAW,GAAG,IAAI,GAAG,EAA8B,CAAC;QAM7D,oBAAe,GAAG,KAAK,CAAC;QACxB,aAAQ,GAAG,KAAK,CAAC;QAGxB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,kBAAkB,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAClG,CAAC;IAED,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,IAAI,OAAO,CAAC,KAAc;QACzB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;IACxD,CAAC;IAEO,UAAU,CACjB,OAAkB,EAClB,YAAmD,EACnD,WAAuB;QAEvB,IAAI,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;QACvD,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QACjC,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QAClC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/D,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IAC1B,CAAC;IAED,UAAU,CAAC,SAAiB,EAAE,MAAwB;QACrD,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC;YAChG,OAAO,MAAM,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAiB;YAC3B,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACzB,KAAK,EAAE,KAAK,CAAC,EAAE;gBACf,KAAK,EAAE,KAAK,CAAC,EAAE;gBACf,WAAW,EAAE,gBAAgB,CAAC,KAAK,CAAC;aACpC,CAAC,CAAC;YACH,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,uCAAuC,EAAE;SACzG,CAAC;QACF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC9B,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBACvF,qBAAqB,EAAE,EAAE;gBACzB,qBAAqB,EAAE,EAAE;aACzB,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,EAAE,EAAE;gBACxB,IAAI,IAAI,CAAC,KAAK,KAAK,cAAc;oBAAE,OAAO,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;qBAC5D,CAAC;oBACL,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACnC,IAAI,KAAK;wBAAE,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC9C,CAAC;YACF,CAAC,CAAC;YACF,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YACjD,IAAI,CAAC,UAAU,CACd,KAAK,CACJ,IAAI,CAAC,KAAK,EACV,kBAAkB,EAClB,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EACtE,GAAG,OAAO,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,MAAM,OAAO,CAAC,mBAAmB,EAAE,OAAO,CAAC,EAAE,CACrG,EACD,IAAI,CACJ,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAAa,EAAE,OAAiB;QACtC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC9B,MAAM,IAAI,GAAG,IAAI,UAAU,CAC1B,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,EAC3D,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAC5B,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CACvB,CAAC;YACF,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9C,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACzC,IAAI,CAAC,UAAU,CACd,KAAK,CACJ,IAAI,CAAC,KAAK,EACV,KAAK,EACL,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EACrB,GAAG,OAAO,CAAC,oBAAoB,EAAE,QAAQ,CAAC,MAAM,OAAO,CAAC,mBAAmB,EAAE,QAAQ,CAAC,EAAE,CACxF,EACD,IAAI,CACJ,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,OAAe;QAC3C,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,KAAK,OAAO,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,SAAiB,EAAE,OAAe;QACvD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,0BAA0B,SAAS,OAAO,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1G,OAAO,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC/C,CAAC;IAED,YAAY,CACX,MAA2E;QAE3E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC9B,MAAM,SAAS,GAAG,IAAI,iBAAiB,CACtC,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,WAAW,EAChB,MAAM,EACN,IAAI,CAAC,WAAW,EAChB,OAAO,CACP,CAAC;YACF,IAAI,CAAC,UAAU,CACd,KAAK,CACJ,IAAI,CAAC,KAAK,EACV,gBAAgB,EAChB,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,EAC1B,GAAG,OAAO,CAAC,oBAAoB,EAAE,QAAQ,CAAC,MAAM,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,EAAE,CACtF,EACD,SAAS,EACT,SAAS,CACT,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,KAAa,EAAE,OAAe;QACxC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7G,CAAC;IAED,QAAQ,CAAC,KAAoB;QAC5B,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC3B,IAAI,CAAC,eAAe,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC9C,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;YACjC,CAAC,CAAC,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC,eAAe,CAAC;IAC7B,CAAC;IAED,cAAc,CAAC,KAAoB;QAClC,IAAI,CAAC,IAAI,CAAC,eAAe;YAAE,OAAO;QAClC,MAAM,IAAI,GAAG;YACZ,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAClD,IAAI,MAAM,CAAC,CAAC,CAAC;YACb,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SACrD,CAAC;QACF,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,SAAS,GAAG,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;YAC7E,IAAI,CAAC,IAAI,CACR,IAAI,IAAI,CACP,IAAI,CAAC,KAAK,CAAC,EAAE,CACZ,QAAQ,EACR,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAC1F,EACD,CAAC,EACD,CAAC,CACD,CACD,CAAC;QACH,CAAC;QACD,IAAI,KAAK,CAAC,MAAM;YAAE,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC,CAAC;QAC1F,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAC9B,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IAC1B,CAAC;IAED,WAAW,CAAC,IAAY;QACvB,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,mBAAmB,CAAC,EAAE,CAAC;YAClF,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC;YACtC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;YACjC,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;YAClC,OAAO,EAAE,CAAC;YACV,OAAO;QACR,CAAC;QACD,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,KAAa;QACnB,OAAO,IAAI,CAAC,OAAO;aACjB,MAAM,CAAC,KAAK,CAAC;aACb,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACzF,CAAC;IAED,UAAU;QACT,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC;CACD;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAA4B,EAAE,GAAmC;IAClG,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAAO,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE;QAC3D,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;QACpD,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAClB,GAAG,EAAE,CAAC,IAAI,EAAE,EACZ,CAAC,KAAc,EAAE,EAAE;YAClB,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;YAC/E,IAAI,EAAE,CAAC;QACR,CAAC,CACD,CAAC;QACF,OAAO,IAAI,CAAC;IACb,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACpC,EAAW,EACX,OAQC;IAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAkB,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC;IAC7G,MAAM,OAAO,GAAG,OAAO;SACrB,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE;QACpC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC/B,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC,CAAC;SACD,IAAI,CACJ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAa,EAAE,KAAK,EAAE,CAAC,EACzC,CAAC,KAAc,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAc,EAAE,KAAK,EAAE,CAAC,CACnD,CAAC;IACH,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE;QACpB,SAAS,GAAG,IAAI,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,SAAS,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAkB,CAAC;YACtC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAe,CAAC;SAC9C,CAAC,CAAC;QACH,IAAI,OAAO,KAAK,SAAS;YAAE,MAAM;QACjC,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;QAC1E,IAAI,CAAC,IAAI,IAAI,SAAS;YAAE,SAAS;QACjC,IAAI,CAAC;YACJ,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;QACxB,CAAC;gBAAS,CAAC;YACV,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,MAAM,OAAO,CAAC;QACd,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;IAC7B,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,MAAM,MAAM,CAAC,KAAK,CAAC;IACnC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;AAClD,CAAC","sourcesContent":["import {\n\ttype Component,\n\tContainer,\n\ttype Focusable,\n\tfuzzyFilter,\n\tInput,\n\ttype SelectItem,\n\tSelectList,\n\tSpacer,\n\tText,\n\ttype TUI,\n\ttruncateToWidth,\n\tvisibleWidth,\n} from \"@earendil-works/pi-tui\";\nimport type { ExtensionCommandContext } from \"../../core/extensions/types.ts\";\nimport type { KeybindingsManager } from \"../../core/keybindings.ts\";\nimport { DynamicBorder } from \"../../modes/interactive/components/dynamic-border.ts\";\nimport { keyHint } from \"../../modes/interactive/components/keybinding-hints.ts\";\nimport type { Theme } from \"../../modes/interactive/theme/theme.ts\";\nimport type { LlamaModelInfo, LlamaProgress } from \"./client.ts\";\nimport type { HuggingFaceModel } from \"./huggingface.ts\";\n\nconst DOWNLOAD_VALUE = \"\\0download\";\n\nexport type LlamaManagerAction = { type: \"model\"; model: LlamaModelInfo } | { type: \"download\" } | { type: \"close\" };\n\ninterface ProgressState extends LlamaProgress {\n\ttitle: string;\n\tmodel: string;\n}\n\nfunction contextLabel(model: LlamaModelInfo): string | undefined {\n\tconst context = model.meta?.n_ctx ?? model.meta?.n_ctx_train;\n\tif (context) return context >= 1000 ? `${Math.round(context / 1000)}k` : String(context);\n\tconst args = model.status.args ?? [];\n\tfor (let index = 0; index < args.length - 1; index++) {\n\t\tif (args[index] !== \"--ctx-size\" && args[index] !== \"-c\" && args[index] !== \"-ctx\") continue;\n\t\tconst value = Number(args[index + 1]);\n\t\tif (Number.isFinite(value) && value > 0) return value >= 1000 ? `${Math.round(value / 1000)}k` : String(value);\n\t}\n\treturn undefined;\n}\n\nfunction modelDescription(model: LlamaModelInfo): string {\n\tconst details: string[] = [];\n\tconst loaded = model.status.value === \"loaded\" || model.status.value === \"sleeping\";\n\tif (loaded) details.push(\"loaded\");\n\telse if (model.status.value !== \"unloaded\") details.push(model.status.value);\n\tconst context = loaded ? contextLabel(model) : undefined;\n\tif (context) details.push(`${context} context`);\n\treturn details.join(\" · \");\n}\n\nfunction selectTheme(theme: Theme) {\n\treturn {\n\t\tselectedPrefix: (text: string) => theme.fg(\"accent\", text),\n\t\tselectedText: (text: string) => theme.fg(\"accent\", text),\n\t\tdescription: (text: string) => theme.fg(\"muted\", text),\n\t\tscrollInfo: (text: string) => theme.fg(\"dim\", text),\n\t\tnoMatch: (text: string) => theme.fg(\"warning\", text),\n\t};\n}\n\nfunction frame(theme: Theme, title: string, body: Component[], footer?: string): Container {\n\tconst container = new Container();\n\tcontainer.addChild(new DynamicBorder((text: string) => theme.fg(\"accent\", text)));\n\tcontainer.addChild(new Text(theme.fg(\"accent\", theme.bold(title)), 1, 0));\n\tfor (const child of body) container.addChild(child);\n\tif (footer) {\n\t\tcontainer.addChild(new Spacer(1));\n\t\tcontainer.addChild(new Text(theme.fg(\"dim\", footer), 1, 0));\n\t}\n\tcontainer.addChild(new DynamicBorder((text: string) => theme.fg(\"accent\", text)));\n\treturn container;\n}\n\nexport interface LlamaUi {\n\tshowModels(serverUrl: string, models: LlamaModelInfo[]): Promise<LlamaManagerAction>;\n\tselect(title: string, options: string[]): Promise<string | undefined>;\n\tconfirm(title: string, message: string): Promise<boolean>;\n\tconnectionError(serverUrl: string, message: string): Promise<\"retry\" | \"close\">;\n\tsearchModels(\n\t\tsearch: (query: string, signal: AbortSignal) => Promise<HuggingFaceModel[]>,\n\t): Promise<string | undefined>;\n\tshowStatus(title: string, message: string): void;\n\tprogress(state: ProgressState): Promise<void>;\n\tupdateProgress(state: ProgressState): void;\n}\n\nfunction compactCount(value: number): string {\n\tif (value >= 1_000_000) return `${(value / 1_000_000).toFixed(value >= 10_000_000 ? 0 : 1)}M`;\n\tif (value >= 1_000) return `${(value / 1_000).toFixed(value >= 100_000 ? 0 : 1)}k`;\n\treturn String(value);\n}\n\nclass HuggingFaceSearch extends Container implements Focusable {\n\tprivate readonly tui: TUI;\n\tprivate readonly theme: Theme;\n\tprivate readonly keybindings: KeybindingsManager;\n\tprivate readonly search: (query: string, signal: AbortSignal) => Promise<HuggingFaceModel[]>;\n\tprivate readonly cache: Map<string, HuggingFaceModel[]>;\n\tprivate readonly onSelectModel: (model: string | undefined) => void;\n\tprivate readonly input = new Input();\n\tprivate readonly resultsContainer = new Container();\n\tprivate results: HuggingFaceModel[] = [];\n\tprivate filteredResults: HuggingFaceModel[] = [];\n\tprivate selectedIndex = 0;\n\tprivate query = \"\";\n\tprivate status = \"Type at least 2 characters\";\n\tprivate debounce: ReturnType<typeof setTimeout> | undefined;\n\tprivate request: AbortController | undefined;\n\tprivate closed = false;\n\tprivate _focused = false;\n\n\tconstructor(\n\t\ttui: TUI,\n\t\ttheme: Theme,\n\t\tkeybindings: KeybindingsManager,\n\t\tsearch: (query: string, signal: AbortSignal) => Promise<HuggingFaceModel[]>,\n\t\tcache: Map<string, HuggingFaceModel[]>,\n\t\tonSelectModel: (model: string | undefined) => void,\n\t) {\n\t\tsuper();\n\t\tthis.tui = tui;\n\t\tthis.theme = theme;\n\t\tthis.keybindings = keybindings;\n\t\tthis.search = search;\n\t\tthis.cache = cache;\n\t\tthis.onSelectModel = onSelectModel;\n\t\tthis.addChild(new Text(theme.fg(\"dim\", \"Model name or owner/repository[:quant]\"), 1, 0));\n\t\tthis.addChild(this.input);\n\t\tthis.addChild(new Spacer(1));\n\t\tthis.addChild(this.resultsContainer);\n\t\tthis.updateResults();\n\t}\n\n\tget focused(): boolean {\n\t\treturn this._focused;\n\t}\n\n\tset focused(value: boolean) {\n\t\tthis._focused = value;\n\t\tthis.input.focused = value;\n\t}\n\n\tprivate updateResults(): void {\n\t\tthis.resultsContainer.clear();\n\t\tconst maxVisible = 10;\n\t\tconst start = Math.max(\n\t\t\t0,\n\t\t\tMath.min(this.selectedIndex - Math.floor(maxVisible / 2), this.filteredResults.length - maxVisible),\n\t\t);\n\t\tconst end = Math.min(start + maxVisible, this.filteredResults.length);\n\t\tfor (let index = start; index < end; index++) {\n\t\t\tconst model = this.filteredResults[index];\n\t\t\tif (!model) continue;\n\t\t\tconst prefix = index === this.selectedIndex ? \"→ \" : \" \";\n\t\t\tconst details = `${compactCount(model.downloads)} downloads`;\n\t\t\tthis.resultsContainer.addChild(\n\t\t\t\tnew Text(\n\t\t\t\t\tindex === this.selectedIndex\n\t\t\t\t\t\t? this.theme.fg(\"accent\", `${prefix}${model.id} ${details}`)\n\t\t\t\t\t\t: `${prefix}${model.id}${this.theme.fg(\"muted\", ` ${details}`)}`,\n\t\t\t\t\t0,\n\t\t\t\t\t0,\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t\tif (start > 0 || end < this.filteredResults.length) {\n\t\t\tthis.resultsContainer.addChild(\n\t\t\t\tnew Text(this.theme.fg(\"dim\", ` (${this.selectedIndex + 1}/${this.filteredResults.length})`), 0, 0),\n\t\t\t);\n\t\t}\n\t\tif (this.filteredResults.length === 0) {\n\t\t\tthis.resultsContainer.addChild(new Text(this.theme.fg(\"dim\", ` ${this.status}`), 0, 0));\n\t\t} else if (this.status === \"Searching Hugging Face…\") {\n\t\t\tthis.resultsContainer.addChild(new Text(this.theme.fg(\"dim\", ` ${this.status}`), 0, 0));\n\t\t}\n\t\tthis.tui.requestRender();\n\t}\n\n\tprivate filterResults(): void {\n\t\tif (this.query) {\n\t\t\tconst matches = new Set(fuzzyFilter(this.results, this.query, (model) => model.id).map((model) => model.id));\n\t\t\tthis.filteredResults = this.results.filter((model) => matches.has(model.id));\n\t\t} else {\n\t\t\tthis.filteredResults = this.results;\n\t\t}\n\t\tthis.selectedIndex = Math.min(this.selectedIndex, Math.max(0, this.filteredResults.length - 1));\n\t\tthis.updateResults();\n\t}\n\n\tprivate scheduleSearch(): void {\n\t\tif (this.debounce) clearTimeout(this.debounce);\n\t\tthis.request?.abort();\n\t\tthis.request = undefined;\n\t\tif (this.query.length < 2) {\n\t\t\tthis.status = \"Type at least 2 characters\";\n\t\t\tthis.filterResults();\n\t\t\treturn;\n\t\t}\n\t\tconst cached = this.cache.get(this.query.toLowerCase());\n\t\tif (cached) {\n\t\t\tthis.results = cached;\n\t\t\tthis.status = cached.length === 0 ? \"No GGUF models found\" : \"\";\n\t\t\tthis.filterResults();\n\t\t\treturn;\n\t\t}\n\t\tthis.status = \"Searching Hugging Face…\";\n\t\tthis.filterResults();\n\t\tthis.debounce = setTimeout(() => void this.runSearch(this.query), 500);\n\t}\n\n\tprivate async runSearch(query: string): Promise<void> {\n\t\tconst request = new AbortController();\n\t\tthis.request = request;\n\t\ttry {\n\t\t\tconst results = await this.search(query, request.signal);\n\t\t\tthis.cache.set(query.toLowerCase(), results);\n\t\t\tif (this.closed || request.signal.aborted || this.query !== query) return;\n\t\t\tthis.results = results;\n\t\t\tthis.selectedIndex = 0;\n\t\t\tthis.status = results.length === 0 ? \"No GGUF models found\" : \"\";\n\t\t\tthis.filterResults();\n\t\t} catch (error) {\n\t\t\tif (this.closed || request.signal.aborted || this.query !== query) return;\n\t\t\tthis.results = [];\n\t\t\tthis.status = error instanceof Error ? error.message : String(error);\n\t\t\tthis.filterResults();\n\t\t} finally {\n\t\t\tif (this.request === request) this.request = undefined;\n\t\t}\n\t}\n\n\tprivate close(model: string | undefined): void {\n\t\tif (this.closed) return;\n\t\tthis.closed = true;\n\t\tif (this.debounce) clearTimeout(this.debounce);\n\t\tthis.request?.abort();\n\t\tthis.onSelectModel(model);\n\t}\n\n\thandleInput(data: string): void {\n\t\tif (this.keybindings.matches(data, \"tui.select.up\")) {\n\t\t\tif (this.filteredResults.length > 0) {\n\t\t\t\tthis.selectedIndex = this.selectedIndex === 0 ? this.filteredResults.length - 1 : this.selectedIndex - 1;\n\t\t\t\tthis.updateResults();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (this.keybindings.matches(data, \"tui.select.down\")) {\n\t\t\tif (this.filteredResults.length > 0) {\n\t\t\t\tthis.selectedIndex = this.selectedIndex === this.filteredResults.length - 1 ? 0 : this.selectedIndex + 1;\n\t\t\t\tthis.updateResults();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (this.keybindings.matches(data, \"tui.select.confirm\")) {\n\t\t\tconst exact = /^[^/\\s]+\\/[^:\\s]+(?::[^\\s:]+)?$/u.test(this.query) ? this.query : undefined;\n\t\t\tconst selected = exact ?? this.filteredResults[this.selectedIndex]?.id;\n\t\t\tif (selected) this.close(selected);\n\t\t\treturn;\n\t\t}\n\t\tif (this.keybindings.matches(data, \"tui.select.cancel\")) {\n\t\t\tthis.close(undefined);\n\t\t\treturn;\n\t\t}\n\t\tthis.input.handleInput(data);\n\t\tconst query = this.input.getValue().trim();\n\t\tif (query === this.query) return;\n\t\tthis.query = query;\n\t\tthis.scheduleSearch();\n\t}\n}\n\nclass LlamaView implements LlamaUi, Focusable {\n\tprivate readonly tui: TUI;\n\tprivate readonly theme: Theme;\n\tprivate readonly keybindings: KeybindingsManager;\n\tprivate readonly searchCache = new Map<string, HuggingFaceModel[]>();\n\tprivate content: Container;\n\tprivate inputHandler: { handleInput?(data: string): void } | undefined;\n\tprivate inputTarget: Focusable | undefined;\n\tprivate progressPromise: Promise<void> | undefined;\n\tprivate progressResolver: (() => void) | undefined;\n\tprivate showingProgress = false;\n\tprivate _focused = false;\n\n\tconstructor(tui: TUI, theme: Theme, keybindings: KeybindingsManager) {\n\t\tthis.tui = tui;\n\t\tthis.theme = theme;\n\t\tthis.keybindings = keybindings;\n\t\tthis.content = frame(theme, \"llama.cpp models\", [new Text(theme.fg(\"muted\", \"Loading…\"), 1, 1)]);\n\t}\n\n\tget focused(): boolean {\n\t\treturn this._focused;\n\t}\n\n\tset focused(value: boolean) {\n\t\tthis._focused = value;\n\t\tif (this.inputTarget) this.inputTarget.focused = value;\n\t}\n\n\tprivate setContent(\n\t\tcontent: Container,\n\t\tinputHandler?: { handleInput?(data: string): void },\n\t\tinputTarget?: Focusable,\n\t): void {\n\t\tif (this.inputTarget) this.inputTarget.focused = false;\n\t\tthis.progressPromise = undefined;\n\t\tthis.progressResolver = undefined;\n\t\tthis.showingProgress = false;\n\t\tthis.content = content;\n\t\tthis.inputHandler = inputHandler;\n\t\tthis.inputTarget = inputTarget;\n\t\tif (this.inputTarget) this.inputTarget.focused = this._focused;\n\t\tthis.tui.requestRender();\n\t}\n\n\tshowModels(serverUrl: string, models: LlamaModelInfo[]): Promise<LlamaManagerAction> {\n\t\tconst sorted = [...models].sort((left, right) => {\n\t\t\tconst loaded = Number(right.status.value === \"loaded\") - Number(left.status.value === \"loaded\");\n\t\t\treturn loaded || left.id.localeCompare(right.id);\n\t\t});\n\t\tconst byId = new Map(sorted.map((model) => [model.id, model]));\n\t\tconst items: SelectItem[] = [\n\t\t\t...sorted.map((model) => ({\n\t\t\t\tvalue: model.id,\n\t\t\t\tlabel: model.id,\n\t\t\t\tdescription: modelDescription(model),\n\t\t\t})),\n\t\t\t{ value: DOWNLOAD_VALUE, label: \"Download model…\", description: \"Hugging Face owner/repository[:quant]\" },\n\t\t];\n\t\treturn new Promise((resolve) => {\n\t\t\tconst list = new SelectList(items, Math.min(items.length, 12), selectTheme(this.theme), {\n\t\t\t\tminPrimaryColumnWidth: 36,\n\t\t\t\tmaxPrimaryColumnWidth: 56,\n\t\t\t});\n\t\t\tlist.onSelect = (item) => {\n\t\t\t\tif (item.value === DOWNLOAD_VALUE) resolve({ type: \"download\" });\n\t\t\t\telse {\n\t\t\t\t\tconst model = byId.get(item.value);\n\t\t\t\t\tif (model) resolve({ type: \"model\", model });\n\t\t\t\t}\n\t\t\t};\n\t\t\tlist.onCancel = () => resolve({ type: \"close\" });\n\t\t\tthis.setContent(\n\t\t\t\tframe(\n\t\t\t\t\tthis.theme,\n\t\t\t\t\t\"llama.cpp models\",\n\t\t\t\t\t[new Text(this.theme.fg(\"dim\", serverUrl), 1, 0), new Spacer(1), list],\n\t\t\t\t\t`${keyHint(\"tui.select.confirm\", \"load/unload/download\")} • ${keyHint(\"tui.select.cancel\", \"close\")}`,\n\t\t\t\t),\n\t\t\t\tlist,\n\t\t\t);\n\t\t});\n\t}\n\n\tselect(title: string, options: string[]): Promise<string | undefined> {\n\t\treturn new Promise((resolve) => {\n\t\t\tconst list = new SelectList(\n\t\t\t\toptions.map((option) => ({ value: option, label: option })),\n\t\t\t\tMath.min(options.length, 12),\n\t\t\t\tselectTheme(this.theme),\n\t\t\t);\n\t\t\tlist.onSelect = (item) => resolve(item.value);\n\t\t\tlist.onCancel = () => resolve(undefined);\n\t\t\tthis.setContent(\n\t\t\t\tframe(\n\t\t\t\t\tthis.theme,\n\t\t\t\t\ttitle,\n\t\t\t\t\t[new Spacer(1), list],\n\t\t\t\t\t`${keyHint(\"tui.select.confirm\", \"select\")} • ${keyHint(\"tui.select.cancel\", \"cancel\")}`,\n\t\t\t\t),\n\t\t\t\tlist,\n\t\t\t);\n\t\t});\n\t}\n\n\tasync confirm(title: string, message: string): Promise<boolean> {\n\t\treturn (await this.select(`${title}\\n${message}`, [\"Yes\", \"No\"])) === \"Yes\";\n\t}\n\n\tasync connectionError(serverUrl: string, message: string): Promise<\"retry\" | \"close\"> {\n\t\tconst choice = await this.select(`llama.cpp unavailable\\n${serverUrl}\\n\\n${message}`, [\"Retry\", \"Close\"]);\n\t\treturn choice === \"Retry\" ? \"retry\" : \"close\";\n\t}\n\n\tsearchModels(\n\t\tsearch: (query: string, signal: AbortSignal) => Promise<HuggingFaceModel[]>,\n\t): Promise<string | undefined> {\n\t\treturn new Promise((resolve) => {\n\t\t\tconst component = new HuggingFaceSearch(\n\t\t\t\tthis.tui,\n\t\t\t\tthis.theme,\n\t\t\t\tthis.keybindings,\n\t\t\t\tsearch,\n\t\t\t\tthis.searchCache,\n\t\t\t\tresolve,\n\t\t\t);\n\t\t\tthis.setContent(\n\t\t\t\tframe(\n\t\t\t\t\tthis.theme,\n\t\t\t\t\t\"Download model\",\n\t\t\t\t\t[new Spacer(1), component],\n\t\t\t\t\t`${keyHint(\"tui.select.confirm\", \"select\")} • ${keyHint(\"tui.select.cancel\", \"back\")}`,\n\t\t\t\t),\n\t\t\t\tcomponent,\n\t\t\t\tcomponent,\n\t\t\t);\n\t\t});\n\t}\n\n\tshowStatus(title: string, message: string): void {\n\t\tthis.setContent(frame(this.theme, title, [new Spacer(1), new Text(this.theme.fg(\"muted\", message), 1, 0)]));\n\t}\n\n\tprogress(state: ProgressState): Promise<void> {\n\t\tif (!this.progressPromise) {\n\t\t\tthis.progressPromise = new Promise((resolve) => {\n\t\t\t\tthis.progressResolver = resolve;\n\t\t\t});\n\t\t}\n\t\tthis.showingProgress = true;\n\t\tthis.updateProgress(state);\n\t\treturn this.progressPromise;\n\t}\n\n\tupdateProgress(state: ProgressState): void {\n\t\tif (!this.showingProgress) return;\n\t\tconst body = [\n\t\t\tnew Text(this.theme.fg(\"text\", state.model), 1, 0),\n\t\t\tnew Spacer(1),\n\t\t\tnew Text(this.theme.fg(\"muted\", state.message), 1, 0),\n\t\t];\n\t\tif (state.ratio !== undefined) {\n\t\t\tconst available = 40;\n\t\t\tconst filled = Math.round(Math.max(0, Math.min(1, state.ratio)) * available);\n\t\t\tbody.push(\n\t\t\t\tnew Text(\n\t\t\t\t\tthis.theme.fg(\n\t\t\t\t\t\t\"accent\",\n\t\t\t\t\t\t`${\"█\".repeat(filled)}${\"─\".repeat(available - filled)} ${Math.round(state.ratio * 100)}%`,\n\t\t\t\t\t),\n\t\t\t\t\t1,\n\t\t\t\t\t0,\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t\tif (state.detail) body.push(new Text(this.theme.fg(\"dim\", state.detail), 1, 0));\n\t\tthis.content = frame(this.theme, state.title, body, keyHint(\"tui.select.cancel\", \"stop\"));\n\t\tthis.inputHandler = undefined;\n\t\tthis.tui.requestRender();\n\t}\n\n\thandleInput(data: string): void {\n\t\tif (this.progressResolver && this.keybindings.matches(data, \"tui.select.cancel\")) {\n\t\t\tconst resolve = this.progressResolver;\n\t\t\tthis.progressPromise = undefined;\n\t\t\tthis.progressResolver = undefined;\n\t\t\tresolve();\n\t\t\treturn;\n\t\t}\n\t\tthis.inputHandler?.handleInput?.(data);\n\t\tthis.tui.requestRender();\n\t}\n\n\trender(width: number): string[] {\n\t\treturn this.content\n\t\t\t.render(width)\n\t\t\t.map((line) => (visibleWidth(line) > width ? truncateToWidth(line, width, \"\") : line));\n\t}\n\n\tinvalidate(): void {\n\t\tthis.content.invalidate();\n\t}\n}\n\nexport async function showLlamaUi(ctx: ExtensionCommandContext, run: (ui: LlamaUi) => Promise<void>): Promise<void> {\n\tawait ctx.ui.custom<void>((tui, theme, keybindings, done) => {\n\t\tconst view = new LlamaView(tui, theme, keybindings);\n\t\tvoid run(view).then(\n\t\t\t() => done(),\n\t\t\t(error: unknown) => {\n\t\t\t\tctx.ui.notify(error instanceof Error ? error.message : String(error), \"error\");\n\t\t\t\tdone();\n\t\t\t},\n\t\t);\n\t\treturn view;\n\t});\n}\n\nexport async function runWithProgress<T>(\n\tui: LlamaUi,\n\toptions: {\n\t\ttitle: string;\n\t\tmodel: string;\n\t\tinitialMessage: string;\n\t\tcancelTitle: string;\n\t\tcancelMessage: string;\n\t\trun(signal: AbortSignal, update: (progress: LlamaProgress) => void): Promise<T>;\n\t\tcancel(): Promise<void>;\n\t},\n): Promise<{ cancelled: true } | { cancelled: false; value: T }> {\n\tconst controller = new AbortController();\n\tconst state: ProgressState = { title: options.title, model: options.model, message: options.initialMessage };\n\tconst settled = options\n\t\t.run(controller.signal, (progress) => {\n\t\t\tObject.assign(state, progress);\n\t\t\tui.updateProgress(state);\n\t\t})\n\t\t.then(\n\t\t\t(value) => ({ ok: true as const, value }),\n\t\t\t(error: unknown) => ({ ok: false as const, error }),\n\t\t);\n\tlet completed = false;\n\tsettled.finally(() => {\n\t\tcompleted = true;\n\t});\n\n\twhile (!completed) {\n\t\tconst outcome = await Promise.race([\n\t\t\tsettled.then(() => \"settled\" as const),\n\t\t\tui.progress(state).then(() => \"stop\" as const),\n\t\t]);\n\t\tif (outcome === \"settled\") break;\n\t\tconst stop = await ui.confirm(options.cancelTitle, options.cancelMessage);\n\t\tif (!stop || completed) continue;\n\t\ttry {\n\t\t\tawait options.cancel();\n\t\t} finally {\n\t\t\tcontroller.abort(new Error(\"Cancelled\"));\n\t\t}\n\t\tawait settled;\n\t\treturn { cancelled: true };\n\t}\n\n\tconst result = await settled;\n\tif (!result.ok) throw result.error;\n\treturn { cancelled: false, value: result.value };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"agent-execution-protocol.d.ts","sourceRoot":"","sources":["../../src/humain/agent-execution-protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAG5C,eAAO,MAAM,qCAAqC,GAAa,CAAC;AAchE,eAAO,MAAM,yBAAyB,8GAIpC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE3E,eAAO,MAAM,yBAAyB;;;;;EAUpC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE3E,eAAO,MAAM,kCAAkC;;;;;EAK7C,CAAC;AACH,MAAM,MAAM,4BAA4B,GAAG,MAAM,CAAC,OAAO,kCAAkC,CAAC,CAAC;AAE7F,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;EAY1C,CAAC;AACH,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAEvF,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAO5C,CAAC;AACH,MAAM,MAAM,2BAA2B,GAAG,MAAM,CAAC,OAAO,iCAAiC,CAAC,CAAC;AAE3F,eAAO,MAAM,sBAAsB;;;;;;;;IASjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAErE,eAAO,MAAM,oCAAoC,kOASvC,CAAC;AACX,MAAM,MAAM,+BAA+B,GAAG,CAAC,OAAO,oCAAoC,CAAC,CAAC,MAAM,CAAC,CAAC;AAqBpG,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsB5C,CAAC;AACH,MAAM,MAAM,2BAA2B,GAAG,MAAM,CAAC,OAAO,iCAAiC,CAAC,CAAC;AAE3F,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQ7C,CAAC;AACH,MAAM,MAAM,4BAA4B,GAAG,MAAM,CAAC,OAAO,kCAAkC,CAAC,CAAC;AAK7F,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,OAAO,GAAG,2BAA2B,CAmB5F;AAED,wBAAgB,iCAAiC,CAChD,YAAY,EAAE,OAAO,EACrB,aAAa,EAAE,OAAO,GACpB,4BAA4B,CA2C9B","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.d.ts","sourceRoot":"","sources":["../../src/humain/agent-execution-protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAG5C,eAAO,MAAM,qCAAqC,EAAG,CAAU,CAAC;AAchE,eAAO,MAAM,yBAAyB,8GAIpC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE3E,eAAO,MAAM,yBAAyB;;;;;EAUpC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE3E,eAAO,MAAM,kCAAkC;;;;;EAK7C,CAAC;AACH,MAAM,MAAM,4BAA4B,GAAG,MAAM,CAAC,OAAO,kCAAkC,CAAC,CAAC;AAE7F,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;EAY1C,CAAC;AACH,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAEvF,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAO5C,CAAC;AACH,MAAM,MAAM,2BAA2B,GAAG,MAAM,CAAC,OAAO,iCAAiC,CAAC,CAAC;AAE3F,eAAO,MAAM,sBAAsB;;;;;;;;IASjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAErE,eAAO,MAAM,oCAAoC,YAChD,0BAA0B,EAC1B,iCAAiC,EACjC,wBAAwB,EACxB,2BAA2B,EAC3B,kBAAkB,EAClB,sBAAsB,EACtB,0BAA0B,EAC1B,uBAAuB,CACd,CAAC;AACX,MAAM,MAAM,+BAA+B,GAAG,CAAC,OAAO,oCAAoC,CAAC,CAAC,MAAM,CAAC,CAAC;AAqBpG,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsB5C,CAAC;AACH,MAAM,MAAM,2BAA2B,GAAG,MAAM,CAAC,OAAO,iCAAiC,CAAC,CAAC;AAE3F,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQ7C,CAAC;AACH,MAAM,MAAM,4BAA4B,GAAG,MAAM,CAAC,OAAO,kCAAkC,CAAC,CAAC;AAK7F,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,OAAO,GAAG,2BAA2B,CAmB5F;AAED,wBAAgB,iCAAiC,CAChD,YAAY,EAAE,OAAO,EACrB,aAAa,EAAE,OAAO,GACpB,4BAA4B,CA2C9B"}
@@ -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"}