From ed9f99c29da27c428710b8e51cbef5c4becf958a Mon Sep 17 00:00:00 2001 From: Kishore Kumar Date: Tue, 14 Jul 2026 10:48:06 +0530 Subject: [PATCH 1/2] docs: catalog identity editing, honest status, clipboard + dashboard truth MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The fleet-library page now documents that an onboarded entry lands as a draft (the page previously claimed it appeared in every workspace's library immediately — untrue since publishing became the only door), and gains an 'Edit a platform entry' section: name/repository/ref editing, source-repoint bundle invalidation, rename durability, credential-copy pruning, and the Broken state. Changelog: Jul 14 entry covering the identity edit, the honest status column, the Create-fleet-library verb, clipboard failure reporting, dashboard tile totality, and tool calls + cost in the live thread. --- changelog.mdx | 20 ++++++++++++++++++++ fleets/library.mdx | 18 +++++++++++++++--- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/changelog.mdx b/changelog.mdx index d903ab2..5981a8e 100644 --- a/changelog.mdx +++ b/changelog.mdx @@ -22,6 +22,26 @@ export const STAGE_SELF_MANAGED_M66 = "$0.0001"; agentsfleet is in **stealth-mode testing** and pre-production. APIs and agent behavior may change between releases without long deprecation windows. Email [agentsfleet@agentmail.to](mailto:agentsfleet@agentmail.to) if you want a hand calibrating an agent or to join as a design partner. + + ## The fleet catalog stops overstating itself, and operators can fix a mistyped repository in place + + A catalog entry's status badge now always matches what a workspace will actually get, and an operator can correct an entry's name, repository, or ref without deleting it — keeping every piece of curated install-gate copy. Copy buttons across the dashboard now report a failed copy instead of pretending it worked, the dashboard counts every fleet state, and the live activity thread shows the tools a fleet calls and what each event cost. + + ## What's new + + - **Edit a catalog entry's identity** — name, repository, and ref are editable from the catalog's Edit dialog. Changing the repository or ref discards the stored bundle and returns the entry to draft, because the stored bundle was built from the old repository; fetch and publish again to go live. Workspaces already running the fleet keep the exact bundle they installed. A rename survives the next bundle fetch. + - **An honest status column** — an entry that is published but holds no bundle now shows as **Broken** (it was shown as Published while being invisible to every workspace). Its help text says how to resolve it: fetch a bundle, or unpublish. + - **The admin button says what it does** — **Create fleet library** replaces "Add fleet", matching the workspace-side dialog; the page and navigation use the singular **Fleet library**. + - **Copy buttons everywhere a value wants copying** — bundle hashes (the full hash, not the visible preview), fleet and host identifiers, secret names, model identifiers, cron schedules, webhook URLs, approval action identifiers, and one-time credentials. A failed clipboard write is reported on the button and announced to screen readers — previously several surfaces showed "Copied" or nothing at all when the write failed, which could cost you a one-time runner token or API key. + - **The dashboard counts every fleet** — installing and killed fleets now appear in the summary tiles; previously they were counted nowhere. + - **The live thread shows tool calls and cost** — each fleet response lists the tools it called with their durations while it works, and event history rows show tokens and wall time. + + ## API reference + + `PATCH /v1/admin/fleet-libraries/{id}` additionally accepts `name`, `source_repo`, and `source_ref`. A request whose `source_repo` or `source_ref` differs from the stored value sets `content_hash` to null and `visibility` to `draft` atomically; re-sending the stored value is a no-op. A request that changes the source and sets `published: true` in the same call is refused with `UZ-CATALOG-002` (there is no bundle to publish by the time the publish would apply). Malformed sources are refused with `UZ-BUNDLE-001` using the same validation as onboarding. The entry identifier is never patchable. + + + ## Platform operators onboard fleets from the dashboard, and four prebuilt fleets are ready to install diff --git a/fleets/library.mdx b/fleets/library.mdx index ad6ae28..590fcee 100644 --- a/fleets/library.mdx +++ b/fleets/library.mdx @@ -40,13 +40,25 @@ New fleets install only by library identifier. Local files can update an existin ## Onboard a platform entry -Platform entries are added from the dashboard at **Fleet libraries**, under Configuration. The page is visible only to an operator whose session carries the `platform-library:write` scope. Everyone else is redirected, and the API refuses the request independently. +Platform entries are added from the dashboard at **Fleet library**, under Configuration, with **Create fleet library**. The page is visible only to an operator whose session carries the `platform-library:write` scope. Everyone else is redirected, and the API refuses the request independently. -Enter the repository as `owner/repo`. `agentsfleet` fetches the repository, validates the bundle, stores it, and adds the catalog row. The entry then appears in every workspace's library, and any workspace can install it. +Enter the repository as `owner/repo`. `agentsfleet` fetches the repository, validates the bundle, stores it, and adds the catalog row **as a draft**. No workspace can see or install a draft; publishing is the only door to a workspace's library. A platform entry's identifier comes from the `name` in the bundle's `SKILL.md`, not from the repository path you type. Keep the repository name, the `SKILL.md` name, and the `TRIGGER.md` name identical. When they differ, `agentsfleet` rejects the bundle or files it under an identifier you did not expect. -Onboarding the same repository twice updates the existing entry. It does not create a second one. +Onboarding the same repository twice updates the existing entry. It does not create a second one. A refetch always returns the entry to draft, so a newer bundle never reaches workspaces unreviewed. + +## Edit a platform entry + +An entry's name, repository, and ref are editable in place from the catalog's **Edit** dialog, alongside its description and the install-gate copy for each credential. The identifier is not editable — installed fleets reference it. + +Changing the repository or ref discards the stored bundle and returns the entry to draft. The stored bundle was built from the old repository, and an entry never advertises a source it is not serving. Fetch the bundle again, then publish. + +Workspaces already running the fleet are unaffected. Each install keeps the exact bundle it installed. + +A rename survives the next bundle fetch, as the description and credential copy always have. Credential copy is pruned to the credentials the bundle actually declares, so a credential the fleet no longer requests does not linger in the dialog. + +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. ## Prebuilt fleets From e30f8774053cb287c780a6f443ae1cfc9e745377 Mon Sep 17 00:00:00 2001 From: Kishore Kumar Date: Tue, 14 Jul 2026 16:41:40 +0530 Subject: [PATCH 2/2] docs: a pinned ref survives the next bundle fetch The Fetch update path now fetches at the ref the entry names instead of resetting it to the repository's default branch, so the ref belongs on the same line as the rename in both the library page and the changelog. Co-Authored-By: Claude Opus 4.8 (1M context) --- changelog.mdx | 2 +- fleets/library.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/changelog.mdx b/changelog.mdx index 5981a8e..dc5a9df 100644 --- a/changelog.mdx +++ b/changelog.mdx @@ -29,7 +29,7 @@ export const STAGE_SELF_MANAGED_M66 = "$0.0001"; ## What's new - - **Edit a catalog entry's identity** — name, repository, and ref are editable from the catalog's Edit dialog. Changing the repository or ref discards the stored bundle and returns the entry to draft, because the stored bundle was built from the old repository; fetch and publish again to go live. Workspaces already running the fleet keep the exact bundle they installed. A rename survives the next bundle fetch. + - **Edit a catalog entry's identity** — name, repository, and ref are editable from the catalog's Edit dialog. Changing the repository or ref discards the stored bundle and returns the entry to draft, because the stored bundle was built from the old repository; fetch and publish again to go live. Workspaces already running the fleet keep the exact bundle they installed. A rename survives the next bundle fetch, and so does a pinned ref — **Fetch update** now fetches at the ref the entry names instead of resetting it to the default branch. - **An honest status column** — an entry that is published but holds no bundle now shows as **Broken** (it was shown as Published while being invisible to every workspace). Its help text says how to resolve it: fetch a bundle, or unpublish. - **The admin button says what it does** — **Create fleet library** replaces "Add fleet", matching the workspace-side dialog; the page and navigation use the singular **Fleet library**. - **Copy buttons everywhere a value wants copying** — bundle hashes (the full hash, not the visible preview), fleet and host identifiers, secret names, model identifiers, cron schedules, webhook URLs, approval action identifiers, and one-time credentials. A failed clipboard write is reported on the button and announced to screen readers — previously several surfaces showed "Copied" or nothing at all when the write failed, which could cost you a one-time runner token or API key. diff --git a/fleets/library.mdx b/fleets/library.mdx index 590fcee..c0ab677 100644 --- a/fleets/library.mdx +++ b/fleets/library.mdx @@ -56,7 +56,7 @@ Changing the repository or ref discards the stored bundle and returns the entry Workspaces already running the fleet are unaffected. Each install keeps the exact bundle it installed. -A rename survives the next bundle fetch, as the description and credential copy always have. Credential copy is pruned to the credentials the bundle actually declares, so a credential the fleet no longer requests does not linger in the dialog. +A rename survives the next bundle fetch, as the description and credential copy always have. A pinned ref survives it too: **Fetch update** fetches at the ref the entry names, rather than resetting the entry to the repository's default branch. Credential copy is pruned to the credentials the bundle actually declares, so a credential the fleet no longer requests does not linger in the dialog. 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.