@bolt-foundry/gambit 0.8.3 → 0.8.5-rc.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +95 -2
- package/README.md +95 -23
- package/esm/_dnt.polyfills.d.ts +17 -0
- package/esm/_dnt.polyfills.d.ts.map +1 -1
- package/esm/_dnt.polyfills.js +123 -0
- package/esm/deps/jsr.io/@std/collections/1.1.6/deep_merge.d.ts +322 -0
- package/esm/deps/jsr.io/@std/collections/1.1.6/deep_merge.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.1.6/deep_merge.js +105 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/_create_walk_entry.d.ts +14 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/_create_walk_entry.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/_create_walk_entry.js +34 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/_get_file_info_type.d.ts +13 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/_get_file_info_type.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/_get_file_info_type.js +18 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/_is_same_path.d.ts +10 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/_is_same_path.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/_is_same_path.js +17 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/_is_subdir.d.ts +12 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/_is_subdir.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/_is_subdir.js +25 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/_to_path_string.d.ts +9 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/_to_path_string.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/_to_path_string.js +13 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/copy.d.ts +117 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/copy.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/copy.js +313 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/empty_dir.d.ts +48 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/empty_dir.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/empty_dir.js +87 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/ensure_dir.d.ts +49 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/ensure_dir.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/ensure_dir.js +102 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/ensure_file.d.ts +47 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/ensure_file.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/ensure_file.js +90 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/ensure_link.d.ts +49 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/ensure_link.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/ensure_link.js +61 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/ensure_symlink.d.ts +70 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/ensure_symlink.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/ensure_symlink.js +156 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/eol.d.ts +52 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/eol.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/eol.js +67 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/exists.d.ts +218 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/exists.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/exists.js +271 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/expand_glob.d.ts +267 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/expand_glob.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/expand_glob.js +442 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/mod.d.ts +29 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/mod.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/mod.js +29 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/move.d.ts +86 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/move.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/move.js +142 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/walk.d.ts +777 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/walk.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fs/1.0.23/walk.js +846 -0
- package/esm/deps/jsr.io/@std/json/1.0.3/types.d.ts +7 -0
- package/esm/deps/jsr.io/@std/json/1.0.3/types.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/json/1.0.3/types.js +3 -0
- package/esm/deps/jsr.io/@std/jsonc/1.0.2/mod.d.ts +20 -0
- package/esm/deps/jsr.io/@std/jsonc/1.0.2/mod.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/jsonc/1.0.2/mod.js +21 -0
- package/esm/deps/jsr.io/@std/jsonc/1.0.2/parse.d.ts +21 -0
- package/esm/deps/jsr.io/@std/jsonc/1.0.2/parse.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/jsonc/1.0.2/parse.js +320 -0
- package/esm/deps/jsr.io/@std/path/1.1.4/constants.d.ts +1 -1
- package/esm/deps/jsr.io/@std/toml/1.0.11/_parser.d.ts +93 -0
- package/esm/deps/jsr.io/@std/toml/1.0.11/_parser.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/toml/1.0.11/_parser.js +753 -0
- package/esm/deps/jsr.io/@std/toml/1.0.11/mod.d.ts +109 -0
- package/esm/deps/jsr.io/@std/toml/1.0.11/mod.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/toml/1.0.11/mod.js +110 -0
- package/esm/deps/jsr.io/@std/toml/1.0.11/parse.d.ts +21 -0
- package/esm/deps/jsr.io/@std/toml/1.0.11/parse.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/toml/1.0.11/parse.js +25 -0
- package/esm/deps/jsr.io/@std/toml/1.0.11/stringify.d.ts +35 -0
- package/esm/deps/jsr.io/@std/toml/1.0.11/stringify.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/toml/1.0.11/stringify.js +283 -0
- package/esm/gambit/simulator-ui/dist/bundle.js +13788 -5157
- package/esm/gambit/simulator-ui/dist/bundle.js.map +4 -4
- package/esm/mod.d.ts +13 -3
- package/esm/mod.d.ts.map +1 -1
- package/esm/mod.js +8 -2
- package/esm/src/cli_utils.d.ts +1 -0
- package/esm/src/cli_utils.d.ts.map +1 -1
- package/esm/src/cli_utils.js +13 -1
- package/esm/src/default_runtime.d.ts +46 -0
- package/esm/src/default_runtime.d.ts.map +1 -0
- package/esm/src/default_runtime.js +415 -0
- package/esm/src/durable_streams.js +26 -1
- package/esm/src/model_matchers.d.ts +10 -0
- package/esm/src/model_matchers.d.ts.map +1 -0
- package/esm/src/model_matchers.js +26 -0
- package/esm/src/openai_compat.d.ts +12 -1
- package/esm/src/openai_compat.d.ts.map +1 -1
- package/esm/src/openai_compat.js +53 -1
- package/esm/src/project_config.d.ts +47 -0
- package/esm/src/project_config.d.ts.map +1 -0
- package/esm/src/project_config.js +134 -0
- package/esm/src/providers/codex.d.ts +37 -0
- package/esm/src/providers/codex.d.ts.map +1 -0
- package/esm/src/providers/codex.js +809 -0
- package/esm/src/providers/google.d.ts +3 -1
- package/esm/src/providers/google.d.ts.map +1 -1
- package/esm/src/providers/google.js +82 -6
- package/esm/src/providers/ollama.d.ts +3 -1
- package/esm/src/providers/ollama.d.ts.map +1 -1
- package/esm/src/providers/ollama.js +295 -15
- package/esm/src/providers/openrouter.d.ts +6 -2
- package/esm/src/providers/openrouter.d.ts.map +1 -1
- package/esm/src/providers/openrouter.js +334 -23
- package/esm/src/providers/router.d.ts +19 -0
- package/esm/src/providers/router.d.ts.map +1 -0
- package/esm/src/providers/router.js +93 -0
- package/esm/src/server.d.ts +9 -0
- package/esm/src/server.d.ts.map +1 -1
- package/esm/src/server.js +3361 -670
- package/esm/src/server_feedback_grading_routes.d.ts +32 -0
- package/esm/src/server_feedback_grading_routes.d.ts.map +1 -0
- package/esm/src/server_feedback_grading_routes.js +305 -0
- package/esm/src/server_helpers.d.ts +4 -0
- package/esm/src/server_helpers.d.ts.map +1 -0
- package/esm/src/server_helpers.js +46 -0
- package/esm/src/server_session_store.d.ts +87 -0
- package/esm/src/server_session_store.d.ts.map +1 -0
- package/esm/src/server_session_store.js +876 -0
- package/esm/src/server_types.d.ts +111 -0
- package/esm/src/server_types.d.ts.map +1 -0
- package/esm/src/server_types.js +1 -0
- package/esm/src/server_ui_routes.d.ts +33 -0
- package/esm/src/server_ui_routes.d.ts.map +1 -0
- package/esm/src/server_ui_routes.js +139 -0
- package/esm/src/session_artifacts.d.ts +22 -0
- package/esm/src/session_artifacts.d.ts.map +1 -0
- package/esm/src/session_artifacts.js +243 -0
- package/esm/src/trace.d.ts.map +1 -1
- package/esm/src/trace.js +6 -3
- package/esm/src/workspace.d.ts +19 -0
- package/esm/src/workspace.d.ts.map +1 -0
- package/esm/src/workspace.js +162 -0
- package/esm/src/workspace_contract.d.ts +78 -0
- package/esm/src/workspace_contract.d.ts.map +1 -0
- package/esm/src/workspace_contract.js +77 -0
- package/package.json +2 -2
- package/script/_dnt.polyfills.d.ts +17 -0
- package/script/_dnt.polyfills.d.ts.map +1 -1
- package/script/_dnt.polyfills.js +123 -0
- package/script/deps/jsr.io/@std/collections/1.1.6/deep_merge.d.ts +322 -0
- package/script/deps/jsr.io/@std/collections/1.1.6/deep_merge.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/collections/1.1.6/deep_merge.js +108 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/_create_walk_entry.d.ts +14 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/_create_walk_entry.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/_create_walk_entry.js +71 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/_get_file_info_type.d.ts +13 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/_get_file_info_type.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/_get_file_info_type.js +21 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/_is_same_path.d.ts +10 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/_is_same_path.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/_is_same_path.js +20 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/_is_subdir.d.ts +12 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/_is_subdir.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/_is_subdir.js +28 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/_to_path_string.d.ts +9 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/_to_path_string.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/_to_path_string.js +16 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/copy.d.ts +117 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/copy.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/copy.js +350 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/empty_dir.d.ts +48 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/empty_dir.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/empty_dir.js +124 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/ensure_dir.d.ts +49 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/ensure_dir.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/ensure_dir.js +139 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/ensure_file.d.ts +47 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/ensure_file.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/ensure_file.js +127 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/ensure_link.d.ts +49 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/ensure_link.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/ensure_link.js +98 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/ensure_symlink.d.ts +70 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/ensure_symlink.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/ensure_symlink.js +193 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/eol.d.ts +52 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/eol.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/eol.js +105 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/exists.d.ts +218 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/exists.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/exists.js +308 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/expand_glob.d.ts +267 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/expand_glob.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/expand_glob.js +479 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/mod.d.ts +29 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/mod.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/mod.js +45 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/move.d.ts +86 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/move.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/move.js +179 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/walk.d.ts +777 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/walk.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/fs/1.0.23/walk.js +883 -0
- package/script/deps/jsr.io/@std/json/1.0.3/types.d.ts +7 -0
- package/script/deps/jsr.io/@std/json/1.0.3/types.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/json/1.0.3/types.js +4 -0
- package/script/deps/jsr.io/@std/jsonc/1.0.2/mod.d.ts +20 -0
- package/script/deps/jsr.io/@std/jsonc/1.0.2/mod.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/jsonc/1.0.2/mod.js +37 -0
- package/script/deps/jsr.io/@std/jsonc/1.0.2/parse.d.ts +21 -0
- package/script/deps/jsr.io/@std/jsonc/1.0.2/parse.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/jsonc/1.0.2/parse.js +323 -0
- package/script/deps/jsr.io/@std/path/1.1.4/constants.d.ts +1 -1
- package/script/deps/jsr.io/@std/toml/1.0.11/_parser.d.ts +93 -0
- package/script/deps/jsr.io/@std/toml/1.0.11/_parser.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/toml/1.0.11/_parser.js +781 -0
- package/script/deps/jsr.io/@std/toml/1.0.11/mod.d.ts +109 -0
- package/script/deps/jsr.io/@std/toml/1.0.11/mod.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/toml/1.0.11/mod.js +126 -0
- package/script/deps/jsr.io/@std/toml/1.0.11/parse.d.ts +21 -0
- package/script/deps/jsr.io/@std/toml/1.0.11/parse.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/toml/1.0.11/parse.js +28 -0
- package/script/deps/jsr.io/@std/toml/1.0.11/stringify.d.ts +35 -0
- package/script/deps/jsr.io/@std/toml/1.0.11/stringify.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/toml/1.0.11/stringify.js +286 -0
- package/script/gambit/simulator-ui/dist/bundle.js +13788 -5157
- package/script/gambit/simulator-ui/dist/bundle.js.map +4 -4
- package/script/mod.d.ts +13 -3
- package/script/mod.d.ts.map +1 -1
- package/script/mod.js +14 -5
- package/script/src/cli_utils.d.ts +1 -0
- package/script/src/cli_utils.d.ts.map +1 -1
- package/script/src/cli_utils.js +14 -1
- package/script/src/default_runtime.d.ts +46 -0
- package/script/src/default_runtime.d.ts.map +1 -0
- package/script/src/default_runtime.js +452 -0
- package/script/src/durable_streams.js +26 -1
- package/script/src/model_matchers.d.ts +10 -0
- package/script/src/model_matchers.d.ts.map +1 -0
- package/script/src/model_matchers.js +29 -0
- package/script/src/openai_compat.d.ts +12 -1
- package/script/src/openai_compat.d.ts.map +1 -1
- package/script/src/openai_compat.js +85 -0
- package/script/src/project_config.d.ts +47 -0
- package/script/src/project_config.d.ts.map +1 -0
- package/script/src/project_config.js +173 -0
- package/script/src/providers/codex.d.ts +37 -0
- package/script/src/providers/codex.d.ts.map +1 -0
- package/script/src/providers/codex.js +849 -0
- package/script/src/providers/google.d.ts +3 -1
- package/script/src/providers/google.d.ts.map +1 -1
- package/script/src/providers/google.js +82 -6
- package/script/src/providers/ollama.d.ts +3 -1
- package/script/src/providers/ollama.d.ts.map +1 -1
- package/script/src/providers/ollama.js +295 -15
- package/script/src/providers/openrouter.d.ts +6 -2
- package/script/src/providers/openrouter.d.ts.map +1 -1
- package/script/src/providers/openrouter.js +334 -23
- package/script/src/providers/router.d.ts +19 -0
- package/script/src/providers/router.d.ts.map +1 -0
- package/script/src/providers/router.js +96 -0
- package/script/src/server.d.ts +9 -0
- package/script/src/server.d.ts.map +1 -1
- package/script/src/server.js +3368 -677
- package/script/src/server_feedback_grading_routes.d.ts +32 -0
- package/script/src/server_feedback_grading_routes.d.ts.map +1 -0
- package/script/src/server_feedback_grading_routes.js +343 -0
- package/script/src/server_helpers.d.ts +4 -0
- package/script/src/server_helpers.d.ts.map +1 -0
- package/script/src/server_helpers.js +84 -0
- package/script/src/server_session_store.d.ts +87 -0
- package/script/src/server_session_store.d.ts.map +1 -0
- package/script/src/server_session_store.js +913 -0
- package/script/src/server_types.d.ts +111 -0
- package/script/src/server_types.d.ts.map +1 -0
- package/script/src/server_types.js +2 -0
- package/script/src/server_ui_routes.d.ts +33 -0
- package/script/src/server_ui_routes.d.ts.map +1 -0
- package/script/src/server_ui_routes.js +176 -0
- package/script/src/session_artifacts.d.ts +22 -0
- package/script/src/session_artifacts.d.ts.map +1 -0
- package/script/src/session_artifacts.js +279 -0
- package/script/src/trace.d.ts.map +1 -1
- package/script/src/trace.js +6 -3
- package/script/src/workspace.d.ts +19 -0
- package/script/src/workspace.d.ts.map +1 -0
- package/script/src/workspace.js +199 -0
- package/script/src/workspace_contract.d.ts +78 -0
- package/script/src/workspace_contract.d.ts.map +1 -0
- package/script/src/workspace_contract.js +85 -0
package/esm/mod.d.ts
CHANGED
|
@@ -26,12 +26,22 @@ export type { Guardrails } from "@bolt-foundry/gambit-core";
|
|
|
26
26
|
export type { JSONValue } from "@bolt-foundry/gambit-core";
|
|
27
27
|
/** Model provider interface for LLM backends. */
|
|
28
28
|
export type { ModelProvider } from "@bolt-foundry/gambit-core";
|
|
29
|
-
/**
|
|
29
|
+
/** Scenario deck definition shape. */
|
|
30
30
|
export type { TestDeckDefinition } from "@bolt-foundry/gambit-core";
|
|
31
31
|
/** Check if a value is an explicit end-of-run signal. */
|
|
32
32
|
export { isGambitEndSignal } from "@bolt-foundry/gambit-core";
|
|
33
|
-
/**
|
|
34
|
-
export {
|
|
33
|
+
/** Check whether an error represents runtime cancellation. */
|
|
34
|
+
export { isRunCanceledError } from "@bolt-foundry/gambit-core";
|
|
35
|
+
/** Build a runtime with CLI-equivalent provider defaults and routing. */
|
|
36
|
+
export { createDefaultedRuntime } from "./src/default_runtime.js";
|
|
37
|
+
/** Runtime defaults/options for the `runDeck` wrapper. */
|
|
38
|
+
export type { CreateDefaultedRuntimeOptions, DefaultedRuntime, DefaultedRuntimeRunOptions, RunDeckWithDefaultsOptions, } from "./src/default_runtime.js";
|
|
39
|
+
/** Session artifact persistence config for default runtime runs. */
|
|
40
|
+
export type { SessionArtifactsConfig } from "./src/session_artifacts.js";
|
|
41
|
+
/** Run a deck with default provider/model/runtime behavior. */
|
|
42
|
+
export { runDeck } from "./src/default_runtime.js";
|
|
43
|
+
/** Run a deck directly through gambit-core without gambit defaults. */
|
|
44
|
+
export { runDeck as runDeckCore } from "@bolt-foundry/gambit-core";
|
|
35
45
|
/** Signal for explicitly ending a Gambit run. */
|
|
36
46
|
export type { GambitEndSignal } from "@bolt-foundry/gambit-core";
|
|
37
47
|
/** OpenAI Chat Completions compatibility helper for a deck. */
|
package/esm/mod.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,yEAAyE;AACzE,OAAO,qBAAqB,CAAC;AAE7B,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,oDAAoD;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,oCAAoC;AACpC,YAAY,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,6BAA6B;AAC7B,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,6BAA6B;AAC7B,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,iCAAiC;AACjC,YAAY,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzE,yCAAyC;AACzC,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,oCAAoC;AACpC,YAAY,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,uCAAuC;AACvC,YAAY,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,2DAA2D;AAC3D,YAAY,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,iDAAiD;AACjD,YAAY,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,yEAAyE;AACzE,OAAO,qBAAqB,CAAC;AAE7B,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,oDAAoD;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,oCAAoC;AACpC,YAAY,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,6BAA6B;AAC7B,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,6BAA6B;AAC7B,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,iCAAiC;AACjC,YAAY,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzE,yCAAyC;AACzC,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,oCAAoC;AACpC,YAAY,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,uCAAuC;AACvC,YAAY,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,2DAA2D;AAC3D,YAAY,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,iDAAiD;AACjD,YAAY,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,sCAAsC;AACtC,YAAY,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,yDAAyD;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,8DAA8D;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,yEAAyE;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,0DAA0D;AAC1D,YAAY,EACV,6BAA6B,EAC7B,gBAAgB,EAChB,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,0BAA0B,CAAC;AAClC,oEAAoE;AACpE,YAAY,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACzE,+DAA+D;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,uEAAuE;AACvE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACnE,iDAAiD;AACjD,YAAY,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,+DAA+D;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,yCAAyC;AACzC,YAAY,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrE,0CAA0C;AAC1C,YAAY,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtE,+DAA+D;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,kCAAkC;AAClC,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,yCAAyC;AACzC,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,0DAA0D;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,sDAAsD;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,6DAA6D;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,8DAA8D;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC"}
|
package/esm/mod.js
CHANGED
|
@@ -10,8 +10,14 @@ export { defineCard } from "@bolt-foundry/gambit-core";
|
|
|
10
10
|
export { defineDeck } from "@bolt-foundry/gambit-core";
|
|
11
11
|
/** Check if a value is an explicit end-of-run signal. */
|
|
12
12
|
export { isGambitEndSignal } from "@bolt-foundry/gambit-core";
|
|
13
|
-
/**
|
|
14
|
-
export {
|
|
13
|
+
/** Check whether an error represents runtime cancellation. */
|
|
14
|
+
export { isRunCanceledError } from "@bolt-foundry/gambit-core";
|
|
15
|
+
/** Build a runtime with CLI-equivalent provider defaults and routing. */
|
|
16
|
+
export { createDefaultedRuntime } from "./src/default_runtime.js";
|
|
17
|
+
/** Run a deck with default provider/model/runtime behavior. */
|
|
18
|
+
export { runDeck } from "./src/default_runtime.js";
|
|
19
|
+
/** Run a deck directly through gambit-core without gambit defaults. */
|
|
20
|
+
export { runDeck as runDeckCore } from "@bolt-foundry/gambit-core";
|
|
15
21
|
/** OpenAI Chat Completions compatibility helper for a deck. */
|
|
16
22
|
export { chatCompletionsWithDeck } from "./src/openai_compat.js";
|
|
17
23
|
/** Render a deck to a human-readable outline or debug view. */
|
package/esm/src/cli_utils.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import type { SavedState } from "@bolt-foundry/gambit-core";
|
|
|
3
3
|
export declare function parsePortValue(value: unknown, label?: string): number | undefined;
|
|
4
4
|
export declare function normalizeFlagList(value: string | Array<string> | undefined): Array<string>;
|
|
5
5
|
export declare function slugifyDeckPath(deckPath: string): string;
|
|
6
|
+
export declare function resolveProjectRoot(startDir: string): string | undefined;
|
|
6
7
|
export declare function defaultSessionRoot(deckPath: string): string;
|
|
7
8
|
export declare function defaultTestBotStatePath(deckPath: string): string;
|
|
8
9
|
export declare function enrichStateMeta(state: SavedState, deckPath: string): SavedState;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli_utils.d.ts","sourceRoot":"","sources":["../../src/src/cli_utils.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE5D,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,EACd,KAAK,SAAS,GACb,MAAM,GAAG,SAAS,CAOpB;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,SAAS,GACxC,KAAK,CAAC,MAAM,CAAC,CAGf;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQxD;AAuBD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"cli_utils.d.ts","sourceRoot":"","sources":["../../src/src/cli_utils.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE5D,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,EACd,KAAK,SAAS,GACb,MAAM,GAAG,SAAS,CAOpB;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,SAAS,GACxC,KAAK,CAAC,MAAM,CAAC,CAGf;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQxD;AAuBD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEvE;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAkB3D;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQhE;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,MAAM,GACf,UAAU,CAOZ;AAED,wBAAgB,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAOlD;AAED,wBAAgB,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAOlD;AAED,wBAAgB,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAOnD;AAED,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC,GAC5B,MAAM,GAAG,SAAS,CAUpB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,OAAO,CAuB/D"}
|
package/esm/src/cli_utils.js
CHANGED
|
@@ -43,12 +43,24 @@ function findProjectRoot(startDir) {
|
|
|
43
43
|
}
|
|
44
44
|
return undefined;
|
|
45
45
|
}
|
|
46
|
+
export function resolveProjectRoot(startDir) {
|
|
47
|
+
return findProjectRoot(startDir);
|
|
48
|
+
}
|
|
46
49
|
export function defaultSessionRoot(deckPath) {
|
|
47
50
|
const resolvedDeckPath = path.resolve(deckPath);
|
|
51
|
+
const marker = `${path.SEPARATOR}.gambit${path.SEPARATOR}workspaces${path.SEPARATOR}`;
|
|
52
|
+
const markerIndex = resolvedDeckPath.lastIndexOf(marker);
|
|
53
|
+
if (markerIndex >= 0) {
|
|
54
|
+
const suffix = resolvedDeckPath.slice(markerIndex + marker.length);
|
|
55
|
+
const markerSegments = suffix.split(path.SEPARATOR).filter(Boolean);
|
|
56
|
+
if (markerSegments.length >= 2 && markerSegments[1] === "deck") {
|
|
57
|
+
return path.resolve(resolvedDeckPath.slice(0, markerIndex + marker.length));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
48
60
|
const deckDir = path.dirname(resolvedDeckPath);
|
|
49
61
|
const projectRoot = findProjectRoot(deckDir);
|
|
50
62
|
const baseDir = projectRoot ?? deckDir;
|
|
51
|
-
return path.join(baseDir, ".gambit", "
|
|
63
|
+
return path.join(baseDir, ".gambit", "workspaces");
|
|
52
64
|
}
|
|
53
65
|
export function defaultTestBotStatePath(deckPath) {
|
|
54
66
|
const slug = slugifyDeckPath(deckPath);
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { runDeck as runDeckCore } from "@bolt-foundry/gambit-core";
|
|
2
|
+
import type { ModelProvider } from "@bolt-foundry/gambit-core";
|
|
3
|
+
import { type SessionArtifactsConfig } from "./session_artifacts.js";
|
|
4
|
+
import { type LoadedProjectConfig, type ModelAliasResolver } from "./project_config.js";
|
|
5
|
+
import { type ProviderKey } from "./providers/router.js";
|
|
6
|
+
type WarnLogger = Pick<Console, "warn">;
|
|
7
|
+
type CoreRunDeckOptions = Parameters<typeof runDeckCore>[0];
|
|
8
|
+
export type DefaultedRuntimeRunOptions = Omit<CoreRunDeckOptions, "modelProvider" | "defaultModel" | "modelOverride" | "responsesMode"> & {
|
|
9
|
+
modelProvider?: ModelProvider;
|
|
10
|
+
defaultModel?: string;
|
|
11
|
+
modelOverride?: string;
|
|
12
|
+
responsesMode?: boolean;
|
|
13
|
+
sessionArtifacts?: SessionArtifactsConfig | false;
|
|
14
|
+
};
|
|
15
|
+
export type CreateDefaultedRuntimeOptions = {
|
|
16
|
+
configHint?: string;
|
|
17
|
+
projectConfig?: LoadedProjectConfig | null;
|
|
18
|
+
modelProvider?: ModelProvider;
|
|
19
|
+
defaultModel?: string;
|
|
20
|
+
modelOverride?: string;
|
|
21
|
+
responsesMode?: boolean;
|
|
22
|
+
fallbackProvider?: ProviderKey | null;
|
|
23
|
+
logger?: WarnLogger;
|
|
24
|
+
sessionArtifacts?: SessionArtifactsConfig;
|
|
25
|
+
};
|
|
26
|
+
export type DefaultedRuntime = {
|
|
27
|
+
projectConfig: LoadedProjectConfig | null;
|
|
28
|
+
modelAliasResolver: ModelAliasResolver;
|
|
29
|
+
configuredFallbackProvider: ProviderKey | null | undefined;
|
|
30
|
+
effectiveFallbackProvider: ProviderKey | null;
|
|
31
|
+
modelProvider: ModelProvider;
|
|
32
|
+
defaultModel?: string;
|
|
33
|
+
modelOverride?: string;
|
|
34
|
+
responsesMode: boolean;
|
|
35
|
+
sessionArtifacts?: SessionArtifactsConfig;
|
|
36
|
+
resolveRunOptions: (opts: DefaultedRuntimeRunOptions) => CoreRunDeckOptions;
|
|
37
|
+
runDeck: (opts: DefaultedRuntimeRunOptions) => Promise<unknown>;
|
|
38
|
+
};
|
|
39
|
+
export type RunDeckWithDefaultsOptions = DefaultedRuntimeRunOptions & {
|
|
40
|
+
runtime?: DefaultedRuntime;
|
|
41
|
+
runtimeOptions?: CreateDefaultedRuntimeOptions;
|
|
42
|
+
};
|
|
43
|
+
export declare function createDefaultedRuntime(opts?: CreateDefaultedRuntimeOptions): Promise<DefaultedRuntime>;
|
|
44
|
+
export declare function runDeck(opts: RunDeckWithDefaultsOptions): Promise<unknown>;
|
|
45
|
+
export {};
|
|
46
|
+
//# sourceMappingURL=default_runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default_runtime.d.ts","sourceRoot":"","sources":["../../src/src/default_runtime.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAGV,aAAa,EAId,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,KAAK,sBAAsB,EAE5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAGL,KAAK,mBAAmB,EAExB,KAAK,kBAAkB,EACxB,MAAM,qBAAqB,CAAC;AAU7B,OAAO,EAAwB,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAI/E,KAAK,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAoBxC,KAAK,kBAAkB,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAE5D,MAAM,MAAM,0BAA0B,GAClC,IAAI,CACJ,kBAAkB,EAChB,eAAe,GACf,cAAc,GACd,eAAe,GACf,eAAe,CAClB,GACC;IACA,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,sBAAsB,GAAG,KAAK,CAAC;CACnD,CAAC;AAEJ,MAAM,MAAM,6BAA6B,GAAG;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC3C,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACtC,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,aAAa,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC1C,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,0BAA0B,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC;IAC3D,yBAAyB,EAAE,WAAW,GAAG,IAAI,CAAC;IAC9C,aAAa,EAAE,aAAa,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,iBAAiB,EAAE,CAAC,IAAI,EAAE,0BAA0B,KAAK,kBAAkB,CAAC;IAC5E,OAAO,EAAE,CAAC,IAAI,EAAE,0BAA0B,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACjE,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,0BAA0B,GAAG;IACpE,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,cAAc,CAAC,EAAE,6BAA6B,CAAC;CAChD,CAAC;AAgZF,wBAAsB,sBAAsB,CAC1C,IAAI,GAAE,6BAAkC,GACvC,OAAO,CAAC,gBAAgB,CAAC,CA8E3B;AAED,wBAAsB,OAAO,CAC3B,IAAI,EAAE,0BAA0B,GAC/B,OAAO,CAAC,OAAO,CAAC,CAclB"}
|
|
@@ -0,0 +1,415 @@
|
|
|
1
|
+
import * as dntShim from "../_dnt.shims.js";
|
|
2
|
+
import { runDeck as runDeckCore } from "@bolt-foundry/gambit-core";
|
|
3
|
+
import { createProviderMatchers } from "./model_matchers.js";
|
|
4
|
+
import { withSessionArtifacts, } from "./session_artifacts.js";
|
|
5
|
+
import { createModelAliasResolver, loadProjectConfig, } from "./project_config.js";
|
|
6
|
+
import { CODEX_PREFIX, createCodexProvider } from "./providers/codex.js";
|
|
7
|
+
import { createGoogleProvider } from "./providers/google.js";
|
|
8
|
+
import { createOllamaProvider, ensureOllamaModel, fetchOllamaTags, OLLAMA_PREFIX, } from "./providers/ollama.js";
|
|
9
|
+
import { createOpenRouterProvider } from "./providers/openrouter.js";
|
|
10
|
+
import { createProviderRouter } from "./providers/router.js";
|
|
11
|
+
const DEFAULT_OPENROUTER_BASE_URL = "https://openrouter.ai/api/v1";
|
|
12
|
+
function mergeParams(aliasParams, baseParams) {
|
|
13
|
+
if (aliasParams && baseParams) {
|
|
14
|
+
return { ...aliasParams, ...baseParams };
|
|
15
|
+
}
|
|
16
|
+
return baseParams ?? aliasParams;
|
|
17
|
+
}
|
|
18
|
+
function parseFallbackProviderFromConfig(fallbackProviderRaw, logger) {
|
|
19
|
+
if (typeof fallbackProviderRaw !== "string") {
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
const normalized = fallbackProviderRaw.trim().toLowerCase();
|
|
23
|
+
if (normalized === "none") {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
if (normalized === "codex") {
|
|
27
|
+
throw new Error('[gambit] providers.fallback "codex" is no longer supported. Use "codex-cli" or "none".');
|
|
28
|
+
}
|
|
29
|
+
if (normalized === "openrouter" || normalized === "ollama" ||
|
|
30
|
+
normalized === "google" || normalized === "codex-cli") {
|
|
31
|
+
return normalized;
|
|
32
|
+
}
|
|
33
|
+
if (normalized.length > 0) {
|
|
34
|
+
logger.warn(`[gambit] Unknown providers.fallback "${fallbackProviderRaw}" in gambit.toml; using default fallback.`);
|
|
35
|
+
}
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
function resolveConfiguredFallbackProvider(opts) {
|
|
39
|
+
if (opts.runtimeOverride !== undefined) {
|
|
40
|
+
return opts.runtimeOverride;
|
|
41
|
+
}
|
|
42
|
+
return parseFallbackProviderFromConfig(opts.projectConfig?.providers?.fallback, opts.logger);
|
|
43
|
+
}
|
|
44
|
+
function resolveDefaultResponsesMode() {
|
|
45
|
+
const chatFallback = dntShim.Deno.env.get("GAMBIT_CHAT_FALLBACK") === "1";
|
|
46
|
+
return !chatFallback && dntShim.Deno.env.get("GAMBIT_RESPONSES_MODE") !== "0";
|
|
47
|
+
}
|
|
48
|
+
function resolveSessionArtifactsConfig(opts) {
|
|
49
|
+
if (opts.runConfig === false)
|
|
50
|
+
return undefined;
|
|
51
|
+
if (!opts.runtimeConfig && !opts.runConfig)
|
|
52
|
+
return undefined;
|
|
53
|
+
const merged = {
|
|
54
|
+
...(opts.runtimeConfig ?? {}),
|
|
55
|
+
...(opts.runConfig ?? {}),
|
|
56
|
+
};
|
|
57
|
+
if (typeof merged.rootDir !== "string" || !merged.rootDir.trim()) {
|
|
58
|
+
throw new Error("sessionArtifacts.rootDir is required when persistence is enabled.");
|
|
59
|
+
}
|
|
60
|
+
return {
|
|
61
|
+
rootDir: merged.rootDir,
|
|
62
|
+
sessionId: merged.sessionId,
|
|
63
|
+
continueSession: merged.continueSession,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
function buildDefaultModelProvider(opts) {
|
|
67
|
+
const openRouterApiKey = dntShim.Deno.env.get("OPENROUTER_API_KEY")?.trim();
|
|
68
|
+
const googleApiKey = (dntShim.Deno.env.get("GOOGLE_API_KEY") ??
|
|
69
|
+
dntShim.Deno.env.get("GEMINI_API_KEY"))?.trim();
|
|
70
|
+
const openRouterBaseURL = dntShim.Deno.env.get("OPENROUTER_BASE_URL") ??
|
|
71
|
+
DEFAULT_OPENROUTER_BASE_URL;
|
|
72
|
+
const ollamaBaseURL = dntShim.Deno.env.get("OLLAMA_BASE_URL") ?? undefined;
|
|
73
|
+
const googleBaseURL = dntShim.Deno.env.get("GOOGLE_BASE_URL") ??
|
|
74
|
+
dntShim.Deno.env.get("GEMINI_BASE_URL") ??
|
|
75
|
+
undefined;
|
|
76
|
+
const openRouterProvider = openRouterApiKey
|
|
77
|
+
? createOpenRouterProvider({
|
|
78
|
+
apiKey: openRouterApiKey,
|
|
79
|
+
baseURL: openRouterBaseURL ?? undefined,
|
|
80
|
+
enableResponses: opts.responsesMode &&
|
|
81
|
+
dntShim.Deno.env.get("GAMBIT_OPENROUTER_RESPONSES") !== "0",
|
|
82
|
+
})
|
|
83
|
+
: null;
|
|
84
|
+
const ollamaProvider = createOllamaProvider({
|
|
85
|
+
apiKey: dntShim.Deno.env.get("OLLAMA_API_KEY")?.trim() || undefined,
|
|
86
|
+
baseURL: ollamaBaseURL,
|
|
87
|
+
});
|
|
88
|
+
const googleProvider = googleApiKey
|
|
89
|
+
? createGoogleProvider({
|
|
90
|
+
apiKey: googleApiKey,
|
|
91
|
+
baseURL: googleBaseURL,
|
|
92
|
+
})
|
|
93
|
+
: null;
|
|
94
|
+
const codexProvider = createCodexProvider();
|
|
95
|
+
const providerRouter = createProviderRouter({
|
|
96
|
+
providers: {
|
|
97
|
+
openrouter: openRouterProvider,
|
|
98
|
+
ollama: ollamaProvider,
|
|
99
|
+
google: googleProvider,
|
|
100
|
+
"codex-cli": codexProvider,
|
|
101
|
+
},
|
|
102
|
+
defaultProvider: opts.configuredFallbackProvider,
|
|
103
|
+
fallbackToDefaultOnMissing: ["google"],
|
|
104
|
+
});
|
|
105
|
+
const providerMatchers = createProviderMatchers(opts.effectiveFallbackProvider);
|
|
106
|
+
const ollamaTagsCache = {
|
|
107
|
+
promise: null,
|
|
108
|
+
};
|
|
109
|
+
const getOllamaTags = async () => {
|
|
110
|
+
if (!ollamaTagsCache.promise) {
|
|
111
|
+
ollamaTagsCache.promise = fetchOllamaTags(ollamaBaseURL);
|
|
112
|
+
}
|
|
113
|
+
return await ollamaTagsCache.promise;
|
|
114
|
+
};
|
|
115
|
+
const providerCapabilities = [
|
|
116
|
+
{
|
|
117
|
+
name: "ollama",
|
|
118
|
+
matches: providerMatchers.matchesOllama,
|
|
119
|
+
isAvailable: async (model, capabilityOpts) => {
|
|
120
|
+
const trimmed = model.slice(OLLAMA_PREFIX.length);
|
|
121
|
+
if (!trimmed) {
|
|
122
|
+
return { available: false, reason: "missing Ollama model name" };
|
|
123
|
+
}
|
|
124
|
+
if (capabilityOpts.allowPull) {
|
|
125
|
+
try {
|
|
126
|
+
await ensureOllamaModel(trimmed, ollamaBaseURL);
|
|
127
|
+
return { available: true };
|
|
128
|
+
}
|
|
129
|
+
catch (err) {
|
|
130
|
+
return {
|
|
131
|
+
available: false,
|
|
132
|
+
reason: err instanceof Error ? err.message : String(err),
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
try {
|
|
137
|
+
const tags = await getOllamaTags();
|
|
138
|
+
if (tags.has(trimmed)) {
|
|
139
|
+
return { available: true };
|
|
140
|
+
}
|
|
141
|
+
return {
|
|
142
|
+
available: false,
|
|
143
|
+
reason: `Ollama model "${trimmed}" not installed`,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
catch (err) {
|
|
147
|
+
return {
|
|
148
|
+
available: false,
|
|
149
|
+
reason: err instanceof Error ? err.message : String(err),
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
name: "google",
|
|
156
|
+
matches: providerMatchers.matchesGoogle,
|
|
157
|
+
isAvailable: (_model, _capabilityOpts) => Promise.resolve(googleApiKey
|
|
158
|
+
? { available: true }
|
|
159
|
+
: (opts.effectiveFallbackProvider === "openrouter" &&
|
|
160
|
+
openRouterApiKey)
|
|
161
|
+
? { available: true }
|
|
162
|
+
: {
|
|
163
|
+
available: false,
|
|
164
|
+
reason: "GOOGLE_API_KEY or GEMINI_API_KEY is not set",
|
|
165
|
+
}),
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
name: "openrouter",
|
|
169
|
+
matches: providerMatchers.matchesOpenRouter,
|
|
170
|
+
isAvailable: (_model, _capabilityOpts) => Promise.resolve(openRouterApiKey ? { available: true } : {
|
|
171
|
+
available: false,
|
|
172
|
+
reason: "OPENROUTER_API_KEY is not set",
|
|
173
|
+
}),
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
name: "codex-cli",
|
|
177
|
+
matches: providerMatchers.matchesCodex,
|
|
178
|
+
isAvailable: (model, _capabilityOpts) => {
|
|
179
|
+
if (model === "codex" || model.startsWith("codex/")) {
|
|
180
|
+
return Promise.resolve({
|
|
181
|
+
available: false,
|
|
182
|
+
reason: 'legacy codex prefix is unsupported; use "codex-cli/default" or "codex-cli/<model>"',
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
const stripped = model.startsWith(CODEX_PREFIX)
|
|
186
|
+
? model.slice(CODEX_PREFIX.length)
|
|
187
|
+
: model;
|
|
188
|
+
if (!stripped.trim()) {
|
|
189
|
+
return Promise.resolve({
|
|
190
|
+
available: false,
|
|
191
|
+
reason: "missing Codex model name",
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
return Promise.resolve({ available: true });
|
|
195
|
+
},
|
|
196
|
+
},
|
|
197
|
+
];
|
|
198
|
+
const warnedMissingAliases = new Set();
|
|
199
|
+
const expandModelCandidates = (model, params) => {
|
|
200
|
+
if (!model)
|
|
201
|
+
return { candidates: [], allowPull: false };
|
|
202
|
+
const baseParams = params;
|
|
203
|
+
const entries = Array.isArray(model) ? model : [model];
|
|
204
|
+
const allowPull = !Array.isArray(model);
|
|
205
|
+
const candidates = [];
|
|
206
|
+
for (const entry of entries) {
|
|
207
|
+
if (typeof entry !== "string" || !entry.trim())
|
|
208
|
+
continue;
|
|
209
|
+
const resolution = opts.modelAliasResolver(entry);
|
|
210
|
+
if (resolution.missingAlias && !warnedMissingAliases.has(entry)) {
|
|
211
|
+
opts.logger.warn(`[gambit] Model alias "${entry}" is not defined in gambit.toml; using literal value.`);
|
|
212
|
+
warnedMissingAliases.add(entry);
|
|
213
|
+
}
|
|
214
|
+
if (resolution.applied) {
|
|
215
|
+
const resolvedModel = resolution.model;
|
|
216
|
+
const mergedParams = mergeParams(resolution.params, baseParams);
|
|
217
|
+
if (Array.isArray(resolvedModel)) {
|
|
218
|
+
for (const candidate of resolvedModel) {
|
|
219
|
+
if (!candidate.trim())
|
|
220
|
+
continue;
|
|
221
|
+
candidates.push({
|
|
222
|
+
model: candidate,
|
|
223
|
+
params: mergedParams,
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
else if (resolvedModel) {
|
|
228
|
+
candidates.push({
|
|
229
|
+
model: resolvedModel,
|
|
230
|
+
params: mergedParams,
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
candidates.push({
|
|
236
|
+
model: entry,
|
|
237
|
+
params: baseParams,
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
const allowPullForSingle = allowPull && candidates.length <= 1;
|
|
242
|
+
return { candidates, allowPull: allowPullForSingle };
|
|
243
|
+
};
|
|
244
|
+
const resolveModelSelection = async (model, params, deckPath) => {
|
|
245
|
+
const { candidates, allowPull } = expandModelCandidates(model, params);
|
|
246
|
+
if (candidates.length === 0) {
|
|
247
|
+
throw new Error(deckPath
|
|
248
|
+
? `No model configured for deck ${deckPath}`
|
|
249
|
+
: "No model configured.");
|
|
250
|
+
}
|
|
251
|
+
const failures = [];
|
|
252
|
+
for (const candidate of candidates) {
|
|
253
|
+
const capability = providerCapabilities.find((entry) => entry.matches(candidate.model));
|
|
254
|
+
const availability = capability
|
|
255
|
+
? await capability.isAvailable(candidate.model, { allowPull })
|
|
256
|
+
: {
|
|
257
|
+
available: false,
|
|
258
|
+
reason: "no provider registered for model",
|
|
259
|
+
};
|
|
260
|
+
if (availability.available) {
|
|
261
|
+
return {
|
|
262
|
+
model: candidate.model,
|
|
263
|
+
params: candidate.params,
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
const label = capability ? capability.name : "unknown";
|
|
267
|
+
const reason = availability.reason ? `: ${availability.reason}` : "";
|
|
268
|
+
failures.push(`${candidate.model} (${label}${reason})`);
|
|
269
|
+
}
|
|
270
|
+
const suffix = failures.length ? ` Tried: ${failures.join(", ")}.` : "";
|
|
271
|
+
throw new Error(deckPath
|
|
272
|
+
? `No available model found for deck ${deckPath}.${suffix}`
|
|
273
|
+
: `No available model found.${suffix}`);
|
|
274
|
+
};
|
|
275
|
+
const shouldResolveModel = (model) => {
|
|
276
|
+
if (Array.isArray(model))
|
|
277
|
+
return true;
|
|
278
|
+
const resolution = opts.modelAliasResolver(model);
|
|
279
|
+
return Boolean(resolution.applied || resolution.missingAlias);
|
|
280
|
+
};
|
|
281
|
+
return {
|
|
282
|
+
resolveModel: async (input) => await resolveModelSelection(input.model, input.params, input.deckPath),
|
|
283
|
+
responses: async (input) => {
|
|
284
|
+
const applied = shouldResolveModel(input.request.model)
|
|
285
|
+
? await resolveModelSelection(input.request.model, input.request.params, input.deckPath)
|
|
286
|
+
: { model: input.request.model, params: input.request.params };
|
|
287
|
+
const request = {
|
|
288
|
+
...input.request,
|
|
289
|
+
model: applied.model ?? input.request.model,
|
|
290
|
+
params: applied.params,
|
|
291
|
+
};
|
|
292
|
+
if (typeof request.model !== "string" || !request.model) {
|
|
293
|
+
throw new Error("Model is required.");
|
|
294
|
+
}
|
|
295
|
+
const selection = providerRouter.resolve({ model: request.model });
|
|
296
|
+
const responses = selection.provider.responses;
|
|
297
|
+
if (!responses) {
|
|
298
|
+
throw new Error(`${selection.providerKey} provider does not support responses.`);
|
|
299
|
+
}
|
|
300
|
+
return await responses({
|
|
301
|
+
...input,
|
|
302
|
+
request: {
|
|
303
|
+
...request,
|
|
304
|
+
model: selection.model,
|
|
305
|
+
},
|
|
306
|
+
});
|
|
307
|
+
},
|
|
308
|
+
chat: async (input) => {
|
|
309
|
+
const applied = shouldResolveModel(input.model)
|
|
310
|
+
? await resolveModelSelection(input.model, input.params, input.deckPath)
|
|
311
|
+
: { model: input.model, params: input.params };
|
|
312
|
+
const request = {
|
|
313
|
+
...input,
|
|
314
|
+
model: applied.model ?? input.model,
|
|
315
|
+
params: applied.params,
|
|
316
|
+
};
|
|
317
|
+
if (typeof request.model !== "string" || !request.model) {
|
|
318
|
+
throw new Error("Model is required.");
|
|
319
|
+
}
|
|
320
|
+
const selection = providerRouter.resolve({ model: request.model });
|
|
321
|
+
return await selection.provider.chat({
|
|
322
|
+
...request,
|
|
323
|
+
model: selection.model,
|
|
324
|
+
});
|
|
325
|
+
},
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
export async function createDefaultedRuntime(opts = {}) {
|
|
329
|
+
const logger = opts.logger ?? console;
|
|
330
|
+
const projectConfig = opts.projectConfig === undefined
|
|
331
|
+
? await loadProjectConfig(opts.configHint)
|
|
332
|
+
: opts.projectConfig;
|
|
333
|
+
const modelAliasResolver = createModelAliasResolver(projectConfig?.config);
|
|
334
|
+
const configuredFallbackProvider = resolveConfiguredFallbackProvider({
|
|
335
|
+
runtimeOverride: opts.fallbackProvider,
|
|
336
|
+
projectConfig: projectConfig?.config,
|
|
337
|
+
logger,
|
|
338
|
+
});
|
|
339
|
+
const effectiveFallbackProvider = configuredFallbackProvider === undefined
|
|
340
|
+
? "openrouter"
|
|
341
|
+
: configuredFallbackProvider;
|
|
342
|
+
const responsesMode = opts.responsesMode ?? resolveDefaultResponsesMode();
|
|
343
|
+
const modelProvider = opts.modelProvider ??
|
|
344
|
+
buildDefaultModelProvider({
|
|
345
|
+
modelAliasResolver,
|
|
346
|
+
configuredFallbackProvider,
|
|
347
|
+
effectiveFallbackProvider,
|
|
348
|
+
responsesMode,
|
|
349
|
+
logger,
|
|
350
|
+
});
|
|
351
|
+
const defaultModel = opts.defaultModel;
|
|
352
|
+
const modelOverride = opts.modelOverride;
|
|
353
|
+
const runtimeSessionArtifacts = opts.sessionArtifacts;
|
|
354
|
+
const resolveRunOptions = (runOpts) => {
|
|
355
|
+
const { sessionArtifacts: _sessionArtifacts, ...coreRunOpts } = runOpts;
|
|
356
|
+
return {
|
|
357
|
+
...coreRunOpts,
|
|
358
|
+
modelProvider: runOpts.modelProvider ?? modelProvider,
|
|
359
|
+
defaultModel: runOpts.defaultModel ?? defaultModel,
|
|
360
|
+
modelOverride: runOpts.modelOverride ?? modelOverride,
|
|
361
|
+
responsesMode: runOpts.responsesMode ?? responsesMode,
|
|
362
|
+
};
|
|
363
|
+
};
|
|
364
|
+
return {
|
|
365
|
+
projectConfig,
|
|
366
|
+
modelAliasResolver,
|
|
367
|
+
configuredFallbackProvider,
|
|
368
|
+
effectiveFallbackProvider,
|
|
369
|
+
modelProvider,
|
|
370
|
+
defaultModel,
|
|
371
|
+
modelOverride,
|
|
372
|
+
responsesMode,
|
|
373
|
+
sessionArtifacts: runtimeSessionArtifacts,
|
|
374
|
+
resolveRunOptions,
|
|
375
|
+
runDeck: async (runOpts) => {
|
|
376
|
+
const resolved = resolveRunOptions(runOpts);
|
|
377
|
+
const effectiveSessionArtifacts = resolveSessionArtifactsConfig({
|
|
378
|
+
runtimeConfig: runtimeSessionArtifacts,
|
|
379
|
+
runConfig: runOpts.sessionArtifacts,
|
|
380
|
+
});
|
|
381
|
+
if (!effectiveSessionArtifacts) {
|
|
382
|
+
return await runDeckCore(resolved);
|
|
383
|
+
}
|
|
384
|
+
const artifacts = withSessionArtifacts({
|
|
385
|
+
config: effectiveSessionArtifacts,
|
|
386
|
+
trace: resolved.trace,
|
|
387
|
+
onStateUpdate: resolved.onStateUpdate,
|
|
388
|
+
state: resolved.state,
|
|
389
|
+
});
|
|
390
|
+
try {
|
|
391
|
+
return await runDeckCore({
|
|
392
|
+
...resolved,
|
|
393
|
+
state: artifacts.state,
|
|
394
|
+
trace: artifacts.trace,
|
|
395
|
+
onStateUpdate: artifacts.onStateUpdate,
|
|
396
|
+
});
|
|
397
|
+
}
|
|
398
|
+
finally {
|
|
399
|
+
artifacts.finalize();
|
|
400
|
+
}
|
|
401
|
+
},
|
|
402
|
+
};
|
|
403
|
+
}
|
|
404
|
+
export async function runDeck(opts) {
|
|
405
|
+
if (opts.runtime && opts.runtimeOptions) {
|
|
406
|
+
throw new Error("runDeck received both runtime and runtimeOptions. Pass only one.");
|
|
407
|
+
}
|
|
408
|
+
const runtime = opts.runtime ??
|
|
409
|
+
await createDefaultedRuntime({
|
|
410
|
+
...opts.runtimeOptions,
|
|
411
|
+
configHint: opts.runtimeOptions?.configHint ?? opts.path,
|
|
412
|
+
});
|
|
413
|
+
const { runtime: _runtime, runtimeOptions: _runtimeOptions, ...runOpts } = opts;
|
|
414
|
+
return await runtime.runDeck(runOpts);
|
|
415
|
+
}
|
|
@@ -128,5 +128,30 @@ export async function handleDurableStreamRequest(request) {
|
|
|
128
128
|
});
|
|
129
129
|
}
|
|
130
130
|
function formatSseEvent(event) {
|
|
131
|
-
|
|
131
|
+
const payload = normalizeSsePayload(event.data);
|
|
132
|
+
const type = payload.type;
|
|
133
|
+
return `id: ${event.offset}\nevent: ${type}\ndata: ${JSON.stringify(payload)}\n\n`;
|
|
134
|
+
}
|
|
135
|
+
function normalizeSsePayload(value) {
|
|
136
|
+
if (value && typeof value === "object" && !Array.isArray(value)) {
|
|
137
|
+
const record = value;
|
|
138
|
+
const rawType = typeof record.type === "string"
|
|
139
|
+
? record.type.trim()
|
|
140
|
+
: "gambit.event";
|
|
141
|
+
const type = sanitizeSseEventType(rawType);
|
|
142
|
+
return {
|
|
143
|
+
...record,
|
|
144
|
+
type,
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
return {
|
|
148
|
+
type: "gambit.event",
|
|
149
|
+
value,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
function sanitizeSseEventType(value) {
|
|
153
|
+
if (!value)
|
|
154
|
+
return "gambit.event";
|
|
155
|
+
const normalized = value.replace(/[^A-Za-z0-9_.-]/g, "_");
|
|
156
|
+
return normalized.length > 0 ? normalized : "gambit.event";
|
|
132
157
|
}
|
|
@@ -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,26 @@
|
|
|
1
|
+
import { GOOGLE_PREFIX } from "./providers/google.js";
|
|
2
|
+
import { OLLAMA_PREFIX } from "./providers/ollama.js";
|
|
3
|
+
import { OPENROUTER_PREFIX } from "./providers/openrouter.js";
|
|
4
|
+
import { CODEX_PREFIX } from "./providers/codex.js";
|
|
5
|
+
const LEGACY_CODEX_PREFIX = "codex/";
|
|
6
|
+
const CODEX_PROVIDER_ALIAS = "codex-cli";
|
|
7
|
+
export function createProviderMatchers(effectiveFallbackProvider) {
|
|
8
|
+
const isUnprefixedModel = (model) => model.trim() !== CODEX_PROVIDER_ALIAS &&
|
|
9
|
+
!model.startsWith(OPENROUTER_PREFIX) &&
|
|
10
|
+
!model.startsWith(OLLAMA_PREFIX) &&
|
|
11
|
+
!model.startsWith(GOOGLE_PREFIX) &&
|
|
12
|
+
!model.startsWith(CODEX_PREFIX) &&
|
|
13
|
+
!model.startsWith(LEGACY_CODEX_PREFIX);
|
|
14
|
+
return {
|
|
15
|
+
isUnprefixedModel,
|
|
16
|
+
matchesOpenRouter: (model) => model.startsWith(OPENROUTER_PREFIX) ||
|
|
17
|
+
(isUnprefixedModel(model) && effectiveFallbackProvider === "openrouter"),
|
|
18
|
+
matchesOllama: (model) => model.startsWith(OLLAMA_PREFIX) ||
|
|
19
|
+
(isUnprefixedModel(model) && effectiveFallbackProvider === "ollama"),
|
|
20
|
+
matchesGoogle: (model) => model.startsWith(GOOGLE_PREFIX) ||
|
|
21
|
+
(isUnprefixedModel(model) && effectiveFallbackProvider === "google"),
|
|
22
|
+
matchesCodex: (model) => model.trim() === CODEX_PROVIDER_ALIAS ||
|
|
23
|
+
model.startsWith(CODEX_PREFIX) ||
|
|
24
|
+
(isUnprefixedModel(model) && effectiveFallbackProvider === "codex-cli"),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { resolveEffectivePermissions } from "@bolt-foundry/gambit-core";
|
|
2
|
+
import type { Guardrails, ModelMessage, ModelProvider, PermissionDeclarationInput, PermissionTrace, ToolDefinition } from "@bolt-foundry/gambit-core";
|
|
2
3
|
export declare const logger: Console;
|
|
3
4
|
export type ChatCompletionsRequest = {
|
|
4
5
|
model: string;
|
|
@@ -59,5 +60,15 @@ export declare function chatCompletionsWithDeck(args: {
|
|
|
59
60
|
guardrails?: Partial<Guardrails>;
|
|
60
61
|
defaultModel?: string;
|
|
61
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;
|
|
62
73
|
}): Promise<ChatCompletionsResponse>;
|
|
63
74
|
//# sourceMappingURL=openai_compat.d.ts.map
|