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

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 +95 -2
  2. package/README.md +95 -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 +13788 -5157
  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 +809 -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 +334 -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 +3361 -670
  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 +876 -0
  130. package/esm/src/server_types.d.ts +111 -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 +139 -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 +77 -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 +13788 -5157
  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 +849 -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 +334 -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 +3368 -677
  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 +913 -0
  275. package/script/src/server_types.d.ts +111 -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 +176 -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 +85 -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;AA6zBF,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"}
@@ -37,6 +37,30 @@ function safeJson(input) {
37
37
  }
38
38
  return {};
39
39
  }
40
+ function toJsonValue(value) {
41
+ if (value === null || typeof value === "string" || typeof value === "boolean") {
42
+ return value;
43
+ }
44
+ if (typeof value === "number") {
45
+ return Number.isFinite(value) ? value : String(value);
46
+ }
47
+ if (Array.isArray(value)) {
48
+ return value.map((entry) => toJsonValue(entry));
49
+ }
50
+ if (value && typeof value === "object") {
51
+ const out = {};
52
+ for (const [key, entry] of Object.entries(value)) {
53
+ if (entry === undefined)
54
+ continue;
55
+ out[key] = toJsonValue(entry);
56
+ }
57
+ return out;
58
+ }
59
+ return String(value);
60
+ }
61
+ function isExtensionResponseItem(item) {
62
+ return item.type.includes(":");
63
+ }
40
64
  function isAsyncIterable(value) {
41
65
  return Boolean(value &&
42
66
  typeof value === "object" &&
@@ -45,11 +69,16 @@ function isAsyncIterable(value) {
45
69
  function mapUsage(usage) {
46
70
  if (!usage)
47
71
  return undefined;
48
- return {
72
+ const reasoningTokens = usage.output_tokens_details?.reasoning_tokens ?? undefined;
73
+ const out = {
49
74
  promptTokens: usage.input_tokens ?? 0,
50
75
  completionTokens: usage.output_tokens ?? 0,
51
76
  totalTokens: usage.total_tokens ?? 0,
52
77
  };
78
+ if (typeof reasoningTokens === "number") {
79
+ out.reasoningTokens = reasoningTokens;
80
+ }
81
+ return out;
53
82
  }
54
83
  function mapStatus(status) {
55
84
  if (!status)
@@ -60,6 +89,25 @@ function mapStatus(status) {
60
89
  return "in_progress";
61
90
  return "failed";
62
91
  }
92
+ function mapReasoning(reasoning) {
93
+ if (!reasoning)
94
+ return undefined;
95
+ const out = {};
96
+ if (reasoning.effort !== undefined)
97
+ out.effort = reasoning.effort;
98
+ if (reasoning.summary !== undefined)
99
+ out.summary = reasoning.summary;
100
+ return Object.keys(out).length > 0 ? out : undefined;
101
+ }
102
+ function stripUndefined(input) {
103
+ const out = { ...input };
104
+ for (const [key, value] of Object.entries(out)) {
105
+ if (value === undefined) {
106
+ delete out[key];
107
+ }
108
+ }
109
+ return out;
110
+ }
63
111
  function mapError(error) {
64
112
  if (!error)
65
113
  return undefined;
@@ -137,23 +185,65 @@ function appendSyntheticTools(tools, input) {
137
185
  });
138
186
  }
139
187
  }
188
+ function mapText(text) {
189
+ if (!text)
190
+ return undefined;
191
+ const format = text.format;
192
+ if (!format || typeof format !== "object" || format.type !== "json_schema") {
193
+ return text;
194
+ }
195
+ if (format.strict === false)
196
+ return text;
197
+ return {
198
+ ...text,
199
+ format: {
200
+ ...format,
201
+ strict: false,
202
+ },
203
+ };
204
+ }
140
205
  function mapToolChoice(toolChoice) {
141
206
  if (!toolChoice)
142
207
  return undefined;
143
- if (toolChoice === "auto" || toolChoice === "required")
208
+ if (toolChoice === "none" || toolChoice === "auto" ||
209
+ toolChoice === "required") {
144
210
  return toolChoice;
211
+ }
212
+ if (toolChoice.type === "allowed_tools") {
213
+ return {
214
+ type: "allowed_tools",
215
+ tools: toolChoice.tools,
216
+ mode: toolChoice.mode ?? "auto",
217
+ };
218
+ }
145
219
  return { type: "function", name: toolChoice.function.name };
146
220
  }
221
+ function mapResponseContentPart(part) {
222
+ if (!part || typeof part !== "object")
223
+ return null;
224
+ if (typeof part.text !== "string")
225
+ return null;
226
+ if (part.type === "output_text") {
227
+ return { type: "output_text", text: part.text };
228
+ }
229
+ if (part.type === "summary_text") {
230
+ return { type: "summary_text", text: part.text };
231
+ }
232
+ if (part.type === "reasoning_text") {
233
+ return { type: "reasoning_text", text: part.text };
234
+ }
235
+ if (part.type === "input_text") {
236
+ return { type: "input_text", text: part.text };
237
+ }
238
+ return null;
239
+ }
147
240
  function mapOpenAIOutputItem(item) {
148
241
  const itemType = item.type;
149
242
  if (itemType === "message") {
150
243
  const message = item;
151
- const content = [];
152
- for (const part of message.content ?? []) {
153
- if (part.type === "output_text") {
154
- content.push({ type: "output_text", text: part.text });
155
- }
156
- }
244
+ const content = (message.content ?? [])
245
+ .map((part) => mapResponseContentPart(part))
246
+ .filter((part) => Boolean(part));
157
247
  if (content.length === 0)
158
248
  return null;
159
249
  return {
@@ -173,6 +263,48 @@ function mapOpenAIOutputItem(item) {
173
263
  id: call.id,
174
264
  };
175
265
  }
266
+ if (itemType === "reasoning") {
267
+ const reasoning = item;
268
+ const content = (reasoning.content ?? [])
269
+ .map((part) => mapResponseContentPart(part))
270
+ .filter((part) => Boolean(part));
271
+ const summary = (reasoning.summary ?? [])
272
+ .map((part) => mapResponseContentPart(part))
273
+ .filter((part) => Boolean(part));
274
+ return {
275
+ type: "reasoning",
276
+ id: reasoning.id,
277
+ content: content.length > 0 ? content : undefined,
278
+ summary,
279
+ encrypted_content: reasoning.encrypted_content,
280
+ };
281
+ }
282
+ if (typeof itemType === "string" && itemType.includes(":")) {
283
+ const raw = item;
284
+ const payloadEntries = Object.entries(raw).filter(([key, value]) => {
285
+ if (key === "type" || key === "id")
286
+ return false;
287
+ if (value === undefined)
288
+ return false;
289
+ return true;
290
+ });
291
+ let data;
292
+ if (payloadEntries.length === 1 && payloadEntries[0][0] === "data") {
293
+ data = toJsonValue(payloadEntries[0][1]);
294
+ }
295
+ else {
296
+ const payloadObject = {};
297
+ for (const [key, value] of payloadEntries) {
298
+ payloadObject[key] = toJsonValue(value);
299
+ }
300
+ data = payloadObject;
301
+ }
302
+ return {
303
+ type: itemType,
304
+ id: typeof raw.id === "string" ? raw.id : undefined,
305
+ data,
306
+ };
307
+ }
176
308
  return null;
177
309
  }
178
310
  function normalizeOpenAIResponse(response) {
@@ -183,11 +315,23 @@ function normalizeOpenAIResponse(response) {
183
315
  id: response.id,
184
316
  object: "response",
185
317
  model: response.model,
318
+ created_at: response.created_at,
186
319
  created: response.created_at,
320
+ completed_at: response.completed_at ??
321
+ null,
322
+ previous_response_id: response.previous_response_id ?? null,
323
+ instructions: response.instructions ?? null,
324
+ reasoning: response
325
+ .reasoning ?? null,
187
326
  status: mapStatus(response.status ?? undefined),
188
327
  output: outputItems,
189
328
  usage: mapUsage(response.usage),
190
- error: mapError(response.error),
329
+ error: mapError(response.error) ?? null,
330
+ metadata: response.metadata,
331
+ max_output_tokens: response.max_output_tokens ?? null,
332
+ max_tool_calls: response.max_tool_calls ?? null,
333
+ parallel_tool_calls: response.parallel_tool_calls,
334
+ store: response.store,
191
335
  };
192
336
  }
193
337
  function toOpenAIInputItems(items) {
@@ -209,6 +353,18 @@ function toOpenAIInputItems(items) {
209
353
  text: part.text,
210
354
  };
211
355
  }
356
+ if (part.type === "summary_text") {
357
+ return {
358
+ type: "summary_text",
359
+ text: part.text,
360
+ };
361
+ }
362
+ if (part.type === "reasoning_text") {
363
+ return {
364
+ type: "reasoning_text",
365
+ text: part.text,
366
+ };
367
+ }
212
368
  return null;
213
369
  })
214
370
  .filter((part) => Boolean(part));
@@ -239,6 +395,29 @@ function toOpenAIInputItems(items) {
239
395
  output: item.output,
240
396
  id: item.id,
241
397
  });
398
+ continue;
399
+ }
400
+ if (item.type === "reasoning") {
401
+ mapped.push({
402
+ type: "reasoning",
403
+ id: item.id,
404
+ content: (item.content ?? []).map((part) => ({
405
+ type: part.type,
406
+ text: part.text,
407
+ })),
408
+ summary: item.summary.map((part) => ({
409
+ type: part.type,
410
+ text: part.text,
411
+ })),
412
+ encrypted_content: item.encrypted_content ?? null,
413
+ });
414
+ }
415
+ if (isExtensionResponseItem(item)) {
416
+ mapped.push({
417
+ type: item.type,
418
+ id: item.id,
419
+ data: item.data,
420
+ });
242
421
  }
243
422
  }
244
423
  return mapped;
@@ -323,13 +502,31 @@ function responseItemsToChat(items) {
323
502
  toolCalls: toolCalls.length > 0 ? toolCalls : undefined,
324
503
  };
325
504
  }
326
- async function createResponse(client, request, onStreamEvent) {
505
+ async function createResponse(client, request, signal, onStreamEvent) {
327
506
  const baseParams = {
328
507
  model: normalizeOpenRouterModel(request.model),
329
508
  input: toOpenAIInputItems(request.input),
330
509
  instructions: request.instructions,
331
510
  tools: undefined,
332
511
  tool_choice: mapToolChoice(request.tool_choice),
512
+ previous_response_id: request.previous_response_id,
513
+ reasoning: mapReasoning(request.reasoning),
514
+ parallel_tool_calls: request.parallel_tool_calls,
515
+ max_tool_calls: request.max_tool_calls,
516
+ store: request.store,
517
+ include: request.include,
518
+ text: mapText(request.text),
519
+ stream_options: request.stream_options,
520
+ background: request.background,
521
+ truncation: request.truncation,
522
+ service_tier: request.service_tier,
523
+ top_logprobs: request.top_logprobs,
524
+ safety_identifier: request.safety_identifier,
525
+ prompt_cache_key: request.prompt_cache_key,
526
+ temperature: request.temperature,
527
+ top_p: request.top_p,
528
+ frequency_penalty: request.frequency_penalty,
529
+ presence_penalty: request.presence_penalty,
333
530
  stream: request.stream,
334
531
  max_output_tokens: request.max_output_tokens,
335
532
  metadata: request.metadata,
@@ -339,11 +536,11 @@ async function createResponse(client, request, onStreamEvent) {
339
536
  if (mappedTools.length > 0) {
340
537
  baseParams.tools = mappedTools;
341
538
  }
342
- const params = { ...(request.params ?? {}), ...baseParams };
539
+ const params = { ...(request.params ?? {}), ...stripUndefined(baseParams) };
343
540
  const debugResponses = dntShim.Deno.env.get("GAMBIT_DEBUG_RESPONSES") === "1";
344
541
  let responseOrStream;
345
542
  try {
346
- responseOrStream = await client.responses.create(params);
543
+ responseOrStream = await client.responses.create(params, signal ? { signal } : undefined);
347
544
  }
348
545
  catch (err) {
349
546
  if (debugResponses) {
@@ -367,7 +564,12 @@ async function createResponse(client, request, onStreamEvent) {
367
564
  switch (event.type) {
368
565
  case "response.created": {
369
566
  const mapped = normalizeOpenAIResponse(event.response);
370
- onStreamEvent?.({ type: "response.created", response: mapped });
567
+ onStreamEvent?.({
568
+ type: "response.created",
569
+ response: mapped,
570
+ sequence_number: event
571
+ .sequence_number,
572
+ });
371
573
  break;
372
574
  }
373
575
  case "response.output_text.delta":
@@ -376,6 +578,10 @@ async function createResponse(client, request, onStreamEvent) {
376
578
  output_index: event.output_index,
377
579
  delta: event.delta,
378
580
  item_id: event.item_id,
581
+ content_index: event.content_index,
582
+ sequence_number: event
583
+ .sequence_number,
584
+ logprobs: event.logprobs,
379
585
  });
380
586
  break;
381
587
  case "response.output_text.done":
@@ -384,6 +590,9 @@ async function createResponse(client, request, onStreamEvent) {
384
590
  output_index: event.output_index,
385
591
  text: event.text,
386
592
  item_id: event.item_id,
593
+ content_index: event.content_index,
594
+ sequence_number: event
595
+ .sequence_number,
387
596
  });
388
597
  break;
389
598
  case "response.output_item.added": {
@@ -393,6 +602,8 @@ async function createResponse(client, request, onStreamEvent) {
393
602
  type: "response.output_item.added",
394
603
  output_index: event.output_index,
395
604
  item,
605
+ sequence_number: event
606
+ .sequence_number,
396
607
  });
397
608
  }
398
609
  break;
@@ -404,13 +615,102 @@ async function createResponse(client, request, onStreamEvent) {
404
615
  type: "response.output_item.done",
405
616
  output_index: event.output_index,
406
617
  item,
618
+ sequence_number: event
619
+ .sequence_number,
407
620
  });
408
621
  }
409
622
  break;
410
623
  }
624
+ case "response.reasoning.delta":
625
+ if (typeof event.delta === "string") {
626
+ onStreamEvent?.({
627
+ type: "response.reasoning.delta",
628
+ output_index: event.output_index,
629
+ item_id: event.item_id,
630
+ content_index: event.content_index,
631
+ delta: event.delta,
632
+ sequence_number: event
633
+ .sequence_number,
634
+ obfuscation: event.obfuscation,
635
+ });
636
+ }
637
+ break;
638
+ case "response.reasoning.done":
639
+ onStreamEvent?.({
640
+ type: "response.reasoning.done",
641
+ output_index: event.output_index,
642
+ item_id: event.item_id,
643
+ content_index: event.content_index,
644
+ text: event.text,
645
+ sequence_number: event
646
+ .sequence_number,
647
+ });
648
+ break;
649
+ case "response.reasoning_summary_text.delta":
650
+ if (typeof event.delta === "string") {
651
+ onStreamEvent?.({
652
+ type: "response.reasoning_summary_text.delta",
653
+ output_index: event.output_index,
654
+ item_id: event.item_id,
655
+ summary_index: event.summary_index,
656
+ delta: event.delta,
657
+ sequence_number: event
658
+ .sequence_number,
659
+ obfuscation: event.obfuscation,
660
+ });
661
+ }
662
+ break;
663
+ case "response.reasoning_summary_text.done":
664
+ onStreamEvent?.({
665
+ type: "response.reasoning_summary_text.done",
666
+ output_index: event.output_index,
667
+ item_id: event.item_id,
668
+ summary_index: event.summary_index,
669
+ text: event.text,
670
+ sequence_number: event
671
+ .sequence_number,
672
+ });
673
+ break;
674
+ case "response.reasoning_summary_part.added":
675
+ if (event.part && typeof event.part === "object" &&
676
+ "type" in event.part &&
677
+ "text" in event.part &&
678
+ typeof event.part.text === "string") {
679
+ onStreamEvent?.({
680
+ type: "response.reasoning_summary_part.added",
681
+ output_index: event.output_index,
682
+ item_id: event.item_id,
683
+ summary_index: event.summary_index,
684
+ part: event.part,
685
+ sequence_number: event
686
+ .sequence_number,
687
+ });
688
+ }
689
+ break;
690
+ case "response.reasoning_summary_part.done":
691
+ if (event.part && typeof event.part === "object" &&
692
+ "type" in event.part &&
693
+ "text" in event.part &&
694
+ typeof event.part.text === "string") {
695
+ onStreamEvent?.({
696
+ type: "response.reasoning_summary_part.done",
697
+ output_index: event.output_index,
698
+ item_id: event.item_id,
699
+ summary_index: event.summary_index,
700
+ part: event.part,
701
+ sequence_number: event
702
+ .sequence_number,
703
+ });
704
+ }
705
+ break;
411
706
  case "response.completed": {
412
707
  completed = normalizeOpenAIResponse(event.response);
413
- onStreamEvent?.({ type: "response.completed", response: completed });
708
+ onStreamEvent?.({
709
+ type: "response.completed",
710
+ response: completed,
711
+ sequence_number: event
712
+ .sequence_number,
713
+ });
414
714
  break;
415
715
  }
416
716
  case "response.failed": {
@@ -418,6 +718,8 @@ async function createResponse(client, request, onStreamEvent) {
418
718
  onStreamEvent?.({
419
719
  type: "response.failed",
420
720
  error: error ?? {},
721
+ sequence_number: event
722
+ .sequence_number,
421
723
  });
422
724
  break;
423
725
  }
@@ -444,7 +746,7 @@ export function createOpenRouterProvider(opts) {
444
746
  }));
445
747
  return {
446
748
  async responses(input) {
447
- return await createResponse(client, input.request, input.onStreamEvent);
749
+ return await createResponse(client, input.request, input.signal, input.onStreamEvent);
448
750
  },
449
751
  async chat(input) {
450
752
  const params = input.params ?? {};
@@ -455,7 +757,7 @@ export function createOpenRouterProvider(opts) {
455
757
  tools: input.tools,
456
758
  stream: input.stream,
457
759
  params,
458
- }, (event) => {
760
+ }, input.signal, (event) => {
459
761
  if (event.type === "response.output_text.delta") {
460
762
  input.onStreamText?.(event.delta);
461
763
  }
@@ -481,7 +783,7 @@ export function createOpenRouterProvider(opts) {
481
783
  tool_choice: "auto",
482
784
  stream: true,
483
785
  ...params,
484
- });
786
+ }, input.signal ? { signal: input.signal } : undefined);
485
787
  let finishReason = null;
486
788
  const contentParts = [];
487
789
  const toolCallMap = new Map();
@@ -566,7 +868,7 @@ export function createOpenRouterProvider(opts) {
566
868
  tool_choice: "auto",
567
869
  stream: false,
568
870
  ...params,
569
- });
871
+ }, input.signal ? { signal: input.signal } : undefined);
570
872
  const choice = response.choices[0];
571
873
  const message = choice.message;
572
874
  const normalizedMessage = normalizeMessage(message);
@@ -580,11 +882,20 @@ export function createOpenRouterProvider(opts) {
580
882
  finishReason: (choice.finish_reason ?? "stop"),
581
883
  toolCalls,
582
884
  usage: response.usage
583
- ? {
584
- promptTokens: response.usage.prompt_tokens ?? 0,
585
- completionTokens: response.usage.completion_tokens ?? 0,
586
- totalTokens: response.usage.total_tokens ?? 0,
587
- }
885
+ ? (() => {
886
+ const usage = {
887
+ promptTokens: response.usage.prompt_tokens ?? 0,
888
+ completionTokens: response.usage.completion_tokens ?? 0,
889
+ totalTokens: response.usage.total_tokens ?? 0,
890
+ };
891
+ const details = response.usage;
892
+ const value = details.completion_tokens_details
893
+ ?.reasoning_tokens ??
894
+ details.output_tokens_details?.reasoning_tokens;
895
+ return typeof value === "number"
896
+ ? { ...usage, reasoningTokens: value }
897
+ : usage;
898
+ })()
588
899
  : undefined,
589
900
  };
590
901
  },
@@ -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,93 @@
1
+ const PROVIDER_PREFIXES = {
2
+ openrouter: "openrouter/",
3
+ ollama: "ollama/",
4
+ google: "google/",
5
+ "codex-cli": "codex-cli/",
6
+ };
7
+ function parsePrefixedModel(model) {
8
+ if (model.trim() === "codex-cli") {
9
+ return {
10
+ providerKey: "codex-cli",
11
+ strippedModel: "default",
12
+ rawModel: model,
13
+ };
14
+ }
15
+ for (const [providerKey, prefix] of Object.entries(PROVIDER_PREFIXES)) {
16
+ if (model.startsWith(prefix)) {
17
+ return {
18
+ providerKey: providerKey,
19
+ strippedModel: model.slice(prefix.length),
20
+ rawModel: model,
21
+ };
22
+ }
23
+ }
24
+ if (model === "codex" || model.startsWith("codex/")) {
25
+ return {
26
+ strippedModel: model,
27
+ rawModel: model,
28
+ legacyCodex: true,
29
+ };
30
+ }
31
+ return { strippedModel: model, rawModel: model };
32
+ }
33
+ function missingProviderMessage(providerKey) {
34
+ switch (providerKey) {
35
+ case "openrouter":
36
+ return "OPENROUTER_API_KEY is required for openrouter/ models.";
37
+ case "ollama":
38
+ return "Ollama provider is not configured. Set OLLAMA_BASE_URL or OLLAMA_API_KEY.";
39
+ case "google":
40
+ return "Google provider is not configured. Set GOOGLE_API_KEY or GEMINI_API_KEY.";
41
+ case "codex-cli":
42
+ return "Codex CLI provider is not configured.";
43
+ }
44
+ }
45
+ export function createProviderRouter(opts) {
46
+ const defaultProvider = opts.defaultProvider === null
47
+ ? null
48
+ : (opts.defaultProvider ?? "openrouter");
49
+ const fallbackOnMissing = new Set(opts.fallbackToDefaultOnMissing ?? ["google"]);
50
+ return {
51
+ resolve({ model }) {
52
+ const { providerKey, strippedModel, rawModel, legacyCodex } = parsePrefixedModel(model);
53
+ if (legacyCodex) {
54
+ throw new Error('Legacy Codex model prefix "codex" is no longer supported. Use "codex-cli/default" or "codex-cli/<model>".');
55
+ }
56
+ if (providerKey) {
57
+ const provider = opts.providers[providerKey];
58
+ if (!provider) {
59
+ if (fallbackOnMissing.has(providerKey) &&
60
+ defaultProvider !== null &&
61
+ defaultProvider !== providerKey) {
62
+ const fallbackProvider = opts.providers[defaultProvider];
63
+ if (fallbackProvider) {
64
+ return {
65
+ providerKey: defaultProvider,
66
+ provider: fallbackProvider,
67
+ model: rawModel,
68
+ };
69
+ }
70
+ }
71
+ throw new Error(missingProviderMessage(providerKey));
72
+ }
73
+ return {
74
+ providerKey,
75
+ provider,
76
+ model: strippedModel,
77
+ };
78
+ }
79
+ if (defaultProvider === null) {
80
+ throw new Error("No fallback provider configured. Use a provider prefix or set providers.fallback in gambit.toml.");
81
+ }
82
+ const provider = opts.providers[defaultProvider];
83
+ if (!provider) {
84
+ throw new Error("OPENROUTER_API_KEY is required when no provider prefix is specified.");
85
+ }
86
+ return {
87
+ providerKey: defaultProvider,
88
+ provider,
89
+ model,
90
+ };
91
+ },
92
+ };
93
+ }
@@ -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;AAsiCnC;;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,CAsmKxC"}