diff --git a/.changeset/tagged-adapter-asset-contract.md b/.changeset/tagged-adapter-asset-contract.md deleted file mode 100644 index 5fd2d275..00000000 --- a/.changeset/tagged-adapter-asset-contract.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -'@agent-facets/adapter': minor -'@agent-facets/adapter-claude-code': minor -'@agent-facets/adapter-opencode': minor -'@agent-facets/adapter-codex': minor ---- - -**BREAKING (pre-1.0 minor):** the adapter asset contract is now tagged request/result unions instead of positional parameters, and the adapter API identifier advances from `0.0` to `0.1`. - -`installAsset`, `readAsset`, and `deleteAsset` each take a single request object tagged by `assetType` and return a discriminated result — expected failures (`not-found`, `invalid-companion-path`, `unsupported-scope`, `not-implemented`, `io-failed`) are structured values, never thrown errors. Skill requests carry a companion byte map plus the caller-verified owned companion path set for atomic multi-file skill bundles; agent and command requests structurally cannot carry companions. `defineAdapter` stubs for omitted methods now return `not-implemented` failures instead of throwing. - -The SDK's canonical `ADAPTER_API_VERSION` is now `0.1`, identifying this tagged contract; `defineAdapter()` stamps it and first-party packages publish `"facetAdapterApiVersion": "0.1"`. `0.0` named the earlier positional contract: a CLI that supports only `0.1` classifies a `0.0` adapter as well-formed but unsupported and fails closed (before any contract method or project write) with reinstall guidance. There is no positional/tagged compatibility bridge — an adapter built against `0.0` must be rebuilt against a `0.1` SDK release and reinstalled. - -New SDK helpers: `installSkillBundle` / `readSkillBundle` / `deleteSkillBundle` (staged all-or-nothing bundle replacement with rollback, ownership-set-based deletion, and empty-directory pruning), `installSingleFileAsset` / `readSingleFileAsset` / `deleteSingleFileAsset` (result-shaped single-file operations), and `validateContainedRelativePath` (pre-filesystem containment validation applied to every supplied companion path). - -Every adapter implementing the previous positional contract must migrate. The first-party claude-code, opencode, and codex adapters are migrated in their matching minor releases; codex delete operations now prune emptied directories consistently with the other adapters. - -Release ordering: this SDK release and the three first-party adapter releases publish `0.1` to npm **before** any `agent-facets` CLI release requires `0.1`. Until that CLI ships, existing `0.0` CLIs keep selecting the highest compatible `0.0` adapter release, so this changeset intentionally carries **no** `agent-facets` bump — the CLI change that makes `0.1` the supported set lands in a later release cycle gated on all three first-party adapters having published `facetAdapterApiVersion: 0.1`. diff --git a/bun.lock b/bun.lock index 8b0468c2..6f8649f5 100644 --- a/bun.lock +++ b/bun.lock @@ -23,7 +23,7 @@ }, "packages/adapter": { "name": "@agent-facets/adapter", - "version": "0.27.0", + "version": "0.28.0", "dependencies": { "yaml": "2.9.0", }, @@ -35,7 +35,7 @@ }, "packages/adapters/claude-code": { "name": "@agent-facets/adapter-claude-code", - "version": "0.8.0", + "version": "0.9.0", "devDependencies": { "@agent-facets/adapter": "workspace:*", "arktype": "2.2.0", @@ -45,7 +45,7 @@ }, "packages/adapters/codex": { "name": "@agent-facets/adapter-codex", - "version": "0.6.0", + "version": "0.7.0", "devDependencies": { "@agent-facets/adapter": "workspace:*", "arktype": "2.2.0", @@ -56,7 +56,7 @@ }, "packages/adapters/opencode": { "name": "@agent-facets/adapter-opencode", - "version": "0.9.0", + "version": "0.10.0", "devDependencies": { "@agent-facets/adapter": "workspace:*", "arktype": "2.2.0", diff --git a/facets.lock b/facets.lock index da890dde..7470a15e 100644 --- a/facets.lock +++ b/facets.lock @@ -1,5 +1,5 @@ { - "lockfileVersion": 1, + "lockfileVersion": 0.2, "facets": { "@agentfacets/address-pr-feedback": { "source": { @@ -12,17 +12,35 @@ { "scope": "project", "type": "skill", - "name": "address-pr-feedback-rules" + "name": "address-pr-feedback-rules", + "files": [ + { + "path": "skills/address-pr-feedback-rules/SKILL.md", + "integrity": "sha256:28f2b98176327d8fea6377f93ef1ed75e00ada1a6040a0fd192a3e0bcf1c3980" + } + ] }, { "scope": "project", "type": "agent", - "name": "address-pr-feedback" + "name": "address-pr-feedback", + "files": [ + { + "path": "agents/address-pr-feedback.md", + "integrity": "sha256:8d13a6281e9ed9860d68d97beb76ed833bce6c9a12e38569780939db482b4c03" + } + ] }, { "scope": "project", "type": "command", - "name": "address-pr-feedback" + "name": "address-pr-feedback", + "files": [ + { + "path": "commands/address-pr-feedback.md", + "integrity": "sha256:1bc6f00927594ea4dcc245ae8f5140fe1ebc304376bf53a524ec3e1f21cce203" + } + ] } ] }, @@ -37,42 +55,90 @@ { "scope": "project", "type": "skill", - "name": "openspec-adversary-author" + "name": "openspec-adversary-author", + "files": [ + { + "path": "skills/openspec-adversary-author/SKILL.md", + "integrity": "sha256:b292f75ec1c3e8d72c10552951a285e61212ca849d8d6ab122c5c68427916980" + } + ] }, { "scope": "project", "type": "skill", - "name": "openspec-adversary-compare" + "name": "openspec-adversary-compare", + "files": [ + { + "path": "skills/openspec-adversary-compare/SKILL.md", + "integrity": "sha256:62cc709a34cf777fff7778036f2a1a264bdb7d129b6f3ab6c151eb0201d99ba1" + } + ] }, { "scope": "project", "type": "skill", - "name": "openspec-adversary-reconcile" + "name": "openspec-adversary-reconcile", + "files": [ + { + "path": "skills/openspec-adversary-reconcile/SKILL.md", + "integrity": "sha256:d8c612e6a05e9e08be643de455d880631f12a84c64095c628bfb08b31a78c343" + } + ] }, { "scope": "project", "type": "skill", - "name": "openspec-adversary-run" + "name": "openspec-adversary-run", + "files": [ + { + "path": "skills/openspec-adversary-run/SKILL.md", + "integrity": "sha256:67124c58eeda707a4e8deaabb4453cb034332b1f67a65111082121398ca8d063" + } + ] }, { "scope": "project", "type": "agent", - "name": "openspec-adversary" + "name": "openspec-adversary", + "files": [ + { + "path": "agents/openspec-adversary.md", + "integrity": "sha256:e0cc15244e9303ade3b1c66047ca0cefe574ead40b77ee0c482efd61aac979d1" + } + ] }, { "scope": "project", "type": "command", - "name": "reconcile-adversary" + "name": "reconcile-adversary", + "files": [ + { + "path": "commands/reconcile-adversary.md", + "integrity": "sha256:bb81dce97f2c2734cc5b2a460a1f4fd3358409157ff52d1df7cd4bb432784bbc" + } + ] }, { "scope": "project", "type": "command", - "name": "run-adversary" + "name": "run-adversary", + "files": [ + { + "path": "commands/run-adversary.md", + "integrity": "sha256:405a35ab34f4e7126c09e2362c86f2f15301d5595a29cd7017083fdbdc53036c" + } + ] }, { "scope": "project", "type": "command", - "name": "run-inline-adversary" + "name": "run-inline-adversary", + "files": [ + { + "path": "commands/run-inline-adversary.md", + "integrity": "sha256:fbfe404f9d45ca974bcce172fd877d15238e676a510978564e90aa2c1c5492a4" + } + ] } ] }, @@ -87,12 +153,24 @@ { "scope": "project", "type": "skill", - "name": "openspec-design-review-rules" + "name": "openspec-design-review-rules", + "files": [ + { + "path": "skills/openspec-design-review-rules/SKILL.md", + "integrity": "sha256:bcf817e5513782cedc32add43391fc7149e882639d28b6e4c33447197bee7de3" + } + ] }, { "scope": "project", "type": "command", - "name": "review-openspec-design" + "name": "review-openspec-design", + "files": [ + { + "path": "commands/review-openspec-design.md", + "integrity": "sha256:09fd9332d8959c6c5f955083791478d6b2346f9610f20b09ebd6528704bd77ab" + } + ] } ] }, @@ -107,22 +185,46 @@ { "scope": "project", "type": "skill", - "name": "cowsay-rules" + "name": "cowsay-rules", + "files": [ + { + "path": "skills/cowsay-rules/SKILL.md", + "integrity": "sha256:1160ade3622a3d45114c3cf6d9fccb0e565b880ac9728886ae69e6766bde5092" + } + ] }, { "scope": "project", "type": "agent", - "name": "cowsay" + "name": "cowsay", + "files": [ + { + "path": "agents/cowsay.md", + "integrity": "sha256:61190c64c8b6f925718c6d27fa21c2ee1af7299fb00eeb21c65201cb0fec0b6d" + } + ] }, { "scope": "project", "type": "command", - "name": "cowchat" + "name": "cowchat", + "files": [ + { + "path": "commands/cowchat.md", + "integrity": "sha256:2cc1f8723c1ac12eabaeeb56ff0f95cc4d22d5cb687bfc40f7015244ffcc0231" + } + ] }, { "scope": "project", "type": "command", - "name": "cowsay" + "name": "cowsay", + "files": [ + { + "path": "commands/cowsay.md", + "integrity": "sha256:dfb51935425ff8efade68abc246b35f366aa62ac44b242210035b88f397ec6fe" + } + ] } ] }, @@ -137,27 +239,57 @@ { "scope": "project", "type": "skill", - "name": "viper-execution-rules" + "name": "viper-execution-rules", + "files": [ + { + "path": "skills/viper-execution-rules/SKILL.md", + "integrity": "sha256:13cd22a370049d60e5b3b367c34797e2c3d00c64bd5110f6979740751667b4e3" + } + ] }, { "scope": "project", "type": "skill", - "name": "viper-planning" + "name": "viper-planning", + "files": [ + { + "path": "skills/viper-planning/SKILL.md", + "integrity": "sha256:68dbfd63d3a1d058642fcfa8772e7bba7e8d43624784ecf1e64b52179761ec90" + } + ] }, { "scope": "project", "type": "command", - "name": "viper-continue" + "name": "viper-continue", + "files": [ + { + "path": "commands/viper-continue.md", + "integrity": "sha256:c18e84a503bf98f8f153e9af33c1007ad01de46a9ff9b289a2b5f7072c9a51bf" + } + ] }, { "scope": "project", "type": "command", - "name": "viper-plan" + "name": "viper-plan", + "files": [ + { + "path": "commands/viper-plan.md", + "integrity": "sha256:594a642ae65fa75d0881e6ace749a65706ef55aecbe72aba17c0f9fca7c7bc56" + } + ] }, { "scope": "project", "type": "command", - "name": "viper-run" + "name": "viper-run", + "files": [ + { + "path": "commands/viper-run.md", + "integrity": "sha256:bfff09006b1e319e441ccc46c0b10d5079ee2c9e35231cf64e9931b606cde983" + } + ] } ] } diff --git a/packages/adapter/CHANGELOG.md b/packages/adapter/CHANGELOG.md index 9b4445ca..2d5ec907 100644 --- a/packages/adapter/CHANGELOG.md +++ b/packages/adapter/CHANGELOG.md @@ -1,5 +1,16 @@ # @agent-facets/adapter +## 0.28.0 + +### Minor Changes + +- [#438](https://github.com/agent-facets/facets/pull/438) [`d20cdae`](https://github.com/agent-facets/facets/commit/d20cdaebeefaa365fcd1eb06da80db59b2c1201c) Thanks [@eXamadeus](https://github.com/eXamadeus)! - **BREAKING (pre-1.0 minor):** the adapter asset contract is now tagged request/result unions instead of positional parameters, and the adapter API identifier advances from `0.0` to `0.1`. + `installAsset`, `readAsset`, and `deleteAsset` each take a single request object tagged by `assetType` and return a discriminated result — expected failures (`not-found`, `invalid-companion-path`, `unsupported-scope`, `not-implemented`, `io-failed`) are structured values, never thrown errors. Skill requests carry a companion byte map plus the caller-verified owned companion path set for atomic multi-file skill bundles; agent and command requests structurally cannot carry companions. `defineAdapter` stubs for omitted methods now return `not-implemented` failures instead of throwing. + The SDK's canonical `ADAPTER_API_VERSION` is now `0.1`, identifying this tagged contract; `defineAdapter()` stamps it and first-party packages publish `"facetAdapterApiVersion": "0.1"`. `0.0` named the earlier positional contract: a CLI that supports only `0.1` classifies a `0.0` adapter as well-formed but unsupported and fails closed (before any contract method or project write) with reinstall guidance. There is no positional/tagged compatibility bridge — an adapter built against `0.0` must be rebuilt against a `0.1` SDK release and reinstalled. + New SDK helpers: `installSkillBundle` / `readSkillBundle` / `deleteSkillBundle` (staged all-or-nothing bundle replacement with rollback, ownership-set-based deletion, and empty-directory pruning), `installSingleFileAsset` / `readSingleFileAsset` / `deleteSingleFileAsset` (result-shaped single-file operations), and `validateContainedRelativePath` (pre-filesystem containment validation applied to every supplied companion path). + Every adapter implementing the previous positional contract must migrate. The first-party claude-code, opencode, and codex adapters are migrated in their matching minor releases; codex delete operations now prune emptied directories consistently with the other adapters. + Release ordering: this SDK release and the three first-party adapter releases publish `0.1` to npm **before** any `agent-facets` CLI release requires `0.1`. Until that CLI ships, existing `0.0` CLIs keep selecting the highest compatible `0.0` adapter release, so this changeset intentionally carries **no** `agent-facets` bump — the CLI change that makes `0.1` the supported set lands in a later release cycle gated on all three first-party adapters having published `facetAdapterApiVersion: 0.1`. + ## 0.27.0 ### Minor Changes diff --git a/packages/adapter/package.json b/packages/adapter/package.json index ee688b6f..54c76986 100644 --- a/packages/adapter/package.json +++ b/packages/adapter/package.json @@ -5,7 +5,7 @@ "url": "https://github.com/agent-facets/facets", "directory": "packages/adapter" }, - "version": "0.27.0", + "version": "0.28.0", "type": "module", "files": [ "dist" diff --git a/packages/adapters/claude-code/CHANGELOG.md b/packages/adapters/claude-code/CHANGELOG.md index 44bd84ec..fda89673 100644 --- a/packages/adapters/claude-code/CHANGELOG.md +++ b/packages/adapters/claude-code/CHANGELOG.md @@ -1,5 +1,16 @@ # @agent-facets/adapter-claude-code +## 0.9.0 + +### Minor Changes + +- [#438](https://github.com/agent-facets/facets/pull/438) [`d20cdae`](https://github.com/agent-facets/facets/commit/d20cdaebeefaa365fcd1eb06da80db59b2c1201c) Thanks [@eXamadeus](https://github.com/eXamadeus)! - **BREAKING (pre-1.0 minor):** the adapter asset contract is now tagged request/result unions instead of positional parameters, and the adapter API identifier advances from `0.0` to `0.1`. + `installAsset`, `readAsset`, and `deleteAsset` each take a single request object tagged by `assetType` and return a discriminated result — expected failures (`not-found`, `invalid-companion-path`, `unsupported-scope`, `not-implemented`, `io-failed`) are structured values, never thrown errors. Skill requests carry a companion byte map plus the caller-verified owned companion path set for atomic multi-file skill bundles; agent and command requests structurally cannot carry companions. `defineAdapter` stubs for omitted methods now return `not-implemented` failures instead of throwing. + The SDK's canonical `ADAPTER_API_VERSION` is now `0.1`, identifying this tagged contract; `defineAdapter()` stamps it and first-party packages publish `"facetAdapterApiVersion": "0.1"`. `0.0` named the earlier positional contract: a CLI that supports only `0.1` classifies a `0.0` adapter as well-formed but unsupported and fails closed (before any contract method or project write) with reinstall guidance. There is no positional/tagged compatibility bridge — an adapter built against `0.0` must be rebuilt against a `0.1` SDK release and reinstalled. + New SDK helpers: `installSkillBundle` / `readSkillBundle` / `deleteSkillBundle` (staged all-or-nothing bundle replacement with rollback, ownership-set-based deletion, and empty-directory pruning), `installSingleFileAsset` / `readSingleFileAsset` / `deleteSingleFileAsset` (result-shaped single-file operations), and `validateContainedRelativePath` (pre-filesystem containment validation applied to every supplied companion path). + Every adapter implementing the previous positional contract must migrate. The first-party claude-code, opencode, and codex adapters are migrated in their matching minor releases; codex delete operations now prune emptied directories consistently with the other adapters. + Release ordering: this SDK release and the three first-party adapter releases publish `0.1` to npm **before** any `agent-facets` CLI release requires `0.1`. Until that CLI ships, existing `0.0` CLIs keep selecting the highest compatible `0.0` adapter release, so this changeset intentionally carries **no** `agent-facets` bump — the CLI change that makes `0.1` the supported set lands in a later release cycle gated on all three first-party adapters having published `facetAdapterApiVersion: 0.1`. + ## 0.8.0 ### Minor Changes diff --git a/packages/adapters/claude-code/package.json b/packages/adapters/claude-code/package.json index 69458868..4afff468 100644 --- a/packages/adapters/claude-code/package.json +++ b/packages/adapters/claude-code/package.json @@ -5,7 +5,7 @@ "url": "https://github.com/agent-facets/facets", "directory": "packages/adapters/claude-code" }, - "version": "0.8.0", + "version": "0.9.0", "type": "module", "files": [ "dist" diff --git a/packages/adapters/codex/CHANGELOG.md b/packages/adapters/codex/CHANGELOG.md index 2d88998f..3a39f999 100644 --- a/packages/adapters/codex/CHANGELOG.md +++ b/packages/adapters/codex/CHANGELOG.md @@ -1,5 +1,16 @@ # @agent-facets/adapter-codex +## 0.7.0 + +### Minor Changes + +- [#438](https://github.com/agent-facets/facets/pull/438) [`d20cdae`](https://github.com/agent-facets/facets/commit/d20cdaebeefaa365fcd1eb06da80db59b2c1201c) Thanks [@eXamadeus](https://github.com/eXamadeus)! - **BREAKING (pre-1.0 minor):** the adapter asset contract is now tagged request/result unions instead of positional parameters, and the adapter API identifier advances from `0.0` to `0.1`. + `installAsset`, `readAsset`, and `deleteAsset` each take a single request object tagged by `assetType` and return a discriminated result — expected failures (`not-found`, `invalid-companion-path`, `unsupported-scope`, `not-implemented`, `io-failed`) are structured values, never thrown errors. Skill requests carry a companion byte map plus the caller-verified owned companion path set for atomic multi-file skill bundles; agent and command requests structurally cannot carry companions. `defineAdapter` stubs for omitted methods now return `not-implemented` failures instead of throwing. + The SDK's canonical `ADAPTER_API_VERSION` is now `0.1`, identifying this tagged contract; `defineAdapter()` stamps it and first-party packages publish `"facetAdapterApiVersion": "0.1"`. `0.0` named the earlier positional contract: a CLI that supports only `0.1` classifies a `0.0` adapter as well-formed but unsupported and fails closed (before any contract method or project write) with reinstall guidance. There is no positional/tagged compatibility bridge — an adapter built against `0.0` must be rebuilt against a `0.1` SDK release and reinstalled. + New SDK helpers: `installSkillBundle` / `readSkillBundle` / `deleteSkillBundle` (staged all-or-nothing bundle replacement with rollback, ownership-set-based deletion, and empty-directory pruning), `installSingleFileAsset` / `readSingleFileAsset` / `deleteSingleFileAsset` (result-shaped single-file operations), and `validateContainedRelativePath` (pre-filesystem containment validation applied to every supplied companion path). + Every adapter implementing the previous positional contract must migrate. The first-party claude-code, opencode, and codex adapters are migrated in their matching minor releases; codex delete operations now prune emptied directories consistently with the other adapters. + Release ordering: this SDK release and the three first-party adapter releases publish `0.1` to npm **before** any `agent-facets` CLI release requires `0.1`. Until that CLI ships, existing `0.0` CLIs keep selecting the highest compatible `0.0` adapter release, so this changeset intentionally carries **no** `agent-facets` bump — the CLI change that makes `0.1` the supported set lands in a later release cycle gated on all three first-party adapters having published `facetAdapterApiVersion: 0.1`. + ## 0.6.0 ### Minor Changes diff --git a/packages/adapters/codex/package.json b/packages/adapters/codex/package.json index 17f4620a..a94c73e5 100644 --- a/packages/adapters/codex/package.json +++ b/packages/adapters/codex/package.json @@ -5,7 +5,7 @@ "url": "https://github.com/agent-facets/facets", "directory": "packages/adapters/codex" }, - "version": "0.6.0", + "version": "0.7.0", "type": "module", "files": [ "dist" diff --git a/packages/adapters/opencode/CHANGELOG.md b/packages/adapters/opencode/CHANGELOG.md index 6813a332..48440338 100644 --- a/packages/adapters/opencode/CHANGELOG.md +++ b/packages/adapters/opencode/CHANGELOG.md @@ -1,5 +1,16 @@ # @agent-facets/adapter-opencode +## 0.10.0 + +### Minor Changes + +- [#438](https://github.com/agent-facets/facets/pull/438) [`d20cdae`](https://github.com/agent-facets/facets/commit/d20cdaebeefaa365fcd1eb06da80db59b2c1201c) Thanks [@eXamadeus](https://github.com/eXamadeus)! - **BREAKING (pre-1.0 minor):** the adapter asset contract is now tagged request/result unions instead of positional parameters, and the adapter API identifier advances from `0.0` to `0.1`. + `installAsset`, `readAsset`, and `deleteAsset` each take a single request object tagged by `assetType` and return a discriminated result — expected failures (`not-found`, `invalid-companion-path`, `unsupported-scope`, `not-implemented`, `io-failed`) are structured values, never thrown errors. Skill requests carry a companion byte map plus the caller-verified owned companion path set for atomic multi-file skill bundles; agent and command requests structurally cannot carry companions. `defineAdapter` stubs for omitted methods now return `not-implemented` failures instead of throwing. + The SDK's canonical `ADAPTER_API_VERSION` is now `0.1`, identifying this tagged contract; `defineAdapter()` stamps it and first-party packages publish `"facetAdapterApiVersion": "0.1"`. `0.0` named the earlier positional contract: a CLI that supports only `0.1` classifies a `0.0` adapter as well-formed but unsupported and fails closed (before any contract method or project write) with reinstall guidance. There is no positional/tagged compatibility bridge — an adapter built against `0.0` must be rebuilt against a `0.1` SDK release and reinstalled. + New SDK helpers: `installSkillBundle` / `readSkillBundle` / `deleteSkillBundle` (staged all-or-nothing bundle replacement with rollback, ownership-set-based deletion, and empty-directory pruning), `installSingleFileAsset` / `readSingleFileAsset` / `deleteSingleFileAsset` (result-shaped single-file operations), and `validateContainedRelativePath` (pre-filesystem containment validation applied to every supplied companion path). + Every adapter implementing the previous positional contract must migrate. The first-party claude-code, opencode, and codex adapters are migrated in their matching minor releases; codex delete operations now prune emptied directories consistently with the other adapters. + Release ordering: this SDK release and the three first-party adapter releases publish `0.1` to npm **before** any `agent-facets` CLI release requires `0.1`. Until that CLI ships, existing `0.0` CLIs keep selecting the highest compatible `0.0` adapter release, so this changeset intentionally carries **no** `agent-facets` bump — the CLI change that makes `0.1` the supported set lands in a later release cycle gated on all three first-party adapters having published `facetAdapterApiVersion: 0.1`. + ## 0.9.0 ### Minor Changes diff --git a/packages/adapters/opencode/package.json b/packages/adapters/opencode/package.json index c1aa0f9f..0ef07f61 100644 --- a/packages/adapters/opencode/package.json +++ b/packages/adapters/opencode/package.json @@ -5,7 +5,7 @@ "url": "https://github.com/agent-facets/facets", "directory": "packages/adapters/opencode" }, - "version": "0.9.0", + "version": "0.10.0", "type": "module", "files": [ "dist"