@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"}
@@ -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;
@@ -177,23 +225,65 @@ function appendSyntheticTools(tools, input) {
177
225
  });
178
226
  }
179
227
  }
228
+ function mapText(text) {
229
+ if (!text)
230
+ return undefined;
231
+ const format = text.format;
232
+ if (!format || typeof format !== "object" || format.type !== "json_schema") {
233
+ return text;
234
+ }
235
+ if (format.strict === false)
236
+ return text;
237
+ return {
238
+ ...text,
239
+ format: {
240
+ ...format,
241
+ strict: false,
242
+ },
243
+ };
244
+ }
180
245
  function mapToolChoice(toolChoice) {
181
246
  if (!toolChoice)
182
247
  return undefined;
183
- if (toolChoice === "auto" || toolChoice === "required")
248
+ if (toolChoice === "none" || toolChoice === "auto" ||
249
+ toolChoice === "required") {
184
250
  return toolChoice;
251
+ }
252
+ if (toolChoice.type === "allowed_tools") {
253
+ return {
254
+ type: "allowed_tools",
255
+ tools: toolChoice.tools,
256
+ mode: toolChoice.mode ?? "auto",
257
+ };
258
+ }
185
259
  return { type: "function", name: toolChoice.function.name };
186
260
  }
261
+ function mapResponseContentPart(part) {
262
+ if (!part || typeof part !== "object")
263
+ return null;
264
+ if (typeof part.text !== "string")
265
+ return null;
266
+ if (part.type === "output_text") {
267
+ return { type: "output_text", text: part.text };
268
+ }
269
+ if (part.type === "summary_text") {
270
+ return { type: "summary_text", text: part.text };
271
+ }
272
+ if (part.type === "reasoning_text") {
273
+ return { type: "reasoning_text", text: part.text };
274
+ }
275
+ if (part.type === "input_text") {
276
+ return { type: "input_text", text: part.text };
277
+ }
278
+ return null;
279
+ }
187
280
  function mapOpenAIOutputItem(item) {
188
281
  const itemType = item.type;
189
282
  if (itemType === "message") {
190
283
  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
- }
284
+ const content = (message.content ?? [])
285
+ .map((part) => mapResponseContentPart(part))
286
+ .filter((part) => Boolean(part));
197
287
  if (content.length === 0)
198
288
  return null;
199
289
  return {
@@ -213,6 +303,48 @@ function mapOpenAIOutputItem(item) {
213
303
  id: call.id,
214
304
  };
215
305
  }
306
+ if (itemType === "reasoning") {
307
+ const reasoning = item;
308
+ const content = (reasoning.content ?? [])
309
+ .map((part) => mapResponseContentPart(part))
310
+ .filter((part) => Boolean(part));
311
+ const summary = (reasoning.summary ?? [])
312
+ .map((part) => mapResponseContentPart(part))
313
+ .filter((part) => Boolean(part));
314
+ return {
315
+ type: "reasoning",
316
+ id: reasoning.id,
317
+ content: content.length > 0 ? content : undefined,
318
+ summary,
319
+ encrypted_content: reasoning.encrypted_content,
320
+ };
321
+ }
322
+ if (typeof itemType === "string" && itemType.includes(":")) {
323
+ const raw = item;
324
+ const payloadEntries = Object.entries(raw).filter(([key, value]) => {
325
+ if (key === "type" || key === "id")
326
+ return false;
327
+ if (value === undefined)
328
+ return false;
329
+ return true;
330
+ });
331
+ let data;
332
+ if (payloadEntries.length === 1 && payloadEntries[0][0] === "data") {
333
+ data = toJsonValue(payloadEntries[0][1]);
334
+ }
335
+ else {
336
+ const payloadObject = {};
337
+ for (const [key, value] of payloadEntries) {
338
+ payloadObject[key] = toJsonValue(value);
339
+ }
340
+ data = payloadObject;
341
+ }
342
+ return {
343
+ type: itemType,
344
+ id: typeof raw.id === "string" ? raw.id : undefined,
345
+ data,
346
+ };
347
+ }
216
348
  return null;
217
349
  }
218
350
  function normalizeOpenAIResponse(response) {
@@ -223,11 +355,23 @@ function normalizeOpenAIResponse(response) {
223
355
  id: response.id,
224
356
  object: "response",
225
357
  model: response.model,
358
+ created_at: response.created_at,
226
359
  created: response.created_at,
360
+ completed_at: response.completed_at ??
361
+ null,
362
+ previous_response_id: response.previous_response_id ?? null,
363
+ instructions: response.instructions ?? null,
364
+ reasoning: response
365
+ .reasoning ?? null,
227
366
  status: mapStatus(response.status ?? undefined),
228
367
  output: outputItems,
229
368
  usage: mapUsage(response.usage),
230
- error: mapError(response.error),
369
+ error: mapError(response.error) ?? null,
370
+ metadata: response.metadata,
371
+ max_output_tokens: response.max_output_tokens ?? null,
372
+ max_tool_calls: response.max_tool_calls ?? null,
373
+ parallel_tool_calls: response.parallel_tool_calls,
374
+ store: response.store,
231
375
  };
232
376
  }
233
377
  function toOpenAIInputItems(items) {
@@ -249,6 +393,18 @@ function toOpenAIInputItems(items) {
249
393
  text: part.text,
250
394
  };
251
395
  }
396
+ if (part.type === "summary_text") {
397
+ return {
398
+ type: "summary_text",
399
+ text: part.text,
400
+ };
401
+ }
402
+ if (part.type === "reasoning_text") {
403
+ return {
404
+ type: "reasoning_text",
405
+ text: part.text,
406
+ };
407
+ }
252
408
  return null;
253
409
  })
254
410
  .filter((part) => Boolean(part));
@@ -279,6 +435,29 @@ function toOpenAIInputItems(items) {
279
435
  output: item.output,
280
436
  id: item.id,
281
437
  });
438
+ continue;
439
+ }
440
+ if (item.type === "reasoning") {
441
+ mapped.push({
442
+ type: "reasoning",
443
+ id: item.id,
444
+ content: (item.content ?? []).map((part) => ({
445
+ type: part.type,
446
+ text: part.text,
447
+ })),
448
+ summary: item.summary.map((part) => ({
449
+ type: part.type,
450
+ text: part.text,
451
+ })),
452
+ encrypted_content: item.encrypted_content ?? null,
453
+ });
454
+ }
455
+ if (isExtensionResponseItem(item)) {
456
+ mapped.push({
457
+ type: item.type,
458
+ id: item.id,
459
+ data: item.data,
460
+ });
282
461
  }
283
462
  }
284
463
  return mapped;
@@ -363,13 +542,31 @@ function responseItemsToChat(items) {
363
542
  toolCalls: toolCalls.length > 0 ? toolCalls : undefined,
364
543
  };
365
544
  }
366
- async function createResponse(client, request, onStreamEvent) {
545
+ async function createResponse(client, request, signal, onStreamEvent) {
367
546
  const baseParams = {
368
547
  model: normalizeOpenRouterModel(request.model),
369
548
  input: toOpenAIInputItems(request.input),
370
549
  instructions: request.instructions,
371
550
  tools: undefined,
372
551
  tool_choice: mapToolChoice(request.tool_choice),
552
+ previous_response_id: request.previous_response_id,
553
+ reasoning: mapReasoning(request.reasoning),
554
+ parallel_tool_calls: request.parallel_tool_calls,
555
+ max_tool_calls: request.max_tool_calls,
556
+ store: request.store,
557
+ include: request.include,
558
+ text: mapText(request.text),
559
+ stream_options: request.stream_options,
560
+ background: request.background,
561
+ truncation: request.truncation,
562
+ service_tier: request.service_tier,
563
+ top_logprobs: request.top_logprobs,
564
+ safety_identifier: request.safety_identifier,
565
+ prompt_cache_key: request.prompt_cache_key,
566
+ temperature: request.temperature,
567
+ top_p: request.top_p,
568
+ frequency_penalty: request.frequency_penalty,
569
+ presence_penalty: request.presence_penalty,
373
570
  stream: request.stream,
374
571
  max_output_tokens: request.max_output_tokens,
375
572
  metadata: request.metadata,
@@ -379,11 +576,11 @@ async function createResponse(client, request, onStreamEvent) {
379
576
  if (mappedTools.length > 0) {
380
577
  baseParams.tools = mappedTools;
381
578
  }
382
- const params = { ...(request.params ?? {}), ...baseParams };
579
+ const params = { ...(request.params ?? {}), ...stripUndefined(baseParams) };
383
580
  const debugResponses = dntShim.Deno.env.get("GAMBIT_DEBUG_RESPONSES") === "1";
384
581
  let responseOrStream;
385
582
  try {
386
- responseOrStream = await client.responses.create(params);
583
+ responseOrStream = await client.responses.create(params, signal ? { signal } : undefined);
387
584
  }
388
585
  catch (err) {
389
586
  if (debugResponses) {
@@ -407,7 +604,12 @@ async function createResponse(client, request, onStreamEvent) {
407
604
  switch (event.type) {
408
605
  case "response.created": {
409
606
  const mapped = normalizeOpenAIResponse(event.response);
410
- onStreamEvent?.({ type: "response.created", response: mapped });
607
+ onStreamEvent?.({
608
+ type: "response.created",
609
+ response: mapped,
610
+ sequence_number: event
611
+ .sequence_number,
612
+ });
411
613
  break;
412
614
  }
413
615
  case "response.output_text.delta":
@@ -416,6 +618,10 @@ async function createResponse(client, request, onStreamEvent) {
416
618
  output_index: event.output_index,
417
619
  delta: event.delta,
418
620
  item_id: event.item_id,
621
+ content_index: event.content_index,
622
+ sequence_number: event
623
+ .sequence_number,
624
+ logprobs: event.logprobs,
419
625
  });
420
626
  break;
421
627
  case "response.output_text.done":
@@ -424,6 +630,9 @@ async function createResponse(client, request, onStreamEvent) {
424
630
  output_index: event.output_index,
425
631
  text: event.text,
426
632
  item_id: event.item_id,
633
+ content_index: event.content_index,
634
+ sequence_number: event
635
+ .sequence_number,
427
636
  });
428
637
  break;
429
638
  case "response.output_item.added": {
@@ -433,6 +642,8 @@ async function createResponse(client, request, onStreamEvent) {
433
642
  type: "response.output_item.added",
434
643
  output_index: event.output_index,
435
644
  item,
645
+ sequence_number: event
646
+ .sequence_number,
436
647
  });
437
648
  }
438
649
  break;
@@ -444,13 +655,102 @@ async function createResponse(client, request, onStreamEvent) {
444
655
  type: "response.output_item.done",
445
656
  output_index: event.output_index,
446
657
  item,
658
+ sequence_number: event
659
+ .sequence_number,
447
660
  });
448
661
  }
449
662
  break;
450
663
  }
664
+ case "response.reasoning.delta":
665
+ if (typeof event.delta === "string") {
666
+ onStreamEvent?.({
667
+ type: "response.reasoning.delta",
668
+ output_index: event.output_index,
669
+ item_id: event.item_id,
670
+ content_index: event.content_index,
671
+ delta: event.delta,
672
+ sequence_number: event
673
+ .sequence_number,
674
+ obfuscation: event.obfuscation,
675
+ });
676
+ }
677
+ break;
678
+ case "response.reasoning.done":
679
+ onStreamEvent?.({
680
+ type: "response.reasoning.done",
681
+ output_index: event.output_index,
682
+ item_id: event.item_id,
683
+ content_index: event.content_index,
684
+ text: event.text,
685
+ sequence_number: event
686
+ .sequence_number,
687
+ });
688
+ break;
689
+ case "response.reasoning_summary_text.delta":
690
+ if (typeof event.delta === "string") {
691
+ onStreamEvent?.({
692
+ type: "response.reasoning_summary_text.delta",
693
+ output_index: event.output_index,
694
+ item_id: event.item_id,
695
+ summary_index: event.summary_index,
696
+ delta: event.delta,
697
+ sequence_number: event
698
+ .sequence_number,
699
+ obfuscation: event.obfuscation,
700
+ });
701
+ }
702
+ break;
703
+ case "response.reasoning_summary_text.done":
704
+ onStreamEvent?.({
705
+ type: "response.reasoning_summary_text.done",
706
+ output_index: event.output_index,
707
+ item_id: event.item_id,
708
+ summary_index: event.summary_index,
709
+ text: event.text,
710
+ sequence_number: event
711
+ .sequence_number,
712
+ });
713
+ break;
714
+ case "response.reasoning_summary_part.added":
715
+ if (event.part && typeof event.part === "object" &&
716
+ "type" in event.part &&
717
+ "text" in event.part &&
718
+ typeof event.part.text === "string") {
719
+ onStreamEvent?.({
720
+ type: "response.reasoning_summary_part.added",
721
+ output_index: event.output_index,
722
+ item_id: event.item_id,
723
+ summary_index: event.summary_index,
724
+ part: event.part,
725
+ sequence_number: event
726
+ .sequence_number,
727
+ });
728
+ }
729
+ break;
730
+ case "response.reasoning_summary_part.done":
731
+ if (event.part && typeof event.part === "object" &&
732
+ "type" in event.part &&
733
+ "text" in event.part &&
734
+ typeof event.part.text === "string") {
735
+ onStreamEvent?.({
736
+ type: "response.reasoning_summary_part.done",
737
+ output_index: event.output_index,
738
+ item_id: event.item_id,
739
+ summary_index: event.summary_index,
740
+ part: event.part,
741
+ sequence_number: event
742
+ .sequence_number,
743
+ });
744
+ }
745
+ break;
451
746
  case "response.completed": {
452
747
  completed = normalizeOpenAIResponse(event.response);
453
- onStreamEvent?.({ type: "response.completed", response: completed });
748
+ onStreamEvent?.({
749
+ type: "response.completed",
750
+ response: completed,
751
+ sequence_number: event
752
+ .sequence_number,
753
+ });
454
754
  break;
455
755
  }
456
756
  case "response.failed": {
@@ -458,6 +758,8 @@ async function createResponse(client, request, onStreamEvent) {
458
758
  onStreamEvent?.({
459
759
  type: "response.failed",
460
760
  error: error ?? {},
761
+ sequence_number: event
762
+ .sequence_number,
461
763
  });
462
764
  break;
463
765
  }
@@ -484,7 +786,7 @@ function createOpenRouterProvider(opts) {
484
786
  }));
485
787
  return {
486
788
  async responses(input) {
487
- return await createResponse(client, input.request, input.onStreamEvent);
789
+ return await createResponse(client, input.request, input.signal, input.onStreamEvent);
488
790
  },
489
791
  async chat(input) {
490
792
  const params = input.params ?? {};
@@ -495,7 +797,7 @@ function createOpenRouterProvider(opts) {
495
797
  tools: input.tools,
496
798
  stream: input.stream,
497
799
  params,
498
- }, (event) => {
800
+ }, input.signal, (event) => {
499
801
  if (event.type === "response.output_text.delta") {
500
802
  input.onStreamText?.(event.delta);
501
803
  }
@@ -521,7 +823,7 @@ function createOpenRouterProvider(opts) {
521
823
  tool_choice: "auto",
522
824
  stream: true,
523
825
  ...params,
524
- });
826
+ }, input.signal ? { signal: input.signal } : undefined);
525
827
  let finishReason = null;
526
828
  const contentParts = [];
527
829
  const toolCallMap = new Map();
@@ -606,7 +908,7 @@ function createOpenRouterProvider(opts) {
606
908
  tool_choice: "auto",
607
909
  stream: false,
608
910
  ...params,
609
- });
911
+ }, input.signal ? { signal: input.signal } : undefined);
610
912
  const choice = response.choices[0];
611
913
  const message = choice.message;
612
914
  const normalizedMessage = normalizeMessage(message);
@@ -620,11 +922,20 @@ function createOpenRouterProvider(opts) {
620
922
  finishReason: (choice.finish_reason ?? "stop"),
621
923
  toolCalls,
622
924
  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
- }
925
+ ? (() => {
926
+ const usage = {
927
+ promptTokens: response.usage.prompt_tokens ?? 0,
928
+ completionTokens: response.usage.completion_tokens ?? 0,
929
+ totalTokens: response.usage.total_tokens ?? 0,
930
+ };
931
+ const details = response.usage;
932
+ const value = details.completion_tokens_details
933
+ ?.reasoning_tokens ??
934
+ details.output_tokens_details?.reasoning_tokens;
935
+ return typeof value === "number"
936
+ ? { ...usage, reasoningTokens: value }
937
+ : usage;
938
+ })()
628
939
  : undefined,
629
940
  };
630
941
  },
@@ -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;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"}