feat(openclaw): upgrade fleet to DeepSeek V4.1 Flash 1017 and harden operations
- Upgrade OpenClaw primary model from deepseek-v4.1-flash to deepseek-v4.1-flash-1017 across all interactive agents, heartbeats, compaction, and cron jobs. - Configure hardened OpenRouter provider routing for 1017 (deepinfra, inference-net, parasail, cloudflare) with strict fp8/bf16 quantization and tool_choice verification. - Retain deepseek-v4.1-flash (0910), z-ai/glm-5.3-flash, and qwen3.8-flash in the automated fallback chain. - Update ADR 0002 with 1017 economics (30% price reduction on prompt/cache, +60% intelligence benchmark increase) and a 7-point provider qualification playbook. - Add operational scripts and tooling for session compaction, subagent vector deduplication, gateway preflight, and triage diagnostics in k8s/openclaw. - Update DuckDB backend engine, git-sync logic, and test suites. - Enhance Mila tracking UI components and add container build configuration. - Sync Terraform infrastructure state for Authentik.
This commit is contained in:
@@ -13,13 +13,14 @@ from app.main import app
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def test_data_dir():
|
||||
# Use real wiki data dir if exists, else temporary copy
|
||||
temp_root = Path(tempfile.mkdtemp())
|
||||
temp_data = temp_root / "data"
|
||||
if DATA_DIR.is_dir():
|
||||
yield DATA_DIR
|
||||
shutil.copytree(DATA_DIR, temp_data)
|
||||
else:
|
||||
temp_dir = Path(tempfile.mkdtemp())
|
||||
yield temp_dir
|
||||
shutil.rmtree(temp_dir, ignore_errors=True)
|
||||
temp_data.mkdir(parents=True, exist_ok=True)
|
||||
yield temp_data
|
||||
shutil.rmtree(temp_root, ignore_errors=True)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
|
||||
@@ -127,3 +127,50 @@ def test_duplicate_open_sleep_api_endpoint(client: TestClient):
|
||||
"subject": "test_baby",
|
||||
})
|
||||
assert stop_res.status_code == 200
|
||||
|
||||
|
||||
def test_agent_utc_wallclock_guard_and_mila_recipe_defaults(tmp_path: Path):
|
||||
engine = DuckDBEngine(data_dir=tmp_path)
|
||||
|
||||
# 1. Agent passes +00:00 on local wall-clock times (e.g. 08:30 to 10:20)
|
||||
nap_req = EventCreateRequest(
|
||||
kind="sleep.session",
|
||||
subject="mila",
|
||||
actor="agent:mila_tracker",
|
||||
start="2026-10-17T08:30:00+00:00",
|
||||
end="2026-10-17T10:20:00+00:00",
|
||||
payload={"type": "nap", "location": "bett"},
|
||||
)
|
||||
res_nap = engine.add_event(nap_req)
|
||||
assert res_nap["status"] == "success"
|
||||
assert res_nap["record"]["startIso"] == "2026-10-17T08:30:00+02:00"
|
||||
assert res_nap["record"]["endIso"] == "2026-10-17T10:20:00+02:00"
|
||||
assert res_nap["record"]["sleepTimeSeconds"] == 6600
|
||||
|
||||
# 2. Solid food without amount_g gets standard recipe defaults
|
||||
brei_req = EventCreateRequest(
|
||||
kind="feeding.solid",
|
||||
subject="mila",
|
||||
actor="agent:mila_tracker",
|
||||
start="2026-10-17T12:20:00+00:00",
|
||||
meal="lunch",
|
||||
payload={"item": "mittagsbrei"},
|
||||
)
|
||||
res_brei = engine.add_event(brei_req)
|
||||
assert res_brei["record"]["start"] == "2026-10-17T12:20:00+02:00"
|
||||
assert res_brei["record"]["payload"]["amount_g"] == 190
|
||||
assert res_brei["record"]["payload"]["kcal"] == 135
|
||||
|
||||
abend_req = EventCreateRequest(
|
||||
kind="feeding.solid",
|
||||
subject="mila",
|
||||
actor="agent:mila_tracker",
|
||||
start="2026-10-17T16:40:00+00:00",
|
||||
meal="dinner",
|
||||
payload={"item": "abendbrei"},
|
||||
)
|
||||
res_abend = engine.add_event(abend_req)
|
||||
assert res_abend["record"]["start"] == "2026-10-17T16:40:00+02:00"
|
||||
assert res_abend["record"]["payload"]["amount_g"] == 200
|
||||
assert res_abend["record"]["payload"]["kcal"] == 110
|
||||
|
||||
|
||||
Reference in New Issue
Block a user