From 7423523c1215df0ce0781d98237a89837617e844 Mon Sep 17 00:00:00 2001 From: Greg Soucy Date: Thu, 19 Mar 2026 22:37:28 -0400 Subject: [PATCH] Tighten v1.1.0 release and fixture discipline --- CHANGELOG.md | 17 +- CONTRIBUTING.md | 50 +++++ GOVERNANCE.md | 6 +- ONBOARDING.md | 6 +- README.md | 184 +++++++----------- SCHEMAS.md | 12 +- SECURITY_PROVENANCE.md | 4 +- SPEC.md | 16 +- checksums.txt | 65 ++----- .../invalid/001-analyze.request.invalid.json | 2 +- .../ts/invalid/analyze.request.invalid.1.ts | 2 +- .../invalid/001-classify.request.invalid.json | 2 +- .../ts/invalid/classify.request.invalid.1.ts | 2 +- .../invalid/001-clean.request.invalid.json | 2 +- .../ts/invalid/clean.request.invalid.1.ts | 2 +- .../invalid/001-convert.request.invalid.json | 2 +- .../ts/invalid/convert.request.invalid.1.ts | 2 +- .../invalid/001-describe.request.invalid.json | 2 +- .../ts/invalid/describe.request.invalid.1.ts | 2 +- .../invalid/001-explain.request.invalid.json | 2 +- .../ts/invalid/explain.request.invalid.1.ts | 2 +- .../invalid/001-fetch.request.invalid.json | 2 +- .../ts/invalid/fetch.request.invalid.1.ts | 2 +- .../invalid/001-format.request.invalid.json | 2 +- .../ts/invalid/format.request.invalid.1.ts | 2 +- .../invalid/001-parse.request.invalid.json | 2 +- .../ts/invalid/parse.request.invalid.1.ts | 2 +- .../invalid/001-analyze.request.invalid.json | 4 +- .../json/valid/900-analyze.receipt.valid.json | 8 +- .../ts/invalid/analyze.request.invalid.1.ts | 6 +- .../ts/valid/analyze.receipt.valid.1.ts | 6 +- .../ts/valid/analyze.receipt.valid.2.ts | 4 +- .../ts/valid/analyze.request.valid.1.ts | 2 +- .../invalid/001-classify.request.invalid.json | 4 +- .../valid/900-classify.receipt.valid.json | 8 +- .../ts/invalid/classify.request.invalid.1.ts | 6 +- .../ts/valid/classify.receipt.valid.1.ts | 6 +- .../invalid/001-clean.request.invalid.json | 4 +- .../json/valid/900-clean.receipt.valid.json | 8 +- .../ts/invalid/clean.request.invalid.1.ts | 6 +- .../clean/ts/valid/clean.receipt.valid.1.ts | 6 +- .../clean/ts/valid/clean.receipt.valid.2.ts | 4 +- .../invalid/001-convert.request.invalid.json | 4 +- .../json/valid/900-convert.receipt.valid.json | 8 +- .../ts/invalid/convert.request.invalid.1.ts | 6 +- .../ts/valid/convert.receipt.valid.1.ts | 6 +- .../ts/valid/convert.receipt.valid.2.ts | 4 +- .../invalid/001-describe.request.invalid.json | 4 +- .../valid/900-describe.receipt.valid.json | 8 +- .../ts/invalid/describe.request.invalid.1.ts | 6 +- .../ts/valid/describe.receipt.valid.1.ts | 6 +- .../ts/valid/describe.receipt.valid.2.ts | 4 +- .../invalid/001-explain.request.invalid.json | 4 +- .../json/valid/900-explain.receipt.valid.json | 8 +- .../ts/invalid/explain.request.invalid.1.ts | 6 +- .../ts/valid/explain.receipt.valid.1.ts | 6 +- .../ts/valid/explain.receipt.valid.2.ts | 4 +- .../invalid/001-fetch.request.invalid.json | 4 +- .../json/valid/900-fetch.receipt.valid.json | 8 +- .../ts/invalid/fetch.request.invalid.1.ts | 6 +- .../fetch/ts/valid/fetch.receipt.valid.1.ts | 6 +- .../fetch/ts/valid/fetch.receipt.valid.2.ts | 4 +- .../invalid/001-format.request.invalid.json | 4 +- .../json/valid/900-format.receipt.valid.json | 8 +- .../ts/invalid/format.request.invalid.1.ts | 6 +- .../format/ts/valid/format.receipt.valid.1.ts | 6 +- .../format/ts/valid/format.receipt.valid.2.ts | 4 +- .../invalid/001-parse.request.invalid.json | 4 +- .../json/valid/900-parse.receipt.valid.json | 8 +- .../ts/invalid/parse.request.invalid.1.ts | 6 +- .../parse/ts/valid/parse.receipt.valid.1.ts | 6 +- .../parse/ts/valid/parse.receipt.valid.2.ts | 4 +- .../001-summarize.request.invalid.json | 4 +- .../valid/900-summarize.receipt.valid.json | 8 +- .../ts/invalid/summarize.request.invalid.1.ts | 6 +- .../ts/invalid/summarize.request.invalid.ts | 2 +- .../ts/summarize.receipt.examples.ts | 8 +- .../ts/valid/summarize.receipt.valid.1.ts | 6 +- .../ts/valid/summarize.receipt.valid.2.ts | 4 +- manifest.json | 16 +- package-lock.json | 6 +- package.json | 12 +- .../analyze/analyze.receipt.schema.json | 2 +- .../analyze/analyze.request.schema.json | 5 +- .../classify/classify.receipt.schema.json | 2 +- .../classify/classify.request.schema.json | 2 +- .../commons/clean/clean.receipt.schema.json | 2 +- .../commons/clean/clean.request.schema.json | 2 +- .../convert/convert.receipt.schema.json | 2 +- .../convert/convert.request.schema.json | 2 +- .../describe/describe.receipt.schema.json | 2 +- .../describe/describe.request.schema.json | 2 +- .../explain/explain.receipt.schema.json | 2 +- .../explain/explain.request.schema.json | 2 +- .../commons/fetch/fetch.receipt.schema.json | 2 +- .../commons/fetch/fetch.request.schema.json | 2 +- .../commons/format/format.receipt.schema.json | 2 +- .../commons/format/format.request.schema.json | 2 +- .../commons/parse/parse.receipt.schema.json | 2 +- .../commons/parse/parse.request.schema.json | 2 +- .../summarize/summarize.receipt.schema.json | 2 +- .../summarize/summarize.request.schema.json | 2 +- scripts/ajv-run.mjs | 15 -- scripts/generate-checksums.sh | 8 +- scripts/validate-examples.mjs | 4 +- 105 files changed, 384 insertions(+), 404 deletions(-) create mode 100644 CONTRIBUTING.md delete mode 100644 scripts/ajv-run.mjs diff --git a/CHANGELOG.md b/CHANGELOG.md index b3d4a07..62d06a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,11 +2,12 @@ ## 1.1.0 -- Added simplified self-contained Commons schemas under `schemas/v1.1.0/commons` -- Added 10 Commons verbs as request/receipt schema pairs -- Removed shared `$ref` dependencies from the v1.1.0 Commons schema family -- Standardized Commons receipts around a minimal proof-first structure -- Added conditional receipt requirements for success/error states -- Established Commons v1.1.0 as the active in-repo schema surface for new integrations -- Retained v1.0.0 as the last pinned canonical release until v1.1.0 pinning is completed -- Preserved earlier schema versions for compatibility and historical reference +- Added simplified self-contained Commons schemas under `schemas/v1.1.0/commons`. +- Added the current 10-verb Commons request/receipt schema set as the active documentation and validation target. +- Flattened v1.1.0 requests and receipts into the current proof-oriented contract. +- Preserved v1.0.0 in-repo as the historical pinned release while v1.1.0 remains the authoritative current line. + +## 1.0.0 + +- Published the original Commons schema family under `schemas/v1.0.0/commons` with `_shared` references, x402-aware request envelopes, and trace-oriented receipts. +- Established the first pinned historical release line and retained its published CID in `manifest.json`. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..5f380d9 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,50 @@ +# Contributing — Protocol Commons + +Protocol Commons is schema-first, release-sensitive infrastructure. Keep changes precise, auditable, and aligned across the repository’s authoritative surfaces. + +## Expectations + +- Prefer the authority order: `schemas` → `manifest.json` → validation scripts → examples → docs. +- Treat `schemas/v1.1.0/` as the current canonical working line unless a change explicitly targets legacy compatibility. +- Preserve v1.0.0 history unless a fix is clearly required to correct misleading legacy artifacts. +- Avoid placeholder authority. If a CID, tag, URL, or signature claim is not real, say so plainly. + +## Validation commands + +```bash +npm install +npm run validate +npm run checksums:gen +npm run checksums:verify +``` + +Use `npm run validate:schemas` or `npm run validate:examples` only when you are intentionally narrowing the scope during development. + +## Fixture discipline + +- Valid fixtures should look credible and match the schema they target. +- Invalid fixtures should usually demonstrate one obvious failure. +- Keep verbs aligned with their own directories; do not copy `summarize` into sibling fixtures. +- When updating receipt examples, keep hashes, CIDs, and signatures well-formed and documentation-friendly. + +## Schema and doc consistency + +- `$id` values, local paths, manifest references, and public artifact URLs must agree. +- If a schema field changes, audit the related JSON examples, TypeScript examples, README snippets, and spec text in the same pass. +- `SPEC.md` is the normative source when wording conflicts arise. + +## Release-surface caution + +- Do not claim a CID, release tag, or published artifact unless it is actually available. +- If a release step cannot be completed in-repo, record the state honestly in `manifest.json` and the relevant documentation. +- Regenerate `checksums.txt` whenever the authoritative artifact set changes. + +## TypeScript declarations + +This package does not currently ship generated `.d.ts` files from the JSON Schemas. That omission is intentional: the schemas are the canonical cross-runtime artifact surface, and no low-maintenance declaration-generation pipeline is wired into release today. If you propose adding one, it must be reproducible, documented, and clearly subordinate to the JSON Schemas rather than a parallel source of truth. + +## PR hygiene + +- Keep PRs focused. +- Describe any manual release follow-up still required. +- Call out changes that touch canonical release surfaces such as schema files, manifest data, checksums, or governance text. diff --git a/GOVERNANCE.md b/GOVERNANCE.md index f11cc26..1b32909 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -62,7 +62,7 @@ Commercial schemas may reference Commons semantics — they **may not alter them Responsible for: - Canonical schema publishing -- Signed manifest + checksum updates +- Reviewed manifest + checksum updates - Security revocations + provenance logs - Transparency for all normative decisions @@ -71,7 +71,7 @@ Responsible for: | Phase | Governance Form | Trigger | |-------|----------------|---------| | 1 — Bootstrap | Single-operator Safe | Initial production adoption | -| 2 — Multi-Maintainer | ≥3 independent vendors in Safe | Cross-vendor reliance | +| 2 — Multi-Maintainer | ≥3 independent vendors in Safe | At least 3 production systems operated by different organizations depend on Commons schemas for live interoperation or verification | | 3 — Standards Committee | Public RFC review + voting | Global ecosystem dependence | | 4 — Neutral Standards Body | Community-elected | Entrenched industry standard | @@ -185,5 +185,5 @@ ONLY if: False claims REQUIRE public enforcement action. _Last updated: v1.0.0 retained as the historical pinned release; v1.1.0 documented as the current canonical in-repo line_ -Signed: **`commandlayer.eth`** +Maintained by the founding steward `commandlayer.eth` until the phase triggers above require broader control. *Founding Steward — CommandLayer Semantic Standards* diff --git a/ONBOARDING.md b/ONBOARDING.md index 3e729ea..2bdbe15 100644 --- a/ONBOARDING.md +++ b/ONBOARDING.md @@ -56,7 +56,7 @@ It answers: | `SCHEMAS.md` | Schema family and layout rules | | `GOVERNANCE.md` | Change authority + approvals | | `SECURITY*.md` | Disclosure + provenance | -| `RESOLUTION.md` | Change log (signed provenance) | +| `RESOLUTION.md` | Change log and provenance narrative | Authoritative docs: @@ -65,6 +65,7 @@ Authoritative docs: - `GOVERNANCE.md` — approval of normative changes - `SECURITY*.md` — provenance + integrity guarantees - `RESOLUTION.md` — canonical lifecycle log +- `CONTRIBUTING.md` — contributor workflow and fixture discipline If a change is not reflected here → **not canonical.** @@ -81,12 +82,11 @@ Canonical definitions → `SPEC.md`. ``` npm install npm run validate -npm run validate:examples ``` 5. Update `RESOLUTION.md`, provenance 6. Submit PR with version class (MAJOR/MINOR/PATCH) -Once approved → tagged + pinned. +Once approved, maintainers may still need to complete external release steps such as creating the v1.1.0 tag and publishing any future CID-backed release metadata. ## 5. What “Good” Looks Like diff --git a/README.md b/README.md index 57154e4..1a43476 100644 --- a/README.md +++ b/README.md @@ -8,54 +8,58 @@ [![CI Status](https://img.shields.io/github/actions/workflow/status/commandlayer/protocol-commons/validate.yml?branch=main&label=CI)](https://github.com/commandlayer/protocol-commons/actions/workflows/validate.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/commandlayer/protocol-commons/blob/main/LICENSE) +## Table of Contents +- [Why Now](#why-now) +- [Integrity Notice](#integrity-notice) +- [Real verbs. Real receipts.](#real-verbs-real-receipts) +- [Quickstart](#quickstart) +- [Commons v1.1.0](#commons-v110) +- [Why this exists](#why-this-exists) +- [What Commons enables](#what-commons-enables) +- [Canonical Verbs](#canonical-verbs) +- [Overview](#overview) +- [Key Principles](#key-principles) +- [This is not…](#this-is-not) +- [CommandLayer Protocol Stack](#commandlayer-protocol-stack) +- [Status](#status) +- [Repository Structure](#repository-structure) +- [Manifest](#manifest) +- [Immutability & Checksums](#immutability--checksums) +- [Validation](#validation) +- [TypeScript declarations](#typescript-declarations) +- [License](#license) +- [Next Layers](#next-layers) +- [References](#references) + --- ## Why Now -Autonomous agents are finally leaving the lab — but without shared meaning, they fragment into isolated API silos. +Autonomous agents are leaving the lab, but without shared meaning they collapse into vendor-specific dialects. -CommandLayer separates the stack into clear responsibilities: +CommandLayer separates responsibilities cleanly: -- **Protocol-Commons** defines the shared semantic layer -- **Identity and discovery layers** can resolve who an agent is and where it can be reached -- **Execution and payment layers** can transport, meter, or settle work around those semantics +- **Protocol-Commons** defines shared semantics. +- **Identity and discovery layers** resolve who an agent is and where it can be reached. +- **Execution and payment layers** transport, meter, or settle work around those semantics. -Protocol-Commons is the foundation for portable machine intent: a stable set of verbs plus strict JSON Schemas for requests and receipts. +Protocol-Commons is the stable verb-and-schema layer that lets machine intent travel across runtimes. --- -> **Integrity Notice — Protocol-Commons v1.1.0** -> -> `schemas/v1.1.0/commons` is the current canonical in-repo Commons line: -> `schemas/v1.1.0/commons` — CID publication status: `PENDING` -> -> `v1.0.0` is retained as the historical pinned release line: -> `schemas/v1.0.0/` — CID: `bafybeigvf6nkzws7dblos74dqqjkguwkrwn4a2c27ieygoxmgofyzdkz6m` -> -> Verify integrity locally: -> ```bash -> npm run checksums:verify -> ``` -> -> Any mismatch indicates modified artifacts. -> New versions MUST use a new version directory and, once published, a new CID. - ---- - -Without a shared verb layer, ecosystems degrade into: - -- Ad-hoc verbs and incompatible dialects -- Ambiguous receipts with inconsistent evidence -- No cross-runtime interoperability -- Closed vendor silos with fragile glue logic +## Integrity Notice -**Protocol-Commons** fixes this with a canonical action language: +- `schemas/v1.1.0/commons` is the current authoritative machine-artifact line in this repository. +- Running `bash scripts/generate-checksums.sh` with no arguments now targets `schemas/v1.1.0` by default. +- v1.1.0 schema `$id` values resolve directly to the repository-backed public artifact surface under `https://raw.githubusercontent.com/commandlayer/protocol-commons/main/schemas/v1.1.0/...`. +- `v1.0.0` remains the historical pinned release line with CID `bafybeigvf6nkzws7dblos74dqqjkguwkrwn4a2c27ieygoxmgofyzdkz6m`. +- `manifest.json` does **not** claim a v1.1.0 CID or release tag that does not yet exist. It records the CID as `null` with status `not-generated-in-repo`, and records the planned release tag as pending creation. -- Verbs + JSON Schemas + strict validation -- Stable request envelopes -- Signed receipts with hash-based verification evidence +Verify integrity locally: -If agents cannot agree on what actions mean, interoperability breaks. +```bash +npm run checksums:verify +``` --- @@ -77,11 +81,11 @@ If agents cannot agree on what actions mean, interoperability breaks. "status": "ok", "timestamp": "2026-03-18T12:00:00Z", "agent": "summarizeagent.eth", - "request_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111", - "result_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222", - "result_cid": "bafybeisummarizereceiptokexample0001", + "request_hash": "sha256:dc746bfc1fa1fcb5f7a4ed421c8a693076855f5f4e8d37e49f6dd35f64e5f5fd", + "result_hash": "sha256:c3c72cbbe9dc4612ab9fd5f8c0d49fe9cc7ed6f6f4ff85c5d7a6b7b653b2a36b", + "result_cid": "bafybeig2c5v7b9n1m3k5j7h9g2f4d6s8a1p3o5i7u9y2t4r6e8w1q3z5x7", "summary": "Commons v1.1.0 makes requests smaller and receipts easier to verify while preserving stable verb semantics.", - "signature": "sigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "signature": "eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDpleGFtcGxlOmNvbW1vbnMjdjEuMS4wIn1fZXlKaGMzTWlPaUpqYjIxdFlXNWtiR0Y1WlhJdVpYUm9JbjBfcTgzUXhKOGRabDFzUjVuVjdtSzJwVDR5SDZ1VzljQjNhRTVnSjdkTDluUA" } ``` @@ -89,7 +93,7 @@ Every v1.1.0 Commons receipt uses the same evidence-oriented spine: - `status` - `timestamp` -- `agent` +- `agent` *(optional signer identity)* - `request_hash` - `result_hash` *(optional)* - `result_cid` *(optional)* @@ -107,14 +111,14 @@ Install Commons and AJV: npm install @commandlayer/commons ajv ajv-formats ajv-errors ``` -**Validate all schemas and examples with the repo's working commands** +Validate the repository artifacts: ```bash npm install npm run validate ``` -**Validate a specific example against the published schema using AJV** +Validate a specific example with AJV: ```bash node --input-type=module <<'EOF_NODE' @@ -134,7 +138,7 @@ console.log(validate.errors ?? []); EOF_NODE ``` -**Programmatic usage (Node.js/ESM)** +Programmatic usage (Node.js / ESM): ```js import Ajv2020 from 'ajv/dist/2020.js'; @@ -146,15 +150,12 @@ addFormats(ajv); const validate = ajv.compile(summarizeRequestSchema); -const input = { +console.log(validate({ verb: 'summarize', version: '1.1.0', input: 'CommandLayer Commons v1.1.0 simplifies every request into a flat shape.', mode: 'brief' -}; - -console.log(validate(input)); -console.log(validate.errors ?? []); +})); ``` --- @@ -163,17 +164,12 @@ console.log(validate.errors ?? []); Commons v1.1.0 is the current canonical schema family in this repository. -It is the primary documentation and validation target for Commons. The repository still records CID publication as pending, while `v1.0.0` is retained as the historical pinned release line. - -- Each request schema is standalone -- Each receipt schema is standalone -- No shared `$ref` dependency tree is required for v1.1.0 Commons -- Commercial, transport, and payment envelopes are out of scope for Commons itself +It is the primary documentation and validation target for Commons. The repository now treats `schemas/v1.1.0` as the default authoritative artifact root, while `v1.0.0` remains the historical pinned release line. v1.1.0 `$id` values resolve against the repository-backed raw GitHub artifact surface, and `manifest.json` records CID and release-tag state without placeholders. -Example schema paths: - -- `schemas/v1.1.0/commons/analyze/analyze.request.schema.json` -- `schemas/v1.1.0/commons/analyze/analyze.receipt.schema.json` +- Each request schema is standalone. +- Each receipt schema is standalone. +- No shared `$ref` dependency tree is required for v1.1.0 Commons. +- Commercial, transport, and payment envelopes are out of scope for Commons itself. The request contract is intentionally small: @@ -194,7 +190,7 @@ The receipt contract is proof-oriented rather than transport-oriented: "version": "1.1.0", "status": "ok | error", "timestamp": "", - "agent": "", + "agent": "", "request_hash": "sha256:<64 lowercase hex chars>", "result_hash": "sha256:<64 lowercase hex chars>", "result_cid": "", @@ -204,28 +200,6 @@ The receipt contract is proof-oriented rather than transport-oriented: } ``` -These fields let consumers verify that a signer attested to a specific request hash and, when present, a specific result hash or result CID. Commons does not define transport settlement, execution proofs beyond these fields, or any x402-specific wrapping. - -## Table of Contents -- [Real verbs. Real receipts.](#real-verbs-real-receipts) -- [Quickstart](#quickstart) -- [Commons v1.1.0](#commons-v110) -- [What Commons enables](#what-commons-enables) -- [Why this exists](#why-this-exists) -- [Canonical Verbs](#canonical-verbs) -- [Overview](#overview) -- [Key Principles](#key-principles) -- [This is not…](#this-is-not) -- [CommandLayer Protocol Stack](#commandlayer-protocol-stack) -- [Status](#status) -- [Repository Structure](#repository-structure) -- [Manifest](#manifest) -- [Immutability & Checksums](#immutability--checksums) -- [Validation](#validation) -- [License](#license) -- [Next Layers](#next-layers) -- [References](#references) - --- ## Why this exists @@ -271,32 +245,7 @@ The Commons defines 10 universal actions used across common multi-agent workflow | parse | Extract structured meaning from raw input | Typed structure extracted from unstructured content | | summarize | Compress content while preserving key meaning | Core information retained with reduced verbosity | -Each verb defines: - -- a canonical request format -- a canonical receipt format - -```text -+-----------------------------+ -| Execution Runtime | (action is performed) -+-------------▲---------------+ - | - v -+-----------------------------+ -| Identity / Routing | (discovery + addressing) -+-------------▲---------------+ - | - v -+-----------------------------+ -| Protocol-Commons | (verbs + schemas) -| "What actions mean" | -+-----------------------------+ -``` - -Each verb provides: - -- `.request.schema.json` -- `.receipt.schema.json` +Each verb provides a canonical request schema and a canonical receipt schema. --- @@ -354,9 +303,9 @@ Commons gives upper layers a stable meaning layer to build around. **v1.1.0 — current canonical schema family** -- `v1.1.0` is the current flat Commons layout in this repo -- `v1.0.0` remains the historical pinned release line -- Do not describe `v1.1.0` provenance as fully canonical until pinning is complete +- `v1.1.0` is the current flat Commons layout in this repo. +- `v1.0.0` remains the historical pinned release line. +- `v1.1.0` schema URLs are resolvable today, but CID generation and release tagging remain explicit release steps. --- @@ -364,6 +313,7 @@ Commons gives upper layers a stable meaning layer to build around. ```text . +├── CONTRIBUTING.md ├── README.md ├── SCHEMAS.md ├── SPEC.md @@ -384,7 +334,7 @@ Commons gives upper layers a stable meaning layer to build around. │ ├── .request.schema.json │ └── .receipt.schema.json └── scripts/ - ├── ajv-run.mjs + ├── generate-checksums.sh ├── validate-all.mjs └── validate-examples.mjs ``` @@ -399,7 +349,8 @@ Commons gives upper layers a stable meaning layer to build around. - schema and example roots - the current schema pin target - per-verb request and receipt schema paths -- CID publication status (`PENDING` in `manifest.json` until published) +- the public schema base URL for v1.1.0 +- honest release-state fields for CID generation and release tagging --- @@ -408,6 +359,7 @@ Commons gives upper layers a stable meaning layer to build around. Use the checksum and validation scripts shipped in the repo: ```bash +npm run checksums:gen npm run checksums:verify npm run validate ``` @@ -430,6 +382,14 @@ These commands compile schemas in strict Ajv mode and validate the shipped examp --- +## TypeScript declarations + +This package intentionally ships canonical JSON Schemas rather than generated `.d.ts` artifacts. The distribution target is cross-runtime schema consumption, and the repository does not yet include a low-maintenance declaration-generation pipeline that would be authoritative across Node, browser, and non-TypeScript consumers. + +If a future release adds schema-derived declarations, the process must be reproducible, committed to the release workflow, and documented as a generated artifact surface rather than a second source of truth. + +--- + ## License MIT. diff --git a/SCHEMAS.md b/SCHEMAS.md index 48075ef..f372a4b 100644 --- a/SCHEMAS.md +++ b/SCHEMAS.md @@ -95,25 +95,25 @@ Each verb MUST define exactly: ### v1.1.0 request schemas ```text -https://commandlayer.org/schemas/v1.1.0/commons//.request.schema.json +https://raw.githubusercontent.com/commandlayer/protocol-commons/main/schemas/v1.1.0/commons//.request.schema.json ``` Example: ```text -https://commandlayer.org/schemas/v1.1.0/commons/summarize/summarize.request.schema.json +https://raw.githubusercontent.com/commandlayer/protocol-commons/main/schemas/v1.1.0/commons/summarize/summarize.request.schema.json ``` ### v1.1.0 receipt schemas ```text -https://commandlayer.org/schemas/v1.1.0/commons//.receipt.schema.json +https://raw.githubusercontent.com/commandlayer/protocol-commons/main/schemas/v1.1.0/commons//.receipt.schema.json ``` Example: ```text -https://commandlayer.org/schemas/v1.1.0/commons/summarize/summarize.receipt.schema.json +https://raw.githubusercontent.com/commandlayer/protocol-commons/main/schemas/v1.1.0/commons/summarize/summarize.receipt.schema.json ``` ### Legacy v1.0.0 note @@ -253,7 +253,7 @@ Integrity is tracked by: Current v1.1.0 schema CID status: ```text -PENDING +null + not-generated-in-repo (until a reproducible CID generator is part of the release flow) ``` Last pinned canonical release content identifier: @@ -271,4 +271,4 @@ Resolvers and auditors MUST reject mismatched artifacts and MUST distinguish bet - dev@commandlayer.org - PGP 5016 D496 9F38 22B2 C5A2 FA40 99A2 6950 197D AB0A -**Status:** v1.1.0 current canonical in-repo schema family with pending CID publication metadata; v1.0.0 retained as the historical pinned release. +**Status:** v1.1.0 current canonical in-repo schema family with resolvable schema URLs and explicit unreleased CID state; v1.0.0 retained as the historical pinned release. diff --git a/SECURITY_PROVENANCE.md b/SECURITY_PROVENANCE.md index a751652..730e6a9 100644 --- a/SECURITY_PROVENANCE.md +++ b/SECURITY_PROVENANCE.md @@ -19,14 +19,14 @@ Private disclosure is preferred for security-sensitive findings. --- ## Provenance & Version Integrity -Releases are **reproducible and content-addressed**. +Pinned releases are content-addressed. The current v1.1.0 line is schema-resolvable and checksum-tracked, but not yet represented as a pinned CID-backed release in repository metadata. Current repository schema family: **v1.1.0** Current canonical pinned release: **v1.0.0** Integrity sources: - **v1.0.0 CID:** `bafybeigvf6nkzws7dblos74dqqjkguwkrwn4a2c27ieygoxmgofyzdkz6m` -- **v1.1.0 CID:** `PENDING` (pinning not yet published) +- **v1.1.0 CID:** not asserted in-repo; `manifest.json` records `null` with status `not-generated-in-repo` until a reproducible release hasher is wired in - `checksums.txt` — file-level hashes - CI strict validation (Ajv) - `RESOLUTION.md` — immutable lifecycle history diff --git a/SPEC.md b/SPEC.md index e3b1832..2701a7e 100644 --- a/SPEC.md +++ b/SPEC.md @@ -28,12 +28,12 @@ This repository contains two materially different Commons schema families: - **v1.1.0** — current canonical in-repo schema family and active documentation target - **v1.0.0** — legacy schema family and historical pinned release -Repository metadata still records v1.1.0 CID publication as pending. Implementers MUST therefore distinguish between: +Repository metadata records v1.1.0 as the current canonical in-repo line, but not yet as a pinned CID-backed release. Implementers MUST therefore distinguish between: 1. **Schema semantics** — what the v1.1.0 files require 2. **Release provenance status** — whether a version has completed CID publication and canonical pinning -This specification documents the v1.1.0 contract as the current canonical line while preserving v1.0.0 as the historical pinned release until v1.1.0 pinning is complete. +This specification documents the v1.1.0 contract as the current canonical line while preserving v1.0.0 as the historical pinned release until a reproducible CID generation and release-tagging step is completed for v1.1.0. --- @@ -211,13 +211,13 @@ Every v1.1.0 schema MUST use a resolvable HTTPS `$id` under this pattern. ### Request ```text -https://commandlayer.org/schemas/v1.1.0/commons//.request.schema.json +https://raw.githubusercontent.com/commandlayer/protocol-commons/main/schemas/v1.1.0/commons//.request.schema.json ``` ### Receipt ```text -https://commandlayer.org/schemas/v1.1.0/commons//.receipt.schema.json +https://raw.githubusercontent.com/commandlayer/protocol-commons/main/schemas/v1.1.0/commons//.receipt.schema.json ``` Legacy v1.0.0 `$id` layouts remain valid only for the legacy directory tree. @@ -271,7 +271,7 @@ The current v1.1.0 schema family is identified by: - Package version: `1.1.0` - Manifest entry: `manifest.json` - File-level hashes: `checksums.txt` -- IPFS directory CID: `PENDING` until CID publication is complete +- IPFS directory CID: not yet asserted in-repo; `manifest.json` uses `null` plus status `not-generated-in-repo` until a reproducible generator is part of the release flow The last fully pinned canonical release is: @@ -283,7 +283,7 @@ Auditors and resolvers SHOULD: 1. Fetch the versioned schemas 2. Verify integrity locally 3. Treat mismatched artifacts as untrusted -4. Treat v1.1.0 as the current canonical in-repo line, distinct from the historical pinned release, until CID publication is complete +4. Treat v1.1.0 as the current canonical in-repo line, distinct from the historical pinned release, until CID publication and release tagging are completed Integrity check command: @@ -302,7 +302,7 @@ An implementation supporting Commons v1.1.0 MUST: 3. Validate the flat receipt shape exactly as published 4. Treat published version directories as immutable 5. Preserve receipt trust semantics as hashes plus signatures, without inventing unsupported guarantees -6. Avoid representing v1.1.0 as the historical pinned release until CID publication is complete +6. Avoid representing v1.1.0 as the historical pinned release until CID publication and release tagging are complete A system supporting any canonical verb MAY claim **Commons-Compatible** for that version, but provenance claims MUST accurately reflect whether the relevant version is the current canonical in-repo line or the historical pinned release. @@ -342,5 +342,5 @@ Security escalation MUST follow repository policy. ## Status -**v1.1.0:** current canonical schema family documented here; CID publication status remains pending in repository metadata +**v1.1.0:** current canonical schema family documented here; schema URLs are resolvable, while CID generation and release tagging remain explicit release tasks **v1.0.0:** legacy schema family and historical pinned release diff --git a/checksums.txt b/checksums.txt index 65b5b55..ce2d0d5 100644 --- a/checksums.txt +++ b/checksums.txt @@ -1,45 +1,20 @@ -05465f4f2a88a473411fe56092195b79d925db39518bc2197746f6229c534738 schemas/v1.0.0/_shared/identity.schema.json -a726abda290cd4f3b8aa45f420e5b65df02a1ff2a1334ae528158344fded5cd3 schemas/v1.0.0/_shared/receipt.base.schema.json -cdcfd0bb25f659e4972ad15e79a0f5a6daaafda5d66db168e3ff9c728b22f0be schemas/v1.0.0/_shared/trace.schema.json -0290652bf5985b6dd9c700f97d9b33984f908e940100196008fb6ddac1f6d40b schemas/v1.0.0/_shared/verb.aliases.schema.json -8a5f8a36b753adb0f72da5b00c15293f91997c7e0b155eafbecfc6d822d337ff schemas/v1.0.0/_shared/x402.schema.json -fcdf68903f1adfdebd90d04aef22a4605aa83cdf6860e0afe618d172e8cb5ee3 schemas/v1.0.0/commons/analyze/receipts/analyze.receipt.schema.json -5ee41eb6ce42a89f911e49c9841f49612aad63635bf9a61180ffcf6abba238c0 schemas/v1.0.0/commons/analyze/requests/analyze.request.schema.json -2957ff31148ff363137184a471830e4a4bd0afe52f59f2ddd8c2b825bf0c6b14 schemas/v1.0.0/commons/classify/receipts/classify.receipt.schema.json -2e981f33c05869886378d15f00d33f4c13ca32739858c75b8ca164c837557470 schemas/v1.0.0/commons/classify/requests/classify.request.schema.json -f72e807202860c6a5f3a92dd3656c7f02c841e06d95bea4a1c5c2a95db1f96c1 schemas/v1.0.0/commons/clean/receipts/clean.receipt.schema.json -1ef1497980857ced3e320f74846e7a0037c466ca335c2514d74598f9f9d8a796 schemas/v1.0.0/commons/clean/requests/clean.request.schema.json -306bdc03225a04c043a983e36c047b168fd9022764311a20c84fe9a88cc920b2 schemas/v1.0.0/commons/convert/receipts/convert.receipt.schema.json -f66b18e17f0c7af742263b27b7f34ac8be0af4893d024829da65d83c1422dcdc schemas/v1.0.0/commons/convert/requests/convert.request.schema.json -442e61578e654de774d291c31f5d51ce972935b2be1cc42ad59fc4e34b1dbc51 schemas/v1.0.0/commons/describe/receipts/describe.receipt.schema.json -ff33a2a6baa16a7334577b1ad0fc5ee2f2d157510271d8a4880f333c31f19174 schemas/v1.0.0/commons/describe/requests/describe.request.schema.json -46b3822fad90d7274519896793be4e86283431a458b2e9f600c4d4950f0fda07 schemas/v1.0.0/commons/explain/receipts/explain.receipt.schema.json -25681ccbe80acdeb8a904deacef725a51e3e8c0f56e240a0e3352c1d37c67089 schemas/v1.0.0/commons/explain/requests/explain.request.schema.json -5904dbef87927b064a9e5bf0c48a4bc7b4cb7dc98b75390f0a507617e690bab1 schemas/v1.0.0/commons/fetch/receipts/fetch.receipt.schema.json -8b5527e0fc3dbe02b318e47ce7bf26ee58cd8d5daa2c5aae21d0d8daf4753f95 schemas/v1.0.0/commons/fetch/requests/fetch.request.schema.json -93b5174144f372c03f7975898d3c989fd2be997db93c40a7f83b6a0dfe99f7d4 schemas/v1.0.0/commons/format/receipts/format.receipt.schema.json -b451b0c05cb77f7ad66906f351b560400447de136c1ad2ce27c63fc3bcaf0d9a schemas/v1.0.0/commons/format/requests/format.request.schema.json -2dfe8c64c47eb74d541e4d9413d5485afe2d89e56117e43802a204df32f794db schemas/v1.0.0/commons/parse/receipts/parse.receipt.schema.json -54b9bb43a48a211a42c3e4a3ebcc6ae11c278dbda7122619749ce290ae1410ec schemas/v1.0.0/commons/parse/requests/parse.request.schema.json -ccb7f20562d2e34dff73a17794aabcf98f25f659e83a790e42cf9a31e97460b3 schemas/v1.0.0/commons/summarize/receipts/summarize.receipt.schema.json -be565b5a72dc03a1517a9c2ea0a0842c86def2e58e8471f81e3cac6262bffb68 schemas/v1.0.0/commons/summarize/requests/summarize.request.schema.json -4760c15bc2985b35be8a333859e0b2e97617735be0d0222722b162de47caf940 schemas/v1.1.0/commons/analyze/analyze.receipt.schema.json -28571a5750590c256b9318ecb1cfb60e39614df82cee0b3b2a921980100e447c schemas/v1.1.0/commons/analyze/analyze.request.schema.json -6aeb33050633f712dfcaabc8e57ba058275e44653407bb766f0417cb5bfd8c2b schemas/v1.1.0/commons/classify/classify.receipt.schema.json -476253e821ff4e7dfa441e5604c6efc29d12729bcb50e8a02db86fbd121240ab schemas/v1.1.0/commons/classify/classify.request.schema.json -13a2f4d9083e1e5ed6bd6b98e05736e7791bfd62b109b4090ab4abff75572ad5 schemas/v1.1.0/commons/clean/clean.receipt.schema.json -7aed80ce981dcba717010db2d9922b9d27e29734dc02731c3d6f7aeefc0fac14 schemas/v1.1.0/commons/clean/clean.request.schema.json -fe843dc2970053ee069129901d8488b4816e2fe8c875ffb79b890c3e3f46874b schemas/v1.1.0/commons/convert/convert.receipt.schema.json -ca9eb56fa246b16067af0f8d2e282a07d40b1930b5689c168578034feda36986 schemas/v1.1.0/commons/convert/convert.request.schema.json -6e477575d80a515b844c5eb6f74ca3689e467646b118ccdd4e011124faa91f8e schemas/v1.1.0/commons/describe/describe.receipt.schema.json -3a374c653f2747b6ae5a23829c246d9545cc65ca245e89ba89bc15fca8c31f56 schemas/v1.1.0/commons/describe/describe.request.schema.json -cf96ccd32f79591405e99d68b4cca7bfad01354b0205d9e67a80a3bef25f169a schemas/v1.1.0/commons/explain/explain.receipt.schema.json -97fcd1e7f69addcdf1004967fe28164170d34a7175ec97401f95128f7061d7d1 schemas/v1.1.0/commons/explain/explain.request.schema.json -81380546e0859eaa2980f3958ab94c6f233ab8c97414e9ff787d4924499a03e8 schemas/v1.1.0/commons/fetch/fetch.receipt.schema.json -bbe5cc99aa24d910c16a72da837087d81d65581e2a81abc9c21f3e5a071b007d schemas/v1.1.0/commons/fetch/fetch.request.schema.json -5b88990ead3a578823ccc2d57203a2ca96274574c18031797c584c25f3298f35 schemas/v1.1.0/commons/format/format.receipt.schema.json -6869c28be94af8b51b82fc0dc29d8fb0e00381c1fbc08127ebf2c24716849daa schemas/v1.1.0/commons/format/format.request.schema.json -27f28a2d0eb4d90c77a2928eefe3af571dc872fe5a9c3748a846664c3a0bf036 schemas/v1.1.0/commons/parse/parse.receipt.schema.json -ae235f1ee1f1f6e86a9bc6c9e74d7ad848fdb9b9e2df03a6c6885cff9bb08850 schemas/v1.1.0/commons/parse/parse.request.schema.json -b3c29eafdca49d938aa4e1ee7d8e21cfb210bf1922ad6833092c24231d7dd5d5 schemas/v1.1.0/commons/summarize/summarize.receipt.schema.json -55c56d7f29b07dff3cd4d3af5deab7447701f5fe42e4a2ccff6b5c9b0b252365 schemas/v1.1.0/commons/summarize/summarize.request.schema.json +99f35b0dd3d147b0ef53f61486b39d5daf13026a439c5e416a4786ee22468d00 schemas/v1.1.0/commons/analyze/analyze.receipt.schema.json +dcae0af9e0cc54fc68a00a6ca46b6db247a901c22dfe17990fa67aaaeaaf0c34 schemas/v1.1.0/commons/analyze/analyze.request.schema.json +452030e1475664012a57478a7004ac061a401792c12f01508345f74c112f1804 schemas/v1.1.0/commons/classify/classify.receipt.schema.json +aad6708bd8be3f48cfbc800d563c1e27d04643360d31fc4fb88929626410a943 schemas/v1.1.0/commons/classify/classify.request.schema.json +29623e25098a2054aa72595d2548e59940ba69aec5deb3eeb4ad52c82d783e5c schemas/v1.1.0/commons/clean/clean.receipt.schema.json +7955d20d1fcdcb7fdac0661178aa3ccb481a342bd02611bea1540b18274a2a67 schemas/v1.1.0/commons/clean/clean.request.schema.json +212ad9a735f7636b5d833a3b6bd2793cec13f9eab52f1fd26c72a4f6790aad23 schemas/v1.1.0/commons/convert/convert.receipt.schema.json +385ad219609fd8fbd2e5085c6a52a57e1138db6e18d04f7c05328164a499ca07 schemas/v1.1.0/commons/convert/convert.request.schema.json +fcf6917af2d6e341850faf2b08216672fe7d07c216699f5e18e4fa0858e95668 schemas/v1.1.0/commons/describe/describe.receipt.schema.json +fbd65ad82e1604e5326aae88fdaa0394e1ac17bd5ac4dda20af345906354cb7d schemas/v1.1.0/commons/describe/describe.request.schema.json +c95e77ea3ca2f5b5ce637f1bb0a6b82ac346b503a754e97841d8a83804837789 schemas/v1.1.0/commons/explain/explain.receipt.schema.json +a377cd299dae420759d02f09129707e6cb50e2b6932a5390a7a8b81ce9ab912c schemas/v1.1.0/commons/explain/explain.request.schema.json +2182f717e3875f834be17e0ad3cd9d1c28f92f767f6429f4068d13377ed451b6 schemas/v1.1.0/commons/fetch/fetch.receipt.schema.json +c30cf4bc3d8584991c0e1730bd46265b9358379db8833c9e433bf9a56496e470 schemas/v1.1.0/commons/fetch/fetch.request.schema.json +c678bef871c38f880427efea3e97f6e87a726617d4c68783ce1808c17cfb70f8 schemas/v1.1.0/commons/format/format.receipt.schema.json +fb89158a8df652552b552c5fbdc81d5035d14097995f0616710382ae66525419 schemas/v1.1.0/commons/format/format.request.schema.json +adc9858d4a8d6298b6abd4d46cb81058d81be9d266180e6d33c3fb98a7b15349 schemas/v1.1.0/commons/parse/parse.receipt.schema.json +948ace8548dbc2e3f9f6d15f312cc46c8b7494ea9fa538fb103fc546ea81be67 schemas/v1.1.0/commons/parse/parse.request.schema.json +56e4d7eddb10b95efed7a14a86231ebf38020e0565c80e0a8429c8cb55a76dc3 schemas/v1.1.0/commons/summarize/summarize.receipt.schema.json +4f3a4a59f8704bf2c5a4fa8253eb3aa24cde0a405b05d5d9d6c7a8494f3ae6f7 schemas/v1.1.0/commons/summarize/summarize.request.schema.json diff --git a/examples/v1.0.0/commons/analyze/invalid/001-analyze.request.invalid.json b/examples/v1.0.0/commons/analyze/invalid/001-analyze.request.invalid.json index d154f24..e9af631 100644 --- a/examples/v1.0.0/commons/analyze/invalid/001-analyze.request.invalid.json +++ b/examples/v1.0.0/commons/analyze/invalid/001-analyze.request.invalid.json @@ -1,6 +1,6 @@ { "x402": { - "verb": "summarize", + "verb": "analyze", "version": "1.0.0" }, "input": { diff --git a/examples/v1.0.0/commons/analyze/ts/invalid/analyze.request.invalid.1.ts b/examples/v1.0.0/commons/analyze/ts/invalid/analyze.request.invalid.1.ts index b6904a2..5f37a61 100644 --- a/examples/v1.0.0/commons/analyze/ts/invalid/analyze.request.invalid.1.ts +++ b/examples/v1.0.0/commons/analyze/ts/invalid/analyze.request.invalid.1.ts @@ -2,7 +2,7 @@ export const analyzeRequestInvalid1: any = { x402: { - verb: "summarize", + verb: "analyze", version: "1.0.0" }, // ❌ input should be a string diff --git a/examples/v1.0.0/commons/classify/invalid/001-classify.request.invalid.json b/examples/v1.0.0/commons/classify/invalid/001-classify.request.invalid.json index 3db279d..1623ff5 100644 --- a/examples/v1.0.0/commons/classify/invalid/001-classify.request.invalid.json +++ b/examples/v1.0.0/commons/classify/invalid/001-classify.request.invalid.json @@ -1,6 +1,6 @@ { "x402": { - "verb": "summarize", + "verb": "classify", "version": "1.0.0" }, "input": "This is intentionally wrong: x402.verb is not 'classify', 'actor' is missing, and 'input' is a string instead of an object." diff --git a/examples/v1.0.0/commons/classify/ts/invalid/classify.request.invalid.1.ts b/examples/v1.0.0/commons/classify/ts/invalid/classify.request.invalid.1.ts index e81aead..4b8d429 100644 --- a/examples/v1.0.0/commons/classify/ts/invalid/classify.request.invalid.1.ts +++ b/examples/v1.0.0/commons/classify/ts/invalid/classify.request.invalid.1.ts @@ -2,7 +2,7 @@ export const classifyRequestInvalid1: any = { x402: { - verb: "summarize", + verb: "classify", version: "1.0.0" }, // ❌ input should be a string diff --git a/examples/v1.0.0/commons/clean/invalid/001-clean.request.invalid.json b/examples/v1.0.0/commons/clean/invalid/001-clean.request.invalid.json index 017dc39..504c18a 100644 --- a/examples/v1.0.0/commons/clean/invalid/001-clean.request.invalid.json +++ b/examples/v1.0.0/commons/clean/invalid/001-clean.request.invalid.json @@ -1,6 +1,6 @@ { "x402": { - "verb": "summarize", + "verb": "clean", "version": "1.0.0" }, "input": "This is intentionally wrong: no actor, no limits, no channel, and x402.verb is not 'clean'." diff --git a/examples/v1.0.0/commons/clean/ts/invalid/clean.request.invalid.1.ts b/examples/v1.0.0/commons/clean/ts/invalid/clean.request.invalid.1.ts index f67ebe7..6fced68 100644 --- a/examples/v1.0.0/commons/clean/ts/invalid/clean.request.invalid.1.ts +++ b/examples/v1.0.0/commons/clean/ts/invalid/clean.request.invalid.1.ts @@ -2,7 +2,7 @@ export const cleanRequestInvalid1: any = { x402: { - verb: "summarize", + verb: "clean", version: "1.0.0" }, // ❌ Missing actor, limits, channel diff --git a/examples/v1.0.0/commons/convert/invalid/001-convert.request.invalid.json b/examples/v1.0.0/commons/convert/invalid/001-convert.request.invalid.json index 6fc5820..04bc8ec 100644 --- a/examples/v1.0.0/commons/convert/invalid/001-convert.request.invalid.json +++ b/examples/v1.0.0/commons/convert/invalid/001-convert.request.invalid.json @@ -1,6 +1,6 @@ { "x402": { - "verb": "summarize", + "verb": "convert", "version": "1.0.0" }, "input": { diff --git a/examples/v1.0.0/commons/convert/ts/invalid/convert.request.invalid.1.ts b/examples/v1.0.0/commons/convert/ts/invalid/convert.request.invalid.1.ts index 5a3ede5..e65df5e 100644 --- a/examples/v1.0.0/commons/convert/ts/invalid/convert.request.invalid.1.ts +++ b/examples/v1.0.0/commons/convert/ts/invalid/convert.request.invalid.1.ts @@ -2,7 +2,7 @@ export const convertRequestInvalid1: any = { x402: { - verb: "summarize", + verb: "convert", version: "1.0.0" }, input: { diff --git a/examples/v1.0.0/commons/describe/invalid/001-describe.request.invalid.json b/examples/v1.0.0/commons/describe/invalid/001-describe.request.invalid.json index d1c09f6..4ddb43c 100644 --- a/examples/v1.0.0/commons/describe/invalid/001-describe.request.invalid.json +++ b/examples/v1.0.0/commons/describe/invalid/001-describe.request.invalid.json @@ -1,6 +1,6 @@ { "x402": { - "verb": "summarize", + "verb": "describe", "version": "1.0.0" }, "input": "This is intentionally wrong: no actor, limits, or channel, and input is a string instead of an object." diff --git a/examples/v1.0.0/commons/describe/ts/invalid/describe.request.invalid.1.ts b/examples/v1.0.0/commons/describe/ts/invalid/describe.request.invalid.1.ts index 34063bf..7920932 100644 --- a/examples/v1.0.0/commons/describe/ts/invalid/describe.request.invalid.1.ts +++ b/examples/v1.0.0/commons/describe/ts/invalid/describe.request.invalid.1.ts @@ -2,7 +2,7 @@ export const describeRequestInvalid1: any = { x402: { - verb: "summarize", + verb: "describe", version: "1.0.0" }, // ❌ missing actor, limits, channel diff --git a/examples/v1.0.0/commons/explain/invalid/001-explain.request.invalid.json b/examples/v1.0.0/commons/explain/invalid/001-explain.request.invalid.json index b76291b..f72e68d 100644 --- a/examples/v1.0.0/commons/explain/invalid/001-explain.request.invalid.json +++ b/examples/v1.0.0/commons/explain/invalid/001-explain.request.invalid.json @@ -1,6 +1,6 @@ { "x402": { - "verb": "summarize", + "verb": "explain", "version": "1.0.0" }, "input": "This is wrong: no actor, no limits, no channel, and input is a string instead of an object." diff --git a/examples/v1.0.0/commons/explain/ts/invalid/explain.request.invalid.1.ts b/examples/v1.0.0/commons/explain/ts/invalid/explain.request.invalid.1.ts index d75c1dd..52caaf4 100644 --- a/examples/v1.0.0/commons/explain/ts/invalid/explain.request.invalid.1.ts +++ b/examples/v1.0.0/commons/explain/ts/invalid/explain.request.invalid.1.ts @@ -2,7 +2,7 @@ export const explainRequestInvalid1: any = { x402: { - verb: "summarize", + verb: "explain", version: "1.0.0" }, // ❌ missing actor, limits, channel diff --git a/examples/v1.0.0/commons/fetch/invalid/001-fetch.request.invalid.json b/examples/v1.0.0/commons/fetch/invalid/001-fetch.request.invalid.json index cce5209..ef4d7a1 100644 --- a/examples/v1.0.0/commons/fetch/invalid/001-fetch.request.invalid.json +++ b/examples/v1.0.0/commons/fetch/invalid/001-fetch.request.invalid.json @@ -1,6 +1,6 @@ { "x402": { - "verb": "summarize", + "verb": "fetch", "version": "1.0.0" }, "query": "level=error" diff --git a/examples/v1.0.0/commons/fetch/ts/invalid/fetch.request.invalid.1.ts b/examples/v1.0.0/commons/fetch/ts/invalid/fetch.request.invalid.1.ts index bd169e0..cfd6bd3 100644 --- a/examples/v1.0.0/commons/fetch/ts/invalid/fetch.request.invalid.1.ts +++ b/examples/v1.0.0/commons/fetch/ts/invalid/fetch.request.invalid.1.ts @@ -2,7 +2,7 @@ export const fetchRequestInvalid1: any = { x402: { - verb: "summarize", + verb: "fetch", version: "1.0.0" }, query: "level=error" diff --git a/examples/v1.0.0/commons/format/invalid/001-format.request.invalid.json b/examples/v1.0.0/commons/format/invalid/001-format.request.invalid.json index 4a7bb8e..eb05317 100644 --- a/examples/v1.0.0/commons/format/invalid/001-format.request.invalid.json +++ b/examples/v1.0.0/commons/format/invalid/001-format.request.invalid.json @@ -1,6 +1,6 @@ { "x402": { - "verb": "summarize", + "verb": "format", "version": "1.0.0" }, "input": "This is wrong: no actor, no limits, no channel, and input is a string not an object." diff --git a/examples/v1.0.0/commons/format/ts/invalid/format.request.invalid.1.ts b/examples/v1.0.0/commons/format/ts/invalid/format.request.invalid.1.ts index a780ef4..515682f 100644 --- a/examples/v1.0.0/commons/format/ts/invalid/format.request.invalid.1.ts +++ b/examples/v1.0.0/commons/format/ts/invalid/format.request.invalid.1.ts @@ -2,7 +2,7 @@ export const formatRequestInvalid1: any = { x402: { - verb: "summarize", + verb: "format", version: "1.0.0" }, // ❌ Missing actor, limits, channel diff --git a/examples/v1.0.0/commons/parse/invalid/001-parse.request.invalid.json b/examples/v1.0.0/commons/parse/invalid/001-parse.request.invalid.json index da3197e..b3e7cff 100644 --- a/examples/v1.0.0/commons/parse/invalid/001-parse.request.invalid.json +++ b/examples/v1.0.0/commons/parse/invalid/001-parse.request.invalid.json @@ -1,6 +1,6 @@ { "x402": { - "verb": "summarize", + "verb": "parse", "version": "1.0.0" }, "input": "This is wrong: no actor, limits, or channel, and input is a string instead of an object." diff --git a/examples/v1.0.0/commons/parse/ts/invalid/parse.request.invalid.1.ts b/examples/v1.0.0/commons/parse/ts/invalid/parse.request.invalid.1.ts index 8ba1f26..a81ede3 100644 --- a/examples/v1.0.0/commons/parse/ts/invalid/parse.request.invalid.1.ts +++ b/examples/v1.0.0/commons/parse/ts/invalid/parse.request.invalid.1.ts @@ -2,7 +2,7 @@ export const parseRequestInvalid1: any = { x402: { - verb: "summarize", + verb: "parse", version: "1.0.0" }, // ❌ missing actor, limits, channel diff --git a/examples/v1.1.0/commons/analyze/json/invalid/001-analyze.request.invalid.json b/examples/v1.1.0/commons/analyze/json/invalid/001-analyze.request.invalid.json index c96d24e..c4914f8 100644 --- a/examples/v1.1.0/commons/analyze/json/invalid/001-analyze.request.invalid.json +++ b/examples/v1.1.0/commons/analyze/json/invalid/001-analyze.request.invalid.json @@ -1,8 +1,8 @@ { - "verb": "summarize", + "verb": "analyze", "version": "1.1.0", "input": { "text": "This should be a string." }, - "mode": "bullet-points" + "mode": "extract" } diff --git a/examples/v1.1.0/commons/analyze/json/valid/900-analyze.receipt.valid.json b/examples/v1.1.0/commons/analyze/json/valid/900-analyze.receipt.valid.json index 5c491c9..0e9adc7 100644 --- a/examples/v1.1.0/commons/analyze/json/valid/900-analyze.receipt.valid.json +++ b/examples/v1.1.0/commons/analyze/json/valid/900-analyze.receipt.valid.json @@ -4,9 +4,9 @@ "status": "ok", "timestamp": "2026-03-18T12:00:00Z", "agent": "analyzeagent.eth", - "request_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111", - "result_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222", - "result_cid": "bafybeianalyzereceiptokexample0001", + "request_hash": "sha256:d5c90cedd340b05841fccb76bf5b9f9d14f4aae3d661c9cd358b7380228cb351", + "result_hash": "sha256:879eadc48bc5c55fb07d915cfd59e9d714a918d84ef469f0b461cfd98aeb7167", + "result_cid": "bafybeihz2afqk6ir4c4c4m2p6sk7uh4f2z5g3r4m7nq2gczx4m4ai6x6va", "summary": "Core risks center on signer key rotation gaps, unresolved indexer scaling assumptions, and an unstated rollback plan.", - "signature": "sigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "signature": "eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDpleGFtcGxlOmNvbW1vbnMjdjEuMS4wIn1fZXlKaGMzTWlPaUpqYjIxdFlXNWtiR0Y1WlhJdVpYUm9JbjBfcTgzUXhKOGRabDFzUjVuVjdtSzJwVDR5SDZ1VzljQjNhRTVnSjdkTDluUA" } diff --git a/examples/v1.1.0/commons/analyze/ts/invalid/analyze.request.invalid.1.ts b/examples/v1.1.0/commons/analyze/ts/invalid/analyze.request.invalid.1.ts index 57250a5..5dd0672 100644 --- a/examples/v1.1.0/commons/analyze/ts/invalid/analyze.request.invalid.1.ts +++ b/examples/v1.1.0/commons/analyze/ts/invalid/analyze.request.invalid.1.ts @@ -1,10 +1,10 @@ -// INVALID analyze.request #1 — wrong verb + wrong input type + unsupported mode +// INVALID analyze.request #1 — input must be a string export const analyzeRequestInvalid1: any = { - "verb": "summarize", + "verb": "analyze", "version": "1.1.0", "input": { "text": "This should be a string." }, - "mode": "bullet-points" + "mode": "extract" }; diff --git a/examples/v1.1.0/commons/analyze/ts/valid/analyze.receipt.valid.1.ts b/examples/v1.1.0/commons/analyze/ts/valid/analyze.receipt.valid.1.ts index 5a61dbb..9f158a6 100644 --- a/examples/v1.1.0/commons/analyze/ts/valid/analyze.receipt.valid.1.ts +++ b/examples/v1.1.0/commons/analyze/ts/valid/analyze.receipt.valid.1.ts @@ -20,9 +20,9 @@ export const analyzeReceiptValid1: AnalyzeReceipt = { "status": "ok", "timestamp": "2026-03-18T12:00:00Z", "agent": "analyzeagent.eth", - "request_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "request_hash": "sha256:879eadc48bc5c55fb07d915cfd59e9d714a918d84ef469f0b461cfd98aeb7167", "result_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222", - "result_cid": "bafybeianalyzereceiptokexample0001", + "result_cid": "bafybeihz2afqk6ir4c4c4m2p6sk7uh4f2z5g3r4m7nq2gczx4m4ai6x6va", "summary": "Core risks center on signer key rotation gaps, unresolved indexer scaling assumptions, and an unstated rollback plan.", - "signature": "sigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "signature": "eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDpleGFtcGxlOmNvbW1vbnMjdjEuMS4wIn1fZXlKaGMzTWlPaUpqYjIxdFlXNWtiR0Y1WlhJdVpYUm9JbjBfcTgzUXhKOGRabDFzUjVuVjdtSzJwVDR5SDZ1VzljQjNhRTVnSjdkTDluUA" }; diff --git a/examples/v1.1.0/commons/analyze/ts/valid/analyze.receipt.valid.2.ts b/examples/v1.1.0/commons/analyze/ts/valid/analyze.receipt.valid.2.ts index 29b6425..a540864 100644 --- a/examples/v1.1.0/commons/analyze/ts/valid/analyze.receipt.valid.2.ts +++ b/examples/v1.1.0/commons/analyze/ts/valid/analyze.receipt.valid.2.ts @@ -8,7 +8,7 @@ export const analyzeReceiptValid2: AnalyzeReceipt = { "status": "error", "timestamp": "2026-03-18T12:05:00Z", "agent": "analyzeagent.eth", - "request_hash": "sha256:3333333333333333333333333333333333333333333333333333333333333333", - "signature": "sigBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", + "request_hash": "sha256:879eadc48bc5c55fb07d915cfd59e9d714a918d84ef469f0b461cfd98aeb7167", + "signature": "eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDpleGFtcGxlOmNvbW1vbnMjdjEuMS4wIn1fZXlKaGMzTWlPaUpqYjIxdFlXNWtiR0Y1WlhJdVpYUm9JbjBfcTgzUXhKOGRabDFzUjVuVjdtSzJwVDR5SDZ1VzljQjNhRTVnSjdkTDluUA", "error": "analyze execution failed because the input could not be processed in the requested mode." }; diff --git a/examples/v1.1.0/commons/analyze/ts/valid/analyze.request.valid.1.ts b/examples/v1.1.0/commons/analyze/ts/valid/analyze.request.valid.1.ts index 8b94cc7..3d7ba78 100644 --- a/examples/v1.1.0/commons/analyze/ts/valid/analyze.request.valid.1.ts +++ b/examples/v1.1.0/commons/analyze/ts/valid/analyze.request.valid.1.ts @@ -1,6 +1,6 @@ // VALID analyze.request #1 — aligned with schemas/v1.1.0/commons/analyze/analyze.request.schema.json -export type AnalyzeMode = "classify" | "extract" | "score" | "summarize"; +export type AnalyzeMode = "classify" | "extract" | "score"; export interface AnalyzeRequest { verb: "analyze"; diff --git a/examples/v1.1.0/commons/classify/json/invalid/001-classify.request.invalid.json b/examples/v1.1.0/commons/classify/json/invalid/001-classify.request.invalid.json index 0b75ab4..e3b3427 100644 --- a/examples/v1.1.0/commons/classify/json/invalid/001-classify.request.invalid.json +++ b/examples/v1.1.0/commons/classify/json/invalid/001-classify.request.invalid.json @@ -1,8 +1,8 @@ { - "verb": "summarize", + "verb": "classify", "version": "1.1.0", "input": { "text": "This should be a string." }, - "mode": "ordinal" + "mode": "single" } diff --git a/examples/v1.1.0/commons/classify/json/valid/900-classify.receipt.valid.json b/examples/v1.1.0/commons/classify/json/valid/900-classify.receipt.valid.json index bc0e4d5..0969035 100644 --- a/examples/v1.1.0/commons/classify/json/valid/900-classify.receipt.valid.json +++ b/examples/v1.1.0/commons/classify/json/valid/900-classify.receipt.valid.json @@ -4,9 +4,9 @@ "status": "ok", "timestamp": "2026-03-18T12:00:00Z", "agent": "classifyagent.eth", - "request_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111", - "result_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222", - "result_cid": "bafybeiclassifyreceiptokexample0001", + "request_hash": "sha256:2cfff8018f4d53bf23c9294ceadb394b444d7c341a02d1b92bd8a21257ed9ec3", + "result_hash": "sha256:2891386be77f313a4306376d7cb9aeb180c71d3e67bda4801a08957163659cca", + "result_cid": "bafybeid4n6z3k4c5s7qk2j5v3u4w6y7p8r9s2t4v6x8z2b4n6c8d2e4f5a", "summary": "billing_issue", - "signature": "sigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "signature": "eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDpleGFtcGxlOmNvbW1vbnMjdjEuMS4wIn1fZXlKaGMzTWlPaUpqYjIxdFlXNWtiR0Y1WlhJdVpYUm9JbjBfcTgzUXhKOGRabDFzUjVuVjdtSzJwVDR5SDZ1VzljQjNhRTVnSjdkTDluUA" } diff --git a/examples/v1.1.0/commons/classify/ts/invalid/classify.request.invalid.1.ts b/examples/v1.1.0/commons/classify/ts/invalid/classify.request.invalid.1.ts index daa4238..ea0e866 100644 --- a/examples/v1.1.0/commons/classify/ts/invalid/classify.request.invalid.1.ts +++ b/examples/v1.1.0/commons/classify/ts/invalid/classify.request.invalid.1.ts @@ -1,10 +1,10 @@ -// INVALID classify.request #1 — wrong verb + wrong input type + unsupported mode +// INVALID classify.request #1 — input must be a string export const classifyRequestInvalid1: any = { - "verb": "summarize", + "verb": "classify", "version": "1.1.0", "input": { "text": "This should be a string." }, - "mode": "ordinal" + "mode": "single" }; diff --git a/examples/v1.1.0/commons/classify/ts/valid/classify.receipt.valid.1.ts b/examples/v1.1.0/commons/classify/ts/valid/classify.receipt.valid.1.ts index a5194ee..62c871d 100644 --- a/examples/v1.1.0/commons/classify/ts/valid/classify.receipt.valid.1.ts +++ b/examples/v1.1.0/commons/classify/ts/valid/classify.receipt.valid.1.ts @@ -20,9 +20,9 @@ export const classifyReceiptValid1: ClassifyReceipt = { "status": "ok", "timestamp": "2026-03-18T12:00:00Z", "agent": "classifyagent.eth", - "request_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "request_hash": "sha256:2891386be77f313a4306376d7cb9aeb180c71d3e67bda4801a08957163659cca", "result_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222", - "result_cid": "bafybeiclassifyreceiptokexample0001", + "result_cid": "bafybeid4n6z3k4c5s7qk2j5v3u4w6y7p8r9s2t4v6x8z2b4n6c8d2e4f5a", "summary": "billing_issue", - "signature": "sigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "signature": "eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDpleGFtcGxlOmNvbW1vbnMjdjEuMS4wIn1fZXlKaGMzTWlPaUpqYjIxdFlXNWtiR0Y1WlhJdVpYUm9JbjBfcTgzUXhKOGRabDFzUjVuVjdtSzJwVDR5SDZ1VzljQjNhRTVnSjdkTDluUA" }; diff --git a/examples/v1.1.0/commons/clean/json/invalid/001-clean.request.invalid.json b/examples/v1.1.0/commons/clean/json/invalid/001-clean.request.invalid.json index 3953a83..4b1ea6e 100644 --- a/examples/v1.1.0/commons/clean/json/invalid/001-clean.request.invalid.json +++ b/examples/v1.1.0/commons/clean/json/invalid/001-clean.request.invalid.json @@ -1,8 +1,8 @@ { - "verb": "summarize", + "verb": "clean", "version": "1.1.0", "input": { "text": "This should be a string." }, - "mode": "compress" + "mode": "normalize" } diff --git a/examples/v1.1.0/commons/clean/json/valid/900-clean.receipt.valid.json b/examples/v1.1.0/commons/clean/json/valid/900-clean.receipt.valid.json index ada973f..c97731c 100644 --- a/examples/v1.1.0/commons/clean/json/valid/900-clean.receipt.valid.json +++ b/examples/v1.1.0/commons/clean/json/valid/900-clean.receipt.valid.json @@ -4,9 +4,9 @@ "status": "ok", "timestamp": "2026-03-18T12:00:00Z", "agent": "cleanagent.eth", - "request_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111", - "result_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222", - "result_cid": "bafybeicleanreceiptokexample0001", + "request_hash": "sha256:1ab9e81b984fcd1f6b8eed6362914864caa6a1a5ba41a86e3e9f23502cf6ba8b", + "result_hash": "sha256:d365fd590bc4a12f80c39a30ca1e6ba9296435ab52f03f7e36dc045b18220683", + "result_cid": "bafybeif2k6zv5n4r3q2w7x8c9m4p6t2y5u8i3o6p9a2s5d8f1g4h7j2k3l", "summary": "Normalized whitespace and casing artifacts to yield a canonical single-line string.", - "signature": "sigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "signature": "eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDpleGFtcGxlOmNvbW1vbnMjdjEuMS4wIn1fZXlKaGMzTWlPaUpqYjIxdFlXNWtiR0Y1WlhJdVpYUm9JbjBfcTgzUXhKOGRabDFzUjVuVjdtSzJwVDR5SDZ1VzljQjNhRTVnSjdkTDluUA" } diff --git a/examples/v1.1.0/commons/clean/ts/invalid/clean.request.invalid.1.ts b/examples/v1.1.0/commons/clean/ts/invalid/clean.request.invalid.1.ts index 9ca6e4e..205ea9d 100644 --- a/examples/v1.1.0/commons/clean/ts/invalid/clean.request.invalid.1.ts +++ b/examples/v1.1.0/commons/clean/ts/invalid/clean.request.invalid.1.ts @@ -1,10 +1,10 @@ -// INVALID clean.request #1 — wrong verb + wrong input type + unsupported mode +// INVALID clean.request #1 — input must be a string export const cleanRequestInvalid1: any = { - "verb": "summarize", + "verb": "clean", "version": "1.1.0", "input": { "text": "This should be a string." }, - "mode": "compress" + "mode": "normalize" }; diff --git a/examples/v1.1.0/commons/clean/ts/valid/clean.receipt.valid.1.ts b/examples/v1.1.0/commons/clean/ts/valid/clean.receipt.valid.1.ts index 276eb85..39598bd 100644 --- a/examples/v1.1.0/commons/clean/ts/valid/clean.receipt.valid.1.ts +++ b/examples/v1.1.0/commons/clean/ts/valid/clean.receipt.valid.1.ts @@ -20,9 +20,9 @@ export const cleanReceiptValid1: CleanReceipt = { "status": "ok", "timestamp": "2026-03-18T12:00:00Z", "agent": "cleanagent.eth", - "request_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "request_hash": "sha256:d365fd590bc4a12f80c39a30ca1e6ba9296435ab52f03f7e36dc045b18220683", "result_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222", - "result_cid": "bafybeicleanreceiptokexample0001", + "result_cid": "bafybeif2k6zv5n4r3q2w7x8c9m4p6t2y5u8i3o6p9a2s5d8f1g4h7j2k3l", "summary": "Normalized whitespace and casing artifacts to yield a canonical single-line string.", - "signature": "sigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "signature": "eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDpleGFtcGxlOmNvbW1vbnMjdjEuMS4wIn1fZXlKaGMzTWlPaUpqYjIxdFlXNWtiR0Y1WlhJdVpYUm9JbjBfcTgzUXhKOGRabDFzUjVuVjdtSzJwVDR5SDZ1VzljQjNhRTVnSjdkTDluUA" }; diff --git a/examples/v1.1.0/commons/clean/ts/valid/clean.receipt.valid.2.ts b/examples/v1.1.0/commons/clean/ts/valid/clean.receipt.valid.2.ts index c4400a0..b41dd67 100644 --- a/examples/v1.1.0/commons/clean/ts/valid/clean.receipt.valid.2.ts +++ b/examples/v1.1.0/commons/clean/ts/valid/clean.receipt.valid.2.ts @@ -8,7 +8,7 @@ export const cleanReceiptValid2: CleanReceipt = { "status": "error", "timestamp": "2026-03-18T12:05:00Z", "agent": "cleanagent.eth", - "request_hash": "sha256:3333333333333333333333333333333333333333333333333333333333333333", - "signature": "sigBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", + "request_hash": "sha256:d365fd590bc4a12f80c39a30ca1e6ba9296435ab52f03f7e36dc045b18220683", + "signature": "eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDpleGFtcGxlOmNvbW1vbnMjdjEuMS4wIn1fZXlKaGMzTWlPaUpqYjIxdFlXNWtiR0Y1WlhJdVpYUm9JbjBfcTgzUXhKOGRabDFzUjVuVjdtSzJwVDR5SDZ1VzljQjNhRTVnSjdkTDluUA", "error": "clean execution failed because the input could not be processed in the requested mode." }; diff --git a/examples/v1.1.0/commons/convert/json/invalid/001-convert.request.invalid.json b/examples/v1.1.0/commons/convert/json/invalid/001-convert.request.invalid.json index 8711499..834ffdb 100644 --- a/examples/v1.1.0/commons/convert/json/invalid/001-convert.request.invalid.json +++ b/examples/v1.1.0/commons/convert/json/invalid/001-convert.request.invalid.json @@ -1,8 +1,8 @@ { - "verb": "summarize", + "verb": "convert", "version": "1.1.0", "input": { "text": "This should be a string." }, - "mode": "pdf" + "mode": "markdown" } diff --git a/examples/v1.1.0/commons/convert/json/valid/900-convert.receipt.valid.json b/examples/v1.1.0/commons/convert/json/valid/900-convert.receipt.valid.json index d543725..8f5e18d 100644 --- a/examples/v1.1.0/commons/convert/json/valid/900-convert.receipt.valid.json +++ b/examples/v1.1.0/commons/convert/json/valid/900-convert.receipt.valid.json @@ -4,9 +4,9 @@ "status": "ok", "timestamp": "2026-03-18T12:00:00Z", "agent": "convertagent.eth", - "request_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111", - "result_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222", - "result_cid": "bafybeiconvertreceiptokexample0001", + "request_hash": "sha256:181ce27771ec5648a9ea5d9d4f27318b10482b8290bf55bc81958b46e20cfc1c", + "result_hash": "sha256:026d6dd0f707d6587f1bf5ae903279544efac2861da2db340aabdb125d1e1c53", + "result_cid": "bafybeig7m4n2q5w8x3c6v9b2n5m8k4j7h2g5f8d3s6a9p2o5i8u1y4t7r2", "summary": "Converted plain release notes into markdown sections suitable for documentation.", - "signature": "sigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "signature": "eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDpleGFtcGxlOmNvbW1vbnMjdjEuMS4wIn1fZXlKaGMzTWlPaUpqYjIxdFlXNWtiR0Y1WlhJdVpYUm9JbjBfcTgzUXhKOGRabDFzUjVuVjdtSzJwVDR5SDZ1VzljQjNhRTVnSjdkTDluUA" } diff --git a/examples/v1.1.0/commons/convert/ts/invalid/convert.request.invalid.1.ts b/examples/v1.1.0/commons/convert/ts/invalid/convert.request.invalid.1.ts index b45fa82..32b98fb 100644 --- a/examples/v1.1.0/commons/convert/ts/invalid/convert.request.invalid.1.ts +++ b/examples/v1.1.0/commons/convert/ts/invalid/convert.request.invalid.1.ts @@ -1,10 +1,10 @@ -// INVALID convert.request #1 — wrong verb + wrong input type + unsupported mode +// INVALID convert.request #1 — input must be a string export const convertRequestInvalid1: any = { - "verb": "summarize", + "verb": "convert", "version": "1.1.0", "input": { "text": "This should be a string." }, - "mode": "pdf" + "mode": "markdown" }; diff --git a/examples/v1.1.0/commons/convert/ts/valid/convert.receipt.valid.1.ts b/examples/v1.1.0/commons/convert/ts/valid/convert.receipt.valid.1.ts index 882c30f..5e1e6a4 100644 --- a/examples/v1.1.0/commons/convert/ts/valid/convert.receipt.valid.1.ts +++ b/examples/v1.1.0/commons/convert/ts/valid/convert.receipt.valid.1.ts @@ -20,9 +20,9 @@ export const convertReceiptValid1: ConvertReceipt = { "status": "ok", "timestamp": "2026-03-18T12:00:00Z", "agent": "convertagent.eth", - "request_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "request_hash": "sha256:026d6dd0f707d6587f1bf5ae903279544efac2861da2db340aabdb125d1e1c53", "result_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222", - "result_cid": "bafybeiconvertreceiptokexample0001", + "result_cid": "bafybeig7m4n2q5w8x3c6v9b2n5m8k4j7h2g5f8d3s6a9p2o5i8u1y4t7r2", "summary": "Converted plain release notes into markdown sections suitable for documentation.", - "signature": "sigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "signature": "eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDpleGFtcGxlOmNvbW1vbnMjdjEuMS4wIn1fZXlKaGMzTWlPaUpqYjIxdFlXNWtiR0Y1WlhJdVpYUm9JbjBfcTgzUXhKOGRabDFzUjVuVjdtSzJwVDR5SDZ1VzljQjNhRTVnSjdkTDluUA" }; diff --git a/examples/v1.1.0/commons/convert/ts/valid/convert.receipt.valid.2.ts b/examples/v1.1.0/commons/convert/ts/valid/convert.receipt.valid.2.ts index 9907d2f..6c39b2b 100644 --- a/examples/v1.1.0/commons/convert/ts/valid/convert.receipt.valid.2.ts +++ b/examples/v1.1.0/commons/convert/ts/valid/convert.receipt.valid.2.ts @@ -8,7 +8,7 @@ export const convertReceiptValid2: ConvertReceipt = { "status": "error", "timestamp": "2026-03-18T12:05:00Z", "agent": "convertagent.eth", - "request_hash": "sha256:3333333333333333333333333333333333333333333333333333333333333333", - "signature": "sigBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", + "request_hash": "sha256:026d6dd0f707d6587f1bf5ae903279544efac2861da2db340aabdb125d1e1c53", + "signature": "eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDpleGFtcGxlOmNvbW1vbnMjdjEuMS4wIn1fZXlKaGMzTWlPaUpqYjIxdFlXNWtiR0Y1WlhJdVpYUm9JbjBfcTgzUXhKOGRabDFzUjVuVjdtSzJwVDR5SDZ1VzljQjNhRTVnSjdkTDluUA", "error": "convert execution failed because the input could not be processed in the requested mode." }; diff --git a/examples/v1.1.0/commons/describe/json/invalid/001-describe.request.invalid.json b/examples/v1.1.0/commons/describe/json/invalid/001-describe.request.invalid.json index 1825b6e..be9acab 100644 --- a/examples/v1.1.0/commons/describe/json/invalid/001-describe.request.invalid.json +++ b/examples/v1.1.0/commons/describe/json/invalid/001-describe.request.invalid.json @@ -1,8 +1,8 @@ { - "verb": "summarize", + "verb": "describe", "version": "1.1.0", "input": { "text": "This should be a string." }, - "mode": "poetic" + "mode": "plain" } diff --git a/examples/v1.1.0/commons/describe/json/valid/900-describe.receipt.valid.json b/examples/v1.1.0/commons/describe/json/valid/900-describe.receipt.valid.json index fee5014..daee4ba 100644 --- a/examples/v1.1.0/commons/describe/json/valid/900-describe.receipt.valid.json +++ b/examples/v1.1.0/commons/describe/json/valid/900-describe.receipt.valid.json @@ -4,9 +4,9 @@ "status": "ok", "timestamp": "2026-03-18T12:00:00Z", "agent": "describeagent.eth", - "request_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111", - "result_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222", - "result_cid": "bafybeidescribereceiptokexample0001", + "request_hash": "sha256:c5e9dd3deb89be70002136dd155e96d01acf47b43e75a04248c8bc8cd17df9f3", + "result_hash": "sha256:6781bfb1fef330cc182ed5f77f72e5474a2e6370995a34d0b36d4c7c4a239b88", + "result_cid": "bafybeib3m6n9q2w5x8c1v4b7n2m5k8j1h4g7f2d5s8a1p4o7i2u5y8t1r4", "summary": "A compact interface card displaying whether a receipt succeeded and which agent signed it.", - "signature": "sigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "signature": "eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDpleGFtcGxlOmNvbW1vbnMjdjEuMS4wIn1fZXlKaGMzTWlPaUpqYjIxdFlXNWtiR0Y1WlhJdVpYUm9JbjBfcTgzUXhKOGRabDFzUjVuVjdtSzJwVDR5SDZ1VzljQjNhRTVnSjdkTDluUA" } diff --git a/examples/v1.1.0/commons/describe/ts/invalid/describe.request.invalid.1.ts b/examples/v1.1.0/commons/describe/ts/invalid/describe.request.invalid.1.ts index 98fb19a..8307db5 100644 --- a/examples/v1.1.0/commons/describe/ts/invalid/describe.request.invalid.1.ts +++ b/examples/v1.1.0/commons/describe/ts/invalid/describe.request.invalid.1.ts @@ -1,10 +1,10 @@ -// INVALID describe.request #1 — wrong verb + wrong input type + unsupported mode +// INVALID describe.request #1 — input must be a string export const describeRequestInvalid1: any = { - "verb": "summarize", + "verb": "describe", "version": "1.1.0", "input": { "text": "This should be a string." }, - "mode": "poetic" + "mode": "plain" }; diff --git a/examples/v1.1.0/commons/describe/ts/valid/describe.receipt.valid.1.ts b/examples/v1.1.0/commons/describe/ts/valid/describe.receipt.valid.1.ts index e15f4b6..052237b 100644 --- a/examples/v1.1.0/commons/describe/ts/valid/describe.receipt.valid.1.ts +++ b/examples/v1.1.0/commons/describe/ts/valid/describe.receipt.valid.1.ts @@ -20,9 +20,9 @@ export const describeReceiptValid1: DescribeReceipt = { "status": "ok", "timestamp": "2026-03-18T12:00:00Z", "agent": "describeagent.eth", - "request_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "request_hash": "sha256:6781bfb1fef330cc182ed5f77f72e5474a2e6370995a34d0b36d4c7c4a239b88", "result_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222", - "result_cid": "bafybeidescribereceiptokexample0001", + "result_cid": "bafybeib3m6n9q2w5x8c1v4b7n2m5k8j1h4g7f2d5s8a1p4o7i2u5y8t1r4", "summary": "A compact interface card displaying whether a receipt succeeded and which agent signed it.", - "signature": "sigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "signature": "eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDpleGFtcGxlOmNvbW1vbnMjdjEuMS4wIn1fZXlKaGMzTWlPaUpqYjIxdFlXNWtiR0Y1WlhJdVpYUm9JbjBfcTgzUXhKOGRabDFzUjVuVjdtSzJwVDR5SDZ1VzljQjNhRTVnSjdkTDluUA" }; diff --git a/examples/v1.1.0/commons/describe/ts/valid/describe.receipt.valid.2.ts b/examples/v1.1.0/commons/describe/ts/valid/describe.receipt.valid.2.ts index 8f4dacf..5422a86 100644 --- a/examples/v1.1.0/commons/describe/ts/valid/describe.receipt.valid.2.ts +++ b/examples/v1.1.0/commons/describe/ts/valid/describe.receipt.valid.2.ts @@ -8,7 +8,7 @@ export const describeReceiptValid2: DescribeReceipt = { "status": "error", "timestamp": "2026-03-18T12:05:00Z", "agent": "describeagent.eth", - "request_hash": "sha256:3333333333333333333333333333333333333333333333333333333333333333", - "signature": "sigBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", + "request_hash": "sha256:6781bfb1fef330cc182ed5f77f72e5474a2e6370995a34d0b36d4c7c4a239b88", + "signature": "eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDpleGFtcGxlOmNvbW1vbnMjdjEuMS4wIn1fZXlKaGMzTWlPaUpqYjIxdFlXNWtiR0Y1WlhJdVpYUm9JbjBfcTgzUXhKOGRabDFzUjVuVjdtSzJwVDR5SDZ1VzljQjNhRTVnSjdkTDluUA", "error": "describe execution failed because the input could not be processed in the requested mode." }; diff --git a/examples/v1.1.0/commons/explain/json/invalid/001-explain.request.invalid.json b/examples/v1.1.0/commons/explain/json/invalid/001-explain.request.invalid.json index 9444c4a..7975c4c 100644 --- a/examples/v1.1.0/commons/explain/json/invalid/001-explain.request.invalid.json +++ b/examples/v1.1.0/commons/explain/json/invalid/001-explain.request.invalid.json @@ -1,8 +1,8 @@ { - "verb": "summarize", + "verb": "explain", "version": "1.1.0", "input": { "text": "This should be a string." }, - "mode": "legalese" + "mode": "step-by-step" } diff --git a/examples/v1.1.0/commons/explain/json/valid/900-explain.receipt.valid.json b/examples/v1.1.0/commons/explain/json/valid/900-explain.receipt.valid.json index 7949597..f8cfdc9 100644 --- a/examples/v1.1.0/commons/explain/json/valid/900-explain.receipt.valid.json +++ b/examples/v1.1.0/commons/explain/json/valid/900-explain.receipt.valid.json @@ -4,9 +4,9 @@ "status": "ok", "timestamp": "2026-03-18T12:00:00Z", "agent": "explainagent.eth", - "request_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111", - "result_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222", - "result_cid": "bafybeiexplainreceiptokexample0001", + "request_hash": "sha256:1868e20661be7262f123fdf9188623ac6cc36f4ba845d6f7848d7ee36be5ae55", + "result_hash": "sha256:edb99eeb8a8eb64e337ba6a49d7ea7dfa167fdd00b3a7fbdd5d45f587cf138be", + "result_cid": "bafybeic6n3q5w7x9c2v4b6n8m1k3j5h7g9f2d4s6a8p1o3i5u7y9t2r4e6", "summary": "Hash the original request, compare it to request_hash, then verify the detached signature under the agent identity before trusting the summary.", - "signature": "sigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "signature": "eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDpleGFtcGxlOmNvbW1vbnMjdjEuMS4wIn1fZXlKaGMzTWlPaUpqYjIxdFlXNWtiR0Y1WlhJdVpYUm9JbjBfcTgzUXhKOGRabDFzUjVuVjdtSzJwVDR5SDZ1VzljQjNhRTVnSjdkTDluUA" } diff --git a/examples/v1.1.0/commons/explain/ts/invalid/explain.request.invalid.1.ts b/examples/v1.1.0/commons/explain/ts/invalid/explain.request.invalid.1.ts index 554eb9d..4b300a3 100644 --- a/examples/v1.1.0/commons/explain/ts/invalid/explain.request.invalid.1.ts +++ b/examples/v1.1.0/commons/explain/ts/invalid/explain.request.invalid.1.ts @@ -1,10 +1,10 @@ -// INVALID explain.request #1 — wrong verb + wrong input type + unsupported mode +// INVALID explain.request #1 — input must be a string export const explainRequestInvalid1: any = { - "verb": "summarize", + "verb": "explain", "version": "1.1.0", "input": { "text": "This should be a string." }, - "mode": "legalese" + "mode": "step-by-step" }; diff --git a/examples/v1.1.0/commons/explain/ts/valid/explain.receipt.valid.1.ts b/examples/v1.1.0/commons/explain/ts/valid/explain.receipt.valid.1.ts index 299a1e8..461ad12 100644 --- a/examples/v1.1.0/commons/explain/ts/valid/explain.receipt.valid.1.ts +++ b/examples/v1.1.0/commons/explain/ts/valid/explain.receipt.valid.1.ts @@ -20,9 +20,9 @@ export const explainReceiptValid1: ExplainReceipt = { "status": "ok", "timestamp": "2026-03-18T12:00:00Z", "agent": "explainagent.eth", - "request_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "request_hash": "sha256:edb99eeb8a8eb64e337ba6a49d7ea7dfa167fdd00b3a7fbdd5d45f587cf138be", "result_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222", - "result_cid": "bafybeiexplainreceiptokexample0001", + "result_cid": "bafybeic6n3q5w7x9c2v4b6n8m1k3j5h7g9f2d4s6a8p1o3i5u7y9t2r4e6", "summary": "Hash the original request, compare it to request_hash, then verify the detached signature under the agent identity before trusting the summary.", - "signature": "sigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "signature": "eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDpleGFtcGxlOmNvbW1vbnMjdjEuMS4wIn1fZXlKaGMzTWlPaUpqYjIxdFlXNWtiR0Y1WlhJdVpYUm9JbjBfcTgzUXhKOGRabDFzUjVuVjdtSzJwVDR5SDZ1VzljQjNhRTVnSjdkTDluUA" }; diff --git a/examples/v1.1.0/commons/explain/ts/valid/explain.receipt.valid.2.ts b/examples/v1.1.0/commons/explain/ts/valid/explain.receipt.valid.2.ts index 8639875..0588c66 100644 --- a/examples/v1.1.0/commons/explain/ts/valid/explain.receipt.valid.2.ts +++ b/examples/v1.1.0/commons/explain/ts/valid/explain.receipt.valid.2.ts @@ -8,7 +8,7 @@ export const explainReceiptValid2: ExplainReceipt = { "status": "error", "timestamp": "2026-03-18T12:05:00Z", "agent": "explainagent.eth", - "request_hash": "sha256:3333333333333333333333333333333333333333333333333333333333333333", - "signature": "sigBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", + "request_hash": "sha256:edb99eeb8a8eb64e337ba6a49d7ea7dfa167fdd00b3a7fbdd5d45f587cf138be", + "signature": "eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDpleGFtcGxlOmNvbW1vbnMjdjEuMS4wIn1fZXlKaGMzTWlPaUpqYjIxdFlXNWtiR0Y1WlhJdVpYUm9JbjBfcTgzUXhKOGRabDFzUjVuVjdtSzJwVDR5SDZ1VzljQjNhRTVnSjdkTDluUA", "error": "explain execution failed because the input could not be processed in the requested mode." }; diff --git a/examples/v1.1.0/commons/fetch/json/invalid/001-fetch.request.invalid.json b/examples/v1.1.0/commons/fetch/json/invalid/001-fetch.request.invalid.json index b73dc92..8ee1fb2 100644 --- a/examples/v1.1.0/commons/fetch/json/invalid/001-fetch.request.invalid.json +++ b/examples/v1.1.0/commons/fetch/json/invalid/001-fetch.request.invalid.json @@ -1,8 +1,8 @@ { - "verb": "summarize", + "verb": "fetch", "version": "1.1.0", "input": { "text": "This should be a string." }, - "mode": "markdown" + "mode": "json" } diff --git a/examples/v1.1.0/commons/fetch/json/valid/900-fetch.receipt.valid.json b/examples/v1.1.0/commons/fetch/json/valid/900-fetch.receipt.valid.json index c8d2e68..d0f3d13 100644 --- a/examples/v1.1.0/commons/fetch/json/valid/900-fetch.receipt.valid.json +++ b/examples/v1.1.0/commons/fetch/json/valid/900-fetch.receipt.valid.json @@ -4,9 +4,9 @@ "status": "ok", "timestamp": "2026-03-18T12:00:00Z", "agent": "fetchagent.eth", - "request_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111", - "result_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222", - "result_cid": "bafybeifetchreceiptokexample0001", + "request_hash": "sha256:b187a51f7d7bb231daa603efd3a43ed46e85a64d670723f9ea2176c960d11ee1", + "result_hash": "sha256:91a30e81d19f6392ec15eabfb63e8658a3e52a41ee01c7c3a9adcb75e560239a", + "result_cid": "bafybeid9q2w4x6c8v1b3n5m7k9j2h4g6f8d1s3a5p7o9i2u4y6t8r1e3w5", "summary": "Fetched a JSON status document describing service health, schema tag, and signer availability.", - "signature": "sigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "signature": "eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDpleGFtcGxlOmNvbW1vbnMjdjEuMS4wIn1fZXlKaGMzTWlPaUpqYjIxdFlXNWtiR0Y1WlhJdVpYUm9JbjBfcTgzUXhKOGRabDFzUjVuVjdtSzJwVDR5SDZ1VzljQjNhRTVnSjdkTDluUA" } diff --git a/examples/v1.1.0/commons/fetch/ts/invalid/fetch.request.invalid.1.ts b/examples/v1.1.0/commons/fetch/ts/invalid/fetch.request.invalid.1.ts index a8633aa..6d7cf34 100644 --- a/examples/v1.1.0/commons/fetch/ts/invalid/fetch.request.invalid.1.ts +++ b/examples/v1.1.0/commons/fetch/ts/invalid/fetch.request.invalid.1.ts @@ -1,10 +1,10 @@ -// INVALID fetch.request #1 — wrong verb + wrong input type + unsupported mode +// INVALID fetch.request #1 — input must be a string export const fetchRequestInvalid1: any = { - "verb": "summarize", + "verb": "fetch", "version": "1.1.0", "input": { "text": "This should be a string." }, - "mode": "markdown" + "mode": "json" }; diff --git a/examples/v1.1.0/commons/fetch/ts/valid/fetch.receipt.valid.1.ts b/examples/v1.1.0/commons/fetch/ts/valid/fetch.receipt.valid.1.ts index 4df65ff..410f15e 100644 --- a/examples/v1.1.0/commons/fetch/ts/valid/fetch.receipt.valid.1.ts +++ b/examples/v1.1.0/commons/fetch/ts/valid/fetch.receipt.valid.1.ts @@ -20,9 +20,9 @@ export const fetchReceiptValid1: FetchReceipt = { "status": "ok", "timestamp": "2026-03-18T12:00:00Z", "agent": "fetchagent.eth", - "request_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "request_hash": "sha256:91a30e81d19f6392ec15eabfb63e8658a3e52a41ee01c7c3a9adcb75e560239a", "result_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222", - "result_cid": "bafybeifetchreceiptokexample0001", + "result_cid": "bafybeid9q2w4x6c8v1b3n5m7k9j2h4g6f8d1s3a5p7o9i2u4y6t8r1e3w5", "summary": "Fetched a JSON status document describing service health, schema tag, and signer availability.", - "signature": "sigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "signature": "eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDpleGFtcGxlOmNvbW1vbnMjdjEuMS4wIn1fZXlKaGMzTWlPaUpqYjIxdFlXNWtiR0Y1WlhJdVpYUm9JbjBfcTgzUXhKOGRabDFzUjVuVjdtSzJwVDR5SDZ1VzljQjNhRTVnSjdkTDluUA" }; diff --git a/examples/v1.1.0/commons/fetch/ts/valid/fetch.receipt.valid.2.ts b/examples/v1.1.0/commons/fetch/ts/valid/fetch.receipt.valid.2.ts index cca550c..d875637 100644 --- a/examples/v1.1.0/commons/fetch/ts/valid/fetch.receipt.valid.2.ts +++ b/examples/v1.1.0/commons/fetch/ts/valid/fetch.receipt.valid.2.ts @@ -8,7 +8,7 @@ export const fetchReceiptValid2: FetchReceipt = { "status": "error", "timestamp": "2026-03-18T12:05:00Z", "agent": "fetchagent.eth", - "request_hash": "sha256:3333333333333333333333333333333333333333333333333333333333333333", - "signature": "sigBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", + "request_hash": "sha256:91a30e81d19f6392ec15eabfb63e8658a3e52a41ee01c7c3a9adcb75e560239a", + "signature": "eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDpleGFtcGxlOmNvbW1vbnMjdjEuMS4wIn1fZXlKaGMzTWlPaUpqYjIxdFlXNWtiR0Y1WlhJdVpYUm9JbjBfcTgzUXhKOGRabDFzUjVuVjdtSzJwVDR5SDZ1VzljQjNhRTVnSjdkTDluUA", "error": "fetch execution failed because the input could not be processed in the requested mode." }; diff --git a/examples/v1.1.0/commons/format/json/invalid/001-format.request.invalid.json b/examples/v1.1.0/commons/format/json/invalid/001-format.request.invalid.json index a5655ac..cc21603 100644 --- a/examples/v1.1.0/commons/format/json/invalid/001-format.request.invalid.json +++ b/examples/v1.1.0/commons/format/json/invalid/001-format.request.invalid.json @@ -1,8 +1,8 @@ { - "verb": "summarize", + "verb": "format", "version": "1.1.0", "input": { "text": "This should be a string." }, - "mode": "yaml" + "mode": "markdown" } diff --git a/examples/v1.1.0/commons/format/json/valid/900-format.receipt.valid.json b/examples/v1.1.0/commons/format/json/valid/900-format.receipt.valid.json index 9a1a22e..c6f308c 100644 --- a/examples/v1.1.0/commons/format/json/valid/900-format.receipt.valid.json +++ b/examples/v1.1.0/commons/format/json/valid/900-format.receipt.valid.json @@ -4,9 +4,9 @@ "status": "ok", "timestamp": "2026-03-18T12:00:00Z", "agent": "formatagent.eth", - "request_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111", - "result_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222", - "result_cid": "bafybeiformatreceiptokexample0001", + "request_hash": "sha256:9e76b0f260c9792e35d9f4e79fd818133485a74feca050093986efe5e1b41f76", + "result_hash": "sha256:4f5060c2cbf9d2b996a0d39a852fd4a27b03eaa45d6946aee758c84a149442cc", + "result_cid": "bafybeie5w8x2c4v6b9n3m5k7j1h3g5f7d9s2a4p6o8i1u3y5t7r9e2w4q6", "summary": "Formatted the checklist into readable markdown with stable bullet structure.", - "signature": "sigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "signature": "eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDpleGFtcGxlOmNvbW1vbnMjdjEuMS4wIn1fZXlKaGMzTWlPaUpqYjIxdFlXNWtiR0Y1WlhJdVpYUm9JbjBfcTgzUXhKOGRabDFzUjVuVjdtSzJwVDR5SDZ1VzljQjNhRTVnSjdkTDluUA" } diff --git a/examples/v1.1.0/commons/format/ts/invalid/format.request.invalid.1.ts b/examples/v1.1.0/commons/format/ts/invalid/format.request.invalid.1.ts index 12f01b0..37e75b9 100644 --- a/examples/v1.1.0/commons/format/ts/invalid/format.request.invalid.1.ts +++ b/examples/v1.1.0/commons/format/ts/invalid/format.request.invalid.1.ts @@ -1,10 +1,10 @@ -// INVALID format.request #1 — wrong verb + wrong input type + unsupported mode +// INVALID format.request #1 — input must be a string export const formatRequestInvalid1: any = { - "verb": "summarize", + "verb": "format", "version": "1.1.0", "input": { "text": "This should be a string." }, - "mode": "yaml" + "mode": "markdown" }; diff --git a/examples/v1.1.0/commons/format/ts/valid/format.receipt.valid.1.ts b/examples/v1.1.0/commons/format/ts/valid/format.receipt.valid.1.ts index c354bdd..fed9192 100644 --- a/examples/v1.1.0/commons/format/ts/valid/format.receipt.valid.1.ts +++ b/examples/v1.1.0/commons/format/ts/valid/format.receipt.valid.1.ts @@ -20,9 +20,9 @@ export const formatReceiptValid1: FormatReceipt = { "status": "ok", "timestamp": "2026-03-18T12:00:00Z", "agent": "formatagent.eth", - "request_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "request_hash": "sha256:4f5060c2cbf9d2b996a0d39a852fd4a27b03eaa45d6946aee758c84a149442cc", "result_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222", - "result_cid": "bafybeiformatreceiptokexample0001", + "result_cid": "bafybeie5w8x2c4v6b9n3m5k7j1h3g5f7d9s2a4p6o8i1u3y5t7r9e2w4q6", "summary": "Formatted the checklist into readable markdown with stable bullet structure.", - "signature": "sigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "signature": "eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDpleGFtcGxlOmNvbW1vbnMjdjEuMS4wIn1fZXlKaGMzTWlPaUpqYjIxdFlXNWtiR0Y1WlhJdVpYUm9JbjBfcTgzUXhKOGRabDFzUjVuVjdtSzJwVDR5SDZ1VzljQjNhRTVnSjdkTDluUA" }; diff --git a/examples/v1.1.0/commons/format/ts/valid/format.receipt.valid.2.ts b/examples/v1.1.0/commons/format/ts/valid/format.receipt.valid.2.ts index 087115b..914faf6 100644 --- a/examples/v1.1.0/commons/format/ts/valid/format.receipt.valid.2.ts +++ b/examples/v1.1.0/commons/format/ts/valid/format.receipt.valid.2.ts @@ -8,7 +8,7 @@ export const formatReceiptValid2: FormatReceipt = { "status": "error", "timestamp": "2026-03-18T12:05:00Z", "agent": "formatagent.eth", - "request_hash": "sha256:3333333333333333333333333333333333333333333333333333333333333333", - "signature": "sigBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", + "request_hash": "sha256:4f5060c2cbf9d2b996a0d39a852fd4a27b03eaa45d6946aee758c84a149442cc", + "signature": "eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDpleGFtcGxlOmNvbW1vbnMjdjEuMS4wIn1fZXlKaGMzTWlPaUpqYjIxdFlXNWtiR0Y1WlhJdVpYUm9JbjBfcTgzUXhKOGRabDFzUjVuVjdtSzJwVDR5SDZ1VzljQjNhRTVnSjdkTDluUA", "error": "format execution failed because the input could not be processed in the requested mode." }; diff --git a/examples/v1.1.0/commons/parse/json/invalid/001-parse.request.invalid.json b/examples/v1.1.0/commons/parse/json/invalid/001-parse.request.invalid.json index 5ad2a3a..ebd48a8 100644 --- a/examples/v1.1.0/commons/parse/json/invalid/001-parse.request.invalid.json +++ b/examples/v1.1.0/commons/parse/json/invalid/001-parse.request.invalid.json @@ -1,8 +1,8 @@ { - "verb": "summarize", + "verb": "parse", "version": "1.1.0", "input": { "text": "This should be a string." }, - "mode": "xml" + "mode": "json" } diff --git a/examples/v1.1.0/commons/parse/json/valid/900-parse.receipt.valid.json b/examples/v1.1.0/commons/parse/json/valid/900-parse.receipt.valid.json index 4c82647..63ac4ba 100644 --- a/examples/v1.1.0/commons/parse/json/valid/900-parse.receipt.valid.json +++ b/examples/v1.1.0/commons/parse/json/valid/900-parse.receipt.valid.json @@ -4,9 +4,9 @@ "status": "ok", "timestamp": "2026-03-18T12:00:00Z", "agent": "parseagent.eth", - "request_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111", - "result_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222", - "result_cid": "bafybeiparsereceiptokexample0001", + "request_hash": "sha256:e1a3c3f9b6fc5f009d3fac7b6b87fd1907db45bd7d763827b478139d3c0223fe", + "result_hash": "sha256:557d62ba27057aac32822476353d461f8b81b6c91f782b292ff382c8df143bfb", + "result_cid": "bafybeif8x1c3v5b7n9m2k4j6h8g1f3d5s7a9p2o4i6u8y1t3r5e7w9q2z4", "summary": "Extracted top-level fields network, status, and height from the JSON payload.", - "signature": "sigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "signature": "eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDpleGFtcGxlOmNvbW1vbnMjdjEuMS4wIn1fZXlKaGMzTWlPaUpqYjIxdFlXNWtiR0Y1WlhJdVpYUm9JbjBfcTgzUXhKOGRabDFzUjVuVjdtSzJwVDR5SDZ1VzljQjNhRTVnSjdkTDluUA" } diff --git a/examples/v1.1.0/commons/parse/ts/invalid/parse.request.invalid.1.ts b/examples/v1.1.0/commons/parse/ts/invalid/parse.request.invalid.1.ts index 4f628fc..1bf5df6 100644 --- a/examples/v1.1.0/commons/parse/ts/invalid/parse.request.invalid.1.ts +++ b/examples/v1.1.0/commons/parse/ts/invalid/parse.request.invalid.1.ts @@ -1,10 +1,10 @@ -// INVALID parse.request #1 — wrong verb + wrong input type + unsupported mode +// INVALID parse.request #1 — input must be a string export const parseRequestInvalid1: any = { - "verb": "summarize", + "verb": "parse", "version": "1.1.0", "input": { "text": "This should be a string." }, - "mode": "xml" + "mode": "json" }; diff --git a/examples/v1.1.0/commons/parse/ts/valid/parse.receipt.valid.1.ts b/examples/v1.1.0/commons/parse/ts/valid/parse.receipt.valid.1.ts index f9318e0..66c00bd 100644 --- a/examples/v1.1.0/commons/parse/ts/valid/parse.receipt.valid.1.ts +++ b/examples/v1.1.0/commons/parse/ts/valid/parse.receipt.valid.1.ts @@ -20,9 +20,9 @@ export const parseReceiptValid1: ParseReceipt = { "status": "ok", "timestamp": "2026-03-18T12:00:00Z", "agent": "parseagent.eth", - "request_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "request_hash": "sha256:557d62ba27057aac32822476353d461f8b81b6c91f782b292ff382c8df143bfb", "result_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222", - "result_cid": "bafybeiparsereceiptokexample0001", + "result_cid": "bafybeif8x1c3v5b7n9m2k4j6h8g1f3d5s7a9p2o4i6u8y1t3r5e7w9q2z4", "summary": "Extracted top-level fields network, status, and height from the JSON payload.", - "signature": "sigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "signature": "eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDpleGFtcGxlOmNvbW1vbnMjdjEuMS4wIn1fZXlKaGMzTWlPaUpqYjIxdFlXNWtiR0Y1WlhJdVpYUm9JbjBfcTgzUXhKOGRabDFzUjVuVjdtSzJwVDR5SDZ1VzljQjNhRTVnSjdkTDluUA" }; diff --git a/examples/v1.1.0/commons/parse/ts/valid/parse.receipt.valid.2.ts b/examples/v1.1.0/commons/parse/ts/valid/parse.receipt.valid.2.ts index 13cf5ff..d9101be 100644 --- a/examples/v1.1.0/commons/parse/ts/valid/parse.receipt.valid.2.ts +++ b/examples/v1.1.0/commons/parse/ts/valid/parse.receipt.valid.2.ts @@ -8,7 +8,7 @@ export const parseReceiptValid2: ParseReceipt = { "status": "error", "timestamp": "2026-03-18T12:05:00Z", "agent": "parseagent.eth", - "request_hash": "sha256:3333333333333333333333333333333333333333333333333333333333333333", - "signature": "sigBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", + "request_hash": "sha256:557d62ba27057aac32822476353d461f8b81b6c91f782b292ff382c8df143bfb", + "signature": "eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDpleGFtcGxlOmNvbW1vbnMjdjEuMS4wIn1fZXlKaGMzTWlPaUpqYjIxdFlXNWtiR0Y1WlhJdVpYUm9JbjBfcTgzUXhKOGRabDFzUjVuVjdtSzJwVDR5SDZ1VzljQjNhRTVnSjdkTDluUA", "error": "parse execution failed because the input could not be processed in the requested mode." }; diff --git a/examples/v1.1.0/commons/summarize/json/invalid/001-summarize.request.invalid.json b/examples/v1.1.0/commons/summarize/json/invalid/001-summarize.request.invalid.json index 25339f6..8927899 100644 --- a/examples/v1.1.0/commons/summarize/json/invalid/001-summarize.request.invalid.json +++ b/examples/v1.1.0/commons/summarize/json/invalid/001-summarize.request.invalid.json @@ -1,8 +1,8 @@ { - "verb": "analyze", + "verb": "summarize", "version": "1.1.0", "input": { "text": "This should be a string." }, - "mode": "tweet" + "mode": "brief" } diff --git a/examples/v1.1.0/commons/summarize/json/valid/900-summarize.receipt.valid.json b/examples/v1.1.0/commons/summarize/json/valid/900-summarize.receipt.valid.json index aaf86b8..e042df3 100644 --- a/examples/v1.1.0/commons/summarize/json/valid/900-summarize.receipt.valid.json +++ b/examples/v1.1.0/commons/summarize/json/valid/900-summarize.receipt.valid.json @@ -4,9 +4,9 @@ "status": "ok", "timestamp": "2026-03-18T12:00:00Z", "agent": "summarizeagent.eth", - "request_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111", - "result_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222", - "result_cid": "bafybeisummarizereceiptokexample0001", + "request_hash": "sha256:39eaa86e8b5f49820cecfcc9fc4c59eac6ce0429a2d2dc9d04940ba5127cd1aa", + "result_hash": "sha256:8c13f11a1c87bc44517553ea36973b2be036f92f8b243d9cc412804d768f22c1", + "result_cid": "bafybeig2c5v7b9n1m3k5j7h9g2f4d6s8a1p3o5i7u9y2t4r6e8w1q3z5x7", "summary": "Commons v1.1.0 makes requests smaller and receipts easier to verify while preserving stable verb semantics.", - "signature": "sigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "signature": "eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDpleGFtcGxlOmNvbW1vbnMjdjEuMS4wIn1fZXlKaGMzTWlPaUpqYjIxdFlXNWtiR0Y1WlhJdVpYUm9JbjBfcTgzUXhKOGRabDFzUjVuVjdtSzJwVDR5SDZ1VzljQjNhRTVnSjdkTDluUA" } diff --git a/examples/v1.1.0/commons/summarize/ts/invalid/summarize.request.invalid.1.ts b/examples/v1.1.0/commons/summarize/ts/invalid/summarize.request.invalid.1.ts index b80efbc..e5a85ec 100644 --- a/examples/v1.1.0/commons/summarize/ts/invalid/summarize.request.invalid.1.ts +++ b/examples/v1.1.0/commons/summarize/ts/invalid/summarize.request.invalid.1.ts @@ -1,10 +1,10 @@ -// INVALID summarize.request #1 — wrong verb + wrong input type + unsupported mode +// INVALID summarize.request #1 — input must be a string export const summarizeRequestInvalid1: any = { - "verb": "analyze", + "verb": "summarize", "version": "1.1.0", "input": { "text": "This should be a string." }, - "mode": "tweet" + "mode": "brief" }; diff --git a/examples/v1.1.0/commons/summarize/ts/invalid/summarize.request.invalid.ts b/examples/v1.1.0/commons/summarize/ts/invalid/summarize.request.invalid.ts index 190f999..50cda42 100644 --- a/examples/v1.1.0/commons/summarize/ts/invalid/summarize.request.invalid.ts +++ b/examples/v1.1.0/commons/summarize/ts/invalid/summarize.request.invalid.ts @@ -1,4 +1,4 @@ -// INVALID summarize.request aggregate example +// INVALID summarize.request aggregate example — input must be a string export const summarizeRequestInvalid: any = { "verb": "summarize", diff --git a/examples/v1.1.0/commons/summarize/ts/summarize.receipt.examples.ts b/examples/v1.1.0/commons/summarize/ts/summarize.receipt.examples.ts index be1c903..45803e4 100644 --- a/examples/v1.1.0/commons/summarize/ts/summarize.receipt.examples.ts +++ b/examples/v1.1.0/commons/summarize/ts/summarize.receipt.examples.ts @@ -20,11 +20,11 @@ export const validSummarizeReceiptExample: SummarizeReceipt = { "status": "ok", "timestamp": "2026-03-18T12:00:00Z", "agent": "summarizeagent.eth", - "request_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "request_hash": "sha256:8c13f11a1c87bc44517553ea36973b2be036f92f8b243d9cc412804d768f22c1", "result_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222", - "result_cid": "bafybeisummarizereceiptokexample0001", + "result_cid": "bafybeig2c5v7b9n1m3k5j7h9g2f4d6s8a1p3o5i7u9y2t4r6e8w1q3z5x7", "summary": "Commons v1.1.0 makes requests smaller and receipts easier to verify while preserving stable verb semantics.", - "signature": "sigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "signature": "eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDpleGFtcGxlOmNvbW1vbnMjdjEuMS4wIn1fZXlKaGMzTWlPaUpqYjIxdFlXNWtiR0Y1WlhJdVpYUm9JbjBfcTgzUXhKOGRabDFzUjVuVjdtSzJwVDR5SDZ1VzljQjNhRTVnSjdkTDluUA" }; export const invalidSummarizeReceiptExample: any = { @@ -33,6 +33,6 @@ export const invalidSummarizeReceiptExample: any = { "status": "ok", "timestamp": "not-a-date", "request_hash": "sha256:xyz", - "signature": "short", + "signature": "eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDpleGFtcGxlOmNvbW1vbnMjdjEuMS4wIn1fZXlKaGMzTWlPaUpqYjIxdFlXNWtiR0Y1WlhJdVpYUm9JbjBfcTgzUXhKOGRabDFzUjVuVjdtSzJwVDR5SDZ1VzljQjNhRTVnSjdkTDluUA", "error": "ok receipts should not rely on error only" }; diff --git a/examples/v1.1.0/commons/summarize/ts/valid/summarize.receipt.valid.1.ts b/examples/v1.1.0/commons/summarize/ts/valid/summarize.receipt.valid.1.ts index 4530c59..c644ad4 100644 --- a/examples/v1.1.0/commons/summarize/ts/valid/summarize.receipt.valid.1.ts +++ b/examples/v1.1.0/commons/summarize/ts/valid/summarize.receipt.valid.1.ts @@ -20,9 +20,9 @@ export const summarizeReceiptValid1: SummarizeReceipt = { "status": "ok", "timestamp": "2026-03-18T12:00:00Z", "agent": "summarizeagent.eth", - "request_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "request_hash": "sha256:8c13f11a1c87bc44517553ea36973b2be036f92f8b243d9cc412804d768f22c1", "result_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222", - "result_cid": "bafybeisummarizereceiptokexample0001", + "result_cid": "bafybeig2c5v7b9n1m3k5j7h9g2f4d6s8a1p3o5i7u9y2t4r6e8w1q3z5x7", "summary": "Commons v1.1.0 makes requests smaller and receipts easier to verify while preserving stable verb semantics.", - "signature": "sigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "signature": "eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDpleGFtcGxlOmNvbW1vbnMjdjEuMS4wIn1fZXlKaGMzTWlPaUpqYjIxdFlXNWtiR0Y1WlhJdVpYUm9JbjBfcTgzUXhKOGRabDFzUjVuVjdtSzJwVDR5SDZ1VzljQjNhRTVnSjdkTDluUA" }; diff --git a/examples/v1.1.0/commons/summarize/ts/valid/summarize.receipt.valid.2.ts b/examples/v1.1.0/commons/summarize/ts/valid/summarize.receipt.valid.2.ts index cec9228..5b86110 100644 --- a/examples/v1.1.0/commons/summarize/ts/valid/summarize.receipt.valid.2.ts +++ b/examples/v1.1.0/commons/summarize/ts/valid/summarize.receipt.valid.2.ts @@ -8,7 +8,7 @@ export const summarizeReceiptValid2: SummarizeReceipt = { "status": "error", "timestamp": "2026-03-18T12:05:00Z", "agent": "summarizeagent.eth", - "request_hash": "sha256:3333333333333333333333333333333333333333333333333333333333333333", - "signature": "sigBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", + "request_hash": "sha256:8c13f11a1c87bc44517553ea36973b2be036f92f8b243d9cc412804d768f22c1", + "signature": "eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDpleGFtcGxlOmNvbW1vbnMjdjEuMS4wIn1fZXlKaGMzTWlPaUpqYjIxdFlXNWtiR0Y1WlhJdVpYUm9JbjBfcTgzUXhKOGRabDFzUjVuVjdtSzJwVDR5SDZ1VzljQjNhRTVnSjdkTDluUA", "error": "summarize execution failed because the input could not be processed in the requested mode." }; diff --git a/manifest.json b/manifest.json index 0d3f387..b810f0c 100644 --- a/manifest.json +++ b/manifest.json @@ -11,8 +11,7 @@ "schemas_root": "schemas/v1.1.0", "examples_root": "examples/v1.1.0", "checksum_file": "checksums.txt", - "schemas_cid": "PENDING", - "tag": "commons-schemas-v1.1.0", + "schemas_cid": null, "verbs": [ { "name": "analyze", @@ -155,8 +154,11 @@ "schemas_root": "schemas/v1.1.0", "commons_root": "schemas/v1.1.0/commons", "examples_root": "examples/v1.1.0", - "schemas_cid": "PENDING", - "pin_status": "pending" + "schemas_cid": null, + "pin_status": "unpinned", + "schemas_cid_status": "not-generated-in-repo", + "release_tag": "commons-schemas-v1.1.0", + "release_tag_status": "pending-creation" }, "pinned_canonical_release": { "version": "1.0.0", @@ -166,5 +168,9 @@ "examples_root": "examples/v1.0.0", "schemas_cid": "bafybeigvf6nkzws7dblos74dqqjkguwkrwn4a2c27ieygoxmgofyzdkz6m", "pin_status": "published" - } + }, + "schema_public_base_url": "https://raw.githubusercontent.com/commandlayer/protocol-commons/main/schemas/v1.1.0", + "schemas_cid_status": "not-generated-in-repo", + "release_tag": "commons-schemas-v1.1.0", + "release_tag_status": "pending-creation" } diff --git a/package-lock.json b/package-lock.json index 2158b56..63bd115 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,9 +9,9 @@ "version": "1.1.0", "license": "MIT", "devDependencies": { - "ajv": "^8.17.1", - "ajv-errors": "^3.0.0", - "ajv-formats": "^3.0.1" + "ajv": "8.18.0", + "ajv-errors": "3.0.0", + "ajv-formats": "3.0.1" }, "engines": { "node": ">=20.0.0" diff --git a/package.json b/package.json index ef14cde..d08c405 100644 --- a/package.json +++ b/package.json @@ -41,20 +41,20 @@ "manifest.json", "LICENSE", "README.md", - "index.js" + "index.js", + "CONTRIBUTING.md" ], "devDependencies": { - "ajv": "^8.17.1", - "ajv-errors": "^3.0.0", - "ajv-formats": "^3.0.1" + "ajv": "8.18.0", + "ajv-errors": "3.0.0", + "ajv-formats": "3.0.1" }, "scripts": { - "validate:schema": "node scripts/ajv-run.mjs", "validate:schemas": "node scripts/validate-all.mjs", "validate:examples": "node scripts/validate-examples.mjs", "validate:all": "npm run validate:schemas && npm run validate:examples", "validate": "npm run validate:all", - "checksums:gen": "bash scripts/generate-checksums.sh schemas checksums.txt", + "checksums:gen": "bash scripts/generate-checksums.sh", "checksums:verify": "bash scripts/verify-checksums.sh", "checksums:dirty": "git diff --exit-code -- checksums.txt", "prepack": "npm run checksums:gen", diff --git a/schemas/v1.1.0/commons/analyze/analyze.receipt.schema.json b/schemas/v1.1.0/commons/analyze/analyze.receipt.schema.json index 7940e8d..0d5f9e9 100644 --- a/schemas/v1.1.0/commons/analyze/analyze.receipt.schema.json +++ b/schemas/v1.1.0/commons/analyze/analyze.receipt.schema.json @@ -1,5 +1,5 @@ { - "$id": "https://commandlayer.org/schemas/v1.1.0/commons/analyze/analyze.receipt.schema.json", + "$id": "https://raw.githubusercontent.com/commandlayer/protocol-commons/main/schemas/v1.1.0/commons/analyze/analyze.receipt.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "analyze.receipt", "description": "Signed receipt proving execution of an analyze request.", diff --git a/schemas/v1.1.0/commons/analyze/analyze.request.schema.json b/schemas/v1.1.0/commons/analyze/analyze.request.schema.json index d4db93f..79ab2aa 100644 --- a/schemas/v1.1.0/commons/analyze/analyze.request.schema.json +++ b/schemas/v1.1.0/commons/analyze/analyze.request.schema.json @@ -1,5 +1,5 @@ { - "$id": "https://commandlayer.org/schemas/v1.1.0/commons/analyze/analyze.request.schema.json", + "$id": "https://raw.githubusercontent.com/commandlayer/protocol-commons/main/schemas/v1.1.0/commons/analyze/analyze.request.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "analyze.request", "description": "Request to analyze caller-supplied input.", @@ -23,8 +23,7 @@ "enum": [ "classify", "extract", - "score", - "summarize" + "score" ] } }, diff --git a/schemas/v1.1.0/commons/classify/classify.receipt.schema.json b/schemas/v1.1.0/commons/classify/classify.receipt.schema.json index 9dd1941..52e8792 100644 --- a/schemas/v1.1.0/commons/classify/classify.receipt.schema.json +++ b/schemas/v1.1.0/commons/classify/classify.receipt.schema.json @@ -1,5 +1,5 @@ { - "$id": "https://commandlayer.org/schemas/v1.1.0/commons/classify/classify.receipt.schema.json", + "$id": "https://raw.githubusercontent.com/commandlayer/protocol-commons/main/schemas/v1.1.0/commons/classify/classify.receipt.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "classify.receipt", "description": "Signed receipt proving execution of a classify request.", diff --git a/schemas/v1.1.0/commons/classify/classify.request.schema.json b/schemas/v1.1.0/commons/classify/classify.request.schema.json index 3f59944..d4dd961 100644 --- a/schemas/v1.1.0/commons/classify/classify.request.schema.json +++ b/schemas/v1.1.0/commons/classify/classify.request.schema.json @@ -1,5 +1,5 @@ { - "$id": "https://commandlayer.org/schemas/v1.1.0/commons/classify/classify.request.schema.json", + "$id": "https://raw.githubusercontent.com/commandlayer/protocol-commons/main/schemas/v1.1.0/commons/classify/classify.request.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "classify.request", "description": "Request to classify caller-supplied input into categories.", diff --git a/schemas/v1.1.0/commons/clean/clean.receipt.schema.json b/schemas/v1.1.0/commons/clean/clean.receipt.schema.json index 422d9ec..c852692 100644 --- a/schemas/v1.1.0/commons/clean/clean.receipt.schema.json +++ b/schemas/v1.1.0/commons/clean/clean.receipt.schema.json @@ -1,5 +1,5 @@ { - "$id": "https://commandlayer.org/schemas/v1.1.0/commons/clean/clean.receipt.schema.json", + "$id": "https://raw.githubusercontent.com/commandlayer/protocol-commons/main/schemas/v1.1.0/commons/clean/clean.receipt.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "clean.receipt", "description": "Signed receipt proving execution of a clean request.", diff --git a/schemas/v1.1.0/commons/clean/clean.request.schema.json b/schemas/v1.1.0/commons/clean/clean.request.schema.json index a6127cc..e65413d 100644 --- a/schemas/v1.1.0/commons/clean/clean.request.schema.json +++ b/schemas/v1.1.0/commons/clean/clean.request.schema.json @@ -1,5 +1,5 @@ { - "$id": "https://commandlayer.org/schemas/v1.1.0/commons/clean/clean.request.schema.json", + "$id": "https://raw.githubusercontent.com/commandlayer/protocol-commons/main/schemas/v1.1.0/commons/clean/clean.request.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "clean.request", "description": "Request to remove noise, normalize, and sanitize content.", diff --git a/schemas/v1.1.0/commons/convert/convert.receipt.schema.json b/schemas/v1.1.0/commons/convert/convert.receipt.schema.json index c3ed309..f3fa50d 100644 --- a/schemas/v1.1.0/commons/convert/convert.receipt.schema.json +++ b/schemas/v1.1.0/commons/convert/convert.receipt.schema.json @@ -1,5 +1,5 @@ { - "$id": "https://commandlayer.org/schemas/v1.1.0/commons/convert/convert.receipt.schema.json", + "$id": "https://raw.githubusercontent.com/commandlayer/protocol-commons/main/schemas/v1.1.0/commons/convert/convert.receipt.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "convert.receipt", "description": "Signed receipt proving execution of a convert request.", diff --git a/schemas/v1.1.0/commons/convert/convert.request.schema.json b/schemas/v1.1.0/commons/convert/convert.request.schema.json index 3715337..ecaa17e 100644 --- a/schemas/v1.1.0/commons/convert/convert.request.schema.json +++ b/schemas/v1.1.0/commons/convert/convert.request.schema.json @@ -1,5 +1,5 @@ { - "$id": "https://commandlayer.org/schemas/v1.1.0/commons/convert/convert.request.schema.json", + "$id": "https://raw.githubusercontent.com/commandlayer/protocol-commons/main/schemas/v1.1.0/commons/convert/convert.request.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "convert.request", "description": "Request to convert content from one format to another.", diff --git a/schemas/v1.1.0/commons/describe/describe.receipt.schema.json b/schemas/v1.1.0/commons/describe/describe.receipt.schema.json index 5a8b93a..3361c73 100644 --- a/schemas/v1.1.0/commons/describe/describe.receipt.schema.json +++ b/schemas/v1.1.0/commons/describe/describe.receipt.schema.json @@ -1,5 +1,5 @@ { - "$id": "https://commandlayer.org/schemas/v1.1.0/commons/describe/describe.receipt.schema.json", + "$id": "https://raw.githubusercontent.com/commandlayer/protocol-commons/main/schemas/v1.1.0/commons/describe/describe.receipt.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "describe.receipt", "description": "Signed receipt proving execution of a describe request.", diff --git a/schemas/v1.1.0/commons/describe/describe.request.schema.json b/schemas/v1.1.0/commons/describe/describe.request.schema.json index 1f79ed8..1516046 100644 --- a/schemas/v1.1.0/commons/describe/describe.request.schema.json +++ b/schemas/v1.1.0/commons/describe/describe.request.schema.json @@ -1,5 +1,5 @@ { - "$id": "https://commandlayer.org/schemas/v1.1.0/commons/describe/describe.request.schema.json", + "$id": "https://raw.githubusercontent.com/commandlayer/protocol-commons/main/schemas/v1.1.0/commons/describe/describe.request.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "describe.request", "description": "Request to produce a neutral, human-readable description of input.", diff --git a/schemas/v1.1.0/commons/explain/explain.receipt.schema.json b/schemas/v1.1.0/commons/explain/explain.receipt.schema.json index c7fc46a..96fbce4 100644 --- a/schemas/v1.1.0/commons/explain/explain.receipt.schema.json +++ b/schemas/v1.1.0/commons/explain/explain.receipt.schema.json @@ -1,5 +1,5 @@ { - "$id": "https://commandlayer.org/schemas/v1.1.0/commons/explain/explain.receipt.schema.json", + "$id": "https://raw.githubusercontent.com/commandlayer/protocol-commons/main/schemas/v1.1.0/commons/explain/explain.receipt.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "explain.receipt", "description": "Signed receipt proving execution of an explain request.", diff --git a/schemas/v1.1.0/commons/explain/explain.request.schema.json b/schemas/v1.1.0/commons/explain/explain.request.schema.json index db1a55c..5ec9726 100644 --- a/schemas/v1.1.0/commons/explain/explain.request.schema.json +++ b/schemas/v1.1.0/commons/explain/explain.request.schema.json @@ -1,5 +1,5 @@ { - "$id": "https://commandlayer.org/schemas/v1.1.0/commons/explain/explain.request.schema.json", + "$id": "https://raw.githubusercontent.com/commandlayer/protocol-commons/main/schemas/v1.1.0/commons/explain/explain.request.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "explain.request", "description": "Request to provide reasoning, rationale, or clarification for input.", diff --git a/schemas/v1.1.0/commons/fetch/fetch.receipt.schema.json b/schemas/v1.1.0/commons/fetch/fetch.receipt.schema.json index 0ecd90b..f010641 100644 --- a/schemas/v1.1.0/commons/fetch/fetch.receipt.schema.json +++ b/schemas/v1.1.0/commons/fetch/fetch.receipt.schema.json @@ -1,5 +1,5 @@ { - "$id": "https://commandlayer.org/schemas/v1.1.0/commons/fetch/fetch.receipt.schema.json", + "$id": "https://raw.githubusercontent.com/commandlayer/protocol-commons/main/schemas/v1.1.0/commons/fetch/fetch.receipt.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "fetch.receipt", "description": "Signed receipt proving execution of a fetch request.", diff --git a/schemas/v1.1.0/commons/fetch/fetch.request.schema.json b/schemas/v1.1.0/commons/fetch/fetch.request.schema.json index 62643fc..c1b5fdb 100644 --- a/schemas/v1.1.0/commons/fetch/fetch.request.schema.json +++ b/schemas/v1.1.0/commons/fetch/fetch.request.schema.json @@ -1,5 +1,5 @@ { - "$id": "https://commandlayer.org/schemas/v1.1.0/commons/fetch/fetch.request.schema.json", + "$id": "https://raw.githubusercontent.com/commandlayer/protocol-commons/main/schemas/v1.1.0/commons/fetch/fetch.request.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "fetch.request", "description": "Request to fetch external content from a URL or source.", diff --git a/schemas/v1.1.0/commons/format/format.receipt.schema.json b/schemas/v1.1.0/commons/format/format.receipt.schema.json index 968b76c..d83b771 100644 --- a/schemas/v1.1.0/commons/format/format.receipt.schema.json +++ b/schemas/v1.1.0/commons/format/format.receipt.schema.json @@ -1,5 +1,5 @@ { - "$id": "https://commandlayer.org/schemas/v1.1.0/commons/format/format.receipt.schema.json", + "$id": "https://raw.githubusercontent.com/commandlayer/protocol-commons/main/schemas/v1.1.0/commons/format/format.receipt.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "format.receipt", "description": "Signed receipt proving execution of a format request.", diff --git a/schemas/v1.1.0/commons/format/format.request.schema.json b/schemas/v1.1.0/commons/format/format.request.schema.json index b0cd5da..c080026 100644 --- a/schemas/v1.1.0/commons/format/format.request.schema.json +++ b/schemas/v1.1.0/commons/format/format.request.schema.json @@ -1,5 +1,5 @@ { - "$id": "https://commandlayer.org/schemas/v1.1.0/commons/format/format.request.schema.json", + "$id": "https://raw.githubusercontent.com/commandlayer/protocol-commons/main/schemas/v1.1.0/commons/format/format.request.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "format.request", "description": "Request to reformat content without changing its meaning.", diff --git a/schemas/v1.1.0/commons/parse/parse.receipt.schema.json b/schemas/v1.1.0/commons/parse/parse.receipt.schema.json index d19c956..e7426bd 100644 --- a/schemas/v1.1.0/commons/parse/parse.receipt.schema.json +++ b/schemas/v1.1.0/commons/parse/parse.receipt.schema.json @@ -1,5 +1,5 @@ { - "$id": "https://commandlayer.org/schemas/v1.1.0/commons/parse/parse.receipt.schema.json", + "$id": "https://raw.githubusercontent.com/commandlayer/protocol-commons/main/schemas/v1.1.0/commons/parse/parse.receipt.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "parse.receipt", "description": "Signed receipt proving execution of a parse request.", diff --git a/schemas/v1.1.0/commons/parse/parse.request.schema.json b/schemas/v1.1.0/commons/parse/parse.request.schema.json index 1f71e79..0aed14b 100644 --- a/schemas/v1.1.0/commons/parse/parse.request.schema.json +++ b/schemas/v1.1.0/commons/parse/parse.request.schema.json @@ -1,5 +1,5 @@ { - "$id": "https://commandlayer.org/schemas/v1.1.0/commons/parse/parse.request.schema.json", + "$id": "https://raw.githubusercontent.com/commandlayer/protocol-commons/main/schemas/v1.1.0/commons/parse/parse.request.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "parse.request", "description": "Request to parse unstructured content into structured output.", diff --git a/schemas/v1.1.0/commons/summarize/summarize.receipt.schema.json b/schemas/v1.1.0/commons/summarize/summarize.receipt.schema.json index b79e291..eb48105 100644 --- a/schemas/v1.1.0/commons/summarize/summarize.receipt.schema.json +++ b/schemas/v1.1.0/commons/summarize/summarize.receipt.schema.json @@ -1,5 +1,5 @@ { - "$id": "https://commandlayer.org/schemas/v1.1.0/commons/summarize/summarize.receipt.schema.json", + "$id": "https://raw.githubusercontent.com/commandlayer/protocol-commons/main/schemas/v1.1.0/commons/summarize/summarize.receipt.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "summarize.receipt", "description": "Signed receipt proving execution of a summarize request.", diff --git a/schemas/v1.1.0/commons/summarize/summarize.request.schema.json b/schemas/v1.1.0/commons/summarize/summarize.request.schema.json index f3a3441..55ff9a0 100644 --- a/schemas/v1.1.0/commons/summarize/summarize.request.schema.json +++ b/schemas/v1.1.0/commons/summarize/summarize.request.schema.json @@ -1,5 +1,5 @@ { - "$id": "https://commandlayer.org/schemas/v1.1.0/commons/summarize/summarize.request.schema.json", + "$id": "https://raw.githubusercontent.com/commandlayer/protocol-commons/main/schemas/v1.1.0/commons/summarize/summarize.request.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "summarize.request", "description": "Request to compress content while preserving key information.", diff --git a/scripts/ajv-run.mjs b/scripts/ajv-run.mjs deleted file mode 100644 index 462a1e6..0000000 --- a/scripts/ajv-run.mjs +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env node -/** - * ajv-run.mjs - * - * Convenience entrypoint for schema validation. - * Currently just delegates to validate-all.mjs so that: - * - * npm run validate:schema - * - * is equivalent to: - * - * npm run validate:schemas - */ - -import './validate-all.mjs'; diff --git a/scripts/generate-checksums.sh b/scripts/generate-checksums.sh index 7f42905..3572ad0 100644 --- a/scripts/generate-checksums.sh +++ b/scripts/generate-checksums.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -euo pipefail -ROOT="${1:-schemas/v1.0.0}" +ROOT="${1:-schemas/v1.1.0}" OUT="${2:-checksums.txt}" if [ ! -d "$ROOT" ]; then @@ -9,7 +9,11 @@ if [ ! -d "$ROOT" ]; then exit 1 fi -echo "Generating SHA-256 checksums for $ROOT" +if [ "$#" -eq 0 ]; then + echo "Generating SHA-256 checksums for the current authoritative schema line: $ROOT" +else + echo "Generating SHA-256 checksums for $ROOT" +fi find "$ROOT" -type f -name "*.json" -print0 \ | LC_ALL=C sort -z \ diff --git a/scripts/validate-examples.mjs b/scripts/validate-examples.mjs index b838fc8..2377de0 100644 --- a/scripts/validate-examples.mjs +++ b/scripts/validate-examples.mjs @@ -36,8 +36,8 @@ const EXAMPLE_CONFIGS = [ version: "v1.1.0", schemasRoot: path.join(ROOT, "schemas", "v1.1.0"), examplesRoot: path.join(ROOT, "examples", "v1.1.0"), - requestSchemaId: (verb) => `https://commandlayer.org/schemas/v1.1.0/commons/${verb}/${verb}.request.schema.json`, - receiptSchemaId: (verb) => `https://commandlayer.org/schemas/v1.1.0/commons/${verb}/${verb}.receipt.schema.json`, + requestSchemaId: (verb) => `https://raw.githubusercontent.com/commandlayer/protocol-commons/main/schemas/v1.1.0/commons/${verb}/${verb}.request.schema.json`, + receiptSchemaId: (verb) => `https://raw.githubusercontent.com/commandlayer/protocol-commons/main/schemas/v1.1.0/commons/${verb}/${verb}.receipt.schema.json`, validDir: (verb) => path.join(ROOT, "examples", "v1.1.0", "commons", verb, "json", "valid"), invalidDir: (verb) => path.join(ROOT, "examples", "v1.1.0", "commons", verb, "json", "invalid") }