Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,9 @@ The dashboard is the visual face of dreb: every agent session on the host, live

**Fleet overview.** Home base is every session across every project: live sessions with status chips (running / needs-attention / idle / error), activity lines, running subagents, task progress, context usage, and model — plus past sessions grouped by project, resumable with one tap. Terminal provider/API failures show their reason on the fleet card; transient failures clear that terminal card state when automatic retry begins. Live cards update through compact SSE snapshots instead of re-fetching the full cross-project inventory on every turn, keeping weak mobile links responsive. When a session needs input, the browser tab badges and (opt-in) sends a service-worker notification (installable PWA, works on Android and iOS). For opt-in local mobile transport profiling, see the [dashboard docs](packages/coding-agent/docs/dashboard.md#mobile-transport-profiling).

**Full-parity session view.** Not a reduced chat client: streaming markdown, thinking blocks, bespoke tool cards (read/write/edit/bash and markdown-rendering tools), sanitized inline PNG/JPEG/GIF/WebP images returned by any tool, task panels, queued-message chips, image attach/paste with sent-image transcript previews, built-in slash-command autocomplete and execution (including model/settings, session tree, fork, compact, import/export, dream, resume/reload, and new/quit), model/thinking switchers, fork-from-message, HTML export. Built-ins are intercepted generically and rejected fail-closed at the RPC prompt boundary, so unsupported or future commands show guidance instead of leaking into model input. Provider/API failures render inline on the failed assistant attempt with any partial output preserved, including after refresh or recovery; transient failures then switch the session status to retrying without erasing that history. Tool-result images remain visible to the human even when the active model is text-only. While the agent works you can **steer** (inject into the running turn), **queue follow-ups**, or **stop** — the same queue semantics as the TUI.
**Full-parity session view.** Not a reduced chat client: streaming markdown, thinking blocks, bespoke tool cards (read/write/edit/bash and markdown-rendering tools), sanitized inline PNG/JPEG/GIF/WebP images returned by any tool, task panels, queued-message chips, image attach/paste with sent-image transcript previews, built-in slash-command autocomplete and execution (including model/settings, scoped-models, session tree, fork, compact, import/export, dream, resume/reload, and new/quit), model/thinking switchers, fork-from-message, HTML export. `/scoped-models` opens the Settings editor for the session's current project context. Built-ins are intercepted generically and rejected fail-closed at the RPC prompt boundary, so unsupported or future commands show guidance instead of leaking into model input. Provider/API failures render inline on the failed assistant attempt with any partial output preserved, including after refresh or recovery; transient failures then switch the session status to retrying without erasing that history. Tool-result images remain visible to the human even when the active model is text-only. While the agent works you can **steer** (inject into the running turn), **queue follow-ups**, or **stop** — the same queue semantics as the TUI.

**Scoped models.** Dashboard Settings includes an editor for the persistent model-cycling scope. It searches provider-grouped available models; offers model, provider, and all-model toggles; shows accessible up/down controls for the ordered partial scope; and has save/reset actions that work on mobile. An absent `enabledModels` value means implicit all models in registry order, including future registry additions, and that all-model view cannot be reordered. A saved partial scope is a non-empty ordered list of exact canonical `provider/model` references; editing a legacy glob, fuzzy, or thinking-suffix scope normalizes it to that form. The selected project context reads effective global plus project settings, but dashboard writes remain global and warn when a project value shadows the result. Changes seed new sessions only and never mutate running sessions. See [Settings](packages/coding-agent/docs/settings.md#model-cycling) and the [RPC settings contract](packages/coding-agent/docs/rpc.md#settings).

**Low-data transcript images.** Tool results and images uploaded with user turns remain visible through content-addressed browser references rather than full base64 in events and transcript JSON. The default browser-local mode lazily requests a preview bounded to 1024 × 1024 and 256 KiB; clicking enlarges that same preview without downloading the original. Settings also offers request-free placeholders and informed-opt-in automatic originals. Explicit originals disclose their size and confirm above 1 MiB. Authenticated same-origin routes accept only signature-matching PNG/JPEG/GIF/WebP, send `nosniff`, and recover evicted entries from authoritative session data; static GIF previews preserve animated originals behind the original route. Image bytes therefore cannot cause an SSE oversized-event resync. Full-resolution HTML exports remain self-contained and unchanged.

Expand Down
18 changes: 9 additions & 9 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
"node": "22.x"
},
"packageManager": "npm@11.5.1",
"version": "2.53.1",
"version": "2.54.0",
"dependencies": {
"@dreb/coding-agent": "*",
"@mariozechner/jiti": "^2.6.5",
Expand Down
2 changes: 1 addition & 1 deletion packages/agent/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@dreb/agent-core",
"version": "2.53.1",
"version": "2.54.0",
"description": "General-purpose agent with transport abstraction, state management, and attachment support",
"type": "module",
"main": "./dist/index.js",
Expand Down
2 changes: 1 addition & 1 deletion packages/ai/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@dreb/ai",
"version": "2.53.1",
"version": "2.54.0",
"description": "Unified LLM API with automatic model discovery and provider configuration",
"type": "module",
"main": "./dist/index.js",
Expand Down
2 changes: 1 addition & 1 deletion packages/ai/test/abort.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ describe("AI Providers Abort Tests", () => {
describe.skipIf(
process.env.DREB_SKIP_LIVE_API === "1" || (!process.env.ANTHROPIC_API_KEY && !process.env.ANTHROPIC_OAUTH_TOKEN),
)("Anthropic Provider Abort", () => {
const llm = getModel("anthropic", "claude-opus-4-1-20250805");
const llm = getModel("anthropic", "claude-opus-4-6");

it("should abort mid-stream", { retry: 3 }, async () => {
await testAbortSignal(llm, { thinkingEnabled: true, thinkingBudgetTokens: 2048 });
Expand Down
5 changes: 2 additions & 3 deletions packages/ai/test/supports-xhigh.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,8 @@ describe("supportsXhigh", () => {
});

it("returns false for Opus 4.1 (below threshold)", () => {
const model = getModel("anthropic", "claude-opus-4-1");
expect(model).toBeDefined();
expect(supportsXhigh(model!)).toBe(false);
const base = getModel("anthropic", "claude-opus-4-6");
expect(supportsXhigh({ ...base, id: "claude-opus-4-1" })).toBe(false);
});

it("returns false for Opus 4.5 (below threshold)", () => {
Expand Down
4 changes: 2 additions & 2 deletions packages/coding-agent/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ Type `/` in the editor to trigger commands. [Extensions](#extensions) can regist
|---------|-------------|
| `/login`, `/logout` | OAuth authentication |
| `/model` | Switch models |
| `/scoped-models` | Enable/disable models for cycling |
| `/scoped-models` | Set the ordered model-cycling scope; in dashboard sessions, opens the scoped-models Settings editor for the current project context |
| `/settings` | Thinking level, thinking summaries (adaptive Claude models), theme, message delivery, transport |
| `/resume` | Pick from previous sessions |
| `/new` | Start a new session |
Expand Down Expand Up @@ -278,7 +278,7 @@ Use `/settings` to modify common options, or edit JSON files directly:
| `~/.dreb/agent/settings.json` | Global (all projects) |
| `.dreb/settings.json` | Project (overrides global) |

See [docs/settings.md](docs/settings.md) for all options. Dashboard Settings re-entry reloads durable global and project settings after flushing pending writes, so it sees external file edits; unreadable, invalid, or failed writes are surfaced as errors rather than showing stale values. See the [RPC settings contract](docs/rpc.md#get_settings).
See [docs/settings.md](docs/settings.md) for all options. Dashboard Settings re-entry reloads durable global and project settings after flushing pending writes, so it sees external file edits; unreadable, invalid, or failed writes are surfaced as errors rather than showing stale values. Its scoped-models editor provides provider-grouped search, model/provider/all toggles, accessible ordered partial-scope controls, and explicit save/reset on desktop and mobile. Absent `enabledModels` means future-inclusive all models in registry order; saved partial scopes are non-empty ordered canonical references, and editing a legacy pattern scope normalizes it. A selected project context shows effective merged settings, while writes remain global and warn when project settings shadow them. Changes seed new sessions only; `/scoped-models` opens the editor for the current dashboard session cwd. See the [RPC settings contract](docs/rpc.md#get_settings).

---

Expand Down
Loading
Loading