@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/CHANGELOG.md
CHANGED
|
@@ -1,14 +1,46 @@
|
|
|
1
1
|
+++
|
|
2
2
|
[release]
|
|
3
|
-
since = "
|
|
3
|
+
since = "23ccdd7fdda8909a1395dff3eb2bbbaae8cba692"
|
|
4
4
|
+++
|
|
5
5
|
|
|
6
6
|
# Changelog
|
|
7
7
|
|
|
8
|
-
## Unreleased (v0.8.
|
|
8
|
+
## Unreleased (v0.8.5)
|
|
9
9
|
|
|
10
10
|
- TBD
|
|
11
11
|
|
|
12
|
+
## v0.8.5-rc.4
|
|
13
|
+
|
|
14
|
+
- chore(infra): run `deno task build_npm` for gambit during `bft precommit`
|
|
15
|
+
- fix(gambit): ignore dnt TS2345 diagnostics from vendored `@std/fs` and
|
|
16
|
+
`@std/toml` npm-compat sources
|
|
17
|
+
|
|
18
|
+
## v0.8.5-rc.3
|
|
19
|
+
|
|
20
|
+
- fix(gambit-release): support nested core path and cut 0.8.5-rc.2
|
|
21
|
+
- refactor(gambit-core): remove built-in exec tool from runtime
|
|
22
|
+
- fix(gambit-core): partition worker sandbox by runtime host
|
|
23
|
+
- test(gambit-core): add unsupported worker sandbox coverage
|
|
24
|
+
- docs(gambit-core): document worker sandbox host contract
|
|
25
|
+
- ci(gambit-core): gate npm compatibility in core CI
|
|
26
|
+
|
|
27
|
+
## v0.8.5-rc.2
|
|
28
|
+
|
|
29
|
+
- TBD
|
|
30
|
+
|
|
31
|
+
## v0.8.5-rc.1
|
|
32
|
+
|
|
33
|
+
- feat(gambit): remove `gambit init`; onboarding now routes through
|
|
34
|
+
`gambit serve`
|
|
35
|
+
- feat(gambit): add `createDefaultedRuntime` and defaulted `runDeck` wrapper
|
|
36
|
+
with CLI-equivalent provider/model routing for library callers
|
|
37
|
+
- refactor(gambit): route CLI runtime/provider setup through shared
|
|
38
|
+
`default_runtime` construction path
|
|
39
|
+
- feat(demo-runner): migrate demo test-deck prompt generation to Gambit default
|
|
40
|
+
runtime wrapper (no hardwired OpenRouter provider)
|
|
41
|
+
- docs(gambit): add migration guidance for `runDeck` wrapper and `runDeckCore`
|
|
42
|
+
replacement mapping
|
|
43
|
+
|
|
12
44
|
## v0.8.3
|
|
13
45
|
|
|
14
46
|
- fix(gambit): include CLI docs/reference files in binary builds
|
package/README.md
CHANGED
|
@@ -22,15 +22,14 @@ npx @bolt-foundry/gambit demo
|
|
|
22
22
|
Downloads example files (hello decks plus the `examples/` gallery) and sets
|
|
23
23
|
environment variables.
|
|
24
24
|
|
|
25
|
-
To
|
|
25
|
+
To start onboarding with the simulator, run:
|
|
26
26
|
|
|
27
27
|
```
|
|
28
|
-
npx @bolt-foundry/gambit
|
|
28
|
+
npx @bolt-foundry/gambit serve gambit/hello.deck.md
|
|
29
|
+
open http://localhost:8000/debug
|
|
29
30
|
```
|
|
30
31
|
|
|
31
|
-
|
|
32
|
-
`schemas/`, `.gambit/`) with README guides so you can start authoring your own
|
|
33
|
-
workflows immediately.
|
|
32
|
+
Use the Build tab to draft your own workspace decks and scenarios.
|
|
34
33
|
|
|
35
34
|
Run an example in the terminal (`repl`):
|
|
36
35
|
|
|
@@ -100,10 +99,10 @@ Drop into a REPL (streams by default):
|
|
|
100
99
|
npx @bolt-foundry/gambit repl <deck>
|
|
101
100
|
```
|
|
102
101
|
|
|
103
|
-
Run a persona against a root deck (
|
|
102
|
+
Run a persona against a root deck (scenario):
|
|
104
103
|
|
|
105
104
|
```
|
|
106
|
-
npx @bolt-foundry/gambit
|
|
105
|
+
npx @bolt-foundry/gambit scenario <root-deck> --test-deck <persona-deck>
|
|
107
106
|
```
|
|
108
107
|
|
|
109
108
|
Grade a saved session:
|
|
@@ -124,6 +123,23 @@ Tracing and state:
|
|
|
124
123
|
`--verbose` to print events\
|
|
125
124
|
`--state <file>` to persist a session.
|
|
126
125
|
|
|
126
|
+
### Worker sandbox defaults
|
|
127
|
+
|
|
128
|
+
- Deck-executing CLI surfaces default to worker sandbox execution.
|
|
129
|
+
- Use `--no-worker-sandbox` (or `--legacy-exec`) to force legacy in-process
|
|
130
|
+
execution.
|
|
131
|
+
- `--worker-sandbox` explicitly forces worker execution on.
|
|
132
|
+
- `--sandbox` / `--no-sandbox` are deprecated aliases.
|
|
133
|
+
- `gambit.toml` equivalent:
|
|
134
|
+
```toml
|
|
135
|
+
[execution]
|
|
136
|
+
worker_sandbox = false # same as --no-worker-sandbox
|
|
137
|
+
# legacy_exec = true # equivalent rollback toggle
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
The npm launcher (`npx @bolt-foundry/gambit ...`) runs the Gambit CLI binary for
|
|
141
|
+
your platform, so these defaults and flags apply there as well.
|
|
142
|
+
|
|
127
143
|
## Using the Simulator
|
|
128
144
|
|
|
129
145
|
The simulator is the local Debug UI that streams runs and renders traces.
|
|
@@ -173,6 +189,59 @@ Define `contextSchema`/`responseSchema` with Zod to validate IO, and implement\
|
|
|
173
189
|
`ctx.spawnAndWait({ path, input })`. Emit structured trace events with\
|
|
174
190
|
`ctx.log(...)`.
|
|
175
191
|
|
|
192
|
+
### Runtime defaults for programmatic `runDeck`
|
|
193
|
+
|
|
194
|
+
`runDeck` from `@bolt-foundry/gambit` now uses CLI-equivalent provider/model
|
|
195
|
+
defaults (alias expansion, provider routing, fallback behavior).
|
|
196
|
+
|
|
197
|
+
Before (direct-provider setup in each caller):
|
|
198
|
+
|
|
199
|
+
```ts
|
|
200
|
+
import { createOpenRouterProvider, runDeck } from "jsr:@bolt-foundry/gambit";
|
|
201
|
+
|
|
202
|
+
const provider = createOpenRouterProvider({
|
|
203
|
+
apiKey: Deno.env.get("OPENROUTER_API_KEY")!,
|
|
204
|
+
});
|
|
205
|
+
await runDeck({
|
|
206
|
+
path: "./root.deck.md",
|
|
207
|
+
input: { message: "hi" },
|
|
208
|
+
modelProvider: provider,
|
|
209
|
+
});
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
After (defaulted wrapper):
|
|
213
|
+
|
|
214
|
+
```ts
|
|
215
|
+
import { runDeck } from "jsr:@bolt-foundry/gambit";
|
|
216
|
+
|
|
217
|
+
await runDeck({
|
|
218
|
+
path: "./root.deck.md",
|
|
219
|
+
input: { message: "hi" },
|
|
220
|
+
});
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
Per-runtime override (shared runtime object):
|
|
224
|
+
|
|
225
|
+
```ts
|
|
226
|
+
import { createDefaultedRuntime, runDeck } from "jsr:@bolt-foundry/gambit";
|
|
227
|
+
|
|
228
|
+
const runtime = await createDefaultedRuntime({
|
|
229
|
+
fallbackProvider: "codex-cli",
|
|
230
|
+
});
|
|
231
|
+
|
|
232
|
+
await runDeck({
|
|
233
|
+
runtime,
|
|
234
|
+
path: "./root.deck.md",
|
|
235
|
+
input: { message: "hi" },
|
|
236
|
+
});
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
Replacement mapping:
|
|
240
|
+
|
|
241
|
+
- Legacy direct core passthrough export: `runDeck` -> `runDeckCore`
|
|
242
|
+
- Defaulted wrapper export: `runDeck`
|
|
243
|
+
- Runtime builder: `createDefaultedRuntime`
|
|
244
|
+
|
|
176
245
|
---
|
|
177
246
|
|
|
178
247
|
## Author your first deck
|
|
@@ -226,7 +295,7 @@ npx @bolt-foundry/gambit run ./echo.deck.ts --context '{"text":"ping"}'
|
|
|
226
295
|
+++
|
|
227
296
|
label = "agent_with_time"
|
|
228
297
|
modelParams = { model = "openai/gpt-4o-mini", temperature = 0 }
|
|
229
|
-
[[
|
|
298
|
+
[[actions]]
|
|
230
299
|
name = "get_time"
|
|
231
300
|
path = "./get_time.deck.ts"
|
|
232
301
|
description = "Return the current ISO timestamp."
|
|
@@ -271,8 +340,8 @@ npx @bolt-foundry/gambit serve ./examples/respond_flow/decks/root.deck.ts --port
|
|
|
271
340
|
Then:
|
|
272
341
|
|
|
273
342
|
1. Open `http://localhost:8000/test`, pick the **Escalation persona**, and run
|
|
274
|
-
it. Leave the “Use
|
|
275
|
-
seed the init form automatically.
|
|
343
|
+
it. Leave the “Use scenario deck input for init” toggle on to see persona
|
|
344
|
+
data seed the init form automatically.
|
|
276
345
|
2. Switch to the Debug tab to inspect the session—the child deck emits a
|
|
277
346
|
`gambit_respond` payload that now shows up as a structured assistant turn.
|
|
278
347
|
3. Head to the Calibrate tab and run the **Respond payload grader** to exercise
|
|
@@ -289,12 +358,6 @@ export OPENROUTER_API_KEY=...
|
|
|
289
358
|
deno run -A jsr:@bolt-foundry/gambit/cli demo
|
|
290
359
|
```
|
|
291
360
|
|
|
292
|
-
Starter project:
|
|
293
|
-
|
|
294
|
-
```
|
|
295
|
-
deno run -A jsr:@bolt-foundry/gambit/cli init my-project
|
|
296
|
-
```
|
|
297
|
-
|
|
298
361
|
Run a deck:
|
|
299
362
|
|
|
300
363
|
```
|
package/esm/_dnt.polyfills.d.ts
CHANGED
|
@@ -97,5 +97,22 @@ interface ImportMetaPonyfill extends ImportMetaPonyfillCommonjs, ImportMetaPonyf
|
|
|
97
97
|
export declare let import_meta_ponyfill_commonjs: ImportMetaPonyfillCommonjs;
|
|
98
98
|
export declare let import_meta_ponyfill_esmodule: ImportMetaPonyfillEsmodule;
|
|
99
99
|
export declare let import_meta_ponyfill: ImportMetaPonyfill;
|
|
100
|
+
declare global {
|
|
101
|
+
interface ArrayConstructor {
|
|
102
|
+
fromAsync<T>(iterableOrArrayLike: AsyncIterable<T> | Iterable<T | Promise<T>> | ArrayLike<T | Promise<T>>): Promise<T[]>;
|
|
103
|
+
fromAsync<T, U>(iterableOrArrayLike: AsyncIterable<T> | Iterable<T> | ArrayLike<T>, mapFn: (value: Awaited<T>) => U, thisArg?: any): Promise<Awaited<U>[]>;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
export {};
|
|
107
|
+
declare global {
|
|
108
|
+
interface Object {
|
|
109
|
+
/**
|
|
110
|
+
* Determines whether an object has a property with the specified name.
|
|
111
|
+
* @param o An object.
|
|
112
|
+
* @param v A property name.
|
|
113
|
+
*/
|
|
114
|
+
hasOwn(o: object, v: PropertyKey): boolean;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
100
117
|
export {};
|
|
101
118
|
//# sourceMappingURL=_dnt.polyfills.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_dnt.polyfills.d.ts","sourceRoot":"","sources":["../src/_dnt.polyfills.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAgC,KAAK,GAAG,EAAE,MAAM,UAAU,CAAC;AAGlE,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,UAAU;QAClB;;;;;;;;;;;;;;WAcG;QACH,GAAG,EAAE,MAAM,CAAC;QACZ;;;;;;;;;;;;WAYG;QACH,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS,GAAG,MAAM,CAAC;QACtE;;;;;;;;WAQG;QACH,IAAI,EAAE,OAAO,CAAC;QAEd;;;;;;;;;;;;WAYG;QACH,QAAQ,EAAE,MAAM,CAAC;QAEjB;;;;;;;;;;;;WAYG;QACH,OAAO,EAAE,MAAM,CAAC;KACjB;CACF;AAED,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACpD,KAAK,UAAU,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;AACnD,UAAU,0BAA0B;IAClC,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC;CACxD;AACD,UAAU,0BAA0B;IAClC,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,CAAC;CACtC;AACD,UAAU,kBACR,SAAQ,0BAA0B,EAAE,0BAA0B;CAC/D;AAiBD,eAAO,IAAI,6BAA6B,EA2BnC,0BAA0B,CAAC;AAMhC,eAAO,IAAI,6BAA6B,EA4DnC,0BAA0B,CAAC;AAMhC,eAAO,IAAI,oBAAoB,EAoB1B,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"_dnt.polyfills.d.ts","sourceRoot":"","sources":["../src/_dnt.polyfills.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAgC,KAAK,GAAG,EAAE,MAAM,UAAU,CAAC;AAGlE,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,UAAU;QAClB;;;;;;;;;;;;;;WAcG;QACH,GAAG,EAAE,MAAM,CAAC;QACZ;;;;;;;;;;;;WAYG;QACH,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS,GAAG,MAAM,CAAC;QACtE;;;;;;;;WAQG;QACH,IAAI,EAAE,OAAO,CAAC;QAEd;;;;;;;;;;;;WAYG;QACH,QAAQ,EAAE,MAAM,CAAC;QAEjB;;;;;;;;;;;;WAYG;QACH,OAAO,EAAE,MAAM,CAAC;KACjB;CACF;AAED,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACpD,KAAK,UAAU,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;AACnD,UAAU,0BAA0B;IAClC,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC;CACxD;AACD,UAAU,0BAA0B;IAClC,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,CAAC;CACtC;AACD,UAAU,kBACR,SAAQ,0BAA0B,EAAE,0BAA0B;CAC/D;AAiBD,eAAO,IAAI,6BAA6B,EA2BnC,0BAA0B,CAAC;AAMhC,eAAO,IAAI,6BAA6B,EA4DnC,0BAA0B,CAAC;AAMhC,eAAO,IAAI,oBAAoB,EAoB1B,kBAAkB,CAAC;AAExB,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,gBAAgB;QACxB,SAAS,CAAC,CAAC,EACP,mBAAmB,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAC7F,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;QAEhB,SAAS,CAAC,CAAC,EAAE,CAAC,EACV,mBAAmB,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAClE,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAC/B,OAAO,CAAC,EAAE,GAAG,GACd,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;KAC1B;CACF;AAoID,OAAO,EAAE,CAAC;AAeV,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd;;;;WAIG;QACH,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;KAC5C;CACF;AAED,OAAO,EAAE,CAAC"}
|
package/esm/_dnt.polyfills.js
CHANGED
|
@@ -125,3 +125,125 @@ export let import_meta_ponyfill = ((...args) => {
|
|
|
125
125
|
//@ts-ignore
|
|
126
126
|
return import_meta_ponyfill(...args);
|
|
127
127
|
});
|
|
128
|
+
// From https://github.com/es-shims/array-from-async/blob/4a5ff83947b861f35b380d5d4f20da2f07698638/index.mjs
|
|
129
|
+
// Tried to have dnt depend on the package instead, but it distributes as an
|
|
130
|
+
// ES module, so doesn't work with CommonJS.
|
|
131
|
+
//
|
|
132
|
+
// Code below:
|
|
133
|
+
//
|
|
134
|
+
// Copyright 2021 J. S. Choi
|
|
135
|
+
//
|
|
136
|
+
// Redistribution and use in source and binary forms, with or without
|
|
137
|
+
// modification, are permitted provided that the following conditions
|
|
138
|
+
// are met:
|
|
139
|
+
//
|
|
140
|
+
// 1. Redistributions of source code must retain the above copyright
|
|
141
|
+
// notice, this list of conditions and the following disclaimer.
|
|
142
|
+
//
|
|
143
|
+
// 2. Redistributions in binary form must reproduce the above copyright
|
|
144
|
+
// notice, this list of conditions and the following disclaimer in the
|
|
145
|
+
// documentation and/or other materials provided with the distribution.
|
|
146
|
+
//
|
|
147
|
+
// 3. Neither the name of the copyright holder nor the names of its
|
|
148
|
+
// contributors may be used to endorse or promote products derived from
|
|
149
|
+
// this software without specific prior written permission.
|
|
150
|
+
//
|
|
151
|
+
// **This software is provided by the copyright holders and contributors
|
|
152
|
+
// "as is" and any express or implied warranties, including, but not
|
|
153
|
+
// limited to, the implied warranties of merchantability and fitness for a
|
|
154
|
+
// particular purpose are disclaimed. In no event shall the copyright
|
|
155
|
+
// holder or contributors be liable for any direct, indirect, incidental,
|
|
156
|
+
// special, exemplary, or consequential damages (including, but not limited
|
|
157
|
+
// to, procurement of substitute goods or services; loss of use, data, or
|
|
158
|
+
// profits; or business interruption) however caused and on any theory of
|
|
159
|
+
// liability, whether in contract, strict liability, or tort (including
|
|
160
|
+
// negligence or otherwise) arising in any way out of the use of this
|
|
161
|
+
// software, even if advised of the possibility of such damage.**
|
|
162
|
+
const { MAX_SAFE_INTEGER } = Number;
|
|
163
|
+
const iteratorSymbol = Symbol.iterator;
|
|
164
|
+
const asyncIteratorSymbol = Symbol.asyncIterator;
|
|
165
|
+
const IntrinsicArray = Array;
|
|
166
|
+
const tooLongErrorMessage = 'Input is too long and exceeded Number.MAX_SAFE_INTEGER times.';
|
|
167
|
+
function isConstructor(obj) {
|
|
168
|
+
if (obj != null) {
|
|
169
|
+
const prox = new Proxy(obj, {
|
|
170
|
+
construct() {
|
|
171
|
+
return prox;
|
|
172
|
+
},
|
|
173
|
+
});
|
|
174
|
+
try {
|
|
175
|
+
new prox;
|
|
176
|
+
return true;
|
|
177
|
+
}
|
|
178
|
+
catch (err) {
|
|
179
|
+
return false;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
return false;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
async function fromAsync(items, mapfn, thisArg) {
|
|
187
|
+
const itemsAreIterable = (asyncIteratorSymbol in items ||
|
|
188
|
+
iteratorSymbol in items);
|
|
189
|
+
if (itemsAreIterable) {
|
|
190
|
+
const result = isConstructor(this)
|
|
191
|
+
? new this
|
|
192
|
+
: IntrinsicArray(0);
|
|
193
|
+
let i = 0;
|
|
194
|
+
for await (const v of items) {
|
|
195
|
+
if (i > MAX_SAFE_INTEGER) {
|
|
196
|
+
throw TypeError(tooLongErrorMessage);
|
|
197
|
+
}
|
|
198
|
+
else if (mapfn) {
|
|
199
|
+
result[i] = await mapfn.call(thisArg, v, i);
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
result[i] = v;
|
|
203
|
+
}
|
|
204
|
+
i++;
|
|
205
|
+
}
|
|
206
|
+
result.length = i;
|
|
207
|
+
return result;
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
// In this case, the items are assumed to be an arraylike object with
|
|
211
|
+
// a length property and integer properties for each element.
|
|
212
|
+
const { length } = items;
|
|
213
|
+
const result = isConstructor(this)
|
|
214
|
+
? new this(length)
|
|
215
|
+
: IntrinsicArray(length);
|
|
216
|
+
let i = 0;
|
|
217
|
+
while (i < length) {
|
|
218
|
+
if (i > MAX_SAFE_INTEGER) {
|
|
219
|
+
throw TypeError(tooLongErrorMessage);
|
|
220
|
+
}
|
|
221
|
+
const v = await items[i];
|
|
222
|
+
if (mapfn) {
|
|
223
|
+
result[i] = await mapfn.call(thisArg, v, i);
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
result[i] = v;
|
|
227
|
+
}
|
|
228
|
+
i++;
|
|
229
|
+
}
|
|
230
|
+
result.length = i;
|
|
231
|
+
return result;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
if (!Array.fromAsync) {
|
|
235
|
+
Array.fromAsync = fromAsync;
|
|
236
|
+
}
|
|
237
|
+
if (!Object.hasOwn) {
|
|
238
|
+
Object.defineProperty(Object, "hasOwn", {
|
|
239
|
+
value: function (object, property) {
|
|
240
|
+
if (object == null) {
|
|
241
|
+
throw new TypeError("Cannot convert undefined or null to object");
|
|
242
|
+
}
|
|
243
|
+
return Object.prototype.hasOwnProperty.call(Object(object), property);
|
|
244
|
+
},
|
|
245
|
+
configurable: true,
|
|
246
|
+
enumerable: false,
|
|
247
|
+
writable: true,
|
|
248
|
+
});
|
|
249
|
+
}
|
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Merges the two given records, recursively merging any nested records with the
|
|
3
|
+
* second collection overriding the first in case of conflict.
|
|
4
|
+
*
|
|
5
|
+
* For arrays, maps and sets, a merging strategy can be specified to either
|
|
6
|
+
* `replace` values, or `merge` them instead.
|
|
7
|
+
*
|
|
8
|
+
* @typeParam T Type of the first record
|
|
9
|
+
*
|
|
10
|
+
* @param record First record to merge.
|
|
11
|
+
* @param other Second record to merge.
|
|
12
|
+
* @param options Merging options.
|
|
13
|
+
*
|
|
14
|
+
* @returns A new record with the merged values.
|
|
15
|
+
*
|
|
16
|
+
* @example Merge objects
|
|
17
|
+
* ```ts
|
|
18
|
+
* import { deepMerge } from "@std/collections/deep-merge";
|
|
19
|
+
* import { assertEquals } from "@std/assert";
|
|
20
|
+
*
|
|
21
|
+
* const a = { foo: true };
|
|
22
|
+
* const b = { foo: { bar: true } };
|
|
23
|
+
*
|
|
24
|
+
* const result = deepMerge(a, b);
|
|
25
|
+
*
|
|
26
|
+
* const expected = { foo: { bar: true } };
|
|
27
|
+
*
|
|
28
|
+
* assertEquals(result, expected);
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* @example Merge arrays
|
|
32
|
+
* ```ts
|
|
33
|
+
* import { deepMerge } from "@std/collections/deep-merge";
|
|
34
|
+
* import { assertEquals } from "@std/assert";
|
|
35
|
+
*
|
|
36
|
+
* const a = { foo: [1, 2] };
|
|
37
|
+
* const b = { foo: [3, 4] };
|
|
38
|
+
*
|
|
39
|
+
* const result = deepMerge(a, b);
|
|
40
|
+
*
|
|
41
|
+
* const expected = { foo: [1, 2, 3, 4] };
|
|
42
|
+
*
|
|
43
|
+
* assertEquals(result, expected);
|
|
44
|
+
* ```
|
|
45
|
+
*
|
|
46
|
+
* @example Merge maps
|
|
47
|
+
* ```ts
|
|
48
|
+
* import { deepMerge } from "@std/collections/deep-merge";
|
|
49
|
+
* import { assertEquals } from "@std/assert";
|
|
50
|
+
*
|
|
51
|
+
* const a = { foo: new Map([["a", 1]]) };
|
|
52
|
+
* const b = { foo: new Map([["b", 2]]) };
|
|
53
|
+
*
|
|
54
|
+
* const result = deepMerge(a, b);
|
|
55
|
+
*
|
|
56
|
+
* const expected = { foo: new Map([["a", 1], ["b", 2]]) };
|
|
57
|
+
*
|
|
58
|
+
* assertEquals(result, expected);
|
|
59
|
+
* ```
|
|
60
|
+
*
|
|
61
|
+
* @example Merge sets
|
|
62
|
+
* ```ts
|
|
63
|
+
* import { deepMerge } from "@std/collections/deep-merge";
|
|
64
|
+
* import { assertEquals } from "@std/assert";
|
|
65
|
+
*
|
|
66
|
+
* const a = { foo: new Set([1]) };
|
|
67
|
+
* const b = { foo: new Set([2]) };
|
|
68
|
+
*
|
|
69
|
+
* const result = deepMerge(a, b);
|
|
70
|
+
*
|
|
71
|
+
* const expected = { foo: new Set([1, 2]) };
|
|
72
|
+
*
|
|
73
|
+
* assertEquals(result, expected);
|
|
74
|
+
* ```
|
|
75
|
+
*
|
|
76
|
+
* @example Merge with custom options
|
|
77
|
+
* ```ts
|
|
78
|
+
* import { deepMerge } from "@std/collections/deep-merge";
|
|
79
|
+
* import { assertEquals } from "@std/assert";
|
|
80
|
+
*
|
|
81
|
+
* const a = { foo: [1, 2] };
|
|
82
|
+
* const b = { foo: [3, 4] };
|
|
83
|
+
*
|
|
84
|
+
* const result = deepMerge(a, b, { arrays: "replace" });
|
|
85
|
+
*
|
|
86
|
+
* const expected = { foo: [3, 4] };
|
|
87
|
+
*
|
|
88
|
+
* assertEquals(result, expected);
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
export declare function deepMerge<T extends Record<PropertyKey, unknown>>(record: Partial<Readonly<T>>, other: Partial<Readonly<T>>, options?: Readonly<DeepMergeOptions>): T;
|
|
92
|
+
/**
|
|
93
|
+
* Merges the two given records, recursively merging any nested records with the
|
|
94
|
+
* second collection overriding the first in case of conflict.
|
|
95
|
+
*
|
|
96
|
+
* For arrays, maps and sets, a merging strategy can be specified to either
|
|
97
|
+
* `replace` values, or `merge` them instead.
|
|
98
|
+
*
|
|
99
|
+
* @typeParam T Type of the first record
|
|
100
|
+
* @typeParam U Type of the second record
|
|
101
|
+
* @typeParam Options Merging options
|
|
102
|
+
*
|
|
103
|
+
* @param record First record to merge.
|
|
104
|
+
* @param other Second record to merge.
|
|
105
|
+
* @param options Merging options.
|
|
106
|
+
*
|
|
107
|
+
* @returns A new record with the merged values.
|
|
108
|
+
*
|
|
109
|
+
* @example Merge objects
|
|
110
|
+
* ```ts
|
|
111
|
+
* import { deepMerge } from "@std/collections/deep-merge";
|
|
112
|
+
* import { assertEquals } from "@std/assert";
|
|
113
|
+
*
|
|
114
|
+
* const a = { foo: true };
|
|
115
|
+
* const b = { foo: { bar: true } };
|
|
116
|
+
*
|
|
117
|
+
* const result = deepMerge(a, b);
|
|
118
|
+
*
|
|
119
|
+
* const expected = { foo: { bar: true } };
|
|
120
|
+
*
|
|
121
|
+
* assertEquals(result, expected);
|
|
122
|
+
* ```
|
|
123
|
+
*
|
|
124
|
+
* @example Merge arrays
|
|
125
|
+
* ```ts
|
|
126
|
+
* import { deepMerge } from "@std/collections/deep-merge";
|
|
127
|
+
* import { assertEquals } from "@std/assert";
|
|
128
|
+
*
|
|
129
|
+
* const a = { foo: [1, 2] };
|
|
130
|
+
* const b = { foo: [3, 4] };
|
|
131
|
+
*
|
|
132
|
+
* const result = deepMerge(a, b);
|
|
133
|
+
*
|
|
134
|
+
* const expected = { foo: [1, 2, 3, 4] };
|
|
135
|
+
*
|
|
136
|
+
* assertEquals(result, expected);
|
|
137
|
+
* ```
|
|
138
|
+
*
|
|
139
|
+
* @example Merge maps
|
|
140
|
+
* ```ts
|
|
141
|
+
* import { deepMerge } from "@std/collections/deep-merge";
|
|
142
|
+
* import { assertEquals } from "@std/assert";
|
|
143
|
+
*
|
|
144
|
+
* const a = { foo: new Map([["a", 1]]) };
|
|
145
|
+
* const b = { foo: new Map([["b", 2]]) };
|
|
146
|
+
*
|
|
147
|
+
* const result = deepMerge(a, b);
|
|
148
|
+
*
|
|
149
|
+
* const expected = { foo: new Map([["a", 1], ["b", 2]]) };
|
|
150
|
+
*
|
|
151
|
+
* assertEquals(result, expected);
|
|
152
|
+
* ```
|
|
153
|
+
*
|
|
154
|
+
* @example Merge sets
|
|
155
|
+
* ```ts
|
|
156
|
+
* import { deepMerge } from "@std/collections/deep-merge";
|
|
157
|
+
* import { assertEquals } from "@std/assert";
|
|
158
|
+
*
|
|
159
|
+
* const a = { foo: new Set([1]) };
|
|
160
|
+
* const b = { foo: new Set([2]) };
|
|
161
|
+
*
|
|
162
|
+
* const result = deepMerge(a, b);
|
|
163
|
+
*
|
|
164
|
+
* const expected = { foo: new Set([1, 2]) };
|
|
165
|
+
*
|
|
166
|
+
* assertEquals(result, expected);
|
|
167
|
+
* ```
|
|
168
|
+
*
|
|
169
|
+
* @example Merge with custom options
|
|
170
|
+
* ```ts
|
|
171
|
+
* import { deepMerge } from "@std/collections/deep-merge";
|
|
172
|
+
* import { assertEquals } from "@std/assert";
|
|
173
|
+
*
|
|
174
|
+
* const a = { foo: [1, 2] };
|
|
175
|
+
* const b = { foo: [3, 4] };
|
|
176
|
+
*
|
|
177
|
+
* const result = deepMerge(a, b, { arrays: "replace" });
|
|
178
|
+
*
|
|
179
|
+
* const expected = { foo: [3, 4] };
|
|
180
|
+
*
|
|
181
|
+
* assertEquals(result, expected);
|
|
182
|
+
* ```
|
|
183
|
+
*/
|
|
184
|
+
export declare function deepMerge<T extends Record<PropertyKey, unknown>, U extends Record<PropertyKey, unknown>, Options extends DeepMergeOptions>(record: Readonly<T>, other: Readonly<U>, options?: Readonly<Options>): DeepMerge<T, U, Options>;
|
|
185
|
+
/** Merging strategy */
|
|
186
|
+
export type MergingStrategy = "replace" | "merge";
|
|
187
|
+
/** Options for {@linkcode deepMerge}. */
|
|
188
|
+
export type DeepMergeOptions = {
|
|
189
|
+
/**
|
|
190
|
+
* Merging strategy for arrays
|
|
191
|
+
*
|
|
192
|
+
* @default {"merge"}
|
|
193
|
+
*/
|
|
194
|
+
arrays?: MergingStrategy;
|
|
195
|
+
/**
|
|
196
|
+
* Merging strategy for maps.
|
|
197
|
+
*
|
|
198
|
+
* @default {"merge"}
|
|
199
|
+
*/
|
|
200
|
+
maps?: MergingStrategy;
|
|
201
|
+
/**
|
|
202
|
+
* Merging strategy for sets.
|
|
203
|
+
*
|
|
204
|
+
* @default {"merge"}
|
|
205
|
+
*/
|
|
206
|
+
sets?: MergingStrategy;
|
|
207
|
+
};
|
|
208
|
+
/**
|
|
209
|
+
* How does recursive typing works ?
|
|
210
|
+
*
|
|
211
|
+
* Deep merging process is handled through `DeepMerge<T, U, Options>` type.
|
|
212
|
+
* If both T and U are Records, we recursively merge them,
|
|
213
|
+
* else we treat them as primitives.
|
|
214
|
+
*
|
|
215
|
+
* Merging process is handled through `Merge<T, U>` type, in which
|
|
216
|
+
* we remove all maps, sets, arrays and records so we can handle them
|
|
217
|
+
* separately depending on merging strategy:
|
|
218
|
+
*
|
|
219
|
+
* Merge<
|
|
220
|
+
* {foo: string},
|
|
221
|
+
* {bar: string, baz: Set<unknown>},
|
|
222
|
+
* > // "foo" and "bar" will be handled with `MergeRightOmitComplexes`
|
|
223
|
+
* // "baz" will be handled with `MergeAll*` type
|
|
224
|
+
*
|
|
225
|
+
* `MergeRightOmitComplexes<T, U>` will do the above: all T's
|
|
226
|
+
* exclusive keys will be kept, though common ones with U will have their
|
|
227
|
+
* typing overridden instead:
|
|
228
|
+
*
|
|
229
|
+
* MergeRightOmitComplexes<
|
|
230
|
+
* {foo: string, baz: number},
|
|
231
|
+
* {foo: boolean, bar: string}
|
|
232
|
+
* > // {baz: number, foo: boolean, bar: string}
|
|
233
|
+
* // "baz" was kept from T
|
|
234
|
+
* // "foo" was overridden by U's typing
|
|
235
|
+
* // "bar" was added from U
|
|
236
|
+
*
|
|
237
|
+
* For Maps, Arrays, Sets and Records, we use `MergeAll*<T, U>` utility
|
|
238
|
+
* types. They will extract relevant data structure from both T and U
|
|
239
|
+
* (providing that both have same data data structure, except for typing).
|
|
240
|
+
*
|
|
241
|
+
* From these, `*ValueType<T>` will extract values (and keys) types to be
|
|
242
|
+
* able to create a new data structure with an union typing from both
|
|
243
|
+
* data structure of T and U:
|
|
244
|
+
*
|
|
245
|
+
* MergeAllSets<
|
|
246
|
+
* {foo: Set<number>},
|
|
247
|
+
* {foo: Set<string>}
|
|
248
|
+
* > // `SetValueType` will extract "number" for T
|
|
249
|
+
* // `SetValueType` will extract "string" for U
|
|
250
|
+
* // `MergeAllSets` will infer type as Set<number|string>
|
|
251
|
+
* // Process is similar for Maps, Arrays, and Sets
|
|
252
|
+
*
|
|
253
|
+
* `DeepMerge<T, U, Options>` is taking a third argument to be handle to
|
|
254
|
+
* infer final typing depending on merging strategy:
|
|
255
|
+
*
|
|
256
|
+
* & (Options extends { sets: "replace" } ? PartialByType<U, Set<unknown>>
|
|
257
|
+
* : MergeAllSets<T, U>)
|
|
258
|
+
*
|
|
259
|
+
* In the above line, if "Options" have its merging strategy for Sets set to
|
|
260
|
+
* "replace", instead of performing merging of Sets type, it will take the
|
|
261
|
+
* typing from right operand (U) instead, effectively replacing the typing.
|
|
262
|
+
*
|
|
263
|
+
* An additional note, we use `ExpandRecursively<T>` utility type to expand
|
|
264
|
+
* the resulting typing and hide all the typing logic of deep merging so it is
|
|
265
|
+
* more user friendly.
|
|
266
|
+
*/
|
|
267
|
+
/** Force intellisense to expand the typing to hide merging typings */
|
|
268
|
+
export type ExpandRecursively<T> = T extends Record<PropertyKey, unknown> ? T extends infer O ? {
|
|
269
|
+
[K in keyof O]: ExpandRecursively<O[K]>;
|
|
270
|
+
} : never : T;
|
|
271
|
+
/** Filter of keys matching a given type */
|
|
272
|
+
export type PartialByType<T, U> = {
|
|
273
|
+
[K in keyof T as T[K] extends U ? K : never]: T[K];
|
|
274
|
+
};
|
|
275
|
+
/** Get set values type */
|
|
276
|
+
export type SetValueType<T> = T extends Set<infer V> ? V : never;
|
|
277
|
+
/** Merge all sets types definitions from keys present in both objects */
|
|
278
|
+
export type MergeAllSets<T, U, X = PartialByType<T, Set<unknown>>, Y = PartialByType<U, Set<unknown>>, Z = {
|
|
279
|
+
[K in keyof X & keyof Y]: Set<SetValueType<X[K]> | SetValueType<Y[K]>>;
|
|
280
|
+
}> = Z;
|
|
281
|
+
/** Get array values type */
|
|
282
|
+
export type ArrayValueType<T> = T extends Array<infer V> ? V : never;
|
|
283
|
+
/** Merge all arrays types definitions from keys present in both objects */
|
|
284
|
+
export type MergeAllArrays<T, U, X = PartialByType<T, Array<unknown>>, Y = PartialByType<U, Array<unknown>>, Z = {
|
|
285
|
+
[K in keyof X & keyof Y]: Array<ArrayValueType<X[K]> | ArrayValueType<Y[K]>>;
|
|
286
|
+
}> = Z;
|
|
287
|
+
/** Get map values types */
|
|
288
|
+
export type MapKeyType<T> = T extends Map<infer K, unknown> ? K : never;
|
|
289
|
+
/** Get map values types */
|
|
290
|
+
export type MapValueType<T> = T extends Map<unknown, infer V> ? V : never;
|
|
291
|
+
/** Merge all maps types definitions from keys present in both objects */
|
|
292
|
+
export type MergeAllMaps<T, U, X = PartialByType<T, Map<unknown, unknown>>, Y = PartialByType<U, Map<unknown, unknown>>, Z = {
|
|
293
|
+
[K in keyof X & keyof Y]: Map<MapKeyType<X[K]> | MapKeyType<Y[K]>, MapValueType<X[K]> | MapValueType<Y[K]>>;
|
|
294
|
+
}> = Z;
|
|
295
|
+
/** Merge all records types definitions from keys present in both objects */
|
|
296
|
+
export type MergeAllRecords<T, U, Options, X = PartialByType<T, Record<PropertyKey, unknown>>, Y = PartialByType<U, Record<PropertyKey, unknown>>, Z = {
|
|
297
|
+
[K in keyof X & keyof Y]: DeepMerge<X[K], Y[K], Options>;
|
|
298
|
+
}> = Z;
|
|
299
|
+
/** Exclude map, sets and array from type */
|
|
300
|
+
export type OmitComplexes<T> = Omit<T, keyof PartialByType<T, Map<unknown, unknown> | Set<unknown> | Array<unknown> | Record<PropertyKey, unknown>>>;
|
|
301
|
+
/** Object with keys in either T or U but not in both */
|
|
302
|
+
export type ObjectXorKeys<T, U, X = Omit<T, keyof U> & Omit<U, keyof T>, Y = {
|
|
303
|
+
[K in keyof X]: X[K];
|
|
304
|
+
}> = Y;
|
|
305
|
+
/** Merge two objects, with left precedence */
|
|
306
|
+
export type MergeRightOmitComplexes<T, U, X = ObjectXorKeys<T, U> & OmitComplexes<{
|
|
307
|
+
[K in keyof U]: U[K];
|
|
308
|
+
}>> = X;
|
|
309
|
+
/** Merge two objects */
|
|
310
|
+
export type Merge<T, U, Options, X = MergeRightOmitComplexes<T, U> & MergeAllRecords<T, U, Options> & (Options extends {
|
|
311
|
+
sets: "replace";
|
|
312
|
+
} ? PartialByType<U, Set<unknown>> : MergeAllSets<T, U>) & (Options extends {
|
|
313
|
+
arrays: "replace";
|
|
314
|
+
} ? PartialByType<U, Array<unknown>> : MergeAllArrays<T, U>) & (Options extends {
|
|
315
|
+
maps: "replace";
|
|
316
|
+
} ? PartialByType<U, Map<unknown, unknown>> : MergeAllMaps<T, U>)> = ExpandRecursively<X>;
|
|
317
|
+
/** Merge deeply two objects */
|
|
318
|
+
export type DeepMerge<T, U, Options = Record<string, MergingStrategy>> = [
|
|
319
|
+
T,
|
|
320
|
+
U
|
|
321
|
+
] extends [Record<PropertyKey, unknown>, Record<PropertyKey, unknown>] ? Merge<T, U, Options> : T | U;
|
|
322
|
+
//# sourceMappingURL=deep_merge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deep_merge.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/collections/1.1.5/deep_merge.ts"],"names":[],"mappings":"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"}
|