@bolt-foundry/gambit 0.8.3 → 0.8.5-rc.10

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 (291) hide show
  1. package/CHANGELOG.md +74 -2
  2. package/README.md +87 -23
  3. package/esm/_dnt.polyfills.d.ts +17 -0
  4. package/esm/_dnt.polyfills.d.ts.map +1 -1
  5. package/esm/_dnt.polyfills.js +123 -0
  6. package/esm/deps/jsr.io/@std/collections/1.1.6/deep_merge.d.ts +322 -0
  7. package/esm/deps/jsr.io/@std/collections/1.1.6/deep_merge.d.ts.map +1 -0
  8. package/esm/deps/jsr.io/@std/collections/1.1.6/deep_merge.js +105 -0
  9. package/esm/deps/jsr.io/@std/fs/1.0.23/_create_walk_entry.d.ts +14 -0
  10. package/esm/deps/jsr.io/@std/fs/1.0.23/_create_walk_entry.d.ts.map +1 -0
  11. package/esm/deps/jsr.io/@std/fs/1.0.23/_create_walk_entry.js +34 -0
  12. package/esm/deps/jsr.io/@std/fs/1.0.23/_get_file_info_type.d.ts +13 -0
  13. package/esm/deps/jsr.io/@std/fs/1.0.23/_get_file_info_type.d.ts.map +1 -0
  14. package/esm/deps/jsr.io/@std/fs/1.0.23/_get_file_info_type.js +18 -0
  15. package/esm/deps/jsr.io/@std/fs/1.0.23/_is_same_path.d.ts +10 -0
  16. package/esm/deps/jsr.io/@std/fs/1.0.23/_is_same_path.d.ts.map +1 -0
  17. package/esm/deps/jsr.io/@std/fs/1.0.23/_is_same_path.js +17 -0
  18. package/esm/deps/jsr.io/@std/fs/1.0.23/_is_subdir.d.ts +12 -0
  19. package/esm/deps/jsr.io/@std/fs/1.0.23/_is_subdir.d.ts.map +1 -0
  20. package/esm/deps/jsr.io/@std/fs/1.0.23/_is_subdir.js +25 -0
  21. package/esm/deps/jsr.io/@std/fs/1.0.23/_to_path_string.d.ts +9 -0
  22. package/esm/deps/jsr.io/@std/fs/1.0.23/_to_path_string.d.ts.map +1 -0
  23. package/esm/deps/jsr.io/@std/fs/1.0.23/_to_path_string.js +13 -0
  24. package/esm/deps/jsr.io/@std/fs/1.0.23/copy.d.ts +117 -0
  25. package/esm/deps/jsr.io/@std/fs/1.0.23/copy.d.ts.map +1 -0
  26. package/esm/deps/jsr.io/@std/fs/1.0.23/copy.js +313 -0
  27. package/esm/deps/jsr.io/@std/fs/1.0.23/empty_dir.d.ts +48 -0
  28. package/esm/deps/jsr.io/@std/fs/1.0.23/empty_dir.d.ts.map +1 -0
  29. package/esm/deps/jsr.io/@std/fs/1.0.23/empty_dir.js +87 -0
  30. package/esm/deps/jsr.io/@std/fs/1.0.23/ensure_dir.d.ts +49 -0
  31. package/esm/deps/jsr.io/@std/fs/1.0.23/ensure_dir.d.ts.map +1 -0
  32. package/esm/deps/jsr.io/@std/fs/1.0.23/ensure_dir.js +102 -0
  33. package/esm/deps/jsr.io/@std/fs/1.0.23/ensure_file.d.ts +47 -0
  34. package/esm/deps/jsr.io/@std/fs/1.0.23/ensure_file.d.ts.map +1 -0
  35. package/esm/deps/jsr.io/@std/fs/1.0.23/ensure_file.js +90 -0
  36. package/esm/deps/jsr.io/@std/fs/1.0.23/ensure_link.d.ts +49 -0
  37. package/esm/deps/jsr.io/@std/fs/1.0.23/ensure_link.d.ts.map +1 -0
  38. package/esm/deps/jsr.io/@std/fs/1.0.23/ensure_link.js +61 -0
  39. package/esm/deps/jsr.io/@std/fs/1.0.23/ensure_symlink.d.ts +70 -0
  40. package/esm/deps/jsr.io/@std/fs/1.0.23/ensure_symlink.d.ts.map +1 -0
  41. package/esm/deps/jsr.io/@std/fs/1.0.23/ensure_symlink.js +156 -0
  42. package/esm/deps/jsr.io/@std/fs/1.0.23/eol.d.ts +52 -0
  43. package/esm/deps/jsr.io/@std/fs/1.0.23/eol.d.ts.map +1 -0
  44. package/esm/deps/jsr.io/@std/fs/1.0.23/eol.js +67 -0
  45. package/esm/deps/jsr.io/@std/fs/1.0.23/exists.d.ts +218 -0
  46. package/esm/deps/jsr.io/@std/fs/1.0.23/exists.d.ts.map +1 -0
  47. package/esm/deps/jsr.io/@std/fs/1.0.23/exists.js +271 -0
  48. package/esm/deps/jsr.io/@std/fs/1.0.23/expand_glob.d.ts +267 -0
  49. package/esm/deps/jsr.io/@std/fs/1.0.23/expand_glob.d.ts.map +1 -0
  50. package/esm/deps/jsr.io/@std/fs/1.0.23/expand_glob.js +442 -0
  51. package/esm/deps/jsr.io/@std/fs/1.0.23/mod.d.ts +29 -0
  52. package/esm/deps/jsr.io/@std/fs/1.0.23/mod.d.ts.map +1 -0
  53. package/esm/deps/jsr.io/@std/fs/1.0.23/mod.js +29 -0
  54. package/esm/deps/jsr.io/@std/fs/1.0.23/move.d.ts +86 -0
  55. package/esm/deps/jsr.io/@std/fs/1.0.23/move.d.ts.map +1 -0
  56. package/esm/deps/jsr.io/@std/fs/1.0.23/move.js +142 -0
  57. package/esm/deps/jsr.io/@std/fs/1.0.23/walk.d.ts +777 -0
  58. package/esm/deps/jsr.io/@std/fs/1.0.23/walk.d.ts.map +1 -0
  59. package/esm/deps/jsr.io/@std/fs/1.0.23/walk.js +846 -0
  60. package/esm/deps/jsr.io/@std/json/1.0.3/types.d.ts +7 -0
  61. package/esm/deps/jsr.io/@std/json/1.0.3/types.d.ts.map +1 -0
  62. package/esm/deps/jsr.io/@std/json/1.0.3/types.js +3 -0
  63. package/esm/deps/jsr.io/@std/jsonc/1.0.2/mod.d.ts +20 -0
  64. package/esm/deps/jsr.io/@std/jsonc/1.0.2/mod.d.ts.map +1 -0
  65. package/esm/deps/jsr.io/@std/jsonc/1.0.2/mod.js +21 -0
  66. package/esm/deps/jsr.io/@std/jsonc/1.0.2/parse.d.ts +21 -0
  67. package/esm/deps/jsr.io/@std/jsonc/1.0.2/parse.d.ts.map +1 -0
  68. package/esm/deps/jsr.io/@std/jsonc/1.0.2/parse.js +320 -0
  69. package/esm/deps/jsr.io/@std/path/1.1.4/constants.d.ts +1 -1
  70. package/esm/deps/jsr.io/@std/toml/1.0.11/_parser.d.ts +93 -0
  71. package/esm/deps/jsr.io/@std/toml/1.0.11/_parser.d.ts.map +1 -0
  72. package/esm/deps/jsr.io/@std/toml/1.0.11/_parser.js +753 -0
  73. package/esm/deps/jsr.io/@std/toml/1.0.11/mod.d.ts +109 -0
  74. package/esm/deps/jsr.io/@std/toml/1.0.11/mod.d.ts.map +1 -0
  75. package/esm/deps/jsr.io/@std/toml/1.0.11/mod.js +110 -0
  76. package/esm/deps/jsr.io/@std/toml/1.0.11/parse.d.ts +21 -0
  77. package/esm/deps/jsr.io/@std/toml/1.0.11/parse.d.ts.map +1 -0
  78. package/esm/deps/jsr.io/@std/toml/1.0.11/parse.js +25 -0
  79. package/esm/deps/jsr.io/@std/toml/1.0.11/stringify.d.ts +35 -0
  80. package/esm/deps/jsr.io/@std/toml/1.0.11/stringify.d.ts.map +1 -0
  81. package/esm/deps/jsr.io/@std/toml/1.0.11/stringify.js +283 -0
  82. package/esm/gambit/simulator-ui/dist/bundle.js +11454 -4639
  83. package/esm/gambit/simulator-ui/dist/bundle.js.map +4 -4
  84. package/esm/mod.d.ts +13 -3
  85. package/esm/mod.d.ts.map +1 -1
  86. package/esm/mod.js +8 -2
  87. package/esm/src/cli_utils.d.ts +1 -0
  88. package/esm/src/cli_utils.d.ts.map +1 -1
  89. package/esm/src/cli_utils.js +13 -1
  90. package/esm/src/default_runtime.d.ts +46 -0
  91. package/esm/src/default_runtime.d.ts.map +1 -0
  92. package/esm/src/default_runtime.js +415 -0
  93. package/esm/src/durable_streams.js +26 -1
  94. package/esm/src/model_matchers.d.ts +10 -0
  95. package/esm/src/model_matchers.d.ts.map +1 -0
  96. package/esm/src/model_matchers.js +26 -0
  97. package/esm/src/openai_compat.d.ts +12 -1
  98. package/esm/src/openai_compat.d.ts.map +1 -1
  99. package/esm/src/openai_compat.js +53 -1
  100. package/esm/src/project_config.d.ts +47 -0
  101. package/esm/src/project_config.d.ts.map +1 -0
  102. package/esm/src/project_config.js +134 -0
  103. package/esm/src/providers/codex.d.ts +37 -0
  104. package/esm/src/providers/codex.d.ts.map +1 -0
  105. package/esm/src/providers/codex.js +810 -0
  106. package/esm/src/providers/google.d.ts +3 -1
  107. package/esm/src/providers/google.d.ts.map +1 -1
  108. package/esm/src/providers/google.js +82 -6
  109. package/esm/src/providers/ollama.d.ts +3 -1
  110. package/esm/src/providers/ollama.d.ts.map +1 -1
  111. package/esm/src/providers/ollama.js +295 -15
  112. package/esm/src/providers/openrouter.d.ts +6 -2
  113. package/esm/src/providers/openrouter.d.ts.map +1 -1
  114. package/esm/src/providers/openrouter.js +317 -23
  115. package/esm/src/providers/router.d.ts +19 -0
  116. package/esm/src/providers/router.d.ts.map +1 -0
  117. package/esm/src/providers/router.js +93 -0
  118. package/esm/src/server.d.ts +9 -0
  119. package/esm/src/server.d.ts.map +1 -1
  120. package/esm/src/server.js +3314 -659
  121. package/esm/src/server_feedback_grading_routes.d.ts +32 -0
  122. package/esm/src/server_feedback_grading_routes.d.ts.map +1 -0
  123. package/esm/src/server_feedback_grading_routes.js +305 -0
  124. package/esm/src/server_helpers.d.ts +4 -0
  125. package/esm/src/server_helpers.d.ts.map +1 -0
  126. package/esm/src/server_helpers.js +46 -0
  127. package/esm/src/server_session_store.d.ts +87 -0
  128. package/esm/src/server_session_store.d.ts.map +1 -0
  129. package/esm/src/server_session_store.js +873 -0
  130. package/esm/src/server_types.d.ts +110 -0
  131. package/esm/src/server_types.d.ts.map +1 -0
  132. package/esm/src/server_types.js +1 -0
  133. package/esm/src/server_ui_routes.d.ts +33 -0
  134. package/esm/src/server_ui_routes.d.ts.map +1 -0
  135. package/esm/src/server_ui_routes.js +136 -0
  136. package/esm/src/session_artifacts.d.ts +22 -0
  137. package/esm/src/session_artifacts.d.ts.map +1 -0
  138. package/esm/src/session_artifacts.js +243 -0
  139. package/esm/src/trace.d.ts.map +1 -1
  140. package/esm/src/trace.js +6 -3
  141. package/esm/src/workspace.d.ts +19 -0
  142. package/esm/src/workspace.d.ts.map +1 -0
  143. package/esm/src/workspace.js +162 -0
  144. package/esm/src/workspace_contract.d.ts +78 -0
  145. package/esm/src/workspace_contract.d.ts.map +1 -0
  146. package/esm/src/workspace_contract.js +76 -0
  147. package/package.json +2 -2
  148. package/script/_dnt.polyfills.d.ts +17 -0
  149. package/script/_dnt.polyfills.d.ts.map +1 -1
  150. package/script/_dnt.polyfills.js +123 -0
  151. package/script/deps/jsr.io/@std/collections/1.1.6/deep_merge.d.ts +322 -0
  152. package/script/deps/jsr.io/@std/collections/1.1.6/deep_merge.d.ts.map +1 -0
  153. package/script/deps/jsr.io/@std/collections/1.1.6/deep_merge.js +108 -0
  154. package/script/deps/jsr.io/@std/fs/1.0.23/_create_walk_entry.d.ts +14 -0
  155. package/script/deps/jsr.io/@std/fs/1.0.23/_create_walk_entry.d.ts.map +1 -0
  156. package/script/deps/jsr.io/@std/fs/1.0.23/_create_walk_entry.js +71 -0
  157. package/script/deps/jsr.io/@std/fs/1.0.23/_get_file_info_type.d.ts +13 -0
  158. package/script/deps/jsr.io/@std/fs/1.0.23/_get_file_info_type.d.ts.map +1 -0
  159. package/script/deps/jsr.io/@std/fs/1.0.23/_get_file_info_type.js +21 -0
  160. package/script/deps/jsr.io/@std/fs/1.0.23/_is_same_path.d.ts +10 -0
  161. package/script/deps/jsr.io/@std/fs/1.0.23/_is_same_path.d.ts.map +1 -0
  162. package/script/deps/jsr.io/@std/fs/1.0.23/_is_same_path.js +20 -0
  163. package/script/deps/jsr.io/@std/fs/1.0.23/_is_subdir.d.ts +12 -0
  164. package/script/deps/jsr.io/@std/fs/1.0.23/_is_subdir.d.ts.map +1 -0
  165. package/script/deps/jsr.io/@std/fs/1.0.23/_is_subdir.js +28 -0
  166. package/script/deps/jsr.io/@std/fs/1.0.23/_to_path_string.d.ts +9 -0
  167. package/script/deps/jsr.io/@std/fs/1.0.23/_to_path_string.d.ts.map +1 -0
  168. package/script/deps/jsr.io/@std/fs/1.0.23/_to_path_string.js +16 -0
  169. package/script/deps/jsr.io/@std/fs/1.0.23/copy.d.ts +117 -0
  170. package/script/deps/jsr.io/@std/fs/1.0.23/copy.d.ts.map +1 -0
  171. package/script/deps/jsr.io/@std/fs/1.0.23/copy.js +350 -0
  172. package/script/deps/jsr.io/@std/fs/1.0.23/empty_dir.d.ts +48 -0
  173. package/script/deps/jsr.io/@std/fs/1.0.23/empty_dir.d.ts.map +1 -0
  174. package/script/deps/jsr.io/@std/fs/1.0.23/empty_dir.js +124 -0
  175. package/script/deps/jsr.io/@std/fs/1.0.23/ensure_dir.d.ts +49 -0
  176. package/script/deps/jsr.io/@std/fs/1.0.23/ensure_dir.d.ts.map +1 -0
  177. package/script/deps/jsr.io/@std/fs/1.0.23/ensure_dir.js +139 -0
  178. package/script/deps/jsr.io/@std/fs/1.0.23/ensure_file.d.ts +47 -0
  179. package/script/deps/jsr.io/@std/fs/1.0.23/ensure_file.d.ts.map +1 -0
  180. package/script/deps/jsr.io/@std/fs/1.0.23/ensure_file.js +127 -0
  181. package/script/deps/jsr.io/@std/fs/1.0.23/ensure_link.d.ts +49 -0
  182. package/script/deps/jsr.io/@std/fs/1.0.23/ensure_link.d.ts.map +1 -0
  183. package/script/deps/jsr.io/@std/fs/1.0.23/ensure_link.js +98 -0
  184. package/script/deps/jsr.io/@std/fs/1.0.23/ensure_symlink.d.ts +70 -0
  185. package/script/deps/jsr.io/@std/fs/1.0.23/ensure_symlink.d.ts.map +1 -0
  186. package/script/deps/jsr.io/@std/fs/1.0.23/ensure_symlink.js +193 -0
  187. package/script/deps/jsr.io/@std/fs/1.0.23/eol.d.ts +52 -0
  188. package/script/deps/jsr.io/@std/fs/1.0.23/eol.d.ts.map +1 -0
  189. package/script/deps/jsr.io/@std/fs/1.0.23/eol.js +105 -0
  190. package/script/deps/jsr.io/@std/fs/1.0.23/exists.d.ts +218 -0
  191. package/script/deps/jsr.io/@std/fs/1.0.23/exists.d.ts.map +1 -0
  192. package/script/deps/jsr.io/@std/fs/1.0.23/exists.js +308 -0
  193. package/script/deps/jsr.io/@std/fs/1.0.23/expand_glob.d.ts +267 -0
  194. package/script/deps/jsr.io/@std/fs/1.0.23/expand_glob.d.ts.map +1 -0
  195. package/script/deps/jsr.io/@std/fs/1.0.23/expand_glob.js +479 -0
  196. package/script/deps/jsr.io/@std/fs/1.0.23/mod.d.ts +29 -0
  197. package/script/deps/jsr.io/@std/fs/1.0.23/mod.d.ts.map +1 -0
  198. package/script/deps/jsr.io/@std/fs/1.0.23/mod.js +45 -0
  199. package/script/deps/jsr.io/@std/fs/1.0.23/move.d.ts +86 -0
  200. package/script/deps/jsr.io/@std/fs/1.0.23/move.d.ts.map +1 -0
  201. package/script/deps/jsr.io/@std/fs/1.0.23/move.js +179 -0
  202. package/script/deps/jsr.io/@std/fs/1.0.23/walk.d.ts +777 -0
  203. package/script/deps/jsr.io/@std/fs/1.0.23/walk.d.ts.map +1 -0
  204. package/script/deps/jsr.io/@std/fs/1.0.23/walk.js +883 -0
  205. package/script/deps/jsr.io/@std/json/1.0.3/types.d.ts +7 -0
  206. package/script/deps/jsr.io/@std/json/1.0.3/types.d.ts.map +1 -0
  207. package/script/deps/jsr.io/@std/json/1.0.3/types.js +4 -0
  208. package/script/deps/jsr.io/@std/jsonc/1.0.2/mod.d.ts +20 -0
  209. package/script/deps/jsr.io/@std/jsonc/1.0.2/mod.d.ts.map +1 -0
  210. package/script/deps/jsr.io/@std/jsonc/1.0.2/mod.js +37 -0
  211. package/script/deps/jsr.io/@std/jsonc/1.0.2/parse.d.ts +21 -0
  212. package/script/deps/jsr.io/@std/jsonc/1.0.2/parse.d.ts.map +1 -0
  213. package/script/deps/jsr.io/@std/jsonc/1.0.2/parse.js +323 -0
  214. package/script/deps/jsr.io/@std/path/1.1.4/constants.d.ts +1 -1
  215. package/script/deps/jsr.io/@std/toml/1.0.11/_parser.d.ts +93 -0
  216. package/script/deps/jsr.io/@std/toml/1.0.11/_parser.d.ts.map +1 -0
  217. package/script/deps/jsr.io/@std/toml/1.0.11/_parser.js +781 -0
  218. package/script/deps/jsr.io/@std/toml/1.0.11/mod.d.ts +109 -0
  219. package/script/deps/jsr.io/@std/toml/1.0.11/mod.d.ts.map +1 -0
  220. package/script/deps/jsr.io/@std/toml/1.0.11/mod.js +126 -0
  221. package/script/deps/jsr.io/@std/toml/1.0.11/parse.d.ts +21 -0
  222. package/script/deps/jsr.io/@std/toml/1.0.11/parse.d.ts.map +1 -0
  223. package/script/deps/jsr.io/@std/toml/1.0.11/parse.js +28 -0
  224. package/script/deps/jsr.io/@std/toml/1.0.11/stringify.d.ts +35 -0
  225. package/script/deps/jsr.io/@std/toml/1.0.11/stringify.d.ts.map +1 -0
  226. package/script/deps/jsr.io/@std/toml/1.0.11/stringify.js +286 -0
  227. package/script/gambit/simulator-ui/dist/bundle.js +11454 -4639
  228. package/script/gambit/simulator-ui/dist/bundle.js.map +4 -4
  229. package/script/mod.d.ts +13 -3
  230. package/script/mod.d.ts.map +1 -1
  231. package/script/mod.js +14 -5
  232. package/script/src/cli_utils.d.ts +1 -0
  233. package/script/src/cli_utils.d.ts.map +1 -1
  234. package/script/src/cli_utils.js +14 -1
  235. package/script/src/default_runtime.d.ts +46 -0
  236. package/script/src/default_runtime.d.ts.map +1 -0
  237. package/script/src/default_runtime.js +452 -0
  238. package/script/src/durable_streams.js +26 -1
  239. package/script/src/model_matchers.d.ts +10 -0
  240. package/script/src/model_matchers.d.ts.map +1 -0
  241. package/script/src/model_matchers.js +29 -0
  242. package/script/src/openai_compat.d.ts +12 -1
  243. package/script/src/openai_compat.d.ts.map +1 -1
  244. package/script/src/openai_compat.js +85 -0
  245. package/script/src/project_config.d.ts +47 -0
  246. package/script/src/project_config.d.ts.map +1 -0
  247. package/script/src/project_config.js +173 -0
  248. package/script/src/providers/codex.d.ts +37 -0
  249. package/script/src/providers/codex.d.ts.map +1 -0
  250. package/script/src/providers/codex.js +850 -0
  251. package/script/src/providers/google.d.ts +3 -1
  252. package/script/src/providers/google.d.ts.map +1 -1
  253. package/script/src/providers/google.js +82 -6
  254. package/script/src/providers/ollama.d.ts +3 -1
  255. package/script/src/providers/ollama.d.ts.map +1 -1
  256. package/script/src/providers/ollama.js +295 -15
  257. package/script/src/providers/openrouter.d.ts +6 -2
  258. package/script/src/providers/openrouter.d.ts.map +1 -1
  259. package/script/src/providers/openrouter.js +317 -23
  260. package/script/src/providers/router.d.ts +19 -0
  261. package/script/src/providers/router.d.ts.map +1 -0
  262. package/script/src/providers/router.js +96 -0
  263. package/script/src/server.d.ts +9 -0
  264. package/script/src/server.d.ts.map +1 -1
  265. package/script/src/server.js +3321 -666
  266. package/script/src/server_feedback_grading_routes.d.ts +32 -0
  267. package/script/src/server_feedback_grading_routes.d.ts.map +1 -0
  268. package/script/src/server_feedback_grading_routes.js +343 -0
  269. package/script/src/server_helpers.d.ts +4 -0
  270. package/script/src/server_helpers.d.ts.map +1 -0
  271. package/script/src/server_helpers.js +84 -0
  272. package/script/src/server_session_store.d.ts +87 -0
  273. package/script/src/server_session_store.d.ts.map +1 -0
  274. package/script/src/server_session_store.js +910 -0
  275. package/script/src/server_types.d.ts +110 -0
  276. package/script/src/server_types.d.ts.map +1 -0
  277. package/script/src/server_types.js +2 -0
  278. package/script/src/server_ui_routes.d.ts +33 -0
  279. package/script/src/server_ui_routes.d.ts.map +1 -0
  280. package/script/src/server_ui_routes.js +173 -0
  281. package/script/src/session_artifacts.d.ts +22 -0
  282. package/script/src/session_artifacts.d.ts.map +1 -0
  283. package/script/src/session_artifacts.js +279 -0
  284. package/script/src/trace.d.ts.map +1 -1
  285. package/script/src/trace.js +6 -3
  286. package/script/src/workspace.d.ts +19 -0
  287. package/script/src/workspace.d.ts.map +1 -0
  288. package/script/src/workspace.js +199 -0
  289. package/script/src/workspace_contract.d.ts +78 -0
  290. package/script/src/workspace_contract.d.ts.map +1 -0
  291. package/script/src/workspace_contract.js +84 -0
@@ -1 +1 @@
1
- {"version":3,"file":"openrouter.d.ts","sourceRoot":"","sources":["../../../src/src/providers/openrouter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAKV,aAAa,EAOd,MAAM,2BAA2B,CAAC;AAOnC,eAAO,MAAM,iBAAiB,gBAAgB,CAAC;AAE/C,KAAK,YAAY,GAAG;IAClB,IAAI,EAAE;QACJ,WAAW,EAAE;YACX,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;SAC/C,CAAC;KACH,CAAC;IACF,SAAS,EAAE;QACT,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;KAC/C,CAAC;CACH,CAAC;AA8eF,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB,GAAG,aAAa,CA8MhB"}
1
+ {"version":3,"file":"openrouter.d.ts","sourceRoot":"","sources":["../../../src/src/providers/openrouter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAKV,aAAa,EAOd,MAAM,2BAA2B,CAAC;AAOnC,eAAO,MAAM,iBAAiB,gBAAgB,CAAC;AAE/C,KAAK,YAAY,GAAG;IAClB,IAAI,EAAE;QACJ,WAAW,EAAE;YACX,MAAM,EAAE,CACN,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE;gBAAE,MAAM,CAAC,EAAE,WAAW,CAAA;aAAE,KAC/B,OAAO,CAAC,OAAO,CAAC,CAAC;SACvB,CAAC;KACH,CAAC;IACF,SAAS,EAAE;QACT,MAAM,EAAE,CACN,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,WAAW,CAAA;SAAE,KAC/B,OAAO,CAAC,OAAO,CAAC,CAAC;KACvB,CAAC;CACH,CAAC;AA2yBF,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB,GAAG,aAAa,CAwOhB"}
@@ -77,6 +77,30 @@ function safeJson(input) {
77
77
  }
78
78
  return {};
79
79
  }
80
+ function toJsonValue(value) {
81
+ if (value === null || typeof value === "string" || typeof value === "boolean") {
82
+ return value;
83
+ }
84
+ if (typeof value === "number") {
85
+ return Number.isFinite(value) ? value : String(value);
86
+ }
87
+ if (Array.isArray(value)) {
88
+ return value.map((entry) => toJsonValue(entry));
89
+ }
90
+ if (value && typeof value === "object") {
91
+ const out = {};
92
+ for (const [key, entry] of Object.entries(value)) {
93
+ if (entry === undefined)
94
+ continue;
95
+ out[key] = toJsonValue(entry);
96
+ }
97
+ return out;
98
+ }
99
+ return String(value);
100
+ }
101
+ function isExtensionResponseItem(item) {
102
+ return item.type.includes(":");
103
+ }
80
104
  function isAsyncIterable(value) {
81
105
  return Boolean(value &&
82
106
  typeof value === "object" &&
@@ -85,11 +109,16 @@ function isAsyncIterable(value) {
85
109
  function mapUsage(usage) {
86
110
  if (!usage)
87
111
  return undefined;
88
- return {
112
+ const reasoningTokens = usage.output_tokens_details?.reasoning_tokens ?? undefined;
113
+ const out = {
89
114
  promptTokens: usage.input_tokens ?? 0,
90
115
  completionTokens: usage.output_tokens ?? 0,
91
116
  totalTokens: usage.total_tokens ?? 0,
92
117
  };
118
+ if (typeof reasoningTokens === "number") {
119
+ out.reasoningTokens = reasoningTokens;
120
+ }
121
+ return out;
93
122
  }
94
123
  function mapStatus(status) {
95
124
  if (!status)
@@ -100,6 +129,25 @@ function mapStatus(status) {
100
129
  return "in_progress";
101
130
  return "failed";
102
131
  }
132
+ function mapReasoning(reasoning) {
133
+ if (!reasoning)
134
+ return undefined;
135
+ const out = {};
136
+ if (reasoning.effort !== undefined)
137
+ out.effort = reasoning.effort;
138
+ if (reasoning.summary !== undefined)
139
+ out.summary = reasoning.summary;
140
+ return Object.keys(out).length > 0 ? out : undefined;
141
+ }
142
+ function stripUndefined(input) {
143
+ const out = { ...input };
144
+ for (const [key, value] of Object.entries(out)) {
145
+ if (value === undefined) {
146
+ delete out[key];
147
+ }
148
+ }
149
+ return out;
150
+ }
103
151
  function mapError(error) {
104
152
  if (!error)
105
153
  return undefined;
@@ -180,20 +228,45 @@ function appendSyntheticTools(tools, input) {
180
228
  function mapToolChoice(toolChoice) {
181
229
  if (!toolChoice)
182
230
  return undefined;
183
- if (toolChoice === "auto" || toolChoice === "required")
231
+ if (toolChoice === "none" || toolChoice === "auto" ||
232
+ toolChoice === "required") {
184
233
  return toolChoice;
234
+ }
235
+ if (toolChoice.type === "allowed_tools") {
236
+ return {
237
+ type: "allowed_tools",
238
+ tools: toolChoice.tools,
239
+ mode: toolChoice.mode ?? "auto",
240
+ };
241
+ }
185
242
  return { type: "function", name: toolChoice.function.name };
186
243
  }
244
+ function mapResponseContentPart(part) {
245
+ if (!part || typeof part !== "object")
246
+ return null;
247
+ if (typeof part.text !== "string")
248
+ return null;
249
+ if (part.type === "output_text") {
250
+ return { type: "output_text", text: part.text };
251
+ }
252
+ if (part.type === "summary_text") {
253
+ return { type: "summary_text", text: part.text };
254
+ }
255
+ if (part.type === "reasoning_text") {
256
+ return { type: "reasoning_text", text: part.text };
257
+ }
258
+ if (part.type === "input_text") {
259
+ return { type: "input_text", text: part.text };
260
+ }
261
+ return null;
262
+ }
187
263
  function mapOpenAIOutputItem(item) {
188
264
  const itemType = item.type;
189
265
  if (itemType === "message") {
190
266
  const message = item;
191
- const content = [];
192
- for (const part of message.content ?? []) {
193
- if (part.type === "output_text") {
194
- content.push({ type: "output_text", text: part.text });
195
- }
196
- }
267
+ const content = (message.content ?? [])
268
+ .map((part) => mapResponseContentPart(part))
269
+ .filter((part) => Boolean(part));
197
270
  if (content.length === 0)
198
271
  return null;
199
272
  return {
@@ -213,6 +286,48 @@ function mapOpenAIOutputItem(item) {
213
286
  id: call.id,
214
287
  };
215
288
  }
289
+ if (itemType === "reasoning") {
290
+ const reasoning = item;
291
+ const content = (reasoning.content ?? [])
292
+ .map((part) => mapResponseContentPart(part))
293
+ .filter((part) => Boolean(part));
294
+ const summary = (reasoning.summary ?? [])
295
+ .map((part) => mapResponseContentPart(part))
296
+ .filter((part) => Boolean(part));
297
+ return {
298
+ type: "reasoning",
299
+ id: reasoning.id,
300
+ content: content.length > 0 ? content : undefined,
301
+ summary,
302
+ encrypted_content: reasoning.encrypted_content,
303
+ };
304
+ }
305
+ if (typeof itemType === "string" && itemType.includes(":")) {
306
+ const raw = item;
307
+ const payloadEntries = Object.entries(raw).filter(([key, value]) => {
308
+ if (key === "type" || key === "id")
309
+ return false;
310
+ if (value === undefined)
311
+ return false;
312
+ return true;
313
+ });
314
+ let data;
315
+ if (payloadEntries.length === 1 && payloadEntries[0][0] === "data") {
316
+ data = toJsonValue(payloadEntries[0][1]);
317
+ }
318
+ else {
319
+ const payloadObject = {};
320
+ for (const [key, value] of payloadEntries) {
321
+ payloadObject[key] = toJsonValue(value);
322
+ }
323
+ data = payloadObject;
324
+ }
325
+ return {
326
+ type: itemType,
327
+ id: typeof raw.id === "string" ? raw.id : undefined,
328
+ data,
329
+ };
330
+ }
216
331
  return null;
217
332
  }
218
333
  function normalizeOpenAIResponse(response) {
@@ -223,11 +338,23 @@ function normalizeOpenAIResponse(response) {
223
338
  id: response.id,
224
339
  object: "response",
225
340
  model: response.model,
341
+ created_at: response.created_at,
226
342
  created: response.created_at,
343
+ completed_at: response.completed_at ??
344
+ null,
345
+ previous_response_id: response.previous_response_id ?? null,
346
+ instructions: response.instructions ?? null,
347
+ reasoning: response
348
+ .reasoning ?? null,
227
349
  status: mapStatus(response.status ?? undefined),
228
350
  output: outputItems,
229
351
  usage: mapUsage(response.usage),
230
- error: mapError(response.error),
352
+ error: mapError(response.error) ?? null,
353
+ metadata: response.metadata,
354
+ max_output_tokens: response.max_output_tokens ?? null,
355
+ max_tool_calls: response.max_tool_calls ?? null,
356
+ parallel_tool_calls: response.parallel_tool_calls,
357
+ store: response.store,
231
358
  };
232
359
  }
233
360
  function toOpenAIInputItems(items) {
@@ -249,6 +376,18 @@ function toOpenAIInputItems(items) {
249
376
  text: part.text,
250
377
  };
251
378
  }
379
+ if (part.type === "summary_text") {
380
+ return {
381
+ type: "summary_text",
382
+ text: part.text,
383
+ };
384
+ }
385
+ if (part.type === "reasoning_text") {
386
+ return {
387
+ type: "reasoning_text",
388
+ text: part.text,
389
+ };
390
+ }
252
391
  return null;
253
392
  })
254
393
  .filter((part) => Boolean(part));
@@ -279,6 +418,29 @@ function toOpenAIInputItems(items) {
279
418
  output: item.output,
280
419
  id: item.id,
281
420
  });
421
+ continue;
422
+ }
423
+ if (item.type === "reasoning") {
424
+ mapped.push({
425
+ type: "reasoning",
426
+ id: item.id,
427
+ content: (item.content ?? []).map((part) => ({
428
+ type: part.type,
429
+ text: part.text,
430
+ })),
431
+ summary: item.summary.map((part) => ({
432
+ type: part.type,
433
+ text: part.text,
434
+ })),
435
+ encrypted_content: item.encrypted_content ?? null,
436
+ });
437
+ }
438
+ if (isExtensionResponseItem(item)) {
439
+ mapped.push({
440
+ type: item.type,
441
+ id: item.id,
442
+ data: item.data,
443
+ });
282
444
  }
283
445
  }
284
446
  return mapped;
@@ -363,13 +525,31 @@ function responseItemsToChat(items) {
363
525
  toolCalls: toolCalls.length > 0 ? toolCalls : undefined,
364
526
  };
365
527
  }
366
- async function createResponse(client, request, onStreamEvent) {
528
+ async function createResponse(client, request, signal, onStreamEvent) {
367
529
  const baseParams = {
368
530
  model: normalizeOpenRouterModel(request.model),
369
531
  input: toOpenAIInputItems(request.input),
370
532
  instructions: request.instructions,
371
533
  tools: undefined,
372
534
  tool_choice: mapToolChoice(request.tool_choice),
535
+ previous_response_id: request.previous_response_id,
536
+ reasoning: mapReasoning(request.reasoning),
537
+ parallel_tool_calls: request.parallel_tool_calls,
538
+ max_tool_calls: request.max_tool_calls,
539
+ store: request.store,
540
+ include: request.include,
541
+ text: request.text,
542
+ stream_options: request.stream_options,
543
+ background: request.background,
544
+ truncation: request.truncation,
545
+ service_tier: request.service_tier,
546
+ top_logprobs: request.top_logprobs,
547
+ safety_identifier: request.safety_identifier,
548
+ prompt_cache_key: request.prompt_cache_key,
549
+ temperature: request.temperature,
550
+ top_p: request.top_p,
551
+ frequency_penalty: request.frequency_penalty,
552
+ presence_penalty: request.presence_penalty,
373
553
  stream: request.stream,
374
554
  max_output_tokens: request.max_output_tokens,
375
555
  metadata: request.metadata,
@@ -379,11 +559,11 @@ async function createResponse(client, request, onStreamEvent) {
379
559
  if (mappedTools.length > 0) {
380
560
  baseParams.tools = mappedTools;
381
561
  }
382
- const params = { ...(request.params ?? {}), ...baseParams };
562
+ const params = { ...(request.params ?? {}), ...stripUndefined(baseParams) };
383
563
  const debugResponses = dntShim.Deno.env.get("GAMBIT_DEBUG_RESPONSES") === "1";
384
564
  let responseOrStream;
385
565
  try {
386
- responseOrStream = await client.responses.create(params);
566
+ responseOrStream = await client.responses.create(params, signal ? { signal } : undefined);
387
567
  }
388
568
  catch (err) {
389
569
  if (debugResponses) {
@@ -407,7 +587,12 @@ async function createResponse(client, request, onStreamEvent) {
407
587
  switch (event.type) {
408
588
  case "response.created": {
409
589
  const mapped = normalizeOpenAIResponse(event.response);
410
- onStreamEvent?.({ type: "response.created", response: mapped });
590
+ onStreamEvent?.({
591
+ type: "response.created",
592
+ response: mapped,
593
+ sequence_number: event
594
+ .sequence_number,
595
+ });
411
596
  break;
412
597
  }
413
598
  case "response.output_text.delta":
@@ -416,6 +601,10 @@ async function createResponse(client, request, onStreamEvent) {
416
601
  output_index: event.output_index,
417
602
  delta: event.delta,
418
603
  item_id: event.item_id,
604
+ content_index: event.content_index,
605
+ sequence_number: event
606
+ .sequence_number,
607
+ logprobs: event.logprobs,
419
608
  });
420
609
  break;
421
610
  case "response.output_text.done":
@@ -424,6 +613,9 @@ async function createResponse(client, request, onStreamEvent) {
424
613
  output_index: event.output_index,
425
614
  text: event.text,
426
615
  item_id: event.item_id,
616
+ content_index: event.content_index,
617
+ sequence_number: event
618
+ .sequence_number,
427
619
  });
428
620
  break;
429
621
  case "response.output_item.added": {
@@ -433,6 +625,8 @@ async function createResponse(client, request, onStreamEvent) {
433
625
  type: "response.output_item.added",
434
626
  output_index: event.output_index,
435
627
  item,
628
+ sequence_number: event
629
+ .sequence_number,
436
630
  });
437
631
  }
438
632
  break;
@@ -444,13 +638,102 @@ async function createResponse(client, request, onStreamEvent) {
444
638
  type: "response.output_item.done",
445
639
  output_index: event.output_index,
446
640
  item,
641
+ sequence_number: event
642
+ .sequence_number,
447
643
  });
448
644
  }
449
645
  break;
450
646
  }
647
+ case "response.reasoning.delta":
648
+ if (typeof event.delta === "string") {
649
+ onStreamEvent?.({
650
+ type: "response.reasoning.delta",
651
+ output_index: event.output_index,
652
+ item_id: event.item_id,
653
+ content_index: event.content_index,
654
+ delta: event.delta,
655
+ sequence_number: event
656
+ .sequence_number,
657
+ obfuscation: event.obfuscation,
658
+ });
659
+ }
660
+ break;
661
+ case "response.reasoning.done":
662
+ onStreamEvent?.({
663
+ type: "response.reasoning.done",
664
+ output_index: event.output_index,
665
+ item_id: event.item_id,
666
+ content_index: event.content_index,
667
+ text: event.text,
668
+ sequence_number: event
669
+ .sequence_number,
670
+ });
671
+ break;
672
+ case "response.reasoning_summary_text.delta":
673
+ if (typeof event.delta === "string") {
674
+ onStreamEvent?.({
675
+ type: "response.reasoning_summary_text.delta",
676
+ output_index: event.output_index,
677
+ item_id: event.item_id,
678
+ summary_index: event.summary_index,
679
+ delta: event.delta,
680
+ sequence_number: event
681
+ .sequence_number,
682
+ obfuscation: event.obfuscation,
683
+ });
684
+ }
685
+ break;
686
+ case "response.reasoning_summary_text.done":
687
+ onStreamEvent?.({
688
+ type: "response.reasoning_summary_text.done",
689
+ output_index: event.output_index,
690
+ item_id: event.item_id,
691
+ summary_index: event.summary_index,
692
+ text: event.text,
693
+ sequence_number: event
694
+ .sequence_number,
695
+ });
696
+ break;
697
+ case "response.reasoning_summary_part.added":
698
+ if (event.part && typeof event.part === "object" &&
699
+ "type" in event.part &&
700
+ "text" in event.part &&
701
+ typeof event.part.text === "string") {
702
+ onStreamEvent?.({
703
+ type: "response.reasoning_summary_part.added",
704
+ output_index: event.output_index,
705
+ item_id: event.item_id,
706
+ summary_index: event.summary_index,
707
+ part: event.part,
708
+ sequence_number: event
709
+ .sequence_number,
710
+ });
711
+ }
712
+ break;
713
+ case "response.reasoning_summary_part.done":
714
+ if (event.part && typeof event.part === "object" &&
715
+ "type" in event.part &&
716
+ "text" in event.part &&
717
+ typeof event.part.text === "string") {
718
+ onStreamEvent?.({
719
+ type: "response.reasoning_summary_part.done",
720
+ output_index: event.output_index,
721
+ item_id: event.item_id,
722
+ summary_index: event.summary_index,
723
+ part: event.part,
724
+ sequence_number: event
725
+ .sequence_number,
726
+ });
727
+ }
728
+ break;
451
729
  case "response.completed": {
452
730
  completed = normalizeOpenAIResponse(event.response);
453
- onStreamEvent?.({ type: "response.completed", response: completed });
731
+ onStreamEvent?.({
732
+ type: "response.completed",
733
+ response: completed,
734
+ sequence_number: event
735
+ .sequence_number,
736
+ });
454
737
  break;
455
738
  }
456
739
  case "response.failed": {
@@ -458,6 +741,8 @@ async function createResponse(client, request, onStreamEvent) {
458
741
  onStreamEvent?.({
459
742
  type: "response.failed",
460
743
  error: error ?? {},
744
+ sequence_number: event
745
+ .sequence_number,
461
746
  });
462
747
  break;
463
748
  }
@@ -484,7 +769,7 @@ function createOpenRouterProvider(opts) {
484
769
  }));
485
770
  return {
486
771
  async responses(input) {
487
- return await createResponse(client, input.request, input.onStreamEvent);
772
+ return await createResponse(client, input.request, input.signal, input.onStreamEvent);
488
773
  },
489
774
  async chat(input) {
490
775
  const params = input.params ?? {};
@@ -495,7 +780,7 @@ function createOpenRouterProvider(opts) {
495
780
  tools: input.tools,
496
781
  stream: input.stream,
497
782
  params,
498
- }, (event) => {
783
+ }, input.signal, (event) => {
499
784
  if (event.type === "response.output_text.delta") {
500
785
  input.onStreamText?.(event.delta);
501
786
  }
@@ -521,7 +806,7 @@ function createOpenRouterProvider(opts) {
521
806
  tool_choice: "auto",
522
807
  stream: true,
523
808
  ...params,
524
- });
809
+ }, input.signal ? { signal: input.signal } : undefined);
525
810
  let finishReason = null;
526
811
  const contentParts = [];
527
812
  const toolCallMap = new Map();
@@ -606,7 +891,7 @@ function createOpenRouterProvider(opts) {
606
891
  tool_choice: "auto",
607
892
  stream: false,
608
893
  ...params,
609
- });
894
+ }, input.signal ? { signal: input.signal } : undefined);
610
895
  const choice = response.choices[0];
611
896
  const message = choice.message;
612
897
  const normalizedMessage = normalizeMessage(message);
@@ -620,11 +905,20 @@ function createOpenRouterProvider(opts) {
620
905
  finishReason: (choice.finish_reason ?? "stop"),
621
906
  toolCalls,
622
907
  usage: response.usage
623
- ? {
624
- promptTokens: response.usage.prompt_tokens ?? 0,
625
- completionTokens: response.usage.completion_tokens ?? 0,
626
- totalTokens: response.usage.total_tokens ?? 0,
627
- }
908
+ ? (() => {
909
+ const usage = {
910
+ promptTokens: response.usage.prompt_tokens ?? 0,
911
+ completionTokens: response.usage.completion_tokens ?? 0,
912
+ totalTokens: response.usage.total_tokens ?? 0,
913
+ };
914
+ const details = response.usage;
915
+ const value = details.completion_tokens_details
916
+ ?.reasoning_tokens ??
917
+ details.output_tokens_details?.reasoning_tokens;
918
+ return typeof value === "number"
919
+ ? { ...usage, reasoningTokens: value }
920
+ : usage;
921
+ })()
628
922
  : undefined,
629
923
  };
630
924
  },
@@ -0,0 +1,19 @@
1
+ import type { ModelProvider } from "@bolt-foundry/gambit-core";
2
+ export type ProviderKey = "openrouter" | "ollama" | "google" | "codex-cli";
3
+ export type ProviderRouter = {
4
+ resolve: (input: {
5
+ model: string;
6
+ }) => {
7
+ providerKey: ProviderKey;
8
+ provider: ModelProvider;
9
+ model: string;
10
+ };
11
+ };
12
+ type ProviderSet = Partial<Record<ProviderKey, ModelProvider | null>>;
13
+ export declare function createProviderRouter(opts: {
14
+ providers: ProviderSet;
15
+ defaultProvider?: ProviderKey | null;
16
+ fallbackToDefaultOnMissing?: Array<ProviderKey>;
17
+ }): ProviderRouter;
18
+ export {};
19
+ //# sourceMappingURL=router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../src/src/providers/router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE/D,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE3E,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK;QACrC,WAAW,EAAE,WAAW,CAAC;QACzB,QAAQ,EAAE,aAAa,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH,CAAC;AAEF,KAAK,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC;AAsDtE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,SAAS,EAAE,WAAW,CAAC;IACvB,eAAe,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACrC,0BAA0B,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;CACjD,GAAG,cAAc,CA8DjB"}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createProviderRouter = createProviderRouter;
4
+ const PROVIDER_PREFIXES = {
5
+ openrouter: "openrouter/",
6
+ ollama: "ollama/",
7
+ google: "google/",
8
+ "codex-cli": "codex-cli/",
9
+ };
10
+ function parsePrefixedModel(model) {
11
+ if (model.trim() === "codex-cli") {
12
+ return {
13
+ providerKey: "codex-cli",
14
+ strippedModel: "default",
15
+ rawModel: model,
16
+ };
17
+ }
18
+ for (const [providerKey, prefix] of Object.entries(PROVIDER_PREFIXES)) {
19
+ if (model.startsWith(prefix)) {
20
+ return {
21
+ providerKey: providerKey,
22
+ strippedModel: model.slice(prefix.length),
23
+ rawModel: model,
24
+ };
25
+ }
26
+ }
27
+ if (model === "codex" || model.startsWith("codex/")) {
28
+ return {
29
+ strippedModel: model,
30
+ rawModel: model,
31
+ legacyCodex: true,
32
+ };
33
+ }
34
+ return { strippedModel: model, rawModel: model };
35
+ }
36
+ function missingProviderMessage(providerKey) {
37
+ switch (providerKey) {
38
+ case "openrouter":
39
+ return "OPENROUTER_API_KEY is required for openrouter/ models.";
40
+ case "ollama":
41
+ return "Ollama provider is not configured. Set OLLAMA_BASE_URL or OLLAMA_API_KEY.";
42
+ case "google":
43
+ return "Google provider is not configured. Set GOOGLE_API_KEY or GEMINI_API_KEY.";
44
+ case "codex-cli":
45
+ return "Codex CLI provider is not configured.";
46
+ }
47
+ }
48
+ function createProviderRouter(opts) {
49
+ const defaultProvider = opts.defaultProvider === null
50
+ ? null
51
+ : (opts.defaultProvider ?? "openrouter");
52
+ const fallbackOnMissing = new Set(opts.fallbackToDefaultOnMissing ?? ["google"]);
53
+ return {
54
+ resolve({ model }) {
55
+ const { providerKey, strippedModel, rawModel, legacyCodex } = parsePrefixedModel(model);
56
+ if (legacyCodex) {
57
+ throw new Error('Legacy Codex model prefix "codex" is no longer supported. Use "codex-cli/default" or "codex-cli/<model>".');
58
+ }
59
+ if (providerKey) {
60
+ const provider = opts.providers[providerKey];
61
+ if (!provider) {
62
+ if (fallbackOnMissing.has(providerKey) &&
63
+ defaultProvider !== null &&
64
+ defaultProvider !== providerKey) {
65
+ const fallbackProvider = opts.providers[defaultProvider];
66
+ if (fallbackProvider) {
67
+ return {
68
+ providerKey: defaultProvider,
69
+ provider: fallbackProvider,
70
+ model: rawModel,
71
+ };
72
+ }
73
+ }
74
+ throw new Error(missingProviderMessage(providerKey));
75
+ }
76
+ return {
77
+ providerKey,
78
+ provider,
79
+ model: strippedModel,
80
+ };
81
+ }
82
+ if (defaultProvider === null) {
83
+ throw new Error("No fallback provider configured. Use a provider prefix or set providers.fallback in gambit.toml.");
84
+ }
85
+ const provider = opts.providers[defaultProvider];
86
+ if (!provider) {
87
+ throw new Error("OPENROUTER_API_KEY is required when no provider prefix is specified.");
88
+ }
89
+ return {
90
+ providerKey: defaultProvider,
91
+ provider,
92
+ model,
93
+ };
94
+ },
95
+ };
96
+ }
@@ -14,10 +14,19 @@ export declare function startWebSocketSimulator(opts: {
14
14
  verbose?: boolean;
15
15
  signal?: AbortSignal;
16
16
  sessionDir?: string;
17
+ workspace?: {
18
+ id: string;
19
+ rootDeckPath: string;
20
+ rootDir: string;
21
+ onboarding?: boolean;
22
+ scaffoldEnabled?: boolean;
23
+ scaffoldRoot?: string;
24
+ };
17
25
  autoBundle?: boolean;
18
26
  forceBundle?: boolean;
19
27
  sourceMap?: boolean;
20
28
  bundlePlatform?: "deno" | "browser";
21
29
  responsesMode?: boolean;
30
+ workerSandbox?: boolean;
22
31
  }): ReturnType<typeof dntShim.Deno.serve>;
23
32
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/src/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAY5C,OAAO,KAAK,EAGV,aAAa,EAEd,MAAM,2BAA2B,CAAC;AA2mBnC;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,aAAa,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CA2tFxC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/src/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAmD5C,OAAO,KAAK,EAMV,aAAa,EAOd,MAAM,2BAA2B,CAAC;AA0hCnC;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,aAAa,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE;QACV,EAAE,EAAE,MAAM,CAAC;QACX,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CA4lKxC"}