{"_id":"@aaac/toolchain","_rev":"8-fa23e29468158a8cdf7bad1d3d22a037","name":"@aaac/toolchain","dist-tags":{"latest":"0.2.4"},"versions":{"0.1.0":{"name":"@aaac/toolchain","version":"0.1.0","author":{"name":"foo-log-inc"},"license":"MIT","_id":"@aaac/toolchain@0.1.0","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"homepage":"https://github.com/foo-log-inc/aaac#readme","bugs":{"url":"https://github.com/foo-log-inc/aaac/issues"},"bin":{"aaac-toolchain":"dist/cli/index.js"},"dist":{"shasum":"c89b220c228bd2c16f429ec0082dd23e44b73c66","tarball":"https://registry.npmjs.org/@aaac/toolchain/-/toolchain-0.1.0.tgz","fileCount":10,"integrity":"sha512-mR+XIN97e+U/MEbSfQxNpM+0mVU94NipFrCBQ3OvKi42uRDqufmMVr3pnfkyPNBN6ZTrbIGkYvBOAfkFhrkyKw==","signatures":[{"sig":"MEYCIQDMLqxcRXhBwU8vsYHPjNmngs/j69BAHNhg0zIx5P//KAIhAIWjK+j2NE/NISnzOnFGKKIShA0gTFv1bp1lUz5aldah","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59112},"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"}},"gitHead":"0a15e7038dc02b1fc340c4be833735236756ae34","scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"repository":{"url":"git+https://github.com/foo-log-inc/aaac.git","type":"git"},"_npmVersion":"10.9.8","description":"Toolchain contract definitions for artifact-bound tool declarations","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.0.0","yaml":"^2.8.3","commander":"^15.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^4.0.0","typescript":"^5.9.0"},"_npmOperationalInternal":{"tmp":"tmp/toolchain_0.1.0_1780925020112_0.8625002578260426","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@aaac/toolchain","version":"0.1.1","author":{"name":"foo-log-inc"},"license":"MIT","_id":"@aaac/toolchain@0.1.1","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"homepage":"https://github.com/foo-log-inc/aaac#readme","bugs":{"url":"https://github.com/foo-log-inc/aaac/issues"},"bin":{"aaac-toolchain":"dist/cli/index.js"},"dist":{"shasum":"8b9730057d44e7c4c6b85079b5c87a02f7393c03","tarball":"https://registry.npmjs.org/@aaac/toolchain/-/toolchain-0.1.1.tgz","fileCount":10,"integrity":"sha512-dchV9gOhWFWul3PDCHZm5hHK3hIorVDkrRGP/+5jcW748+N9Ta7WDY4+CUi7OJgtsNHTBM/erRUVbAsKLluBgQ==","signatures":[{"sig":"MEUCIQCfBjg/BiPoOKNyx1H5dbw6ihMWgLahvMi2ug2cPt78FAIgN+z6GuE1T6IKQ328M9e/J0GD7UOfwYctkcfvTG+69c4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59112},"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"}},"gitHead":"7b0d3bdd8681f9814f901976f5626349afa370a9","scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"repository":{"url":"git+https://github.com/foo-log-inc/aaac.git","type":"git"},"_npmVersion":"10.9.8","description":"Toolchain contract definitions for artifact-bound tool declarations","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.0.0","yaml":"^2.8.3","commander":"^15.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^4.0.0","typescript":"^5.9.0"},"_npmOperationalInternal":{"tmp":"tmp/toolchain_0.1.1_1780929537529_0.07501663962313576","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@aaac/toolchain","version":"0.1.2","author":{"name":"foo-log-inc"},"license":"MIT","_id":"@aaac/toolchain@0.1.2","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"homepage":"https://github.com/foo-log-inc/aaac#readme","bugs":{"url":"https://github.com/foo-log-inc/aaac/issues"},"bin":{"aaac-toolchain":"dist/cli/index.js"},"dist":{"shasum":"0de2d3c7a3cc6fbf16e058f56d97e02ef92b46be","tarball":"https://registry.npmjs.org/@aaac/toolchain/-/toolchain-0.1.2.tgz","fileCount":10,"integrity":"sha512-IRAQga09npSNufRlL95jmZXsVudAEL+chh6x4GS4C/jyuPX7QNRGR0md73ITDYgHGHuOzJN0DMFqCPaeg0X5OA==","signatures":[{"sig":"MEUCIQCiwcGYppTWolnaSiHQRO8eldbn3bhsW1etK9jVSiAgaAIgYhqpCs4aE7iTtmRSgvblLC15wEAfXaVmECR9O8ZYoq8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59427},"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"}},"gitHead":"de8fe91c0a4776dc988a222395727f820aac9708","scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"repository":{"url":"git+https://github.com/foo-log-inc/aaac.git","type":"git"},"_npmVersion":"10.9.8","description":"Toolchain contract definitions for artifact-bound tool declarations","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.0.0","yaml":"^2.8.3","commander":"^15.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^4.0.0","typescript":"^5.9.0"},"_npmOperationalInternal":{"tmp":"tmp/toolchain_0.1.2_1781014198113_0.3499699361316895","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@aaac/toolchain","version":"0.2.0","author":{"name":"foo-log-inc"},"license":"MIT","_id":"@aaac/toolchain@0.2.0","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"homepage":"https://github.com/foo-log-inc/aaac#readme","bugs":{"url":"https://github.com/foo-log-inc/aaac/issues"},"bin":{"aaac-toolchain":"dist/cli/index.js"},"dist":{"shasum":"527c9af347173311c0bc96eea9e404ecf1d20b0a","tarball":"https://registry.npmjs.org/@aaac/toolchain/-/toolchain-0.2.0.tgz","fileCount":10,"integrity":"sha512-bcW3oJULNE+VeFwtJ22zw8Lb5/+WnpI0XGpcRxwnV5b+bH/+druw3XlYSYrOYC6jNCw/2qzV/5VRmssy959P9A==","signatures":[{"sig":"MEUCIQCSDKwFL3Anb+3tEb97MJXChD0CJ+CLex9eHIEmwZWGNgIgO7kxzxdMLefIrFOml4paW7k3hPqB7O559/lCLwobM/A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64993},"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"}},"gitHead":"2a006c8a81942295c1262ec81fe9471061c0084b","scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc -p tsconfig.typecheck.json","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"repository":{"url":"git+https://github.com/foo-log-inc/aaac.git","type":"git"},"_npmVersion":"10.9.8","description":"Toolchain contract definitions for artifact-bound tool declarations","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.0.0","yaml":"^2.8.3","commander":"^15.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^4.0.0","typescript":"^5.9.0"},"_npmOperationalInternal":{"tmp":"tmp/toolchain_0.2.0_1785619615051_0.7225805541401236","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@aaac/toolchain","version":"0.2.1","author":{"name":"foo-log-inc"},"license":"MIT","_id":"@aaac/toolchain@0.2.1","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"homepage":"https://github.com/foo-log-inc/aaac#readme","bugs":{"url":"https://github.com/foo-log-inc/aaac/issues"},"bin":{"aaac-toolchain":"dist/cli/index.js"},"dist":{"shasum":"9ec08d0c1977a1c0c5624b1cc4c1558813a7c877","tarball":"https://registry.npmjs.org/@aaac/toolchain/-/toolchain-0.2.1.tgz","fileCount":10,"integrity":"sha512-kPyLbHn5OdBwRED/vs8CApbVjx/rmRTisuRslRzv2LMpOi71PAPRKGwrg/UNfjJdHisAnKJoVafoGZ612jhg+Q==","signatures":[{"sig":"MEUCIEA91jZS1uuZhF3QUI3Nv1X9bR940ubkESInDE8gyhZ/AiEAz1oRoaKu7bNTOF8knFv1EsX5R0Ui4wLM+GONbmWvgAI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64993},"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"}},"gitHead":"37c4317879e5ab132215ea7381e18fee9c1ab2fe","scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc -p tsconfig.typecheck.json","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"repository":{"url":"git+https://github.com/foo-log-inc/aaac.git","type":"git"},"_npmVersion":"10.9.8","description":"Toolchain contract definitions for artifact-bound tool declarations","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.0.0","yaml":"^2.8.3","commander":"^15.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^4.0.0","typescript":"^5.9.0"},"_npmOperationalInternal":{"tmp":"tmp/toolchain_0.2.1_1785880970006_0.3879841182451673","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@aaac/toolchain","version":"0.2.2","author":{"name":"foo-log-inc"},"license":"MIT","_id":"@aaac/toolchain@0.2.2","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"homepage":"https://github.com/foo-log-inc/aaac#readme","bugs":{"url":"https://github.com/foo-log-inc/aaac/issues"},"bin":{"aaac-toolchain":"dist/cli/index.js"},"dist":{"shasum":"a8f403d06260eabd0126769df5cb5e4067e798b9","tarball":"https://registry.npmjs.org/@aaac/toolchain/-/toolchain-0.2.2.tgz","fileCount":10,"integrity":"sha512-r/oTLp/9pzRmghYnQXHpVzkS9S9M1yOAa86Bz5Gyv9GpZX+xVW4nbAOHyg9/OzWV8bdAbzXVXEou+qUr10cS3Q==","signatures":[{"sig":"MEYCIQDfn1iDIvv1K04S+q3epROui6l3QCny9j9zKHMHTJFPKAIhAN5hH+NUFjDHCXOcC3zLwqsNVpMeiKtUN72e9JClpApN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65031},"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"}},"gitHead":"998df04304b8b2e7a7110b9c50dfae0936ed3d44","scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc -p tsconfig.typecheck.json","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"repository":{"url":"git+https://github.com/foo-log-inc/aaac.git","type":"git"},"_npmVersion":"10.9.8","description":"Toolchain contract definitions for artifact-bound tool declarations","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.0.0","yaml":"^2.8.3","commander":"^15.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^4.0.0","typescript":"^5.9.0"},"_npmOperationalInternal":{"tmp":"tmp/toolchain_0.2.2_1785995041547_0.17608756418070293","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@aaac/toolchain","version":"0.2.3","author":{"name":"foo-log-inc"},"license":"MIT","_id":"@aaac/toolchain@0.2.3","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"homepage":"https://github.com/foo-log-inc/aaac#readme","bugs":{"url":"https://github.com/foo-log-inc/aaac/issues"},"bin":{"aaac-toolchain":"dist/cli/index.js"},"dist":{"shasum":"cdebb2804209ef712ed0f1adca56e2ba37441ef3","tarball":"https://registry.npmjs.org/@aaac/toolchain/-/toolchain-0.2.3.tgz","fileCount":10,"integrity":"sha512-rxGpSXRMLsyuGmzdKSlxqqtccbE5wFqp9yJFNOZsee/Y4XxDeU2ejzwAO7gRR1qC7+V3Z9UEnJauCmOdOdcYvw==","signatures":[{"sig":"MEUCIBpGrXrzm5pIlOIb6+/UpoyQFLNwOwWG/WGsNF+IVkwOAiEAw8NfJ+dunis3uqOqW2PSXZAMlRUdsblaoYzUmGi+xnA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65031},"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"}},"gitHead":"8f252c7bad0efb8fc0c6f3769e8ddf3847ef057d","scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc -p tsconfig.typecheck.json","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"repository":{"url":"git+https://github.com/foo-log-inc/aaac.git","type":"git"},"_npmVersion":"10.9.8","description":"Toolchain contract definitions for artifact-bound tool declarations","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.0.0","yaml":"^2.8.3","commander":"^15.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^4.0.0","typescript":"^5.9.0"},"_npmOperationalInternal":{"tmp":"tmp/toolchain_0.2.3_1786003728131_0.5280491198313586","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"_id":"@aaac/toolchain@0.2.4","bin":{"aaac-toolchain":"dist/cli/index.js"},"bugs":{"url":"https://github.com/foo-log-inc/aaac/issues"},"dist":{"shasum":"c60afaf7cfb2eb1b296ce65940db794c56d62b11","tarball":"https://registry.npmjs.org/@aaac/toolchain/-/toolchain-0.2.4.tgz","fileCount":10,"integrity":"sha512-eM/w28rEbEkwA/vuLYBkkosQfdmba/dbC+dztpE7TPIK2QzIpC44P1xPxCkKzpHSmhQK9p8DwMB/77niiwTiaQ==","signatures":[{"sig":"MEQCIBLivuUNm7E+bi9liw2zM+MT331kb2YgcBC3Mx0idxepAiBrUrd7N2Y18EGcGzRWiRsukVwhHdw72owsfqEqEj0mLQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD4GS+DtRoW7EYFGQiMZyjfUxohdlD/Y/n1RkuHhD5vlAIgZXUSmedskPJNwJc7Md7nu78sY+wt/FQILbsxo29OG10="}],"unpackedSize":65031},"main":"dist/index.js","name":"@aaac/toolchain","type":"module","types":"dist/index.d.ts","author":{"name":"foo-log-inc"},"engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"417531094aae2a87764ad93e5ad3963fcd92127d","license":"MIT","scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc -p tsconfig.typecheck.json","prepublishOnly":"npm run clean && npm run build"},"version":"0.2.4","_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"homepage":"https://github.com/foo-log-inc/aaac#readme","repository":{"url":"git+https://github.com/foo-log-inc/aaac.git","type":"git"},"_npmVersion":"10.9.8","description":"Toolchain contract definitions for artifact-bound tool declarations","directories":{},"maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.0.0","yaml":"^2.8.3","commander":"^15.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^4.0.0","typescript":"^5.9.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/toolchain_0.2.4_1789017330970_0.7935557864447522"}}},"time":{"created":"2026-06-08T13:23:39.840Z","modified":"2026-09-10T05:15:31.328Z","0.1.0":"2026-06-08T13:23:40.254Z","0.1.1":"2026-06-08T14:38:57.681Z","0.1.2":"2026-06-09T14:09:58.240Z","0.2.0":"2026-08-01T21:26:55.196Z","0.2.1":"2026-08-04T22:02:50.165Z","0.2.2":"2026-08-06T05:44:01.704Z","0.2.3":"2026-08-06T08:08:48.302Z","0.2.4":"2026-09-10T05:15:31.053Z"},"bugs":{"url":"https://github.com/foo-log-inc/aaac/issues"},"author":{"name":"foo-log-inc"},"license":"MIT","homepage":"https://github.com/foo-log-inc/aaac#readme","repository":{"url":"git+https://github.com/foo-log-inc/aaac.git","type":"git"},"description":"Toolchain contract definitions for artifact-bound tool declarations","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"readme":"# @aaac/toolchain\n\nArtifact-bound toolchain declarations — defines which tools operate on which artifacts.\n\n## Install\n\n```bash\nnpm install @aaac/toolchain\n```\n\n## What it does\n\n`toolchain-contracts` is a declarative contract layer that binds **tools → artifacts**. Each toolchain entry declares what it consumes and produces, enabling static validation and dataflow lint across artifact-contracts, agent-contracts, and toolchain-contracts.\n\n## Quick Start\n\nCreate `toolchain-contracts.yaml`:\n\n```yaml\nschema: aaac/toolchain/0.1\n\nsystem:\n  id: my-project\n\ntoolchains:\n  prettier:\n    kind: library\n    module: prettier\n    artifacts:\n      consumes: [source-code]\n      produces: [source-code]\n    operations: [format]\n\n  eslint:\n    kind: cli\n    command: npx eslint --fix\n    artifacts:\n      consumes: [source-code]\n      produces: [source-code]\n\n  speckeeper:\n    kind: component\n    component_contract: ./speckeeper.component.yaml\n    artifacts:\n      consumes: [spec-md, codebase]\n      produces: [conformance-report]\n```\n\nValidate it:\n\n```bash\nnpx aaac-toolchain validate toolchain-contracts.yaml\n```\n\n## DSL Schema\n\n| Field | Description |\n|-------|-------------|\n| `schema` | Schema version (e.g. `aaac/toolchain/0.1`) |\n| `system` | Project identity (`id`, optional `name`) |\n| `toolchains` | Map of toolchain ID → toolchain definition |\n\nEach toolchain entry:\n\n| Field | Description |\n|-------|-------------|\n| `kind` | Binding type: `library`, `cli`, or `component` |\n| `module` | npm package name (required for `library`) |\n| `command` | Shell command (for `cli` when no `cli_contract`) |\n| `cli_contract` | Path to cli-contracts YAML (alternative for `cli`) |\n| `component_contract` | Path to the component contract this toolchain embodies (required for `component`) |\n| `artifacts` | `consumes` and `produces` artifact IDs |\n| `operations` | Operation names, in the namespace `component_contract` names — that component's operations when it is set, the tool's own verbs (`format`, `lint`) when it is not |\n\n## Kind types\n\n| Kind | Meaning | Required field |\n|------|---------|----------------|\n| `library` | npm package invoked programmatically | `module` |\n| `cli` | External CLI tool | `command` or `cli_contract` |\n| `component` | AaaC component with its own contract | `component_contract` |\n\n## `$refs`\n\nSplit toolchain definitions across files using `$refs`:\n\n```yaml\nschema: aaac/toolchain/0.1\n\nsystem:\n  id: my-project\n\ntoolchains:\n  inline-tool:\n    kind: library\n    module: inline-lib\n    artifacts:\n      consumes: [source-code]\n\n$refs:\n  - ./formatting.yaml\n  - ./linting.yaml\n```\n\nReferenced files contain additional `toolchains` entries that are merged into the root document. Duplicate toolchain IDs across files are rejected.\n\n## CLI Commands\n\n### `aaac-toolchain validate`\n\nValidate schema and semantic rules for a toolchain-contracts file.\n\n```bash\nnpx aaac-toolchain validate toolchain-contracts.yaml\n\n# Optional: check artifact IDs against a known set\nnpx aaac-toolchain validate toolchain-contracts.yaml \\\n  --artifact-ids source-code spec-md codebase conformance-report\n```\n\n### `aaac-toolchain lint`\n\nCheck dataflow integrity across contract layers.\n\n```bash\nnpx aaac-toolchain lint toolchain-contracts.yaml \\\n  --artifact-contracts artifact-contracts.yaml \\\n  --agent-contracts agent-contracts.yaml\n```\n\n### Exit codes\n\n| Code | Meaning |\n|-----:|---------|\n| 0 | All checks pass |\n| 1 | Validation or lint issues found |\n| 2 | File read or schema error |\n\n## Library API\n\n```typescript\nimport {\n  loadToolchainContracts,\n  parseToolchainFile,\n  validateToolchainContracts,\n  lintDataflow,\n} from \"@aaac/toolchain\";\n\n// Load and parse (resolves $refs)\nconst doc = await loadToolchainContracts(\"./toolchain-contracts.yaml\");\n\n// Validate\nconst issues = validateToolchainContracts(doc, {\n  artifactIds: [\"source-code\", \"spec-md\"],\n});\n\n// Lint dataflow against other contract layers\nconst lintIssues = lintDataflow(doc, {\n  artifacts: [{ id: \"source-code\", derived_from: [] }],\n  agents: [{ id: \"reviewer\", consumes: [\"source-code\"], produces: [\"review-report\"] }],\n});\n```\n\n| Function | Description |\n|----------|-------------|\n| `loadToolchainContracts` | Load YAML file, resolve `$refs`, validate schema |\n| `parseToolchainFile` | Parse file without `$ref` resolution |\n| `validateToolchainContracts` | Semantic validation (artifact IDs, duplicates) |\n| `lintDataflow` | Cross-contract dataflow integrity checks |\n\n## Related packages\n\n- [`@aaac/contracts`](../contracts/) — Component contract compiler and code generators\n- [`@aaac/runtime`](../runtime/) — Runtime SDK for executing AaaC workflows\n\n## License\n\nMIT — see [LICENSE](../../LICENSE).\n","readmeFilename":"README.md"}