{"_id":"@aigentive/wire-core","_rev":"4-51aeb7d5b975aa817f5329edabec7c05","name":"@aigentive/wire-core","dist-tags":{"latest":"1.0.4"},"versions":{"1.0.0":{"name":"@aigentive/wire-core","version":"1.0.0","license":"MIT","_id":"@aigentive/wire-core@1.0.0","maintainers":[{"name":"lazabogdan","email":"laza.bogdan@macro-net.ro"},{"name":"themefy","email":"adrian@themefy.io"}],"dist":{"shasum":"3e8f99ff39a66bcdbd306633de80ed0e14cb8631","tarball":"https://registry.npmjs.org/@aigentive/wire-core/-/wire-core-1.0.0.tgz","fileCount":46,"integrity":"sha512-7JeDBbrNSnZdibX3t92Htqx/f0sTVvljT5Tg/4Ywkao3cxsirsM4SOjzG5WYpGvmZ5WZ/wvJZUKng8QQ303y3A==","signatures":[{"sig":"MEYCIQCi0JYAte2h5+KzcluFUtH1BGexALoF49eNXSzAETQowgIhANR5BNsxUrHgHPK/qvJRdh/Q7lfK1mFa9NqHl6sE2Krq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":477585},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./layout":{"types":"./dist/layout.d.ts","default":"./dist/layout.js"},"./schema":{"types":"./dist/schema.d.ts","default":"./dist/schema.js"}},"gitHead":"774d334c3f30944b061c06285b6e911fa046cc20","scripts":{"build":"tsc -p tsconfig.json","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"themefy","email":"adrian@themefy.io"},"_npmVersion":"11.11.1","description":"Wire — canonical schema, validation, normalization, and layout for LLM-first diagrams.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"zod":"^3.24.2","@dagrejs/dagre":"^1.1.4","zod-to-json-schema":"^3.23.5"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wire-core_1.0.0_1777486051726_0.5688548301221843","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@aigentive/wire-core","version":"1.0.1","license":"MIT","_id":"@aigentive/wire-core@1.0.1","maintainers":[{"name":"lazabogdan","email":"laza.bogdan@macro-net.ro"},{"name":"themefy","email":"adrian@themefy.io"}],"dist":{"shasum":"48f1800de4660dece0f715046df63173a691b178","tarball":"https://registry.npmjs.org/@aigentive/wire-core/-/wire-core-1.0.1.tgz","fileCount":46,"integrity":"sha512-HnhFzlgy4buxhSJsqZvBPc7WTzS3CTEoPciQwYSqzavSd0BmS+BUV2zRS+p2mMt2YjZUzXN0coYheHZ/DYDuSA==","signatures":[{"sig":"MEYCIQC4qWBZ3UtY2heQhVT3mflpGTGhYqHNE3P+0I8+6kf3vwIhAOfisFy/qJPZdxjn+aYZIX5MCAMDqQNcsc3nixl0dtYe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":490792},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./layout":{"types":"./dist/layout.d.ts","default":"./dist/layout.js"},"./schema":{"types":"./dist/schema.d.ts","default":"./dist/schema.js"}},"gitHead":"f1119f38a261d69547d70c41299ee7f9cefc9c63","scripts":{"build":"tsc -p tsconfig.json","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"themefy","email":"adrian@themefy.io"},"_npmVersion":"11.11.1","description":"Wire — canonical schema, validation, normalization, and layout for LLM-first diagrams.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"zod":"^3.24.2","@dagrejs/dagre":"^1.1.4","zod-to-json-schema":"^3.23.5"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wire-core_1.0.1_1777624350426_0.09391031152986651","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@aigentive/wire-core","version":"1.0.2","license":"MIT","_id":"@aigentive/wire-core@1.0.2","maintainers":[{"name":"lazabogdan","email":"laza.bogdan@macro-net.ro"},{"name":"themefy","email":"adrian@themefy.io"}],"dist":{"shasum":"57303724faf1c400d2dcb39b52b46fbab9509a72","tarball":"https://registry.npmjs.org/@aigentive/wire-core/-/wire-core-1.0.2.tgz","fileCount":46,"integrity":"sha512-1oDbfgQzGoffqk7WP/B8KlEggVIGkmDwKDDgUNkBDUk6hGRZ+/msCn2SPUnzuAWfymf5+Lv0pg10hcnxrNBXaw==","signatures":[{"sig":"MEQCIBFDyfGol1BgNovF7O4BjF/urX215Xvq2FuSkax0vFYNAiAbJsRvsIFmFGRJCW25DLLFMoYGd1J2ifEUnpY9HsApyA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":490835},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./layout":{"types":"./dist/layout.d.ts","default":"./dist/layout.js"},"./schema":{"types":"./dist/schema.d.ts","default":"./dist/schema.js"}},"gitHead":"1653d570f84889f54b22b2293eddf5d4d9a647c4","scripts":{"build":"tsc -p tsconfig.json","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"themefy","email":"adrian@themefy.io"},"_npmVersion":"11.11.1","description":"Wire — canonical schema, validation, normalization, and layout for LLM-first diagrams.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"zod":"^3.24.2","@dagrejs/dagre":"^1.1.4","zod-to-json-schema":"^3.23.5"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wire-core_1.0.2_1777626207143_0.07026019223191682","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@aigentive/wire-core","version":"1.0.4","description":"Wire — canonical schema, validation, normalization, and layout for LLM-first diagrams.","license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/aigentive/wirediagram.git","directory":"packages/wire-core"},"type":"module","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./schema":{"types":"./dist/schema.d.ts","default":"./dist/schema.js"},"./layout":{"types":"./dist/layout.d.ts","default":"./dist/layout.js"}},"scripts":{"build":"tsc -p tsconfig.json","typecheck":"tsc --noEmit -p tsconfig.json"},"dependencies":{"@dagrejs/dagre":"^1.1.4","zod":"^3.24.2","zod-to-json-schema":"^3.23.5"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_id":"@aigentive/wire-core@1.0.4","gitHead":"12594c6937561cfc522c5692fa236a1882d51c5e","bugs":{"url":"https://github.com/aigentive/wirediagram/issues"},"homepage":"https://github.com/aigentive/wirediagram#readme","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-8tZxb1q8RCtcaphB4DJiW/Ri2QmYzqsGwT+MNYo1guKKlVqnloI1sCVvkTbJpKshU/cFRebome+WJWZbHyL8Qw==","shasum":"d793a0568d58afe36118a995917b7c8b0b45d39d","tarball":"https://registry.npmjs.org/@aigentive/wire-core/-/wire-core-1.0.4.tgz","fileCount":46,"unpackedSize":497651,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aigentive%2fwire-core@1.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGE0DseiP3pQDaYsr2+d7FTliQ3mUvhayMcWfLX8CwSeAiAdGpqfQ1zEl17Q0IdYGCxgYtDGdx6HCKfdQInKgf/bsg=="}]},"_npmUser":{"name":"themefy","email":"adrian@themefy.io"},"directories":{},"maintainers":[{"name":"lazabogdan","email":"laza.bogdan@macro-net.ro"},{"name":"themefy","email":"adrian@themefy.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/wire-core_1.0.4_1783027525622_0.20592962358148137"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-29T18:07:31.634Z","modified":"2026-07-02T21:25:26.085Z","1.0.0":"2026-04-29T18:07:31.854Z","1.0.1":"2026-05-01T08:32:30.576Z","1.0.2":"2026-05-01T09:03:27.278Z","1.0.4":"2026-07-02T21:25:25.764Z"},"license":"Apache-2.0","description":"Wire — canonical schema, validation, normalization, and layout for LLM-first diagrams.","maintainers":[{"name":"lazabogdan","email":"laza.bogdan@macro-net.ro"},{"name":"themefy","email":"adrian@themefy.io"}],"readme":"# @aigentive/wire-core\n\nCanonical Wire schema, validation, normalization, and layout. Zero React; pure TypeScript.\n\n## Install\n\n```bash\nnpm install @aigentive/wire-core\n```\n\n## Quick start\n\n```ts\nimport {\n  parseWireDiagram,\n  validate,\n  layoutDiagram,\n  toMermaid,\n  addNode,\n  connect,\n  emptyDiagram\n} from \"@aigentive/wire-core\";\n\nconst diagram = parseWireDiagram({\n  layout: \"LR\",\n  nodes: [\n    { id: \"webhook\", kind: \"trigger\", title: \"Webhook fires\" },\n    { id: \"classify\", kind: \"ai\", title: \"Classify intent\", from: \"webhook\", model: \"gpt-4.1\" }\n  ]\n});\n\nconst result = validate(diagram);\nif (!result.valid) console.error(result.issues);\n\nconst layout = layoutDiagram(diagram);            // dagre-positioned nodes\nconst mermaid = toMermaid(diagram);               // export as Mermaid string\n\n// Mutations are pure — every editor returns a new diagram.\nlet d = emptyDiagram({ layout: \"LR\" });\nd = addNode(d, { kind: \"trigger\", title: \"Webhook fires\", id: \"webhook\" }).diagram;\nd = addNode(d, { kind: \"ai\", title: \"Classify\", from: \"webhook\", model: \"gpt-4.1\" }).diagram;\n```\n\n## Exports\n\n| Export | Purpose |\n|---|---|\n| `WireDiagramSchema`, `parseWireDiagram`, `safeParseWireDiagram` | Zod schema + parsers |\n| `NodeSchema`, kind-specific schemas (`AINodeSchema`, …) | Per-node Zod schemas |\n| `validate(input)` | Structural + reference validation; returns `ValidationIssue[]` with codes + repair hints |\n| `normalize(diagram)` | Resolves `from`/`after` into explicit edges + node index |\n| `layoutDiagram(diagram, opts?)` | Dagre layout returning `{x,y,width,height}` per node |\n| `toMermaid(diagram)` | Export as Mermaid `flowchart` string |\n| `addNode`, `updateNode`, `removeNode`, `connect`, `disconnect`, `addNote`, `setLayout`, `emptyDiagram` | Pure immutable editors |\n| `generateNodeId(opts)`, `slugify(s)` | ID utilities |\n| `splitFromRef(ref)` | Parse `\"id.branch\"` |\n\n## Schema overview\n\n```ts\ntype WireDiagram = {\n  version: 1;\n  id?: string;\n  title?: string;\n  layout: \"LR\" | \"TB\" | \"RL\" | \"BT\";   // default LR\n  layoutEngine?: \"dagre\" | \"elk\"; // \"elk\" is reserved and currently falls back to dagre.\n  nodes: WireNode[];\n  edges: WireEdge[];                    // optional explicit edges\n  metadata?: Record<string, unknown>;\n};\n\ntype WireNode = {\n  id: string;\n  kind: \"trigger\" | \"action\" | \"ai\" | \"tool\" | \"condition\" | \"human\" |\n        \"memory\" | \"retrieval\" | \"guardrail\" | \"end\" | \"note\" | \"group\";\n  title: string;\n  description?: string;\n  tone?: \"default\" | \"success\" | \"warning\" | \"error\" | \"info\" | \"ai\";\n  from?: string | string[];   // \"<sourceId>\" or \"<sourceId>.<branch>\"\n  after?: string | string[];  // alias for `from`\n  attachedTo?: string;        // notes/annotations only\n  parent?: string;            // group nesting\n  position?: { x: number; y: number };\n  size?: { width: number; height: number };\n  data?: Record<string, unknown>;\n  // condition: branches: string[]\n  // ai: model?, prompt?, tools?\n  // tool: ref?\n  // note: body?\n  // group: children?\n};\n```\n\n## Validation codes\n\n| Code | Severity | Meaning |\n|---|---|---|\n| `schema.*` | error | Zod schema rejection |\n| `node.duplicate-id` | error | Two nodes with the same id |\n| `node.attached-to-missing` | error | `attachedTo` points to a missing node |\n| `node.parent-missing` | error | `parent` points to a missing node |\n| `node.parent-not-group` | error | `parent` is not a `group` node |\n| `condition.no-branches` | error | Condition without branches |\n| `condition.duplicate-branch` | error | Repeated branch name |\n| `edge.from-missing` / `edge.to-missing` | error | Source/target node missing |\n| `edge.branch-from-non-condition` | error | `id.branch` from a non-condition node |\n| `edge.unknown-branch` | error | Branch name not declared on the source condition |\n| `node.orphan` | warning | No incoming or outgoing edges |\n| `edge.self-loop` | warning | Node references itself |\n\n## License\n\nApache-2.0\n","readmeFilename":"README.md","homepage":"https://github.com/aigentive/wirediagram#readme","repository":{"type":"git","url":"git+https://github.com/aigentive/wirediagram.git","directory":"packages/wire-core"},"bugs":{"url":"https://github.com/aigentive/wirediagram/issues"}}