@bolt-foundry/gambit 0.8.3 → 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.
- package/CHANGELOG.md +34 -2
- package/README.md +79 -16
- package/esm/_dnt.polyfills.d.ts +17 -0
- package/esm/_dnt.polyfills.d.ts.map +1 -1
- package/esm/_dnt.polyfills.js +122 -0
- package/esm/deps/jsr.io/@std/collections/1.1.5/deep_merge.d.ts +322 -0
- package/esm/deps/jsr.io/@std/collections/1.1.5/deep_merge.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.1.5/deep_merge.js +105 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/_create_walk_entry.d.ts +14 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/_create_walk_entry.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/_create_walk_entry.js +34 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/_get_file_info_type.d.ts +13 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/_get_file_info_type.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/_get_file_info_type.js +18 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/_is_same_path.d.ts +10 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/_is_same_path.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/_is_same_path.js +17 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/_is_subdir.d.ts +12 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/_is_subdir.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/_is_subdir.js +25 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/_to_path_string.d.ts +9 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/_to_path_string.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/_to_path_string.js +13 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/copy.d.ts +117 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/copy.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/copy.js +313 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/empty_dir.d.ts +48 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/empty_dir.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/empty_dir.js +87 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/ensure_dir.d.ts +49 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/ensure_dir.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/ensure_dir.js +102 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/ensure_file.d.ts +47 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/ensure_file.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/ensure_file.js +90 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/ensure_link.d.ts +49 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/ensure_link.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/ensure_link.js +61 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/ensure_symlink.d.ts +70 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/ensure_symlink.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/ensure_symlink.js +156 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/eol.d.ts +52 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/eol.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/eol.js +67 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/exists.d.ts +218 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/exists.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/exists.js +271 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/expand_glob.d.ts +267 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/expand_glob.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/expand_glob.js +442 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/mod.d.ts +29 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/mod.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/mod.js +29 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/move.d.ts +86 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/move.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/move.js +142 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/walk.d.ts +777 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/walk.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fs/1.0.22/walk.js +846 -0
- package/esm/deps/jsr.io/@std/json/1.0.2/types.d.ts +5 -0
- package/esm/deps/jsr.io/@std/json/1.0.2/types.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/json/1.0.2/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/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 +10647 -4637
- 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 +810 -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 +238 -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 +260 -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 +3186 -652
- 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 +873 -0
- package/esm/src/server_types.d.ts +110 -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 +135 -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 +164 -0
- package/esm/src/workspace_contract.d.ts +76 -0
- package/esm/src/workspace_contract.d.ts.map +1 -0
- package/esm/src/workspace_contract.js +74 -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 +122 -0
- package/script/deps/jsr.io/@std/collections/1.1.5/deep_merge.d.ts +322 -0
- package/script/deps/jsr.io/@std/collections/1.1.5/deep_merge.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/collections/1.1.5/deep_merge.js +108 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/_create_walk_entry.d.ts +14 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/_create_walk_entry.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/_create_walk_entry.js +71 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/_get_file_info_type.d.ts +13 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/_get_file_info_type.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/_get_file_info_type.js +21 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/_is_same_path.d.ts +10 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/_is_same_path.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/_is_same_path.js +20 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/_is_subdir.d.ts +12 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/_is_subdir.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/_is_subdir.js +28 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/_to_path_string.d.ts +9 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/_to_path_string.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/_to_path_string.js +16 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/copy.d.ts +117 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/copy.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/copy.js +350 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/empty_dir.d.ts +48 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/empty_dir.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/empty_dir.js +124 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/ensure_dir.d.ts +49 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/ensure_dir.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/ensure_dir.js +139 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/ensure_file.d.ts +47 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/ensure_file.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/ensure_file.js +127 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/ensure_link.d.ts +49 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/ensure_link.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/ensure_link.js +98 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/ensure_symlink.d.ts +70 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/ensure_symlink.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/ensure_symlink.js +193 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/eol.d.ts +52 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/eol.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/eol.js +105 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/exists.d.ts +218 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/exists.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/exists.js +308 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/expand_glob.d.ts +267 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/expand_glob.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/expand_glob.js +479 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/mod.d.ts +29 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/mod.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/mod.js +45 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/move.d.ts +86 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/move.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/move.js +179 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/walk.d.ts +777 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/walk.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/fs/1.0.22/walk.js +883 -0
- package/script/deps/jsr.io/@std/json/1.0.2/types.d.ts +5 -0
- package/script/deps/jsr.io/@std/json/1.0.2/types.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/json/1.0.2/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/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 +10647 -4637
- 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 +850 -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 +238 -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 +260 -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 +3193 -659
- 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 +910 -0
- package/script/src/server_types.d.ts +110 -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 +172 -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 +201 -0
- package/script/src/workspace_contract.d.ts +76 -0
- package/script/src/workspace_contract.d.ts.map +1 -0
- package/script/src/workspace_contract.js +82 -0
package/script/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/script/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/script/mod.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.startWebSocketSimulator = exports.createGoogleProvider = exports.createOllamaProvider = exports.createOpenRouterProvider = exports.renderDeck = exports.chatCompletionsWithDeck = exports.runDeck = exports.isGambitEndSignal = exports.defineDeck = exports.defineCard = void 0;
|
|
3
|
+
exports.startWebSocketSimulator = exports.createGoogleProvider = exports.createOllamaProvider = exports.createOpenRouterProvider = exports.renderDeck = exports.chatCompletionsWithDeck = exports.runDeckCore = exports.runDeck = exports.createDefaultedRuntime = exports.isRunCanceledError = exports.isGambitEndSignal = exports.defineDeck = exports.defineCard = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Gambit exports for authoring and running decks/cards with runtime helpers.
|
|
6
6
|
*
|
|
@@ -16,15 +16,24 @@ Object.defineProperty(exports, "defineDeck", { enumerable: true, get: function (
|
|
|
16
16
|
/** Check if a value is an explicit end-of-run signal. */
|
|
17
17
|
var gambit_core_3 = require("@bolt-foundry/gambit-core");
|
|
18
18
|
Object.defineProperty(exports, "isGambitEndSignal", { enumerable: true, get: function () { return gambit_core_3.isGambitEndSignal; } });
|
|
19
|
-
/**
|
|
19
|
+
/** Check whether an error represents runtime cancellation. */
|
|
20
20
|
var gambit_core_4 = require("@bolt-foundry/gambit-core");
|
|
21
|
-
Object.defineProperty(exports, "
|
|
21
|
+
Object.defineProperty(exports, "isRunCanceledError", { enumerable: true, get: function () { return gambit_core_4.isRunCanceledError; } });
|
|
22
|
+
/** Build a runtime with CLI-equivalent provider defaults and routing. */
|
|
23
|
+
var default_runtime_js_1 = require("./src/default_runtime.js");
|
|
24
|
+
Object.defineProperty(exports, "createDefaultedRuntime", { enumerable: true, get: function () { return default_runtime_js_1.createDefaultedRuntime; } });
|
|
25
|
+
/** Run a deck with default provider/model/runtime behavior. */
|
|
26
|
+
var default_runtime_js_2 = require("./src/default_runtime.js");
|
|
27
|
+
Object.defineProperty(exports, "runDeck", { enumerable: true, get: function () { return default_runtime_js_2.runDeck; } });
|
|
28
|
+
/** Run a deck directly through gambit-core without gambit defaults. */
|
|
29
|
+
var gambit_core_5 = require("@bolt-foundry/gambit-core");
|
|
30
|
+
Object.defineProperty(exports, "runDeckCore", { enumerable: true, get: function () { return gambit_core_5.runDeck; } });
|
|
22
31
|
/** OpenAI Chat Completions compatibility helper for a deck. */
|
|
23
32
|
var openai_compat_js_1 = require("./src/openai_compat.js");
|
|
24
33
|
Object.defineProperty(exports, "chatCompletionsWithDeck", { enumerable: true, get: function () { return openai_compat_js_1.chatCompletionsWithDeck; } });
|
|
25
34
|
/** Render a deck to a human-readable outline or debug view. */
|
|
26
|
-
var
|
|
27
|
-
Object.defineProperty(exports, "renderDeck", { enumerable: true, get: function () { return
|
|
35
|
+
var gambit_core_6 = require("@bolt-foundry/gambit-core");
|
|
36
|
+
Object.defineProperty(exports, "renderDeck", { enumerable: true, get: function () { return gambit_core_6.renderDeck; } });
|
|
28
37
|
/** Provider factory for OpenRouter-backed model calls. */
|
|
29
38
|
var openrouter_js_1 = require("./src/providers/openrouter.js");
|
|
30
39
|
Object.defineProperty(exports, "createOpenRouterProvider", { enumerable: true, get: function () { return openrouter_js_1.createOpenRouterProvider; } });
|
|
@@ -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/script/src/cli_utils.js
CHANGED
|
@@ -36,6 +36,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.parsePortValue = parsePortValue;
|
|
37
37
|
exports.normalizeFlagList = normalizeFlagList;
|
|
38
38
|
exports.slugifyDeckPath = slugifyDeckPath;
|
|
39
|
+
exports.resolveProjectRoot = resolveProjectRoot;
|
|
39
40
|
exports.defaultSessionRoot = defaultSessionRoot;
|
|
40
41
|
exports.defaultTestBotStatePath = defaultTestBotStatePath;
|
|
41
42
|
exports.enrichStateMeta = enrichStateMeta;
|
|
@@ -89,12 +90,24 @@ function findProjectRoot(startDir) {
|
|
|
89
90
|
}
|
|
90
91
|
return undefined;
|
|
91
92
|
}
|
|
93
|
+
function resolveProjectRoot(startDir) {
|
|
94
|
+
return findProjectRoot(startDir);
|
|
95
|
+
}
|
|
92
96
|
function defaultSessionRoot(deckPath) {
|
|
93
97
|
const resolvedDeckPath = path.resolve(deckPath);
|
|
98
|
+
const marker = `${path.SEPARATOR}.gambit${path.SEPARATOR}workspaces${path.SEPARATOR}`;
|
|
99
|
+
const markerIndex = resolvedDeckPath.lastIndexOf(marker);
|
|
100
|
+
if (markerIndex >= 0) {
|
|
101
|
+
const suffix = resolvedDeckPath.slice(markerIndex + marker.length);
|
|
102
|
+
const markerSegments = suffix.split(path.SEPARATOR).filter(Boolean);
|
|
103
|
+
if (markerSegments.length >= 2 && markerSegments[1] === "deck") {
|
|
104
|
+
return path.resolve(resolvedDeckPath.slice(0, markerIndex + marker.length));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
94
107
|
const deckDir = path.dirname(resolvedDeckPath);
|
|
95
108
|
const projectRoot = findProjectRoot(deckDir);
|
|
96
109
|
const baseDir = projectRoot ?? deckDir;
|
|
97
|
-
return path.join(baseDir, ".gambit", "
|
|
110
|
+
return path.join(baseDir, ".gambit", "workspaces");
|
|
98
111
|
}
|
|
99
112
|
function defaultTestBotStatePath(deckPath) {
|
|
100
113
|
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,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
|
-
|
|
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
|
}
|