From 98e894c876bd716ae9a67f44828fa56a92034e3b Mon Sep 17 00:00:00 2001 From: Yuanhao Li Date: Fri, 16 Oct 2026 15:57:12 +0200 Subject: [PATCH 1/2] docs: fix the moved examples' forwarding links; DeepSeek prices on the presets page The stubs left where yoagent-frontend and its examples used to be pointed at yobuild/frontend/examples/, which does not exist (404): the examples are at yobuild/examples/. Every forwarding link now resolves (checked), and the two stub scripts name the exact yobuild script. The model presets page lists DeepSeek's (peak) prices. Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_01T7iq5hpndSiHQcnAsywKuG --- docs/providers/model-presets.md | 4 +++- integrations/yoagent-frontend/README.md | 2 +- integrations/yoagent-frontend/examples/README.md | 2 +- integrations/yoagent-frontend/examples/coding_agent.rs | 2 +- integrations/yoagent-frontend/examples/handoff_agent.rs | 2 +- integrations/yoagent-frontend/examples/minimal_browser.rs | 2 +- scripts/try-coding-agent.sh | 2 +- scripts/try-handoff.sh | 2 +- 8 files changed, 10 insertions(+), 8 deletions(-) diff --git a/docs/providers/model-presets.md b/docs/providers/model-presets.md index 58898239..326b6656 100644 --- a/docs/providers/model-presets.md +++ b/docs/providers/model-presets.md @@ -40,7 +40,7 @@ Use a preset when the provider is listed here. Use a custom `ModelConfig` when y The constructors do not validate model IDs. They send the `id` you pass through to the provider, which lets you use newly released model IDs before yoagent updates its examples. -**Nothing is priced until the process opts in** — `prices::enable_bundled()` (the bundled data file `src/provider/prices.json`, offline) or `prices::enable_live(..)` (native) — see [Model Pricing](../concepts/pricing.md#enabling-pricing). After that, prices are looked up by `(provider, id)` when the config is built. The named presets (`claude_fable_5`, `claude_fable_5_1`, `claude_opus_5_5`, `claude_opus_5`, `claude_opus_4_8`, `claude_sonnet_5`, `claude_haiku_4_5`, `gpt_5_5`, `gpt_6_astra`, `gpt_6_sol`, `gpt_6_luna`) are all in the snapshot (`cost: Some(CostConfig)`). The OpenAI ones carry a context tier: above 272K prompt tokens the whole request bills at the long-context rates (`gpt_5_5`'s long-band cached-input rate is unverified; see its `note` in the data file). The generic first-party constructors (`anthropic`, `openai`, `openai_responses`, `google`, `xai`, `groq`, `deepseek`, `mistral`, `zai`, `minimax`, `qwen`, `meta`) are priced when the file lists the id — `ModelConfig::anthropic("claude-sonnet-5", ..)` gets `claude_sonnet_5()`'s rates, `meta` prices `muse-spark-1.1`/`-1.2` — and carry `cost: None` otherwise. Gateways and custom endpoints (`custom`, `openai_compat`, `local`, `ollama`, `opencode_zen`, `opencode_go`) are always `cost: None`, since what they bill is not the vendor's list price. `None` means pricing **unknown**, not free; set `config.cost = Some(CostConfig::new(input, output))` yourself if you want cost reporting. The OpenCode presets select the API protocol from the model id — see [OpenCode Zen & Go](opencode.md). +**Nothing is priced until the process opts in** — `prices::enable_bundled()` (the bundled data file `src/provider/prices.json`, offline) or `prices::enable_live(..)` (native) — see [Model Pricing](../concepts/pricing.md#enabling-pricing). After that, prices are looked up by `(provider, id)` when the config is built. The named presets (`claude_fable_5`, `claude_fable_5_1`, `claude_opus_5_5`, `claude_opus_5`, `claude_opus_4_8`, `claude_sonnet_5`, `claude_haiku_4_5`, `gpt_5_5`, `gpt_6_astra`, `gpt_6_sol`, `gpt_6_luna`) are all in the snapshot (`cost: Some(CostConfig)`). The OpenAI ones carry a context tier: above 272K prompt tokens the whole request bills at the long-context rates (`gpt_5_5`'s long-band cached-input rate is unverified; see its `note` in the data file). The generic first-party constructors (`anthropic`, `openai`, `openai_responses`, `google`, `xai`, `groq`, `deepseek`, `mistral`, `zai`, `minimax`, `qwen`, `meta`) are priced when the file lists the id — `ModelConfig::anthropic("claude-sonnet-5", ..)` gets `claude_sonnet_5()`'s rates, `meta` prices `muse-spark-1.1`/`-1.2`, `deepseek` prices `deepseek-flash`/`deepseek-v4-pro`/`deepseek-v4-flash` at the peak rate (see [DeepSeek Models](#deepseek-models)) — and carry `cost: None` otherwise. Gateways and custom endpoints (`custom`, `openai_compat`, `local`, `ollama`, `opencode_zen`, `opencode_go`) are always `cost: None`, since what they bill is not the vendor's list price. `None` means pricing **unknown**, not free; set `config.cost = Some(CostConfig::new(input, output))` yourself if you want cost reporting. The OpenCode presets select the API protocol from the model id — see [OpenCode Zen & Go](opencode.md). The `claude_*` presets also set `AnthropicCompat::native_structured_output`, so `Agent::prompt_structured` uses the API's native JSON outputs instead of a forced tool call. `claude_fable_5_1` and `claude_opus_5_5` depend on it, because both models reject forced `tool_choice`. `ModelConfig::anthropic(id, name)` infers it (and the thinking mode) from a Claude id, and leaves it off for any other id. See [Structured Outputs](../concepts/structured-outputs.md). @@ -149,6 +149,8 @@ let flash = ModelConfig::deepseek("deepseek-flash", "DeepSeek Flash"); // V4.1 F let pro = ModelConfig::deepseek("deepseek-v4-pro", "DeepSeek V4 Pro"); ``` +**Pricing** (after `prices::enable_bundled()`): `deepseek-flash` and `deepseek-v4-flash` at $0.30 input / $0.006 cache hit / $1.20 output per million tokens, `deepseek-v4-pro` at $1.32 / $0.044 / $3.96 — DeepSeek's **peak** rates. Off-peak (every hour but 01:00–04:00 and 06:00–10:00 UTC on weekdays) DeepSeek bills half; a `CostConfig` has no time of day, so reported costs are an upper bound and a `Budget` stops early rather than late. To count off-peak rates, install them as an override ([Model Pricing](../concepts/pricing.md#which-constructors-are-priced)). + The legacy names `deepseek-chat` and `deepseek-reasoner` were discontinued on 2026-07-24; requests using them fail. `deepseek-v4-flash` (and `deepseek-v4-flash-vision-exp`) are still accepted, but the V4 Flash model behind them is retired — DeepSeek serves those requests with V4.1 Flash at the Flash price. Prefer `deepseek-flash`. yoagent also sends DeepSeek's current request shape: diff --git a/integrations/yoagent-frontend/README.md b/integrations/yoagent-frontend/README.md index a4fc3baf..b776876d 100644 --- a/integrations/yoagent-frontend/README.md +++ b/integrations/yoagent-frontend/README.md @@ -8,7 +8,7 @@ crates.io. | Was here | Now | |---|---| | `integrations/yoagent-frontend/` | [`frontend/`](https://github.com/yologdev/yobuild/tree/main/frontend) | -| `integrations/yoagent-frontend/examples/` (`coding_agent`, `handoff_agent`, `minimal_browser`) | [`frontend/examples/`](https://github.com/yologdev/yobuild/tree/main/frontend/examples) | +| `integrations/yoagent-frontend/examples/` (`coding_agent`, `handoff_agent`, `minimal_browser`) | [`examples/`](https://github.com/yologdev/yobuild/tree/main/examples) | | `scripts/try-coding-agent.sh`, `scripts/try-handoff.sh` | [`scripts/`](https://github.com/yologdev/yobuild/tree/main/scripts) | | `integrations/yoagent-frontend/plugins/pi-extensions/confirm-dangerous.ts` | [`frontend/plugins/pi-extensions/`](https://github.com/yologdev/yobuild/tree/main/frontend/plugins/pi-extensions) | diff --git a/integrations/yoagent-frontend/examples/README.md b/integrations/yoagent-frontend/examples/README.md index fdd879de..1bd4c73c 100644 --- a/integrations/yoagent-frontend/examples/README.md +++ b/integrations/yoagent-frontend/examples/README.md @@ -2,6 +2,6 @@ The frontend examples (`coding_agent`, `handoff_agent`, `minimal_browser`) and this page — the handoff agent's stack and measured performance — are now -at **[yobuild/frontend/examples](https://github.com/yologdev/yobuild/tree/main/frontend/examples)**. +at **[yobuild/examples](https://github.com/yologdev/yobuild/tree/main/examples)**. The last version here is at [`7ca9590`](https://github.com/yologdev/yoagent/tree/7ca9590/integrations/yoagent-frontend/examples). diff --git a/integrations/yoagent-frontend/examples/coding_agent.rs b/integrations/yoagent-frontend/examples/coding_agent.rs index 79def41d..fab38773 100644 --- a/integrations/yoagent-frontend/examples/coding_agent.rs +++ b/integrations/yoagent-frontend/examples/coding_agent.rs @@ -1,3 +1,3 @@ //! Moved: this example now lives in yobuild, -//! https://github.com/yologdev/yobuild/blob/main/frontend/examples/coding_agent.rs +//! https://github.com/yologdev/yobuild/blob/main/examples/coding_agent.rs //! (the last version here: https://github.com/yologdev/yoagent/blob/7ca9590/integrations/yoagent-frontend/examples/coding_agent.rs). diff --git a/integrations/yoagent-frontend/examples/handoff_agent.rs b/integrations/yoagent-frontend/examples/handoff_agent.rs index 5048304d..fc435b31 100644 --- a/integrations/yoagent-frontend/examples/handoff_agent.rs +++ b/integrations/yoagent-frontend/examples/handoff_agent.rs @@ -1,3 +1,3 @@ //! Moved: this example now lives in yobuild, -//! https://github.com/yologdev/yobuild/blob/main/frontend/examples/handoff_agent.rs +//! https://github.com/yologdev/yobuild/blob/main/examples/handoff_agent.rs //! (the last version here: https://github.com/yologdev/yoagent/blob/7ca9590/integrations/yoagent-frontend/examples/handoff_agent.rs). diff --git a/integrations/yoagent-frontend/examples/minimal_browser.rs b/integrations/yoagent-frontend/examples/minimal_browser.rs index b549503d..3e9f82ca 100644 --- a/integrations/yoagent-frontend/examples/minimal_browser.rs +++ b/integrations/yoagent-frontend/examples/minimal_browser.rs @@ -1,3 +1,3 @@ //! Moved: this example now lives in yobuild, -//! https://github.com/yologdev/yobuild/blob/main/frontend/examples/minimal_browser.rs +//! https://github.com/yologdev/yobuild/blob/main/examples/minimal_browser.rs //! (the last version here: https://github.com/yologdev/yoagent/blob/7ca9590/integrations/yoagent-frontend/examples/minimal_browser.rs). diff --git a/scripts/try-coding-agent.sh b/scripts/try-coding-agent.sh index 70e9b5e5..1def0890 100755 --- a/scripts/try-coding-agent.sh +++ b/scripts/try-coding-agent.sh @@ -1,4 +1,4 @@ #!/usr/bin/env bash # Moved: this script and the examples it runs now live in yobuild. -echo "scripts/try-coding-agent.sh has moved to yobuild: https://github.com/yologdev/yobuild (scripts/try-coding-agent.sh)" >&2 +echo "scripts/try-coding-agent.sh has moved to yobuild: https://github.com/yologdev/yobuild/blob/main/scripts/try-coding-agent.sh" >&2 exit 1 diff --git a/scripts/try-handoff.sh b/scripts/try-handoff.sh index e408b233..9032c145 100755 --- a/scripts/try-handoff.sh +++ b/scripts/try-handoff.sh @@ -1,4 +1,4 @@ #!/usr/bin/env bash # Moved: this script and the examples it runs now live in yobuild. -echo "scripts/try-handoff.sh has moved to yobuild: https://github.com/yologdev/yobuild (scripts/try-handoff.sh)" >&2 +echo "scripts/try-handoff.sh has moved to yobuild: https://github.com/yologdev/yobuild/blob/main/scripts/try-handoff.sh" >&2 exit 1 From 6e2726fab1e481326833953f957bb7c28a469bdb Mon Sep 17 00:00:00 2001 From: Yuanhao Li Date: Fri, 16 Oct 2026 16:02:48 +0200 Subject: [PATCH 2/2] docs: the moved frontend's Rust code is in yobuild's src/frontend Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_01T7iq5hpndSiHQcnAsywKuG --- integrations/yoagent-frontend/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integrations/yoagent-frontend/README.md b/integrations/yoagent-frontend/README.md index b776876d..28bf3382 100644 --- a/integrations/yoagent-frontend/README.md +++ b/integrations/yoagent-frontend/README.md @@ -7,7 +7,7 @@ crates.io. | Was here | Now | |---|---| -| `integrations/yoagent-frontend/` | [`frontend/`](https://github.com/yologdev/yobuild/tree/main/frontend) | +| `integrations/yoagent-frontend/` | the Rust code: [`src/frontend/`](https://github.com/yologdev/yobuild/tree/main/src/frontend) (no longer a crate of its own); its plugins and web page: [`frontend/`](https://github.com/yologdev/yobuild/tree/main/frontend) | | `integrations/yoagent-frontend/examples/` (`coding_agent`, `handoff_agent`, `minimal_browser`) | [`examples/`](https://github.com/yologdev/yobuild/tree/main/examples) | | `scripts/try-coding-agent.sh`, `scripts/try-handoff.sh` | [`scripts/`](https://github.com/yologdev/yobuild/tree/main/scripts) | | `integrations/yoagent-frontend/plugins/pi-extensions/confirm-dangerous.ts` | [`frontend/plugins/pi-extensions/`](https://github.com/yologdev/yobuild/tree/main/frontend/plugins/pi-extensions) |