{"_id":"@aigx/parser","name":"@aigx/parser","dist-tags":{"latest":"1.2.0"},"versions":{"1.2.0":{"name":"@aigx/parser","version":"1.2.0","description":"Reference parser for AIGX (AI Genome Exchange) genomes. Zero dependencies. Text-in, data-out; data model matches the AIGX 1.1 JSON schema.","type":"module","main":"./index.mjs","exports":{".":"./index.mjs"},"engines":{"node":">=18"},"keywords":["aigx","parser","ai","agents","context","genome"],"license":"MIT","author":{"name":"Grégory Parisotto","email":"gregory@feex.it"},"repository":{"type":"git","url":"git+https://github.com/Lolner95/AIGX.git","directory":"packages/parser"},"homepage":"https://github.com/Lolner95/AIGX/tree/main/packages/parser#readme","bugs":{"url":"https://github.com/Lolner95/AIGX/issues"},"gitHead":"41eff48b25dfeee1db6aa8baf32731833f2bfc76","_id":"@aigx/parser@1.2.0","_nodeVersion":"25.2.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-NPdKDLYi75AckIzG4k5DcqoqKyNLSAoIPCFK8NKh78zkdrFovJanlgippaTuCdhG8V8c2IOQjGBQT3gbGQmngA==","shasum":"d6bc5aa1a7ce512c1c6e25339027682f64c496cf","tarball":"https://registry.npmjs.org/@aigx/parser/-/parser-1.2.0.tgz","fileCount":3,"unpackedSize":8329,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICTkBoBFZCfzipwlX74JoUnyFgwy+0v/pNNHlV4ZxPBYAiADaEH9sz3TdBPjjpgvQ15k+ESkI3ySkkBn2p0cOwogEA=="}]},"_npmUser":{"name":"lolner95","email":"gregory@feex.it"},"directories":{},"maintainers":[{"name":"lolner95","email":"gregory@feex.it"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/parser_1.2.0_1781977191826_0.8018618256939691"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-20T17:39:51.712Z","1.2.0":"2026-06-20T17:39:52.029Z","modified":"2026-06-20T17:39:52.217Z"},"maintainers":[{"name":"lolner95","email":"gregory@feex.it"}],"description":"Reference parser for AIGX (AI Genome Exchange) genomes. Zero dependencies. Text-in, data-out; data model matches the AIGX 1.1 JSON schema.","homepage":"https://github.com/Lolner95/AIGX/tree/main/packages/parser#readme","keywords":["aigx","parser","ai","agents","context","genome"],"repository":{"type":"git","url":"git+https://github.com/Lolner95/AIGX.git","directory":"packages/parser"},"author":{"name":"Grégory Parisotto","email":"gregory@feex.it"},"bugs":{"url":"https://github.com/Lolner95/AIGX/issues"},"license":"MIT","readme":"# @aigx/parser\n\nThe reference parser for **AIGX — AI Genome Exchange** genomes. Zero dependencies, Node 18+. Pure\ntext-in / data-out functions plus a few filesystem conveniences. The data model it produces matches\n[`standard/AIGX-1.1.schema.json`](https://github.com/Lolner95/AIGX/blob/main/standard/AIGX-1.1.schema.json).\n\n```bash\nnpm install @aigx/parser\n```\n\n## Usage\n\n```js\nimport { parseGenome, resolveFile, parseRules, parseFiles } from '@aigx/parser'\n\n// Parse a whole repository into the canonical model\nconst model = parseGenome(process.cwd())\n//  → { aigxVersion: '1.1', root, genomes: [ { dir, protocol, product, rules, files, domainCards } ] }\n\n// Resolve one file's boundary (role, forbid, gotcha, checks)\nconst entry = resolveFile(model, 'src/features/auth/login.ts')\n\n// Or parse raw text without touching the filesystem\nconst rules = parseRules('<aigx-architecture><rule id=\"ARCH-1\">…</rule></aigx-architecture>')\nconst files = parseFiles('<aigx-files><file path=\"a.ts\"><check>ARCH-1</check></file></aigx-files>')\n```\n\n## API\n\n| Function | Returns |\n|---|---|\n| `parseGenome(root)` | `{ aigxVersion, root, genomes[] }` — the full canonical model |\n| `parseGenomeDir(dir, root?)` | one genome object |\n| `findGenomeDirs(root)` | array of `.aigx/` directory paths |\n| `parseRules(text)` | `[{ id, concern, text }]` |\n| `parseFiles(text)` | `[{ path, domain, role, forbid, gotcha, checks }]` |\n| `parseFileBlock(block)` | one file entry, or `null` |\n| `parseProtocol(text)` | `{ version, readFirst, steps[] }` |\n| `parseProduct(text)` | `{ name, standard, freshness, stack }` |\n| `resolveFile(model, path)` | the matching entry (with `genome`), or `null` |\n| `stripComments(text)` | text with XML comments removed |\n\nAll functions are zero-dependency and side-effect free except `parseGenome`, `parseGenomeDir`, and\n`findGenomeDirs`, which read the filesystem.\n\n## License\n\nMIT © Grégory Parisotto\n","readmeFilename":"README.md","_rev":"1-f10d917a8f7f1f44ec0975fa51bf83e3"}