refactor: no feature depends on Gemini any more
Depleted Gemini prepayment credits took out PDF rendering. The same key was the
only thing standing between level-up proposals and the same fate, so both are
off it.
- `pdf_renderer` is DELETED, not disabled. Nothing sets `render_pdf: true` since
markdown became the deliverable (821cbb8), so the worker polled forever for
rows that can no longer exist. It was also the only caller of the Gemini
MD->HTML conversion. A worker that cannot do anything is worse than absent: it
reads as a feature.
- `level_up` now resolves its proposer through the provider REGISTRY
(`Runtime::resolve_provider`), the same path the evaluator uses, defaulting to
`glm:glm-4.7` — the validator this project measured and chose in
scripts/judge-eval.sh. `CLAWMATES_LEVEL_UP_MODEL` takes a registry spec
(`glm:glm-4.7`, `kimi:k2`, `claude-sonnet-5`), so every provider the platform
can already reach works and no single vendor's billing can take it down.
The non-obvious part of that swap: Gemini was asked for
`response_mime_type: application/json` and obliged, so the old code parsed the
raw reply. Anthropic-format models are under no such obligation and wrap objects
in prose or a ```json fence. `extract_json_object` brace-counts to the matching
close — string-aware, so a `}` inside a value does not end it, and nested (these
proposals nest by design). Tested against bare, fenced, nested, brace-in-string
and absent. Parsing raw text would have worked in review and failed on the first
real proposal.
What deliberately still MENTIONS Gemini: `mission_runtime` forwards
GEMINI_API_KEY to agent containers alongside GROQ/OPENAI/ZAI/KIMI, and the claw
model selector offers it. Those are user options, not platform requirements —
the ask was to remove the NEED.
Also corrected a comment in mission_delivery that cited `pdf_renderer` as the
authority on artifact path resolution. It never was: it joined the mission id
first and produced a doubled path that never resolved.
238 lib tests, 20 test binaries.
This commit is contained in:
@@ -346,12 +346,6 @@ async fn run() -> Result<(), String> {
|
||||
// asks Claude Opus 4.8 to synthesize a "what got done" card that
|
||||
// the UI renders under the phase.
|
||||
cm_api::phase_summarizer::spawn(pool.clone());
|
||||
// PDF renderer worker (Slice 6): watches mission_artifacts for
|
||||
// MD entries with render_pdf_status='pending', calls the
|
||||
// configured LLM (default Gemini 2.5 Flash) for styled HTML,
|
||||
// prints to PDF via chromium --headless. No-op-friendly when
|
||||
// GEMINI_API_KEY / chromium binary aren't configured.
|
||||
cm_api::pdf_renderer::spawn(pool.clone());
|
||||
// Outbound-email delivery: drains the §15-gated `outbox` over SMTP. Inert
|
||||
// until CLAWMATES_SMTP_* is set, so it ships safely before credentials exist.
|
||||
cm_runtime::spawn_drainer(pool.clone(), std::time::Duration::from_secs(10));
|
||||
|
||||
Reference in New Issue
Block a user