{"_id":"gestalt-mobile","_rev":"80-1d4d09c0ac95d50a426f62ac11cd9dce","name":"gestalt-mobile","dist-tags":{"latest":"0.39.0"},"versions":{"0.1.0":{"name":"gestalt-mobile","version":"0.1.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.1.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"3ff0e18794b8a96f0f042a3e56aa8e7f2a76877a","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.1.0.tgz","fileCount":112,"integrity":"sha512-Sv73VPM9QGc86DANl43b48r2upzVpnpWdj/udqwHfxfLEEvPRMcaYzP1FFvqVNheBLqpwbLYu9JtVG8or/gqlA==","signatures":[{"sig":"MEYCIQCBcFd98FB3WAx+LPojOjbUUJOViMWUuSEFb108NgjmIgIhAOM5CKXgqDCCrh6GhhXqOSSA+BfQfIDguOtVhNhAQL9G","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":280801},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"cdeb08dd49b6194ca21a5a452cd73b9d9fe7d59e","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd ..","test:watch":"vitest","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs"},"_npmUser":{"name":"jaromil","email":"jaromil@dyne.org"},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"11.16.0","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","fastify":"^5.10.0","@fastify/static":"^10.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.1.0_1784465552159_0.1324440004200398","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"gestalt-mobile","version":"0.1.1","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.1.1","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"b2a45b37a033a26e08686e86e5f1455abcdcee3f","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.1.1.tgz","fileCount":112,"integrity":"sha512-nwu4hGH5hica3xDqYdEXoSBB829Sbk9bZAZZ2ko17Igl5hu0Jlqg4luwlJQlDVRyhLFjrfGUVfRM2JGVKr6NRw==","signatures":[{"sig":"MEUCIHGb/Cyye0agjUFlyRS05Xv+PVKAkKwuUlis9Psi5KOFAiEA3AEMqbNTNDVsS2Mv2W62TMvN74dD19wswDVRRD2DWqw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":280801},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"4802bac86b9e81906000910036139759bcbd3076","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd ..","test:watch":"vitest","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.1","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","fastify":"^5.10.0","@fastify/static":"^10.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.1.1_1784583598096_0.5927455629679497","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"gestalt-mobile","version":"0.2.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.2.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"dfba6d5e624c0d973025d77ac98db57c6dee9d93","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.2.0.tgz","fileCount":115,"integrity":"sha512-yW3xeW4uQCYZIKW6TQhFd+uZZyk+s0AX8jMJvTZqeBSwq/Pzv6BonphhOOg7JAPpedvcOTzO9IcPeRUlUvIQvQ==","signatures":[{"sig":"MEYCIQC0LCXALocWYLIh9eEAtYQHfpB0jIQXATGS9a7DDnXwxAIhAIXnWxCfd4Y0f1HXcaiMnPzZjAQSbHNan0kJORBjnaLa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":315307},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"b5965133bf25524e12f86ce903051c470f35a085","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd ..","test:watch":"vitest","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.1","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","fastify":"^5.10.0","@fastify/static":"^10.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.2.0_1784647410559_0.8931744390359333","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"gestalt-mobile","version":"0.3.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.3.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"f6419e12b1d0b16e0166476ef4dca61f47ef9afb","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.3.0.tgz","fileCount":115,"integrity":"sha512-rgtxvzpqFQLvkZDbAmyHCmBZm6BUYAFf/xSy7P022j94dY1il8CgGvjJKNksSMooyD673GGpv25fur/30ULS8Q==","signatures":[{"sig":"MEUCIQC1al4Fykhv0UwZyUuaD56Dnu3EXXK/32hhijSVtOxNJwIgNvmvy5IP9e0Sibf8IJdUqGsCN03EPLWdKWeP4pPWdJY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":317213},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"7b43eefc3e80da16603dfa82106d3fc24afb297d","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd ..","test:watch":"vitest","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.1","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","fastify":"^5.10.0","@fastify/static":"^10.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.3.0_1785081884286_0.40813417877350533","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"gestalt-mobile","version":"0.3.1","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.3.1","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"101f2bd916e86c64e08efd88fa5eff8444bf899f","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.3.1.tgz","fileCount":115,"integrity":"sha512-PElBfUnM0pb6/bRdLUvIL1ocsYkKB+E1M7rtBTFVvosmHFVOwCfploxLWzbMiJ/UL/3XfATslMuq4bgSozw20w==","signatures":[{"sig":"MEQCIGe/Jv4Cvg8GvwRUJ3VgbcEe++ehnf2SFMIbi3GLLbxJAiAZSYhhLpuYP+M7i1XqdXbvRoKvdFvxoT1Al/HBhov29g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":317213},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"09fc1a4d15ecec662cf9829b7c33a2f2e6bf4d30","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd ..","test:watch":"vitest","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.1","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","fastify":"^5.10.0","@fastify/static":"^10.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.3.1_1785082463866_0.831321091404513","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"gestalt-mobile","version":"0.4.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.4.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"6152a2eae126c90aefd315bc78fbf38ebc551b62","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.4.0.tgz","fileCount":123,"integrity":"sha512-NWE6pVG2KPTx9GcEKOPeWVwwrwBlPJhBeV0ap1Yia/bn0DD2ihRnc1YelvxCfE1PRZLNHGdBkPgPVH+GKRMdKg==","signatures":[{"sig":"MEUCIAVzGvNdBljd0qNqBkzRna/uHY/OFyn3SnJZiqlh1f18AiEAgAGUWOpiDe1DtOAw3LEmq2rhxDLK5ab8fsLIrWN0gVQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":358690},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"ea45783b000c98644e13c1ad0a86a69d3d7ee2c2","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd ..","test:watch":"vitest","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.1","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","fastify":"^5.10.0","@fastify/static":"^10.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.4.0_1785102667129_0.7697800693918357","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"gestalt-mobile","version":"0.4.1","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.4.1","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"a1eea0c0d50ae77477ff17166da7ea69a592a438","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.4.1.tgz","fileCount":123,"integrity":"sha512-qmdPUV/qjpEaPDUvwnBJWi59Rd4scYSFSA0HD36Fv43i8e42eRznr9NUq3w0XCfn+j7TmAlucCuHTRQYeHBo4g==","signatures":[{"sig":"MEUCIER+eSVbtTpbBtoAkT1GullGBO6n9cZcWIvliQBcsBhCAiEA/+7A3xd/V3FpXJ67KSGdZNOV/HP3We+QXmE0IVIELP8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":359079},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"899f3dcc05379c0fac718e5368154ba5044f856b","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd ..","test:watch":"vitest","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.1","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","fastify":"^5.10.0","@fastify/static":"^10.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.4.1_1785267105995_0.7286453782143536","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"gestalt-mobile","version":"0.5.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.5.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"7bc08dfda4a96a7e5baf46c3691c0413542dfac2","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.5.0.tgz","fileCount":126,"integrity":"sha512-bWZWkOwNFA9SYMYrha8W3/f92XctyuQtlYu+Zq9P4XHorwNDVHFtxSPwpQUUbckUYbYe1ZSPvas55i5IrzFLFg==","signatures":[{"sig":"MEYCIQDnluWyOqvRa3X3kiYontvd1b6TGsG3tAB+lzJKrolg4gIhAIqK/Nu+lRAO3dVl2ITsAf0qjUoHaQcaqtnUUbBCyt6q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":380085},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"56b87753ae946aa612ab44d856f556c86bd2e4dd","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd ..","test:watch":"vitest","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.1","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","fastify":"^5.10.0","@fastify/static":"^10.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.5.0_1785275194595_0.48285238320356116","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"gestalt-mobile","version":"0.6.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.6.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"42c56dae64b6f270238d6032720e8d1503f1d302","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.6.0.tgz","fileCount":134,"integrity":"sha512-kVLr0f7KDiQxS3nJYz2VWTLuqC7x4Qccv5wiZhsy29OQkDqD2rAPnTeVfHhOwrzUR/90eFCfJjXUMZDHUaie7w==","signatures":[{"sig":"MEUCIQDBtIO84uD1sE4J7xfjg3PswszPvF32MkVQz8/YzjlL8gIgGT3fRBWqLuth0vDp3oMdfojK8sYwKq4N7RLgPxcOzsc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":429868},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"72ce6e62387f0157f3b53b7acf3da916b6fdda3b","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd ..","test:watch":"vitest","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","fastify":"^5.10.0","@fastify/static":"^10.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.6.0_1785599797764_0.49026698495485865","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"gestalt-mobile","version":"0.6.1","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.6.1","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"320061641ff418fa35f26dd74e6ad16651b935bb","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.6.1.tgz","fileCount":134,"integrity":"sha512-suL96HTM06DD9anjzyRwmxiVc1hy7LtCkO8ugSGPC7LP2kaCwUdyfeq1n5xEtjavd+oVxd2IWH9dO5va/ThHXg==","signatures":[{"sig":"MEYCIQDCtwHw5PbnA1K0M4GikrI4UYyIBVP8bEF0zRJ4gNEsPAIhAIGi9idsnDhxnad70KFtIpJITi9q9eX7klWZbYkRP0eP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":430246},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"b8750019f54f0d89f4672d794dff231fd82b1979","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd ..","test:watch":"vitest","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","fastify":"^5.10.0","@fastify/static":"^10.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.6.1_1785604084909_0.4213001821040716","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"gestalt-mobile","version":"0.7.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.7.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"118ee9cef091f053055e2616fdab78f3b84d1afa","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.7.0.tgz","fileCount":135,"integrity":"sha512-BAoJzFRt7BjhLTRqUM5uM0Cki1FSHiziOGI/UuMqlmpRrOJDaGdo16/NivVbp6t1v1FGbW5CKVlZOKS9HgUyZQ==","signatures":[{"sig":"MEUCIEF2Dhav/usFPcMD1Mv4KgqGNk+06Ln3zDkipWp7EQw5AiEA3YVQCdoGxe7dNhR6+OWzc1Xu/Fg7sL4QNT1+6jb/mK4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":442948},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"087fa63e0daf101ccf39d6478ac59a1be6c43afd","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd ..","test:watch":"vitest","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","fastify":"^5.10.0","@fastify/static":"^10.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.7.0_1785613953551_0.6500187463680078","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"gestalt-mobile","version":"0.8.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.8.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"a61f39a51f7d5e55dd6f0dcaf5f1a4ae0d900472","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.8.0.tgz","fileCount":140,"integrity":"sha512-b17nvEMYshLJ6xg66ayWbA/Y2ThNFg8nnGf+WTJgv+UOi3y+xrprbsMLoozNzgG0DSfMErH/NDOo4hbz3TxFWg==","signatures":[{"sig":"MEYCIQDbeWdG6dV8l2zKnCCDPjbVcjQSpdBjRd2+YJ0BN3CYlwIhAI2amO0F2ZzV/KZceTWh06GWIiUq5T/ZSWieVPF7rhh+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":457741},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"ab9f55ed614e9dc4982dd7989eba27bd0b6c31be","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd ..","test:watch":"vitest","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","fastify":"^5.10.0","@fastify/static":"^10.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.8.0_1785624780430_0.4050681785135648","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"gestalt-mobile","version":"0.9.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.9.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"568b5c843940c6d263543fc5e7a56218f543e829","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.9.0.tgz","fileCount":140,"integrity":"sha512-78ENPPPNGrrS8cRC/kI9SvVf1P0vya3iVPP0B0KMbs8UkFefHx2gPMa/OlIlWgjvsmbmNwqloRgZDrsQddyjAw==","signatures":[{"sig":"MEQCIFoQqegu921hSRBmNgu0QfzAPvD0MtpLXvXqWisujtvZAiBcIYjL3KEBOc/P0wlbNDZH2bd3N9flOJw0wRnkNhD63w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":463982},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"098a2d0533b03120320a8cdd204be3fcd6d39c03","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd ..","test:watch":"vitest","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","fastify":"^5.10.0","@fastify/static":"^10.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.9.0_1785693437846_0.6865653858828897","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"gestalt-mobile","version":"0.10.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.10.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"af3051450bead1a1f8e33773995ba69a98502fbc","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.10.0.tgz","fileCount":141,"integrity":"sha512-6YrRsIy+d9+woMRRN5kLFMOdavij1MHEVKVq5x40K4gJ0VL1+/QPMignX7q36GcwuI+ZSzbSHlwEU2i2pZDCrg==","signatures":[{"sig":"MEYCIQCU5ZWeKrSBozXMddvnwN6L/BRyBX7bqlh84rLynFMYYwIhAP69XXXckPAjcN7MuucVD5Oe4YmjH3E1EGoKe9TTJaes","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":473577},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"4d33deafb00839e64376b8388962c02cfea9c24c","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd ..","test:watch":"vitest","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","fastify":"^5.10.0","@fastify/static":"^10.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.10.0_1785695729755_0.4356990209580436","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"gestalt-mobile","version":"0.11.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.11.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"d95da7f2520266313d130e60a4004458d15cb9d9","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.11.0.tgz","fileCount":162,"integrity":"sha512-fWrUHsIa2gsRcEov7gn/3NjFrKUPc16zDGMKUg+Vp3zqhP6z80LffJBm28P4XvLJQB6GlJFqYOiIjKGWb9yN1A==","signatures":[{"sig":"MEQCIGIqBvBw3zuRsxH/DaZl3xiSgZOueIyVMR1hl8pNdnVIAiBlDNmbqLehmE3+T6irxDmvoUQT8OJiZSsil1892n8jGw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":602555},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"874ea02d1acfb5924498cf18472fd0fc0f21e49d","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:watch":"vitest","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.11.0_1785851786069_0.8446852496625361","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"gestalt-mobile","version":"0.12.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.12.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"8515bc9a1e6e3bbc70b50fdf895de13cced8c5bf","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.12.0.tgz","fileCount":168,"integrity":"sha512-vk5gWPiiggGVSOLQ9pwfDQJ6+6lIHe2jLGpE2tU+IWr85ew8JZrVAhL7QzpgD9Jn5pxvV7CUJT5Drb8WdKAjAQ==","signatures":[{"sig":"MEYCIQD4XLGILAd7Nnkyo8pSuWyJo8tmL+rHQ36cqEUu4QaPGAIhAPvQOyhJ2td8giPKLFv4TmVKxh2dF2Xqc9HQ7yb31TY7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":617524},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"818a964f0fed200087fb814849093a2d5f28db99","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:watch":"vitest","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.12.0_1785969899286_0.02860525700541805","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"gestalt-mobile","version":"0.13.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.13.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"eec54d9d2251df19ca1c0626baeb976a8925464f","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.13.0.tgz","fileCount":175,"integrity":"sha512-pi+NQJkKwcw4IidMZ/rmvOnyaWyM2FEWsQKtFosx2ir5Z/lp5WJ0R+ohaq+pu5BCKYqwWxuE3stxXqxCOYD2hg==","signatures":[{"sig":"MEUCIQDhjcPhJjM3vs1p0yQJLK0JmJ6kFo3ehYWpjB0GwsMv7QIgT84gTRSwlmINNIVeT3Np9I03xWbYAuewLAggNrDbmpg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":631330},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"9a7700a29c24820c5788516c6a85e5f94b115958","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:watch":"vitest","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.13.0_1786026149300_0.1740968813655268","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"gestalt-mobile","version":"0.14.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.14.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"49d6cb20af3000dd63e413f8c227f4b5377a7d8a","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.14.0.tgz","fileCount":193,"integrity":"sha512-TlJ0zOrCHkQX9w/Qtd8AkHZaduC7V+pKgNdZPl4Q4sh/95A3eQv2f48+mQr0ZvsrdnnaxO6V9OsxjWxS+KaltA==","signatures":[{"sig":"MEUCIQDzflAe7xE1tjmqDHg9ZJcH9tqqLMBe/KqsqsgFvJ1BjwIgTJDKFaCNZGYDuaS5eoQBaLnHmYuoeJD8vDWGw5jTdz4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":806823},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"6863923247cf5dc283267e1b679fb5354dbf5a71","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:watch":"vitest","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.14.0_1786089862447_0.13263008763765383","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"gestalt-mobile","version":"0.15.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.15.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"7331ce7d69206bbf7148126c5ee2dd3e654f1fea","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.15.0.tgz","fileCount":201,"integrity":"sha512-hrD30HML1HD78grX3GgYKeVf9uYe4zlADv14zbFqfH45y7aizfb4oEG4DgiL/7HcP9uUFG+ZIFArPOTh318JRA==","signatures":[{"sig":"MEQCIDYudaExzllYGPoht1FU4vVNpTRYPPNeLwoR1au09XO7AiAuzvfICeBQJG0fxNzQCEFriwmEJSOUPsUfOOrOJo1sIA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":839520},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"cabf478327601c054471489e1eb43eccfe8a710a","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:watch":"vitest","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.15.0_1786373128892_0.7148557566008051","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"gestalt-mobile","version":"0.16.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.16.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"c4d42d4c70c6acdc97f085e11edacf386336ec1b","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.16.0.tgz","fileCount":202,"integrity":"sha512-zqMOxWjknL4Au4LBX3E40XgPS8IBKR5HJzlO2SwYYcTtbT6uOdMS5trYEHR6pQ5WhO7wJfHoaejJMhNtjpetdA==","signatures":[{"sig":"MEYCIQCdlFTVbaJk4YHeoajXOn695rfSJIsiNeEwwSUZzTmMuAIhAJBn9qmnmFivphnIIe2aZ+ZEBDGiywhbql13YVjvq/X8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":862066},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"473ffa433c15b22257d208cf4f4de3071a41a1fe","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:watch":"vitest","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.16.0_1786477069465_0.41022257835014075","host":"s3://npm-registry-packages-npm-production"}},"0.16.1":{"name":"gestalt-mobile","version":"0.16.1","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.16.1","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"83c06ad9193e269bb2abf6a6fc2ec8b874e75cf4","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.16.1.tgz","fileCount":202,"integrity":"sha512-4zi/RUNKeS0ziYHSH/w0HZag/a6z45sYQytXH9g64SAFLwXW2rqwMg9lIak1zVZca9QzywDb9Tef9Xpj498VEw==","signatures":[{"sig":"MEUCIFIANZbkvxUPzNsACNG9yept0/UVhJC1p3KGYi0Ez4lXAiEAqsD3ooSS/dgyT6oRLReGO2fc6rrKJWeQJUS/rA5Xvi0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.16.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":872628},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"d9e1d9b68cf0a9cfe8146bf1d10d4c49afd37401","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:watch":"vitest","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.16.1_1786545052077_0.9976409413755163","host":"s3://npm-registry-packages-npm-production"}},"0.16.2":{"name":"gestalt-mobile","version":"0.16.2","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.16.2","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"6146c84657262847ebbbd19b4004d96a2c7d60c0","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.16.2.tgz","fileCount":202,"integrity":"sha512-5mxziXRQmLAVra0+26Z3vOzN2+RKk1WJ6d33XLmX0/FDdxP7Uj59GtHn6HlSCV4xLiuMo0F8VxXEI7pzZMVFcA==","signatures":[{"sig":"MEUCIQCKay5VOo16zv7v9s6pYHZml+lzlNOL7EOPyx2w/IojZAIgM6fEzhfyqYgDUffi8yiQX5hIzbLW8c+2L+tWha8Fvkc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.16.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":872655},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"1274d034876fde2fd627b58a1117f7d90fb560d6","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:watch":"vitest","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.16.2_1786559917125_0.9242481071745172","host":"s3://npm-registry-packages-npm-production"}},"0.16.3":{"name":"gestalt-mobile","version":"0.16.3","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.16.3","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"fde281926e67c453e04ad5e42fa1ae46d5f0bd81","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.16.3.tgz","fileCount":202,"integrity":"sha512-Ka0bN8QJPpGodj57HCK+YfPIJnaCZCDZiAfwPXchXnz4chrfXsKMEuDdD9HIUCpMvAsuThqUY9+euctU1e2MvA==","signatures":[{"sig":"MEUCIQC9S9mBM74kP3q+EC2iVKeQA5LwagJA+OxcN/fYHOpL6AIgc1Sn2dQ1oa+M/+7N7Z87RmZ2xf4WTAz5KC84KveCYJ4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.16.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":879321},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"f88ba8e558a44ee4e3f11f872689a73f52a904dc","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:watch":"vitest","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.16.3_1786583143493_0.7769471911529495","host":"s3://npm-registry-packages-npm-production"}},"0.16.4":{"name":"gestalt-mobile","version":"0.16.4","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.16.4","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"c6bd791c414ca96ffe34b29c3541f2dcb1b08dd9","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.16.4.tgz","fileCount":203,"integrity":"sha512-dqOQpijvh+Hv9+eZd+l/+gM11IRhC+NS4M/o3ChzyE4nqe+7QtmiK28cFGqghuUDleSgAfjeBqndUgN5r9Im+w==","signatures":[{"sig":"MEQCIDXV67ihxTGAoh3luSNBxbwnKx5D9CsqmLmrJtWHb4xrAiAoTQviCKrZtlB+05m0uJIQt7N77D3yMWkVS1uWWtB0Dg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.16.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":894328},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"c2473aa307b0b0fe4e5c4ed89cf9cf14395b688c","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:watch":"vitest","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.16.4_1786622024647_0.9986903306057555","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"gestalt-mobile","version":"0.17.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.17.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"096e962947793f612586169d184e0880b459c661","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.17.0.tgz","fileCount":204,"integrity":"sha512-5yLIAeq2tylaqI8vcof3SpOL7pO4hfSo7JyziIyy20Oqv0ZW7yjLjgb07BGaf7Mxqq2MF5tdOqVeS0Sqri5Sxg==","signatures":[{"sig":"MEUCIQDDUAoZFzLhA0p1MPldBufxj3cXzQK/XpG8kwm9y3pbPQIgarBLOHAfDg8OBYNUofSb28SnX673I2NYWdIoDpCkgJU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.17.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":899037},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"8f9cf2a6a75ffdb5b2c7c72fc50815971dddeb8b","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:watch":"vitest","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.17.0_1786736920729_0.9827024544592204","host":"s3://npm-registry-packages-npm-production"}},"0.17.1":{"name":"gestalt-mobile","version":"0.17.1","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.17.1","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"7c1512b907f178e7c8fee23ff22f42fa941a396e","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.17.1.tgz","fileCount":204,"integrity":"sha512-DlwfZ6fwiD1Lt0gOeZexeUiF5fcKAX98nmUBXopdzgDNcUT49iNGQOAxiXjg8tDW78yfrlFbXw7VFTc6yWhYYQ==","signatures":[{"sig":"MEUCIQD1aZUlMPpvkNgbg3/Ng1sImqX4zERI7B+ck88Hap1RaQIgNRlMZqsn/mAOs2jnPxX3a8ISqTAOjxqBUTHANbJvb3U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.17.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":900272},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"a53d2b9d22d8762d78932ef4e8833f1aefb6e6d0","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:watch":"vitest","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.17.1_1786838999628_0.5602615948372209","host":"s3://npm-registry-packages-npm-production"}},"0.17.2":{"name":"gestalt-mobile","version":"0.17.2","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.17.2","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"9cfd59067ebdc4ce2269d20e9a0c01b18fa89644","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.17.2.tgz","fileCount":204,"integrity":"sha512-tb2RtPKRWNk+C67TFhXjyIFmSFRHEWkilF+BNW8+mU1QH7tra5/cmbkglMgs+NoT7cRzJ5SHIUQIKxg3/qvMNQ==","signatures":[{"sig":"MEQCIGHOwJGFZ+Z7OPAs7GIT+GidjiG168IntJeqkcoUgzgFAiBwGcJcHNKyTRNpI2NT06RnbtCslra6uBQId+K6TwVNaw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.17.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":902048},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"8a63a6c3aeb75d64842ccad1faad7e2a5220c135","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:watch":"vitest","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.17.2_1786841751993_0.1514805375670616","host":"s3://npm-registry-packages-npm-production"}},"0.17.3":{"name":"gestalt-mobile","version":"0.17.3","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.17.3","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"065ffcb7352ee503afada42e7645978b83921864","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.17.3.tgz","fileCount":204,"integrity":"sha512-2jkhlzU3UG55TnfDBrs07l2n6htRpz0yFrvXTVbHLc0G1k0Y3K/dNOReVWMloS1LTbz72Kq2ERcZRlNRCvHepw==","signatures":[{"sig":"MEUCIAmUpYrfv4CQbSZOOcC53NsEC5fW0JDU+oRa28T8xU/BAiEAh2WS5BT/HUSZ0/TZINMmexLMqNNarhTmK9Ri1Tk1BGc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.17.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":906356},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"c31c62b5aa9d909af6074ddbd17649588dd33875","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:watch":"vitest","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.17.3_1786905566623_0.33096642217320715","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"gestalt-mobile","version":"0.18.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.18.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"b4c59d16a1e6741e481f03271e2245f5cb77c442","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.18.0.tgz","fileCount":220,"integrity":"sha512-wr82edoORt5DrjzYEcOMplL7QGvAfZaPu0ZqYyH6o0PZAGm/jn9HpXixge73I5zABrlYIKSgbvGOnk4ezsKO9g==","signatures":[{"sig":"MEUCIQDyQCQnvViLhRRALBND4xoDcNjeOCps4UofRrulJaFwZgIgHOqBts1gG5sAp4kWUplvNnp2mK5V4qWndsdVUsdqiXw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.18.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1047198},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"5b5353e1a9293e5bf4f0fa352e412d2afc8cb7af","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:watch":"vitest","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.18.0_1787312827530_0.7029600056138876","host":"s3://npm-registry-packages-npm-production"}},"0.18.1":{"name":"gestalt-mobile","version":"0.18.1","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.18.1","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"0874a0320680843bd9ce4fcf99996f8f61e7b184","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.18.1.tgz","fileCount":219,"integrity":"sha512-d4wtMFz00Dmf+YeA00NzQGOVZjQHZm6cqh2RrYl8CVnOj6NKx6YJTQdppkW6lQ0QjxuaYYb3f0/HrCxIWviuTA==","signatures":[{"sig":"MEUCICe2/h3Wa4PzEuZx42K9QQceNwgmk5Wimo+cviV5c8Y5AiEA9Nau6PVr+eMpjFSl6ujGZfusYIzrNBfIU3QW8OlIFZQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.18.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1045939},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"9a3c0671d0595cfc82c60ca2c60f89a245bfb7b8","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:watch":"vitest","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.18.1_1787323006692_0.05215600380138108","host":"s3://npm-registry-packages-npm-production"}},"0.18.2":{"name":"gestalt-mobile","version":"0.18.2","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.18.2","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"7b7025761fd631048a9fe80fba86e38d70ca8e15","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.18.2.tgz","fileCount":219,"integrity":"sha512-U3oEG3a94PnjTCbPGm7lhm1ueSOK7E9tQ3eb95vcd4AWu8dpI63JM4AmcMbPcHYjErjmk2hwBb4muEF0Ah5Sog==","signatures":[{"sig":"MEUCIQCRF5cVNkj9YGbzc9NbjWMHY24XA/QY/toFUsMLtPIDugIgF9cWSusf7SImw4U3ObXe7gbeRoa0F5dStTt+hSt0aUs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.18.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1045623},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"3812285600b2244d4ef96770bbc98b28105a5c28","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:watch":"vitest","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.18.2_1787362274100_0.3204032608130709","host":"s3://npm-registry-packages-npm-production"}},"0.18.3":{"name":"gestalt-mobile","version":"0.18.3","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.18.3","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"5702a1a290f7dbac17970ec66f95b6d13f25ce26","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.18.3.tgz","fileCount":219,"integrity":"sha512-F/R9g5Jgsd8E0iG8fmhr5mwFFo1ight51SKSsItvHAB8aypLMSoGsQ8BF/ydCpzVrbJRCld4c8SHAsNff2SKKA==","signatures":[{"sig":"MEYCIQD+9tBtR90w3Zu+uKt3VinvIWuXsG1enqJl1NMrQmwapgIhAILG9QlEyuFQ1Qg8oHoQ+mP3ePkNtP7C1fZtx0m6kEF+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.18.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1052309},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"2eeee1865cc71a3fdc12cca83beb5eee752c774f","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:watch":"vitest","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.18.3_1787389080494_0.3819775632251916","host":"s3://npm-registry-packages-npm-production"}},"0.18.4":{"name":"gestalt-mobile","version":"0.18.4","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.18.4","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"f603d204f16f43b722fe8ec1a4a8c1da1a6de952","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.18.4.tgz","fileCount":220,"integrity":"sha512-ArcBuFudgUWX6Qq0SlqwC47fGeX80qteKaVaVpzZLrsaYDGFDLYuJG21nqpyIlO7dcMCS0GjSoh7gW5LJTJSTw==","signatures":[{"sig":"MEUCIDcxbTBqo7RHOM1GE7KPWrJolB5RVkFEb38LzVZE8xC0AiEAwDSe22WC4RZyu8rhLrlnHYdGViet4/ReJsuxCqjHU9U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.18.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1063036},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"70d72c069b3e77105a0c9b164e1491fa47b5eb87","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:watch":"vitest","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.18.4_1787470211480_0.0882261833900646","host":"s3://npm-registry-packages-npm-production"}},"0.18.5":{"name":"gestalt-mobile","version":"0.18.5","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.18.5","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"1f4c93de7f2c973b916c3242519d834131d67b90","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.18.5.tgz","fileCount":220,"integrity":"sha512-/nL6Etwr8A0eMHvTiKkjOobaqYNucMvAeuWCwTwmN9srTyMakOe1mrE98om1ZrbUqV+QsbRG6bqU2vUWJhovtQ==","signatures":[{"sig":"MEQCIBquqdgRo2hdNBZdE4gfAm3VJ6fdmEB1akk5xQXNK6dWAiAgV4WwyWR+6dttqlP0DofY8yNEa8rFJp5lJH9dXTET0g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.18.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1065853},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"5c69b488f8089c1c009f98843b94e5283f8e5b3b","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:watch":"vitest","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.18.5_1787473637397_0.7096391274133347","host":"s3://npm-registry-packages-npm-production"}},"0.18.6":{"name":"gestalt-mobile","version":"0.18.6","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.18.6","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"b357fecc9505a5eddc67afa5d5bcc5c5464b58a2","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.18.6.tgz","fileCount":221,"integrity":"sha512-xb8mPb9F0PrKQt+lHZG01WMULtYePPOmP59h5trQ8cv7ROudilZFZaKoSO8eUccXb0onmQqA3oQj4Qo803PScA==","signatures":[{"sig":"MEUCIGAE5LVyeooarG6wrm7ggfpw7N9Na1UyL9qQfO+OCGhpAiEAygDY1rzd3TUz+EWnQ6ytXKGYxv1mboBuM38dKLk7Mks=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.18.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1188261},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"2e0b75081ed1efc80b33bc2e4e4670114c8d0c43","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.18.6_1787503894100_0.7978757478068168","host":"s3://npm-registry-packages-npm-production"}},"0.18.7":{"name":"gestalt-mobile","version":"0.18.7","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.18.7","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"a16da79eb904d08218568ed7792a72d369b0938c","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.18.7.tgz","fileCount":222,"integrity":"sha512-HwPXESU3Og/E4jS7T2y37CX807u/Ug4uV5WaXdLtBljYpM28oDbRKpKaqKRakJzvKmCLT/A0E0mxhbkkrAQMNQ==","signatures":[{"sig":"MEYCIQDsGNkP40kKC6u377hJrxNgitZm7EkI4M+nGDfN1vtZVgIhAKJFhzr478gnldWkXu1f7vJVDsiTJDUJiO0kIHSLd5rD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.18.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1192626},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"d2ee78246ac2207e1d7613ba6dc09d45e97694a4","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.18.7_1787541913056_0.766663012167002","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"gestalt-mobile","version":"0.19.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.19.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"a7890c72bfe42f944f290df34e1cd4a94afeacdb","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.19.0.tgz","fileCount":225,"integrity":"sha512-BT9o8HUpyNOOattOXM74WKdsGA+pwXHiX32hPJjd5gHJL5MW58Hw9tN7kHg0znuhjBiO+dL+mxjpLFZYddqQbw==","signatures":[{"sig":"MEUCIEYIXTnmwbjLaVTbJzFhT+nCBZf+Y3xBTCyBT2lSFdt6AiEAlNsZ4delsJMAiJGd6HHcoxcWwjBr+IJdQ+7dOEdPYbA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.19.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1202942},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"b47f6ec486489e0892b9f1ecb0d846d2180d1414","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.19.0_1787671830392_0.6464992020651537","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"gestalt-mobile","version":"0.20.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.20.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"b6572e99f75787c275856d6e5fbebf69d853fc55","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.20.0.tgz","fileCount":225,"integrity":"sha512-beeTfj+685Q/Df3Fvb+z2DbnHAk4C6HpZvueXcF91puGf7zymDiUNA/F5+92oCs199U7yKdpuSO4dCTK+IuFAA==","signatures":[{"sig":"MEUCICfPQjTJTNlvPThgecNZ070ogJqfsFeoMZySGJeJwbxAAiEAqdWjE/T/HJeV03/KyqSUUPoQmN95LsPevW3+srJap4Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.20.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1204467},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"262cf9ebfcafebf14cdf0f74a41ec3479c4a624d","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.20.0_1787729911200_0.038068246116162774","host":"s3://npm-registry-packages-npm-production"}},"0.20.1":{"name":"gestalt-mobile","version":"0.20.1","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.20.1","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"26c4188dc8e374a693fd48ad5d0347e8914546d2","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.20.1.tgz","fileCount":225,"integrity":"sha512-OsmEUv2OMb6l9j/Ru0xr6l3y7mttKkVDMf6q+0f51A+MW0N61X68VNxrDnJAI3vVfxQXH8sO1wzA+0WzF+3iEA==","signatures":[{"sig":"MEUCIDpetBw11KE7dmHdUxknGAyYgEwcL+SOf8YT5x8X8V4jAiEAp7WPQl4aLSFiJDmpVJfDLRacZ5NOaTG+xw7MSU1HqEw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.20.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1204462},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"2144c314a4650d0b9e4b234c5186c98944c553ca","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.20.1_1787774838006_0.7217081651020225","host":"s3://npm-registry-packages-npm-production"}},"0.21.0":{"name":"gestalt-mobile","version":"0.21.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.21.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"656ced814e8229f31940bef2cf9494d35dd1a5ca","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.21.0.tgz","fileCount":235,"integrity":"sha512-nZfB5P+MiwWzZwuaojuBBMOGyiDqB41XNU4BN95b8a0qryLoNVCGC44iViAM72LYulSmOdSVkEw++ADCAxanyA==","signatures":[{"sig":"MEQCIG7kvZzLj+xSsggArCoxBHk8W3osk89C1VBHFFs30rfOAiBtIQQZ8lUl+GPUyFDei6KSvYVMg8sb51K0FKaKXCviAg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.21.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1259139},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"4a5692e505d855f77392aa28ed33133947d7dfac","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.21.0_1787780329223_0.0798995240720013","host":"s3://npm-registry-packages-npm-production"}},"0.22.0":{"name":"gestalt-mobile","version":"0.22.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.22.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"e4a8dce60503d29206d8ba9ef2b427aadb287825","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.22.0.tgz","fileCount":237,"integrity":"sha512-sDDj8LeqXNXjcPGamRtZP1fd34WZutBMQ7otUfLJgGHEFpNR2v0CFbc/ERqMkbUWDJbaZWBLZRYetmkvrQPWLg==","signatures":[{"sig":"MEUCIQCYomblfbw6hQ+NtAq1JZ05EDD6qeBeGyDWPYCxog7URQIgE1caAWs5NjO6ehCuaMUGLohgDQr8rzU/8UpDd92y+ik=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.22.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1281989},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"4879f00bb9723ddc49f77a9e9be0e1ee3e9e7318","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.22.0_1787821345562_0.720561742986505","host":"s3://npm-registry-packages-npm-production"}},"0.22.1":{"name":"gestalt-mobile","version":"0.22.1","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.22.1","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"aedd36a39d1537df4d8bad6487455d04e98625b0","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.22.1.tgz","fileCount":237,"integrity":"sha512-cNxf+J4lJjKJbayEIvczuWGfIu/HZ0qma2FF2+3BldKgS4qTKo9H2ap/TZdkbXdYEtakxR0Dfj0B2L32T37elQ==","signatures":[{"sig":"MEUCIQCRhPAio5d2q6qp9iQDWLeji4b+qS0XJD5YYWxTKLEyHQIgI8BLKEvS6c3d1rnPky2Mjq54AyOjEe/nbO6+woOfRpo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.22.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1281989},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"5fc575b9522f1d31b322a1d0c541de80154d3193","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.22.1_1787858358617_0.9713941812516571","host":"s3://npm-registry-packages-npm-production"}},"0.23.0":{"name":"gestalt-mobile","version":"0.23.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.23.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"3f4161154e7e41391afe8c1bf93ddee4f2dea790","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.23.0.tgz","fileCount":237,"integrity":"sha512-oKI64CViqOEwP07KXs/P+wdIMrMLaKVOqPXBm5LcrLv3v/56R/+ZJCBWz8AYsQNnC71i3GZZYk2ikWfNOXYoYQ==","signatures":[{"sig":"MEUCIQCJ4QUU1j1ftD1tnvh5CEky/GLrcNLwjk8Rj9AYLxjonwIgFaZHAgtwl/ezX2wel8hk5xapg7nKH8apwkbTgvaQk8o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.23.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1283703},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"7118fe087c7a218624198e65b24b770e73b7a171","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.23.0_1787862910761_0.9189547168156869","host":"s3://npm-registry-packages-npm-production"}},"0.23.1":{"name":"gestalt-mobile","version":"0.23.1","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.23.1","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"a8c229dea18ffb997a65cb007e4e5b443be002fd","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.23.1.tgz","fileCount":237,"integrity":"sha512-xmgBvEdiEKVOZkYknDHEPBcU+VH8BZH3+KTxw0TMjXfrmhkB4gqBiDpL18YrFxY1qV79O4RqdEyEz7Ry+Avcrg==","signatures":[{"sig":"MEUCIQCEpJJJiLqz1az6Mu08IiqEA8yWrqp8cHMeNEbFP0TE5QIgAfJ4eQpqU8uHk78ZGDlJTDxKM+uFLuVbGTxsLDhthiY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.23.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1285408},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"4fb5d5134ed0423bc4f42e3e5501bfe73b6f187b","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.23.1_1787865065334_0.027207884346568623","host":"s3://npm-registry-packages-npm-production"}},"0.24.0":{"name":"gestalt-mobile","version":"0.24.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.24.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"9d435f2a0d3369c6f8cfe278c7de92215181d4fb","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.24.0.tgz","fileCount":237,"integrity":"sha512-4h7+5486kk4kh4TXVjSbmf7hS+1ry46AHMJPIoYVmzSm1Bz4PCd3CDpSjHo+fpeqYhIWxxNhXvMgSTUWk4/pxw==","signatures":[{"sig":"MEUCIQCKxRHtdm8MWixo7Tf8Ojnv2mgHT7IgZtMVXUUy+s+w6gIgWlA6pY9N/CufkgCYfz7cuC9PAxYl3OWhKAeNd3vUouw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.24.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1289471},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"b716328f643335ab3e5ffa0bd0e3beb4f1a2cc58","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.24.0_1787866707385_0.04529507406815991","host":"s3://npm-registry-packages-npm-production"}},"0.25.0":{"name":"gestalt-mobile","version":"0.25.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.25.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"7feee417ec6142e1790a91871d84e9ee47527c55","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.25.0.tgz","fileCount":237,"integrity":"sha512-ji2niGAf69IZr+2425RTjx1VGvnZB3myU71QGchewJa2yv8xQtUj0wYOi9RVvErcEXFpo0Wsw+y0QMb7VUZ1uQ==","signatures":[{"sig":"MEUCIQCWo+2opeF+F3AR85xHSA7qFxb4FoyEQIEUrc1Y3P1alwIgantBE9Ts++6Rc+zBAWkyMZDZFQiYHdO2Ulez9nDtQhQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.25.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1290928},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"cf2e794d923636e00f3ebd0b77110d6474179cae","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.25.0_1787868805086_0.043045579726815886","host":"s3://npm-registry-packages-npm-production"}},"0.25.1":{"name":"gestalt-mobile","version":"0.25.1","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.25.1","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"bfc71d4b53768d177fb81410bb881371438e028c","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.25.1.tgz","fileCount":237,"integrity":"sha512-tcxoaalYZiouWT04g+guzWvHIR3Who/i9OVes3Lo0mvykStNUt/Gc/Nee6YeMuqpDmTX/tKhjq4Rqqmo2NCU+g==","signatures":[{"sig":"MEUCIQDfuC2sTa7iFLFhuwYBqyZw6+YfAnFC9glBIzLUn96cNQIgbVZhcbeCCf0gCEyJfOAjM6nHe9sn3iAQlos3GNLYKKI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.25.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1290960},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"ee44e600e191a591a8f72ed88229704cbc2f32af","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.25.1_1787909812238_0.3308926220294235","host":"s3://npm-registry-packages-npm-production"}},"0.25.2":{"name":"gestalt-mobile","version":"0.25.2","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.25.2","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"5684fef24f7ee09a0418088b05ac9e0ecd3f54a3","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.25.2.tgz","fileCount":237,"integrity":"sha512-iYqWPcY1UmwTmMNSL1W80m4MAn05kwdWtxbfN7g/C4K+gODY3mr1PvW/Hl5zYGYgaQIRk+L2e2UvO73Ug7nqdA==","signatures":[{"sig":"MEYCIQCBoRlDlgQNYDkxnC+pxlIuBTaVP1dQfl1Y2kF716QH5wIhAMcvEQLiyDFCthpKYFm2W02tDC1e5FRFCePVAUqrqfCW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.25.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1293226},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"5923915e1229b6cb1c33907cafcac2d0a599dc11","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.25.2_1787913393474_0.5596937057113014","host":"s3://npm-registry-packages-npm-production"}},"0.25.3":{"name":"gestalt-mobile","version":"0.25.3","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.25.3","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"4376661163618090d66b4f33569379e77c02ea0c","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.25.3.tgz","fileCount":238,"integrity":"sha512-znnO0W0nWyBhz8gq6GvubSeNXDK8MeY2qwbBeaNbzfudF2LuvbkEHx2VSMVyTugSENhk3GwwpiAJ9MDuXJDMUQ==","signatures":[{"sig":"MEQCIA+fDhL6H9BnU/nzswkoW2AGWv93lafv97SSKS8zGxinAiB+m3j5bkU8BCEf3st4/DzUVm64o8v4lKQDhRF7ExQ7cA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.25.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1337411},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"ffcc7dc3105a26320418689b924cd15f97748ed4","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.25.3_1787944534793_0.38134609138865505","host":"s3://npm-registry-packages-npm-production"}},"0.25.4":{"name":"gestalt-mobile","version":"0.25.4","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.25.4","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"4ed63e1071580a4588e8b5d0183c9631ad845de2","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.25.4.tgz","fileCount":238,"integrity":"sha512-Ur5TsjvfssGwROoj2nYPgI3q5QsI+lUDjp+rKAztZEFwPwUWDdnl1YLVfUmp7cAkEfPA2WCBsPc7FD/KSIhCKQ==","signatures":[{"sig":"MEQCIQCcGygGxh+B+QB8r30zoHpgzsuYQKY40QHJ73HIAoLi+gIfdDoQTmsLQ4YGRSvCio+iUj93Z6ndLr4Eoh8GXpYJZA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.25.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1339367},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"62306b70308226bbb38f934b54d0bf22ec9c8dc5","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.25.4_1787992601384_0.45355604611640654","host":"s3://npm-registry-packages-npm-production"}},"0.25.5":{"name":"gestalt-mobile","version":"0.25.5","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.25.5","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"472ef53964b6a74140b67245ffdb0f00ec23ab97","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.25.5.tgz","fileCount":238,"integrity":"sha512-n6TDlZgiJZptwxNTdjz0BptvHqg5FaHVG6/mqQueXlmIUvSzzmxceH4JFOuR+4xXf18E23s60Gv+bYcufKiP+w==","signatures":[{"sig":"MEUCIEX3c0UQLsNVqPcQdbKCrM73QwyUGZBmD4IG0NTIx3W/AiEAvW3xgwJ32/Z6Aahhzvw77OJsWieUQltfJEdXmhQYoFo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.25.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1339528},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"a49fb50069d4679da3476d347bcc9b55255e3bfb","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.25.5_1788024673087_0.4538918778730765","host":"s3://npm-registry-packages-npm-production"}},"0.25.6":{"name":"gestalt-mobile","version":"0.25.6","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.25.6","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"1e3e86f2492bca1daf9c2a4c7e2fc8c26e0e64c6","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.25.6.tgz","fileCount":238,"integrity":"sha512-eUCwSnojVzCarS9a9NNOQttF/Si2HMSN17rEhGFYhWBxXv86c2JFDSUKHE5lQu/kSa2tDObxJKPWaguIaUQBFw==","signatures":[{"sig":"MEUCIQCkZIwd/CvC6DM3s8u6/f0Ar/RsCQgMdo4mS9iFEVj6jAIgctsOpMA3Jl6mEcqgyF1mExbrmSy/EplS8yHkI0ixvrk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.25.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1339731},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"f8efc032a1eb4a8246e5f361d2064f1c3845c49f","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.25.6_1788033720217_0.42663485129368417","host":"s3://npm-registry-packages-npm-production"}},"0.26.0":{"name":"gestalt-mobile","version":"0.26.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.26.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"9ca1b8e9508b4ff4030d92ed574174774011651a","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.26.0.tgz","fileCount":238,"integrity":"sha512-I8bQMCAxcOXHi7IdKVqJApgs34rPfKbz3YGJBE/30DSFT0d2gz3A5cVvOmylGKMLj3BPo5d00CMlOAP5ldlQPA==","signatures":[{"sig":"MEUCIC+IAgWj1vKjS2loCGOHxa9jutA8YknFAC9WL+JPuhA4AiEAyuNAsC9k9EVEy1Fbhq28sDY8T+0T2jD3s1bC/J+JlX4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.26.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1341506},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"6db8352757e07c51ac365e201573fac4b7ec2d22","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.26.0_1788040871485_0.5373792280563507","host":"s3://npm-registry-packages-npm-production"}},"0.26.1":{"name":"gestalt-mobile","version":"0.26.1","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.26.1","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"ebd8ede854853c84b383380962b524965d49018c","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.26.1.tgz","fileCount":238,"integrity":"sha512-UvIXaG8cj1LoqY7K9Q9nv4k75FBJOkfwsIZuJbP0PTFVDPR5KYZnopv54G/sSzJFyZzM2PKi+ihceDDCOMIq+w==","signatures":[{"sig":"MEYCIQCt2NjO1jc5PYRjTHRZM0Yo2qeO83I6wOMmdS9c85gX8QIhAMleT+HQap4gc9KTj+Sz767V4k7cPaAITFJgFdab9zPh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.26.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1341424},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"76a05c452d4591862ca1f29a7570ed2438c75710","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.26.1_1788042548218_0.6816983538608108","host":"s3://npm-registry-packages-npm-production"}},"0.27.0":{"name":"gestalt-mobile","version":"0.27.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.27.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"aed0a2ed23ded63cac0327a9990fbf492e029bc8","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.27.0.tgz","fileCount":239,"integrity":"sha512-AYTTrY2rHD+iAe9ICpo3c1kNrJwTEVBNjVg8r6kRwmWxBBRjeCd6VAofbaeQ2ylkfgrYrZ/qe2pZCnW6IuGwZw==","signatures":[{"sig":"MEYCIQCBx0AhQoHT5qEZ81yah/W/R3d0QjasOEtjIOHJzyb58gIhAMCYm0dJlB8l3KN/dJcQNFzV0HEQnekX/Spp3r6h+BRw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.27.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1348928},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"7b18a9f4ab824c795d25e6a435658e5e73878f3e","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.27.0_1788070884596_0.23499066803087376","host":"s3://npm-registry-packages-npm-production"}},"0.27.1":{"name":"gestalt-mobile","version":"0.27.1","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.27.1","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"1d079af9cc19d808f0af40917e86eee5afc40c5c","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.27.1.tgz","fileCount":239,"integrity":"sha512-XjLkbzaZFD2eHtQ6vbzmzHoFHt/eqVhMScarUWE+p93r4a5BURZHRTSPVsdgkpIfQTvA09HRFcAYq8hcOtMERA==","signatures":[{"sig":"MEQCIA3vjE5GTDu5jhD1bQjicc2E6G5gvuHNktiRQ1Lb3L36AiA6wJ25Lps42MwnXk4nUUXlhtfZVgoazv5bttMp2SMU6w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.27.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1349210},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"1b073bf61e41899e938abf4961510964b3edd234","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.27.1_1788075193215_0.4065968152125057","host":"s3://npm-registry-packages-npm-production"}},"0.28.0":{"name":"gestalt-mobile","version":"0.28.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.28.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"ec9649badc76d9fc15ebe9c52808ec6c892c0c6d","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.28.0.tgz","fileCount":239,"integrity":"sha512-8B20ARsqDbdXiHXI14zyWcoa/KNtXBpTbF6DYf/1Ak7BQTMWKW0jFgrPeIuM+XHGs7I+/niPRC9lpfRPBXB1iA==","signatures":[{"sig":"MEUCIC/wh5RWH7gA7hQ/Kz7c1sec+pi0oe1+6dlrAGD3y1TlAiEA+0iMQIi4J3tnH/whzQ9ImLoRn/7ebIms19937SLPOqs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.28.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1350559},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"29f747bb8362dd7df4710566ac601da200b29db4","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.28.0_1788075537211_0.10294894471074367","host":"s3://npm-registry-packages-npm-production"}},"0.29.0":{"name":"gestalt-mobile","version":"0.29.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.29.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"fdfa169bdd7eb03a331f5055b370d5ada824448a","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.29.0.tgz","fileCount":241,"integrity":"sha512-+WE7tIh+033KSxlSQn63N3P83yxsntavbLlz7cuWOVjcSnL4POCxIrcALykG08KKSIgYWmY52PURUmS96OSsWg==","signatures":[{"sig":"MEUCIQDNQqAD4Fol+0USVRYZd9LdwDTC4nXSwYHMCswpfs1sIAIgICBdVd7QqY1mnhxzmiyhlE+N2eO7ENrFDJpr3TEd22g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.29.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1375489},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"5a8f375fe90e126b51c152233c29775bc444e65b","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.29.0_1788130718991_0.7580009688866287","host":"s3://npm-registry-packages-npm-production"}},"0.30.0":{"name":"gestalt-mobile","version":"0.30.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.30.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"4318b9294559002af791d0a512f881cf6e3c6de5","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.30.0.tgz","fileCount":243,"integrity":"sha512-SvrTdsN2MthCLqa+M2nLwXqsJtqH7UAjxQPnbxZNlUnTePSRdwoB+g1jzJk5PrxkLhAqWXOAnW8ooRGTjw9rLg==","signatures":[{"sig":"MEUCIAKYt4LPi7GaNGCIFNNGScb2Xj4dbTRcbUGPo63UoneGAiEAwjmpf+huBKMF8VdCUoH8xrrAGLwzE2Mk9GBW9Qi1zLQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.30.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1404966},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"7a31a8b5a73129d784b97a41b0504ad4c1087bec","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.10.0","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.30.0_1788177986397_0.1835511422880185","host":"s3://npm-registry-packages-npm-production"}},"0.30.1":{"name":"gestalt-mobile","version":"0.30.1","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.30.1","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"4ffc00606007b82a345def40cdea46c3a0b04827","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.30.1.tgz","fileCount":243,"integrity":"sha512-P+Yoe+8htS9/xaB0KOJrd/gsF124wM8cD2ZD6Z4sxZEEQdCmifKcxQoa4gYOn7HpBViM/O5HarzRxWaAkQ9LSQ==","signatures":[{"sig":"MEQCIFomIa8+HwdOqS1Ggqh/J/1FuFCfKfVuipU9Pz5o6vEyAiAMI7AC5Y5+8g7WwvVCWkJo4RbAEkb/yznCqoooFGZVhw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.30.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1409827},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"3beb9c4bea85df17a7680dc4b2159e31356e1fbe","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.12.3","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.30.1_1788859473769_0.26682506304491294","host":"s3://npm-registry-packages-npm-production"}},"0.30.2":{"name":"gestalt-mobile","version":"0.30.2","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.30.2","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"bd977908ebda4555e89ae3a07ef20fa97f92c0d0","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.30.2.tgz","fileCount":243,"integrity":"sha512-UQILZ4vHgU/+XxISIezOWPuNKXeREKLiqWgB5WXfrguewr/GccxjP3iLl5VYsO9rLUFqQcGYZzvDPlFy+sIBIQ==","signatures":[{"sig":"MEQCIEHY/15D7Hm5+PFwM9UjBL4Ob6Ul1Dq9PIE31LLXWcjJAiAy3tWJe5aCRBWLrwaepbp4BnZTiaPK+FLWEVdT+n1cpQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.30.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1409994},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"701fdf9bd9f485212367cb2259c84cdf02f6fe9d","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.12.3","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.30.2_1788878467713_0.8140682162279371","host":"s3://npm-registry-packages-npm-production"}},"0.30.3":{"name":"gestalt-mobile","version":"0.30.3","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.30.3","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"b9cc84fe7be4ad42fa1f3798e554df67ca6f68e4","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.30.3.tgz","fileCount":243,"integrity":"sha512-R0vEWTFg/PtWnX2qPpS/jTdw7HuzH7uc1yRNXTcx11VwrFG0S8vn5AtKSLE8SKxJfRPRn275gNmKfbPEDcdp6w==","signatures":[{"sig":"MEQCIGDaZ5TNuxBJhg6FYrVYslceVcMU7ydcvkV+4BRBmYYxAiAhpVU+VZlQtPMUHwt453H1Lb6gTrlt8Mx2Q3crUtRWAA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.30.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1412887},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"27489ee62367a20bc9c4f729da515e940c6dc7e8","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.12.3","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.30.3_1789219611042_0.1807368517936927","host":"s3://npm-registry-packages-npm-production"}},"0.31.0":{"name":"gestalt-mobile","version":"0.31.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.31.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"aa8f98efe30199443bb081fbf390ff61c5daa88e","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.31.0.tgz","fileCount":246,"integrity":"sha512-TVb7b9YFuIz04XPUzPnUErd4lSoUWtpPHjnog2iBKfEg2eUm5X82DN2SGt8T5pSjnxt4qzLe0qNUTR2SNoqSNw==","signatures":[{"sig":"MEUCIQCiV2AydtgrRDIx/QMecTHclXT2pWmjUCOm1VoAOzygowIgN2yBKfNUWWK7O809dG0P2PCJVhVyJD/CSWhC4NNH2yw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.31.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1447532},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"67af16bd82d994320d29a6e118068548d528bcc1","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.12.3","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.31.0_1789299182300_0.2092319068665225","host":"s3://npm-registry-packages-npm-production"}},"0.32.0":{"name":"gestalt-mobile","version":"0.32.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.32.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"83f4076cbba709f9f04f8cbd660805f7b9ad4712","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.32.0.tgz","fileCount":250,"integrity":"sha512-6YE7jne1u/YNoEr/iocoPpY6GjRNVVF5+uXv6OWEp1KCdC+L5kdvDa8n3qLbKE8LJRR3noTW2QIAbkMke7v/Hw==","signatures":[{"sig":"MEUCIQDRZTOYlgCFaKI7zpFzzxp+PkW913bQyH7Em2q9wuD6MwIgAZ+w7cxN5P0DF2XvgX3Fm8bLdQsnCj3BG3FKoBKWN2c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.32.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1452643},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"3efb0ba5d9902ab0279e89a8035e0e6e2f3d59fb","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.12.3","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.32.0_1789304772722_0.40289336457010094","host":"s3://npm-registry-packages-npm-production"}},"0.32.1":{"name":"gestalt-mobile","version":"0.32.1","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.32.1","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"7b8a9d67869ce9a04b3525082b37378dec48a46f","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.32.1.tgz","fileCount":251,"integrity":"sha512-Vg0Kmu2IEfnDItYdQEFVASoRXjNQZUwX/YE55Bm7x/GgXkDLMyaGleUFhksm22yTfyZL9TtIj1QP6PGxPxgSnA==","signatures":[{"sig":"MEQCIBL3o9eKxhj1B/Ib0rB5iukhKUOXdnNU+wi9S619SFPIAiBqDCk7UbXWcjuX1W/qFx0yd9X/RtHH4rDGEuRpmvrUJw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.32.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1461104},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"c5c6f6a697713c3d4daaae6691a0469fd0342101","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.12.3","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.32.1_1789322641645_0.8849205283225745","host":"s3://npm-registry-packages-npm-production"}},"0.33.0":{"name":"gestalt-mobile","version":"0.33.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.33.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"cffecfcaf2b8b14c90b156a61421d27016191245","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.33.0.tgz","fileCount":251,"integrity":"sha512-vzv5G97dBRXFMbCKJNOn4VoG8D6lwQrHVTc1wsRfb7/Ox9zcawz2W3emvSaqVgbs0cPKA3b852OFdmIgQoFLOg==","signatures":[{"sig":"MEUCIAOMJFQHK43sTdS7ccElD787I9eM9QfSflyz4iVzbgNIAiEAvCZztDVLJbbWjdwMjNhvmKjOXe3aIh4/j+YrM2U+CuE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.33.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1472971},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"810ee1f541fd620d2974da3054fac692665e3bcc","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.12.3","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.33.0_1789388423789_0.859724505398185","host":"s3://npm-registry-packages-npm-production"}},"0.34.0":{"name":"gestalt-mobile","version":"0.34.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.34.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"94ddce98e44426bbea79e9edf8b0878bc0ae4a59","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.34.0.tgz","fileCount":252,"integrity":"sha512-3pkRLyymUd0Hku9URNiI7jGkumzwLe0+kbmyvU1CZ1Kjkk6otlEY2YiABEeBci9yq6eMzy0jsYIOLsn3ZT8K8w==","signatures":[{"sig":"MEUCIHbOooWWDVFWaXnl2MdVDlpvtm8XliJbY9t1oE5JcKK2AiEAhmE3sy9PzOJ+EpI7E7Npi1JG3HbqyeHVe/xoiMieyLY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFPduEIxQ59KGzoHaNg4uhgo7c/aETFN142yHCtDls5nAiEA42P53wIuS6RHnQvCwDEpjvFt351O+sCLN/DOpOD5YFQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.34.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1476245},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"c1acd54ead8657fb49ac2cfed1992d20652ff102","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.12.3","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.34.0_1789451650580_0.9832142350043969","host":"s3://npm-registry-packages-npm-production"}},"0.35.0":{"name":"gestalt-mobile","version":"0.35.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.35.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"a43b95f746631f7949aabc3ab8ea5b7f03bf8faa","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.35.0.tgz","fileCount":252,"integrity":"sha512-fMhai8lh3mD616iXFrrx0fRkAIHzvEXMF+OmtPPV9+Pj7RAM1viRHS63gbLcmGc3HVybBmmCoGdzGjqNYOjL9g==","signatures":[{"sig":"MEUCIQDBE56usE6+z6cqZ2tQA5brVtBdppbUePyvggBhTYH1JAIgJnbXTvGTygwhYs7bRlLPbr07tdQlAzmyIO6M4T3g8VA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICiI7577zJQHmWh63CzSvIaaL5jmBlhNpM6IY6QOkCbbAiAggGriuag9fj49onK/knU6VDPI4bNIQxA43I/dJ/Ow1Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.35.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1484827},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"64015c883c2de8fa0f1709d758c5280326dbf932","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.12.3","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.35.0_1789457117673_0.8114575112909899","host":"s3://npm-registry-packages-npm-production"}},"0.35.1":{"name":"gestalt-mobile","version":"0.35.1","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.35.1","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"9b57bfa0be53f777e99e9cf0d0e477beb1ccf9b9","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.35.1.tgz","fileCount":252,"integrity":"sha512-g6chdslsUjerqpJbIuwUhaAGtXckQ87nZS3iT2THxrsKk5gBp98XKgCUI9m/NKu8HzpWmTmqMkOSResCRxJwTg==","signatures":[{"sig":"MEYCIQDqvt6XZnZlls2MKO0hlbab9Ii5l01is217jR6QDFyq1gIhAJYYxjcRZEUFdikHgnU/dXNQesN5HbXXhN6HQub1ZBLd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIAW5tgF5+pNNgzI3wECaBUuSdPXQhvQe35JTj/dC8Ay5AiBjytMR084nkAvuH4Kehnssd4EIbAwFi0kks1yiIsh3qg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.35.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1485266},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"4d8a91fdd25d084d5845640bca57addce539c2a5","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.12.3","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.35.1_1789491680745_0.8980073827736064","host":"s3://npm-registry-packages-npm-production"}},"0.35.2":{"name":"gestalt-mobile","version":"0.35.2","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.35.2","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"13c7939fa759743124a213b33b7875a5d8d86a81","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.35.2.tgz","fileCount":253,"integrity":"sha512-Qx7Tj3eMwKR2/0B4bUXjQiCcla0cwRNkcT8/f6HZE8soghITau+XodUJxBdh3bwSKlRegLQFf0wr6n2l9tq2Ug==","signatures":[{"sig":"MEQCIFs39/MFiST5ISA10TkOJidsEaiy0kPGtJOqEQ8ZhCq8AiBPjVuCcVKbFgBHaQy9UScN/+iN07gC9IvW3gJqZvncHw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEXMg1W88XHePhyjRHUP6r6FhFWHSrU+i++ilfmK/j1oAiBiXzlRtZ4OJIQMyzVZKCzE+Ds7hRfyMSk1EfHJ6j/NgA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.35.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1599201},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"3fa6f120040032a7cb955a1647c42a9b3e332018","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.12.3","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.35.2_1789542702705_0.9798911273743551","host":"s3://npm-registry-packages-npm-production"}},"0.35.3":{"name":"gestalt-mobile","version":"0.35.3","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.35.3","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"71031a7657ba7c7895ddb34ff0372d32d7245684","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.35.3.tgz","fileCount":253,"integrity":"sha512-AgCLFvEiLoaJejjJmEdGZGoXz+Idvnav418+PnjU9tf7XDoipqmciIfQA/+WIjlJU3qWx8A+e7xnXDyCNj3VJg==","signatures":[{"sig":"MEQCIHsH3uUx88jTsJwPYxyNOb0HXh7fVOFNN/ig1s+4DKvpAiBqdkRchS7azEBESq+3oEC8NpZTsyW8WcjF09oaUQCaGw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIA+JeawjNIseakVZYiHVN2Lh48L116mU3RBMTZCpUZr6AiEAjqZP8UXuxTE+HNemDkHZGqefosqAMZoMC7s+D12g7Ss=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.35.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1602209},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"8a5a25fad5e92154b1e55d69237a3072fc016c8c","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.12.3","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.35.3_1789643411660_0.6072595572554336","host":"s3://npm-registry-packages-npm-production"}},"0.35.4":{"name":"gestalt-mobile","version":"0.35.4","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.35.4","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"e69a9595a0b6340f09842eb39e9fe8cde081d300","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.35.4.tgz","fileCount":253,"integrity":"sha512-fCrHmfi8jUb31ZVHt6MIKDD74e55zh5FJQkg+ouoz5vY+GV35jLbVxZxZSjpeL+PpjTSDv71CswNO606p6iasA==","signatures":[{"sig":"MEUCIEQoniLE7rS5q80lnGWRBZTG8dMLUxcrZCbXtx1ndgTzAiEA6TJI6R5DFt0H68Ct1aEeM2KNWA7yw4KaFOU5+nmuJiM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEDjeN8HAULKuKWqRXhz2CzY7N5OnL1sWgQAHIEtkIFRAiBJfDcTziZ70jnFBx10luXe2sjG/CYVK6YflYhtrhTz+A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.35.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1604282},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"4e8ad76eb28f35fc03982ed54006d39ab4a54c7a","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.12.3","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.35.4_1789645375735_0.5177844805869234","host":"s3://npm-registry-packages-npm-production"}},"0.35.5":{"name":"gestalt-mobile","version":"0.35.5","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.35.5","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"8f46ba60fc686533b4290be9403ea59a0f5ae2be","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.35.5.tgz","fileCount":253,"integrity":"sha512-rrk8LmJsNPgt9Vdi2XiYxuuQ5uU57bW33p8WUhWOaR7mM73qZB5/JuwqkbAghZeqrnZB3A0YZEblH7egWAOt9g==","signatures":[{"sig":"MEYCIQCDJSGIMot01OvhByCY+4tj1E8sgSFaONgQx0+jkNQ7yAIhAMZN7TV9x+b6cAKA5H5r614H8qzgeE7627jB5XCumhKa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIDgEt5XoLkQhPSofbVm91Z0sGAWRqTpUMnPhYIJOSAArAiAXmBNqA8KBlgM0ROD0p2IdwCD7Fv5yUYLFXNFaP9jl/w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.35.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1607005},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"4feaf1beccb63dfcb557afca196d8d6e3422868c","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node dist/server/server/main.js","format":"prettier --write .","prepack":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"tsx watch src/server/main.ts -- --cwd .. --public-origin http://localhost:5173","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.0.2","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.12.3","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.35.5_1789887725740_0.5026145604897336","host":"s3://npm-registry-packages-npm-production"}},"0.36.0":{"name":"gestalt-mobile","version":"0.36.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.36.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"ca52bf7a6baa7c1c80931a802a67e3d6cdaa4d25","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.36.0.tgz","fileCount":272,"integrity":"sha512-uFsFj0B3G4caOnD4VhRJuQjG/oWvadDvG9CeOuIhAtj3pEvLKrgZbbjC5sIG+Io477DFwV6apjkE7P1aJmpI7A==","signatures":[{"sig":"MEYCIQDpEfFy00Zap3y0RTelY0CHQ7iE8C0FKzZCEhKidKARMwIhANLyMZZILygPR+4bic1aaXuN254wwlnEC+izz+KlF2PW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIH0SmGKqc9BW8ZVpkXngNAXdZHl2qTM7ShegXfxs8AlOAiEA7sOl+uZdfJMSDtRCdT+zoNHT1Z8zeqjcjew0ZqPtyXc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.36.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1747219},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"f0af42365cb2edefc1d94dc781ea0d864209a767","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node scripts/start.mjs","format":"prettier --write .","prepack":"npm run build","prestart":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"node scripts/gestalt-environment.mjs tsx watch src/server/main.ts --cwd .. --port 3001 --public-origin http://localhost:5173 --data-dir .gestalt/dev-state --disable-passkey-auth","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.1.0","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.12.3","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.36.0_1790679301105_0.9393525124339692","host":"s3://npm-registry-packages-npm-production"}},"0.36.1":{"name":"gestalt-mobile","version":"0.36.1","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.36.1","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"354b524e169052fc7cdd9785f53e8bbe0102c796","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.36.1.tgz","fileCount":272,"integrity":"sha512-3BR3nfaTvrvKkfE3KvXzbHdBdUqKvsK9BxDFnmNQT5sdIWb7pPEvOUDPF8oQaypojsHnJXPoTnsws9ZJN/1dbg==","signatures":[{"sig":"MEQCIHavqCT4vjUsFbTTMMqvli5eny0mAjuwjVGruROXkmYHAiBsGYRaFJG5uM1I1uc8s4Eku3Ybmq6po5jd+UPlx40K1g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCqbGn3wNyu7zvoXlsqlJ49oa/Koq6Nfr1nrp/Z/x9GOwIhAOCQQPpqMZonyoGb5b9Ghonhe9CCZxhok/277ugfMX4Q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.36.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1752365},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"5b5f7c7525e47e4097dba176eff2734b1d44eafc","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node scripts/start.mjs","format":"prettier --write .","prepack":"npm run build","prestart":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"node scripts/gestalt-environment.mjs tsx watch src/server/main.ts --cwd .. --port 3001 --public-origin http://localhost:5173 --data-dir .gestalt/dev-state --disable-passkey-auth","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.1.0","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.12.3","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.36.1_1790689152007_0.24210715102365588","host":"s3://npm-registry-packages-npm-production"}},"0.36.2":{"name":"gestalt-mobile","version":"0.36.2","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.36.2","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"391925ddb6e7d665c6434610734de66b3e7c5dc4","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.36.2.tgz","fileCount":272,"integrity":"sha512-xcXEBnGh4L3Wv2e0l1IoRxoHkf7+RDx2+ho+OpfjVa6zMrcvaZrLMlENnFbq7einU5nk0/iMt/62rp+/2tAYTw==","signatures":[{"sig":"MEUCIGZw0BaCM89ARSYVwJJrug2hdZWV60SkQM+zhJikCHInAiEAoQkdkLhxGP6jNWkVJBhFgYBXsggRuPQ+fwA1FTdpP8Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIH2PjTCgoRtKla8TMWYV7wgDsqKzjaJRNnk2lxMR0fDMAiBNNwvuo4koQAEH21S50KLOL9YMELmuhz8x0S9GmEZNVA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.36.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1752922},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"1025506466a5ce7a08809b6bc8e4b12ba1c70380","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node scripts/start.mjs","format":"prettier --write .","prepack":"npm run build","prestart":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"node scripts/gestalt-environment.mjs tsx watch src/server/main.ts --cwd .. --port 3001 --public-origin http://localhost:5173 --data-dir .gestalt/dev-state --disable-passkey-auth","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.1.0","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.12.3","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.36.2_1790696263602_0.6315975438446222","host":"s3://npm-registry-packages-npm-production"}},"0.37.0":{"name":"gestalt-mobile","version":"0.37.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.37.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"156c6283a6c0872e35cbb965cc66c550806d1a21","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.37.0.tgz","fileCount":272,"integrity":"sha512-q9xjAjPTmRGK85/IrFj8cluulwlN69H5DY09gr7OFIs+Wji7O++olhzvpZEzxbcG0vpq78/cmzUiZ9g5CoQBXw==","signatures":[{"sig":"MEQCIDMDZviUg0zrL6jdcPT9McrTv0piF8sYcthcFFbUe3K2AiAzuzhPRSK6MZcyPPMdiQ4cvKN+/1uMV7i8d3dtffUz7A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIG1Nu4v8lxzgPwPNfWqr5SA+TVvAMmwaKckf0+Zw1vs9AiEAkXuzaiW67q+GEKlJNuCWMDXje9XincqIslm+lFXS+jM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.37.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1753687},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"a0b3ccb4ce883593d515d9a3664090dfa7ccaf03","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node scripts/start.mjs","format":"prettier --write .","prepack":"npm run build","prestart":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"node scripts/gestalt-environment.mjs tsx watch src/server/main.ts --cwd .. --port 3001 --public-origin http://localhost:5173 --data-dir .gestalt/dev-state --disable-passkey-auth","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.1.0","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.12.3","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.37.0_1790705910849_0.11796598724353169","host":"s3://npm-registry-packages-npm-production"}},"0.37.1":{"name":"gestalt-mobile","version":"0.37.1","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.37.1","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"200e3166cdc3b8d8e37ba10202fcc02dd00c595b","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.37.1.tgz","fileCount":272,"integrity":"sha512-Jyc/SaTAsoLMaIHKebkVl20jX9mh/JCx1lZ1qofraYvK81o6vg/i6RP6HWg1Hs+Sx81WYXrO5vN98s+asD2pQA==","signatures":[{"sig":"MEYCIQD61wIY87AGig6FqVXLDearzZ5qkbw6iyJRICun40p/dQIhAK/1Dt0JJ7z8KJh0p837AMfG89CAtAI9KsEfDK/iqlhz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD9faEfbzLJ5CNVm+bOZTYcO5D6L2ZMYcm8TPaBkUMQNAIhAJMMQaocvQr6Jq3lm/kGnufZkn7wozEuwRlnCB92yr9U","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.37.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1756240},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"83f9ac810a7afefaa6ef80fe1dc16e0fc27eb427","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node scripts/start.mjs","format":"prettier --write .","prepack":"npm run build","prestart":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"node scripts/gestalt-environment.mjs tsx watch src/server/main.ts --cwd .. --port 3001 --public-origin http://localhost:5173 --data-dir .gestalt/dev-state --disable-passkey-auth","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.1.0","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.12.3","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.37.1_1790708055186_0.3232236376475437","host":"s3://npm-registry-packages-npm-production"}},"0.38.0":{"name":"gestalt-mobile","version":"0.38.0","keywords":["codex","gestalt","mobile","development"],"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","_id":"gestalt-mobile@0.38.0","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"homepage":"https://github.com/dyne/gestalt-mobile#readme","bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"bin":{"gestalt-mobile":"dist/server/server/main.js"},"dist":{"shasum":"7efb71a58a5d1e3bd3e792b7d6813f27ed9d2050","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.38.0.tgz","fileCount":274,"integrity":"sha512-MYzJcL+kwtW3kccD3WvWIcZ6P5rlhhGwzP/EIslwhR27qTYT+Q4HE8fsI+bRn5hINjTggypzGNo8y4phL9e69A==","signatures":[{"sig":"MEQCIFY2MaufN6erpGCPK5a6KQ303rxBeIfWZyOqRSWWhyU+AiAv15X2b+V3uT1IIGtYlAgMERmSkvksT2pQ0Fnz+oGanw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD5pMbJuHDMPsKCKrqUILNTAFV4NhzP8FQ7CY2G/wd41wIhAMMQaUqvyXse9HXlwMo2CRY49uNNvobFvF9vcWtg5WNK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.38.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1760420},"type":"module","engines":{"node":">=24.0.0"},"gitHead":"84cbaef3ff2fe0fb4c2c5c48a30528026f4bcee6","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node scripts/start.mjs","format":"prettier --write .","prepack":"npm run build","prestart":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"node scripts/gestalt-environment.mjs tsx watch src/server/main.ts --cwd .. --port 3001 --public-origin http://localhost:5173 --data-dir .gestalt/dev-state --disable-passkey-auth","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"89be0e56-304c-48bd-aa33-c961f52e760e"}},"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.1.0","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.12.3","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/gestalt-mobile_0.38.0_1790709222797_0.32478035644525294","host":"s3://npm-registry-packages-npm-production"}},"0.39.0":{"_id":"gestalt-mobile@0.39.0","bin":{"gestalt-mobile":"dist/server/server/main.js"},"bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"dist":{"shasum":"890934e5faf508b489c3e1a702b16081559ce823","tarball":"https://registry.npmjs.org/gestalt-mobile/-/gestalt-mobile-0.39.0.tgz","fileCount":274,"integrity":"sha512-Jm1fHM4ZuhZMWZEKU1PX/Qo2viSJVk26TrzU/6n4j6/0BniPWjC4Qa/awmU7tACTqkTVFCz0zp06c2bDT9QkOw==","signatures":[{"sig":"MEUCIQDmMXUiCEpaIGCYWtTWnnN65zFMClWL6Fr7Xi4yXuKweQIgYHmzEduOHMqpRt9iQ09uoQitGf0d9e3kyrQ0zs2tlZ8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD1C9qHbx8EXqSAuqbujnjiD/7YaD0kvig5eEAajFw7RwIhAPfQkHak9DxJrnxzKFtwBTQ/284CwSxEib/Q8dEjIPfw"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/gestalt-mobile@0.39.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1762916},"name":"gestalt-mobile","type":"module","author":{"name":"Dyne.org foundation"},"engines":{"node":">=24.0.0"},"gitHead":"209008250664a3328a20f6f957433e2c7200b318","license":"AGPL-3.0-or-later","scripts":{"dev":"node scripts/dev.mjs","lint":"eslint .","test":"vitest run","build":"npm run build:server && npm run build:client","check":"tsc -p tsconfig.server.json --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings","start":"node scripts/start.mjs","format":"prettier --write .","prepack":"npm run build","prestart":"npm run build","test:e2e":"playwright test","audit:prod":"npm audit --omit=dev --audit-level=high","dev:client":"vite","dev:server":"node scripts/gestalt-environment.mjs tsx watch src/server/main.ts --cwd .. --port 3001 --public-origin http://localhost:5173 --data-dir .gestalt/dev-state --disable-passkey-auth","test:lanes":"node scripts/verify-test-lanes.mjs","test:watch":"vitest","test:vitest":"vitest run --config vitest.unit.config.ts","build:client":"vite build","build:server":"node scripts/build-server.mjs","format:check":"prettier --check .","test:package":"node scripts/smoke-packed-cli.mjs","license:apply":"node scripts/apply-license-headers.mjs","license:check":"node scripts/check-license-headers.mjs","test:coverage":"vitest run --coverage --coverage.reporter=json-summary","test:e2e:shards":"node scripts/verify-browser-shards.mjs","test:auth:stress":"AUTH_CONTENTION_STRESS=1 vitest run --config vitest.auth-stress.config.ts --reporter=default --reporter=json --outputFile=test-results/auth-stress.json","test:e2e:evidence":"PLAYWRIGHT_EVIDENCE=1 playwright test --config playwright.evidence.config.ts","test:e2e:real-auth":"playwright test --config playwright.auth.config.ts","test:e2e:functional":"playwright test --config playwright.functional.config.ts","test:e2e:plan-evidence":"playwright test test/e2e/plan-ui-evidence.spec.ts","test:e2e:plan-lifecycle":"npm run build:client && playwright test test/e2e/plan-lifecycle.spec.ts","test:open-profile-smoke":"tsx scripts/open-profile-smoke.ts"},"version":"0.39.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"89be0e56-304c-48bd-aa33-c961f52e760e"}},"homepage":"https://github.com/dyne/gestalt-mobile#readme","keywords":["codex","gestalt","mobile","development"],"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"_npmVersion":"12.1.0","description":"Mobile-first web relay for durable Codex development sessions","directories":{},"maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","yaml":"^2.9.0","qrcode":"^1.5.4","fastify":"^5.12.3","@fastify/cookie":"11.1.2","@fastify/static":"^10.1.0","@fontsource/syne":"5.2.7","@simplewebauthn/server":"13.3.2","@simplewebauthn/browser":"13.3.0","@fontsource/jetbrains-mono":"5.2.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","jsdom":"^29.1.1","eslint":"^10.7.0","svelte":"^5.56.4","vitest":"^4.1.10","prettier":"^3.9.5","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^24.13.3","svelte-check":"^4.7.2","@types/qrcode":"^1.5.6","@playwright/test":"^1.61.1","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"4.1.10","prettier-plugin-svelte":"^4.1.1","@testing-library/svelte":"^5.4.2","@sveltejs/vite-plugin-svelte":"^7.2.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/gestalt-mobile_0.39.0_1790754085045_0.8065006585372332"}}},"time":{"created":"2026-07-19T12:52:32.120Z","modified":"2026-09-30T07:41:25.606Z","0.1.0":"2026-07-19T12:52:32.336Z","0.1.1":"2026-07-20T21:39:58.244Z","0.2.0":"2026-07-21T15:23:30.705Z","0.3.0":"2026-07-26T16:04:44.447Z","0.3.1":"2026-07-26T16:14:24.005Z","0.4.0":"2026-07-26T21:51:07.276Z","0.4.1":"2026-07-28T19:31:46.129Z","0.5.0":"2026-07-28T21:46:34.772Z","0.6.0":"2026-08-01T15:56:37.896Z","0.6.1":"2026-08-01T17:08:05.054Z","0.7.0":"2026-08-01T19:52:33.700Z","0.8.0":"2026-08-01T22:53:00.580Z","0.9.0":"2026-08-02T17:57:18.018Z","0.10.0":"2026-08-02T18:35:29.965Z","0.11.0":"2026-08-04T13:56:26.203Z","0.12.0":"2026-08-05T22:44:59.442Z","0.13.0":"2026-08-06T14:22:29.525Z","0.14.0":"2026-08-07T08:04:22.617Z","0.15.0":"2026-08-10T14:45:29.061Z","0.16.0":"2026-08-11T19:37:49.633Z","0.16.1":"2026-08-12T14:30:52.279Z","0.16.2":"2026-08-12T18:38:37.349Z","0.16.3":"2026-08-13T01:05:43.650Z","0.16.4":"2026-08-13T11:53:44.801Z","0.17.0":"2026-08-14T19:48:40.912Z","0.17.1":"2026-08-16T00:09:59.784Z","0.17.2":"2026-08-16T00:55:52.246Z","0.17.3":"2026-08-16T18:39:26.778Z","0.18.0":"2026-08-21T11:47:07.687Z","0.18.1":"2026-08-21T14:36:46.889Z","0.18.2":"2026-08-22T01:31:14.276Z","0.18.3":"2026-08-22T08:58:00.648Z","0.18.4":"2026-08-23T07:30:11.662Z","0.18.5":"2026-08-23T08:27:17.555Z","0.18.6":"2026-08-23T16:51:34.248Z","0.18.7":"2026-08-24T03:25:13.197Z","0.19.0":"2026-08-25T15:30:30.551Z","0.20.0":"2026-08-26T07:38:31.372Z","0.20.1":"2026-08-26T20:07:18.201Z","0.21.0":"2026-08-26T21:38:49.361Z","0.22.0":"2026-08-27T09:02:25.701Z","0.22.1":"2026-08-27T19:19:18.801Z","0.23.0":"2026-08-27T20:35:10.941Z","0.23.1":"2026-08-27T21:11:05.491Z","0.24.0":"2026-08-27T21:38:27.541Z","0.25.0":"2026-08-27T22:13:25.248Z","0.25.1":"2026-08-28T09:36:52.388Z","0.25.2":"2026-08-28T10:36:33.628Z","0.25.3":"2026-08-28T19:15:34.983Z","0.25.4":"2026-08-29T08:36:41.524Z","0.25.5":"2026-08-29T17:31:13.268Z","0.25.6":"2026-08-29T20:02:00.351Z","0.26.0":"2026-08-29T22:01:11.655Z","0.26.1":"2026-08-29T22:29:08.383Z","0.27.0":"2026-08-30T06:21:24.735Z","0.27.1":"2026-08-30T07:33:13.452Z","0.28.0":"2026-08-30T07:38:57.394Z","0.29.0":"2026-08-30T22:58:39.140Z","0.30.0":"2026-08-31T12:06:26.539Z","0.30.1":"2026-09-08T09:24:33.929Z","0.30.2":"2026-09-08T14:41:07.948Z","0.30.3":"2026-09-12T13:26:51.192Z","0.31.0":"2026-09-13T11:33:02.502Z","0.32.0":"2026-09-13T13:06:12.905Z","0.32.1":"2026-09-13T18:04:01.879Z","0.33.0":"2026-09-14T12:20:23.994Z","0.34.0":"2026-09-15T05:54:10.715Z","0.35.0":"2026-09-15T07:25:17.821Z","0.35.1":"2026-09-15T17:01:20.968Z","0.35.2":"2026-09-16T07:11:42.809Z","0.35.3":"2026-09-17T11:10:11.752Z","0.35.4":"2026-09-17T11:42:55.827Z","0.35.5":"2026-09-20T07:02:05.861Z","0.36.0":"2026-09-29T10:55:01.213Z","0.36.1":"2026-09-29T13:39:12.142Z","0.36.2":"2026-09-29T15:37:43.722Z","0.37.0":"2026-09-29T18:18:30.945Z","0.37.1":"2026-09-29T18:54:15.284Z","0.38.0":"2026-09-29T19:13:42.894Z","0.39.0":"2026-09-30T07:41:25.180Z"},"bugs":{"url":"https://github.com/dyne/gestalt-mobile/issues"},"author":{"name":"Dyne.org foundation"},"license":"AGPL-3.0-or-later","homepage":"https://github.com/dyne/gestalt-mobile#readme","keywords":["codex","gestalt","mobile","development"],"repository":{"url":"git+https://github.com/dyne/gestalt-mobile.git","type":"git"},"description":"Mobile-first web relay for durable Codex development sessions","maintainers":[{"name":"jaromil","email":"jaromil@dyne.org"}],"readme":"# Gestalt Mobile\n\nMobile-first web relay for [Gestalt](https://dyne.org/gestalt) orchestrated\ndevelopment with durable Codex sessions.\n\n## Prerequisites\n\n- Node.js 24 or newer.\n- The `codex` CLI installed, available on `PATH`, and authenticated. Gestalt's\n  launcher establishes the environment and Mobile starts `codex app-server --stdio`\n  directly within it.\n- Optionally, the `kimi` CLI installed and available on `PATH` to offer Kimi\n  as a second chat provider (see \"Kimi provider\" below).\n\n## Install and run\n\nRun the latest release without a permanent installation:\n\n```sh\nnpx gestalt-mobile --cwd .\nnpx --yes gestalt-mobile@latest --cwd ~/devel --port 3000\n```\n\nFor frequent use, install the executable globally:\n\n```sh\nnpm install --global gestalt-mobile\ngestalt-mobile --cwd .\n```\n\nThe command prints the loopback URL when it is ready. Open that URL in a\nbrowser. Press Ctrl-C, or send SIGINT or SIGTERM, to stop the HTTP server,\nactive Codex subprocesses, and database cleanly.\n\nUse `--icon <path>` to replace the installed PWA application icon with a local\nSVG or PNG. Relative paths resolve from the directory where Mobile is started:\n\n```sh\ngestalt-mobile --cwd . --icon ./branding/project-icon.svg\n```\n\nWithout `--icon`, Mobile keeps its packaged Gestalt icons. SVG icons are\ndeclared scalable; PNG dimensions are read from the file. A square PNG of at\nleast 512×512 is recommended for consistent launcher presentation.\n\n### Run this checkout\n\n`npm run start` builds and runs the current checkout with the same managed\n`CODEX_HOME` and `GESTALT_HOME` defaults as `gestalt mobile`. Explicit overrides\nremain authoritative. The wrapper also prepends the usual user command paths so\nlocally installed `codex` and `kimi` executables remain discoverable. It defaults\nto port 3001 and isolated state under `.gestalt/start-state`, allowing the managed\ninstance to remain on port 3000; pass explicit `--port` or `--data-dir` options to\noverride either default.\n\nFor live development, run `npm run dev` and open `http://localhost:5173`.\nVite proxies API and WebSocket traffic to the source server on port 3001, so a\nmanaged Gestalt Mobile instance can continue using port 3000. Development uses\nrepository-local relay state under `.gestalt/dev-state` and disables passkey\naccess control; it remains loopback-only and does not reuse production state.\n\n## Skill profiles\n\nGlobal profiles live in `~/.gestalt/skill-profiles/<name>.yml` and use version 1 YAML:\n\n```yaml\nversion: 1\nname: focused\nskills:\n  - name: typescript-advanced-types\n    path: /absolute/path/to/SKILL.md\n    enabled: true\n```\n\nUse `gestalt-mobile --skills focused` to apply that profile to every Codex child,\nor `gestalt-mobile --skills list` to inspect saved profiles and their enabled\nskill paths without starting the server. Without `--skills`, a workspace\n`gestalt-skills.yml` is used when present; otherwise Codex-native selection is\npreserved. Explicit profiles take precedence over project defaults, which take\nprecedence over native configuration. Gestalt Mobile never rewrites Codex\nconfiguration or skill files. Exact skill paths remain authoritative, while\npaths inside Codex's versioned plugin cache are rebound to the currently\ndiscovered plugin version when their marketplace, plugin, and skill-relative\npath still match. Skills named `$gestalt:*` are session infrastructure: Mobile\nalways enables and advertises every freshly discovered one, including skills\nadded after a profile was saved. The editor labels them **Always advertised**\nand does not offer a disable control. Refresh discovery and start a new session\nafter upgrading Gestalt Agents; running sessions retain their startup catalog.\n\n## Kimi provider\n\nWhen the `kimi` CLI is found on `PATH`, the Session tab shows a **Provider**\npicker next to the model selector, and the bootstrap catalog advertises Kimi's\navailable models next to the Codex ones. Picking **Kimi** adapts the form:\nCodex-only controls (sandbox modes and approval policy) are hidden, since kimi\nweb governs permissions itself.\n\nA Kimi session runs inside a dedicated `kimi web` process that Gestalt Mobile\nspawns and owns (`kimi web --no-open` on a private loopback port). The session\nworkspace is matched against kimi web's workspace registry; chat turns,\nsteering while a turn is busy, interrupts, approvals, and questions all flow\nthrough kimi web's REST and WebSocket API. Chat parity is exact: once a\nsession starts, `/model` in the composer offers only that session's own\nprovider models — a Codex chat switches between Codex models only, and a Kimi\nchat between Kimi models only. The model cannot be switched across providers\ninside a chat.\n\nSkill profiles apply to Kimi sessions too. Because `kimi web` has no\n`--skills-dir` flag, Gestalt Mobile materializes each skill profile as an\nisolated kimi web state directory (a separate `kimi web` process per active\nprofile, keyed by the profile's skill selection) under\n`~/.codex-gestalt/gestalt-mobile/kimi/`, so profiles with different skills\nenabled never share a runtime. Authentication is shared by symlinking it from\n`~/.kimi-code`; Gestalt never copies or rewrites kimi credentials.\n\nKimi sessions stay on core chat: org-plan/autopilot tooling (the Plan tab,\nautopilot controls) remains Codex-only and is hidden for Kimi sessions.\n\nKimi threads have no CLI resume command, so recent Kimi threads offer **Open**\nbut no **Copy**, and the session card carries a **Kimi** badge instead.\n\n## Themes\n\nThemes are registered once in `src/client/features/theme/theme-registry.ts`. Add a\nstable ID, user-facing label, `colorScheme`, and `logoTone` there; the Appearance\ncontrol is registry-driven. The bootstrap boundary resolves storage before Svelte\nmounts: `light` and `dark` migrate to the Minimal themes, while missing, malformed,\nunknown, retired, and `system` values use the `dyne-org` default. Keep the\n`gestalt-mobile.theme` storage key compatible and never persist a migration until a\nuser makes an explicit choice.\n\nEach registry entry needs a complete semantic-token values file under\n`src/client/features/theme/styles/`, including surfaces, text, borders, focus,\ncontrols, status states, code, typography, motion, and the declared color scheme.\nComponents consume those shared tokens and must not branch on theme IDs. Fonts and\nbranding assets are bundled locally (no runtime CDN); preserve their licenses.\nKeep normal text at 4.5:1 contrast and large text, icons, and control boundaries at\n3:1 or better. Gestalt branding remains unchanged. Dyne.org is intentionally\nlight-only today; a separate light/dark mode axis requires a future product decision.\nSee the authoritative [Dyne.org branding](https://dyne.org/branding/) and\n[Delta style reference](https://delta.dyne.org/899/).\n\nBefore adding a fourth theme, update registry/token unit tests, selector/component\ncoverage, and the Playwright evidence matrix in `test/e2e/theme-evidence.ts`: all\nthemes at 390×844/100% for each representative state, plus the named dense states at\n320×568 and 768×1024 with 200% text. Verify pre-navigation storage, 44px controls,\nfocus/non-color state cues, no visible horizontal overflow, zero unexpected console\nor request errors, and no failed local font/branding request. Dry-run the release\nchecks with `npm run format:check`, `npm run license:check`, `npm run check`,\n`npm test`, `npm run lint`, `npm run build`, `npm run test:e2e`, and\n`npm run test:package`.\n\n## Command-line options\n\n| Option                     | Default              | Purpose                                                            |\n| -------------------------- | -------------------- | ------------------------------------------------------------------ |\n| `--cwd <path>`             | Current directory    | Root containing selectable workspaces                              |\n| `--host <address>`         | `127.0.0.1`          | HTTP listen address                                                |\n| `--port <number>`          | `3000`               | HTTP listen port, from 1 through 65535                             |\n| `--public-origin <origin>` | Loopback Vite origin | Exact browser origin for passkeys; required for non-loopback hosts |\n| `--disable-passkey-auth`   | Off                  | Disable passkey access control and serve every client directly     |\n| `--data-dir <path>`        | XDG state directory  | Directory containing `relay.sqlite`                                |\n| `--icon <path>`            | Gestalt icons        | SVG or PNG used when installing the PWA                            |\n| `--skills <profile>`       |                      | Apply a saved global profile to every session                      |\n| `--skills list`            |                      | List global profiles without starting the server                   |\n| `--help`                   |                      | Print usage without starting the application                       |\n| `--version`                |                      | Print the installed package version                                |\n\n`--cwd` may be relative to the directory where the command is invoked. The\nresolved directory is the selectable root of a recursive workspace tree. Dot\ndirectories are omitted, and traversal stops at each directory containing a\n`.git` marker, so repositories are terminal nodes. Directory symlinks are\nincluded only when their real target stays under the resolved root; repeated\nreal targets and cycles are omitted. Browser requests select nodes by opaque ID,\nwhile real filesystem paths remain server-side.\n\n## Passkey deployment and operating limits\n\nGestalt Mobile has built-in passkey authentication, but does **not** terminate\nTLS. `--public-origin` must be the exact origin the browser uses, including its\nexternal HTTPS scheme and port. `http://localhost` is the development-only\nexception; every other browser origin must be HTTPS. For example, a local\ndeveloper may use `--public-origin http://localhost:3000`, while a deployed\nrelay may listen locally on `127.0.0.1:3000` behind\n`https://relay.example.org` with `--public-origin https://relay.example.org`.\n\nFor mobile or network use, put a trusted HTTPS reverse proxy or tunnel in front\nof the relay. It must preserve the external host and origin, cookies, and\nWebSocket upgrade; do not mount the relay below a rewritten path prefix. Same\nhostname processes may use different ports and share authorization (for example,\ntwo local relay processes behind `https://relay.example.org`), but an RP-ID/\nhostname change is refused once credentials exist because it would strand those\ncredentials. Do not expose `--host 0.0.0.0` before that boundary is in place.\n\nAn empty authorization store is deliberately bootstrap-open: the first verified passkey becomes the owner. Register a device before exposing the service. The\nfinal authorized device cannot be deleted; synced passkeys can represent more\nthan one physical device, and an enrollment QR/link is neither recovery nor\nproof of physical proximity.\n\n`--disable-passkey-auth` restores the unprotected serving behavior from before\npasskey authentication was added. It does not create or consult passkey state,\nand `--public-origin` is not required even for a non-loopback listener. This is\nan explicit unsafe mode: anyone who can reach the HTTP or WebSocket listener has\nfull access to workspaces, Codex sessions, and Git operations. Use it only on a\ntrusted, access-controlled local environment; never expose that mode directly\nto a shared or public network. Startup prints a warning whenever it is active.\n\n## Persistent state\n\nWith `--data-dir <path>`, state is stored in `<path>/relay.sqlite`; a relative\npath is resolved from the command's working directory. Without it, state is\nstored below `$XDG_STATE_HOME/gestalt-mobile/<workspace-hash>/relay.sqlite`, or\n`~/.local/state/gestalt-mobile/<workspace-hash>/relay.sqlite` when\n`XDG_STATE_HOME` is unset. A matching legacy `codex-relay` database is reused\nwhen present.\n\nAuthorization is separate shared state at\n`~/.codex-gestalt/gestalt-mobile/auth.sqlite` (under the selected home). Its\ndirectory is created owner-only (`0700`); treat the database as sensitive and\nkeep it accessible only to the local relay user. Back up `auth.sqlite`\nwith `auth.sqlite-wal` and `auth.sqlite-shm` only after **all** instances are\nstopped, or use SQLite backup tooling.\n\nKimi provider state lives apart from both: gestalt-owned `kimi web` servers\nkeep their isolated per-profile state under\n`~/.codex-gestalt/gestalt-mobile/kimi/`, with authentication symlinked from\n`~/.kimi-code`. Relay SQLite state never holds kimi credentials or chat state.\n\nRecovery after losing every passkey is deliberately local and manual: stop every\ninstance, make a backup, remove only `auth.sqlite` and its `-wal`/`-shm`\nsidecars, restart into visibly open bootstrap mode, and immediately enroll a new\ndevice before exposing the service. This discards authorization, device, and\nsession state only—not workspace relay databases or history—and is dangerous\nwhile the service is exposed. There is intentionally no hosted service,\nfederation, remote administrator, recovery code, credential export,\nauthentication audit analytics, attestation trust policy, or automatic reset.\n\nFor the protocol requirements behind these limits, see the official\n[SimpleWebAuthn server guide](https://simplewebauthn.dev/docs/packages/server),\n[SimpleWebAuthn passkey guidance](https://simplewebauthn.dev/docs/advanced/passkeys/),\n[MDN passkey guide](https://developer.mozilla.org/en-US/docs/Web/Security/Authentication/Passkeys),\nand [W3C WebAuthn RP ID, origin, and challenge requirements](https://www.w3.org/TR/webauthn-3/).\n\n## Sessions\n\nThe Sessions tab uses the recursive filesystem tree to choose the base directory\nfor a new session. Expand or collapse folders with the disclosure buttons, or\nuse Left/Right while a tree item is focused. Up/Down, Home, and End move through\nvisible items; Enter or Space selects the focused directory. The selected path\nremains highlighted when branches are folded or the catalog is refreshed.\n\nAt startup, Gestalt Mobile asks the installed Codex app-server for its available\nmodels, and each running kimi web server for the Kimi catalog. New sessions use\n`gpt-5.6-terra` by default for Codex; choose another discovered model from the\nSession tab before creating the session. The default is defined\ncentrally as `DEFAULT_SESSION_MODEL` in `src/server/features/sessions/application/start-settings.ts`\nso it can be changed in a future configuration surface. The selected model is\nstored with the relay session and shown in managed session entries; in chat,\n`/model` lists only models of the session's own provider.\n\nUse **Open** to relaunch a released, stopped, or attention-required\nrelay session from the browser.\n\nIf an upgrade has removed the Codex rollout for a saved session, **Open** keeps\nthe relay session and its settings but creates and binds a replacement Codex\nthread. The client shows that the earlier Codex history is unavailable; other\nrestore failures leave the saved thread unchanged so Open can be retried.\n\nThe relay keeps SQLite state under the supplied data directory, or\nunder the root-hashed XDG state directory when `--data-dir` is\nomitted. Active durable threads are resumed after a relay restart. A\nfailed child process is retried with bounded backoff before the\nsession is marked as requiring attention.\n\n## Mobile recovery\n\nThe browser stores the selected session, its replay cursor, and per-session\ncomposer drafts. On a dropped connection it replays retained events; if the\nserver has pruned the gap, it reloads canonical Codex thread history.\n\n## Git\n\nThe Git tab has its own filesystem-tree selection, independent from the base\ndirectory selected in Sessions. Selecting a repository shows its branch\ndivergence, dirty counts, recent commits, and repository actions even when no\nrelay session exists. Selecting an ordinary directory makes it the destination\nfor Clone; repositories cannot be clone destinations. After a successful clone,\nthe catalog refreshes and selects the new repository without changing the\nSessions selection.\n\nPull uses `git pull --rebase`. Push is available only for a branch that has an\nupstream, is ahead, and is not behind; it never creates an upstream or\nforce-pushes.\n\nOperation results appear as non-modal notifications. Errors are announced\nassertively, successful operations politely, and each notification can be\ndismissed with its keyboard-accessible close button.\n\n## Versions and upgrades\n\nInspect the executable and registry versions with:\n\n```sh\ngestalt-mobile --version\nnpm view gestalt-mobile version\n```\n\n`npx --yes gestalt-mobile@latest` fetches the current release according to npm's\ncache rules. Upgrade a global installation with:\n\n```sh\nnpm install --global gestalt-mobile@latest\n```\n\nIf startup reports an incompatible Codex protocol, upgrade Gestalt Mobile or\ninstall the Codex CLI version supported by that release. If session startup\nfails, first confirm `codex --version` works in the same shell and that Codex is\nauthenticated. Use `gestalt-mobile --help` to diagnose rejected options without\nstarting the server.\n\nFrom a source checkout, maintainers can exercise the installed isolated\n`gestalt` profile without touching their normal relay data:\n\n```sh\nnpm run test:open-profile-smoke\n```\n\nThe opt-in smoke derives the selected profile's CLI version, creates a\ntemporary workspace and relay database, then checks normal Open and\nmissing-rollout replacement. It creates one bounded harmless turn to establish\ndurable history, deletes only the exact smoke-created Codex threads through the\napp-server afterwards, and always removes its temporary state. It reports\n`SKIP` when the isolated profile is unavailable.\n\n## Run from source\n\n```sh\nnpm ci\nnpm run build\nnpm start -- --cwd <relay-root>\n```\n\n## Development\n\nRun `npm run check`, `npm test`, `npm run lint`, and `npm run build`.\n\n### Test lanes\n\nThe aggregate commands remain the default required checks: `npm test` runs every\nVitest test and `npm run test:e2e` runs every browser test except the isolated\nreal-auth journey. The additive lanes make ownership inspectable without changing\nthose defaults:\n\n- `npm run test:vitest` — all Vitest tests.\n- `npm run test:coverage` — all Vitest tests with a V8 JSON summary at\n  `coverage/vitest/coverage-summary.json` (the generated directory is ignored).\n- `npm run test:e2e:functional` — browser-functional specs excluding the exhaustive\n  visual-evidence files and real-auth journey.\n- `npm run test:e2e:evidence` — the exhaustive visual/responsive evidence files.\n- `npm run test:auth:stress` — the existing multi-process authorization contention\n  repetitions.\n- `npm run test:e2e:real-auth` — the serial real SimpleWebAuthn browser journey.\n\nRun `npm run test:lanes` to list every lane and fail if a current Vitest or\nPlaywright spec is unassigned. The evidence files can overlap the aggregate\nbrowser command while lane separation is introduced; no assertions are removed.\n\nMaintainers should follow the [npm release operations guide](docs/releasing.md)\nwhen configuring GitHub, rotating credentials, or recovering a partial release.\n\n## Copyright and license\n\nCopyright (C) 2026 Dyne.org foundation\nDesigned by Denis Roio <jaromil@dyne.org>\n\nSPDX-License-Identifier: AGPL-3.0-or-later\n\nGestalt Mobile is distributed under the GNU Affero General Public License\nversion 3 or, at your option, any later version. See [LICENSE](LICENSE).\n","readmeFilename":"README.md"}