Skip to content

Releases: agent-facets/facets

@agent-facets/protocol@0.14.1

Choose a tag to compare

@the-faceter the-faceter released this 06 Jun 05:25
Immutable release. Only release title and notes can be modified.

Patch Changes

  • #287 ad4e75a Thanks @eXamadeus! - Record lockfile source provenance as a tagged, per-kind shape so an entry can never disagree with itself.
    The lockfile's source field was a single overloaded string — a registry version specifier, a git URL, or a local path depending on the facet. For registry facets this let an unresolved specifier (latest, 1.*) leak into the lockfile next to a resolved version, an entry that contradicted itself. source is now a discriminated union keyed on kind:
    • registry — records the registry origin (base URL) and never a version. The resolved version lives in the entry's version field, so there is no slot for latest or a wildcard to leak into.
    • git — records the repository URL and a required resolved commit SHA. A git clone that cannot be pinned to a commit now fails the install rather than writing a non-reproducible entry. The requested ref is no longer recorded in the lockfile — it belongs to facets.json.
    • local — records the resolved path.
      This is a breaking change to the published lockfile schema. There is no migration and no lockfileVersion bump: an older flat-source lockfile is simply invalid under the new shape and fails install in every mode (frozen and non-frozen alike), rather than being silently regenerated. Delete facets.lock and re-run install to regenerate it in the new shape. Extra unrecognized keys on a source remain tolerated for forward-compatibility.

@agent-facets/protocol@0.14.0

Choose a tag to compare

@the-faceter the-faceter released this 06 Jun 02:32
Immutable release. Only release title and notes can be modified.

Minor Changes

  • #283 2ed9672 Thanks @eXamadeus! - Honor edited versions in facets.json and add facet install --frozen-lockfile.
    facet install now re-resolves a lockfile entry whose version no longer satisfies the manifest (e.g. a hand-edited bump), and fails if the requested version doesn't exist instead of silently keeping the old one. The new --frozen-lockfile flag treats the lockfile as authoritative and fails on any manifest/lockfile drift, for reproducible CI installs.

agent-facets@0.12.0

Choose a tag to compare

@the-faceter the-faceter released this 15 May 03:53
Immutable release. Only release title and notes can be modified.

Minor Changes

  • #260 16cd45a Thanks @eXamadeus! - Breaking: Consolidate every directory env var into a single
    FACET_DIR, rename the launcher binary override, and move the install
    advisory lock out of the project root.

    What changed

    One env var, `FACET_DIR` (default `~/.facet`), now controls every
    directory the facet CLI writes to disk. Everything lives under it:
    
    • $FACET_DIR/bin/ — curl-installed binary
    • $FACET_DIR/cache/ — content-addressed cache for fetched payloads
    • $FACET_DIR/adapters/ — installed adapter bundles
    • $FACET_DIR/locks/ — install advisory locks (one file per project,
      keyed by <basename>-<sha256(realpath)[:16]>.lock)
      The launcher's binary override is renamed:
    • FACET_BIN_PATHFACET_BIN_OVERRIDE
      The name carries the semantics: setting it overrides which binary the
      launcher executes, and facet self-update continues to refuse while
      it's set because overriding means you've taken control of binary
      placement.
      The install advisory lock moves out of the project root. Previously it
      was <projectRoot>/.facets/.install.lock (a directory facet install
      silently materialized in every project). Now it lives at
      $FACET_DIR/locks/<basename>-<hash>.lock, keyed by the project's
      canonical path. The project root stays clean — facet install writes
      nothing next to facets.json.

      Removed env vars

      Hard rename, no aliases. Old names are silently ignored; values fall
      back to defaults until users rename in their shell rc files or CI configs:
    • FACETS_CACHE_DIR
    • FACETS_ADAPTERS_DIR
    • FACET_CACHE_DIR
    • FACET_ADAPTERS_DIR
    • FACET_INSTALL_DIR
    • FACET_BIN_PATH
      FACET_CLI_REGISTRY and FACET_VERSION (used by install.sh) are
      unchanged.

      No migration

      Existing cached payloads and adapters at ~/.facets/ are not detected,
      copied, or warned about. The new code reads $FACET_DIR only.
      Users may delete ~/.facets/ at any time; the new code will rebuild
      cache and adapters on first use.

@agent-facets/protocol@0.12.0

Choose a tag to compare

@the-faceter the-faceter released this 15 May 03:50
Immutable release. Only release title and notes can be modified.

Patch Changes

agent-facets@0.11.0

Choose a tag to compare

@the-faceter the-faceter released this 10 May 01:16
Immutable release. Only release title and notes can be modified.

Minor Changes

  • #256 ce4861f Thanks @eXamadeus! - Generate the registry client from the registry's published OpenAPI spec.
    The registry server (facet-cafe) auto-generates an OpenAPI specification from its actual route handlers; the CLI now consumes that spec as its source of truth. A vendored snapshot of the OpenAPI lives in @agent-facets/engine, and TypeScript types are generated from it via openapi-typescript. Path strings, params, and response shapes are type-checked end-to-end at every call site through openapi-fetch. A registry response field that is renamed, removed, or changes shape now surfaces as a build-time error in a CLI pull request — not a runtime "unexpected response" in front of a user.
    Run bun run --cwd packages/engine codegen:registry to refresh the snapshot. A CI job warns when the snapshot is more than 7 days behind the live registry (configurable via STALENESS_THRESHOLD_DAYS).
    User-visible: facet search results now include a one-line asset-count summary per result (e.g., 1 agent, 2 commands, 1 server) — surfacing data the registry has been returning all along.
    Behavior corrections during the migration off registryFetch:
    • POST requests no longer auto-retry on network error (could re-issue an upload that was already received).
    • The 10s deadline is now per-call instead of per-attempt — a fully-failing call no longer blocks for up to 16s.
    • Caller-supplied abort signals are composed with the deadline via AbortSignal.any instead of being silently overwritten.
    • Retries honor the server's Retry-After header, capped at 5s.
    • Non-network errors now surface as UNEXPECTED_ERROR instead of being mislabeled as network failures.
    • Retry-exhausted errors carry an attempts count so user-facing messages can show retry history.

@agent-facets/protocol@0.11.0

Choose a tag to compare

@the-faceter the-faceter released this 10 May 01:12
Immutable release. Only release title and notes can be modified.

Minor Changes

  • #256 ce4861f Thanks @eXamadeus! - Generate the registry client from the registry's published OpenAPI spec.
    The registry server (facet-cafe) auto-generates an OpenAPI specification from its actual route handlers; the CLI now consumes that spec as its source of truth. A vendored snapshot of the OpenAPI lives in @agent-facets/engine, and TypeScript types are generated from it via openapi-typescript. Path strings, params, and response shapes are type-checked end-to-end at every call site through openapi-fetch. A registry response field that is renamed, removed, or changes shape now surfaces as a build-time error in a CLI pull request — not a runtime "unexpected response" in front of a user.
    Run bun run --cwd packages/engine codegen:registry to refresh the snapshot. A CI job warns when the snapshot is more than 7 days behind the live registry (configurable via STALENESS_THRESHOLD_DAYS).
    User-visible: facet search results now include a one-line asset-count summary per result (e.g., 1 agent, 2 commands, 1 server) — surfacing data the registry has been returning all along.
    Behavior corrections during the migration off registryFetch:
    • POST requests no longer auto-retry on network error (could re-issue an upload that was already received).
    • The 10s deadline is now per-call instead of per-attempt — a fully-failing call no longer blocks for up to 16s.
    • Caller-supplied abort signals are composed with the deadline via AbortSignal.any instead of being silently overwritten.
    • Retries honor the server's Retry-After header, capped at 5s.
    • Non-network errors now surface as UNEXPECTED_ERROR instead of being mislabeled as network failures.
    • Retry-exhausted errors carry an attempts count so user-facing messages can show retry history.

agent-facets@0.10.1

Choose a tag to compare

@the-faceter the-faceter released this 05 May 21:45
Immutable release. Only release title and notes can be modified.

Patch Changes

@agent-facets/protocol@0.10.1

Choose a tag to compare

@the-faceter the-faceter released this 08 May 21:32
Immutable release. Only release title and notes can be modified.

Patch Changes

@agent-facets/brand@0.5.3

Choose a tag to compare

@the-faceter the-faceter released this 05 May 21:41
Immutable release. Only release title and notes can be modified.

Patch Changes

@agent-facets/adapter@0.10.1

Choose a tag to compare

@the-faceter the-faceter released this 05 May 21:41
Immutable release. Only release title and notes can be modified.

Patch Changes