{"_id":"@anby/manifest-schema","_rev":"8-b6685e10a31ed417a19dd57cbd864853","name":"@anby/manifest-schema","dist-tags":{"latest":"1.4.1"},"versions":{"0.1.0":{"name":"@anby/manifest-schema","version":"0.1.0","keywords":["anby","anby-platform","manifest","json-schema","validator","sdk"],"author":{"name":"ANBY"},"license":"MIT","_id":"@anby/manifest-schema@0.1.0","maintainers":[{"name":"anby-platform","email":"aie@bravebits.vn"}],"homepage":"https://github.com/bravebits-labs/anby-platform#readme","bugs":{"url":"https://github.com/bravebits-labs/anby-platform/issues"},"dist":{"shasum":"3ad20c802dc5955d7e4f7da68b6e97a0bb954941","tarball":"https://registry.npmjs.org/@anby/manifest-schema/-/manifest-schema-0.1.0.tgz","fileCount":10,"integrity":"sha512-S5WtGw2NC3iBEhyR+PRGZvrK0dPoYzEccba1pBSLmt9hGbe5nkWjXIaRqqfh+VgtmLlMm3Ee4SA4IzjqlOTEZA==","signatures":[{"sig":"MEUCIQD/MmzT8MEt6AWB03hFVAwCWMRH3vPi214gNSYobKcXAAIgKNM0x5mS8QkYjjDSl/WntJschOWWBBELgDXqzHwLqpI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24646},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"gitHead":"e6ca56750efd239f2bbf39cb92c3701cc45f91e9","scripts":{"build":"tsc -p tsconfig.cjs.json && tsc -p tsconfig.esm.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"anby-platform","email":"aie@bravebits.vn"},"repository":{"url":"git+https://github.com/bravebits-labs/anby-platform.git","type":"git","directory":"packages/manifest-schema"},"_npmVersion":"11.0.0","description":"JSON Schema, TypeScript types, and runtime validator for the Anby Platform app manifest","directories":{},"_nodeVersion":"20.18.2","dependencies":{"ajv":"^8.17.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0"},"_npmOperationalInternal":{"tmp":"tmp/manifest-schema_0.1.0_1775537866206_0.8459558889410719","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@anby/manifest-schema","version":"0.1.1","keywords":["anby","anby-platform","manifest","json-schema","validator","sdk"],"author":{"name":"ANBY"},"license":"MIT","_id":"@anby/manifest-schema@0.1.1","maintainers":[{"name":"anby-platform","email":"aie@bravebits.vn"}],"homepage":"https://github.com/bravebits-labs/anby-platform-packages#readme","bugs":{"url":"https://github.com/bravebits-labs/anby-platform-packages/issues"},"dist":{"shasum":"3ee1b0c06f8f6724a6303f643f9f390ae2f52886","tarball":"https://registry.npmjs.org/@anby/manifest-schema/-/manifest-schema-0.1.1.tgz","fileCount":14,"integrity":"sha512-fg/iLvc9YvpBy0gWrVm8oooJI7brUd36UINii4nOeJ3xRpdrx40lOUDxGfO5mtZB19OSeJyOrCAJCgh7vrqHqA==","signatures":[{"sig":"MEQCIBhWgYwA9Da8c3G2F8z1AQ1EnbZWmJL4/PjsIYyGHgq+AiBHRdag2MPTQTPHCfabCKhe25QJS/2wliVfWVBC5PLuPQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anby%2fmanifest-schema@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":37116},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"gitHead":"1daaeadcdc2f7094199804c46f1f0dbf1d845ab1","scripts":{"build":"tsc -p tsconfig.cjs.json && tsc -p tsconfig.esm.json && node ../fixup-dual.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"anby-platform","email":"aie@bravebits.vn"},"repository":{"url":"git+https://github.com/bravebits-labs/anby-platform-packages.git","type":"git","directory":"packages/manifest-schema"},"_npmVersion":"10.8.2","description":"JSON Schema, TypeScript types, and runtime validator for the Anby Platform app manifest","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ajv":"^8.17.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0"},"_npmOperationalInternal":{"tmp":"tmp/manifest-schema_0.1.1_1775540795973_0.05829173786607522","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@anby/manifest-schema","version":"1.0.0","keywords":["anby","anby-platform","manifest","json-schema","validator","sdk"],"author":{"name":"ANBY"},"license":"MIT","_id":"@anby/manifest-schema@1.0.0","maintainers":[{"name":"anby-platform","email":"aie@bravebits.vn"}],"homepage":"https://github.com/bravebits-labs/anby-platform-packages#readme","bugs":{"url":"https://github.com/bravebits-labs/anby-platform-packages/issues"},"dist":{"shasum":"43126ef88ee7404bfac756b2baa38a6db2aa7176","tarball":"https://registry.npmjs.org/@anby/manifest-schema/-/manifest-schema-1.0.0.tgz","fileCount":14,"integrity":"sha512-DjhkSJsUn6mlJcgGzYQoiq28okq86KZHHwB8SEQnPS4kLf5My7cR5TJe0dyIhtGJfjAZfGixQ1qeOcOxnvtLOA==","signatures":[{"sig":"MEQCIHMYThZmO0iS7BnTvPk9Gv2TyRuDF8Rzhf2JUoKdqm9TAiA5wNi0+Sr9+/vJXgYCUNMAPa9ef8F66TKwnqPdES0sqA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anby%2fmanifest-schema@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48817},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"gitHead":"2959600e6962694f27bb176910c1e30b139f5dde","scripts":{"build":"tsc -p tsconfig.cjs.json && tsc -p tsconfig.esm.json && node ../fixup-dual.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"anby-platform","email":"aie@bravebits.vn"},"repository":{"url":"git+https://github.com/bravebits-labs/anby-platform-packages.git","type":"git","directory":"packages/manifest-schema"},"_npmVersion":"10.8.2","description":"JSON Schema, TypeScript types, and runtime validator for the Anby Platform app manifest","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ajv":"^8.17.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0"},"_npmOperationalInternal":{"tmp":"tmp/manifest-schema_1.0.0_1776353721092_0.426352941597941","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@anby/manifest-schema","version":"1.1.0","keywords":["anby","anby-platform","manifest","json-schema","validator","sdk"],"author":{"name":"ANBY"},"license":"MIT","_id":"@anby/manifest-schema@1.1.0","maintainers":[{"name":"anby-platform","email":"aie@bravebits.vn"}],"homepage":"https://github.com/bravebits-labs/anby-platform-packages#readme","bugs":{"url":"https://github.com/bravebits-labs/anby-platform-packages/issues"},"dist":{"shasum":"7f2f7a7a83a790482380529f51d62536769c8554","tarball":"https://registry.npmjs.org/@anby/manifest-schema/-/manifest-schema-1.1.0.tgz","fileCount":14,"integrity":"sha512-YhgSiXoBQWGIOx7giZ+CK/9iNyRrR2INLel7ju36bKbJyBlpMiJTFSniHTuEgs0dDAct9+MBGcNctzwJ11/3qQ==","signatures":[{"sig":"MEYCIQCJ0dt7Q3ABqfFvizA7KnJZfrPiTIczUPG1d2VSRCxVOwIhAPVSmZj3cNYRxkLYB2nWvcqIo/ZAR8GihYQcO14vPDJM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anby%2fmanifest-schema@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48817},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"gitHead":"bf828c612523599958179bf97de9c4d2fbf2b5ff","scripts":{"build":"tsc -p tsconfig.cjs.json && tsc -p tsconfig.esm.json && node ../fixup-dual.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"anby-platform","email":"aie@bravebits.vn"},"repository":{"url":"git+https://github.com/bravebits-labs/anby-platform-packages.git","type":"git","directory":"packages/manifest-schema"},"_npmVersion":"10.8.2","description":"JSON Schema, TypeScript types, and runtime validator for the Anby Platform app manifest","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ajv":"^8.17.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0"},"_npmOperationalInternal":{"tmp":"tmp/manifest-schema_1.1.0_1776939895837_0.06563392963094739","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@anby/manifest-schema","version":"1.2.0","keywords":["anby","anby-platform","manifest","json-schema","validator","sdk"],"author":{"name":"ANBY"},"license":"MIT","_id":"@anby/manifest-schema@1.2.0","maintainers":[{"name":"anby-platform","email":"aie@bravebits.vn"}],"homepage":"https://github.com/bravebits-labs/anby-platform-packages#readme","bugs":{"url":"https://github.com/bravebits-labs/anby-platform-packages/issues"},"dist":{"shasum":"d09b4093c9412e930dbc6a943aa54dc39db9e25b","tarball":"https://registry.npmjs.org/@anby/manifest-schema/-/manifest-schema-1.2.0.tgz","fileCount":14,"integrity":"sha512-+qQTUqWMlyzoPJw11DZwwbgouECa9NMK+9UhTsRpOXbZrLH+JomEPEa5sC09kT1/ihmdnCjYPr3A7KQimnq5cQ==","signatures":[{"sig":"MEQCIEiu+PAFNgLyVb79BwzpzjSzvAKqhNL7EN81YlDGn7QdAiBHzAqm++5oulaAMlX4qBZ59tYS92oWv+U9k+lobQHHnw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anby%2fmanifest-schema@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":53548},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"gitHead":"74bfea0cc764955a123697715e227bd9635316c4","scripts":{"build":"tsc -p tsconfig.cjs.json && tsc -p tsconfig.esm.json && node ../fixup-dual.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"anby-platform","email":"aie@bravebits.vn"},"repository":{"url":"git+https://github.com/bravebits-labs/anby-platform-packages.git","type":"git","directory":"packages/manifest-schema"},"_npmVersion":"10.8.2","description":"JSON Schema, TypeScript types, and runtime validator for the Anby Platform app manifest","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ajv":"^8.17.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0"},"_npmOperationalInternal":{"tmp":"tmp/manifest-schema_1.2.0_1777261299821_0.05075837169245556","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@anby/manifest-schema","version":"1.3.0","keywords":["anby","anby-platform","manifest","json-schema","validator","sdk"],"author":{"name":"ANBY"},"license":"MIT","_id":"@anby/manifest-schema@1.3.0","maintainers":[{"name":"anby-platform","email":"aie@bravebits.vn"}],"homepage":"https://github.com/bravebits-labs/anby-platform-packages#readme","bugs":{"url":"https://github.com/bravebits-labs/anby-platform-packages/issues"},"dist":{"shasum":"e7e2889313dd73b392e3a573b827b3bd829919c9","tarball":"https://registry.npmjs.org/@anby/manifest-schema/-/manifest-schema-1.3.0.tgz","fileCount":14,"integrity":"sha512-wli0NwzbNZi++mPRDwZNX4tSDlxIErgo0BQvUBDDh8SoHeIi+kQHZ2U6NUMcx8G6IOpO74cEhY9XZiHPPUeyvQ==","signatures":[{"sig":"MEYCIQDbGtOXFPLXxzqFNi5wM6mDFwzLwbmjR/RdUSoQOhCQHAIhAP0a4EJ0xeDp7w/GIhNYgtI61HhU4yY19krZxSojPWhG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anby%2fmanifest-schema@1.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":57354},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"gitHead":"1d523a68d84dc123c68fe8b3ba733e2d4a634914","scripts":{"build":"tsc -p tsconfig.cjs.json && tsc -p tsconfig.esm.json && node ../fixup-dual.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"anby-platform","email":"aie@bravebits.vn"},"repository":{"url":"git+https://github.com/bravebits-labs/anby-platform-packages.git","type":"git","directory":"packages/manifest-schema"},"_npmVersion":"10.8.2","description":"JSON Schema, TypeScript types, and runtime validator for the Anby Platform app manifest","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ajv":"^8.17.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0"},"_npmOperationalInternal":{"tmp":"tmp/manifest-schema_1.3.0_1777306787192_0.3724865572206324","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@anby/manifest-schema","version":"1.4.0","keywords":["anby","anby-platform","manifest","json-schema","validator","sdk"],"author":{"name":"ANBY"},"license":"MIT","_id":"@anby/manifest-schema@1.4.0","maintainers":[{"name":"anby-platform","email":"aie@bravebits.vn"}],"homepage":"https://github.com/bravebits-labs/anby-platform-packages#readme","bugs":{"url":"https://github.com/bravebits-labs/anby-platform-packages/issues"},"dist":{"shasum":"0d6f27089a56845aaa2677c7fc330f8a748762e3","tarball":"https://registry.npmjs.org/@anby/manifest-schema/-/manifest-schema-1.4.0.tgz","fileCount":14,"integrity":"sha512-4XxtExxODyoR4FJ5fc/rlYPPzUoXObc5sQJ4R1SyS0wlv1OOh/3OGMj7nc4out15WHVigJ40n3QJsM5GyjWJmA==","signatures":[{"sig":"MEQCIDRs04+S5bIVJFmvnH5T0fXbhaHungtX89yL3K2boYaOAiAnUNkp7JkJjWEN0rfearDXRQpw5phFaSvjI3pgBYuj1g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anby%2fmanifest-schema@1.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":57354},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"gitHead":"d629153f5e557ee4cf863ead295e4d0218c2139d","scripts":{"build":"tsc -p tsconfig.cjs.json && tsc -p tsconfig.esm.json && node ../fixup-dual.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"anby-platform","email":"aie@bravebits.vn"},"repository":{"url":"git+https://github.com/bravebits-labs/anby-platform-packages.git","type":"git","directory":"packages/manifest-schema"},"_npmVersion":"10.8.2","description":"JSON Schema, TypeScript types, and runtime validator for the Anby Platform app manifest","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ajv":"^8.17.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0"},"_npmOperationalInternal":{"tmp":"tmp/manifest-schema_1.4.0_1778860208098_0.8259117253730788","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"@anby/manifest-schema","version":"1.4.1","description":"JSON Schema, TypeScript types, and runtime validator for the Anby Platform app manifest","keywords":["anby","anby-platform","manifest","json-schema","validator","sdk"],"license":"MIT","author":{"name":"ANBY"},"homepage":"https://github.com/bravebits-labs/anby-platform-packages#readme","bugs":{"url":"https://github.com/bravebits-labs/anby-platform-packages/issues"},"repository":{"type":"git","url":"git+https://github.com/bravebits-labs/anby-platform-packages.git","directory":"packages/manifest-schema"},"main":"dist/cjs/index.js","module":"dist/esm/index.js","types":"dist/cjs/index.d.ts","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"publishConfig":{"access":"public","provenance":true},"scripts":{"build":"tsc -p tsconfig.cjs.json && tsc -p tsconfig.esm.json && node ../fixup-dual.mjs","prepublishOnly":"npm run build"},"dependencies":{"ajv":"^8.17.1"},"devDependencies":{"typescript":"^5.7.0"},"_id":"@anby/manifest-schema@1.4.1","gitHead":"27339f757535f76442a91ab7b38ce33d97471475","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-qfBgwLLzGltrNc3DR9SC1fmnUtez1icaoSZxBRYqsuuXsaTIWpHsOCqX2+D0kkoO0r+GKIIU6SEazHf1edwfNw==","shasum":"4280422637224b0393abfa5e5fc60f421c4a0f87","tarball":"https://registry.npmjs.org/@anby/manifest-schema/-/manifest-schema-1.4.1.tgz","fileCount":14,"unpackedSize":57354,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anby%2fmanifest-schema@1.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCY5UpqxRovB8LYWezde1RDRB8fQWVaWf19hkECQjaeRAIgHj6YN+W+9QvJ/prxvifF1ZtQrZGBu9NM7oRT3bX72nI="}]},"_npmUser":{"name":"anby-platform","email":"aie@bravebits.vn"},"directories":{},"maintainers":[{"name":"anby-platform","email":"aie@bravebits.vn"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/manifest-schema_1.4.1_1778864975468_0.9603061755911027"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-07T04:57:46.075Z","modified":"2026-05-15T17:09:36.195Z","0.1.0":"2026-04-07T04:57:46.334Z","0.1.1":"2026-04-07T05:46:36.132Z","1.0.0":"2026-04-16T15:35:21.251Z","1.1.0":"2026-04-23T10:24:55.973Z","1.2.0":"2026-04-27T03:41:39.958Z","1.3.0":"2026-04-27T16:19:47.321Z","1.4.0":"2026-05-15T15:50:08.277Z","1.4.1":"2026-05-15T17:09:35.678Z"},"bugs":{"url":"https://github.com/bravebits-labs/anby-platform-packages/issues"},"author":{"name":"ANBY"},"license":"MIT","homepage":"https://github.com/bravebits-labs/anby-platform-packages#readme","keywords":["anby","anby-platform","manifest","json-schema","validator","sdk"],"repository":{"type":"git","url":"git+https://github.com/bravebits-labs/anby-platform-packages.git","directory":"packages/manifest-schema"},"description":"JSON Schema, TypeScript types, and runtime validator for the Anby Platform app manifest","maintainers":[{"name":"anby-platform","email":"aie@bravebits.vn"}],"readme":"# @anby/manifest-schema\n\nJSON Schema + TypeScript type + runtime validator cho **Anby app manifest** — file `manifest.json` mà mọi pluggable app (được cài vào qua `anby-app-registry`) phải cung cấp để platform biết cách mount nó, nó cung cấp / yêu cầu những entity và event nào, render những route nào, và cần những permission gì.\n\n## Cài đặt\n\n```json\n{\n  \"dependencies\": {\n    \"@anby/manifest-schema\": \"file:../../packages/manifest-schema\"\n  }\n}\n```\n\n## Cách dùng\n\n```ts\nimport { validateManifest, schema, type AppManifest } from '@anby/manifest-schema';\n\nconst manifest: unknown = JSON.parse(raw);\nconst { valid, errors } = validateManifest(manifest);\nif (!valid) throw new Error(`Manifest không hợp lệ:\\n${errors.join('\\n')}`);\n\n// Đến đây manifest có thể dùng an toàn như AppManifest\n```\n\n- `validateManifest(obj)` — chạy Ajv với `schema.json`, trả về `{ valid, errors[] }`.\n- `schema` — raw JSON Schema, tiện cho việc sinh doc, tooling IDE, hoặc expose qua API.\n- `AppManifest` — interface TypeScript tương ứng với schema.\n\n## Shape của manifest (tóm tắt)\n\n```jsonc\n{\n  \"id\": \"com.anby.org-chart\",\n  \"version\": \"0.1.0\",\n  \"name\": \"Org Chart\",\n  \"runtime\":  { \"type\": \"nestjs\", \"port\": 4000, \"healthCheck\": \"/health\" },\n  \"frontend\": { \"type\": \"iframe\", \"routes\": [{ \"path\": \"/org\", \"label\": \"Org\" }] },\n  \"provides\": { \"entities\": [\"OrgNode\"], \"events\": [\"org.node.created\"] },\n  \"requires\": { \"platform\": [\"auth@>=0.1\"], \"entities\": [\"User\"] },\n  \"permissions\": [\"read:users\"],\n  \"database\":   { \"type\": \"postgresql\", \"migrationDir\": \"./migrations\" }\n}\n```\n\nXem `src/index.ts` cho interface `AppManifest` đầy đủ và `src/schema.json` cho JSON Schema chuẩn.\n\n## Ai đang dùng package này\n\n- **`anby-app-registry`** — validate manifest lúc install / update app và từ chối những manifest không hợp lệ.\n- **Tác giả app** — có thể import type / schema trong build tooling riêng của họ để check ngay lúc compile.\n\n## Scripts\n\n```bash\nnpm run build    # tsc\n```\n","readmeFilename":"README.md"}