{"_id":"@bladelabs/cmmn-zod","_rev":"8-4f07ce222d1641ac08e641bc54503383","name":"@bladelabs/cmmn-zod","dist-tags":{"latest":"0.5.1"},"versions":{"0.1.0":{"name":"@bladelabs/cmmn-zod","version":"0.1.0","license":"Apache-2.0","_id":"@bladelabs/cmmn-zod@0.1.0","maintainers":[{"name":"valera-bad","email":"valera@bladelabs.io"},{"name":"volodymyr.r","email":"volodymyr@bladelabs.io"},{"name":"garydu","email":"the.gary.du@gmail.com"},{"name":"samikichi","email":"sami@bladelabs.io"}],"dist":{"shasum":"7b4f086b67aff26743459ac0d44851bbfa0be627","tarball":"https://registry.npmjs.org/@bladelabs/cmmn-zod/-/cmmn-zod-0.1.0.tgz","fileCount":22,"integrity":"sha512-hvoAXgvhNmRm172d5DSGQPg9S5PiQj5UyOv4h7UrNv7GzOkvUdX/QIj7rg4vGV+gX9efwD4kMPP/RhjYADBT+A==","signatures":[{"sig":"MEQCIEhK5S4ZDBN0PD7NUHV0ySCzSj6EcjlXF+qWA/EnGnNYAiAyVKPKOzMUHUAxtSr40xwlgG6manDtgAqH6/TbWi7nbA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":530589},"type":"module","_from":"file:bladelabs-cmmn-zod-0.1.0.tgz","exports":{".":{"import":{"types":"./dist/schema.d.ts","default":"./dist/schema.js"},"require":{"types":"./dist/schema.d.cts","default":"./dist/schema.cjs"}},"./schema":{"import":{"types":"./dist/schema.d.ts","default":"./dist/schema.js"},"require":{"types":"./dist/schema.d.cts","default":"./dist/schema.cjs"}},"./metamodel":{"import":{"types":"./dist/metamodel.d.ts","default":"./dist/metamodel.js"},"require":{"types":"./dist/metamodel.d.cts","default":"./dist/metamodel.cjs"}},"./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run","build":"tsup","check":"pnpm build && pnpm test && pnpm type-check && pnpm test:exports","test:watch":"vitest","type-check":"tsc --noEmit","test:exports":"publint --pack npm --strict","generate:overloads":"tsx scripts/generate-overloads.ts"},"_npmUser":{"name":"samikichi","email":"sami@bladelabs.io"},"_resolved":"/tmp/3f06f2e245f638ee859259d909d458a7/bladelabs-cmmn-zod-0.1.0.tgz","_integrity":"sha512-hvoAXgvhNmRm172d5DSGQPg9S5PiQj5UyOv4h7UrNv7GzOkvUdX/QIj7rg4vGV+gX9efwD4kMPP/RhjYADBT+A==","_npmVersion":"11.9.0","description":"Generate Zod schemas from OMG CMMN 1.1 metamodel — like drizzle-zod but for case management models","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","tsup":"^8.0.0","vitest":"^4.0.18","publint":"^0.3.0","typescript":"^5.9.3","cmmn-moddle":"^5.0.0","@arethetypeswrong/cli":"^0.17.0"},"peerDependencies":{"zod":"^3.25.0"},"_npmOperationalInternal":{"tmp":"tmp/cmmn-zod_0.1.0_1775481272839_0.6097299216968881","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@bladelabs/cmmn-zod","version":"0.2.0","license":"Apache-2.0","_id":"@bladelabs/cmmn-zod@0.2.0","maintainers":[{"name":"valera-bad","email":"valera@bladelabs.io"},{"name":"volodymyr.r","email":"volodymyr@bladelabs.io"},{"name":"garydu","email":"the.gary.du@gmail.com"},{"name":"samikichi","email":"sami@bladelabs.io"}],"dist":{"shasum":"374da49f483e15bac75e4d1c33778e4552af1b8e","tarball":"https://registry.npmjs.org/@bladelabs/cmmn-zod/-/cmmn-zod-0.2.0.tgz","fileCount":22,"integrity":"sha512-AbTnEn4JHLZwKVtcud9slNThdKRr5lAgeep7+KSS8G8WJBPqnEvFd5bezScRhs9DWl3lA8/ppn2cp2ymgoX67g==","signatures":[{"sig":"MEUCID9EraEwhZkpxP7k8V+SIi7Tiyy9wlIN/yk0gsrBUsLuAiEAuMteM+WSWbBD2K/at8lV66Sw1Qj98LhjOtDZe1gVLc0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":536609},"type":"module","_from":"file:bladelabs-cmmn-zod-0.2.0.tgz","exports":{".":{"import":{"types":"./dist/schema.d.ts","default":"./dist/schema.js"},"require":{"types":"./dist/schema.d.cts","default":"./dist/schema.cjs"}},"./schema":{"import":{"types":"./dist/schema.d.ts","default":"./dist/schema.js"},"require":{"types":"./dist/schema.d.cts","default":"./dist/schema.cjs"}},"./metamodel":{"import":{"types":"./dist/metamodel.d.ts","default":"./dist/metamodel.js"},"require":{"types":"./dist/metamodel.d.cts","default":"./dist/metamodel.cjs"}},"./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run","build":"tsup","check":"pnpm build && pnpm test && pnpm type-check && pnpm test:exports","test:watch":"vitest","type-check":"tsc --noEmit","test:exports":"publint --pack npm --strict","generate:overloads":"tsx scripts/generate-overloads.ts"},"_npmUser":{"name":"samikichi","email":"sami@bladelabs.io"},"_resolved":"/tmp/0f27cc302da7569cd8b23e779d97d289/bladelabs-cmmn-zod-0.2.0.tgz","_integrity":"sha512-AbTnEn4JHLZwKVtcud9slNThdKRr5lAgeep7+KSS8G8WJBPqnEvFd5bezScRhs9DWl3lA8/ppn2cp2ymgoX67g==","_npmVersion":"11.9.0","description":"Generate Zod schemas from OMG CMMN 1.1 metamodel — like drizzle-zod but for case management models","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","tsup":"^8.0.0","vitest":"^4.0.18","publint":"^0.3.0","typescript":"^5.9.3","cmmn-moddle":"^5.0.0","@arethetypeswrong/cli":"^0.17.0"},"peerDependencies":{"zod":"^3.25.0"},"_npmOperationalInternal":{"tmp":"tmp/cmmn-zod_0.2.0_1775486705140_0.40284895995641423","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@bladelabs/cmmn-zod","version":"0.3.0","license":"Apache-2.0","_id":"@bladelabs/cmmn-zod@0.3.0","maintainers":[{"name":"valera-bad","email":"valera@bladelabs.io"},{"name":"volodymyr.r","email":"volodymyr@bladelabs.io"},{"name":"garydu","email":"the.gary.du@gmail.com"},{"name":"samikichi","email":"sami@bladelabs.io"}],"dist":{"shasum":"fc8a51d01534106164e44b9a71e33d343c7b2002","tarball":"https://registry.npmjs.org/@bladelabs/cmmn-zod/-/cmmn-zod-0.3.0.tgz","fileCount":22,"integrity":"sha512-9lbiTZ+Z4SvswEymp8eUgui4cUSHtRcuykpGADsCQk/IT7BLoib2z6dvsFjZ4yL1ah1TdJYmV0waxGP+ub19MA==","signatures":[{"sig":"MEUCIFxDOndMyqbHtJaK+4K3u2IgudVlClWrmE1f3S/J1pLhAiEAjXTWHnywLMt1wGkQ2pZzyctuocANPlYak6/MSLDDr8A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":853375},"type":"module","_from":"file:bladelabs-cmmn-zod-0.3.0.tgz","exports":{".":{"import":{"types":"./dist/schema.d.ts","default":"./dist/schema.js"},"require":{"types":"./dist/schema.d.cts","default":"./dist/schema.cjs"}},"./schema":{"import":{"types":"./dist/schema.d.ts","default":"./dist/schema.js"},"require":{"types":"./dist/schema.d.cts","default":"./dist/schema.cjs"}},"./metamodel":{"import":{"types":"./dist/metamodel.d.ts","default":"./dist/metamodel.js"},"require":{"types":"./dist/metamodel.d.cts","default":"./dist/metamodel.cjs"}},"./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run","build":"tsup","check":"pnpm build && pnpm test && pnpm type-check && pnpm test:exports","test:watch":"vitest","type-check":"tsc --noEmit","test:exports":"publint --pack npm --strict","generate:overloads":"tsx scripts/generate-overloads.ts"},"_npmUser":{"name":"samikichi","email":"sami@bladelabs.io"},"_resolved":"/tmp/d71383500681d9484724e5884528d2ce/bladelabs-cmmn-zod-0.3.0.tgz","_integrity":"sha512-9lbiTZ+Z4SvswEymp8eUgui4cUSHtRcuykpGADsCQk/IT7BLoib2z6dvsFjZ4yL1ah1TdJYmV0waxGP+ub19MA==","_npmVersion":"11.9.0","description":"Generate Zod schemas from OMG CMMN 1.1 metamodel — like drizzle-zod but for case management models","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","tsup":"^8.0.0","vitest":"^4.0.18","publint":"^0.3.0","typescript":"^5.9.3","cmmn-moddle":"^5.0.0","@arethetypeswrong/cli":"^0.17.0"},"peerDependencies":{"zod":"^3.25.0"},"_npmOperationalInternal":{"tmp":"tmp/cmmn-zod_0.3.0_1775505980268_0.1585405929493997","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@bladelabs/cmmn-zod","version":"0.4.0","license":"Apache-2.0","_id":"@bladelabs/cmmn-zod@0.4.0","maintainers":[{"name":"valera-bad","email":"valera@bladelabs.io"},{"name":"volodymyr.r","email":"volodymyr@bladelabs.io"},{"name":"garydu","email":"the.gary.du@gmail.com"},{"name":"samikichi","email":"sami@bladelabs.io"}],"dist":{"shasum":"1aeee468231210dc12cbb7e34d7f048b828dd85b","tarball":"https://registry.npmjs.org/@bladelabs/cmmn-zod/-/cmmn-zod-0.4.0.tgz","fileCount":22,"integrity":"sha512-3xVCHJRmcVv5BplUemViVN7bPdifMVQ+N5cElxTSs2poBwM9gIVO3Yj0YKsaLcL+BhP6Y8zIaZUe0hyO252RNw==","signatures":[{"sig":"MEYCIQDz8IUISCyJYpsoALj1hjgfXivnBIOrjUjheWiuoJ6HgwIhAIONapaPt++7hoVJczKGAKVkATa0YQpWPOjR0nA7g+I7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1005597},"type":"module","_from":"file:bladelabs-cmmn-zod-0.4.0.tgz","exports":{".":{"import":{"types":"./dist/schema.d.ts","default":"./dist/schema.js"},"require":{"types":"./dist/schema.d.cts","default":"./dist/schema.cjs"}},"./schema":{"import":{"types":"./dist/schema.d.ts","default":"./dist/schema.js"},"require":{"types":"./dist/schema.d.cts","default":"./dist/schema.cjs"}},"./metamodel":{"import":{"types":"./dist/metamodel.d.ts","default":"./dist/metamodel.js"},"require":{"types":"./dist/metamodel.d.cts","default":"./dist/metamodel.cjs"}},"./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run","build":"tsup","check":"pnpm build && pnpm test && pnpm type-check && pnpm test:exports","test:watch":"vitest","type-check":"tsc --noEmit","test:exports":"publint --pack npm --strict","generate:overloads":"tsx scripts/generate-overloads.ts"},"_npmUser":{"name":"samikichi","email":"sami@bladelabs.io"},"_resolved":"/tmp/16722d954d0131bac039a2b37d4112b9/bladelabs-cmmn-zod-0.4.0.tgz","_integrity":"sha512-3xVCHJRmcVv5BplUemViVN7bPdifMVQ+N5cElxTSs2poBwM9gIVO3Yj0YKsaLcL+BhP6Y8zIaZUe0hyO252RNw==","_npmVersion":"11.9.0","description":"Generate Zod schemas from OMG CMMN 1.1 metamodel — like drizzle-zod but for case management models","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","tsup":"^8.0.0","vitest":"^4.0.18","publint":"^0.3.0","typescript":"^5.9.3","cmmn-moddle":"^5.0.0","@arethetypeswrong/cli":"^0.17.0"},"peerDependencies":{"zod":"^3.25.0"},"_npmOperationalInternal":{"tmp":"tmp/cmmn-zod_0.4.0_1775551713490_0.5806863992814335","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@bladelabs/cmmn-zod","version":"0.5.0","license":"Apache-2.0","_id":"@bladelabs/cmmn-zod@0.5.0","maintainers":[{"name":"valera-bad","email":"valera@bladelabs.io"},{"name":"volodymyr.r","email":"volodymyr@bladelabs.io"},{"name":"garydu","email":"the.gary.du@gmail.com"},{"name":"happypatrik","email":"patrik@bladelabs.io"},{"name":"samikichi","email":"sami@bladelabs.io"}],"dist":{"shasum":"56eaed87b9851757d15c18143a8d96ff6652afa6","tarball":"https://registry.npmjs.org/@bladelabs/cmmn-zod/-/cmmn-zod-0.5.0.tgz","fileCount":22,"integrity":"sha512-K5sOGM2PvPuT2bGEUEnqUwhWaPqdgKL/NBIHan+lYefztXVM4lg9XwYUCpMzlGcoRDNqQ7hEB0TuG4Ef24A6Eg==","signatures":[{"sig":"MEUCIQDFP+79/hz9+ePDYmojZ7uCaFm6S9EKosmn2xD24NIZ1wIgAKEKQwgtAqhrebghIIPQncqgiKPe2iBd62NBJ6QSE8I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1006914},"type":"module","exports":{".":"./src/schema.ts","./schema":"./src/schema.ts","./metamodel":"./src/metamodel.ts","./package.json":"./package.json"},"gitHead":"a6d082654ea684e1c99bfcd0c98ab36c8f43cd57","private":false,"scripts":{"test":"vitest run","build":"tsup","check":"pnpm build && pnpm test && pnpm type-check && pnpm test:exports","test:watch":"vitest","type-check":"tsc --noEmit","test:exports":"publint --pack npm --strict","prepublishOnly":"pnpm build","generate:overloads":"tsx scripts/generate-overloads.ts"},"_npmUser":{"name":"samikichi","email":"sami@bladelabs.io"},"_npmVersion":"11.9.0","description":"Generate Zod schemas from OMG CMMN 1.1 metamodel — like drizzle-zod but for case management models","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{},"publishConfig":{"exports":{".":{"import":{"types":"./dist/schema.d.ts","default":"./dist/schema.js"},"require":{"types":"./dist/schema.d.cts","default":"./dist/schema.cjs"}},"./schema":{"import":{"types":"./dist/schema.d.ts","default":"./dist/schema.js"},"require":{"types":"./dist/schema.d.cts","default":"./dist/schema.cjs"}},"./metamodel":{"import":{"types":"./dist/metamodel.d.ts","default":"./dist/metamodel.js"},"require":{"types":"./dist/metamodel.d.cts","default":"./dist/metamodel.cjs"}},"./package.json":"./package.json"}},"_hasShrinkwrap":false,"devDependencies":{"zod":"catalog:","tsup":"^8.0.0","vitest":"catalog:","publint":"^0.3.0","typescript":"catalog:","cmmn-moddle":"^5.0.0","@zeroh/tsconfig":"workspace:*","@arethetypeswrong/cli":"^0.17.0"},"peerDependencies":{"zod":"^3.25.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cmmn-zod_0.5.0_1777324828210_0.917489617146714","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@bladelabs/cmmn-zod","version":"0.5.1","private":false,"license":"Apache-2.0","sideEffects":false,"type":"module","description":"Generate Zod schemas from OMG CMMN 1.1 metamodel — like drizzle-zod but for case management models","exports":{".":{"import":{"types":"./dist/schema.d.ts","default":"./dist/schema.js"},"require":{"types":"./dist/schema.d.cts","default":"./dist/schema.cjs"}},"./schema":{"import":{"types":"./dist/schema.d.ts","default":"./dist/schema.js"},"require":{"types":"./dist/schema.d.cts","default":"./dist/schema.cjs"}},"./metamodel":{"import":{"types":"./dist/metamodel.d.ts","default":"./dist/metamodel.js"},"require":{"types":"./dist/metamodel.d.cts","default":"./dist/metamodel.cjs"}},"./package.json":"./package.json"},"scripts":{"build":"tsup","type-check":"tsc --noEmit","test":"vitest run","test:watch":"vitest","generate:overloads":"tsx scripts/generate-overloads.ts","prepublishOnly":"pnpm build","test:exports":"publint --pack npm --strict","check":"pnpm build && pnpm test && pnpm type-check && pnpm test:exports"},"peerDependencies":{"zod":"^3.25.0 || ^4.0.0"},"dependencies":{},"devDependencies":{"@arethetypeswrong/cli":"^0.17.0","@zeroh/tsconfig":"workspace:*","cmmn-moddle":"^5.0.0","publint":"^0.3.0","tsup":"^8.0.0","typescript":"catalog:","vitest":"catalog:","zod":"catalog:"},"gitHead":"3d5314632ff83a6634a6f068e9b71f5a33d2a29f","_id":"@bladelabs/cmmn-zod@0.5.1","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-yQ+4F5EAuMzuXK7AZgxSpw9ypOPmtrVw1rZ3NTFCM1kn8xIC6bXGVgVT5GDwOEBdLiVGIoeNbO9YUMzadt9vjA==","shasum":"088c811c97a90ca7181b716148af6b4580716266","tarball":"https://registry.npmjs.org/@bladelabs/cmmn-zod/-/cmmn-zod-0.5.1.tgz","fileCount":22,"unpackedSize":1006660,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDIkICiUNId2E2p1+lDsPE0yPlzZie1uYmqN/NmPkQj5gIhAMn7Z5C9hLtVxlcrfdkDeKKTP+U8JpJA5SIgIdQfej/7"}]},"_npmUser":{"name":"samikichi","email":"sami@bladelabs.io"},"directories":{},"maintainers":[{"name":"valera-bad","email":"valera@bladelabs.io"},{"name":"volodymyr.r","email":"volodymyr@bladelabs.io"},{"name":"garydu","email":"the.gary.du@gmail.com"},{"name":"happypatrik","email":"patrik@bladelabs.io"},{"name":"samikichi","email":"sami@bladelabs.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cmmn-zod_0.5.1_1777325196851_0.05849317251921238"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-06T13:14:32.753Z","modified":"2026-04-27T21:26:37.203Z","0.1.0":"2026-04-06T13:14:33.000Z","0.2.0":"2026-04-06T14:45:05.283Z","0.3.0":"2026-04-06T20:06:20.430Z","0.4.0":"2026-04-07T08:48:33.695Z","0.5.0":"2026-04-27T21:20:28.450Z","0.5.1":"2026-04-27T21:26:36.995Z"},"license":"Apache-2.0","description":"Generate Zod schemas from OMG CMMN 1.1 metamodel — like drizzle-zod but for case management models","maintainers":[{"name":"valera-bad","email":"valera@bladelabs.io"},{"name":"volodymyr.r","email":"volodymyr@bladelabs.io"},{"name":"garydu","email":"the.gary.du@gmail.com"},{"name":"happypatrik","email":"patrik@bladelabs.io"},{"name":"samikichi","email":"sami@bladelabs.io"}],"readme":"# @bladelabs/cmmn-zod\n\nGenerate Zod schemas from the OMG CMMN 1.1 metamodel — like `drizzle-zod` but for case management models.\n\n## Install\n\n```bash\nnpm install @bladelabs/cmmn-zod cmmn-moddle\n# or\npnpm add @bladelabs/cmmn-zod cmmn-moddle\n```\n\n`cmmn-moddle` provides the `cmmn.json` metamodel descriptor. `zod` is a peer dependency.\n\n## Usage\n\n### Golden shapes (pure absorption)\n\n```typescript\nimport { createCmmnSchema, createCmmnEnumSchema } from '@bladelabs/cmmn-zod'\n\n// Generate a complete Stage schema from the metamodel\nexport const StageShape = createCmmnSchema('Stage')\n\n// Generate an enum schema\nexport const AssociationDirectionShape = createCmmnEnumSchema('AssociationDirection')\n```\n\n### Domain shapes (refined + extended)\n\n```typescript\nimport { createCmmnSchema } from '@bladelabs/cmmn-zod'\nimport { z } from 'zod/v4'\n\n// Add Islamic finance extensions to a CMMN Stage\nexport const IslamicCaseStage = createCmmnSchema('Stage', {\n  extensions: {\n    maqasid_refs: z.array(z.string()),\n    obligation_refs: z.array(z.string()),\n  },\n  metaOverrides: {\n    id: 'zeroh:grc-islamic/murabaha-stage',\n    cascadeGroup: 'grc-islamic-finance',\n  },\n})\n```\n\n### Coercion for XML parsing\n\n```typescript\n// XML attributes come in as strings — coerce to native types\nconst StageXmlSchema = createCmmnSchema('Stage', { coerce: true })\nStageXmlSchema.parse({ id: 'stage-1', autoComplete: 'true' }) // autoComplete → boolean true\n```\n\n### Project-wide factory\n\n```typescript\nimport { createCmmnSchemaFactory } from '@bladelabs/cmmn-zod'\n\nconst { createCmmnSchema, createCmmnEnumSchema } = createCmmnSchemaFactory({\n  coerce: true,\n  metaOverrides: { cascadeGroup: 'grc-islamic' },\n})\n\n// All schemas from this factory inherit coerce + cascadeGroup\nconst stage = createCmmnSchema('Stage')\nconst dir = createCmmnEnumSchema('AssociationDirection')\n```\n\n### Discovery helpers\n\n```typescript\nimport {\n  getCmmnTypeNames,\n  getCmmnEnumNames,\n  getCmmnTypeProperties,\n} from '@bladelabs/cmmn-zod'\n\ngetCmmnTypeNames()       // ['ApplicabilityRule', 'Artifact', 'Association', ...]\ngetCmmnEnumNames()       // ['AssociationDirection', 'CaseFileItemTransition', ...]\ngetCmmnTypeProperties('Stage') // all inherited + own properties\n```\n\n## CMMN Metamodel Summary\n\n**Source:** OMG CMMN 1.1 — `cmmn-moddle@5.0.0` (`resources/cmmn/json/cmmn.json`)\n\n- **56 complex types** — Case, Stage, HumanTask, CaseFileItem, Sentry, PlanItem, ...\n- **5 enumerations** — AssociationDirection, CaseFileItemTransition, MultiplicityEnum, PlanItemTransition, RelationshipDirection\n- **Namespace URI:** `http://www.omg.org/spec/CMMN/20151109/MODEL`\n- **Prefix:** `cmmn`\n\n### Key inheritance chains\n\n```\nCMMNElement\n  ├─ Case\n  ├─ CaseFile\n  ├─ CaseFileItem\n  ├─ Criterion (abstract)\n  │    ├─ EntryCriterion\n  │    └─ ExitCriterion\n  ├─ Definitions\n  ├─ Parameter (abstract)\n  │    ├─ CaseParameter\n  │    ├─ CaseRoles\n  │    ├─ DecisionParameter\n  │    └─ ProcessParameter\n  ├─ PlanItemDefinition (abstract)\n  │    ├─ EventListener\n  │    │    └─ TimerEventListener\n  │    │         └─ UserEventListener\n  │    ├─ Milestone\n  │    ├─ PlanFragment\n  │    │    └─ Stage  ← primary container\n  │    └─ Task (abstract)\n  │         ├─ CaseTask\n  │         ├─ DecisionTask\n  │         ├─ HumanTask\n  │         └─ ProcessTask\n  ├─ Sentry\n  ├─ StartTrigger (abstract)\n  │    ├─ CaseFileItemStartTrigger\n  │    └─ PlanItemStartTrigger\n  └─ TableItem (abstract)\n       ├─ DiscretionaryItem\n       └─ PlanningTable\n```\n\n### Known quirk: `\"emumerations\"` typo in cmmn.json\n\n`cmmn-moddle@5.0.0` ships `cmmn.json` with the key `\"emumerations\"` (extra 'm') instead of `\"enumerations\"`. This package normalises it transparently on load — consumers see `enumerations` throughout.\n\n## API Reference\n\n### `createCmmnSchema(typeName, options?)`\n\nCreates a `z.ZodObject` from any CMMN complex type. Resolves the full inheritance chain, applies refinements, and populates `.meta()` with SKOS identity and standards provenance.\n\n| Option | Type | Description |\n|--------|------|-------------|\n| `refinements` | `Record<key, ZodType \\| fn>` | Per-field override or callback (type-safe when typeName is a literal) |\n| `extensions` | `Record<string, ZodType>` | Extra fields beyond the CMMN spec |\n| `metaOverrides` | `Record<string, unknown>` | Override auto-generated `.meta()` fields |\n| `coerce` | `boolean` | Use `z.coerce.*` for XML string→native conversion |\n\n### `createCmmnEnumSchema(enumName, options?)`\n\nCreates a `z.ZodEnum` from any CMMN enumeration. Populates `.meta()` with the same provenance shape.\n\n### `createCmmnSchemaFactory(defaults)`\n\nReturns `{ createCmmnSchema, createCmmnEnumSchema, createCmmnValidationSchema, createCmmnPartialSchema }` with defaults pre-applied.\n\n### `createCmmnValidationSchema(typeName, options?)`\n\nStrict schema — all fields required. Use for inbound validation.\n\n### `createCmmnPartialSchema(typeName, options?)`\n\nPartial schema — all fields optional. Use for PATCH-style updates.\n\n## Relationship to @bladelabs/dmn-zod\n\nThis package mirrors `@bladelabs/dmn-zod` exactly, targeting CMMN 1.1 instead of DMN 1.4. Both follow the same drizzle-zod pattern: read metamodel → map properties → resolve inheritance → apply refinements → attach provenance meta.\n\nIn the ZeroH GRC pipeline:\n- **DMN** handles decision logic (`dmn-zod`)\n- **CMMN** handles case orchestration (`cmmn-zod`) — the _when_ and _how_ around decisions\n\n## Upgrading (when OMG releases a new CMMN version)\n\n```bash\npnpm update cmmn-moddle                          # 1. Update moddle\ncp node_modules/cmmn-moddle/resources/cmmn/json/*.json src/data/  # 2. Copy descriptor\n# 3. Edit src/standard-config.ts (version, fullName, specPdfUrl)\npnpm generate:overloads && pnpm check            # 4. Regenerate + verify\n```\n\nSee `src/standard-config.ts` for the ~5 fields to update. Everything else derives from the moddle JSON automatically.\n\n## Architecture\n\n```\nsrc/\n  data/cmmn.json           # Bundled moddle descriptor (copied from cmmn-moddle)\n  standard-config.ts       # Spec constants — the ONE file to edit on upgrade\n  metamodel.ts             # Reads descriptor, resolves inheritance chains\n  descriptions.ts          # Hand-authored field descriptions from OMG spec\n  schema.ts                # Schema factory — derives all meta from config + descriptor\n  types.generated.ts       # Auto-generated: type names, interfaces, TYPE_CHAINS\n```\n\n## License\n\nApache-2.0 — Copyright 2026 Blade Labs Inc.\n","readmeFilename":"README.md"}