@bolt-foundry/gambit 0.8.1 → 0.8.5-rc.10

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 (293) hide show
  1. package/CHANGELOG.md +150 -2
  2. package/README.md +109 -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 +12670 -5471
  83. package/esm/gambit/simulator-ui/dist/bundle.js.map +4 -4
  84. package/esm/gambit/simulator-ui/dist/favicon.ico +0 -0
  85. package/esm/mod.d.ts +21 -7
  86. package/esm/mod.d.ts.map +1 -1
  87. package/esm/mod.js +14 -4
  88. package/esm/src/cli_utils.d.ts +1 -0
  89. package/esm/src/cli_utils.d.ts.map +1 -1
  90. package/esm/src/cli_utils.js +52 -4
  91. package/esm/src/default_runtime.d.ts +46 -0
  92. package/esm/src/default_runtime.d.ts.map +1 -0
  93. package/esm/src/default_runtime.js +415 -0
  94. package/esm/src/durable_streams.js +26 -1
  95. package/esm/src/model_matchers.d.ts +10 -0
  96. package/esm/src/model_matchers.d.ts.map +1 -0
  97. package/esm/src/model_matchers.js +26 -0
  98. package/esm/src/openai_compat.d.ts +74 -0
  99. package/esm/src/openai_compat.d.ts.map +1 -0
  100. package/esm/src/openai_compat.js +329 -0
  101. package/esm/src/project_config.d.ts +47 -0
  102. package/esm/src/project_config.d.ts.map +1 -0
  103. package/esm/src/project_config.js +134 -0
  104. package/esm/src/providers/codex.d.ts +37 -0
  105. package/esm/src/providers/codex.d.ts.map +1 -0
  106. package/esm/src/providers/codex.js +810 -0
  107. package/esm/src/providers/google.d.ts +18 -0
  108. package/esm/src/providers/google.d.ts.map +1 -0
  109. package/esm/src/providers/google.js +428 -0
  110. package/esm/src/providers/ollama.d.ts +19 -0
  111. package/esm/src/providers/ollama.d.ts.map +1 -0
  112. package/esm/src/providers/ollama.js +789 -0
  113. package/esm/src/providers/openrouter.d.ts +26 -0
  114. package/esm/src/providers/openrouter.d.ts.map +1 -0
  115. package/esm/src/providers/openrouter.js +886 -0
  116. package/esm/src/providers/router.d.ts +19 -0
  117. package/esm/src/providers/router.d.ts.map +1 -0
  118. package/esm/src/providers/router.js +93 -0
  119. package/esm/src/server.d.ts +11 -0
  120. package/esm/src/server.d.ts.map +1 -1
  121. package/esm/src/server.js +3927 -689
  122. package/esm/src/server_feedback_grading_routes.d.ts +32 -0
  123. package/esm/src/server_feedback_grading_routes.d.ts.map +1 -0
  124. package/esm/src/server_feedback_grading_routes.js +305 -0
  125. package/esm/src/server_helpers.d.ts +4 -0
  126. package/esm/src/server_helpers.d.ts.map +1 -0
  127. package/esm/src/server_helpers.js +46 -0
  128. package/esm/src/server_session_store.d.ts +87 -0
  129. package/esm/src/server_session_store.d.ts.map +1 -0
  130. package/esm/src/server_session_store.js +873 -0
  131. package/esm/src/server_types.d.ts +110 -0
  132. package/esm/src/server_types.d.ts.map +1 -0
  133. package/esm/src/server_types.js +1 -0
  134. package/esm/src/server_ui_routes.d.ts +33 -0
  135. package/esm/src/server_ui_routes.d.ts.map +1 -0
  136. package/esm/src/server_ui_routes.js +136 -0
  137. package/esm/src/session_artifacts.d.ts +22 -0
  138. package/esm/src/session_artifacts.d.ts.map +1 -0
  139. package/esm/src/session_artifacts.js +243 -0
  140. package/esm/src/trace.d.ts.map +1 -1
  141. package/esm/src/trace.js +8 -5
  142. package/esm/src/workspace.d.ts +19 -0
  143. package/esm/src/workspace.d.ts.map +1 -0
  144. package/esm/src/workspace.js +162 -0
  145. package/esm/src/workspace_contract.d.ts +78 -0
  146. package/esm/src/workspace_contract.d.ts.map +1 -0
  147. package/esm/src/workspace_contract.js +76 -0
  148. package/package.json +3 -2
  149. package/script/_dnt.polyfills.d.ts +17 -0
  150. package/script/_dnt.polyfills.d.ts.map +1 -1
  151. package/script/_dnt.polyfills.js +123 -0
  152. package/script/deps/jsr.io/@std/collections/1.1.6/deep_merge.d.ts +322 -0
  153. package/script/deps/jsr.io/@std/collections/1.1.6/deep_merge.d.ts.map +1 -0
  154. package/script/deps/jsr.io/@std/collections/1.1.6/deep_merge.js +108 -0
  155. package/script/deps/jsr.io/@std/fs/1.0.23/_create_walk_entry.d.ts +14 -0
  156. package/script/deps/jsr.io/@std/fs/1.0.23/_create_walk_entry.d.ts.map +1 -0
  157. package/script/deps/jsr.io/@std/fs/1.0.23/_create_walk_entry.js +71 -0
  158. package/script/deps/jsr.io/@std/fs/1.0.23/_get_file_info_type.d.ts +13 -0
  159. package/script/deps/jsr.io/@std/fs/1.0.23/_get_file_info_type.d.ts.map +1 -0
  160. package/script/deps/jsr.io/@std/fs/1.0.23/_get_file_info_type.js +21 -0
  161. package/script/deps/jsr.io/@std/fs/1.0.23/_is_same_path.d.ts +10 -0
  162. package/script/deps/jsr.io/@std/fs/1.0.23/_is_same_path.d.ts.map +1 -0
  163. package/script/deps/jsr.io/@std/fs/1.0.23/_is_same_path.js +20 -0
  164. package/script/deps/jsr.io/@std/fs/1.0.23/_is_subdir.d.ts +12 -0
  165. package/script/deps/jsr.io/@std/fs/1.0.23/_is_subdir.d.ts.map +1 -0
  166. package/script/deps/jsr.io/@std/fs/1.0.23/_is_subdir.js +28 -0
  167. package/script/deps/jsr.io/@std/fs/1.0.23/_to_path_string.d.ts +9 -0
  168. package/script/deps/jsr.io/@std/fs/1.0.23/_to_path_string.d.ts.map +1 -0
  169. package/script/deps/jsr.io/@std/fs/1.0.23/_to_path_string.js +16 -0
  170. package/script/deps/jsr.io/@std/fs/1.0.23/copy.d.ts +117 -0
  171. package/script/deps/jsr.io/@std/fs/1.0.23/copy.d.ts.map +1 -0
  172. package/script/deps/jsr.io/@std/fs/1.0.23/copy.js +350 -0
  173. package/script/deps/jsr.io/@std/fs/1.0.23/empty_dir.d.ts +48 -0
  174. package/script/deps/jsr.io/@std/fs/1.0.23/empty_dir.d.ts.map +1 -0
  175. package/script/deps/jsr.io/@std/fs/1.0.23/empty_dir.js +124 -0
  176. package/script/deps/jsr.io/@std/fs/1.0.23/ensure_dir.d.ts +49 -0
  177. package/script/deps/jsr.io/@std/fs/1.0.23/ensure_dir.d.ts.map +1 -0
  178. package/script/deps/jsr.io/@std/fs/1.0.23/ensure_dir.js +139 -0
  179. package/script/deps/jsr.io/@std/fs/1.0.23/ensure_file.d.ts +47 -0
  180. package/script/deps/jsr.io/@std/fs/1.0.23/ensure_file.d.ts.map +1 -0
  181. package/script/deps/jsr.io/@std/fs/1.0.23/ensure_file.js +127 -0
  182. package/script/deps/jsr.io/@std/fs/1.0.23/ensure_link.d.ts +49 -0
  183. package/script/deps/jsr.io/@std/fs/1.0.23/ensure_link.d.ts.map +1 -0
  184. package/script/deps/jsr.io/@std/fs/1.0.23/ensure_link.js +98 -0
  185. package/script/deps/jsr.io/@std/fs/1.0.23/ensure_symlink.d.ts +70 -0
  186. package/script/deps/jsr.io/@std/fs/1.0.23/ensure_symlink.d.ts.map +1 -0
  187. package/script/deps/jsr.io/@std/fs/1.0.23/ensure_symlink.js +193 -0
  188. package/script/deps/jsr.io/@std/fs/1.0.23/eol.d.ts +52 -0
  189. package/script/deps/jsr.io/@std/fs/1.0.23/eol.d.ts.map +1 -0
  190. package/script/deps/jsr.io/@std/fs/1.0.23/eol.js +105 -0
  191. package/script/deps/jsr.io/@std/fs/1.0.23/exists.d.ts +218 -0
  192. package/script/deps/jsr.io/@std/fs/1.0.23/exists.d.ts.map +1 -0
  193. package/script/deps/jsr.io/@std/fs/1.0.23/exists.js +308 -0
  194. package/script/deps/jsr.io/@std/fs/1.0.23/expand_glob.d.ts +267 -0
  195. package/script/deps/jsr.io/@std/fs/1.0.23/expand_glob.d.ts.map +1 -0
  196. package/script/deps/jsr.io/@std/fs/1.0.23/expand_glob.js +479 -0
  197. package/script/deps/jsr.io/@std/fs/1.0.23/mod.d.ts +29 -0
  198. package/script/deps/jsr.io/@std/fs/1.0.23/mod.d.ts.map +1 -0
  199. package/script/deps/jsr.io/@std/fs/1.0.23/mod.js +45 -0
  200. package/script/deps/jsr.io/@std/fs/1.0.23/move.d.ts +86 -0
  201. package/script/deps/jsr.io/@std/fs/1.0.23/move.d.ts.map +1 -0
  202. package/script/deps/jsr.io/@std/fs/1.0.23/move.js +179 -0
  203. package/script/deps/jsr.io/@std/fs/1.0.23/walk.d.ts +777 -0
  204. package/script/deps/jsr.io/@std/fs/1.0.23/walk.d.ts.map +1 -0
  205. package/script/deps/jsr.io/@std/fs/1.0.23/walk.js +883 -0
  206. package/script/deps/jsr.io/@std/json/1.0.3/types.d.ts +7 -0
  207. package/script/deps/jsr.io/@std/json/1.0.3/types.d.ts.map +1 -0
  208. package/script/deps/jsr.io/@std/json/1.0.3/types.js +4 -0
  209. package/script/deps/jsr.io/@std/jsonc/1.0.2/mod.d.ts +20 -0
  210. package/script/deps/jsr.io/@std/jsonc/1.0.2/mod.d.ts.map +1 -0
  211. package/script/deps/jsr.io/@std/jsonc/1.0.2/mod.js +37 -0
  212. package/script/deps/jsr.io/@std/jsonc/1.0.2/parse.d.ts +21 -0
  213. package/script/deps/jsr.io/@std/jsonc/1.0.2/parse.d.ts.map +1 -0
  214. package/script/deps/jsr.io/@std/jsonc/1.0.2/parse.js +323 -0
  215. package/script/deps/jsr.io/@std/path/1.1.4/constants.d.ts +1 -1
  216. package/script/deps/jsr.io/@std/toml/1.0.11/_parser.d.ts +93 -0
  217. package/script/deps/jsr.io/@std/toml/1.0.11/_parser.d.ts.map +1 -0
  218. package/script/deps/jsr.io/@std/toml/1.0.11/_parser.js +781 -0
  219. package/script/deps/jsr.io/@std/toml/1.0.11/mod.d.ts +109 -0
  220. package/script/deps/jsr.io/@std/toml/1.0.11/mod.d.ts.map +1 -0
  221. package/script/deps/jsr.io/@std/toml/1.0.11/mod.js +126 -0
  222. package/script/deps/jsr.io/@std/toml/1.0.11/parse.d.ts +21 -0
  223. package/script/deps/jsr.io/@std/toml/1.0.11/parse.d.ts.map +1 -0
  224. package/script/deps/jsr.io/@std/toml/1.0.11/parse.js +28 -0
  225. package/script/deps/jsr.io/@std/toml/1.0.11/stringify.d.ts +35 -0
  226. package/script/deps/jsr.io/@std/toml/1.0.11/stringify.d.ts.map +1 -0
  227. package/script/deps/jsr.io/@std/toml/1.0.11/stringify.js +286 -0
  228. package/script/gambit/simulator-ui/dist/bundle.js +12670 -5471
  229. package/script/gambit/simulator-ui/dist/bundle.js.map +4 -4
  230. package/script/gambit/simulator-ui/dist/favicon.ico +0 -0
  231. package/script/mod.d.ts +21 -7
  232. package/script/mod.d.ts.map +1 -1
  233. package/script/mod.js +22 -7
  234. package/script/src/cli_utils.d.ts +1 -0
  235. package/script/src/cli_utils.d.ts.map +1 -1
  236. package/script/src/cli_utils.js +52 -3
  237. package/script/src/default_runtime.d.ts +46 -0
  238. package/script/src/default_runtime.d.ts.map +1 -0
  239. package/script/src/default_runtime.js +452 -0
  240. package/script/src/durable_streams.js +26 -1
  241. package/script/src/model_matchers.d.ts +10 -0
  242. package/script/src/model_matchers.d.ts.map +1 -0
  243. package/script/src/model_matchers.js +29 -0
  244. package/script/src/openai_compat.d.ts +74 -0
  245. package/script/src/openai_compat.d.ts.map +1 -0
  246. package/script/src/openai_compat.js +366 -0
  247. package/script/src/project_config.d.ts +47 -0
  248. package/script/src/project_config.d.ts.map +1 -0
  249. package/script/src/project_config.js +173 -0
  250. package/script/src/providers/codex.d.ts +37 -0
  251. package/script/src/providers/codex.d.ts.map +1 -0
  252. package/script/src/providers/codex.js +850 -0
  253. package/script/src/providers/google.d.ts +18 -0
  254. package/script/src/providers/google.d.ts.map +1 -0
  255. package/script/src/providers/google.js +435 -0
  256. package/script/src/providers/ollama.d.ts +19 -0
  257. package/script/src/providers/ollama.d.ts.map +1 -0
  258. package/script/src/providers/ollama.js +831 -0
  259. package/script/src/providers/openrouter.d.ts +26 -0
  260. package/script/src/providers/openrouter.d.ts.map +1 -0
  261. package/script/src/providers/openrouter.js +926 -0
  262. package/script/src/providers/router.d.ts +19 -0
  263. package/script/src/providers/router.d.ts.map +1 -0
  264. package/script/src/providers/router.js +96 -0
  265. package/script/src/server.d.ts +11 -0
  266. package/script/src/server.d.ts.map +1 -1
  267. package/script/src/server.js +3931 -693
  268. package/script/src/server_feedback_grading_routes.d.ts +32 -0
  269. package/script/src/server_feedback_grading_routes.d.ts.map +1 -0
  270. package/script/src/server_feedback_grading_routes.js +343 -0
  271. package/script/src/server_helpers.d.ts +4 -0
  272. package/script/src/server_helpers.d.ts.map +1 -0
  273. package/script/src/server_helpers.js +84 -0
  274. package/script/src/server_session_store.d.ts +87 -0
  275. package/script/src/server_session_store.d.ts.map +1 -0
  276. package/script/src/server_session_store.js +910 -0
  277. package/script/src/server_types.d.ts +110 -0
  278. package/script/src/server_types.d.ts.map +1 -0
  279. package/script/src/server_types.js +2 -0
  280. package/script/src/server_ui_routes.d.ts +33 -0
  281. package/script/src/server_ui_routes.d.ts.map +1 -0
  282. package/script/src/server_ui_routes.js +173 -0
  283. package/script/src/session_artifacts.d.ts +22 -0
  284. package/script/src/session_artifacts.d.ts.map +1 -0
  285. package/script/src/session_artifacts.js +279 -0
  286. package/script/src/trace.d.ts.map +1 -1
  287. package/script/src/trace.js +8 -5
  288. package/script/src/workspace.d.ts +19 -0
  289. package/script/src/workspace.d.ts.map +1 -0
  290. package/script/src/workspace.js +199 -0
  291. package/script/src/workspace_contract.d.ts +78 -0
  292. package/script/src/workspace_contract.d.ts.map +1 -0
  293. package/script/src/workspace_contract.js +84 -0
@@ -0,0 +1,18 @@
1
+ import type { ModelProvider } from "@bolt-foundry/gambit-core";
2
+ export declare const GOOGLE_PREFIX = "google/";
3
+ type OpenAIClient = {
4
+ chat: {
5
+ completions: {
6
+ create: (params: unknown, options?: {
7
+ signal?: AbortSignal;
8
+ }) => Promise<unknown>;
9
+ };
10
+ };
11
+ };
12
+ export declare function createGoogleProvider(opts: {
13
+ apiKey: string;
14
+ baseURL?: string;
15
+ client?: OpenAIClient;
16
+ }): ModelProvider;
17
+ export {};
18
+ //# sourceMappingURL=google.d.ts.map
@@ -0,0 +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,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"}
@@ -0,0 +1,428 @@
1
+ import OpenAI from "openai";
2
+ export const GOOGLE_PREFIX = "google/";
3
+ const DEFAULT_GOOGLE_BASE_URL = "https://generativelanguage.googleapis.com/v1beta/openai/";
4
+ function safeJson(input) {
5
+ try {
6
+ const parsed = JSON.parse(input);
7
+ if (parsed && typeof parsed === "object") {
8
+ return parsed;
9
+ }
10
+ }
11
+ catch {
12
+ // fall through
13
+ }
14
+ return {};
15
+ }
16
+ function extractContent(content) {
17
+ if (typeof content === "string")
18
+ return content;
19
+ if (Array.isArray(content)) {
20
+ return content
21
+ .map((part) => (typeof part === "string" ? part : part.text ?? ""))
22
+ .join("");
23
+ }
24
+ return "";
25
+ }
26
+ function normalizeMessage(content) {
27
+ const toolCalls = content.tool_calls ??
28
+ undefined;
29
+ return {
30
+ role: content.role,
31
+ content: extractContent(content.content),
32
+ name: content.name,
33
+ tool_call_id: content.tool_call_id,
34
+ tool_calls: toolCalls && toolCalls.length > 0 ? toolCalls : undefined,
35
+ };
36
+ }
37
+ function toToolChoice(choice) {
38
+ if (!choice)
39
+ return undefined;
40
+ if (choice === "none" || choice === "auto" || choice === "required") {
41
+ return choice;
42
+ }
43
+ if (choice.type === "allowed_tools") {
44
+ return (choice.mode ??
45
+ "auto");
46
+ }
47
+ return { type: "function", function: { name: choice.function.name } };
48
+ }
49
+ function responseItemsToChatMessages(items, instructions) {
50
+ const messages = [];
51
+ if (instructions) {
52
+ messages.push({ role: "system", content: instructions });
53
+ }
54
+ for (const item of items) {
55
+ if (item.type === "message") {
56
+ const content = item.content
57
+ .map((part) => part.text)
58
+ .join("");
59
+ messages.push({ role: item.role, content });
60
+ continue;
61
+ }
62
+ if (item.type === "function_call") {
63
+ messages.push({
64
+ role: "assistant",
65
+ content: null,
66
+ tool_calls: [{
67
+ id: item.call_id,
68
+ type: "function",
69
+ function: { name: item.name, arguments: item.arguments },
70
+ }],
71
+ });
72
+ continue;
73
+ }
74
+ if (item.type === "function_call_output") {
75
+ messages.push({
76
+ role: "tool",
77
+ content: item.output,
78
+ tool_call_id: item.call_id,
79
+ });
80
+ }
81
+ }
82
+ return messages;
83
+ }
84
+ function responseItemsFromChatMessage(message, toolCalls) {
85
+ const output = [];
86
+ if (typeof message.content === "string" && message.content.length > 0) {
87
+ output.push({
88
+ type: "message",
89
+ role: "assistant",
90
+ content: [{ type: "output_text", text: message.content }],
91
+ });
92
+ }
93
+ if (toolCalls) {
94
+ for (const call of toolCalls) {
95
+ output.push({
96
+ type: "function_call",
97
+ call_id: call.id,
98
+ name: call.name,
99
+ arguments: JSON.stringify(call.args),
100
+ });
101
+ }
102
+ }
103
+ else if (message.tool_calls) {
104
+ for (const call of message.tool_calls) {
105
+ output.push({
106
+ type: "function_call",
107
+ call_id: call.id,
108
+ name: call.function.name,
109
+ arguments: call.function.arguments,
110
+ });
111
+ }
112
+ }
113
+ return output;
114
+ }
115
+ function mapChatUsage(usage) {
116
+ if (!usage)
117
+ return undefined;
118
+ return {
119
+ promptTokens: usage.prompt_tokens ?? 0,
120
+ completionTokens: usage.completion_tokens ?? 0,
121
+ totalTokens: usage.total_tokens ?? 0,
122
+ };
123
+ }
124
+ export function createGoogleProvider(opts) {
125
+ const client = (opts.client ??
126
+ new OpenAI({
127
+ apiKey: opts.apiKey,
128
+ baseURL: opts.baseURL ?? DEFAULT_GOOGLE_BASE_URL,
129
+ }));
130
+ return {
131
+ async responses(input) {
132
+ const request = input.request;
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
+ }
148
+ if (request.max_output_tokens !== undefined &&
149
+ params.max_tokens === undefined) {
150
+ params.max_tokens = request.max_output_tokens;
151
+ }
152
+ const messages = responseItemsToChatMessages(request.input, request.instructions);
153
+ const toolChoice = toToolChoice(request.tool_choice);
154
+ if (request.stream) {
155
+ let sequence = 0;
156
+ const stream = await client.chat.completions.create({
157
+ model: request.model,
158
+ messages: messages,
159
+ tools: request.tools,
160
+ tool_choice: toolChoice ?? "auto",
161
+ stream: true,
162
+ ...params,
163
+ }, input.signal ? { signal: input.signal } : undefined);
164
+ const contentParts = [];
165
+ const toolCallMap = new Map();
166
+ let responseId;
167
+ let created;
168
+ let emittedCreated = false;
169
+ for await (const chunk of stream) {
170
+ responseId = responseId ?? chunk.id;
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
+ }
189
+ const choice = chunk.choices[0];
190
+ const delta = choice.delta;
191
+ if (typeof delta.content === "string") {
192
+ contentParts.push(delta.content);
193
+ input.onStreamEvent?.({
194
+ type: "response.output_text.delta",
195
+ output_index: 0,
196
+ delta: delta.content,
197
+ sequence_number: sequence++,
198
+ });
199
+ }
200
+ else if (Array.isArray(delta.content)) {
201
+ const text = delta.content
202
+ .map((part) => (typeof part === "string" ? part : part.text ?? ""))
203
+ .join("");
204
+ if (text) {
205
+ contentParts.push(text);
206
+ input.onStreamEvent?.({
207
+ type: "response.output_text.delta",
208
+ output_index: 0,
209
+ delta: text,
210
+ sequence_number: sequence++,
211
+ });
212
+ }
213
+ }
214
+ for (const tc of delta.tool_calls ?? []) {
215
+ const idx = tc.index ?? 0;
216
+ const existing = toolCallMap.get(idx) ??
217
+ {
218
+ id: tc.id,
219
+ function: { name: tc.function?.name, arguments: "" },
220
+ };
221
+ if (tc.id)
222
+ existing.id = tc.id;
223
+ if (tc.function?.name)
224
+ existing.function.name = tc.function.name;
225
+ if (tc.function?.arguments) {
226
+ existing.function.arguments += tc.function.arguments;
227
+ }
228
+ toolCallMap.set(idx, existing);
229
+ }
230
+ }
231
+ const tool_calls = Array.from(toolCallMap.values()).map((tc) => ({
232
+ id: tc.id ?? crypto.randomUUID().replace(/-/g, "").slice(0, 24),
233
+ type: "function",
234
+ function: {
235
+ name: tc.function.name ?? "",
236
+ arguments: tc.function.arguments,
237
+ },
238
+ }));
239
+ const message = normalizeMessage({
240
+ role: "assistant",
241
+ content: contentParts.length ? contentParts.join("") : null,
242
+ tool_calls,
243
+ });
244
+ const toolCalls = tool_calls.length > 0
245
+ ? tool_calls.map((tc) => ({
246
+ id: tc.id,
247
+ name: tc.function.name,
248
+ args: safeJson(tc.function.arguments),
249
+ }))
250
+ : undefined;
251
+ const output = responseItemsFromChatMessage(message, toolCalls);
252
+ const response = {
253
+ id: responseId ?? crypto.randomUUID(),
254
+ object: "response",
255
+ model: request.model,
256
+ created_at: created,
257
+ created,
258
+ status: "completed",
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,
275
+ };
276
+ input.onStreamEvent?.({
277
+ type: "response.completed",
278
+ sequence_number: sequence++,
279
+ response,
280
+ });
281
+ return response;
282
+ }
283
+ const response = await client.chat.completions.create({
284
+ model: request.model,
285
+ messages: messages,
286
+ tools: request.tools,
287
+ tool_choice: toolChoice ?? "auto",
288
+ stream: false,
289
+ ...params,
290
+ }, input.signal ? { signal: input.signal } : undefined);
291
+ const choice = response.choices[0];
292
+ const normalizedMessage = normalizeMessage(choice.message);
293
+ const toolCalls = choice.message.tool_calls?.map((tc) => ({
294
+ id: tc.id,
295
+ name: tc.function.name,
296
+ args: safeJson(tc.function.arguments),
297
+ }));
298
+ return {
299
+ id: response.id,
300
+ object: "response",
301
+ model: response.model,
302
+ created_at: response.created,
303
+ created: response.created,
304
+ status: "completed",
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,
321
+ usage: mapChatUsage(response.usage),
322
+ };
323
+ },
324
+ async chat(input) {
325
+ const params = input.params ?? {};
326
+ if (input.stream) {
327
+ const stream = await client.chat.completions.create({
328
+ model: input.model,
329
+ messages: input.messages,
330
+ tools: input
331
+ .tools,
332
+ tool_choice: "auto",
333
+ stream: true,
334
+ ...params,
335
+ }, input.signal ? { signal: input.signal } : undefined);
336
+ let finishReason = null;
337
+ const contentParts = [];
338
+ const toolCallMap = new Map();
339
+ for await (const chunk of stream) {
340
+ const choice = chunk.choices[0];
341
+ const fr = choice.finish_reason;
342
+ if (fr === "stop" || fr === "tool_calls" || fr === "length" ||
343
+ fr === null) {
344
+ finishReason = fr ?? finishReason;
345
+ }
346
+ const delta = choice.delta;
347
+ if (typeof delta.content === "string") {
348
+ contentParts.push(delta.content);
349
+ input.onStreamText?.(delta.content);
350
+ }
351
+ else if (Array.isArray(delta.content)) {
352
+ const chunkStr = delta.content
353
+ .map((c) => (typeof c === "string" ? c : c.text ?? ""))
354
+ .join("");
355
+ if (chunkStr) {
356
+ contentParts.push(chunkStr);
357
+ input.onStreamText?.(chunkStr);
358
+ }
359
+ }
360
+ for (const tc of delta.tool_calls ?? []) {
361
+ const idx = tc.index ?? 0;
362
+ const existing = toolCallMap.get(idx) ??
363
+ {
364
+ id: tc.id,
365
+ function: { name: tc.function?.name, arguments: "" },
366
+ };
367
+ if (tc.id)
368
+ existing.id = tc.id;
369
+ if (tc.function?.name)
370
+ existing.function.name = tc.function.name;
371
+ if (tc.function?.arguments) {
372
+ existing.function.arguments += tc.function.arguments;
373
+ }
374
+ toolCallMap.set(idx, existing);
375
+ }
376
+ }
377
+ const tool_calls = Array.from(toolCallMap.values()).map((tc) => ({
378
+ id: tc.id ?? crypto.randomUUID().replace(/-/g, "").slice(0, 24),
379
+ type: "function",
380
+ function: {
381
+ name: tc.function.name ?? "",
382
+ arguments: tc.function.arguments,
383
+ },
384
+ }));
385
+ const message = normalizeMessage({
386
+ role: "assistant",
387
+ content: contentParts.length ? contentParts.join("") : null,
388
+ tool_calls,
389
+ });
390
+ const toolCalls = tool_calls.length > 0
391
+ ? tool_calls.map((tc) => ({
392
+ id: tc.id,
393
+ name: tc.function.name,
394
+ args: safeJson(tc.function.arguments),
395
+ }))
396
+ : undefined;
397
+ return {
398
+ message,
399
+ finishReason: finishReason ?? "stop",
400
+ toolCalls,
401
+ };
402
+ }
403
+ const response = await client.chat.completions.create({
404
+ model: input.model,
405
+ messages: input
406
+ .messages,
407
+ tools: input
408
+ .tools,
409
+ tool_choice: "auto",
410
+ stream: false,
411
+ ...params,
412
+ }, input.signal ? { signal: input.signal } : undefined);
413
+ const choice = response.choices[0];
414
+ const message = normalizeMessage(choice.message);
415
+ const toolCalls = choice.message.tool_calls?.map((tc) => ({
416
+ id: tc.id,
417
+ name: tc.function.name,
418
+ args: safeJson(tc.function.arguments),
419
+ }));
420
+ return {
421
+ message,
422
+ finishReason: (choice.finish_reason ?? "stop"),
423
+ toolCalls,
424
+ usage: mapChatUsage(response.usage),
425
+ };
426
+ },
427
+ };
428
+ }
@@ -0,0 +1,19 @@
1
+ import type { ModelProvider } from "@bolt-foundry/gambit-core";
2
+ export declare const OLLAMA_PREFIX = "ollama/";
3
+ export declare const DEFAULT_OLLAMA_BASE_URL = "http://localhost:11434/v1";
4
+ type OpenAIClient = {
5
+ responses: {
6
+ create: (params: unknown, options?: {
7
+ signal?: AbortSignal;
8
+ }) => Promise<unknown>;
9
+ };
10
+ };
11
+ export declare function fetchOllamaTags(baseURL: string | undefined): Promise<Set<string>>;
12
+ export declare function ensureOllamaModel(model: string, baseURL: string | undefined): Promise<void>;
13
+ export declare function createOllamaProvider(opts: {
14
+ apiKey?: string;
15
+ baseURL?: string;
16
+ client?: OpenAIClient;
17
+ }): ModelProvider;
18
+ export {};
19
+ //# sourceMappingURL=ollama.d.ts.map
@@ -0,0 +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,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"}