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

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 (289) hide show
  1. package/CHANGELOG.md +38 -2
  2. package/README.md +79 -16
  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 +122 -0
  6. package/esm/deps/jsr.io/@std/collections/1.1.5/deep_merge.d.ts +322 -0
  7. package/esm/deps/jsr.io/@std/collections/1.1.5/deep_merge.d.ts.map +1 -0
  8. package/esm/deps/jsr.io/@std/collections/1.1.5/deep_merge.js +105 -0
  9. package/esm/deps/jsr.io/@std/fs/1.0.22/_create_walk_entry.d.ts +14 -0
  10. package/esm/deps/jsr.io/@std/fs/1.0.22/_create_walk_entry.d.ts.map +1 -0
  11. package/esm/deps/jsr.io/@std/fs/1.0.22/_create_walk_entry.js +34 -0
  12. package/esm/deps/jsr.io/@std/fs/1.0.22/_get_file_info_type.d.ts +13 -0
  13. package/esm/deps/jsr.io/@std/fs/1.0.22/_get_file_info_type.d.ts.map +1 -0
  14. package/esm/deps/jsr.io/@std/fs/1.0.22/_get_file_info_type.js +18 -0
  15. package/esm/deps/jsr.io/@std/fs/1.0.22/_is_same_path.d.ts +10 -0
  16. package/esm/deps/jsr.io/@std/fs/1.0.22/_is_same_path.d.ts.map +1 -0
  17. package/esm/deps/jsr.io/@std/fs/1.0.22/_is_same_path.js +17 -0
  18. package/esm/deps/jsr.io/@std/fs/1.0.22/_is_subdir.d.ts +12 -0
  19. package/esm/deps/jsr.io/@std/fs/1.0.22/_is_subdir.d.ts.map +1 -0
  20. package/esm/deps/jsr.io/@std/fs/1.0.22/_is_subdir.js +25 -0
  21. package/esm/deps/jsr.io/@std/fs/1.0.22/_to_path_string.d.ts +9 -0
  22. package/esm/deps/jsr.io/@std/fs/1.0.22/_to_path_string.d.ts.map +1 -0
  23. package/esm/deps/jsr.io/@std/fs/1.0.22/_to_path_string.js +13 -0
  24. package/esm/deps/jsr.io/@std/fs/1.0.22/copy.d.ts +117 -0
  25. package/esm/deps/jsr.io/@std/fs/1.0.22/copy.d.ts.map +1 -0
  26. package/esm/deps/jsr.io/@std/fs/1.0.22/copy.js +313 -0
  27. package/esm/deps/jsr.io/@std/fs/1.0.22/empty_dir.d.ts +48 -0
  28. package/esm/deps/jsr.io/@std/fs/1.0.22/empty_dir.d.ts.map +1 -0
  29. package/esm/deps/jsr.io/@std/fs/1.0.22/empty_dir.js +87 -0
  30. package/esm/deps/jsr.io/@std/fs/1.0.22/ensure_dir.d.ts +49 -0
  31. package/esm/deps/jsr.io/@std/fs/1.0.22/ensure_dir.d.ts.map +1 -0
  32. package/esm/deps/jsr.io/@std/fs/1.0.22/ensure_dir.js +102 -0
  33. package/esm/deps/jsr.io/@std/fs/1.0.22/ensure_file.d.ts +47 -0
  34. package/esm/deps/jsr.io/@std/fs/1.0.22/ensure_file.d.ts.map +1 -0
  35. package/esm/deps/jsr.io/@std/fs/1.0.22/ensure_file.js +90 -0
  36. package/esm/deps/jsr.io/@std/fs/1.0.22/ensure_link.d.ts +49 -0
  37. package/esm/deps/jsr.io/@std/fs/1.0.22/ensure_link.d.ts.map +1 -0
  38. package/esm/deps/jsr.io/@std/fs/1.0.22/ensure_link.js +61 -0
  39. package/esm/deps/jsr.io/@std/fs/1.0.22/ensure_symlink.d.ts +70 -0
  40. package/esm/deps/jsr.io/@std/fs/1.0.22/ensure_symlink.d.ts.map +1 -0
  41. package/esm/deps/jsr.io/@std/fs/1.0.22/ensure_symlink.js +156 -0
  42. package/esm/deps/jsr.io/@std/fs/1.0.22/eol.d.ts +52 -0
  43. package/esm/deps/jsr.io/@std/fs/1.0.22/eol.d.ts.map +1 -0
  44. package/esm/deps/jsr.io/@std/fs/1.0.22/eol.js +67 -0
  45. package/esm/deps/jsr.io/@std/fs/1.0.22/exists.d.ts +218 -0
  46. package/esm/deps/jsr.io/@std/fs/1.0.22/exists.d.ts.map +1 -0
  47. package/esm/deps/jsr.io/@std/fs/1.0.22/exists.js +271 -0
  48. package/esm/deps/jsr.io/@std/fs/1.0.22/expand_glob.d.ts +267 -0
  49. package/esm/deps/jsr.io/@std/fs/1.0.22/expand_glob.d.ts.map +1 -0
  50. package/esm/deps/jsr.io/@std/fs/1.0.22/expand_glob.js +442 -0
  51. package/esm/deps/jsr.io/@std/fs/1.0.22/mod.d.ts +29 -0
  52. package/esm/deps/jsr.io/@std/fs/1.0.22/mod.d.ts.map +1 -0
  53. package/esm/deps/jsr.io/@std/fs/1.0.22/mod.js +29 -0
  54. package/esm/deps/jsr.io/@std/fs/1.0.22/move.d.ts +86 -0
  55. package/esm/deps/jsr.io/@std/fs/1.0.22/move.d.ts.map +1 -0
  56. package/esm/deps/jsr.io/@std/fs/1.0.22/move.js +142 -0
  57. package/esm/deps/jsr.io/@std/fs/1.0.22/walk.d.ts +777 -0
  58. package/esm/deps/jsr.io/@std/fs/1.0.22/walk.d.ts.map +1 -0
  59. package/esm/deps/jsr.io/@std/fs/1.0.22/walk.js +846 -0
  60. package/esm/deps/jsr.io/@std/json/1.0.2/types.d.ts +5 -0
  61. package/esm/deps/jsr.io/@std/json/1.0.2/types.d.ts.map +1 -0
  62. package/esm/deps/jsr.io/@std/json/1.0.2/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/toml/1.0.11/_parser.d.ts +93 -0
  70. package/esm/deps/jsr.io/@std/toml/1.0.11/_parser.d.ts.map +1 -0
  71. package/esm/deps/jsr.io/@std/toml/1.0.11/_parser.js +753 -0
  72. package/esm/deps/jsr.io/@std/toml/1.0.11/mod.d.ts +109 -0
  73. package/esm/deps/jsr.io/@std/toml/1.0.11/mod.d.ts.map +1 -0
  74. package/esm/deps/jsr.io/@std/toml/1.0.11/mod.js +110 -0
  75. package/esm/deps/jsr.io/@std/toml/1.0.11/parse.d.ts +21 -0
  76. package/esm/deps/jsr.io/@std/toml/1.0.11/parse.d.ts.map +1 -0
  77. package/esm/deps/jsr.io/@std/toml/1.0.11/parse.js +25 -0
  78. package/esm/deps/jsr.io/@std/toml/1.0.11/stringify.d.ts +35 -0
  79. package/esm/deps/jsr.io/@std/toml/1.0.11/stringify.d.ts.map +1 -0
  80. package/esm/deps/jsr.io/@std/toml/1.0.11/stringify.js +283 -0
  81. package/esm/gambit/simulator-ui/dist/bundle.js +10639 -4629
  82. package/esm/gambit/simulator-ui/dist/bundle.js.map +4 -4
  83. package/esm/mod.d.ts +13 -3
  84. package/esm/mod.d.ts.map +1 -1
  85. package/esm/mod.js +8 -2
  86. package/esm/src/cli_utils.d.ts +1 -0
  87. package/esm/src/cli_utils.d.ts.map +1 -1
  88. package/esm/src/cli_utils.js +13 -1
  89. package/esm/src/default_runtime.d.ts +46 -0
  90. package/esm/src/default_runtime.d.ts.map +1 -0
  91. package/esm/src/default_runtime.js +415 -0
  92. package/esm/src/durable_streams.js +26 -1
  93. package/esm/src/model_matchers.d.ts +10 -0
  94. package/esm/src/model_matchers.d.ts.map +1 -0
  95. package/esm/src/model_matchers.js +26 -0
  96. package/esm/src/openai_compat.d.ts +12 -1
  97. package/esm/src/openai_compat.d.ts.map +1 -1
  98. package/esm/src/openai_compat.js +53 -1
  99. package/esm/src/project_config.d.ts +47 -0
  100. package/esm/src/project_config.d.ts.map +1 -0
  101. package/esm/src/project_config.js +134 -0
  102. package/esm/src/providers/codex.d.ts +37 -0
  103. package/esm/src/providers/codex.d.ts.map +1 -0
  104. package/esm/src/providers/codex.js +810 -0
  105. package/esm/src/providers/google.d.ts +3 -1
  106. package/esm/src/providers/google.d.ts.map +1 -1
  107. package/esm/src/providers/google.js +82 -6
  108. package/esm/src/providers/ollama.d.ts +3 -1
  109. package/esm/src/providers/ollama.d.ts.map +1 -1
  110. package/esm/src/providers/ollama.js +238 -15
  111. package/esm/src/providers/openrouter.d.ts +6 -2
  112. package/esm/src/providers/openrouter.d.ts.map +1 -1
  113. package/esm/src/providers/openrouter.js +260 -23
  114. package/esm/src/providers/router.d.ts +19 -0
  115. package/esm/src/providers/router.d.ts.map +1 -0
  116. package/esm/src/providers/router.js +93 -0
  117. package/esm/src/server.d.ts +9 -0
  118. package/esm/src/server.d.ts.map +1 -1
  119. package/esm/src/server.js +3186 -652
  120. package/esm/src/server_feedback_grading_routes.d.ts +32 -0
  121. package/esm/src/server_feedback_grading_routes.d.ts.map +1 -0
  122. package/esm/src/server_feedback_grading_routes.js +305 -0
  123. package/esm/src/server_helpers.d.ts +4 -0
  124. package/esm/src/server_helpers.d.ts.map +1 -0
  125. package/esm/src/server_helpers.js +46 -0
  126. package/esm/src/server_session_store.d.ts +87 -0
  127. package/esm/src/server_session_store.d.ts.map +1 -0
  128. package/esm/src/server_session_store.js +873 -0
  129. package/esm/src/server_types.d.ts +110 -0
  130. package/esm/src/server_types.d.ts.map +1 -0
  131. package/esm/src/server_types.js +1 -0
  132. package/esm/src/server_ui_routes.d.ts +33 -0
  133. package/esm/src/server_ui_routes.d.ts.map +1 -0
  134. package/esm/src/server_ui_routes.js +135 -0
  135. package/esm/src/session_artifacts.d.ts +22 -0
  136. package/esm/src/session_artifacts.d.ts.map +1 -0
  137. package/esm/src/session_artifacts.js +243 -0
  138. package/esm/src/trace.d.ts.map +1 -1
  139. package/esm/src/trace.js +6 -3
  140. package/esm/src/workspace.d.ts +19 -0
  141. package/esm/src/workspace.d.ts.map +1 -0
  142. package/esm/src/workspace.js +164 -0
  143. package/esm/src/workspace_contract.d.ts +76 -0
  144. package/esm/src/workspace_contract.d.ts.map +1 -0
  145. package/esm/src/workspace_contract.js +74 -0
  146. package/package.json +2 -2
  147. package/script/_dnt.polyfills.d.ts +17 -0
  148. package/script/_dnt.polyfills.d.ts.map +1 -1
  149. package/script/_dnt.polyfills.js +122 -0
  150. package/script/deps/jsr.io/@std/collections/1.1.5/deep_merge.d.ts +322 -0
  151. package/script/deps/jsr.io/@std/collections/1.1.5/deep_merge.d.ts.map +1 -0
  152. package/script/deps/jsr.io/@std/collections/1.1.5/deep_merge.js +108 -0
  153. package/script/deps/jsr.io/@std/fs/1.0.22/_create_walk_entry.d.ts +14 -0
  154. package/script/deps/jsr.io/@std/fs/1.0.22/_create_walk_entry.d.ts.map +1 -0
  155. package/script/deps/jsr.io/@std/fs/1.0.22/_create_walk_entry.js +71 -0
  156. package/script/deps/jsr.io/@std/fs/1.0.22/_get_file_info_type.d.ts +13 -0
  157. package/script/deps/jsr.io/@std/fs/1.0.22/_get_file_info_type.d.ts.map +1 -0
  158. package/script/deps/jsr.io/@std/fs/1.0.22/_get_file_info_type.js +21 -0
  159. package/script/deps/jsr.io/@std/fs/1.0.22/_is_same_path.d.ts +10 -0
  160. package/script/deps/jsr.io/@std/fs/1.0.22/_is_same_path.d.ts.map +1 -0
  161. package/script/deps/jsr.io/@std/fs/1.0.22/_is_same_path.js +20 -0
  162. package/script/deps/jsr.io/@std/fs/1.0.22/_is_subdir.d.ts +12 -0
  163. package/script/deps/jsr.io/@std/fs/1.0.22/_is_subdir.d.ts.map +1 -0
  164. package/script/deps/jsr.io/@std/fs/1.0.22/_is_subdir.js +28 -0
  165. package/script/deps/jsr.io/@std/fs/1.0.22/_to_path_string.d.ts +9 -0
  166. package/script/deps/jsr.io/@std/fs/1.0.22/_to_path_string.d.ts.map +1 -0
  167. package/script/deps/jsr.io/@std/fs/1.0.22/_to_path_string.js +16 -0
  168. package/script/deps/jsr.io/@std/fs/1.0.22/copy.d.ts +117 -0
  169. package/script/deps/jsr.io/@std/fs/1.0.22/copy.d.ts.map +1 -0
  170. package/script/deps/jsr.io/@std/fs/1.0.22/copy.js +350 -0
  171. package/script/deps/jsr.io/@std/fs/1.0.22/empty_dir.d.ts +48 -0
  172. package/script/deps/jsr.io/@std/fs/1.0.22/empty_dir.d.ts.map +1 -0
  173. package/script/deps/jsr.io/@std/fs/1.0.22/empty_dir.js +124 -0
  174. package/script/deps/jsr.io/@std/fs/1.0.22/ensure_dir.d.ts +49 -0
  175. package/script/deps/jsr.io/@std/fs/1.0.22/ensure_dir.d.ts.map +1 -0
  176. package/script/deps/jsr.io/@std/fs/1.0.22/ensure_dir.js +139 -0
  177. package/script/deps/jsr.io/@std/fs/1.0.22/ensure_file.d.ts +47 -0
  178. package/script/deps/jsr.io/@std/fs/1.0.22/ensure_file.d.ts.map +1 -0
  179. package/script/deps/jsr.io/@std/fs/1.0.22/ensure_file.js +127 -0
  180. package/script/deps/jsr.io/@std/fs/1.0.22/ensure_link.d.ts +49 -0
  181. package/script/deps/jsr.io/@std/fs/1.0.22/ensure_link.d.ts.map +1 -0
  182. package/script/deps/jsr.io/@std/fs/1.0.22/ensure_link.js +98 -0
  183. package/script/deps/jsr.io/@std/fs/1.0.22/ensure_symlink.d.ts +70 -0
  184. package/script/deps/jsr.io/@std/fs/1.0.22/ensure_symlink.d.ts.map +1 -0
  185. package/script/deps/jsr.io/@std/fs/1.0.22/ensure_symlink.js +193 -0
  186. package/script/deps/jsr.io/@std/fs/1.0.22/eol.d.ts +52 -0
  187. package/script/deps/jsr.io/@std/fs/1.0.22/eol.d.ts.map +1 -0
  188. package/script/deps/jsr.io/@std/fs/1.0.22/eol.js +105 -0
  189. package/script/deps/jsr.io/@std/fs/1.0.22/exists.d.ts +218 -0
  190. package/script/deps/jsr.io/@std/fs/1.0.22/exists.d.ts.map +1 -0
  191. package/script/deps/jsr.io/@std/fs/1.0.22/exists.js +308 -0
  192. package/script/deps/jsr.io/@std/fs/1.0.22/expand_glob.d.ts +267 -0
  193. package/script/deps/jsr.io/@std/fs/1.0.22/expand_glob.d.ts.map +1 -0
  194. package/script/deps/jsr.io/@std/fs/1.0.22/expand_glob.js +479 -0
  195. package/script/deps/jsr.io/@std/fs/1.0.22/mod.d.ts +29 -0
  196. package/script/deps/jsr.io/@std/fs/1.0.22/mod.d.ts.map +1 -0
  197. package/script/deps/jsr.io/@std/fs/1.0.22/mod.js +45 -0
  198. package/script/deps/jsr.io/@std/fs/1.0.22/move.d.ts +86 -0
  199. package/script/deps/jsr.io/@std/fs/1.0.22/move.d.ts.map +1 -0
  200. package/script/deps/jsr.io/@std/fs/1.0.22/move.js +179 -0
  201. package/script/deps/jsr.io/@std/fs/1.0.22/walk.d.ts +777 -0
  202. package/script/deps/jsr.io/@std/fs/1.0.22/walk.d.ts.map +1 -0
  203. package/script/deps/jsr.io/@std/fs/1.0.22/walk.js +883 -0
  204. package/script/deps/jsr.io/@std/json/1.0.2/types.d.ts +5 -0
  205. package/script/deps/jsr.io/@std/json/1.0.2/types.d.ts.map +1 -0
  206. package/script/deps/jsr.io/@std/json/1.0.2/types.js +4 -0
  207. package/script/deps/jsr.io/@std/jsonc/1.0.2/mod.d.ts +20 -0
  208. package/script/deps/jsr.io/@std/jsonc/1.0.2/mod.d.ts.map +1 -0
  209. package/script/deps/jsr.io/@std/jsonc/1.0.2/mod.js +37 -0
  210. package/script/deps/jsr.io/@std/jsonc/1.0.2/parse.d.ts +21 -0
  211. package/script/deps/jsr.io/@std/jsonc/1.0.2/parse.d.ts.map +1 -0
  212. package/script/deps/jsr.io/@std/jsonc/1.0.2/parse.js +323 -0
  213. package/script/deps/jsr.io/@std/toml/1.0.11/_parser.d.ts +93 -0
  214. package/script/deps/jsr.io/@std/toml/1.0.11/_parser.d.ts.map +1 -0
  215. package/script/deps/jsr.io/@std/toml/1.0.11/_parser.js +781 -0
  216. package/script/deps/jsr.io/@std/toml/1.0.11/mod.d.ts +109 -0
  217. package/script/deps/jsr.io/@std/toml/1.0.11/mod.d.ts.map +1 -0
  218. package/script/deps/jsr.io/@std/toml/1.0.11/mod.js +126 -0
  219. package/script/deps/jsr.io/@std/toml/1.0.11/parse.d.ts +21 -0
  220. package/script/deps/jsr.io/@std/toml/1.0.11/parse.d.ts.map +1 -0
  221. package/script/deps/jsr.io/@std/toml/1.0.11/parse.js +28 -0
  222. package/script/deps/jsr.io/@std/toml/1.0.11/stringify.d.ts +35 -0
  223. package/script/deps/jsr.io/@std/toml/1.0.11/stringify.d.ts.map +1 -0
  224. package/script/deps/jsr.io/@std/toml/1.0.11/stringify.js +286 -0
  225. package/script/gambit/simulator-ui/dist/bundle.js +10639 -4629
  226. package/script/gambit/simulator-ui/dist/bundle.js.map +4 -4
  227. package/script/mod.d.ts +13 -3
  228. package/script/mod.d.ts.map +1 -1
  229. package/script/mod.js +14 -5
  230. package/script/src/cli_utils.d.ts +1 -0
  231. package/script/src/cli_utils.d.ts.map +1 -1
  232. package/script/src/cli_utils.js +14 -1
  233. package/script/src/default_runtime.d.ts +46 -0
  234. package/script/src/default_runtime.d.ts.map +1 -0
  235. package/script/src/default_runtime.js +452 -0
  236. package/script/src/durable_streams.js +26 -1
  237. package/script/src/model_matchers.d.ts +10 -0
  238. package/script/src/model_matchers.d.ts.map +1 -0
  239. package/script/src/model_matchers.js +29 -0
  240. package/script/src/openai_compat.d.ts +12 -1
  241. package/script/src/openai_compat.d.ts.map +1 -1
  242. package/script/src/openai_compat.js +85 -0
  243. package/script/src/project_config.d.ts +47 -0
  244. package/script/src/project_config.d.ts.map +1 -0
  245. package/script/src/project_config.js +173 -0
  246. package/script/src/providers/codex.d.ts +37 -0
  247. package/script/src/providers/codex.d.ts.map +1 -0
  248. package/script/src/providers/codex.js +850 -0
  249. package/script/src/providers/google.d.ts +3 -1
  250. package/script/src/providers/google.d.ts.map +1 -1
  251. package/script/src/providers/google.js +82 -6
  252. package/script/src/providers/ollama.d.ts +3 -1
  253. package/script/src/providers/ollama.d.ts.map +1 -1
  254. package/script/src/providers/ollama.js +238 -15
  255. package/script/src/providers/openrouter.d.ts +6 -2
  256. package/script/src/providers/openrouter.d.ts.map +1 -1
  257. package/script/src/providers/openrouter.js +260 -23
  258. package/script/src/providers/router.d.ts +19 -0
  259. package/script/src/providers/router.d.ts.map +1 -0
  260. package/script/src/providers/router.js +96 -0
  261. package/script/src/server.d.ts +9 -0
  262. package/script/src/server.d.ts.map +1 -1
  263. package/script/src/server.js +3193 -659
  264. package/script/src/server_feedback_grading_routes.d.ts +32 -0
  265. package/script/src/server_feedback_grading_routes.d.ts.map +1 -0
  266. package/script/src/server_feedback_grading_routes.js +343 -0
  267. package/script/src/server_helpers.d.ts +4 -0
  268. package/script/src/server_helpers.d.ts.map +1 -0
  269. package/script/src/server_helpers.js +84 -0
  270. package/script/src/server_session_store.d.ts +87 -0
  271. package/script/src/server_session_store.d.ts.map +1 -0
  272. package/script/src/server_session_store.js +910 -0
  273. package/script/src/server_types.d.ts +110 -0
  274. package/script/src/server_types.d.ts.map +1 -0
  275. package/script/src/server_types.js +2 -0
  276. package/script/src/server_ui_routes.d.ts +33 -0
  277. package/script/src/server_ui_routes.d.ts.map +1 -0
  278. package/script/src/server_ui_routes.js +172 -0
  279. package/script/src/session_artifacts.d.ts +22 -0
  280. package/script/src/session_artifacts.d.ts.map +1 -0
  281. package/script/src/session_artifacts.js +279 -0
  282. package/script/src/trace.d.ts.map +1 -1
  283. package/script/src/trace.js +6 -3
  284. package/script/src/workspace.d.ts +19 -0
  285. package/script/src/workspace.d.ts.map +1 -0
  286. package/script/src/workspace.js +201 -0
  287. package/script/src/workspace_contract.d.ts +76 -0
  288. package/script/src/workspace_contract.d.ts.map +1 -0
  289. package/script/src/workspace_contract.js +82 -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;AA6sBD,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"}
@@ -146,6 +146,25 @@ function mapStatus(status) {
146
146
  return "in_progress";
147
147
  return "failed";
148
148
  }
149
+ function mapReasoning(reasoning) {
150
+ if (!reasoning)
151
+ return undefined;
152
+ const out = {};
153
+ if (reasoning.effort !== undefined)
154
+ out.effort = reasoning.effort;
155
+ if (reasoning.summary !== undefined)
156
+ out.summary = reasoning.summary;
157
+ return Object.keys(out).length > 0 ? out : undefined;
158
+ }
159
+ function stripUndefined(input) {
160
+ const out = { ...input };
161
+ for (const [key, value] of Object.entries(out)) {
162
+ if (value === undefined) {
163
+ delete out[key];
164
+ }
165
+ }
166
+ return out;
167
+ }
149
168
  function mapError(error) {
150
169
  if (!error)
151
170
  return undefined;
@@ -226,20 +245,45 @@ function appendSyntheticTools(tools, input) {
226
245
  function mapToolChoice(toolChoice) {
227
246
  if (!toolChoice)
228
247
  return undefined;
229
- if (toolChoice === "auto" || toolChoice === "required")
248
+ if (toolChoice === "none" || toolChoice === "auto" ||
249
+ toolChoice === "required") {
230
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
+ }
231
259
  return { type: "function", name: toolChoice.function.name };
232
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
+ }
233
280
  function mapOpenAIOutputItem(item) {
234
281
  const itemType = item.type;
235
282
  if (itemType === "message") {
236
283
  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
- }
284
+ const content = (message.content ?? [])
285
+ .map((part) => mapResponseContentPart(part))
286
+ .filter((part) => Boolean(part));
243
287
  if (content.length === 0)
244
288
  return null;
245
289
  return {
@@ -259,6 +303,22 @@ function mapOpenAIOutputItem(item) {
259
303
  id: call.id,
260
304
  };
261
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
+ }
262
322
  return null;
263
323
  }
264
324
  function normalizeOpenAIResponse(response) {
@@ -269,11 +329,23 @@ function normalizeOpenAIResponse(response) {
269
329
  id: response.id,
270
330
  object: "response",
271
331
  model: response.model,
332
+ created_at: response.created_at,
272
333
  created: response.created_at,
334
+ completed_at: response.completed_at ??
335
+ null,
336
+ previous_response_id: response.previous_response_id ?? null,
337
+ instructions: response.instructions ?? null,
338
+ reasoning: response
339
+ .reasoning ?? null,
273
340
  status: mapStatus(response.status ?? undefined),
274
341
  output: outputItems,
275
342
  usage: mapUsage(response.usage),
276
- error: mapError(response.error),
343
+ error: mapError(response.error) ?? null,
344
+ metadata: response.metadata,
345
+ max_output_tokens: response.max_output_tokens ?? null,
346
+ max_tool_calls: response.max_tool_calls ?? null,
347
+ parallel_tool_calls: response.parallel_tool_calls,
348
+ store: response.store,
277
349
  };
278
350
  }
279
351
  function toOpenAIInputItems(items) {
@@ -295,6 +367,18 @@ function toOpenAIInputItems(items) {
295
367
  text: part.text,
296
368
  };
297
369
  }
370
+ if (part.type === "summary_text") {
371
+ return {
372
+ type: "summary_text",
373
+ text: part.text,
374
+ };
375
+ }
376
+ if (part.type === "reasoning_text") {
377
+ return {
378
+ type: "reasoning_text",
379
+ text: part.text,
380
+ };
381
+ }
298
382
  return null;
299
383
  })
300
384
  .filter((part) => Boolean(part));
@@ -325,6 +409,22 @@ function toOpenAIInputItems(items) {
325
409
  output: item.output,
326
410
  id: item.id,
327
411
  });
412
+ continue;
413
+ }
414
+ if (item.type === "reasoning") {
415
+ mapped.push({
416
+ type: "reasoning",
417
+ id: item.id,
418
+ content: (item.content ?? []).map((part) => ({
419
+ type: part.type,
420
+ text: part.text,
421
+ })),
422
+ summary: item.summary.map((part) => ({
423
+ type: part.type,
424
+ text: part.text,
425
+ })),
426
+ encrypted_content: item.encrypted_content ?? null,
427
+ });
328
428
  }
329
429
  }
330
430
  return mapped;
@@ -409,13 +509,31 @@ function responseItemsToChat(items) {
409
509
  toolCalls: toolCalls.length > 0 ? toolCalls : undefined,
410
510
  };
411
511
  }
412
- async function createResponse(client, request, onStreamEvent) {
512
+ async function createResponse(client, request, signal, onStreamEvent) {
413
513
  const baseParams = {
414
514
  model: request.model,
415
515
  input: toOpenAIInputItems(request.input),
416
516
  instructions: request.instructions,
417
517
  tools: undefined,
418
518
  tool_choice: mapToolChoice(request.tool_choice),
519
+ previous_response_id: request.previous_response_id,
520
+ reasoning: mapReasoning(request.reasoning),
521
+ parallel_tool_calls: request.parallel_tool_calls,
522
+ max_tool_calls: request.max_tool_calls,
523
+ store: request.store,
524
+ include: request.include,
525
+ text: request.text,
526
+ stream_options: request.stream_options,
527
+ background: request.background,
528
+ truncation: request.truncation,
529
+ service_tier: request.service_tier,
530
+ top_logprobs: request.top_logprobs,
531
+ safety_identifier: request.safety_identifier,
532
+ prompt_cache_key: request.prompt_cache_key,
533
+ temperature: request.temperature,
534
+ top_p: request.top_p,
535
+ frequency_penalty: request.frequency_penalty,
536
+ presence_penalty: request.presence_penalty,
419
537
  stream: request.stream,
420
538
  max_output_tokens: request.max_output_tokens,
421
539
  metadata: request.metadata,
@@ -425,11 +543,11 @@ async function createResponse(client, request, onStreamEvent) {
425
543
  if (mappedTools.length > 0) {
426
544
  baseParams.tools = mappedTools;
427
545
  }
428
- const params = { ...(request.params ?? {}), ...baseParams };
546
+ const params = { ...(request.params ?? {}), ...stripUndefined(baseParams) };
429
547
  const debugResponses = dntShim.Deno.env.get("GAMBIT_DEBUG_RESPONSES") === "1";
430
548
  let responseOrStream;
431
549
  try {
432
- responseOrStream = await client.responses.create(params);
550
+ responseOrStream = await client.responses.create(params, signal ? { signal } : undefined);
433
551
  }
434
552
  catch (err) {
435
553
  if (debugResponses) {
@@ -453,7 +571,12 @@ async function createResponse(client, request, onStreamEvent) {
453
571
  switch (event.type) {
454
572
  case "response.created": {
455
573
  const mapped = normalizeOpenAIResponse(event.response);
456
- onStreamEvent?.({ type: "response.created", response: mapped });
574
+ onStreamEvent?.({
575
+ type: "response.created",
576
+ response: mapped,
577
+ sequence_number: event
578
+ .sequence_number,
579
+ });
457
580
  break;
458
581
  }
459
582
  case "response.output_text.delta":
@@ -462,6 +585,10 @@ async function createResponse(client, request, onStreamEvent) {
462
585
  output_index: event.output_index,
463
586
  delta: event.delta,
464
587
  item_id: event.item_id,
588
+ content_index: event.content_index,
589
+ sequence_number: event
590
+ .sequence_number,
591
+ logprobs: event.logprobs,
465
592
  });
466
593
  break;
467
594
  case "response.output_text.done":
@@ -470,6 +597,9 @@ async function createResponse(client, request, onStreamEvent) {
470
597
  output_index: event.output_index,
471
598
  text: event.text,
472
599
  item_id: event.item_id,
600
+ content_index: event.content_index,
601
+ sequence_number: event
602
+ .sequence_number,
473
603
  });
474
604
  break;
475
605
  case "response.output_item.added": {
@@ -479,6 +609,8 @@ async function createResponse(client, request, onStreamEvent) {
479
609
  type: "response.output_item.added",
480
610
  output_index: event.output_index,
481
611
  item,
612
+ sequence_number: event
613
+ .sequence_number,
482
614
  });
483
615
  }
484
616
  break;
@@ -490,13 +622,102 @@ async function createResponse(client, request, onStreamEvent) {
490
622
  type: "response.output_item.done",
491
623
  output_index: event.output_index,
492
624
  item,
625
+ sequence_number: event
626
+ .sequence_number,
493
627
  });
494
628
  }
495
629
  break;
496
630
  }
631
+ case "response.reasoning.delta":
632
+ if (typeof event.delta === "string") {
633
+ onStreamEvent?.({
634
+ type: "response.reasoning.delta",
635
+ output_index: event.output_index,
636
+ item_id: event.item_id,
637
+ content_index: event.content_index,
638
+ delta: event.delta,
639
+ sequence_number: event
640
+ .sequence_number,
641
+ obfuscation: event.obfuscation,
642
+ });
643
+ }
644
+ break;
645
+ case "response.reasoning.done":
646
+ onStreamEvent?.({
647
+ type: "response.reasoning.done",
648
+ output_index: event.output_index,
649
+ item_id: event.item_id,
650
+ content_index: event.content_index,
651
+ text: event.text,
652
+ sequence_number: event
653
+ .sequence_number,
654
+ });
655
+ break;
656
+ case "response.reasoning_summary_text.delta":
657
+ if (typeof event.delta === "string") {
658
+ onStreamEvent?.({
659
+ type: "response.reasoning_summary_text.delta",
660
+ output_index: event.output_index,
661
+ item_id: event.item_id,
662
+ summary_index: event.summary_index,
663
+ delta: event.delta,
664
+ sequence_number: event
665
+ .sequence_number,
666
+ obfuscation: event.obfuscation,
667
+ });
668
+ }
669
+ break;
670
+ case "response.reasoning_summary_text.done":
671
+ onStreamEvent?.({
672
+ type: "response.reasoning_summary_text.done",
673
+ output_index: event.output_index,
674
+ item_id: event.item_id,
675
+ summary_index: event.summary_index,
676
+ text: event.text,
677
+ sequence_number: event
678
+ .sequence_number,
679
+ });
680
+ break;
681
+ case "response.reasoning_summary_part.added":
682
+ if (event.part && typeof event.part === "object" &&
683
+ "type" in event.part &&
684
+ "text" in event.part &&
685
+ typeof event.part.text === "string") {
686
+ onStreamEvent?.({
687
+ type: "response.reasoning_summary_part.added",
688
+ output_index: event.output_index,
689
+ item_id: event.item_id,
690
+ summary_index: event.summary_index,
691
+ part: event.part,
692
+ sequence_number: event
693
+ .sequence_number,
694
+ });
695
+ }
696
+ break;
697
+ case "response.reasoning_summary_part.done":
698
+ if (event.part && typeof event.part === "object" &&
699
+ "type" in event.part &&
700
+ "text" in event.part &&
701
+ typeof event.part.text === "string") {
702
+ onStreamEvent?.({
703
+ type: "response.reasoning_summary_part.done",
704
+ output_index: event.output_index,
705
+ item_id: event.item_id,
706
+ summary_index: event.summary_index,
707
+ part: event.part,
708
+ sequence_number: event
709
+ .sequence_number,
710
+ });
711
+ }
712
+ break;
497
713
  case "response.completed": {
498
714
  completed = normalizeOpenAIResponse(event.response);
499
- onStreamEvent?.({ type: "response.completed", response: completed });
715
+ onStreamEvent?.({
716
+ type: "response.completed",
717
+ response: completed,
718
+ sequence_number: event
719
+ .sequence_number,
720
+ });
500
721
  break;
501
722
  }
502
723
  case "response.failed": {
@@ -504,6 +725,8 @@ async function createResponse(client, request, onStreamEvent) {
504
725
  onStreamEvent?.({
505
726
  type: "response.failed",
506
727
  error: error ?? {},
728
+ sequence_number: event
729
+ .sequence_number,
507
730
  });
508
731
  break;
509
732
  }
@@ -525,7 +748,7 @@ function createOllamaProvider(opts) {
525
748
  }));
526
749
  return {
527
750
  async responses(input) {
528
- return await createResponse(client, input.request, input.onStreamEvent);
751
+ return await createResponse(client, input.request, input.signal, input.onStreamEvent);
529
752
  },
530
753
  async chat(input) {
531
754
  const response = await createResponse(client, {
@@ -534,7 +757,7 @@ function createOllamaProvider(opts) {
534
757
  tools: input.tools,
535
758
  stream: input.stream,
536
759
  params: input.params ?? {},
537
- }, (event) => {
760
+ }, input.signal, (event) => {
538
761
  if (event.type === "response.output_text.delta") {
539
762
  input.onStreamText?.(event.delta);
540
763
  }
@@ -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: {
@@ -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;AA8uBF,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"}