@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
@@ -3,7 +3,9 @@ export declare const GOOGLE_PREFIX = "google/";
3
3
  type OpenAIClient = {
4
4
  chat: {
5
5
  completions: {
6
- create: (params: unknown) => Promise<unknown>;
6
+ create: (params: unknown, options?: {
7
+ signal?: AbortSignal;
8
+ }) => Promise<unknown>;
7
9
  };
8
10
  };
9
11
  };
@@ -1 +1 @@
1
- {"version":3,"file":"google.d.ts","sourceRoot":"","sources":["../../../src/src/providers/google.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAIV,aAAa,EAId,MAAM,2BAA2B,CAAC;AAEnC,eAAO,MAAM,aAAa,YAAY,CAAC;AAIvC,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;CACH,CAAC;AAwIF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB,GAAG,aAAa,CA6RhB"}
1
+ {"version":3,"file":"google.d.ts","sourceRoot":"","sources":["../../../src/src/providers/google.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAIV,aAAa,EAId,MAAM,2BAA2B,CAAC;AAEnC,eAAO,MAAM,aAAa,YAAY,CAAC;AAIvC,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;CACH,CAAC;AA8IF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB,GAAG,aAAa,CA0XhB"}
@@ -37,8 +37,13 @@ function normalizeMessage(content) {
37
37
  function toToolChoice(choice) {
38
38
  if (!choice)
39
39
  return undefined;
40
- if (choice === "auto" || choice === "required")
40
+ if (choice === "none" || choice === "auto" || choice === "required") {
41
41
  return choice;
42
+ }
43
+ if (choice.type === "allowed_tools") {
44
+ return (choice.mode ??
45
+ "auto");
46
+ }
42
47
  return { type: "function", function: { name: choice.function.name } };
43
48
  }
44
49
  function responseItemsToChatMessages(items, instructions) {
@@ -126,6 +131,20 @@ export function createGoogleProvider(opts) {
126
131
  async responses(input) {
127
132
  const request = input.request;
128
133
  const params = { ...(request.params ?? {}) };
134
+ if (request.temperature !== undefined && params.temperature === undefined) {
135
+ params.temperature = request.temperature;
136
+ }
137
+ if (request.top_p !== undefined && params.top_p === undefined) {
138
+ params.top_p = request.top_p;
139
+ }
140
+ if (request.frequency_penalty !== undefined &&
141
+ params.frequency_penalty === undefined) {
142
+ params.frequency_penalty = request.frequency_penalty;
143
+ }
144
+ if (request.presence_penalty !== undefined &&
145
+ params.presence_penalty === undefined) {
146
+ params.presence_penalty = request.presence_penalty;
147
+ }
129
148
  if (request.max_output_tokens !== undefined &&
130
149
  params.max_tokens === undefined) {
131
150
  params.max_tokens = request.max_output_tokens;
@@ -133,6 +152,7 @@ export function createGoogleProvider(opts) {
133
152
  const messages = responseItemsToChatMessages(request.input, request.instructions);
134
153
  const toolChoice = toToolChoice(request.tool_choice);
135
154
  if (request.stream) {
155
+ let sequence = 0;
136
156
  const stream = await client.chat.completions.create({
137
157
  model: request.model,
138
158
  messages: messages,
@@ -140,14 +160,32 @@ export function createGoogleProvider(opts) {
140
160
  tool_choice: toolChoice ?? "auto",
141
161
  stream: true,
142
162
  ...params,
143
- });
163
+ }, input.signal ? { signal: input.signal } : undefined);
144
164
  const contentParts = [];
145
165
  const toolCallMap = new Map();
146
166
  let responseId;
147
167
  let created;
168
+ let emittedCreated = false;
148
169
  for await (const chunk of stream) {
149
170
  responseId = responseId ?? chunk.id;
150
171
  created = created ?? chunk.created;
172
+ if (!emittedCreated) {
173
+ input.onStreamEvent?.({
174
+ type: "response.created",
175
+ sequence_number: sequence++,
176
+ response: {
177
+ id: responseId ?? crypto.randomUUID(),
178
+ object: "response",
179
+ model: request.model,
180
+ created_at: created,
181
+ created,
182
+ status: "in_progress",
183
+ output: [],
184
+ error: null,
185
+ },
186
+ });
187
+ emittedCreated = true;
188
+ }
151
189
  const choice = chunk.choices[0];
152
190
  const delta = choice.delta;
153
191
  if (typeof delta.content === "string") {
@@ -156,6 +194,7 @@ export function createGoogleProvider(opts) {
156
194
  type: "response.output_text.delta",
157
195
  output_index: 0,
158
196
  delta: delta.content,
197
+ sequence_number: sequence++,
159
198
  });
160
199
  }
161
200
  else if (Array.isArray(delta.content)) {
@@ -168,6 +207,7 @@ export function createGoogleProvider(opts) {
168
207
  type: "response.output_text.delta",
169
208
  output_index: 0,
170
209
  delta: text,
210
+ sequence_number: sequence++,
171
211
  });
172
212
  }
173
213
  }
@@ -213,11 +253,31 @@ export function createGoogleProvider(opts) {
213
253
  id: responseId ?? crypto.randomUUID(),
214
254
  object: "response",
215
255
  model: request.model,
256
+ created_at: created,
216
257
  created,
217
258
  status: "completed",
218
259
  output,
260
+ previous_response_id: request.previous_response_id ?? null,
261
+ instructions: request.instructions ?? null,
262
+ tool_choice: request.tool_choice,
263
+ max_output_tokens: request.max_output_tokens ?? null,
264
+ max_tool_calls: request.max_tool_calls ?? null,
265
+ parallel_tool_calls: request.parallel_tool_calls,
266
+ store: request.store,
267
+ metadata: request.metadata,
268
+ reasoning: request.reasoning
269
+ ? {
270
+ effort: request.reasoning.effort ?? null,
271
+ summary: request.reasoning.summary ?? null,
272
+ }
273
+ : null,
274
+ error: null,
219
275
  };
220
- input.onStreamEvent?.({ type: "response.completed", response });
276
+ input.onStreamEvent?.({
277
+ type: "response.completed",
278
+ sequence_number: sequence++,
279
+ response,
280
+ });
221
281
  return response;
222
282
  }
223
283
  const response = await client.chat.completions.create({
@@ -227,7 +287,7 @@ export function createGoogleProvider(opts) {
227
287
  tool_choice: toolChoice ?? "auto",
228
288
  stream: false,
229
289
  ...params,
230
- });
290
+ }, input.signal ? { signal: input.signal } : undefined);
231
291
  const choice = response.choices[0];
232
292
  const normalizedMessage = normalizeMessage(choice.message);
233
293
  const toolCalls = choice.message.tool_calls?.map((tc) => ({
@@ -239,9 +299,25 @@ export function createGoogleProvider(opts) {
239
299
  id: response.id,
240
300
  object: "response",
241
301
  model: response.model,
302
+ created_at: response.created,
242
303
  created: response.created,
243
304
  status: "completed",
244
305
  output: responseItemsFromChatMessage(normalizedMessage, toolCalls),
306
+ previous_response_id: request.previous_response_id ?? null,
307
+ instructions: request.instructions ?? null,
308
+ tool_choice: request.tool_choice,
309
+ max_output_tokens: request.max_output_tokens ?? null,
310
+ max_tool_calls: request.max_tool_calls ?? null,
311
+ parallel_tool_calls: request.parallel_tool_calls,
312
+ store: request.store,
313
+ metadata: request.metadata,
314
+ reasoning: request.reasoning
315
+ ? {
316
+ effort: request.reasoning.effort ?? null,
317
+ summary: request.reasoning.summary ?? null,
318
+ }
319
+ : null,
320
+ error: null,
245
321
  usage: mapChatUsage(response.usage),
246
322
  };
247
323
  },
@@ -256,7 +332,7 @@ export function createGoogleProvider(opts) {
256
332
  tool_choice: "auto",
257
333
  stream: true,
258
334
  ...params,
259
- });
335
+ }, input.signal ? { signal: input.signal } : undefined);
260
336
  let finishReason = null;
261
337
  const contentParts = [];
262
338
  const toolCallMap = new Map();
@@ -333,7 +409,7 @@ export function createGoogleProvider(opts) {
333
409
  tool_choice: "auto",
334
410
  stream: false,
335
411
  ...params,
336
- });
412
+ }, input.signal ? { signal: input.signal } : undefined);
337
413
  const choice = response.choices[0];
338
414
  const message = normalizeMessage(choice.message);
339
415
  const toolCalls = choice.message.tool_calls?.map((tc) => ({
@@ -3,7 +3,9 @@ export declare const OLLAMA_PREFIX = "ollama/";
3
3
  export declare const DEFAULT_OLLAMA_BASE_URL = "http://localhost:11434/v1";
4
4
  type OpenAIClient = {
5
5
  responses: {
6
- create: (params: unknown) => Promise<unknown>;
6
+ create: (params: unknown, options?: {
7
+ signal?: AbortSignal;
8
+ }) => Promise<unknown>;
7
9
  };
8
10
  };
9
11
  export declare function fetchOllamaTags(baseURL: string | undefined): Promise<Set<string>>;
@@ -1 +1 @@
1
- {"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../../src/src/providers/ollama.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAKV,aAAa,EAOd,MAAM,2BAA2B,CAAC;AAOnC,eAAO,MAAM,aAAa,YAAY,CAAC;AACvC,eAAO,MAAM,uBAAuB,8BAA8B,CAAC;AAEnE,KAAK,YAAY,GAAG;IAClB,SAAS,EAAE;QACT,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;KAC/C,CAAC;CACH,CAAC;AAeF,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAgBtB;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,OAAO,CAAC,IAAI,CAAC,CA8Cf;AAodD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB,GAAG,aAAa,CAoChB"}
1
+ {"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../../src/src/providers/ollama.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAKV,aAAa,EAOd,MAAM,2BAA2B,CAAC;AAOnC,eAAO,MAAM,aAAa,YAAY,CAAC;AACvC,eAAO,MAAM,uBAAuB,8BAA8B,CAAC;AAEnE,KAAK,YAAY,GAAG;IAClB,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;AAeF,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAgBtB;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,OAAO,CAAC,IAAI,CAAC,CA8Cf;AA0wBD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB,GAAG,aAAa,CA0ChB"}
@@ -81,6 +81,30 @@ function safeJson(input) {
81
81
  }
82
82
  return {};
83
83
  }
84
+ function toJsonValue(value) {
85
+ if (value === null || typeof value === "string" || typeof value === "boolean") {
86
+ return value;
87
+ }
88
+ if (typeof value === "number") {
89
+ return Number.isFinite(value) ? value : String(value);
90
+ }
91
+ if (Array.isArray(value)) {
92
+ return value.map((entry) => toJsonValue(entry));
93
+ }
94
+ if (value && typeof value === "object") {
95
+ const out = {};
96
+ for (const [key, entry] of Object.entries(value)) {
97
+ if (entry === undefined)
98
+ continue;
99
+ out[key] = toJsonValue(entry);
100
+ }
101
+ return out;
102
+ }
103
+ return String(value);
104
+ }
105
+ function isExtensionResponseItem(item) {
106
+ return item.type.includes(":");
107
+ }
84
108
  function isAsyncIterable(value) {
85
109
  return Boolean(value &&
86
110
  typeof value === "object" &&
@@ -104,6 +128,25 @@ function mapStatus(status) {
104
128
  return "in_progress";
105
129
  return "failed";
106
130
  }
131
+ function mapReasoning(reasoning) {
132
+ if (!reasoning)
133
+ return undefined;
134
+ const out = {};
135
+ if (reasoning.effort !== undefined)
136
+ out.effort = reasoning.effort;
137
+ if (reasoning.summary !== undefined)
138
+ out.summary = reasoning.summary;
139
+ return Object.keys(out).length > 0 ? out : undefined;
140
+ }
141
+ function stripUndefined(input) {
142
+ const out = { ...input };
143
+ for (const [key, value] of Object.entries(out)) {
144
+ if (value === undefined) {
145
+ delete out[key];
146
+ }
147
+ }
148
+ return out;
149
+ }
107
150
  function mapError(error) {
108
151
  if (!error)
109
152
  return undefined;
@@ -184,20 +227,45 @@ function appendSyntheticTools(tools, input) {
184
227
  function mapToolChoice(toolChoice) {
185
228
  if (!toolChoice)
186
229
  return undefined;
187
- if (toolChoice === "auto" || toolChoice === "required")
230
+ if (toolChoice === "none" || toolChoice === "auto" ||
231
+ toolChoice === "required") {
188
232
  return toolChoice;
233
+ }
234
+ if (toolChoice.type === "allowed_tools") {
235
+ return {
236
+ type: "allowed_tools",
237
+ tools: toolChoice.tools,
238
+ mode: toolChoice.mode ?? "auto",
239
+ };
240
+ }
189
241
  return { type: "function", name: toolChoice.function.name };
190
242
  }
243
+ function mapResponseContentPart(part) {
244
+ if (!part || typeof part !== "object")
245
+ return null;
246
+ if (typeof part.text !== "string")
247
+ return null;
248
+ if (part.type === "output_text") {
249
+ return { type: "output_text", text: part.text };
250
+ }
251
+ if (part.type === "summary_text") {
252
+ return { type: "summary_text", text: part.text };
253
+ }
254
+ if (part.type === "reasoning_text") {
255
+ return { type: "reasoning_text", text: part.text };
256
+ }
257
+ if (part.type === "input_text") {
258
+ return { type: "input_text", text: part.text };
259
+ }
260
+ return null;
261
+ }
191
262
  function mapOpenAIOutputItem(item) {
192
263
  const itemType = item.type;
193
264
  if (itemType === "message") {
194
265
  const message = item;
195
- const content = [];
196
- for (const part of message.content ?? []) {
197
- if (part.type === "output_text") {
198
- content.push({ type: "output_text", text: part.text });
199
- }
200
- }
266
+ const content = (message.content ?? [])
267
+ .map((part) => mapResponseContentPart(part))
268
+ .filter((part) => Boolean(part));
201
269
  if (content.length === 0)
202
270
  return null;
203
271
  return {
@@ -217,6 +285,48 @@ function mapOpenAIOutputItem(item) {
217
285
  id: call.id,
218
286
  };
219
287
  }
288
+ if (itemType === "reasoning") {
289
+ const reasoning = item;
290
+ const content = (reasoning.content ?? [])
291
+ .map((part) => mapResponseContentPart(part))
292
+ .filter((part) => Boolean(part));
293
+ const summary = (reasoning.summary ?? [])
294
+ .map((part) => mapResponseContentPart(part))
295
+ .filter((part) => Boolean(part));
296
+ return {
297
+ type: "reasoning",
298
+ id: reasoning.id,
299
+ content: content.length > 0 ? content : undefined,
300
+ summary,
301
+ encrypted_content: reasoning.encrypted_content,
302
+ };
303
+ }
304
+ if (typeof itemType === "string" && itemType.includes(":")) {
305
+ const raw = item;
306
+ const payloadEntries = Object.entries(raw).filter(([key, value]) => {
307
+ if (key === "type" || key === "id")
308
+ return false;
309
+ if (value === undefined)
310
+ return false;
311
+ return true;
312
+ });
313
+ let data;
314
+ if (payloadEntries.length === 1 && payloadEntries[0][0] === "data") {
315
+ data = toJsonValue(payloadEntries[0][1]);
316
+ }
317
+ else {
318
+ const payloadObject = {};
319
+ for (const [key, value] of payloadEntries) {
320
+ payloadObject[key] = toJsonValue(value);
321
+ }
322
+ data = payloadObject;
323
+ }
324
+ return {
325
+ type: itemType,
326
+ id: typeof raw.id === "string" ? raw.id : undefined,
327
+ data,
328
+ };
329
+ }
220
330
  return null;
221
331
  }
222
332
  function normalizeOpenAIResponse(response) {
@@ -227,11 +337,23 @@ function normalizeOpenAIResponse(response) {
227
337
  id: response.id,
228
338
  object: "response",
229
339
  model: response.model,
340
+ created_at: response.created_at,
230
341
  created: response.created_at,
342
+ completed_at: response.completed_at ??
343
+ null,
344
+ previous_response_id: response.previous_response_id ?? null,
345
+ instructions: response.instructions ?? null,
346
+ reasoning: response
347
+ .reasoning ?? null,
231
348
  status: mapStatus(response.status ?? undefined),
232
349
  output: outputItems,
233
350
  usage: mapUsage(response.usage),
234
- error: mapError(response.error),
351
+ error: mapError(response.error) ?? null,
352
+ metadata: response.metadata,
353
+ max_output_tokens: response.max_output_tokens ?? null,
354
+ max_tool_calls: response.max_tool_calls ?? null,
355
+ parallel_tool_calls: response.parallel_tool_calls,
356
+ store: response.store,
235
357
  };
236
358
  }
237
359
  function toOpenAIInputItems(items) {
@@ -253,6 +375,18 @@ function toOpenAIInputItems(items) {
253
375
  text: part.text,
254
376
  };
255
377
  }
378
+ if (part.type === "summary_text") {
379
+ return {
380
+ type: "summary_text",
381
+ text: part.text,
382
+ };
383
+ }
384
+ if (part.type === "reasoning_text") {
385
+ return {
386
+ type: "reasoning_text",
387
+ text: part.text,
388
+ };
389
+ }
256
390
  return null;
257
391
  })
258
392
  .filter((part) => Boolean(part));
@@ -283,6 +417,29 @@ function toOpenAIInputItems(items) {
283
417
  output: item.output,
284
418
  id: item.id,
285
419
  });
420
+ continue;
421
+ }
422
+ if (item.type === "reasoning") {
423
+ mapped.push({
424
+ type: "reasoning",
425
+ id: item.id,
426
+ content: (item.content ?? []).map((part) => ({
427
+ type: part.type,
428
+ text: part.text,
429
+ })),
430
+ summary: item.summary.map((part) => ({
431
+ type: part.type,
432
+ text: part.text,
433
+ })),
434
+ encrypted_content: item.encrypted_content ?? null,
435
+ });
436
+ }
437
+ if (isExtensionResponseItem(item)) {
438
+ mapped.push({
439
+ type: item.type,
440
+ id: item.id,
441
+ data: item.data,
442
+ });
286
443
  }
287
444
  }
288
445
  return mapped;
@@ -367,13 +524,31 @@ function responseItemsToChat(items) {
367
524
  toolCalls: toolCalls.length > 0 ? toolCalls : undefined,
368
525
  };
369
526
  }
370
- async function createResponse(client, request, onStreamEvent) {
527
+ async function createResponse(client, request, signal, onStreamEvent) {
371
528
  const baseParams = {
372
529
  model: request.model,
373
530
  input: toOpenAIInputItems(request.input),
374
531
  instructions: request.instructions,
375
532
  tools: undefined,
376
533
  tool_choice: mapToolChoice(request.tool_choice),
534
+ previous_response_id: request.previous_response_id,
535
+ reasoning: mapReasoning(request.reasoning),
536
+ parallel_tool_calls: request.parallel_tool_calls,
537
+ max_tool_calls: request.max_tool_calls,
538
+ store: request.store,
539
+ include: request.include,
540
+ text: request.text,
541
+ stream_options: request.stream_options,
542
+ background: request.background,
543
+ truncation: request.truncation,
544
+ service_tier: request.service_tier,
545
+ top_logprobs: request.top_logprobs,
546
+ safety_identifier: request.safety_identifier,
547
+ prompt_cache_key: request.prompt_cache_key,
548
+ temperature: request.temperature,
549
+ top_p: request.top_p,
550
+ frequency_penalty: request.frequency_penalty,
551
+ presence_penalty: request.presence_penalty,
377
552
  stream: request.stream,
378
553
  max_output_tokens: request.max_output_tokens,
379
554
  metadata: request.metadata,
@@ -383,11 +558,11 @@ async function createResponse(client, request, onStreamEvent) {
383
558
  if (mappedTools.length > 0) {
384
559
  baseParams.tools = mappedTools;
385
560
  }
386
- const params = { ...(request.params ?? {}), ...baseParams };
561
+ const params = { ...(request.params ?? {}), ...stripUndefined(baseParams) };
387
562
  const debugResponses = dntShim.Deno.env.get("GAMBIT_DEBUG_RESPONSES") === "1";
388
563
  let responseOrStream;
389
564
  try {
390
- responseOrStream = await client.responses.create(params);
565
+ responseOrStream = await client.responses.create(params, signal ? { signal } : undefined);
391
566
  }
392
567
  catch (err) {
393
568
  if (debugResponses) {
@@ -411,7 +586,12 @@ async function createResponse(client, request, onStreamEvent) {
411
586
  switch (event.type) {
412
587
  case "response.created": {
413
588
  const mapped = normalizeOpenAIResponse(event.response);
414
- onStreamEvent?.({ type: "response.created", response: mapped });
589
+ onStreamEvent?.({
590
+ type: "response.created",
591
+ response: mapped,
592
+ sequence_number: event
593
+ .sequence_number,
594
+ });
415
595
  break;
416
596
  }
417
597
  case "response.output_text.delta":
@@ -420,6 +600,10 @@ async function createResponse(client, request, onStreamEvent) {
420
600
  output_index: event.output_index,
421
601
  delta: event.delta,
422
602
  item_id: event.item_id,
603
+ content_index: event.content_index,
604
+ sequence_number: event
605
+ .sequence_number,
606
+ logprobs: event.logprobs,
423
607
  });
424
608
  break;
425
609
  case "response.output_text.done":
@@ -428,6 +612,9 @@ async function createResponse(client, request, onStreamEvent) {
428
612
  output_index: event.output_index,
429
613
  text: event.text,
430
614
  item_id: event.item_id,
615
+ content_index: event.content_index,
616
+ sequence_number: event
617
+ .sequence_number,
431
618
  });
432
619
  break;
433
620
  case "response.output_item.added": {
@@ -437,6 +624,8 @@ async function createResponse(client, request, onStreamEvent) {
437
624
  type: "response.output_item.added",
438
625
  output_index: event.output_index,
439
626
  item,
627
+ sequence_number: event
628
+ .sequence_number,
440
629
  });
441
630
  }
442
631
  break;
@@ -448,13 +637,102 @@ async function createResponse(client, request, onStreamEvent) {
448
637
  type: "response.output_item.done",
449
638
  output_index: event.output_index,
450
639
  item,
640
+ sequence_number: event
641
+ .sequence_number,
451
642
  });
452
643
  }
453
644
  break;
454
645
  }
646
+ case "response.reasoning.delta":
647
+ if (typeof event.delta === "string") {
648
+ onStreamEvent?.({
649
+ type: "response.reasoning.delta",
650
+ output_index: event.output_index,
651
+ item_id: event.item_id,
652
+ content_index: event.content_index,
653
+ delta: event.delta,
654
+ sequence_number: event
655
+ .sequence_number,
656
+ obfuscation: event.obfuscation,
657
+ });
658
+ }
659
+ break;
660
+ case "response.reasoning.done":
661
+ onStreamEvent?.({
662
+ type: "response.reasoning.done",
663
+ output_index: event.output_index,
664
+ item_id: event.item_id,
665
+ content_index: event.content_index,
666
+ text: event.text,
667
+ sequence_number: event
668
+ .sequence_number,
669
+ });
670
+ break;
671
+ case "response.reasoning_summary_text.delta":
672
+ if (typeof event.delta === "string") {
673
+ onStreamEvent?.({
674
+ type: "response.reasoning_summary_text.delta",
675
+ output_index: event.output_index,
676
+ item_id: event.item_id,
677
+ summary_index: event.summary_index,
678
+ delta: event.delta,
679
+ sequence_number: event
680
+ .sequence_number,
681
+ obfuscation: event.obfuscation,
682
+ });
683
+ }
684
+ break;
685
+ case "response.reasoning_summary_text.done":
686
+ onStreamEvent?.({
687
+ type: "response.reasoning_summary_text.done",
688
+ output_index: event.output_index,
689
+ item_id: event.item_id,
690
+ summary_index: event.summary_index,
691
+ text: event.text,
692
+ sequence_number: event
693
+ .sequence_number,
694
+ });
695
+ break;
696
+ case "response.reasoning_summary_part.added":
697
+ if (event.part && typeof event.part === "object" &&
698
+ "type" in event.part &&
699
+ "text" in event.part &&
700
+ typeof event.part.text === "string") {
701
+ onStreamEvent?.({
702
+ type: "response.reasoning_summary_part.added",
703
+ output_index: event.output_index,
704
+ item_id: event.item_id,
705
+ summary_index: event.summary_index,
706
+ part: event.part,
707
+ sequence_number: event
708
+ .sequence_number,
709
+ });
710
+ }
711
+ break;
712
+ case "response.reasoning_summary_part.done":
713
+ if (event.part && typeof event.part === "object" &&
714
+ "type" in event.part &&
715
+ "text" in event.part &&
716
+ typeof event.part.text === "string") {
717
+ onStreamEvent?.({
718
+ type: "response.reasoning_summary_part.done",
719
+ output_index: event.output_index,
720
+ item_id: event.item_id,
721
+ summary_index: event.summary_index,
722
+ part: event.part,
723
+ sequence_number: event
724
+ .sequence_number,
725
+ });
726
+ }
727
+ break;
455
728
  case "response.completed": {
456
729
  completed = normalizeOpenAIResponse(event.response);
457
- onStreamEvent?.({ type: "response.completed", response: completed });
730
+ onStreamEvent?.({
731
+ type: "response.completed",
732
+ response: completed,
733
+ sequence_number: event
734
+ .sequence_number,
735
+ });
458
736
  break;
459
737
  }
460
738
  case "response.failed": {
@@ -462,6 +740,8 @@ async function createResponse(client, request, onStreamEvent) {
462
740
  onStreamEvent?.({
463
741
  type: "response.failed",
464
742
  error: error ?? {},
743
+ sequence_number: event
744
+ .sequence_number,
465
745
  });
466
746
  break;
467
747
  }
@@ -483,7 +763,7 @@ export function createOllamaProvider(opts) {
483
763
  }));
484
764
  return {
485
765
  async responses(input) {
486
- return await createResponse(client, input.request, input.onStreamEvent);
766
+ return await createResponse(client, input.request, input.signal, input.onStreamEvent);
487
767
  },
488
768
  async chat(input) {
489
769
  const response = await createResponse(client, {
@@ -492,7 +772,7 @@ export function createOllamaProvider(opts) {
492
772
  tools: input.tools,
493
773
  stream: input.stream,
494
774
  params: input.params ?? {},
495
- }, (event) => {
775
+ }, input.signal, (event) => {
496
776
  if (event.type === "response.output_text.delta") {
497
777
  input.onStreamText?.(event.delta);
498
778
  }
@@ -3,11 +3,15 @@ export declare const OPENROUTER_PREFIX = "openrouter/";
3
3
  type OpenAIClient = {
4
4
  chat: {
5
5
  completions: {
6
- create: (params: unknown) => Promise<unknown>;
6
+ create: (params: unknown, options?: {
7
+ signal?: AbortSignal;
8
+ }) => Promise<unknown>;
7
9
  };
8
10
  };
9
11
  responses: {
10
- create: (params: unknown) => Promise<unknown>;
12
+ create: (params: unknown, options?: {
13
+ signal?: AbortSignal;
14
+ }) => Promise<unknown>;
11
15
  };
12
16
  };
13
17
  export declare function createOpenRouterProvider(opts: {