{"_id":"@phosra/link","_rev":"30-16d3c0f74da20c54dd4c593ac32edd86","name":"@phosra/link","dist-tags":{"latest":"0.7.80"},"versions":{"0.1.0":{"name":"@phosra/link","version":"0.1.0","license":"MIT","_id":"@phosra/link@0.1.0","maintainers":[{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"}],"dist":{"shasum":"8a1fa688aa6295a2d9761596163108105b9d83f6","tarball":"https://registry.npmjs.org/@phosra/link/-/link-0.1.0.tgz","fileCount":90,"integrity":"sha512-N2mSaPLpaviqsSU3/UQKgGsYaHMIaLVkqqlxZpvMAAQv1rjtp7Lm8oeUyApsfOVZyResdcYyAFY2DxlD07JddA==","signatures":[{"sig":"MEQCIClT/bOYwWph9llL5twyaD1yaRQHgNg7pMEULGVtUmUJAiBSu4UXE618wtORWXvv5tfQea1LjpMYdBbcna0SdPTRlQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":166030},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./protocol":{"types":"./dist/protocol.d.ts","import":"./dist/protocol.js"}},"scripts":{"test":"vitest run","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"},"_npmVersion":"11.16.0","description":"Writer-plane SDK for the OCSS (Open Child Safety Specification). Performs the consent attestation ceremony, rule-write directives, and platform binding — all signed locally over RFC 9421, posted to the Phosra hosted census.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"pg":"*","@openchildsafety/ocss":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.6.1","@types/pg":"*","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/link_0.1.0_1782662376630_0.8476145527574335","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@phosra/link","version":"0.1.1","license":"MIT","_id":"@phosra/link@0.1.1","maintainers":[{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"}],"dist":{"shasum":"5fca1d7aa9ba11c14f7afd2e7286fac1c44e4cc2","tarball":"https://registry.npmjs.org/@phosra/link/-/link-0.1.1.tgz","fileCount":94,"integrity":"sha512-m5QPv9CDDHNy6cLHI4+abw28wpHqGRuZ/02hwEYaeNTxXdsRPuOhsBPPQxdav2dwp27yR9rW9NYhpWyMUWHHzw==","signatures":[{"sig":"MEQCIEdqYrvu6cld+RiaiSDJ1/1iZf96LPlZCkpkb7CzGs78AiAXI1Dm6izlPdDabkQ5RsRhASbv2SY15VI51WBEKbqu0w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":183043},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./protocol":{"types":"./dist/protocol.d.ts","import":"./dist/protocol.js"}},"scripts":{"test":"vitest run","build":"tsc","prepublishOnly":"npm run build","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit"},"_npmUser":{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"},"_npmVersion":"11.16.0","description":"Writer-plane SDK for the OCSS (Open Child Safety Specification). Performs the consent attestation ceremony, rule-write directives, and platform binding — all signed locally over RFC 9421, posted to the Phosra hosted census.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"pg":"*","@openchildsafety/ocss":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.6.1","@types/pg":"*","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/link_0.1.1_1782945760173_0.25332843671150496","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@phosra/link","version":"0.1.2","license":"MIT","_id":"@phosra/link@0.1.2","maintainers":[{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"}],"homepage":"https://docs.phosra.com/sdks/link","bugs":{"url":"https://github.com/jakekklinvex/phosra/issues"},"dist":{"shasum":"29ccade1c8e2891ba538f7d0ecc886e13e86fb1d","tarball":"https://registry.npmjs.org/@phosra/link/-/link-0.1.2.tgz","fileCount":100,"integrity":"sha512-5gXqt6IExi9N7GcWgMGQc7B6UCho0koqT50deFisnqL+AUlLORWSqYc2qFkGPlocHvMXghD9ChRsJgGuaMCMRA==","signatures":[{"sig":"MEQCIHx0SJifpPFV8x2F0tbS7ioseSt5X3lU7aH2m6AoXAdZAiBhkC90gXlqElEpty5RNf3H8JG/waJJDscrTxDETQN/5Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":242161},"main":"./dist/index.js","type":"module","_from":"file:phosra-link-0.1.2.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./protocol":{"types":"./dist/protocol.d.ts","import":"./dist/protocol.js"}},"scripts":{"test":"vitest run","build":"tsc","prepublishOnly":"npm run build","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit"},"_npmUser":{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"},"_resolved":"/Users/jakeklinvex/builds/ocss-sim/release/phosra-link-0.1.2.tgz","_integrity":"sha512-5gXqt6IExi9N7GcWgMGQc7B6UCho0koqT50deFisnqL+AUlLORWSqYc2qFkGPlocHvMXghD9ChRsJgGuaMCMRA==","repository":{"url":"git+https://github.com/jakekklinvex/phosra.git","type":"git","directory":"packages/link"},"_npmVersion":"11.16.0","description":"Writer-plane SDK for the OCSS (Open Child Safety Specification). Performs the consent attestation ceremony, rule-write directives, and platform binding — all signed locally over RFC 9421, posted to the Phosra hosted census.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"pg":"^8.11.0","@openchildsafety/ocss":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.6.1","@types/pg":"^8.11.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/link_0.1.2_1783181945738_0.15202759456007953","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@phosra/link","version":"0.2.0","license":"MIT","_id":"@phosra/link@0.2.0","maintainers":[{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"}],"homepage":"https://docs.phosra.com/sdks/link","bugs":{"url":"https://github.com/jakekklinvex/phosra/issues"},"dist":{"shasum":"053cf17c9e62e43b4d03cd2d72a8cbb6e4573770","tarball":"https://registry.npmjs.org/@phosra/link/-/link-0.2.0.tgz","fileCount":108,"integrity":"sha512-FQ9Jckb2sNee6sonwnhAhJy7SsfJIF8b02jGneSEobsr02rp8Y0wGNN3uJr0tUsVqmlK1HqFLJfXB4c9mhDpPg==","signatures":[{"sig":"MEQCIHrXKq5CvXezv1sti6UcgnwjETt3EFVvFyuNS9jGVjpCAiBkoTURzq88EUVJyT9iKJLqKabUzaESt2MTQqW6Kc8mPA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":273390},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./protocol":{"types":"./dist/protocol.d.ts","import":"./dist/protocol.js"}},"scripts":{"test":"vitest run","build":"tsc","prepublishOnly":"npm run build","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit"},"_npmUser":{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"},"repository":{"url":"git+https://github.com/jakekklinvex/phosra.git","type":"git","directory":"packages/link"},"_npmVersion":"11.16.0","description":"Writer-plane SDK for the OCSS (Open Child Safety Specification). Performs the consent attestation ceremony, rule-write directives, and platform binding — all signed locally over RFC 9421, posted to the Phosra hosted census.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"pg":"^8.11.0","@openchildsafety/ocss":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.6.1","@types/pg":"^8.11.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/link_0.2.0_1783456163835_0.09206954791266497","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@phosra/link","version":"0.2.1","license":"MIT","_id":"@phosra/link@0.2.1","maintainers":[{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"}],"homepage":"https://docs.phosra.com/sdks/link","bugs":{"url":"https://github.com/jakekklinvex/phosra/issues"},"dist":{"shasum":"9607774606cb5ddb8e37666df21c3422f03be786","tarball":"https://registry.npmjs.org/@phosra/link/-/link-0.2.1.tgz","fileCount":108,"integrity":"sha512-psyYsaCcT5UarE2dnC0aF9caLawIXpk0IioLkIeodkpBR8N37Qgwmhiftf21O/lgGux0ubWUZKhEVQSS9CTvxQ==","signatures":[{"sig":"MEUCIQDSvBTWMaa0TU0csoduvNSjThTAdGBHr4uuIoMdwS3JDwIgeaGQYor0YtyuT+SvZAjYfTAmLwSMFrJn5So7jpFcb4o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":274205},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./protocol":{"types":"./dist/protocol.d.ts","import":"./dist/protocol.js"}},"scripts":{"test":"vitest run","build":"tsc","prepublishOnly":"npm run build","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit"},"_npmUser":{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"},"repository":{"url":"git+https://github.com/jakekklinvex/phosra.git","type":"git","directory":"packages/link"},"_npmVersion":"11.16.0","description":"Writer-plane SDK for the OCSS (Open Child Safety Specification). Performs the consent attestation ceremony, rule-write directives, and platform binding — all signed locally over RFC 9421, posted to the Phosra hosted census.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"pg":"^8.11.0","@openchildsafety/ocss":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.6.1","@types/pg":"^8.11.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/link_0.2.1_1783510525869_0.6454384702765861","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@phosra/link","version":"0.2.2","license":"MIT","_id":"@phosra/link@0.2.2","maintainers":[{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"}],"homepage":"https://docs.phosra.com/sdks/link","bugs":{"url":"https://github.com/jakekklinvex/phosra/issues"},"dist":{"shasum":"f8b0dfafce683ef80fe1dc05beb990029e025cc1","tarball":"https://registry.npmjs.org/@phosra/link/-/link-0.2.2.tgz","fileCount":112,"integrity":"sha512-DpgTLVWGEE5P53Xaqvg6rS2hhyH5ObQaWsvAG8ZhTa6z3bIZI+KHFsQkfv2Ol9V3HPLn1N2c1HWdc2tqy+LLyQ==","signatures":[{"sig":"MEQCIF7HDnCmVNBh9q6Pa0MboIxOyrnFV+Xk4wr5fsKWEDrYAiAbu6Qh3aCSF0YUJCMEhbAyQOPRwpEzfP9QvRUZUpdDwA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":281593},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./protocol":{"types":"./dist/protocol.d.ts","import":"./dist/protocol.js"}},"scripts":{"test":"vitest run","build":"tsc","prepublishOnly":"npm run build","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit"},"_npmUser":{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"},"repository":{"url":"git+https://github.com/jakekklinvex/phosra.git","type":"git","directory":"packages/link"},"_npmVersion":"11.16.0","description":"Writer-plane SDK for the OCSS (Open Child Safety Specification). Performs the consent attestation ceremony, rule-write directives, and platform binding — all signed locally over RFC 9421, posted to the Phosra hosted census.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"pg":"^8.11.0","@openchildsafety/ocss":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.6.1","@types/pg":"^8.11.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/link_0.2.2_1783518576257_0.44228055182262715","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@phosra/link","version":"0.3.0","license":"MIT","_id":"@phosra/link@0.3.0","maintainers":[{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"}],"homepage":"https://docs.phosra.com/sdks/link","bugs":{"url":"https://github.com/jakekklinvex/phosra/issues"},"dist":{"shasum":"bf53d70c943d0b4981dfb2f8ce6de4bec4a90d42","tarball":"https://registry.npmjs.org/@phosra/link/-/link-0.3.0.tgz","fileCount":112,"integrity":"sha512-8Y1NG9DbNKYGVFDKettQFg35/4ZvSAj9/Nd99QuUAqQc79Rm5NT6TWdQ2K3eUUWuN7OO1q6TTYYQ726xECpWIw==","signatures":[{"sig":"MEUCIQDKth/xDL4M4ksP+T5FrJ5nrzgYeq3hHSv1/xPBrrqyYwIgZQlXZ/+o8NdoDeVTn+8iHYEL/3G9knAb8VkDu2yRkMI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":293615},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./protocol":{"types":"./dist/protocol.d.ts","import":"./dist/protocol.js"}},"scripts":{"test":"vitest run","build":"tsc","prepublishOnly":"npm run build","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit"},"_npmUser":{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"},"repository":{"url":"git+https://github.com/jakekklinvex/phosra.git","type":"git","directory":"packages/link"},"_npmVersion":"11.16.0","description":"Writer-plane SDK for the OCSS (Open Child Safety Specification). Performs the consent attestation ceremony, rule-write directives, and platform binding — all signed locally over RFC 9421, posted to the Phosra hosted census.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"pg":"^8.11.0","@openchildsafety/ocss":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.6.1","@types/pg":"^8.11.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/link_0.3.0_1783521448293_0.6474478758194977","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@phosra/link","version":"0.4.0","license":"MIT","_id":"@phosra/link@0.4.0","maintainers":[{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"}],"homepage":"https://docs.phosra.com/sdks/link","bugs":{"url":"https://github.com/jakekklinvex/phosra/issues"},"dist":{"shasum":"fefd9dde2fa30c55c71750f23a7f42ed2f3fd916","tarball":"https://registry.npmjs.org/@phosra/link/-/link-0.4.0.tgz","fileCount":116,"integrity":"sha512-yH0/z9VYe5taidTH3QSh7n5WkGQvUhRIOBxJyPp9YO886HJM8KcSVc3CQ9s1bjzlLT3s7OIP2kxCmrXlz7K9DQ==","signatures":[{"sig":"MEQCIGguNiMgqnIgp0bbShu4dxh8FfyK25zING8QjhbP9cJbAiBTG59/C21EAo4tqwdRw4hvgN94BTfOaBBZBXKfivwKtQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":310237},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./protocol":{"types":"./dist/protocol.d.ts","import":"./dist/protocol.js"}},"scripts":{"test":"vitest run","build":"tsc","prepublishOnly":"npm run build","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit"},"_npmUser":{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"},"repository":{"url":"git+https://github.com/jakekklinvex/phosra.git","type":"git","directory":"packages/link"},"_npmVersion":"11.16.0","description":"Writer-plane SDK for the OCSS (Open Child Safety Specification). Performs the consent attestation ceremony, rule-write directives, and platform binding — all signed locally over RFC 9421, posted to the Phosra hosted census.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"pg":"^8.11.0","@openchildsafety/ocss":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.6.1","@types/pg":"^8.11.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/link_0.4.0_1783527550279_0.0990668349126409","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@phosra/link","version":"0.5.0","license":"MIT","_id":"@phosra/link@0.5.0","maintainers":[{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"}],"homepage":"https://docs.phosra.com/sdks/link","bugs":{"url":"https://github.com/jakekklinvex/phosra/issues"},"dist":{"shasum":"afacc072c9d3a4d6c3a7233343d34764428fb1c1","tarball":"https://registry.npmjs.org/@phosra/link/-/link-0.5.0.tgz","fileCount":132,"integrity":"sha512-YKJlvPwaR+JOlELuXeOrOei6fpl9MZ6KAh/+eoIarv8jONaSYjZgnY1SfX1LHThIjkyuSBoeJBerg8AQewcfjg==","signatures":[{"sig":"MEUCIQCQovDpvjv8l+7l7TRYk2o+bMWqRThZXatoy0nSK5mVUQIgesWxQFuJNjoUKM2qlzc/DsxzfFrL6YHu+K4RC9xxrCw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":392516},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./protocol":{"types":"./dist/protocol.d.ts","import":"./dist/protocol.js"}},"scripts":{"test":"vitest run","build":"tsc","prepublishOnly":"npm run build","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit"},"_npmUser":{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"},"repository":{"url":"git+https://github.com/jakekklinvex/phosra.git","type":"git","directory":"packages/link"},"_npmVersion":"11.16.0","description":"Writer-plane SDK for the OCSS (Open Child Safety Specification). Performs the consent attestation ceremony, rule-write directives, and platform binding — all signed locally over RFC 9421, posted to the Phosra hosted census.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"pg":"^8.11.0","@openchildsafety/ocss":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.6.1","@types/pg":"^8.11.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/link_0.5.0_1783533585908_0.5883001944930575","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@phosra/link","version":"0.6.0","license":"MIT","_id":"@phosra/link@0.6.0","maintainers":[{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"}],"homepage":"https://docs.phosra.com/sdks/link","bugs":{"url":"https://github.com/jakekklinvex/phosra/issues"},"dist":{"shasum":"5a4fe6d630a8e4831f18ce362aa998a8ae91eb95","tarball":"https://registry.npmjs.org/@phosra/link/-/link-0.6.0.tgz","fileCount":132,"integrity":"sha512-b8KOVgP3ABdgwcxqdbCxCfbYelhP4CzMxVdcpJJQtYjwBLzCZ07/K9ae8b1Pc6RxQNDKPdDqPz3znUwmq11KSw==","signatures":[{"sig":"MEUCIDDPOIHETaN9RKG72oW4x+puXsrTlcA5UQebUGPjv0vPAiEAjGboJdKWL0WyHPTfbcPezaeJS0l8GuDZ233HqXEjykA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":401437},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./protocol":{"types":"./dist/protocol.d.ts","import":"./dist/protocol.js"}},"scripts":{"test":"vitest run","build":"tsc","prepublishOnly":"npm run build","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit"},"_npmUser":{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"},"repository":{"url":"git+https://github.com/jakekklinvex/phosra.git","type":"git","directory":"packages/link"},"_npmVersion":"11.16.0","description":"Writer-plane SDK for the OCSS (Open Child Safety Specification). Performs the consent attestation ceremony, rule-write directives, and platform binding — all signed locally over RFC 9421, posted to the Phosra hosted census.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"pg":"^8.11.0","@openchildsafety/ocss":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.6.1","@types/pg":"^8.11.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/link_0.6.0_1783545718699_0.7413896417797392","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@phosra/link","version":"0.6.1","license":"MIT","_id":"@phosra/link@0.6.1","maintainers":[{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"}],"homepage":"https://docs.phosra.com/sdks/link","bugs":{"url":"https://github.com/jakekklinvex/phosra/issues"},"dist":{"shasum":"6f8cdf2d9c630701ad613fd86ba790b23721d47e","tarball":"https://registry.npmjs.org/@phosra/link/-/link-0.6.1.tgz","fileCount":132,"integrity":"sha512-Z2ZDz8Vw2eYsSN9ryu4QvdUt8+jkJtV1x9Kneq44HxXZQZuiAcwrA9CrQnrqC9n5tRbLpunIUhCmReYWsA0l6w==","signatures":[{"sig":"MEYCIQD4e/jnoTSg51IwHRIk/NDT6HhiSjIfXYWZxST8Q7ff4wIhAO1InuHTn8+ZABqqp5UvTips9NhnoTzM9qR5vif1fo1y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":402081},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./protocol":{"types":"./dist/protocol.d.ts","import":"./dist/protocol.js"}},"scripts":{"test":"vitest run","build":"tsc","prepublishOnly":"npm run build","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit"},"_npmUser":{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"},"repository":{"url":"git+https://github.com/jakekklinvex/phosra.git","type":"git","directory":"packages/link"},"_npmVersion":"11.16.0","description":"Writer-plane SDK for the OCSS (Open Child Safety Specification). Performs the consent attestation ceremony, rule-write directives, and platform binding — all signed locally over RFC 9421, posted to the Phosra hosted census.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"pg":"^8.11.0","@openchildsafety/ocss":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.6.1","@types/pg":"^8.11.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/link_0.6.1_1783643650990_0.8169396361712222","host":"s3://npm-registry-packages-npm-production"}},"0.7.54":{"name":"@phosra/link","version":"0.7.54","license":"MIT","_id":"@phosra/link@0.7.54","maintainers":[{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"}],"homepage":"https://docs.phosra.com/sdks/link","bugs":{"url":"https://github.com/jakekklinvex/phosra/issues"},"dist":{"shasum":"539149e4ad357ccd754f16b99f077f04f3332540","tarball":"https://registry.npmjs.org/@phosra/link/-/link-0.7.54.tgz","fileCount":439,"integrity":"sha512-nI1BRq5jZG5/xSxr8lHJdL2BvfXmGIJXWyU9oW1yUHoEz6ytD2MVff3+J3dI8ZSrdiio/ZGUSWAv93kWwBqs5Q==","signatures":[{"sig":"MEQCIH9wLWmodmtC9x/ro/tFAiEyLCgHPgwzIcYgX1yhahmwAiAUANsYYghqfA5LPwvTukrM0eU74kK9uHTCCcrSg5908A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4168386},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./server":{"node":"./dist/server.js","types":"./dist/server.d.ts","browser":"./dist/server-browser.js","default":"./dist/server-browser.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./protocol":{"types":"./dist/protocol.d.ts","import":"./dist/protocol.js"},"./snapshot":{"types":"./dist/link-snapshot.d.ts","import":"./dist/link-snapshot.js"},"./link-intent":{"types":"./dist/link-intent.d.ts","import":"./dist/link-intent.js"},"./platform-event":{"types":"./dist/platform-event.d.ts","import":"./dist/platform-event.js"},"./credential-runtime":{"node":"./dist/credential-runtime.js","types":"./dist/credential-runtime.d.ts","browser":"./dist/credential-runtime-browser.js","default":"./dist/credential-runtime-browser.js"}},"scripts":{"test":"vitest run","build":"tsc && node scripts/restore-accepted-runtime.mjs","prebuild":"npm run generate:version","check:version":"node scripts/generate-link-version.mjs --check","prepublishOnly":"npm run build","qualify:kernel":"npm run build && npm run typecheck:compat && vitest run test/platform-session-store.test.ts test/schema.test.ts test/scope.test.ts test/complete-link-replay-authority.test.ts test/bind-profile.test.ts","generate:version":"node scripts/generate-link-version.mjs","typecheck:compat":"tsc -p tsconfig.compat.json","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit","qualify:packed-server":"npm run build && node scripts/verify-packed-server-consumer.mjs"},"_npmUser":{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"},"repository":{"url":"git+https://github.com/jakekklinvex/phosra.git","type":"git","directory":"packages/link"},"_npmVersion":"11.16.0","description":"Phosra Link SDK for connecting a parent application to an OCSS (Open Child Safety Specification) platform. It provides the mandatory-branded parent experience, the same-origin provider route, durable delivery, and the lower-level writer-plane APIs.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"pg":"^8.11.0","undici":"6.27.0","@openchildsafety/ocss":"^0.1.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.6.1","@types/pg":"^8.11.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/link_0.7.54_1784974858393_0.23144051144865085","host":"s3://npm-registry-packages-npm-production"}},"0.7.56":{"name":"@phosra/link","version":"0.7.56","license":"MIT","_id":"@phosra/link@0.7.56","maintainers":[{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"}],"homepage":"https://docs.phosra.com/sdks/link","bugs":{"url":"https://github.com/jakekklinvex/phosra/issues"},"dist":{"shasum":"f91fac1f9f12a99e0d5a9d635e0efd00be15e56e","tarball":"https://registry.npmjs.org/@phosra/link/-/link-0.7.56.tgz","fileCount":439,"integrity":"sha512-Kr2u28W8qTYmJa7zJIS7y3er4d1J09SeCZrXxBL0xCsjd3bjl5hDWpjtE8QED0JeNksNX2looWVs36LpGXbY5w==","signatures":[{"sig":"MEYCIQCMl3pfLxwqUZwuZcidnPsmXz93hsX78KOY9K68KRWeHAIhAK1j2O+qtr1Up+BdpKHYzD3CGZw4zYPf2J6J2wvo8R/3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4170701},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./server":{"node":"./dist/server.js","types":"./dist/server.d.ts","browser":"./dist/server-browser.js","default":"./dist/server-browser.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./protocol":{"types":"./dist/protocol.d.ts","import":"./dist/protocol.js"},"./snapshot":{"types":"./dist/link-snapshot.d.ts","import":"./dist/link-snapshot.js"},"./link-intent":{"types":"./dist/link-intent.d.ts","import":"./dist/link-intent.js"},"./platform-event":{"types":"./dist/platform-event.d.ts","import":"./dist/platform-event.js"},"./credential-runtime":{"node":"./dist/credential-runtime.js","types":"./dist/credential-runtime.d.ts","browser":"./dist/credential-runtime-browser.js","default":"./dist/credential-runtime-browser.js"}},"scripts":{"test":"vitest run","build":"tsc && node scripts/restore-accepted-runtime.mjs","prebuild":"npm run generate:version","check:version":"node scripts/generate-link-version.mjs --check","prepublishOnly":"npm run build","qualify:kernel":"npm run build && npm run typecheck:compat && vitest run test/platform-session-store.test.ts test/schema.test.ts test/scope.test.ts test/complete-link-replay-authority.test.ts test/bind-profile.test.ts","generate:version":"node scripts/generate-link-version.mjs","typecheck:compat":"tsc -p tsconfig.compat.json","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit","qualify:packed-server":"npm run build && node scripts/verify-packed-server-consumer.mjs"},"_npmUser":{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"},"repository":{"url":"git+https://github.com/jakekklinvex/phosra.git","type":"git","directory":"packages/link"},"_npmVersion":"11.16.0","description":"Phosra Link SDK for connecting a parent application to an OCSS (Open Child Safety Specification) platform. It provides the mandatory-branded parent experience, the same-origin provider route, durable delivery, and the lower-level writer-plane APIs.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"pg":"^8.11.0","undici":"6.27.0","@openchildsafety/ocss":"^0.1.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.6.1","@types/pg":"^8.11.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/link_0.7.56_1785030924371_0.8300371426179483","host":"s3://npm-registry-packages-npm-production"}},"0.7.57":{"name":"@phosra/link","version":"0.7.57","license":"MIT","_id":"@phosra/link@0.7.57","maintainers":[{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"}],"homepage":"https://docs.phosra.com/sdks/link","bugs":{"url":"https://github.com/jakekklinvex/phosra/issues"},"dist":{"shasum":"9dfbecefbeee9a2786f805c1344c27aec3bff424","tarball":"https://registry.npmjs.org/@phosra/link/-/link-0.7.57.tgz","fileCount":443,"integrity":"sha512-Vo6tWhmOgf6QSY6qLROdcA1jOS92CLpMWsxCHBPMUhuC+3wwtAzICEHQr8fl36rmSyL/xLi2I1zVGh0pLQDaOQ==","signatures":[{"sig":"MEUCIEjxZ0P0Q2b3CS2HBMIendBlOdVab8R7vnGbPixa9C4HAiEA+U/CUaqcfYMmubRzBJMHXE2xaXZouoo4c8oXni9wi5M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4232745},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./server":{"node":"./dist/server.js","types":"./dist/server.d.ts","browser":"./dist/server-browser.js","default":"./dist/server-browser.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./protocol":{"types":"./dist/protocol.d.ts","import":"./dist/protocol.js"},"./snapshot":{"types":"./dist/link-snapshot.d.ts","import":"./dist/link-snapshot.js"},"./link-intent":{"types":"./dist/link-intent.d.ts","import":"./dist/link-intent.js"},"./platform-event":{"types":"./dist/platform-event.d.ts","import":"./dist/platform-event.js"},"./credential-runtime":{"node":"./dist/credential-runtime.js","types":"./dist/credential-runtime.d.ts","browser":"./dist/credential-runtime-browser.js","default":"./dist/credential-runtime-browser.js"}},"scripts":{"test":"vitest run","build":"tsc && node scripts/restore-accepted-runtime.mjs","prebuild":"npm run generate:version","check:version":"node scripts/generate-link-version.mjs --check","prepublishOnly":"npm run build","qualify:kernel":"npm run build && npm run typecheck:compat && vitest run test/platform-session-store.test.ts test/schema.test.ts test/scope.test.ts test/complete-link-replay-authority.test.ts test/bind-profile.test.ts","generate:version":"node scripts/generate-link-version.mjs","typecheck:compat":"tsc -p tsconfig.compat.json","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit","qualify:packed-server":"npm run build && node scripts/verify-packed-server-consumer.mjs"},"_npmUser":{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"},"repository":{"url":"git+https://github.com/jakekklinvex/phosra.git","type":"git","directory":"packages/link"},"_npmVersion":"11.16.0","description":"Phosra Link SDK for connecting a parent application to an OCSS (Open Child Safety Specification) platform. It provides the mandatory-branded parent experience, the same-origin provider route, durable delivery, and the lower-level writer-plane APIs.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"pg":"^8.11.0","undici":"6.27.0","@openchildsafety/ocss":"^0.1.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.6.1","@types/pg":"^8.11.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/link_0.7.57_1785069431164_0.35595915299484737","host":"s3://npm-registry-packages-npm-production"}},"0.7.65":{"name":"@phosra/link","version":"0.7.65","license":"MIT","_id":"@phosra/link@0.7.65","maintainers":[{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"}],"homepage":"https://docs.phosra.com/sdks/link","bugs":{"url":"https://github.com/jakekklinvex/phosra/issues"},"dist":{"shasum":"8b863a6fca5ad90be843981f5d527287441df7bf","tarball":"https://registry.npmjs.org/@phosra/link/-/link-0.7.65.tgz","fileCount":471,"integrity":"sha512-rAJ6z0tSTXSGxTM5HqbUVZt1692KsrGn8PPaXeBVhpx3ObwuGAvo+AiHWs3Q3yxcnGUcbGxXSVfY2QL9DxacEA==","signatures":[{"sig":"MEUCIQDUArx5O2520OjrQpffHnvb9zlTMCddQXO+BPHkiTHqPgIgDtZ1Ty7R8NKmBJwANHY7SNbM5xbzL/IbBaBgOYrUSNI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4420538},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./server":{"node":"./dist/server.js","types":"./dist/server.d.ts","browser":"./dist/server-browser.js","default":"./dist/server-browser.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./protocol":{"types":"./dist/protocol.d.ts","import":"./dist/protocol.js"},"./snapshot":{"types":"./dist/link-snapshot.d.ts","import":"./dist/link-snapshot.js"},"./link-intent":{"types":"./dist/link-intent.d.ts","import":"./dist/link-intent.js"},"./setup-server":{"types":"./dist/setup-server.d.ts","import":"./dist/setup-server.js"},"./platform-event":{"types":"./dist/platform-event.d.ts","import":"./dist/platform-event.js"},"./credential-runtime":{"node":"./dist/credential-runtime.js","types":"./dist/credential-runtime.d.ts","browser":"./dist/credential-runtime-browser.js","default":"./dist/credential-runtime-browser.js"},"./link-setup-document":{"types":"./dist/link-setup-document.d.ts","import":"./dist/link-setup-document.js"},"./roster-delivery-wire":{"types":"./dist/roster-delivery-wire.d.ts","import":"./dist/roster-delivery-wire.js"}},"scripts":{"test":"vitest run","build":"tsc && node scripts/restore-accepted-runtime.mjs","prebuild":"npm run generate:version","check:version":"node scripts/generate-link-version.mjs --check","prepublishOnly":"npm run build","qualify:kernel":"npm run build && npm run typecheck:compat && vitest run test/platform-session-store.test.ts test/schema.test.ts test/scope.test.ts test/complete-link-replay-authority.test.ts test/bind-profile.test.ts","generate:version":"node scripts/generate-link-version.mjs","typecheck:compat":"tsc -p tsconfig.compat.json","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit","qualify:packed-server":"npm run build && node scripts/verify-packed-server-consumer.mjs"},"_npmUser":{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"},"repository":{"url":"git+https://github.com/jakekklinvex/phosra.git","type":"git","directory":"packages/link"},"_npmVersion":"11.16.0","description":"Phosra Link SDK for connecting a parent application to an OCSS (Open Child Safety Specification) platform. It provides the mandatory-branded parent experience, the same-origin provider route, durable delivery, and the lower-level writer-plane APIs.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"pg":"^8.11.0","undici":"6.27.0","@openchildsafety/ocss":"^0.1.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.6.1","@types/pg":"^8.11.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.0.0","@phosra/gatekeeper":"^0.8.71"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/link_0.7.65_1785758006375_0.8558866556510001","host":"s3://npm-registry-packages-npm-production"}},"0.7.66":{"name":"@phosra/link","version":"0.7.66","license":"MIT","_id":"@phosra/link@0.7.66","maintainers":[{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"}],"homepage":"https://docs.phosra.com/sdks/link","bugs":{"url":"https://github.com/jakekklinvex/phosra/issues"},"dist":{"shasum":"0dd8bd52543c14c4cea16e7cec16de8e54f544fd","tarball":"https://registry.npmjs.org/@phosra/link/-/link-0.7.66.tgz","fileCount":591,"integrity":"sha512-XSOnTA5u/BH2kK5l8ziY7a+1BHZTGl8wVKwChMsCjEMNxQR8goAz5E9eHy6kHJNYR9Fc8SvsHdMffppxr17FSA==","signatures":[{"sig":"MEYCIQCO+WWdsdGmqFwBNCk37TdVlSD6s5/kSYIrf+nUIU3EOgIhAJZ3eZp0kstFJpRlvk+olh5GzvOQF43SNYMyQCif8Riz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5203537},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./server":{"node":"./dist/server.js","types":"./dist/server.d.ts","browser":"./dist/server-browser.js","default":"./dist/server-browser.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./protocol":{"types":"./dist/protocol.d.ts","import":"./dist/protocol.js"},"./snapshot":{"types":"./dist/link-snapshot.d.ts","import":"./dist/link-snapshot.js"},"./link-intent":{"types":"./dist/link-intent.d.ts","import":"./dist/link-intent.js"},"./setup-server":{"types":"./dist/setup-server.d.ts","import":"./dist/setup-server.js"},"./platform-event":{"types":"./dist/platform-event.d.ts","import":"./dist/platform-event.js"},"./credential-runtime":{"node":"./dist/credential-runtime.js","types":"./dist/credential-runtime.d.ts","browser":"./dist/credential-runtime-browser.js","default":"./dist/credential-runtime-browser.js"},"./link-setup-document":{"types":"./dist/link-setup-document.d.ts","import":"./dist/link-setup-document.js"},"./roster-delivery-wire":{"types":"./dist/roster-delivery-wire.d.ts","import":"./dist/roster-delivery-wire.js"}},"scripts":{"test":"vitest run","build":"tsc && node scripts/restore-accepted-runtime.mjs","prebuild":"npm run generate:version","check:version":"node scripts/generate-link-version.mjs --check","prepublishOnly":"npm run build","qualify:kernel":"npm run build && npm run typecheck:compat && vitest run test/platform-session-store.test.ts test/schema.test.ts test/scope.test.ts test/complete-link-replay-authority.test.ts test/bind-profile.test.ts","generate:version":"node scripts/generate-link-version.mjs","typecheck:compat":"tsc -p tsconfig.compat.json","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit","qualify:packed-server":"npm run build && node scripts/verify-packed-server-consumer.mjs"},"_npmUser":{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"},"repository":{"url":"git+https://github.com/jakekklinvex/phosra.git","type":"git","directory":"packages/link"},"_npmVersion":"11.16.0","description":"Phosra Link SDK for connecting a parent application to an OCSS (Open Child Safety Specification) platform. It provides the mandatory-branded parent experience, the same-origin provider route, durable delivery, and the lower-level writer-plane APIs.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"pg":"^8.11.0","undici":"6.27.0","@openchildsafety/ocss":"^0.1.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.6.1","@types/pg":"^8.11.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.0.0","@phosra/gatekeeper":"^0.8.71"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/link_0.7.66_1785886842511_0.20966402225016756","host":"s3://npm-registry-packages-npm-production"}},"0.7.67":{"name":"@phosra/link","version":"0.7.67","license":"MIT","_id":"@phosra/link@0.7.67","maintainers":[{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"}],"homepage":"https://docs.phosra.com/sdks/link","bugs":{"url":"https://github.com/jakekklinvex/phosra/issues"},"dist":{"shasum":"684a75312ac3642efc4838f0c978142dcb6486a5","tarball":"https://registry.npmjs.org/@phosra/link/-/link-0.7.67.tgz","fileCount":591,"integrity":"sha512-dybysanEeMaqcgcm29yPEW0LnaWLTKqdztIsbHPiLNp5VMEfzlUlOxnUtx/+05SR9NanP2ukBdXh9sFKk95cww==","signatures":[{"sig":"MEQCIBjK5mxrXd70Muaq5p4C1vhxTa81neqkTqlHhrFNIfQMAiBTsqhJ7uSnZ9ebm+9Q1cWVmAqgbJPLhIDVulFBbu54tQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5205403},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./server":{"node":"./dist/server.js","types":"./dist/server.d.ts","browser":"./dist/server-browser.js","default":"./dist/server-browser.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./protocol":{"types":"./dist/protocol.d.ts","import":"./dist/protocol.js"},"./snapshot":{"types":"./dist/link-snapshot.d.ts","import":"./dist/link-snapshot.js"},"./link-intent":{"types":"./dist/link-intent.d.ts","import":"./dist/link-intent.js"},"./setup-server":{"types":"./dist/setup-server.d.ts","import":"./dist/setup-server.js"},"./platform-event":{"types":"./dist/platform-event.d.ts","import":"./dist/platform-event.js"},"./credential-runtime":{"node":"./dist/credential-runtime.js","types":"./dist/credential-runtime.d.ts","browser":"./dist/credential-runtime-browser.js","default":"./dist/credential-runtime-browser.js"},"./link-setup-document":{"types":"./dist/link-setup-document.d.ts","import":"./dist/link-setup-document.js"},"./roster-delivery-wire":{"types":"./dist/roster-delivery-wire.d.ts","import":"./dist/roster-delivery-wire.js"}},"scripts":{"test":"vitest run","build":"tsc && node scripts/restore-accepted-runtime.mjs","prebuild":"npm run generate:version","check:version":"node scripts/generate-link-version.mjs --check","prepublishOnly":"npm run build","qualify:kernel":"npm run build && npm run typecheck:compat && vitest run test/platform-session-store.test.ts test/schema.test.ts test/scope.test.ts test/complete-link-replay-authority.test.ts test/bind-profile.test.ts","generate:version":"node scripts/generate-link-version.mjs","typecheck:compat":"tsc -p tsconfig.compat.json","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit","qualify:packed-server":"npm run build && node scripts/verify-packed-server-consumer.mjs"},"_npmUser":{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"},"repository":{"url":"git+https://github.com/jakekklinvex/phosra.git","type":"git","directory":"packages/link"},"_npmVersion":"11.16.0","description":"Phosra Link SDK for connecting a parent application to an OCSS (Open Child Safety Specification) platform. It provides the mandatory-branded parent experience, the same-origin provider route, durable delivery, and the lower-level writer-plane APIs.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"pg":"^8.11.0","undici":"6.27.0","@openchildsafety/ocss":"^0.1.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.6.1","@types/pg":"^8.11.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.0.0","@phosra/gatekeeper":"^0.8.71"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/link_0.7.67_1785931028919_0.9993346298643828","host":"s3://npm-registry-packages-npm-production"}},"0.7.68":{"name":"@phosra/link","version":"0.7.68","license":"MIT","_id":"@phosra/link@0.7.68","maintainers":[{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"}],"homepage":"https://docs.phosra.com/sdks/link","bugs":{"url":"https://github.com/jakekklinvex/phosra/issues"},"dist":{"shasum":"d738a4a521bfe7e4494ff95132c3a43964a3530d","tarball":"https://registry.npmjs.org/@phosra/link/-/link-0.7.68.tgz","fileCount":591,"integrity":"sha512-go4qQPCxdgGo6nCHoky3To6kUPmXso85diUCOAECNOgZSSNBaaxK2zp5HveHI8hFPibirHc8P46olMOuezxYiQ==","signatures":[{"sig":"MEUCIQCSIvJhoN3CIrvZI/deyxNue6H8GRSbt9UCnsNUP/tsigIgQo7EYeh9+Rr/KzkuucjaRTo980gLdWq3OmhKjKlV0TI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5206391},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./server":{"node":"./dist/server.js","types":"./dist/server.d.ts","browser":"./dist/server-browser.js","default":"./dist/server-browser.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./protocol":{"types":"./dist/protocol.d.ts","import":"./dist/protocol.js"},"./snapshot":{"types":"./dist/link-snapshot.d.ts","import":"./dist/link-snapshot.js"},"./link-intent":{"types":"./dist/link-intent.d.ts","import":"./dist/link-intent.js"},"./setup-server":{"types":"./dist/setup-server.d.ts","import":"./dist/setup-server.js"},"./platform-event":{"types":"./dist/platform-event.d.ts","import":"./dist/platform-event.js"},"./credential-runtime":{"node":"./dist/credential-runtime.js","types":"./dist/credential-runtime.d.ts","browser":"./dist/credential-runtime-browser.js","default":"./dist/credential-runtime-browser.js"},"./link-setup-document":{"types":"./dist/link-setup-document.d.ts","import":"./dist/link-setup-document.js"},"./roster-delivery-wire":{"types":"./dist/roster-delivery-wire.d.ts","import":"./dist/roster-delivery-wire.js"}},"scripts":{"test":"vitest run","build":"tsc && node scripts/restore-accepted-runtime.mjs","prebuild":"npm run generate:version","check:version":"node scripts/generate-link-version.mjs --check","prepublishOnly":"npm run build","qualify:kernel":"npm run build && npm run typecheck:compat && vitest run test/platform-session-store.test.ts test/schema.test.ts test/scope.test.ts test/complete-link-replay-authority.test.ts test/bind-profile.test.ts","generate:version":"node scripts/generate-link-version.mjs","typecheck:compat":"tsc -p tsconfig.compat.json","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit","qualify:packed-server":"npm run build && node scripts/verify-packed-server-consumer.mjs"},"_npmUser":{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"},"repository":{"url":"git+https://github.com/jakekklinvex/phosra.git","type":"git","directory":"packages/link"},"_npmVersion":"11.16.0","description":"Phosra Link SDK for connecting a parent application to an OCSS (Open Child Safety Specification) platform. It provides the mandatory-branded parent experience, the same-origin provider route, durable delivery, and the lower-level writer-plane APIs.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"pg":"^8.11.0","undici":"6.27.0","@openchildsafety/ocss":"^0.1.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.6.1","@types/pg":"^8.11.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.0.0","@phosra/gatekeeper":"^0.8.71"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/link_0.7.68_1785931114589_0.5615831799544913","host":"s3://npm-registry-packages-npm-production"}},"0.7.69":{"name":"@phosra/link","version":"0.7.69","license":"MIT","_id":"@phosra/link@0.7.69","maintainers":[{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"}],"homepage":"https://docs.phosra.com/sdks/link","bugs":{"url":"https://github.com/jakekklinvex/phosra/issues"},"dist":{"shasum":"3e366165bb9feec587d274f48429ce75f816e879","tarball":"https://registry.npmjs.org/@phosra/link/-/link-0.7.69.tgz","fileCount":591,"integrity":"sha512-HtuFYZHxJl9tKtuKBoyj1CpFIjiwBC/naOeOOOWiRK4D21GidDRwA6is9M34RDQGe3U3Px7y+4K+kLBrnC1n8A==","signatures":[{"sig":"MEUCIHXXm6cgB912ZpnOBTwszrbRGCA3/Diw54uitoCJPwK2AiEAvSdpqMFisWLsDqjYxb95c2A6oYkziSF+LLlxIPKmbM4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5209523},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./server":{"node":"./dist/server.js","types":"./dist/server.d.ts","browser":"./dist/server-browser.js","default":"./dist/server-browser.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./protocol":{"types":"./dist/protocol.d.ts","import":"./dist/protocol.js"},"./snapshot":{"types":"./dist/link-snapshot.d.ts","import":"./dist/link-snapshot.js"},"./link-intent":{"types":"./dist/link-intent.d.ts","import":"./dist/link-intent.js"},"./setup-server":{"types":"./dist/setup-server.d.ts","import":"./dist/setup-server.js"},"./platform-event":{"types":"./dist/platform-event.d.ts","import":"./dist/platform-event.js"},"./credential-runtime":{"node":"./dist/credential-runtime.js","types":"./dist/credential-runtime.d.ts","browser":"./dist/credential-runtime-browser.js","default":"./dist/credential-runtime-browser.js"},"./link-setup-document":{"types":"./dist/link-setup-document.d.ts","import":"./dist/link-setup-document.js"},"./roster-delivery-wire":{"types":"./dist/roster-delivery-wire.d.ts","import":"./dist/roster-delivery-wire.js"}},"scripts":{"test":"vitest run","build":"tsc && node scripts/restore-accepted-runtime.mjs","prebuild":"npm run generate:version","check:version":"node scripts/generate-link-version.mjs --check","prepublishOnly":"npm run build","qualify:kernel":"npm run build && npm run typecheck:compat && vitest run test/platform-session-store.test.ts test/schema.test.ts test/scope.test.ts test/complete-link-replay-authority.test.ts test/bind-profile.test.ts","generate:version":"node scripts/generate-link-version.mjs","typecheck:compat":"tsc -p tsconfig.compat.json","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit","qualify:packed-server":"npm run build && node scripts/verify-packed-server-consumer.mjs"},"_npmUser":{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"},"repository":{"url":"git+https://github.com/jakekklinvex/phosra.git","type":"git","directory":"packages/link"},"_npmVersion":"11.16.0","description":"Phosra Link SDK for connecting a parent application to an OCSS (Open Child Safety Specification) platform. It provides the mandatory-branded parent experience, the same-origin provider route, durable delivery, and the lower-level writer-plane APIs.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"pg":"^8.11.0","undici":"6.27.0","@openchildsafety/ocss":"^0.1.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.6.1","@types/pg":"^8.11.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.0.0","@phosra/gatekeeper":"^0.8.71"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/link_0.7.69_1785932144600_0.7512033317374365","host":"s3://npm-registry-packages-npm-production"}},"0.7.70":{"name":"@phosra/link","version":"0.7.70","license":"MIT","_id":"@phosra/link@0.7.70","maintainers":[{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"}],"homepage":"https://docs.phosra.com/sdks/link","bugs":{"url":"https://github.com/jakekklinvex/phosra/issues"},"dist":{"shasum":"e87fd9b7ae15ef6bdb320c02edf31d5b637e99af","tarball":"https://registry.npmjs.org/@phosra/link/-/link-0.7.70.tgz","fileCount":591,"integrity":"sha512-0G76XA7w/Mztz0dmG+w6bQiPIZcxz6Uai/JSBnp6PNkUSBOr/p6HP8CNNNZEIDgBCoayFQyrziDcweiJhIVOzA==","signatures":[{"sig":"MEUCIA7SNk7dphe0GP+lAqEiRgoZQNydGWwt6gLvuEAU9NFyAiEAhjm3a9IqWmg59EC0zUUE6QtsqqHxzcsbMen+K3hCQVk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5210511},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./server":{"node":"./dist/server.js","types":"./dist/server.d.ts","browser":"./dist/server-browser.js","default":"./dist/server-browser.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./protocol":{"types":"./dist/protocol.d.ts","import":"./dist/protocol.js"},"./snapshot":{"types":"./dist/link-snapshot.d.ts","import":"./dist/link-snapshot.js"},"./link-intent":{"types":"./dist/link-intent.d.ts","import":"./dist/link-intent.js"},"./setup-server":{"types":"./dist/setup-server.d.ts","import":"./dist/setup-server.js"},"./platform-event":{"types":"./dist/platform-event.d.ts","import":"./dist/platform-event.js"},"./credential-runtime":{"node":"./dist/credential-runtime.js","types":"./dist/credential-runtime.d.ts","browser":"./dist/credential-runtime-browser.js","default":"./dist/credential-runtime-browser.js"},"./link-setup-document":{"types":"./dist/link-setup-document.d.ts","import":"./dist/link-setup-document.js"},"./roster-delivery-wire":{"types":"./dist/roster-delivery-wire.d.ts","import":"./dist/roster-delivery-wire.js"}},"scripts":{"test":"vitest run","build":"tsc && node scripts/restore-accepted-runtime.mjs","prebuild":"npm run generate:version","check:version":"node scripts/generate-link-version.mjs --check","prepublishOnly":"npm run build","qualify:kernel":"npm run build && npm run typecheck:compat && vitest run test/platform-session-store.test.ts test/schema.test.ts test/scope.test.ts test/complete-link-replay-authority.test.ts test/bind-profile.test.ts","generate:version":"node scripts/generate-link-version.mjs","typecheck:compat":"tsc -p tsconfig.compat.json","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit","qualify:packed-server":"npm run build && node scripts/verify-packed-server-consumer.mjs"},"_npmUser":{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"},"repository":{"url":"git+https://github.com/jakekklinvex/phosra.git","type":"git","directory":"packages/link"},"_npmVersion":"11.16.0","description":"Phosra Link SDK for connecting a parent application to an OCSS (Open Child Safety Specification) platform. It provides the mandatory-branded parent experience, the same-origin provider route, durable delivery, and the lower-level writer-plane APIs.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"pg":"^8.11.0","undici":"6.27.0","@openchildsafety/ocss":"^0.1.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.6.1","@types/pg":"^8.11.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.0.0","@phosra/gatekeeper":"^0.8.71"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/link_0.7.70_1785932785992_0.6265915189578888","host":"s3://npm-registry-packages-npm-production"}},"0.7.71":{"name":"@phosra/link","version":"0.7.71","license":"MIT","_id":"@phosra/link@0.7.71","maintainers":[{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"}],"homepage":"https://docs.phosra.com/sdks/link","bugs":{"url":"https://github.com/jakekklinvex/phosra/issues"},"dist":{"shasum":"ea3420011c9e75bfd1e9f006fdd6e67df9d910a2","tarball":"https://registry.npmjs.org/@phosra/link/-/link-0.7.71.tgz","fileCount":591,"integrity":"sha512-Jr+262UcQtBZ4Yw7DTwiVxd5k5M45u4S38zAgY0qVX3MPaC3J6r62XwSwIjcL4rZXznN50ABCWPeIj9s15wJWA==","signatures":[{"sig":"MEYCIQCbq0virembDw+Vcz8MWBEjluA690xTCoprrl3SKdPHhgIhALj3ZcibGC3/EnR4tJ+Lr0X+TC+e5EvIRrmjFYt4q+qj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5211391},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./server":{"node":"./dist/server.js","types":"./dist/server.d.ts","browser":"./dist/server-browser.js","default":"./dist/server-browser.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./protocol":{"types":"./dist/protocol.d.ts","import":"./dist/protocol.js"},"./snapshot":{"types":"./dist/link-snapshot.d.ts","import":"./dist/link-snapshot.js"},"./link-intent":{"types":"./dist/link-intent.d.ts","import":"./dist/link-intent.js"},"./setup-server":{"types":"./dist/setup-server.d.ts","import":"./dist/setup-server.js"},"./platform-event":{"types":"./dist/platform-event.d.ts","import":"./dist/platform-event.js"},"./credential-runtime":{"node":"./dist/credential-runtime.js","types":"./dist/credential-runtime.d.ts","browser":"./dist/credential-runtime-browser.js","default":"./dist/credential-runtime-browser.js"},"./link-setup-document":{"types":"./dist/link-setup-document.d.ts","import":"./dist/link-setup-document.js"},"./roster-delivery-wire":{"types":"./dist/roster-delivery-wire.d.ts","import":"./dist/roster-delivery-wire.js"}},"scripts":{"test":"vitest run","build":"tsc && node scripts/restore-accepted-runtime.mjs","prebuild":"npm run generate:version","check:version":"node scripts/generate-link-version.mjs --check","prepublishOnly":"npm run build","qualify:kernel":"npm run build && npm run typecheck:compat && vitest run test/platform-session-store.test.ts test/schema.test.ts test/scope.test.ts test/complete-link-replay-authority.test.ts test/bind-profile.test.ts","generate:version":"node scripts/generate-link-version.mjs","typecheck:compat":"tsc -p tsconfig.compat.json","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit","qualify:packed-server":"npm run build && node scripts/verify-packed-server-consumer.mjs"},"_npmUser":{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"},"repository":{"url":"git+https://github.com/jakekklinvex/phosra.git","type":"git","directory":"packages/link"},"_npmVersion":"11.16.0","description":"Phosra Link SDK for connecting a parent application to an OCSS (Open Child Safety Specification) platform. It provides the mandatory-branded parent experience, the same-origin provider route, durable delivery, and the lower-level writer-plane APIs.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"pg":"^8.11.0","undici":"6.27.0","@openchildsafety/ocss":"^0.1.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.6.1","@types/pg":"^8.11.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.0.0","@phosra/gatekeeper":"^0.8.71"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/link_0.7.71_1785933360407_0.548956300273822","host":"s3://npm-registry-packages-npm-production"}},"0.7.72":{"name":"@phosra/link","version":"0.7.72","license":"MIT","_id":"@phosra/link@0.7.72","maintainers":[{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"}],"homepage":"https://docs.phosra.com/sdks/link","bugs":{"url":"https://github.com/jakekklinvex/phosra/issues"},"dist":{"shasum":"b227856070090833f64de7bbe26800ee534691b5","tarball":"https://registry.npmjs.org/@phosra/link/-/link-0.7.72.tgz","fileCount":591,"integrity":"sha512-pUwJFwjh1wojB5ZiukRiyQ3XdoaeApdISjbx+QhO71aHFgE+gv2Ii19yjL0QCwj7LPo15bagK8+y2STFGGQeKw==","signatures":[{"sig":"MEUCIQCjjZSqHOaS3L55pos1NrgiPXVdz6+DDNdeVfXtaXBXpQIgCSexITEuKOEpdfj1kKhl3X9GITGExFlJgvDjNQ/JxU4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5213127},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./server":{"node":"./dist/server.js","types":"./dist/server.d.ts","browser":"./dist/server-browser.js","default":"./dist/server-browser.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./protocol":{"types":"./dist/protocol.d.ts","import":"./dist/protocol.js"},"./snapshot":{"types":"./dist/link-snapshot.d.ts","import":"./dist/link-snapshot.js"},"./link-intent":{"types":"./dist/link-intent.d.ts","import":"./dist/link-intent.js"},"./setup-server":{"types":"./dist/setup-server.d.ts","import":"./dist/setup-server.js"},"./platform-event":{"types":"./dist/platform-event.d.ts","import":"./dist/platform-event.js"},"./credential-runtime":{"node":"./dist/credential-runtime.js","types":"./dist/credential-runtime.d.ts","browser":"./dist/credential-runtime-browser.js","default":"./dist/credential-runtime-browser.js"},"./link-setup-document":{"types":"./dist/link-setup-document.d.ts","import":"./dist/link-setup-document.js"},"./roster-delivery-wire":{"types":"./dist/roster-delivery-wire.d.ts","import":"./dist/roster-delivery-wire.js"}},"scripts":{"test":"vitest run","build":"tsc && node scripts/restore-accepted-runtime.mjs","prebuild":"npm run generate:version","check:version":"node scripts/generate-link-version.mjs --check","prepublishOnly":"npm run build","qualify:kernel":"npm run build && npm run typecheck:compat && vitest run test/platform-session-store.test.ts test/schema.test.ts test/scope.test.ts test/complete-link-replay-authority.test.ts test/bind-profile.test.ts","generate:version":"node scripts/generate-link-version.mjs","typecheck:compat":"tsc -p tsconfig.compat.json","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit","qualify:packed-server":"npm run build && node scripts/verify-packed-server-consumer.mjs"},"_npmUser":{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"},"repository":{"url":"git+https://github.com/jakekklinvex/phosra.git","type":"git","directory":"packages/link"},"_npmVersion":"11.16.0","description":"Phosra Link SDK for connecting a parent application to an OCSS (Open Child Safety Specification) platform. It provides the mandatory-branded parent experience, the same-origin provider route, durable delivery, and the lower-level writer-plane APIs.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"pg":"^8.11.0","undici":"6.27.0","@openchildsafety/ocss":"^0.1.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.6.1","@types/pg":"^8.11.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.0.0","@phosra/gatekeeper":"^0.8.71"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/link_0.7.72_1785942373049_0.3617989176408658","host":"s3://npm-registry-packages-npm-production"}},"0.7.73":{"name":"@phosra/link","version":"0.7.73","license":"MIT","_id":"@phosra/link@0.7.73","maintainers":[{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"}],"homepage":"https://docs.phosra.com/sdks/link","bugs":{"url":"https://github.com/jakekklinvex/phosra/issues"},"dist":{"shasum":"789e73e588320e76eeda1d2697cbd5790e88012e","tarball":"https://registry.npmjs.org/@phosra/link/-/link-0.7.73.tgz","fileCount":591,"integrity":"sha512-5ptSf/tH+j68lT7++ZZYJ3DfYu+jpfpHbgWfXYS56n4rkAsPc933TmI3kgKXmv8rPl9YTZS4veBXXYOiYvOngg==","signatures":[{"sig":"MEQCIBjsXo4VGInqWV95kr/hRTUngSZPyeh+B2C5ie7/YNjBAiAmHe7N8gKhPUlHAqw0mlh5i5+skYxguplX/kY9NYkLoQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5214988},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./server":{"node":"./dist/server.js","types":"./dist/server.d.ts","browser":"./dist/server-browser.js","default":"./dist/server-browser.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./protocol":{"types":"./dist/protocol.d.ts","import":"./dist/protocol.js"},"./snapshot":{"types":"./dist/link-snapshot.d.ts","import":"./dist/link-snapshot.js"},"./link-intent":{"types":"./dist/link-intent.d.ts","import":"./dist/link-intent.js"},"./setup-server":{"types":"./dist/setup-server.d.ts","import":"./dist/setup-server.js"},"./platform-event":{"types":"./dist/platform-event.d.ts","import":"./dist/platform-event.js"},"./credential-runtime":{"node":"./dist/credential-runtime.js","types":"./dist/credential-runtime.d.ts","browser":"./dist/credential-runtime-browser.js","default":"./dist/credential-runtime-browser.js"},"./link-setup-document":{"types":"./dist/link-setup-document.d.ts","import":"./dist/link-setup-document.js"},"./roster-delivery-wire":{"types":"./dist/roster-delivery-wire.d.ts","import":"./dist/roster-delivery-wire.js"}},"scripts":{"test":"vitest run","build":"tsc && node scripts/restore-accepted-runtime.mjs","prebuild":"npm run generate:version","check:version":"node scripts/generate-link-version.mjs --check","prepublishOnly":"npm run build","qualify:kernel":"npm run build && npm run typecheck:compat && vitest run test/platform-session-store.test.ts test/schema.test.ts test/scope.test.ts test/complete-link-replay-authority.test.ts test/bind-profile.test.ts","generate:version":"node scripts/generate-link-version.mjs","typecheck:compat":"tsc -p tsconfig.compat.json","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit","qualify:packed-server":"npm run build && node scripts/verify-packed-server-consumer.mjs"},"_npmUser":{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"},"repository":{"url":"git+https://github.com/jakekklinvex/phosra.git","type":"git","directory":"packages/link"},"_npmVersion":"11.16.0","description":"Phosra Link SDK for connecting a parent application to an OCSS (Open Child Safety Specification) platform. It provides the mandatory-branded parent experience, the same-origin provider route, durable delivery, and the lower-level writer-plane APIs.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"pg":"^8.11.0","undici":"6.27.0","@openchildsafety/ocss":"^0.1.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.6.1","@types/pg":"^8.11.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.0.0","@phosra/gatekeeper":"^0.8.71"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/link_0.7.73_1785943466403_0.4987434606338983","host":"s3://npm-registry-packages-npm-production"}},"0.7.74":{"name":"@phosra/link","version":"0.7.74","license":"MIT","_id":"@phosra/link@0.7.74","maintainers":[{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"}],"homepage":"https://docs.phosra.com/sdks/link","bugs":{"url":"https://github.com/jakekklinvex/phosra/issues"},"dist":{"shasum":"b0e6ee5a728b303a105dafb28e4b405c29dd0113","tarball":"https://registry.npmjs.org/@phosra/link/-/link-0.7.74.tgz","fileCount":591,"integrity":"sha512-mv4lm58XZWXz63aquQbmRBuwROtGUVGG4pmJUmw9WE3WggbQ4UCNqs24FTJhZ8k7SuQ4wDK1bM/y6GFy+zqsCQ==","signatures":[{"sig":"MEQCIAalfN03dZFvBQiSCO2rksM9pAHL7hvQie3vXO630MS5AiBIrGidujjNBODFV+tSxzVKdLALIj+4RkTI2Y0M7tlaJQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5216688},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./server":{"node":"./dist/server.js","types":"./dist/server.d.ts","browser":"./dist/server-browser.js","default":"./dist/server-browser.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./protocol":{"types":"./dist/protocol.d.ts","import":"./dist/protocol.js"},"./snapshot":{"types":"./dist/link-snapshot.d.ts","import":"./dist/link-snapshot.js"},"./link-intent":{"types":"./dist/link-intent.d.ts","import":"./dist/link-intent.js"},"./setup-server":{"types":"./dist/setup-server.d.ts","import":"./dist/setup-server.js"},"./platform-event":{"types":"./dist/platform-event.d.ts","import":"./dist/platform-event.js"},"./credential-runtime":{"node":"./dist/credential-runtime.js","types":"./dist/credential-runtime.d.ts","browser":"./dist/credential-runtime-browser.js","default":"./dist/credential-runtime-browser.js"},"./link-setup-document":{"types":"./dist/link-setup-document.d.ts","import":"./dist/link-setup-document.js"},"./roster-delivery-wire":{"types":"./dist/roster-delivery-wire.d.ts","import":"./dist/roster-delivery-wire.js"}},"scripts":{"test":"vitest run","build":"tsc && node scripts/restore-accepted-runtime.mjs","prebuild":"npm run generate:version","check:version":"node scripts/generate-link-version.mjs --check","prepublishOnly":"npm run build","qualify:kernel":"npm run build && npm run typecheck:compat && vitest run test/platform-session-store.test.ts test/schema.test.ts test/scope.test.ts test/complete-link-replay-authority.test.ts test/bind-profile.test.ts","generate:version":"node scripts/generate-link-version.mjs","typecheck:compat":"tsc -p tsconfig.compat.json","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit","qualify:packed-server":"npm run build && node scripts/verify-packed-server-consumer.mjs"},"_npmUser":{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"},"repository":{"url":"git+https://github.com/jakekklinvex/phosra.git","type":"git","directory":"packages/link"},"_npmVersion":"11.16.0","description":"Phosra Link SDK for connecting a parent application to an OCSS (Open Child Safety Specification) platform. It provides the mandatory-branded parent experience, the same-origin provider route, durable delivery, and the lower-level writer-plane APIs.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"pg":"^8.11.0","undici":"6.27.0","@openchildsafety/ocss":"^0.1.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.6.1","@types/pg":"^8.11.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.0.0","@phosra/gatekeeper":"^0.8.71"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/link_0.7.74_1785944384301_0.8446382738107754","host":"s3://npm-registry-packages-npm-production"}},"0.7.75":{"name":"@phosra/link","version":"0.7.75","license":"MIT","_id":"@phosra/link@0.7.75","maintainers":[{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"}],"homepage":"https://docs.phosra.com/sdks/link","bugs":{"url":"https://github.com/jakekklinvex/phosra/issues"},"dist":{"shasum":"ef6d45f764997459d3ed689c9e2a7033ee08ab11","tarball":"https://registry.npmjs.org/@phosra/link/-/link-0.7.75.tgz","fileCount":591,"integrity":"sha512-bHC8ra/D0+Nry9n8/R4VgHvNTX18/76vN7wpUadDMH2bohbBKBulb8tgFjWlZQLNGZQXKuhxdyIsPw5mgTTEng==","signatures":[{"sig":"MEUCIBBlSV9ApFrb0FF8SzxMhWvCNXwimpzWJGge58SM6g/5AiEAxrLP2omsWshTDuZW19lFavPGWpw3i/U8QKcD46n+FP0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5218094},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./server":{"node":"./dist/server.js","types":"./dist/server.d.ts","browser":"./dist/server-browser.js","default":"./dist/server-browser.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./protocol":{"types":"./dist/protocol.d.ts","import":"./dist/protocol.js"},"./snapshot":{"types":"./dist/link-snapshot.d.ts","import":"./dist/link-snapshot.js"},"./link-intent":{"types":"./dist/link-intent.d.ts","import":"./dist/link-intent.js"},"./setup-server":{"types":"./dist/setup-server.d.ts","import":"./dist/setup-server.js"},"./platform-event":{"types":"./dist/platform-event.d.ts","import":"./dist/platform-event.js"},"./credential-runtime":{"node":"./dist/credential-runtime.js","types":"./dist/credential-runtime.d.ts","browser":"./dist/credential-runtime-browser.js","default":"./dist/credential-runtime-browser.js"},"./link-setup-document":{"types":"./dist/link-setup-document.d.ts","import":"./dist/link-setup-document.js"},"./roster-delivery-wire":{"types":"./dist/roster-delivery-wire.d.ts","import":"./dist/roster-delivery-wire.js"}},"scripts":{"test":"vitest run","build":"tsc && node scripts/restore-accepted-runtime.mjs","prebuild":"npm run generate:version","check:version":"node scripts/generate-link-version.mjs --check","prepublishOnly":"npm run build","qualify:kernel":"npm run build && npm run typecheck:compat && vitest run test/platform-session-store.test.ts test/schema.test.ts test/scope.test.ts test/complete-link-replay-authority.test.ts test/bind-profile.test.ts","generate:version":"node scripts/generate-link-version.mjs","typecheck:compat":"tsc -p tsconfig.compat.json","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit","qualify:packed-server":"npm run build && node scripts/verify-packed-server-consumer.mjs"},"_npmUser":{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"},"repository":{"url":"git+https://github.com/jakekklinvex/phosra.git","type":"git","directory":"packages/link"},"_npmVersion":"11.16.0","description":"Phosra Link SDK for connecting a parent application to an OCSS (Open Child Safety Specification) platform. It provides the mandatory-branded parent experience, the same-origin provider route, durable delivery, and the lower-level writer-plane APIs.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"pg":"^8.11.0","undici":"6.27.0","@openchildsafety/ocss":"^0.1.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.6.1","@types/pg":"^8.11.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.0.0","@phosra/gatekeeper":"^0.8.71"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/link_0.7.75_1785960433520_0.6165504014758911","host":"s3://npm-registry-packages-npm-production"}},"0.7.76":{"name":"@phosra/link","version":"0.7.76","license":"MIT","_id":"@phosra/link@0.7.76","maintainers":[{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"}],"homepage":"https://docs.phosra.com/sdks/link","bugs":{"url":"https://github.com/jakekklinvex/phosra/issues"},"dist":{"shasum":"c97e6ede8d09e1f6fd02d71c683ad3f6fe02c926","tarball":"https://registry.npmjs.org/@phosra/link/-/link-0.7.76.tgz","fileCount":591,"integrity":"sha512-uPF0ErvtOJ+gshzAkyqZqgBQDmRX+2N4iECahi6GRhghns2tGtcWVDbPvJC73JUrSPfDWBA6QFGWKsNet0wNjw==","signatures":[{"sig":"MEUCIG5sxgKJXK1aMBcJHpkC8nuG3FaAMMM/wQ79WtQiq0+BAiEAqKV9EvZKFATkHrHTeYZ4rTJe5m9btqvEL2GexMVyRy0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5221487},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./server":{"node":"./dist/server.js","types":"./dist/server.d.ts","browser":"./dist/server-browser.js","default":"./dist/server-browser.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./protocol":{"types":"./dist/protocol.d.ts","import":"./dist/protocol.js"},"./snapshot":{"types":"./dist/link-snapshot.d.ts","import":"./dist/link-snapshot.js"},"./link-intent":{"types":"./dist/link-intent.d.ts","import":"./dist/link-intent.js"},"./setup-server":{"types":"./dist/setup-server.d.ts","import":"./dist/setup-server.js"},"./platform-event":{"types":"./dist/platform-event.d.ts","import":"./dist/platform-event.js"},"./credential-runtime":{"node":"./dist/credential-runtime.js","types":"./dist/credential-runtime.d.ts","browser":"./dist/credential-runtime-browser.js","default":"./dist/credential-runtime-browser.js"},"./link-setup-document":{"types":"./dist/link-setup-document.d.ts","import":"./dist/link-setup-document.js"},"./roster-delivery-wire":{"types":"./dist/roster-delivery-wire.d.ts","import":"./dist/roster-delivery-wire.js"}},"scripts":{"test":"vitest run","build":"tsc && node scripts/restore-accepted-runtime.mjs","prebuild":"npm run generate:version","check:version":"node scripts/generate-link-version.mjs --check","prepublishOnly":"npm run build","qualify:kernel":"npm run build && npm run typecheck:compat && vitest run test/platform-session-store.test.ts test/schema.test.ts test/scope.test.ts test/complete-link-replay-authority.test.ts test/bind-profile.test.ts","generate:version":"node scripts/generate-link-version.mjs","typecheck:compat":"tsc -p tsconfig.compat.json","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit","qualify:packed-server":"npm run build && node scripts/verify-packed-server-consumer.mjs"},"_npmUser":{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"},"repository":{"url":"git+https://github.com/jakekklinvex/phosra.git","type":"git","directory":"packages/link"},"_npmVersion":"11.16.0","description":"Phosra Link SDK for connecting a parent application to an OCSS (Open Child Safety Specification) platform. It provides the mandatory-branded parent experience, the same-origin provider route, durable delivery, and the lower-level writer-plane APIs.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"pg":"^8.11.0","undici":"6.27.0","@openchildsafety/ocss":"^0.1.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.6.1","@types/pg":"^8.11.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.0.0","@phosra/gatekeeper":"^0.8.71"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/link_0.7.76_1785961535126_0.394747359825917","host":"s3://npm-registry-packages-npm-production"}},"0.7.77":{"name":"@phosra/link","version":"0.7.77","license":"MIT","_id":"@phosra/link@0.7.77","maintainers":[{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"}],"homepage":"https://docs.phosra.com/sdks/link","bugs":{"url":"https://github.com/jakekklinvex/phosra/issues"},"dist":{"shasum":"8fb8490a107d068375628cae32732e71a9c16ad0","tarball":"https://registry.npmjs.org/@phosra/link/-/link-0.7.77.tgz","fileCount":591,"integrity":"sha512-DBzHqzakaIhuNF6Sqwh8MXMm7OFfMbDSp5JLpCfCkemOne3SI+kUZeG7L8dMQy9A5Ldzky8RW+PbGtaLOYEw6w==","signatures":[{"sig":"MEQCIALhVSrw/2mz7WyCfKcZrLmUgX2s2hMlJR30TAZTtnZ2AiB+HPU4LY09xrF/OfubGpJ2DH8tto1j8y8KHg9cxNSthA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5222186},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./server":{"node":"./dist/server.js","types":"./dist/server.d.ts","browser":"./dist/server-browser.js","default":"./dist/server-browser.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./protocol":{"types":"./dist/protocol.d.ts","import":"./dist/protocol.js"},"./snapshot":{"types":"./dist/link-snapshot.d.ts","import":"./dist/link-snapshot.js"},"./link-intent":{"types":"./dist/link-intent.d.ts","import":"./dist/link-intent.js"},"./setup-server":{"types":"./dist/setup-server.d.ts","import":"./dist/setup-server.js"},"./platform-event":{"types":"./dist/platform-event.d.ts","import":"./dist/platform-event.js"},"./credential-runtime":{"node":"./dist/credential-runtime.js","types":"./dist/credential-runtime.d.ts","browser":"./dist/credential-runtime-browser.js","default":"./dist/credential-runtime-browser.js"},"./link-setup-document":{"types":"./dist/link-setup-document.d.ts","import":"./dist/link-setup-document.js"},"./roster-delivery-wire":{"types":"./dist/roster-delivery-wire.d.ts","import":"./dist/roster-delivery-wire.js"}},"scripts":{"test":"vitest run","build":"tsc && node scripts/restore-accepted-runtime.mjs","prebuild":"npm run generate:version","check:version":"node scripts/generate-link-version.mjs --check","prepublishOnly":"npm run build","qualify:kernel":"npm run build && npm run typecheck:compat && vitest run test/platform-session-store.test.ts test/schema.test.ts test/scope.test.ts test/complete-link-replay-authority.test.ts test/bind-profile.test.ts","generate:version":"node scripts/generate-link-version.mjs","typecheck:compat":"tsc -p tsconfig.compat.json","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit","qualify:packed-server":"npm run build && node scripts/verify-packed-server-consumer.mjs"},"_npmUser":{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"},"repository":{"url":"git+https://github.com/jakekklinvex/phosra.git","type":"git","directory":"packages/link"},"_npmVersion":"11.16.0","description":"Phosra Link SDK for connecting a parent application to an OCSS (Open Child Safety Specification) platform. It provides the mandatory-branded parent experience, the same-origin provider route, durable delivery, and the lower-level writer-plane APIs.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"pg":"^8.11.0","undici":"6.27.0","@openchildsafety/ocss":"^0.1.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.6.1","@types/pg":"^8.11.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.0.0","@phosra/gatekeeper":"^0.8.71"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/link_0.7.77_1785962113878_0.1685003037837023","host":"s3://npm-registry-packages-npm-production"}},"0.7.78":{"name":"@phosra/link","version":"0.7.78","license":"MIT","_id":"@phosra/link@0.7.78","maintainers":[{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"}],"homepage":"https://docs.phosra.com/sdks/link","bugs":{"url":"https://github.com/jakekklinvex/phosra/issues"},"dist":{"shasum":"ac63d5ae506dfbd92f4313b1744feb85e323ad82","tarball":"https://registry.npmjs.org/@phosra/link/-/link-0.7.78.tgz","fileCount":591,"integrity":"sha512-kTXk1CSR0fnmlHYxiQlVWzm/eLi0d2kh9MMshziztUvK6DkX7RlVNDhXjWD42z5r+clJoA45PSUswshH5jZ3Bw==","signatures":[{"sig":"MEYCIQCYkKCegE3ixyikDci/tsg6W9b59w1iL0nOjpgXUsrflQIhAIb4+MzRjG4uiE1YB+pJ7Q9ktRqXPbMO8+IYmVpAxCki","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5224227},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./server":{"node":"./dist/server.js","types":"./dist/server.d.ts","browser":"./dist/server-browser.js","default":"./dist/server-browser.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./protocol":{"types":"./dist/protocol.d.ts","import":"./dist/protocol.js"},"./snapshot":{"types":"./dist/link-snapshot.d.ts","import":"./dist/link-snapshot.js"},"./link-intent":{"types":"./dist/link-intent.d.ts","import":"./dist/link-intent.js"},"./setup-server":{"types":"./dist/setup-server.d.ts","import":"./dist/setup-server.js"},"./platform-event":{"types":"./dist/platform-event.d.ts","import":"./dist/platform-event.js"},"./credential-runtime":{"node":"./dist/credential-runtime.js","types":"./dist/credential-runtime.d.ts","browser":"./dist/credential-runtime-browser.js","default":"./dist/credential-runtime-browser.js"},"./link-setup-document":{"types":"./dist/link-setup-document.d.ts","import":"./dist/link-setup-document.js"},"./roster-delivery-wire":{"types":"./dist/roster-delivery-wire.d.ts","import":"./dist/roster-delivery-wire.js"}},"scripts":{"test":"vitest run","build":"tsc && node scripts/restore-accepted-runtime.mjs","prebuild":"npm run generate:version","check:version":"node scripts/generate-link-version.mjs --check","prepublishOnly":"npm run build","qualify:kernel":"npm run build && npm run typecheck:compat && vitest run test/platform-session-store.test.ts test/schema.test.ts test/scope.test.ts test/complete-link-replay-authority.test.ts test/bind-profile.test.ts","generate:version":"node scripts/generate-link-version.mjs","typecheck:compat":"tsc -p tsconfig.compat.json","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit","qualify:packed-server":"npm run build && node scripts/verify-packed-server-consumer.mjs"},"_npmUser":{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"},"repository":{"url":"git+https://github.com/jakekklinvex/phosra.git","type":"git","directory":"packages/link"},"_npmVersion":"11.16.0","description":"Phosra Link SDK for connecting a parent application to an OCSS (Open Child Safety Specification) platform. It provides the mandatory-branded parent experience, the same-origin provider route, durable delivery, and the lower-level writer-plane APIs.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"pg":"^8.11.0","undici":"6.27.0","@openchildsafety/ocss":"^0.1.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.6.1","@types/pg":"^8.11.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.0.0","@phosra/gatekeeper":"^0.8.71"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/link_0.7.78_1785983732595_0.4526082584073854","host":"s3://npm-registry-packages-npm-production"}},"0.7.79":{"name":"@phosra/link","version":"0.7.79","license":"MIT","_id":"@phosra/link@0.7.79","maintainers":[{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"}],"homepage":"https://docs.phosra.com/sdks/link","bugs":{"url":"https://github.com/jakekklinvex/phosra/issues"},"dist":{"shasum":"fb20ab8cffb5fb2e7f8287e403827884cb0afe87","tarball":"https://registry.npmjs.org/@phosra/link/-/link-0.7.79.tgz","fileCount":591,"integrity":"sha512-WBSzGR0WWvGJscSMRCbGQxLJtuNZs/chdh/OBqYSHZzDHpr7CI83z3TqzPjP9Nkt8wAxDyjhdHTPO7uzeKf8CA==","signatures":[{"sig":"MEYCIQCrx9n0JvT51BFgZvTZI5abvwTwozoPBth+u2DDAIHLZwIhALkd+JA6VXkssIrVtcX0V3h/TXpTKMtAswXvQBR9+ddz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5225698},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./server":{"node":"./dist/server.js","types":"./dist/server.d.ts","browser":"./dist/server-browser.js","default":"./dist/server-browser.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./protocol":{"types":"./dist/protocol.d.ts","import":"./dist/protocol.js"},"./snapshot":{"types":"./dist/link-snapshot.d.ts","import":"./dist/link-snapshot.js"},"./link-intent":{"types":"./dist/link-intent.d.ts","import":"./dist/link-intent.js"},"./setup-server":{"types":"./dist/setup-server.d.ts","import":"./dist/setup-server.js"},"./platform-event":{"types":"./dist/platform-event.d.ts","import":"./dist/platform-event.js"},"./credential-runtime":{"node":"./dist/credential-runtime.js","types":"./dist/credential-runtime.d.ts","browser":"./dist/credential-runtime-browser.js","default":"./dist/credential-runtime-browser.js"},"./link-setup-document":{"types":"./dist/link-setup-document.d.ts","import":"./dist/link-setup-document.js"},"./roster-delivery-wire":{"types":"./dist/roster-delivery-wire.d.ts","import":"./dist/roster-delivery-wire.js"}},"scripts":{"test":"vitest run","build":"tsc && node scripts/restore-accepted-runtime.mjs","prebuild":"npm run generate:version","check:version":"node scripts/generate-link-version.mjs --check","prepublishOnly":"npm run build","qualify:kernel":"npm run build && npm run typecheck:compat && vitest run test/platform-session-store.test.ts test/schema.test.ts test/scope.test.ts test/complete-link-replay-authority.test.ts test/bind-profile.test.ts","generate:version":"node scripts/generate-link-version.mjs","typecheck:compat":"tsc -p tsconfig.compat.json","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit","qualify:packed-server":"npm run build && node scripts/verify-packed-server-consumer.mjs"},"_npmUser":{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"},"repository":{"url":"git+https://github.com/jakekklinvex/phosra.git","type":"git","directory":"packages/link"},"_npmVersion":"11.16.0","description":"Phosra Link SDK for connecting a parent application to an OCSS (Open Child Safety Specification) platform. It provides the mandatory-branded parent experience, the same-origin provider route, durable delivery, and the lower-level writer-plane APIs.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"pg":"^8.11.0","undici":"6.27.0","@openchildsafety/ocss":"^0.1.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.6.1","@types/pg":"^8.11.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.0.0","@phosra/gatekeeper":"^0.8.71"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/link_0.7.79_1785985832883_0.19096931246635518","host":"s3://npm-registry-packages-npm-production"}},"0.7.80":{"name":"@phosra/link","version":"0.7.80","license":"MIT","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"},"./protocol":{"import":"./dist/protocol.js","types":"./dist/protocol.d.ts"},"./platform-event":{"import":"./dist/platform-event.js","types":"./dist/platform-event.d.ts"},"./server":{"types":"./dist/server.d.ts","browser":"./dist/server-browser.js","node":"./dist/server.js","default":"./dist/server-browser.js"},"./credential-runtime":{"types":"./dist/credential-runtime.d.ts","browser":"./dist/credential-runtime-browser.js","node":"./dist/credential-runtime.js","default":"./dist/credential-runtime-browser.js"},"./react":{"import":"./dist/react.js","types":"./dist/react.d.ts"},"./link-intent":{"import":"./dist/link-intent.js","types":"./dist/link-intent.d.ts"},"./snapshot":{"import":"./dist/link-snapshot.js","types":"./dist/link-snapshot.d.ts"},"./roster-delivery-wire":{"import":"./dist/roster-delivery-wire.js","types":"./dist/roster-delivery-wire.d.ts"},"./link-setup-document":{"import":"./dist/link-setup-document.js","types":"./dist/link-setup-document.d.ts"},"./setup-server":{"import":"./dist/setup-server.js","types":"./dist/setup-server.d.ts"},"./testing":{"import":"./dist/testing.js","types":"./dist/testing.d.ts"}},"publishConfig":{"access":"public"},"scripts":{"generate:version":"node scripts/generate-link-version.mjs","check:version":"node scripts/generate-link-version.mjs --check","prebuild":"npm run generate:version","build":"tsc && node scripts/restore-accepted-runtime.mjs","test":"vitest run","typecheck:compat":"tsc -p tsconfig.compat.json","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit","qualify:packed-server":"npm run build && node scripts/verify-packed-server-consumer.mjs","qualify:kernel":"npm run build && npm run typecheck:compat && vitest run test/platform-session-store.test.ts test/schema.test.ts test/scope.test.ts test/complete-link-replay-authority.test.ts test/bind-profile.test.ts","prepublishOnly":"npm run build"},"dependencies":{"@openchildsafety/ocss":"^0.1.6","pg":"^8.11.0","undici":"6.27.0"},"devDependencies":{"@phosra/gatekeeper":"^0.8.71","@types/react":"^19.0.0","@types/node":"^22.0.0","@types/pg":"^8.11.0","typescript":"^5.7.0","vitest":"^1.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"repository":{"type":"git","url":"git+https://github.com/jakekklinvex/phosra.git","directory":"packages/link"},"homepage":"https://docs.phosra.com/sdks/link","_id":"@phosra/link@0.7.80","description":"Phosra Link SDK for connecting a parent application to an OCSS (Open Child Safety Specification) platform. It provides the mandatory-branded parent experience, the same-origin provider route, durable delivery, and the lower-level writer-plane APIs.","bugs":{"url":"https://github.com/jakekklinvex/phosra/issues"},"_nodeVersion":"26.3.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-rjOB4Mf6uXz4ulSwAVCt58YRn/GmH9FHfmG2M6r76YhKmYHaj5BclmHzd0VVbqBV4HdimXzZxTekppsoCtbK5w==","shasum":"51f1650b4a0f7f6b814e975a07aa5c6a5390ae3f","tarball":"https://registry.npmjs.org/@phosra/link/-/link-0.7.80.tgz","fileCount":591,"unpackedSize":5227353,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCOMxTT01oJkhzBSpZfTGTFrzqf+4woljUc5fV3UVccngIhAOgS+02r4pVFF+pU3aYoUdYau0P6ML4h/q9RjUlZKpPx"}]},"_npmUser":{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"},"directories":{},"maintainers":[{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/link_0.7.80_1785986468374_0.3140908963661546"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-28T15:59:36.503Z","modified":"2026-08-06T03:21:08.739Z","0.1.0":"2026-06-28T15:59:36.760Z","0.1.1":"2026-07-01T22:42:40.400Z","0.1.2":"2026-07-04T16:19:05.882Z","0.2.0":"2026-07-07T20:29:23.973Z","0.2.1":"2026-07-08T11:35:26.006Z","0.2.2":"2026-07-08T13:49:36.435Z","0.3.0":"2026-07-08T14:37:28.420Z","0.4.0":"2026-07-08T16:19:10.431Z","0.5.0":"2026-07-08T17:59:46.094Z","0.6.0":"2026-07-08T21:21:58.844Z","0.6.1":"2026-07-10T00:34:11.146Z","0.7.54":"2026-07-25T10:20:58.576Z","0.7.56":"2026-07-26T01:55:24.546Z","0.7.57":"2026-07-26T12:37:11.339Z","0.7.65":"2026-08-03T11:53:26.554Z","0.7.66":"2026-08-04T23:40:42.697Z","0.7.67":"2026-08-05T11:57:09.118Z","0.7.68":"2026-08-05T11:58:34.790Z","0.7.69":"2026-08-05T12:15:44.776Z","0.7.70":"2026-08-05T12:26:26.180Z","0.7.71":"2026-08-05T12:36:00.593Z","0.7.72":"2026-08-05T15:06:13.292Z","0.7.73":"2026-08-05T15:24:26.644Z","0.7.74":"2026-08-05T15:39:44.493Z","0.7.75":"2026-08-05T20:07:13.707Z","0.7.76":"2026-08-05T20:25:35.324Z","0.7.77":"2026-08-05T20:35:14.092Z","0.7.78":"2026-08-06T02:35:32.814Z","0.7.79":"2026-08-06T03:10:33.063Z","0.7.80":"2026-08-06T03:21:08.579Z"},"bugs":{"url":"https://github.com/jakekklinvex/phosra/issues"},"license":"MIT","homepage":"https://docs.phosra.com/sdks/link","repository":{"type":"git","url":"git+https://github.com/jakekklinvex/phosra.git","directory":"packages/link"},"description":"Phosra Link SDK for connecting a parent application to an OCSS (Open Child Safety Specification) platform. It provides the mandatory-branded parent experience, the same-origin provider route, durable delivery, and the lower-level writer-plane APIs.","maintainers":[{"name":"jakeklinvex","email":"jake.k.klinvex@gmail.com"}],"readme":"# @phosra/link\n\nPhosra Link SDK for connecting a parent application to an OCSS (Open Child Safety\nSpecification) platform. It provides the mandatory-branded parent experience, the\nsame-origin provider route, durable delivery, and the lower-level writer-plane APIs.\n\n## Install\n\n```bash\nnpm install @phosra/link\n```\n\n`pg` (node-postgres) is a runtime dependency — Link's durable authority and delivery\nstores are Postgres-backed. React is an optional peer dependency used by\n`@phosra/link/react`.\n\n## Database migration (run before the web and worker processes)\n\nApply the complete provider schema once per deployment, before either runtime\nprocess starts. The migration needs only database authority: `DATABASE_URL` is its\nonly input. It does not need `PHOSRA_CREDENTIAL`, census or Trust List settings,\nwriter keys, or delivery secrets.\n\n```ts\n// scripts/migrate-phosra-link.ts\nimport { Pool } from \"pg\"\nimport { migrateLinkServerSchema } from \"@phosra/link/server\"\n\nconst databaseUrl = process.env.DATABASE_URL\nif (!databaseUrl) throw new Error(\"DATABASE_URL is required\")\n\nconst pool = new Pool({ connectionString: databaseUrl })\ntry {\n  await migrateLinkServerSchema(pool)\n} finally {\n  await pool.end()\n}\n```\n\nRun this entry point as the single pre-deploy migration owner. Start the web\nprocess only after it succeeds, then start one worker against the same database.\nDo not run migrations concurrently from the web and worker processes.\n\n## Provider application quickstart (recommended for new v3 integrations)\n\nA v3 `PHOSRA_CREDENTIAL` contains the pinned environment authority. The SDK derives\nthe correct environment, trust roots, platform endpoints, public rule copy, granted\nscope, durable stores, and same-origin protocol from that credential. Do not copy\nthose values into browser code or accept them from a form.\n\n```ts\n// lib/phosra-link-server.ts — server-only composition shared by two processes.\nimport { Pool } from \"pg\"\nimport { createGoldenLinkServer } from \"@phosra/link/server\"\n\nexport const phosraLinkServer = await createGoldenLinkServer({\n  credential: process.env.PHOSRA_CREDENTIAL!,\n  database: new Pool({ connectionString: process.env.DATABASE_URL }),\n\n  // The only app-owned business seams:\n  authenticate: appAuth.authenticatedParent,\n  children: { resolve: appChildren.resolveForParent },\n  policy: { resolve: appPolicy.rulesForChildAndPlatform },\n})\n```\n\n```ts\n// app/api/phosra/link/[...phosra]/route.ts — web process only.\nimport { phosraLinkServer as server } from \"@/lib/phosra-link-server\"\n\n// This catch-all file routes the credential's callback and every sibling route:\n//   /api/phosra/link/callback\n//   /api/phosra/link/sessions\n//   /api/phosra/link/sessions/:ceremonyId\n//   /api/phosra/link/sessions/:ceremonyId/retry\n//   /api/phosra/link/sessions/:linkId/events\nexport const GET = server.handler\nexport const POST = server.handler\nexport const DELETE = server.handler\n```\n\nKeep this code in the catch-all route shown above, not only in\n`app/api/phosra/link/callback/route.ts`. The credential-configured v3 callback,\nsession collection, ceremony status/retry, and Link event receiver must all resolve\nthrough the same handler or the sibling paths will return 404.\n\nThe `POST /api/phosra/link/sessions/:linkId/events` route is the platform-to-provider\nmachine-event receiver. Here `:linkId` is the signed UUIDv8 Link ID from the platform\nevent authority, not the parent's UUIDv4 ceremony ID used by\n`GET .../sessions/:ceremonyId`.\nKeep it mounted: after the delivery ACK, platforms use this same handler to submit\nsigned profile materialization, rule confirmation, observation, and release events.\nOmitting it can leave a successfully linked session at\n`rule_recorded` because later evidence has nowhere to arrive. Platform SDKs call it\nwith a UUIDv4 `Idempotency-Key` and the exact Link event or release-event content and\naccept media types; app developers mount the handler and must not parse or rewrite\nthose machine messages.\n\nThe factory returns only after the package-owned schema is ready and the pinned\nenvironment has passed its checks. The runtime readiness guard is useful for local\ndevelopment, but it does not replace the single-owner pre-deploy migration above.\nRun one SDK-owned worker loop in the provider worker process; abort it during\ngraceful shutdown. The loop never overlaps delivery attempts.\n\n```ts\n// scripts/phosra-link-worker.ts — separate long-running process/service.\nimport { phosraLinkServer as server } from \"../lib/phosra-link-server\"\n\nconst shutdown = new AbortController()\nprocess.once(\"SIGTERM\", () => shutdown.abort())\nprocess.once(\"SIGINT\", () => shutdown.abort())\nawait server.runWorker({ signal: shutdown.signal })\n```\n\nRun that entry point as its own worker service against the same database and\ncredential as the web service. Never await `runWorker()` from the web server,\nthe catch-all route module, a request handler, or a build step. A web-only\ndeployment is incomplete even when session creation and the parent UI appear\nhealthy.\n\n### Projecting an active connection into your application\n\nA completed browser callback, a saved grant, a successful delivery attempt, or\na verified receiver ACK is not enough to mark a host-owned connection active.\nThose facts prove progress through Link, not that the receiver has signed an\napplied report for every current required rule.\n\nReconcile host state from the exact grant authority. Bind all three identifiers\nto the row you intend to update, and project `active` only when\n`platformReport` is exactly `complete`:\n\n```ts\nasync function reconcileConnection(connection: {\n  grantId: string\n  platformDid: string\n  targetRef: string\n}) {\n  const projection = await server.getSnapshotForGrant({\n    grantId: connection.grantId,\n    platformDid: connection.platformDid,\n    targetRef: connection.targetRef,\n  }).catch((error) => {\n    log.warn(\"Phosra Link projection unavailable\", { error })\n    return null\n  })\n\n  if (projection?.snapshot.stage === \"revoked\") {\n    if (projection.releaseStatus === \"complete\") {\n      await removeExactActiveConnection(connection)\n    }\n    // An incomplete release is not authority to erase the last known state.\n    return\n  }\n\n  if (projection?.platformReport !== \"complete\") {\n    // null, incomplete, failed, or a lookup error remains pending/attention.\n    // Do not create, repair, or upgrade an active connection here.\n    return\n  }\n\n  await upsertExactActiveConnection({\n    ...connection,\n    // An absent presentation is not authority to erase a prior verified label.\n    ...(projection.selectedProfile === null\n      ? {}\n      : { selectedProfile: projection.selectedProfile }),\n  })\n}\n```\n\nHandle lookup errors like an unavailable projection: retain the last known host\nstate and retry later. Do not convert uncertainty into either a new active row\nor a disconnect. Removal requires both the exact signed `revoked` snapshot and\n`releaseStatus === \"complete\"` for that same grant, platform, and target.\n\n`platformReport: \"complete\"` means the receiver supplied valid signed `applied`\nreports for every required rule in the current profile generation. It is the\nminimum authority for the host's active-connection projection; it is not an\nindependent observation and does not by itself earn the stronger E4 `applied`\nstage. Use the full Link snapshot for parent-facing enforcement detail instead\nof reducing every state to a boolean.\n\nIn the parent UI, render the mandatory-branded component from the React subpath only\nafter the parent chooses a child and platform and opens the Link flow. Its\nsession response contains SDK-generated display copy and platform identity; the\ncomponent owns handoff, restart-safe recovery, polling, cancel, and evidence-based\nstatus. When the current verified stage is `degraded`, it offers **Try again** for the\nsame connection. The SDK schedules an exact durable platform retry, waits until the\nserver-authoritative `next_check_at`, and keeps the degraded result visible unless new\nsigned evidence earns a better state. The `stale` stage remains distinct and\nrecoverable across reloads, but does not offer retry until a verified freshness\nauthority is available.\n\nLink 0.7.40 preserves the provider's last signed revoked observation across a\ngeneration change. The platform may accept it only when its independent current\nauthority explicitly allows revoked recovery and every delivery and authority\nbinding is exact. This lets a parent finish an interrupted disconnect without\nweakening the rule that older non-revoked retry requests are rejected.\nLink 0.7.41 lets an explicit parent retry mint one new signed epoch after a\nprior authorization failure, so a repaired platform can be reached without\nrewriting or deleting the immutable failed request.\nLink 0.7.42 also permits one new signed epoch after an accepted requeue when\nthe platform still reports degraded or stale. Completed, active, and recovered\nresults remain idempotent.\n\n```tsx\nimport { PhosraLink } from \"@phosra/link/react\"\n\n{linkOpen ? <PhosraLink\n  createSession={async ({ signal }) => {\n    const response = await fetch(\"/api/phosra/link/sessions\", {\n      method: \"POST\",\n      signal,\n      headers: { \"content-type\": \"application/json\" },\n      body: JSON.stringify({\n        platform_did: selectedPlatformDid,\n        child_ref: selectedChildId,\n        return_to: window.location.pathname,\n      }),\n    })\n    if (!response.ok) throw new Error(\"Unable to start Phosra Link\")\n    return response.json()\n  }}\n  onEvent={recordLinkEvent}\n  onExit={closeLink}\n/> : null}\n```\n\nAlways forward the supplied `signal` to the request that creates the session.\nPhosra Link aborts it when the 15-second creation fence expires, the component\nunmounts or closes, or the parent starts over. Each retry receives a new signal;\nan adapter must never reuse a prior controller or continue an abandoned request.\nThis keeps browser cancellation aligned with the SDK's ceremony authority and\nprevents a late response from adopting or cancelling the wrong connection.\n\n### Shared profile confirmation needs no host UI\n\nIf a parent chooses a platform profile already linked inside the same verified\nfamily, the platform's Golden Gatekeeper authorize handler presents the\nmandatory Phosra Link confirmation. It recommends a separate profile, explains\nthat sharing applies the strictest combined protections and limits per-child\nactivity attribution, and offers **Choose another profile**, **Confirm sharing**,\nand **Cancel and return** in that order.\n\nProvider applications keep the same `PhosraLink` component, `createSession`,\n`onEvent`, and `onExit` integration. Do not recreate the confirmation in the\nhost application or pass family, child, profile, target, or policy authority\nthrough browser props. Gatekeeper 0.8.1 displays the authenticated platform\ncatalog label recovered from its server-side sealed catalog and the same-family\nmember count. The signed selected-profile presentation follows token exchange;\nit is not the source of the confirmation label. Member names and numeric ages\nare intentionally deferred until a future provider-signed member-display\nresolver exists.\n\nNo `recoveryKey` is required. After authenticating the parent and resolving the\nauthoritative child and platform, the server SDK returns a versioned opaque recovery\nscope bound to that provider, parent, child, platform, application origin, and\nenvironment. The React SDK hashes that scope again for its `sessionStorage` key and\nstores only the bounded ceremony locator; it never stores a raw identifier,\nauthorization URL, credential, policy, code, state, or platform secret.\n\nReopening the same Link flow creates one unhanded probe session to learn the current\nverified scope. If an unexpired ceremony already owns that exact scope, Link retires\nthe unused pending intent after re-verifying the authenticated parent-session and\nchild commitments, then resumes the prior ceremony. A different parent, child, platform,\norigin, or environment cannot inherit it. A scope is intentionally one recovery slot:\nthe latest successful handoff write wins, and an older simultaneous instance cannot\nclear the newer claim. Legacy/custom session endpoints may supply the advanced\n`recoveryKey` override; an invalid override or unavailable browser storage fails\nclosed and Link does not offer a same-tab handoff it cannot recover.\n\nSee [`examples/server-junior.ts`](./examples/server-junior.ts) for the packed,\ntype-checked server composition core. V1/v2 credentials are compatibility-only and\nuse the advanced compatibility APIs; the five-input golden server is v3-only and\nrejects host environment, transport, lifecycle, receiver, network, and clock\noverrides.\n\n### vNext family setup\n\nThe additive family-plan contract freezes one parent-reviewed platform-account\nplan above the existing scalar child/profile grants. It does not widen or replace\nthe v1 session wire shape. The package now includes PostgreSQL session, accepted-plan,\noperation, destination-graph, and signed-event persistence; task-oriented vNext\nroutes; a restart-safe worker; a Notflix qualification adapter; and an accessible,\nresponsive family mapping and review surface.\n\n```ts\nimport {\n  acceptFamilyPlanV1,\n  encodeAcceptedFamilyPlanV1,\n  makeInMemoryFamilyPlanStoreV1,\n  materializeAcceptedFamilyPlanOperationsV1,\n  parseAcceptedFamilyPlanV1,\n  type FamilyPlanDraftV1,\n} from \"@phosra/link\"\n\nconst accepted = acceptFamilyPlanV1(draft satisfies FamilyPlanDraftV1, {\n  expected_revision: draft.revision,\n  display_plan_digest: reviewedDisplayDigest,\n  accepted_by: authenticatedParentRef,\n  accepted_at: \"2026-08-04T16:30:00Z\",\n})\n\nconst acceptedBytes = encodeAcceptedFamilyPlanV1(accepted)\nconst restored = parseAcceptedFamilyPlanV1(acceptedBytes, accepted)\n\n// Reference/conformance implementation only; it is not process-durable.\nconst plans = makeInMemoryFamilyPlanStoreV1()\nconst stored = await plans.putAccepted(restored)\nconst reopened = await plans.getAccepted(accepted.plan_id, accepted.accepted_revision)\nconst queuedOperations = materializeAcceptedFamilyPlanOperationsV1(reopened!.plan)\n```\n\nAcceptance fails closed when the reviewed revision is stale, a choice remains\nunresolved, a material exception is unacknowledged, an operation crosses the\nprovider-authorized child set, or the operation graph is duplicate, incomplete,\ncyclic, or ambiguously bound. The returned plan and every dependency list are\ndetached and frozen so later draft mutation cannot change the accepted operation\nset. `FamilyPlanAcceptanceError` extends the package's stable `LinkError` surface.\nEvery operation must also carry an explicit `execution_mode` (`automatic` or\n`guided`) and `retry_safety` (`idempotent`, `reconcile_before_retry`, or\n`manual_only`); Link never supplies a retry default. `connect_account` and\n`guided_step` operations are necessarily `guided` plus `manual_only`. Profile,\nmapping, and policy operations are automatic, but their retry safety remains an\nadapter-capability decision bound to the reviewed `capability_revision`.\n\n`classifyFamilyPlanOperationSafetyV1` turns that exact versioned adapter\ndeclaration into the fields the draft builder must present for review. A declared\nsame-key replay guarantee produces `idempotent`. Without replay safety,\nauthoritative post-attempt observation produces `reconcile_before_retry`; without\neither guarantee, an automatic operation becomes `manual_only`. Connection and\nguided-step declarations remain `guided` plus `manual_only`, even when their\ncompletion can be authoritatively observed. The classifier rejects stale\ncapability revisions, missing or unknown fields, widened objects, automatic\nconnection/guided operations, guided platform mutations, and replay guarantees on\nhuman-guided work. `FamilyPlanCapabilityError` uses the stable\n`family_plan_capability_revision_conflict` code for stale authority and\n`family_plan_capability_invalid` for malformed declarations through the package's\n`LinkError` surface.\n\nNormal draft construction should use `buildFamilyPlanOperationV1` and\n`buildFamilyPlanDraftV1`, not hand-written safety fields. The operation builder\naccepts references, readiness, exceptions, dependencies, and one exact capability\ndeclaration; callers cannot provide `execution_mode` or `retry_safety` overrides.\nThe draft builder applies the plan's single `capability_revision` to every\noperation, validates the authorized child set and complete acyclic dependency\ngraph, derives whether unresolved choices remain, and returns a deeply frozen\n`FamilyPlanDraftV1`. Cross-kind capabilities, stale capability revisions,\nself/duplicate dependencies, missing dependency targets, crossed child scope, and\nfalse `ready_for_review` or `needs_choices` projections fail closed through typed\nbuilder errors.\n\nThe byte codec emits only canonical JSON and the parser rejects malformed UTF-8,\nnoncanonical JSON, duplicate members, unknown fields, invalid operation authority,\nand any mismatch with the optional exact expected plan. Parsed plans are detached\nand deeply frozen, making the artifact safe to hand to a later durable-store slice.\n\n`FamilyPlanStoreV1` defines that durable-store seam. Its accepted-plan coordinate\nis the exact `(plan_id, accepted_revision)` pair: replaying identical canonical\nauthority is idempotent, while different authority at that coordinate throws\n`FamilyPlanStoreConflictError` and preserves the original acceptance. Stored\nrecords include the canonical bytes and their base64url SHA-256 digest. Every\nreturned plan and byte array is detached from store-owned state. A valid missing\ncoordinate returns `null`; malformed locators fail closed. The exported in-memory\nimplementation is intended for conformance, tests, and integration development,\nnot production durability.\n\nRepository-owned store adapters must run the shared\n`test/helpers/family-plan-store-contract.ts` suite through their own isolated\nfactory and cleanup fixture. The suite is adapter-neutral and covers retrieval,\nexact replay, immutable-coordinate conflicts, caller-mutation isolation,\nindependent revisions, concurrent exact replay, and concurrent conflicting\nacceptance. The PostgreSQL adapter runs the same contract and adds transactional,\nrestart, and compare-and-set coverage. Additional adapters should register with\nthe shared contract rather than copying it.\n\n`materializeAcceptedFamilyPlanOperationsV1` deterministically expands valid\naccepted authority into one immutable, independently addressable work record per\noperation. Every record carries the provider, platform account, inventory and\ncapability revisions, child/destination authority, dependency IDs, accepted-plan\nartifact digest, operation-authority digest, accepted execution mode and retry\nsafety, and a bounded content-derived idempotency key. Materialization preserves\nreview order with a zero-based\n`operation_index`, starts every operation as `queued` with zero attempts, and\ndoes not perform any destination mutation. Re-materializing identical accepted\nauthority returns equal records; changing any accepted-plan authority changes\nthe operation keys. The operation worker executes these records under expiring\nleases, reconciles uncertain results before any unsafe retry, preserves partial\nsuccess, and publishes reconstructible signed provider events.\n\nFor production PostgreSQL composition, use the server subpath:\n\n```ts\nimport { makePostgresFamilyLinkRuntimeV1 } from \"@phosra/link/server\"\n\nconst familyLink = makePostgresFamilyLinkRuntimeV1({\n  database: pool,\n  adapter: destinationAdapter,\n  application_origin: \"https://app.bark.example\",\n  provider_did: \"did:ocss:bark\",\n  client_token_key: familyLinkClientTokenKey,\n  authenticate: authenticateBarkParent,\n  children: barkChildAuthority,\n  platforms: phosraPlatformDirectory,\n  accounts: destinationAccountAuthority,\n  provider_events: {\n    signing_key: familyEventSigningKey,\n    destination_url: \"https://app.bark.example/webhooks/phosra-link\",\n  },\n})\n\nawait familyLink.migrate()\n// Mount familyLink.handler at its same-origin /api/phosra/link/vnext paths.\nconst shutdown = new AbortController()\nprocess.once(\"SIGTERM\", () => shutdown.abort())\nawait familyLink.runWorker({ signal: shutdown.signal })\n```\n\nThe parent application creates sessions server-side for `child`, `family`,\n`platform`, `repair`, or zero-child `preconnection` entries. The browser receives\nonly a one-time `pfl1` token and a safe projection. Bootstrap consumes that token\nand issues a Secure, HttpOnly, SameSite=Strict continuation cookie that is\ncryptographically bound to the one family session and expires with it; raw parent\nauthority is never placed in the cookie. Account inventory, adapter capabilities,\nchild/household authority, review labels, and operation safety are resolved again\non the server; the browser submits choices, not operations.\n\n```ts\nimport { createFamilyLink, FamilyPhosraLinkFlow } from \"@phosra/link/react\"\n\nconst link = createFamilyLink({\n  token: oneTimeFamilyLinkToken,\n  onLoad: renderLink,\n  onEvent: recordNonSensitiveMilestone,\n  onPlanAccepted: () => refreshBarkServerProjection(),\n  onExit: () => restoreBarkReturnContext(),\n})\n\nawait link.preload()\nlink.open()\n```\n\nThe component and its JSON routes must share the parental-controls application's\norigin. Browser requests use `credentials: \"same-origin\"`; do not proxy the UI\nfrom an unrelated Phosra domain or widen the continuation cookie for cross-site\nuse. A native iOS or Android app can present a provider-owned web route containing\n`FamilyPhosraLinkFlow` in its existing authenticated web view. Pass the one-time\ntoken to that page through a native-to-page message or initial in-memory page\nstate, immediately remove any transient URL fragment if one is used, and route\nterminal callbacks back into the provider app. The parent still starts and ends\ninside the provider, while the server runtime, account handoff, review authority,\nand durable worker remain identical across web and native shells.\n\n`FamilyPhosraLinkFlow` is the turn-key React controller: it drives preload,\ndestination authentication return, the server-authored masked account checkpoint,\nprofile choices, explicit sharing and translation acknowledgements, exact review,\nacceptance, and safe exit. `FamilyPhosraLink` is the lower-level controlled renderer\nfor hosts that intentionally own that controller. Both render the projection with Phosra branding and a\ncontrolled partner appearance profile. Shared destinations require explicit\nacknowledgement, unresolved choices block approval, and final approval submits the\nexact server-rendered review digest. Closing before approval preserves the draft;\nclosing after durable acceptance does not cancel background execution. Ongoing\nsettings, age-change approval, notifications, and support remain in the parental-\ncontrol product.\n\nThe account authority adapter may expose `discover()` after the destination handoff;\nLink projects only an opaque account reference, a masked differentiator, and a profile\ncount, then re-resolves the reference before confirmation. For policy writes, return\none `policy_authorities` entry per authorized child. Its content-addressed\n`policy_ref`, factual display summary (for example `Content rating: TV-Y7`),\ntranslation outcome, and approval requirement become part of the reviewed plan.\nChanging that authority invalidates review instead of applying newly looked-up rules.\n\nFormal OCSS status and Phosra runtime admission are deliberately separate. Legacy\nOAuth resolution still fails closed on a missing or inactive OCSS entry. A server\nmay configure `LinkConfig.runtimeAdmission` to consult a separately reviewed\ncapability record with rollout, expiry, and kill-switch policy; this can admit a\nPhosra-provisional integration without claiming OCSS verification. Never surface\ndeveloper governance labels as parent-facing trust claims.\n\nFor the signed operational registry behind that resolver, use\n`signIntegrationCapabilityAdmissionV1` to produce canonical Ed25519 artifacts and\n`makeIntegrationRuntimeAdmissionRegistryV1` to load them atomically. Pass\n`registry.resolve` as `runtimeAdmission`. Every lookup re-binds the signed record to\nthe current root-verified OCSS fact and enforces its capability, rollout cohort,\nexpiry, disagreement flag, and kill switch.\n\n## Local whole-product qualification (testing only)\n\nPrerequisite: install OpenSSL 1.1.1 or newer, or a compatible LibreSSL build that\nsupports `req -addext` and `x509 -extfile`, and make `openssl` available on `PATH`.\nConfirm the local tool before starting with `openssl version`. If TLS generation\ncannot run, the helper fails closed with\n`FRESH_AUTHORITY_TLS_GENERATION_FAILED` and never exposes raw command or environment\ndetails.\n\nUse `@phosra/link/testing` to walk a real parent app and platform locally with real\nsigned credentials, consent encryption, RFC 9421 requests, replay authority,\nendpoint minting, and a router-signed profile. The policy is the source of the age\nceiling; do not duplicate the number in a second fixture.\n\n```ts\nimport {\n  cleanupLocalPairResourcesV1,\n  createLocalLinkPairAuthorityV1,\n  installLocalPairNetworkV1,\n  startLocalPairAuthorityServerV1,\n  writeLocalPairProcessBootstrapV1,\n} from \"@phosra/link/testing\"\n\nconst pair = createLocalLinkPairAuthorityV1({\n  contentRatingMaxAllowed: policy.config.max_allowed,\n  // Optional for an isolated local provider app; omitted stays localhost:3000.\n  providerApplicationOrigin: \"http://localhost:3019\",\n})\nconst network = installLocalPairNetworkV1(pair)\nlet bootstrap\nlet authority\ntry {\n  bootstrap = await writeLocalPairProcessBootstrapV1(\"./tmp/link-pair\", pair)\n  authority = await startLocalPairAuthorityServerV1({\n    pair,\n    extension: { staticGetRoutes: [jwksRoute, policyRoute, confirmation404Route] },\n  })\n  await walkParentAndPlatform({\n    providerCredential: pair.provider.credential,\n    platformCredential: pair.platform.credential,\n    childProcessEnv: {\n      NODE_OPTIONS: bootstrap.nodeOptions,\n      NODE_EXTRA_CA_CERTS: bootstrap.nodeExtraCaCerts,\n    },\n  })\n  console.log(authority.snapshot()) // safe counts + request digests only\n} finally {\n  await cleanupLocalPairResourcesV1({ authority, bootstrap, network })\n}\n```\n\nStatic host routes are cloned and bounded before the listener starts; they cannot\noverride Link-owned paths. A profile URL returns 404 until the exact consent-bound\nmint succeeds, then serves only that minted label. Each call creates a new private\nrun secret, signed provider/platform credentials, trusted localhost chain, and\nseparate wrong-chain fixture; no fixed private key is published. Temporary key\nfiles are mode-restricted and removed immediately. The helper denies external\norigins. It is for local automated/human qualification only—never import the testing subpath into\nstaging or production. A default pair captures the current clock once and signs one\ncoherent 30-day manifest, Trust List, and profile window. For a multi-process test,\ncapture one canonical whole-second `pairNow`, persist that non-secret value in the\nfresh run manifest, and pass the same explicit `now: pairNow` and policy ceiling to\nevery process; explicit clocks are fixed hermetic test fixtures, while default-clock\npairs are rechecked against wall time when the local authority starts. Never rebuild\none side from a newly sampled clock or reuse credentials from an older run. The\ncomplete executable version is\n[`examples/local-pair-junior.ts`](./examples/local-pair-junior.ts), which is compiled\nby `npm run typecheck:examples`.\n\n## Legacy compatibility writer-plane API: `createLink`\n\n`createLink` remains available for direct OCSS writer clients and existing\nintegrations. New provider applications should start with the v3 server and React\nfacades above. Its schema helpers provision the legacy writer-plane tables only;\nthey are not the Golden server migration path.\n\n`createLink` collapses the 8-field `LinkConfig` to **three** and returns a\nsigned-by-default compatibility client. One key (the writer key you already\nhold), one census URL, one database — **no shared connect secret**.\n\n> **Which census URL.** There is ONE production census and\n> `https://prodapi.phosra.com` is its name;\n> `https://phosra-api-prod-bootstrap-production.up.railway.app` is the same\n> service under its Railway origin name (verified 2026-07-26 — byte-identical\n> `/health`, trust-list, succession and environment-manifest responses, both\n> verifying under root `root-prod-bootstrap-2026-07` /\n> `824vsCATBxyUiA-znpGx01N48NNs_3gPE3M7f7vIEaI`). Do **not** configure\n> `census.phosra.com`: it is the intended canonical alias but no service is\n> attached yet, so every path — `/health` included — returns Railway's\n> `{\"code\":404,\"message\":\"Application not found\"}`.\n>\n> **Two caveats while this lands.** (1) The `prodapi.phosra.com` pin is in source\n> but **not yet published** — on npm `latest` (0.7.56) that host is unpinned, so\n> `createLink` throws `no bundled Trust-List root for census host`. Until a\n> release ships, either pass\n> `trustRoot: \"824vsCATBxyUiA-znpGx01N48NNs_3gPE3M7f7vIEaI\"` explicitly or use the\n> Railway origin name, which 0.7.56 already pins. (2) Railway's edge\n> intermittently answers `prodapi.phosra.com` with its `*.up.railway.app`\n> wildcard certificate (~1 handshake in 4, measured 2026-07-26) — a TLS altname\n> error that a retry usually clears; the Railway origin name was 60/60 clean.\n\n```ts\nimport { createLink } from \"@phosra/link\"\nimport pg from \"pg\"\n\nconst link = createLink({\n  census:     \"https://prodapi.phosra.com\",  // THE production census (root-prod-bootstrap-2026-07)\n  writerSeed:  process.env.OCSS_WRITER_SEED!, // your Ed25519 accreditation seed (base64url)\n  writerKeyId: \"did:ocss:your-org#2026-07\",   // the DID+kid published on your Trust-List entry\n  db:          new pg.Pool({ connectionString: process.env.LINK_DB_URL }),\n})\n\n// Provision the product tables + run the accreditation self-check (once, at boot).\nawait link.ready()\n\n// Connect a child (Plaid-style 3-leg ceremony) — signed delivery by default:\nconst { authorizeUrl, state, sessionId } =\n  await link.connect.start({ platformDid: \"did:ocss:notflix\", redirectUri, parentSessionRef })\n// …redirect the parent, then on the OAuth callback:\nconst { childProfiles } = await link.connect.resume({ code, state, parentSessionRef })\nconst result = await link.connect.finish({\n  sessionId, platformChildProfileId: childProfiles[0].id, childId: \"child:<uuid>\",\n  granted_scope: [\"addictive_pattern_block\"], state,\n})\n\n// Write an enforcement rule under the granted scope:\nawait link.enforce(result.grant_id, \"addictive_pattern_block\", \"child:<uuid>\", { decision: \"block\" })\n\n// Batch-provision N age-banded profiles in one action (signed by default):\nawait link.provision(\"did:ocss:notflix\", { state: \"acct\", children: [ /* … */ ] })\n\n// Withdraw consent:\nawait link.revoke(result.grant_id)\n```\n\n**What is derived** (so nothing downstream changes): `writerDid` from\n`writerKeyId`; the router DID (constant `did:ocss:phosra-router`); the router\npayload key (pulled from the Trust List at use time); the family-hash\n`householdSecret` = `HKDF(writerSeed, \"phosra-link/household-hash/v1\")`; and the\nhousehold/parent persona = `HKDF(writerSeed, \"phosra-link/parent-persona/v1\")`\n→ a deterministic `did:ocss:household-<hash>`.\n\n- **Pinned roots, no TOFU.** For a canonical census host the Trust-List root\n  ships with the SDK. For any other host you MUST pass `trustRoot` (the base64url\n  root X) — the SDK never trusts a root it just met.\n- **Signed by default.** `connect.finish` and `provision` deliver the\n  sender-DID-signed writer envelope (verified to the pinned root); there is no\n  connect secret to mint or rotate. An undocumented `__legacyConnectSecret`\n  escape hatch remains for receivers that have not migrated off HMAC.\n- **Ships its legacy writer-plane schema.** `link.migrate()` (or\n  `migrateLinkSchema(pool)` / `printLinkSchema()`) provisions only the compatibility\n  tables used by this API. It does **not** provision the complete Golden provider\n  schema. Golden integrations must use `migrateLinkServerSchema(pool)` from\n  `@phosra/link/server` as the single pre-deploy migration owner.\n- **Accreditation self-check.** `link.verifyAccreditation()` (run by\n  `link.ready()` and before every write) root-verifies the Trust List, matches\n  your writer public key, and requires an active **enforcement-agent** entry —\n  else `NotAccreditedError`. Pass `verifyAccreditation: false` to disable.\n- **Census registration of the derived household DID.** The derived\n  `did:ocss:household-<hash>` persona signs the consent attestation; for the\n  census to verify that signature the persona must be admitted on the census\n  (or pass your own already-registered `parentKey`). This is an operator step,\n  not a code change.\n\n### Typed errors\n\nEvery failure is a `LinkError` subclass with a stable `code`:\n`NotAccreditedError`, `PlatformNotConnectableError`, `LaneInactiveError`,\n`StateExpiredError`, `ParentSessionMismatchError`, `DeliveryFailedError` (with\n`.status` + a `.hint` — a 401 delivery says \"add your DID to the platform\nallowlist\"), `SchemaNotReadyError`, `BandMismatchError`. Branch on `.code` or\n`instanceof`; the human-readable messages are unchanged from prior versions.\n\n## Legacy low-level API reference\n\nThis manual `LinkConfig` surface is retained for existing writer-plane\nintegrations. It is not the recommended provider quickstart and its individual\ncensus, Trust List, writer, parent, and household values must not be copied into a\nnew Golden integration. New applications use one `PHOSRA_CREDENTIAL`, the Golden\nserver quickstart above, and `migrateLinkServerSchema(pool)` for deployment.\n\n```ts\nimport { makeLinkStore, createLinkSession, completeLink, directive } from \"@phosra/link\"\nimport type { LinkConfig, LinkSession } from \"@phosra/link\"\nimport pg from \"pg\"\n\n// 1. Construct your config (real keys, live census URL).\n//    Obtain a key from the Phosra developer console or via\n//    POST /api/v1/developers/orgs/{orgID}/keys (see docs.phosra.com).\nconst config: LinkConfig = {\n  censusBaseUrl:    \"https://phosra-api-sandbox-production.up.railway.app\", // the ONE canonical partner sandbox host (see the manifest caveat below)\n  trustRootXB64Url: process.env.OCSS_TRUST_ROOT_X!,                         // sandbox root X (public): CMHWy3vUAiEcYDdE_bDvkRuEqwxkklS0tV-TYHJTlWU\n  parentKey:        { seed: new Uint8Array(32) /* supply real Ed25519 seed */, keyID: \"did:ocss:household-acme#parent-key-2026\" },\n  writerKey:        { seed: new Uint8Array(32) /* supply real Ed25519 seed */, keyID: \"did:ocss:your-org#writer-key-2026\" },\n  writerDid:        \"did:ocss:your-org\",\n  routerDid:        \"did:ocss:phosra-router\",\n  householdSecret:  process.env.HOUSEHOLD_SECRET!,  // high-entropy per-family shared secret\n  pool: new pg.Pool({ connectionString: process.env.LINK_DB_URL }),\n}\n\n// 2. Obtain the Postgres-backed grant store (synchronous — takes cfg.pool directly).\n//    NOTE (manifest caveat, verified 2026-07-26): the partner sandbox census does\n//    NOT currently serve /.well-known/phosra/environment-manifest-v1 — it returns\n//    plain-text \"404 page not found\", i.e. the route is absent from its deployed\n//    build. Anything that resolves its environment, trust roots or platform\n//    endpoints FROM the manifest (the v3 createGoldenLinkServer/PHOSRA_CREDENTIAL\n//    path) therefore cannot bootstrap against this host yet. This explicit\n//    LinkConfig path, which carries censusBaseUrl and trustRootXB64Url directly,\n//    is unaffected. The production census (prodapi.phosra.com) and the\n//    Phosra-internal staging sandbox both serve the manifest normally.\n//    completeLink/directive also use the store internally; use this reference for\n//    direct grant queries (listGrants, getGrant, etc.).\nconst store = makeLinkStore(config.pool)\n\n// 3. Open a link session for a parent authorizing access for a platform.\nconst session: LinkSession = createLinkSession(\n  \"did:ocss:your-platform\",    // audience_did — the platform being granted write access\n  [\"addictive_pattern_block\"], // granted_scope\n  \"child:a11ce0fa-0000-4000-8000-0000000000a1\", // target_ref — the child's full census UUID (normalizeChildRef rejects a truncated id)\n  { ageHint: \"13_15\" },\n)\n\n// 4. Complete the link: posts a consent_attestation to the census.\nconst { grant_id } = await completeLink(config, session)\n\n// 5. Write a rule directive under the granted scope.\nconst res = await directive(config, grant_id, \"addictive_pattern_block\", session.target_ref, {\n  decision: \"block\",\n})\n```\n\n## Create-and-link (no existing profile, no prior grant)\n\n`completeLink` binds an EXISTING platform profile via the connect ceremony. When the\nchild has **no profile on the platform yet** (one parent action → create the profile\nAND bind it — EXT-01 batch provisioning), the chain is three public calls, per child:\n\n```ts\nimport { ingestConsentAttestation, mintEnforcementEndpoint, provisionProfiles } from \"@phosra/link\"\n\n// 1. Consent FIRST (the census enforcement-endpoint mint is consent-gated):\n//    signed as the AUTHORITY HOLDER (config.parentKey — the household persona).\nconst consent = await ingestConsentAttestation(config, {\n  platformDid: \"did:ocss:notflix\",\n  childRef: \"child:<census-child-uuid>\",   // a census subject (POST /api/v1/subjects)\n  band: \"13_15\",                            // §8.3.2 AGE band, never a capability band\n})\n\n// 2. Mint the §9.3(b) resolver-bound endpoint (signed as config.writerKey),\n//    naming the consent standing on the binding:\nconst { endpointIdLabel } = await mintEnforcementEndpoint(config, {\n  platformDid: \"did:ocss:notflix\",\n  childRef: \"child:<census-child-uuid>\",\n  standingRef: consent.standingRef,        // \"consent:attestation:<key>\"\n})\n\n// 3. Deliver the batch to the platform's connect receiver, sender-DID-signed\n//    (EXT-01 §3.6 — zero shared secret; `state` is the platform-minted principal\n//    ref, e.g. its OAuth access token from the parent's authorize-approve):\nawait provisionProfiles(config, \"did:ocss:notflix\", {\n  state: platformAccessToken,\n  children: [{ endpoint_id_label: endpointIdLabel, age_band: \"13_15\", display_hint: \"Nia\" }],\n  auth: { mode: \"signed\" },\n})\n```\n\nRules then live on the child's **policy** (the census compiles the served\nenforcement profile from the policy's rules; the binding only routes the\nplatform's pull): write them with `directive(...)` under a grant, or directly\nvia the rule-write API citing `consent.standingRef` as `standing_ref`.\n\n## Parent sessions (the ceremony's auth binding)\n\nThe parent authenticates with **your app's own auth** — Phosra never sees parent\ncredentials. What `@phosra/link` needs is a trustworthy binding between your\nauthenticated parent session and the OAuth ceremony:\n\n- **Verified mode (recommended):** set `parentSessionSecret` in `LinkConfig`. After\n  your login succeeds, issue a token with `issueParentSession(secret, { parentId })`\n  (e.g. as an HttpOnly cookie) and pass it as `parentSessionRef` to\n  `initPlatformOAuth` / `completePlatformOAuth` / `bindProfile`. The SDK verifies it\n  (HMAC + expiry, fail closed) and binds the ceremony to the verified session id —\n  an expired login cannot start or finish a ceremony, and one parent's state can\n  never be completed by another parent's session.\n- **BYO mode:** leave `parentSessionSecret` unset and pass your own server-side\n  session identifier as `parentSessionRef`. Contract: derive it server-side from\n  your authenticated session; NEVER accept it from the client.\n\nFor v2/v3 `PHOSRA_CREDENTIAL` servers, the golden callback handler performs the\nparent authorization, exact child/profile selection, platform-session bind, and\nceremony-authority write in one transaction. The callback is exact-replay safe,\nand a failed authority write cannot leave the session partially bound. The v1\ncredential path remains available only as the explicit legacy fallback.\n\nSee `examples/reference-bff/` for the full working wiring.\n\n## Receiving sealed harm signals (EXT-03, the F6 lane)\n\nThe parent app pulls its sealed harm excerpts from the census over the documented\n§8.3.9 recipient-pull (`GET /api/v1/harm-context` — receiver-scoped, `sealed_payload`\nserved byte-verbatim) and decrypts them **client-side** with its own EC P-256 payload\nkey. The census/router never holds that key (the §3A.3 router-blind invariant).\n\n```ts\nimport { harmContextReadiness, receiveHarmContext } from \"@phosra/link\"\n\n// payload_jwk prerequisite checklist + the harm_context_ready flag:\nconst { harm_context_ready, checklist } = harmContextReadiness(config) // LinkConfig w/ payloadJwk\nif (!harm_context_ready) throw new Error(checklist.filter(c => !c.ok).map(c => c.item).join(\", \"))\n\nconst { signals, rejected } = await receiveHarmContext({ client, payloadJwk: config.payloadJwk! })\n// signals[i].signal is one of two TYPED shapes (the bespoke sealed shape is retired):\n//   kind: \"harm_context\" — the §3A.2 post-confirmation excerpt body\n//   kind: \"verdict\"      — the EXT-03 harm-signal-verdict.v1, severity + harm_class\n//                          validated against the §4.4 closed enums BY CITATION\n// rejected[] rows failed a vocabulary rule (H7/H8/H9/H11) and were rejected WHOLE —\n// out-of-vocabulary is never coerced to a near match (§4.4 rule 2, §7.1).\n```\n\nPost-decrypt conduct is the recipient's §4.6 duty: retention clock, purpose\nlimitation, disposition receipt. Apparent CSAM never rides this lane in either\ndirection — the census diverts it at the route step, and the parent-facing enum\ndeliberately excludes it (report-and-preserve is the only path for that class).\n\n## Pricing & keys\n\nThis SDK is **free and open** (MIT). It performs all signing/verification **locally** and calls\nthe hosted Phosra census over RFC 9421. Metered census usage requires a **Phosra API key** —\n**billing is enforced server-side**, never in this package. Provision a key via the Phosra\ndeveloper console (docs.phosra.com) or the REST endpoint\n`POST /api/v1/developers/orgs/{orgID}/keys`.\n\n## The `/protocol` subpath\n\n```ts\nimport { verifyDocument, verifyReceipt } from \"@phosra/link/protocol\"\n```\n\n`@phosra/link/protocol` is a verbatim re-export of `@openchildsafety/ocss` — identical object identities.\nIt lets platform-side code verify signed documents and receipts without a separate `@openchildsafety/ocss`\ninstall when you already depend on this package.\n\n## Stability\n\nThis package is `0.x` — live-proven but still co-evolving with the OCSS spec. Under `0.x`\nsemver, minor bumps (`0.1 → 0.2`) may include breaking changes with a one-minor deprecation\nwindow. Exports marked `@experimental` are excluded from that window.\n\nThe following test/sandbox utilities are intentionally **not exported** from the public barrel\nand are not part of the stable API: `makeConfigFromEnv`, `deterministicTestSeed`, `scopeDigest`,\n`resolveProviderEntry`, `startExampleProvider`.\n","readmeFilename":"README.md"}