hoomanjs 1.46.0 → 1.55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (340) hide show
  1. package/README.md +44 -18
  2. package/dist/acp/acp-agent.d.ts +42 -0
  3. package/dist/acp/acp-agent.js +336 -47
  4. package/dist/acp/acp-agent.js.map +1 -1
  5. package/dist/acp/approvals.js +11 -10
  6. package/dist/acp/approvals.js.map +1 -1
  7. package/dist/acp/browser.d.ts +9 -0
  8. package/dist/acp/browser.js +23 -0
  9. package/dist/acp/browser.js.map +1 -0
  10. package/dist/acp/meta/vscode.d.ts +8 -7
  11. package/dist/acp/meta/vscode.js +10 -11
  12. package/dist/acp/meta/vscode.js.map +1 -1
  13. package/dist/acp/session-config.d.ts +2 -2
  14. package/dist/acp/session-config.js +24 -20
  15. package/dist/acp/session-config.js.map +1 -1
  16. package/dist/acp/sessions/store.d.ts +3 -3
  17. package/dist/acp/utils/tool-kind.js +8 -6
  18. package/dist/acp/utils/tool-kind.js.map +1 -1
  19. package/dist/chat/app.js +91 -11
  20. package/dist/chat/app.js.map +1 -1
  21. package/dist/chat/approvals.js +3 -0
  22. package/dist/chat/approvals.js.map +1 -1
  23. package/dist/chat/components/ApprovalPrompt.js +15 -25
  24. package/dist/chat/components/ApprovalPrompt.js.map +1 -1
  25. package/dist/chat/components/BackgroundJobsPanel.d.ts +10 -0
  26. package/dist/chat/components/BackgroundJobsPanel.js +15 -0
  27. package/dist/chat/components/BackgroundJobsPanel.js.map +1 -0
  28. package/dist/chat/components/BottomChrome.d.ts +6 -1
  29. package/dist/chat/components/BottomChrome.js +3 -2
  30. package/dist/chat/components/BottomChrome.js.map +1 -1
  31. package/dist/chat/components/ChromePicker.d.ts +7 -2
  32. package/dist/chat/components/ChromePicker.js +18 -2
  33. package/dist/chat/components/ChromePicker.js.map +1 -1
  34. package/dist/chat/components/Composer.js +3 -2
  35. package/dist/chat/components/Composer.js.map +1 -1
  36. package/dist/chat/components/DownloadPanel.js +2 -1
  37. package/dist/chat/components/DownloadPanel.js.map +1 -1
  38. package/dist/chat/components/EmptyChatBanner.js +2 -1
  39. package/dist/chat/components/EmptyChatBanner.js.map +1 -1
  40. package/dist/chat/components/PromptInput.js +2 -1
  41. package/dist/chat/components/PromptInput.js.map +1 -1
  42. package/dist/chat/components/QuestionPrompt.js +5 -4
  43. package/dist/chat/components/QuestionPrompt.js.map +1 -1
  44. package/dist/chat/components/QueuedPrompts.js +3 -2
  45. package/dist/chat/components/QueuedPrompts.js.map +1 -1
  46. package/dist/chat/components/ReasoningStrip.js +2 -1
  47. package/dist/chat/components/ReasoningStrip.js.map +1 -1
  48. package/dist/chat/components/RetryEvent.js +2 -1
  49. package/dist/chat/components/RetryEvent.js.map +1 -1
  50. package/dist/chat/components/SelectPicker.js +2 -1
  51. package/dist/chat/components/SelectPicker.js.map +1 -1
  52. package/dist/chat/components/ShellToolEvent.d.ts +12 -0
  53. package/dist/chat/components/ShellToolEvent.js +94 -0
  54. package/dist/chat/components/ShellToolEvent.js.map +1 -0
  55. package/dist/chat/components/SlashCommands.js +2 -1
  56. package/dist/chat/components/SlashCommands.js.map +1 -1
  57. package/dist/chat/components/Spinner.js +2 -1
  58. package/dist/chat/components/Spinner.js.map +1 -1
  59. package/dist/chat/components/StatusBar.js +19 -15
  60. package/dist/chat/components/StatusBar.js.map +1 -1
  61. package/dist/chat/components/ThinkingStatus.js +2 -1
  62. package/dist/chat/components/ThinkingStatus.js.map +1 -1
  63. package/dist/chat/components/ThoughtEvent.js +2 -1
  64. package/dist/chat/components/ThoughtEvent.js.map +1 -1
  65. package/dist/chat/components/TodoPanel.js +2 -1
  66. package/dist/chat/components/TodoPanel.js.map +1 -1
  67. package/dist/chat/components/ToolEvent.d.ts +2 -1
  68. package/dist/chat/components/ToolEvent.js +9 -2
  69. package/dist/chat/components/ToolEvent.js.map +1 -1
  70. package/dist/chat/components/ToolEventFileResult.js +8 -7
  71. package/dist/chat/components/ToolEventFileResult.js.map +1 -1
  72. package/dist/chat/components/Transcript.d.ts +4 -2
  73. package/dist/chat/components/Transcript.js +4 -4
  74. package/dist/chat/components/Transcript.js.map +1 -1
  75. package/dist/chat/components/markdown/BlockRenderer.js +3 -2
  76. package/dist/chat/components/markdown/BlockRenderer.js.map +1 -1
  77. package/dist/chat/components/markdown/CodeBlock.js +3 -2
  78. package/dist/chat/components/markdown/CodeBlock.js.map +1 -1
  79. package/dist/chat/components/markdown/InlineRenderer.js +6 -5
  80. package/dist/chat/components/markdown/InlineRenderer.js.map +1 -1
  81. package/dist/chat/components/shared.js +7 -6
  82. package/dist/chat/components/shared.js.map +1 -1
  83. package/dist/chat/types.d.ts +7 -0
  84. package/dist/cli.js +162 -44
  85. package/dist/cli.js.map +1 -1
  86. package/dist/configure/app.js +46 -29
  87. package/dist/configure/app.js.map +1 -1
  88. package/dist/configure/components/BusyScreen.js +2 -1
  89. package/dist/configure/components/BusyScreen.js.map +1 -1
  90. package/dist/configure/components/MenuScreen.js +3 -2
  91. package/dist/configure/components/MenuScreen.js.map +1 -1
  92. package/dist/configure/components/PromptForm.js +2 -1
  93. package/dist/configure/components/PromptForm.js.map +1 -1
  94. package/dist/configure/components/SelectMenuItem.js +4 -3
  95. package/dist/configure/components/SelectMenuItem.js.map +1 -1
  96. package/dist/configure/utils.js +4 -3
  97. package/dist/configure/utils.js.map +1 -1
  98. package/dist/core/agent/default-retry-strategy.js +46 -12
  99. package/dist/core/agent/default-retry-strategy.js.map +1 -1
  100. package/dist/core/agent/gitignore-guard-plugin.js +17 -2
  101. package/dist/core/agent/gitignore-guard-plugin.js.map +1 -1
  102. package/dist/core/agent/index.js +38 -7
  103. package/dist/core/agent/index.js.map +1 -1
  104. package/dist/core/approvals/allowlist.js +1 -0
  105. package/dist/core/approvals/allowlist.js.map +1 -1
  106. package/dist/core/approvals/intervention.d.ts +10 -2
  107. package/dist/core/approvals/intervention.js +46 -8
  108. package/dist/core/approvals/intervention.js.map +1 -1
  109. package/dist/core/config.d.ts +9 -2
  110. package/dist/core/config.js +8 -4
  111. package/dist/core/config.js.map +1 -1
  112. package/dist/core/index.d.ts +2 -2
  113. package/dist/core/mcp/oauth/service.js +2 -2
  114. package/dist/core/mcp/oauth/service.js.map +1 -1
  115. package/dist/core/models/bedrock.js +6 -0
  116. package/dist/core/models/bedrock.js.map +1 -1
  117. package/dist/core/models/groq.js +34 -14
  118. package/dist/core/models/groq.js.map +1 -1
  119. package/dist/core/models/minimax.js +1 -1
  120. package/dist/core/models/minimax.js.map +1 -1
  121. package/dist/core/models/types.d.ts +10 -2
  122. package/dist/core/models/types.js +1 -0
  123. package/dist/core/models/types.js.map +1 -1
  124. package/dist/core/modes/definitions.d.ts +4 -2
  125. package/dist/core/modes/definitions.js +77 -9
  126. package/dist/core/modes/definitions.js.map +1 -1
  127. package/dist/core/modes/index.d.ts +1 -1
  128. package/dist/core/modes/index.js +1 -1
  129. package/dist/core/modes/index.js.map +1 -1
  130. package/dist/core/modes/registry.js +4 -9
  131. package/dist/core/modes/registry.js.map +1 -1
  132. package/dist/core/modes/schema.d.ts +1 -1
  133. package/dist/core/modes/schema.js +1 -1
  134. package/dist/core/modes/schema.js.map +1 -1
  135. package/dist/core/prompts/agents/{review.md → code-review.md} +2 -2
  136. package/dist/core/prompts/agents/design-review.md +35 -0
  137. package/dist/core/prompts/agents/{test-investigator.md → quality-analyst.md} +2 -2
  138. package/dist/core/prompts/modes/agent.md +2 -0
  139. package/dist/core/prompts/modes/ask.md +2 -2
  140. package/dist/core/prompts/modes/design.md +37 -0
  141. package/dist/core/prompts/modes/plan.md +5 -5
  142. package/dist/core/prompts/{runtime.js → runtime/agents.js} +2 -2
  143. package/dist/core/prompts/runtime/agents.js.map +1 -0
  144. package/dist/core/prompts/runtime/design.d.ts +11 -0
  145. package/dist/core/prompts/runtime/design.js +78 -0
  146. package/dist/core/prompts/runtime/design.js.map +1 -0
  147. package/dist/core/prompts/{session-mode-appendix.js → session-mode.js} +1 -1
  148. package/dist/core/prompts/session-mode.js.map +1 -0
  149. package/dist/core/prompts/static/ask-user.md +3 -2
  150. package/dist/core/prompts/static/fetch.md +2 -1
  151. package/dist/core/prompts/static/filesystem.md +2 -1
  152. package/dist/core/prompts/static/shell.md +21 -1
  153. package/dist/core/prompts/static/subagents.md +2 -1
  154. package/dist/core/prompts/static/switch-mode.md +10 -0
  155. package/dist/core/prompts/system.d.ts +1 -0
  156. package/dist/core/prompts/system.js +11 -3
  157. package/dist/core/prompts/system.js.map +1 -1
  158. package/dist/core/shell/index.d.ts +7 -0
  159. package/dist/core/shell/index.js +6 -0
  160. package/dist/core/shell/index.js.map +1 -0
  161. package/dist/core/shell/manager.d.ts +23 -0
  162. package/dist/core/shell/manager.js +604 -0
  163. package/dist/core/shell/manager.js.map +1 -0
  164. package/dist/core/shell/output-buffer.d.ts +30 -0
  165. package/dist/core/shell/output-buffer.js +116 -0
  166. package/dist/core/shell/output-buffer.js.map +1 -0
  167. package/dist/core/shell/registry.d.ts +5 -0
  168. package/dist/core/shell/registry.js +24 -0
  169. package/dist/core/shell/registry.js.map +1 -0
  170. package/dist/core/{tools/shell.d.ts → shell/terminal-backend.d.ts} +20 -18
  171. package/dist/core/shell/terminal-backend.js +18 -0
  172. package/dist/core/shell/terminal-backend.js.map +1 -0
  173. package/dist/core/shell/tools.d.ts +41 -0
  174. package/dist/core/{tools/shell.js → shell/tools.js} +186 -11
  175. package/dist/core/shell/tools.js.map +1 -0
  176. package/dist/core/shell/types.d.ts +95 -0
  177. package/dist/core/shell/types.js +2 -0
  178. package/dist/core/shell/types.js.map +1 -0
  179. package/dist/core/skills/built-in/hooman-config/SKILL.md +30 -35
  180. package/dist/core/skills/built-in/hooman-config/search.md +5 -3
  181. package/dist/core/skills/built-in/hooman-design/SKILL.md +97 -0
  182. package/dist/core/skills/built-in/hooman-design/assets/article-shell.html +87 -0
  183. package/dist/core/skills/built-in/hooman-design/assets/auth-shell.html +143 -0
  184. package/dist/core/skills/built-in/hooman-design/assets/business-card-shell.html +112 -0
  185. package/dist/core/skills/built-in/hooman-design/assets/contact-shell.html +181 -0
  186. package/dist/core/skills/built-in/hooman-design/assets/dashboard-shell.html +90 -0
  187. package/dist/core/skills/built-in/hooman-design/assets/data-table-shell.html +114 -0
  188. package/dist/core/skills/built-in/hooman-design/assets/deck-shell.html +187 -0
  189. package/dist/core/skills/built-in/hooman-design/assets/dialog-shell.html +98 -0
  190. package/dist/core/skills/built-in/hooman-design/assets/email-shell.html +101 -0
  191. package/dist/core/skills/built-in/hooman-design/assets/empty-state-shell.html +92 -0
  192. package/dist/core/skills/built-in/hooman-design/assets/flyer-shell.html +168 -0
  193. package/dist/core/skills/built-in/hooman-design/assets/invite-shell.html +167 -0
  194. package/dist/core/skills/built-in/hooman-design/assets/landing-shell.html +184 -0
  195. package/dist/core/skills/built-in/hooman-design/assets/mobile-frame-shell.html +109 -0
  196. package/dist/core/skills/built-in/hooman-design/assets/newsletter-shell.html +141 -0
  197. package/dist/core/skills/built-in/hooman-design/assets/onboarding-shell.html +131 -0
  198. package/dist/core/skills/built-in/hooman-design/assets/pricing-shell.html +160 -0
  199. package/dist/core/skills/built-in/hooman-design/assets/prototype-shell.html +83 -0
  200. package/dist/core/skills/built-in/hooman-design/assets/resume-shell.html +228 -0
  201. package/dist/core/skills/built-in/hooman-design/assets/settings-shell.html +196 -0
  202. package/dist/core/skills/built-in/hooman-design/assets/tokens/botanical-calm.css +34 -0
  203. package/dist/core/skills/built-in/hooman-design/assets/tokens/copper-ledger.css +34 -0
  204. package/dist/core/skills/built-in/hooman-design/assets/tokens/editorial-ink.css +34 -0
  205. package/dist/core/skills/built-in/hooman-design/assets/tokens/fintech-clear.css +34 -0
  206. package/dist/core/skills/built-in/hooman-design/assets/tokens/harbor-navy.css +35 -0
  207. package/dist/core/skills/built-in/hooman-design/assets/tokens/midnight-editorial.css +34 -0
  208. package/dist/core/skills/built-in/hooman-design/assets/tokens/night-console.css +34 -0
  209. package/dist/core/skills/built-in/hooman-design/assets/tokens/paper-mono.css +35 -0
  210. package/dist/core/skills/built-in/hooman-design/assets/tokens/signal-mono.css +34 -0
  211. package/dist/core/skills/built-in/hooman-design/assets/tokens/soft-product.css +34 -0
  212. package/dist/core/skills/built-in/hooman-design/assets/tokens/swiss-grid.css +34 -0
  213. package/dist/core/skills/built-in/hooman-design/assets/tokens/warm-atelier.css +34 -0
  214. package/dist/core/skills/built-in/hooman-design/assets/waitlist-shell.html +139 -0
  215. package/dist/core/skills/built-in/hooman-design/craft/accessibility-baseline.md +32 -0
  216. package/dist/core/skills/built-in/hooman-design/craft/anti-ai-slop.md +27 -0
  217. package/dist/core/skills/built-in/hooman-design/craft/color-surfaces.md +45 -0
  218. package/dist/core/skills/built-in/hooman-design/craft/data-viz.md +24 -0
  219. package/dist/core/skills/built-in/hooman-design/craft/deck-slides.md +46 -0
  220. package/dist/core/skills/built-in/hooman-design/craft/forms-validation.md +35 -0
  221. package/dist/core/skills/built-in/hooman-design/craft/iconography.md +19 -0
  222. package/dist/core/skills/built-in/hooman-design/craft/layout-overflow.md +31 -0
  223. package/dist/core/skills/built-in/hooman-design/craft/motion.md +41 -0
  224. package/dist/core/skills/built-in/hooman-design/craft/print.md +37 -0
  225. package/dist/core/skills/built-in/hooman-design/craft/responsive.md +30 -0
  226. package/dist/core/skills/built-in/hooman-design/craft/spacing-density.md +46 -0
  227. package/dist/core/skills/built-in/hooman-design/craft/state-coverage.md +21 -0
  228. package/dist/core/skills/built-in/hooman-design/craft/typography.md +73 -0
  229. package/dist/core/skills/built-in/hooman-design/directions.md +115 -0
  230. package/dist/core/skills/built-in/hooman-design/references/artifact-layout.md +15 -0
  231. package/dist/core/skills/built-in/hooman-design/references/export.md +47 -0
  232. package/dist/core/skills/built-in/hooman-design/references/workflow.md +80 -0
  233. package/dist/core/skills/built-in/hooman-mcp/SKILL.md +2 -2
  234. package/dist/core/state/llm-modality.d.ts +13 -0
  235. package/dist/core/state/llm-modality.js +19 -0
  236. package/dist/core/state/llm-modality.js.map +1 -0
  237. package/dist/core/state/plan.d.ts +1 -1
  238. package/dist/core/state/plan.js +1 -1
  239. package/dist/core/state/shell-jobs.d.ts +9 -0
  240. package/dist/core/state/shell-jobs.js +20 -0
  241. package/dist/core/state/shell-jobs.js.map +1 -0
  242. package/dist/core/state/tool-approvals.d.ts +12 -9
  243. package/dist/core/state/tool-approvals.js +94 -52
  244. package/dist/core/state/tool-approvals.js.map +1 -1
  245. package/dist/core/state/turn-boundaries.d.ts +33 -0
  246. package/dist/core/state/turn-boundaries.js +49 -0
  247. package/dist/core/state/turn-boundaries.js.map +1 -0
  248. package/dist/core/subagents/index.d.ts +1 -1
  249. package/dist/core/subagents/index.js +1 -1
  250. package/dist/core/subagents/registry.js +15 -6
  251. package/dist/core/subagents/registry.js.map +1 -1
  252. package/dist/core/subagents/tool.d.ts +8 -2
  253. package/dist/core/subagents/tool.js +93 -44
  254. package/dist/core/subagents/tool.js.map +1 -1
  255. package/dist/core/theme.d.ts +14 -0
  256. package/dist/core/theme.js +14 -0
  257. package/dist/core/theme.js.map +1 -0
  258. package/dist/core/tools/ask-user.d.ts +1 -1
  259. package/dist/core/tools/ask-user.js +1 -1
  260. package/dist/core/tools/export.d.ts +8 -0
  261. package/dist/core/tools/export.js +202 -0
  262. package/dist/core/tools/export.js.map +1 -0
  263. package/dist/core/tools/fetch.d.ts +2 -0
  264. package/dist/core/tools/fetch.js +92 -55
  265. package/dist/core/tools/fetch.js.map +1 -1
  266. package/dist/core/tools/filesystem.d.ts +2 -1
  267. package/dist/core/tools/filesystem.js +38 -4
  268. package/dist/core/tools/filesystem.js.map +1 -1
  269. package/dist/core/tools/index.d.ts +3 -2
  270. package/dist/core/tools/index.js +3 -2
  271. package/dist/core/tools/index.js.map +1 -1
  272. package/dist/core/tools/preview.d.ts +10 -0
  273. package/dist/core/tools/preview.js +147 -0
  274. package/dist/core/tools/preview.js.map +1 -0
  275. package/dist/core/tools/switch-mode.d.ts +6 -0
  276. package/dist/core/tools/switch-mode.js +188 -0
  277. package/dist/core/tools/switch-mode.js.map +1 -0
  278. package/dist/core/tools/web-search.js +176 -0
  279. package/dist/core/tools/web-search.js.map +1 -1
  280. package/dist/core/utils/browser.d.ts +8 -1
  281. package/dist/core/utils/browser.js +17 -1
  282. package/dist/core/utils/browser.js.map +1 -1
  283. package/dist/core/utils/export-design.d.ts +40 -0
  284. package/dist/core/utils/export-design.js +188 -0
  285. package/dist/core/utils/export-design.js.map +1 -0
  286. package/dist/core/utils/export-figma.d.ts +17 -0
  287. package/dist/core/utils/export-figma.js +189 -0
  288. package/dist/core/utils/export-figma.js.map +1 -0
  289. package/dist/core/utils/export-sketch.d.ts +11 -0
  290. package/dist/core/utils/export-sketch.js +456 -0
  291. package/dist/core/utils/export-sketch.js.map +1 -0
  292. package/dist/core/utils/fig-archive.d.ts +47 -0
  293. package/dist/core/utils/fig-archive.js +181 -0
  294. package/dist/core/utils/fig-archive.js.map +1 -0
  295. package/dist/core/utils/metadata.d.ts +30 -0
  296. package/dist/core/utils/metadata.js +122 -0
  297. package/dist/core/utils/metadata.js.map +1 -1
  298. package/dist/core/utils/models-prefetch.d.ts +53 -0
  299. package/dist/core/utils/models-prefetch.js +469 -0
  300. package/dist/core/utils/models-prefetch.js.map +1 -0
  301. package/dist/core/utils/onboarding-config.d.ts +48 -0
  302. package/dist/core/utils/onboarding-config.js +373 -0
  303. package/dist/core/utils/onboarding-config.js.map +1 -0
  304. package/dist/core/utils/paths.d.ts +9 -7
  305. package/dist/core/utils/paths.js +12 -10
  306. package/dist/core/utils/paths.js.map +1 -1
  307. package/dist/core/utils/preview-server.d.ts +20 -0
  308. package/dist/core/utils/preview-server.js +212 -0
  309. package/dist/core/utils/preview-server.js.map +1 -0
  310. package/dist/core/utils/search-probe.d.ts +19 -0
  311. package/dist/core/utils/search-probe.js +165 -0
  312. package/dist/core/utils/search-probe.js.map +1 -0
  313. package/dist/core/utils/seeds/empty-slides.deck +0 -0
  314. package/dist/core/utils/url-safety.d.ts +2 -0
  315. package/dist/core/utils/url-safety.js +47 -0
  316. package/dist/core/utils/url-safety.js.map +1 -0
  317. package/dist/core/utils/zstd.d.ts +6 -0
  318. package/dist/core/utils/zstd.js +39 -0
  319. package/dist/core/utils/zstd.js.map +1 -0
  320. package/dist/exec/approvals.js +5 -5
  321. package/dist/exec/approvals.js.map +1 -1
  322. package/dist/index.d.ts +11 -5
  323. package/dist/index.js +8 -5
  324. package/dist/index.js.map +1 -1
  325. package/dist/onboarding/app.d.ts +5 -0
  326. package/dist/onboarding/app.js +255 -0
  327. package/dist/onboarding/app.js.map +1 -0
  328. package/dist/onboarding/index.d.ts +5 -0
  329. package/dist/onboarding/index.js +27 -0
  330. package/dist/onboarding/index.js.map +1 -0
  331. package/package.json +16 -3
  332. package/dist/core/prompts/runtime.js.map +0 -1
  333. package/dist/core/prompts/session-mode-appendix.js.map +0 -1
  334. package/dist/core/prompts/static/planning.md +0 -3
  335. package/dist/core/tools/plan.d.ts +0 -5
  336. package/dist/core/tools/plan.js +0 -150
  337. package/dist/core/tools/plan.js.map +0 -1
  338. package/dist/core/tools/shell.js.map +0 -1
  339. /package/dist/core/prompts/{runtime.d.ts → runtime/agents.d.ts} +0 -0
  340. /package/dist/core/prompts/{session-mode-appendix.d.ts → session-mode.d.ts} +0 -0
@@ -0,0 +1,469 @@
1
+ /**
2
+ * Prefetch model ids from provider-specific list endpoints (or curated
3
+ * local defaults). Used by VS Code onboarding and available to other
4
+ * surfaces that need a first-run / picker catalog without going through ACP.
5
+ *
6
+ * Flow: list from the provider → check models.dev → keep chat LLMs only
7
+ * (display names from the catalog when present).
8
+ */
9
+ import { ensureModelsDevCatalog, resolveModelsDevModelInfo, } from "./metadata.js";
10
+ const MODEL_LIST_CAP = 40;
11
+ const FETCH_TIMEOUT_MS = 20_000;
12
+ /** Id patterns that are never chat LLMs when models.dev has no entry. */
13
+ const NON_LLM_ID_RE = /(embed|whisper|tts|stt|transcri|moderation|guard|imagine|kling|asr|realtime|dall-?e|imagen|gpt-image|chatgpt-image|omni-flash|-video\b|veo|lyria|deep-research|\baqa\b|native-audio|computer-use|robotics|-image(?:-|$)|nano-banana|antigravity)/i;
14
+ /** Suggested default model id per provider (matches VS Code / configure UI). */
15
+ export const DEFAULT_PREFETCH_MODEL_BY_PROVIDER = {
16
+ anthropic: "claude-sonnet-4-6",
17
+ azure: "gpt-5.4-mini",
18
+ bedrock: "anthropic.claude-sonnet-4-6",
19
+ google: "gemini-3.5-flash",
20
+ groq: "openai/gpt-oss-20b",
21
+ "llama-cpp": "unsloth/gemma-4-E2B-it-GGUF:Q4_K_M",
22
+ minimax: "MiniMax-M3",
23
+ mlx: "mlx-community/gemma-4-e2b-it-OptiQ-4bit",
24
+ moonshot: "kimi-k2.7-code",
25
+ ollama: "gemma4:e4b",
26
+ openai: "gpt-5.5",
27
+ openrouter: "google/gemma-4-26b-a4b-it:free",
28
+ xai: "grok-4.3",
29
+ };
30
+ /**
31
+ * Known-good model id/label for local / curated providers (llama.cpp, MLX, Bedrock).
32
+ */
33
+ export function defaultPrefetchedModel(provider) {
34
+ const id = DEFAULT_PREFETCH_MODEL_BY_PROVIDER[provider];
35
+ const curated = CURATED_DISPLAY_NAMES[provider]?.[id];
36
+ return { id, displayName: curated ?? humanizeModelId(id) };
37
+ }
38
+ /** Providers that need an API key (or Azure key + deployment) before onboarding can finish. */
39
+ export function providerRequiresCredentials(provider) {
40
+ switch (provider) {
41
+ case "llama-cpp":
42
+ case "mlx":
43
+ case "ollama":
44
+ case "bedrock":
45
+ return false;
46
+ default:
47
+ return true;
48
+ }
49
+ }
50
+ /**
51
+ * Whether the options include the credentials needed to call the list endpoint.
52
+ */
53
+ export function hasPrefetchCredentials(options) {
54
+ switch (options.provider) {
55
+ case "llama-cpp":
56
+ case "mlx":
57
+ case "bedrock":
58
+ return true;
59
+ case "ollama":
60
+ return true;
61
+ case "azure":
62
+ return Boolean(options.apiKey?.trim() &&
63
+ options.baseURL?.trim() &&
64
+ options.azureDeployment?.trim());
65
+ case "anthropic":
66
+ case "google":
67
+ case "groq":
68
+ case "minimax":
69
+ case "moonshot":
70
+ case "openai":
71
+ case "openrouter":
72
+ case "xai":
73
+ return Boolean(options.apiKey?.trim());
74
+ default: {
75
+ const _exhaustive = options.provider;
76
+ return _exhaustive;
77
+ }
78
+ }
79
+ }
80
+ /**
81
+ * Resolve models for onboarding. Credentials required by the provider must be
82
+ * present and valid (list endpoint succeeds); there is no silent fallback.
83
+ * Local / curated providers (llama.cpp, MLX, Bedrock) use known defaults.
84
+ */
85
+ export async function resolvePrefetchModels(options) {
86
+ switch (options.provider) {
87
+ case "llama-cpp":
88
+ case "mlx":
89
+ case "bedrock":
90
+ return prefetchProviderModels({
91
+ ...options,
92
+ preferredModel: options.preferredModel ??
93
+ DEFAULT_PREFETCH_MODEL_BY_PROVIDER[options.provider],
94
+ limit: 1,
95
+ });
96
+ case "ollama": {
97
+ const models = await prefetchProviderModels(options);
98
+ if (models.length === 0) {
99
+ throw new Error("Ollama returned no models. Pull a model or check the base URL.");
100
+ }
101
+ return models;
102
+ }
103
+ case "azure": {
104
+ if (!options.apiKey?.trim()) {
105
+ throw new Error("API key is required.");
106
+ }
107
+ if (!options.baseURL?.trim()) {
108
+ throw new Error("Base URL is required.");
109
+ }
110
+ if (!options.azureDeployment?.trim()) {
111
+ throw new Error("Deployment name is required.");
112
+ }
113
+ return prefetchProviderModels(options);
114
+ }
115
+ default: {
116
+ if (!options.apiKey?.trim()) {
117
+ throw new Error("API key is required.");
118
+ }
119
+ const models = await prefetchProviderModels(options);
120
+ if (models.length === 0) {
121
+ throw new Error("The provider returned no models — check that the API key is valid.");
122
+ }
123
+ return models;
124
+ }
125
+ }
126
+ }
127
+ const CURATED_DISPLAY_NAMES = {
128
+ "llama-cpp": {
129
+ "unsloth/gemma-4-E2B-it-GGUF:Q4_K_M": "Gemma 4 E2B (llama.cpp)",
130
+ },
131
+ mlx: {
132
+ "mlx-community/gemma-4-e2b-it-OptiQ-4bit": "Gemma 4 E2B (MLX)",
133
+ },
134
+ bedrock: {
135
+ "anthropic.claude-sonnet-4-6": "Claude Sonnet 4.6",
136
+ },
137
+ };
138
+ /**
139
+ * List models for a provider: remote catalog where available, curated
140
+ * local entries for llama.cpp / MLX, deployment name for Azure.
141
+ * Non-LLM catalog entries are dropped; display names prefer models.dev.
142
+ */
143
+ export async function prefetchProviderModels(options) {
144
+ const preferred = options.preferredModel?.trim() ||
145
+ DEFAULT_PREFETCH_MODEL_BY_PROVIDER[options.provider];
146
+ const limit = options.limit ?? MODEL_LIST_CAP;
147
+ const { provider } = options;
148
+ switch (provider) {
149
+ case "llama-cpp":
150
+ return finalizePrefetchModels(provider, [
151
+ {
152
+ id: "unsloth/gemma-4-E2B-it-GGUF:Q4_K_M",
153
+ displayName: "Gemma 4 E2B (llama.cpp)",
154
+ },
155
+ {
156
+ id: "unsloth/Qwen3.5-2B-MTP-GGUF:Q4_K_M",
157
+ displayName: "Qwen3.5 2B (llama.cpp)",
158
+ },
159
+ ], preferred, limit);
160
+ case "mlx":
161
+ return finalizePrefetchModels(provider, [
162
+ {
163
+ id: "mlx-community/gemma-4-e2b-it-OptiQ-4bit",
164
+ displayName: "Gemma 4 E2B (MLX)",
165
+ },
166
+ {
167
+ id: "mlx-community/Qwen3.5-2B-OptiQ-4bit",
168
+ displayName: "Qwen3.5 2B (MLX)",
169
+ },
170
+ ], preferred, limit);
171
+ case "azure": {
172
+ const deployment = (options.azureDeployment ?? "").trim();
173
+ if (!deployment) {
174
+ throw new Error("Deployment name is required for Azure.");
175
+ }
176
+ return finalizePrefetchModels(provider, [{ id: deployment, displayName: humanizeModelId(deployment) }], preferred, limit);
177
+ }
178
+ case "ollama":
179
+ return finalizePrefetchModels(provider, await listOllamaModels(options.baseURL?.trim(), options.signal), preferred, limit);
180
+ case "anthropic":
181
+ return finalizePrefetchModels(provider, await listAnthropicModels(options.apiKey?.trim() ?? "", options.baseURL?.trim(), options.signal), preferred, limit);
182
+ case "google":
183
+ return finalizePrefetchModels(provider, await listGoogleModels(options.apiKey?.trim() ?? "", options.signal), preferred, limit);
184
+ case "bedrock":
185
+ return finalizePrefetchModels(provider, await listBedrockModels(options.region?.trim() ?? "us-west-2", options.accessKeyId?.trim() ?? "", options.secretAccessKey?.trim() ?? ""), preferred, limit);
186
+ case "openai":
187
+ case "groq":
188
+ case "openrouter":
189
+ case "xai":
190
+ case "moonshot":
191
+ case "minimax":
192
+ return finalizePrefetchModels(provider, await listOpenAiCompatibleModels(provider, options.apiKey?.trim() ?? "", options.baseURL?.trim(), options.signal), preferred, limit);
193
+ default: {
194
+ const _exhaustive = provider;
195
+ throw new Error(`Unsupported provider: ${_exhaustive}`);
196
+ }
197
+ }
198
+ }
199
+ function modelsDevProviderHint(provider) {
200
+ switch (provider) {
201
+ case "moonshot":
202
+ return "moonshotai";
203
+ case "bedrock":
204
+ return "amazon-bedrock";
205
+ case "llama-cpp":
206
+ case "mlx":
207
+ case "ollama":
208
+ return undefined;
209
+ default:
210
+ return provider;
211
+ }
212
+ }
213
+ function looksLikeNonLlmId(id) {
214
+ return NON_LLM_ID_RE.test(id);
215
+ }
216
+ /**
217
+ * Filter a provider API model list through models.dev: keep entries the
218
+ * catalog classifies as chat LLMs (and use its display names). Local /
219
+ * deployment providers keep API rows that are not known non-LLMs when the
220
+ * catalog has no match.
221
+ */
222
+ async function finalizePrefetchModels(provider, models, preferred, limit) {
223
+ await ensureModelsDevCatalog();
224
+ const hint = modelsDevProviderHint(provider);
225
+ const requireCatalogLlm = requiresModelsDevLlmCheck(provider);
226
+ const filtered = [];
227
+ for (const model of models) {
228
+ const info = await resolveModelsDevModelInfo(model.id, hint, {
229
+ exact: true,
230
+ });
231
+ if (info) {
232
+ if (!info.isChatLlm) {
233
+ continue;
234
+ }
235
+ filtered.push({ id: model.id, displayName: info.displayName });
236
+ continue;
237
+ }
238
+ // Not on models.dev — hosted providers skip; local/azure may keep.
239
+ if (requireCatalogLlm) {
240
+ continue;
241
+ }
242
+ if (looksLikeNonLlmId(model.id)) {
243
+ continue;
244
+ }
245
+ filtered.push(model);
246
+ }
247
+ const prioritized = prioritize(filtered, preferred, limit);
248
+ // Re-check preferred inserts against models.dev for hosted providers.
249
+ if (!requireCatalogLlm) {
250
+ return prioritized;
251
+ }
252
+ const out = [];
253
+ for (const model of prioritized) {
254
+ const info = await resolveModelsDevModelInfo(model.id, hint, {
255
+ exact: true,
256
+ });
257
+ if (info?.isChatLlm) {
258
+ out.push({ id: model.id, displayName: info.displayName });
259
+ }
260
+ }
261
+ return out;
262
+ }
263
+ /** Hosted providers: only add models models.dev marks as chat LLMs. */
264
+ function requiresModelsDevLlmCheck(provider) {
265
+ switch (provider) {
266
+ case "llama-cpp":
267
+ case "mlx":
268
+ case "ollama":
269
+ case "azure":
270
+ return false;
271
+ default:
272
+ return true;
273
+ }
274
+ }
275
+ function prioritize(models, preferred, limit) {
276
+ const unique = new Map();
277
+ for (const model of models) {
278
+ if (!unique.has(model.id)) {
279
+ unique.set(model.id, model);
280
+ }
281
+ }
282
+ const list = [...unique.values()];
283
+ const preferredIndex = list.findIndex((m) => m.id === preferred);
284
+ if (preferredIndex > 0) {
285
+ const [hit] = list.splice(preferredIndex, 1);
286
+ if (hit) {
287
+ list.unshift(hit);
288
+ }
289
+ }
290
+ else if (preferredIndex === -1 && preferred) {
291
+ if (!looksLikeNonLlmId(preferred)) {
292
+ list.unshift({ id: preferred, displayName: humanizeModelId(preferred) });
293
+ }
294
+ }
295
+ return list.slice(0, limit);
296
+ }
297
+ function humanizeModelId(id) {
298
+ const leaf = id.includes("/") ? (id.split("/").pop() ?? id) : id;
299
+ return leaf
300
+ .replace(/[:_]+/g, " ")
301
+ .replace(/-/g, " ")
302
+ .replace(/\s+/g, " ")
303
+ .trim();
304
+ }
305
+ async function listOpenAiCompatibleModels(provider, apiKey, baseURL, signal) {
306
+ if (!apiKey) {
307
+ throw new Error("API key is required.");
308
+ }
309
+ const base = (baseURL || defaultOpenAiBase(provider)).replace(/\/+$/, "");
310
+ const url = `${base}/models`;
311
+ const headers = {
312
+ Accept: "application/json",
313
+ Authorization: `Bearer ${apiKey}`,
314
+ };
315
+ if (provider === "openrouter") {
316
+ headers["HTTP-Referer"] = "https://vaibhavpandey.com/hooman/";
317
+ headers["X-Title"] = "Hooman";
318
+ }
319
+ const json = await fetchJson(url, { headers, signal });
320
+ const rows = Array.isArray(json.data) ? json.data : [];
321
+ return rows
322
+ .map((row) => {
323
+ const id = typeof row.id === "string" ? row.id.trim() : "";
324
+ if (!id) {
325
+ return null;
326
+ }
327
+ const displayName = typeof row.name === "string" && row.name.trim()
328
+ ? row.name.trim()
329
+ : humanizeModelId(id);
330
+ return { id, displayName };
331
+ })
332
+ .filter((row) => row !== null);
333
+ }
334
+ function defaultOpenAiBase(provider) {
335
+ switch (provider) {
336
+ case "openai":
337
+ return "https://api.openai.com/v1";
338
+ case "groq":
339
+ return "https://api.groq.com/openai/v1";
340
+ case "openrouter":
341
+ return "https://openrouter.ai/api/v1";
342
+ case "xai":
343
+ return "https://api.x.ai/v1";
344
+ case "moonshot":
345
+ return "https://api.moonshot.ai/v1";
346
+ case "minimax":
347
+ return "https://api.minimax.io/v1";
348
+ default:
349
+ return "https://api.openai.com/v1";
350
+ }
351
+ }
352
+ async function listOllamaModels(baseURL, signal) {
353
+ const host = (baseURL || "http://127.0.0.1:11434").replace(/\/+$/, "");
354
+ const json = await fetchJson(`${host}/api/tags`, {
355
+ headers: { Accept: "application/json" },
356
+ signal,
357
+ });
358
+ const rows = Array.isArray(json.models) ? json.models : [];
359
+ return rows
360
+ .map((row) => {
361
+ const id = (row.name ?? row.model ?? "").trim();
362
+ if (!id) {
363
+ return null;
364
+ }
365
+ return { id, displayName: humanizeModelId(id) };
366
+ })
367
+ .filter((row) => row !== null);
368
+ }
369
+ async function listAnthropicModels(apiKey, baseURL, signal) {
370
+ if (!apiKey) {
371
+ throw new Error("API key is required.");
372
+ }
373
+ const base = (baseURL || "https://api.anthropic.com").replace(/\/+$/, "");
374
+ const json = await fetchJson(`${base}/v1/models`, {
375
+ headers: {
376
+ Accept: "application/json",
377
+ "x-api-key": apiKey,
378
+ "anthropic-version": "2023-06-01",
379
+ },
380
+ signal,
381
+ });
382
+ const rows = Array.isArray(json.data) ? json.data : [];
383
+ return rows
384
+ .map((row) => {
385
+ const id = typeof row.id === "string" ? row.id.trim() : "";
386
+ if (!id) {
387
+ return null;
388
+ }
389
+ const displayName = typeof row.display_name === "string" && row.display_name.trim()
390
+ ? row.display_name.trim()
391
+ : humanizeModelId(id);
392
+ return { id, displayName };
393
+ })
394
+ .filter((row) => row !== null);
395
+ }
396
+ async function listGoogleModels(apiKey, signal) {
397
+ if (!apiKey) {
398
+ throw new Error("API key is required.");
399
+ }
400
+ const url = `https://generativelanguage.googleapis.com/v1beta/models?key=${encodeURIComponent(apiKey)}`;
401
+ const json = await fetchJson(url, { headers: { Accept: "application/json" }, signal });
402
+ const rows = Array.isArray(json.models) ? json.models : [];
403
+ return rows
404
+ .map((row) => {
405
+ const raw = typeof row.name === "string" ? row.name.trim() : "";
406
+ if (!raw) {
407
+ return null;
408
+ }
409
+ const methods = Array.isArray(row.supportedGenerationMethods)
410
+ ? row.supportedGenerationMethods
411
+ : [];
412
+ // Chat / agent use generateContent. Drop Veo (predictLongRunning),
413
+ // AQA (generateAnswer), native-audio (bidiGenerateContent), etc.
414
+ if (!methods.includes("generateContent")) {
415
+ return null;
416
+ }
417
+ const id = raw.startsWith("models/") ? raw.slice("models/".length) : raw;
418
+ const displayName = typeof row.displayName === "string" && row.displayName.trim()
419
+ ? row.displayName.trim()
420
+ : humanizeModelId(id);
421
+ return { id, displayName };
422
+ })
423
+ .filter((row) => row !== null);
424
+ }
425
+ async function listBedrockModels(_region, _accessKeyId, _secretAccessKey) {
426
+ // Curated shortlist — ListFoundationModels needs SigV4; runtime uses
427
+ // profile / default credential chain instead of listing via the API.
428
+ return [
429
+ {
430
+ id: "anthropic.claude-sonnet-4-6",
431
+ displayName: "Claude Sonnet 4.6",
432
+ },
433
+ {
434
+ id: "anthropic.claude-haiku-4-5-20251001-v1:0",
435
+ displayName: "Claude Haiku 4.5",
436
+ },
437
+ {
438
+ id: "amazon.nova-pro-v1:0",
439
+ displayName: "Amazon Nova Pro",
440
+ },
441
+ {
442
+ id: "amazon.nova-lite-v1:0",
443
+ displayName: "Amazon Nova Lite",
444
+ },
445
+ ];
446
+ }
447
+ async function fetchJson(url, init) {
448
+ const controller = new AbortController();
449
+ const timer = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);
450
+ const onAbort = () => controller.abort();
451
+ init.signal?.addEventListener("abort", onAbort, { once: true });
452
+ try {
453
+ const response = await fetch(url, {
454
+ method: "GET",
455
+ headers: init.headers,
456
+ signal: controller.signal,
457
+ });
458
+ if (!response.ok) {
459
+ const body = await response.text().catch(() => "");
460
+ throw new Error(`Model list failed (${response.status})${body ? `: ${body.slice(0, 200)}` : ""}`);
461
+ }
462
+ return (await response.json());
463
+ }
464
+ finally {
465
+ clearTimeout(timer);
466
+ init.signal?.removeEventListener("abort", onAbort);
467
+ }
468
+ }
469
+ //# sourceMappingURL=models-prefetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models-prefetch.js","sourceRoot":"","sources":["../../../src/core/utils/models-prefetch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Shared first-run onboarding: validate inference + search credentials and
3
+ * write `~/.hooman/config.json`. Used by the CLI Ink flow and the VS Code
4
+ * webview onboarding.
5
+ */
6
+ import { type PrefetchProviderId } from "./models-prefetch.js";
7
+ import { type SearchProbeProvider } from "./search-probe.js";
8
+ export type OnboardingProviderId = PrefetchProviderId;
9
+ export type OnboardingSearchProvider = SearchProbeProvider;
10
+ export type OnboardingFieldDef = {
11
+ key: string;
12
+ label: string;
13
+ placeholder?: string;
14
+ sensitive?: boolean;
15
+ required?: boolean;
16
+ };
17
+ export type OnboardingInput = {
18
+ provider: OnboardingProviderId;
19
+ providerOptions: Record<string, string>;
20
+ azureDeployment?: string;
21
+ searchProvider: OnboardingSearchProvider;
22
+ searchOptions: Record<string, string>;
23
+ };
24
+ export type OnboardingProviderInput = {
25
+ provider: OnboardingProviderId;
26
+ providerOptions: Record<string, string>;
27
+ azureDeployment?: string;
28
+ };
29
+ export declare const ONBOARDING_PROVIDER_LABELS: Record<OnboardingProviderId, string>;
30
+ export declare const ONBOARDING_SEARCH_LABELS: Record<OnboardingSearchProvider, string>;
31
+ /** Inference providers offered during first-run onboarding. */
32
+ export declare const ONBOARDING_PROVIDERS: OnboardingProviderId[];
33
+ /** Search providers offered during first-run onboarding. */
34
+ export declare const ONBOARDING_SEARCH_PROVIDERS: OnboardingSearchProvider[];
35
+ /** True when `~/.hooman/config.json` (or `HOOMAN_HOME`) already exists. */
36
+ export declare function hasOnboardingConfig(path?: string): boolean;
37
+ export declare function onboardingProviderFields(provider: OnboardingProviderId): OnboardingFieldDef[];
38
+ export declare function onboardingSearchFields(provider: OnboardingSearchProvider): OnboardingFieldDef[];
39
+ export declare function initialOnboardingProviderValues(provider: OnboardingProviderId): Record<string, string>;
40
+ /** Validate provider credentials via the list endpoint (throws on failure). */
41
+ export declare function validateOnboardingProvider(input: OnboardingProviderInput): Promise<void>;
42
+ /** Probe the selected search provider with a one-result test query. */
43
+ export declare function validateOnboardingSearch(provider: OnboardingSearchProvider, options: Record<string, string>): Promise<void>;
44
+ /**
45
+ * Validate inference + search credentials, then write config.json.
46
+ * `configPath` defaults to {@link configJsonPath}.
47
+ */
48
+ export declare function completeOnboardingConfig(input: OnboardingInput, onStatus?: (phase: "listing" | "writing", message?: string) => void, configPath?: string): Promise<void>;