@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"}
@@ -44,8 +44,13 @@ function normalizeMessage(content) {
44
44
  function toToolChoice(choice) {
45
45
  if (!choice)
46
46
  return undefined;
47
- if (choice === "auto" || choice === "required")
47
+ if (choice === "none" || choice === "auto" || choice === "required") {
48
48
  return choice;
49
+ }
50
+ if (choice.type === "allowed_tools") {
51
+ return (choice.mode ??
52
+ "auto");
53
+ }
49
54
  return { type: "function", function: { name: choice.function.name } };
50
55
  }
51
56
  function responseItemsToChatMessages(items, instructions) {
@@ -133,6 +138,20 @@ function createGoogleProvider(opts) {
133
138
  async responses(input) {
134
139
  const request = input.request;
135
140
  const params = { ...(request.params ?? {}) };
141
+ if (request.temperature !== undefined && params.temperature === undefined) {
142
+ params.temperature = request.temperature;
143
+ }
144
+ if (request.top_p !== undefined && params.top_p === undefined) {
145
+ params.top_p = request.top_p;
146
+ }
147
+ if (request.frequency_penalty !== undefined &&
148
+ params.frequency_penalty === undefined) {
149
+ params.frequency_penalty = request.frequency_penalty;
150
+ }
151
+ if (request.presence_penalty !== undefined &&
152
+ params.presence_penalty === undefined) {
153
+ params.presence_penalty = request.presence_penalty;
154
+ }
136
155
  if (request.max_output_tokens !== undefined &&
137
156
  params.max_tokens === undefined) {
138
157
  params.max_tokens = request.max_output_tokens;
@@ -140,6 +159,7 @@ function createGoogleProvider(opts) {
140
159
  const messages = responseItemsToChatMessages(request.input, request.instructions);
141
160
  const toolChoice = toToolChoice(request.tool_choice);
142
161
  if (request.stream) {
162
+ let sequence = 0;
143
163
  const stream = await client.chat.completions.create({
144
164
  model: request.model,
145
165
  messages: messages,
@@ -147,14 +167,32 @@ function createGoogleProvider(opts) {
147
167
  tool_choice: toolChoice ?? "auto",
148
168
  stream: true,
149
169
  ...params,
150
- });
170
+ }, input.signal ? { signal: input.signal } : undefined);
151
171
  const contentParts = [];
152
172
  const toolCallMap = new Map();
153
173
  let responseId;
154
174
  let created;
175
+ let emittedCreated = false;
155
176
  for await (const chunk of stream) {
156
177
  responseId = responseId ?? chunk.id;
157
178
  created = created ?? chunk.created;
179
+ if (!emittedCreated) {
180
+ input.onStreamEvent?.({
181
+ type: "response.created",
182
+ sequence_number: sequence++,
183
+ response: {
184
+ id: responseId ?? crypto.randomUUID(),
185
+ object: "response",
186
+ model: request.model,
187
+ created_at: created,
188
+ created,
189
+ status: "in_progress",
190
+ output: [],
191
+ error: null,
192
+ },
193
+ });
194
+ emittedCreated = true;
195
+ }
158
196
  const choice = chunk.choices[0];
159
197
  const delta = choice.delta;
160
198
  if (typeof delta.content === "string") {
@@ -163,6 +201,7 @@ function createGoogleProvider(opts) {
163
201
  type: "response.output_text.delta",
164
202
  output_index: 0,
165
203
  delta: delta.content,
204
+ sequence_number: sequence++,
166
205
  });
167
206
  }
168
207
  else if (Array.isArray(delta.content)) {
@@ -175,6 +214,7 @@ function createGoogleProvider(opts) {
175
214
  type: "response.output_text.delta",
176
215
  output_index: 0,
177
216
  delta: text,
217
+ sequence_number: sequence++,
178
218
  });
179
219
  }
180
220
  }
@@ -220,11 +260,31 @@ function createGoogleProvider(opts) {
220
260
  id: responseId ?? crypto.randomUUID(),
221
261
  object: "response",
222
262
  model: request.model,
263
+ created_at: created,
223
264
  created,
224
265
  status: "completed",
225
266
  output,
267
+ previous_response_id: request.previous_response_id ?? null,
268
+ instructions: request.instructions ?? null,
269
+ tool_choice: request.tool_choice,
270
+ max_output_tokens: request.max_output_tokens ?? null,
271
+ max_tool_calls: request.max_tool_calls ?? null,
272
+ parallel_tool_calls: request.parallel_tool_calls,
273
+ store: request.store,
274
+ metadata: request.metadata,
275
+ reasoning: request.reasoning
276
+ ? {
277
+ effort: request.reasoning.effort ?? null,
278
+ summary: request.reasoning.summary ?? null,
279
+ }
280
+ : null,
281
+ error: null,
226
282
  };
227
- input.onStreamEvent?.({ type: "response.completed", response });
283
+ input.onStreamEvent?.({
284
+ type: "response.completed",
285
+ sequence_number: sequence++,
286
+ response,
287
+ });
228
288
  return response;
229
289
  }
230
290
  const response = await client.chat.completions.create({
@@ -234,7 +294,7 @@ function createGoogleProvider(opts) {
234
294
  tool_choice: toolChoice ?? "auto",
235
295
  stream: false,
236
296
  ...params,
237
- });
297
+ }, input.signal ? { signal: input.signal } : undefined);
238
298
  const choice = response.choices[0];
239
299
  const normalizedMessage = normalizeMessage(choice.message);
240
300
  const toolCalls = choice.message.tool_calls?.map((tc) => ({
@@ -246,9 +306,25 @@ function createGoogleProvider(opts) {
246
306
  id: response.id,
247
307
  object: "response",
248
308
  model: response.model,
309
+ created_at: response.created,
249
310
  created: response.created,
250
311
  status: "completed",
251
312
  output: responseItemsFromChatMessage(normalizedMessage, toolCalls),
313
+ previous_response_id: request.previous_response_id ?? null,
314
+ instructions: request.instructions ?? null,
315
+ tool_choice: request.tool_choice,
316
+ max_output_tokens: request.max_output_tokens ?? null,
317
+ max_tool_calls: request.max_tool_calls ?? null,
318
+ parallel_tool_calls: request.parallel_tool_calls,
319
+ store: request.store,
320
+ metadata: request.metadata,
321
+ reasoning: request.reasoning
322
+ ? {
323
+ effort: request.reasoning.effort ?? null,
324
+ summary: request.reasoning.summary ?? null,
325
+ }
326
+ : null,
327
+ error: null,
252
328
  usage: mapChatUsage(response.usage),
253
329
  };
254
330
  },
@@ -263,7 +339,7 @@ function createGoogleProvider(opts) {
263
339
  tool_choice: "auto",
264
340
  stream: true,
265
341
  ...params,
266
- });
342
+ }, input.signal ? { signal: input.signal } : undefined);
267
343
  let finishReason = null;
268
344
  const contentParts = [];
269
345
  const toolCallMap = new Map();
@@ -340,7 +416,7 @@ function createGoogleProvider(opts) {
340
416
  tool_choice: "auto",
341
417
  stream: false,
342
418
  ...params,
343
- });
419
+ }, input.signal ? { signal: input.signal } : undefined);
344
420
  const choice = response.choices[0];
345
421
  const message = normalizeMessage(choice.message);
346
422
  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"}
@@ -123,6 +123,30 @@ function safeJson(input) {
123
123
  }
124
124
  return {};
125
125
  }
126
+ function toJsonValue(value) {
127
+ if (value === null || typeof value === "string" || typeof value === "boolean") {
128
+ return value;
129
+ }
130
+ if (typeof value === "number") {
131
+ return Number.isFinite(value) ? value : String(value);
132
+ }
133
+ if (Array.isArray(value)) {
134
+ return value.map((entry) => toJsonValue(entry));
135
+ }
136
+ if (value && typeof value === "object") {
137
+ const out = {};
138
+ for (const [key, entry] of Object.entries(value)) {
139
+ if (entry === undefined)
140
+ continue;
141
+ out[key] = toJsonValue(entry);
142
+ }
143
+ return out;
144
+ }
145
+ return String(value);
146
+ }
147
+ function isExtensionResponseItem(item) {
148
+ return item.type.includes(":");
149
+ }
126
150
  function isAsyncIterable(value) {
127
151
  return Boolean(value &&
128
152
  typeof value === "object" &&
@@ -146,6 +170,25 @@ function mapStatus(status) {
146
170
  return "in_progress";
147
171
  return "failed";
148
172
  }
173
+ function mapReasoning(reasoning) {
174
+ if (!reasoning)
175
+ return undefined;
176
+ const out = {};
177
+ if (reasoning.effort !== undefined)
178
+ out.effort = reasoning.effort;
179
+ if (reasoning.summary !== undefined)
180
+ out.summary = reasoning.summary;
181
+ return Object.keys(out).length > 0 ? out : undefined;
182
+ }
183
+ function stripUndefined(input) {
184
+ const out = { ...input };
185
+ for (const [key, value] of Object.entries(out)) {
186
+ if (value === undefined) {
187
+ delete out[key];
188
+ }
189
+ }
190
+ return out;
191
+ }
149
192
  function mapError(error) {
150
193
  if (!error)
151
194
  return undefined;
@@ -226,20 +269,45 @@ function appendSyntheticTools(tools, input) {
226
269
  function mapToolChoice(toolChoice) {
227
270
  if (!toolChoice)
228
271
  return undefined;
229
- if (toolChoice === "auto" || toolChoice === "required")
272
+ if (toolChoice === "none" || toolChoice === "auto" ||
273
+ toolChoice === "required") {
230
274
  return toolChoice;
275
+ }
276
+ if (toolChoice.type === "allowed_tools") {
277
+ return {
278
+ type: "allowed_tools",
279
+ tools: toolChoice.tools,
280
+ mode: toolChoice.mode ?? "auto",
281
+ };
282
+ }
231
283
  return { type: "function", name: toolChoice.function.name };
232
284
  }
285
+ function mapResponseContentPart(part) {
286
+ if (!part || typeof part !== "object")
287
+ return null;
288
+ if (typeof part.text !== "string")
289
+ return null;
290
+ if (part.type === "output_text") {
291
+ return { type: "output_text", text: part.text };
292
+ }
293
+ if (part.type === "summary_text") {
294
+ return { type: "summary_text", text: part.text };
295
+ }
296
+ if (part.type === "reasoning_text") {
297
+ return { type: "reasoning_text", text: part.text };
298
+ }
299
+ if (part.type === "input_text") {
300
+ return { type: "input_text", text: part.text };
301
+ }
302
+ return null;
303
+ }
233
304
  function mapOpenAIOutputItem(item) {
234
305
  const itemType = item.type;
235
306
  if (itemType === "message") {
236
307
  const message = item;
237
- const content = [];
238
- for (const part of message.content ?? []) {
239
- if (part.type === "output_text") {
240
- content.push({ type: "output_text", text: part.text });
241
- }
242
- }
308
+ const content = (message.content ?? [])
309
+ .map((part) => mapResponseContentPart(part))
310
+ .filter((part) => Boolean(part));
243
311
  if (content.length === 0)
244
312
  return null;
245
313
  return {
@@ -259,6 +327,48 @@ function mapOpenAIOutputItem(item) {
259
327
  id: call.id,
260
328
  };
261
329
  }
330
+ if (itemType === "reasoning") {
331
+ const reasoning = item;
332
+ const content = (reasoning.content ?? [])
333
+ .map((part) => mapResponseContentPart(part))
334
+ .filter((part) => Boolean(part));
335
+ const summary = (reasoning.summary ?? [])
336
+ .map((part) => mapResponseContentPart(part))
337
+ .filter((part) => Boolean(part));
338
+ return {
339
+ type: "reasoning",
340
+ id: reasoning.id,
341
+ content: content.length > 0 ? content : undefined,
342
+ summary,
343
+ encrypted_content: reasoning.encrypted_content,
344
+ };
345
+ }
346
+ if (typeof itemType === "string" && itemType.includes(":")) {
347
+ const raw = item;
348
+ const payloadEntries = Object.entries(raw).filter(([key, value]) => {
349
+ if (key === "type" || key === "id")
350
+ return false;
351
+ if (value === undefined)
352
+ return false;
353
+ return true;
354
+ });
355
+ let data;
356
+ if (payloadEntries.length === 1 && payloadEntries[0][0] === "data") {
357
+ data = toJsonValue(payloadEntries[0][1]);
358
+ }
359
+ else {
360
+ const payloadObject = {};
361
+ for (const [key, value] of payloadEntries) {
362
+ payloadObject[key] = toJsonValue(value);
363
+ }
364
+ data = payloadObject;
365
+ }
366
+ return {
367
+ type: itemType,
368
+ id: typeof raw.id === "string" ? raw.id : undefined,
369
+ data,
370
+ };
371
+ }
262
372
  return null;
263
373
  }
264
374
  function normalizeOpenAIResponse(response) {
@@ -269,11 +379,23 @@ function normalizeOpenAIResponse(response) {
269
379
  id: response.id,
270
380
  object: "response",
271
381
  model: response.model,
382
+ created_at: response.created_at,
272
383
  created: response.created_at,
384
+ completed_at: response.completed_at ??
385
+ null,
386
+ previous_response_id: response.previous_response_id ?? null,
387
+ instructions: response.instructions ?? null,
388
+ reasoning: response
389
+ .reasoning ?? null,
273
390
  status: mapStatus(response.status ?? undefined),
274
391
  output: outputItems,
275
392
  usage: mapUsage(response.usage),
276
- error: mapError(response.error),
393
+ error: mapError(response.error) ?? null,
394
+ metadata: response.metadata,
395
+ max_output_tokens: response.max_output_tokens ?? null,
396
+ max_tool_calls: response.max_tool_calls ?? null,
397
+ parallel_tool_calls: response.parallel_tool_calls,
398
+ store: response.store,
277
399
  };
278
400
  }
279
401
  function toOpenAIInputItems(items) {
@@ -295,6 +417,18 @@ function toOpenAIInputItems(items) {
295
417
  text: part.text,
296
418
  };
297
419
  }
420
+ if (part.type === "summary_text") {
421
+ return {
422
+ type: "summary_text",
423
+ text: part.text,
424
+ };
425
+ }
426
+ if (part.type === "reasoning_text") {
427
+ return {
428
+ type: "reasoning_text",
429
+ text: part.text,
430
+ };
431
+ }
298
432
  return null;
299
433
  })
300
434
  .filter((part) => Boolean(part));
@@ -325,6 +459,29 @@ function toOpenAIInputItems(items) {
325
459
  output: item.output,
326
460
  id: item.id,
327
461
  });
462
+ continue;
463
+ }
464
+ if (item.type === "reasoning") {
465
+ mapped.push({
466
+ type: "reasoning",
467
+ id: item.id,
468
+ content: (item.content ?? []).map((part) => ({
469
+ type: part.type,
470
+ text: part.text,
471
+ })),
472
+ summary: item.summary.map((part) => ({
473
+ type: part.type,
474
+ text: part.text,
475
+ })),
476
+ encrypted_content: item.encrypted_content ?? null,
477
+ });
478
+ }
479
+ if (isExtensionResponseItem(item)) {
480
+ mapped.push({
481
+ type: item.type,
482
+ id: item.id,
483
+ data: item.data,
484
+ });
328
485
  }
329
486
  }
330
487
  return mapped;
@@ -409,13 +566,31 @@ function responseItemsToChat(items) {
409
566
  toolCalls: toolCalls.length > 0 ? toolCalls : undefined,
410
567
  };
411
568
  }
412
- async function createResponse(client, request, onStreamEvent) {
569
+ async function createResponse(client, request, signal, onStreamEvent) {
413
570
  const baseParams = {
414
571
  model: request.model,
415
572
  input: toOpenAIInputItems(request.input),
416
573
  instructions: request.instructions,
417
574
  tools: undefined,
418
575
  tool_choice: mapToolChoice(request.tool_choice),
576
+ previous_response_id: request.previous_response_id,
577
+ reasoning: mapReasoning(request.reasoning),
578
+ parallel_tool_calls: request.parallel_tool_calls,
579
+ max_tool_calls: request.max_tool_calls,
580
+ store: request.store,
581
+ include: request.include,
582
+ text: request.text,
583
+ stream_options: request.stream_options,
584
+ background: request.background,
585
+ truncation: request.truncation,
586
+ service_tier: request.service_tier,
587
+ top_logprobs: request.top_logprobs,
588
+ safety_identifier: request.safety_identifier,
589
+ prompt_cache_key: request.prompt_cache_key,
590
+ temperature: request.temperature,
591
+ top_p: request.top_p,
592
+ frequency_penalty: request.frequency_penalty,
593
+ presence_penalty: request.presence_penalty,
419
594
  stream: request.stream,
420
595
  max_output_tokens: request.max_output_tokens,
421
596
  metadata: request.metadata,
@@ -425,11 +600,11 @@ async function createResponse(client, request, onStreamEvent) {
425
600
  if (mappedTools.length > 0) {
426
601
  baseParams.tools = mappedTools;
427
602
  }
428
- const params = { ...(request.params ?? {}), ...baseParams };
603
+ const params = { ...(request.params ?? {}), ...stripUndefined(baseParams) };
429
604
  const debugResponses = dntShim.Deno.env.get("GAMBIT_DEBUG_RESPONSES") === "1";
430
605
  let responseOrStream;
431
606
  try {
432
- responseOrStream = await client.responses.create(params);
607
+ responseOrStream = await client.responses.create(params, signal ? { signal } : undefined);
433
608
  }
434
609
  catch (err) {
435
610
  if (debugResponses) {
@@ -453,7 +628,12 @@ async function createResponse(client, request, onStreamEvent) {
453
628
  switch (event.type) {
454
629
  case "response.created": {
455
630
  const mapped = normalizeOpenAIResponse(event.response);
456
- onStreamEvent?.({ type: "response.created", response: mapped });
631
+ onStreamEvent?.({
632
+ type: "response.created",
633
+ response: mapped,
634
+ sequence_number: event
635
+ .sequence_number,
636
+ });
457
637
  break;
458
638
  }
459
639
  case "response.output_text.delta":
@@ -462,6 +642,10 @@ async function createResponse(client, request, onStreamEvent) {
462
642
  output_index: event.output_index,
463
643
  delta: event.delta,
464
644
  item_id: event.item_id,
645
+ content_index: event.content_index,
646
+ sequence_number: event
647
+ .sequence_number,
648
+ logprobs: event.logprobs,
465
649
  });
466
650
  break;
467
651
  case "response.output_text.done":
@@ -470,6 +654,9 @@ async function createResponse(client, request, onStreamEvent) {
470
654
  output_index: event.output_index,
471
655
  text: event.text,
472
656
  item_id: event.item_id,
657
+ content_index: event.content_index,
658
+ sequence_number: event
659
+ .sequence_number,
473
660
  });
474
661
  break;
475
662
  case "response.output_item.added": {
@@ -479,6 +666,8 @@ async function createResponse(client, request, onStreamEvent) {
479
666
  type: "response.output_item.added",
480
667
  output_index: event.output_index,
481
668
  item,
669
+ sequence_number: event
670
+ .sequence_number,
482
671
  });
483
672
  }
484
673
  break;
@@ -490,13 +679,102 @@ async function createResponse(client, request, onStreamEvent) {
490
679
  type: "response.output_item.done",
491
680
  output_index: event.output_index,
492
681
  item,
682
+ sequence_number: event
683
+ .sequence_number,
493
684
  });
494
685
  }
495
686
  break;
496
687
  }
688
+ case "response.reasoning.delta":
689
+ if (typeof event.delta === "string") {
690
+ onStreamEvent?.({
691
+ type: "response.reasoning.delta",
692
+ output_index: event.output_index,
693
+ item_id: event.item_id,
694
+ content_index: event.content_index,
695
+ delta: event.delta,
696
+ sequence_number: event
697
+ .sequence_number,
698
+ obfuscation: event.obfuscation,
699
+ });
700
+ }
701
+ break;
702
+ case "response.reasoning.done":
703
+ onStreamEvent?.({
704
+ type: "response.reasoning.done",
705
+ output_index: event.output_index,
706
+ item_id: event.item_id,
707
+ content_index: event.content_index,
708
+ text: event.text,
709
+ sequence_number: event
710
+ .sequence_number,
711
+ });
712
+ break;
713
+ case "response.reasoning_summary_text.delta":
714
+ if (typeof event.delta === "string") {
715
+ onStreamEvent?.({
716
+ type: "response.reasoning_summary_text.delta",
717
+ output_index: event.output_index,
718
+ item_id: event.item_id,
719
+ summary_index: event.summary_index,
720
+ delta: event.delta,
721
+ sequence_number: event
722
+ .sequence_number,
723
+ obfuscation: event.obfuscation,
724
+ });
725
+ }
726
+ break;
727
+ case "response.reasoning_summary_text.done":
728
+ onStreamEvent?.({
729
+ type: "response.reasoning_summary_text.done",
730
+ output_index: event.output_index,
731
+ item_id: event.item_id,
732
+ summary_index: event.summary_index,
733
+ text: event.text,
734
+ sequence_number: event
735
+ .sequence_number,
736
+ });
737
+ break;
738
+ case "response.reasoning_summary_part.added":
739
+ if (event.part && typeof event.part === "object" &&
740
+ "type" in event.part &&
741
+ "text" in event.part &&
742
+ typeof event.part.text === "string") {
743
+ onStreamEvent?.({
744
+ type: "response.reasoning_summary_part.added",
745
+ output_index: event.output_index,
746
+ item_id: event.item_id,
747
+ summary_index: event.summary_index,
748
+ part: event.part,
749
+ sequence_number: event
750
+ .sequence_number,
751
+ });
752
+ }
753
+ break;
754
+ case "response.reasoning_summary_part.done":
755
+ if (event.part && typeof event.part === "object" &&
756
+ "type" in event.part &&
757
+ "text" in event.part &&
758
+ typeof event.part.text === "string") {
759
+ onStreamEvent?.({
760
+ type: "response.reasoning_summary_part.done",
761
+ output_index: event.output_index,
762
+ item_id: event.item_id,
763
+ summary_index: event.summary_index,
764
+ part: event.part,
765
+ sequence_number: event
766
+ .sequence_number,
767
+ });
768
+ }
769
+ break;
497
770
  case "response.completed": {
498
771
  completed = normalizeOpenAIResponse(event.response);
499
- onStreamEvent?.({ type: "response.completed", response: completed });
772
+ onStreamEvent?.({
773
+ type: "response.completed",
774
+ response: completed,
775
+ sequence_number: event
776
+ .sequence_number,
777
+ });
500
778
  break;
501
779
  }
502
780
  case "response.failed": {
@@ -504,6 +782,8 @@ async function createResponse(client, request, onStreamEvent) {
504
782
  onStreamEvent?.({
505
783
  type: "response.failed",
506
784
  error: error ?? {},
785
+ sequence_number: event
786
+ .sequence_number,
507
787
  });
508
788
  break;
509
789
  }
@@ -525,7 +805,7 @@ function createOllamaProvider(opts) {
525
805
  }));
526
806
  return {
527
807
  async responses(input) {
528
- return await createResponse(client, input.request, input.onStreamEvent);
808
+ return await createResponse(client, input.request, input.signal, input.onStreamEvent);
529
809
  },
530
810
  async chat(input) {
531
811
  const response = await createResponse(client, {
@@ -534,7 +814,7 @@ function createOllamaProvider(opts) {
534
814
  tools: input.tools,
535
815
  stream: input.stream,
536
816
  params: input.params ?? {},
537
- }, (event) => {
817
+ }, input.signal, (event) => {
538
818
  if (event.type === "response.output_text.delta") {
539
819
  input.onStreamText?.(event.delta);
540
820
  }
@@ -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: {