@turmind/halo 0.1.9

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 (296) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +143 -0
  3. package/admin-out/404.html +1 -0
  4. package/admin-out/_next/static/IBP_mwBDf-cPwZSZZGpi8/_buildManifest.js +1 -0
  5. package/admin-out/_next/static/IBP_mwBDf-cPwZSZZGpi8/_ssgManifest.js +1 -0
  6. package/admin-out/_next/static/chunks/1d2d5650-810a3ca1ae20cab5.js +18 -0
  7. package/admin-out/_next/static/chunks/200.3b8f8a74f005a134.js +1 -0
  8. package/admin-out/_next/static/chunks/220.3dc41cd6269b88e6.js +1 -0
  9. package/admin-out/_next/static/chunks/298-d6b224b569da4de0.js +1 -0
  10. package/admin-out/_next/static/chunks/304eda7d.b1ee7f523653e027.js +1 -0
  11. package/admin-out/_next/static/chunks/330.3b784cf0dcd69163.js +1 -0
  12. package/admin-out/_next/static/chunks/442.f4302087bddb1ec1.js +1 -0
  13. package/admin-out/_next/static/chunks/443.d1b289781793f8de.js +25 -0
  14. package/admin-out/_next/static/chunks/503-7c6d9935df6e0cea.js +1 -0
  15. package/admin-out/_next/static/chunks/533.5f2d4bfe3d076095.js +1 -0
  16. package/admin-out/_next/static/chunks/579.a2718ddd395a2f3a.js +1 -0
  17. package/admin-out/_next/static/chunks/635-3dd0043ed0520b9d.js +1 -0
  18. package/admin-out/_next/static/chunks/65.859665ba6717967a.js +1 -0
  19. package/admin-out/_next/static/chunks/661.a4fe93f3f2a5e871.js +1 -0
  20. package/admin-out/_next/static/chunks/688.4e014ac6cfc7e152.js +1 -0
  21. package/admin-out/_next/static/chunks/868.0c95dfe283400a00.js +1 -0
  22. package/admin-out/_next/static/chunks/app/_not-found/page-8e35399c8fd5016d.js +1 -0
  23. package/admin-out/_next/static/chunks/app/layout-58f773336e6fce61.js +1 -0
  24. package/admin-out/_next/static/chunks/app/page-cc8043335282d745.js +1 -0
  25. package/admin-out/_next/static/chunks/db534642.09d3c650ff587175.js +1 -0
  26. package/admin-out/_next/static/chunks/fb4ec4d6-3fa44f69484f91b9.js +1 -0
  27. package/admin-out/_next/static/chunks/framework-c3031ae54a63fe16.js +1 -0
  28. package/admin-out/_next/static/chunks/main-14b48e3c2588354f.js +1 -0
  29. package/admin-out/_next/static/chunks/main-app-483b436873410ddc.js +1 -0
  30. package/admin-out/_next/static/chunks/pages/_app-b2fc6e5f920d1b1a.js +1 -0
  31. package/admin-out/_next/static/chunks/pages/_error-f3696a8f3d67d150.js +1 -0
  32. package/admin-out/_next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
  33. package/admin-out/_next/static/chunks/webpack-8bd7ef88a6527feb.js +1 -0
  34. package/admin-out/_next/static/css/659eccb5db697b76.css +1 -0
  35. package/admin-out/_next/static/css/8fce4e1a54dac12a.css +3 -0
  36. package/admin-out/_next/static/media/19cfc7226ec3afaa-s.woff2 +0 -0
  37. package/admin-out/_next/static/media/21350d82a1f187e9-s.woff2 +0 -0
  38. package/admin-out/_next/static/media/8e9860b6e62d6359-s.woff2 +0 -0
  39. package/admin-out/_next/static/media/ba9851c3c22cd980-s.woff2 +0 -0
  40. package/admin-out/_next/static/media/c5fe6dc8356a8c31-s.woff2 +0 -0
  41. package/admin-out/_next/static/media/df0a9ae256c0569c-s.woff2 +0 -0
  42. package/admin-out/_next/static/media/e4af272ccee01ff0-s.p.woff2 +0 -0
  43. package/admin-out/favicon.ico +0 -0
  44. package/admin-out/icon.svg +18 -0
  45. package/admin-out/index.html +1 -0
  46. package/admin-out/index.txt +23 -0
  47. package/admin-out/monaco/vs/_commonjsHelpers-CT9FvmAN.js +1 -0
  48. package/admin-out/monaco/vs/abap-D-t0cyap.js +1 -0
  49. package/admin-out/monaco/vs/apex-CcIm7xu6.js +1 -0
  50. package/admin-out/monaco/vs/assets/css.worker-HnVq6Ewq.js +93 -0
  51. package/admin-out/monaco/vs/assets/editor.worker-Be8ye1pW.js +26 -0
  52. package/admin-out/monaco/vs/assets/html.worker-B51mlPHg.js +470 -0
  53. package/admin-out/monaco/vs/assets/json.worker-DKiEKt88.js +58 -0
  54. package/admin-out/monaco/vs/assets/ts.worker-CMbG-7ft.js +67731 -0
  55. package/admin-out/monaco/vs/azcli-BA0tQDCg.js +1 -0
  56. package/admin-out/monaco/vs/basic-languages/monaco.contribution.js +1 -0
  57. package/admin-out/monaco/vs/bat-C397hTD6.js +1 -0
  58. package/admin-out/monaco/vs/bicep-DF5aW17k.js +2 -0
  59. package/admin-out/monaco/vs/cameligo-plsz8qhj.js +1 -0
  60. package/admin-out/monaco/vs/clojure-Y2auQMzK.js +1 -0
  61. package/admin-out/monaco/vs/coffee-Bu45yuWE.js +1 -0
  62. package/admin-out/monaco/vs/cpp-CkKPQIni.js +1 -0
  63. package/admin-out/monaco/vs/csharp-CX28MZyh.js +1 -0
  64. package/admin-out/monaco/vs/csp-D8uWnyxW.js +1 -0
  65. package/admin-out/monaco/vs/css-CaeNmE3S.js +3 -0
  66. package/admin-out/monaco/vs/cssMode-CjiAH6dQ.js +1 -0
  67. package/admin-out/monaco/vs/cypher-DVThT8BS.js +1 -0
  68. package/admin-out/monaco/vs/dart-CmGfCvrO.js +1 -0
  69. package/admin-out/monaco/vs/dockerfile-CZqqYdch.js +1 -0
  70. package/admin-out/monaco/vs/ecl-30fUercY.js +1 -0
  71. package/admin-out/monaco/vs/editor/editor.main.css +1 -0
  72. package/admin-out/monaco/vs/editor/editor.main.js +5 -0
  73. package/admin-out/monaco/vs/editor.api-CalNCsUg.js +903 -0
  74. package/admin-out/monaco/vs/elixir-xjPaIfzF.js +1 -0
  75. package/admin-out/monaco/vs/flow9-DqtmStfK.js +1 -0
  76. package/admin-out/monaco/vs/freemarker2-Cz_sV6Md.js +3 -0
  77. package/admin-out/monaco/vs/fsharp-BOMdg4U1.js +1 -0
  78. package/admin-out/monaco/vs/go-D_hbi-Jt.js +1 -0
  79. package/admin-out/monaco/vs/graphql-CKUU4kLG.js +1 -0
  80. package/admin-out/monaco/vs/handlebars-OwglfO-1.js +1 -0
  81. package/admin-out/monaco/vs/hcl-DTaboeZW.js +1 -0
  82. package/admin-out/monaco/vs/html-Pa1xEWsY.js +1 -0
  83. package/admin-out/monaco/vs/htmlMode-Bz67EXwp.js +1 -0
  84. package/admin-out/monaco/vs/ini-CsNwO04R.js +1 -0
  85. package/admin-out/monaco/vs/java-CI4ZMsH9.js +1 -0
  86. package/admin-out/monaco/vs/javascript-PczUCGdz.js +1 -0
  87. package/admin-out/monaco/vs/jsonMode-DULH5oaX.js +7 -0
  88. package/admin-out/monaco/vs/julia-BwzEvaQw.js +1 -0
  89. package/admin-out/monaco/vs/kotlin-IUYPiTV8.js +1 -0
  90. package/admin-out/monaco/vs/language/css/monaco.contribution.js +1 -0
  91. package/admin-out/monaco/vs/language/html/monaco.contribution.js +1 -0
  92. package/admin-out/monaco/vs/language/json/monaco.contribution.js +1 -0
  93. package/admin-out/monaco/vs/language/typescript/monaco.contribution.js +1 -0
  94. package/admin-out/monaco/vs/less-C0eDYdqa.js +2 -0
  95. package/admin-out/monaco/vs/lexon-iON-Kj97.js +1 -0
  96. package/admin-out/monaco/vs/liquid-DqKjdPGy.js +1 -0
  97. package/admin-out/monaco/vs/loader.js +1368 -0
  98. package/admin-out/monaco/vs/lspLanguageFeatures-kM9O9rjY.js +4 -0
  99. package/admin-out/monaco/vs/lua-DtygF91M.js +1 -0
  100. package/admin-out/monaco/vs/m3-CsR4AuFi.js +1 -0
  101. package/admin-out/monaco/vs/markdown-C_rD0bIw.js +1 -0
  102. package/admin-out/monaco/vs/mdx-DEWtB1K5.js +1 -0
  103. package/admin-out/monaco/vs/mips-CiYP61RB.js +1 -0
  104. package/admin-out/monaco/vs/monaco.contribution-D2OdxNBt.js +1 -0
  105. package/admin-out/monaco/vs/monaco.contribution-DO3azKX8.js +1 -0
  106. package/admin-out/monaco/vs/monaco.contribution-EcChJV6a.js +1 -0
  107. package/admin-out/monaco/vs/monaco.contribution-qLAYrEOP.js +1 -0
  108. package/admin-out/monaco/vs/msdax-C38-sJlp.js +1 -0
  109. package/admin-out/monaco/vs/mysql-CdtbpvbG.js +1 -0
  110. package/admin-out/monaco/vs/nls.messages-loader.js +1 -0
  111. package/admin-out/monaco/vs/nls.messages.cs.js.js +17 -0
  112. package/admin-out/monaco/vs/nls.messages.de.js.js +17 -0
  113. package/admin-out/monaco/vs/nls.messages.es.js.js +17 -0
  114. package/admin-out/monaco/vs/nls.messages.fr.js.js +15 -0
  115. package/admin-out/monaco/vs/nls.messages.it.js.js +15 -0
  116. package/admin-out/monaco/vs/nls.messages.ja.js.js +17 -0
  117. package/admin-out/monaco/vs/nls.messages.js.js +10 -0
  118. package/admin-out/monaco/vs/nls.messages.ko.js.js +25 -0
  119. package/admin-out/monaco/vs/nls.messages.pl.js.js +17 -0
  120. package/admin-out/monaco/vs/nls.messages.pt-br.js.js +6 -0
  121. package/admin-out/monaco/vs/nls.messages.ru.js.js +17 -0
  122. package/admin-out/monaco/vs/nls.messages.tr.js.js +15 -0
  123. package/admin-out/monaco/vs/nls.messages.zh-cn.js.js +17 -0
  124. package/admin-out/monaco/vs/nls.messages.zh-tw.js.js +15 -0
  125. package/admin-out/monaco/vs/objective-c-CntZFaHX.js +1 -0
  126. package/admin-out/monaco/vs/pascal-r6kuqfl_.js +1 -0
  127. package/admin-out/monaco/vs/pascaligo-BiXoTmXh.js +1 -0
  128. package/admin-out/monaco/vs/perl-DABw_TcH.js +1 -0
  129. package/admin-out/monaco/vs/pgsql-me_jFXeX.js +1 -0
  130. package/admin-out/monaco/vs/php-D_kh-9LK.js +1 -0
  131. package/admin-out/monaco/vs/pla-VfZjczW0.js +1 -0
  132. package/admin-out/monaco/vs/postiats-BBSzz8Pk.js +1 -0
  133. package/admin-out/monaco/vs/powerquery-Dt-g_2cc.js +1 -0
  134. package/admin-out/monaco/vs/powershell-B-7ap1zc.js +1 -0
  135. package/admin-out/monaco/vs/protobuf-BmtuEB1A.js +2 -0
  136. package/admin-out/monaco/vs/pug-BRpRNeEb.js +1 -0
  137. package/admin-out/monaco/vs/python-Cr0UkIbn.js +1 -0
  138. package/admin-out/monaco/vs/qsharp-BzsFaUU9.js +1 -0
  139. package/admin-out/monaco/vs/r-f8dDdrp4.js +1 -0
  140. package/admin-out/monaco/vs/razor-BYAHOTkz.js +1 -0
  141. package/admin-out/monaco/vs/redis-fvZQY4PI.js +1 -0
  142. package/admin-out/monaco/vs/redshift-45Et0LQi.js +1 -0
  143. package/admin-out/monaco/vs/restructuredtext-C7UUFKFD.js +1 -0
  144. package/admin-out/monaco/vs/ruby-CZO8zYTz.js +1 -0
  145. package/admin-out/monaco/vs/rust-Bfetafyc.js +1 -0
  146. package/admin-out/monaco/vs/sb-3GYllVck.js +1 -0
  147. package/admin-out/monaco/vs/scala-foMgrKo1.js +1 -0
  148. package/admin-out/monaco/vs/scheme-CHdMtr7p.js +1 -0
  149. package/admin-out/monaco/vs/scss-C1cmLt9V.js +3 -0
  150. package/admin-out/monaco/vs/shell-ClXCKCEW.js +1 -0
  151. package/admin-out/monaco/vs/solidity-MZ6ExpPy.js +1 -0
  152. package/admin-out/monaco/vs/sophia-DWkuSsPQ.js +1 -0
  153. package/admin-out/monaco/vs/sparql-AUGFYSyk.js +1 -0
  154. package/admin-out/monaco/vs/sql-32GpJSV2.js +1 -0
  155. package/admin-out/monaco/vs/st-CuDFIVZ_.js +1 -0
  156. package/admin-out/monaco/vs/swift-n-2HociN.js +3 -0
  157. package/admin-out/monaco/vs/systemverilog-Ch4vA8Yt.js +1 -0
  158. package/admin-out/monaco/vs/tcl-D74tq1nH.js +1 -0
  159. package/admin-out/monaco/vs/tsMode-CZz1Umrk.js +11 -0
  160. package/admin-out/monaco/vs/twig-C6taOxMV.js +1 -0
  161. package/admin-out/monaco/vs/typescript-DfOrAzoV.js +1 -0
  162. package/admin-out/monaco/vs/typespec-D-PIh9Xw.js +1 -0
  163. package/admin-out/monaco/vs/vb-Dyb2648j.js +1 -0
  164. package/admin-out/monaco/vs/wgsl-BhLXMOR0.js +298 -0
  165. package/admin-out/monaco/vs/workers-DcJshg-q.js +1 -0
  166. package/admin-out/monaco/vs/xml-CdsdnY8S.js +1 -0
  167. package/admin-out/monaco/vs/yaml-DYGvmE88.js +1 -0
  168. package/bin/halo.js +9 -0
  169. package/bundled-docs/design/agent.md +145 -0
  170. package/bundled-docs/design/architecture.md +270 -0
  171. package/bundled-docs/design/background-dispatch.md +151 -0
  172. package/bundled-docs/design/command.md +58 -0
  173. package/bundled-docs/design/cron.md +88 -0
  174. package/bundled-docs/design/evolution.md +383 -0
  175. package/bundled-docs/design/express-self.md +145 -0
  176. package/bundled-docs/design/feishu.md +224 -0
  177. package/bundled-docs/design/halo-city.md +112 -0
  178. package/bundled-docs/design/prompt-system.md +411 -0
  179. package/bundled-docs/design/session.md +321 -0
  180. package/bundled-docs/design/slack.md +212 -0
  181. package/bundled-docs/design/storage.md +578 -0
  182. package/bundled-docs/design/telegram.md +161 -0
  183. package/bundled-docs/design/web.md +222 -0
  184. package/bundled-docs/design/wechat.md +146 -0
  185. package/bundled-docs/design/ws.md +144 -0
  186. package/bundled-docs/dev/acp-adapter.md +337 -0
  187. package/bundled-docs/dev/add-channel.md +376 -0
  188. package/bundled-docs/dev/add-model-provider.md +386 -0
  189. package/bundled-docs/dev/api.md +686 -0
  190. package/bundled-docs/dev/deploy.md +198 -0
  191. package/bundled-docs/dev/desktop-packaging.md +327 -0
  192. package/bundled-docs/dev/env.md +158 -0
  193. package/bundled-docs/dev/logging.md +85 -0
  194. package/bundled-docs/dev/previews.md +225 -0
  195. package/bundled-docs/dev/tools.md +331 -0
  196. package/bundled-docs/guide/README.md +29 -0
  197. package/bundled-docs/guide/agents.md +264 -0
  198. package/bundled-docs/guide/channels/README.md +62 -0
  199. package/bundled-docs/guide/channels/acp.md +150 -0
  200. package/bundled-docs/guide/channels/feishu.md +154 -0
  201. package/bundled-docs/guide/channels/slack.md +156 -0
  202. package/bundled-docs/guide/channels/telegram.md +112 -0
  203. package/bundled-docs/guide/channels/web.md +149 -0
  204. package/bundled-docs/guide/channels/wechat.md +110 -0
  205. package/bundled-docs/guide/chat.md +112 -0
  206. package/bundled-docs/guide/cli.md +197 -0
  207. package/bundled-docs/guide/getting-started.md +93 -0
  208. package/bundled-docs/guide/secrets-and-credentials.md +161 -0
  209. package/bundled-docs/guide/sessions.md +104 -0
  210. package/bundled-docs/guide/skills.md +302 -0
  211. package/bundled-docs/guide/testing-agents-and-skills.md +136 -0
  212. package/bundled-docs/guide/workspace.md +131 -0
  213. package/bundled-docs/plans/cron-tasks.md +362 -0
  214. package/bundled-docs/plans/design-suggestions.md +203 -0
  215. package/bundled-docs/plans/issue-session-deep-nesting.md +208 -0
  216. package/bundled-docs/plans/launch-plan.md +111 -0
  217. package/bundled-docs/plans/md-and-agent-refactor.md +197 -0
  218. package/bundled-docs/plans/remote-mac-worker.md +196 -0
  219. package/bundled-docs/plans/roadmap.md +40 -0
  220. package/bundled-docs/plans/self-evolution.md +1379 -0
  221. package/bundled-docs/plans/todo.md +32 -0
  222. package/bundled-docs/plans/weixin-channel.md +255 -0
  223. package/bundled-docs/requirements/agent.md +92 -0
  224. package/bundled-docs/requirements/chat.md +81 -0
  225. package/bundled-docs/requirements/command.md +130 -0
  226. package/bundled-docs/requirements/editor.md +82 -0
  227. package/bundled-docs/requirements/explorer.md +89 -0
  228. package/bundled-docs/requirements/overview.md +62 -0
  229. package/bundled-docs/requirements/session.md +73 -0
  230. package/bundled-docs/requirements/settings.md +224 -0
  231. package/bundled-docs/requirements/skill.md +125 -0
  232. package/bundled-docs/requirements/source-control.md +82 -0
  233. package/bundled-docs/requirements/terminal.md +118 -0
  234. package/bundled-docs/requirements/workspace.md +80 -0
  235. package/bundled-docs/test/docs-seeding.md +101 -0
  236. package/bundled-docs/test/session.md +374 -0
  237. package/dist/index.js +26750 -0
  238. package/package.json +67 -0
  239. package/templates/INSTRUCTIONS.md +25 -0
  240. package/templates/agents/__apply_agent__/AGENT.md +229 -0
  241. package/templates/agents/__apply_agent__/agent.yaml +30 -0
  242. package/templates/agents/__evo_agent__/AGENT.md +323 -0
  243. package/templates/agents/__evo_agent__/agent.yaml +29 -0
  244. package/templates/agents/__score__/AGENT.md +177 -0
  245. package/templates/agents/__score__/agent.yaml +29 -0
  246. package/templates/agents/deep-executor/AGENT.md +60 -0
  247. package/templates/agents/deep-executor/agent.yaml +25 -0
  248. package/templates/agents/default/AGENT.md +38 -0
  249. package/templates/agents/default/agent.yaml +51 -0
  250. package/templates/agents/executor/AGENT.md +38 -0
  251. package/templates/agents/executor/agent.yaml +25 -0
  252. package/templates/aliases.yaml +26 -0
  253. package/templates/canvas/self.html +660 -0
  254. package/templates/config.yaml +69 -0
  255. package/templates/models/anthropic.yaml +47 -0
  256. package/templates/models/aws-bedrock-claude-invoke.yaml +156 -0
  257. package/templates/models/aws-bedrock-mantle.yaml +89 -0
  258. package/templates/models/deepseek.yaml +62 -0
  259. package/templates/models/doubao.yaml +137 -0
  260. package/templates/models/hunyuan.yaml +56 -0
  261. package/templates/models/kimi.yaml +41 -0
  262. package/templates/models/mimo-token-plan-china.yaml +61 -0
  263. package/templates/models/minimax.yaml +80 -0
  264. package/templates/models/openai.yaml +51 -0
  265. package/templates/models/qwen.yaml +78 -0
  266. package/templates/optional-skills/tavily-web-search/SKILL.md +91 -0
  267. package/templates/optional-skills/tavily-web-search/config.yaml +10 -0
  268. package/templates/prompts/all/TOOL_GUIDELINES.md +35 -0
  269. package/templates/prompts/all/TOOL_SHELL.md +4 -0
  270. package/templates/prompts/all/TOOL_SHELL.windows.md +7 -0
  271. package/templates/prompts/bootstrap/BOOTSTRAP.md +26 -0
  272. package/templates/prompts/root/WORKSPACE_MEMORY.md +11 -0
  273. package/templates/schema.sql +30 -0
  274. package/templates/skills/acp/SKILL.md +236 -0
  275. package/templates/skills/acp/templates/SKILL.md.tmpl +74 -0
  276. package/templates/skills/acp/templates/ask.py +176 -0
  277. package/templates/skills/acp/templates/config.yaml.tmpl +33 -0
  278. package/templates/skills/agent/SKILL.md +128 -0
  279. package/templates/skills/aws-knowledge/SKILL.md +82 -0
  280. package/templates/skills/aws-knowledge/scripts/aws_kb.py +61 -0
  281. package/templates/skills/cron/SKILL.md +217 -0
  282. package/templates/skills/cron/manage-cron.py +434 -0
  283. package/templates/skills/halo/SKILL.md +98 -0
  284. package/templates/skills/nova-web-search/SKILL.md +65 -0
  285. package/templates/skills/self/SKILL.md +139 -0
  286. package/templates/skills/send-file/SKILL.md +28 -0
  287. package/templates/skills/send-file/feishu.md +16 -0
  288. package/templates/skills/send-file/slack.md +7 -0
  289. package/templates/skills/send-file/telegram.md +9 -0
  290. package/templates/skills/send-file/web.md +6 -0
  291. package/templates/skills/send-file/wechat.md +8 -0
  292. package/templates/skills/skill/SKILL.md +131 -0
  293. package/templates/skills/workspace/SKILL.md +28 -0
  294. package/templates/skills/workspace/setup-tidy.md +265 -0
  295. package/templates/skills/workspace/share.md +187 -0
  296. package/templates/skills/workspace/stage.py +487 -0
@@ -0,0 +1,69 @@
1
+ # Halo System Configuration
2
+ # Self-documenting: each leaf is { value, default, description, description_zh }.
3
+ #
4
+ # Env var overrides (highest priority):
5
+ # server.port → HALO_PORT
6
+ # server.password → HALO_PASSWORD
7
+ # server.cors_origins → HALO_CORS_ORIGINS (comma-separated)
8
+ # timeout.shell_exec → HALO_SHELL_TIMEOUT
9
+ # timeout.web_fetch → HALO_WEB_FETCH_TIMEOUT
10
+ # timeout.session_grace → HALO_SESSION_GRACE
11
+ # timeout.terminal_grace → HALO_TERMINAL_GRACE
12
+ # logging.max_file_size → HALO_LOG_MAX_SIZE
13
+ # logging.max_files → HALO_LOG_MAX_FILES
14
+
15
+ server:
16
+ port:
17
+ value: 9527
18
+ default: 9527
19
+ description: "HTTP/WS port the server listens on."
20
+ description_zh: "服务监听的 HTTP/WS 端口。"
21
+ password:
22
+ value: ""
23
+ default: ""
24
+ description: "Admin password — stored as a scrypt hash, set via `halo setup`. To reset a forgotten password, blank this field and re-run `halo setup`."
25
+ description_zh: "管理员密码(scrypt hash),通过 `halo setup` 设置。忘记密码时清空此字段并重新运行 `halo setup`。"
26
+ jwt_secret:
27
+ value: ""
28
+ default: ""
29
+ description: "Signing key for session JWTs. Auto-generated by `halo setup`; rotated on password change so old cookies are invalidated."
30
+ description_zh: "Session JWT 签名密钥。由 `halo setup` 自动生成,密码更改时一同轮换以使旧 cookie 失效。"
31
+ cors_origins:
32
+ value: []
33
+ default: []
34
+ description: "CORS allowlist. Empty = reflect any origin (recommended for self-hosted single-user setups). Set a non-empty list of explicit origins to enforce strict CORS."
35
+ description_zh: "CORS 白名单。空 = 反射任意来源(自部署单用户场景推荐)。填入显式来源列表则启用严格 CORS。"
36
+
37
+ timeout:
38
+ shell_exec:
39
+ value: 120000
40
+ default: 120000
41
+ description: "shell_exec tool timeout (ms)."
42
+ description_zh: "shell_exec 工具的超时(毫秒)。"
43
+ web_fetch:
44
+ value: 10000
45
+ default: 10000
46
+ description: "web_fetch tool timeout (ms)."
47
+ description_zh: "web_fetch 工具的超时(毫秒)。"
48
+ session_grace:
49
+ value: 300000
50
+ default: 300000
51
+ description: "Idle session grace period before unloading from memory (ms)."
52
+ description_zh: "空闲会话保留在内存中的时长(毫秒)。"
53
+ terminal_grace:
54
+ value: 300000
55
+ default: 300000
56
+ description: "Terminal grace period after disconnect before killing the pty (ms)."
57
+ description_zh: "终端断连后保留 pty 的时长(毫秒)。"
58
+
59
+ logging:
60
+ max_file_size:
61
+ value: 10485760
62
+ default: 10485760
63
+ description: "Per-log-file size cap before rotation (bytes)."
64
+ description_zh: "单个日志文件的大小上限(字节)。"
65
+ max_files:
66
+ value: 5
67
+ default: 5
68
+ description: "Number of rotated log files to keep."
69
+ description_zh: "保留的日志文件数量。"
@@ -0,0 +1,47 @@
1
+ id: anthropic
2
+ displayName: Anthropic (Generic)
3
+ displayName_zh: Anthropic(通用)
4
+ description: Generic Anthropic Messages API. Use for api.anthropic.com or any Anthropic-compatible third-party gateway.
5
+ description_zh: 通用 Anthropic Messages API。可用于 api.anthropic.com 原生端点或任何 Anthropic 兼容的第三方网关。
6
+ defaultEndpoint: https://api.anthropic.com
7
+ defaultModelId: claude-sonnet-4-6
8
+ endpointPresets:
9
+ - https://api.anthropic.com
10
+
11
+ secrets:
12
+ - key: api_key
13
+ description: Anthropic API Key. Format starts with sk-ant-.
14
+ description_zh: Anthropic API Key,sk-ant- 开头
15
+ default: <<ANTHROPIC_API_KEY>>
16
+ secret: true
17
+
18
+ # Placeholder model — the user is expected to set the actual model id
19
+ # (claude-sonnet-4-6, claude-opus-4-7, etc.) and the matching endpoint.
20
+ # capabilities are deliberately permissive; flip what your real endpoint
21
+ # doesn't support.
22
+ #
23
+ # Custom model ids (anything not listed under `models:`) are treated as
24
+ # fully-permissive in the admin form — image/video/audio toggles,
25
+ # caching TTL, thinking effort/budget all become editable.
26
+ models:
27
+ - id: claude-sonnet-4-6
28
+ displayName: Claude Sonnet 4.6 (placeholder)
29
+ maxOutputTokens: 64000
30
+ capabilities:
31
+ image: true
32
+ video: false
33
+ audio: false
34
+ promptCaching:
35
+ default: 1h
36
+ ttlPresets:
37
+ - { value: 5m, label: 5min }
38
+ - { value: 1h, label: 1hour }
39
+ thinking:
40
+ mode: adaptive
41
+ defaultEnabled: true
42
+ default: medium
43
+ effortPresets:
44
+ - { value: low, label: Low }
45
+ - { value: medium, label: Medium }
46
+ - { value: high, label: High }
47
+ - { value: max, label: Max }
@@ -0,0 +1,156 @@
1
+ id: aws-bedrock-claude-invoke
2
+ displayName: AWS Bedrock Claude (Invoke API)
3
+ displayName_zh: AWS Bedrock Claude(Invoke API)
4
+ description: Invokes Bedrock via InvokeModel (non-streaming), sends raw Anthropic Messages API format
5
+ description_zh: 通过 Bedrock InvokeModel(非流式)调用,发送原生 Anthropic Messages API 格式
6
+ defaultEndpoint: https://bedrock-runtime.us-east-1.amazonaws.com
7
+ endpointPresets:
8
+ - https://bedrock-runtime.us-east-1.amazonaws.com
9
+ - https://bedrock-runtime.us-west-2.amazonaws.com
10
+ - https://bedrock-runtime.eu-west-1.amazonaws.com
11
+ - https://bedrock-runtime.ap-northeast-1.amazonaws.com
12
+
13
+ # When the user switches to this provider, the form lands on this model id
14
+ # (falls back to models[0].id if missing). Sonnet 4.6 is the daily-driver pick:
15
+ # Opus 4.6/4.7 cost 5–10x more, Haiku 4.5 is best for narrow agents.
16
+ defaultModelId: global.anthropic.claude-sonnet-4-6
17
+
18
+ # Server-side credentials. Stored at <provider-id>.secrets.<key> in
19
+ # settings.yaml; never injected into agent prompts or shell_exec.
20
+ secrets:
21
+ - key: access_key_id
22
+ description: AWS Access Key ID. Leave empty to use the AWS credential chain (env / ~/.aws / EC2 role).
23
+ description_zh: AWS Access Key ID。留空则使用凭证链(环境变量 / ~/.aws/credentials / EC2 角色)
24
+ default: <<AWS_ACCESS_KEY_ID>>
25
+ secret: true
26
+ - key: secret_access_key
27
+ description: AWS Secret Access Key. Leave empty to use the credential chain.
28
+ description_zh: AWS Secret Access Key。留空则使用凭证链
29
+ default: <<AWS_SECRET_ACCESS_KEY>>
30
+ secret: true
31
+
32
+ # capability defaults (per model):
33
+ # promptCaching.default → auto-on value when toggled / on provider switch
34
+ # thinking.defaultEnabled → start with Thinking checked for new agents
35
+ # thinking.default → effort selected when Thinking is on (adaptive)
36
+ # thinking.defaultBudgetTokens → budget selected when Thinking is on (manual)
37
+ models:
38
+ - id: global.anthropic.claude-sonnet-4-6
39
+ displayName: Claude Sonnet 4.6
40
+ maxOutputTokens: 64000
41
+ capabilities:
42
+ image: true
43
+ video: false
44
+ audio: false
45
+ promptCaching:
46
+ default: 1h
47
+ ttlPresets:
48
+ - { value: 5m, label: 5min }
49
+ - { value: 1h, label: 1hour }
50
+ thinking:
51
+ # adaptive = `thinking: { type: 'adaptive' }` + `output_config.effort`
52
+ # manual = `thinking: { type: 'enabled', budget_tokens: N }` (effort
53
+ # translated to a budget number at runtime)
54
+ # See bedrock-agent.ts for the effort→budget table used in manual mode.
55
+ mode: adaptive
56
+ defaultEnabled: true
57
+ default: medium
58
+ effortPresets:
59
+ - { value: low, label: Low }
60
+ - { value: medium, label: Medium }
61
+ - { value: high, label: High }
62
+ - { value: max, label: Max }
63
+
64
+ - id: global.anthropic.claude-opus-4-6-v1
65
+ displayName: Claude Opus 4.6
66
+ maxOutputTokens: 128000
67
+ capabilities:
68
+ image: true
69
+ video: false
70
+ audio: false
71
+ promptCaching:
72
+ default: 1h
73
+ ttlPresets:
74
+ - { value: 5m, label: 5min }
75
+ - { value: 1h, label: 1hour }
76
+ thinking:
77
+ mode: adaptive
78
+ defaultEnabled: true
79
+ default: medium
80
+ effortPresets:
81
+ - { value: low, label: Low }
82
+ - { value: medium, label: Medium }
83
+ - { value: high, label: High }
84
+ - { value: max, label: Max }
85
+
86
+ - id: global.anthropic.claude-opus-4-7
87
+ displayName: Claude Opus 4.7
88
+ maxOutputTokens: 128000
89
+ capabilities:
90
+ image: true
91
+ video: false
92
+ audio: false
93
+ promptCaching:
94
+ default: 1h
95
+ ttlPresets:
96
+ - { value: 5m, label: 5min }
97
+ - { value: 1h, label: 1hour }
98
+ thinking:
99
+ mode: adaptive
100
+ defaultEnabled: true
101
+ default: high # Opus 4.7 is the heavy-thinking model — high pays off
102
+ effortPresets:
103
+ - { value: low, label: Low }
104
+ - { value: medium, label: Medium }
105
+ - { value: high, label: High }
106
+ - { value: xhigh, label: XHigh }
107
+ - { value: max, label: Max }
108
+
109
+ - id: global.anthropic.claude-opus-4-8
110
+ displayName: Claude Opus 4.8
111
+ maxOutputTokens: 128000
112
+ capabilities:
113
+ image: true
114
+ video: false
115
+ audio: false
116
+ promptCaching:
117
+ default: 1h
118
+ ttlPresets:
119
+ - { value: 5m, label: 5min }
120
+ - { value: 1h, label: 1hour }
121
+ thinking:
122
+ # Bedrock-confirmed adaptive effort set for opus-4-8 (verified by an
123
+ # invalid-value probe): low / medium / high / xhigh / max.
124
+ mode: adaptive
125
+ defaultEnabled: true
126
+ default: high # Opus 4.8 is the latest flagship — high by default; xhigh/max on demand
127
+ effortPresets:
128
+ - { value: low, label: Low }
129
+ - { value: medium, label: Medium }
130
+ - { value: high, label: High }
131
+ - { value: xhigh, label: XHigh }
132
+ - { value: max, label: Max }
133
+
134
+ - id: global.anthropic.claude-haiku-4-5-20251001-v1:0
135
+ displayName: Claude Haiku 4.5
136
+ maxOutputTokens: 64000
137
+ capabilities:
138
+ image: true
139
+ video: false
140
+ audio: false
141
+ promptCaching:
142
+ default: 1h
143
+ ttlPresets:
144
+ - { value: 5m, label: 5min }
145
+ - { value: 1h, label: 1hour }
146
+ thinking:
147
+ # Haiku 4.5 only supports legacy budget_tokens; UI shows a number input.
148
+ # bedrock-agent.ts translates effort labels via the effort→budget table.
149
+ mode: manual
150
+ defaultEnabled: false # Haiku is the cheap-fast model — thinking off by default
151
+ defaultBudgetTokens: 4000
152
+ effortPresets:
153
+ - { value: low, label: Low }
154
+ - { value: medium, label: Medium }
155
+ - { value: high, label: High }
156
+ - { value: max, label: Max }
@@ -0,0 +1,89 @@
1
+ id: aws-bedrock-mantle
2
+ displayName: AWS Bedrock Mantle (OpenAI GPT-5.x)
3
+ displayName_zh: AWS Bedrock Mantle(OpenAI GPT-5.x)
4
+ description: OpenAI GPT-5.5 / 5.4 on Amazon Bedrock via the bedrock-mantle endpoint (OpenAI Responses API only — not Converse/InvokeModel). us-east-2 only.
5
+ description_zh: 通过 Bedrock Mantle 端点调用 OpenAI GPT-5.5 / 5.4(仅 OpenAI Responses API,不支持 Converse/InvokeModel)。仅 us-east-2。
6
+ # Mantle is a distinct endpoint from bedrock-runtime; the OpenAI surface lives
7
+ # under /openai/v1. GPT-5.5 is us-east-2 only (GPT-5.4 also allows us-west-2,
8
+ # but we ship the us-east-2 endpoint that serves both).
9
+ defaultEndpoint: https://bedrock-mantle.us-east-2.api.aws/openai/v1
10
+ endpointPresets:
11
+ - https://bedrock-mantle.us-east-2.api.aws/openai/v1
12
+
13
+ defaultModelId: openai.gpt-5.5
14
+
15
+ # Auth: a Bedrock long-term API key passed as a Bearer token. Generate at
16
+ # console → Bedrock → API keys → long-term. The default placeholder reads the
17
+ # AWS_BEARER_TOKEN_BEDROCK env var; leave the env unset and fill the key in
18
+ # Settings to store it in secrets/settings.yaml instead. resolveApiKey() reads
19
+ # `api_key`, so the bearer token flows straight to the agent with no extra wiring.
20
+ secrets:
21
+ - key: api_key
22
+ description: Bedrock long-term API key (sent as a Bearer token). Defaults to the AWS_BEARER_TOKEN_BEDROCK env var.
23
+ description_zh: Bedrock 长期 API Key(作为 Bearer 令牌发送)。默认读取 AWS_BEARER_TOKEN_BEDROCK 环境变量。
24
+ default: <<AWS_BEARER_TOKEN_BEDROCK>>
25
+ secret: true
26
+
27
+ # capability notes for Mantle/OpenAI:
28
+ # - image: input only (text/image in, text-only out — no audio/video/image gen)
29
+ # - promptCaching: AUTOMATIC (prefix ≥1024 tok, ~5min idle TTL). No cache_control
30
+ # is sent and there's no 1h option — single 5m preset reflects reality, the
31
+ # runtime never writes cache control, it only reads cached_tokens back.
32
+ # - thinking: adaptive via reasoning.effort = low|medium|high (no budget_tokens
33
+ # mode; xhigh/max would be mapped down to high by the runtime).
34
+ models:
35
+ - id: openai.gpt-5.5
36
+ displayName: GPT-5.5
37
+ maxOutputTokens: 64000
38
+ capabilities:
39
+ image: true
40
+ video: false
41
+ audio: false
42
+ promptCaching:
43
+ default: 5m
44
+ ttlPresets:
45
+ - { value: 5m, label: 5min }
46
+ thinking:
47
+ mode: adaptive
48
+ defaultEnabled: true
49
+ default: medium
50
+ effortPresets:
51
+ - { value: low, label: Low }
52
+ - { value: medium, label: Medium }
53
+ - { value: high, label: High }
54
+ # Output length of the final answer (Responses API `text.verbosity`),
55
+ # separate from reasoning effort. Default low = terse + cheaper, best for
56
+ # tool-driven agent turns. Override per-agent via agent.yaml model.verbosity.
57
+ verbosity:
58
+ default: low
59
+ presets:
60
+ - { value: low, label: Low }
61
+ - { value: medium, label: Medium }
62
+ - { value: high, label: High }
63
+
64
+ - id: openai.gpt-5.4
65
+ displayName: GPT-5.4
66
+ maxOutputTokens: 64000
67
+ capabilities:
68
+ image: true
69
+ video: false
70
+ audio: false
71
+ promptCaching:
72
+ default: 5m
73
+ ttlPresets:
74
+ - { value: 5m, label: 5min }
75
+ thinking:
76
+ mode: adaptive
77
+ defaultEnabled: true
78
+ default: medium
79
+ effortPresets:
80
+ - { value: low, label: Low }
81
+ - { value: medium, label: Medium }
82
+ - { value: high, label: High }
83
+ # See GPT-5.5 above — final-answer length, default low, per-agent overridable.
84
+ verbosity:
85
+ default: low
86
+ presets:
87
+ - { value: low, label: Low }
88
+ - { value: medium, label: Medium }
89
+ - { value: high, label: High }
@@ -0,0 +1,62 @@
1
+ id: deepseek
2
+ displayName: DeepSeek
3
+ displayName_zh: DeepSeek
4
+ description: DeepSeek V4 via OpenAI-compatible chat completions API
5
+ description_zh: DeepSeek V4,通过 OpenAI 兼容的 chat completions API 调用
6
+ defaultEndpoint: https://api.deepseek.com
7
+
8
+ secrets:
9
+ - key: api_key
10
+ description: DeepSeek API Key. Get from https://platform.deepseek.com/api_keys
11
+ description_zh: DeepSeek API Key。从 https://platform.deepseek.com/api_keys 获取
12
+ default: <<DEEPSEEK_API_KEY>>
13
+ secret: true
14
+
15
+ # Capabilities verified 2026-05-27 via live probes. DeepSeek's image_url
16
+ # blocks are rejected at the JSON-deserialize layer ("unknown variant
17
+ # image_url"), so image:false is correct. reasoning_effort accepts
18
+ # { low, medium, high, max, xhigh } — bogus values 400 with the full
19
+ # valid list in the error. Caching is automatic; cached_tokens shows up
20
+ # from turn 2.
21
+ models:
22
+ - id: deepseek-v4-pro
23
+ displayName: DeepSeek V4 Pro
24
+ maxOutputTokens: 65536
25
+ capabilities:
26
+ image: false
27
+ video: false
28
+ audio: false
29
+ promptCaching:
30
+ default: 5m
31
+ ttlPresets:
32
+ - { value: 5m, label: 5min }
33
+ thinking:
34
+ defaultEnabled: true
35
+ default: medium
36
+ effortPresets:
37
+ - { value: low, label: Low }
38
+ - { value: medium, label: Medium }
39
+ - { value: high, label: High }
40
+ - { value: max, label: Max }
41
+ - { value: xhigh, label: XHigh }
42
+
43
+ - id: deepseek-v4-flash
44
+ displayName: DeepSeek V4 Flash
45
+ maxOutputTokens: 65536
46
+ capabilities:
47
+ image: false
48
+ video: false
49
+ audio: false
50
+ promptCaching:
51
+ default: 5m
52
+ ttlPresets:
53
+ - { value: 5m, label: 5min }
54
+ thinking:
55
+ defaultEnabled: true
56
+ default: medium
57
+ effortPresets:
58
+ - { value: low, label: Low }
59
+ - { value: medium, label: Medium }
60
+ - { value: high, label: High }
61
+ - { value: max, label: Max }
62
+ - { value: xhigh, label: XHigh }
@@ -0,0 +1,137 @@
1
+ id: doubao
2
+ displayName: Doubao (Volcengine)
3
+ displayName_zh: 豆包(火山方舟)
4
+ description: ByteDance Doubao Seed-2.0 family on Volcengine Ark — pro / lite / mini / code, OpenAI-compatible
5
+ description_zh: 字节豆包 Seed-2.0 系列(火山方舟),OpenAI 兼容协议
6
+ defaultEndpoint: https://ark.cn-beijing.volces.com/api/v3
7
+ defaultModelId: doubao-seed-2-0-pro-260215
8
+
9
+ secrets:
10
+ - key: api_key
11
+ description: Volcengine Ark API Key. Format starts with ark-. Get from https://console.volcengine.com/ark
12
+ description_zh: 火山方舟 API Key,ark- 开头。从 https://console.volcengine.com/ark 获取
13
+ default: <<ARK_API_KEY>>
14
+ secret: true
15
+
16
+ # Capability notes for Doubao Seed-2.0 — verified end-to-end on 2026-05-26:
17
+ # - All four models share the same wire shape (OpenAI chat completions
18
+ # + Volcengine `thinking:{type:'enabled'/'disabled'}`).
19
+ # - thinking type=auto is rejected as "Unsupported" — only enabled/disabled.
20
+ # - reasoning_content is returned in message.reasoning_content when
21
+ # thinking is enabled; suppressed when disabled.
22
+ # - Caching is automatic — no cache_control parameter required. Verified
23
+ # 2026-05-26 with a >4096-token system prompt and 5 same-prompt turns:
24
+ # all four models (pro/lite/mini/code) hit cache at least once.
25
+ # Caveats observed empirically:
26
+ # - prompts shorter than ~4096 tokens generally don't cache at all;
27
+ # - first 1-3 turns of a fresh prompt commonly miss while the cache
28
+ # warms up;
29
+ # - cache can drop unexpectedly mid-conversation (turn N hits, turn
30
+ # N+1 misses, turn N+2 hits again) — not stable steady-state.
31
+ # Treat the cache as opportunistic; UI badges are accurate when shown.
32
+ # - Tool calls return standard OpenAI tool_calls shape.
33
+ # - Image: pro/lite/mini all accepted image_url blocks; in our smoke
34
+ # test all four answered "Black" for what was actually a red 64×64 PNG,
35
+ # so reliability is uncertain. We default image:false; user can flip
36
+ # after their own verification.
37
+ # - Doubao 2.0 docs aren't fully published; model id strings sourced
38
+ # from the Volcengine Ark console (the activated-model list).
39
+ models:
40
+ - id: doubao-seed-2-0-pro-260215
41
+ displayName: Doubao Seed 2.0 Pro
42
+ maxOutputTokens: 16384
43
+ capabilities:
44
+ image: false
45
+ video: false
46
+ audio: false
47
+ promptCaching:
48
+ # Doubao caches automatically (no cache_control parameter needed
49
+ # in the request). The badge is just a visibility hint — UI shows
50
+ # the read/write counts so users see when cache is helping.
51
+ # Doc says default TTL is the platform default; observed empirically
52
+ # to behave like ~5min ephemeral. Cache only kicks in for prompts
53
+ # above ~4096 tokens; first 1-3 turns of a fresh prompt commonly
54
+ # miss while the cache is warming up.
55
+ default: 5m
56
+ ttlPresets:
57
+ - { value: 5m, label: 5min }
58
+ thinking:
59
+ defaultEnabled: true
60
+ default: medium
61
+ # effort label is Halo-side only — Doubao only sees enabled/disabled.
62
+ # We still expose Off/On as toggles by mapping both options to the
63
+ # same flag (keeps the form consistent across providers).
64
+ effortPresets:
65
+ - { value: medium, label: On }
66
+
67
+ - id: doubao-seed-2-0-lite-260428
68
+ displayName: Doubao Seed 2.0 Lite
69
+ maxOutputTokens: 16384
70
+ capabilities:
71
+ image: false
72
+ video: false
73
+ audio: false
74
+ promptCaching:
75
+ # Doubao caches automatically (no cache_control parameter needed
76
+ # in the request). The badge is just a visibility hint — UI shows
77
+ # the read/write counts so users see when cache is helping.
78
+ # Doc says default TTL is the platform default; observed empirically
79
+ # to behave like ~5min ephemeral. Cache only kicks in for prompts
80
+ # above ~4096 tokens; first 1-3 turns of a fresh prompt commonly
81
+ # miss while the cache is warming up.
82
+ default: 5m
83
+ ttlPresets:
84
+ - { value: 5m, label: 5min }
85
+ thinking:
86
+ defaultEnabled: true
87
+ default: medium
88
+ effortPresets:
89
+ - { value: medium, label: On }
90
+
91
+ - id: doubao-seed-2-0-mini-260428
92
+ displayName: Doubao Seed 2.0 Mini
93
+ maxOutputTokens: 16384
94
+ capabilities:
95
+ image: false
96
+ video: false
97
+ audio: false
98
+ promptCaching:
99
+ # Doubao caches automatically (no cache_control parameter needed
100
+ # in the request). The badge is just a visibility hint — UI shows
101
+ # the read/write counts so users see when cache is helping.
102
+ # Doc says default TTL is the platform default; observed empirically
103
+ # to behave like ~5min ephemeral. Cache only kicks in for prompts
104
+ # above ~4096 tokens; first 1-3 turns of a fresh prompt commonly
105
+ # miss while the cache is warming up.
106
+ default: 5m
107
+ ttlPresets:
108
+ - { value: 5m, label: 5min }
109
+ thinking:
110
+ defaultEnabled: true
111
+ default: medium
112
+ effortPresets:
113
+ - { value: medium, label: On }
114
+
115
+ - id: doubao-seed-2-0-code-preview-260215
116
+ displayName: Doubao Seed 2.0 Code Preview
117
+ maxOutputTokens: 16384
118
+ capabilities:
119
+ image: false
120
+ video: false
121
+ audio: false
122
+ promptCaching:
123
+ # Doubao caches automatically (no cache_control parameter needed
124
+ # in the request). The badge is just a visibility hint — UI shows
125
+ # the read/write counts so users see when cache is helping.
126
+ # Doc says default TTL is the platform default; observed empirically
127
+ # to behave like ~5min ephemeral. Cache only kicks in for prompts
128
+ # above ~4096 tokens; first 1-3 turns of a fresh prompt commonly
129
+ # miss while the cache is warming up.
130
+ default: 5m
131
+ ttlPresets:
132
+ - { value: 5m, label: 5min }
133
+ thinking:
134
+ defaultEnabled: true
135
+ default: medium
136
+ effortPresets:
137
+ - { value: medium, label: On }
@@ -0,0 +1,56 @@
1
+ id: hunyuan
2
+ displayName: Hunyuan (Tencent)
3
+ displayName_zh: 混元(腾讯)
4
+ description: Tencent Hunyuan Hy3 preview — 295B/21B MoE, agent-oriented with no_think / think_low / think_high modes
5
+ description_zh: 腾讯混元 Hy3 preview,295B/21B 激活 MoE,面向 Agent 工作负载,支持 no_think / think_low / think_high 三档思考
6
+ defaultEndpoint: https://tokenhub.tencentmaas.com/v1
7
+ defaultModelId: hy3-preview
8
+
9
+ secrets:
10
+ - key: api_key
11
+ description: Tencent Hunyuan Hy3 API Key. Format starts with sk-.
12
+ description_zh: 腾讯混元 Hy3 API Key,sk- 开头
13
+ default: <<HUNYUAN_API_KEY>>
14
+ secret: true
15
+
16
+ # Capability notes for Hunyuan Hy3 — verified end-to-end on 2026-05-26:
17
+ # - Endpoint hosted on tokenhub.tencentmaas.com (NOT api.hunyuan.cloud.tencent.com,
18
+ # which is the older OpenAI-compat surface that doesn't have Hy3).
19
+ # - Caching is automatic (no cache_control needed). Verified: same long
20
+ # system prompt across turns shows usage.prompt_tokens_details
21
+ # .cached_tokens > 0 from turn 2 onward.
22
+ # - Thinking modes per Hy3 product naming → `reasoning_effort`:
23
+ # no_think → omit reasoning_effort (zero reasoning_tokens)
24
+ # think_low → reasoning_effort: 'low'
25
+ # think_high → reasoning_effort: 'high'
26
+ # hunyuan-agent.ts maps thinking.enabled=false → no_think (no field),
27
+ # thinking.enabled=true + effort=low|medium|high → reasoning_effort.
28
+ # - Image input: gateway accepts image_url blocks but model says "I don't
29
+ # see an image" — image:false.
30
+ # - 256K context per product description (not enforced here; model just
31
+ # accepts long inputs).
32
+ models:
33
+ - id: hy3-preview
34
+ displayName: Hunyuan Hy3 Preview
35
+ maxOutputTokens: 16384
36
+ capabilities:
37
+ image: false
38
+ video: false
39
+ audio: false
40
+ promptCaching:
41
+ # Automatic caching, no cache_control parameter. cached_tokens reliably
42
+ # appears from turn 2 once prompt is long enough. The TTL knob isn't
43
+ # exposed by Hy3 — value is hint-only for the form.
44
+ default: 5m
45
+ ttlPresets:
46
+ - { value: 5m, label: 5min }
47
+ thinking:
48
+ # Maps Halo effort labels to Hy3's reasoning_effort. The Hy3
49
+ # product surface markets these as no_think / think_low / think_high;
50
+ # we expose Off / Low / High since "Off" is the natural opposite of
51
+ # an enable toggle.
52
+ defaultEnabled: true
53
+ default: low
54
+ effortPresets:
55
+ - { value: low, label: Low }
56
+ - { value: high, label: High }
@@ -0,0 +1,41 @@
1
+ id: kimi
2
+ displayName: Kimi (Moonshot AI)
3
+ displayName_zh: Kimi(月之暗面)
4
+ description: Kimi K2.6 via OpenAI-compatible chat completions API
5
+ description_zh: Kimi K2.6,通过 OpenAI 兼容的 chat completions API 调用
6
+ defaultEndpoint: https://api.moonshot.cn/v1
7
+
8
+ secrets:
9
+ - key: api_key
10
+ description: Kimi (Moonshot AI) API Key. Get from https://platform.kimi.com/console/api-keys
11
+ description_zh: Kimi (月之暗面) API Key。从 https://platform.kimi.com/console/api-keys 获取
12
+ default: <<KIMI_API_KEY>>
13
+ secret: true
14
+
15
+ # Capabilities verified 2026-05-27 via live probes. Kimi-k2.6 returns
16
+ # "prepare image failed" on image_url blocks despite past docs claiming
17
+ # vision — set image:false until/unless a vision-specific model id is
18
+ # tested here. reasoning_effort accepts { minimal, low, medium, high };
19
+ # `max` errors with explicit message listing the four valid values.
20
+ # Caching is automatic; cached_tokens shows up reliably from turn 2 once
21
+ # the prompt is long enough (~2K+).
22
+ models:
23
+ - id: kimi-k2.6
24
+ displayName: Kimi K2.6
25
+ maxOutputTokens: 32768
26
+ capabilities:
27
+ image: false
28
+ video: false
29
+ audio: false
30
+ promptCaching:
31
+ default: 5m
32
+ ttlPresets:
33
+ - { value: 5m, label: 5min }
34
+ thinking:
35
+ defaultEnabled: true
36
+ default: medium
37
+ effortPresets:
38
+ - { value: minimal, label: Minimal }
39
+ - { value: low, label: Low }
40
+ - { value: medium, label: Medium }
41
+ - { value: high, label: High }