mirror of
https://github.com/andrewyng/openworker.git
synced 2026-09-11 14:50:14 +00:00
compaction: Settings overrides + GUI divider (OPE-27 3/4)
Settings -> Models grows a Context compaction card next to Token savings: the trigger % of the context window (10-95), the absolute token cap (clamped 10k-2M), and the summarizer-model pin (default: the session's own model). POST /v1/settings/compaction persists them; engines read the knobs live per check, so changes apply to running sessions immediately. The "context compacted" divider rides the existing notice machinery: the persisted `compacted` notice replays on reload (itemsFromMessages) and the live COMPACTED event appends the same info notice mid-turn. The transcript itself stays intact - outbound-only by construction. Covered by vitest (marker replay), a settings-card e2e (defaults + clamped POSTs + model pin), and a mid-session divider e2e driven by the fixtures' scripted `compacted` event.
This commit is contained in:
@@ -1378,6 +1378,17 @@ def create_app(manager: SessionManager) -> FastAPI:
|
||||
max_mb=b.get("pdf_max_mb"),
|
||||
)
|
||||
|
||||
@app.post("/v1/settings/compaction")
|
||||
def settings_set_compaction(body: dict) -> dict[str, Any]:
|
||||
# Auto-compaction overrides (OPE-27): threshold % of the context window, the
|
||||
# absolute token cap, and the summarizer-model pin ("" → session's own model).
|
||||
b = body or {}
|
||||
return manager.set_compaction_settings(
|
||||
threshold_pct=b.get("compaction_threshold_pct"),
|
||||
cap_tokens=b.get("compaction_cap_tokens"),
|
||||
model=b.get("compaction_model"),
|
||||
)
|
||||
|
||||
@app.post("/v1/attachments/inspect-pdf")
|
||||
def attachments_inspect_pdf(body: dict) -> dict[str, Any]:
|
||||
# Attach-time page/size probe for the composer's threshold check. Local only.
|
||||
|
||||
Reference in New Issue
Block a user