{"_id":"@act-spec/adapter-sanity","name":"@act-spec/adapter-sanity","dist-tags":{"rc":"0.2.0-rc.1","latest":"0.2.0-rc.1"},"versions":{"0.2.0-rc.1":{"name":"@act-spec/adapter-sanity","version":"0.2.0-rc.1","description":"PRD-203 Sanity adapter for the ACT (Agent Content Tree) v0.1 reference implementation. Consumes Sanity Content Lake (GROQ + Portable Text) and emits PRD-100/PRD-102 envelopes; supports content-type / field mapping, Portable Text → block conversion, refere","license":"Apache-2.0","author":{"name":"Jeremy Forsythe","email":"jeremy@act-spec.org"},"homepage":"https://act-spec.org","bugs":{"url":"https://github.com/act-spec/act/issues"},"type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/act-spec/act.git","directory":"packages/adapter-sanity"},"dependencies":{"ajv":"^8.17.1","ajv-formats":"^3.0.1","@act-spec/adapter-framework":"0.2.0-rc.1","@act-spec/validator":"0.2.0-rc.1","@act-spec/core":"0.2.0-rc.1"},"peerDependencies":{"@portabletext/types":"^2.0.13","@sanity/client":"^6.22.0"},"peerDependenciesMeta":{"@portabletext/types":{"optional":true},"@sanity/client":{"optional":true}},"devDependencies":{"@portabletext/types":"^2.0.13","@vitest/coverage-v8":"^2.1.9","tsx":"^4.19.2","typescript":"^5.6.3","vitest":"^2.1.4"},"scripts":{"build":"tsc -p tsconfig.json","test":"vitest run","test:watch":"vitest","test:coverage":"vitest run --coverage","lint":"eslint src","typecheck":"tsc -p tsconfig.json --noEmit","conformance":"tsx conformance.ts"},"_id":"@act-spec/adapter-sanity@0.2.0-rc.1","_integrity":"sha512-8rhwNreBaiMygp6OQUc0TQjJiT73+AjEqrVZfuCvPXj5aMMVl9vlSh1NQdH9Sbr1Fdxk1qiimd2oecO/j+bepA==","_resolved":"/private/var/folders/yp/y7frhcvj70jgr6b8g633lghr0000gn/T/dfc0b46da15d92a116966bfffa8021eb/act-spec-adapter-sanity-0.2.0-rc.1.tgz","_from":"file:act-spec-adapter-sanity-0.2.0-rc.1.tgz","_nodeVersion":"22.19.0","_npmVersion":"11.6.0","dist":{"integrity":"sha512-8rhwNreBaiMygp6OQUc0TQjJiT73+AjEqrVZfuCvPXj5aMMVl9vlSh1NQdH9Sbr1Fdxk1qiimd2oecO/j+bepA==","shasum":"9b3c13a2f3a6bcdc34657faef29495b558177871","tarball":"https://registry.npmjs.org/@act-spec/adapter-sanity/-/adapter-sanity-0.2.0-rc.1.tgz","fileCount":36,"unpackedSize":243554,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIERMDg4Q/sEr8eyS5XgZz+QFAKzII1OJnaJm4PowEHgXAiAGlyLwAZjk8nENX3UUmbsVY6OfvJlxTpIN2K7c3OJHig=="}]},"_npmUser":{"name":"jdforsythe","email":"jdforsythe@gmail.com"},"directories":{},"maintainers":[{"name":"jdforsythe","email":"jdforsythe@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/adapter-sanity_0.2.0-rc.1_1777915293838_0.648677579977673"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-04T17:21:33.687Z","0.2.0-rc.1":"2026-05-04T17:21:33.993Z","modified":"2026-05-04T17:21:34.248Z"},"maintainers":[{"name":"jdforsythe","email":"jdforsythe@gmail.com"}],"description":"PRD-203 Sanity adapter for the ACT (Agent Content Tree) v0.1 reference implementation. Consumes Sanity Content Lake (GROQ + Portable Text) and emits PRD-100/PRD-102 envelopes; supports content-type / field mapping, Portable Text → block conversion, refere","homepage":"https://act-spec.org","repository":{"type":"git","url":"git+https://github.com/act-spec/act.git","directory":"packages/adapter-sanity"},"author":{"name":"Jeremy Forsythe","email":"jeremy@act-spec.org"},"bugs":{"url":"https://github.com/act-spec/act/issues"},"license":"Apache-2.0","readme":"# @act-spec/adapter-sanity\n\nSanity adapter for ACT (Agent Content Tree). Consumes the Sanity Content\nLake (GROQ + Portable Text) and emits ACT envelopes against the shared\nadapter framework (`@act-spec/adapter-framework`). Supports content-type\nand field mapping, Portable Text → block conversion, reference resolution\nwith cycle detection, locale fan-out, and Sanity transaction-ID delta.\n\n## Status\n\nACT v0.1 internal hand-test candidate. Public release lands at v0.2.\n\n## Install\n\nUnpublished in v0.1. Consume via the workspace:\n\n```jsonc\n// package.json\n{ \"dependencies\": { \"@act-spec/adapter-sanity\": \"workspace:*\" } }\n```\n\n## Usage\n\n```ts\nimport { createSanityAdapter } from '@act-spec/adapter-sanity';\n\nconst adapter = createSanityAdapter({\n  config: {\n    projectId: process.env.SANITY_PROJECT_ID!,\n    dataset: 'production',\n    apiToken: { from_env: 'SANITY_TOKEN' },\n    apiVersion: '2024-10-01',\n    perspective: 'published',\n    mappings: {\n      article: {\n        type: 'article',\n        title: 'title',\n        summary: 'summary',\n        body: { from: 'body', as: 'portableText' },\n      },\n    },\n  },\n});\n```\n\nThe Portable Text walker is exposed standalone:\n\n```ts\nimport { walkPortableText } from '@act-spec/adapter-sanity';\n\nconst blocks = walkPortableText(doc.body, ctx);\n```\n\n## Conformance / what's tested\n\nEvery public API has a citing test in `src/sanity.test.ts` covering\nPortable Text → block conversion, reference cycle detection, locale\nfan-out, and transaction-ID delta. The conformance gate runs\n`@act-spec/validator` against the bundled fixtures.\n\n```bash\npnpm -F @act-spec/adapter-sanity conformance\n```\n\n## Configuration (selected)\n\n| Option | Default | Notes |\n| --- | --- | --- |\n| `projectId` | (required) | Sanity project identifier. |\n| `dataset` | (required) | Dataset name (e.g. `'production'`). |\n| `apiToken` | (required) | Inline string OR `{ from_env: 'NAME' }`. |\n| `apiVersion` | `'2024-10-01'` | Sanity API version pin. |\n| `perspective` | `'published'` | Or `'previewDrafts'` / `'raw'`. |\n| `mappings` | `{}` | Content-type → field-mapping DSL. |\n| `concurrency` | `4` | Adapter framework parallelism. |\n\n## Peer dependencies\n\nOptional peers; install when consuming the live Sanity client:\n\n| Peer | Range |\n| --- | --- |\n| `@sanity/client` | `^6.22.0` |\n| `@portabletext/types` | `^2.0.13` |\n\nThe Portable Text walker only uses `@portabletext/types`; the live client\npeer is only needed when wiring the adapter to a real Sanity dataset.\n\n## Links\n\n- Adapter framework: [`@act-spec/adapter-framework`](../adapter-framework)\n- Repository: <https://github.com/act-spec/act>\n","readmeFilename":"README.md","_rev":"1-aa9e680cad41ed78e2f6331a0857c3f6"}