{"_id":"@bladelabs/bpmn-zod","_rev":"8-03401288aec66f951d703502d7f9cc6b","name":"@bladelabs/bpmn-zod","dist-tags":{"latest":"0.5.1"},"versions":{"0.1.0":{"name":"@bladelabs/bpmn-zod","version":"0.1.0","license":"Apache-2.0","_id":"@bladelabs/bpmn-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":"2ad280199ab6056cb621642a4ef3571c0cf50c1c","tarball":"https://registry.npmjs.org/@bladelabs/bpmn-zod/-/bpmn-zod-0.1.0.tgz","fileCount":22,"integrity":"sha512-kvniS76uo1Ana1Z6g9keQNKKJ8ixe/Ww+RhyIuoARyIvRe1h95eCyRyLKzBz5XodSFruLXvq5ezUVWYtS1HQEw==","signatures":[{"sig":"MEUCIQDe7rPJ1RZ3qhmboOeLQK7izJethCyXtDUjZ8jHrIWfbAIgEQKfVRdsgSRIYvazPj2TsN0D9NGTAMnP1OaziPsuwLc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":974478},"type":"module","_from":"file:bladelabs-bpmn-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/8e174e972569b873d557c20cac2d558e/bladelabs-bpmn-zod-0.1.0.tgz","_integrity":"sha512-kvniS76uo1Ana1Z6g9keQNKKJ8ixe/Ww+RhyIuoARyIvRe1h95eCyRyLKzBz5XodSFruLXvq5ezUVWYtS1HQEw==","_npmVersion":"11.9.0","description":"Generate Zod schemas from OMG BPMN 2.0 metamodel — like drizzle-zod but for process 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","bpmn-moddle":"^10.0.0","@arethetypeswrong/cli":"^0.17.0"},"peerDependencies":{"zod":"^3.25.0"},"_npmOperationalInternal":{"tmp":"tmp/bpmn-zod_0.1.0_1775481277497_0.03547754557010152","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@bladelabs/bpmn-zod","version":"0.2.0","license":"Apache-2.0","_id":"@bladelabs/bpmn-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":"bc9830dd4be9227b4ef102fe3a8fab01f8d2c0c1","tarball":"https://registry.npmjs.org/@bladelabs/bpmn-zod/-/bpmn-zod-0.2.0.tgz","fileCount":22,"integrity":"sha512-fBr1hKMdO2banK+bHHK0eCBr9uYRAc4zZcawab/QNpsCZJJVmsKXD+UkuT3tY5cddw1Rs18LTlmSIkpIHp4Ctw==","signatures":[{"sig":"MEUCIE+02W1kj0a9c3onJKb2AEnxpptbuhy3OLL9tr8XdP/qAiEA9g7ku2Jyp81KWIyHXKDn4PJ5FMKtvKtGCWvK/E+tUgw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":985106},"type":"module","_from":"file:bladelabs-bpmn-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/72ea6b6290e084179de92e417e242288/bladelabs-bpmn-zod-0.2.0.tgz","_integrity":"sha512-fBr1hKMdO2banK+bHHK0eCBr9uYRAc4zZcawab/QNpsCZJJVmsKXD+UkuT3tY5cddw1Rs18LTlmSIkpIHp4Ctw==","_npmVersion":"11.9.0","description":"Generate Zod schemas from OMG BPMN 2.0 metamodel — like drizzle-zod but for process 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","bpmn-moddle":"^10.0.0","@arethetypeswrong/cli":"^0.17.0"},"peerDependencies":{"zod":"^3.25.0"},"_npmOperationalInternal":{"tmp":"tmp/bpmn-zod_0.2.0_1775486699965_0.902407185199045","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@bladelabs/bpmn-zod","version":"0.3.0","license":"Apache-2.0","_id":"@bladelabs/bpmn-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":"da9e8424c2a5b7a9ab09490f087c11aaeabfe114","tarball":"https://registry.npmjs.org/@bladelabs/bpmn-zod/-/bpmn-zod-0.3.0.tgz","fileCount":22,"integrity":"sha512-MRWHvJ8Pmfdf9EY+Tf0RRC1SAWW+suhYovg5MRC55PG0DORKn0ymO7zJYv+DH0R9UDAMqlv8vrFr6YVzgS0+tA==","signatures":[{"sig":"MEQCICWJrSVLqAkgX6ZhEMiIpX8TA7unNRLfBq5qyemLrMrYAiATyNEgonPfvcJ1Hbw7XKmnCgyKB2GY4JxLx31yQBYW8g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1643792},"type":"module","_from":"file:bladelabs-bpmn-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/79e73de67b4cfa0b37c3072242098460/bladelabs-bpmn-zod-0.3.0.tgz","_integrity":"sha512-MRWHvJ8Pmfdf9EY+Tf0RRC1SAWW+suhYovg5MRC55PG0DORKn0ymO7zJYv+DH0R9UDAMqlv8vrFr6YVzgS0+tA==","_npmVersion":"11.9.0","description":"Generate Zod schemas from OMG BPMN 2.0 metamodel — like drizzle-zod but for process 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","bpmn-moddle":"^10.0.0","@arethetypeswrong/cli":"^0.17.0"},"peerDependencies":{"zod":"^3.25.0"},"_npmOperationalInternal":{"tmp":"tmp/bpmn-zod_0.3.0_1775504369794_0.7352760821835473","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@bladelabs/bpmn-zod","version":"0.4.0","license":"Apache-2.0","_id":"@bladelabs/bpmn-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":"06a92426920b25952ffb5cd5c7371ff16d2021a4","tarball":"https://registry.npmjs.org/@bladelabs/bpmn-zod/-/bpmn-zod-0.4.0.tgz","fileCount":22,"integrity":"sha512-rIInHni6z8fLA90HNuizYavrqNobbuvgRfVOuZ/AfZHji/y4+Be4diTfmRB4rzPDkXFpkqkRM0QlmmGuOMM/SA==","signatures":[{"sig":"MEQCIDSDacDPUPNfsz4rZhgMuf974vj+Gz9g5je4y5ITruosAiBvj8xEQvsBBWnTNQb58WmMm+z4e43W13b3LU+FZLi4lQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2096456},"type":"module","_from":"file:bladelabs-bpmn-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/29c76937fd95f0b6fb9a2a87efa5699f/bladelabs-bpmn-zod-0.4.0.tgz","_integrity":"sha512-rIInHni6z8fLA90HNuizYavrqNobbuvgRfVOuZ/AfZHji/y4+Be4diTfmRB4rzPDkXFpkqkRM0QlmmGuOMM/SA==","_npmVersion":"11.9.0","description":"Generate Zod schemas from OMG BPMN 2.0 metamodel — like drizzle-zod but for process 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","bpmn-moddle":"^10.0.0","@arethetypeswrong/cli":"^0.17.0"},"peerDependencies":{"zod":"^3.25.0"},"_npmOperationalInternal":{"tmp":"tmp/bpmn-zod_0.4.0_1775551707185_0.24393520686204706","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@bladelabs/bpmn-zod","version":"0.5.0","license":"Apache-2.0","_id":"@bladelabs/bpmn-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":"9ba4ef5c03569a867cc014d0bfc6f8a7037e4f72","tarball":"https://registry.npmjs.org/@bladelabs/bpmn-zod/-/bpmn-zod-0.5.0.tgz","fileCount":22,"integrity":"sha512-RiSney1v2fdT7O+9HFpBuYjPqvjI5lLT40KXfMT0heTQlN8ZgfeZVKY/LEo3EYawJFiNCSN9XeEFyH180Vw2gw==","signatures":[{"sig":"MEQCIFLX6QQzSNLhroVP572j7iz88GkugPeKqKBRSerlrCC3AiBHABbzxwnz8RqKpynWkcKguGLpHykmn2rdU/byd53r5A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2097773},"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 BPMN 2.0 metamodel — like drizzle-zod but for process 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:","bpmn-moddle":"^10.0.0","@zeroh/tsconfig":"workspace:*","@arethetypeswrong/cli":"^0.17.0"},"peerDependencies":{"zod":"^3.25.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bpmn-zod_0.5.0_1777324818338_0.07593913792316931","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@bladelabs/bpmn-zod","version":"0.5.1","private":false,"license":"Apache-2.0","sideEffects":false,"type":"module","description":"Generate Zod schemas from OMG BPMN 2.0 metamodel — like drizzle-zod but for process 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:*","bpmn-moddle":"^10.0.0","publint":"^0.3.0","tsup":"^8.0.0","typescript":"catalog:","vitest":"catalog:","zod":"catalog:"},"gitHead":"3d5314632ff83a6634a6f068e9b71f5a33d2a29f","_id":"@bladelabs/bpmn-zod@0.5.1","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-sHQ67/sVIOb9ViuE2LUPnF49ZS/k08hEZfcVolB/k4kJ/SNwE+v0QAhY3HOm3zYguXaU4uQTAdVbeTrnKddHPQ==","shasum":"538dafb1f192fdc79d0231714861f0a2ccdf450d","tarball":"https://registry.npmjs.org/@bladelabs/bpmn-zod/-/bpmn-zod-0.5.1.tgz","fileCount":22,"unpackedSize":2097519,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC1L/iYH+P7f/ROW2TqlQ14o8Jb6Gdz6K2O2GmLSFZIMgIhAIGbDzJ3AqkNwy7ICV8oFuWDL7h590DKyK2RQQ+0C8Mr"}]},"_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/bpmn-zod_0.5.1_1777325191199_0.9707575142797709"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-06T13:14:37.388Z","modified":"2026-04-27T21:26:31.570Z","0.1.0":"2026-04-06T13:14:37.662Z","0.2.0":"2026-04-06T14:45:00.126Z","0.3.0":"2026-04-06T19:39:30.024Z","0.4.0":"2026-04-07T08:48:27.450Z","0.5.0":"2026-04-27T21:20:18.559Z","0.5.1":"2026-04-27T21:26:31.339Z"},"license":"Apache-2.0","description":"Generate Zod schemas from OMG BPMN 2.0 metamodel — like drizzle-zod but for process 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/bpmn-zod\n\nGenerate Zod schemas from the OMG BPMN 2.0 metamodel — like drizzle-zod but for process models.\n\n## Overview\n\n`@bladelabs/bpmn-zod` reads the bundled `bpmn.json` descriptor from [bpmn-moddle](https://github.com/bpmn-io/bpmn-moddle) and generates Zod schemas at runtime for all 137 BPMN 2.0 types. It follows the same pattern as `@bladelabs/dmn-zod` but targets the OMG BPMN 2.0 specification.\n\n- **137 complex types** (Process, Task, SequenceFlow, Gateway, Event, ...)\n- **9 enumerations** (ProcessType, GatewayDirection, AssociationDirection, ...)\n- **Zero monorepo coupling** — only peers on `zod`\n- **Works everywhere** — browser, edge, serverless (no filesystem at runtime)\n- **Inheritance chain resolution** — inherited fields included automatically\n- **Standards provenance** — every schema carries `.meta()` with OMG BPMN 2.0 citation\n\n## Installation\n\n```bash\npnpm add @bladelabs/bpmn-zod zod\n```\n\n## Usage\n\n### Golden shape (pure absorption)\n\n```typescript\nimport { createBpmnSchema } from '@bladelabs/bpmn-zod'\n\nconst ProcessSchema = createBpmnSchema('Process')\nconst result = ProcessSchema.parse({\n  id: 'proc-001',\n  name: 'Murabaha Approval',\n  isExecutable: true,\n  processType: 'Private',\n})\n```\n\n### Enum schema\n\n```typescript\nimport { createBpmnEnumSchema } from '@bladelabs/bpmn-zod'\n\nconst ProcessTypeSchema = createBpmnEnumSchema('ProcessType')\nProcessTypeSchema.parse('Private')  // ✓\nProcessTypeSchema.parse('INVALID')  // throws\n```\n\n### Domain shape (refined + extended)\n\n```typescript\nimport { createBpmnSchema } from '@bladelabs/bpmn-zod'\nimport { z } from 'zod'\n\nconst IslamicFinanceProcess = createBpmnSchema('Process', {\n  refinements: {\n    processType: () => createBpmnEnumSchema('ProcessType').default('Private'),\n    isExecutable: () => z.literal(true),\n  },\n  extensions: {\n    sharia_board_ref: z.string(),\n    is_halal_certified: z.boolean(),\n  },\n})\n```\n\n### Project-wide factory\n\n```typescript\nimport { createBpmnSchemaFactory } from '@bladelabs/bpmn-zod'\n\nconst { createBpmnSchema, createBpmnEnumSchema } = createBpmnSchemaFactory({\n  coerce: true,  // XML string → native type conversion\n  metaOverrides: { cascadeGroup: 'grc-islamic' },\n})\n```\n\n### Discovery helpers\n\n```typescript\nimport { getBpmnTypeNames, getBpmnEnumNames, getBpmnTypeProperties } from '@bladelabs/bpmn-zod'\n\ngetBpmnTypeNames()              // ['Interface', 'Operation', 'Process', ...]\ngetBpmnEnumNames()              // ['ProcessType', 'GatewayDirection', ...]\ngetBpmnTypeProperties('Process') // full property list including inherited\n```\n\n## BPMN Metamodel Facts\n\n| Metric | Value |\n|--------|-------|\n| Complex types | 137 |\n| Enumerations | 9 |\n| Max inheritance depth | 5 |\n| Namespace prefix | `bpmn` |\n| Namespace URI | `http://www.omg.org/spec/BPMN/20100524/MODEL` |\n| Source | [bpmn-moddle](https://github.com/bpmn-io/bpmn-moddle) `resources/bpmn/json/bpmn.json` |\n\n### Enumerations\n\n| Name | Values |\n|------|--------|\n| `ProcessType` | None, Public, Private |\n| `GatewayDirection` | Unspecified, Converging, Diverging, Mixed |\n| `EventBasedGatewayType` | Parallel, Exclusive |\n| `RelationshipDirection` | None, Forward, Backward, Both |\n| `ItemKind` | Physical, Information |\n| `ChoreographyLoopType` | None, Standard, MultiInstanceSequential, MultiInstanceParallel |\n| `AssociationDirection` | None, One, Both |\n| `MultiInstanceBehavior` | None, One, All, Complex |\n| `AdHocOrdering` | Parallel, Sequential |\n\n## Schema Meta\n\nEvery generated schema carries `.meta()` with:\n\n```typescript\n{\n  id: 'zeroh:bpmn/process',\n  prefLabel: 'BPMN Process',\n  cascadeGroup: 'bpmn',\n  category: 'bpmn',\n  exactMatch: ['omg-bpmn:Process'],\n  broader: ['zeroh:bpmn/flow-elements-container'],\n  wasDerivedFrom: ['https://www.omg.org/spec/BPMN/2.0/PDF', ...],\n  standards_provenance: {\n    source_type: 'formal',\n    standard: 'OMG Business Process Model and Notation 2.0',\n    standard_uri: 'https://www.omg.org/spec/BPMN/',\n    version: '2.0',\n    conformance_predicate: 'dcterms:conformsTo',\n    fields_from_standard: [...],\n    zeroh_extensions: [],\n  }\n}\n```\n\n## API Reference\n\n| Export | Description |\n|--------|-------------|\n| `createBpmnSchema(typeName, options?)` | Generate Zod object schema for a BPMN type |\n| `createBpmnEnumSchema(enumName, options?)` | Generate Zod enum schema for a BPMN enumeration |\n| `createBpmnSchemaFactory(defaults)` | Create a factory with pre-configured defaults |\n| `createBpmnValidationSchema(typeName, options?)` | Strict schema — all fields required |\n| `createBpmnPartialSchema(typeName, options?)` | Partial schema — all fields optional |\n| `getBpmnTypeNames()` | List all 137 complex type names |\n| `getBpmnEnumNames()` | List all 9 enumeration names |\n| `getBpmnTypeProperties(typeName)` | Full property list including inherited |\n| `registerBpmnSchema(typeName, schema)` | Pre-register hand-authored schema |\n| `initBpmnMetamodel(descriptor)` | Override bundled metamodel |\n\n## Upgrading (when OMG releases a new BPMN version)\n\n```bash\npnpm update bpmn-moddle                          # 1. Update moddle\ncp node_modules/bpmn-moddle/resources/bpmn/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/bpmn.json           # Bundled moddle descriptor (copied from bpmn-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 © 2026 Blade Labs Inc.\n","readmeFilename":"README.md"}