Skip to content

Commit 8d24e40

Browse files
authored
Feat/sandbox cli v10 (#138)
2 parents 2007944 + 64879ba commit 8d24e40

6 files changed

Lines changed: 44 additions & 23 deletions

File tree

‎agentkit/toolkit/cli/sandbox/README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ Provider defaults:
214214

215215
| Provider | Default model | Model base URL |
216216
| --- | --- | --- |
217-
| `model_square` | `deepseek-v4-flash-260425` | `https://ark.cn-beijing.volces.com/api/v3` |
217+
| `model_square` | `glm-5-2-260617` | `https://ark.cn-beijing.volces.com/api/v3` |
218218
| `coding_plan` | `deepseek-v4-flash` | `https://ark.cn-beijing.volces.com/api/coding/v3` |
219219
| `agent_plan` | `deepseek-v4-flash` | `https://ark.cn-beijing.volces.com/api/plan/v3` |
220220
| `byteplus_model_square` | `deepseek-v4-flash-260425` | `https://ark.ap-southeast.bytepluses.com/api/v3` |

‎agentkit/toolkit/cli/sandbox/model_config.py‎

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,12 @@ class ModelProviderConfig:
8383
ModelProviderType.MODEL_SQUARE.value: ModelProviderConfig(
8484
model_base_url="https://ark.cn-beijing.volces.com/api/v3",
8585
anthropic_base_url="https://ark.cn-beijing.volces.com/api/compatible",
86-
default_model_name="deepseek-v4-flash-260425",
86+
default_model_name="glm-5-2-260617",
8787
models={
88+
"glm-5-2-260617": ModelSpec(
89+
supports_reasoning_summaries=True,
90+
context_window=DEFAULT_MODEL_CONTEXT_WINDOW,
91+
),
8892
"doubao-seed-2-0-pro-260215": ModelSpec(
8993
supports_reasoning_summaries=True,
9094
context_window=LIMITED_MODEL_CONTEXT_WINDOW,
@@ -435,7 +439,11 @@ def build_codex_config_toml(
435439
'wire_api = "responses"',
436440
# OAuth (ChatGPT login) providers carry no API key - codex uses the injected
437441
# auth.json via `requires_openai_auth`; all others use the CODEX_API_KEY env.
438-
("requires_openai_auth = true" if requires_openai_auth else 'env_key = "CODEX_API_KEY"'),
442+
(
443+
"requires_openai_auth = true"
444+
if requires_openai_auth
445+
else 'env_key = "CODEX_API_KEY"'
446+
),
439447
"",
440448
"[tui]",
441449
"show_tooltips = false",
@@ -552,7 +560,7 @@ def build_codex_hot_update_command() -> str:
552560
CODEX_BASE_URL="$REQ_CODEX_BASE_URL"
553561
fi
554562
555-
CODEX_MODEL="${CODEX_MODEL:-deepseek-v4-flash-260425}"
563+
CODEX_MODEL="${CODEX_MODEL:-glm-5-2-260617}"
556564
CODEX_BASE_URL="${CODEX_BASE_URL:-https://ark.cn-beijing.volces.com/api/v3}"
557565
558566
: >"$ENV_FILE"
@@ -653,8 +661,10 @@ def _build_model_catalog_item(model_name: str, spec: ModelSpec) -> dict:
653661

654662
def infer_model_spec(model_name: str) -> ModelSpec:
655663
normalized_model_name = model_name.strip().lower()
656-
if normalized_model_name == "glm-5.2" or normalized_model_name.startswith(
657-
"deepseek-v4"
664+
if (
665+
normalized_model_name == "glm-5.2"
666+
or normalized_model_name.startswith("glm-5-")
667+
or normalized_model_name.startswith("deepseek-v4")
658668
):
659669
context_window = DEFAULT_MODEL_CONTEXT_WINDOW
660670
else:

‎agentkit/version.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
VERSION = "0.7.10"
15+
VERSION = "0.7.11"

‎pyproject.toml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "agentkit-sdk-python"
7-
version = "0.7.10"
7+
version = "0.7.11"
88
description = "Python SDK for transforming any AI agent into a production-ready application. Framework-agnostic primitives for runtime, memory, authentication, and tools with volcengine-managed infrastructure."
99
readme = "README.md"
1010
requires-python = ">=3.10"

‎tests/toolkit/cli/test_cli_create_tool.py‎

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -912,8 +912,7 @@ def test_create_command_uses_sandbox_yaml_when_image_options_are_omitted(
912912
sandbox_yaml_path = cli_create._get_sandbox_yaml_path()
913913
sandbox_yaml_path.parent.mkdir(parents=True, exist_ok=True)
914914
sandbox_yaml_path.write_text(
915-
"tool_type: Private\n"
916-
"image_url: registry.example.com/custom-image:from-yaml\n",
915+
"tool_type: Private\nimage_url: registry.example.com/custom-image:from-yaml\n",
917916
encoding="utf-8",
918917
)
919918

@@ -939,8 +938,7 @@ def test_create_command_cli_tool_type_disables_sandbox_yaml_defaults(
939938
sandbox_yaml_path = cli_create._get_sandbox_yaml_path()
940939
sandbox_yaml_path.parent.mkdir(parents=True, exist_ok=True)
941940
sandbox_yaml_path.write_text(
942-
"tool_type: Private\n"
943-
"image_url: registry.example.com/custom-image:from-yaml\n",
941+
"tool_type: Private\nimage_url: registry.example.com/custom-image:from-yaml\n",
944942
encoding="utf-8",
945943
)
946944

@@ -969,8 +967,7 @@ def test_create_command_cli_image_url_disables_sandbox_yaml_defaults(
969967
sandbox_yaml_path = cli_create._get_sandbox_yaml_path()
970968
sandbox_yaml_path.parent.mkdir(parents=True, exist_ok=True)
971969
sandbox_yaml_path.write_text(
972-
"tool_type: Private\n"
973-
"image_url: registry.example.com/custom-image:from-yaml\n",
970+
"tool_type: Private\nimage_url: registry.example.com/custom-image:from-yaml\n",
974971
encoding="utf-8",
975972
)
976973

@@ -1085,7 +1082,9 @@ def test_build_create_tool_request_adds_code_env_config_envs(monkeypatch):
10851082
assert models[0]["slug"] == "deepseek-v4-pro-260425"
10861083
assert models[0]["display_name"] == "deepseek-v4-pro-260425"
10871084
assert "deepseek-v4-flash-260425" in [model["slug"] for model in models]
1085+
assert "glm-5-2-260617" in [model["slug"] for model in models]
10881086
models_by_slug = {model["slug"]: model for model in models}
1087+
assert models_by_slug["glm-5-2-260617"]["max_context_window"] == 1000000
10891088
assert "doubao-seed-2-0-pro-260215" in models_by_slug
10901089
assert models_by_slug["doubao-seed-2-0-pro-260215"]["max_context_window"] == 200000
10911090
assert models[0]["truncation_policy"] == {"mode": "tokens", "limit": 10000}
@@ -1126,6 +1125,7 @@ def test_build_create_tool_request_uses_model_provider(monkeypatch):
11261125
models = {model["slug"]: model for model in catalog["models"]}
11271126
assert "deepseek-v4-flash" in models
11281127
assert "deepseek-v4-flash-260425" not in models
1128+
assert "glm-5-2-260617" not in models
11291129
assert "glm-5.2" not in models
11301130

11311131

@@ -1319,6 +1319,7 @@ def test_build_codex_model_catalog_infers_custom_model_context_window():
13191319

13201320
expected_context_windows = {
13211321
"deepseek-v4-flash-260428": 1000000,
1322+
"glm-5-2-260617": 1000000,
13221323
"glm-5.2": 1000000,
13231324
"doubao-seed-2-0-code-preview-260215": 200000,
13241325
"glm-4-7-251222": 200000,
@@ -1405,9 +1406,9 @@ def test_create_command_accepts_model_base_url_without_model_name(monkeypatch):
14051406
envs = {item.key: item.value for item in _FakeToolsClient.last_request.envs}
14061407
assert envs["AGENTKIT_SANDBOX_MODEL_PROVIDER"] == "custom_provider"
14071408
assert envs["CODEX_BASE_URL"] == "https://models.example.com"
1408-
assert envs["CODEX_MODEL"] == "deepseek-v4-flash-260425"
1409+
assert envs["CODEX_MODEL"] == "glm-5-2-260617"
14091410
assert 'model_provider = "custom_provider"' in envs["CODEX_CONFIG_TOML"]
1410-
assert 'model = "deepseek-v4-flash-260425"' in envs["CODEX_CONFIG_TOML"]
1411+
assert 'model = "glm-5-2-260617"' in envs["CODEX_CONFIG_TOML"]
14111412
assert 'base_url = "https://models.example.com"' in envs["CODEX_CONFIG_TOML"]
14121413
assert "model_catalog_json" not in envs["CODEX_CONFIG_TOML"]
14131414
assert "CODEX_MODEL_CATALOG_JSON" not in envs
@@ -1525,9 +1526,9 @@ def test_build_create_tool_request_adds_default_model_base_url(monkeypatch):
15251526

15261527
assert [(item.key, item.value) for item in request.envs] == [
15271528
("AGENTKIT_SANDBOX_MODEL_PROVIDER", "model_square"),
1528-
("OPENCODE_MODEL", "deepseek-v4-flash-260425"),
1529-
("CODEX_MODEL", "deepseek-v4-flash-260425"),
1530-
("ANTHROPIC_MODEL", "deepseek-v4-flash-260425"),
1529+
("OPENCODE_MODEL", "glm-5-2-260617"),
1530+
("CODEX_MODEL", "glm-5-2-260617"),
1531+
("ANTHROPIC_MODEL", "glm-5-2-260617"),
15311532
("OPENCODE_BASE_URL", "https://ark.cn-beijing.volces.com/api/v3"),
15321533
("CODEX_BASE_URL", "https://ark.cn-beijing.volces.com/api/v3"),
15331534
("MODEL_BASE_URL", "https://ark.cn-beijing.volces.com/api/v3"),

‎tests/toolkit/cli/test_cli_sandbox.py‎

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1138,6 +1138,15 @@ def test_build_codex_hot_update_env_allows_explicit_empty_api_key() -> None:
11381138
}
11391139

11401140

1141+
def test_build_codex_hot_update_command_uses_model_square_default() -> None:
1142+
from agentkit.toolkit.cli.sandbox.model_config import build_codex_hot_update_command
1143+
1144+
command = build_codex_hot_update_command()
1145+
1146+
assert 'CODEX_MODEL="${CODEX_MODEL:-glm-5-2-260617}"' in command
1147+
assert 'CODEX_MODEL="${CODEX_MODEL:-deepseek-v4-flash-260425}"' not in command
1148+
1149+
11411150
def test_build_model_envs_uses_model_base_url_and_emits_codex_config(
11421151
monkeypatch,
11431152
) -> None:
@@ -1299,9 +1308,9 @@ def test_build_model_envs_allows_model_base_url_without_model_name(monkeypatch)
12991308

13001309
assert [(item.key, item.value) for item in envs] == [
13011310
("AGENTKIT_SANDBOX_MODEL_PROVIDER", "custom_provider"),
1302-
("OPENCODE_MODEL", "deepseek-v4-flash-260425"),
1303-
("CODEX_MODEL", "deepseek-v4-flash-260425"),
1304-
("ANTHROPIC_MODEL", "deepseek-v4-flash-260425"),
1311+
("OPENCODE_MODEL", "glm-5-2-260617"),
1312+
("CODEX_MODEL", "glm-5-2-260617"),
1313+
("ANTHROPIC_MODEL", "glm-5-2-260617"),
13051314
("OPENCODE_BASE_URL", "https://models.example.com/v1"),
13061315
("CODEX_BASE_URL", "https://models.example.com/v1"),
13071316
("MODEL_BASE_URL", "https://models.example.com/v1"),
@@ -1312,7 +1321,7 @@ def test_build_model_envs_allows_model_base_url_without_model_name(monkeypatch)
13121321
),
13131322
]
13141323
assert 'model_provider = "custom_provider"' in envs[8].value
1315-
assert 'model = "deepseek-v4-flash-260425"' in envs[8].value
1324+
assert 'model = "glm-5-2-260617"' in envs[8].value
13161325
assert 'base_url = "https://models.example.com/v1"' in envs[8].value
13171326
assert "model_catalog_json" not in envs[8].value
13181327

@@ -5872,6 +5881,7 @@ def test_cli_exec_model_provider_sets_default_model_and_codex_config(
58725881
models = {model["slug"]: model for model in catalog["models"]}
58735882
assert "deepseek-v4-flash" in models
58745883
assert "deepseek-v4-flash-260425" not in models
5884+
assert "glm-5-2-260617" not in models
58755885
assert "glm-5.2" not in models
58765886

58775887

0 commit comments

Comments
 (0)