diff --git a/api-reference/error-codes.mdx b/api-reference/error-codes.mdx index 4a8f5ca..ac81f81 100644 --- a/api-reference/error-codes.mdx +++ b/api-reference/error-codes.mdx @@ -3,7 +3,7 @@ title: Error codes description: API error response fields and stable error codes. type: reference audience: user -verified: 2026-07-16 +verified: 2026-07-18 product_version: 0.17.0 executable: false --- @@ -145,6 +145,7 @@ A conflict response also contains `current_state`. Some errors contain `user_mes | `UZ-AGT-011` | 400 | Fleet files disagree on `name:` | This Fleet Bundle's files disagree on its name. `SKILL.md` and `TRIGGER.md` must match. Fix the source and try again. | Use fleet identifiers from the current workspace. | | `UZ-AGT-012` | 409 | Fleet is paused | This Fleet is paused. Resume it before sending new work. | Use fleet identifiers from the current workspace. | | `UZ-AGT-013` | 500 | Fleet install rolled back | We couldn't finish setting up your fleet. Nothing was created — try again. | Use fleet identifiers from the current workspace. | +| `UZ-AGT-014` | 412 | Fleet source is stale | Another update changed the fleet source. Reload the current source and `etag`, reapply your change, then retry. | Reload the fleet source before editing and send the latest `etag`. | ### Fleet Bundles @@ -161,6 +162,7 @@ A conflict response also contains `current_state`. Some errors contain `user_mes | Code | HTTP | Title | Why and fix | Prevent | |---|---|---|---|---| | `UZ-CATALOG-002` | 409 | Cannot publish a fleet with no bundle | This entry has no bundle, so it has nothing to publish. Fetch the bundle from its repository, then publish. | Fetch and review the bundle before publishing. | +| `UZ-CATALOG-005` | 412 | Catalog entry changed since you loaded it | Another update changed the catalog entry. Refresh it, reapply your change, then retry. | Refresh the catalog entry before editing and send the latest `etag`. | ### Secrets @@ -256,6 +258,7 @@ A conflict response also contains `current_state`. Some errors contain `user_mes |---|---|---|---|---| | `UZ-MEM-002` | 404 | Fleet not found for memory op | The fleet_id does not exist or does not belong to the requesting workspace. Verify the fleet_id and workspace scope. | Use an existing fleet and a valid memory category. | | `UZ-MEM-003` | 503 | Saved memory unavailable | Saved memory is unavailable. The fleet uses temporary workspace memory until the service recovers. | Use an existing fleet and a valid memory category. | +| `UZ-MEM-004` | 404 | Memory entry not found | No memory entry exists for this key. List memories to confirm the exact key. | Use an existing memory key. | ### API keys diff --git a/changelog.mdx b/changelog.mdx index f0cc75d..d9a47a5 100644 --- a/changelog.mdx +++ b/changelog.mdx @@ -38,6 +38,26 @@ export const STAGE_SELF_MANAGED_M66 = "$0.0001"; - **A Platform sidebar group** — **Runners**, **Model library**, and **Fleet library** move out of the Configuration list into their own **Platform** group, shown only to an operator holding the matching scope. The group is open by default and can be collapsed with a click. + + ## Fleet detail becomes the operating console + + Fleet detail now puts source editing, live steering, memory, run cost, and lifecycle controls on one page. + + ## What's new + + - **Source editing** — read and edit `SKILL.md` or `TRIGGER.md` from the dashboard. A save takes effect on the next wake and keeps the fleet's memory. If someone else saves first, the editor reloads their change instead of overwriting it. + - **Memory correction** — inspect learned entries and forget one incorrect entry from the dashboard. Deleting the fleet still deletes all its memory; editing its source does not. + - **Run cost** — each event can show tokens, wall time, and settled cost. The recent rollup covers the latest 200 events within seven days and labels that bound; lifetime spend remains visible separately. + - **Faster fleet lists** — lifetime event and spend counters are maintained when activity is written, so list reads no longer re-sum the full event history. + + ## API reference + + - **Fleet detail** — `GET /v1/workspaces/{workspace_id}/fleets/{fleet_id}` returns source, triggers, lifecycle state, lifetime counters, and an `ETag` header. + - **Event cost** — fleet event rows now include nullable `cost_nanos`, sourced from settled billing telemetry. + - **Memory forget** — `DELETE /v1/workspaces/{workspace_id}/fleets/{fleet_id}/memories/{key}` requires `fleet:write`, returns `204` when deleted, and returns `UZ-MEM-004` when the key is absent. + - **Stale-write protection** — fleet source and platform library PATCH requests may send `If-Match`. A stale fleet edit returns `UZ-AGT-014`; a stale catalog edit returns `UZ-CATALOG-005`. Both responses use `412` and include the current `ETag`. + + ## The fleet catalog stops overstating itself, and operators can fix a mistyped repository in place diff --git a/fleets/library.mdx b/fleets/library.mdx index 36dd41d..28bc5a1 100644 --- a/fleets/library.mdx +++ b/fleets/library.mdx @@ -3,7 +3,7 @@ title: Fleet library description: Understand platform and workspace library entries. type: explanation audience: user -verified: 2026-07-12 +verified: 2026-07-16 product_version: 0.17.0 executable: false --- @@ -60,6 +60,8 @@ A rename survives the next bundle fetch, as the description and credential copy An entry that is published but holds no bundle shows as **Broken** in the catalog. It is invisible to every workspace; fetch a bundle or unpublish it. +The dashboard protects edits with the row version loaded by the form. If another operator saves first, your stale edit is refused. Refresh the row, review the newer values, and apply your change again. + ## Prebuilt fleets Four fleets ship as platform entries. Each is a public repository under `agentsfleet`, and each installs by its identifier. diff --git a/fleets/overview.mdx b/fleets/overview.mdx index a5a0e81..e7fd720 100644 --- a/fleets/overview.mdx +++ b/fleets/overview.mdx @@ -3,7 +3,7 @@ title: Fleet overview description: Understand what a fleet owns and how its lifecycle works. type: explanation audience: user -verified: 2026-07-12 +verified: 2026-07-16 product_version: 0.17.0 executable: false --- @@ -31,6 +31,10 @@ A fleet keeps repeated event work in one place. The workspace controls access wh Installing a library entry creates the fleet. The active workspace owns it, and authorized workspace members control it. +The fleet detail page shows source, live activity, memory, approvals, run metrics, and recent cost together. You can edit `SKILL.md` or `TRIGGER.md` there. A save takes effect on the next wake and keeps the same fleet identifier and memory. + +If another operator saves first, your stale source edit is refused. The editor reloads the current source so you can review the newer version and apply your change again. + Stopping a fleet lets the current run finish. Killing a fleet keeps its records but blocks all later work. Deleting a killed fleet removes all fleet records. A replacement fleet receives a new identifier and new webhook URLs. @@ -39,6 +43,8 @@ Deleting a killed fleet removes all fleet records. A replacement fleet receives The fleet can use only declared tools, secrets, and network hosts. Daily or monthly budgets can block new work. +The recent cost rollup covers the latest 200 events within seven days. The page labels this bound and shows lifetime spend separately. + The service validates `SKILL.md` and `TRIGGER.md` during installation and updates. Invalid files do not replace the active fleet settings. ## Related pages diff --git a/memory.mdx b/memory.mdx index 5c0570d..dc7ae43 100644 --- a/memory.mdx +++ b/memory.mdx @@ -3,7 +3,7 @@ title: Memory description: Learn what a fleet can remember between events. type: explanation audience: user -verified: 2026-07-12 +verified: 2026-07-18 product_version: 0.17.0 executable: false --- @@ -14,7 +14,7 @@ executable: false Memory stores short facts for one fleet. A later run can recall those facts by key or text. -The fleet creates, owns, updates, and removes its memory entries. Workspace members can inspect entries through the client or API. +The fleet creates, owns, updates, and removes its memory entries. Workspace members can inspect entries through the dashboard or API. Members with fleet write access can forget entries. ## Why it exists @@ -33,6 +33,10 @@ Memory lets a fleet keep useful conclusions between events. Store conclusions in `memory_list` filters entries. `memory_forget` deletes one key. +The dashboard's fleet detail page lists each entry's content, category, and update time. Forgetting an entry requires fleet write access. + +The API route is `DELETE /v1/workspaces/{workspace_id}/fleets/{fleet_id}/memories/{key}`. It returns `204` after deletion and `UZ-MEM-004` when the key is absent. + `` comes from `agentsfleet list`. ```bash