{"_id":"@atomic-content-protocol/enrichment","_rev":"5-00ec08500baee39d6519183525ae05ad","name":"@atomic-content-protocol/enrichment","dist-tags":{"latest":"0.2.1"},"versions":{"0.1.0":{"name":"@atomic-content-protocol/enrichment","version":"0.1.0","keywords":["acp","atomic-content-protocol","enrichment","ai","llm","anthropic","openai"],"author":{"url":"https://www.stacks.inc/","name":"Stacks, Inc"},"license":"Apache-2.0","_id":"@atomic-content-protocol/enrichment@0.1.0","maintainers":[{"name":"stacklist","email":"kyle@stacklist.com"},{"name":"acp-sdk","email":"martina@stacklist.com"}],"homepage":"https://atomiccontentprotocol.org","bugs":{"url":"https://github.com/atomic-content-protocol/sdk/issues"},"dist":{"shasum":"f32de9894021efb803ce7ac591e3b36a8061065b","tarball":"https://registry.npmjs.org/@atomic-content-protocol/enrichment/-/enrichment-0.1.0.tgz","fileCount":95,"integrity":"sha512-LuJaw898AOBOqy7sUgfsb9PVLCvjsRShlepbbR3fr2f8ykBhrE8E0kVdlwR4QImGbIQobdot7zJ+HHI7yfqErA==","signatures":[{"sig":"MEQCIG+7x/OGdqE8py5I0FCEEjNMRNh2uim3UUzcxrngbHGLAiAij9NPAu6wAlGTLMQSJZ6b3RAUHQBid22pvCYZjtzP+A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143438},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"b374e870c9830e3f660264b1a61dbc4417ebb552","scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"acp-sdk","email":"martina@stacklist.com"},"repository":{"url":"git+https://github.com/atomic-content-protocol/sdk.git","type":"git","directory":"packages/enrichment"},"_npmVersion":"10.9.2","description":"LLM enrichment pipelines for the Atomic Content Protocol","directories":{},"_nodeVersion":"23.6.1","dependencies":{"openai":"^4.80.0","@anthropic-ai/sdk":"^0.80.0","@atomic-content-protocol/core":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.0","typescript":"^5.8.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/enrichment_0.1.0_1776630925012_0.1362814735410176","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@atomic-content-protocol/enrichment","version":"0.1.1","keywords":["acp","atomic-content-protocol","enrichment","ai","llm","anthropic","openai"],"author":{"url":"https://www.stacks.inc/","name":"Stacks, Inc"},"license":"Apache-2.0","_id":"@atomic-content-protocol/enrichment@0.1.1","maintainers":[{"name":"stacklist","email":"kyle@stacklist.com"},{"name":"acp-sdk","email":"martina@stacklist.com"}],"homepage":"https://atomiccontentprotocol.org","bugs":{"url":"https://github.com/atomic-content-protocol/sdk/issues"},"dist":{"shasum":"27795cdc963b97f8aa5b0a90041635ed16a6ea05","tarball":"https://registry.npmjs.org/@atomic-content-protocol/enrichment/-/enrichment-0.1.1.tgz","fileCount":95,"integrity":"sha512-SZshQ12/842ofOU9AC4W8zNZ7ugsma9A+UwjHrnlXFLKekG5zB1PVSuPbbZ9TBzoF7lt1gXQU1EHRZIy9ErOpA==","signatures":[{"sig":"MEQCICogGXvlYAjKmxLh29MMDTbIUMXoz2O4uNR3IdYApDqwAiBGxGJRzQ70A3VGeDodZcjEras5afE5Tkjuhfy2nnEoIw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":146294},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"67b3fa9da7f871f738a008859dbfdd3252811aa7","scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"acp-sdk","email":"martina@stacklist.com"},"repository":{"url":"git+https://github.com/atomic-content-protocol/sdk.git","type":"git","directory":"packages/enrichment"},"_npmVersion":"10.9.2","description":"LLM enrichment pipelines for the Atomic Content Protocol","directories":{},"_nodeVersion":"23.6.1","dependencies":{"openai":"^4.80.0","@anthropic-ai/sdk":"^0.80.0","@atomic-content-protocol/core":"^0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.0","typescript":"^5.8.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/enrichment_0.1.1_1776715348520_0.911069070542786","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@atomic-content-protocol/enrichment","version":"0.1.2","keywords":["acp","atomic-content-protocol","enrichment","ai","llm","anthropic","openai"],"author":{"url":"https://www.stacks.inc/","name":"Stacks, Inc"},"license":"Apache-2.0","_id":"@atomic-content-protocol/enrichment@0.1.2","maintainers":[{"name":"stacklist","email":"kyle@stacklist.com"},{"name":"acp-sdk","email":"martina@stacklist.com"}],"homepage":"https://atomiccontentprotocol.org","bugs":{"url":"https://github.com/atomic-content-protocol/sdk/issues"},"dist":{"shasum":"8c7645a548c9e0c9292b390a77567d6e6f720453","tarball":"https://registry.npmjs.org/@atomic-content-protocol/enrichment/-/enrichment-0.1.2.tgz","fileCount":95,"integrity":"sha512-ZjnNPsq+78HwamkbrA7xajmNHkEaxj5SNeoYrfBD/AqOsZZ3VXtje6hsaevH3oPJNop7KP1I3sqXHT2mUktpkw==","signatures":[{"sig":"MEQCIB9kinA4ME8dwgtVvA3LeURh1y+5oTKL3hNNfG3X8LlJAiASIQH13uHirS6LWr0rWdtnzrc0ZNO46sXp2sCoHjNBSg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":152594},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"42ccd7275847a86a16859c85858c29aea6921e9d","scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"acp-sdk","email":"martina@stacklist.com"},"repository":{"url":"git+https://github.com/atomic-content-protocol/sdk.git","type":"git","directory":"packages/enrichment"},"_npmVersion":"10.9.2","description":"LLM enrichment pipelines for the Atomic Content Protocol","directories":{},"_nodeVersion":"23.6.1","dependencies":{"openai":"^4.80.0","@anthropic-ai/sdk":"^0.80.0","@atomic-content-protocol/core":"^0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.0","typescript":"^5.8.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/enrichment_0.1.2_1777759584125_0.2660520607151726","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@atomic-content-protocol/enrichment","version":"0.2.0","keywords":["acp","atomic-content-protocol","enrichment","ai","llm","anthropic","openai"],"author":{"url":"https://www.stacks.inc/","name":"Stacks, Inc"},"license":"Apache-2.0","_id":"@atomic-content-protocol/enrichment@0.2.0","maintainers":[{"name":"stacklist","email":"kyle@stacklist.com"},{"name":"acp-sdk","email":"martina@stacklist.com"}],"homepage":"https://atomiccontentprotocol.org","bugs":{"url":"https://github.com/atomic-content-protocol/sdk/issues"},"dist":{"shasum":"33fb4af9799ddaed752ddcc1f64edd4d5224f3b9","tarball":"https://registry.npmjs.org/@atomic-content-protocol/enrichment/-/enrichment-0.2.0.tgz","fileCount":111,"integrity":"sha512-k/qNcIdzPyJcxGByD/I/GWzyohmoggpCUsdoQk0WWYkI/1Qvza55QxUscTvxUDx2nuFdIIfvV6wv18Hz4meGpA==","signatures":[{"sig":"MEUCIB7kcQ3bKSwsoUiVMAoHlkp/nQmJvwLzwqU2z83s+Lk1AiEAlDJzgVRzim9uKqdSSQPRnwwRsWOgkWhIhxYAfj0O6vk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atomic-content-protocol%2fenrichment@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":225873},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"36e5541054e17d16a94c3152556dbfb16b7f177d","scripts":{"lint":"tsc --noEmit && tsc --noEmit -p tsconfig.test.json","test":"vitest run","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:76ccdeca-5698-49af-beb6-930010c835d3"}},"repository":{"url":"git+https://github.com/atomic-content-protocol/sdk.git","type":"git","directory":"packages/enrichment"},"_npmVersion":"12.0.2","description":"LLM enrichment pipelines for the Atomic Content Protocol","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.24.0","openai":"^4.80.0","@anthropic-ai/sdk":"^0.125.0","@atomic-content-protocol/core":"^0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.0","typescript":"^5.8.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/enrichment_0.2.0_1789375565647_0.11306768842746306","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@atomic-content-protocol/enrichment","version":"0.2.1","description":"LLM enrichment pipelines for the Atomic Content Protocol","author":{"name":"Stacks, Inc","url":"https://www.stacks.inc/"},"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"}},"scripts":{"build":"tsc","test":"vitest run","clean":"rm -rf dist","lint":"tsc --noEmit && tsc --noEmit -p tsconfig.test.json"},"dependencies":{"@atomic-content-protocol/core":"^0.2.1","@anthropic-ai/sdk":"^0.125.0","openai":"^4.80.0","zod":"^3.24.0"},"devDependencies":{"@types/node":"^22.0.0","typescript":"^5.8.0","vitest":"^5.0.0"},"license":"Apache-2.0","engines":{"node":">=20.0.0"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/atomic-content-protocol/sdk.git","directory":"packages/enrichment"},"homepage":"https://atomiccontentprotocol.org","bugs":{"url":"https://github.com/atomic-content-protocol/sdk/issues"},"keywords":["acp","atomic-content-protocol","enrichment","ai","llm","anthropic","openai"],"gitHead":"5d1371c8fa4d990983eb12de2b3f9660ca244b88","_id":"@atomic-content-protocol/enrichment@0.2.1","_nodeVersion":"22.23.2","_npmVersion":"12.0.2","dist":{"integrity":"sha512-UiZ1V5L7jRuwtJgY5NJng97TG0vw5hP5ZwUO+eDLRElBdncvnyI6aBuSZ91kaTv4cvQ0Eh0A3T8Y7dM4Jlu/Sg==","shasum":"4086f1b06e180d5395d9f768eff0cecd6754ac15","tarball":"https://registry.npmjs.org/@atomic-content-protocol/enrichment/-/enrichment-0.2.1.tgz","fileCount":111,"unpackedSize":225873,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atomic-content-protocol%2fenrichment@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDOA4g6jISy3MtW6cp5/+D8RFj+ZkJSgf3jutx1w+zY4QIgfbUTXl4nsb9YQoLu7lcSkNq7bTprGf9469i6dqvR0vY="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:76ccdeca-5698-49af-beb6-930010c835d3"}},"directories":{},"maintainers":[{"name":"stacklist","email":"kyle@stacklist.com"},{"name":"acp-sdk","email":"martina@stacklist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/enrichment_0.2.1_1789387253296_0.27422965362582863"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-19T20:35:24.891Z","modified":"2026-09-14T12:00:53.868Z","0.1.0":"2026-04-19T20:35:25.163Z","0.1.1":"2026-04-20T20:02:28.670Z","0.1.2":"2026-05-02T22:06:24.278Z","0.2.0":"2026-09-14T08:46:05.778Z","0.2.1":"2026-09-14T12:00:53.426Z"},"bugs":{"url":"https://github.com/atomic-content-protocol/sdk/issues"},"author":{"name":"Stacks, Inc","url":"https://www.stacks.inc/"},"license":"Apache-2.0","homepage":"https://atomiccontentprotocol.org","keywords":["acp","atomic-content-protocol","enrichment","ai","llm","anthropic","openai"],"repository":{"type":"git","url":"git+https://github.com/atomic-content-protocol/sdk.git","directory":"packages/enrichment"},"description":"LLM enrichment pipelines for the Atomic Content Protocol","maintainers":[{"name":"stacklist","email":"kyle@stacklist.com"},{"name":"acp-sdk","email":"martina@stacklist.com"}],"readme":"# @atomic-content-protocol/enrichment\n\nLLM enrichment pipelines for the [Atomic Content Protocol](https://atomiccontentprotocol.org).\n\nRuns tagging, summarisation, entity extraction, classification, and embedding over ACOs using Anthropic, OpenAI, or Ollama providers.\n\n## Install\n\n```bash\nnpm install @atomic-content-protocol/enrichment @atomic-content-protocol/core\n```\n\n## Quick start\n\n```typescript\nimport {\n  ProviderRouter,\n  UnifiedPipeline,\n  BatchEnricher,\n} from \"@atomic-content-protocol/enrichment\";\n\nconst router = ProviderRouter.fromConfig({\n  quality: \"fast\", // fast (Haiku 4.5 / GPT-5.6 Luna) | balanced | best\n  anthropic: { apiKey: process.env.ANTHROPIC_API_KEY! },\n  openai: { apiKey: process.env.OPENAI_API_KEY! }, // fallback + embeddings\n});\n\nconst enricher = new BatchEnricher(router, [new UnifiedPipeline()]);\nconst enriched = await enricher.enrichOne(myACO);\n```\n\n## What's in the package\n\n- `providers/` — `AnthropicProvider`, `OpenAIProvider`, `OllamaProvider`\n- `router/` — `ProviderRouter`, `CircuitBreaker`\n- `pipelines/` — `TagPipeline`, `SummaryPipeline`, `EntityPipeline`, `ClassificationPipeline`, `UnifiedPipeline`, `EmbedPipeline`\n- `batch/` — `BatchEnricher` for bulk enrichment (`concurrency` option)\n- `utils/` — `estimateEnrichmentCost`, `parseUnifiedOutput` (Zod validation of model output), provenance helpers\n\nEnrichment never overwrites a field that already has a value unless `force: true`; provenance records the model that actually answered after any fallback.\n\n`UnifiedPipeline` runs tags + summary + entities + classification + language in a single LLM call — the cheapest path to a fully enriched ACO.\n\n## Links\n\n- Protocol spec: [atomiccontentprotocol.org](https://atomiccontentprotocol.org)\n- Repository: [github.com/atomic-content-protocol/sdk](https://github.com/atomic-content-protocol/sdk)\n\n## Stewardship\n\nThe Atomic Content Protocol is an open standard stewarded by [Stacks, Inc](https://www.stacks.inc/) — the company behind [Stacklist](https://stacklist.com).\n\n## License\n\nApache-2.0\n","readmeFilename":"README.md"}