{"_id":"@blogmcp/nav-core","_rev":"15-a347947a084d588bb9afab5877502a4e","name":"@blogmcp/nav-core","dist-tags":{"latest":"0.8.1"},"versions":{"0.1.0":{"name":"@blogmcp/nav-core","version":"0.1.0","keywords":["navigation","menu","tree","information-architecture","blog"],"license":"MIT","_id":"@blogmcp/nav-core@0.1.0","maintainers":[{"name":"huararanga","email":"lukas.zubal@gmail.com"}],"dist":{"shasum":"f85d35a5220890eb99f12254aae00e5152e520ee","tarball":"https://registry.npmjs.org/@blogmcp/nav-core/-/nav-core-0.1.0.tgz","fileCount":26,"integrity":"sha512-bZ9AaY7lm8G+WrV6Gki75tjqQuB5hTmCp0Kug0eij/Oc/e7viRxuKo+L+BIc+Sih50vhdhDXIyJzetQyZaz6zA==","signatures":[{"sig":"MEUCIAG3KK4iyXe0Nyx7M53jOjGsFqjjQDWMHu7gtpM3fR7RAiEAsIbXg9x89CWkbJudIm8xcoihyZg49pqQcSuEkPoaDQ0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123209},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./src/index.ts","import":"./dist/index.js"},"./types":{"types":"./src/types/index.ts","import":"./dist/types/index.js"},"./mutate":{"types":"./src/mutate/index.ts","import":"./dist/mutate/index.js"},"./resolve":{"types":"./src/resolve/index.ts","import":"./dist/resolve/index.js"},"./traverse":{"types":"./src/traverse/index.ts","import":"./dist/traverse/index.js"},"./validate":{"types":"./src/validate/index.ts","import":"./dist/validate/index.js"}},"gitHead":"d7c4167bb859b8e52d433e036a37d6a5d14a2c69","scripts":{"dev":"tsc -p tsconfig.build.json --watch","test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"huararanga","email":"lukas.zubal@gmail.com"},"_npmVersion":"10.9.3","description":"Framework-agnostic navigation tree core — types, validation, traversal, and immutable mutations for the KB information-architecture (menu) layer. Zero framework dependencies; consumed by the API service, MCP tools, and the blog SDK.","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.3.3","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/nav-core_0.1.0_1782232743708_0.5710650475695995","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@blogmcp/nav-core","version":"0.1.1","keywords":["navigation","menu","tree","information-architecture","blog"],"license":"MIT","_id":"@blogmcp/nav-core@0.1.1","maintainers":[{"name":"huararanga","email":"lukas.zubal@gmail.com"}],"dist":{"shasum":"dbf7288170c0e33a92731e6b32c2a072fb3ab7b6","tarball":"https://registry.npmjs.org/@blogmcp/nav-core/-/nav-core-0.1.1.tgz","fileCount":26,"integrity":"sha512-3i60IVivYB+Rc4qcCRAEYsLER4Y7Qyi6r475D1jNZtH5Vg0MzPM0DbqsD0oRtr7Be56OZfSGBYmUKPYTL6x3oQ==","signatures":[{"sig":"MEUCIDd15VcCy9+hg4a62gaMEjJcEp9TCvvthW/UEq/UHZHWAiEA8Sh7o+cP6zjOolk8is3pHTO3ODW8CjXfkZNNCN1au20=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123209},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./src/index.ts","import":"./dist/index.js"},"./types":{"types":"./src/types/index.ts","import":"./dist/types/index.js"},"./mutate":{"types":"./src/mutate/index.ts","import":"./dist/mutate/index.js"},"./resolve":{"types":"./src/resolve/index.ts","import":"./dist/resolve/index.js"},"./traverse":{"types":"./src/traverse/index.ts","import":"./dist/traverse/index.js"},"./validate":{"types":"./src/validate/index.ts","import":"./dist/validate/index.js"}},"gitHead":"09ae3682034d81bcef7fb93a8b707e2e875f5f4b","scripts":{"dev":"tsc -p tsconfig.build.json --watch","test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"huararanga","email":"lukas.zubal@gmail.com"},"_npmVersion":"10.9.3","description":"Framework-agnostic navigation tree core — types, validation, traversal, and immutable mutations for the KB information-architecture (menu) layer. Zero framework dependencies; consumed by the API service, MCP tools, and the blog SDK.","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.3.3","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/nav-core_0.1.1_1782394907879_0.48719522258695025","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@blogmcp/nav-core","version":"0.1.2","keywords":["navigation","menu","tree","information-architecture","blog"],"license":"MIT","_id":"@blogmcp/nav-core@0.1.2","maintainers":[{"name":"huararanga","email":"lukas.zubal@gmail.com"}],"dist":{"shasum":"2dcba93d0da05026bc10c3ee84d9359f8060238e","tarball":"https://registry.npmjs.org/@blogmcp/nav-core/-/nav-core-0.1.2.tgz","fileCount":26,"integrity":"sha512-8TPR5LI6g4MvwO8Oalznl0dqkdTiSGLYw5exFVf4M9J6TKFfytfg3A4pKAYHCJ1/73zFCwO9oxEEGFSyzfZPPw==","signatures":[{"sig":"MEQCIAFcaVM2t9qgj/5vqgYbBtTq8kOAGC3QF0V0PLH8QmOrAiBa2UPw7SzMyvTfGAcsnX4gp+mp/BpsXohaUM7jSokmnQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123209},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./src/index.ts","import":"./dist/index.js"},"./types":{"types":"./src/types/index.ts","import":"./dist/types/index.js"},"./mutate":{"types":"./src/mutate/index.ts","import":"./dist/mutate/index.js"},"./resolve":{"types":"./src/resolve/index.ts","import":"./dist/resolve/index.js"},"./traverse":{"types":"./src/traverse/index.ts","import":"./dist/traverse/index.js"},"./validate":{"types":"./src/validate/index.ts","import":"./dist/validate/index.js"}},"gitHead":"1dbf42a2b784bea84fc3c53a1aaa291f6b04eb59","scripts":{"dev":"tsc -p tsconfig.build.json --watch","test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"huararanga","email":"lukas.zubal@gmail.com"},"_npmVersion":"10.9.3","description":"Framework-agnostic navigation tree core — types, validation, traversal, and immutable mutations for the KB information-architecture (menu) layer. Zero framework dependencies; consumed by the API service, MCP tools, and the blog SDK.","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.3.3","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/nav-core_0.1.2_1782533679204_0.6463784177729721","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@blogmcp/nav-core","version":"0.1.3","keywords":["navigation","menu","tree","information-architecture","blog"],"license":"MIT","_id":"@blogmcp/nav-core@0.1.3","maintainers":[{"name":"huararanga","email":"lukas.zubal@gmail.com"}],"dist":{"shasum":"815bd5d08b3a9bf791e69a872fecd3c84d208e94","tarball":"https://registry.npmjs.org/@blogmcp/nav-core/-/nav-core-0.1.3.tgz","fileCount":26,"integrity":"sha512-sVYojVtdWgdRl8wzjoQ7XDVHLnAXR1iSt6p2lSqN/gLL66fzNSRq2neHQmV3AiQU2AQXmV0gL+Oi6UthgsmnQQ==","signatures":[{"sig":"MEUCIQCGFc0etRuEkiEgaMyF9p8uPF97fPoUQT1e7Ni4+xhEpgIgF7oFegYvJS63OvScUASetJ5MZ1719aPWbmOXHv9dzXo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123209},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./src/index.ts","import":"./dist/index.js"},"./types":{"types":"./src/types/index.ts","import":"./dist/types/index.js"},"./mutate":{"types":"./src/mutate/index.ts","import":"./dist/mutate/index.js"},"./resolve":{"types":"./src/resolve/index.ts","import":"./dist/resolve/index.js"},"./traverse":{"types":"./src/traverse/index.ts","import":"./dist/traverse/index.js"},"./validate":{"types":"./src/validate/index.ts","import":"./dist/validate/index.js"}},"gitHead":"ce8f7baabce4a0e8a2a6f0ab461d51817bc8a79a","scripts":{"dev":"tsc -p tsconfig.build.json --watch","test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"huararanga","email":"lukas.zubal@gmail.com"},"_npmVersion":"10.9.3","description":"Framework-agnostic navigation tree core — types, validation, traversal, and immutable mutations for the KB information-architecture (menu) layer. Zero framework dependencies; consumed by the API service, MCP tools, and the blog SDK.","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.3.3","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/nav-core_0.1.3_1782567953052_0.5094024911254136","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@blogmcp/nav-core","version":"0.2.0","keywords":["navigation","menu","tree","information-architecture","blog"],"license":"MIT","_id":"@blogmcp/nav-core@0.2.0","maintainers":[{"name":"huararanga","email":"lukas.zubal@gmail.com"}],"dist":{"shasum":"4ff8258baa36d1d4e491a35f7e3505b5c65ef29a","tarball":"https://registry.npmjs.org/@blogmcp/nav-core/-/nav-core-0.2.0.tgz","fileCount":26,"integrity":"sha512-4RbRRyMOEFX6E/3PcD5/risFSHzmMVuWpu1Zadwh22/cyr9EWnhZqx7JbKHoq2/2QoOLSFx+8S/0c82WWsir3g==","signatures":[{"sig":"MEQCIC9Jj/6/FZiGOBnAwS47UdX0eOYLFI9TV/UD/iz0iBLqAiBRIxiQ2n5oN0cmuilXpCmw0gyuweOhlEneyApDwO5Blg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123209},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./src/index.ts","import":"./dist/index.js"},"./types":{"types":"./src/types/index.ts","import":"./dist/types/index.js"},"./mutate":{"types":"./src/mutate/index.ts","import":"./dist/mutate/index.js"},"./resolve":{"types":"./src/resolve/index.ts","import":"./dist/resolve/index.js"},"./traverse":{"types":"./src/traverse/index.ts","import":"./dist/traverse/index.js"},"./validate":{"types":"./src/validate/index.ts","import":"./dist/validate/index.js"}},"gitHead":"5b8899f56b619641dac2ce8bebcbcec016b2a58b","scripts":{"dev":"tsc -p tsconfig.build.json --watch","test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"huararanga","email":"lukas.zubal@gmail.com"},"_npmVersion":"10.9.3","description":"Framework-agnostic navigation tree core — types, validation, traversal, and immutable mutations for the KB information-architecture (menu) layer. Zero framework dependencies; consumed by the API service, MCP tools, and the blog SDK.","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.3.3","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/nav-core_0.2.0_1783397806867_0.5838860597151616","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@blogmcp/nav-core","version":"0.2.1","keywords":["navigation","menu","tree","information-architecture","blog"],"license":"MIT","_id":"@blogmcp/nav-core@0.2.1","maintainers":[{"name":"huararanga","email":"lukas.zubal@gmail.com"}],"dist":{"shasum":"1ff017be02933b8508c26d4569da56772605b307","tarball":"https://registry.npmjs.org/@blogmcp/nav-core/-/nav-core-0.2.1.tgz","fileCount":26,"integrity":"sha512-8RppAesEzn+A2lI+YeibkOFtOGXqicRD/DDixCGsxt8MeFEGT4nkJF6oFmMRPUWi05ZBSdWKE6sWUxBf0/7oQg==","signatures":[{"sig":"MEQCIHP1zw59IA2fT+88DaFQRwrSoNTuYn+DmX32JoFlG/fiAiBu7TVG9XYWZmOVIWn9Ekm1TtbgmcIXpk6f4gIMRr4bgQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123209},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./src/index.ts","import":"./dist/index.js"},"./types":{"types":"./src/types/index.ts","import":"./dist/types/index.js"},"./mutate":{"types":"./src/mutate/index.ts","import":"./dist/mutate/index.js"},"./resolve":{"types":"./src/resolve/index.ts","import":"./dist/resolve/index.js"},"./traverse":{"types":"./src/traverse/index.ts","import":"./dist/traverse/index.js"},"./validate":{"types":"./src/validate/index.ts","import":"./dist/validate/index.js"}},"gitHead":"06814a04296c980bdd61bbc2715eccb84dfaffb0","scripts":{"dev":"tsc -p tsconfig.build.json --watch","test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"huararanga","email":"lukas.zubal@gmail.com"},"_npmVersion":"10.9.3","description":"Framework-agnostic navigation tree core — types, validation, traversal, and immutable mutations for the KB information-architecture (menu) layer. Zero framework dependencies; consumed by the API service, MCP tools, and the blog SDK.","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.3.3","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/nav-core_0.2.1_1783487916059_0.41177243031924604","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@blogmcp/nav-core","version":"0.2.2","keywords":["navigation","menu","tree","information-architecture","blog"],"license":"MIT","_id":"@blogmcp/nav-core@0.2.2","maintainers":[{"name":"huararanga","email":"lukas.zubal@gmail.com"}],"dist":{"shasum":"0421795fde22d211891f2ea9010534c45f7e18c5","tarball":"https://registry.npmjs.org/@blogmcp/nav-core/-/nav-core-0.2.2.tgz","fileCount":26,"integrity":"sha512-izCT074ur4/ftG+nUx/4LJEuH2hdLj3iWQWs994LnwuZVoa6Z4EwSxyj2OMzhHgNOAcsPemBAmIILqSwzuR6gQ==","signatures":[{"sig":"MEYCIQCfpl9jVEfDe0P83N4pE34N2/F7xThJzUmsSpZoFkzkKQIhAOI3wYOM0HhNcqZPzhbhKco0qg0tq05KZfrSZ3djA+n1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123209},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./src/index.ts","import":"./dist/index.js"},"./types":{"types":"./src/types/index.ts","import":"./dist/types/index.js"},"./mutate":{"types":"./src/mutate/index.ts","import":"./dist/mutate/index.js"},"./resolve":{"types":"./src/resolve/index.ts","import":"./dist/resolve/index.js"},"./traverse":{"types":"./src/traverse/index.ts","import":"./dist/traverse/index.js"},"./validate":{"types":"./src/validate/index.ts","import":"./dist/validate/index.js"}},"gitHead":"c83445d5e9236fcded1451db89e3bc410e64a739","scripts":{"dev":"tsc -p tsconfig.build.json --watch","test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"huararanga","email":"lukas.zubal@gmail.com"},"_npmVersion":"10.9.3","description":"Framework-agnostic navigation tree core — types, validation, traversal, and immutable mutations for the KB information-architecture (menu) layer. Zero framework dependencies; consumed by the API service, MCP tools, and the blog SDK.","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.3.3","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/nav-core_0.2.2_1786475836374_0.4430273159581666","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@blogmcp/nav-core","version":"0.3.0","keywords":["navigation","menu","tree","information-architecture","blog"],"license":"MIT","_id":"@blogmcp/nav-core@0.3.0","maintainers":[{"name":"huararanga","email":"lukas.zubal@gmail.com"}],"dist":{"shasum":"66dabea0ec2447b07bf3d7bd8ddb7799fc317549","tarball":"https://registry.npmjs.org/@blogmcp/nav-core/-/nav-core-0.3.0.tgz","fileCount":26,"integrity":"sha512-VfVpJkONQ/je2YgpCfr0l4VbhxIS8vE5c9a9gpW3c7Yn9DDvt/qXkHTduU27JPNpiTsRBTZK03fpf6jC6PCAAg==","signatures":[{"sig":"MEQCIAgh7Ik13XF84awcM7rPjaJtZTi4KPYT1b4yfyYQ3sd8AiBmv0StweqyrtfwBE9KjaiEN2WpT8y58LiNxxpd3XULUA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123209},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./src/index.ts","import":"./dist/index.js"},"./types":{"types":"./src/types/index.ts","import":"./dist/types/index.js"},"./mutate":{"types":"./src/mutate/index.ts","import":"./dist/mutate/index.js"},"./resolve":{"types":"./src/resolve/index.ts","import":"./dist/resolve/index.js"},"./traverse":{"types":"./src/traverse/index.ts","import":"./dist/traverse/index.js"},"./validate":{"types":"./src/validate/index.ts","import":"./dist/validate/index.js"}},"gitHead":"074582484e9fa4f6d71a17bcced08ddc350126a4","scripts":{"dev":"tsc -p tsconfig.build.json --watch","test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"huararanga","email":"lukas.zubal@gmail.com"},"_npmVersion":"10.9.3","description":"Framework-agnostic navigation tree core — types, validation, traversal, and immutable mutations for the KB information-architecture (menu) layer. Zero framework dependencies; consumed by the API service, MCP tools, and the blog SDK.","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.3.3","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/nav-core_0.3.0_1786700258883_0.505617985394581","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@blogmcp/nav-core","version":"0.6.0","keywords":["navigation","menu","tree","information-architecture","blog"],"license":"MIT","_id":"@blogmcp/nav-core@0.6.0","maintainers":[{"name":"huararanga","email":"lukas.zubal@gmail.com"},{"name":"blog-mcp-owner","email":"lukerovo@gmail.com"}],"dist":{"shasum":"ad2e0289c95fc83204cbeba63af554cd35be5c04","tarball":"https://registry.npmjs.org/@blogmcp/nav-core/-/nav-core-0.6.0.tgz","fileCount":27,"integrity":"sha512-LQ5mW+a9QCMm5TYdaEBHbbYW+D35NC+jrw4gtjaX33WMwpg9Z/juZw20UAX4KQs+ZbLYXxp1UnVxoAvYJwmFvQ==","signatures":[{"sig":"MEYCIQDOAoKNzDkAHr6b5ZsyM4nXGWSe0GgrUWL3MA+kpqZ3IwIhAL1VHRhGTS9koTacktZcGipv6m5h5nloe1AoNdHAyaXj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCYVZe/xH9Nmt7R1oisjJCPz3oCjrn8s6Qk2m0baM92TQIgcW2FSn7P/LsEwuSV0QxUI4nP6uVEYkcysuuhIz2kN6o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":124277},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./src/index.ts","import":"./dist/index.js"},"./types":{"types":"./src/types/index.ts","import":"./dist/types/index.js"},"./mutate":{"types":"./src/mutate/index.ts","import":"./dist/mutate/index.js"},"./resolve":{"types":"./src/resolve/index.ts","import":"./dist/resolve/index.js"},"./traverse":{"types":"./src/traverse/index.ts","import":"./dist/traverse/index.js"},"./validate":{"types":"./src/validate/index.ts","import":"./dist/validate/index.js"}},"gitHead":"3ec0068322e4b9910955af557cf76981e994005e","scripts":{"dev":"tsc -p tsconfig.build.json --watch","test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"huararanga","email":"lukas.zubal@gmail.com"},"_npmVersion":"10.9.7","description":"Framework-agnostic navigation tree core — types, validation, traversal, and immutable mutations for the KB information-architecture (menu) layer. Zero framework dependencies; consumed by the API service, MCP tools, and the blog SDK.","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.3.3","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/nav-core_0.6.0_1790703064235_0.006321697849513974","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@blogmcp/nav-core","version":"0.6.1","keywords":["navigation","menu","tree","information-architecture","blog"],"license":"MIT","_id":"@blogmcp/nav-core@0.6.1","maintainers":[{"name":"huararanga","email":"lukas.zubal@gmail.com"},{"name":"blog-mcp-owner","email":"lukerovo@gmail.com"}],"dist":{"shasum":"3f9dfc2f72c27f36eb8c1e1bb7c7a1d790beef8e","tarball":"https://registry.npmjs.org/@blogmcp/nav-core/-/nav-core-0.6.1.tgz","fileCount":27,"integrity":"sha512-bD+8TWYPMWvrNUbz9+KGD1gZ+RqkwNLhT6urvRJ0qkxJJSUmHinO2eZXCgmkmgzbHOf6+O7TOSbNBQtTu1fhlA==","signatures":[{"sig":"MEYCIQC1VPhSl9Oi1IGmTpQOEZ3251IXSJEle2faqiTU0fODWwIhAOkcvNy7iYT6SSH5p0IjQJ3Pk78ysWuE38gbSLOqrLpQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCuFHEuDV2jwPZMKV4sxvgNdkm1bH/jAVmJ523dnkDQRwIgDYe8AzOqkOcHKIcyOBWpeGwzb9o6BEhkU2maLmXKcwc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":124427},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./src/index.ts","import":"./dist/index.js"},"./types":{"types":"./src/types/index.ts","import":"./dist/types/index.js"},"./mutate":{"types":"./src/mutate/index.ts","import":"./dist/mutate/index.js"},"./resolve":{"types":"./src/resolve/index.ts","import":"./dist/resolve/index.js"},"./traverse":{"types":"./src/traverse/index.ts","import":"./dist/traverse/index.js"},"./validate":{"types":"./src/validate/index.ts","import":"./dist/validate/index.js"}},"gitHead":"99d2ad19cd85d0f0d10f31fa0e13b24eb6d8639d","scripts":{"dev":"tsc -p tsconfig.build.json --watch","test":"vitest run","build":"tsc -p tsconfig.build.json","prepack":"node ../../scripts/pack-dist-types.mjs prepack","postpack":"node ../../scripts/pack-dist-types.mjs postpack","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"huararanga","email":"lukas.zubal@gmail.com"},"_npmVersion":"10.9.7","description":"Framework-agnostic navigation tree core — types, validation, traversal, and immutable mutations for the KB information-architecture (menu) layer. Zero framework dependencies; consumed by the API service, MCP tools, and the blog SDK.","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.3.3","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/nav-core_0.6.1_1790704066541_0.07021432091449453","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@blogmcp/nav-core","version":"0.7.0","keywords":["navigation","menu","tree","information-architecture","blog"],"license":"MIT","_id":"@blogmcp/nav-core@0.7.0","maintainers":[{"name":"huararanga","email":"lukas.zubal@gmail.com"},{"name":"blog-mcp-owner","email":"lukerovo@gmail.com"}],"dist":{"shasum":"6bd144b4949a5142855217ddc8bfca34084f2acb","tarball":"https://registry.npmjs.org/@blogmcp/nav-core/-/nav-core-0.7.0.tgz","fileCount":27,"integrity":"sha512-OGf67WcbK2yTC8Y5YvnXH+b2upXvPzgTaPZhvjqgAxcSuBu8ANuNIOjoIAlaTrLtWh7F9wXRinzkWuU4ux8fSA==","signatures":[{"sig":"MEYCIQC5Qj3FnQyvLy1JdU1FlnMMbqnuH2uwxBIDN1G8paPtAgIhAJ5NYYDi2LOya32I9VNVTr4m813O+D5AHpjNyvFUJ3K6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIE2wOydGNyooPWuop0LkC2P0AvWe6cUvJXhMLKtWMIYGAiBS45poV8hxMxytEgkHo2UyJGeEpyXYVSLbH8qtFzgDUw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":124427},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./src/index.ts","import":"./dist/index.js"},"./types":{"types":"./src/types/index.ts","import":"./dist/types/index.js"},"./mutate":{"types":"./src/mutate/index.ts","import":"./dist/mutate/index.js"},"./resolve":{"types":"./src/resolve/index.ts","import":"./dist/resolve/index.js"},"./traverse":{"types":"./src/traverse/index.ts","import":"./dist/traverse/index.js"},"./validate":{"types":"./src/validate/index.ts","import":"./dist/validate/index.js"}},"gitHead":"dd514a0b8bbf43d24e7f9c8ff2ab2164d885115d","scripts":{"dev":"tsc -p tsconfig.build.json --watch","test":"vitest run","build":"tsc -p tsconfig.build.json","prepack":"node ../../scripts/pack-dist-types.mjs prepack","postpack":"node ../../scripts/pack-dist-types.mjs postpack","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"huararanga","email":"lukas.zubal@gmail.com"},"_npmVersion":"10.9.7","description":"Framework-agnostic navigation tree core — types, validation, traversal, and immutable mutations for the KB information-architecture (menu) layer. Zero framework dependencies; consumed by the API service, MCP tools, and the blog SDK.","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.3.3","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/nav-core_0.7.0_1790860639011_0.3146245244691659","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@blogmcp/nav-core","version":"0.7.1","keywords":["navigation","menu","tree","information-architecture","blog"],"license":"MIT","_id":"@blogmcp/nav-core@0.7.1","maintainers":[{"name":"huararanga","email":"lukas.zubal@gmail.com"},{"name":"blog-mcp-owner","email":"lukerovo@gmail.com"}],"dist":{"shasum":"ab3a4aec553dd60aa4af9be231a778bb10395d8c","tarball":"https://registry.npmjs.org/@blogmcp/nav-core/-/nav-core-0.7.1.tgz","fileCount":27,"integrity":"sha512-hHlgr+yy7+10xoqWIeUJur2YQ/dMhMRTatrxxTofFFJKBFeOW8cAsuqFJSjKD3zQguK6FrDQoeLc+kErg6ho0w==","signatures":[{"sig":"MEYCIQDyBQQj2K+hkAKXZNJIr1I75VqklyPW7xiqsXUv1oSuXQIhAKhrTL6Jdzot5KZk7RYYjbiJlfnwDSjDo5mi6Sq5usr1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD5DLjV5+1JWYqLAZGo0UG/3539ZhSVoK02W9gIylb/OAIhANyYUJ9PVzpIwcjZlVQsUbxuH8tSPKFiCh42NgkTvmpM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":124427},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./src/index.ts","import":"./dist/index.js"},"./types":{"types":"./src/types/index.ts","import":"./dist/types/index.js"},"./mutate":{"types":"./src/mutate/index.ts","import":"./dist/mutate/index.js"},"./resolve":{"types":"./src/resolve/index.ts","import":"./dist/resolve/index.js"},"./traverse":{"types":"./src/traverse/index.ts","import":"./dist/traverse/index.js"},"./validate":{"types":"./src/validate/index.ts","import":"./dist/validate/index.js"}},"gitHead":"cad9a917b29aad8ab97cfebe0c3bd4bf9f94648f","scripts":{"dev":"tsc -p tsconfig.build.json --watch","test":"vitest run","build":"tsc -p tsconfig.build.json","prepack":"node ../../scripts/pack-dist-types.mjs prepack","postpack":"node ../../scripts/pack-dist-types.mjs postpack","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"huararanga","email":"lukas.zubal@gmail.com"},"_npmVersion":"10.9.7","description":"Framework-agnostic navigation tree core — types, validation, traversal, and immutable mutations for the KB information-architecture (menu) layer. Zero framework dependencies; consumed by the API service, MCP tools, and the blog SDK.","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.3.3","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/nav-core_0.7.1_1790872750701_0.34200075306346567","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@blogmcp/nav-core","version":"0.8.0","keywords":["navigation","menu","tree","information-architecture","blog"],"license":"MIT","_id":"@blogmcp/nav-core@0.8.0","maintainers":[{"name":"huararanga","email":"lukas.zubal@gmail.com"},{"name":"blog-mcp-owner","email":"lukerovo@gmail.com"}],"dist":{"shasum":"07a8318c69189f8151d7961b87c21a8aeef3db65","tarball":"https://registry.npmjs.org/@blogmcp/nav-core/-/nav-core-0.8.0.tgz","fileCount":27,"integrity":"sha512-wdHtINgPGGoWtz1FXhat+OmQtzanzTRbmRE59mx/hnNlepCa4/rpN6c3jrAxs0eD2wyfltVP/IA9QE5zk2DQTA==","signatures":[{"sig":"MEQCIDSu9NprMu2kTSOZua4LSd45+V9uQJ4L7K2Xkb+fr1HTAiAixedb/uPhePveCTdAAPImgAcg9vMSfBCQF8Ve4OaiNw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDEgbGCMKm98fSI9jjG60tqe1qCYSJ+8V8hueZRmX/tMwIgEulJXBnr/FOSM/UuYVO3EQQX58Jjy+Xtj8LdGKEfPtE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":124427},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./src/index.ts","import":"./dist/index.js"},"./types":{"types":"./src/types/index.ts","import":"./dist/types/index.js"},"./mutate":{"types":"./src/mutate/index.ts","import":"./dist/mutate/index.js"},"./resolve":{"types":"./src/resolve/index.ts","import":"./dist/resolve/index.js"},"./traverse":{"types":"./src/traverse/index.ts","import":"./dist/traverse/index.js"},"./validate":{"types":"./src/validate/index.ts","import":"./dist/validate/index.js"}},"gitHead":"5698355994d151c79a4cd0fb5e7ac2b17c41bfda","scripts":{"dev":"tsc -p tsconfig.build.json --watch","test":"vitest run","build":"tsc -p tsconfig.build.json","prepack":"node ../../scripts/pack-dist-types.mjs prepack","postpack":"node ../../scripts/pack-dist-types.mjs postpack","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"huararanga","email":"lukas.zubal@gmail.com"},"_npmVersion":"10.9.7","description":"Framework-agnostic navigation tree core — types, validation, traversal, and immutable mutations for the KB information-architecture (menu) layer. Zero framework dependencies; consumed by the API service, MCP tools, and the blog SDK.","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.3.3","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/nav-core_0.8.0_1790931367145_0.10205093619006766","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"_id":"@blogmcp/nav-core@0.8.1","dist":{"shasum":"132f2eab6d1f50406c91f0c7f7f2beb2e4d5e06a","tarball":"https://registry.npmjs.org/@blogmcp/nav-core/-/nav-core-0.8.1.tgz","fileCount":27,"integrity":"sha512-5pcTk2pdh75JtMvaUjhEaM3nkzws7fJemyvNxx3ZJ1C8EkMdZLcAVWVecHxq4uvk8ni9DnRL8x/enD4k3XnvUw==","signatures":[{"sig":"MEYCIQCIhk/8WVENpvKNbQRR5So47fjRHSK1xuu89tLZPtcX7AIhAKQ5F3QW85ITVr7VOF5l4FJCKJ/zKekD0urtCkIzcYN5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDFgYvOKh3dB1K0XHgLM9VibsiFkw+QF+nWkyZpUK5gPAIhAKwVbZOI0UOGyGRuj+Dayyu629aQ+a3zrm+OP1tE7Hqg"}],"unpackedSize":124427},"main":"./dist/index.js","name":"@blogmcp/nav-core","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./src/index.ts","import":"./dist/index.js"},"./types":{"types":"./src/types/index.ts","import":"./dist/types/index.js"},"./mutate":{"types":"./src/mutate/index.ts","import":"./dist/mutate/index.js"},"./resolve":{"types":"./src/resolve/index.ts","import":"./dist/resolve/index.js"},"./traverse":{"types":"./src/traverse/index.ts","import":"./dist/traverse/index.js"},"./validate":{"types":"./src/validate/index.ts","import":"./dist/validate/index.js"}},"gitHead":"c8ea452fc9c90eea0ea1ee7dc5d9f59a2d08b380","license":"MIT","scripts":{"dev":"tsc -p tsconfig.build.json --watch","test":"vitest run","build":"tsc -p tsconfig.build.json","prepack":"node ../../scripts/pack-dist-types.mjs prepack","postpack":"node ../../scripts/pack-dist-types.mjs postpack","typecheck":"tsc --noEmit","test:watch":"vitest"},"version":"0.8.1","_npmUser":{"name":"huararanga","email":"lukas.zubal@gmail.com"},"keywords":["navigation","menu","tree","information-architecture","blog"],"_npmVersion":"10.9.7","description":"Framework-agnostic navigation tree core — types, validation, traversal, and immutable mutations for the KB information-architecture (menu) layer. Zero framework dependencies; consumed by the API service, MCP tools, and the blog SDK.","directories":{},"maintainers":[{"name":"huararanga","email":"lukas.zubal@gmail.com"},{"name":"blog-mcp-owner","email":"lukerovo@gmail.com"}],"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.3.3","@types/node":"^20.10.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/nav-core_0.8.1_1790932714842_0.46326184049385755"}}},"time":{"created":"2026-06-23T16:39:03.535Z","modified":"2026-10-02T09:18:35.173Z","0.1.0":"2026-06-23T16:39:03.834Z","0.1.1":"2026-06-25T13:41:48.051Z","0.1.2":"2026-06-27T04:14:39.331Z","0.1.3":"2026-06-27T13:45:53.181Z","0.2.0":"2026-07-07T04:16:47.024Z","0.2.1":"2026-07-08T05:18:36.196Z","0.2.2":"2026-08-11T19:17:16.530Z","0.3.0":"2026-08-14T09:37:39.021Z","0.6.0":"2026-09-29T17:31:04.340Z","0.6.1":"2026-09-29T17:47:46.650Z","0.7.0":"2026-10-01T13:17:19.094Z","0.7.1":"2026-10-01T16:39:10.800Z","0.8.0":"2026-10-02T08:56:07.222Z","0.8.1":"2026-10-02T09:18:34.921Z"},"license":"MIT","keywords":["navigation","menu","tree","information-architecture","blog"],"description":"Framework-agnostic navigation tree core — types, validation, traversal, and immutable mutations for the KB information-architecture (menu) layer. Zero framework dependencies; consumed by the API service, MCP tools, and the blog SDK.","maintainers":[{"name":"huararanga","email":"lukas.zubal@gmail.com"},{"name":"blog-mcp-owner","email":"lukerovo@gmail.com"}],"readme":"# @blogmcp/nav-core\n\nFramework-agnostic core for the KB navigation (menu) tree. Pure TypeScript — no\nI/O, no framework. The design lives in\n[`competitor-monitor/docs/internal/navigation-model.md`](../../docs/internal/navigation-model.md).\n\nThis package is the shared logic surfaced two ways: the SDK runs it in-memory\nover a cached tree, and the server exposes it as MCP/API tools. Mirrors the\n`@blogmcp/mdx-schema` → renderer split.\n\n## Modules\n\n| Import | Contents |\n|---|---|\n| `@blogmcp/nav-core` | everything (barrel) |\n| `@blogmcp/nav-core/types` | node model: `NavNode` union, `NavTree`, `FlatNode`, `LocalizedNode` |\n| `@blogmcp/nav-core/validate` | `validate(tree, opts)` / `assertValid` — cycles, depth, dangling refs, single-owner, `data`-bag caps |\n| `@blogmcp/nav-core/traverse` | `findNode`, `breadcrumbs`, `getSiblings`, `getNextPrev`, `getSubtree`, `flatten` (FLAT), `localize`, `prune`, `sortTree` |\n| `@blogmcp/nav-core/mutate` | `insertNode`, `removeNode`, `moveNode`, `reorderChildren` — immutable; throw `NavMutationError` |\n\n## Invariants\n\n- **Immutable**: traversal and mutation never edit inputs; mutations return new trees.\n- **Server-authoritative**: the API re-runs `validate()` after every mutation.\n- **Opaque `data`**: the `data` bag is never interpreted, only size/depth-capped.\n- **Single multilingual tree**: `labels` is a per-locale map; `localize()` resolves\n  to one locale with fallback + an optional `labelResolver` (article titles come\n  from the consumer — nav-core does not know article content).\n\n## Not here yet\n\nThe content→default-tree auto-builder and the auto-build ⊕ overrides merge ship\nwith the API service slice (they need the article content index and the\nauto-append policy — see navigation-model.md §9).\n\n## Scripts\n\n```bash\nnpm test --workspace=@blogmcp/nav-core        # vitest\nnpm run build --workspace=@blogmcp/nav-core   # tsc → dist\n```\n","readmeFilename":"README.md"}