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

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 +110 -2
  2. package/README.md +108 -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 +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 +12085 -5691
  82. package/esm/gambit/simulator-ui/dist/bundle.js.map +4 -4
  83. package/esm/gambit/simulator-ui/dist/favicon.ico +0 -0
  84. package/esm/mod.d.ts +21 -7
  85. package/esm/mod.d.ts.map +1 -1
  86. package/esm/mod.js +14 -4
  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 +52 -4
  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 +74 -0
  98. package/esm/src/openai_compat.d.ts.map +1 -0
  99. package/esm/src/openai_compat.js +329 -0
  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 +810 -0
  106. package/esm/src/providers/google.d.ts +18 -0
  107. package/esm/src/providers/google.d.ts.map +1 -0
  108. package/esm/src/providers/google.js +428 -0
  109. package/esm/src/providers/ollama.d.ts +19 -0
  110. package/esm/src/providers/ollama.d.ts.map +1 -0
  111. package/esm/src/providers/ollama.js +732 -0
  112. package/esm/src/providers/openrouter.d.ts +26 -0
  113. package/esm/src/providers/openrouter.d.ts.map +1 -0
  114. package/esm/src/providers/openrouter.js +829 -0
  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 +11 -0
  119. package/esm/src/server.d.ts.map +1 -1
  120. package/esm/src/server.js +3764 -647
  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 +873 -0
  130. package/esm/src/server_types.d.ts +110 -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 +135 -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 +8 -5
  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 +164 -0
  144. package/esm/src/workspace_contract.d.ts +76 -0
  145. package/esm/src/workspace_contract.d.ts.map +1 -0
  146. package/esm/src/workspace_contract.js +74 -0
  147. package/package.json +3 -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 +122 -0
  151. package/script/deps/jsr.io/@std/collections/1.1.5/deep_merge.d.ts +322 -0
  152. package/script/deps/jsr.io/@std/collections/1.1.5/deep_merge.d.ts.map +1 -0
  153. package/script/deps/jsr.io/@std/collections/1.1.5/deep_merge.js +108 -0
  154. package/script/deps/jsr.io/@std/fs/1.0.22/_create_walk_entry.d.ts +14 -0
  155. package/script/deps/jsr.io/@std/fs/1.0.22/_create_walk_entry.d.ts.map +1 -0
  156. package/script/deps/jsr.io/@std/fs/1.0.22/_create_walk_entry.js +71 -0
  157. package/script/deps/jsr.io/@std/fs/1.0.22/_get_file_info_type.d.ts +13 -0
  158. package/script/deps/jsr.io/@std/fs/1.0.22/_get_file_info_type.d.ts.map +1 -0
  159. package/script/deps/jsr.io/@std/fs/1.0.22/_get_file_info_type.js +21 -0
  160. package/script/deps/jsr.io/@std/fs/1.0.22/_is_same_path.d.ts +10 -0
  161. package/script/deps/jsr.io/@std/fs/1.0.22/_is_same_path.d.ts.map +1 -0
  162. package/script/deps/jsr.io/@std/fs/1.0.22/_is_same_path.js +20 -0
  163. package/script/deps/jsr.io/@std/fs/1.0.22/_is_subdir.d.ts +12 -0
  164. package/script/deps/jsr.io/@std/fs/1.0.22/_is_subdir.d.ts.map +1 -0
  165. package/script/deps/jsr.io/@std/fs/1.0.22/_is_subdir.js +28 -0
  166. package/script/deps/jsr.io/@std/fs/1.0.22/_to_path_string.d.ts +9 -0
  167. package/script/deps/jsr.io/@std/fs/1.0.22/_to_path_string.d.ts.map +1 -0
  168. package/script/deps/jsr.io/@std/fs/1.0.22/_to_path_string.js +16 -0
  169. package/script/deps/jsr.io/@std/fs/1.0.22/copy.d.ts +117 -0
  170. package/script/deps/jsr.io/@std/fs/1.0.22/copy.d.ts.map +1 -0
  171. package/script/deps/jsr.io/@std/fs/1.0.22/copy.js +350 -0
  172. package/script/deps/jsr.io/@std/fs/1.0.22/empty_dir.d.ts +48 -0
  173. package/script/deps/jsr.io/@std/fs/1.0.22/empty_dir.d.ts.map +1 -0
  174. package/script/deps/jsr.io/@std/fs/1.0.22/empty_dir.js +124 -0
  175. package/script/deps/jsr.io/@std/fs/1.0.22/ensure_dir.d.ts +49 -0
  176. package/script/deps/jsr.io/@std/fs/1.0.22/ensure_dir.d.ts.map +1 -0
  177. package/script/deps/jsr.io/@std/fs/1.0.22/ensure_dir.js +139 -0
  178. package/script/deps/jsr.io/@std/fs/1.0.22/ensure_file.d.ts +47 -0
  179. package/script/deps/jsr.io/@std/fs/1.0.22/ensure_file.d.ts.map +1 -0
  180. package/script/deps/jsr.io/@std/fs/1.0.22/ensure_file.js +127 -0
  181. package/script/deps/jsr.io/@std/fs/1.0.22/ensure_link.d.ts +49 -0
  182. package/script/deps/jsr.io/@std/fs/1.0.22/ensure_link.d.ts.map +1 -0
  183. package/script/deps/jsr.io/@std/fs/1.0.22/ensure_link.js +98 -0
  184. package/script/deps/jsr.io/@std/fs/1.0.22/ensure_symlink.d.ts +70 -0
  185. package/script/deps/jsr.io/@std/fs/1.0.22/ensure_symlink.d.ts.map +1 -0
  186. package/script/deps/jsr.io/@std/fs/1.0.22/ensure_symlink.js +193 -0
  187. package/script/deps/jsr.io/@std/fs/1.0.22/eol.d.ts +52 -0
  188. package/script/deps/jsr.io/@std/fs/1.0.22/eol.d.ts.map +1 -0
  189. package/script/deps/jsr.io/@std/fs/1.0.22/eol.js +105 -0
  190. package/script/deps/jsr.io/@std/fs/1.0.22/exists.d.ts +218 -0
  191. package/script/deps/jsr.io/@std/fs/1.0.22/exists.d.ts.map +1 -0
  192. package/script/deps/jsr.io/@std/fs/1.0.22/exists.js +308 -0
  193. package/script/deps/jsr.io/@std/fs/1.0.22/expand_glob.d.ts +267 -0
  194. package/script/deps/jsr.io/@std/fs/1.0.22/expand_glob.d.ts.map +1 -0
  195. package/script/deps/jsr.io/@std/fs/1.0.22/expand_glob.js +479 -0
  196. package/script/deps/jsr.io/@std/fs/1.0.22/mod.d.ts +29 -0
  197. package/script/deps/jsr.io/@std/fs/1.0.22/mod.d.ts.map +1 -0
  198. package/script/deps/jsr.io/@std/fs/1.0.22/mod.js +45 -0
  199. package/script/deps/jsr.io/@std/fs/1.0.22/move.d.ts +86 -0
  200. package/script/deps/jsr.io/@std/fs/1.0.22/move.d.ts.map +1 -0
  201. package/script/deps/jsr.io/@std/fs/1.0.22/move.js +179 -0
  202. package/script/deps/jsr.io/@std/fs/1.0.22/walk.d.ts +777 -0
  203. package/script/deps/jsr.io/@std/fs/1.0.22/walk.d.ts.map +1 -0
  204. package/script/deps/jsr.io/@std/fs/1.0.22/walk.js +883 -0
  205. package/script/deps/jsr.io/@std/json/1.0.2/types.d.ts +5 -0
  206. package/script/deps/jsr.io/@std/json/1.0.2/types.d.ts.map +1 -0
  207. package/script/deps/jsr.io/@std/json/1.0.2/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/toml/1.0.11/_parser.d.ts +93 -0
  215. package/script/deps/jsr.io/@std/toml/1.0.11/_parser.d.ts.map +1 -0
  216. package/script/deps/jsr.io/@std/toml/1.0.11/_parser.js +781 -0
  217. package/script/deps/jsr.io/@std/toml/1.0.11/mod.d.ts +109 -0
  218. package/script/deps/jsr.io/@std/toml/1.0.11/mod.d.ts.map +1 -0
  219. package/script/deps/jsr.io/@std/toml/1.0.11/mod.js +126 -0
  220. package/script/deps/jsr.io/@std/toml/1.0.11/parse.d.ts +21 -0
  221. package/script/deps/jsr.io/@std/toml/1.0.11/parse.d.ts.map +1 -0
  222. package/script/deps/jsr.io/@std/toml/1.0.11/parse.js +28 -0
  223. package/script/deps/jsr.io/@std/toml/1.0.11/stringify.d.ts +35 -0
  224. package/script/deps/jsr.io/@std/toml/1.0.11/stringify.d.ts.map +1 -0
  225. package/script/deps/jsr.io/@std/toml/1.0.11/stringify.js +286 -0
  226. package/script/gambit/simulator-ui/dist/bundle.js +12085 -5691
  227. package/script/gambit/simulator-ui/dist/bundle.js.map +4 -4
  228. package/script/gambit/simulator-ui/dist/favicon.ico +0 -0
  229. package/script/mod.d.ts +21 -7
  230. package/script/mod.d.ts.map +1 -1
  231. package/script/mod.js +22 -7
  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 +52 -3
  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 +74 -0
  243. package/script/src/openai_compat.d.ts.map +1 -0
  244. package/script/src/openai_compat.js +366 -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 +850 -0
  251. package/script/src/providers/google.d.ts +18 -0
  252. package/script/src/providers/google.d.ts.map +1 -0
  253. package/script/src/providers/google.js +435 -0
  254. package/script/src/providers/ollama.d.ts +19 -0
  255. package/script/src/providers/ollama.d.ts.map +1 -0
  256. package/script/src/providers/ollama.js +774 -0
  257. package/script/src/providers/openrouter.d.ts +26 -0
  258. package/script/src/providers/openrouter.d.ts.map +1 -0
  259. package/script/src/providers/openrouter.js +869 -0
  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 +11 -0
  264. package/script/src/server.d.ts.map +1 -1
  265. package/script/src/server.js +3768 -651
  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 +910 -0
  275. package/script/src/server_types.d.ts +110 -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 +172 -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 +8 -5
  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 +201 -0
  289. package/script/src/workspace_contract.d.ts +76 -0
  290. package/script/src/workspace_contract.d.ts.map +1 -0
  291. package/script/src/workspace_contract.js +82 -0
@@ -0,0 +1,452 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.createDefaultedRuntime = createDefaultedRuntime;
37
+ exports.runDeck = runDeck;
38
+ const dntShim = __importStar(require("../_dnt.shims.js"));
39
+ const gambit_core_1 = require("@bolt-foundry/gambit-core");
40
+ const model_matchers_js_1 = require("./model_matchers.js");
41
+ const session_artifacts_js_1 = require("./session_artifacts.js");
42
+ const project_config_js_1 = require("./project_config.js");
43
+ const codex_js_1 = require("./providers/codex.js");
44
+ const google_js_1 = require("./providers/google.js");
45
+ const ollama_js_1 = require("./providers/ollama.js");
46
+ const openrouter_js_1 = require("./providers/openrouter.js");
47
+ const router_js_1 = require("./providers/router.js");
48
+ const DEFAULT_OPENROUTER_BASE_URL = "https://openrouter.ai/api/v1";
49
+ function mergeParams(aliasParams, baseParams) {
50
+ if (aliasParams && baseParams) {
51
+ return { ...aliasParams, ...baseParams };
52
+ }
53
+ return baseParams ?? aliasParams;
54
+ }
55
+ function parseFallbackProviderFromConfig(fallbackProviderRaw, logger) {
56
+ if (typeof fallbackProviderRaw !== "string") {
57
+ return undefined;
58
+ }
59
+ const normalized = fallbackProviderRaw.trim().toLowerCase();
60
+ if (normalized === "none") {
61
+ return null;
62
+ }
63
+ if (normalized === "codex") {
64
+ throw new Error('[gambit] providers.fallback "codex" is no longer supported. Use "codex-cli" or "none".');
65
+ }
66
+ if (normalized === "openrouter" || normalized === "ollama" ||
67
+ normalized === "google" || normalized === "codex-cli") {
68
+ return normalized;
69
+ }
70
+ if (normalized.length > 0) {
71
+ logger.warn(`[gambit] Unknown providers.fallback "${fallbackProviderRaw}" in gambit.toml; using default fallback.`);
72
+ }
73
+ return undefined;
74
+ }
75
+ function resolveConfiguredFallbackProvider(opts) {
76
+ if (opts.runtimeOverride !== undefined) {
77
+ return opts.runtimeOverride;
78
+ }
79
+ return parseFallbackProviderFromConfig(opts.projectConfig?.providers?.fallback, opts.logger);
80
+ }
81
+ function resolveDefaultResponsesMode() {
82
+ const chatFallback = dntShim.Deno.env.get("GAMBIT_CHAT_FALLBACK") === "1";
83
+ return !chatFallback && dntShim.Deno.env.get("GAMBIT_RESPONSES_MODE") !== "0";
84
+ }
85
+ function resolveSessionArtifactsConfig(opts) {
86
+ if (opts.runConfig === false)
87
+ return undefined;
88
+ if (!opts.runtimeConfig && !opts.runConfig)
89
+ return undefined;
90
+ const merged = {
91
+ ...(opts.runtimeConfig ?? {}),
92
+ ...(opts.runConfig ?? {}),
93
+ };
94
+ if (typeof merged.rootDir !== "string" || !merged.rootDir.trim()) {
95
+ throw new Error("sessionArtifacts.rootDir is required when persistence is enabled.");
96
+ }
97
+ return {
98
+ rootDir: merged.rootDir,
99
+ sessionId: merged.sessionId,
100
+ continueSession: merged.continueSession,
101
+ };
102
+ }
103
+ function buildDefaultModelProvider(opts) {
104
+ const openRouterApiKey = dntShim.Deno.env.get("OPENROUTER_API_KEY")?.trim();
105
+ const googleApiKey = (dntShim.Deno.env.get("GOOGLE_API_KEY") ??
106
+ dntShim.Deno.env.get("GEMINI_API_KEY"))?.trim();
107
+ const openRouterBaseURL = dntShim.Deno.env.get("OPENROUTER_BASE_URL") ??
108
+ DEFAULT_OPENROUTER_BASE_URL;
109
+ const ollamaBaseURL = dntShim.Deno.env.get("OLLAMA_BASE_URL") ?? undefined;
110
+ const googleBaseURL = dntShim.Deno.env.get("GOOGLE_BASE_URL") ??
111
+ dntShim.Deno.env.get("GEMINI_BASE_URL") ??
112
+ undefined;
113
+ const openRouterProvider = openRouterApiKey
114
+ ? (0, openrouter_js_1.createOpenRouterProvider)({
115
+ apiKey: openRouterApiKey,
116
+ baseURL: openRouterBaseURL ?? undefined,
117
+ enableResponses: opts.responsesMode &&
118
+ dntShim.Deno.env.get("GAMBIT_OPENROUTER_RESPONSES") !== "0",
119
+ })
120
+ : null;
121
+ const ollamaProvider = (0, ollama_js_1.createOllamaProvider)({
122
+ apiKey: dntShim.Deno.env.get("OLLAMA_API_KEY")?.trim() || undefined,
123
+ baseURL: ollamaBaseURL,
124
+ });
125
+ const googleProvider = googleApiKey
126
+ ? (0, google_js_1.createGoogleProvider)({
127
+ apiKey: googleApiKey,
128
+ baseURL: googleBaseURL,
129
+ })
130
+ : null;
131
+ const codexProvider = (0, codex_js_1.createCodexProvider)();
132
+ const providerRouter = (0, router_js_1.createProviderRouter)({
133
+ providers: {
134
+ openrouter: openRouterProvider,
135
+ ollama: ollamaProvider,
136
+ google: googleProvider,
137
+ "codex-cli": codexProvider,
138
+ },
139
+ defaultProvider: opts.configuredFallbackProvider,
140
+ fallbackToDefaultOnMissing: ["google"],
141
+ });
142
+ const providerMatchers = (0, model_matchers_js_1.createProviderMatchers)(opts.effectiveFallbackProvider);
143
+ const ollamaTagsCache = {
144
+ promise: null,
145
+ };
146
+ const getOllamaTags = async () => {
147
+ if (!ollamaTagsCache.promise) {
148
+ ollamaTagsCache.promise = (0, ollama_js_1.fetchOllamaTags)(ollamaBaseURL);
149
+ }
150
+ return await ollamaTagsCache.promise;
151
+ };
152
+ const providerCapabilities = [
153
+ {
154
+ name: "ollama",
155
+ matches: providerMatchers.matchesOllama,
156
+ isAvailable: async (model, capabilityOpts) => {
157
+ const trimmed = model.slice(ollama_js_1.OLLAMA_PREFIX.length);
158
+ if (!trimmed) {
159
+ return { available: false, reason: "missing Ollama model name" };
160
+ }
161
+ if (capabilityOpts.allowPull) {
162
+ try {
163
+ await (0, ollama_js_1.ensureOllamaModel)(trimmed, ollamaBaseURL);
164
+ return { available: true };
165
+ }
166
+ catch (err) {
167
+ return {
168
+ available: false,
169
+ reason: err instanceof Error ? err.message : String(err),
170
+ };
171
+ }
172
+ }
173
+ try {
174
+ const tags = await getOllamaTags();
175
+ if (tags.has(trimmed)) {
176
+ return { available: true };
177
+ }
178
+ return {
179
+ available: false,
180
+ reason: `Ollama model "${trimmed}" not installed`,
181
+ };
182
+ }
183
+ catch (err) {
184
+ return {
185
+ available: false,
186
+ reason: err instanceof Error ? err.message : String(err),
187
+ };
188
+ }
189
+ },
190
+ },
191
+ {
192
+ name: "google",
193
+ matches: providerMatchers.matchesGoogle,
194
+ isAvailable: (_model, _capabilityOpts) => Promise.resolve(googleApiKey
195
+ ? { available: true }
196
+ : (opts.effectiveFallbackProvider === "openrouter" &&
197
+ openRouterApiKey)
198
+ ? { available: true }
199
+ : {
200
+ available: false,
201
+ reason: "GOOGLE_API_KEY or GEMINI_API_KEY is not set",
202
+ }),
203
+ },
204
+ {
205
+ name: "openrouter",
206
+ matches: providerMatchers.matchesOpenRouter,
207
+ isAvailable: (_model, _capabilityOpts) => Promise.resolve(openRouterApiKey ? { available: true } : {
208
+ available: false,
209
+ reason: "OPENROUTER_API_KEY is not set",
210
+ }),
211
+ },
212
+ {
213
+ name: "codex-cli",
214
+ matches: providerMatchers.matchesCodex,
215
+ isAvailable: (model, _capabilityOpts) => {
216
+ if (model === "codex" || model.startsWith("codex/")) {
217
+ return Promise.resolve({
218
+ available: false,
219
+ reason: 'legacy codex prefix is unsupported; use "codex-cli/default" or "codex-cli/<model>"',
220
+ });
221
+ }
222
+ const stripped = model.startsWith(codex_js_1.CODEX_PREFIX)
223
+ ? model.slice(codex_js_1.CODEX_PREFIX.length)
224
+ : model;
225
+ if (!stripped.trim()) {
226
+ return Promise.resolve({
227
+ available: false,
228
+ reason: "missing Codex model name",
229
+ });
230
+ }
231
+ return Promise.resolve({ available: true });
232
+ },
233
+ },
234
+ ];
235
+ const warnedMissingAliases = new Set();
236
+ const expandModelCandidates = (model, params) => {
237
+ if (!model)
238
+ return { candidates: [], allowPull: false };
239
+ const baseParams = params;
240
+ const entries = Array.isArray(model) ? model : [model];
241
+ const allowPull = !Array.isArray(model);
242
+ const candidates = [];
243
+ for (const entry of entries) {
244
+ if (typeof entry !== "string" || !entry.trim())
245
+ continue;
246
+ const resolution = opts.modelAliasResolver(entry);
247
+ if (resolution.missingAlias && !warnedMissingAliases.has(entry)) {
248
+ opts.logger.warn(`[gambit] Model alias "${entry}" is not defined in gambit.toml; using literal value.`);
249
+ warnedMissingAliases.add(entry);
250
+ }
251
+ if (resolution.applied) {
252
+ const resolvedModel = resolution.model;
253
+ const mergedParams = mergeParams(resolution.params, baseParams);
254
+ if (Array.isArray(resolvedModel)) {
255
+ for (const candidate of resolvedModel) {
256
+ if (!candidate.trim())
257
+ continue;
258
+ candidates.push({
259
+ model: candidate,
260
+ params: mergedParams,
261
+ });
262
+ }
263
+ }
264
+ else if (resolvedModel) {
265
+ candidates.push({
266
+ model: resolvedModel,
267
+ params: mergedParams,
268
+ });
269
+ }
270
+ }
271
+ else {
272
+ candidates.push({
273
+ model: entry,
274
+ params: baseParams,
275
+ });
276
+ }
277
+ }
278
+ const allowPullForSingle = allowPull && candidates.length <= 1;
279
+ return { candidates, allowPull: allowPullForSingle };
280
+ };
281
+ const resolveModelSelection = async (model, params, deckPath) => {
282
+ const { candidates, allowPull } = expandModelCandidates(model, params);
283
+ if (candidates.length === 0) {
284
+ throw new Error(deckPath
285
+ ? `No model configured for deck ${deckPath}`
286
+ : "No model configured.");
287
+ }
288
+ const failures = [];
289
+ for (const candidate of candidates) {
290
+ const capability = providerCapabilities.find((entry) => entry.matches(candidate.model));
291
+ const availability = capability
292
+ ? await capability.isAvailable(candidate.model, { allowPull })
293
+ : {
294
+ available: false,
295
+ reason: "no provider registered for model",
296
+ };
297
+ if (availability.available) {
298
+ return {
299
+ model: candidate.model,
300
+ params: candidate.params,
301
+ };
302
+ }
303
+ const label = capability ? capability.name : "unknown";
304
+ const reason = availability.reason ? `: ${availability.reason}` : "";
305
+ failures.push(`${candidate.model} (${label}${reason})`);
306
+ }
307
+ const suffix = failures.length ? ` Tried: ${failures.join(", ")}.` : "";
308
+ throw new Error(deckPath
309
+ ? `No available model found for deck ${deckPath}.${suffix}`
310
+ : `No available model found.${suffix}`);
311
+ };
312
+ const shouldResolveModel = (model) => {
313
+ if (Array.isArray(model))
314
+ return true;
315
+ const resolution = opts.modelAliasResolver(model);
316
+ return Boolean(resolution.applied || resolution.missingAlias);
317
+ };
318
+ return {
319
+ resolveModel: async (input) => await resolveModelSelection(input.model, input.params, input.deckPath),
320
+ responses: async (input) => {
321
+ const applied = shouldResolveModel(input.request.model)
322
+ ? await resolveModelSelection(input.request.model, input.request.params, input.deckPath)
323
+ : { model: input.request.model, params: input.request.params };
324
+ const request = {
325
+ ...input.request,
326
+ model: applied.model ?? input.request.model,
327
+ params: applied.params,
328
+ };
329
+ if (typeof request.model !== "string" || !request.model) {
330
+ throw new Error("Model is required.");
331
+ }
332
+ const selection = providerRouter.resolve({ model: request.model });
333
+ const responses = selection.provider.responses;
334
+ if (!responses) {
335
+ throw new Error(`${selection.providerKey} provider does not support responses.`);
336
+ }
337
+ return await responses({
338
+ ...input,
339
+ request: {
340
+ ...request,
341
+ model: selection.model,
342
+ },
343
+ });
344
+ },
345
+ chat: async (input) => {
346
+ const applied = shouldResolveModel(input.model)
347
+ ? await resolveModelSelection(input.model, input.params, input.deckPath)
348
+ : { model: input.model, params: input.params };
349
+ const request = {
350
+ ...input,
351
+ model: applied.model ?? input.model,
352
+ params: applied.params,
353
+ };
354
+ if (typeof request.model !== "string" || !request.model) {
355
+ throw new Error("Model is required.");
356
+ }
357
+ const selection = providerRouter.resolve({ model: request.model });
358
+ return await selection.provider.chat({
359
+ ...request,
360
+ model: selection.model,
361
+ });
362
+ },
363
+ };
364
+ }
365
+ async function createDefaultedRuntime(opts = {}) {
366
+ const logger = opts.logger ?? console;
367
+ const projectConfig = opts.projectConfig === undefined
368
+ ? await (0, project_config_js_1.loadProjectConfig)(opts.configHint)
369
+ : opts.projectConfig;
370
+ const modelAliasResolver = (0, project_config_js_1.createModelAliasResolver)(projectConfig?.config);
371
+ const configuredFallbackProvider = resolveConfiguredFallbackProvider({
372
+ runtimeOverride: opts.fallbackProvider,
373
+ projectConfig: projectConfig?.config,
374
+ logger,
375
+ });
376
+ const effectiveFallbackProvider = configuredFallbackProvider === undefined
377
+ ? "openrouter"
378
+ : configuredFallbackProvider;
379
+ const responsesMode = opts.responsesMode ?? resolveDefaultResponsesMode();
380
+ const modelProvider = opts.modelProvider ??
381
+ buildDefaultModelProvider({
382
+ modelAliasResolver,
383
+ configuredFallbackProvider,
384
+ effectiveFallbackProvider,
385
+ responsesMode,
386
+ logger,
387
+ });
388
+ const defaultModel = opts.defaultModel;
389
+ const modelOverride = opts.modelOverride;
390
+ const runtimeSessionArtifacts = opts.sessionArtifacts;
391
+ const resolveRunOptions = (runOpts) => {
392
+ const { sessionArtifacts: _sessionArtifacts, ...coreRunOpts } = runOpts;
393
+ return {
394
+ ...coreRunOpts,
395
+ modelProvider: runOpts.modelProvider ?? modelProvider,
396
+ defaultModel: runOpts.defaultModel ?? defaultModel,
397
+ modelOverride: runOpts.modelOverride ?? modelOverride,
398
+ responsesMode: runOpts.responsesMode ?? responsesMode,
399
+ };
400
+ };
401
+ return {
402
+ projectConfig,
403
+ modelAliasResolver,
404
+ configuredFallbackProvider,
405
+ effectiveFallbackProvider,
406
+ modelProvider,
407
+ defaultModel,
408
+ modelOverride,
409
+ responsesMode,
410
+ sessionArtifacts: runtimeSessionArtifacts,
411
+ resolveRunOptions,
412
+ runDeck: async (runOpts) => {
413
+ const resolved = resolveRunOptions(runOpts);
414
+ const effectiveSessionArtifacts = resolveSessionArtifactsConfig({
415
+ runtimeConfig: runtimeSessionArtifacts,
416
+ runConfig: runOpts.sessionArtifacts,
417
+ });
418
+ if (!effectiveSessionArtifacts) {
419
+ return await (0, gambit_core_1.runDeck)(resolved);
420
+ }
421
+ const artifacts = (0, session_artifacts_js_1.withSessionArtifacts)({
422
+ config: effectiveSessionArtifacts,
423
+ trace: resolved.trace,
424
+ onStateUpdate: resolved.onStateUpdate,
425
+ state: resolved.state,
426
+ });
427
+ try {
428
+ return await (0, gambit_core_1.runDeck)({
429
+ ...resolved,
430
+ state: artifacts.state,
431
+ trace: artifacts.trace,
432
+ onStateUpdate: artifacts.onStateUpdate,
433
+ });
434
+ }
435
+ finally {
436
+ artifacts.finalize();
437
+ }
438
+ },
439
+ };
440
+ }
441
+ async function runDeck(opts) {
442
+ if (opts.runtime && opts.runtimeOptions) {
443
+ throw new Error("runDeck received both runtime and runtimeOptions. Pass only one.");
444
+ }
445
+ const runtime = opts.runtime ??
446
+ await createDefaultedRuntime({
447
+ ...opts.runtimeOptions,
448
+ configHint: opts.runtimeOptions?.configHint ?? opts.path,
449
+ });
450
+ const { runtime: _runtime, runtimeOptions: _runtimeOptions, ...runOpts } = opts;
451
+ return await runtime.runDeck(runOpts);
452
+ }
@@ -132,5 +132,30 @@ async function handleDurableStreamRequest(request) {
132
132
  });
133
133
  }
134
134
  function formatSseEvent(event) {
135
- return `id: ${event.offset}\ndata: ${JSON.stringify(event)}\n\n`;
135
+ const payload = normalizeSsePayload(event.data);
136
+ const type = payload.type;
137
+ return `id: ${event.offset}\nevent: ${type}\ndata: ${JSON.stringify(payload)}\n\n`;
138
+ }
139
+ function normalizeSsePayload(value) {
140
+ if (value && typeof value === "object" && !Array.isArray(value)) {
141
+ const record = value;
142
+ const rawType = typeof record.type === "string"
143
+ ? record.type.trim()
144
+ : "gambit.event";
145
+ const type = sanitizeSseEventType(rawType);
146
+ return {
147
+ ...record,
148
+ type,
149
+ };
150
+ }
151
+ return {
152
+ type: "gambit.event",
153
+ value,
154
+ };
155
+ }
156
+ function sanitizeSseEventType(value) {
157
+ if (!value)
158
+ return "gambit.event";
159
+ const normalized = value.replace(/[^A-Za-z0-9_.-]/g, "_");
160
+ return normalized.length > 0 ? normalized : "gambit.event";
136
161
  }
@@ -0,0 +1,10 @@
1
+ import type { ProviderKey } from "./providers/router.js";
2
+ export type ProviderMatchers = {
3
+ isUnprefixedModel: (model: string) => boolean;
4
+ matchesOpenRouter: (model: string) => boolean;
5
+ matchesOllama: (model: string) => boolean;
6
+ matchesGoogle: (model: string) => boolean;
7
+ matchesCodex: (model: string) => boolean;
8
+ };
9
+ export declare function createProviderMatchers(effectiveFallbackProvider: ProviderKey | null): ProviderMatchers;
10
+ //# sourceMappingURL=model_matchers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model_matchers.d.ts","sourceRoot":"","sources":["../../src/src/model_matchers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AASzD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9C,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9C,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC1C,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC1C,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;CAC1C,CAAC;AAEF,wBAAgB,sBAAsB,CACpC,yBAAyB,EAAE,WAAW,GAAG,IAAI,GAC5C,gBAAgB,CAyBlB"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createProviderMatchers = createProviderMatchers;
4
+ const google_js_1 = require("./providers/google.js");
5
+ const ollama_js_1 = require("./providers/ollama.js");
6
+ const openrouter_js_1 = require("./providers/openrouter.js");
7
+ const codex_js_1 = require("./providers/codex.js");
8
+ const LEGACY_CODEX_PREFIX = "codex/";
9
+ const CODEX_PROVIDER_ALIAS = "codex-cli";
10
+ function createProviderMatchers(effectiveFallbackProvider) {
11
+ const isUnprefixedModel = (model) => model.trim() !== CODEX_PROVIDER_ALIAS &&
12
+ !model.startsWith(openrouter_js_1.OPENROUTER_PREFIX) &&
13
+ !model.startsWith(ollama_js_1.OLLAMA_PREFIX) &&
14
+ !model.startsWith(google_js_1.GOOGLE_PREFIX) &&
15
+ !model.startsWith(codex_js_1.CODEX_PREFIX) &&
16
+ !model.startsWith(LEGACY_CODEX_PREFIX);
17
+ return {
18
+ isUnprefixedModel,
19
+ matchesOpenRouter: (model) => model.startsWith(openrouter_js_1.OPENROUTER_PREFIX) ||
20
+ (isUnprefixedModel(model) && effectiveFallbackProvider === "openrouter"),
21
+ matchesOllama: (model) => model.startsWith(ollama_js_1.OLLAMA_PREFIX) ||
22
+ (isUnprefixedModel(model) && effectiveFallbackProvider === "ollama"),
23
+ matchesGoogle: (model) => model.startsWith(google_js_1.GOOGLE_PREFIX) ||
24
+ (isUnprefixedModel(model) && effectiveFallbackProvider === "google"),
25
+ matchesCodex: (model) => model.trim() === CODEX_PROVIDER_ALIAS ||
26
+ model.startsWith(codex_js_1.CODEX_PREFIX) ||
27
+ (isUnprefixedModel(model) && effectiveFallbackProvider === "codex-cli"),
28
+ };
29
+ }
@@ -0,0 +1,74 @@
1
+ import { resolveEffectivePermissions } from "@bolt-foundry/gambit-core";
2
+ import type { Guardrails, ModelMessage, ModelProvider, PermissionDeclarationInput, PermissionTrace, ToolDefinition } from "@bolt-foundry/gambit-core";
3
+ export declare const logger: Console;
4
+ export type ChatCompletionsRequest = {
5
+ model: string;
6
+ messages: Array<{
7
+ role: "system" | "user" | "assistant" | "tool";
8
+ content: string | null | Array<string | {
9
+ text?: string;
10
+ type?: string;
11
+ }>;
12
+ name?: string;
13
+ tool_call_id?: string;
14
+ tool_calls?: ModelMessage["tool_calls"];
15
+ }>;
16
+ tools?: Array<ToolDefinition>;
17
+ stream?: boolean;
18
+ temperature?: number;
19
+ top_p?: number;
20
+ frequency_penalty?: number;
21
+ presence_penalty?: number;
22
+ max_tokens?: number;
23
+ [key: string]: unknown;
24
+ };
25
+ export type ChatCompletionsResponse = {
26
+ id: string;
27
+ object: "chat.completion";
28
+ created: number;
29
+ model: string;
30
+ choices: Array<{
31
+ index: number;
32
+ message: ModelMessage;
33
+ finish_reason: "stop" | "tool_calls" | "length";
34
+ logprobs: null;
35
+ }>;
36
+ usage?: {
37
+ prompt_tokens: number;
38
+ completion_tokens: number;
39
+ total_tokens: number;
40
+ };
41
+ /**
42
+ * Non-OpenAI extension field containing the full transcript and metadata.
43
+ * Most clients will ignore unknown fields.
44
+ */
45
+ gambit?: {
46
+ deckPath: string;
47
+ messages: Array<ModelMessage>;
48
+ runId: string;
49
+ };
50
+ };
51
+ export declare function chatCompletionsWithDeck(args: {
52
+ deckPath: string;
53
+ request: ChatCompletionsRequest;
54
+ modelProvider: ModelProvider;
55
+ /**
56
+ * When true (default), Gambit will execute tool calls that match deck actions.
57
+ * Any other tool calls are returned to the caller as normal OpenAI tool calls.
58
+ */
59
+ executeDeckTools?: boolean;
60
+ guardrails?: Partial<Guardrails>;
61
+ defaultModel?: string;
62
+ onStreamText?: (chunk: string) => void;
63
+ workspacePermissions?: PermissionDeclarationInput;
64
+ workspacePermissionsBaseDir?: string;
65
+ sessionPermissions?: PermissionDeclarationInput;
66
+ sessionPermissionsBaseDir?: string;
67
+ parentPermissions?: ReturnType<typeof resolveEffectivePermissions>["effective"];
68
+ workerSandbox?: boolean;
69
+ trace?: (event: {
70
+ type: string;
71
+ permissions?: PermissionTrace;
72
+ }) => void;
73
+ }): Promise<ChatCompletionsResponse>;
74
+ //# sourceMappingURL=openai_compat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai_compat.d.ts","sourceRoot":"","sources":["../../src/src/openai_compat.ts"],"names":[],"mappings":"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"}