Skip to content

Commit f371eef

Browse files
committed
Default context workbench to Codex 5.5
1 parent f753997 commit f371eef

3 files changed

Lines changed: 34 additions & 14 deletions

File tree

backend/web_runtime.py

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,14 @@
2828
ToolCallReadyEvent,
2929
)
3030
from simple_agent.agent import BridgedFunctionCall, SimpleAgent, ToolEvent, sanitize_text
31-
from simple_agent.config import CODEX_PROXY_BASE_URL, CODEX_PROXY_PROVIDER_ID, DEFAULT_CODEX_PROXY_MODELS, Settings
31+
from simple_agent.config import (
32+
CODEX_PROXY_BASE_URL,
33+
CODEX_PROXY_PROVIDER_ID,
34+
DEFAULT_CODEX_PROXY_MODELS,
35+
DEFAULT_CONTEXT_WORKBENCH_MODEL,
36+
DEFAULT_CONTEXT_WORKBENCH_PROVIDER_ID,
37+
Settings,
38+
)
3239
from simple_agent.codex_tool_registry import ToolExecution
3340
from simple_agent.provider_clients import ClaudeRESTClient, GeminiRESTClient
3441
try:
@@ -58,14 +65,13 @@
5865
)
5966

6067
def context_workbench_settings_payload(settings: Settings) -> dict[str, object]:
61-
default_context_model = sanitize_text(DEFAULT_CODEX_PROXY_MODELS[0].get("id") or "").strip() or "gpt-5.5"
6268
return {
6369
"context_workbench_model": sanitize_text(settings.context_workbench_model or "").strip()
64-
or default_context_model,
70+
or DEFAULT_CONTEXT_WORKBENCH_MODEL,
6571
"context_workbench_provider_id": sanitize_text(
6672
settings.context_workbench_provider_id or ""
6773
).strip()
68-
or CODEX_PROXY_PROVIDER_ID,
74+
or DEFAULT_CONTEXT_WORKBENCH_PROVIDER_ID,
6975
"context_token_warning_threshold": int(settings.context_token_warning_threshold or 5000),
7076
"context_token_critical_threshold": int(settings.context_token_critical_threshold or 10000),
7177
"user_locale": sanitize_text(settings.user_locale or "").strip() or "en-US",
@@ -155,8 +161,7 @@ def build_context_chat_runtime(
155161
)
156162
)
157163

158-
default_context_model = sanitize_text(DEFAULT_CODEX_PROXY_MODELS[0].get("id") or "").strip() or "gpt-5.5"
159-
request_model = sanitize_text(settings.context_workbench_model or "").strip() or default_context_model
164+
request_model = sanitize_text(settings.context_workbench_model or "").strip() or DEFAULT_CONTEXT_WORKBENCH_MODEL
160165
instructions = "\n".join(
161166
[
162167
"You are a context-maintenance assistant for a Codex conversation.",
@@ -358,12 +363,11 @@ def context_workbench_provider(settings: Settings) -> dict[str, Any]:
358363
return provider
359364

360365
return {
361-
"id": CODEX_PROXY_PROVIDER_ID,
366+
"id": DEFAULT_CONTEXT_WORKBENCH_PROVIDER_ID,
362367
"name": "Codex",
363368
"provider_type": "responses",
364369
"api_base_url": CODEX_PROXY_BASE_URL,
365-
"default_model": sanitize_text(DEFAULT_CODEX_PROXY_MODELS[0].get("id") or "").strip()
366-
or "gpt-5.5",
370+
"default_model": DEFAULT_CONTEXT_WORKBENCH_MODEL,
367371
}
368372

369373

@@ -1313,8 +1317,7 @@ def context_workbench_provider_payloads(settings: Settings, *, refresh_models: b
13131317
"provider_type": "responses",
13141318
"enabled": True,
13151319
"api_base_url": CODEX_PROXY_BASE_URL,
1316-
"default_model": sanitize_text(DEFAULT_CODEX_PROXY_MODELS[0].get("id") or "").strip()
1317-
or "gpt-5.5",
1320+
"default_model": DEFAULT_CONTEXT_WORKBENCH_MODEL,
13181321
"models": DEFAULT_CODEX_PROXY_MODELS,
13191322
},
13201323
settings,

scripts/test_prompt_settings.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,13 +143,26 @@ def test_compact_prompt_uses_configured_manual_and_auto_defaults() -> None:
143143
assert is_local_compact_prompt_text("custom auto compact") is True
144144

145145

146+
def test_context_workbench_defaults_to_codex_55() -> None:
147+
with isolated_settings():
148+
settings = config_module.load_settings()
149+
assert settings.context_workbench_provider_id == config_module.DEFAULT_CONTEXT_WORKBENCH_PROVIDER_ID
150+
assert settings.context_workbench_model == config_module.DEFAULT_CONTEXT_WORKBENCH_MODEL
151+
152+
config_module.save_settings(codex_system_prompt="custom context prompt")
153+
settings = config_module.load_settings()
154+
assert settings.context_workbench_provider_id == config_module.DEFAULT_CONTEXT_WORKBENCH_PROVIDER_ID
155+
assert settings.context_workbench_model == config_module.DEFAULT_CONTEXT_WORKBENCH_MODEL
156+
157+
146158
def main() -> None:
147159
tests = [
148160
test_first_codex_instructions_updates_default_and_current_on_next_proxy_start,
149161
test_first_codex_instructions_preserves_user_custom_prompt,
150162
test_first_codex_instructions_only_scans_top_level_instructions,
151163
test_codex_system_prompt_override_replaces_forwarded_instructions,
152164
test_compact_prompt_uses_configured_manual_and_auto_defaults,
165+
test_context_workbench_defaults_to_codex_55,
153166
]
154167
for test in tests:
155168
test()

simple_agent/config.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ def _resolve_data_dir() -> Path:
4040
{"id": "gpt-5.4", "label": "gpt-5.4", "group": "Codex", "provider": "Codex"},
4141
{"id": "gpt-5.2", "label": "gpt-5.2", "group": "Codex", "provider": "Codex"},
4242
)
43+
DEFAULT_CONTEXT_WORKBENCH_PROVIDER_ID = CODEX_PROXY_PROVIDER_ID
44+
DEFAULT_CONTEXT_WORKBENCH_MODEL = "gpt-5.5"
4345

4446
DEFAULT_RESPONSE_PROVIDERS: tuple[dict[str, object], ...] = (
4547
{
@@ -537,7 +539,7 @@ def load_settings() -> Settings:
537539
stored.get("context_workbench_provider_id")
538540
or os.getenv("HASH_CONTEXT_WORKBENCH_PROVIDER_ID"),
539541
response_providers,
540-
fallback_provider_id=CODEX_PROXY_PROVIDER_ID,
542+
fallback_provider_id=DEFAULT_CONTEXT_WORKBENCH_PROVIDER_ID,
541543
)
542544

543545
active_provider = next(
@@ -562,7 +564,7 @@ def load_settings() -> Settings:
562564
context_workbench_model = (
563565
raw_context_workbench_model
564566
or _clean_string(context_provider.get("default_model"))
565-
or _clean_string(DEFAULT_CODEX_PROXY_MODELS[0].get("id"))
567+
or DEFAULT_CONTEXT_WORKBENCH_MODEL
566568
or model
567569
)
568570
tool_settings = normalize_tool_settings(stored.get("tool_settings"))
@@ -841,7 +843,7 @@ def save_settings(
841843
or current.get("context_workbench_provider_id")
842844
or loaded.context_workbench_provider_id,
843845
ordered_records,
844-
fallback_provider_id=CODEX_PROXY_PROVIDER_ID,
846+
fallback_provider_id=DEFAULT_CONTEXT_WORKBENCH_PROVIDER_ID,
845847
)
846848
context_provider = current_by_id.get(next_context_workbench_provider_id) or active_provider
847849
current["context_workbench_provider_id"] = next_context_workbench_provider_id
@@ -854,6 +856,7 @@ def save_settings(
854856
else:
855857
next_context_workbench_model = (
856858
_clean_string(context_provider.get("default_model"))
859+
or DEFAULT_CONTEXT_WORKBENCH_MODEL
857860
or _clean_string(current.get("model"))
858861
or loaded.model
859862
)
@@ -863,6 +866,7 @@ def save_settings(
863866
):
864867
next_context_workbench_model = (
865868
_clean_string(context_provider.get("default_model"))
869+
or DEFAULT_CONTEXT_WORKBENCH_MODEL
866870
or _clean_string(current.get("model"))
867871
or loaded.model
868872
)

0 commit comments

Comments
 (0)