From e5c5bf83cc223f76a351fc0357a678c39147d8fc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 1 Nov 2026 02:35:51 +0000 Subject: [PATCH] docker-agent: sync docs with docker-agent v1.154.0 --- .../docs/configuration/hooks/index.md | 3 + .../docs/configuration/models/index.md | 6 +- .../docs/configuration/overview/index.md | 2 +- .../docs/configuration/sandbox/index.md | 2 +- .../docs/configuration/user-settings/index.md | 4 + .../docker-agent/docs/features/acp/index.md | 2 +- .../docs/features/api-server/index.md | 4 + .../docker-agent/docs/features/cli/index.md | 6 +- .../docs/features/harnesses/index.md | 7 +- .../docker-agent/docs/features/tui/index.md | 17 +-- .../docker-agent/docs/guides/go-sdk/index.md | 25 +++- .../docker-agent/docs/guides/secrets/index.md | 56 +++++++- .../docker-agent/docs/guides/tips/index.md | 13 ++ .../docs/providers/anthropic/index.md | 106 ++++++++++++---- .../docs/providers/baseten/index.md | 20 +-- .../docs/providers/custom/index.md | 45 +++++++ .../docs/providers/google/index.md | 2 +- .../docs/providers/lunaroute/index.md | 71 +++++++++++ .../docs/providers/openai/index.md | 12 +- .../docs/providers/opper/index.md | 69 ++++++++++ .../docs/providers/orcarouter/index.md | 88 +++++++++++++ .../docs/providers/overview/index.md | 4 + .../docs/providers/runcrate/index.md | 120 ++++++++++++++++++ _vendor/modules.txt | 4 +- go.mod | 4 +- go.sum | 4 + 26 files changed, 618 insertions(+), 78 deletions(-) create mode 100644 _vendor/github.com/docker/docker-agent/docs/providers/lunaroute/index.md create mode 100644 _vendor/github.com/docker/docker-agent/docs/providers/opper/index.md create mode 100644 _vendor/github.com/docker/docker-agent/docs/providers/orcarouter/index.md create mode 100644 _vendor/github.com/docker/docker-agent/docs/providers/runcrate/index.md diff --git a/_vendor/github.com/docker/docker-agent/docs/configuration/hooks/index.md b/_vendor/github.com/docker/docker-agent/docs/configuration/hooks/index.md index d898512efdc..af8ce500f74 100644 --- a/_vendor/github.com/docker/docker-agent/docs/configuration/hooks/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/configuration/hooks/index.md @@ -293,6 +293,7 @@ Built-ins are typically zero-config and faster than equivalent shell hooks becau | `redact_secrets` | `tool_input_transform`, `before_llm_call`, `tool_response_transform` | _none_ | Scrubs detected secrets (API keys, tokens, private keys, …) out of tool call arguments, outgoing chat content, and tool output. The same builtin handles all three events and dispatches on the event name. Auto-registered on all three events by `redact_secrets: true` on the agent — see [`examples/redact_secrets_hooks.yaml`](https://github.com/docker/docker-agent/blob/main/examples/redact_secrets_hooks.yaml) for the manual wiring. | | `transform_json` | `tool_response_transform` | JSON field names | Keeps only the named top-level fields of a JSON object. Nested values are preserved; missing fields are omitted. No expression language or domain validation. | | `limit_large_tool_results` | `tool_response_transform`, `session_end` | _none_ | **Always-on safety hook** — automatically injected by the runtime, no configuration required. When a tool result from the `filesystem`, `shell`, `background_jobs`, `mcp`, or `a2a` categories exceeds 2,000 lines or 50 KiB, the full payload is written to a per-session temp file and replaced in the conversation with a notice plus a bounded excerpt (up to 2,000 excerpt lines; 50 KiB including the notice): the tail for most tools, but the head for the built-in filesystem `read_file`, whose notice suggests a follow-up call with `line`/`limit` to continue reading. If saving the payload fails, a bounded inline excerpt is returned without a file reference. Background-job excerpts retain status metadata before the log tail. The `session_end` leg deletes the temp directory. Internal toolsets (`memory`, `plan`, `tasks`, `think`, …) are not affected. | +| `keep_awake` | `session_start`, `session_end` | _none_ | CLI-owned sleep inhibitor, controlled by the disabled-by-default `settings.keep_awake` preference. | | `http_post` | Any event | `[URL, body]` | Sends an HTTP POST request with the optional body in `args[1]` to the URL in `args[0]`. Missing or empty URLs are ignored; only HTTP(S) destinations are accepted, using an SSRF-safe transport. | | `safer_shell` | `pre_tool_use` | _none_ | **Deprecated compatibility shim.** The runtime now classifies every shell command natively (`safe` / `destructive` / `unknown`) and gates it through the session's [safety mode](../permissions/index.md#safety-modes), so this builtin no longer emits verdicts. Pinned entries keep working as pure labellers that attach classification metadata (`safety_label`, `blast_radius`, `category`, `reason`) to the call. Filters by tool name internally (no-op for calls other than `shell` and `run_background_job`). | | `unload` | `on_agent_switch` | _none_ | POSTs `{"model": ""}` to each of the previous agent's DMR model endpoints (`/_unload` by default, overridable per-model via `unload_api`) to free the GPU/RAM the just-departing model was holding. Pure HTTP — reads the model snapshot the runtime ships on `on_agent_switch` and depends on no provider-specific runtime state. Non-DMR providers (OpenAI, Anthropic, …) are silently skipped, so cross-provider chains are safe. Errors are logged and swallowed; agent switching never blocks on a slow or unreachable engine (each call has a 10 s timeout). See [`examples/unload_on_switch.yaml`](https://github.com/docker/docker-agent/blob/main/examples/unload_on_switch.yaml). | @@ -311,6 +312,8 @@ Historical tool results are also bounded on outgoing chat and compaction request > `limit_large_tool_results` is injected unconditionally by the runtime — it is always active and cannot be removed from config. +The CLI also installs `keep_awake` on `session_start` and `session_end`. It uses [`github.com/rumpl/keepawake`](https://github.com/rumpl/keepawake) to hold a native sleep inhibitor for each run when `settings.keep_awake` is enabled. The setting is disabled by default and available in both TUIs. Cleanup runs even after cancellation or errors; acquisition failures warn without blocking the agent. This builtin is registered by the CLI, not the base runtime. + A minimal snapshot wiring looks like this: ```yaml diff --git a/_vendor/github.com/docker/docker-agent/docs/configuration/models/index.md b/_vendor/github.com/docker/docker-agent/docs/configuration/models/index.md index 34b876ae26b..b06c92c9208 100644 --- a/_vendor/github.com/docker/docker-agent/docs/configuration/models/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/configuration/models/index.md @@ -18,7 +18,7 @@ models: first_available: [list] # Optional: candidate model refs, tried in order by available credentials. # Mutually exclusive with other model settings. provider: string # Required unless using first_available. One of: openai, anthropic, google, amazon-bedrock, - # dmr, mistral, xai, nebius, nvidia, minimax, baseten, daoxe, ovhcloud, groq, fireworks-ai, deepseek, cerebras, togetherai, huggingface, moonshotai, vercel, cloudflare-workers-ai, cloudflare-ai-gateway, requesty, openrouter, api-route, atlascloud, + # dmr, mistral, xai, nebius, nvidia, minimax, baseten, daoxe, ovhcloud, groq, fireworks-ai, deepseek, cerebras, togetherai, huggingface, moonshotai, vercel, cloudflare-workers-ai, cloudflare-ai-gateway, requesty, openrouter, opper, runcrate, api-route, lunaroute, orcarouter, atlascloud, # azure, ollama, github-copilot, or a named provider defined # under the top-level `providers:` section. model: string # Required: model identifier @@ -60,7 +60,7 @@ models: | Property | Type | Required | Description | | --------------------- | ---------- | -------- | ------------------------------------------------------------------------------------- | | `first_available` | array | ✗ | Candidate model references tried in order; selects the first whose credentials are configured. Mutually exclusive with other model settings. | -| `provider` | string | ✓/✗ | Required for regular model definitions; omitted for `first_available` selectors. Provider: `openai`, `anthropic`, `google`, `amazon-bedrock`, `dmr`, `mistral`, `xai`, `nebius`, `nvidia`, `minimax`, `baseten`, `daoxe`, `ovhcloud`, `groq`, `fireworks-ai`, `deepseek`, `cerebras`, `togetherai`, `huggingface`, `moonshotai`, `vercel`, `cloudflare-workers-ai`, `cloudflare-ai-gateway`, `requesty`, `openrouter`, `api-route`, `atlascloud`, `azure`, `ollama`, `github-copilot`, `chatgpt`, `opencode`, `opencode-go`, or any [named provider](../../providers/custom/index.md). | +| `provider` | string | ✓/✗ | Required for regular model definitions; omitted for `first_available` selectors. Provider: `openai`, `anthropic`, `google`, `amazon-bedrock`, `dmr`, `mistral`, `xai`, `nebius`, `nvidia`, `minimax`, `baseten`, `daoxe`, `ovhcloud`, `groq`, `fireworks-ai`, `deepseek`, `cerebras`, `togetherai`, `huggingface`, `moonshotai`, `vercel`, `cloudflare-workers-ai`, `cloudflare-ai-gateway`, `requesty`, `openrouter`, `opper`, `runcrate`, `api-route`, `lunaroute`, `orcarouter`, `atlascloud`, `azure`, `ollama`, `github-copilot`, `chatgpt`, `opencode`, `opencode-go`, or any [named provider](../../providers/custom/index.md). | | `model` | string | ✓/✗ | Required for regular model definitions; omitted for `first_available` selectors. Model name (e.g., `gpt-4o`, `claude-sonnet-4-5`, `gemini-3.5-flash`) | | `description` | string | ✗ | Informational, human-readable summary of the model's purpose or strengths (e.g., "fast and cheap, good for summaries"). Not sent to the model. Can be combined with `first_available` (a selector's description is kept when it resolves). | | `temperature` | float | ✗ | Sampling randomness. Range is provider-dependent — typically `0.0–2.0` (Anthropic caps at `1.0`). `0.0` is deterministic. | @@ -558,7 +558,7 @@ for a complete local-server configuration. ## Custom HTTP Headers For OpenAI-compatible providers (`openai`, `github-copilot`, `mistral`, `xai`, -`nebius`, `nvidia`, `minimax`, `baseten`, `daoxe`, `ovhcloud`, `groq`, `fireworks-ai`, `deepseek`, `cerebras`, `togetherai`, `huggingface`, `moonshotai`, `vercel`, `cloudflare-workers-ai`, `cloudflare-ai-gateway`, `requesty`, `openrouter`, `atlascloud`, `ollama`, and any custom provider using the OpenAI API), +`nebius`, `nvidia`, `minimax`, `baseten`, `daoxe`, `ovhcloud`, `groq`, `fireworks-ai`, `deepseek`, `cerebras`, `togetherai`, `huggingface`, `moonshotai`, `vercel`, `cloudflare-workers-ai`, `cloudflare-ai-gateway`, `requesty`, `openrouter`, `opper`, `runcrate`, `lunaroute`, `orcarouter`, `atlascloud`, `ollama`, and any custom provider using the OpenAI API), `provider_opts.http_headers` adds arbitrary HTTP headers to every outgoing request: diff --git a/_vendor/github.com/docker/docker-agent/docs/configuration/overview/index.md b/_vendor/github.com/docker/docker-agent/docs/configuration/overview/index.md index 47ce1666e16..df46eef51a6 100644 --- a/_vendor/github.com/docker/docker-agent/docs/configuration/overview/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/configuration/overview/index.md @@ -155,7 +155,7 @@ See [Provider Credentials](../../providers/overview/index.md#provider-credential | `DOCKER_AGENT_HIDE_TELEMETRY_BANNER`| Set to `1` to suppress the first-run telemetry notice. | | `DOCKER_AGENT_AUTO_UPDATE` | Set to a truthy value (`1`, `true`, `yes`, `on`) to let standalone release binaries self-update before running. See [Optional Self-Updates](../../getting-started/installation/index.md#optional-self-updates). | | `DOCKER_AGENT_NO_TOKEN_EXCHANGE` | Set to `1` to stop Docker Agent from exchanging the access token stored by `docker login` for a Docker token. See [Docker authentication](../../guides/secrets/index.md#docker-authentication). | -| `DOCKER_AGENT_HUB_LOGIN_URL` | Point the token exchange at a Docker staging environment. Ignored unless it is an HTTPS `docker.com` URL. | +| `DOCKER_AGENT_HUB_LOGIN_URL` | Point the token exchange at a Docker staging environment. Ignored unless it is an HTTPS `docker.com` URL. A staging host, such as `hub-stage.docker.com`, also makes Docker Agent read staging sessions from the Docker secrets engine. | | `DOCKER_AGENT_DISABLE_DESKTOP_PROXY` | Set to a truthy value (`1`, `true`, `yes`, `on`) to bypass Docker Desktop's PAC adapter per request and restore standard `HTTP_PROXY`/`HTTPS_PROXY`/`ALL_PROXY`/`NO_PROXY` routing. | > [!NOTE] diff --git a/_vendor/github.com/docker/docker-agent/docs/configuration/sandbox/index.md b/_vendor/github.com/docker/docker-agent/docs/configuration/sandbox/index.md index fb2a4e70477..668d5bdd8f6 100644 --- a/_vendor/github.com/docker/docker-agent/docs/configuration/sandbox/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/configuration/sandbox/index.md @@ -98,7 +98,7 @@ weakening a kit's restrictions or silently copying local credentials. Any provider, registry, or tool endpoint the agent needs must be reachable under the cloud policy. CLI-specified model, safety, flavor, and prompt options still apply. -Docker Agent uses `sbx --cloud run --detached`, then `exec`: this supports sbx's +Docker Agent uses `sbx --cloud run --detach`, then `exec`: this supports sbx's v3 source builds and multi-kit assembly without launching a second agent TUI. Provisioning messages go to stderr, leaving stdout for the agent (including `--json` output). Piped/headless execution does not allocate a TTY. diff --git a/_vendor/github.com/docker/docker-agent/docs/configuration/user-settings/index.md b/_vendor/github.com/docker/docker-agent/docs/configuration/user-settings/index.md index a0a689b9bff..206c6ca4121 100644 --- a/_vendor/github.com/docker/docker-agent/docs/configuration/user-settings/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/configuration/user-settings/index.md @@ -53,6 +53,8 @@ You rarely need to hand-edit this file. Most fields are managed from the TUI's ` | `sound` | boolean | `false` | Play a notification sound on task success or failure. | | `sound_threshold` | int | `10` | Minimum duration in seconds a task must run before a success sound plays (failures always play). | | `snapshot` | boolean | `false` | Enable automatic shadow-git snapshots at turn boundaries globally. See [Snapshots](../../features/snapshots/index.md). | +| `background_compaction` | boolean | `false` | Generate automatic compaction summaries while the agent continues working. Apply completed summaries between turns, preserving messages added during generation. Unfinished work is cancelled when the stream ends. | +| `background_compaction_threshold` | integer | `70` | Context-window percentage (1–99) at which background compaction starts. Invalid values fall back to 70. Set below the agent's blocking `compaction_threshold` (90% by default) to allow time for generation. | | `cache_stable_prompts` | boolean | `false` | Keep changing trusted context (date, environment info, dynamic prompt files) out of the frozen system prefix and append chronological updates instead, improving prompt-cache hit rates on long sessions. | | `warn_on_cache_miss` | boolean | `false` | Warn when a model call after the first one in a session reports no cached input tokens (a prompt-cache miss). Managed from the **Notifications** tab of `/settings`. | | `busy_send_mode` | string | `steer` | What happens to a message sent while the agent is working: `steer` injects it into the ongoing stream; `queue` holds it until the current turn ends. | @@ -107,6 +109,8 @@ settings: sound_threshold: 10 snapshot: true cache_stable_prompts: true + background_compaction: true + background_compaction_threshold: 70 warn_on_cache_miss: true busy_send_mode: queue interrupt_confirmation: double-tap diff --git a/_vendor/github.com/docker/docker-agent/docs/features/acp/index.md b/_vendor/github.com/docker/docker-agent/docs/features/acp/index.md index 5007be77313..15ac1a2f03d 100644 --- a/_vendor/github.com/docker/docker-agent/docs/features/acp/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/features/acp/index.md @@ -106,7 +106,7 @@ Send W3C context in **request/notification `params._meta`**, not at the JSON-RPC Each implemented agent request/notification starts an `acp.` SERVER span, linked to valid incoming context and enclosing its handler. These boundary spans record only the static RPC method, not request content, paths, credential metadata, or raw errors. Invalid/non-string/oversized trace fields are ignored; each accepted field is bounded to 512 bytes and validated by the W3C propagator. A bad tracestate does not invalidate a valid traceparent. Client baggage and arbitrary `_meta` fields are not imported into tracing. -The request context flows into existing runtime/model/tool instrumentation. Outgoing ACP session updates, permission requests, filesystem operations, terminal operations (including detached cleanup), and elicitation carry only `traceparent`/`tracestate` in `params._meta`. Metadata is copied before injection; stale trace fields and baggage are removed. Response metadata is never adopted as the current trace. MCP elicitation and sampling callbacks use the sole owning tool call's trace rather than the connection's setup trace; existing ambiguous-owner restrictions remain in effect. +The request context flows into existing runtime/model/tool instrumentation. Outgoing ACP session updates, permission requests, filesystem operations, terminal operations (including detached cleanup), and elicitation carry only `traceparent`/`tracestate` in `params._meta`. Metadata is copied before injection; stale trace fields and baggage are removed. Response metadata is never adopted as the current trace. MCP elicitation callbacks use the sole owning tool call's trace rather than the connection's setup trace; existing ambiguous-owner restrictions remain in effect. Traces are not stored on sessions: concurrent and later prompts use their own incoming context. Terminal final-close retries use the cleanup caller's context, not a remembered creation trace. Detached background/drain work may outlive the handler span while retaining its trace. This adds request SERVER spans and propagation, not separate ACP CLIENT spans for every outbound call, response metadata, or automatic metadata on unsupported SDK methods. Existing runtime/provider telemetry and its content-capture settings retain their own policy; the boundary-span restriction is not a global telemetry-redaction guarantee. diff --git a/_vendor/github.com/docker/docker-agent/docs/features/api-server/index.md b/_vendor/github.com/docker/docker-agent/docs/features/api-server/index.md index 963772bc1f0..8ece62ff493 100644 --- a/_vendor/github.com/docker/docker-agent/docs/features/api-server/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/features/api-server/index.md @@ -211,7 +211,9 @@ Event types include: - `stream_started` / `stream_stopped` — Agent execution lifecycle - `agent_choice` — Streamed text content (partial responses) - `agent_choice_reasoning` — Streamed reasoning content +- `agent_choice_reasoning_reset` — Discard all reasoning accumulated for the identified `session_id` and `message_id` (for example, after a server fallback). Keep text, other messages, and tool calls; later reasoning deltas append to the now-empty buffer. This is an ordering barrier, never coalesced with deltas - `partial_tool_call` — Streamed tool-call arguments, keyed by `tool_call.id`. The first one also carries `tool_definition` +- `tool_calls_retracted` — Tool calls announced by `partial_tool_call` that will never run, listed in `tool_call_ids`: the model refused, or a server fallback handed the turn to another model - `tool_call` — Agent requesting tool execution - `tool_call_output` — Streamed output of a running tool, keyed by `tool_call_id` - `tool_call_confirmation` — Tool call waiting for user approval @@ -219,6 +221,8 @@ Event types include: - `plan_changed` — A shared plan was created, updated, or deleted through the plan toolset. The payload carries the plan's `scope`, `name`, `action`, and `version` — never its content. Shared plans are deliberately process-global: every active stream served by the same process subscribes to the same shared plan notifier and receives the event regardless of which session performed the mutation, and the payload does not identify the mutating session (read the plan's `author` metadata for collaborative attribution). - `error` — Error during execution +Append-only outputs such as CLI `--exec` and ACP thought chunks cannot retract bytes already delivered; their consumers may still show declined reasoning. The mutable TUI, lean TUI, WASM demo and persisted transcript apply the reset. + ## Typical Workflow 1. **List agents** — `GET /api/agents` to discover available agents diff --git a/_vendor/github.com/docker/docker-agent/docs/features/cli/index.md b/_vendor/github.com/docker/docker-agent/docs/features/cli/index.md index 5b885cac990..248b719cb39 100644 --- a/_vendor/github.com/docker/docker-agent/docs/features/cli/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/features/cli/index.md @@ -801,7 +801,11 @@ $ docker agent debug oauth login agent.yaml github > > The text output of `debug auth` truncates the token to a short preview, but `--json` includes the complete, unredacted JWT in its `token` field. Never paste `debug auth --json` output into logs, issue trackers, or bug reports — anyone with that token can act as you against Docker. Use the plain-text output (or redact the `token` field yourself) when sharing diagnostic output. -The `Source` field says where the token came from: `docker desktop`, or `minted from the stored access token` when it was obtained by exchanging the access token `docker login` stored. See [Docker authentication](../../guides/secrets/index.md#docker-authentication). +The `Source` field says where the token came from: `docker desktop secrets engine` when it was read from the secrets engine Docker Desktop serves, `docker desktop` when Docker Desktop's backend served it, or `minted from the stored access token` when it was obtained by exchanging the access token `docker login` stored. See [Docker authentication](../../guides/secrets/index.md#docker-authentication). + +`Username` and `Email` come from the secrets engine's session when the engine supplied the token, otherwise from Docker Desktop, and otherwise from the token itself. + +When the secrets engine couldn't be read, `Secrets engine` says why, `Socket` which socket was tried, and `Hint` how to fix it. The JSON output has them under `secrets_engine` as `reason`, `socket` and `hint`, along with the full `error`. A secrets engine that isn't running is only reported when no token was found, since machines without Docker Desktop don't have one. The `config`, `toolsets`, `tool`, `skills`, and `title` subcommands also accept [runtime configuration flags](#runtime-configuration-flags) (`--working-dir`, `--models-gateway`, …); `title` additionally accepts `--model` to override the model used to resolve the config before generating the title. diff --git a/_vendor/github.com/docker/docker-agent/docs/features/harnesses/index.md b/_vendor/github.com/docker/docker-agent/docs/features/harnesses/index.md index 1dcb5b202e1..427d39818cc 100644 --- a/_vendor/github.com/docker/docker-agent/docs/features/harnesses/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/features/harnesses/index.md @@ -78,7 +78,12 @@ agents: **not** a Docker Agent `provider/model` reference — the harness model never goes through Docker Agent's model providers or routing. - `effort` is forwarded as `--effort` and must be one of `low`, `medium`, - `high`, `xhigh`, or `max`. Omit it to use Claude Code's own default. + `high`, `xhigh`, or `max`. Omit it to use Claude Code's own default. In the + TUI, `/effort` and Shift+Tab change it for the + following turns of the session (`command-code` harnesses too). +- Session titles come from the CLI as well, since a harness agent has no + model: Docker Agent runs `claude --print` once on the `haiku` model, with + no tools, MCP servers or saved session, to title a new session. #### Authentication (Claude subscription, no API key) diff --git a/_vendor/github.com/docker/docker-agent/docs/features/tui/index.md b/_vendor/github.com/docker/docker-agent/docs/features/tui/index.md index adb982769f9..8a00e7a464a 100644 --- a/_vendor/github.com/docker/docker-agent/docs/features/tui/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/features/tui/index.md @@ -93,7 +93,7 @@ Type `/` during a session to see available commands, or press Ctrl+`, or `/effort` alone to pick from the supported levels; reasoning models only). Press Tab after `/effort` and a space to complete a level the current model supports | +| `/effort` | Set the current model's reasoning-effort level (`/effort `, or `/effort` alone to pick from the supported levels; reasoning models and `claude-code` / `command-code` harnesses only). Press Tab after `/effort` and a space to complete a level the current model supports | | `/settings` | Manage appearance, behavior, and notification preferences | | `/yolo` | Toggle automatic tool call approval | | `/title` | Set or regenerate session title | @@ -202,7 +202,7 @@ The thinking state of each model is shown with a gauge + value on the card and a The **effort gauge** is a fixed-width six-cell indicator (`▰` filled, `▱` empty) so the badge column stays aligned. It maps the six selectable levels one-to-one onto filled-cell counts — `minimal` → `▰▱▱▱▱▱`, `low` → `▰▰▱▱▱▱`, `medium` → `▰▰▰▱▱▱`, `high` → `▰▰▰▰▱▱`, `xhigh` → `▰▰▰▰▰▱`, `max` → `▰▰▰▰▰▰` — so the cell count alone is lossless, with a low→high color ramp as a secondary cue. A capable-but-disabled model shows a dim empty gauge (`▱▱▱▱▱▱` `off`), adaptive budgets show `auto`, and token budgets keep `◉ `. The same gauge + value renders on the focus card, the Agent Inspector, and the row. -Harness-backed agents (e.g. `claude-code`) show the harness type as their model and no thinking gauge. Press **Shift+Tab** to cycle the current model's thinking-effort level; a `✻ Thinking: ` toast confirms the change (useful when the sidebar is hidden). +Harness-backed agents (e.g. `claude-code`) show the harness type as their model. `claude-code` and `command-code` harnesses show their `effort` on the gauge, or `auto` while the CLI picks it; other harnesses show no thinking gauge. Press **Shift+Tab** to cycle the current model's thinking-effort level; a `✻ Thinking: ` toast confirms the change (useful when the sidebar is hidden). ### Agent Delegation Feedback @@ -581,19 +581,6 @@ Run `/settings` to open the settings dialog. Click a category tab, or use T > > This section covers the `/settings` dialog. For the complete list of `settings:` fields (including ones with no dialog UI, like `permissions`, `hooks`, and `keybindings`) and how they interact with CLI flags and aliases, see [User Settings](../../configuration/user-settings/index.md). -The **Appearance** tab selects the theme and customizes the layout. Layout changes apply immediately to the UI behind the dialog. On wide terminals, a schematic preview appears beside the controls without reducing the space available to the settings list: - -- **Sidebar position**: `Right` (default), `Left`, `Top`, or `Bottom`. Left/right keep the full vertical sidebar next to the chat; top/bottom render it as a compact horizontal band above or below the chat (session title, working directory, token usage, plus a one-line summary of the current agent and its model; in multi-agent configurations all team agents are listed by name after the current agent). -- **Sidebar info mode**: `Compact` (default) or `Detailed`. Controls how the Agents panel renders agent rows — see [Agents Panel](#agents-panel) for details. Persisted as `settings.layout.sidebar_info_mode: detailed`; compact is the default and omitted from the config. -- **Section spacing**: `Compact`, `Normal` (default), or `Relaxed`, the number of blank lines between the sidebar sections (1, 2, or 3). -- **Sidebar sections**: toggle the visibility of the **Session path** (the working directory line, including its git branch) and the **Token usage**, **Agents**, **Tools**, **Plans**, and **Todos** sections. All are visible by default except [Plans](#plans-sidebar), which is opt-in. The session title is always shown. - -Appearance also controls split-diff rendering, expanded thinking, whether tool results are hidden by default, and **Show startup banner** — the ASCII-art banner drawn on an empty conversation (persisted as `settings.show_banner: false` when turned off, and honored by the lean TUI too). Select **Theme** to open the theme picker. - -The **Behavior** tab controls busy-message handling, the auto-approve default, tab restoration, automatic snapshots, lean UI, and the maximum tab-title length. Restore-tabs and lean-UI changes take effect on the next launch. Enabling auto-approve requires confirmation. - -The **Notifications** tab enables completion sounds and sets the minimum task duration before a sound plays. - Press Enter to apply and persist, or Escape to cancel and restore the previous layout. The settings are saved globally in `~/.config/cagent/config.yaml`: ```yaml diff --git a/_vendor/github.com/docker/docker-agent/docs/guides/go-sdk/index.md b/_vendor/github.com/docker/docker-agent/docs/guides/go-sdk/index.md index 2c6a6871997..d444cc705a6 100644 --- a/_vendor/github.com/docker/docker-agent/docs/guides/go-sdk/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/guides/go-sdk/index.md @@ -135,12 +135,30 @@ The CLI uses this helper for both its initial runtime and TUI-spawned runtimes. The HTTP API wires the same manifest budgets into its native runtimes; other serving adapters retain their existing wiring and budget behavior. +## Remote execution + +Remote HTTP/SSE execution lives in `pkg/runtime/remote`: + +```go +client, err := remote.NewClient(serverURL) +if err != nil { + return err +} +rt, err := remote.NewRuntime(client) +``` + +Import `github.com/docker/docker-agent/pkg/runtime/remote` for these constructors. +Shared interfaces and events remain in `pkg/runtime` (`runtime.Runtime`, +`runtime.Event`, and the concrete event types). The remote implementation imports +those types; local execution does not import remote transport. There are no +compatibility re-exports of remote clients or constructors in `pkg/runtime`. + ## Execution Capability Inspection `(*runtime.LocalRuntime).AgentExecutionCapabilities(name)` returns a static native/harness profile without starting tools, constructing drivers or initializing budget counters. Unknown agents return nil. The same optional -profile is available on `runtime.AgentConfigInfo`, `runtime.AgentDetails` in +profile is available on `inspection.AgentConfigInfo`, `runtime.AgentDetails` in `team_info`, and local startup/refresh `runtime.AgentInfoEvent` values. See [Execution capabilities](../../features/api-server/index.md#execution-capabilities) for field meanings and unknown/remote behavior. @@ -275,7 +293,7 @@ For anything beyond that, call `chat.Runtime()` to access the underlying `runtim > still works and falls back to resolving the sole pending request. > > If you implement your own `runtime.Runtime` (rather than embedding -> `runtime.LocalRuntime`/`runtime.RemoteRuntime`), you do need to update your +> `runtime.LocalRuntime`/`remote.Runtime`), you do need to update your > method's signature to match, and also add an `OnElicitationRequest(handler > func(runtime.Event))` method (a no-op is fine if your runtime never raises > elicitations) — both are required interface methods, matching the existing @@ -325,7 +343,7 @@ if err != nil { ts := ragtool.New(mgr, mgr.ToolName(), ragtool.WithIndexingTimeout(ragCfg.GetIndexingTimeout())) ``` -`cmd/wasm/toolsets.go` registers exactly this as the browser's `type: rag` creator, fed by `createSession`'s `documents` option. +With `-tags docker_agent_wasm_rag`, `cmd/wasm/rag.go` registers this as the browser's `type: rag` creator, fed by `createSession`'s `documents` option. RAG is excluded from the default WASM build. ## Loading YAML with Hand-Picked Registries (lean embedding) @@ -904,7 +922,6 @@ embedding, context-discovery or compaction capabilities. | Caller | Clone failure behavior | | --- | --- | | Session title | Tries the next configured candidate; exhaustion does not interrupt chat. | -| MCP sampling, with or without tools | Returns the actionable clone error before inference. | | LLM compaction | Reports failure and leaves the session history intact. | | Compaction window resolution | The checked resolver returns zero plus the error; the LLM compaction path reports it. UI gauges remain best-effort. | diff --git a/_vendor/github.com/docker/docker-agent/docs/guides/secrets/index.md b/_vendor/github.com/docker/docker-agent/docs/guides/secrets/index.md index 7accef7fce3..b2345b9064b 100644 --- a/_vendor/github.com/docker/docker-agent/docs/guides/secrets/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/guides/secrets/index.md @@ -18,7 +18,7 @@ Docker Agent needs API keys to talk to model providers (OpenAI, Anthropic, etc.) | 2 | [Docker Compose secrets](#docker-compose-secrets) | Files in `/run/secrets/` | | 3 | [Docker Agent env file](#docker-agent-env-file) | `~/.config/cagent/.env`, written by `docker agent setup` | | 4 | [ChatGPT login](../../providers/chatgpt/index.md) | `CHATGPT_OAUTH_TOKEN` from the account login created by `docker agent setup` | -| 5 | [Credential helper](#credential-helper) | Custom command declared in `~/.config/cagent/config.yaml` under `credential_helper:` | +| 5 | [Credential helper](#credential-helper) | Custom command declared in `~/.config/cagent/config.yaml` under `credential_helper:`; supplies `DOCKER_TOKEN` only | | 6 | [Docker Desktop](#docker-desktop) | Secrets stored by the Docker Desktop backend (no setup on a Desktop install) | The first provider that has a value wins. You can mix and match — for example, use environment variables for one key and the Docker Agent env file for another. @@ -26,7 +26,7 @@ The first provider that has a value wins. You can mix and match — for example, > [!NOTE] > Older Docker Agent versions could also read secrets from the macOS Keychain and the `pass` password manager. These sources are no longer consulted: migrate any keys stored there to one of the sources above, e.g. by re-running `docker agent setup`. -Whatever provider returns the value, if that value looks like a [1Password secret reference](#1password-references) (it starts with `op://`), Docker Agent resolves it through the `op` CLI before handing it to a model provider or tool. +Whatever provider returns the value, if that value looks like a [1Password secret reference](#1password-references) (it starts with `op://`), Docker Agent resolves it through the `op` CLI before handing it to a model provider or tool. This applies to every variable, API keys included, and needs no credential helper: `ANTHROPIC_API_KEY=op://Personal/Anthropic/api-key` in any source above is enough. When Docker Agent runs an agent with `--sandbox` and a Docker AI gateway is configured, the sandbox proxy authenticates gateway requests itself: it injects your Docker login token into HTTPS requests to the gateway host (docker.com domains only). The token never enters the sandbox — inside it, `DOCKER_TOKEN` is a proxy-managed placeholder. @@ -52,6 +52,26 @@ toolsets: GITHUB_PERSONAL_ACCESS_TOKEN: $GITHUB_PERSONAL_ACCESS_TOKEN ``` +### Docker Agent-only variables + +Other tools read the same variables: Claude Code reads `ANTHROPIC_API_KEY`, Codex reads `OPENAI_API_KEY`. To give Docker Agent its own value, prefix the name with `DOCKER_AGENT_ENV_`. Docker Agent looks up `DOCKER_AGENT_ENV_` before ``, and other tools ignore it: + +```bash +export ANTHROPIC_API_KEY=sk-ant-... # used by other tools +export DOCKER_AGENT_ENV_ANTHROPIC_API_KEY="op://Personal/Anthropic/api-key" # used by Docker Agent +docker agent run agent.yaml +``` + +- The prefix works for every variable Docker Agent resolves through its secret chain: provider API keys, `${VAR}` references in MCP `env`, `DOCKER_TOKEN`, and the OpenAI key used by `/speak`. +- `DOCKER_AGENT_ENV_` wins over `` across all [sources](#overview) and `--env-from-file`: an override in the Docker Agent env file beats a plain shell export. +- An empty override is ignored: `export DOCKER_AGENT_ENV_ANTHROPIC_API_KEY=` falls back to an override in a later source, then to `ANTHROPIC_API_KEY`. +- Docker Agent's own settings (`DOCKER_AGENT_*`) are never overridden this way. +- The value can be a [1Password reference](#1password-references). +- `docker agent doctor` shows which name supplied each credential. + +> [!NOTE] +> With `--sandbox`, the provider API keys that the sandbox proxy injects itself (such as `OPENAI_API_KEY` and `ANTHROPIC_API_KEY`) are not read through Docker Agent, so neither the prefix nor `op://` references apply to them. Other variables are resolved on the host, prefix included, and forwarded under their plain name. + ## Env Files For convenience, you can store secrets in a `.env` file and pass it to Docker Agent with `--env-from-file`: @@ -158,7 +178,17 @@ secrets: ## Credential Helper -Docker Agent can shell out to an external credential helper you define in your user config. This is useful when your organisation already has a secrets daemon you want to reuse (HashiCorp Vault, 1Password CLI, `bitwarden-cli`, etc.). +Docker Agent can shell out to an external credential helper you define in your user config to obtain the **Docker token** (`DOCKER_TOKEN`) used by the [Docker models gateway](../../configuration/models/index.md). This is useful when your organisation already keeps that token in a secrets daemon (HashiCorp Vault, 1Password CLI, `bitwarden-cli`, etc.). + +> [!IMPORTANT] +> **The credential helper does not serve API keys.** It is consulted for `DOCKER_TOKEN` only. To load provider API keys or MCP tokens from 1Password, store an `op://` reference in any other source instead, for example in the [Docker Agent env file](#docker-agent-env-file): +> +> ```bash +> # ~/.config/cagent/.env +> ANTHROPIC_API_KEY=op://Personal/Anthropic/api-key +> ``` +> +> See [1Password References](#1password-references). Declare the helper in `~/.config/cagent/config.yaml`: @@ -166,10 +196,10 @@ Declare the helper in `~/.config/cagent/config.yaml`: # ~/.config/cagent/config.yaml credential_helper: command: op - args: ["read", "op://Personal/docker-agent"] + args: ["read", "op://Personal/Docker/token"] ``` -The command is invoked with the variable name appended as the final argument, and must print the secret value to stdout. +The command is run exactly as configured, with no extra arguments, and must print the token to stdout. ## Docker Desktop @@ -177,7 +207,16 @@ On machines where Docker Desktop is installed, Docker Agent queries Docker Deskt ## Docker Authentication -Routing model traffic through the [Docker models gateway](../../configuration/models/index.md) needs a Docker token. Docker Desktop hands out one that is valid for 15 minutes and cannot be renewed by Docker Agent, so when Desktop has nothing usable to offer — it is signed out, not running, or its own refresh is stuck — Docker Agent exchanges the long-lived access token that `docker login` left in your credential store for a fresh Docker token, the same exchange `docker login` itself performs. Signing in with `docker login` is therefore enough; Docker Desktop is not required. +Routing model traffic through the [Docker models gateway](../../configuration/models/index.md) needs a Docker token. A `DOCKER_TOKEN` you provide yourself — an environment variable, a Compose secret, an env file or a credential helper, as is common in CI — always takes precedence, and none of the sources below are consulted. + +Otherwise, Docker Agent tries these sources in order and uses the first token that is not expired or about to expire: + +1. **The Docker secrets engine**, which Docker Desktop serves on a local socket and which holds the session of the account signed in to Desktop. It is skipped when it is unavailable (Docker Desktop is not installed or not running, or predates the engine), holds no session, or holds a session that is incomplete: an access token that is missing or not a JWT, or no account or expiry. A request waits for the engine for at most five seconds, and never more than half of its own time limit, so the other sources still get a turn. An engine that fails or does not answer is skipped for the next 30 seconds. Production sessions are read unless `DOCKER_AGENT_HUB_LOGIN_URL` points at a Docker Hub staging host, such as `hub-stage.docker.com`; staging sessions are read instead. Docker Agent cannot tell which environment Docker Desktop is signed in to, so set that variable when Desktop is signed in to staging. +2. **Docker Desktop's backend.** +3. **The access token `docker login` stored.** Docker Agent exchanges the long-lived access token in your credential store for a fresh Docker token, the same exchange `docker login` itself performs. Signing in with `docker login` is therefore enough; Docker Desktop is not required. +4. **A refresh of Docker Desktop's session**, as a last resort. + +The tokens Docker Desktop hands out are valid for 15 minutes, and only Desktop can renew them. That is why the exchange exists: it keeps Docker Agent working when Desktop has nothing usable to offer because it is signed out, not running, or its own refresh is stuck. Tokens are looked up again as they near expiry, so a long-running session keeps working. Only Docker access tokens are exchanged — the `dckr_…` secrets `docker login` stores — never an account password, and the exchange goes to Docker Hub over HTTPS. The resulting bearer token is cached in a private file under Docker Agent's cache directory so sibling processes reuse it instead of minting their own, and it stops being used within seconds of a `docker logout` or an account switch. Run `docker agent debug auth` to see which token is in use and where it came from. @@ -201,6 +240,9 @@ References follow the `op:////` format. Make sure the `op` C > > If the value starts with `op://` but the `op` CLI is not installed, or the reference cannot be read (not signed in, wrong path, locked vault), Docker Agent logs a warning and uses an **empty value** — it never forwards the raw `op://` reference to a model provider or tool. Resolved references (and deterministic failures) are cached for the lifetime of the run; transient failures such as a cancelled lookup are not cached, so a later attempt can retry. +> [!TIP] +> Other tools that read the same variables (Claude Code, Codex, provider SDKs) do not understand `op://` values. To keep references out of your shell, put them in the [Docker Agent env file](#docker-agent-env-file), which only Docker Agent reads, or point a model at a dedicated variable with [`token_key`](../../configuration/models/index.md). + ## Choosing a Method | Method | Best for | Setup effort | @@ -209,7 +251,7 @@ References follow the `op:////` format. Make sure the `op` C | Env files | Team projects, multiple keys | Low | | Docker Agent env file | Keys used across all projects, written by `docker agent setup` | Low | | Docker Compose secrets | Containerized deployments, CI/CD | Medium | -| Credential helper | Reusing an existing secrets daemon (Vault, 1Password CLI, ...) | Medium | +| Credential helper | Fetching `DOCKER_TOKEN` from an existing secrets daemon (Vault, 1Password CLI, ...) | Medium | | 1Password references (`op://`) | Teams already using 1Password | Low | You can combine methods. For example, store long-lived provider keys in the Docker Agent env file and pass project-specific MCP tokens via env files. diff --git a/_vendor/github.com/docker/docker-agent/docs/guides/tips/index.md b/_vendor/github.com/docker/docker-agent/docs/guides/tips/index.md index f84803d49cb..22f1a6a687b 100644 --- a/_vendor/github.com/docker/docker-agent/docs/guides/tips/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/guides/tips/index.md @@ -429,6 +429,19 @@ settings: If a sound is enough, set `settings: { sound: true }` instead — Docker Agent plays a failure sound when a task errors, and a success sound when a task that ran longer than `sound_threshold` seconds (default 10) completes. +### Keep the machine awake + +Enable **Keep machine awake** in `/settings` in either TUI to prevent idle system sleep while an agent is running. It is disabled by default, and changes apply to the next agent run. The display can still turn off; the inhibitor is released when the run finishes, errors, or is canceled. + +You can also enable it in your user configuration: + +```yaml +settings: + keep_awake: true +``` + +This uses native macOS and Windows power APIs, or systemd-logind over D-Bus on Linux, with no helper executables required. Linux requires a running system bus and logind with permission to inhibit sleep. If acquisition fails, the hook reports the error without stopping the agent. It does not guarantee protection against deliberate sleep, lid closure, or administrator policy. + See the [Hooks documentation](../../configuration/hooks/index.md) for the full list of events, their payloads, and per-hook options (`env`, `working_dir`, `timeout`). ### Inject the Current Session ID with Hooks diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/anthropic/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/anthropic/index.md index 0f77d8206aa..68db52ec888 100644 --- a/_vendor/github.com/docker/docker-agent/docs/providers/anthropic/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/providers/anthropic/index.md @@ -125,11 +125,10 @@ make two endpoints interchangeable. | Bedrock runtime | `amazon-bedrock`; **`ConverseStream`** | Regional Bedrock runtime endpoint | AWS SigV4 credentials or Bedrock bearer token | Exact AWS model or inference-profile ID | | OpenAI-compatible aggregators | OpenAI client, Chat Completions for Claude | Alias/custom endpoint (e.g. OpenRouter, Vercel, Azure, OpenCode) | Host-specific key | Host's catalogue ID, not necessarily a Claude API ID | -These are existing adapter paths, not a guarantee of complete Claude 5.x -compatibility. Model-specific request rules, signed history, thinking and fallback -compatibility remain the subject of the planned [core work (#4583)](https://github.com/docker/docker-agent/issues/4583) -and [fallback work (#4584)](https://github.com/docker/docker-agent/issues/4584). -This guide does not mark those changes as implemented. +These are the adapter paths Docker Agent uses. Claude 5.x request rules, signed +history and thinking ([#4583](https://github.com/docker/docker-agent/issues/4583)) +and server-side fallback ([#4584](https://github.com/docker/docker-agent/issues/4584)) +are described in the sections below. - The built-in `opencode` alias is OpenAI-compatible; the [custom OpenCode Messages provider](../opencode-zen/index.md#anthropic-compatible-messages-api) @@ -262,7 +261,7 @@ Docker Agent recognizes nine Claude 5.x models by ID: `claude-haiku-5-5`, `claud - An integer token budget becomes adaptive thinking with the model's default effort; `max_tokens` is not raised. - `temperature`, `top_p` and `top_k` are never sent. - `thinking_budget: none` (or `0`) sends `thinking: disabled` on Haiku 5.5, Opus 5 and Sonnet 5. The other six cannot disable thinking: they get adaptive thinking with `low` effort, and Docker Agent logs a warning at startup. -- Server-side `fallbacks` involving any of these models are rejected at startup until [#4584](https://github.com/docker/docker-agent/issues/4584). +- Server-side `fallbacks` work with these models on the Claude API, except Haiku 5.5, which has none (see [Server-Side Fallbacks](#server-side-fallbacks)). - A request that ends on an assistant message (a response prefill) is rejected before it is sent. Tool-mode structured output therefore fails after the first plain-text answer instead of retrying with a reminder. Other Claude IDs keep the existing name-based rules. @@ -347,9 +346,10 @@ See the full schema on the [Model Configuration](../../configuration/models/inde ## Server-Side Fallbacks -When the primary model refuses a request (stop reason `refusal`), Anthropic -can retry the request with backup models in a single round trip. Set -`fallbacks` in `provider_opts` to a list of model IDs, in priority order: +When the primary model refuses a request (stop reason `refusal`), the Claude +API can retry it on a fallback model in a single round trip. Set `fallbacks` +in `provider_opts` to `default`, to use the fallback Anthropic recommends for +the refusal's category: ```yaml models: @@ -357,25 +357,72 @@ models: provider: anthropic model: claude-opus-4-8 provider_opts: + fallbacks: default +``` + +Or list up to three distinct models, tried in order: + +```yaml fallbacks: - claude-opus-4-7 - claude-sonnet-4-6 ``` -> [!WARNING] -> **Not yet available with Claude 5.x** -> -> A fallback can change the serving model mid-response, which Docker Agent does not handle yet. A `fallbacks` list is rejected at startup when the primary model or any fallback is a Claude 5.x model (Haiku 5.5, Opus 5/5.5, Sonnet 5/5.5, Fable 5/5.1, Mythos 5/5.1). Support is tracked in [#4584](https://github.com/docker/docker-agent/issues/4584). - -Docker Agent automatically attaches the required -`server-side-fallback-2026-06-01` beta header and forwards the option as -`fallbacks: [{"model": "..."}]`. The response's `model` field reports which -model actually served the request. +When a model declines mid-response, the turn continues on the fallback model. +Docker Agent never runs a tool call the declining model made, stores the turn +under the model that served it, and replays it on the next request as the API +requires. The turn's cost adds up each model hop at its own rates, combining +all of that hop's server-tool iterations. The dispatched hop retains its +configured price override when the first marker echoes the requested model, +including an alias; fallback hops use their own catalogue prices. Sticky hops +never inherit the primary's override, including across server-tool iterations. +A declined hop that produced output is billed. Before-output refusals are billed +for `bio`, `frontier_llm`, and `reasoning_extraction`; other named categories and +an explicit JSON-null category are unbilled. This also applies to the final +refusal if the fallback chain is exhausted. Missing or invalid categories, or +markers that cannot be matched to the usage hops in model order, remain billed +conservatively. The top-level usage is not added again. + +Docker Agent sends the `server-side-fallback-2026-07-01` beta header, which +accepts both forms, through the beta Messages API. The response's `model` +field reports which model actually served the request. + +For sticky routing without a handoff marker, Docker Agent uses a different +`message_start.model` provisionally when it matches an explicit fallback target +or a replayed handoff target. This preserves attribution on clean EOF before +final usage. A completed usage event clears the candidate unless a +`fallback_message` confirms fallback routing; an explicit handoff marker takes +precedence over both. Ordinary responses keep the configured model ID, display +name and cost override. A truncated alias that collides with a historical target +can still be attributed to that target; explicit fallback aliases without a +matching history marker have no early attribution. + +Rules checked at startup: + +- A list holds at most three models, each distinct and different from the + primary model. Any other value is a configuration error. +- Server-side fallback is a Claude API feature: `fallbacks` is rejected on + Vertex AI, Bedrock, a gateway, or a base URL (`base_url` or + `ANTHROPIC_BASE_URL`) whose host isn't `api.anthropic.com`. It isn't + available on the Message Batches API either. +- Claude Haiku 5.5 has no server-side fallback: a list is rejected, and + `default` only logs that it has no effect. +- The request must be valid for every listed model, or the API rejects it up + front. A configuration is rejected when a listed fallback (such as a Claude + 5.x model) refuses what the request sends: `temperature` or `top_p` (sent + only with thinking off), `top_k`, or token-budget thinking, including an + effort level that an older model without adaptive thinking turns into a + token budget. Fallback models receive the exact same request as the primary model (thinking configuration, task budget, beta features, ...), so list only -models that accept the same request shape. Not available on Bedrock, Vertex -AI, or the Message Batches API. +models that accept the same request shape. With `default` the server picks +the fallback, so per-model options such as `thinking_display` are checked +against the primary model only. The API makes one exception itself: when a Claude +Sonnet 5.5 request with `between_tools` thinking falls back to Claude Sonnet 5, +that attempt runs with thinking disabled ([fallback list rules](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback#naming-your-own-fallback-models)). + +See [Refusals and fallback](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback#server-side-fallback). ## Native Compaction @@ -396,9 +443,10 @@ and replaces the whole history with a signed compaction block. This first implementation is synchronous and compacts the whole history: it does not run in the background or preserve a recent tail. Legacy per-call hook extras are not included in the compaction snapshot; they are applied again on the next -normal turn. The block is persisted alongside a readable summary; the -Anthropic provider replays the block on later requests (including after a model -switch), while other providers receive the readable text. +normal turn. The block is persisted alongside a readable summary; Anthropic +models with `native_compaction` set replay the block on later requests +(including after a model switch), while other models, Vertex AI included, +receive the readable text. - The compaction request goes through the same `before_llm_call` hooks and message transforms as a regular model call, so builtins such as @@ -512,9 +560,15 @@ multiple thinking blocks, omitted thinking, redacted thinking and their signatur A hook or user edit invalidates raw replay so stale content cannot override it. When only the rest of the turn changed (for example a sanitized tool name or a redacted tool argument), its recorded thinking is still replayed in its original -place, with the current text and tool calls substituted. When the thinking itself changed, the turn loses it, -with a warning in the logs. If that turn belongs to the tool loop the next -request continues, and thinking is on, the API needs its original signed +place, with the current tool calls substituted. Unchanged text blocks retain their +contents and positions, including around fallback markers. Edited text can replace +a single original text block only when no thinking block follows it. New text can +be inserted before the first tool call (or at the end without tools) only when no +thinking block is at or after that position. Other text edits, including edits +spanning multiple blocks, cannot preserve the recorded thinking safely. When +thinking itself changed or text edits cannot be placed safely, the turn is sent +without thinking, with a warning in the logs. If that turn belongs to the tool +loop the next request continues, and thinking is on, the API needs its original signed thinking: Docker Agent refuses the request with an error instead, and a new user turn starts a fresh loop. diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/baseten/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/baseten/index.md index e72407d6fab..7da1ad36a66 100644 --- a/_vendor/github.com/docker/docker-agent/docs/providers/baseten/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/providers/baseten/index.md @@ -30,7 +30,7 @@ The simplest way to use Baseten: ```yaml agents: root: - model: baseten/deepseek-ai/DeepSeek-V4-Pro + model: baseten/deepseek-ai/DeepSeek-V4-Pro-0813 description: Assistant using Baseten instruction: You are a helpful assistant. ``` @@ -43,7 +43,7 @@ For more control over parameters: models: baseten_model: provider: baseten - model: deepseek-ai/DeepSeek-V4-Pro + model: deepseek-ai/DeepSeek-V4-Pro-0813 temperature: 0.7 max_tokens: 8192 @@ -58,12 +58,12 @@ agents: Baseten hosts various open models through its Model APIs. Check the [Baseten documentation](https://docs.baseten.co/) for the current model catalog. -| Model | Description | -| ------------------------------ | ------------------------------ | -| `deepseek-ai/DeepSeek-V4-Pro` | DeepSeek V4 Pro model | -| `moonshotai/Kimi-K2.5` | Moonshot Kimi K2.5 model | -| `openai/gpt-oss-120b` | GPT-OSS 120B model | -| `zai-org/GLM-5` | GLM-5 model | +| Model | Description | +| ------------------------------- | ------------------------- | +| `deepseek-ai/DeepSeek-V4-Pro-0813` | DeepSeek V4 Pro 0813 model | +| `moonshotai/Kimi-K3` | Moonshot Kimi K3 model | +| `openai/gpt-oss-120b` | GPT-OSS 120B model | +| `zai-org/GLM-5.3` | GLM-5.3 model | ## How It Works @@ -78,10 +78,10 @@ Baseten is implemented as a built-in alias in Docker Agent: ```yaml agents: coder: - model: baseten/deepseek-ai/DeepSeek-V4-Pro + model: baseten/deepseek-ai/DeepSeek-V4-Pro-0813 description: Code assistant using DeepSeek instruction: | - You are an expert programmer using DeepSeek V4 Pro. + You are an expert programmer using DeepSeek V4 Pro 0813. Write clean, well-documented code. Follow best practices for the language being used. toolsets: diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/custom/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/custom/index.md index ee522a0e6a7..f4fdacc2a06 100644 --- a/_vendor/github.com/docker/docker-agent/docs/providers/custom/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/providers/custom/index.md @@ -166,6 +166,51 @@ agents: > > Models that stream reasoning under `delta.reasoning` (e.g. Qwen3 served via OVHcloud AI Endpoints, OpenRouter, or a self-hosted vLLM / SGLang deployment) are fully supported. Docker Agent reads both the `delta.reasoning_content` and `delta.reasoning` fields from the stream, so thinking blocks are captured and shown in the TUI regardless of which field the server uses. +### Replaying reasoning on later turns + +Captured reasoning is sent back to the model on subsequent requests as a `reasoning_content` field on the assistant message. Servers that understand the field read it back, so the model sees its own earlier reasoning instead of re-deriving it after every tool call. Reasoning that is only useful to the model is not free: replaying it can multiply the size of a long request, so it is limited to turns the session keeps anyway (those with content or a tool call). + +Chat Completions reasoning replay defaults on. Because `reasoning_content` is a +non-standard extension, set `provider_opts.replay_reasoning: false` for a model +or provider whose endpoint rejects or must not receive it. An invalid, +non-boolean value also fails closed and disables replay. + +Set the opt-out on a model, or once on a provider and let its models inherit it. +A model that sets the option itself wins over the provider: + +```yaml +providers: + local_llm: + base_url: http://localhost:8000/v1 + provider_opts: + replay_reasoning: false # opt out every local_llm model + +models: + qwen_default: + provider: local_llm + model: qwen3 # inherits the opt-out + + qwen_replay: + provider: local_llm + model: qwen3 + provider_opts: + replay_reasoning: true # opts this model back in + +agents: + root: + model: qwen_default +``` + +This option is specific to the Chat Completions API and its `reasoning_content` +field. It is not the same as `preserve_reasoning`, which replays the encrypted +reasoning items of first-party OpenAI Responses sessions; neither option +applies to the other API. See [Reasoning state preservation](../openai/index.md#reasoning-state-preservation). + +The field is worth a look if you switch models mid-session or use fallbacks: +Docker Agent stores reasoning from every provider in one place, so a later Chat +Completions model may otherwise receive reasoning captured from another vendor. +Set `replay_reasoning: false` on that destination when this is undesirable. + ### API Router (Requesty, LiteLLM) ```yaml diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/google/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/google/index.md index 7981da6e7d3..4e130afe5d9 100644 --- a/_vendor/github.com/docker/docker-agent/docs/providers/google/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/providers/google/index.md @@ -313,7 +313,7 @@ announcements but no dedicated Google card in the 2026-10-13 audit; this proves neither unavailability nor account entitlement. See [Claude access paths](../anthropic/index.md#claude-access-paths) for model IDs, evidence and policy prerequisites. -Title, sampling and compaction clones keep the selected Model Garden transport. +Title and compaction clones keep the selected Model Garden transport. Claude requests remain on the Anthropic-native Vertex endpoints, with the model in the URL and `anthropic_version: vertex-2023-10-16` in the body. Project, location, regional/global host selection and Google OAuth authentication survive diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/lunaroute/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/lunaroute/index.md new file mode 100644 index 00000000000..f8b3994749f --- /dev/null +++ b/_vendor/github.com/docker/docker-agent/docs/providers/lunaroute/index.md @@ -0,0 +1,71 @@ +--- +title: "Lunaroute" +description: "Use Lunaroute models with Docker Agent." +keywords: docker agent, ai agents, model providers, llm, lunaroute +weight: 232 +canonical: https://docs.docker.com/ai/docker-agent/providers/lunaroute/ +--- + +_Use Lunaroute models with Docker Agent._ + +## Setup + +Obtain an API key from [Lunaroute](https://lunaroute.com/). Lunaroute keys are +prefixed with `lr_`. Set the environment variable: + +```bash +export LUNAROUTE_API_KEY=lr_your-api-key +``` + +## Usage + +Use the inline model reference: + +```yaml +agents: + root: + model: lunaroute/glm-5.3 + description: Assistant using Lunaroute + instruction: You are a helpful assistant. +``` + +Or configure a named model: + +```yaml +models: + lunaroute_glm: + provider: lunaroute + model: glm-5.3 + +agents: + root: + model: lunaroute_glm + instruction: You are a helpful assistant. +``` + +When Lunaroute is selected automatically from available credentials, the default +model is `glm-5.3`. Model IDs are passed through as supplied. + +## Model discovery and capabilities + +Run `docker agent models --provider lunaroute` with `LUNAROUTE_API_KEY` set to +query the authenticated `https://gw.lunaroute.com/v1/models` endpoint. The +listing also includes the configured default. Discovery is best-effort: if the +endpoint fails, the default remains available. The gateway's listing may contain +models that are not usable for chat. + +Lunaroute is absent from the embedded models.dev catalog. Discovery imports model +IDs, not pricing, context limits, or capabilities; cost tracking and automatic +capability detection therefore lack catalog metadata. Unknown attachment +capabilities fall back to text-only, so image and PDF attachments are dropped +with a warning. If you have verified a model supports them, set a +[capability override](../../configuration/models/index.md#attachment-capability-overrides). + +## How it works + +Direct requests use OpenAI-compatible Chat Completions at +`https://gw.lunaroute.com/v1` with `LUNAROUTE_API_KEY`. When a Docker Agent +models gateway is configured, the built-in alias routes through that gateway +instead; the gateway must support the Lunaroute provider and model. To use +Lunaroute directly, set `bypass_models_gateway: true` on a named model. See +[Gateway Bypass](../../configuration/models/index.md#gateway-bypass). diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/openai/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/openai/index.md index ccfb838f661..0c2c8b524d3 100644 --- a/_vendor/github.com/docker/docker-agent/docs/providers/openai/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/providers/openai/index.md @@ -218,9 +218,9 @@ generated values. This option does not apply to the Responses API. ## Reasoning State Preservation -Reasoning replay is opt-in, so existing configurations keep their request and -session-storage behavior. Enable it for first-party OpenAI Responses sessions, -including the `chatgpt` provider: +Responses reasoning replay is opt-in, so existing configurations keep their +request and session-storage behavior. Enable it for first-party OpenAI +Responses sessions, including the `chatgpt` provider: ```yaml provider_opts: @@ -247,3 +247,9 @@ WebSocket requests replay the full history without also chaining it through `pre See [OpenAI's reasoning guide](https://developers.openai.com/api/docs/guides/reasoning) and [cache diagnostics guide](https://developers.openai.com/api/docs/guides/prompt-caching/diagnostics). + +`preserve_reasoning` is unrelated to `provider_opts.replay_reasoning`, which +replays plain reasoning text as a `reasoning_content` field on Chat +Completions requests to OpenAI-compatible servers. It does not apply to the +Responses API, and `preserve_reasoning` does not apply to Chat Completions. +See [Replaying reasoning on later turns](../custom/index.md#replaying-reasoning-on-later-turns). diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/opper/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/opper/index.md new file mode 100644 index 00000000000..716d940b490 --- /dev/null +++ b/_vendor/github.com/docker/docker-agent/docs/providers/opper/index.md @@ -0,0 +1,69 @@ +--- +title: "Opper" +description: "Use Opper models with Docker Agent." +keywords: docker agent, ai agents, model providers, llm, opper +weight: 225 +canonical: https://docs.docker.com/ai/docker-agent/providers/opper/ +--- + +_Use Opper models with Docker Agent._ + +## Overview + +[Opper](https://opper.ai) is an EU-hosted AI gateway that serves models from +many providers behind one OpenAI-compatible endpoint, with one API key. +Docker Agent includes built-in support for Opper as an alias provider. + +## Setup + +1. Create an API key at [platform.opper.ai](https://platform.opper.ai). +2. Set the environment variable: + + ```bash + export OPPER_API_KEY=your-api-key + ``` + +## Usage + +### Inline Syntax + +```yaml +agents: + root: + model: opper/claude-sonnet-4-6 + description: Assistant using Opper + instruction: You are a helpful assistant. +``` + +### Named Model + +```yaml +models: + opper_model: + provider: opper + model: claude-sonnet-4-6 + temperature: 0.7 + max_tokens: 8192 + +agents: + root: + model: opper_model + description: Assistant using Opper + instruction: You are a helpful assistant. +``` + +## Available Models + +Opper model IDs come in two forms. A bare pool name such as +`claude-sonnet-4-6` or `gpt-5.4-mini` lets Opper pick a provider for each +request. A `provider/model` ID such as `anthropic/claude-sonnet-4-6` pins one +route. List the model IDs your key can call with: + +```bash +curl https://api.opper.ai/v3/compat/models \ + -H "Authorization: Bearer $OPPER_API_KEY" +``` + +The public catalogue is also available without a key at +`https://api.opper.ai/v3/models`. Docker Agent's default for Opper is +`claude-sonnet-4-6`. diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/orcarouter/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/orcarouter/index.md new file mode 100644 index 00000000000..cee70edf60a --- /dev/null +++ b/_vendor/github.com/docker/docker-agent/docs/providers/orcarouter/index.md @@ -0,0 +1,88 @@ +--- +title: "OrcaRouter" +description: "Use OrcaRouter models with Docker Agent." +keywords: docker agent, ai agents, model providers, llm, orcarouter +weight: 231 +canonical: https://docs.docker.com/ai/docker-agent/providers/orcarouter/ +--- + +_Use OrcaRouter models with Docker Agent._ + +## Overview + +[OrcaRouter](https://www.orcarouter.ai) provides access to models from many providers through an OpenAI-compatible API. Docker Agent includes built-in support for OrcaRouter as an alias provider. + +## Setup + +1. Get an API key from [OrcaRouter](https://www.orcarouter.ai) +2. Set the environment variable: + + ```bash + $ export ORCAROUTER_API_KEY=your-api-key + ``` + +## Usage + +### Inline Syntax + +Set the provider and model in the agent definition: + +```yaml +agents: + root: + model: orcarouter/orcarouter/auto + description: Assistant using OrcaRouter + instruction: You are a helpful assistant. +``` + +`orcarouter/auto` is OrcaRouter's adaptive router. You can also reference a model served by the gateway with its upstream provider prefix, such as `orcarouter/anthropic/claude-sonnet-4.5` or `orcarouter/deepseek/deepseek-v4-pro`. Docker Agent splits only the first slash, so the full upstream model ID is preserved. + +### Named Model + +For more control over parameters: + +```yaml +models: + orca_router: + provider: orcarouter + model: orcarouter/auto + temperature: 0.7 + max_tokens: 8192 + +agents: + root: + model: orca_router + description: Assistant using OrcaRouter + instruction: You are a helpful assistant. +``` + +## Pricing and Model Metadata + +Docker Agent fetches OrcaRouter model metadata from [models.dev](https://models.dev/), including pricing per 1M input/output tokens, cache pricing when available, context limits, output limits, and modalities. This powers cost tracking and the model picker in the same way as other first-class providers. + +If models.dev is unavailable, Docker Agent falls back to its embedded catalog snapshot. + +## How It Works + +OrcaRouter is implemented as a built-in alias in Docker Agent: + +- **API Type:** OpenAI-compatible (`openai`) +- **Base URL:** `https://api.orcarouter.ai/v1` +- **Token Variable:** `ORCAROUTER_API_KEY` + +## Example: Code Assistant + +```yaml +agents: + coder: + model: orcarouter/orcarouter/auto + description: Code assistant using OrcaRouter + instruction: | + You are an expert programmer. + Write clean, maintainable code. + Explain trade-offs when helpful. + toolsets: + - type: filesystem + - type: shell + - type: think +``` diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/overview/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/overview/index.md index 2f6e18ea85c..50e2c15e94a 100644 --- a/_vendor/github.com/docker/docker-agent/docs/providers/overview/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/providers/overview/index.md @@ -67,8 +67,12 @@ Use this table to find a built-in provider's config key and authentication metho | Cloudflare AI Gateway | `cloudflare-ai-gateway` | `CLOUDFLARE_API_TOKEN` + `CLOUDFLARE_ACCOUNT_ID` + `CLOUDFLARE_GATEWAY_ID` | | Requesty | `requesty` | `REQUESTY_API_KEY` | | OpenRouter | `openrouter` | `OPENROUTER_API_KEY` | +| Opper | `opper` | `OPPER_API_KEY` | | API Route | `api-route` | `API_ROUTE_API_KEY` | +| Lunaroute | [`lunaroute`](../lunaroute/index.md) | `LUNAROUTE_API_KEY` | +| OrcaRouter | `orcarouter` | `ORCAROUTER_API_KEY` | | Atlas Cloud | [`atlascloud`](../atlascloud/index.md) | `ATLASCLOUD_API_KEY` | +| Runcrate | [`runcrate`](../runcrate/index.md) | `RUNCRATE_API_KEY` | | Azure OpenAI | `azure` | `AZURE_API_KEY` + `base_url` (override the key with `token_key`) | | [Ollama](../local/index.md) | `ollama` | None (local; optional `base_url`) | | GitHub Copilot | `github-copilot` | `GITHUB_TOKEN` or `GH_TOKEN` (PAT with `copilot` scope) | diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/runcrate/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/runcrate/index.md new file mode 100644 index 00000000000..1431dafd7fa --- /dev/null +++ b/_vendor/github.com/docker/docker-agent/docs/providers/runcrate/index.md @@ -0,0 +1,120 @@ +--- +title: "Runcrate" +description: "Use Runcrate models with Docker Agent." +keywords: docker agent, ai agents, model providers, llm, runcrate +weight: 25 +canonical: https://docs.docker.com/ai/docker-agent/providers/runcrate/ +--- + +_Use Runcrate models with Docker Agent._ + +## Overview + +[Runcrate](https://www.runcrate.ai/?utm_source=docker-agent&utm_medium=directory&utm_campaign=gpu_pricing) +is a GPU cloud that also serves open models (DeepSeek, GLM, Qwen, gpt-oss and +others) through an OpenAI-compatible API. Docker Agent includes built-in +support for Runcrate as an alias provider. + +Some open models come with a limited free allowance for GitHub accounts at +least 30 days old. Once the allowance is used up, or when free capacity is +busy, requests from a workspace with credit are billed to that credit. See +[Runcrate's free inference terms](https://www.runcrate.ai/inference/free?utm_source=docker-agent&utm_medium=directory&utm_campaign=gpu_pricing) +for the current models, limits and prices. + +## Setup + +1. [Create a Runcrate API key](https://www.runcrate.ai/dashboard/api-keys) +2. Set the environment variable: + + ```bash + export RUNCRATE_API_KEY=your-api-key + ``` + +## Usage + +### Inline Syntax + +Use a Runcrate model by prefixing its model ID with `runcrate/`: + +```yaml +agents: + root: + model: runcrate/deepseek-ai/DeepSeek-V4.1-Flash + description: Assistant using Runcrate + instruction: You are a helpful assistant. +``` + +Docker Agent splits only the first slash, so model IDs that include an +organization prefix are preserved. + +### Named Model + +For more control over parameters: + +```yaml +models: + runcrate_glm: + provider: runcrate + model: zai-org/GLM-5.3 + temperature: 0.7 + max_tokens: 8192 + +agents: + root: + model: runcrate_glm + description: Assistant using Runcrate + instruction: You are a helpful assistant. +``` + +## Available Models + +Some chat model IDs Runcrate serves: + +| Model ID | Model | +| --- | --- | +| `deepseek-ai/DeepSeek-V4.1-Flash` | DeepSeek V4.1 Flash (default) | +| `zai-org/GLM-5.3` | GLM-5.3 | +| `Qwen/Qwen3.8-Flash` | Qwen3.8 Flash | +| `openai/gpt-oss-120b` | gpt-oss 120B | + +Model IDs are case-sensitive. The live [`/v1/models` endpoint](https://api.runcrate.ai/v1/models) +lists current IDs; it also lists image, video, speech and embedding models, +which this chat provider does not use. + +Runcrate is not in the models.dev catalog. Docker Agent does not import metadata +from Runcrate's model list, so it has no catalog-derived pricing or context limits +for these models. Attachment capabilities conservatively fall back to text-only; +image and PDF attachments are dropped, with a warning logged once per model. + +If you have verified that your chosen model accepts a particular attachment +type, set `models..capabilities` to override detection. See +[Attachment Capability Overrides](../../configuration/models/index.md#attachment-capability-overrides) +for all supported flags. + +## How It Works + +Runcrate is implemented as a built-in alias in Docker Agent: + +- **API Type:** OpenAI-compatible Chat Completions (`openai_chatcompletions`) +- **Base URL:** `https://api.runcrate.ai/v1` +- **Token Variable:** `RUNCRATE_API_KEY` + +Because Runcrate serves open-weight models whose chat templates can reject +multiple leading system messages, Docker Agent coalesces its per-source system +messages into one. + +## Example: Code Assistant + +```yaml +agents: + coder: + model: runcrate/deepseek-ai/DeepSeek-V4.1-Flash + description: Code assistant using Runcrate + instruction: | + You are an expert programmer. + Write clean code and follow language best practices. + toolsets: + - type: filesystem + - type: shell + - type: think +``` diff --git a/_vendor/modules.txt b/_vendor/modules.txt index 844a013929e..f5eb9cb3563 100644 --- a/_vendor/modules.txt +++ b/_vendor/modules.txt @@ -1,7 +1,7 @@ # github.com/moby/moby/api v1.56.1 # github.com/moby/buildkit v0.34.0 # github.com/docker/buildx v0.38.1 -# github.com/docker/cli v29.9.1+incompatible +# github.com/docker/cli v29.9.2+incompatible # github.com/docker/compose/v5 v5.6.1 # github.com/docker/model-runner v1.1.36 -# github.com/docker/docker-agent v1.152.0 +# github.com/docker/docker-agent v1.154.0 diff --git a/go.mod b/go.mod index e03a0133063..7c525280fb5 100644 --- a/go.mod +++ b/go.mod @@ -9,9 +9,9 @@ go 1.27 // Make sure to add an entry in the "tools" section when adding a new repository. require ( github.com/docker/buildx v0.38.1 - github.com/docker/cli v29.9.1+incompatible + github.com/docker/cli v29.9.2+incompatible github.com/docker/compose/v5 v5.6.1 - github.com/docker/docker-agent v1.152.0 + github.com/docker/docker-agent v1.154.0 github.com/docker/model-runner v1.1.36 github.com/moby/buildkit v0.34.0 github.com/moby/moby/api v1.56.1 diff --git a/go.sum b/go.sum index d7e4f38602c..8f4d9a74a92 100644 --- a/go.sum +++ b/go.sum @@ -137,6 +137,8 @@ github.com/docker/cli v29.8.2+incompatible h1:2zgdFuoFst2T80oS42vhKGxkd0JRo305eI github.com/docker/cli v29.8.2+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/cli v29.9.1+incompatible h1:E4YGy7TMkPk7mFsXTVUyjHxVeJdjTDfIS0X4Q0+ioQ0= github.com/docker/cli v29.9.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v29.9.2+incompatible h1:trup/vUxx5uUo2t+87Cd9AmITR+DvKUe4H2tTtZN8FY= +github.com/docker/cli v29.9.2+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/compose/v5 v5.0.0 h1:J2uMCzJ/5xLcoIVVXvMmPe6HBzVQpmJThKa7Qk7Xldc= github.com/docker/compose/v5 v5.0.0/go.mod h1:BurapGv8zmYnsbSmlpCz5EU2Pi3YFV/PjeUnoFpcw64= github.com/docker/compose/v5 v5.0.1 h1:5yCjDJbwUqcuI+6WNFHNWz2/3vyBDsNnfe8LlFjyxEc= @@ -183,6 +185,8 @@ github.com/docker/docker-agent v1.126.0 h1:GjX84SHcvS4Txo7dGjatWhKGFLNpDqKcGAoIs github.com/docker/docker-agent v1.126.0/go.mod h1:K38q6CsnSTHDOrLP46HLGhKwv3i+vjmu33cjmjpkAvg= github.com/docker/docker-agent v1.152.0 h1:inDwSlc963dTjThWXydrbxu4ehz/Yqmh3vd1+8hBhts= github.com/docker/docker-agent v1.152.0/go.mod h1:ZGCPdL/EinADY1IMcLoWXEsAjsDhciRw59ba96xI2FQ= +github.com/docker/docker-agent v1.154.0 h1:XmvuT28IVZAvbQ+uqJ7mjPGTtU5cKxr4BUpFiQhIRq4= +github.com/docker/docker-agent v1.154.0/go.mod h1:M2aHmIG5eiWJVn1y8I0ifwUX9iscnIv9jLMmeV5Qgqk= github.com/docker/docker-credential-helpers v0.9.3 h1:gAm/VtF9wgqJMoxzT3Gj5p4AqIjCBS4wrsOh9yRqcz8= github.com/docker/docker-credential-helpers v0.9.3/go.mod h1:x+4Gbw9aGmChi3qTLZj8Dfn0TD20M/fuWy0E5+WDeCo= github.com/docker/docker-credential-helpers v0.9.5 h1:EFNN8DHvaiK8zVqFA2DT6BjXE0GzfLOZ38ggPTKePkY=