@wenathlan/devthink 2.0.13 → 2.0.15

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 (444) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/accounts.ts +2087 -0
  3. package/agent.ts +2331 -0
  4. package/antigravity.ts +2139 -0
  5. package/apifreeze.ts +4146 -0
  6. package/auth.ts +642 -0
  7. package/background.ts +16837 -0
  8. package/bridge.ts +2080 -0
  9. package/build.ts +54 -0
  10. package/bun.ts +26 -0
  11. package/capture.ts +1614 -0
  12. package/checksecrets.ts +72 -0
  13. package/cjs.ts +9 -0
  14. package/cli.ts +3500 -0
  15. package/commands.ts +1101 -0
  16. package/companion.ts +450 -0
  17. package/compatibility.ts +37 -0
  18. package/config.ts +3137 -0
  19. package/constants.ts +943 -0
  20. package/core.ts +1473 -0
  21. package/crossbrowser.ts +1359 -0
  22. package/dashdone.ts +605 -0
  23. package/data.ts +943 -0
  24. package/database.ts +133 -0
  25. package/debug.ts +850 -0
  26. package/deno.ts +27 -0
  27. package/devthink.ts +707 -0
  28. package/dist/accounts.d.ts +409 -0
  29. package/dist/agent.d.ts +837 -0
  30. package/dist/antigravity.d.ts +380 -0
  31. package/dist/apifreeze.d.ts +113 -0
  32. package/dist/auth.d.ts +224 -0
  33. package/{bridge.d.ts → dist/bridge.d.ts} +1 -1
  34. package/dist/capture.d.ts +595 -0
  35. package/dist/cjs.d.ts +6 -0
  36. package/{cli.js → dist/cli.js} +2 -2
  37. package/dist/commands.d.ts +310 -0
  38. package/dist/compatibility.d.ts +17 -0
  39. package/dist/config.d.ts +1853 -0
  40. package/dist/constants.d.ts +637 -0
  41. package/dist/core.d.ts +361 -0
  42. package/dist/data.d.ts +330 -0
  43. package/dist/database.d.ts +24 -0
  44. package/dist/debug.d.ts +270 -0
  45. package/dist/engine.d.ts +74 -0
  46. package/dist/environments.d.ts +244 -0
  47. package/dist/evidence.d.ts +277 -0
  48. package/dist/export.d.ts +311 -0
  49. package/dist/fingerprint.d.ts +594 -0
  50. package/dist/flow.d.ts +300 -0
  51. package/dist/gates.d.ts +103 -0
  52. package/dist/identity.d.ts +51 -0
  53. package/dist/ids.d.ts +7 -0
  54. package/dist/llm.d.ts +652 -0
  55. package/dist/models.d.ts +1807 -0
  56. package/dist/net.d.ts +325 -0
  57. package/dist/neutral.d.ts +41 -0
  58. package/dist/oauth.d.ts +703 -0
  59. package/dist/page.d.ts +1166 -0
  60. package/dist/perf.d.ts +481 -0
  61. package/dist/plan.d.ts +134 -0
  62. package/dist/project.d.ts +395 -0
  63. package/dist/providers.d.ts +37 -0
  64. package/dist/quota.d.ts +453 -0
  65. package/dist/recovery.d.ts +621 -0
  66. package/dist/request.d.ts +1492 -0
  67. package/dist/run.d.ts +779 -0
  68. package/dist/runtime.d.ts +212 -0
  69. package/dist/search.d.ts +375 -0
  70. package/dist/security.d.ts +534 -0
  71. package/dist/serve.d.ts +136 -0
  72. package/dist/session.d.ts +296 -0
  73. package/dist/storage.d.ts +53 -0
  74. package/dist/streaming.d.ts +1119 -0
  75. package/dist/swarm.d.ts +328 -0
  76. package/dist/tools.d.ts +170 -0
  77. package/dist/types.d.ts +8357 -0
  78. package/dist/utils.d.ts +82 -0
  79. package/dist/version.d.ts +7 -0
  80. package/dist/versionregistry.d.ts +406 -0
  81. package/dist/views.d.ts +579 -0
  82. package/dist/workbenchsession.d.ts +69 -0
  83. package/dist/workflow.d.ts +649 -0
  84. package/docs/readme.md +92 -0
  85. package/docs/schemas/antigravity.json +192 -0
  86. package/engine.ts +1524 -0
  87. package/environments.ts +1005 -0
  88. package/evidence.ts +643 -0
  89. package/export.ts +889 -0
  90. package/fingerprint.ts +1458 -0
  91. package/flow.ts +1190 -0
  92. package/gates.ts +307 -0
  93. package/gateway.ts +34 -0
  94. package/hardening.ts +191 -0
  95. package/headless.ts +369 -0
  96. package/http.ts +2110 -0
  97. package/identity.ts +246 -0
  98. package/ids.ts +26 -0
  99. package/index.ts +369 -0
  100. package/llm.ts +2682 -0
  101. package/mcp.ts +1835 -0
  102. package/{memory.js → memory.ts} +3834 -2310
  103. package/models.ts +3805 -0
  104. package/modes.ts +43 -0
  105. package/net.ts +1214 -0
  106. package/neutral.ts +362 -0
  107. package/node.ts +26 -0
  108. package/oauth.ts +2216 -0
  109. package/offscreen.ts +170 -0
  110. package/pack.ts +956 -0
  111. package/package.json +175 -82
  112. package/page.ts +7824 -0
  113. package/pagebridge.ts +1116 -0
  114. package/perf.ts +957 -0
  115. package/plan.ts +672 -0
  116. package/plugin.ts +76 -0
  117. package/{policy.js → policy.ts} +5073 -4679
  118. package/prisma.config.ts +27 -0
  119. package/progress.ts +1308 -0
  120. package/project.ts +1291 -0
  121. package/protocol.ts +4187 -0
  122. package/providers.ts +246 -0
  123. package/quota.ts +1887 -0
  124. package/recovery.ts +2433 -0
  125. package/request.ts +4482 -0
  126. package/run.ts +2135 -0
  127. package/runtime.ts +526 -0
  128. package/search.ts +1760 -0
  129. package/security.ts +1673 -0
  130. package/serve.ts +419 -0
  131. package/server.ts +5538 -0
  132. package/session.ts +1162 -0
  133. package/storage.ts +182 -0
  134. package/streaming.ts +4101 -0
  135. package/swarm.ts +884 -0
  136. package/sync.ts +56 -0
  137. package/tests/agentcert.test.ts +128 -0
  138. package/tests/agentfleet.test.ts +214 -0
  139. package/tests/agentreview.test.ts +241 -0
  140. package/tests/agentstream.test.ts +335 -0
  141. package/tests/agentwork.test.ts +356 -0
  142. package/tests/apifreeze.test.ts +290 -0
  143. package/tests/apimap.test.ts +112 -0
  144. package/tests/approvalgate.test.ts +175 -0
  145. package/tests/artifactmanifest.test.ts +204 -0
  146. package/tests/attentionfeed.test.ts +163 -0
  147. package/tests/backgroundruns.test.ts +100 -0
  148. package/tests/batchscheduling.test.ts +131 -0
  149. package/tests/blackboard.test.ts +238 -0
  150. package/tests/bridge.test.ts +1088 -0
  151. package/tests/browsercoverage.test.ts +134 -0
  152. package/tests/browserpolyfills.test.ts +124 -0
  153. package/tests/build.mjs +1260 -0
  154. package/tests/clientauth.test.ts +223 -0
  155. package/tests/clitools.test.ts +578 -0
  156. package/tests/confirmgates.test.ts +190 -0
  157. package/tests/containerpack.test.ts +143 -0
  158. package/tests/controlflow.test.ts +2120 -0
  159. package/tests/coordination.test.ts +345 -0
  160. package/tests/copyscreen.test.ts +139 -0
  161. package/tests/core.test.ts +417 -0
  162. package/tests/costcert.test.ts +95 -0
  163. package/tests/crossbrowser.test.ts +115 -0
  164. package/tests/cspaudit.test.ts +79 -0
  165. package/tests/dashdone.test.ts +615 -0
  166. package/tests/datagrid.test.ts +137 -0
  167. package/tests/doccheck.test.ts +107 -0
  168. package/tests/dombatch.test.ts +109 -0
  169. package/tests/emulation.test.ts +282 -0
  170. package/tests/environments.test.ts +259 -0
  171. package/tests/evidenceviews.test.ts +88 -0
  172. package/tests/exporttools.test.ts +185 -0
  173. package/tests/firefoxprep.test.ts +134 -0
  174. package/tests/flowlibrary.test.ts +242 -0
  175. package/tests/flowrun.test.ts +303 -0
  176. package/tests/forensics.test.ts +439 -0
  177. package/tests/gateway.test.ts +939 -0
  178. package/tests/headlesslib.test.ts +171 -0
  179. package/tests/httpstream.test.ts +277 -0
  180. package/tests/immutablelog.test.ts +157 -0
  181. package/tests/inboundguard.test.ts +177 -0
  182. package/tests/lazyload.test.ts +72 -0
  183. package/tests/librarymodes.test.ts +623 -0
  184. package/tests/llm.test.ts +696 -0
  185. package/tests/manifest.test.ts +226 -0
  186. package/tests/maskinputs.test.ts +150 -0
  187. package/tests/matrixverify.test.ts +111 -0
  188. package/tests/mavenpack.test.ts +75 -0
  189. package/tests/mcpserver.test.ts +704 -0
  190. package/tests/memory.test.ts +4155 -0
  191. package/tests/memorycare.test.ts +230 -0
  192. package/tests/migrateplan.test.ts +349 -0
  193. package/tests/minimization.test.ts +414 -0
  194. package/tests/modelroute.test.ts +112 -0
  195. package/tests/multiagent.test.ts +440 -0
  196. package/tests/nativebridge.test.ts +807 -0
  197. package/tests/navigation.test.ts +284 -0
  198. package/tests/nugetpack.test.ts +83 -0
  199. package/tests/orchestration.test.ts +449 -0
  200. package/tests/originpolicy.test.ts +405 -0
  201. package/tests/outputcompare.test.ts +97 -0
  202. package/tests/package.test.ts +91 -0
  203. package/tests/pagebridge.test.ts +5909 -0
  204. package/tests/pentest.test.ts +75 -0
  205. package/tests/perfrecords.test.ts +257 -0
  206. package/tests/permdiff.test.ts +85 -0
  207. package/tests/phishguard.test.ts +128 -0
  208. package/tests/pickerviews.test.ts +155 -0
  209. package/tests/pipelines.test.ts +381 -0
  210. package/tests/planlint.test.ts +240 -0
  211. package/tests/planreview.test.ts +383 -0
  212. package/tests/platformtargets.test.ts +56 -0
  213. package/tests/policy.test.ts +8284 -0
  214. package/tests/portability.test.ts +96 -0
  215. package/tests/progress.test.ts +1036 -0
  216. package/tests/promptlibrary.test.ts +116 -0
  217. package/tests/protocol.test.ts +4793 -0
  218. package/tests/publishingpipeline.test.ts +314 -0
  219. package/tests/quickactions.test.ts +164 -0
  220. package/tests/readiness.test.ts +78 -0
  221. package/tests/recipes.test.ts +163 -0
  222. package/tests/redactshots.test.ts +216 -0
  223. package/tests/registernvidiakeys.ts +51 -0
  224. package/tests/relayserve.test.ts +304 -0
  225. package/tests/releasenotes.test.ts +276 -0
  226. package/tests/resilience.test.ts +467 -0
  227. package/tests/resourceaware.test.ts +187 -0
  228. package/tests/runbudget.test.ts +125 -0
  229. package/tests/runhistory.test.ts +299 -0
  230. package/tests/runreplay.test.ts +113 -0
  231. package/tests/runresume.test.ts +184 -0
  232. package/tests/runstate.test.ts +288 -0
  233. package/tests/runtimeadapters.test.ts +251 -0
  234. package/tests/safariskeleton.test.ts +115 -0
  235. package/tests/sandboxframe.test.ts +196 -0
  236. package/tests/sbom.test.ts +105 -0
  237. package/tests/secretvault.test.ts +188 -0
  238. package/tests/selcache.test.ts +111 -0
  239. package/tests/sessioninterface.test.ts +791 -0
  240. package/tests/sessions.test.ts +591 -0
  241. package/tests/siteprefs.test.ts +228 -0
  242. package/tests/snapshotdelta.test.ts +165 -0
  243. package/tests/statusviews.test.ts +237 -0
  244. package/tests/stepmeter.test.ts +200 -0
  245. package/tests/streamparse.test.ts +163 -0
  246. package/tests/stylepruning.test.ts +90 -0
  247. package/tests/surfaces.test.ts +282 -0
  248. package/tests/sweep.test.ts +78 -0
  249. package/tests/syncbridge.test.ts +164 -0
  250. package/tests/taskqueue.test.ts +206 -0
  251. package/tests/toolcalls.test.ts +336 -0
  252. package/tests/toolcatalog.test.ts +201 -0
  253. package/tests/torture-agent.test.ts +706 -0
  254. package/tests/torture-auth.test.ts +461 -0
  255. package/tests/torture-commands.test.ts +895 -0
  256. package/tests/torture-data.test.ts +923 -0
  257. package/tests/torture-environments.test.ts +285 -0
  258. package/tests/torture-export.test.ts +263 -0
  259. package/tests/torture-http.test.ts +1379 -0
  260. package/tests/torture-llm.test.ts +808 -0
  261. package/tests/torture-memory.test.ts +1084 -0
  262. package/tests/torture-plan.test.ts +829 -0
  263. package/tests/torture-run.test.ts +626 -0
  264. package/tests/torture-session.test.ts +928 -0
  265. package/tests/torture-swarm.test.ts +1245 -0
  266. package/tests/torture-tools.test.ts +964 -0
  267. package/tests/torture-workflow.test.ts +2354 -0
  268. package/tests/tourviews.test.ts +52 -0
  269. package/tests/transparency.test.ts +147 -0
  270. package/tests/trigger.test.ts +941 -0
  271. package/tests/v1sunset.test.ts +428 -0
  272. package/tests/virtlist.test.ts +94 -0
  273. package/tests/vision.test.ts +540 -0
  274. package/tests/vsixpack.test.ts +145 -0
  275. package/tests/webapi.test.ts +523 -0
  276. package/tests/workflow.test.ts +1785 -0
  277. package/tests/workfloweditor.test.ts +759 -0
  278. package/tests/xpipack.test.ts +128 -0
  279. package/tools.ts +734 -0
  280. package/types.ts +9908 -0
  281. package/umd.ts +9 -0
  282. package/utils.ts +249 -0
  283. package/version.ts +8 -0
  284. package/versionregistry.ts +1310 -0
  285. package/views.ts +2153 -0
  286. package/vitest.config.ts +12 -0
  287. package/web/App.tsx +78 -0
  288. package/web/README.md +47 -0
  289. package/web/capacitor.config.ts +46 -0
  290. package/web/const.ts +19 -0
  291. package/web/control.shell.tsx +66 -0
  292. package/web/dashboardpage.ts +554 -0
  293. package/web/db.ts +493 -0
  294. package/web/design.html +541 -0
  295. package/web/gatewayview/Gateway.tsx +345 -0
  296. package/web/gatewayview/config.ts +1042 -0
  297. package/web/gatewayview/definition.ts +174 -0
  298. package/web/icons.ts +15 -0
  299. package/{manifest.json → web/manifest.json} +1 -1
  300. package/web/optionspage.ts +691 -0
  301. package/web/popup.ts +1651 -0
  302. package/web/schema.prisma +176 -0
  303. package/web/sidepanel.ts +7941 -0
  304. package/web/sitemanifest.json +13 -0
  305. package/web/terminal-ui.tsx +622 -0
  306. package/web/transparencypage.ts +541 -0
  307. package/web/vite.config.ts +39 -0
  308. package/web/workspace.ts +23 -0
  309. package/workbenchmemory.ts +104 -0
  310. package/workbenchsession.ts +304 -0
  311. package/workflow.ts +4495 -0
  312. package/bridge.d.ts.map +0 -1
  313. package/bridge.js +0 -1877
  314. package/bun.d.ts.map +0 -1
  315. package/bun.js +0 -52329
  316. package/caps/background.json +0 -712
  317. package/caps/cli.json +0 -360
  318. package/caps/library.json +0 -3611
  319. package/caps/mcp.json +0 -126
  320. package/caps/pagebridge.json +0 -377
  321. package/caps/popup.json +0 -51
  322. package/caps/sidepanel.json +0 -522
  323. package/checksums.txt +0 -142
  324. package/cli.d.ts.map +0 -1
  325. package/companion.d.ts.map +0 -1
  326. package/companion.js +0 -389
  327. package/crossbrowser.d.ts.map +0 -1
  328. package/crossbrowser.js +0 -1191
  329. package/dashdone.d.ts.map +0 -1
  330. package/dashdone.js +0 -368
  331. package/deno.d.ts.map +0 -1
  332. package/deno.js +0 -52325
  333. package/devthink.umd.js +0 -52346
  334. package/fixtures/bun.ts +0 -7
  335. package/fixtures/cjs.js +0 -6
  336. package/fixtures/deno.ts +0 -6
  337. package/fixtures/example-org-pagestate.json +0 -22
  338. package/fixtures/importers/automa-workflow.json +0 -18
  339. package/fixtures/importers/selenium-side.json +0 -20
  340. package/fixtures/importers/tabular-plan.csv +0 -7
  341. package/fixtures/importers/uivision-macro.json +0 -10
  342. package/fixtures/importers/v1-plan.json +0 -13
  343. package/fixtures/mcp-client.mjs +0 -14
  344. package/fixtures/pages/checkout.html +0 -192
  345. package/fixtures/pages/dashboard.html +0 -110
  346. package/fixtures/pages/feed.html +0 -113
  347. package/fixtures/pages/product-grid.html +0 -150
  348. package/fixtures/plans/form-inventory-plan.json +0 -11
  349. package/fixtures/plans/release-notes-plan.json +0 -11
  350. package/fixtures/recipes/agentscompete.json +0 -11
  351. package/fixtures/recipes/agentsforms.json +0 -11
  352. package/fixtures/recipes/agentsmonitor.json +0 -11
  353. package/fixtures/recipes/agentsreview.json +0 -29
  354. package/fixtures/recipes/agentswarm.json +0 -11
  355. package/fixtures/recipes/fillcalendar.json +0 -12
  356. package/fixtures/recipes/fillcheckout.json +0 -13
  357. package/fixtures/recipes/filldependentdropdowns.json +0 -12
  358. package/fixtures/recipes/fillfromcsv.json +0 -13
  359. package/fixtures/recipes/fillloginform.json +0 -12
  360. package/fixtures/recipes/fillmultistepwizard.json +0 -13
  361. package/fixtures/recipes/fillregistration.json +0 -12
  362. package/fixtures/recipes/fillsearchfilters.json +0 -12
  363. package/fixtures/recipes/filltypeahead.json +0 -11
  364. package/fixtures/recipes/monitoralerts.json +0 -12
  365. package/fixtures/recipes/monitoravailability.json +0 -11
  366. package/fixtures/recipes/monitornetworkquiet.json +0 -12
  367. package/fixtures/recipes/monitorpagechanges.json +0 -11
  368. package/fixtures/recipes/monitorpricechange.json +0 -11
  369. package/fixtures/recipes/monitorschedule.json +0 -12
  370. package/fixtures/recipes/scrapedynamicprices.json +0 -13
  371. package/fixtures/recipes/scrapeimagegallery.json +0 -12
  372. package/fixtures/recipes/scrapeinfinitefeed.json +0 -13
  373. package/fixtures/recipes/scrapenestedlists.json +0 -12
  374. package/fixtures/recipes/scrapeproductgrid.json +0 -12
  375. package/fixtures/recipes/scrapereviews.json +0 -12
  376. package/fixtures/recipes/scrapesearchresults.json +0 -12
  377. package/fixtures/recipes/scrapetablepagination.json +0 -12
  378. package/fixtures/recipes/testaccessibility.json +0 -34
  379. package/fixtures/recipes/testconsoleerrors.json +0 -12
  380. package/fixtures/recipes/testdeeplinks.json +0 -12
  381. package/fixtures/recipes/testformvalidation.json +0 -13
  382. package/fixtures/recipes/testlayoutshift.json +0 -12
  383. package/fixtures/recipes/testlinkcheck.json +0 -12
  384. package/fixtures/recipes/testloadtiming.json +0 -12
  385. package/fixtures/recipes/testvisualdiff.json +0 -12
  386. package/fixtures/workflows/changelog-digest-workflow.json +0 -13
  387. package/fixtures/workflows/form-survey-workflow.json +0 -13
  388. package/gallery.json +0 -706
  389. package/hardening.d.ts.map +0 -1
  390. package/hardening.js +0 -188
  391. package/headless.d.ts.map +0 -1
  392. package/headless.js +0 -11522
  393. package/http.d.ts.map +0 -1
  394. package/http.js +0 -2165
  395. package/index.cjs +0 -54682
  396. package/index.d.ts.map +0 -1
  397. package/index.js +0 -52310
  398. package/index.neutral.js +0 -46343
  399. package/mcp.d.ts.map +0 -1
  400. package/mcp.js +0 -20515
  401. package/memory.d.ts.map +0 -1
  402. package/nativehost.template.json +0 -10
  403. package/node.cjs +0 -54686
  404. package/node.d.ts.map +0 -1
  405. package/pack.d.ts.map +0 -1
  406. package/pack.js +0 -805
  407. package/policy.d.ts.map +0 -1
  408. package/progress.d.ts.map +0 -1
  409. package/progress.js +0 -645
  410. package/protocol.d.ts.map +0 -1
  411. package/protocol.js +0 -8334
  412. package/schemas/audit.schema.json +0 -226
  413. package/schemas/capability.schema.json +0 -113
  414. package/schemas/envelope.schema.json +0 -162
  415. package/schemas/memory.schema.json +0 -51
  416. package/schemas/observation.schema.json +0 -113
  417. package/schemas/plan.schema.json +0 -208
  418. package/schemas/progress.schema.json +0 -126
  419. package/schemas/proposal.schema.json +0 -68
  420. package/schemas/session.schema.json +0 -82
  421. package/schemas/tool.schema.json +0 -94
  422. package/server.d.ts.map +0 -1
  423. package/server.js +0 -28877
  424. package/umd-example.html +0 -18
  425. package/umd.d.ts.map +0 -1
  426. /package/{bun.d.ts → dist/bun.d.ts} +0 -0
  427. /package/{cli.d.ts → dist/cli.d.ts} +0 -0
  428. /package/{companion.d.ts → dist/companion.d.ts} +0 -0
  429. /package/{crossbrowser.d.ts → dist/crossbrowser.d.ts} +0 -0
  430. /package/{dashdone.d.ts → dist/dashdone.d.ts} +0 -0
  431. /package/{deno.d.ts → dist/deno.d.ts} +0 -0
  432. /package/{hardening.d.ts → dist/hardening.d.ts} +0 -0
  433. /package/{headless.d.ts → dist/headless.d.ts} +0 -0
  434. /package/{http.d.ts → dist/http.d.ts} +0 -0
  435. /package/{index.d.ts → dist/index.d.ts} +0 -0
  436. /package/{mcp.d.ts → dist/mcp.d.ts} +0 -0
  437. /package/{memory.d.ts → dist/memory.d.ts} +0 -0
  438. /package/{node.d.ts → dist/node.d.ts} +0 -0
  439. /package/{pack.d.ts → dist/pack.d.ts} +0 -0
  440. /package/{policy.d.ts → dist/policy.d.ts} +0 -0
  441. /package/{progress.d.ts → dist/progress.d.ts} +0 -0
  442. /package/{protocol.d.ts → dist/protocol.d.ts} +0 -0
  443. /package/{server.d.ts → dist/server.d.ts} +0 -0
  444. /package/{umd.d.ts → dist/umd.d.ts} +0 -0
@@ -0,0 +1,1042 @@
1
+ /**
2
+ * gatewayview config — the user customization layer of the embedded gateway
3
+ * one file one responsibility — only version definitions live here
4
+ * this is the hardcoded v1 v5 configuration the gateway ships with
5
+ *
6
+ * the library engine at root is universal and dry — it reads a config file
7
+ * every value here is what the user customizes:
8
+ * baseurls — which upstream apis to call
9
+ * models — which models to expose
10
+ * auth — how keys are resolved per method
11
+ * rotation — model rotation strategies
12
+ * retry — backoff and status handling
13
+ * context — session history and truncation
14
+ * thinking — two-calls pattern and budgets
15
+ *
16
+ * create as many versions as you want — v1 through v9 and beyond
17
+ * each version gets all 7 routes generated automatically:
18
+ * chat/completions completions messages responses embeddings keys models
19
+ *
20
+ * the engine config loader (gateway-configloader.ts) probes the standard
21
+ * web/config.mjs|ts|js locations of the working directory for the definition
22
+ * a deployment loads; this catalog is the shipped example the gateway
23
+ * console page renders — copy it to the location your serve reads, or
24
+ * use the cli to scaffold a fresh config (gateway init) and edit the values
25
+ */
26
+
27
+ import type { gatewaydefinition } from "./definition";
28
+
29
+ export const config: gatewaydefinition = {
30
+ name: "DevThink Gateway",
31
+ description: "multi provider ai gateway v1 v5 with thinking rotation retry and fusion context",
32
+
33
+ versions: {
34
+ // -----------------------------------------------------------------------
35
+ // v1 — zai sdk keyless transport with 2-calls thinking pattern
36
+ // -----------------------------------------------------------------------
37
+ v1: {
38
+ id: "v1",
39
+ name: "V1 ZAI",
40
+ providername: "zai",
41
+ note: "v1 replica retains token plus chat id functionality calls internal api z ai directly",
42
+ transport: {
43
+ type: "zai-sdk",
44
+ },
45
+ upstreams: [{ name: "zai", baseurl: "https://internal-api.z.ai/v1" }],
46
+ auth: {
47
+ mode: "keylesssdk",
48
+ required: false,
49
+ },
50
+ models: [
51
+ {
52
+ id: "glm-5.3",
53
+ context: 1048576,
54
+ maxoutput: 131072,
55
+ vision: false,
56
+ reasoning: true,
57
+ free: false,
58
+ rank: { score: 56, tier: 1 },
59
+ },
60
+ {
61
+ id: "glm-5.3-flash",
62
+ context: 1048576,
63
+ maxoutput: 131072,
64
+ vision: true,
65
+ reasoning: true,
66
+ free: false,
67
+ rank: { score: 55, tier: 1 },
68
+ },
69
+ {
70
+ id: "glm-5.2",
71
+ context: 1048576,
72
+ maxoutput: 131072,
73
+ vision: false,
74
+ reasoning: true,
75
+ free: true,
76
+ rank: { score: 53, tier: 1 },
77
+ },
78
+ {
79
+ id: "glm-5.1",
80
+ context: 131072,
81
+ maxoutput: 16384,
82
+ vision: false,
83
+ reasoning: true,
84
+ free: true,
85
+ rank: { score: 40, tier: 2 },
86
+ },
87
+ {
88
+ id: "glm-5v",
89
+ context: 131072,
90
+ maxoutput: 16384,
91
+ vision: true,
92
+ reasoning: true,
93
+ free: true,
94
+ rank: { score: 38, tier: 2 },
95
+ },
96
+ {
97
+ id: "glm-4-plus",
98
+ context: 131072,
99
+ maxoutput: 4096,
100
+ vision: false,
101
+ reasoning: true,
102
+ free: true,
103
+ rank: { score: 25, tier: 3 },
104
+ },
105
+ {
106
+ id: "glm-4-flash",
107
+ context: 131072,
108
+ maxoutput: 4096,
109
+ vision: false,
110
+ reasoning: false,
111
+ free: true,
112
+ rank: { score: 15, tier: 4 },
113
+ },
114
+ ],
115
+ defaultmodel: "glm-5.3",
116
+ metamodel: {
117
+ id: "devthink",
118
+ contextoverride: 2300000,
119
+ fallbackcontext: 1048576,
120
+ maxoutput: 98304,
121
+ maskupstreammodel: false,
122
+ alwaysdisplay: false,
123
+ pattern: "2-calls thinking over glm-5.2 backend",
124
+ },
125
+ thinking: {
126
+ defaultlevel: "high",
127
+ budgets: {
128
+ none: 0,
129
+ minimal: 1400,
130
+ low: 5500,
131
+ medium: 17000,
132
+ high: 68000,
133
+ xhigh: 68000,
134
+ max: 68000,
135
+ },
136
+ twocalls: {
137
+ threshold: 98304,
138
+ freshresponseguarantee: true,
139
+ },
140
+ param: "thinking",
141
+ },
142
+ bodybuild: {
143
+ optionalparamspolicy: "always",
144
+ clampmaxtokens: true,
145
+ },
146
+ routes: {
147
+ embeddings: "disabled",
148
+ embeddingsmessage: "zai has no embeddings endpoint",
149
+ },
150
+ headers: {
151
+ useragent: "DevThink-Gateway/1.0",
152
+ },
153
+ },
154
+
155
+ // -----------------------------------------------------------------------
156
+ // v2 — babel town paused with fallback to v1
157
+ // -----------------------------------------------------------------------
158
+ v2: {
159
+ id: "v2",
160
+ name: "V2 Babel",
161
+ providername: "babel",
162
+ note: "service is paused returns 503 fallback to v1 zai",
163
+ paused: true,
164
+ upstreams: [{ name: "babel", baseurl: "https://api.babel.town/v1" }],
165
+ auth: {
166
+ mode: "apikeyheader",
167
+ headername: "x-token",
168
+ keysources: ["ephemeralurl"],
169
+ keyurl: "https://glm.babel.town/api/get_api_key",
170
+ keyexpiryminutes: 60,
171
+ ipbound: true,
172
+ required: false,
173
+ },
174
+ models: [
175
+ {
176
+ id: "babel-glm-5.3",
177
+ upstream: "glm-5.3",
178
+ context: 1048576,
179
+ maxoutput: 131072,
180
+ free: true,
181
+ },
182
+ {
183
+ id: "babel-glm-5.3-flash",
184
+ upstream: "glm-5.3-flash",
185
+ context: 1048576,
186
+ maxoutput: 131072,
187
+ free: true,
188
+ },
189
+ {
190
+ id: "babel-glm-5.2",
191
+ upstream: "glm-5.2",
192
+ context: 1048576,
193
+ maxoutput: 131072,
194
+ free: true,
195
+ },
196
+ {
197
+ id: "babel-devthink",
198
+ upstream: "devthink",
199
+ context: 1048576,
200
+ maxoutput: 131072,
201
+ free: true,
202
+ },
203
+ ],
204
+ defaultmodel: "babel-glm-5.3",
205
+ metamodel: {
206
+ id: "babel-devthink",
207
+ fallbackcontext: 1048576,
208
+ maxoutput: 131072,
209
+ maskupstreammodel: false,
210
+ alwaysdisplay: false,
211
+ },
212
+ routes: {
213
+ embeddings: "disabled",
214
+ embeddingsmessage: "babel has no embeddings endpoint",
215
+ pausedstatus: 503,
216
+ pausedmessage: "babel town is paused — use v1 zai instead",
217
+ fallbackroute: "/v1/chat/completions",
218
+ },
219
+ },
220
+
221
+ // -----------------------------------------------------------------------
222
+ // v3 — nvidia nim with 4-backend rotation db keys retry backoff
223
+ // -----------------------------------------------------------------------
224
+ v3: {
225
+ id: "v3",
226
+ name: "V3 NVIDIA",
227
+ providername: "nvidia",
228
+ note: "nvidia keys round robin devthink meta model rotates",
229
+ upstreams: [{ name: "nvidia", baseurl: "https://integrate.api.nvidia.com/v1" }],
230
+ auth: {
231
+ mode: "bearer",
232
+ keysources: ["db", "env"],
233
+ dbmodel: "nvidiaKey",
234
+ dbtake: 50,
235
+ envvar: "NVIDIA_API_KEY",
236
+ envseparator: ",",
237
+ keyrotation: "roundrobin",
238
+ keylabelformat: "nvapi-key-{idx}",
239
+ required: true,
240
+ minkeylength: 10,
241
+ },
242
+ models: [
243
+ // rotation backends — the devthink meta rotates across these 4
244
+ {
245
+ id: "moonshotai/kimi-k3",
246
+ context: 262144,
247
+ maxoutput: 68000,
248
+ vision: true,
249
+ reasoning: true,
250
+ free: true,
251
+ rank: { score: 60, tier: 1 },
252
+ family: "kimi",
253
+ chattemplatekwargs: { enable_thinking: true },
254
+ },
255
+ {
256
+ id: "deepseek-ai/deepseek-v4-pro-0813",
257
+ context: 1000000,
258
+ maxoutput: 68000,
259
+ vision: false,
260
+ reasoning: true,
261
+ free: true,
262
+ rank: { score: 55, tier: 1 },
263
+ family: "deepseek",
264
+ chattemplatekwargs: { enable_thinking: true },
265
+ },
266
+ {
267
+ id: "meta/muse-glimmer-30b",
268
+ context: 262144,
269
+ maxoutput: 68000,
270
+ vision: true,
271
+ reasoning: true,
272
+ free: true,
273
+ rank: { score: 50, tier: 1 },
274
+ family: "muse",
275
+ chattemplatekwargs: { enable_thinking: true },
276
+ },
277
+ {
278
+ id: "poolside/laguna-xs-2.1",
279
+ context: 262144,
280
+ maxoutput: 68000,
281
+ vision: false,
282
+ reasoning: true,
283
+ free: true,
284
+ rank: { score: 0, tier: 4 },
285
+ family: "laguna",
286
+ chattemplatekwargs: { enable_thinking: true },
287
+ },
288
+ // individual catalog
289
+ {
290
+ id: "deepseek-ai/deepseek-v4-flash-0731",
291
+ context: 1000000,
292
+ maxoutput: 68000,
293
+ vision: false,
294
+ reasoning: true,
295
+ free: true,
296
+ rank: { score: 52, tier: 1 },
297
+ family: "deepseek",
298
+ chattemplatekwargs: { enable_thinking: true },
299
+ },
300
+ {
301
+ id: "nvidia/nemotron-3-ultra-550b-a55b",
302
+ context: 1000000,
303
+ maxoutput: 68000,
304
+ vision: false,
305
+ reasoning: true,
306
+ free: true,
307
+ rank: { score: 38, tier: 2 },
308
+ family: "nemotron",
309
+ chattemplatekwargs: { enable_thinking: true },
310
+ },
311
+ {
312
+ id: "nvidia/nemotron-3.5-lightning-30b-a3b",
313
+ context: 262144,
314
+ maxoutput: 68000,
315
+ vision: false,
316
+ reasoning: true,
317
+ free: true,
318
+ rank: { score: 24, tier: 2 },
319
+ family: "nemotron",
320
+ chattemplatekwargs: { enable_thinking: true },
321
+ },
322
+ {
323
+ id: "google/gemma-4-31b-it",
324
+ context: 262144,
325
+ maxoutput: 68000,
326
+ vision: true,
327
+ reasoning: true,
328
+ free: true,
329
+ rank: { score: 30, tier: 2 },
330
+ family: "gemma",
331
+ chattemplatekwargs: { enable_thinking: true },
332
+ },
333
+ {
334
+ id: "nvidia/nemotron-3-super-120b-a12b",
335
+ context: 1000000,
336
+ maxoutput: 68000,
337
+ vision: false,
338
+ reasoning: true,
339
+ free: true,
340
+ rank: { score: 26, tier: 2 },
341
+ family: "nemotron",
342
+ chattemplatekwargs: { enable_thinking: true },
343
+ },
344
+ {
345
+ id: "openai/gpt-oss-120b",
346
+ context: 131072,
347
+ maxoutput: 68000,
348
+ vision: false,
349
+ reasoning: true,
350
+ free: true,
351
+ rank: { score: 24, tier: 2 },
352
+ family: "gptoss",
353
+ chattemplatekwargs: { enable_thinking: true },
354
+ },
355
+ {
356
+ id: "nvidia/nemotron-3-nano-30b-a3b",
357
+ context: 1000000,
358
+ maxoutput: 68000,
359
+ vision: false,
360
+ reasoning: true,
361
+ free: true,
362
+ family: "nemotron",
363
+ chattemplatekwargs: { enable_thinking: true },
364
+ },
365
+ {
366
+ id: "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning",
367
+ context: 262144,
368
+ maxoutput: 68000,
369
+ vision: true,
370
+ reasoning: true,
371
+ free: true,
372
+ family: "nemotron",
373
+ chattemplatekwargs: { enable_thinking: true },
374
+ },
375
+ {
376
+ id: "openai/gpt-oss-20b",
377
+ context: 131072,
378
+ maxoutput: 68000,
379
+ vision: false,
380
+ reasoning: true,
381
+ free: true,
382
+ rank: { score: 15, tier: 3 },
383
+ family: "gptoss",
384
+ chattemplatekwargs: { enable_thinking: true },
385
+ },
386
+ {
387
+ id: "mistralai/mistral-nemotron",
388
+ context: 262144,
389
+ maxoutput: 68000,
390
+ vision: false,
391
+ reasoning: true,
392
+ free: true,
393
+ family: "mistral",
394
+ chattemplatekwargs: { enable_thinking: true },
395
+ },
396
+ {
397
+ id: "meta/llama-3.2-90b-vision-instruct",
398
+ context: 131072,
399
+ maxoutput: 68000,
400
+ vision: true,
401
+ reasoning: false,
402
+ free: true,
403
+ family: "llama",
404
+ chattemplatekwargs: {},
405
+ },
406
+ {
407
+ id: "meta/llama-3.2-11b-vision-instruct",
408
+ context: 131072,
409
+ maxoutput: 68000,
410
+ vision: true,
411
+ reasoning: false,
412
+ free: true,
413
+ family: "llama",
414
+ chattemplatekwargs: {},
415
+ },
416
+ ],
417
+ defaultmodel: "devthink",
418
+ rotation: {
419
+ mode: "persession",
420
+ models: [
421
+ "moonshotai/kimi-k3",
422
+ "deepseek-ai/deepseek-v4-pro-0813",
423
+ "meta/muse-glimmer-30b",
424
+ "poolside/laguna-xs-2.1",
425
+ ],
426
+ everynmessages: 6,
427
+ maxmodelrotations: 4,
428
+ rotateonstatus: [529, 404, 410],
429
+ rotateontimeout: true,
430
+ staggernewsessions: false,
431
+ sessionstore: "memory",
432
+ },
433
+ retry: {
434
+ maxretries: 3,
435
+ backoffbasems: 400,
436
+ backoffcapms: 8000,
437
+ jitter: 0.2,
438
+ statuses: [429, 502, 503, 504],
439
+ nonretryable: [400],
440
+ fallback: "none",
441
+ },
442
+ timeout: {
443
+ modelswitchintervalms: 60000,
444
+ requestms: 300000,
445
+ streamms: 2147483647,
446
+ },
447
+ context: {
448
+ restoresessionhistory: true,
449
+ historylimit: 1000,
450
+ truncatemargin: 4096,
451
+ percallfallback: 1048576,
452
+ markshared: true,
453
+ },
454
+ thinking: {
455
+ defaultlevel: "high",
456
+ param: "chattemplatekwargs",
457
+ },
458
+ bodybuild: {
459
+ optionalparamspolicy: "omit-unspecified",
460
+ clampmaxtokens: true,
461
+ maxtokenscap: 68000,
462
+ },
463
+ metamodel: {
464
+ id: "devthink",
465
+ fallbackcontext: 1048576,
466
+ maxoutput: 272000,
467
+ maskupstreammodel: true,
468
+ alwaysdisplay: false,
469
+ pattern: "rotation over 4 nvidia reasoning models 2-calls pattern",
470
+ },
471
+ routes: {
472
+ embeddings: "disabled",
473
+ embeddingsmessage: "nvidia has no embeddings endpoint on this gateway",
474
+ },
475
+ headers: {
476
+ useragent: "DevThink-Gateway/3.0",
477
+ },
478
+ },
479
+
480
+ // -----------------------------------------------------------------------
481
+ // v4 — opencode zen plus kilo anonymous free models cross-provider fallback
482
+ // -----------------------------------------------------------------------
483
+ v4: {
484
+ id: "v4",
485
+ name: "V4 OpenCode Kilo",
486
+ providername: "opencode",
487
+ note: "anonymous free tier no api key required model masking to devthink",
488
+ upstreams: [
489
+ { name: "opencode", baseurl: "https://opencode.ai/zen/v1", fallback: "kilo" },
490
+ { name: "kilo", baseurl: "https://api.kilo.ai/api/gateway", fallback: "opencode" },
491
+ ],
492
+ auth: {
493
+ mode: "anonymous",
494
+ required: false,
495
+ },
496
+ models: [
497
+ // opencode zen free models
498
+ {
499
+ id: "muse-spark-1.2-contributor-free",
500
+ context: 131072,
501
+ maxoutput: 16384,
502
+ vision: false,
503
+ reasoning: true,
504
+ free: true,
505
+ rank: { score: 57, tier: 1 },
506
+ endpoint: "responses",
507
+ },
508
+ {
509
+ id: "deepseek-v4-flash-free",
510
+ context: 1048576,
511
+ maxoutput: 16384,
512
+ vision: false,
513
+ reasoning: true,
514
+ free: true,
515
+ rank: { score: 52, tier: 1 },
516
+ },
517
+ {
518
+ id: "mimo-v2.5-free",
519
+ context: 1048576,
520
+ maxoutput: 32768,
521
+ vision: false,
522
+ reasoning: true,
523
+ free: true,
524
+ rank: { score: 43, tier: 1 },
525
+ },
526
+ {
527
+ id: "nemotron-3-ultra-free",
528
+ context: 1048576,
529
+ maxoutput: 32768,
530
+ vision: false,
531
+ reasoning: true,
532
+ free: true,
533
+ rank: { score: 38, tier: 2 },
534
+ nvidiarouted: true,
535
+ },
536
+ {
537
+ id: "ling-3.0-flash-fin-free",
538
+ context: 262144,
539
+ maxoutput: 32768,
540
+ vision: false,
541
+ reasoning: true,
542
+ free: true,
543
+ rank: { score: 38, tier: 2 },
544
+ },
545
+ {
546
+ id: "nemotron-3.5-lightning-free",
547
+ context: 1048576,
548
+ maxoutput: 32768,
549
+ vision: false,
550
+ reasoning: true,
551
+ free: true,
552
+ rank: { score: 24, tier: 2 },
553
+ nvidiarouted: true,
554
+ },
555
+ {
556
+ id: "laguna-s-2.1-free",
557
+ context: 262144,
558
+ maxoutput: 32768,
559
+ vision: false,
560
+ reasoning: true,
561
+ free: true,
562
+ rank: { score: 0, tier: 4 },
563
+ },
564
+ // kilo free models
565
+ {
566
+ id: "thinkingmachines/inkling:free",
567
+ context: 1048576,
568
+ maxoutput: 262144,
569
+ vision: true,
570
+ reasoning: true,
571
+ free: true,
572
+ },
573
+ {
574
+ id: "tencent/hy3:free",
575
+ context: 262144,
576
+ maxoutput: 128000,
577
+ vision: false,
578
+ reasoning: true,
579
+ free: true,
580
+ },
581
+ {
582
+ id: "thinkingmachines/inkling-small:free",
583
+ context: 1048576,
584
+ maxoutput: 262144,
585
+ vision: true,
586
+ reasoning: true,
587
+ free: true,
588
+ },
589
+ {
590
+ id: "inclusionai/ling-3.0-flash-fin:free",
591
+ context: 262144,
592
+ maxoutput: 32768,
593
+ vision: false,
594
+ reasoning: true,
595
+ free: true,
596
+ },
597
+ {
598
+ id: "nvidia/nemotron-3-ultra-550b-a55b:free",
599
+ context: 1048576,
600
+ maxoutput: 32768,
601
+ vision: false,
602
+ reasoning: true,
603
+ free: true,
604
+ nvidiarouted: true,
605
+ },
606
+ {
607
+ id: "minimax/minimax-m3:free",
608
+ context: 1048576,
609
+ maxoutput: 16384,
610
+ vision: true,
611
+ reasoning: true,
612
+ free: true,
613
+ },
614
+ {
615
+ id: "stepfun/step-3.7-flash:free",
616
+ context: 262144,
617
+ maxoutput: 262144,
618
+ vision: true,
619
+ reasoning: true,
620
+ free: true,
621
+ },
622
+ {
623
+ id: "nvidia/nemotron-3.5-lightning:free",
624
+ context: 1048576,
625
+ maxoutput: 32768,
626
+ vision: false,
627
+ reasoning: true,
628
+ free: true,
629
+ nvidiarouted: true,
630
+ },
631
+ {
632
+ id: "nvidia/nemotron-3-super-120b-a12b:free",
633
+ context: 1048576,
634
+ maxoutput: 32768,
635
+ vision: false,
636
+ reasoning: true,
637
+ free: true,
638
+ nvidiarouted: true,
639
+ },
640
+ {
641
+ id: "cohere/north-mini-code:free",
642
+ context: 256000,
643
+ maxoutput: 64000,
644
+ vision: false,
645
+ reasoning: true,
646
+ free: true,
647
+ },
648
+ {
649
+ id: "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free",
650
+ context: 256000,
651
+ maxoutput: 65536,
652
+ vision: true,
653
+ reasoning: true,
654
+ free: true,
655
+ nvidiarouted: true,
656
+ },
657
+ {
658
+ id: "liquid/lfm-2.5-2.6b:free",
659
+ context: 65536,
660
+ maxoutput: 8192,
661
+ vision: false,
662
+ reasoning: true,
663
+ free: true,
664
+ },
665
+ {
666
+ id: "minimax/minimax-m2.7:free",
667
+ context: 196608,
668
+ maxoutput: 196608,
669
+ vision: false,
670
+ reasoning: true,
671
+ free: true,
672
+ },
673
+ {
674
+ id: "dots-studio/dots-3-note-preview:free",
675
+ context: 512000,
676
+ maxoutput: 460800,
677
+ vision: true,
678
+ reasoning: true,
679
+ free: true,
680
+ },
681
+ {
682
+ id: "poolside/laguna-s-2.1:free",
683
+ context: 262144,
684
+ maxoutput: 32768,
685
+ vision: false,
686
+ reasoning: true,
687
+ free: true,
688
+ },
689
+ {
690
+ id: "poolside/laguna-xs-2.1:free",
691
+ context: 262144,
692
+ maxoutput: 32768,
693
+ vision: false,
694
+ reasoning: true,
695
+ free: true,
696
+ },
697
+ {
698
+ id: "nvidia/nemotron-3.5-content-safety:free",
699
+ context: 128000,
700
+ maxoutput: 8192,
701
+ vision: true,
702
+ reasoning: false,
703
+ free: true,
704
+ nvidiarouted: true,
705
+ },
706
+ ],
707
+ defaultmodel: "devthink",
708
+ rotation: {
709
+ mode: "persession",
710
+ models: [
711
+ "muse-spark-1.2-contributor-free",
712
+ "deepseek-v4-flash-free",
713
+ "mimo-v2.5-free",
714
+ "nemotron-3-ultra-free",
715
+ "ling-3.0-flash-fin-free",
716
+ "nemotron-3.5-lightning-free",
717
+ "laguna-s-2.1-free",
718
+ "thinkingmachines/inkling:free",
719
+ "tencent/hy3:free",
720
+ "thinkingmachines/inkling-small:free",
721
+ "inclusionai/ling-3.0-flash-fin:free",
722
+ "nvidia/nemotron-3-ultra-550b-a55b:free",
723
+ "minimax/minimax-m3:free",
724
+ "stepfun/step-3.7-flash:free",
725
+ "nvidia/nemotron-3.5-lightning:free",
726
+ "nvidia/nemotron-3-super-120b-a12b:free",
727
+ "cohere/north-mini-code:free",
728
+ "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free",
729
+ "liquid/lfm-2.5-2.6b:free",
730
+ "minimax/minimax-m2.7:free",
731
+ "dots-studio/dots-3-note-preview:free",
732
+ "poolside/laguna-s-2.1:free",
733
+ "poolside/laguna-xs-2.1:free",
734
+ "nvidia/nemotron-3.5-content-safety:free",
735
+ ],
736
+ everynmessages: 6,
737
+ maxmodelrotations: 1,
738
+ rotateonstatus: [],
739
+ rotateontimeout: false,
740
+ staggernewsessions: true,
741
+ sessionstore: "memory",
742
+ },
743
+ retry: {
744
+ maxretries: 0,
745
+ backoffbasems: 0,
746
+ statuses: [],
747
+ nonretryable: [400],
748
+ fallbackstatuses: [404, 429, 500, 502, 503, 529],
749
+ fallback: "crossprovider",
750
+ },
751
+ timeout: {
752
+ requestms: 300000,
753
+ streamms: 2147483647,
754
+ },
755
+ context: {
756
+ restoresessionhistory: true,
757
+ historylimit: 1000,
758
+ truncatemargin: 4096,
759
+ percallfallback: 1048576,
760
+ markshared: true,
761
+ },
762
+ thinking: {
763
+ defaultlevel: "high",
764
+ param: "chattemplatekwargs",
765
+ },
766
+ bodybuild: {
767
+ optionalparamspolicy: "omit-unspecified",
768
+ clampmaxtokens: false,
769
+ },
770
+ metamodel: {
771
+ id: "devthink",
772
+ fallbackcontext: 1048576,
773
+ maxoutput: 32768,
774
+ maskupstreammodel: true,
775
+ alwaysdisplay: true,
776
+ pattern: "24 free models across opencode zen and kilo with cross provider fallback",
777
+ },
778
+ routes: {
779
+ embeddings: "disabled",
780
+ embeddingsmessage: "v4 free gateways have no embeddings endpoint",
781
+ },
782
+ headers: {
783
+ useragent: "DevThink-Gateway/4.0",
784
+ },
785
+ },
786
+
787
+ // -----------------------------------------------------------------------
788
+ // v5 — openrouter free models single env key per-request rotation
789
+ // -----------------------------------------------------------------------
790
+ v5: {
791
+ id: "v5",
792
+ name: "V5 OpenRouter",
793
+ providername: "openrouter",
794
+ note: "openrouter free tier 19 models per-request round-robin",
795
+ upstreams: [{ name: "openrouter", baseurl: "https://openrouter.ai/api/v1" }],
796
+ auth: {
797
+ mode: "bearer",
798
+ keysources: ["env"],
799
+ envvar: "OPENROUTER_API_KEY",
800
+ keyrotation: "single",
801
+ required: true,
802
+ minkeylength: 10,
803
+ signupurl: "https://openrouter.ai",
804
+ extraheaders: {
805
+ "http-referer": "https://devthink.ai",
806
+ "x-title": "DevThink Gateway",
807
+ },
808
+ },
809
+ models: [
810
+ {
811
+ id: "z-ai/glm-5.2:free",
812
+ context: 1048576,
813
+ maxoutput: 131072,
814
+ vision: false,
815
+ reasoning: true,
816
+ free: true,
817
+ rank: { score: 53, tier: 1 },
818
+ exclusive: true,
819
+ },
820
+ {
821
+ id: "minimax/minimax-m3:free",
822
+ context: 1048576,
823
+ maxoutput: 16384,
824
+ vision: true,
825
+ reasoning: true,
826
+ free: true,
827
+ rank: { score: 45, tier: 1 },
828
+ },
829
+ {
830
+ id: "thinkingmachines/inkling:free",
831
+ context: 1048576,
832
+ maxoutput: 262144,
833
+ vision: true,
834
+ reasoning: true,
835
+ free: true,
836
+ },
837
+ {
838
+ id: "tencent/hy3:free",
839
+ context: 262144,
840
+ maxoutput: 128000,
841
+ vision: false,
842
+ reasoning: true,
843
+ free: true,
844
+ },
845
+ {
846
+ id: "thinkingmachines/inkling-small:free",
847
+ context: 1048576,
848
+ maxoutput: 262144,
849
+ vision: true,
850
+ reasoning: true,
851
+ free: true,
852
+ },
853
+ {
854
+ id: "inclusionai/ling-3.0-flash-fin:free",
855
+ context: 262144,
856
+ maxoutput: 32768,
857
+ vision: false,
858
+ reasoning: true,
859
+ free: true,
860
+ },
861
+ {
862
+ id: "nvidia/nemotron-3-ultra-550b-a55b:free",
863
+ context: 1048576,
864
+ maxoutput: 32768,
865
+ vision: false,
866
+ reasoning: true,
867
+ free: true,
868
+ nvidiarouted: true,
869
+ },
870
+ {
871
+ id: "stepfun/step-3.7-flash:free",
872
+ context: 262144,
873
+ maxoutput: 262144,
874
+ vision: true,
875
+ reasoning: true,
876
+ free: true,
877
+ },
878
+ {
879
+ id: "google/gemma-4-31b-it:free",
880
+ context: 262144,
881
+ maxoutput: 32768,
882
+ vision: true,
883
+ reasoning: true,
884
+ free: true,
885
+ exclusive: true,
886
+ },
887
+ {
888
+ id: "google/gemma-4-26b-a4b-it:free",
889
+ context: 262144,
890
+ maxoutput: 32768,
891
+ vision: true,
892
+ reasoning: true,
893
+ free: true,
894
+ exclusive: true,
895
+ },
896
+ {
897
+ id: "nvidia/nemotron-3-super-120b-a12b:free",
898
+ context: 1048576,
899
+ maxoutput: 32768,
900
+ vision: false,
901
+ reasoning: true,
902
+ free: true,
903
+ nvidiarouted: true,
904
+ },
905
+ {
906
+ id: "nvidia/nemotron-3.5-lightning:free",
907
+ context: 1048576,
908
+ maxoutput: 32768,
909
+ vision: false,
910
+ reasoning: true,
911
+ free: true,
912
+ nvidiarouted: true,
913
+ },
914
+ {
915
+ id: "cohere/north-mini-code:free",
916
+ context: 256000,
917
+ maxoutput: 64000,
918
+ vision: false,
919
+ reasoning: true,
920
+ free: true,
921
+ },
922
+ {
923
+ id: "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free",
924
+ context: 256000,
925
+ maxoutput: 65536,
926
+ vision: true,
927
+ reasoning: true,
928
+ free: true,
929
+ nvidiarouted: true,
930
+ },
931
+ {
932
+ id: "liquid/lfm-2.5-2.6b:free",
933
+ context: 65536,
934
+ maxoutput: 8192,
935
+ vision: false,
936
+ reasoning: true,
937
+ free: true,
938
+ },
939
+ {
940
+ id: "minimax/minimax-m2.7:free",
941
+ context: 196608,
942
+ maxoutput: 196608,
943
+ vision: false,
944
+ reasoning: true,
945
+ free: true,
946
+ },
947
+ {
948
+ id: "dots-studio/dots-3-note-preview:free",
949
+ context: 512000,
950
+ maxoutput: 460800,
951
+ vision: true,
952
+ reasoning: true,
953
+ free: true,
954
+ },
955
+ {
956
+ id: "poolside/laguna-s-2.1:free",
957
+ context: 262144,
958
+ maxoutput: 32768,
959
+ vision: false,
960
+ reasoning: true,
961
+ free: true,
962
+ },
963
+ {
964
+ id: "poolside/laguna-xs-2.1:free",
965
+ context: 262144,
966
+ maxoutput: 32768,
967
+ vision: false,
968
+ reasoning: true,
969
+ free: true,
970
+ },
971
+ ],
972
+ defaultmodel: "devthink",
973
+ rotation: {
974
+ mode: "perrequest",
975
+ models: [
976
+ "z-ai/glm-5.2:free",
977
+ "minimax/minimax-m3:free",
978
+ "thinkingmachines/inkling:free",
979
+ "tencent/hy3:free",
980
+ "thinkingmachines/inkling-small:free",
981
+ "inclusionai/ling-3.0-flash-fin:free",
982
+ "nvidia/nemotron-3-ultra-550b-a55b:free",
983
+ "stepfun/step-3.7-flash:free",
984
+ "google/gemma-4-31b-it:free",
985
+ "google/gemma-4-26b-a4b-it:free",
986
+ "nvidia/nemotron-3-super-120b-a12b:free",
987
+ "nvidia/nemotron-3.5-lightning:free",
988
+ "cohere/north-mini-code:free",
989
+ "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free",
990
+ "liquid/lfm-2.5-2.6b:free",
991
+ "minimax/minimax-m2.7:free",
992
+ "dots-studio/dots-3-note-preview:free",
993
+ "poolside/laguna-s-2.1:free",
994
+ "poolside/laguna-xs-2.1:free",
995
+ ],
996
+ everynmessages: 1,
997
+ maxmodelrotations: 1,
998
+ staggernewsessions: true,
999
+ sessionstore: "memory",
1000
+ },
1001
+ retry: {
1002
+ maxretries: 0,
1003
+ statuses: [],
1004
+ nonretryable: [400],
1005
+ fallback: "none",
1006
+ },
1007
+ timeout: {
1008
+ requestms: 300000,
1009
+ streamms: 2147483647,
1010
+ },
1011
+ context: {
1012
+ restoresessionhistory: false,
1013
+ truncate: false,
1014
+ },
1015
+ thinking: {
1016
+ defaultlevel: "high",
1017
+ param: "chattemplatekwargs",
1018
+ },
1019
+ bodybuild: {
1020
+ optionalparamspolicy: "omit-unspecified",
1021
+ clampmaxtokens: false,
1022
+ },
1023
+ metamodel: {
1024
+ id: "devthink",
1025
+ fallbackcontext: 1048576,
1026
+ maxoutput: 32768,
1027
+ maskupstreammodel: true,
1028
+ alwaysdisplay: true,
1029
+ pattern: "19 openrouter free models per-request round-robin",
1030
+ },
1031
+ routes: {
1032
+ embeddings: "disabled",
1033
+ embeddingsmessage: "openrouter has no embeddings endpoint on this gateway",
1034
+ },
1035
+ headers: {
1036
+ useragent: "DevThink-Gateway/5.0",
1037
+ },
1038
+ },
1039
+ },
1040
+ };
1041
+
1042
+ export default config;