{"_id":"@portel/photon","_rev":"74-ffeb0a7ce5cd723fbf919622b8c493a5","name":"@portel/photon","dist-tags":{"latest":"1.38.1"},"versions":{"1.0.0":{"name":"@portel/photon","version":"1.0.0","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.0.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"dist/cli.js"},"dist":{"shasum":"0ffee5a5ceac7118b77d83b4e5c3ba0aa40c5b30","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.0.0.tgz","fileCount":76,"integrity":"sha512-D3aMjDhfNTF7jTEazxR4XR9g9N7G0buw0LUx93Q/OTwqJEn8p/lIbD75+ZkXpD/xFqcGVFfaUkVOvDwZjbLusA==","signatures":[{"sig":"MEYCIQCQ+w6LOBlpkSXrCYMvaSl7i7cvMRw6tzkE5CUwG6nmGQIhAO6q6yk8ID/t0K1ekGSgcZqP28b+zxJEE1ztUb2iWvo/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":456575},"main":"dist/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"3afb5a3b32f31572f186e0d871f4b1513ef6a824","scripts":{"dev":"tsc --watch","test":"npm run test:all","build":"tsc","release":"release-it","test:all":"npm run build && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:readme","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","release:dry":"release-it --dry-run","test:github":"npm run build && npx tsx tests/github-issues.test.ts","test:loader":"npx tsx tests/loader.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","prepublishOnly":"npm run build","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.5.1","description":"You focus on the business logic. We'll enable the rest. Build MCP servers in a single TypeScript file.","directories":{},"_nodeVersion":"24.7.0","dependencies":{"esbuild":"^0.24.2","chokidar":"^4.0.3","commander":"^12.1.0","typescript":"^5.0.0","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","clinic":"^13.0.0","autocannon":"^8.0.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.0.0_1762626554613_0.34069105530652743","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@portel/photon","version":"1.1.0","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.1.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"dist/cli.js"},"dist":{"shasum":"81ef3b1f0e8c7ca7927ba20d8573299a9568e132","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.1.0.tgz","fileCount":80,"integrity":"sha512-vhtdgcBjOpLcfEhqQRzH90c1fPR2jCPW5gRyqtq57SSCM3ItRt0wqE/7Ow1cvZZ3j4noIeWcy0HovHU7QX+KAg==","signatures":[{"sig":"MEUCIQCYEB8FevrfmtvzEGTQv/aYK2eRKyfSgU2oQA7POy7qswIgQ3+GTbgT+CIwvogM9YQQfCg92+aSz7zijg6tJOhM06s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":485935},"main":"dist/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"96a195dd21d57539d9a51116d2de93b9744c3518","scripts":{"dev":"tsc --watch","test":"npm run test:all","build":"tsc","release":"release-it","test:all":"npm run build && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:readme","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","release:dry":"release-it --dry-run","test:github":"npm run build && npx tsx tests/github-issues.test.ts","test:loader":"npx tsx tests/loader.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","prepublishOnly":"npm run build","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.5.1","description":"You focus on the business logic. We'll enable the rest. Build MCP servers in a single TypeScript file.","directories":{},"_nodeVersion":"24.7.0","dependencies":{"esbuild":"^0.24.2","chokidar":"^4.0.3","commander":"^12.1.0","typescript":"^5.0.0","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","clinic":"^13.0.0","autocannon":"^8.0.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.1.0_1762708937095_0.6506592235116657","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@portel/photon","version":"1.2.0","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.2.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"dist/cli.js"},"dist":{"shasum":"ef2d75d60bc3f8b7f669481e3a90bb24f8a094c1","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.2.0.tgz","fileCount":80,"integrity":"sha512-GAaA7egAq12nTPmXRuGKYPtlk2RaICTxvuiMyFl6P1npG6ZGlCQSXISvQmHqTPovd9ITzkqWuKnoaKKZ2LBM9g==","signatures":[{"sig":"MEUCIEy585TaALMiH8nyH9F1DtvNnfh2dyrDB8f2sVu6XetFAiEA8oAg/mk8N/tH6ulJuVeLEQ9HG26V9Kg0jnaGEDWucUo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":492192},"main":"dist/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"403c323bceb82a66dab94787ec226061e0513b70","scripts":{"dev":"tsc --watch","test":"npm run test:all","build":"tsc","release":"release-it","test:all":"npm run build && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:readme","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","release:dry":"release-it --dry-run","test:github":"npm run build && npx tsx tests/github-issues.test.ts","test:loader":"npx tsx tests/loader.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","prepublishOnly":"npm run build","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.5.1","description":"You focus on the business logic. We'll enable the rest. Build MCP servers in a single TypeScript file.","directories":{},"_nodeVersion":"24.7.0","dependencies":{"esbuild":"^0.24.2","chokidar":"^4.0.3","commander":"^12.1.0","typescript":"^5.0.0","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","clinic":"^13.0.0","autocannon":"^8.0.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.2.0_1762834684860_0.8978672049960321","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@portel/photon","version":"1.3.0","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.3.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"dist/cli.js"},"dist":{"shasum":"17905a5a392e06424c8848a15346d7e35065c137","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.3.0.tgz","fileCount":108,"integrity":"sha512-cD8qW0K9AEfygO9Z2ggjHOlLmcPapr+KjKuWG1rtjB1LFLpYtzNFLHBtql41saoI5oEd+hKSuMiV7x7ka6+skw==","signatures":[{"sig":"MEUCIH+C/M52sU/ZQ7Y+GianL28VuDcN6KCn+L8Epv1ddRWLAiEAkdre0QMx6VhxgAf1TNuLE2kNk2tJX+DjfWdD63FvZ+g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":651336},"main":"dist/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"3557c10569bbef94f523cfef69bacd4553a9cbef","scripts":{"dev":"tsc --watch","test":"npm run test:all","build":"tsc","release":"release-it","test:all":"npm run build && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:cli && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","release:dry":"release-it --dry-run","test:github":"npm run build && npx tsx tests/github-issues.test.ts","test:loader":"npx tsx tests/loader.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","prepublishOnly":"npm run build","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.5.1","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"24.7.0","dependencies":{"esbuild":"^0.27.0","chokidar":"^4.0.3","commander":"^12.1.0","typescript":"^5.0.0","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","clinic":"^13.0.0","autocannon":"^8.0.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.3.0_1763561023709_0.09690838437403793","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@portel/photon","version":"1.4.0","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.4.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"dist/cli.js"},"dist":{"shasum":"5962c5cb90cbc031fe5d15a5f2257719bedc8ed3","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.4.0.tgz","fileCount":116,"integrity":"sha512-jbPfYo3SVEc2bT3UM8+muUcpjQQ7Vx9WNpmiHHAQFddZZKk0tmekRqxhwOIcXLxspyZQXZpr8xOJpQIsoUm8hg==","signatures":[{"sig":"MEYCIQCuR9L7fHarOME/NXILsnzTSBJ5XQOJ7pEuBGXKMbgXtAIhAPTwWtbr8lSzk9xfhUqICt1j/wnowo5+X+Tfv85raYjW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":743080},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"e963c462464db01a8a4423667959431a5d39d869","scripts":{"dev":"tsc --watch","test":"npm run test:all","build":"tsc","release":"release-it","test:all":"npm run build && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:cli && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","release:dry":"release-it --dry-run","test:github":"npm run build && npx tsx tests/github-issues.test.ts","test:loader":"npx tsx tests/loader.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","prepublishOnly":"npm run build","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.6.2","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"esbuild":"^0.27.0","chokidar":"^4.0.3","commander":"^12.1.0","typescript":"^5.0.0","cli-highlight":"^2.1.11","@portel/photon-core":"^1.0.1","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","clinic":"^13.0.0","autocannon":"^8.0.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.4.0_1764024341165_0.2206672385688102","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"@portel/photon","version":"1.4.1","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.4.1","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"dist/cli.js"},"dist":{"shasum":"d7fbbcebc96d9189bcee802ecfad5f9236656ca2","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.4.1.tgz","fileCount":116,"integrity":"sha512-+tBJvxQFPuqI/D1NZu/HAG5DfFx8C7qTFU44u4/nXZZyS7pjITvUQagUHdW6CHxZT5dim4F0nFwZpbrp3KBy4A==","signatures":[{"sig":"MEUCIByY7L2U+rLPxM7Qyx0JCfkwrsoPFaW7Csc6lrc+oO1zAiEAmeNEcEMLTZOLZYVQgX5xcY0/pv3silQIyRoHy2gk++E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":757013},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"56391559d317ec8a1257ca98a05bcee3dcdd580b","scripts":{"dev":"tsc --watch","test":"npm run test:all","build":"tsc","release":"release-it","test:all":"npm run build && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:cli && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","release:dry":"release-it --dry-run","test:github":"npm run build && npx tsx tests/github-issues.test.ts","test:loader":"npx tsx tests/loader.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","prepublishOnly":"npm run build","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.6.2","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"esbuild":"^0.27.0","chokidar":"^4.0.3","commander":"^12.1.0","typescript":"^5.0.0","cli-highlight":"^2.1.11","@portel/photon-core":"^1.1.0","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","clinic":"^13.0.0","autocannon":"^8.0.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.4.1_1767027329143_0.8481172412124849","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"@portel/photon","version":"1.5.1","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.5.1","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"dist/cli.js"},"dist":{"shasum":"8a2752c19ed1897f266bf0ea7d11735306d29697","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.5.1.tgz","fileCount":368,"integrity":"sha512-K1Cvo/3zXHBjAFbr1p5NTAP6cju/3jrHq7RAp+Et8PmDUY8xxGYacbWRP8qaMp5HO70m/YrTzMxBdWiUcxcvdg==","signatures":[{"sig":"MEUCIQDVDHCcOTi3QO/so4uNvvQePTBZRzHiNz2v/d4apQ4AXAIgR+bTEp+A4Pax3zUHOKnztAUBSeeaIux6VKaehwn+kCM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3629661},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"1ec2dd1db6d31037ae2b5bbeaf85384c5616c49b","scripts":{"dev":"tsc --watch","lint":"eslint src/","test":"npm run test:all","build":"tsc && cp -r src/photons dist/","format":"prettier --write \"src/**/*.ts\"","release":"release-it","dev:beam":"npm run build:beam && (tsx scripts/build-beam.ts --watch & tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:performance && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-tools && npm run test:daemon-buffer && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:e2e":"npm run build && npx playwright test","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/performance.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/daemon-tools.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"tsx scripts/build-beam.ts","watch:beam":"tsx scripts/build-beam.ts --watch","release:dry":"release-it --dry-run","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.test.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","format:check":"prettier --check \"src/**/*.ts\"","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found. Update to npm version before publishing.'); process.exit(1); }\" && npm run build","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:performance":"npx tsx tests/performance.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:daemon-tools":"npx tsx tests/daemon-tools.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.6.2","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"ws":"^8.19.0","lit":"^3.3.2","esbuild":"^0.27.0","chokidar":"^4.0.3","commander":"^12.1.0","typescript":"^5.0.0","cli-highlight":"^2.1.11","@portel/photon-core":"^2.3.0","@modelcontextprotocol/sdk":"^1.25.2"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^10.1.3","tsx":"^4.20.6","clinic":"^13.0.0","eslint":"^9.39.2","prettier":"^3.8.0","@types/ws":"^8.18.1","@eslint/js":"^9.39.2","autocannon":"^8.0.0","playwright":"^1.57.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@playwright/test":"^1.58.0","eslint-config-prettier":"^10.1.8","@typescript-eslint/parser":"^8.53.0","@typescript-eslint/eslint-plugin":"^8.53.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.5.1_1770001247131_0.9810954686757802","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@portel/photon","version":"1.6.0","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.6.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"dist/cli.js"},"dist":{"shasum":"220f9ad823b69b2200104c3b4e5566ff1bbe23b4","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.6.0.tgz","fileCount":384,"integrity":"sha512-MF9jVrNV9mRCito5sVSqb2YgdQIbMmojeTS1QnkGmUtUmfs5u7gL/HAH4SgsKsd5SA2Z5qZYSxbk+PIoS/f15w==","signatures":[{"sig":"MEYCIQCYNpEcyBxzCWJkp0XDttQf6toQmj01L1NNeh7XDuCJEwIhALiAqr+vTKIYqpdQZ/ba4LTujxnKRFemIMAbKWMiExMt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9386124},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"9281140a37c4e8afb61c48c1399df247070f55f8","scripts":{"dev":"tsc --watch","lint":"eslint src/","test":"npm run test:all","build":"tsc && cp -r src/photons dist/ && chmod +x dist/cli.js","format":"prettier --write \"src/**/*.ts\"","release":"release-it","dev:beam":"npm run build:beam && (tsx scripts/build-beam.ts --watch & tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:performance && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-tools && npm run test:daemon-buffer && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:e2e":"npm run build && npx playwright test","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/performance.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/daemon-tools.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"tsx scripts/build-beam.ts","watch:beam":"tsx scripts/build-beam.ts --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.test.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","format:check":"prettier --check \"src/**/*.ts\"","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found. Update to npm version before publishing.'); process.exit(1); }\" && npm run build && npm run build:beam","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:performance":"npx tsx tests/performance.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:daemon-tools":"npx tsx tests/daemon-tools.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.6.2","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"chokidar":"^4.0.3","commander":"^12.1.0","typescript":"^5.0.0","cli-highlight":"^2.1.11","@portel/photon-core":"^2.6.0","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^10.1.3","lit":"^3.3.2","tsx":"^4.20.6","clinic":"^13.0.0","eslint":"^9.39.2","esbuild":"^0.27.0","prettier":"^3.8.0","@eslint/js":"^9.39.2","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.53.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.53.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.6.0_1770398556329_0.8097521163129917","host":"s3://npm-registry-packages-npm-production"}},"1.6.1":{"name":"@portel/photon","version":"1.6.1","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.6.1","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"dist/cli.js"},"dist":{"shasum":"69cecf63351fc9d253da3d56a936c794024b6295","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.6.1.tgz","fileCount":384,"integrity":"sha512-0vYmOLOx4qPjJ5CeyTDhTp+MFYpoPvoJelByZ90dtiOlYwTy3fBtdWIHIdJ9hI7FTm+/NP11j78AwW1wlDZukQ==","signatures":[{"sig":"MEQCIDhdQu/e9OOsbF2ktCjQm1bUfeofjxILvZcXAPYH/fuIAiBnTELSZgCdLRE4q12mvvM8j91XATfGdmG4l+5qIjfLGA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9382665},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"034950272f78111974e32c26914f531883b7e556","scripts":{"dev":"tsc --watch","lint":"eslint src/","test":"npm run test:all","build":"tsc && cp -r src/photons dist/ && chmod +x dist/cli.js","format":"prettier --write \"src/**/*.ts\"","release":"release-it","dev:beam":"npm run build:beam && (tsx scripts/build-beam.ts --watch & tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:performance && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-tools && npm run test:daemon-buffer && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:e2e":"npm run build && npx playwright test","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/performance.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/daemon-tools.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"tsx scripts/build-beam.ts","watch:beam":"tsx scripts/build-beam.ts --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.test.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","format:check":"prettier --check \"src/**/*.ts\"","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found. Update to npm version before publishing.'); process.exit(1); }\" && npm run build && npm run build:beam","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:performance":"npx tsx tests/performance.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:daemon-tools":"npx tsx tests/daemon-tools.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.6.2","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"esbuild":"^0.27.0","chokidar":"^4.0.3","commander":"^12.1.0","typescript":"^5.0.0","cli-highlight":"^2.1.11","@portel/photon-core":"^2.6.0","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^10.1.3","lit":"^3.3.2","tsx":"^4.20.6","clinic":"^13.0.0","eslint":"^9.39.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.53.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.53.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.6.1_1770399442815_0.7050044199836194","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"@portel/photon","version":"1.7.0","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.7.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"dist/cli.js"},"dist":{"shasum":"dc3a604ac0a4da96d24c6ddabfb5ced2e4c85fbf","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.7.0.tgz","fileCount":388,"integrity":"sha512-OD5g8/D5Wm2wlbOR68FYf1X3+RhkpulrKBDnPZDOS5U175Y6vZZ2nGum2L25/1bnYyOzGlcuHqrRffBgq6jlPQ==","signatures":[{"sig":"MEYCIQDso1Ut9684n2l/GWh4rr5s8uxYr9vupNe0XPwM8Eml7AIhANxU1DCE9kIAaZMZtPxT2QG8rAkkWOcOtUIdDmp0qZ3w","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9437677},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f46dc874c8aff973de72e59b30717cb27b428a2a","scripts":{"dev":"tsc --watch","lint":"eslint src/","test":"npm run test:all","build":"tsc && cp -r src/photons dist/ && chmod +x dist/cli.js","format":"prettier --write \"src/**/*.ts\"","release":"release-it","dev:beam":"npm run build:beam && (tsx scripts/build-beam.ts --watch & tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:performance && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-tools && npm run test:daemon-buffer && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:e2e":"npm run build && npx playwright test","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/performance.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/daemon-tools.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"tsx scripts/build-beam.ts","watch:beam":"tsx scripts/build-beam.ts --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.test.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","format:check":"prettier --check \"src/**/*.ts\"","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found. Update to npm version before publishing.'); process.exit(1); }\" && npm run build && npm run build:beam","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:performance":"npx tsx tests/performance.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:daemon-tools":"npx tsx tests/daemon-tools.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.6.2","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"esbuild":"^0.27.0","chokidar":"^4.0.3","commander":"^12.1.0","typescript":"^5.0.0","cli-highlight":"^2.1.11","@portel/photon-core":"^2.7.0","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^10.1.3","lit":"^3.3.2","tsx":"^4.20.6","clinic":"^13.0.0","eslint":"^9.39.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.53.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.53.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.7.0_1770568250417_0.4975698850835384","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"@portel/photon","version":"1.8.0","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.8.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"dist/cli.js"},"dist":{"shasum":"e5e90aa52cc1fc60f261a84398397b92e577d110","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.8.0.tgz","fileCount":396,"integrity":"sha512-Ilkll3Jcuh3EVQN/CHwRU2d+BxsG2SgdKnwu2+jIFFtmyS8+JjhjKw+9wr8At0ApDgnkor60fXKeLwbqni6mVQ==","signatures":[{"sig":"MEQCIHMHSa8mi/2Y6xEiVI+xO7oSIWiODAy800iBQLvP+/VwAiBdJZfa9BvpvaMhe5HDxyjpCtblmYuHxBvWp92kXeICVA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11487037},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"8ab430c064bff2187e54283544bbb9db7954bccd","scripts":{"dev":"tsc --watch","lint":"eslint src/","test":"npm run test:all","build":"tsc && cp -r src/photons dist/ && chmod +x dist/cli.js","format":"prettier --write \"src/**/*.ts\"","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & tsx scripts/build-beam.ts --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:performance && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-tools && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:e2e":"npm run build && npx playwright test","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/performance.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/daemon-tools.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"tsx scripts/build-beam.ts","watch:beam":"tsx scripts/build-beam.ts --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.test.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","format:check":"prettier --check \"src/**/*.ts\"","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found. Update to npm version before publishing.'); process.exit(1); }\" && npm run build && npm run build:beam","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:performance":"npx tsx tests/performance.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:daemon-tools":"npx tsx tests/daemon-tools.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.6.2","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","@portel/cli":"^1.0.2","cli-highlight":"^2.1.11","@portel/photon-core":"^2.8.3","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^10.1.3","lit":"^3.3.2","tsx":"^4.20.6","clinic":"^13.0.0","eslint":"^9.39.2","esbuild":"^0.27.0","prettier":"^3.8.0","@eslint/js":"^9.39.2","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.53.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.53.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.8.0_1771245374571_0.8837461514642109","host":"s3://npm-registry-packages-npm-production"}},"1.8.1":{"name":"@portel/photon","version":"1.8.1","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.8.1","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"dist/cli.js"},"dist":{"shasum":"ce9b9b212898866bad35fc57be37292996d79eae","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.8.1.tgz","fileCount":396,"integrity":"sha512-Ef9yPphwUQRd7bCjMknCRCoObwcBzCqrsak4nrR7bhOGSFP1DDA22hlBQtOyskVnXvtGvN8U1tdenSOmvM6/0g==","signatures":[{"sig":"MEQCICPx0J9OI80geY4e3wdbcuguuPJr18x/6dJz66NSbhmyAiAovp5bkAYIdzivog4SGjq558Hcjh5UsKgiGIV7E41qVA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11487037},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"2b57589755455c566ffa5b36c4ac9f9d00b7a997","scripts":{"dev":"tsc --watch","lint":"eslint src/","test":"npm run test:all","build":"tsc && cp -r src/photons dist/ && chmod +x dist/cli.js","format":"prettier --write \"src/**/*.ts\"","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & tsx scripts/build-beam.ts --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:performance && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-tools && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:e2e":"npm run build && npx playwright test","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/performance.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/daemon-tools.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"tsx scripts/build-beam.ts","watch:beam":"tsx scripts/build-beam.ts --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.test.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","format:check":"prettier --check \"src/**/*.ts\"","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found. Update to npm version before publishing.'); process.exit(1); }\" && npm run build && npm run build:beam","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:performance":"npx tsx tests/performance.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:daemon-tools":"npx tsx tests/daemon-tools.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.6.2","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"esbuild":"^0.27.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","@portel/cli":"^1.0.2","cli-highlight":"^2.1.11","@portel/photon-core":"^2.8.3","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^10.1.3","lit":"^3.3.2","tsx":"^4.20.6","clinic":"^13.0.0","eslint":"^9.39.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.53.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.53.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.8.1_1771247106286_0.9640493276066369","host":"s3://npm-registry-packages-npm-production"}},"1.8.2":{"name":"@portel/photon","version":"1.8.2","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.8.2","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"dist/cli.js"},"dist":{"shasum":"a92569a4d943bed0363eeea2835002819c468440","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.8.2.tgz","fileCount":396,"integrity":"sha512-vzf8csYR9IxQpTRA+JoTwlZipT+59LNyFHkvmqx4anAu/MxBQ9hCoHlDChTp5GYmMBZJgZSBG/35HsYTFnmWRQ==","signatures":[{"sig":"MEUCIAcoYcEoYS7CUX39QhBTooAkZy2ym1DCx1d3V7ljZzM1AiEAomj+NLAr52tMhvMPsxUgOzcGgfZtljpLqxcH6t5klUc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11494599},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"df62376b435c6a3aa0084c4fef387314b2e5940f","scripts":{"dev":"tsc --watch","lint":"eslint src/","test":"npm run test:all","build":"tsc && cp -r src/photons dist/ && chmod +x dist/cli.js","format":"prettier --write \"src/**/*.ts\"","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & tsx scripts/build-beam.ts --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:performance && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-tools && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:e2e":"npm run build && npx playwright test","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/performance.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/daemon-tools.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"tsx scripts/build-beam.ts","watch:beam":"tsx scripts/build-beam.ts --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.test.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","format:check":"prettier --check \"src/**/*.ts\"","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found. Update to npm version before publishing.'); process.exit(1); }\" && npm run build && npm run build:beam","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:performance":"npx tsx tests/performance.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:daemon-tools":"npx tsx tests/daemon-tools.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.6.2","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"esbuild":"^0.27.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","@portel/cli":"^1.0.2","cli-highlight":"^2.1.11","@portel/photon-core":"^2.8.3","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^10.1.3","lit":"^3.3.2","tsx":"^4.20.6","clinic":"^13.0.0","eslint":"^9.39.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.53.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.53.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.8.2_1771296505079_0.11975345570508589","host":"s3://npm-registry-packages-npm-production"}},"1.8.3":{"name":"@portel/photon","version":"1.8.3","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.8.3","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"dist/cli.js"},"dist":{"shasum":"b04d008e0d7faf66a7a2c2614e814a1e78458791","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.8.3.tgz","fileCount":396,"integrity":"sha512-cCZIh814YkNre/xbtcOljHX/XKOnPy0ZRxn8bEPkDdAVDt9YHJEy4HoRXURrbZOdNZFsTdbosWaz73c3mTzGGg==","signatures":[{"sig":"MEYCIQDwZFpKRQbTpuHay/ihh1YveWb6XE8hjBKFOMVBHc237gIhAPA5bC6BNgdEv55RxWFus0CY+pnmRj/I6amK/QxncnGo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11498102},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"04d11f18f051fb750ae2f7626dad0bf0dd3f8b01","scripts":{"dev":"tsc --watch","lint":"eslint src/","test":"npm run test:all","build":"tsc && cp -r src/photons dist/ && chmod +x dist/cli.js","format":"prettier --write \"src/**/*.ts\"","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & tsx scripts/build-beam.ts --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:performance && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-tools && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:e2e":"npm run build && npx playwright test","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/performance.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/daemon-tools.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"tsx scripts/build-beam.ts","watch:beam":"tsx scripts/build-beam.ts --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.test.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","format:check":"prettier --check \"src/**/*.ts\"","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found. Update to npm version before publishing.'); process.exit(1); }\" && npm run build && npm run build:beam","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:performance":"npx tsx tests/performance.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:daemon-tools":"npx tsx tests/daemon-tools.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.6.2","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"esbuild":"^0.27.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","@portel/cli":"^1.0.2","cli-highlight":"^2.1.11","@portel/photon-core":"^2.8.3","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^10.1.3","lit":"^3.3.2","tsx":"^4.20.6","clinic":"^13.0.0","eslint":"^9.39.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.53.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.53.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.8.3_1771299646815_0.726755609674195","host":"s3://npm-registry-packages-npm-production"}},"1.8.4":{"name":"@portel/photon","version":"1.8.4","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.8.4","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"dist/cli.js"},"dist":{"shasum":"323c5b6ac43efe77f85034135d60d8d3309b19aa","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.8.4.tgz","fileCount":396,"integrity":"sha512-Ly+ggXaI8sbf3VrxOdRWOvVwopx4T3Ns/cRHfclBn69i8IR/lDJWuhRpUDrM+E+MLSsN9kJiLt7yFyXHAmjjgw==","signatures":[{"sig":"MEQCIDfdq02QDT6HSKFbbO00rmJxKUnXM0dHOTH9zHkhE20JAiBTJVekWqFymlFsFKcPBDLPDWTuSyJbheAS6tJFFPX8nA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11505995},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"dfa61e576bdd76c01b6773002f12b759102568ac","scripts":{"dev":"tsc --watch","lint":"eslint src/","test":"npm run test:all","build":"tsc && cp -r src/photons dist/ && chmod +x dist/cli.js","format":"prettier --write \"src/**/*.ts\"","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & tsx scripts/build-beam.ts --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:performance && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-tools && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:e2e":"npm run build && npx playwright test","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/performance.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/daemon-tools.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"tsx scripts/build-beam.ts","watch:beam":"tsx scripts/build-beam.ts --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.test.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","format:check":"prettier --check \"src/**/*.ts\"","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found. Update to npm version before publishing.'); process.exit(1); }\" && npm run build && npm run build:beam","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:performance":"npx tsx tests/performance.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:daemon-tools":"npx tsx tests/daemon-tools.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.6.2","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"esbuild":"^0.27.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","@portel/cli":"^1.0.2","cli-highlight":"^2.1.11","@portel/photon-core":"^2.8.3","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^10.1.3","lit":"^3.3.2","tsx":"^4.20.6","clinic":"^13.0.0","eslint":"^9.39.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.53.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.53.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.8.4_1771320180590_0.047737155360842554","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"@portel/photon","version":"1.9.0","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.9.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"dist/cli.js"},"dist":{"shasum":"99d1fd550449d63f1d86e6dd99f85be8a8f67adb","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.9.0.tgz","fileCount":396,"integrity":"sha512-zIH3KALOkMsBublWFUWx9Iu7FaL1lJjDSllTJA6fWYxIIdsiFPBH+IhG//Nk5mpudjyP4iqQTRox2WY5Ruen0w==","signatures":[{"sig":"MEUCIANwhdfSolVC2uNYNrG6/E4peupTXznfSXATCIgy8DLcAiEAsOLOgu+QclSYHu24h2vPsBYaEZn43MiRWPkNg2eA78g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11557468},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f9c74fcb9c8b738b25ed71e774dd9de06c2c4978","scripts":{"dev":"tsc --watch","lint":"eslint src/","test":"npm run test:all","build":"tsc && cp -r src/photons dist/ && chmod +x dist/cli.js","format":"prettier --write \"src/**/*.ts\"","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & tsx scripts/build-beam.ts --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:performance && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-tools && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:e2e":"npm run build && npx playwright test","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/performance.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/daemon-tools.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"tsx scripts/build-beam.ts","watch:beam":"tsx scripts/build-beam.ts --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.test.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","format:check":"prettier --check \"src/**/*.ts\"","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found. Update to npm version before publishing.'); process.exit(1); }\" && npm run build && npm run build:beam","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:performance":"npx tsx tests/performance.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:daemon-tools":"npx tsx tests/daemon-tools.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.6.2","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"esbuild":"^0.27.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","@portel/cli":"^1.0.2","cli-highlight":"^2.1.11","@portel/photon-core":"^2.8.4","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^10.1.3","lit":"^3.3.2","tsx":"^4.20.6","clinic":"^13.0.0","eslint":"^9.39.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.53.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.53.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.9.0_1771343522152_0.5298959477087188","host":"s3://npm-registry-packages-npm-production"}},"1.10.0":{"name":"@portel/photon","version":"1.10.0","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.10.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"dist/cli.js"},"dist":{"shasum":"fc14eab7c610cbd5ee1dc101da60b4b986beff3a","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.10.0.tgz","fileCount":528,"integrity":"sha512-moqvcErGGlPuXP3JVJU9uyEn7tSOZsU7RdbT3aoGhj4DYe6i6AYQVKQzQ8v059P8Xi9JKZEnVWYmjBGfZh8vVw==","signatures":[{"sig":"MEUCIEXN09J5sDbvZ7239xPKt1WRq6ZOAo49Tv47HzdXNsRWAiEA9hR2W7lA3YQpXtEXBuxYoV29ZmNTsRS4XbDRqmLvI2k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12352148},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"cddb8ecd856b39323b8ba6af5db3968027b21929","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"npm run test:all","build":"npm run lint -- --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && tsx scripts/build-beam.ts","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & tsx scripts/build-beam.ts --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:e2e":"npm run build && npx playwright test","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"tsx scripts/build-beam.ts","watch:beam":"tsx scripts/build-beam.ts --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.test.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","format:check":"prettier --check \"src/**/*.ts\"","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.9.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.6.1","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","esbuild":"^0.27.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","cli-table3":"^0.6.5","cli-highlight":"^2.1.11","@portel/photon-core":"^2.9.3","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.10.0_1772510948061_0.32572751118382093","host":"s3://npm-registry-packages-npm-production"}},"1.11.0":{"name":"@portel/photon","version":"1.11.0","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.11.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"dist/cli.js"},"dist":{"shasum":"c78314bfb7823dd991bbd32ff249a442441376fc","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.11.0.tgz","fileCount":528,"integrity":"sha512-Lk2Y960Ah5g4mNYBkSq0Zy34hxTJMQA8ME6lco+Qab44t810jhjBCYaIWvuJ2JxxIRw2aCTNdTKJXh37e34fWQ==","signatures":[{"sig":"MEUCIQCIDruBbHqn4gdl0MwfhgQGARbYy3aS3xecVRIcbNFz8AIgN8pkfH9+ipR7C3pNpeFtlSQHQSkDb27gc0AoNTabJMQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12359981},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"8337a967d8a0f81ae4891f97d8457f4d6dbe5dda","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"npm run test:all","build":"npm run lint -- --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && tsx scripts/build-beam.ts","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & tsx scripts/build-beam.ts --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:e2e":"npm run build && npx playwright test","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"tsx scripts/build-beam.ts","watch:beam":"tsx scripts/build-beam.ts --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.test.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","format:check":"prettier --check \"src/**/*.ts\"","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.9.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.6.1","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","esbuild":"^0.27.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","cli-table3":"^0.6.5","cli-highlight":"^2.1.11","@portel/photon-core":"^2.9.3","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.11.0_1772601623180_0.16019788984716166","host":"s3://npm-registry-packages-npm-production"}},"1.12.0":{"name":"@portel/photon","version":"1.12.0","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.12.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"dist/cli.js"},"dist":{"shasum":"504d7503b16839c7924aeb9d089e08268e28d601","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.12.0.tgz","fileCount":528,"integrity":"sha512-a1FIIaj0DhEoqyZhivwDvQk9sKi7LuUgubvFzMc96sEFR1eB3jWnm+E0VqVZMmUgrBrjUJxSrJHgHJtTVssUHw==","signatures":[{"sig":"MEUCIQD354mJIyWag3kxXj9KMnee/ZmGlwmAzHhQjQUPRYqv6gIgWB/EC6IT57YoLvda0lfp7sIULDb3WCtH9z8Qs0oaOS0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12736204},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"d05f92f1be0195b0be4416129402d4484a62e6ff","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"npm run test:all","build":"npm run lint -- --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && tsx scripts/build-beam.ts","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & tsx scripts/build-beam.ts --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:e2e":"npm run build && npx playwright test","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"tsx scripts/build-beam.ts","watch:beam":"tsx scripts/build-beam.ts --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.test.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"npm run build && npx tsx tests/phase6a-service-worker.test.ts","test:phase6b":"npm run build && npx tsx tests/phase6b-offline-state.test.ts","test:phase6c":"npm run build && npx tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"npm run build && npx tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:viewport-manager":"npx vitest run tests/viewport-manager.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"npm run build && npx tsx tests/pagination-phase5.test.ts","test:pagination-phase5c":"npm run build && npx tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"npm run build && npx tsx tests/pagination-phase5d.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"npx vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"npx vitest run tests/pagination-integration.test.ts","test:pagination-performance":"npx vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"npm run build && npx tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"npx vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.9.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.6.1","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.27.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","cli-table3":"^0.6.5","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@portel/photon-core":"^2.10.1","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.12.0_1773048548937_0.7299869271621733","host":"s3://npm-registry-packages-npm-production"}},"1.13.0":{"name":"@portel/photon","version":"1.13.0","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.13.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"dist/cli.js"},"dist":{"shasum":"cb4e5458c3bef9f4eb62000bfbc202e7af1d1a6b","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.13.0.tgz","fileCount":536,"integrity":"sha512-OCo2FSI43A3+qteVfqOz3hDmCgRbV2wSjSiyOwy44NA34zKZUco1Ju9C1IwVEu37dpUK8H3E3zckysuGSq1PaQ==","signatures":[{"sig":"MEUCIDzBqVLhgEiKQgjWnBgwPxqTRbJMhknkkdcJCysPFijOAiEAgDO9vbM/qtaHn9QhTxkeTmESXUU/hS7I6EX83zPSFtA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12889203},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"e2647e6df66726ade792fdf928982065522db683","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"npm run test:all","build":"npm run lint -- --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && tsx scripts/build-beam.ts","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & tsx scripts/build-beam.ts --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:e2e":"npm run build && npx playwright test","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"tsx scripts/build-beam.ts","watch:beam":"tsx scripts/build-beam.ts --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.test.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"npm run build && npx tsx tests/phase6a-service-worker.test.ts","test:phase6b":"npm run build && npx tsx tests/phase6b-offline-state.test.ts","test:phase6c":"npm run build && npx tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"npm run build && npx tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:viewport-manager":"npx vitest run tests/viewport-manager.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"npm run build && npx tsx tests/pagination-phase5.test.ts","test:pagination-phase5c":"npm run build && npx tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"npm run build && npx tsx tests/pagination-phase5d.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"npx vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"npx vitest run tests/pagination-integration.test.ts","test:pagination-performance":"npx vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"npm run build && npx tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"npx vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.27.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","cli-table3":"^0.6.5","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@portel/photon-core":"^2.14.0","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.13.0_1773387142154_0.8289404813314474","host":"s3://npm-registry-packages-npm-production"}},"1.14.0":{"name":"@portel/photon","version":"1.14.0","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.14.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"dist/cli.js"},"dist":{"shasum":"bb56d5183b19283d987e2b026b8d2f4d13f6a131","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.14.0.tgz","fileCount":618,"integrity":"sha512-7pxQuWN3gX6gP4Pzcj04r4Mao0aWg+xjVvjfQzcRhS6H2mxXrYo2RUsOOpWbaEI9R24AHQsKhR068znV38ZXmA==","signatures":[{"sig":"MEQCIB6+6REGjaz6i6Z9pcMXziQXSJBel+hLYarhj+iEngr2AiBoy6NI6dnXII0dYnDr1oijCmzEbtu9SVAA+fN6W0rj4w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38149086},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"c2fea2b82e1f8f3b63dad880ea8fbec169035660","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"npm run test:all","build":"npm run lint -- --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && tsx scripts/build-beam.ts","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & tsx scripts/build-beam.ts --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:e2e":"npm run build && npx playwright test","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"tsx scripts/build-beam.ts","test:smoke":"npx tsx tests/smoke.test.ts","watch:beam":"tsx scripts/build-beam.ts --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.test.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"npm run build && npx tsx tests/phase6a-service-worker.test.ts","test:phase6b":"npm run build && npx tsx tests/phase6b-offline-state.test.ts","test:phase6c":"npm run build && npx tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"npm run build && npx tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:viewport-manager":"npx vitest run tests/viewport-manager.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"npm run build && npx tsx tests/pagination-phase5.test.ts","test:pagination-phase5c":"npm run build && npx tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"npm run build && npx tsx tests/pagination-phase5d.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"npx vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"npx vitest run tests/pagination-integration.test.ts","test:pagination-performance":"npx vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"npm run build && npx tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"npx vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.27.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@portel/photon-core":"^2.17.0","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.14.0_1774082762594_0.9280612859454895","host":"s3://npm-registry-packages-npm-production"}},"1.16.0":{"name":"@portel/photon","version":"1.16.0","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.16.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"dist/cli.js"},"dist":{"shasum":"55ea40496b67da8c28290f88818a5bb64830fd35","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.16.0.tgz","fileCount":642,"integrity":"sha512-n4UpyQsY3iUZwMJB5LDl7JTkCTACPovBeEN1Joc7KuagZF8kI0dhn+H4L2p+MjXjJkfSn7Y9i5zR600iSYsgFg==","signatures":[{"sig":"MEQCH2Xc3UM8QuHHy3d2oY/ekn3IXg7xWJJGlaiGGo+UYf8CIQDJ090U3kYTkb1eoU75gc3KgaGIiSOXH5TBd39eiY8RSg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39272651},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"01bfeb71f6389ee5057a2341e8941f0c3977dad5","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"npm run test:all","build":"npm run lint -- --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && tsx scripts/build-beam.ts","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & tsx scripts/build-beam.ts --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:dom":"npm run build && npm run build:beam && npx tsx tests/contract/dom-structure.test.ts","test:e2e":"npm run build && npx playwright test","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"tsx scripts/build-beam.ts","test:smoke":"npx tsx tests/smoke.test.ts","watch:beam":"tsx scripts/build-beam.ts --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.test.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","test:visual":"npm run build && npm run build:beam && npx tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"npm run build && npx tsx tests/phase6a-service-worker.test.ts","test:phase6b":"npm run build && npx tsx tests/phase6b-offline-state.test.ts","test:phase6c":"npm run build && npx tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"npm run build && npx tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:promises":"npm run build && npm run build:beam && npx tsx tests/promises.test.ts","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:contracts":"npx tsx tests/contract/format-coverage.test.ts && npx tsx tests/contract/schema-contract.test.ts","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:beam:regressions":"npm run build && npx tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"npx vitest run tests/viewport-manager.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"npm run build && npx tsx tests/pagination-phase5.test.ts","test:pagination-phase5c":"npm run build && npx tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"npm run build && npx tsx tests/pagination-phase5d.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"npx vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"npx vitest run tests/pagination-integration.test.ts","test:pagination-performance":"npx vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"npm run build && npx tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"npx vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.27.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@portel/photon-core":"^2.17.1","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.16.0_1774574583223_0.2717021493424103","host":"s3://npm-registry-packages-npm-production"}},"1.16.1":{"name":"@portel/photon","version":"1.16.1","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.16.1","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"dist/cli.js"},"dist":{"shasum":"71b80b6fe9a96d55c21367c00c2a4908b58b3ae3","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.16.1.tgz","fileCount":649,"integrity":"sha512-cwWNEcgODt6eZMuStP+RAwpz/3wxHfhRcXzZHk/Iaq08AHvAWNxNM5qxygRBW4xzDqI8tNQJauM+Qu8Toc8K0w==","signatures":[{"sig":"MEUCIH/xE0HxtZn75o5YQZdGMHmjH2o/u76nTy5+AxQ8psvwAiEA7XcIpLAygRXrLwxbk5WVqtFJ++Z5bcbJk6U7bkP5Sk0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39503841},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"1430eac0f1caade202e1080079b161a40add4c79","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"npm run test:all","build":"npm run lint -- --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && tsx scripts/build-beam.ts","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & tsx scripts/build-beam.ts --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:promises && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:dom":"npm run build && npm run build:beam && npx tsx tests/contract/dom-structure.test.ts","test:e2e":"npm run build && npx playwright test","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"tsx scripts/build-beam.ts","test:smoke":"npx tsx tests/smoke.test.ts","watch:beam":"tsx scripts/build-beam.ts --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.test.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","test:visual":"npm run build && npm run build:beam && npx tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"npm run build && npx tsx tests/phase6a-service-worker.test.ts","test:phase6b":"npm run build && npx tsx tests/phase6b-offline-state.test.ts","test:phase6c":"npm run build && npx tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"npm run build && npx tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:promises":"npm run build && npm run build:beam && npx tsx tests/promises.test.ts","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:contracts":"npx tsx tests/contract/format-coverage.test.ts && npx tsx tests/contract/schema-contract.test.ts","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:beam:regressions":"npm run build && npx tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"npx vitest run tests/viewport-manager.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"npm run build && npx tsx tests/pagination-phase5.test.ts","test:pagination-phase5c":"npm run build && npx tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"npm run build && npx tsx tests/pagination-phase5d.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"npx vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"npx vitest run tests/pagination-integration.test.ts","test:pagination-performance":"npx vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"npm run build && npx tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"npx vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.27.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@portel/photon-core":"^2.17.1","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.16.1_1774695427874_0.23505668630126042","host":"s3://npm-registry-packages-npm-production"}},"1.17.0":{"name":"@portel/photon","version":"1.17.0","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.17.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"dist/cli.js"},"dist":{"shasum":"65630a0f23539b8bb6ab43fb25960eec92379b4b","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.17.0.tgz","fileCount":657,"integrity":"sha512-k4OTjzGhICv1bokdyIoeTlrGpN/inoaFMYkAG2Seve/k+b8Iga93aO1dTq4m1Q0BdO/jpkQSAefPMvny3XOnKA==","signatures":[{"sig":"MEUCIQDQuNT/ngb5mdQgrvdIUa3MqQH91cdvo1o6dJKuJquKUwIgC5vFDc7JKdTIikJM7j6gnhZS8WVnZJG+vEKpLjey2/Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39892563},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"e5b86b1967525c873a7bd556c7b200b14a27e649","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"npm run test:all","build":"npm run lint -- --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && tsx scripts/build-beam.ts","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & tsx scripts/build-beam.ts --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:promises && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:dom":"npm run build && npm run build:beam && npx tsx tests/contract/dom-structure.test.ts","test:e2e":"npm run build && npx playwright test","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"tsx scripts/build-beam.ts","test:smoke":"npx tsx tests/smoke.test.ts","watch:beam":"tsx scripts/build-beam.ts --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.test.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","test:visual":"npm run build && npm run build:beam && npx tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"npm run build && npx tsx tests/phase6a-service-worker.test.ts","test:phase6b":"npm run build && npx tsx tests/phase6b-offline-state.test.ts","test:phase6c":"npm run build && npx tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"npm run build && npx tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:promises":"npm run build && npm run build:beam && npx tsx tests/promises.test.ts","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:contracts":"npx tsx tests/contract/format-coverage.test.ts && npx tsx tests/contract/schema-contract.test.ts","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:beam:regressions":"npm run build && npx tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"npx vitest run tests/viewport-manager.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"npm run build && npx tsx tests/pagination-phase5.test.ts","test:pagination-phase5c":"npm run build && npx tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"npm run build && npx tsx tests/pagination-phase5d.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"npx vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"npx vitest run tests/pagination-integration.test.ts","test:pagination-performance":"npx vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"npm run build && npx tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"npx vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.27.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.3","@portel/photon-core":"^2.17.1","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.17.0_1774882015052_0.4806527372135343","host":"s3://npm-registry-packages-npm-production"}},"1.17.1":{"name":"@portel/photon","version":"1.17.1","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.17.1","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"91530e41aa0ac718136c86c744a9a349b7024154","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.17.1.tgz","fileCount":658,"integrity":"sha512-GZpOfSq0ntcfLF6qf4oE/TzSq31zIpqMEnSe4CXRDjbgCyia7eqjkicySG/jZZHRZ6Vt9BcQcBzkXdkTZqABeQ==","signatures":[{"sig":"MEQCIH/IAYd3shemYqi7IhZmzYFTXARcZ1pcszPbkZYai+ihAiAeXbO9nPUHKDeG3ZgWOXwuvrdjks7nAVUadmyuQT8hig==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39892946},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"c49608c013931df09f482da150f6e5aa9d6fb105","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"npm run test:all","build":"npm run lint -- --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && tsx scripts/build-beam.ts","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & tsx scripts/build-beam.ts --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:promises && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:dom":"npm run build && npm run build:beam && npx tsx tests/contract/dom-structure.test.ts","test:e2e":"npm run build && npx playwright test","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"tsx scripts/build-beam.ts","test:smoke":"npx tsx tests/smoke.test.ts","watch:beam":"tsx scripts/build-beam.ts --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.test.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","test:visual":"npm run build && npm run build:beam && npx tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"npm run build && npx tsx tests/phase6a-service-worker.test.ts","test:phase6b":"npm run build && npx tsx tests/phase6b-offline-state.test.ts","test:phase6c":"npm run build && npx tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"npm run build && npx tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:promises":"npm run build && npm run build:beam && npx tsx tests/promises.test.ts","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:contracts":"npx tsx tests/contract/format-coverage.test.ts && npx tsx tests/contract/schema-contract.test.ts","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:beam:regressions":"npm run build && npx tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"npx vitest run tests/viewport-manager.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"npm run build && npx tsx tests/pagination-phase5.test.ts","test:pagination-phase5c":"npm run build && npx tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"npm run build && npx tsx tests/pagination-phase5d.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"npx vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"npx vitest run tests/pagination-integration.test.ts","test:pagination-performance":"npx vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"npm run build && npx tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"npx vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.27.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.3","@portel/photon-core":"^2.17.1","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.17.1_1774907028416_0.06359017975169223","host":"s3://npm-registry-packages-npm-production"}},"1.17.2":{"name":"@portel/photon","version":"1.17.2","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.17.2","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"6ae69a51091a23472e3b59b44101958ef7d4b63a","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.17.2.tgz","fileCount":658,"integrity":"sha512-mI08RJy83+GOeOp9+/pH8iTYItF2IunaZx5lMh9ZyEbjAs2zqmwa8sm5rc63LRyGSlwKsdr78VhM9VPTwxKmJg==","signatures":[{"sig":"MEQCIAESHz9jnyUf0MvKV0Xjztjr1GP8AXSVIl1QF/DpokaFAiAl6ACm6ujKc/uHmOw2SeFpcKApMh+7JOHPgIlopLyhMg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39893145},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"b705a7d79d64350eb9f507e52fba2795bbea9eaa","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"npm run test:all","build":"npm run lint -- --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && tsx scripts/build-beam.ts","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & tsx scripts/build-beam.ts --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:promises && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:dom":"npm run build && npm run build:beam && npx tsx tests/contract/dom-structure.test.ts","test:e2e":"npm run build && npx playwright test","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"tsx scripts/build-beam.ts","test:smoke":"npx tsx tests/smoke.test.ts","watch:beam":"tsx scripts/build-beam.ts --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.test.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","test:visual":"npm run build && npm run build:beam && npx tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"npm run build && npx tsx tests/phase6a-service-worker.test.ts","test:phase6b":"npm run build && npx tsx tests/phase6b-offline-state.test.ts","test:phase6c":"npm run build && npx tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"npm run build && npx tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:promises":"npm run build && npm run build:beam && npx tsx tests/promises.test.ts","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:contracts":"npx tsx tests/contract/format-coverage.test.ts && npx tsx tests/contract/schema-contract.test.ts","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:beam:regressions":"npm run build && npx tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"npx vitest run tests/viewport-manager.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"npm run build && npx tsx tests/pagination-phase5.test.ts","test:pagination-phase5c":"npm run build && npx tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"npm run build && npx tsx tests/pagination-phase5d.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"npx vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"npx vitest run tests/pagination-integration.test.ts","test:pagination-performance":"npx vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"npm run build && npx tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"npx vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.27.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.3","@portel/photon-core":"^2.17.1","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.17.2_1774909836782_0.053542240792090245","host":"s3://npm-registry-packages-npm-production"}},"1.17.3":{"name":"@portel/photon","version":"1.17.3","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.17.3","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"a291b52d86f99338cd3c7126f910e14118603eb9","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.17.3.tgz","fileCount":658,"integrity":"sha512-UR0TAY5+OXlpY3b3YV/cV83y2kLCjWdsP7PEwDCG58lrPpNyE5dYV+/bliE4W7G16gt8Cf1pyimgLHgGzvySAA==","signatures":[{"sig":"MEUCIGYMPj7dPoQUQAtZNQ/7LChVFZASE8EkBzVcw+p+ZquxAiEAyel6TI2qUDL27qk/L5N6jTQSBqAN1ExqANyOFQstheI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39918320},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"bc51aef92fdb5856b6edb1895d3377ec2a6ef79e","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"npm run test:all","build":"npm run lint -- --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && tsx scripts/build-beam.ts","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & tsx scripts/build-beam.ts --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:promises && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:dom":"npm run build && npm run build:beam && npx tsx tests/contract/dom-structure.test.ts","test:e2e":"npm run build && npx playwright test","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"tsx scripts/build-beam.ts","test:smoke":"npx tsx tests/smoke.test.ts","watch:beam":"tsx scripts/build-beam.ts --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.test.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","test:visual":"npm run build && npm run build:beam && npx tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"npm run build && npx tsx tests/phase6a-service-worker.test.ts","test:phase6b":"npm run build && npx tsx tests/phase6b-offline-state.test.ts","test:phase6c":"npm run build && npx tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"npm run build && npx tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:promises":"npm run build && npm run build:beam && npx tsx tests/promises.test.ts","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:contracts":"npx tsx tests/contract/format-coverage.test.ts && npx tsx tests/contract/schema-contract.test.ts","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:beam:regressions":"npm run build && npx tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"npx vitest run tests/viewport-manager.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"npm run build && npx tsx tests/pagination-phase5.test.ts","test:pagination-phase5c":"npm run build && npx tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"npm run build && npx tsx tests/pagination-phase5d.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"npx vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"npx vitest run tests/pagination-integration.test.ts","test:pagination-performance":"npx vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"npm run build && npx tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"npx vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.27.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.3","@portel/photon-core":"^2.17.2","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.17.3_1774913239706_0.5044017586929752","host":"s3://npm-registry-packages-npm-production"}},"1.17.4":{"name":"@portel/photon","version":"1.17.4","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.17.4","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"f6d68ca6a1a53d0e5f00d54b8280185398942207","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.17.4.tgz","fileCount":658,"integrity":"sha512-TttGHpMRqHnc1EHz7xrSEt2G6OZQkX81dnOxr4RJCT2n7aSM7bizQwIs66Wwlu4xZzBbZI84XyAlbyIcRa8dFQ==","signatures":[{"sig":"MEUCIQC+R9co/WQS1ZR67KuN7YzECzFbyZgsuNSDe+c3ZqJBTAIgU5H5nwu13sedYn7XjlRljpAPq1AOlDf7jkA6MhJVKCU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39922394},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"31df54392f9205b567a64ad0ed9d7b0ab9ab9c9c","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"npm run test:all","build":"npm run lint -- --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && tsx scripts/build-beam.ts","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & tsx scripts/build-beam.ts --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:promises && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:dom":"npm run build && npm run build:beam && npx tsx tests/contract/dom-structure.test.ts","test:e2e":"npm run build && npx playwright test","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"tsx scripts/build-beam.ts","test:smoke":"npx tsx tests/smoke.test.ts","watch:beam":"tsx scripts/build-beam.ts --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.test.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","test:visual":"npm run build && npm run build:beam && npx tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"npm run build && npx tsx tests/phase6a-service-worker.test.ts","test:phase6b":"npm run build && npx tsx tests/phase6b-offline-state.test.ts","test:phase6c":"npm run build && npx tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"npm run build && npx tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:promises":"npm run build && npm run build:beam && npx tsx tests/promises.test.ts","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:contracts":"npx tsx tests/contract/format-coverage.test.ts && npx tsx tests/contract/schema-contract.test.ts","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:beam:regressions":"npm run build && npx tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"npx vitest run tests/viewport-manager.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"npm run build && npx tsx tests/pagination-phase5.test.ts","test:pagination-phase5c":"npm run build && npx tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"npm run build && npx tsx tests/pagination-phase5d.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"npx vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"npx vitest run tests/pagination-integration.test.ts","test:pagination-performance":"npx vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"npm run build && npx tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"npx vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.27.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.3","@portel/photon-core":"^2.17.3","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.17.4_1774922299749_0.8003845407749204","host":"s3://npm-registry-packages-npm-production"}},"1.17.5":{"name":"@portel/photon","version":"1.17.5","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.17.5","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"94c80532a88bfe1bf843a04a0aedf5563e0c4248","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.17.5.tgz","fileCount":658,"integrity":"sha512-O8clOegt0zgxiXrNucvEYnwwqVs2BVzskWBsT2SSc7aQBbKalcNdKvi4fH4bwSggXmf46MH7c34PR5GBbV4xtw==","signatures":[{"sig":"MEYCIQC1ubH5q0EYu3ZvZymXPvRGB1rYmClon+4ZWGXEf94+QAIhAPzrSROo/zxu6F1S4Ummce0A/bWLAFeAnwUHQ33YW9m0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39922394},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"1b72504df5921cbe5ed2f8d5fda2fc1b3a75c80c","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"npm run test:all","build":"npm run lint -- --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && tsx scripts/build-beam.ts","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & tsx scripts/build-beam.ts --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:promises && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:dom":"npm run build && npm run build:beam && npx tsx tests/contract/dom-structure.test.ts","test:e2e":"npm run build && npx playwright test","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"tsx scripts/build-beam.ts","test:smoke":"npx tsx tests/smoke.test.ts","watch:beam":"tsx scripts/build-beam.ts --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.test.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","test:visual":"npm run build && npm run build:beam && npx tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"npm run build && npx tsx tests/phase6a-service-worker.test.ts","test:phase6b":"npm run build && npx tsx tests/phase6b-offline-state.test.ts","test:phase6c":"npm run build && npx tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"npm run build && npx tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:promises":"npm run build && npm run build:beam && npx tsx tests/promises.test.ts","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:contracts":"npx tsx tests/contract/format-coverage.test.ts && npx tsx tests/contract/schema-contract.test.ts","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:beam:regressions":"npm run build && npx tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"npx vitest run tests/viewport-manager.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"npm run build && npx tsx tests/pagination-phase5.test.ts","test:pagination-phase5c":"npm run build && npx tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"npm run build && npx tsx tests/pagination-phase5d.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"npx vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"npx vitest run tests/pagination-integration.test.ts","test:pagination-performance":"npx vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"npm run build && npx tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"npx vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.27.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.3","@portel/photon-core":"^2.17.4","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.17.5_1774922576165_0.9711385819545781","host":"s3://npm-registry-packages-npm-production"}},"1.17.6":{"name":"@portel/photon","version":"1.17.6","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.17.6","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"78384a05a2d5cd020e889c02ded0f07e3c434fa1","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.17.6.tgz","fileCount":658,"integrity":"sha512-J0VQOOdWdfqu6UIf/DG7o7bHYWytW1c9CF2yUADF25nCGl18HHUptvoMgmcKvIC6DIMbpcU4NqWY1MsN109oog==","signatures":[{"sig":"MEQCIGihyfmBNz22u9kMHyqQu5kXmm3AalJt8Sd4/7ngTSfMAiAxKBcAUdvwefkHCE0GUdupCxvf1A1jhMyur2HYZSoifw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39922394},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"fb35511915ac27565aaaf5f0ef24539b86739287","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"npm run test:all","build":"npm run lint -- --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && tsx scripts/build-beam.ts","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & tsx scripts/build-beam.ts --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:promises && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:dom":"npm run build && npm run build:beam && npx tsx tests/contract/dom-structure.test.ts","test:e2e":"npm run build && npx playwright test","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"tsx scripts/build-beam.ts","test:smoke":"npx tsx tests/smoke.test.ts","watch:beam":"tsx scripts/build-beam.ts --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.test.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","test:visual":"npm run build && npm run build:beam && npx tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"npm run build && npx tsx tests/phase6a-service-worker.test.ts","test:phase6b":"npm run build && npx tsx tests/phase6b-offline-state.test.ts","test:phase6c":"npm run build && npx tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"npm run build && npx tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:promises":"npm run build && npm run build:beam && npx tsx tests/promises.test.ts","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:contracts":"npx tsx tests/contract/format-coverage.test.ts && npx tsx tests/contract/schema-contract.test.ts","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:beam:regressions":"npm run build && npx tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"npx vitest run tests/viewport-manager.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"npm run build && npx tsx tests/pagination-phase5.test.ts","test:pagination-phase5c":"npm run build && npx tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"npm run build && npx tsx tests/pagination-phase5d.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"npx vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"npx vitest run tests/pagination-integration.test.ts","test:pagination-performance":"npx vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"npm run build && npx tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"npx vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.27.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.3","@portel/photon-core":"^2.17.5","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.17.6_1774922819574_0.8743631809857024","host":"s3://npm-registry-packages-npm-production"}},"1.18.0":{"name":"@portel/photon","version":"1.18.0","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.18.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"cef4b40bf52cd9a234e993e4908b3555695b4d58","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.18.0.tgz","fileCount":662,"integrity":"sha512-Dg12wggg6leJ/V/u2JJNulCKTdj04PccGYyAW7Tkec9wFCyyzVlcAlwDta7EUr2KuV5IvoaP7eBrBEKDZ6V6gg==","signatures":[{"sig":"MEQCIBolOVa38y4yQ2r2iWFhl9h056PBe8+P2JeCP0DGHUQOAiBAI8Fr206VoFJV07JqW258aTZFiDAcmw5/7+4qnhds0Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39988276},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"ae0686ac8b15b86f8e40e729845b0e39c3bcd905","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && tsx scripts/build-beam.ts","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & tsx scripts/build-beam.ts --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:promises && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:dom":"npm run build && npm run build:beam && npx tsx tests/contract/dom-structure.test.ts","test:e2e":"npm run build && npx playwright test","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"tsx scripts/build-beam.ts","test:chain":"npm run test:all","test:smoke":"npx tsx tests/smoke.test.ts","watch:beam":"tsx scripts/build-beam.ts --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.test.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","test:visual":"npm run build && npm run build:beam && npx tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"npm run build && npx tsx tests/phase6a-service-worker.test.ts","test:phase6b":"npm run build && npx tsx tests/phase6b-offline-state.test.ts","test:phase6c":"npm run build && npx tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"npm run build && npx tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:promises":"npm run build && npm run build:beam && npx tsx tests/promises.test.ts","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:contracts":"npx tsx tests/contract/format-coverage.test.ts && npx tsx tests/contract/schema-contract.test.ts","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:beam:regressions":"npm run build && npx tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"npx vitest run tests/viewport-manager.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"npm run build && npx tsx tests/pagination-phase5.test.ts","test:pagination-phase5c":"npm run build && npx tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"npm run build && npx tsx tests/pagination-phase5d.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"npx vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"npx vitest run tests/pagination-integration.test.ts","test:pagination-performance":"npx vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"npm run build && npx tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"npx vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.27.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.3","@portel/photon-core":"^2.17.6","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.18.0_1775008582724_0.44413671945074706","host":"s3://npm-registry-packages-npm-production"}},"1.19.0":{"name":"@portel/photon","version":"1.19.0","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.19.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"dfa02a2b2ad1e22383a2d0af825c09903f30b0de","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.19.0.tgz","fileCount":586,"integrity":"sha512-6P2m2JH5bZHZ6hsfzZQwSZqdq/3FS6EHm/u3Jzw1AHIRIUF45dEl2b/hyTzlfGVyrAPBmUrnceqNes7spObObg==","signatures":[{"sig":"MEQCIDWmITaUzVBPmlc6Y8Mwwub2sEKSyf0tx2AtFoWtbbOjAiB0ijBP4Y+z7Cq6tmtk0NT+24t8LtU6hmrFnmjxOVOUVA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39395186},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"1f2ec8eb422dfe6d3dd5ae2c2c77384a1344ad46","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && tsx scripts/build-beam.ts","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & tsx scripts/build-beam.ts --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:promises && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:dom":"npm run build && npm run build:beam && npx tsx tests/contract/dom-structure.test.ts","test:e2e":"npm run build && npx playwright test","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"tsx scripts/build-beam.ts","test:chain":"npm run test:all","test:smoke":"npx tsx tests/smoke.test.ts","watch:beam":"tsx scripts/build-beam.ts --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.test.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","test:visual":"npm run build && npm run build:beam && npx tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"npm run build && npx tsx tests/phase6a-service-worker.test.ts","test:phase6b":"npm run build && npx tsx tests/phase6b-offline-state.test.ts","test:phase6c":"npm run build && npx tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"npm run build && npx tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:promises":"npm run build && npm run build:beam && npx tsx tests/promises.test.ts","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:contracts":"npx tsx tests/contract/format-coverage.test.ts && npx tsx tests/contract/schema-contract.test.ts","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:beam:regressions":"npm run build && npx tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"npx vitest run tests/viewport-manager.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"npm run build && npx tsx tests/pagination-phase5.test.ts","test:pagination-phase5c":"npm run build && npx tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"npm run build && npx tsx tests/pagination-phase5d.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"npx vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"npx vitest run tests/pagination-integration.test.ts","test:pagination-performance":"npx vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"npm run build && npx tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"npx vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.27.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.3","@portel/photon-core":"^2.18.0","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.19.0_1775357308625_0.8991266617242613","host":"s3://npm-registry-packages-npm-production"}},"1.20.0":{"name":"@portel/photon","version":"1.20.0","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.20.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"611126fe86bba5d6b3e6e7329f58c37841622a36","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.20.0.tgz","fileCount":610,"integrity":"sha512-qnlonxj/XB64JZai9LDnFEhJztxGgcaOE1fHE05W0Io5vBfM0xXER5vn2uXCKTr+lksH2EhWlRPFTjYs+iTABw==","signatures":[{"sig":"MEQCIEz9ImWQOGt+WskiMtoihxy3nvu+yKdrXZlRJOXGqch1AiARGy3LafK2jcSPLV8K1RUuB0y/AjNAk/9BezJPixdkrg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39583216},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"dfbfeb8bb20f50af968c42283ceb5fe0241e774f","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && tsx scripts/build-beam.ts","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & tsx scripts/build-beam.ts --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:promises && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:dom":"npm run build && npm run build:beam && npx tsx tests/contract/dom-structure.test.ts","test:e2e":"npm run build && npx playwright test","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"tsx scripts/build-beam.ts","test:chain":"npm run test:all","test:smoke":"npx tsx tests/smoke.test.ts","watch:beam":"tsx scripts/build-beam.ts --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.integration.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","test:visual":"npm run build && npm run build:beam && npx tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"npm run build && npx tsx tests/phase6a-service-worker.test.ts","test:phase6b":"npm run build && npx tsx tests/phase6b-offline-state.test.ts","test:phase6c":"npm run build && npx tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"npm run build && npx tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:promises":"npm run build && npm run build:beam && npx tsx tests/promises.test.ts","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:contracts":"npx tsx tests/contract/format-coverage.test.ts && npx tsx tests/contract/schema-contract.test.ts","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:beam:regressions":"npm run build && npx tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"npx vitest run tests/viewport-manager.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"npm run build && npx tsx tests/pagination-phase5.test.ts","test:pagination-phase5c":"npm run build && npx tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"npm run build && npx tsx tests/pagination-phase5d.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"npx vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"npx vitest run tests/pagination-integration.test.ts","test:pagination-performance":"npx vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"npm run build && npx tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"npx vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.27.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.3","@portel/photon-core":"^2.18.0","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.20.0_1775640875882_0.5206401316022724","host":"s3://npm-registry-packages-npm-production"}},"1.20.1":{"name":"@portel/photon","version":"1.20.1","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.20.1","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"11adaf9e65bf8bc4b8acabdb475ad468583a12ab","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.20.1.tgz","fileCount":610,"integrity":"sha512-rRMLx4blg8d30rotYfUvoflr13BcKgzjjNsgTkKotzcisHEjrbmO1wL609Na/wAvS8/OuHhYPgJZNNXX2Z0Iew==","signatures":[{"sig":"MEUCIQCmcxYRh1t27VYP3Cyz0NKLZ+uVupomKk4fsBsHlcfHIAIgGLY98BAe9TPEiD50yiGQ+17JDdom28JGQdUQslAMkhQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39655097},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"76dccee7c290441e3b7a9aa6d3825b264f148c9f","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && tsx scripts/build-beam.ts","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & tsx scripts/build-beam.ts --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:promises && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:dom":"npm run build && npm run build:beam && npx tsx tests/contract/dom-structure.test.ts","test:e2e":"npm run build && npx playwright test","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"tsx scripts/build-beam.ts","test:chain":"npm run test:all","test:smoke":"npx tsx tests/smoke.test.ts","watch:beam":"tsx scripts/build-beam.ts --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.integration.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","test:visual":"npm run build && npm run build:beam && npx tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"npm run build && npx tsx tests/phase6a-service-worker.test.ts","test:phase6b":"npm run build && npx tsx tests/phase6b-offline-state.test.ts","test:phase6c":"npm run build && npx tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"npm run build && npx tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:promises":"npm run build && npm run build:beam && npx tsx tests/promises.test.ts","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:contracts":"npx tsx tests/contract/format-coverage.test.ts && npx tsx tests/contract/schema-contract.test.ts","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:beam:regressions":"npm run build && npx tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"npx vitest run tests/viewport-manager.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"npm run build && npx tsx tests/pagination-phase5.test.ts","test:pagination-phase5c":"npm run build && npx tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"npm run build && npx tsx tests/pagination-phase5d.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"npx vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"npx vitest run tests/pagination-integration.test.ts","test:pagination-performance":"npx vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"npm run build && npx tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"npx vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.27.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.3","@portel/photon-core":"^2.18.1","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.20.1_1775780973362_0.4102168639411763","host":"s3://npm-registry-packages-npm-production"}},"1.21.0":{"name":"@portel/photon","version":"1.21.0","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.21.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"dd42ad84d2bd51d7d84b726e6f77c4ba71a916ea","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.21.0.tgz","fileCount":638,"integrity":"sha512-9Fqj+ScOFrefFt4zFwZUfbk+9AQYtkZuv67H4Hioe44lgDGeP9Pz5CZiCRjPhFO1cQ16Z77tCZVJCFLLVjezJA==","signatures":[{"sig":"MEYCIQDa3J6R1IlFGGyf1ETMIaTWxPM/5V3Xg1MAvwedVjocEgIhAP21Gpz5eR3JjpoSxE4BaWQq0xdp0YVFH6xagd04mrue","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40083223},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"765fae858b2ff8cc57da0173acdcff296a1c554d","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:promises && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:dom":"npm run build && npm run build:beam && npx tsx tests/contract/dom-structure.test.ts","test:e2e":"npm run build && npx playwright test","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","test:chain":"npm run test:all","test:smoke":"npx tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.integration.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","test:visual":"npm run build && npm run build:beam && npx tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"npm run build && npx tsx tests/phase6a-service-worker.test.ts","test:phase6b":"npm run build && npx tsx tests/phase6b-offline-state.test.ts","test:phase6c":"npm run build && npx tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"npm run build && npx tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:promises":"npm run build && npm run build:beam && npx tsx tests/promises.test.ts","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:contracts":"npx tsx tests/contract/format-coverage.test.ts && npx tsx tests/contract/schema-contract.test.ts","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:beam:regressions":"npm run build && npx tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"npx vitest run tests/viewport-manager.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"npm run build && npx tsx tests/pagination-phase5.test.ts","test:pagination-phase5c":"npm run build && npx tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"npm run build && npx tsx tests/pagination-phase5d.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"npx vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"npx vitest run tests/pagination-integration.test.ts","test:pagination-performance":"npx vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"npm run build && npx tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"npx vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.3","@portel/photon-core":"^2.19.1","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.21.0_1776148564618_0.9868880431904532","host":"s3://npm-registry-packages-npm-production"}},"1.22.0":{"name":"@portel/photon","version":"1.22.0","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.22.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"88217cb39d5a27ef4a71f3ef24a769e26c67b2f5","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.22.0.tgz","fileCount":654,"integrity":"sha512-0vrHYsByxIisv/zkLeCMMSoaw2NSWTJfULJOvIcQLzu0ohyJ34vt5PDKNi7k+xezcGXBV3nZCNDfdKieull9LQ==","signatures":[{"sig":"MEQCIBCTyvteyx3cyhWBfht3HsAPJirCMIv898JzW9PB1iLxAiA20A0GmVOXmxO5HiNX3IaBHxJVLK9Fex5/n1jYvWyiJA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40163850},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"df7d00d812a8e49ff8193643dcef0a1a9808f81c","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:promises && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:dom":"npm run build && npm run build:beam && npx tsx tests/contract/dom-structure.test.ts","test:e2e":"npm run build && npx playwright test","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","test:chain":"npm run test:all","test:smoke":"npx tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.integration.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","test:visual":"npm run build && npm run build:beam && npx tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"npm run build && npx tsx tests/phase6a-service-worker.test.ts","test:phase6b":"npm run build && npx tsx tests/phase6b-offline-state.test.ts","test:phase6c":"npm run build && npx tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"npm run build && npx tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:promises":"npm run build && npm run build:beam && npx tsx tests/promises.test.ts","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:contracts":"npx tsx tests/contract/format-coverage.test.ts && npx tsx tests/contract/schema-contract.test.ts","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:beam:regressions":"npm run build && npx tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"npx vitest run tests/viewport-manager.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"npm run build && npx tsx tests/pagination-phase5.test.ts","test:pagination-phase5c":"npm run build && npx tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"npm run build && npx tsx tests/pagination-phase5d.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"npx vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"npx vitest run tests/pagination-integration.test.ts","test:pagination-performance":"npx vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"npm run build && npx tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"npx vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.3","@portel/photon-core":"^2.22.0","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.22.0_1776323121460_0.12150971213865724","host":"s3://npm-registry-packages-npm-production"}},"1.22.1":{"name":"@portel/photon","version":"1.22.1","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.22.1","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"e64417b0bee577f78a77fd4ad2c2e72b5f261ba4","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.22.1.tgz","fileCount":654,"integrity":"sha512-aHSEhsluG7uKQlKp45YI9EqhLRs+3g/Xc8DV61WEkbPrAPq2AVgDUQBR/7QEthehGF3I1O7yE4vnPqIRgNOy+Q==","signatures":[{"sig":"MEQCIEBKdH2GSgorVt5qDPaFntTFhSXJqjtEw5bkN6nNLy46AiA3Bwb03sfUowiMp+33qwBOK42POTKBOG+EvCqnyWo6bQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40163850},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"8b5d757e70fc2bd35babb72cd3975782e22b0793","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:promises && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:dom":"npm run build && npm run build:beam && npx tsx tests/contract/dom-structure.test.ts","test:e2e":"npm run build && npx playwright test","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","test:chain":"npm run test:all","test:smoke":"npx tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.integration.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","test:visual":"npm run build && npm run build:beam && npx tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"npm run build && npx tsx tests/phase6a-service-worker.test.ts","test:phase6b":"npm run build && npx tsx tests/phase6b-offline-state.test.ts","test:phase6c":"npm run build && npx tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"npm run build && npx tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:promises":"npm run build && npm run build:beam && npx tsx tests/promises.test.ts","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:contracts":"npx tsx tests/contract/format-coverage.test.ts && npx tsx tests/contract/schema-contract.test.ts","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:beam:regressions":"npm run build && npx tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"npx vitest run tests/viewport-manager.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"npm run build && npx tsx tests/pagination-phase5.test.ts","test:pagination-phase5c":"npm run build && npx tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"npm run build && npx tsx tests/pagination-phase5d.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"npx vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"npx vitest run tests/pagination-integration.test.ts","test:pagination-performance":"npx vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"npm run build && npx tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"npx vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.3","@portel/photon-core":"^2.22.0","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.22.1_1776326966758_0.13398054598227627","host":"s3://npm-registry-packages-npm-production"}},"1.23.0":{"name":"@portel/photon","version":"1.23.0","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.23.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"b1e993d507c1f08e67cc8962281cd86509fe9a5d","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.23.0.tgz","fileCount":722,"integrity":"sha512-g5Lo4N/+V40Zfzso1+JuPVnm61A+w5HY8fe0e4QTMwGIa5sA+mxWvt+JO62nABOcQ8mV+iJz6SPrQzNESbQmHA==","signatures":[{"sig":"MEYCIQDZuX3j68R2ogN8XXZZ6SwOk7zEfQK7Klu/waw/xEksngIhANhi/eyI+aklQWiGmV/1mil9tGU/6Dccjy7+0ALFtEdx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40819009},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"1971be85752b8b854c294402eb8f5a341c7297a8","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:promises && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:dom":"npm run build && npm run build:beam && npx tsx tests/contract/dom-structure.test.ts","test:e2e":"npm run build && npx playwright test","test:a2ui":"npm run build && npx tsx tests/a2ui-mapper.test.ts && npx tsx tests/a2ui-e2e.test.ts && npx tsx tests/a2ui-renderer-script.test.ts","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","test:chain":"npm run test:all","test:smoke":"npx tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.integration.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","test:visual":"npm run build && npm run build:beam && npx tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"npm run build && npx tsx tests/phase6a-service-worker.test.ts","test:phase6b":"npm run build && npx tsx tests/phase6b-offline-state.test.ts","test:phase6c":"npm run build && npx tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"npm run build && npx tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:promises":"npm run build && npm run build:beam && npx tsx tests/promises.test.ts","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:contracts":"npx tsx tests/contract/format-coverage.test.ts && npx tsx tests/contract/schema-contract.test.ts","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:beam:regressions":"npm run build && npx tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"npx vitest run tests/viewport-manager.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"npm run build && npx tsx tests/pagination-phase5.test.ts","test:pagination-phase5c":"npm run build && npx tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"npm run build && npx tsx tests/pagination-phase5d.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"npx vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"npx vitest run tests/pagination-integration.test.ts","test:pagination-performance":"npx vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"npm run build && npx tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"npx vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.3","@portel/photon-core":"^2.24.0","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^10.0.1"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.23.0_1776741897196_0.15920989703204524","host":"s3://npm-registry-packages-npm-production"}},"1.23.1":{"name":"@portel/photon","version":"1.23.1","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.23.1","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"7863c0c53f5de8c6038432a2e5eadabd4f59d3fd","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.23.1.tgz","fileCount":722,"integrity":"sha512-+zpqSQxUnmBbG3uDgn8gLGXD51FI+UFUArH+6kB6R6k1RGthcZXti2h3wlDYMVk4CDKWEVEXogGKRfZWyfAb2g==","signatures":[{"sig":"MEYCIQDHzqq5sfyfUjoCcqPLKkpnp0T8qnqaMKbdLk1x7oLyjAIhAKuWDa/XqPvGZbVzol1GH5s5VgEuspgl1GJ4Tz1ImGuX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40821349},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"678445f631e73e6438515b7f4ae21b15c3fb2fbe","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:promises && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:dom":"npm run build && npm run build:beam && npx tsx tests/contract/dom-structure.test.ts","test:e2e":"npm run build && npx playwright test","test:a2ui":"npm run build && npx tsx tests/a2ui-mapper.test.ts && npx tsx tests/a2ui-e2e.test.ts && npx tsx tests/a2ui-renderer-script.test.ts","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","test:chain":"npm run test:all","test:smoke":"npx tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.integration.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","test:visual":"npm run build && npm run build:beam && npx tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"npm run build && npx tsx tests/phase6a-service-worker.test.ts","test:phase6b":"npm run build && npx tsx tests/phase6b-offline-state.test.ts","test:phase6c":"npm run build && npx tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"npm run build && npx tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:promises":"npm run build && npm run build:beam && npx tsx tests/promises.test.ts","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:contracts":"npx tsx tests/contract/format-coverage.test.ts && npx tsx tests/contract/schema-contract.test.ts","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:beam:regressions":"npm run build && npx tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"npx vitest run tests/viewport-manager.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"npm run build && npx tsx tests/pagination-phase5.test.ts","test:pagination-phase5c":"npm run build && npx tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"npm run build && npx tsx tests/pagination-phase5d.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"npx vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"npx vitest run tests/pagination-integration.test.ts","test:pagination-performance":"npx vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"npm run build && npx tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"npx vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.3","@portel/photon-core":"^2.24.0","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^10.0.1"},"trustedDependencies":["better-sqlite3","esbuild"],"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.23.1_1776743755485_0.0889546052860386","host":"s3://npm-registry-packages-npm-production"}},"1.24.0":{"name":"@portel/photon","version":"1.24.0","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.24.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"6d7f888ffe704850d9801cbb612f68e80c0cf722","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.24.0.tgz","fileCount":742,"integrity":"sha512-9Ps36Uj8xulGEENEbou54NB2OblRLPIOBlarOKtkNMO8Ikzm12bCCBTquw2+T7/n71pPKuh+XHKUIJBNVfKxzQ==","signatures":[{"sig":"MEUCIQCScn7Ph0gqrSIv3A40rDVJnXV9VlaiLzNxyUSPsbWYfgIgO+vdEeQhFGHW3JnAvRuvM7KWO9t4QaMyXyNxGLSetb4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41091097},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"a9e2d47bd1c49d5673e8a8a45c695ccff7b068c0","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:promises && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:dom":"npm run build && npm run build:beam && npx tsx tests/contract/dom-structure.test.ts","test:e2e":"npm run build && npx playwright test","test:a2ui":"npm run build && npx tsx tests/a2ui-mapper.test.ts && npx tsx tests/a2ui-e2e.test.ts && npx tsx tests/a2ui-renderer-script.test.ts","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","test:chain":"npm run test:all","test:smoke":"npx tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.integration.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","test:visual":"npm run build && npm run build:beam && npx tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"npm run build && npx tsx tests/phase6a-service-worker.test.ts","test:phase6b":"npm run build && npx tsx tests/phase6b-offline-state.test.ts","test:phase6c":"npm run build && npx tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"npm run build && npx tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:promises":"npm run build && npm run build:beam && npx tsx tests/promises.test.ts","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:contracts":"npx tsx tests/contract/format-coverage.test.ts && npx tsx tests/contract/schema-contract.test.ts","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:beam:regressions":"npm run build && npx tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"npx vitest run tests/viewport-manager.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"npm run build && npx tsx tests/pagination-phase5.test.ts","test:pagination-phase5c":"npm run build && npx tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"npm run build && npx tsx tests/pagination-phase5d.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"npx vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"npx vitest run tests/pagination-integration.test.ts","test:pagination-performance":"npx vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"npm run build && npx tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"npx vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.3","@portel/photon-core":"^2.25.0","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^19.0.6","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^10.0.1"},"trustedDependencies":["better-sqlite3","esbuild"],"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.24.0_1777034316642_0.20500015373131175","host":"s3://npm-registry-packages-npm-production"}},"1.25.0":{"name":"@portel/photon","version":"1.25.0","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.25.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"e1500513418663e688dc4348e390f9debc60b495","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.25.0.tgz","fileCount":742,"integrity":"sha512-knJtzw0ZbIQIZSDxb5ZIHHa6JpV5BMEKZLmlo2J6q+hHhGfCAFvVm9ZTS3a14O3OwJz4am/LJyd/MsuTePxj9A==","signatures":[{"sig":"MEYCIQCLJhOTKr/bJWN/28g09f12SMRF4RHquS/IHEsMcBxuigIhAIdGWK2Zu4iqeEH3oBfMNxj7dML6N4vQDKQIGB0HzxYF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41105307},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"e2603768e3d9d019baeb732c726953c558fffa9b","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:promises && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:dom":"npm run build && npm run build:beam && npx tsx tests/contract/dom-structure.test.ts","test:e2e":"npm run build && npx playwright test","test:a2ui":"npm run build && npx tsx tests/a2ui-mapper.test.ts && npx tsx tests/a2ui-e2e.test.ts && npx tsx tests/a2ui-renderer-script.test.ts","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","test:chain":"npm run test:all","test:smoke":"npx tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.integration.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","test:visual":"npm run build && npm run build:beam && npx tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"npm run build && npx tsx tests/phase6a-service-worker.test.ts","test:phase6b":"npm run build && npx tsx tests/phase6b-offline-state.test.ts","test:phase6c":"npm run build && npx tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"npm run build && npx tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:promises":"npm run build && npm run build:beam && npx tsx tests/promises.test.ts","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:contracts":"npx tsx tests/contract/format-coverage.test.ts && npx tsx tests/contract/schema-contract.test.ts","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:beam:regressions":"npm run build && npx tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"npx vitest run tests/viewport-manager.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"npm run build && npx tsx tests/pagination-phase5.test.ts","test:pagination-phase5c":"npm run build && npx tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"npm run build && npx tsx tests/pagination-phase5d.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"npx vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"npx vitest run tests/pagination-integration.test.ts","test:pagination-performance":"npx vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"npm run build && npx tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"npx vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.3","@portel/photon-core":"^2.25.0","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^20.0.0","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^11.0.0"},"trustedDependencies":["better-sqlite3","esbuild"],"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.25.0_1777129654076_0.09164091637367422","host":"s3://npm-registry-packages-npm-production"}},"1.26.0":{"name":"@portel/photon","version":"1.26.0","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.26.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"f2a3571e9d4c11da00fd6c4a0feb4b7a9dee064d","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.26.0.tgz","fileCount":742,"integrity":"sha512-NV6EkmOTq8Mp1lIQPowsoagaK5G+KVHgjxeBUFNfaAUvVB8qvNLwnvgTXiHxPSDnZj8PGShWLeuXLIWUCs9zCg==","signatures":[{"sig":"MEUCIFQFiaKb5zL2HeUuPz1V8iBBpERSShL4pTC98+NL0rkrAiEAhjFxo5g3+BcelyJlw+DApD6K1ACOUGlhCwkmJO/dd10=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41182951},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"d63016788ed30e73bfb13a2f69f2c133398a9bbc","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:promises && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:dom":"npm run build && npm run build:beam && npx tsx tests/contract/dom-structure.test.ts","test:e2e":"npm run build && npx playwright test","test:a2ui":"npm run build && npx tsx tests/a2ui-mapper.test.ts && npx tsx tests/a2ui-e2e.test.ts && npx tsx tests/a2ui-renderer-script.test.ts","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","test:chain":"npm run test:all","test:smoke":"npx tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.integration.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","test:visual":"npm run build && npm run build:beam && npx tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"npm run build && npx tsx tests/phase6a-service-worker.test.ts","test:phase6b":"npm run build && npx tsx tests/phase6b-offline-state.test.ts","test:phase6c":"npm run build && npx tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"npm run build && npx tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:promises":"npm run build && npm run build:beam && npx tsx tests/promises.test.ts","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:contracts":"npx tsx tests/contract/format-coverage.test.ts && npx tsx tests/contract/schema-contract.test.ts","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:beam:regressions":"npm run build && npx tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"npx vitest run tests/viewport-manager.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"npm run build && npx tsx tests/pagination-phase5.test.ts","test:pagination-phase5c":"npm run build && npx tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"npm run build && npx tsx tests/pagination-phase5d.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"npx vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"npx vitest run tests/pagination-integration.test.ts","test:pagination-performance":"npx vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"npm run build && npx tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"npx vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.3","@portel/photon-core":"^2.25.0","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^20.0.0","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^11.0.0"},"trustedDependencies":["better-sqlite3","esbuild"],"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.26.0_1777544226928_0.40193501894375716","host":"s3://npm-registry-packages-npm-production"}},"1.26.1":{"name":"@portel/photon","version":"1.26.1","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.26.1","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"25d2ed6a2b8ceec0591a55189eddc265766bd8f1","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.26.1.tgz","fileCount":742,"integrity":"sha512-W1IrLGd28a8E8CSG8OBaoqrs126GqSpasb0plEj6BqUaGua+d+9ki8MFcUPoCXihBnW29BZdLqY0ZZeASv3G/g==","signatures":[{"sig":"MEYCIQDtLRZodd3j4TImEIOs29ckoa3pf0Ebg2WABZJiU+s2fgIhAKNX0QfoTgZ4WN/bNmTjNi9uXApGJWFtB+vtmD0jthmt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41182951},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"4c03620a906401704400acec084edd6ddd3acf18","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:promises && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:dom":"npm run build && npm run build:beam && npx tsx tests/contract/dom-structure.test.ts","test:e2e":"npm run build && npx playwright test","test:a2ui":"npm run build && npx tsx tests/a2ui-mapper.test.ts && npx tsx tests/a2ui-e2e.test.ts && npx tsx tests/a2ui-renderer-script.test.ts","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","test:chain":"npm run test:all","test:smoke":"npx tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.integration.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","test:visual":"npm run build && npm run build:beam && npx tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"npm run build && npx tsx tests/phase6a-service-worker.test.ts","test:phase6b":"npm run build && npx tsx tests/phase6b-offline-state.test.ts","test:phase6c":"npm run build && npx tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"npm run build && npx tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:promises":"npm run build && npm run build:beam && npx tsx tests/promises.test.ts","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:contracts":"npx tsx tests/contract/format-coverage.test.ts && npx tsx tests/contract/schema-contract.test.ts","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:beam:regressions":"npm run build && npx tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"npx vitest run tests/viewport-manager.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"npm run build && npx tsx tests/pagination-phase5.test.ts","test:pagination-phase5c":"npm run build && npx tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"npm run build && npx tsx tests/pagination-phase5d.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"npx vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"npx vitest run tests/pagination-integration.test.ts","test:pagination-performance":"npx vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"npm run build && npx tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"npx vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.3","@portel/photon-core":"^2.25.0","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^20.0.0","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^11.0.0"},"trustedDependencies":["better-sqlite3","esbuild"],"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.26.1_1777552220437_0.37015680112644667","host":"s3://npm-registry-packages-npm-production"}},"1.27.0":{"name":"@portel/photon","version":"1.27.0","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.27.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"0d98e03da3f762e3b95b444094b170030367ad00","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.27.0.tgz","fileCount":746,"integrity":"sha512-xwBwMwckalP0Xk66Grr2mrZbTAFDqroFKZnCkP4ssiwTxA7lOO5UWfMgXjIGlmrQHF56nOqRdfcQkZasPzRQ6Q==","signatures":[{"sig":"MEQCIBeLRAiMTWY++WksNjuYCUhKqidLidyp0hfDQfad92mhAiBRrVlpIo2W+kC89rDlAcPbIuT6c8g4bpgBFHEyaJmatA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41402426},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"7d8105fca12edc4829f48cbad01ced0ca8956ac6","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:promises && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:dom":"npm run build && npm run build:beam && npx tsx tests/contract/dom-structure.test.ts","test:e2e":"npm run build && npx playwright test","test:a2ui":"npm run build && npx tsx tests/a2ui-mapper.test.ts && npx tsx tests/a2ui-e2e.test.ts && npx tsx tests/a2ui-renderer-script.test.ts","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","test:chain":"npm run test:all","test:smoke":"npx tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.integration.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","test:visual":"npm run build && npm run build:beam && npx tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"npm run build && npx tsx tests/phase6a-service-worker.test.ts","test:phase6b":"npm run build && npx tsx tests/phase6b-offline-state.test.ts","test:phase6c":"npm run build && npx tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"npm run build && npx tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:promises":"npm run build && npm run build:beam && npx tsx tests/promises.test.ts","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:contracts":"npx tsx tests/contract/format-coverage.test.ts && npx tsx tests/contract/schema-contract.test.ts","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:beam:regressions":"npm run build && npx tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"npx vitest run tests/viewport-manager.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"npm run build && npx tsx tests/pagination-phase5.test.ts","test:pagination-phase5c":"npm run build && npx tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"npm run build && npx tsx tests/pagination-phase5d.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"npx vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"npx vitest run tests/pagination-integration.test.ts","test:pagination-performance":"npx vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"npm run build && npx tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"npx vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.3","@portel/photon-core":"^2.25.0","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^20.0.0","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^11.0.0"},"trustedDependencies":["better-sqlite3","esbuild"],"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.27.0_1777814120041_0.06687966836670722","host":"s3://npm-registry-packages-npm-production"}},"1.28.0":{"name":"@portel/photon","version":"1.28.0","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.28.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"d82cf835bfcfe1cb12afa5b24d9bf2bc5855be56","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.28.0.tgz","fileCount":754,"integrity":"sha512-Bj/SgfJVSUuHjxlffXJy2l1n+YQA45johkYlqLwDd8y2kf5myXkB+dykrvunhRav91pwae8Rxt8C69yHNFuS3w==","signatures":[{"sig":"MEYCIQCuw7odgJhyJRVtK1bQIFKaISv292oIT8AzcMDdn7+/DgIhALqdsFck/DjV9yns5lPStwvHS8VNeoWTHZnAYFivMcLk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41434160},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"4c0a301f207027e7ba5930eb27bf894d1f36ecb1","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:promises && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:dom":"npm run build && npm run build:beam && npx tsx tests/contract/dom-structure.test.ts","test:e2e":"npm run build && npx playwright test","test:a2ui":"npm run build && npx tsx tests/a2ui-mapper.test.ts && npx tsx tests/a2ui-e2e.test.ts && npx tsx tests/a2ui-renderer-script.test.ts","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","test:chain":"npm run test:all","test:smoke":"npx tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.integration.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","test:visual":"npm run build && npm run build:beam && npx tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"npm run build && npx tsx tests/phase6a-service-worker.test.ts","test:phase6b":"npm run build && npx tsx tests/phase6b-offline-state.test.ts","test:phase6c":"npm run build && npx tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"npm run build && npx tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:promises":"npm run build && npm run build:beam && npx tsx tests/promises.test.ts","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:contracts":"npx tsx tests/contract/format-coverage.test.ts && npx tsx tests/contract/schema-contract.test.ts","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:beam:regressions":"npm run build && npx tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"npx vitest run tests/viewport-manager.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"npm run build && npx tsx tests/pagination-phase5.test.ts","test:pagination-phase5c":"npm run build && npx tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"npm run build && npx tsx tests/pagination-phase5d.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"npx vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"npx vitest run tests/pagination-integration.test.ts","test:pagination-performance":"npx vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"npm run build && npx tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"npx vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.3","@portel/photon-core":"^2.25.0","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^20.0.0","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^11.0.0"},"trustedDependencies":["better-sqlite3","esbuild"],"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.28.0_1777820669114_0.29574522906546874","host":"s3://npm-registry-packages-npm-production"}},"1.28.1":{"name":"@portel/photon","version":"1.28.1","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.28.1","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"3f215b11623d4732ea7f7c491cef3c9064611068","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.28.1.tgz","fileCount":758,"integrity":"sha512-vcHWoXVRYhUMoTQ0cw93DfKKx9VZmcIAgFCISxNtVflzflpPNeka9wqiTWr6fFtBTEUNGaJCK0UZhY1i757PTg==","signatures":[{"sig":"MEYCIQCIsbzQdjX7sWiLprFiZAf8HaG/9gXumbOiCPe80XpBjQIhAKgC1G0C5HUtUFIHOkZGsEuwy7nuGAz3AJ1sSZPDHhDC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41437515},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"3edab515b9b0ab61570440d30e927e342a3be947","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:promises && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:dom":"npm run build && npm run build:beam && npx tsx tests/contract/dom-structure.test.ts","test:e2e":"npm run build && npx playwright test","test:a2ui":"npm run build && npx tsx tests/a2ui-mapper.test.ts && npx tsx tests/a2ui-e2e.test.ts && npx tsx tests/a2ui-renderer-script.test.ts","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","test:chain":"npm run test:all","test:smoke":"npx tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.integration.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","test:visual":"npm run build && npm run build:beam && npx tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"npm run build && npx tsx tests/phase6a-service-worker.test.ts","test:phase6b":"npm run build && npx tsx tests/phase6b-offline-state.test.ts","test:phase6c":"npm run build && npx tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"npm run build && npx tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:promises":"npm run build && npm run build:beam && npx tsx tests/promises.test.ts","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:contracts":"npx tsx tests/contract/format-coverage.test.ts && npx tsx tests/contract/schema-contract.test.ts","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:beam:regressions":"npm run build && npx tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"npx vitest run tests/viewport-manager.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"npm run build && npx tsx tests/pagination-phase5.test.ts","test:pagination-phase5c":"npm run build && npx tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"npm run build && npx tsx tests/pagination-phase5d.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"npx vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"npx vitest run tests/pagination-integration.test.ts","test:pagination-performance":"npx vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"npm run build && npx tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"npx vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.3","@portel/photon-core":"^2.25.0","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^20.0.0","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^11.0.0"},"trustedDependencies":["better-sqlite3","esbuild"],"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.28.1_1777825590414_0.4436203434960755","host":"s3://npm-registry-packages-npm-production"}},"1.28.2":{"name":"@portel/photon","version":"1.28.2","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.28.2","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"a7d1cd76d4c791bfa72fb56bc9f1d69d6b31eabc","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.28.2.tgz","fileCount":758,"integrity":"sha512-FMUztnZoV1+MDI2KJBTYBBa1622PYqPna5ya2z0MOY6kdk/fXSaOcIa33EuoCwdPO5ljB+Xrf0YZ8am70Onkxg==","signatures":[{"sig":"MEUCIADPhJHbSMEbaV5F7oDmG1aVPVksw1GO8uUHsm6OLMjGAiEAqrX08xo6oGyO3VIqxqHAXpipPYGDuttFiPFKScYz2ik=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41441467},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"fcf3801f9b4e8193188317cdc021393af3bba4d0","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:promises && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:dom":"npm run build && npm run build:beam && npx tsx tests/contract/dom-structure.test.ts","test:e2e":"npm run build && npx playwright test","test:a2ui":"npm run build && npx tsx tests/a2ui-mapper.test.ts && npx tsx tests/a2ui-e2e.test.ts && npx tsx tests/a2ui-renderer-script.test.ts","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","test:chain":"npm run test:all","test:smoke":"npx tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.integration.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","test:visual":"npm run build && npm run build:beam && npx tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"npm run build && npx tsx tests/phase6a-service-worker.test.ts","test:phase6b":"npm run build && npx tsx tests/phase6b-offline-state.test.ts","test:phase6c":"npm run build && npx tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"npm run build && npx tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:promises":"npm run build && npm run build:beam && npx tsx tests/promises.test.ts","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:contracts":"npx tsx tests/contract/format-coverage.test.ts && npx tsx tests/contract/schema-contract.test.ts","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:beam:regressions":"npm run build && npx tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"npx vitest run tests/viewport-manager.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"npm run build && npx tsx tests/pagination-phase5.test.ts","test:pagination-phase5c":"npm run build && npx tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"npm run build && npx tsx tests/pagination-phase5d.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"npx vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"npx vitest run tests/pagination-integration.test.ts","test:pagination-performance":"npx vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"npm run build && npx tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"npx vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.3","@portel/photon-core":"^2.25.0","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^20.0.0","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^11.0.0"},"trustedDependencies":["better-sqlite3","esbuild"],"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.28.2_1777858062312_0.7781060329650535","host":"s3://npm-registry-packages-npm-production"}},"1.29.0":{"name":"@portel/photon","version":"1.29.0","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.29.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"9107b95f8ecdc9e82b20867e8896beb40ddc8292","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.29.0.tgz","fileCount":786,"integrity":"sha512-ct+bpKMKvo1jSDSnQrVxOhxsBg0usL+T7QXJJ3McrCEbIwsKGlEByoqMDoPFTf0KgQpb9hvlCb47hArQ7IDJ9Q==","signatures":[{"sig":"MEUCIQCY1GAoK6f5TrozihnbTqjCrERGiBhDjkSQ4kh755HDlwIgTEcDLlnVIvsxglcOZkkhDm1MdrzS7VWQwOHLXfgUnu8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41624264},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"3d75df11492ae978c734f67c485434a009bc581e","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:byte-compat && npm run test:format-registry && npm run test:content-negotiation && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:promises && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:dom":"npm run build && npm run build:beam && npx tsx tests/contract/dom-structure.test.ts","test:e2e":"npm run build && npx playwright test","test:a2ui":"npm run build && npx tsx tests/a2ui-mapper.test.ts && npx tsx tests/a2ui-e2e.test.ts && npx tsx tests/a2ui-renderer-script.test.ts","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","test:chain":"npm run test:all","test:smoke":"npx tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.integration.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","test:visual":"npm run build && npm run build:beam && npx tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"npm run build && npx tsx tests/phase6a-service-worker.test.ts","test:phase6b":"npm run build && npx tsx tests/phase6b-offline-state.test.ts","test:phase6c":"npm run build && npx tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"npm run build && npx tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:promises":"npm run build && npm run build:beam && npx tsx tests/promises.test.ts","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:contracts":"npx tsx tests/contract/format-coverage.test.ts && npx tsx tests/contract/schema-contract.test.ts","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:byte-compat":"RUN_E2E=1 npx vitest run tests/v128-byte-compat.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:format-registry":"npx vitest run tests/format-registry.test.ts","test:beam:regressions":"npm run build && npx tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"npx vitest run tests/viewport-manager.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"npm run build && npx tsx tests/pagination-phase5.test.ts","test:pagination-phase5c":"npm run build && npx tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"npm run build && npx tsx tests/pagination-phase5d.test.ts","test:content-negotiation":"RUN_E2E=1 npx vitest run tests/http-content-negotiation.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"npx vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"npx vitest run tests/pagination-integration.test.ts","test:pagination-performance":"npx vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"npm run build && npx tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"npx vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.3","@portel/photon-core":"^2.26.0","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^20.0.0","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^11.0.0"},"trustedDependencies":["better-sqlite3","esbuild"],"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.29.0_1777971489038_0.9363298080961564","host":"s3://npm-registry-packages-npm-production"}},"1.31.0":{"name":"@portel/photon","version":"1.31.0","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.31.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"acdfa51d9f02e0bd2b51dcb687c98b746662c9cb","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.31.0.tgz","fileCount":814,"integrity":"sha512-pmcGDjgsu9/zMl24N70EJ5/AyWlcuAZPXsP5NW2ksLE1poVfbbcmaF5yuF3yHIqmEa1cYvbhp7SPeHpPOt51bw==","signatures":[{"sig":"MEQCIBQv4jjO81lDw238II3axpRo4n0D9FeukxKjQskBNLGYAiBJCOOzXaq3Lz5VRWu8NaHNe8GYUh6T3ZfXPmPSAef0DQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41824626},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"47310296071ba1e9e6cb8180d3d18adb94b5dc6b","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:byte-compat && npm run test:format-registry && npm run test:content-negotiation && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:promises && npm run test:cf-bindings && npm run test:cf-runtime && npm run test:cf-overrides && npm run test:cf-deploy && npm run test:cf-mcp-bearer && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:dom":"npm run build && npm run build:beam && npx tsx tests/contract/dom-structure.test.ts","test:e2e":"npm run build && npx playwright test","test:a2ui":"npm run build && npx tsx tests/a2ui-mapper.test.ts && npx tsx tests/a2ui-e2e.test.ts && npx tsx tests/a2ui-renderer-script.test.ts","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","test:chain":"npm run test:all","test:smoke":"npx tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.integration.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","test:visual":"npm run build && npm run build:beam && npx tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"npm run build && npx tsx tests/phase6a-service-worker.test.ts","test:phase6b":"npm run build && npx tsx tests/phase6b-offline-state.test.ts","test:phase6c":"npm run build && npx tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"npm run build && npx tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:promises":"npm run build && npm run build:beam && npx tsx tests/promises.test.ts","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:cf-deploy":"npx vitest run tests/cf-deploy-toml.test.ts","test:contracts":"npx tsx tests/contract/format-coverage.test.ts && npx tsx tests/contract/schema-contract.test.ts","test:cf-runtime":"npx vitest run tests/cf-runtime-kv.test.ts","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:byte-compat":"RUN_E2E=1 npx vitest run tests/v128-byte-compat.test.ts","test:cf-bindings":"npx vitest run tests/cf-bindings-parser.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:cf-overrides":"npx vitest run tests/cf-overrides.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:cf-mcp-bearer":"npx vitest run tests/cf-mcp-bearer.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:format-registry":"npx vitest run tests/format-registry.test.ts","test:beam:regressions":"npm run build && npx tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"npx vitest run tests/viewport-manager.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"npm run build && npx tsx tests/pagination-phase5.test.ts","test:pagination-phase5c":"npm run build && npx tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"npm run build && npx tsx tests/pagination-phase5d.test.ts","test:content-negotiation":"RUN_E2E=1 npx vitest run tests/http-content-negotiation.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"npx vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"npx vitest run tests/pagination-integration.test.ts","test:pagination-performance":"npx vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"npm run build && npx tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"npx vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","miniflare":"^4.20260507.1","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.3","@portel/photon-core":"^2.27.0","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","vitest":"^4.1.5","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^20.0.0","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^11.0.0"},"trustedDependencies":["better-sqlite3","esbuild"],"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.31.0_1778465771767_0.28903929124465155","host":"s3://npm-registry-packages-npm-production"}},"1.31.1":{"name":"@portel/photon","version":"1.31.1","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.31.1","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"c5a43aa45b638335c8f44a7bc5d3aed86d9d8028","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.31.1.tgz","fileCount":814,"integrity":"sha512-NvJv1LG8tJ964J6ejsJuinsbNmg5PcPcbUNmZtjZoKFgsXwhimb+9YtCdkCbBhu8oqz4X4hms1CqroY7nJmYSQ==","signatures":[{"sig":"MEUCIQCksPeWGWsMcFtiXgvplZlloYnzeqySlw0IquFrdkZlfAIgGusXlCa1Mbfrj2Mjrulfl+s2dp3t0FpGbiKSC8uSMNc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41824970},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"ef9ec6f2ec6c140ef2426da4a6107dd1c228162d","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:byte-compat && npm run test:format-registry && npm run test:content-negotiation && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:promises && npm run test:cf-bindings && npm run test:cf-runtime && npm run test:cf-overrides && npm run test:cf-deploy && npm run test:cf-mcp-bearer && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:dom":"npm run build && npm run build:beam && npx tsx tests/contract/dom-structure.test.ts","test:e2e":"npm run build && npx playwright test","test:a2ui":"npm run build && npx tsx tests/a2ui-mapper.test.ts && npx tsx tests/a2ui-e2e.test.ts && npx tsx tests/a2ui-renderer-script.test.ts","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","test:chain":"npm run test:all","test:smoke":"npx tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.integration.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","test:visual":"npm run build && npm run build:beam && npx tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"npm run build && npx tsx tests/phase6a-service-worker.test.ts","test:phase6b":"npm run build && npx tsx tests/phase6b-offline-state.test.ts","test:phase6c":"npm run build && npx tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"npm run build && npx tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:promises":"npm run build && npm run build:beam && npx tsx tests/promises.test.ts","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:cf-deploy":"npx vitest run tests/cf-deploy-toml.test.ts","test:contracts":"npx tsx tests/contract/format-coverage.test.ts && npx tsx tests/contract/schema-contract.test.ts","test:cf-runtime":"npx vitest run tests/cf-runtime-kv.test.ts","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:byte-compat":"RUN_E2E=1 npx vitest run tests/v128-byte-compat.test.ts","test:cf-bindings":"npx vitest run tests/cf-bindings-parser.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:cf-overrides":"npx vitest run tests/cf-overrides.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:cf-mcp-bearer":"npx vitest run tests/cf-mcp-bearer.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:format-registry":"npx vitest run tests/format-registry.test.ts","test:beam:regressions":"npm run build && npx tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"npx vitest run tests/viewport-manager.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"npm run build && npx tsx tests/pagination-phase5.test.ts","test:pagination-phase5c":"npm run build && npx tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"npm run build && npx tsx tests/pagination-phase5d.test.ts","test:content-negotiation":"RUN_E2E=1 npx vitest run tests/http-content-negotiation.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"npx vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"npx vitest run tests/pagination-integration.test.ts","test:pagination-performance":"npx vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"npm run build && npx tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"npx vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","miniflare":"^4.20260507.1","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.3","@portel/photon-core":"^2.27.0","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","vitest":"^4.1.5","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^20.0.0","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^11.0.0"},"trustedDependencies":["better-sqlite3","esbuild"],"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.31.1_1778471888448_0.28166299282447516","host":"s3://npm-registry-packages-npm-production"}},"1.31.2":{"name":"@portel/photon","version":"1.31.2","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.31.2","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"c79b2f6891bbcd4e2ee8cc0816a42c3c0653209e","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.31.2.tgz","fileCount":814,"integrity":"sha512-zNFN2effP+A7M10vAm7jpyVvcmhCarYqOHz6YzjXq6sHxwXxmXe7lSExOHOEupN12XpY2W24A00+C6hMY+xGWw==","signatures":[{"sig":"MEUCIQDF2ac9WfVtQQOWtDsu+cJGkmq41S4TaVwYNw0NWDeMpQIgNb1Svf0EDoHmQqz7b7Ybc6LigR2EwFKWMXDlE4opjPI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41825434},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"877f437d0d34408cae4ce17f7164f0c9d25978bc","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:byte-compat && npm run test:format-registry && npm run test:content-negotiation && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:promises && npm run test:cf-bindings && npm run test:cf-runtime && npm run test:cf-overrides && npm run test:cf-deploy && npm run test:cf-mcp-bearer && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:dom":"npm run build && npm run build:beam && npx tsx tests/contract/dom-structure.test.ts","test:e2e":"npm run build && npx playwright test","test:a2ui":"npm run build && npx tsx tests/a2ui-mapper.test.ts && npx tsx tests/a2ui-e2e.test.ts && npx tsx tests/a2ui-renderer-script.test.ts","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","test:chain":"npm run test:all","test:smoke":"npx tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.integration.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","test:visual":"npm run build && npm run build:beam && npx tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"npm run build && npx tsx tests/phase6a-service-worker.test.ts","test:phase6b":"npm run build && npx tsx tests/phase6b-offline-state.test.ts","test:phase6c":"npm run build && npx tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"npm run build && npx tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:promises":"npm run build && npm run build:beam && npx tsx tests/promises.test.ts","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:cf-deploy":"npx vitest run tests/cf-deploy-toml.test.ts","test:contracts":"npx tsx tests/contract/format-coverage.test.ts && npx tsx tests/contract/schema-contract.test.ts","test:cf-runtime":"npx vitest run tests/cf-runtime-kv.test.ts","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:byte-compat":"RUN_E2E=1 npx vitest run tests/v128-byte-compat.test.ts","test:cf-bindings":"npx vitest run tests/cf-bindings-parser.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:cf-overrides":"npx vitest run tests/cf-overrides.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:cf-mcp-bearer":"npx vitest run tests/cf-mcp-bearer.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:format-registry":"npx vitest run tests/format-registry.test.ts","test:beam:regressions":"npm run build && npx tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"npx vitest run tests/viewport-manager.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"npm run build && npx tsx tests/pagination-phase5.test.ts","test:pagination-phase5c":"npm run build && npx tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"npm run build && npx tsx tests/pagination-phase5d.test.ts","test:content-negotiation":"RUN_E2E=1 npx vitest run tests/http-content-negotiation.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"npx vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"npx vitest run tests/pagination-integration.test.ts","test:pagination-performance":"npx vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"npm run build && npx tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"npx vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","miniflare":"^4.20260507.1","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.3","@portel/photon-core":"^2.27.0","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","vitest":"^4.1.5","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^20.0.0","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^11.0.0"},"trustedDependencies":["better-sqlite3","esbuild"],"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.31.2_1778473128001_0.39286853279755696","host":"s3://npm-registry-packages-npm-production"}},"1.32.1":{"name":"@portel/photon","version":"1.32.1","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.32.1","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"67bc55e083f4144a53e700e29b161793f0b38e68","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.32.1.tgz","fileCount":814,"integrity":"sha512-UIGUguq/YTPFYn92OCaN2enuyMi6wXvwb5dZJfC5R7RBZ+q8t9J4I29u9sUDn+B7iuGzzc9QsOPAfcNlT+ffOA==","signatures":[{"sig":"MEUCIA9MNnPHmfuLK6zk57FYFbeAdrpMrzwEPogIvUe+TL/wAiEAlSHRw6Vm/GTLEN3uoEWKJW5ftaPyDK9wKDwhB3j0iFc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41867562},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"c275a56dcc842435a38069d5bdcdc7c794d54473","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:byte-compat && npm run test:format-registry && npm run test:content-negotiation && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:promises && npm run test:cf-bindings && npm run test:cf-runtime && npm run test:cf-overrides && npm run test:cf-deploy && npm run test:cf-mcp-bearer && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:dom":"npm run build && npm run build:beam && npx tsx tests/contract/dom-structure.test.ts","test:e2e":"npm run build && npx playwright test","test:a2ui":"npm run build && npx tsx tests/a2ui-mapper.test.ts && npx tsx tests/a2ui-e2e.test.ts && npx tsx tests/a2ui-renderer-script.test.ts","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","test:chain":"npm run test:all","test:smoke":"npx tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.integration.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","test:visual":"npm run build && npm run build:beam && npx tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"npm run build && npx tsx tests/phase6a-service-worker.test.ts","test:phase6b":"npm run build && npx tsx tests/phase6b-offline-state.test.ts","test:phase6c":"npm run build && npx tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"npm run build && npx tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:promises":"npm run build && npm run build:beam && npx tsx tests/promises.test.ts","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:cf-deploy":"npx vitest run tests/cf-deploy-toml.test.ts","test:contracts":"npx tsx tests/contract/format-coverage.test.ts && npx tsx tests/contract/schema-contract.test.ts","test:cf-runtime":"npx vitest run tests/cf-runtime-kv.test.ts","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:byte-compat":"RUN_E2E=1 npx vitest run tests/v128-byte-compat.test.ts","test:cf-bindings":"npx vitest run tests/cf-bindings-parser.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:cf-overrides":"npx vitest run tests/cf-overrides.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:cf-mcp-bearer":"npx vitest run tests/cf-mcp-bearer.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:format-registry":"npx vitest run tests/format-registry.test.ts","test:beam:regressions":"npm run build && npx tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"npx vitest run tests/viewport-manager.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"npm run build && npx tsx tests/pagination-phase5.test.ts","test:pagination-phase5c":"npm run build && npx tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"npm run build && npx tsx tests/pagination-phase5d.test.ts","test:content-negotiation":"RUN_E2E=1 npx vitest run tests/http-content-negotiation.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"npx vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"npx vitest run tests/pagination-integration.test.ts","test:pagination-performance":"npx vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"npm run build && npx tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"npx vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","miniflare":"^4.20260507.1","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.3","@portel/photon-core":"^2.27.0","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","vitest":"^4.1.5","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^20.0.0","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^11.0.0"},"trustedDependencies":["better-sqlite3","esbuild"],"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.32.1_1778592121549_0.34328034563250065","host":"s3://npm-registry-packages-npm-production"}},"1.32.2":{"name":"@portel/photon","version":"1.32.2","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.32.2","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"c58ac597733f4004d4c5864631d226024d03185b","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.32.2.tgz","fileCount":814,"integrity":"sha512-seqxqpqmkJMaWW8HMckQY/LH/rov2U3vIvaVrb5A7slaq2QOo7/Aq9aSpjmdJj99ajDkmgxAmOLXVwztvprStg==","signatures":[{"sig":"MEYCIQCJ6TkU2GY1XXqEN1YfI5xWuvNLmXAhTX8E2I1mXYstFwIhAOSY8tfILHSir052E6fYnrFQ4Ol4d8JNbFPhQDdy66Ny","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41867562},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"36d85bc2a1ef5fc656a992313f0b77eeb84383bb","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:byte-compat && npm run test:format-registry && npm run test:content-negotiation && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:promises && npm run test:cf-bindings && npm run test:cf-runtime && npm run test:cf-overrides && npm run test:cf-deploy && npm run test:cf-mcp-bearer && npm run test:readme","test:cli":"npx tsx tests/cli-runner.test.ts","test:dom":"npm run build && npm run build:beam && npx tsx tests/contract/dom-structure.test.ts","test:e2e":"npm run build && npx playwright test","test:a2ui":"npm run build && npx tsx tests/a2ui-mapper.test.ts && npx tsx tests/a2ui-e2e.test.ts && npx tsx tests/a2ui-renderer-script.test.ts","test:beam":"npm run build && npx tsx tests/beam/rendering.test.ts","test:load":"npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","test:chain":"npm run test:all","test:smoke":"npx tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam","test:e2e:ui":"npm run build && npx playwright test --ui","test:github":"npm run build && npx tsx tests/github-issues.integration.ts","test:loader":"npx tsx tests/loader.test.ts","test:logger":"npx tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"npx tsx tests/schema-extractor.test.ts","test:server":"npx tsx tests/server.test.ts","test:sqlite":"npm run build && npx tsx tests/sqlite.test.ts","test:visual":"npm run build && npm run build:beam && npx tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"npm run build && npx tsx tests/phase6a-service-worker.test.ts","test:phase6b":"npm run build && npx tsx tests/phase6b-offline-state.test.ts","test:phase6c":"npm run build && npx tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"npm run build && npx tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit","test:promises":"npm run build && npm run build:beam && npx tsx tests/promises.test.ts","test:security":"npx tsx tests/security.test.ts","prepublishOnly":"node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam","test:cf-deploy":"npx vitest run tests/cf-deploy-toml.test.ts","test:contracts":"npx tsx tests/contract/format-coverage.test.ts && npx tsx tests/contract/schema-contract.test.ts","test:cf-runtime":"npx vitest run tests/cf-runtime-kv.test.ts","test:github-ref":"npx tsx tests/github-ref-install.test.ts","test:mcp-config":"npx tsx tests/mcp-configuration.test.ts","test:validation":"npx tsx tests/validation.test.ts","test:bridge:beam":"npx tsx tests/bridge/beam-integration.test.ts","test:byte-compat":"RUN_E2E=1 npx vitest run tests/v128-byte-compat.test.ts","test:cf-bindings":"npx vitest run tests/cf-bindings-parser.test.ts","test:integration":"npx tsx tests/integration.test.ts","test:marketplace":"npx tsx tests/marketplace-manager.test.ts","test:zero-config":"npx tsx tests/zero-config.test.ts","test:cf-overrides":"npx vitest run tests/cf-overrides.test.ts","test:ui-rendering":"npx tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"npx tsx tests/ui-resources.test.ts","test:cf-mcp-bearer":"npx vitest run tests/cf-mcp-bearer.test.ts","test:daemon-buffer":"npx tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"npx tsx tests/daemon-pubsub.test.ts","test:error-handler":"npx tsx tests/error-handler.test.ts","test:daemon-watcher":"npx tsx tests/daemon-watcher.test.ts","test:instance-drift":"npx tsx tests/instance-drift.test.ts","test:bridge:protocol":"npx tsx tests/bridge/protocol.test.ts","test:client-adaptive":"npx tsx tests/client-adaptive.test.ts","test:format-registry":"npx vitest run tests/format-registry.test.ts","test:beam:regressions":"npm run build && npx tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"npx vitest run tests/viewport-manager.test.ts","test:bridge:generation":"npx tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"npx tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"npm run build && npx tsx tests/pagination-phase5.test.ts","test:pagination-phase5c":"npm run build && npx tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"npm run build && npx tsx tests/pagination-phase5d.test.ts","test:content-negotiation":"RUN_E2E=1 npx vitest run tests/http-content-negotiation.test.ts","test:loader:comprehensive":"npx tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"npx tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"npx vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"npx vitest run tests/pagination-integration.test.ts","test:pagination-performance":"npx vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"npm run build && npx tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"npx vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"minimatch":"^10.2.1"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","miniflare":"^4.20260507.1","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.3","@portel/photon-core":"^2.27.0","@modelcontextprotocol/sdk":"^1.25.2","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^5.85.0","eslint":"^10.0.1","vitest":"^4.1.5","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^20.0.0","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^11.0.0"},"trustedDependencies":["better-sqlite3","esbuild"],"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.32.2_1778596355988_0.3693337913150514","host":"s3://npm-registry-packages-npm-production"}},"1.32.3":{"name":"@portel/photon","version":"1.32.3","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":"Portel Dev","license":"MIT","_id":"@portel/photon@1.32.3","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"6a307d906aff555017e76fcd1d9b26d5aa89de87","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.32.3.tgz","fileCount":814,"integrity":"sha512-dALGdNbSWCLBZhYtz22GIT1mGQiDKyTwrPEB+Yy57ukcV49INOm7zgd34lBKv9afJRn5UUuYPfMX+pNaq0AjHQ==","signatures":[{"sig":"MEUCIDdQhF0hyfyK+rpxlLrFH+oEfPcDoUxJ+BQplJmtsF+0AiEA84Mo8BD0TuZxomRQJsS+7HpglN/KccxcEL5xkasJ1sY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42006658},"main":"dist/index.js","type":"module","shasum":"6a307d906aff555017e76fcd1d9b26d5aa89de87","engines":{"bun":">=1.0.0","node":">=20.0.0"},"scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"bun run build && bun run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"bun run build && bun run test:security && bun run test:schema && bun run test:marketplace && bun run test:loader && bun run test:server && bun run test:integration && bun run test:byte-compat && bun run test:format-registry && bun run test:content-negotiation && bun run test:ui-resources && bun run test:client-adaptive && bun run test:zero-config && bun run test:mcp-config && bun run test:cli && bun run test:logger && bun run test:error-handler && bun run test:validation && bun run test:daemon-pubsub && bun run test:daemon-buffer && bun run test:instance-drift && bun run test:daemon-watcher && bun run test:ui-rendering && bun run test:photon-instance-manager && bun run test:viewport-aware-proxy && bun run test:viewport-manager && bun run test:pagination-integration && bun run test:pagination-performance && bun run test:pagination-phase5 && bun run test:pagination-phase5c && bun run test:pagination-phase5d && bun run test:phase6a && bun run test:phase6b && bun run test:phase6c && bun run test:phase6d && bun run test:promises && bun run test:cf-bindings && bun run test:cf-runtime && bun run test:cf-overrides && bun run test:cf-deploy && bun run test:cf-mcp-bearer && bun run test:readme","test:cli":"tsx tests/cli-runner.test.ts","test:dom":"bun run build && bun run build:beam && tsx tests/contract/dom-structure.test.ts","test:e2e":"bun run build && playwright test","test:a2ui":"bun run build && tsx tests/a2ui-mapper.test.ts && tsx tests/a2ui-e2e.test.ts && tsx tests/a2ui-renderer-script.test.ts","test:beam":"bun run build && tsx tests/beam/rendering.test.ts","test:load":"bun run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"tsx tests/schema-extractor.test.ts && tsx tests/marketplace-manager.test.ts && tsx tests/loader.test.ts && tsx tests/loader.comprehensive.test.ts && tsx tests/server.test.ts && tsx tests/server.comprehensive.test.ts && tsx tests/cli-runner.test.ts && tsx tests/cli.comprehensive.test.ts && tsx tests/logger.test.ts && tsx tests/error-handler.test.ts && tsx tests/validation.test.ts && tsx tests/daemon-pubsub.test.ts && tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","test:chain":"bun run test:all","test:smoke":"tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"bun run test:bridge:generation && bun run test:bridge:protocol && bun run test:bridge:beam","test:e2e:ui":"bun run build && playwright test --ui","test:github":"bun run build && tsx tests/github-issues.integration.ts","test:loader":"tsx tests/loader.test.ts","test:logger":"tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"tsx tests/schema-extractor.test.ts","test:server":"tsx tests/server.test.ts","test:sqlite":"bun run build && tsx tests/sqlite.test.ts","test:visual":"bun run build && bun run build:beam && tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"bun run build && tsx tests/phase6a-service-worker.test.ts","test:phase6b":"bun run build && tsx tests/phase6b-offline-state.test.ts","test:phase6c":"bun run build && tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"bun run build && tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"bun run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html bun run test:unit","test:promises":"bun run build && bun run build:beam && tsx tests/promises.test.ts","test:security":"tsx tests/security.test.ts","prepublishOnly":"bun run verify:publish-version && node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is linked. Run: bun remove '+d+' && bun add '+d); process.exit(1);}}\" && bun run build && bun run build:beam","test:cf-deploy":"vitest run tests/cf-deploy-toml.test.ts","test:contracts":"tsx tests/contract/format-coverage.test.ts && tsx tests/contract/schema-contract.test.ts","test:cf-runtime":"vitest run tests/cf-runtime-kv.test.ts","test:github-ref":"tsx tests/github-ref-install.test.ts","test:mcp-config":"tsx tests/mcp-configuration.test.ts","test:validation":"tsx tests/validation.test.ts","test:bridge:beam":"tsx tests/bridge/beam-integration.test.ts","test:byte-compat":"RUN_E2E=1 vitest run tests/v128-byte-compat.test.ts","test:cf-bindings":"vitest run tests/cf-bindings-parser.test.ts","test:integration":"tsx tests/integration.test.ts","test:marketplace":"tsx tests/marketplace-manager.test.ts","test:zero-config":"tsx tests/zero-config.test.ts","test:cf-overrides":"vitest run tests/cf-overrides.test.ts","test:ui-rendering":"tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"tsx tests/ui-resources.test.ts","test:cf-mcp-bearer":"vitest run tests/cf-mcp-bearer.test.ts","test:daemon-buffer":"tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"tsx tests/daemon-pubsub.test.ts","test:error-handler":"tsx tests/error-handler.test.ts","test:daemon-watcher":"tsx tests/daemon-watcher.test.ts","test:instance-drift":"tsx tests/instance-drift.test.ts","test:version-notify":"tsx tests/version-notify.test.ts","test:bridge:protocol":"tsx tests/bridge/protocol.test.ts","test:client-adaptive":"tsx tests/client-adaptive.test.ts","test:format-registry":"vitest run tests/format-registry.test.ts","test:streamable-http":"tsx tests/streamable-http-transport.test.ts","test:beam:regressions":"bun run build && tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"vitest run tests/viewport-manager.test.ts","test:bridge:generation":"tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"bun run build && tsx tests/pagination-phase5.test.ts","verify:publish-version":"node scripts/verify-publish-version.mjs","test:pagination-phase5c":"bun run build && tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"bun run build && tsx tests/pagination-phase5d.test.ts","test:content-negotiation":"RUN_E2E=1 vitest run tests/http-content-negotiation.test.ts","test:loader:comprehensive":"tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"vitest run tests/pagination-integration.test.ts","test:pagination-performance":"vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"bun run build && tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"defu":"^6.1.7","hono":"^4.12.18","flatted":"^3.4.2","fast-uri":"^3.1.2","basic-ftp":"^6.0.1","minimatch":"^10.2.1","picomatch":"^4.0.4","handlebars":"^4.7.9","ip-address":"^10.2.0","path-to-regexp":"^8.4.2","brace-expansion":"^5.0.6","@hono/node-server":"^1.19.13","express-rate-limit":"^8.2.2"},"_integrity":"sha512-dALGdNbSWCLBZhYtz22GIT1mGQiDKyTwrPEB+Yy57ukcV49INOm7zgd34lBKv9afJRn5UUuYPfMX+pNaq0AjHQ==","repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"10.8.3","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","miniflare":"^4.20260507.1","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.7","@portel/photon-core":"^2.27.0","@modelcontextprotocol/sdk":"^1.29.0","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"packageManager":"bun@1.2.20","devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^6.13.1","eslint":"^10.3.0","vitest":"^4.1.5","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^20.0.0","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^11.0.0"},"trustedDependencies":["better-sqlite3","esbuild"],"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.32.3_1778683235692_0.7475200080003896","host":"s3://npm-registry-packages-npm-production"}},"1.32.4":{"name":"@portel/photon","version":"1.32.4","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":"Portel Dev","license":"MIT","_id":"@portel/photon@1.32.4","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"c05c3116f04921416a6dc1f07eb94f41d85cf8b4","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.32.4.tgz","fileCount":814,"integrity":"sha512-x6hZ3+9f2J2tdYhb62cvKn6X6b/e3O/KUsJWkvD2rj/E0Ipff8QZUkMwknErzaXTJwdos68t5YZed/3iZ9EiVA==","signatures":[{"sig":"MEYCIQDr1PpZvDrrx2yJJLDrVbdQF0c8YDZU9jAhaReqkLX1GQIhAIdRvqElwZCc63Co/kg3/rmRGFzdh6+8iHNgsphtKiL5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42017492},"main":"dist/index.js","type":"module","shasum":"c05c3116f04921416a6dc1f07eb94f41d85cf8b4","engines":{"bun":">=1.0.0","node":">=20.0.0"},"scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"bun run build && bun run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"bun run build && bun run test:security && bun run test:schema && bun run test:marketplace && bun run test:loader && bun run test:server && bun run test:integration && bun run test:byte-compat && bun run test:format-registry && bun run test:content-negotiation && bun run test:ui-resources && bun run test:client-adaptive && bun run test:zero-config && bun run test:mcp-config && bun run test:cli && bun run test:logger && bun run test:error-handler && bun run test:validation && bun run test:daemon-pubsub && bun run test:daemon-buffer && bun run test:instance-drift && bun run test:daemon-watcher && bun run test:ui-rendering && bun run test:photon-instance-manager && bun run test:viewport-aware-proxy && bun run test:viewport-manager && bun run test:pagination-integration && bun run test:pagination-performance && bun run test:pagination-phase5 && bun run test:pagination-phase5c && bun run test:pagination-phase5d && bun run test:phase6a && bun run test:phase6b && bun run test:phase6c && bun run test:phase6d && bun run test:promises && bun run test:cf-bindings && bun run test:cf-runtime && bun run test:cf-overrides && bun run test:cf-deploy && bun run test:cf-mcp-bearer && bun run test:readme","test:cli":"tsx tests/cli-runner.test.ts","test:dom":"bun run build && bun run build:beam && tsx tests/contract/dom-structure.test.ts","test:e2e":"bun run build && playwright test","test:a2ui":"bun run build && tsx tests/a2ui-mapper.test.ts && tsx tests/a2ui-e2e.test.ts && tsx tests/a2ui-renderer-script.test.ts","test:beam":"bun run build && tsx tests/beam/rendering.test.ts","test:load":"bun run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"tsx tests/schema-extractor.test.ts && tsx tests/marketplace-manager.test.ts && tsx tests/loader.test.ts && tsx tests/loader.comprehensive.test.ts && tsx tests/server.test.ts && tsx tests/server.comprehensive.test.ts && tsx tests/cli-runner.test.ts && tsx tests/cli.comprehensive.test.ts && tsx tests/logger.test.ts && tsx tests/error-handler.test.ts && tsx tests/validation.test.ts && tsx tests/daemon-pubsub.test.ts && tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","test:chain":"bun run test:all","test:smoke":"tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"bun run test:bridge:generation && bun run test:bridge:protocol && bun run test:bridge:beam","test:e2e:ui":"bun run build && playwright test --ui","test:github":"bun run build && tsx tests/github-issues.integration.ts","test:loader":"tsx tests/loader.test.ts","test:logger":"tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"tsx tests/schema-extractor.test.ts","test:server":"tsx tests/server.test.ts","test:sqlite":"bun run build && tsx tests/sqlite.test.ts","test:visual":"bun run build && bun run build:beam && tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"bun run build && tsx tests/phase6a-service-worker.test.ts","test:phase6b":"bun run build && tsx tests/phase6b-offline-state.test.ts","test:phase6c":"bun run build && tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"bun run build && tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"bun run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html bun run test:unit","test:promises":"bun run build && bun run build:beam && tsx tests/promises.test.ts","test:security":"tsx tests/security.test.ts","prepublishOnly":"bun run verify:publish-version && node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is linked. Run: bun remove '+d+' && bun add '+d); process.exit(1);}}\" && bun run build && bun run build:beam","test:cf-deploy":"vitest run tests/cf-deploy-toml.test.ts","test:contracts":"tsx tests/contract/format-coverage.test.ts && tsx tests/contract/schema-contract.test.ts","test:cf-runtime":"vitest run tests/cf-runtime-kv.test.ts","test:github-ref":"tsx tests/github-ref-install.test.ts","test:mcp-config":"tsx tests/mcp-configuration.test.ts","test:validation":"tsx tests/validation.test.ts","test:bridge:beam":"tsx tests/bridge/beam-integration.test.ts","test:byte-compat":"RUN_E2E=1 vitest run tests/v128-byte-compat.test.ts","test:cf-bindings":"vitest run tests/cf-bindings-parser.test.ts","test:integration":"tsx tests/integration.test.ts","test:marketplace":"tsx tests/marketplace-manager.test.ts","test:zero-config":"tsx tests/zero-config.test.ts","test:cf-overrides":"vitest run tests/cf-overrides.test.ts","test:ui-rendering":"tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"tsx tests/ui-resources.test.ts","test:cf-mcp-bearer":"vitest run tests/cf-mcp-bearer.test.ts","test:daemon-buffer":"tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"tsx tests/daemon-pubsub.test.ts","test:error-handler":"tsx tests/error-handler.test.ts","test:daemon-watcher":"tsx tests/daemon-watcher.test.ts","test:instance-drift":"tsx tests/instance-drift.test.ts","test:version-notify":"tsx tests/version-notify.test.ts","test:bridge:protocol":"tsx tests/bridge/protocol.test.ts","test:client-adaptive":"tsx tests/client-adaptive.test.ts","test:format-registry":"vitest run tests/format-registry.test.ts","test:streamable-http":"tsx tests/streamable-http-transport.test.ts","test:beam:regressions":"bun run build && tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"vitest run tests/viewport-manager.test.ts","test:bridge:generation":"tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"bun run build && tsx tests/pagination-phase5.test.ts","verify:publish-version":"node scripts/verify-publish-version.mjs","test:pagination-phase5c":"bun run build && tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"bun run build && tsx tests/pagination-phase5d.test.ts","test:content-negotiation":"RUN_E2E=1 vitest run tests/http-content-negotiation.test.ts","test:loader:comprehensive":"tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"vitest run tests/pagination-integration.test.ts","test:pagination-performance":"vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"bun run build && tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"defu":"^6.1.7","hono":"^4.12.18","flatted":"^3.4.2","fast-uri":"^3.1.2","basic-ftp":"^6.0.1","minimatch":"^10.2.1","picomatch":"^4.0.4","handlebars":"^4.7.9","ip-address":"^10.2.0","path-to-regexp":"^8.4.2","brace-expansion":"^5.0.6","@hono/node-server":"^1.19.13","express-rate-limit":"^8.2.2"},"_integrity":"sha512-x6hZ3+9f2J2tdYhb62cvKn6X6b/e3O/KUsJWkvD2rj/E0Ipff8QZUkMwknErzaXTJwdos68t5YZed/3iZ9EiVA==","repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"10.8.3","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","miniflare":"^4.20260507.1","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.7","@portel/photon-core":"^2.27.0","@modelcontextprotocol/sdk":"^1.29.0","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"packageManager":"bun@1.2.20","devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^6.13.1","eslint":"^10.3.0","vitest":"^4.1.5","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^20.0.0","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^11.0.0"},"trustedDependencies":["better-sqlite3","esbuild"],"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.32.4_1778771230568_0.8441812672467113","host":"s3://npm-registry-packages-npm-production"}},"1.32.5":{"name":"@portel/photon","version":"1.32.5","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":"Portel Dev","license":"MIT","_id":"@portel/photon@1.32.5","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"662b8fdb7a40359e520254fb6e51bc2bc1ff02a2","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.32.5.tgz","fileCount":822,"integrity":"sha512-hKdUeNTycMMjeEYBZsP9ButSYOQhJm9Ezp88jRCxuULXkTXOiz2s6mC1iYm+7a7GV4q0ydZhCFowynFaBBzAqA==","signatures":[{"sig":"MEQCID5NpqnEjtKwLfmhcUdIMVlL6tjxaDt0Q9LJ16GSnRe0AiBxzVp4JWp9PAHGyZmJLwL9w1Oyi/pu5qHKf1mdb/cK1g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42150867},"main":"dist/index.js","type":"module","shasum":"662b8fdb7a40359e520254fb6e51bc2bc1ff02a2","engines":{"bun":">=1.0.0","node":">=20.0.0"},"scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"bun run build && bun run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"bun run build && bun run test:security && bun run test:schema && bun run test:marketplace && bun run test:loader && bun run test:server && bun run test:integration && bun run test:byte-compat && bun run test:format-registry && bun run test:content-negotiation && bun run test:ui-resources && bun run test:client-adaptive && bun run test:zero-config && bun run test:mcp-config && bun run test:cli && bun run test:intent && bun run test:logger && bun run test:error-handler && bun run test:validation && bun run test:daemon-pubsub && bun run test:daemon-buffer && bun run test:instance-drift && bun run test:daemon-watcher && bun run test:ui-rendering && bun run test:photon-instance-manager && bun run test:viewport-aware-proxy && bun run test:viewport-manager && bun run test:pagination-integration && bun run test:pagination-performance && tsx tests/pagination-phase5.test.ts && tsx tests/pagination-phase5c.test.ts && tsx tests/pagination-phase5d.test.ts && tsx tests/phase6a-service-worker.test.ts && tsx tests/phase6b-offline-state.test.ts && tsx tests/phase6c-offline-sync.test.ts && tsx tests/phase6d-integration.test.ts && tsx tests/promises.test.ts && bun run test:cf-bindings && bun run test:cf-runtime && bun run test:cf-overrides && bun run test:cf-deploy && bun run test:cf-mcp-bearer && bun run test:readme","test:cli":"tsx tests/cli-runner.test.ts","test:dom":"bun run build && bun run build:beam && tsx tests/contract/dom-structure.test.ts","test:e2e":"bun run build && playwright test","test:a2ui":"bun run build && tsx tests/a2ui-mapper.test.ts && tsx tests/a2ui-e2e.test.ts && tsx tests/a2ui-renderer-script.test.ts","test:beam":"bun run build && tsx tests/beam/rendering.test.ts","test:load":"bun run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"tsx tests/schema-extractor.test.ts && tsx tests/marketplace-manager.test.ts && tsx tests/loader.test.ts && tsx tests/loader.comprehensive.test.ts && tsx tests/server.test.ts && tsx tests/server.comprehensive.test.ts && tsx tests/cli-runner.test.ts && tsx tests/cli.comprehensive.test.ts && tsx tests/logger.test.ts && tsx tests/error-handler.test.ts && tsx tests/validation.test.ts && tsx tests/daemon-pubsub.test.ts && tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","test:chain":"bun run test:all","test:smoke":"tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"bun run test:bridge:generation && bun run test:bridge:protocol && bun run test:bridge:beam","test:e2e:ui":"bun run build && playwright test --ui","test:github":"bun run build && tsx tests/github-issues.integration.ts","test:intent":"tsx tests/intent-contract.test.ts","test:loader":"tsx tests/loader.test.ts && tsx tests/runtime-config-store.test.ts","test:logger":"tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"tsx tests/schema-extractor.test.ts","test:server":"tsx tests/server.test.ts","test:sqlite":"bun run build && tsx tests/sqlite.test.ts","test:visual":"bun run build && bun run build:beam && tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"bun run build && tsx tests/phase6a-service-worker.test.ts","test:phase6b":"bun run build && tsx tests/phase6b-offline-state.test.ts","test:phase6c":"bun run build && tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"bun run build && tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"bun run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html bun run test:unit","test:promises":"bun run build && bun run build:beam && tsx tests/promises.test.ts","test:security":"tsx tests/security.test.ts","prepublishOnly":"bun run verify:publish-version && node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is linked. Run: bun remove '+d+' && bun add '+d); process.exit(1);}}\" && bun run build && bun run build:beam","test:cf-deploy":"vitest run tests/cf-deploy-toml.test.ts","test:contracts":"tsx tests/contract/format-coverage.test.ts && tsx tests/contract/schema-contract.test.ts","test:cf-runtime":"vitest run tests/cf-runtime-kv.test.ts","test:github-ref":"tsx tests/github-ref-install.test.ts","test:mcp-config":"tsx tests/mcp-configuration.test.ts","test:validation":"tsx tests/validation.test.ts","test:bridge:beam":"tsx tests/bridge/beam-integration.test.ts","test:byte-compat":"RUN_E2E=1 vitest run tests/v128-byte-compat.test.ts","test:cf-bindings":"vitest run tests/cf-bindings-parser.test.ts","test:integration":"tsx tests/integration.test.ts","test:marketplace":"tsx tests/marketplace-manager.test.ts","test:zero-config":"tsx tests/zero-config.test.ts","test:cf-overrides":"vitest run tests/cf-overrides.test.ts","test:ui-rendering":"tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"tsx tests/ui-resources.test.ts","test:cf-mcp-bearer":"vitest run tests/cf-mcp-bearer.test.ts","test:daemon-buffer":"tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"tsx tests/daemon-pubsub.test.ts","test:error-handler":"tsx tests/error-handler.test.ts","test:daemon-watcher":"tsx tests/daemon-watcher.test.ts && tsx tests/schedule-missed-fire.test.ts","test:instance-drift":"tsx tests/instance-drift.test.ts","test:version-notify":"tsx tests/version-notify.test.ts","test:bridge:protocol":"tsx tests/bridge/protocol.test.ts","test:client-adaptive":"tsx tests/client-adaptive.test.ts","test:format-registry":"vitest run tests/format-registry.test.ts","test:streamable-http":"tsx tests/streamable-http-transport.test.ts","test:beam:regressions":"bun run build && tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"vitest run tests/viewport-manager.test.ts","test:bridge:generation":"tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"bun run build && tsx tests/pagination-phase5.test.ts","verify:publish-version":"node scripts/verify-publish-version.mjs","test:pagination-phase5c":"bun run build && tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"bun run build && tsx tests/pagination-phase5d.test.ts","test:content-negotiation":"RUN_E2E=1 vitest run tests/http-content-negotiation.test.ts","test:loader:comprehensive":"tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"vitest run tests/pagination-integration.test.ts","test:pagination-performance":"vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"bun run build && tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"defu":"^6.1.7","hono":"^4.12.18","flatted":"^3.4.2","fast-uri":"^3.1.2","basic-ftp":"^6.0.1","minimatch":"^10.2.1","picomatch":"^4.0.4","handlebars":"^4.7.9","ip-address":"^10.2.0","path-to-regexp":"^8.4.2","brace-expansion":"^5.0.6","@hono/node-server":"^1.19.13","express-rate-limit":"^8.2.2"},"_integrity":"sha512-hKdUeNTycMMjeEYBZsP9ButSYOQhJm9Ezp88jRCxuULXkTXOiz2s6mC1iYm+7a7GV4q0ydZhCFowynFaBBzAqA==","repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"10.8.3","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","miniflare":"^4.20260507.1","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.7","@portel/photon-core":"^2.27.0","@modelcontextprotocol/sdk":"^1.29.0","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"packageManager":"bun@1.2.20","devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^6.13.1","eslint":"^10.3.0","vitest":"^4.1.5","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^20.0.0","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^11.0.0"},"trustedDependencies":["better-sqlite3","esbuild"],"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.32.5_1778921100480_0.5302838832496952","host":"s3://npm-registry-packages-npm-production"}},"1.32.6":{"name":"@portel/photon","version":"1.32.6","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":"Portel Dev","license":"MIT","_id":"@portel/photon@1.32.6","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"a05df537eadd863e3c48adc273134e61206a491f","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.32.6.tgz","fileCount":822,"integrity":"sha512-m7S1Wvj5YUCWjLEEw8OpzKDA1RIPNlwYg2oakhddsfu2OW0asiDY4tQcBj8p47N0BPmgy5b6cnvr39Nc8gL0bA==","signatures":[{"sig":"MEUCIBxeQAcC8i4oS8K8ZbFQ8lTLH9e7018oRHoaKGStYrHcAiEA4H1F1/Obusviz2iK8y8PIq5nIBK3nxeCbZFTNpe/5n4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42164644},"main":"dist/index.js","type":"module","shasum":"a05df537eadd863e3c48adc273134e61206a491f","engines":{"bun":">=1.0.0","node":">=20.0.0"},"scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"bun run build && bun run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"bun run build && bun run test:security && bun run test:schema && bun run test:marketplace && bun run test:loader && bun run test:server && bun run test:integration && bun run test:byte-compat && bun run test:format-registry && bun run test:content-negotiation && bun run test:ui-resources && bun run test:client-adaptive && bun run test:zero-config && bun run test:mcp-config && bun run test:cli && bun run test:intent && bun run test:logger && bun run test:error-handler && bun run test:validation && bun run test:daemon-pubsub && bun run test:daemon-buffer && bun run test:instance-drift && bun run test:daemon-watcher && bun run test:ui-rendering && bun run test:photon-instance-manager && bun run test:viewport-aware-proxy && bun run test:viewport-manager && bun run test:pagination-integration && bun run test:pagination-performance && tsx tests/pagination-phase5.test.ts && tsx tests/pagination-phase5c.test.ts && tsx tests/pagination-phase5d.test.ts && tsx tests/phase6a-service-worker.test.ts && tsx tests/phase6b-offline-state.test.ts && tsx tests/phase6c-offline-sync.test.ts && tsx tests/phase6d-integration.test.ts && tsx tests/promises.test.ts && bun run test:cf-bindings && bun run test:cf-runtime && bun run test:cf-overrides && bun run test:cf-deploy && bun run test:cf-mcp-bearer && bun run test:readme","test:cli":"tsx tests/cli-runner.test.ts && tsx tests/ps-parse-target.test.ts","test:dom":"bun run build && bun run build:beam && tsx tests/contract/dom-structure.test.ts","test:e2e":"bun run build && playwright test","test:a2ui":"bun run build && tsx tests/a2ui-mapper.test.ts && tsx tests/a2ui-e2e.test.ts && tsx tests/a2ui-renderer-script.test.ts","test:beam":"bun run build && tsx tests/beam/rendering.test.ts","test:load":"bun run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"tsx tests/schema-extractor.test.ts && tsx tests/marketplace-manager.test.ts && tsx tests/loader.test.ts && tsx tests/loader.comprehensive.test.ts && tsx tests/server.test.ts && tsx tests/server.comprehensive.test.ts && tsx tests/cli-runner.test.ts && tsx tests/cli.comprehensive.test.ts && tsx tests/logger.test.ts && tsx tests/error-handler.test.ts && tsx tests/validation.test.ts && tsx tests/daemon-pubsub.test.ts && tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","test:chain":"bun run test:all","test:smoke":"tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"bun run test:bridge:generation && bun run test:bridge:protocol && bun run test:bridge:beam","test:e2e:ui":"bun run build && playwright test --ui","test:github":"bun run build && tsx tests/github-issues.integration.ts","test:intent":"tsx tests/intent-contract.test.ts","test:loader":"tsx tests/loader.test.ts && tsx tests/runtime-config-store.test.ts","test:logger":"tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"tsx tests/schema-extractor.test.ts","test:server":"tsx tests/server.test.ts && tsx tests/sse-client-app-fallback.test.ts","test:sqlite":"bun run build && tsx tests/sqlite.test.ts","test:visual":"bun run build && bun run build:beam && tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"bun run build && tsx tests/phase6a-service-worker.test.ts","test:phase6b":"bun run build && tsx tests/phase6b-offline-state.test.ts","test:phase6c":"bun run build && tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"bun run build && tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"bun run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html bun run test:unit","test:promises":"bun run build && bun run build:beam && tsx tests/promises.test.ts","test:security":"tsx tests/security.test.ts","prepublishOnly":"bun run verify:publish-version && node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is linked. Run: bun remove '+d+' && bun add '+d); process.exit(1);}}\" && bun run build && bun run build:beam","test:cf-deploy":"vitest run tests/cf-deploy-toml.test.ts","test:contracts":"tsx tests/contract/format-coverage.test.ts && tsx tests/contract/schema-contract.test.ts","test:cf-runtime":"vitest run tests/cf-runtime-kv.test.ts","test:github-ref":"tsx tests/github-ref-install.test.ts","test:mcp-config":"tsx tests/mcp-configuration.test.ts","test:validation":"tsx tests/validation.test.ts","test:bridge:beam":"tsx tests/bridge/beam-integration.test.ts","test:byte-compat":"RUN_E2E=1 vitest run tests/v128-byte-compat.test.ts","test:cf-bindings":"vitest run tests/cf-bindings-parser.test.ts","test:integration":"tsx tests/integration.test.ts","test:marketplace":"tsx tests/marketplace-manager.test.ts","test:zero-config":"tsx tests/zero-config.test.ts","test:cf-overrides":"vitest run tests/cf-overrides.test.ts","test:ui-rendering":"tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"tsx tests/ui-resources.test.ts","test:cf-mcp-bearer":"vitest run tests/cf-mcp-bearer.test.ts","test:daemon-buffer":"tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"tsx tests/daemon-pubsub.test.ts","test:error-handler":"tsx tests/error-handler.test.ts","test:daemon-watcher":"tsx tests/daemon-watcher.test.ts && tsx tests/schedule-missed-fire.test.ts","test:instance-drift":"tsx tests/instance-drift.test.ts","test:version-notify":"tsx tests/version-notify.test.ts","test:bridge:protocol":"tsx tests/bridge/protocol.test.ts","test:client-adaptive":"tsx tests/client-adaptive.test.ts","test:format-registry":"vitest run tests/format-registry.test.ts","test:streamable-http":"tsx tests/streamable-http-transport.test.ts","test:beam:regressions":"bun run build && tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"vitest run tests/viewport-manager.test.ts","test:bridge:generation":"tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"bun run build && tsx tests/pagination-phase5.test.ts","verify:publish-version":"node scripts/verify-publish-version.mjs","test:pagination-phase5c":"bun run build && tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"bun run build && tsx tests/pagination-phase5d.test.ts","test:content-negotiation":"RUN_E2E=1 vitest run tests/http-content-negotiation.test.ts","test:loader:comprehensive":"tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"vitest run tests/pagination-integration.test.ts","test:pagination-performance":"vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"bun run build && tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"defu":"^6.1.7","hono":"^4.12.18","flatted":"^3.4.2","fast-uri":"^3.1.2","basic-ftp":"^6.0.1","minimatch":"^10.2.1","picomatch":"^4.0.4","handlebars":"^4.7.9","ip-address":"^10.2.0","path-to-regexp":"^8.4.2","brace-expansion":"^5.0.6","@hono/node-server":"^1.19.13","express-rate-limit":"^8.2.2"},"_integrity":"sha512-m7S1Wvj5YUCWjLEEw8OpzKDA1RIPNlwYg2oakhddsfu2OW0asiDY4tQcBj8p47N0BPmgy5b6cnvr39Nc8gL0bA==","repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"10.8.3","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","miniflare":"^4.20260507.1","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.7","@portel/photon-core":"^2.27.0","@modelcontextprotocol/sdk":"^1.29.0","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"packageManager":"bun@1.2.20","devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^6.13.1","eslint":"^10.3.0","vitest":"^4.1.5","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^20.0.0","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^11.0.0"},"trustedDependencies":["better-sqlite3","esbuild"],"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.32.6_1779094016611_0.8726597185775025","host":"s3://npm-registry-packages-npm-production"}},"1.33.0":{"name":"@portel/photon","version":"1.33.0","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":"Portel Dev","license":"MIT","_id":"@portel/photon@1.33.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"be6a73cf016a21c64a267aba8dfc811b552eb2d5","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.33.0.tgz","fileCount":822,"integrity":"sha512-4rnEtYQyN743EoQdqkis1yzZPJRb760tAe+U4KNcjsH2viJ3UVqeQGvYCRGPGWEbWXgGErqHL+MZFNFNPfyLqw==","signatures":[{"sig":"MEUCIDXHB4yYphHXnmzrJ7IMSE1Mz1tD7Rqa/FleiHrsmI3NAiEAhz+5aWFF9LuV2HntoWgS2sL8zyQY7tbCIxxo8BtIuvM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42217204},"main":"dist/index.js","type":"module","shasum":"be6a73cf016a21c64a267aba8dfc811b552eb2d5","engines":{"bun":">=1.0.0","node":">=20.0.0"},"scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"bun run build && bun run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"bun run build && bun run test:security && bun run test:schema && bun run test:marketplace && bun run test:loader && bun run test:server && bun run test:integration && bun run test:byte-compat && bun run test:format-registry && bun run test:content-negotiation && bun run test:ui-resources && bun run test:client-adaptive && bun run test:zero-config && bun run test:mcp-config && bun run test:cli && bun run test:intent && bun run test:logger && bun run test:error-handler && bun run test:validation && bun run test:daemon-pubsub && bun run test:daemon-buffer && bun run test:instance-drift && bun run test:daemon-watcher && bun run test:ui-rendering && bun run test:photon-instance-manager && bun run test:viewport-aware-proxy && bun run test:viewport-manager && bun run test:pagination-integration && bun run test:pagination-performance && tsx tests/pagination-phase5.test.ts && tsx tests/pagination-phase5c.test.ts && tsx tests/pagination-phase5d.test.ts && tsx tests/phase6a-service-worker.test.ts && tsx tests/phase6b-offline-state.test.ts && tsx tests/phase6c-offline-sync.test.ts && tsx tests/phase6d-integration.test.ts && tsx tests/promises.test.ts && bun run test:cf-bindings && bun run test:cf-runtime && bun run test:cf-overrides && bun run test:cf-deploy && bun run test:cf-mcp-bearer && bun run test:readme","test:cli":"tsx tests/cli-runner.test.ts && tsx tests/ps-parse-target.test.ts","test:dom":"bun run build && bun run build:beam && tsx tests/contract/dom-structure.test.ts","test:e2e":"bun run build && playwright test","test:a2ui":"bun run build && tsx tests/a2ui-mapper.test.ts && tsx tests/a2ui-e2e.test.ts && tsx tests/a2ui-renderer-script.test.ts","test:beam":"bun run build && tsx tests/beam/rendering.test.ts","test:load":"bun run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"tsx tests/schema-extractor.test.ts && tsx tests/marketplace-manager.test.ts && tsx tests/loader.test.ts && tsx tests/loader.comprehensive.test.ts && tsx tests/server.test.ts && tsx tests/server.comprehensive.test.ts && tsx tests/cli-runner.test.ts && tsx tests/cli.comprehensive.test.ts && tsx tests/logger.test.ts && tsx tests/error-handler.test.ts && tsx tests/validation.test.ts && tsx tests/daemon-pubsub.test.ts && tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","test:chain":"bun run test:all","test:smoke":"tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"bun run test:bridge:generation && bun run test:bridge:protocol && bun run test:bridge:beam","test:e2e:ui":"bun run build && playwright test --ui","test:github":"bun run build && tsx tests/github-issues.integration.ts","test:intent":"tsx tests/intent-contract.test.ts","test:loader":"tsx tests/loader.test.ts && tsx tests/runtime-config-store.test.ts","test:logger":"tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"tsx tests/schema-extractor.test.ts","test:server":"tsx tests/server.test.ts && tsx tests/sse-client-app-fallback.test.ts","test:sqlite":"bun run build && tsx tests/sqlite.test.ts","test:visual":"bun run build && bun run build:beam && tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"bun run build && tsx tests/phase6a-service-worker.test.ts","test:phase6b":"bun run build && tsx tests/phase6b-offline-state.test.ts","test:phase6c":"bun run build && tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"bun run build && tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"bun run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html bun run test:unit","test:promises":"bun run build && bun run build:beam && tsx tests/promises.test.ts","test:security":"tsx tests/security.test.ts","prepublishOnly":"bun run verify:publish-version && node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is linked. Run: bun remove '+d+' && bun add '+d); process.exit(1);}}\" && bun run build && bun run build:beam","test:cf-deploy":"vitest run tests/cf-deploy-toml.test.ts","test:contracts":"tsx tests/contract/format-coverage.test.ts && tsx tests/contract/schema-contract.test.ts","test:cf-runtime":"vitest run tests/cf-runtime-kv.test.ts","test:github-ref":"tsx tests/github-ref-install.test.ts","test:mcp-config":"tsx tests/mcp-configuration.test.ts","test:validation":"tsx tests/validation.test.ts","test:bridge:beam":"tsx tests/bridge/beam-integration.test.ts","test:byte-compat":"RUN_E2E=1 vitest run tests/v128-byte-compat.test.ts","test:cf-bindings":"vitest run tests/cf-bindings-parser.test.ts","test:integration":"tsx tests/integration.test.ts","test:marketplace":"tsx tests/marketplace-manager.test.ts","test:zero-config":"tsx tests/zero-config.test.ts","test:cf-overrides":"vitest run tests/cf-overrides.test.ts","test:ui-rendering":"tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"tsx tests/ui-resources.test.ts","test:cf-mcp-bearer":"vitest run tests/cf-mcp-bearer.test.ts","test:daemon-buffer":"tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"tsx tests/daemon-pubsub.test.ts","test:error-handler":"tsx tests/error-handler.test.ts","test:daemon-watcher":"tsx tests/daemon-watcher.test.ts && tsx tests/schedule-missed-fire.test.ts","test:instance-drift":"tsx tests/instance-drift.test.ts","test:version-notify":"tsx tests/version-notify.test.ts","test:bridge:protocol":"tsx tests/bridge/protocol.test.ts","test:client-adaptive":"tsx tests/client-adaptive.test.ts","test:format-registry":"vitest run tests/format-registry.test.ts","test:streamable-http":"tsx tests/streamable-http-transport.test.ts","test:beam:regressions":"bun run build && tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"vitest run tests/viewport-manager.test.ts","test:bridge:generation":"tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"bun run build && tsx tests/pagination-phase5.test.ts","verify:publish-version":"node scripts/verify-publish-version.mjs","test:pagination-phase5c":"bun run build && tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"bun run build && tsx tests/pagination-phase5d.test.ts","test:content-negotiation":"RUN_E2E=1 vitest run tests/http-content-negotiation.test.ts","test:loader:comprehensive":"tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"vitest run tests/pagination-integration.test.ts","test:pagination-performance":"vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"bun run build && tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"defu":"^6.1.7","hono":"^4.12.18","flatted":"^3.4.2","fast-uri":"^3.1.2","basic-ftp":"^6.0.1","minimatch":"^10.2.1","picomatch":"^4.0.4","handlebars":"^4.7.9","ip-address":"^10.2.0","path-to-regexp":"^8.4.2","brace-expansion":"^5.0.6","@hono/node-server":"^1.19.13","express-rate-limit":"^8.2.2"},"_integrity":"sha512-4rnEtYQyN743EoQdqkis1yzZPJRb760tAe+U4KNcjsH2viJ3UVqeQGvYCRGPGWEbWXgGErqHL+MZFNFNPfyLqw==","repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"10.8.3","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","miniflare":"^4.20260507.1","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.7","@portel/photon-core":"^2.27.0","@modelcontextprotocol/sdk":"^1.29.0","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"packageManager":"bun@1.2.20","devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^6.13.1","eslint":"^10.3.0","vitest":"^4.1.5","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^20.0.0","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^11.0.0"},"trustedDependencies":["better-sqlite3","esbuild"],"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.33.0_1779351661124_0.44702622946585757","host":"s3://npm-registry-packages-npm-production"}},"1.33.1":{"name":"@portel/photon","version":"1.33.1","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":"Portel Dev","license":"MIT","_id":"@portel/photon@1.33.1","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"82e5433013ed8969606c3000e91846c493f61f03","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.33.1.tgz","fileCount":830,"integrity":"sha512-JGbSGqx96byGIyfJZ+kglr1T8vnp/1RIdNNaF/qLB5P73yIya5ivXuYzd+CeSZQhy74ZN7YOiKio2noBvH16hA==","signatures":[{"sig":"MEUCIQD7el70sY4TgFKqQiMnmE/L1Qa93sWDQvrrHLI0i+MKJgIgLUiFRqmfgQNzlat9NETXQN/g0rxgwN9G+PFLdsUWWhI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42274134},"main":"dist/index.js","type":"module","shasum":"82e5433013ed8969606c3000e91846c493f61f03","engines":{"bun":">=1.0.0","node":">=20.0.0"},"scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"bun run build && bun run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"bun run build && bun run test:security && bun run test:schema && bun run test:marketplace && bun run test:loader && bun run test:server && bun run test:integration && bun run test:byte-compat && bun run test:format-registry && bun run test:content-negotiation && bun run test:ui-resources && bun run test:client-adaptive && bun run test:zero-config && bun run test:mcp-config && bun run test:cli && bun run test:intent && bun run test:logger && bun run test:error-handler && bun run test:validation && bun run test:daemon-pubsub && bun run test:daemon-buffer && bun run test:instance-drift && bun run test:daemon-watcher && bun run test:ui-rendering && bun run test:photon-instance-manager && bun run test:viewport-aware-proxy && bun run test:viewport-manager && bun run test:pagination-integration && bun run test:pagination-performance && tsx tests/pagination-phase5.test.ts && tsx tests/pagination-phase5c.test.ts && tsx tests/pagination-phase5d.test.ts && tsx tests/phase6a-service-worker.test.ts && tsx tests/phase6b-offline-state.test.ts && tsx tests/phase6c-offline-sync.test.ts && tsx tests/phase6d-integration.test.ts && tsx tests/promises.test.ts && bun run test:cf-bindings && bun run test:cf-runtime && bun run test:cf-overrides && bun run test:cf-deploy && bun run test:cf-mcp-bearer && bun run test:readme","test:cli":"tsx tests/cli-runner.test.ts && tsx tests/ps-parse-target.test.ts","test:dom":"bun run build && bun run build:beam && tsx tests/contract/dom-structure.test.ts","test:e2e":"bun run build && playwright test","test:a2ui":"bun run build && tsx tests/a2ui-mapper.test.ts && tsx tests/a2ui-e2e.test.ts && tsx tests/a2ui-renderer-script.test.ts","test:beam":"bun run build && tsx tests/beam/rendering.test.ts","test:load":"bun run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"tsx tests/schema-extractor.test.ts && tsx tests/marketplace-manager.test.ts && tsx tests/loader.test.ts && tsx tests/loader.comprehensive.test.ts && tsx tests/server.test.ts && tsx tests/server.comprehensive.test.ts && tsx tests/cli-runner.test.ts && tsx tests/cli.comprehensive.test.ts && tsx tests/logger.test.ts && tsx tests/error-handler.test.ts && tsx tests/validation.test.ts && tsx tests/daemon-pubsub.test.ts && tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","test:chain":"bun run test:all","test:smoke":"tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"bun run test:bridge:generation && bun run test:bridge:protocol && bun run test:bridge:beam","test:e2e:ui":"bun run build && playwright test --ui","test:github":"bun run build && tsx tests/github-issues.integration.ts","test:intent":"tsx tests/intent-contract.test.ts","test:loader":"tsx tests/loader.test.ts && tsx tests/runtime-config-store.test.ts","test:logger":"tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"tsx tests/schema-extractor.test.ts","test:server":"tsx tests/server.test.ts && tsx tests/sse-client-app-fallback.test.ts","test:sqlite":"bun run build && tsx tests/sqlite.test.ts","test:visual":"bun run build && bun run build:beam && tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"bun run build && tsx tests/phase6a-service-worker.test.ts","test:phase6b":"bun run build && tsx tests/phase6b-offline-state.test.ts","test:phase6c":"bun run build && tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"bun run build && tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"bun run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html bun run test:unit","test:promises":"bun run build && bun run build:beam && tsx tests/promises.test.ts","test:security":"tsx tests/security.test.ts","prepublishOnly":"bun run verify:publish-version && node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is linked. Run: bun remove '+d+' && bun add '+d); process.exit(1);}}\" && bun run build && bun run build:beam","test:cf-deploy":"vitest run tests/cf-deploy-toml.test.ts","test:contracts":"tsx tests/contract/format-coverage.test.ts && tsx tests/contract/schema-contract.test.ts","test:cf-runtime":"vitest run tests/cf-runtime-kv.test.ts","test:github-ref":"tsx tests/github-ref-install.test.ts","test:mcp-config":"tsx tests/mcp-configuration.test.ts","test:validation":"tsx tests/validation.test.ts","test:bridge:beam":"tsx tests/bridge/beam-integration.test.ts","test:byte-compat":"RUN_E2E=1 vitest run tests/v128-byte-compat.test.ts","test:cf-bindings":"vitest run tests/cf-bindings-parser.test.ts","test:integration":"tsx tests/integration.test.ts","test:marketplace":"tsx tests/marketplace-manager.test.ts","test:zero-config":"tsx tests/zero-config.test.ts","test:cf-overrides":"vitest run tests/cf-overrides.test.ts","test:ui-rendering":"tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"tsx tests/ui-resources.test.ts","test:cf-mcp-bearer":"vitest run tests/cf-mcp-bearer.test.ts","test:daemon-buffer":"tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"tsx tests/daemon-pubsub.test.ts","test:error-handler":"tsx tests/error-handler.test.ts","test:daemon-watcher":"tsx tests/daemon-watcher.test.ts && tsx tests/schedule-missed-fire.test.ts","test:instance-drift":"tsx tests/instance-drift.test.ts","test:version-notify":"tsx tests/version-notify.test.ts","test:bridge:protocol":"tsx tests/bridge/protocol.test.ts","test:client-adaptive":"tsx tests/client-adaptive.test.ts","test:format-registry":"vitest run tests/format-registry.test.ts","test:streamable-http":"tsx tests/streamable-http-transport.test.ts","test:beam:regressions":"bun run build && tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"vitest run tests/viewport-manager.test.ts","test:bridge:generation":"tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"bun run build && tsx tests/pagination-phase5.test.ts","verify:publish-version":"node scripts/verify-publish-version.mjs","test:pagination-phase5c":"bun run build && tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"bun run build && tsx tests/pagination-phase5d.test.ts","test:content-negotiation":"RUN_E2E=1 vitest run tests/http-content-negotiation.test.ts","test:loader:comprehensive":"tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"vitest run tests/pagination-integration.test.ts","test:pagination-performance":"vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"bun run build && tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"defu":"^6.1.7","hono":"^4.12.18","flatted":"^3.4.2","fast-uri":"^3.1.2","basic-ftp":"^6.0.1","minimatch":"^10.2.1","picomatch":"^4.0.4","handlebars":"^4.7.9","ip-address":"^10.2.0","path-to-regexp":"^8.4.2","brace-expansion":"^5.0.6","@hono/node-server":"^1.19.13","express-rate-limit":"^8.2.2"},"_integrity":"sha512-JGbSGqx96byGIyfJZ+kglr1T8vnp/1RIdNNaF/qLB5P73yIya5ivXuYzd+CeSZQhy74ZN7YOiKio2noBvH16hA==","repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"10.8.3","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","miniflare":"^4.20260507.1","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.7","@portel/photon-core":"^2.27.0","@modelcontextprotocol/sdk":"^1.29.0","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"packageManager":"bun@1.2.20","devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^6.13.1","eslint":"^10.3.0","vitest":"^4.1.5","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^20.0.0","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^11.0.0"},"trustedDependencies":["better-sqlite3","esbuild"],"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.33.1_1779518388752_0.1656853256051034","host":"s3://npm-registry-packages-npm-production"}},"1.33.2":{"name":"@portel/photon","version":"1.33.2","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":"Portel Dev","license":"MIT","_id":"@portel/photon@1.33.2","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"573611a97161fc3d4944292bfd5f31b2de43deb8","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.33.2.tgz","fileCount":834,"integrity":"sha512-jtryzT98KqWpzbc+13yqHStcs9aQTLzYhQToqv7FEKfTFMKd8Q6ipKkfwKy35m/2ZEptjBTJYeCt7k0xC+PAKA==","signatures":[{"sig":"MEYCIQDu+kVkl63Up3Q1bwbqIb9+jx3jbyQO3C7fRNmKrfhcCgIhAPP4IHD2nysFT3p1vHtZBPISjdMxVDZikke9qmK+pHar","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42299345},"main":"dist/index.js","type":"module","shasum":"573611a97161fc3d4944292bfd5f31b2de43deb8","engines":{"bun":">=1.0.0","node":">=20.0.0"},"scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"bun run build && bun run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"bun run build && bun run test:security && bun run test:schema && bun run test:marketplace && bun run test:loader && bun run test:server && bun run test:integration && bun run test:byte-compat && bun run test:format-registry && bun run test:content-negotiation && bun run test:ui-resources && bun run test:client-adaptive && bun run test:zero-config && bun run test:mcp-config && bun run test:cli && bun run test:intent && bun run test:logger && bun run test:error-handler && bun run test:validation && bun run test:daemon-pubsub && bun run test:daemon-buffer && bun run test:instance-drift && bun run test:daemon-watcher && bun run test:ui-rendering && bun run test:photon-instance-manager && bun run test:viewport-aware-proxy && bun run test:viewport-manager && bun run test:pagination-integration && bun run test:pagination-performance && tsx tests/pagination-phase5.test.ts && tsx tests/pagination-phase5c.test.ts && tsx tests/pagination-phase5d.test.ts && tsx tests/phase6a-service-worker.test.ts && tsx tests/phase6b-offline-state.test.ts && tsx tests/phase6c-offline-sync.test.ts && tsx tests/phase6d-integration.test.ts && tsx tests/promises.test.ts && bun run test:cf-bindings && bun run test:cf-runtime && bun run test:cf-overrides && bun run test:cf-deploy && bun run test:cf-mcp-bearer && bun run test:readme","test:cli":"tsx tests/cli-runner.test.ts && tsx tests/ps-parse-target.test.ts","test:dom":"bun run build && bun run build:beam && tsx tests/contract/dom-structure.test.ts","test:e2e":"bun run build && playwright test","test:a2ui":"bun run build && tsx tests/a2ui-mapper.test.ts && tsx tests/a2ui-e2e.test.ts && tsx tests/a2ui-renderer-script.test.ts","test:beam":"bun run build && tsx tests/beam/rendering.test.ts","test:load":"bun run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"tsx tests/schema-extractor.test.ts && tsx tests/marketplace-manager.test.ts && tsx tests/loader.test.ts && tsx tests/loader.comprehensive.test.ts && tsx tests/server.test.ts && tsx tests/server.comprehensive.test.ts && tsx tests/cli-runner.test.ts && tsx tests/cli.comprehensive.test.ts && tsx tests/logger.test.ts && tsx tests/error-handler.test.ts && tsx tests/validation.test.ts && tsx tests/daemon-pubsub.test.ts && tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","test:chain":"bun run test:all","test:smoke":"tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"bun run test:bridge:generation && bun run test:bridge:protocol && bun run test:bridge:beam","test:e2e:ui":"bun run build && playwright test --ui","test:github":"bun run build && tsx tests/github-issues.integration.ts","test:intent":"tsx tests/intent-contract.test.ts","test:loader":"tsx tests/loader.test.ts && tsx tests/runtime-config-store.test.ts","test:logger":"tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"tsx tests/schema-extractor.test.ts","test:server":"tsx tests/server.test.ts && tsx tests/sse-client-app-fallback.test.ts","test:sqlite":"bun run build && tsx tests/sqlite.test.ts","test:visual":"bun run build && bun run build:beam && tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"bun run build && tsx tests/phase6a-service-worker.test.ts","test:phase6b":"bun run build && tsx tests/phase6b-offline-state.test.ts","test:phase6c":"bun run build && tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"bun run build && tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"bun run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html bun run test:unit","test:promises":"bun run build && bun run build:beam && tsx tests/promises.test.ts","test:security":"tsx tests/security.test.ts","prepublishOnly":"bun run verify:publish-version && node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is linked. Run: bun remove '+d+' && bun add '+d); process.exit(1);}}\" && bun run build && bun run build:beam","test:cf-deploy":"vitest run tests/cf-deploy-toml.test.ts","test:contracts":"tsx tests/contract/format-coverage.test.ts && tsx tests/contract/schema-contract.test.ts","test:cf-runtime":"vitest run tests/cf-runtime-kv.test.ts","test:github-ref":"tsx tests/github-ref-install.test.ts","test:mcp-config":"tsx tests/mcp-configuration.test.ts","test:validation":"tsx tests/validation.test.ts","test:bridge:beam":"tsx tests/bridge/beam-integration.test.ts","test:byte-compat":"RUN_E2E=1 vitest run tests/v128-byte-compat.test.ts","test:cf-bindings":"vitest run tests/cf-bindings-parser.test.ts","test:integration":"tsx tests/integration.test.ts","test:marketplace":"tsx tests/marketplace-manager.test.ts","test:zero-config":"tsx tests/zero-config.test.ts","test:cf-overrides":"vitest run tests/cf-overrides.test.ts","test:ui-rendering":"tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"tsx tests/ui-resources.test.ts","test:cf-mcp-bearer":"vitest run tests/cf-mcp-bearer.test.ts","test:daemon-buffer":"tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"tsx tests/daemon-pubsub.test.ts","test:error-handler":"tsx tests/error-handler.test.ts","test:daemon-watcher":"tsx tests/daemon-watcher.test.ts && tsx tests/schedule-missed-fire.test.ts","test:instance-drift":"tsx tests/instance-drift.test.ts","test:version-notify":"tsx tests/version-notify.test.ts","test:bridge:protocol":"tsx tests/bridge/protocol.test.ts","test:client-adaptive":"tsx tests/client-adaptive.test.ts","test:format-registry":"vitest run tests/format-registry.test.ts","test:streamable-http":"tsx tests/streamable-http-transport.test.ts","test:beam:regressions":"bun run build && tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"vitest run tests/viewport-manager.test.ts","test:bridge:generation":"tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"bun run build && tsx tests/pagination-phase5.test.ts","verify:publish-version":"node scripts/verify-publish-version.mjs","test:pagination-phase5c":"bun run build && tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"bun run build && tsx tests/pagination-phase5d.test.ts","test:content-negotiation":"RUN_E2E=1 vitest run tests/http-content-negotiation.test.ts","test:loader:comprehensive":"tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"vitest run tests/pagination-integration.test.ts","test:pagination-performance":"vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"bun run build && tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"defu":"^6.1.7","hono":"^4.12.18","flatted":"^3.4.2","fast-uri":"^3.1.2","basic-ftp":"^6.0.1","minimatch":"^10.2.1","picomatch":"^4.0.4","handlebars":"^4.7.9","ip-address":"^10.2.0","path-to-regexp":"^8.4.2","brace-expansion":"^5.0.6","@hono/node-server":"^1.19.13","express-rate-limit":"^8.2.2"},"_integrity":"sha512-jtryzT98KqWpzbc+13yqHStcs9aQTLzYhQToqv7FEKfTFMKd8Q6ipKkfwKy35m/2ZEptjBTJYeCt7k0xC+PAKA==","repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"10.8.3","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","miniflare":"^4.20260507.1","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.7","@portel/photon-core":"^2.27.0","@modelcontextprotocol/sdk":"^1.29.0","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"packageManager":"bun@1.2.20","devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^6.13.1","eslint":"^10.3.0","vitest":"^4.1.5","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^20.0.0","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^11.0.0"},"trustedDependencies":["better-sqlite3","esbuild"],"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.33.2_1779550005921_0.2033710790254455","host":"s3://npm-registry-packages-npm-production"}},"1.33.3":{"name":"@portel/photon","version":"1.33.3","keywords":["mcp","model-context-protocol","photon","typescript","cli","single-file","business-logic","convention-over-configuration","claude","claude-desktop","hot-reload","marketplace","enterprise"],"author":"Portel Dev","license":"MIT","_id":"@portel/photon@1.33.3","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/photon#readme","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"267f273f02c1f3ba1bf30071bc1a395f29e00f71","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.33.3.tgz","fileCount":834,"integrity":"sha512-HnM6voRxGziZBIC/llQ/ehgBYzSGHVNgnGXXf8az49lU+Cv1o7Io2PazgJm76mvL+U2iu0VShj4D+blv2jCEvw==","signatures":[{"sig":"MEUCIQDfEdaL9AZ5D6hGPsmB65cpkzyZM4r1nehhTpXFmnDh1AIgT0grE0/6ap5BMHh7B1ZXOirgrb/sKNSe6xd6cp51/PA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42314051},"main":"dist/index.js","type":"module","shasum":"267f273f02c1f3ba1bf30071bc1a395f29e00f71","engines":{"bun":">=1.0.0","node":">=20.0.0"},"scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"bun run build && bun run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","lint:fix":"eslint src/ --fix","test:all":"bun run build && bun run test:security && bun run test:schema && bun run test:marketplace && bun run test:loader && bun run test:server && bun run test:integration && bun run test:byte-compat && bun run test:format-registry && bun run test:content-negotiation && bun run test:ui-resources && bun run test:client-adaptive && bun run test:zero-config && bun run test:mcp-config && bun run test:cli && bun run test:intent && bun run test:logger && bun run test:error-handler && bun run test:validation && bun run test:daemon-pubsub && bun run test:daemon-buffer && bun run test:instance-drift && bun run test:daemon-watcher && bun run test:ui-rendering && bun run test:photon-instance-manager && bun run test:viewport-aware-proxy && bun run test:viewport-manager && bun run test:pagination-integration && bun run test:pagination-performance && tsx tests/pagination-phase5.test.ts && tsx tests/pagination-phase5c.test.ts && tsx tests/pagination-phase5d.test.ts && tsx tests/phase6a-service-worker.test.ts && tsx tests/phase6b-offline-state.test.ts && tsx tests/phase6c-offline-sync.test.ts && tsx tests/phase6d-integration.test.ts && tsx tests/promises.test.ts && bun run test:cf-bindings && bun run test:cf-runtime && bun run test:cf-overrides && bun run test:cf-deploy && bun run test:cf-mcp-bearer && bun run test:readme","test:cli":"tsx tests/cli-runner.test.ts && tsx tests/ps-parse-target.test.ts","test:dom":"bun run build && bun run build:beam && tsx tests/contract/dom-structure.test.ts","test:e2e":"bun run build && playwright test","test:a2ui":"bun run build && tsx tests/a2ui-mapper.test.ts && tsx tests/a2ui-e2e.test.ts && tsx tests/a2ui-renderer-script.test.ts","test:beam":"bun run build && tsx tests/beam/rendering.test.ts","test:load":"bun run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"tsx tests/schema-extractor.test.ts && tsx tests/marketplace-manager.test.ts && tsx tests/loader.test.ts && tsx tests/loader.comprehensive.test.ts && tsx tests/server.test.ts && tsx tests/server.comprehensive.test.ts && tsx tests/cli-runner.test.ts && tsx tests/cli.comprehensive.test.ts && tsx tests/logger.test.ts && tsx tests/error-handler.test.ts && tsx tests/validation.test.ts && tsx tests/daemon-pubsub.test.ts && tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","test:chain":"bun run test:all","test:smoke":"tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"bun run test:bridge:generation && bun run test:bridge:protocol && bun run test:bridge:beam","test:e2e:ui":"bun run build && playwright test --ui","test:github":"bun run build && tsx tests/github-issues.integration.ts","test:intent":"tsx tests/intent-contract.test.ts","test:loader":"tsx tests/loader.test.ts && tsx tests/runtime-config-store.test.ts","test:logger":"tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"tsx tests/schema-extractor.test.ts","test:server":"tsx tests/server.test.ts && tsx tests/sse-client-app-fallback.test.ts","test:sqlite":"bun run build && tsx tests/sqlite.test.ts","test:visual":"bun run build && bun run build:beam && tsx tests/beam/visual/visual.test.ts","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"bun run build && tsx tests/phase6a-service-worker.test.ts","test:phase6b":"bun run build && tsx tests/phase6b-offline-state.test.ts","test:phase6c":"bun run build && tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"bun run build && tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"bun run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html bun run test:unit","test:promises":"bun run build && bun run build:beam && tsx tests/promises.test.ts","test:security":"tsx tests/security.test.ts","prepublishOnly":"bun run verify:publish-version && node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is linked. Run: bun remove '+d+' && bun add '+d); process.exit(1);}}\" && bun run build && bun run build:beam","test:cf-deploy":"vitest run tests/cf-deploy-toml.test.ts","test:contracts":"tsx tests/contract/format-coverage.test.ts && tsx tests/contract/schema-contract.test.ts","test:cf-runtime":"vitest run tests/cf-runtime-kv.test.ts","test:github-ref":"tsx tests/github-ref-install.test.ts","test:mcp-config":"tsx tests/mcp-configuration.test.ts","test:validation":"tsx tests/validation.test.ts","test:bridge:beam":"tsx tests/bridge/beam-integration.test.ts","test:byte-compat":"RUN_E2E=1 vitest run tests/v128-byte-compat.test.ts","test:cf-bindings":"vitest run tests/cf-bindings-parser.test.ts","test:integration":"tsx tests/integration.test.ts","test:marketplace":"tsx tests/marketplace-manager.test.ts","test:zero-config":"tsx tests/zero-config.test.ts","test:cf-overrides":"vitest run tests/cf-overrides.test.ts","test:ui-rendering":"tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"tsx tests/ui-resources.test.ts","test:cf-mcp-bearer":"vitest run tests/cf-mcp-bearer.test.ts","test:daemon-buffer":"tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"tsx tests/daemon-pubsub.test.ts","test:error-handler":"tsx tests/error-handler.test.ts","test:daemon-watcher":"tsx tests/daemon-watcher.test.ts && tsx tests/schedule-missed-fire.test.ts","test:instance-drift":"tsx tests/instance-drift.test.ts","test:version-notify":"tsx tests/version-notify.test.ts","test:bridge:protocol":"tsx tests/bridge/protocol.test.ts","test:client-adaptive":"tsx tests/client-adaptive.test.ts","test:format-registry":"vitest run tests/format-registry.test.ts","test:streamable-http":"tsx tests/streamable-http-transport.test.ts","test:beam:regressions":"bun run build && tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"vitest run tests/viewport-manager.test.ts","test:bridge:generation":"tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"bun run build && tsx tests/pagination-phase5.test.ts","verify:publish-version":"node scripts/verify-publish-version.mjs","test:pagination-phase5c":"bun run build && tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"bun run build && tsx tests/pagination-phase5d.test.ts","test:content-negotiation":"RUN_E2E=1 vitest run tests/http-content-negotiation.test.ts","test:loader:comprehensive":"tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"vitest run tests/pagination-integration.test.ts","test:pagination-performance":"vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"bun run build && tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"defu":"^6.1.7","hono":"^4.12.18","flatted":"^3.4.2","fast-uri":"^3.1.2","basic-ftp":"^6.0.1","minimatch":"^10.2.1","picomatch":"^4.0.4","handlebars":"^4.7.9","ip-address":"^10.2.0","path-to-regexp":"^8.4.2","brace-expansion":"^5.0.6","@hono/node-server":"^1.19.13","express-rate-limit":"^8.2.2"},"_integrity":"sha512-HnM6voRxGziZBIC/llQ/ehgBYzSGHVNgnGXXf8az49lU+Cv1o7Io2PazgJm76mvL+U2iu0VShj4D+blv2jCEvw==","repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"10.8.3","description":"You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","miniflare":"^4.20260507.1","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.7","@portel/photon-core":"^2.27.0","@modelcontextprotocol/sdk":"^1.29.0","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"packageManager":"bun@1.2.20","devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^6.13.1","eslint":"^10.3.0","vitest":"^4.1.5","prettier":"^3.8.0","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^20.0.0","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^11.0.0"},"trustedDependencies":["better-sqlite3","esbuild"],"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.33.3_1779585595024_0.8712211468967137","host":"s3://npm-registry-packages-npm-production"}},"1.33.4":{"name":"@portel/photon","version":"1.33.4","keywords":["mcp","mcp-server","mcp-apps","model-context-protocol","ai-agents","ai-tools","chatgpt","claude","claude-code","claude-desktop","cursor","photon","typescript","cli","web-dashboard","single-file","business-logic","convention-over-configuration","hot-reload","marketplace","developer-tools","enterprise"],"author":"Portel Dev","license":"MIT","_id":"@portel/photon@1.33.4","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://portel-dev.github.io/photon/","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"5f5693197e245a594ed4065396ab1f7887e49e43","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.33.4.tgz","fileCount":834,"integrity":"sha512-j+4QKLwe0fSvPm6Vo5sE3zSDfPrspfcivb9GuHpD5I0WypvfYEdMNufswl5I+QVRC5PLIcLn4y7+Lngul00q9Q==","signatures":[{"sig":"MEYCIQDq20ObyndvoO14XpQ3EoI2vQbqxJRWNFLPCbCcQukKdQIhAIKq7xwcOez2shEq3f7Mnrnp1fI7BnetV+qHRxoOE/V5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42316809},"main":"dist/index.js","type":"module","shasum":"5f5693197e245a594ed4065396ab1f7887e49e43","engines":{"bun":">=1.0.0","node":">=20.0.0"},"scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"bun run build && bun run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","docs:dev":"bun run docs:sync && vitepress dev docs-site","lint:fix":"eslint src/ --fix","test:all":"bun run build && bun run test:security && bun run test:schema && bun run test:marketplace && bun run test:loader && bun run test:server && bun run test:integration && bun run test:byte-compat && bun run test:format-registry && bun run test:content-negotiation && bun run test:ui-resources && bun run test:client-adaptive && bun run test:zero-config && bun run test:mcp-config && bun run test:cli && bun run test:intent && bun run test:logger && bun run test:error-handler && bun run test:validation && bun run test:daemon-pubsub && bun run test:daemon-buffer && bun run test:instance-drift && bun run test:daemon-watcher && bun run test:ui-rendering && bun run test:photon-instance-manager && bun run test:viewport-aware-proxy && bun run test:viewport-manager && bun run test:pagination-integration && bun run test:pagination-performance && tsx tests/pagination-phase5.test.ts && tsx tests/pagination-phase5c.test.ts && tsx tests/pagination-phase5d.test.ts && tsx tests/phase6a-service-worker.test.ts && tsx tests/phase6b-offline-state.test.ts && tsx tests/phase6c-offline-sync.test.ts && tsx tests/phase6d-integration.test.ts && tsx tests/promises.test.ts && bun run test:cf-bindings && bun run test:cf-runtime && bun run test:cf-overrides && bun run test:cf-deploy && bun run test:cf-mcp-bearer && bun run test:readme","test:cli":"tsx tests/cli-runner.test.ts && tsx tests/ps-parse-target.test.ts","test:dom":"bun run build && bun run build:beam && tsx tests/contract/dom-structure.test.ts","test:e2e":"bun run build && playwright test","docs:sync":"node scripts/sync-docs-site.mjs","test:a2ui":"bun run build && tsx tests/a2ui-mapper.test.ts && tsx tests/a2ui-e2e.test.ts && tsx tests/a2ui-renderer-script.test.ts","test:beam":"bun run build && tsx tests/beam/rendering.test.ts","test:load":"bun run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"tsx tests/schema-extractor.test.ts && tsx tests/marketplace-manager.test.ts && tsx tests/loader.test.ts && tsx tests/loader.comprehensive.test.ts && tsx tests/server.test.ts && tsx tests/server.comprehensive.test.ts && tsx tests/cli-runner.test.ts && tsx tests/cli.comprehensive.test.ts && tsx tests/logger.test.ts && tsx tests/error-handler.test.ts && tsx tests/validation.test.ts && tsx tests/daemon-pubsub.test.ts && tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","docs:build":"bun run docs:sync && vitepress build docs-site && node scripts/fix-docs-site-build.mjs","test:chain":"bun run test:all","test:smoke":"tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"bun run test:bridge:generation && bun run test:bridge:protocol && bun run test:bridge:beam","test:e2e:ui":"bun run build && playwright test --ui","test:github":"bun run build && tsx tests/github-issues.integration.ts","test:intent":"tsx tests/intent-contract.test.ts","test:loader":"tsx tests/loader.test.ts && tsx tests/runtime-config-store.test.ts","test:logger":"tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"tsx tests/schema-extractor.test.ts","test:server":"tsx tests/server.test.ts && tsx tests/sse-client-app-fallback.test.ts","test:sqlite":"bun run build && tsx tests/sqlite.test.ts","test:visual":"bun run build && bun run build:beam && tsx tests/beam/visual/visual.test.ts","docs:preview":"vitepress preview docs-site","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"bun run build && tsx tests/phase6a-service-worker.test.ts","test:phase6b":"bun run build && tsx tests/phase6b-offline-state.test.ts","test:phase6c":"bun run build && tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"bun run build && tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"bun run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html bun run test:unit","test:promises":"bun run build && bun run build:beam && tsx tests/promises.test.ts","test:security":"tsx tests/security.test.ts","prepublishOnly":"bun run verify:publish-version && node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is linked. Run: bun remove '+d+' && bun add '+d); process.exit(1);}}\" && bun run build && bun run build:beam","test:cf-deploy":"vitest run tests/cf-deploy-toml.test.ts","test:contracts":"tsx tests/contract/format-coverage.test.ts && tsx tests/contract/schema-contract.test.ts","test:cf-runtime":"vitest run tests/cf-runtime-kv.test.ts","test:github-ref":"tsx tests/github-ref-install.test.ts","test:mcp-config":"tsx tests/mcp-configuration.test.ts","test:validation":"tsx tests/validation.test.ts","test:bridge:beam":"tsx tests/bridge/beam-integration.test.ts","test:byte-compat":"RUN_E2E=1 vitest run tests/v128-byte-compat.test.ts","test:cf-bindings":"vitest run tests/cf-bindings-parser.test.ts","test:integration":"tsx tests/integration.test.ts","test:marketplace":"tsx tests/marketplace-manager.test.ts","test:zero-config":"tsx tests/zero-config.test.ts","test:cf-overrides":"vitest run tests/cf-overrides.test.ts","test:ui-rendering":"tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"tsx tests/ui-resources.test.ts","test:cf-mcp-bearer":"vitest run tests/cf-mcp-bearer.test.ts","test:daemon-buffer":"tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"tsx tests/daemon-pubsub.test.ts","test:error-handler":"tsx tests/error-handler.test.ts","test:daemon-watcher":"tsx tests/daemon-watcher.test.ts && tsx tests/schedule-missed-fire.test.ts","test:instance-drift":"tsx tests/instance-drift.test.ts","test:version-notify":"tsx tests/version-notify.test.ts","test:bridge:protocol":"tsx tests/bridge/protocol.test.ts","test:client-adaptive":"tsx tests/client-adaptive.test.ts","test:format-registry":"vitest run tests/format-registry.test.ts","test:streamable-http":"tsx tests/streamable-http-transport.test.ts","test:beam:regressions":"bun run build && tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"vitest run tests/viewport-manager.test.ts","test:bridge:generation":"tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"bun run build && tsx tests/pagination-phase5.test.ts","verify:publish-version":"node scripts/verify-publish-version.mjs","test:pagination-phase5c":"bun run build && tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"bun run build && tsx tests/pagination-phase5d.test.ts","test:content-negotiation":"RUN_E2E=1 vitest run tests/http-content-negotiation.test.ts","test:loader:comprehensive":"tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"vitest run tests/pagination-integration.test.ts","test:pagination-performance":"vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"bun run build && tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"defu":"^6.1.7","hono":"^4.12.18","flatted":"^3.4.2","fast-uri":"^3.1.2","basic-ftp":"^6.0.1","minimatch":"^10.2.1","picomatch":"^4.0.4","handlebars":"^4.7.9","ip-address":"^10.2.0","path-to-regexp":"^8.4.2","brace-expansion":"^5.0.6","@hono/node-server":"^1.19.13","express-rate-limit":"^8.2.2"},"_integrity":"sha512-j+4QKLwe0fSvPm6Vo5sE3zSDfPrspfcivb9GuHpD5I0WypvfYEdMNufswl5I+QVRC5PLIcLn4y7+Lngul00q9Q==","repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"10.8.3","description":"Build MCP servers, CLI tools, and web dashboards for AI agents from a single TypeScript file.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","miniflare":"^4.20260507.1","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.7","@portel/photon-core":"^2.27.0","@modelcontextprotocol/sdk":"^1.29.0","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"packageManager":"bun@1.2.20","devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^6.13.1","eslint":"^10.3.0","vitest":"^4.1.5","prettier":"^3.8.0","vitepress":"^1.6.4","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^20.0.0","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^11.0.0"},"trustedDependencies":["better-sqlite3","esbuild"],"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.33.4_1779812150151_0.9107522885254975","host":"s3://npm-registry-packages-npm-production"}},"1.34.0":{"name":"@portel/photon","version":"1.34.0","keywords":["mcp","mcp-server","mcp-apps","model-context-protocol","ai-agents","ai-tools","chatgpt","claude","claude-code","claude-desktop","cursor","photon","typescript","cli","web-dashboard","single-file","business-logic","convention-over-configuration","hot-reload","marketplace","developer-tools","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.34.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://portel-dev.github.io/photon/","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"8827a813410d75dae25cce46f67550aa64756c60","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.34.0.tgz","fileCount":834,"integrity":"sha512-s70fy9U4b+Z7QlOVY1hMJZTd6Ii86wQMrRjdMo1Q4K0sqY8alBV4ALMgOYuJOSjq7bV9Gf35LuSaDaswu6Khgg==","signatures":[{"sig":"MEUCIQCIhNMrDHiQOxWuYWtQXmpooH8uccu6Ika9PZYJ1gRVTQIgOt5aXrcrfSUm34n9ZzfTOMfAz7AESTBnehBu5hCLIeU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42371163},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"3b580fd69e50e36857d55a3f69cef392f01d821f","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"bun run build && bun run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","docs:dev":"bun run docs:sync && vitepress dev docs-site","lint:fix":"eslint src/ --fix","test:all":"bun run build && bun run test:security && bun run test:schema && bun run test:marketplace && bun run test:loader && bun run test:server && bun run test:integration && bun run test:byte-compat && bun run test:format-registry && bun run test:content-negotiation && bun run test:ui-resources && bun run test:client-adaptive && bun run test:zero-config && bun run test:mcp-config && bun run test:cli && bun run test:intent && bun run test:logger && bun run test:error-handler && bun run test:validation && bun run test:daemon-pubsub && bun run test:daemon-buffer && bun run test:instance-drift && bun run test:daemon-watcher && bun run test:ui-rendering && bun run test:photon-instance-manager && bun run test:viewport-aware-proxy && bun run test:viewport-manager && bun run test:pagination-integration && bun run test:pagination-performance && tsx tests/pagination-phase5.test.ts && tsx tests/pagination-phase5c.test.ts && tsx tests/pagination-phase5d.test.ts && tsx tests/phase6a-service-worker.test.ts && tsx tests/phase6b-offline-state.test.ts && tsx tests/phase6c-offline-sync.test.ts && tsx tests/phase6d-integration.test.ts && tsx tests/promises.test.ts && bun run test:cf-bindings && bun run test:cf-runtime && bun run test:cf-overrides && bun run test:cf-deploy && bun run test:cf-mcp-bearer && bun run test:readme","test:cli":"tsx tests/cli-runner.test.ts && tsx tests/ps-parse-target.test.ts","test:dom":"bun run build && bun run build:beam && tsx tests/contract/dom-structure.test.ts","test:e2e":"bun run build && playwright test","docs:sync":"node scripts/sync-docs-site.mjs","test:a2ui":"bun run build && tsx tests/a2ui-mapper.test.ts && tsx tests/a2ui-e2e.test.ts && tsx tests/a2ui-renderer-script.test.ts","test:beam":"bun run build && tsx tests/beam/rendering.test.ts","test:load":"bun run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"tsx tests/schema-extractor.test.ts && tsx tests/marketplace-manager.test.ts && tsx tests/loader.test.ts && tsx tests/loader.comprehensive.test.ts && tsx tests/server.test.ts && tsx tests/server.comprehensive.test.ts && tsx tests/cli-runner.test.ts && tsx tests/cli.comprehensive.test.ts && tsx tests/logger.test.ts && tsx tests/error-handler.test.ts && tsx tests/validation.test.ts && tsx tests/daemon-pubsub.test.ts && tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","docs:build":"bun run docs:sync && vitepress build docs-site && node scripts/fix-docs-site-build.mjs","test:chain":"bun run test:all","test:smoke":"tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"bun run test:bridge:generation && bun run test:bridge:protocol && bun run test:bridge:beam","test:e2e:ui":"bun run build && playwright test --ui","test:github":"bun run build && tsx tests/github-issues.integration.ts","test:intent":"tsx tests/intent-contract.test.ts","test:loader":"tsx tests/loader.test.ts && tsx tests/runtime-config-store.test.ts","test:logger":"tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"tsx tests/schema-extractor.test.ts","test:server":"tsx tests/server.test.ts && tsx tests/sse-client-app-fallback.test.ts","test:sqlite":"bun run build && tsx tests/sqlite.test.ts","test:visual":"bun run build && bun run build:beam && tsx tests/beam/visual/visual.test.ts","docs:preview":"vitepress preview docs-site","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"bun run build && tsx tests/phase6a-service-worker.test.ts","test:phase6b":"bun run build && tsx tests/phase6b-offline-state.test.ts","test:phase6c":"bun run build && tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"bun run build && tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"bun run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html bun run test:unit","test:promises":"bun run build && bun run build:beam && tsx tests/promises.test.ts","test:security":"tsx tests/security.test.ts","prepublishOnly":"bun run verify:publish-version && node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is linked. Run: bun remove '+d+' && bun add '+d); process.exit(1);}}\" && bun run build && bun run build:beam","test:cf-deploy":"vitest run tests/cf-deploy-toml.test.ts","test:contracts":"tsx tests/contract/format-coverage.test.ts && tsx tests/contract/schema-contract.test.ts","test:cf-runtime":"vitest run tests/cf-runtime-kv.test.ts","test:github-ref":"tsx tests/github-ref-install.test.ts","test:mcp-config":"tsx tests/mcp-configuration.test.ts","test:validation":"tsx tests/validation.test.ts","test:bridge:beam":"tsx tests/bridge/beam-integration.test.ts","test:byte-compat":"RUN_E2E=1 vitest run tests/v128-byte-compat.test.ts","test:cf-bindings":"vitest run tests/cf-bindings-parser.test.ts","test:integration":"tsx tests/integration.test.ts","test:marketplace":"tsx tests/marketplace-manager.test.ts","test:zero-config":"tsx tests/zero-config.test.ts","test:cf-overrides":"vitest run tests/cf-overrides.test.ts","test:ui-rendering":"tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"tsx tests/ui-resources.test.ts","test:cf-mcp-bearer":"vitest run tests/cf-mcp-bearer.test.ts","test:daemon-buffer":"tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"tsx tests/daemon-pubsub.test.ts","test:error-handler":"tsx tests/error-handler.test.ts","test:daemon-watcher":"tsx tests/daemon-watcher.test.ts && tsx tests/schedule-missed-fire.test.ts","test:instance-drift":"tsx tests/instance-drift.test.ts","test:version-notify":"tsx tests/version-notify.test.ts","test:bridge:protocol":"tsx tests/bridge/protocol.test.ts","test:client-adaptive":"tsx tests/client-adaptive.test.ts","test:format-registry":"vitest run tests/format-registry.test.ts","test:streamable-http":"tsx tests/streamable-http-transport.test.ts","test:beam:regressions":"bun run build && tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"vitest run tests/viewport-manager.test.ts","test:bridge:generation":"tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"bun run build && tsx tests/pagination-phase5.test.ts","verify:publish-version":"node scripts/verify-publish-version.mjs","test:pagination-phase5c":"bun run build && tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"bun run build && tsx tests/pagination-phase5d.test.ts","test:content-negotiation":"RUN_E2E=1 vitest run tests/http-content-negotiation.test.ts","test:loader:comprehensive":"tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"vitest run tests/pagination-integration.test.ts","test:pagination-performance":"vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"bun run build && tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"defu":"^6.1.7","hono":"^4.12.18","flatted":"^3.4.2","fast-uri":"^3.1.2","basic-ftp":"^6.0.1","minimatch":"^10.2.1","picomatch":"^4.0.4","handlebars":"^4.7.9","ip-address":"^10.2.0","path-to-regexp":"^8.4.2","brace-expansion":"^5.0.6","@hono/node-server":"^1.19.13","express-rate-limit":"^8.2.2"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"Build MCP servers, CLI tools, and web dashboards for AI agents from a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","miniflare":"^4.20260507.1","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.7","@portel/photon-core":"^2.27.0","@modelcontextprotocol/sdk":"^1.29.0","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"packageManager":"bun@1.2.20","devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^6.13.1","eslint":"^10.3.0","vitest":"^4.1.5","prettier":"^3.8.0","vitepress":"^1.6.4","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^20.0.0","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^11.0.0"},"trustedDependencies":["better-sqlite3","esbuild"],"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.34.0_1779983647922_0.5409477824547841","host":"s3://npm-registry-packages-npm-production"}},"1.34.1":{"name":"@portel/photon","version":"1.34.1","keywords":["mcp","mcp-server","mcp-apps","model-context-protocol","ai-agents","ai-tools","chatgpt","claude","claude-code","claude-desktop","cursor","photon","typescript","cli","web-dashboard","single-file","business-logic","convention-over-configuration","hot-reload","marketplace","developer-tools","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.34.1","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://photon.portel.dev/","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"6323db58fdc57641a0d2a3a5c7aadee76941ffc1","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.34.1.tgz","fileCount":834,"integrity":"sha512-0fcfgQElYp/ZD2RGFvqprdYVSzz8BNohjzXKzmVa+1lvb79jg/deG7Ok73yg+ZmGjGaGKeaXfC0FVmVZPpaQsw==","signatures":[{"sig":"MEYCIQCTPY9d0ml6HouEf6Cz6qbsCNNZv3ev69+SgOGxWc/MtgIhAK/W34dELvOGM6J+LP5O14YkQnAJgt5fE2PJijv5wdj8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42384387},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"96b3295e1702063ce7ec504c6d3f24bcd073e8bc","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"bun run build && bun run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","docs:dev":"bun run docs:sync && vitepress dev docs-site","lint:fix":"eslint src/ --fix","test:all":"bun run build && bun run test:security && bun run test:schema && bun run test:marketplace && bun run test:loader && bun run test:server && bun run test:integration && bun run test:byte-compat && bun run test:format-registry && bun run test:content-negotiation && bun run test:ui-resources && bun run test:client-adaptive && bun run test:zero-config && bun run test:mcp-config && bun run test:cli && bun run test:intent && bun run test:logger && bun run test:error-handler && bun run test:validation && bun run test:daemon-pubsub && bun run test:daemon-buffer && bun run test:instance-drift && bun run test:daemon-watcher && bun run test:ui-rendering && bun run test:beam:port-hosting && bun run test:photon-instance-manager && bun run test:viewport-aware-proxy && bun run test:viewport-manager && bun run test:pagination-integration && bun run test:pagination-performance && tsx tests/pagination-phase5.test.ts && tsx tests/pagination-phase5c.test.ts && tsx tests/pagination-phase5d.test.ts && tsx tests/phase6a-service-worker.test.ts && tsx tests/phase6b-offline-state.test.ts && tsx tests/phase6c-offline-sync.test.ts && tsx tests/phase6d-integration.test.ts && tsx tests/promises.test.ts && bun run test:cf-bindings && bun run test:cf-runtime && bun run test:cf-overrides && bun run test:cf-deploy && bun run test:cf-mcp-bearer && bun run test:readme","test:cli":"tsx tests/cli-runner.test.ts && tsx tests/ps-parse-target.test.ts","test:dom":"bun run build && bun run build:beam && tsx tests/contract/dom-structure.test.ts","test:e2e":"bun run build && playwright test","docs:sync":"node scripts/sync-docs-site.mjs","test:a2ui":"bun run build && tsx tests/a2ui-mapper.test.ts && tsx tests/a2ui-e2e.test.ts && tsx tests/a2ui-renderer-script.test.ts","test:beam":"bun run build && tsx tests/beam/rendering.test.ts","test:load":"bun run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"tsx tests/schema-extractor.test.ts && tsx tests/marketplace-manager.test.ts && tsx tests/loader.test.ts && tsx tests/loader.comprehensive.test.ts && tsx tests/server.test.ts && tsx tests/server.comprehensive.test.ts && tsx tests/cli-runner.test.ts && tsx tests/cli.comprehensive.test.ts && tsx tests/logger.test.ts && tsx tests/error-handler.test.ts && tsx tests/validation.test.ts && tsx tests/daemon-pubsub.test.ts && tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","docs:build":"bun run docs:sync && vitepress build docs-site && node scripts/fix-docs-site-build.mjs","test:chain":"bun run test:all","test:smoke":"tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"bun run test:bridge:generation && bun run test:bridge:protocol && bun run test:bridge:beam","test:e2e:ui":"bun run build && playwright test --ui","test:github":"bun run build && tsx tests/github-issues.integration.ts","test:intent":"tsx tests/intent-contract.test.ts","test:loader":"tsx tests/loader.test.ts && tsx tests/runtime-config-store.test.ts","test:logger":"tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"tsx tests/schema-extractor.test.ts","test:server":"tsx tests/server.test.ts && tsx tests/sse-client-app-fallback.test.ts","test:sqlite":"bun run build && tsx tests/sqlite.test.ts","test:visual":"bun run build && bun run build:beam && tsx tests/beam/visual/visual.test.ts","docs:preview":"vitepress preview docs-site","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"bun run build && tsx tests/phase6a-service-worker.test.ts","test:phase6b":"bun run build && tsx tests/phase6b-offline-state.test.ts","test:phase6c":"bun run build && tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"bun run build && tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"bun run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html bun run test:unit","test:promises":"bun run build && bun run build:beam && tsx tests/promises.test.ts","test:security":"tsx tests/security.test.ts","prepublishOnly":"bun run verify:publish-version && node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is linked. Run: bun remove '+d+' && bun add '+d); process.exit(1);}}\" && bun run build && bun run build:beam","test:cf-deploy":"vitest run tests/cf-deploy-toml.test.ts","test:contracts":"tsx tests/contract/format-coverage.test.ts && tsx tests/contract/schema-contract.test.ts","test:cf-runtime":"vitest run tests/cf-runtime-kv.test.ts","test:github-ref":"tsx tests/github-ref-install.test.ts","test:mcp-config":"tsx tests/mcp-configuration.test.ts","test:validation":"tsx tests/validation.test.ts","test:bridge:beam":"tsx tests/bridge/beam-integration.test.ts","test:byte-compat":"RUN_E2E=1 vitest run tests/v128-byte-compat.test.ts","test:cf-bindings":"vitest run tests/cf-bindings-parser.test.ts","test:integration":"tsx tests/integration.test.ts","test:marketplace":"tsx tests/marketplace-manager.test.ts","test:zero-config":"tsx tests/zero-config.test.ts","test:cf-overrides":"vitest run tests/cf-overrides.test.ts","test:ui-rendering":"tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"tsx tests/ui-resources.test.ts","test:cf-mcp-bearer":"vitest run tests/cf-mcp-bearer.test.ts","test:daemon-buffer":"tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"tsx tests/daemon-pubsub.test.ts","test:error-handler":"tsx tests/error-handler.test.ts","test:daemon-watcher":"tsx tests/daemon-watcher.test.ts && tsx tests/schedule-missed-fire.test.ts","test:instance-drift":"tsx tests/instance-drift.test.ts","test:version-notify":"tsx tests/version-notify.test.ts","test:bridge:protocol":"tsx tests/bridge/protocol.test.ts","test:client-adaptive":"tsx tests/client-adaptive.test.ts","test:format-registry":"vitest run tests/format-registry.test.ts","test:streamable-http":"tsx tests/streamable-http-transport.test.ts","test:beam:regressions":"bun run build && tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"vitest run tests/viewport-manager.test.ts","test:beam:port-hosting":"tsx tests/beam/port-hosting-regressions.test.ts","test:bridge:generation":"tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"bun run build && tsx tests/pagination-phase5.test.ts","verify:publish-version":"node scripts/verify-publish-version.mjs","test:pagination-phase5c":"bun run build && tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"bun run build && tsx tests/pagination-phase5d.test.ts","test:content-negotiation":"RUN_E2E=1 vitest run tests/http-content-negotiation.test.ts","test:loader:comprehensive":"tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"vitest run tests/pagination-integration.test.ts","test:pagination-performance":"vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"bun run build && tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"defu":"^6.1.7","hono":"^4.12.18","flatted":"^3.4.2","fast-uri":"^3.1.2","basic-ftp":"^6.0.1","minimatch":"^10.2.1","picomatch":"^4.0.4","handlebars":"^4.7.9","ip-address":"^10.2.0","path-to-regexp":"^8.4.2","brace-expansion":"^5.0.6","@hono/node-server":"^1.19.13","express-rate-limit":"^8.2.2"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"Build MCP servers, CLI tools, and web dashboards for AI agents from a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","miniflare":"^4.20260507.1","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.7","@portel/photon-core":"^2.27.0","@modelcontextprotocol/sdk":"^1.29.0","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"packageManager":"bun@1.2.20","devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^6.13.1","eslint":"^10.3.0","vitest":"^4.1.5","prettier":"^3.8.0","vitepress":"^1.6.4","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^20.0.0","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^11.0.0"},"trustedDependencies":["better-sqlite3","esbuild"],"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.34.1_1780610208905_0.8065839293298196","host":"s3://npm-registry-packages-npm-production"}},"1.34.2":{"name":"@portel/photon","version":"1.34.2","keywords":["mcp","mcp-server","mcp-apps","model-context-protocol","ai-agents","ai-tools","chatgpt","claude","claude-code","claude-desktop","cursor","photon","typescript","cli","web-dashboard","single-file","business-logic","convention-over-configuration","hot-reload","marketplace","developer-tools","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.34.2","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://photon.portel.dev/","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"73aa070513f73178301e5ed9fc206ec1f313b191","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.34.2.tgz","fileCount":834,"integrity":"sha512-0wxi6i357mYZdFWExXGz3TWZeIlOb3Qvb0JniQtDYTxBUTWxOhXjU3B6q9rfUVDXBe2jrn7TZ27ZTO0e7I69dg==","signatures":[{"sig":"MEQCIHRf/8N+8RnnzgpRcMyCOjIrs5fnBFwSXQSF8yoGbtQkAiBXmyDbH8XJJ3YQ3/91nTBI5e6YdsK/e1GExBnQapsBIg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42393716},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"0d4c7ff39c8ec509d9d08f058f71bc17e046dd8f","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"bun run build && bun run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","docs:dev":"bun run docs:sync && vitepress dev docs-site","lint:fix":"eslint src/ --fix","test:all":"bun run build && bun run test:security && bun run test:schema && bun run test:marketplace && bun run test:loader && bun run test:server && bun run test:integration && bun run test:byte-compat && bun run test:format-registry && bun run test:content-negotiation && bun run test:ui-resources && bun run test:client-adaptive && bun run test:zero-config && bun run test:mcp-config && bun run test:cli && bun run test:intent && bun run test:logger && bun run test:error-handler && bun run test:validation && bun run test:daemon-pubsub && bun run test:daemon-buffer && bun run test:instance-drift && bun run test:daemon-watcher && bun run test:ui-rendering && bun run test:beam:port-hosting && bun run test:photon-instance-manager && bun run test:viewport-aware-proxy && bun run test:viewport-manager && bun run test:pagination-integration && bun run test:pagination-performance && tsx tests/pagination-phase5.test.ts && tsx tests/pagination-phase5c.test.ts && tsx tests/pagination-phase5d.test.ts && tsx tests/phase6a-service-worker.test.ts && tsx tests/phase6b-offline-state.test.ts && tsx tests/phase6c-offline-sync.test.ts && tsx tests/phase6d-integration.test.ts && tsx tests/promises.test.ts && bun run test:cf-bindings && bun run test:cf-runtime && bun run test:cf-overrides && bun run test:cf-deploy && bun run test:cf-mcp-bearer && bun run test:readme","test:cli":"tsx tests/cli-runner.test.ts && tsx tests/ps-parse-target.test.ts","test:dom":"bun run build && bun run build:beam && tsx tests/contract/dom-structure.test.ts","test:e2e":"bun run build && playwright test","docs:sync":"node scripts/sync-docs-site.mjs","test:a2ui":"bun run build && tsx tests/a2ui-mapper.test.ts && tsx tests/a2ui-e2e.test.ts && tsx tests/a2ui-renderer-script.test.ts","test:beam":"bun run build && tsx tests/beam/rendering.test.ts","test:load":"bun run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"tsx tests/schema-extractor.test.ts && tsx tests/marketplace-manager.test.ts && tsx tests/loader.test.ts && tsx tests/loader.comprehensive.test.ts && tsx tests/server.test.ts && tsx tests/server.comprehensive.test.ts && tsx tests/cli-runner.test.ts && tsx tests/cli.comprehensive.test.ts && tsx tests/logger.test.ts && tsx tests/error-handler.test.ts && tsx tests/validation.test.ts && tsx tests/daemon-pubsub.test.ts && tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","docs:build":"bun run docs:sync && vitepress build docs-site && node scripts/fix-docs-site-build.mjs","test:chain":"bun run test:all","test:smoke":"tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"bun run test:bridge:generation && bun run test:bridge:protocol && bun run test:bridge:beam","test:e2e:ui":"bun run build && playwright test --ui","test:github":"bun run build && tsx tests/github-issues.integration.ts","test:intent":"tsx tests/intent-contract.test.ts","test:loader":"tsx tests/loader.test.ts && tsx tests/runtime-config-store.test.ts","test:logger":"tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"tsx tests/schema-extractor.test.ts","test:server":"tsx tests/server.test.ts && tsx tests/sse-client-app-fallback.test.ts","test:sqlite":"bun run build && tsx tests/sqlite.test.ts","test:visual":"bun run build && bun run build:beam && tsx tests/beam/visual/visual.test.ts","docs:preview":"vitepress preview docs-site","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"bun run build && tsx tests/phase6a-service-worker.test.ts","test:phase6b":"bun run build && tsx tests/phase6b-offline-state.test.ts","test:phase6c":"bun run build && tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"bun run build && tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"bun run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html bun run test:unit","test:promises":"bun run build && bun run build:beam && tsx tests/promises.test.ts","test:security":"tsx tests/security.test.ts","prepublishOnly":"bun run verify:publish-version && node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is linked. Run: bun remove '+d+' && bun add '+d); process.exit(1);}}\" && bun run build && bun run build:beam","test:cf-deploy":"vitest run tests/cf-deploy-toml.test.ts","test:contracts":"tsx tests/contract/format-coverage.test.ts && tsx tests/contract/schema-contract.test.ts","test:cf-runtime":"vitest run tests/cf-runtime-kv.test.ts","test:github-ref":"tsx tests/github-ref-install.test.ts","test:mcp-config":"tsx tests/mcp-configuration.test.ts","test:validation":"tsx tests/validation.test.ts","test:bridge:beam":"tsx tests/bridge/beam-integration.test.ts","test:byte-compat":"RUN_E2E=1 vitest run tests/v128-byte-compat.test.ts","test:cf-bindings":"vitest run tests/cf-bindings-parser.test.ts","test:integration":"tsx tests/integration.test.ts","test:marketplace":"tsx tests/marketplace-manager.test.ts","test:zero-config":"tsx tests/zero-config.test.ts","test:cf-overrides":"vitest run tests/cf-overrides.test.ts","test:ui-rendering":"tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"tsx tests/ui-resources.test.ts","test:cf-mcp-bearer":"vitest run tests/cf-mcp-bearer.test.ts","test:daemon-buffer":"tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"tsx tests/daemon-pubsub.test.ts","test:error-handler":"tsx tests/error-handler.test.ts","test:daemon-watcher":"tsx tests/daemon-watcher.test.ts && tsx tests/schedule-missed-fire.test.ts","test:instance-drift":"tsx tests/instance-drift.test.ts","test:version-notify":"tsx tests/version-notify.test.ts","test:bridge:protocol":"tsx tests/bridge/protocol.test.ts","test:client-adaptive":"tsx tests/client-adaptive.test.ts","test:format-registry":"vitest run tests/format-registry.test.ts","test:streamable-http":"tsx tests/streamable-http-transport.test.ts","test:beam:regressions":"bun run build && tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"vitest run tests/viewport-manager.test.ts","test:beam:port-hosting":"tsx tests/beam/port-hosting-regressions.test.ts","test:bridge:generation":"tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"bun run build && tsx tests/pagination-phase5.test.ts","verify:publish-version":"node scripts/verify-publish-version.mjs","test:pagination-phase5c":"bun run build && tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"bun run build && tsx tests/pagination-phase5d.test.ts","test:content-negotiation":"RUN_E2E=1 vitest run tests/http-content-negotiation.test.ts","test:loader:comprehensive":"tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"vitest run tests/pagination-integration.test.ts","test:pagination-performance":"vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"bun run build && tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"defu":"^6.1.7","hono":"^4.12.18","flatted":"^3.4.2","fast-uri":"^3.1.2","basic-ftp":"^6.0.1","minimatch":"^10.2.1","picomatch":"^4.0.4","handlebars":"^4.7.9","ip-address":"^10.2.0","path-to-regexp":"^8.4.2","brace-expansion":"^5.0.6","@hono/node-server":"^1.19.13","express-rate-limit":"^8.2.2"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"Build MCP servers, CLI tools, and web dashboards for AI agents from a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","miniflare":"^4.20260507.1","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.7","@portel/photon-core":"^2.27.0","@modelcontextprotocol/sdk":"^1.29.0","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"packageManager":"bun@1.2.20","devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^6.13.1","eslint":"^10.3.0","vitest":"^4.1.5","prettier":"^3.8.0","vitepress":"^1.6.4","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^20.0.0","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^11.0.0"},"trustedDependencies":["better-sqlite3","esbuild"],"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.34.2_1780812471513_0.7659738752377832","host":"s3://npm-registry-packages-npm-production"}},"1.35.0":{"name":"@portel/photon","version":"1.35.0","keywords":["mcp","mcp-server","mcp-apps","model-context-protocol","ai-agents","ai-tools","chatgpt","claude","claude-code","claude-desktop","cursor","photon","typescript","cli","web-dashboard","single-file","business-logic","convention-over-configuration","hot-reload","marketplace","developer-tools","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.35.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://photon.portel.dev/","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"0d080b6d31bfc68f4adae36f634146a860ca8589","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.35.0.tgz","fileCount":835,"integrity":"sha512-Cw8ArEqWxzmrLFFZobpN9r6yrJol7rU1A9xXaxclMFmJ+Hl8DjOQDRhgfr9ihmydKprFAEuXSSV69yJymVX84Q==","signatures":[{"sig":"MEQCIBwMtNwmgkScrf9a7XPS4s0Onq1TB6kvjgsHKaho4G/XAiA18d0rGJmpYTqWQtZIahDGh7jOanaiMwRj4/TKYg3l0Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42307315},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"06435f5504442c4bb2ff6a79c08c2e4c4a9c262d","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"bun run build && bun run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","docs:dev":"bun run docs:sync && vitepress dev docs-site","lint:fix":"eslint src/ --fix","test:all":"bun run build && bun run test:security && bun run test:schema && bun run test:marketplace && bun run test:loader && bun run test:server && bun run test:integration && bun run test:byte-compat && bun run test:format-registry && bun run test:content-negotiation && bun run test:ui-resources && bun run test:client-adaptive && bun run test:zero-config && bun run test:mcp-config && bun run test:cli && bun run test:intent && bun run test:logger && bun run test:error-handler && bun run test:validation && bun run test:daemon-pubsub && bun run test:daemon-buffer && bun run test:instance-drift && bun run test:daemon-watcher && bun run test:ui-rendering && bun run test:beam:port-hosting && bun run test:photon-instance-manager && bun run test:viewport-aware-proxy && bun run test:viewport-manager && bun run test:pagination-integration && bun run test:pagination-performance && tsx tests/pagination-phase5.test.ts && tsx tests/pagination-phase5c.test.ts && tsx tests/pagination-phase5d.test.ts && tsx tests/phase6a-service-worker.test.ts && tsx tests/phase6b-offline-state.test.ts && tsx tests/phase6c-offline-sync.test.ts && tsx tests/phase6d-integration.test.ts && tsx tests/promises.test.ts && bun run test:cf-bindings && bun run test:cf-runtime && bun run test:cf-overrides && bun run test:cf-deploy && bun run test:cf-mcp-bearer && bun run test:readme","test:cli":"tsx tests/cli-runner.test.ts && tsx tests/ps-parse-target.test.ts","test:dom":"bun run build && bun run build:beam && tsx tests/contract/dom-structure.test.ts","test:e2e":"bun run build && playwright test","docs:sync":"node scripts/sync-docs-site.mjs","test:a2ui":"bun run build && tsx tests/a2ui-mapper.test.ts && tsx tests/a2ui-e2e.test.ts && tsx tests/a2ui-renderer-script.test.ts","test:beam":"bun run build && tsx tests/beam/rendering.test.ts","test:load":"bun run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"tsx tests/schema-extractor.test.ts && tsx tests/marketplace-manager.test.ts && tsx tests/loader.test.ts && tsx tests/loader.comprehensive.test.ts && tsx tests/server.test.ts && tsx tests/server.comprehensive.test.ts && tsx tests/cli-runner.test.ts && tsx tests/cli.comprehensive.test.ts && tsx tests/logger.test.ts && tsx tests/error-handler.test.ts && tsx tests/validation.test.ts && tsx tests/daemon-pubsub.test.ts && tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","docs:build":"bun run docs:sync && vitepress build docs-site && node scripts/fix-docs-site-build.mjs","test:chain":"bun run test:all","test:smoke":"tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"bun run test:bridge:generation && bun run test:bridge:protocol && bun run test:bridge:beam","test:e2e:ui":"bun run build && playwright test --ui","test:github":"bun run build && tsx tests/github-issues.integration.ts","test:intent":"tsx tests/intent-contract.test.ts","test:loader":"tsx tests/loader.test.ts && tsx tests/runtime-config-store.test.ts","test:logger":"tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"tsx tests/schema-extractor.test.ts","test:server":"tsx tests/server.test.ts && tsx tests/sse-client-app-fallback.test.ts","test:sqlite":"bun run build && tsx tests/sqlite.test.ts","test:visual":"bun run build && bun run build:beam && tsx tests/beam/visual/visual.test.ts","docs:preview":"vitepress preview docs-site","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"bun run build && tsx tests/phase6a-service-worker.test.ts","test:phase6b":"bun run build && tsx tests/phase6b-offline-state.test.ts","test:phase6c":"bun run build && tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"bun run build && tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"bun run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html bun run test:unit","test:promises":"bun run build && bun run build:beam && tsx tests/promises.test.ts","test:security":"tsx tests/security.test.ts","prepublishOnly":"bun run verify:publish-version && node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is linked. Run: bun remove '+d+' && bun add '+d); process.exit(1);}}\" && bun run build && bun run build:beam","test:cf-deploy":"vitest run tests/cf-deploy-toml.test.ts","test:contracts":"tsx tests/contract/format-coverage.test.ts && tsx tests/contract/schema-contract.test.ts && tsx tests/contract/render-dom.test.ts && tsx tests/contract/security-posture.test.ts && tsx tests/contract/coverage-gate.test.ts","test:cf-runtime":"vitest run tests/cf-runtime-kv.test.ts","test:github-ref":"tsx tests/github-ref-install.test.ts","test:mcp-config":"tsx tests/mcp-configuration.test.ts","test:validation":"tsx tests/validation.test.ts","test:bridge:beam":"tsx tests/bridge/beam-integration.test.ts","test:byte-compat":"RUN_E2E=1 vitest run tests/v128-byte-compat.test.ts","test:cf-bindings":"vitest run tests/cf-bindings-parser.test.ts","test:conformance":"bun run build && tsx tests/conformance/conformance.test.ts","test:integration":"tsx tests/integration.test.ts","test:marketplace":"tsx tests/marketplace-manager.test.ts","test:zero-config":"tsx tests/zero-config.test.ts","test:cf-overrides":"vitest run tests/cf-overrides.test.ts","test:ui-rendering":"tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"tsx tests/ui-resources.test.ts","test:cf-mcp-bearer":"vitest run tests/cf-mcp-bearer.test.ts","test:daemon-buffer":"tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"tsx tests/daemon-pubsub.test.ts","test:error-handler":"tsx tests/error-handler.test.ts","test:daemon-watcher":"tsx tests/daemon-watcher.test.ts && tsx tests/schedule-missed-fire.test.ts","test:instance-drift":"tsx tests/instance-drift.test.ts","test:version-notify":"tsx tests/version-notify.test.ts","test:bridge:protocol":"tsx tests/bridge/protocol.test.ts","test:client-adaptive":"tsx tests/client-adaptive.test.ts","test:format-registry":"vitest run tests/format-registry.test.ts","test:streamable-http":"tsx tests/streamable-http-transport.test.ts","test:beam:regressions":"bun run build && tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"vitest run tests/viewport-manager.test.ts","test:beam:port-hosting":"tsx tests/beam/port-hosting-regressions.test.ts","test:bridge:generation":"tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"bun run build && tsx tests/pagination-phase5.test.ts","verify:publish-version":"node scripts/verify-publish-version.mjs","test:pagination-phase5c":"bun run build && tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"bun run build && tsx tests/pagination-phase5d.test.ts","test:content-negotiation":"RUN_E2E=1 vitest run tests/http-content-negotiation.test.ts","test:loader:comprehensive":"tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"vitest run tests/pagination-integration.test.ts","test:pagination-performance":"vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"bun run build && tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"defu":"^6.1.7","hono":"^4.12.18","flatted":"^3.4.2","fast-uri":"^3.1.2","basic-ftp":"^6.0.1","minimatch":"^10.2.1","picomatch":"^4.0.4","handlebars":"^4.7.9","ip-address":"^10.2.0","path-to-regexp":"^8.4.2","brace-expansion":"^5.0.6","@hono/node-server":"^1.19.13","express-rate-limit":"^8.2.2"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"Build MCP servers, CLI tools, and web dashboards for AI agents from a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","miniflare":"^4.20260507.1","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.7","@portel/photon-core":"^2.27.1","@modelcontextprotocol/sdk":"^1.29.0","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"packageManager":"bun@1.2.20","devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^6.13.1","eslint":"^10.3.0","vitest":"^4.1.5","prettier":"^3.8.0","vitepress":"^1.6.4","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^20.0.0","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^11.0.0"},"trustedDependencies":["better-sqlite3","esbuild"],"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.35.0_1782181443156_0.3810013710126281","host":"s3://npm-registry-packages-npm-production"}},"1.35.1":{"name":"@portel/photon","version":"1.35.1","keywords":["mcp","mcp-server","mcp-apps","model-context-protocol","ai-agents","ai-tools","chatgpt","claude","claude-code","claude-desktop","cursor","photon","typescript","cli","web-dashboard","single-file","business-logic","convention-over-configuration","hot-reload","marketplace","developer-tools","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.35.1","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://photon.portel.dev/","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"53573515f975c3bea7c287e3eac2d70b2a187a51","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.35.1.tgz","fileCount":835,"integrity":"sha512-PYPLO5kePgcQIS6eeUgPW7lSOMqGABQDDYW05COd9VlgvQV1t52Lu5asNx9UmhrATWD8PGzAJKvF/+aXleUQLw==","signatures":[{"sig":"MEUCIHS+E4UKljMo0BnDMWDmISYCzzbWufmFtctssetojeAnAiEAhg+XqAAANYH1niiB0+/4cT49XG9/pLdXrvxqKqXivUs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42308575},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"8ae9ff9b628736a22b037d66a0f9e4eb46bea4c7","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"bun run build && bun run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","docs:dev":"bun run docs:sync && vitepress dev docs-site","lint:fix":"eslint src/ --fix","test:all":"bun run build && bun run test:security && bun run test:schema && bun run test:marketplace && bun run test:loader && bun run test:server && bun run test:integration && bun run test:byte-compat && bun run test:format-registry && bun run test:content-negotiation && bun run test:ui-resources && bun run test:client-adaptive && bun run test:zero-config && bun run test:mcp-config && bun run test:cli && bun run test:intent && bun run test:logger && bun run test:error-handler && bun run test:validation && bun run test:daemon-pubsub && bun run test:daemon-buffer && bun run test:instance-drift && bun run test:daemon-watcher && bun run test:ui-rendering && bun run test:beam:port-hosting && bun run test:photon-instance-manager && bun run test:viewport-aware-proxy && bun run test:viewport-manager && bun run test:pagination-integration && bun run test:pagination-performance && tsx tests/pagination-phase5.test.ts && tsx tests/pagination-phase5c.test.ts && tsx tests/pagination-phase5d.test.ts && tsx tests/phase6a-service-worker.test.ts && tsx tests/phase6b-offline-state.test.ts && tsx tests/phase6c-offline-sync.test.ts && tsx tests/phase6d-integration.test.ts && tsx tests/promises.test.ts && bun run test:cf-bindings && bun run test:cf-runtime && bun run test:cf-overrides && bun run test:cf-deploy && bun run test:cf-mcp-bearer && bun run test:readme","test:cli":"tsx tests/cli-runner.test.ts && tsx tests/ps-parse-target.test.ts","test:dom":"bun run build && bun run build:beam && tsx tests/contract/dom-structure.test.ts","test:e2e":"bun run build && playwright test","docs:sync":"node scripts/sync-docs-site.mjs","test:a2ui":"bun run build && tsx tests/a2ui-mapper.test.ts && tsx tests/a2ui-e2e.test.ts && tsx tests/a2ui-renderer-script.test.ts","test:beam":"bun run build && tsx tests/beam/rendering.test.ts","test:load":"bun run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"tsx tests/schema-extractor.test.ts && tsx tests/marketplace-manager.test.ts && tsx tests/loader.test.ts && tsx tests/loader.comprehensive.test.ts && tsx tests/server.test.ts && tsx tests/server.comprehensive.test.ts && tsx tests/cli-runner.test.ts && tsx tests/cli.comprehensive.test.ts && tsx tests/logger.test.ts && tsx tests/error-handler.test.ts && tsx tests/validation.test.ts && tsx tests/daemon-pubsub.test.ts && tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","docs:build":"bun run docs:sync && vitepress build docs-site && node scripts/fix-docs-site-build.mjs","test:chain":"bun run test:all","test:smoke":"tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"bun run test:bridge:generation && bun run test:bridge:protocol && bun run test:bridge:beam","test:e2e:ui":"bun run build && playwright test --ui","test:github":"bun run build && tsx tests/github-issues.integration.ts","test:intent":"tsx tests/intent-contract.test.ts","test:loader":"tsx tests/loader.test.ts && tsx tests/runtime-config-store.test.ts","test:logger":"tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"tsx tests/schema-extractor.test.ts","test:server":"tsx tests/server.test.ts && tsx tests/sse-client-app-fallback.test.ts","test:sqlite":"bun run build && tsx tests/sqlite.test.ts","test:visual":"bun run build && bun run build:beam && tsx tests/beam/visual/visual.test.ts","docs:preview":"vitepress preview docs-site","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"bun run build && tsx tests/phase6a-service-worker.test.ts","test:phase6b":"bun run build && tsx tests/phase6b-offline-state.test.ts","test:phase6c":"bun run build && tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"bun run build && tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"bun run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html bun run test:unit","test:promises":"bun run build && bun run build:beam && tsx tests/promises.test.ts","test:security":"tsx tests/security.test.ts","prepublishOnly":"bun run verify:publish-version && node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is linked. Run: bun remove '+d+' && bun add '+d); process.exit(1);}}\" && bun run build && bun run build:beam","test:cf-deploy":"vitest run tests/cf-deploy-toml.test.ts","test:contracts":"tsx tests/contract/format-coverage.test.ts && tsx tests/contract/schema-contract.test.ts && tsx tests/contract/render-dom.test.ts && tsx tests/contract/security-posture.test.ts && tsx tests/contract/coverage-gate.test.ts","test:cf-runtime":"vitest run tests/cf-runtime-kv.test.ts","test:github-ref":"tsx tests/github-ref-install.test.ts","test:mcp-config":"tsx tests/mcp-configuration.test.ts","test:validation":"tsx tests/validation.test.ts","test:bridge:beam":"tsx tests/bridge/beam-integration.test.ts","test:byte-compat":"RUN_E2E=1 vitest run tests/v128-byte-compat.test.ts","test:cf-bindings":"vitest run tests/cf-bindings-parser.test.ts","test:conformance":"bun run build && tsx tests/conformance/conformance.test.ts","test:integration":"tsx tests/integration.test.ts","test:marketplace":"tsx tests/marketplace-manager.test.ts","test:zero-config":"tsx tests/zero-config.test.ts","test:cf-overrides":"vitest run tests/cf-overrides.test.ts","test:ui-rendering":"tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"tsx tests/ui-resources.test.ts","test:cf-mcp-bearer":"vitest run tests/cf-mcp-bearer.test.ts","test:daemon-buffer":"tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"tsx tests/daemon-pubsub.test.ts","test:error-handler":"tsx tests/error-handler.test.ts","test:daemon-watcher":"tsx tests/daemon-watcher.test.ts && tsx tests/schedule-missed-fire.test.ts","test:instance-drift":"tsx tests/instance-drift.test.ts","test:version-notify":"tsx tests/version-notify.test.ts","test:bridge:protocol":"tsx tests/bridge/protocol.test.ts","test:client-adaptive":"tsx tests/client-adaptive.test.ts","test:format-registry":"vitest run tests/format-registry.test.ts","test:streamable-http":"tsx tests/streamable-http-transport.test.ts","test:beam:regressions":"bun run build && tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"vitest run tests/viewport-manager.test.ts","test:beam:port-hosting":"tsx tests/beam/port-hosting-regressions.test.ts","test:bridge:generation":"tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"bun run build && tsx tests/pagination-phase5.test.ts","verify:publish-version":"node scripts/verify-publish-version.mjs","test:pagination-phase5c":"bun run build && tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"bun run build && tsx tests/pagination-phase5d.test.ts","test:content-negotiation":"RUN_E2E=1 vitest run tests/http-content-negotiation.test.ts","test:loader:comprehensive":"tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"vitest run tests/pagination-integration.test.ts","test:pagination-performance":"vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"bun run build && tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"defu":"^6.1.7","hono":"^4.12.18","flatted":"^3.4.2","fast-uri":"^3.1.2","basic-ftp":"^6.0.1","minimatch":"^10.2.1","picomatch":"^4.0.4","handlebars":"^4.7.9","ip-address":"^10.2.0","path-to-regexp":"^8.4.2","brace-expansion":"^5.0.6","@hono/node-server":"^1.19.13","express-rate-limit":"^8.2.2"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.11.0","description":"Build MCP servers, CLI tools, and web dashboards for AI agents from a single TypeScript file.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","miniflare":"^4.20260507.1","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.7","@portel/photon-core":"^2.27.1","@modelcontextprotocol/sdk":"^1.29.0","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"packageManager":"bun@1.2.20","devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^6.13.1","eslint":"^10.3.0","vitest":"^4.1.5","prettier":"^3.8.0","vitepress":"^1.6.4","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^20.0.0","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^11.0.0"},"trustedDependencies":["better-sqlite3","esbuild"],"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.35.1_1782182231497_0.5664630103183825","host":"s3://npm-registry-packages-npm-production"}},"1.36.0":{"name":"@portel/photon","version":"1.36.0","keywords":["mcp","mcp-server","mcp-apps","model-context-protocol","ai-agents","ai-tools","chatgpt","claude","claude-code","claude-desktop","cursor","photon","typescript","cli","web-dashboard","single-file","business-logic","convention-over-configuration","hot-reload","marketplace","developer-tools","enterprise"],"author":"Portel Dev","license":"MIT","_id":"@portel/photon@1.36.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://photon.portel.dev/","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"fddcb88898f16c55bf62a6311258730e55a52bef","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.36.0.tgz","fileCount":880,"integrity":"sha512-3FzxXq/VuBF9ae7jSQcj7F24iCdYAm/wF9s5gjRemEVTNTtHepHjHg7U9IcKfc5qGnv8VV9V7d6ceFY+Q6+viA==","signatures":[{"sig":"MEYCIQC+Gz5eol+yudde9abkO4D1+jGdN5TAxgYePxR4X0sH5wIhAJFvMg2Uku2QbrQc9FGiQaNhcEu3phKt9eHjPKvJq4NV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42587212},"main":"dist/index.js","type":"module","shasum":"fddcb88898f16c55bf62a6311258730e55a52bef","engines":{"bun":">=1.0.0","node":">=20.0.0"},"scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"bun run build && bun run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","docs:dev":"bun run docs:sync && vitepress dev docs-site","lint:fix":"eslint src/ --fix","test:all":"bun run build && bun run test:security && bun run test:schema && bun run test:marketplace && bun run test:loader && bun run test:server && bun run test:integration && bun run test:byte-compat && bun run test:format-registry && bun run test:content-negotiation && bun run test:ui-resources && bun run test:client-adaptive && bun run test:zero-config && bun run test:mcp-config && bun run test:cli && bun run test:intent && bun run test:logger && bun run test:error-handler && bun run test:validation && bun run test:daemon-pubsub && bun run test:daemon-buffer && bun run test:instance-drift && bun run test:daemon-watcher && bun run test:ui-rendering && bun run test:beam:port-hosting && bun run test:photon-instance-manager && bun run test:viewport-aware-proxy && bun run test:viewport-manager && bun run test:pagination-integration && bun run test:pagination-performance && tsx tests/pagination-phase5.test.ts && tsx tests/pagination-phase5c.test.ts && tsx tests/pagination-phase5d.test.ts && tsx tests/phase6a-service-worker.test.ts && tsx tests/phase6b-offline-state.test.ts && tsx tests/phase6c-offline-sync.test.ts && tsx tests/phase6d-integration.test.ts && tsx tests/promises.test.ts && bun run test:cf-bindings && bun run test:cf-runtime && bun run test:cf-overrides && bun run test:cf-deploy && bun run test:cf-mcp-bearer && bun run test:readme","test:cli":"tsx tests/cli-runner.test.ts && tsx tests/ps-parse-target.test.ts","test:dom":"bun run build && bun run build:beam && tsx tests/contract/dom-structure.test.ts","test:e2e":"bun run build && playwright test","docs:sync":"node scripts/sync-docs-site.mjs","test:a2ui":"bun run build && tsx tests/a2ui-mapper.test.ts && tsx tests/a2ui-e2e.test.ts && tsx tests/a2ui-renderer-script.test.ts","test:beam":"bun run build && tsx tests/beam/rendering.test.ts","test:load":"bun run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"tsx tests/schema-extractor.test.ts && tsx tests/marketplace-manager.test.ts && tsx tests/loader.test.ts && tsx tests/loader.comprehensive.test.ts && tsx tests/server.test.ts && tsx tests/server.comprehensive.test.ts && tsx tests/cli-runner.test.ts && tsx tests/cli.comprehensive.test.ts && tsx tests/logger.test.ts && tsx tests/error-handler.test.ts && tsx tests/validation.test.ts && tsx tests/daemon-pubsub.test.ts && tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","docs:build":"bun run docs:sync && vitepress build docs-site && node scripts/fix-docs-site-build.mjs","test:chain":"bun run test:all","test:smoke":"tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"bun run test:bridge:generation && bun run test:bridge:protocol && bun run test:bridge:beam","test:e2e:ui":"bun run build && playwright test --ui","test:github":"bun run build && tsx tests/github-issues.integration.ts","test:intent":"tsx tests/intent-contract.test.ts","test:loader":"tsx tests/loader.test.ts && tsx tests/runtime-config-store.test.ts","test:logger":"tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"tsx tests/schema-extractor.test.ts","test:server":"tsx tests/server.test.ts && tsx tests/sse-client-app-fallback.test.ts","test:sqlite":"bun run build && tsx tests/sqlite.test.ts","test:visual":"bun run build && bun run build:beam && tsx tests/beam/visual/visual.test.ts","docs:preview":"vitepress preview docs-site","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"bun run build && tsx tests/phase6a-service-worker.test.ts","test:phase6b":"bun run build && tsx tests/phase6b-offline-state.test.ts","test:phase6c":"bun run build && tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"bun run build && tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"bun run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html bun run test:unit","test:promises":"bun run build && bun run build:beam && tsx tests/promises.test.ts","test:security":"tsx tests/security.test.ts","prepublishOnly":"bun run verify:publish-version && node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is linked. Run: bun remove '+d+' && bun add '+d); process.exit(1);}}\" && bun run build && bun run build:beam","test:cf-deploy":"vitest run tests/cf-deploy-toml.test.ts","test:contracts":"tsx tests/contract/format-coverage.test.ts && tsx tests/contract/schema-contract.test.ts && tsx tests/contract/render-dom.test.ts && tsx tests/contract/security-posture.test.ts && tsx tests/contract/coverage-gate.test.ts","test:cf-runtime":"vitest run tests/cf-runtime-kv.test.ts","test:github-ref":"tsx tests/github-ref-install.test.ts","test:mcp-config":"tsx tests/mcp-configuration.test.ts","test:validation":"tsx tests/validation.test.ts","test:bridge:beam":"tsx tests/bridge/beam-integration.test.ts","test:byte-compat":"RUN_E2E=1 vitest run tests/v128-byte-compat.test.ts","test:cf-bindings":"vitest run tests/cf-bindings-parser.test.ts","test:conformance":"bun run build && tsx tests/conformance/conformance.test.ts","test:integration":"tsx tests/integration.test.ts","test:marketplace":"tsx tests/marketplace-manager.test.ts","test:zero-config":"tsx tests/zero-config.test.ts","test:cf-overrides":"vitest run tests/cf-overrides.test.ts","test:ui-rendering":"tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"tsx tests/ui-resources.test.ts","test:cf-mcp-bearer":"vitest run tests/cf-mcp-bearer.test.ts","test:daemon-buffer":"tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"tsx tests/daemon-pubsub.test.ts","test:error-handler":"tsx tests/error-handler.test.ts","test:daemon-watcher":"tsx tests/daemon-watcher.test.ts && tsx tests/schedule-missed-fire.test.ts","test:instance-drift":"tsx tests/instance-drift.test.ts","test:version-notify":"tsx tests/version-notify.test.ts","test:bridge:protocol":"tsx tests/bridge/protocol.test.ts","test:client-adaptive":"tsx tests/client-adaptive.test.ts","test:format-registry":"vitest run tests/format-registry.test.ts","test:streamable-http":"tsx tests/streamable-http-transport.test.ts","test:beam:regressions":"bun run build && tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"vitest run tests/viewport-manager.test.ts","test:beam:port-hosting":"tsx tests/beam/port-hosting-regressions.test.ts","test:bridge:generation":"tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"bun run build && tsx tests/pagination-phase5.test.ts","verify:publish-version":"node scripts/verify-publish-version.mjs","test:pagination-phase5c":"bun run build && tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"bun run build && tsx tests/pagination-phase5d.test.ts","test:content-negotiation":"RUN_E2E=1 vitest run tests/http-content-negotiation.test.ts","test:loader:comprehensive":"tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"vitest run tests/pagination-integration.test.ts","test:pagination-performance":"vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"bun run build && tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"defu":"^6.1.7","hono":"^4.12.18","flatted":"^3.4.2","fast-uri":"^3.1.2","basic-ftp":"^6.0.1","minimatch":"^10.2.1","picomatch":"^4.0.4","handlebars":"^4.7.9","ip-address":"^10.2.0","path-to-regexp":"^8.4.2","brace-expansion":"^5.0.6","@hono/node-server":"^1.19.13","express-rate-limit":"^8.2.2"},"_integrity":"sha512-3FzxXq/VuBF9ae7jSQcj7F24iCdYAm/wF9s5gjRemEVTNTtHepHjHg7U9IcKfc5qGnv8VV9V7d6ceFY+Q6+viA==","repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"10.8.3","description":"Build MCP servers, CLI tools, and web dashboards for AI agents from a single TypeScript file.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","miniflare":"^4.20260507.1","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.7","@portel/photon-core":"^2.27.1","@modelcontextprotocol/sdk":"^1.29.0","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"packageManager":"bun@1.2.20","devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^6.13.1","eslint":"^10.3.0","vitest":"^4.1.5","prettier":"^3.8.0","vitepress":"^1.6.4","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^20.0.0","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^11.0.0"},"trustedDependencies":["better-sqlite3","esbuild"],"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.36.0_1783734735141_0.540055000420617","host":"s3://npm-registry-packages-npm-production"}},"1.36.1":{"name":"@portel/photon","version":"1.36.1","keywords":["mcp","mcp-server","mcp-apps","model-context-protocol","ai-agents","ai-tools","chatgpt","claude","claude-code","claude-desktop","cursor","photon","typescript","cli","web-dashboard","single-file","business-logic","convention-over-configuration","hot-reload","marketplace","developer-tools","enterprise"],"author":"Portel Dev","license":"MIT","_id":"@portel/photon@1.36.1","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://photon.portel.dev/","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"9080ddf173e984b596da8ff617aa8c57f3a5265a","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.36.1.tgz","fileCount":880,"integrity":"sha512-Udsozt9ldy6saFEHNzeO10OWSfZ5iRaTqQ3kuSv4EsBT84JvUZDWba6ontwQy7JQ7Yz6UlxWz8CVUiKh95TJng==","signatures":[{"sig":"MEQCIFwuDns2XHGoWkbwgPA9alK84SC72ca+NmU5zK5rFg4OAiAEjo8haUb3Aw+YGsbOLJdyqozyO/r/UH88d+pCyPzppg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42589190},"main":"dist/index.js","type":"module","shasum":"9080ddf173e984b596da8ff617aa8c57f3a5265a","engines":{"bun":">=1.0.0","node":">=20.0.0"},"scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"bun run build && bun run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","docs:dev":"bun run docs:sync && vitepress dev docs-site","lint:fix":"eslint src/ --fix","test:all":"bun run build && bun run test:security && bun run test:schema && bun run test:marketplace && bun run test:loader && bun run test:server && bun run test:integration && bun run test:byte-compat && bun run test:format-registry && bun run test:content-negotiation && bun run test:ui-resources && bun run test:client-adaptive && bun run test:zero-config && bun run test:mcp-config && bun run test:cli && bun run test:intent && bun run test:logger && bun run test:error-handler && bun run test:validation && bun run test:bridge && bun run test:beam-web-routes && bun run test:daemon-pubsub && bun run test:daemon-buffer && bun run test:instance-drift && bun run test:daemon-watcher && bun run test:ui-rendering && bun run test:beam:port-hosting && bun run test:photon-instance-manager && bun run test:viewport-aware-proxy && bun run test:viewport-manager && bun run test:pagination-integration && bun run test:pagination-performance && tsx tests/pagination-phase5.test.ts && tsx tests/pagination-phase5c.test.ts && tsx tests/pagination-phase5d.test.ts && tsx tests/phase6a-service-worker.test.ts && tsx tests/phase6b-offline-state.test.ts && tsx tests/phase6c-offline-sync.test.ts && tsx tests/phase6d-integration.test.ts && tsx tests/promises.test.ts && bun run test:cf-bindings && bun run test:cf-runtime && bun run test:cf-overrides && bun run test:cf-deploy && bun run test:cf-mcp-bearer && bun run test:readme","test:cli":"tsx tests/cli-runner.test.ts && tsx tests/ps-parse-target.test.ts","test:dom":"bun run build && bun run build:beam && tsx tests/contract/dom-structure.test.ts","test:e2e":"bun run build && playwright test","docs:sync":"node scripts/sync-docs-site.mjs","test:a2ui":"bun run build && tsx tests/a2ui-mapper.test.ts && tsx tests/a2ui-e2e.test.ts && tsx tests/a2ui-renderer-script.test.ts","test:beam":"bun run build && tsx tests/beam/rendering.test.ts","test:load":"bun run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"tsx tests/schema-extractor.test.ts && tsx tests/marketplace-manager.test.ts && tsx tests/loader.test.ts && tsx tests/loader.comprehensive.test.ts && tsx tests/server.test.ts && tsx tests/server.comprehensive.test.ts && tsx tests/cli-runner.test.ts && tsx tests/cli.comprehensive.test.ts && tsx tests/logger.test.ts && tsx tests/error-handler.test.ts && tsx tests/validation.test.ts && tsx tests/daemon-pubsub.test.ts && tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","docs:build":"bun run docs:sync && vitepress build docs-site && node scripts/fix-docs-site-build.mjs","test:chain":"bun run test:all","test:smoke":"tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"bun run test:bridge:generation && bun run test:bridge:protocol && bun run test:bridge:beam","test:e2e:ui":"bun run build && playwright test --ui","test:github":"bun run build && tsx tests/github-issues.integration.ts","test:intent":"tsx tests/intent-contract.test.ts","test:loader":"tsx tests/loader.test.ts && tsx tests/runtime-config-store.test.ts","test:logger":"tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"tsx tests/schema-extractor.test.ts","test:server":"tsx tests/server.test.ts && tsx tests/sse-client-app-fallback.test.ts","test:sqlite":"bun run build && tsx tests/sqlite.test.ts","test:visual":"bun run build && bun run build:beam && tsx tests/beam/visual/visual.test.ts","docs:preview":"vitepress preview docs-site","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"bun run build && tsx tests/phase6a-service-worker.test.ts","test:phase6b":"bun run build && tsx tests/phase6b-offline-state.test.ts","test:phase6c":"bun run build && tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"bun run build && tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"bun run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html bun run test:unit","test:promises":"bun run build && bun run build:beam && tsx tests/promises.test.ts","test:security":"tsx tests/security.test.ts","prepublishOnly":"bun run verify:publish-version && node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is linked. Run: bun remove '+d+' && bun add '+d); process.exit(1);}}\" && bun run build && bun run build:beam","test:cf-deploy":"vitest run tests/cf-deploy-toml.test.ts","test:contracts":"tsx tests/contract/format-coverage.test.ts && tsx tests/contract/schema-contract.test.ts && tsx tests/contract/render-dom.test.ts && tsx tests/contract/security-posture.test.ts && tsx tests/contract/coverage-gate.test.ts","test:cf-runtime":"vitest run tests/cf-runtime-kv.test.ts","test:github-ref":"tsx tests/github-ref-install.test.ts","test:mcp-config":"tsx tests/mcp-configuration.test.ts","test:validation":"tsx tests/validation.test.ts","test:bridge:beam":"tsx tests/bridge/beam-integration.test.ts","test:byte-compat":"RUN_E2E=1 vitest run tests/v128-byte-compat.test.ts","test:cf-bindings":"vitest run tests/cf-bindings-parser.test.ts","test:conformance":"bun run build && tsx tests/conformance/conformance.test.ts","test:integration":"tsx tests/integration.test.ts","test:marketplace":"tsx tests/marketplace-manager.test.ts","test:zero-config":"tsx tests/zero-config.test.ts","test:cf-overrides":"vitest run tests/cf-overrides.test.ts","test:ui-rendering":"tsx --test tests/ui/result-rendering.test.ts","test:ui-resources":"tsx tests/ui-resources.test.ts","test:cf-mcp-bearer":"vitest run tests/cf-mcp-bearer.test.ts","test:daemon-buffer":"tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"tsx tests/daemon-pubsub.test.ts","test:error-handler":"tsx tests/error-handler.test.ts","test:daemon-watcher":"tsx tests/daemon-watcher.test.ts && tsx tests/schedule-missed-fire.test.ts","test:instance-drift":"tsx tests/instance-drift.test.ts","test:version-notify":"tsx tests/version-notify.test.ts","test:beam-web-routes":"tsx tests/beam-web-route-matching.test.ts","test:bridge:protocol":"tsx tests/bridge/protocol.test.ts","test:client-adaptive":"tsx tests/client-adaptive.test.ts","test:format-registry":"vitest run tests/format-registry.test.ts","test:streamable-http":"tsx tests/streamable-http-transport.test.ts","test:beam:regressions":"bun run build && tsx tests/beam/beam-integration-regressions.test.ts","test:viewport-manager":"vitest run tests/viewport-manager.test.ts","test:beam:port-hosting":"tsx tests/beam/port-hosting-regressions.test.ts","test:bridge:generation":"tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"tsx tests/cli.comprehensive.test.ts","test:pagination-phase5":"bun run build && tsx tests/pagination-phase5.test.ts","verify:publish-version":"node scripts/verify-publish-version.mjs","test:pagination-phase5c":"bun run build && tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"bun run build && tsx tests/pagination-phase5d.test.ts","test:content-negotiation":"RUN_E2E=1 vitest run tests/http-content-negotiation.test.ts","test:loader:comprehensive":"tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"vitest run tests/viewport-aware-proxy.test.ts","test:pagination-integration":"vitest run tests/pagination-integration.test.ts","test:pagination-performance":"vitest run tests/pagination-performance.test.ts","test:multi-client-pagination":"bun run build && tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"vitest run tests/photon-instance-manager.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"defu":"^6.1.7","hono":"^4.12.18","flatted":"^3.4.2","fast-uri":"^3.1.2","basic-ftp":"^6.0.1","minimatch":"^10.2.1","picomatch":"^4.0.4","handlebars":"^4.7.9","ip-address":"^10.2.0","path-to-regexp":"^8.4.2","brace-expansion":"^5.0.6","@hono/node-server":"^1.19.13","express-rate-limit":"^8.2.2"},"_integrity":"sha512-Udsozt9ldy6saFEHNzeO10OWSfZ5iRaTqQ3kuSv4EsBT84JvUZDWba6ontwQy7JQ7Yz6UlxWz8CVUiKh95TJng==","repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"10.8.3","description":"Build MCP servers, CLI tools, and web dashboards for AI agents from a single TypeScript file.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","miniflare":"^4.20260507.1","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.7","@portel/photon-core":"^2.27.1","@modelcontextprotocol/sdk":"^1.29.0","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"packageManager":"bun@1.2.20","devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^6.13.1","eslint":"^10.3.0","vitest":"^4.1.5","prettier":"^3.8.0","vitepress":"^1.6.4","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^20.0.0","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@release-it/conventional-changelog":"^11.0.0"},"trustedDependencies":["better-sqlite3","esbuild"],"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.36.1_1784192631283_0.9641462993169863","host":"s3://npm-registry-packages-npm-production"}},"1.37.0":{"name":"@portel/photon","version":"1.37.0","keywords":["mcp","mcp-server","mcp-apps","model-context-protocol","ai-agents","ai-tools","chatgpt","claude","claude-code","claude-desktop","cursor","photon","typescript","cli","web-dashboard","single-file","business-logic","convention-over-configuration","hot-reload","marketplace","developer-tools","enterprise"],"author":{"name":"Portel Dev"},"license":"MIT","_id":"@portel/photon@1.37.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://photon.portel.dev/","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"bbf2d383952a8387a3916bca4e039f9511b6dd40","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.37.0.tgz","fileCount":1078,"integrity":"sha512-9k7u2tUkBMf5rBbbM3ryEOE1dx9ls0DY3wl2SCNYUeJmrt8g5sMS3xPipCvdIyV9xkxGqEbfLaCKrwiXZ66jIg==","signatures":[{"sig":"MEYCIQCrybr2X9h0jLAHewGSAR0JneSTWbhjJ+RoPmyK4b+5mgIhAJup08V+M9ItjWXGDmugymtUeNE3WP/rAr1rlmuArOtP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDcDLgwCKCGY+WjJb7lZOJP3xlBOc8YMcfneB9qkHTN9AiEA1pA958lgdb0QYfcmNR8Jquj/roeEC/vu1mN0gM9oQ/s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46360827},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"09d640379d2a6dd5de9333e79df8c54667c1b387","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"bun run build && bun run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","docs:dev":"bun run docs:sync && vitepress dev docs-site","lint:fix":"eslint src/ --fix","test:all":"bun run build && bun run test:security && bun run test:schema && bun run test:marketplace && bun run test:loader && bun run test:server && bun run test:websocket && bun run test:integration && bun run test:byte-compat && bun run test:format-registry && bun run test:content-negotiation && bun run test:mcp-oauth-2026 && bun run test:mcp-wire && bun run test:mcp-input && bun run test:mcp-schema && bun run test:mcp-errors && bun run test:mcp-routing-headers && bun run test:mcp-multi-round && bun run test:mcp-tasks-extension && bun run test:mcp-observability-2026 && bun run test:mcp-stateless-resilience-2026 && bun run test:mcp-stateless-load-2026 && bun run test:ui-resources && bun run test:client-adaptive && bun run test:zero-config && bun run test:mcp-config && bun run test:cli && bun run test:intent && bun run test:logger && bun run test:error-handler && bun run test:validation && bun run test:bridge && bun run test:beam-web-routes && bun run test:daemon-pubsub && bun run test:daemon-buffer && bun run test:instance-drift && bun run test:daemon-watcher && bun run test:ui-rendering && bun run test:beam:port-hosting && bun run test:photon-instance-manager && bun run test:viewport-aware-proxy && bun run test:viewport-manager && bun run test:pagination-integration && bun run test:pagination-performance && tsx tests/pagination-phase5.test.ts && tsx tests/pagination-phase5c.test.ts && tsx tests/pagination-phase5d.test.ts && tsx tests/phase6a-service-worker.test.ts && tsx tests/phase6b-offline-state.test.ts && tsx tests/phase6c-offline-sync.test.ts && tsx tests/phase6d-integration.test.ts && tsx tests/promises.test.ts && bun run test:cf-bindings && bun run test:cf-runtime && bun run test:cf-overrides && bun run test:cf-deploy && bun run test:cf-mcp-bearer && bun run test:readme","test:cli":"tsx tests/cli-runner.test.ts && tsx tests/ps-parse-target.test.ts","test:dom":"bun run build && bun run build:beam && tsx tests/contract/dom-structure.test.ts","test:e2e":"bun run build && playwright test","docs:sync":"node scripts/sync-docs-site.mjs","test:a2ui":"bun run build && tsx tests/a2ui-mapper.test.ts && tsx tests/a2ui-e2e.test.ts && tsx tests/a2ui-renderer-script.test.ts","test:beam":"bash scripts/run-package-script.sh build && bash scripts/run-ts-test.sh tests/beam/rendering.test.ts","test:load":"bun run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"tsx tests/schema-extractor.test.ts && tsx tests/marketplace-manager.test.ts && tsx tests/loader.test.ts && tsx tests/loader.comprehensive.test.ts && tsx tests/server.test.ts && tsx tests/server.comprehensive.test.ts && tsx tests/cli-runner.test.ts && tsx tests/cli.comprehensive.test.ts && tsx tests/logger.test.ts && tsx tests/error-handler.test.ts && tsx tests/validation.test.ts && tsx tests/daemon-pubsub.test.ts && tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","docs:build":"bun run docs:sync && vitepress build docs-site && node scripts/fix-docs-site-build.mjs","test:chain":"bun run test:all","test:smoke":"tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"bun run test:bridge:generation && bun run test:bridge:protocol && bun run test:bridge:beam && bunx vitest run tests/theme-token-runtime.test.ts","test:e2e:ui":"bun run build && playwright test --ui","test:github":"bun run build && tsx tests/github-issues.integration.ts","test:intent":"tsx tests/intent-contract.test.ts","test:loader":"tsx tests/loader.test.ts && tsx tests/runtime-config-store.test.ts","test:logger":"tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"tsx tests/schema-extractor.test.ts","test:server":"tsx tests/server.test.ts && tsx tests/sse-client-app-fallback.test.ts","test:sqlite":"bun run build && tsx tests/sqlite.test.ts","test:visual":"bash scripts/run-package-script.sh build && bash scripts/run-package-script.sh build:beam && bash scripts/run-ts-test.sh tests/beam/visual/visual.test.ts","docs:preview":"vitepress preview docs-site","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"bun run build && tsx tests/phase6a-service-worker.test.ts","test:phase6b":"bun run build && tsx tests/phase6b-offline-state.test.ts","test:phase6c":"bun run build && tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"bun run build && tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"bun run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html bun run test:unit","test:mcp-docs":"bun run build && tsx tests/mcp-documentation.test.ts","test:mcp-wire":"bun tests/mcp-wire-adapter.golden.test.ts","test:promises":"bun run build && bun run build:beam && tsx tests/promises.test.ts","test:security":"tsx tests/security.test.ts","prepublishOnly":"bun run verify:publish-version && node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is linked. Run: bun remove '+d+' && bun add '+d); process.exit(1);}}\" && bun run build && bun run build:beam","test:cf-deploy":"vitest run tests/cf-deploy-toml.test.ts","test:contracts":"tsx tests/contract/format-coverage.test.ts && tsx tests/contract/schema-contract.test.ts && tsx tests/contract/render-dom.test.ts && tsx tests/contract/security-posture.test.ts && tsx tests/contract/coverage-gate.test.ts","test:mcp-input":"tsx tests/mcp-input.test.ts && tsx tests/mcp-client-sdk.test.ts","test:websocket":"vitest run tests/websocket-upgrade.test.ts","test:cf-runtime":"vitest run tests/cf-runtime-kv.test.ts","test:github-ref":"tsx tests/github-ref-install.test.ts","test:layout-lab":"bun run build && tsx tests/contract/layout-lab.test.ts","test:mcp-config":"tsx tests/mcp-configuration.test.ts","test:mcp-errors":"node tests/mcp-error-semantics.test.ts","test:mcp-schema":"node tests/mcp-json-schema-2020-12.test.ts","test:mcp-sdk-v2":"bun run build && tsx tests/mcp-sdk-v2-negotiation.test.ts && tsx tests/mcp-beam-sdk.test.ts","test:validation":"tsx tests/validation.test.ts","test:bridge:beam":"bash scripts/run-ts-test.sh tests/bridge/beam-integration.test.ts","test:byte-compat":"RUN_E2E=1 vitest run tests/v128-byte-compat.test.ts","test:cf-bindings":"vitest run tests/cf-bindings-parser.test.ts","test:conformance":"bun run test:photon-conformance","test:integration":"tsx tests/integration.test.ts","test:marketplace":"tsx tests/marketplace-manager.test.ts","test:mcp-release":"bun run build && bun run test:mcp-sdk-boundary && bun run test:mcp-sdk-v2 && bun run test:mcp-wire && bun run test:mcp-schema && bun run test:mcp-errors && bun run test:mcp-routing-headers && bun run test:mcp-multi-round && bun run test:mcp-tasks-extension && bun run test:mcp-observability-2026 && bun run test:mcp-stateless-resilience-2026 && bun run test:mcp-stateless-load-2026 && bun run test:mcp-oauth-2026 && bun run test:photon-conformance && bun run test:mcp-apps-contract && bun run test:mcp-docs && bun run test:mcp-official-conformance","test:zero-config":"tsx tests/zero-config.test.ts","test:cf-overrides":"vitest run tests/cf-overrides.test.ts","test:ui-rendering":"bash scripts/run-ts-test.sh --test tests/ui/result-rendering.test.ts","test:ui-resources":"tsx tests/ui-resources.test.ts","test:cf-mcp-bearer":"vitest run tests/cf-mcp-bearer.test.ts","test:daemon-buffer":"tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"tsx tests/daemon-pubsub.test.ts","test:error-handler":"tsx tests/error-handler.test.ts","test:daemon-watcher":"tsx tests/daemon-watcher.test.ts && tsx tests/schedule-missed-fire.test.ts","test:instance-drift":"tsx tests/instance-drift.test.ts","test:mcp-oauth-2026":"tsx tests/oauth.test.ts && tsx tests/auth-endpoints.test.ts && tsx tests/serv-http-auth.test.ts && bun tests/sqlite-stores.test.ts && tsx tests/streamable-http-transport.test.ts && tsx tests/integration.test.ts && tsx tests/oauth-auth-tags.extractor.test.ts && tsx tests/oauth-auth-tags.editor.test.ts && tsx tests/oauth-role-conformance-loader.test.ts && tsx tests/oauth-role-conformance-server.test.ts && tsx tests/oauth-role-conformance-gaps.test.ts && vitest run tests/runtime-oauth.test.ts tests/cf-mcp-oauth-codegen.test.ts","test:mcp-sdk-compat":"bun run test:mcp-sdk-boundary && bun run test:photon-conformance && bun run test:mcp-apps-contract","test:version-notify":"tsx tests/version-notify.test.ts","test:beam-web-routes":"bash scripts/run-ts-test.sh tests/beam-web-route-matching.test.ts","test:bridge:protocol":"tsx tests/bridge/protocol.test.ts","test:client-adaptive":"tsx tests/client-adaptive.test.ts","test:format-registry":"vitest run tests/format-registry.test.ts","test:mcp-multi-round":"node tests/mcp-request-state.test.ts && tsx tests/mcp-multi-round-http.test.ts","test:passkey-virtual":"tsx tests/passkey-virtual.e2e.ts","test:streamable-http":"tsx tests/streamable-http-transport.test.ts","test:beam:regressions":"bash scripts/run-package-script.sh build && bash scripts/run-ts-test.sh tests/beam/beam-integration-regressions.test.ts","test:mcp-sdk-boundary":"tsx tests/mcp-sdk-boundary.test.ts","test:viewport-manager":"vitest run tests/viewport-manager.test.ts","test:beam:port-hosting":"bash scripts/run-ts-test.sh tests/beam/port-hosting-regressions.test.ts","test:bridge:generation":"tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"tsx tests/cli.comprehensive.test.ts","test:mcp-apps-contract":"bun run build && tsx tests/ui-resources.test.ts && tsx tests/client-adaptive.test.ts && tsx tests/bridge/protocol.test.ts && tsx tests/bridge/beam-integration.test.ts","test:pagination-phase5":"bun run build && tsx tests/pagination-phase5.test.ts","verify:publish-version":"node scripts/verify-publish-version.mjs","test:pagination-phase5c":"bun run build && tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"bun run build && tsx tests/pagination-phase5d.test.ts","test:photon-conformance":"bun run build && tsx tests/conformance/conformance.test.ts","test:content-negotiation":"RUN_E2E=1 vitest run tests/http-content-negotiation.test.ts","test:mcp-routing-headers":"node tests/mcp-routing-headers.test.ts","test:mcp-tasks-extension":"tsx tests/mcp-tasks-extension.test.ts","test:loader:comprehensive":"tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"vitest run tests/viewport-aware-proxy.test.ts","test:mcp-observability-2026":"tsx tests/mcp-observability-2026.test.ts","test:pagination-integration":"vitest run tests/pagination-integration.test.ts","test:pagination-performance":"vitest run tests/pagination-performance.test.ts","test:mcp-stateless-load-2026":"tsx tests/mcp-stateless-load-2026.test.ts","test:multi-client-pagination":"bun run build && tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"vitest run tests/photon-instance-manager.test.ts","test:mcp-official-conformance":"bun run build && tsx tests/conformance/official-runner.ts","test:mcp-stateless-resilience-2026":"tsx tests/mcp-stateless-resilience-2026.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"defu":"^6.1.7","hono":"^4.12.18","flatted":"^3.4.2","fast-uri":"^3.1.2","basic-ftp":"^6.0.1","minimatch":"^10.2.1","picomatch":"^4.0.4","handlebars":"^4.7.9","ip-address":"^10.2.0","path-to-regexp":"^8.4.2","brace-expansion":"^5.0.6","@hono/node-server":"^1.19.13","express-rate-limit":"^8.2.2"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.17.0","description":"Build MCP servers, CLI tools, and web dashboards for AI agents from a single TypeScript file.","directories":{},"_nodeVersion":"26.4.0","dependencies":{"ws":"^8.18.0","ajv":"^8.18.0","ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","miniflare":"^4.20260507.1","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.7","json-schema-typed":"^8.0.2","@portel/photon-core":"^2.27.1","@modelcontextprotocol/sdk":"1.29.0","@modelcontextprotocol/hono":"2.0.0","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/server":"2.0.0","@modelcontextprotocol/ext-apps":"1.7.5"},"_hasShrinkwrap":false,"packageManager":"bun@1.2.20","devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^6.13.1","eslint":"^10.3.0","vitest":"^4.1.5","prettier":"^3.8.0","@types/ws":"^8.18.1","vitepress":"^1.6.4","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^20.0.0","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@modelcontextprotocol/conformance":"0.2.0-alpha.10","@release-it/conventional-changelog":"^11.0.0"},"trustedDependencies":["better-sqlite3","esbuild"],"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.37.0_1791339508336_0.2263278098340915","host":"s3://npm-registry-packages-npm-production"}},"1.38.0":{"name":"@portel/photon","version":"1.38.0","keywords":["mcp","mcp-server","mcp-apps","model-context-protocol","ai-agents","ai-tools","chatgpt","claude","claude-code","claude-desktop","cursor","photon","typescript","cli","web-dashboard","single-file","business-logic","convention-over-configuration","hot-reload","marketplace","developer-tools","enterprise"],"author":"Portel Dev","license":"MIT","_id":"@portel/photon@1.38.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://photon.portel.dev/","bugs":{"url":"https://github.com/portel-dev/photon/issues"},"bin":{"photon":"bin/photon"},"dist":{"shasum":"e15b2b33623a86958f5e8fd34a82f7492b6d594c","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.38.0.tgz","fileCount":1206,"integrity":"sha512-sktN2Zav1bXvooaIa3X9+E8/1C0lJVN5OIyzs5lE7NvthiFmZejT+I4icrUCrk+U7WX9JFVFuw5s0Lk0mvUxfA==","signatures":[{"sig":"MEQCIF8WGoWvMBJcew9R4fZ8Kcxy8S+XtEZWBWSiEmHFkkD/AiAncb1H92VH5ZsoPwMO5CEJ8tQxMQx6iYJN7w0h8mTNQw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFl0/fvwS1NnCp9HWJbGlIkl3xJvWTCfnS1vVY0tIaXrAiEA94MaTLHRGrIVqAOq4ApFpC1+4crWmy3VGW0xYPyf7wk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46629646},"main":"dist/index.js","type":"module","shasum":"e15b2b33623a86958f5e8fd34a82f7492b6d594c","engines":{"bun":">=1.0.0","node":">=20.0.0"},"scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"bun run build && bun run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","docs:dev":"bun run docs:sync && vitepress dev docs-site","lint:fix":"eslint src/ --fix","test:all":"bun run build && bun run test:security && bun run test:schema && bun run test:marketplace && bun run test:loader && bun run test:server && bun run test:websocket && bun run test:integration && bun run test:byte-compat && bun run test:format-registry && bun run test:content-negotiation && bun run test:mcp-oauth-2026 && bun run test:mcp-wire && bun run test:mcp-input && bun run test:mcp-schema && bun run test:mcp-errors && bun run test:mcp-routing-headers && bun run test:mcp-multi-round && bun run test:mcp-tasks-extension && bun run test:mcp-observability-2026 && bun run test:mcp-stateless-resilience-2026 && bun run test:mcp-stateless-load-2026 && bun run test:ui-resources && bun run test:client-adaptive && bun run test:zero-config && bun run test:mcp-config && bun run test:cli && bun run test:intent && bun run test:logger && bun run test:error-handler && bun run test:validation && bun run test:bridge && bun run test:beam-web-routes && bun run test:daemon-pubsub && bun run test:daemon-buffer && bun run test:instance-drift && bun run test:daemon-watcher && bun run test:ui-rendering && bun run test:beam:port-hosting && bun run test:photon-instance-manager && bun run test:viewport-aware-proxy && bun run test:viewport-manager && bun run test:pagination-integration && bun run test:pagination-performance && tsx tests/pagination-phase5.test.ts && tsx tests/pagination-phase5c.test.ts && tsx tests/pagination-phase5d.test.ts && tsx tests/phase6a-service-worker.test.ts && tsx tests/phase6b-offline-state.test.ts && tsx tests/phase6c-offline-sync.test.ts && tsx tests/phase6d-integration.test.ts && tsx tests/promises.test.ts && bun run test:cf-bindings && bun run test:cf-runtime && bun run test:cf-overrides && bun run test:cf-deploy && bun run test:cf-mcp-bearer && bun run test:readme","test:cli":"tsx tests/cli-runner.test.ts && tsx tests/ps-parse-target.test.ts","test:dom":"bun run build && bun run build:beam && tsx tests/contract/dom-structure.test.ts","test:e2e":"bun run build && playwright test","docs:sync":"node scripts/sync-docs-site.mjs","test:a2ui":"bun run build && tsx tests/a2ui-mapper.test.ts && tsx tests/a2ui-e2e.test.ts && tsx tests/a2ui-renderer-script.test.ts","test:beam":"bash scripts/run-package-script.sh build && bash scripts/run-ts-test.sh tests/beam/rendering.test.ts","test:load":"bun run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"tsx tests/schema-extractor.test.ts && tsx tests/marketplace-manager.test.ts && tsx tests/loader.test.ts && tsx tests/loader.comprehensive.test.ts && tsx tests/server.test.ts && tsx tests/server.comprehensive.test.ts && tsx tests/cli-runner.test.ts && tsx tests/cli.comprehensive.test.ts && tsx tests/logger.test.ts && tsx tests/error-handler.test.ts && tsx tests/validation.test.ts && tsx tests/daemon-pubsub.test.ts && tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","docs:build":"bun run docs:sync && vitepress build docs-site && node scripts/fix-docs-site-build.mjs","test:chain":"bun run test:all","test:smoke":"tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"bun run test:bridge:generation && bun run test:bridge:protocol && bun run test:bridge:beam && bunx vitest run tests/theme-token-runtime.test.ts","test:e2e:ui":"bun run build && playwright test --ui","test:github":"bun run build && tsx tests/github-issues.integration.ts","test:intent":"tsx tests/intent-contract.test.ts","test:loader":"tsx tests/loader.test.ts && tsx tests/runtime-config-store.test.ts","test:logger":"tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"tsx tests/schema-extractor.test.ts","test:server":"tsx tests/server.test.ts && tsx tests/sse-client-app-fallback.test.ts","test:sqlite":"bun run build && tsx tests/sqlite.test.ts","test:visual":"bash scripts/run-package-script.sh build && bash scripts/run-package-script.sh build:beam && bash scripts/run-ts-test.sh tests/beam/visual/visual.test.ts","docs:preview":"vitepress preview docs-site","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"bun run build && tsx tests/phase6a-service-worker.test.ts","test:phase6b":"bun run build && tsx tests/phase6b-offline-state.test.ts","test:phase6c":"bun run build && tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"bun run build && tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"bun run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html bun run test:unit","test:mcp-docs":"bun run build && tsx tests/mcp-documentation.test.ts","test:mcp-wire":"bun tests/mcp-wire-adapter.golden.test.ts","test:promises":"bun run build && bun run build:beam && tsx tests/promises.test.ts","test:security":"tsx tests/security.test.ts","prepublishOnly":"bun run verify:publish-version && node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is linked. Run: bun remove '+d+' && bun add '+d); process.exit(1);}}\" && bun run build && bun run build:beam","test:cf-deploy":"vitest run tests/cf-deploy-toml.test.ts","test:contracts":"tsx tests/contract/format-coverage.test.ts && tsx tests/contract/schema-contract.test.ts && tsx tests/contract/render-dom.test.ts && tsx tests/contract/security-posture.test.ts && tsx tests/contract/coverage-gate.test.ts","test:mcp-input":"tsx tests/mcp-input.test.ts && tsx tests/mcp-client-sdk.test.ts","test:websocket":"vitest run tests/websocket-upgrade.test.ts --exclude '.claude/worktrees/**'","test:cf-runtime":"vitest run tests/cf-runtime-kv.test.ts","test:github-ref":"tsx tests/github-ref-install.test.ts","test:layout-lab":"bun run build && tsx tests/contract/layout-lab.test.ts","test:mcp-config":"tsx tests/mcp-configuration.test.ts","test:mcp-errors":"node tests/mcp-error-semantics.test.ts","test:mcp-schema":"node tests/mcp-json-schema-2020-12.test.ts","test:mcp-sdk-v2":"bun run build && tsx tests/mcp-sdk-v2-negotiation.test.ts && tsx tests/mcp-beam-sdk.test.ts","test:validation":"tsx tests/validation.test.ts","test:bridge:beam":"bash scripts/run-ts-test.sh tests/bridge/beam-integration.test.ts","test:byte-compat":"RUN_E2E=1 vitest run tests/v128-byte-compat.test.ts --exclude '.claude/worktrees/**'","test:cf-bindings":"vitest run tests/cf-bindings-parser.test.ts","test:conformance":"bun run test:photon-conformance","test:integration":"tsx tests/integration.test.ts","test:marketplace":"tsx tests/marketplace-manager.test.ts","test:mcp-release":"bun run build && bun run test:mcp-sdk-boundary && bun run test:mcp-sdk-v2 && bun run test:mcp-wire && bun run test:mcp-schema && bun run test:mcp-errors && bun run test:mcp-routing-headers && bun run test:mcp-multi-round && bun run test:mcp-tasks-extension && bun run test:mcp-observability-2026 && bun run test:mcp-stateless-resilience-2026 && bun run test:mcp-stateless-load-2026 && bun run test:mcp-oauth-2026 && bun run test:photon-conformance && bun run test:mcp-apps-contract && bun run test:mcp-docs && bun run test:mcp-official-conformance","test:zero-config":"tsx tests/zero-config.test.ts","test:cf-overrides":"vitest run tests/cf-overrides.test.ts","test:ui-rendering":"bash scripts/run-ts-test.sh --test tests/ui/result-rendering.test.ts","test:ui-resources":"tsx tests/ui-resources.test.ts","test:cf-mcp-bearer":"vitest run tests/cf-mcp-bearer.test.ts","test:daemon-buffer":"tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"tsx tests/daemon-pubsub.test.ts","test:error-handler":"tsx tests/error-handler.test.ts","test:daemon-watcher":"tsx tests/daemon-watcher.test.ts && tsx tests/schedule-missed-fire.test.ts","test:instance-drift":"tsx tests/instance-drift.test.ts","test:mcp-oauth-2026":"tsx tests/oauth.test.ts && tsx tests/auth-endpoints.test.ts && tsx tests/serv-http-auth.test.ts && bun tests/sqlite-stores.test.ts && tsx tests/streamable-http-transport.test.ts && tsx tests/integration.test.ts && tsx tests/oauth-auth-tags.extractor.test.ts && tsx tests/oauth-auth-tags.editor.test.ts && tsx tests/oauth-role-conformance-loader.test.ts && tsx tests/oauth-role-conformance-server.test.ts && tsx tests/oauth-role-conformance-gaps.test.ts && vitest run tests/runtime-oauth.test.ts tests/cf-mcp-oauth-codegen.test.ts","test:mcp-sdk-compat":"bun run test:mcp-sdk-boundary && bun run test:photon-conformance && bun run test:mcp-apps-contract","test:version-notify":"tsx tests/version-notify.test.ts","test:beam-web-routes":"bash scripts/run-ts-test.sh tests/beam-web-route-matching.test.ts","test:bridge:protocol":"tsx tests/bridge/protocol.test.ts","test:client-adaptive":"tsx tests/client-adaptive.test.ts","test:format-registry":"vitest run tests/format-registry.test.ts","test:mcp-multi-round":"node tests/mcp-request-state.test.ts && tsx tests/mcp-multi-round-http.test.ts","test:passkey-virtual":"tsx tests/passkey-virtual.e2e.ts","test:streamable-http":"tsx tests/streamable-http-transport.test.ts","test:beam:regressions":"bash scripts/run-package-script.sh build && bash scripts/run-ts-test.sh tests/beam/beam-integration-regressions.test.ts","test:mcp-sdk-boundary":"tsx tests/mcp-sdk-boundary.test.ts","test:viewport-manager":"vitest run tests/viewport-manager.test.ts","test:beam:port-hosting":"bash scripts/run-ts-test.sh tests/beam/port-hosting-regressions.test.ts","test:bridge:generation":"tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"tsx tests/cli.comprehensive.test.ts","test:mcp-apps-contract":"bun run build && tsx tests/ui-resources.test.ts && tsx tests/client-adaptive.test.ts && tsx tests/bridge/protocol.test.ts && tsx tests/bridge/beam-integration.test.ts","test:pagination-phase5":"bun run build && tsx tests/pagination-phase5.test.ts","verify:publish-version":"node scripts/verify-publish-version.mjs","test:pagination-phase5c":"bun run build && tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"bun run build && tsx tests/pagination-phase5d.test.ts","test:photon-conformance":"bun run build && tsx tests/conformance/conformance.test.ts","test:content-negotiation":"RUN_E2E=1 vitest run tests/http-content-negotiation.test.ts","test:mcp-routing-headers":"node tests/mcp-routing-headers.test.ts","test:mcp-tasks-extension":"tsx tests/mcp-tasks-extension.test.ts","test:loader:comprehensive":"tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"vitest run tests/viewport-aware-proxy.test.ts","test:mcp-observability-2026":"tsx tests/mcp-observability-2026.test.ts","test:pagination-integration":"vitest run tests/pagination-integration.test.ts","test:pagination-performance":"vitest run tests/pagination-performance.test.ts","test:mcp-stateless-load-2026":"tsx tests/mcp-stateless-load-2026.test.ts","test:multi-client-pagination":"bun run build && tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"vitest run tests/photon-instance-manager.test.ts","test:mcp-official-conformance":"bun run build && tsx tests/conformance/official-runner.ts","test:mcp-stateless-resilience-2026":"tsx tests/mcp-stateless-resilience-2026.test.ts"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"overrides":{"defu":"^6.1.7","hono":"^4.12.18","flatted":"^3.4.2","fast-uri":"^3.1.2","basic-ftp":"^6.0.1","minimatch":"^10.2.1","picomatch":"^4.0.4","handlebars":"^4.7.9","ip-address":"^10.2.0","path-to-regexp":"^8.4.2","brace-expansion":"^5.0.6","@hono/node-server":"^1.19.13","express-rate-limit":"^8.2.2"},"_integrity":"sha512-sktN2Zav1bXvooaIa3X9+E8/1C0lJVN5OIyzs5lE7NvthiFmZejT+I4icrUCrk+U7WX9JFVFuw5s0Lk0mvUxfA==","repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"10.8.3","description":"Build MCP servers, CLI tools, and web dashboards for AI agents from a single TypeScript file.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"ws":"^8.18.0","ajv":"^8.18.0","ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","miniflare":"^4.20260507.1","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.7","json-schema-typed":"^8.0.2","@portel/photon-core":"^2.28.0","@modelcontextprotocol/sdk":"1.29.0","@modelcontextprotocol/hono":"2.0.0","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/server":"2.0.0","@modelcontextprotocol/ext-apps":"1.7.5"},"_hasShrinkwrap":false,"packageManager":"bun@1.2.20","devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^6.13.1","eslint":"^10.3.0","vitest":"^4.1.5","prettier":"^3.8.0","@types/ws":"^8.18.1","vitepress":"^1.6.4","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^20.0.0","typescript":"^5.7.3","@types/node":"^22.10.2","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@modelcontextprotocol/conformance":"0.2.0-alpha.10","@release-it/conventional-changelog":"^11.0.0"},"trustedDependencies":["better-sqlite3","esbuild"],"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/photon_1.38.0_1792059066936_0.9773783242615579","host":"s3://npm-registry-packages-npm-production"}},"1.38.1":{"_id":"@portel/photon@1.38.1","bin":{"photon":"bin/photon"},"bugs":{"url":"https://github.com/portel-dev/photon/issues"},"dist":{"shasum":"2562f0a1d969806aed9772ea53627c89aed136a5","tarball":"https://registry.npmjs.org/@portel/photon/-/photon-1.38.1.tgz","fileCount":1206,"integrity":"sha512-pNWa7UobmqJ8LGve3Hjtoiyo+rZypcWNASit86/+IHrrKZZO8iJAJa2cDjaMvwy0aOB/v6L6qyHQ02K7xaxIwA==","signatures":[{"sig":"MEUCIQDWXqJ261BO4sc4T9nB+1GmXLdDBEPaYh11Gk/5XsJjLAIgFvnRnp1ZnaBqXexUjEev8xzIW80xyUnMTRpqhjSzW28=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDMrzjXpx9QpzilOFeq2/mziBp8tgSUgiKut4Mwi/dEIgIgCv6ohpmv8QlUbPgJaE5Mt7j5Kkl1x8dwjL33zsFEUoQ="}],"unpackedSize":46640314},"main":"dist/index.js","name":"@portel/photon","type":"module","types":"./dist/index.d.ts","author":{"name":"Portel Dev"},"engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"d3955c4a7c09a2c0f3c535c92d3582499dad7480","license":"MIT","scripts":{"dev":"tsc --watch","knip":"knip","lint":"eslint src/","test":"bash scripts/run-tests.sh","build":"eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"git config core.hooksPath .githooks || true","release":"release-it","dev:beam":"bun run build && bun run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)","docs:dev":"bun run docs:sync && vitepress dev docs-site","lint:fix":"eslint src/ --fix","test:all":"bun run build && bun run test:security && bun run test:schema && bun run test:marketplace && bun run test:loader && bun run test:server && bun run test:websocket && bun run test:integration && bun run test:byte-compat && bun run test:format-registry && bun run test:content-negotiation && bun run test:mcp-oauth-2026 && bun run test:mcp-wire && bun run test:mcp-input && bun run test:mcp-schema && bun run test:mcp-errors && bun run test:mcp-routing-headers && bun run test:mcp-multi-round && bun run test:mcp-tasks-extension && bun run test:mcp-observability-2026 && bun run test:mcp-stateless-resilience-2026 && bun run test:mcp-stateless-load-2026 && bun run test:ui-resources && bun run test:client-adaptive && bun run test:zero-config && bun run test:mcp-config && bun run test:cli && bun run test:release-ref-guard && bun run test:intent && bun run test:logger && bun run test:error-handler && bun run test:validation && bun run test:bridge && bun run test:beam-web-routes && bun run test:daemon-pubsub && bun run test:daemon-buffer && bun run test:instance-drift && bun run test:daemon-watcher && bun run test:ui-rendering && bun run test:beam:port-hosting && bun run test:photon-instance-manager && bun run test:viewport-aware-proxy && bun run test:viewport-manager && bun run test:pagination-integration && bun run test:pagination-performance && tsx tests/pagination-phase5.test.ts && tsx tests/pagination-phase5c.test.ts && tsx tests/pagination-phase5d.test.ts && tsx tests/phase6a-service-worker.test.ts && tsx tests/phase6b-offline-state.test.ts && tsx tests/phase6c-offline-sync.test.ts && tsx tests/phase6d-integration.test.ts && tsx tests/promises.test.ts && bun run test:cf-bindings && bun run test:cf-runtime && bun run test:cf-overrides && bun run test:cf-deploy && bun run test:cf-mcp-bearer && bun run test:readme","test:cli":"tsx tests/cli-runner.test.ts && tsx tests/ps-parse-target.test.ts","test:dom":"bun run build && bun run build:beam && tsx tests/contract/dom-structure.test.ts","test:e2e":"bun run build && playwright test","docs:sync":"node scripts/sync-docs-site.mjs","test:a2ui":"bun run build && tsx tests/a2ui-mapper.test.ts && tsx tests/a2ui-e2e.test.ts && tsx tests/a2ui-renderer-script.test.ts","test:beam":"bash scripts/run-package-script.sh build && bash scripts/run-ts-test.sh tests/beam/rendering.test.ts","test:load":"bun run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts","test:unit":"tsx tests/schema-extractor.test.ts && tsx tests/marketplace-manager.test.ts && tsx tests/loader.test.ts && tsx tests/loader.comprehensive.test.ts && tsx tests/server.test.ts && tsx tests/server.comprehensive.test.ts && tsx tests/cli-runner.test.ts && tsx tests/cli.comprehensive.test.ts && tsx tests/logger.test.ts && tsx tests/error-handler.test.ts && tsx tests/validation.test.ts && tsx tests/daemon-pubsub.test.ts && tsx tests/shared-utils.test.ts","typecheck":"tsc --noEmit","build:beam":"node scripts/build-beam.mjs","docs:build":"bun run docs:sync && vitepress build docs-site && node scripts/fix-docs-site-build.mjs","test:chain":"bun run test:all","test:smoke":"tsx tests/smoke.test.ts","watch:beam":"node scripts/build-beam.mjs --watch","release:dry":"release-it --dry-run","test:bridge":"bun run test:bridge:generation && bun run test:bridge:protocol && bun run test:bridge:beam && bunx vitest run tests/theme-token-runtime.test.ts","test:e2e:ui":"bun run build && playwright test --ui","test:github":"bun run build && tsx tests/github-issues.integration.ts","test:intent":"tsx tests/intent-contract.test.ts","test:loader":"tsx tests/loader.test.ts && tsx tests/runtime-config-store.test.ts","test:logger":"tsx tests/logger.test.ts","test:readme":"bash tests/readme-validation.sh","test:schema":"tsx tests/schema-extractor.test.ts","test:server":"tsx tests/server.test.ts && tsx tests/sse-client-app-fallback.test.ts","test:sqlite":"bun run build && tsx tests/sqlite.test.ts","test:visual":"bash scripts/run-package-script.sh build && bash scripts/run-package-script.sh build:beam && bash scripts/run-ts-test.sh tests/beam/visual/visual.test.ts","docs:preview":"vitepress preview docs-site","format:check":"prettier --check \"src/**/*.ts\"","test:phase6a":"bun run build && tsx tests/phase6a-service-worker.test.ts","test:phase6b":"bun run build && tsx tests/phase6b-offline-state.test.ts","test:phase6c":"bun run build && tsx tests/phase6c-offline-sync.test.ts","test:phase6d":"bun run build && tsx tests/phase6d-integration.test.ts","release:major":"release-it major","release:minor":"release-it minor","release:patch":"release-it patch","test:coverage":"bun run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html bun run test:unit","test:mcp-docs":"bun run build && tsx tests/mcp-documentation.test.ts","test:mcp-wire":"bun tests/mcp-wire-adapter.golden.test.ts","test:promises":"bun run build && bun run build:beam && tsx tests/promises.test.ts","test:security":"tsx tests/security.test.ts","prepublishOnly":"bun run verify:publish-version && node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is linked. Run: bun remove '+d+' && bun add '+d); process.exit(1);}}\" && bun run build && bun run build:beam","test:cf-deploy":"vitest run tests/cf-deploy-toml.test.ts tests/cf-host-workflow.test.ts tests/cf-generated-worker.test.ts tests/cf-template-emit-flush.test.ts --exclude '.claude/worktrees/**'","test:contracts":"tsx tests/contract/format-coverage.test.ts && tsx tests/contract/schema-contract.test.ts && tsx tests/contract/render-dom.test.ts && tsx tests/contract/security-posture.test.ts && tsx tests/contract/coverage-gate.test.ts","test:mcp-input":"tsx tests/mcp-input.test.ts && tsx tests/mcp-client-sdk.test.ts","test:websocket":"vitest run tests/websocket-upgrade.test.ts --exclude '.claude/worktrees/**'","test:cf-runtime":"vitest run tests/cf-runtime-kv.test.ts","test:github-ref":"tsx tests/github-ref-install.test.ts","test:layout-lab":"bun run build && tsx tests/contract/layout-lab.test.ts","test:mcp-config":"tsx tests/mcp-configuration.test.ts","test:mcp-errors":"node tests/mcp-error-semantics.test.ts","test:mcp-schema":"node tests/mcp-json-schema-2020-12.test.ts","test:mcp-sdk-v2":"bun run build && tsx tests/mcp-sdk-v2-negotiation.test.ts && tsx tests/mcp-beam-sdk.test.ts","test:validation":"tsx tests/validation.test.ts","test:bridge:beam":"bash scripts/run-ts-test.sh tests/bridge/beam-integration.test.ts","test:byte-compat":"RUN_E2E=1 vitest run tests/v128-byte-compat.test.ts --exclude '.claude/worktrees/**'","test:cf-bindings":"vitest run tests/cf-bindings-parser.test.ts","test:conformance":"bun run test:photon-conformance","test:integration":"tsx tests/integration.test.ts","test:marketplace":"tsx tests/marketplace-manager.test.ts","test:mcp-release":"bun run build && bun run test:mcp-sdk-boundary && bun run test:mcp-sdk-v2 && bun run test:mcp-wire && bun run test:mcp-schema && bun run test:mcp-errors && bun run test:mcp-routing-headers && bun run test:mcp-multi-round && bun run test:mcp-tasks-extension && bun run test:mcp-observability-2026 && bun run test:mcp-stateless-resilience-2026 && bun run test:mcp-stateless-load-2026 && bun run test:mcp-oauth-2026 && bun run test:photon-conformance && bun run test:mcp-apps-contract && bun run test:mcp-docs && bun run test:mcp-official-conformance","test:zero-config":"tsx tests/zero-config.test.ts","test:cf-overrides":"vitest run tests/cf-overrides.test.ts","test:ui-rendering":"bash scripts/run-ts-test.sh --test tests/ui/result-rendering.test.ts","test:ui-resources":"tsx tests/ui-resources.test.ts","test:cf-mcp-bearer":"vitest run tests/cf-mcp-bearer.test.ts","test:daemon-buffer":"tsx tests/daemon-event-buffer.test.ts","test:daemon-pubsub":"tsx tests/daemon-pubsub.test.ts","test:error-handler":"tsx tests/error-handler.test.ts","test:daemon-watcher":"tsx tests/daemon-watcher.test.ts && tsx tests/schedule-missed-fire.test.ts","test:instance-drift":"tsx tests/instance-drift.test.ts","test:mcp-oauth-2026":"tsx tests/oauth.test.ts && tsx tests/auth-endpoints.test.ts && tsx tests/serv-http-auth.test.ts && bun tests/sqlite-stores.test.ts && tsx tests/streamable-http-transport.test.ts && tsx tests/integration.test.ts && tsx tests/oauth-auth-tags.extractor.test.ts && tsx tests/oauth-auth-tags.editor.test.ts && tsx tests/oauth-role-conformance-loader.test.ts && tsx tests/oauth-role-conformance-server.test.ts && tsx tests/oauth-role-conformance-gaps.test.ts && vitest run tests/runtime-oauth.test.ts tests/cf-mcp-oauth-codegen.test.ts --exclude '.claude/worktrees/**'","test:mcp-sdk-compat":"bun run test:mcp-sdk-boundary && bun run test:photon-conformance && bun run test:mcp-apps-contract","test:version-notify":"tsx tests/version-notify.test.ts","test:beam-web-routes":"bash scripts/run-ts-test.sh tests/beam-web-route-matching.test.ts","test:bridge:protocol":"tsx tests/bridge/protocol.test.ts","test:client-adaptive":"tsx tests/client-adaptive.test.ts","test:format-registry":"vitest run tests/format-registry.test.ts","test:mcp-multi-round":"node tests/mcp-request-state.test.ts && tsx tests/mcp-multi-round-http.test.ts","test:passkey-virtual":"tsx tests/passkey-virtual.e2e.ts","test:streamable-http":"tsx tests/streamable-http-transport.test.ts","test:beam:regressions":"bash scripts/run-package-script.sh build && bash scripts/run-ts-test.sh tests/beam/beam-integration-regressions.test.ts","test:mcp-sdk-boundary":"tsx tests/mcp-sdk-boundary.test.ts","test:viewport-manager":"vitest run tests/viewport-manager.test.ts","test:beam:port-hosting":"bash scripts/run-ts-test.sh tests/beam/port-hosting-regressions.test.ts","test:bridge:generation":"tsx tests/bridge/bridge-generation.test.ts","test:cli:comprehensive":"tsx tests/cli.comprehensive.test.ts","test:mcp-apps-contract":"bun run build && tsx tests/ui-resources.test.ts && tsx tests/client-adaptive.test.ts && tsx tests/bridge/protocol.test.ts && tsx tests/bridge/beam-integration.test.ts","test:pagination-phase5":"bun run build && tsx tests/pagination-phase5.test.ts","test:release-ref-guard":"tsx tests/release-ref-guard.test.ts","verify:publish-version":"node scripts/verify-publish-version.mjs","test:pagination-phase5c":"bun run build && tsx tests/pagination-phase5c.test.ts","test:pagination-phase5d":"bun run build && tsx tests/pagination-phase5d.test.ts","test:photon-conformance":"bun run build && tsx tests/conformance/conformance.test.ts","test:content-negotiation":"RUN_E2E=1 vitest run tests/http-content-negotiation.test.ts","test:mcp-routing-headers":"node tests/mcp-routing-headers.test.ts","test:mcp-tasks-extension":"tsx tests/mcp-tasks-extension.test.ts","test:loader:comprehensive":"tsx tests/loader.comprehensive.test.ts","test:server:comprehensive":"tsx tests/server.comprehensive.test.ts","test:viewport-aware-proxy":"vitest run tests/viewport-aware-proxy.test.ts","test:mcp-observability-2026":"tsx tests/mcp-observability-2026.test.ts","test:pagination-integration":"vitest run tests/pagination-integration.test.ts","test:pagination-performance":"vitest run tests/pagination-performance.test.ts","test:mcp-stateless-load-2026":"tsx tests/mcp-stateless-load-2026.test.ts","test:multi-client-pagination":"bun run build && tsx tests/multi-client-pagination.test.ts","test:photon-instance-manager":"vitest run tests/photon-instance-manager.test.ts","test:mcp-official-conformance":"bun run build && tsx tests/conformance/official-runner.ts","test:mcp-stateless-resilience-2026":"tsx tests/mcp-stateless-resilience-2026.test.ts"},"version":"1.38.1","_npmUser":{"name":"luracast","email":"arul@luracast.com"},"homepage":"https://photon.portel.dev/","keywords":["mcp","mcp-server","mcp-apps","model-context-protocol","ai-agents","ai-tools","chatgpt","claude","claude-code","claude-desktop","cursor","photon","typescript","cli","web-dashboard","single-file","business-logic","convention-over-configuration","hot-reload","marketplace","developer-tools","enterprise"],"overrides":{"defu":"^6.1.7","hono":"^4.12.18","flatted":"^3.4.2","fast-uri":"^3.1.2","basic-ftp":"^6.0.1","minimatch":"^10.2.1","picomatch":"^4.0.4","handlebars":"^4.7.9","ip-address":"^10.2.0","path-to-regexp":"^8.4.2","brace-expansion":"^5.0.6","@hono/node-server":"^1.19.13","express-rate-limit":"^8.2.2"},"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"_npmVersion":"11.17.0","description":"Build MCP servers, CLI tools, and web dashboards for AI agents from a single TypeScript file.","directories":{},"maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"_nodeVersion":"26.4.0","dependencies":{"ws":"^8.18.0","ajv":"^8.18.0","ora":"^9.3.0","boxen":"^8.0.1","chalk":"^5.4.1","qrcode":"^1.5.4","esbuild":"^0.28.0","chart.js":"^4.5.1","chokidar":"^4.0.3","commander":"^12.1.0","miniflare":"^4.20260507.1","cli-table3":"^0.6.5","@portel/cli":"^1.1.0","cli-highlight":"^2.1.11","fast-json-patch":"^3.1.1","@chenglou/pretext":"^0.0.7","json-schema-typed":"^8.0.2","@portel/photon-core":"^2.28.1","@modelcontextprotocol/sdk":"1.29.0","@modelcontextprotocol/hono":"2.0.0","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/server":"2.0.0","@modelcontextprotocol/ext-apps":"1.7.5"},"_hasShrinkwrap":false,"packageManager":"bun@1.2.20","devDependencies":{"c8":"^11.0.0","lit":"^3.3.2","tsx":"^4.20.6","knip":"^6.13.1","eslint":"^10.3.0","vitest":"^4.1.5","prettier":"^3.8.0","@types/ws":"^8.18.1","vitepress":"^1.6.4","autocannon":"^8.0.0","codemirror":"^6.0.2","playwright":"^1.57.0","release-it":"^20.0.0","typescript":"^5.7.3","@types/node":"^22.10.2","cron-parser":"^5.0.0","@types/qrcode":"^1.5.6","openapi-types":"^12.1.3","@types/inquirer":"^9.0.9","@codemirror/view":"^6.39.12","@playwright/test":"^1.58.0","@codemirror/state":"^6.5.4","@codemirror/commands":"^6.10.1","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.0","@typescript-eslint/parser":"^8.56.0","@codemirror/theme-one-dark":"^6.1.3","@codemirror/lang-javascript":"^6.2.4","@typescript-eslint/eslint-plugin":"^8.56.0","@modelcontextprotocol/conformance":"0.2.0-alpha.10","@release-it/conventional-changelog":"^11.0.0"},"trustedDependencies":["better-sqlite3","esbuild"],"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/photon_1.38.1_1792414874796_0.02703787542348568"}}},"time":{"created":"2025-11-08T18:29:14.521Z","modified":"2026-10-19T13:01:15.400Z","1.0.0":"2025-11-08T18:29:14.812Z","1.1.0":"2025-11-09T17:22:17.309Z","1.2.0":"2025-11-11T04:18:05.054Z","1.3.0":"2025-11-19T14:03:43.951Z","1.4.0":"2025-11-24T22:45:41.413Z","1.4.1":"2025-12-29T16:55:29.326Z","1.5.0":"2026-01-25T05:17:01.006Z","1.5.1":"2026-02-02T03:00:47.307Z","1.6.0":"2026-02-06T17:22:36.596Z","1.6.1":"2026-02-06T17:37:23.039Z","1.7.0":"2026-02-08T16:30:50.700Z","1.8.0":"2026-02-16T12:36:14.844Z","1.8.1":"2026-02-16T13:05:06.600Z","1.8.2":"2026-02-17T02:48:25.345Z","1.8.3":"2026-02-17T03:40:47.067Z","1.8.4":"2026-02-17T09:23:00.915Z","1.9.0":"2026-02-17T15:52:02.397Z","1.10.0":"2026-03-03T04:09:08.357Z","1.11.0":"2026-03-04T05:20:23.482Z","1.12.0":"2026-03-09T09:29:09.164Z","1.13.0":"2026-03-13T07:32:22.376Z","1.14.0":"2026-03-21T08:46:02.985Z","1.16.0":"2026-03-27T01:23:03.654Z","1.16.1":"2026-03-28T10:57:08.275Z","1.17.0":"2026-03-30T14:46:55.434Z","1.17.1":"2026-03-30T21:43:48.876Z","1.17.2":"2026-03-30T22:30:37.413Z","1.17.3":"2026-03-30T23:27:20.133Z","1.17.4":"2026-03-31T01:58:20.155Z","1.17.5":"2026-03-31T02:02:56.660Z","1.17.6":"2026-03-31T02:06:59.981Z","1.18.0":"2026-04-01T01:56:23.267Z","1.19.0":"2026-04-05T02:48:29.036Z","1.20.0":"2026-04-08T09:34:36.337Z","1.20.1":"2026-04-10T00:29:33.745Z","1.21.0":"2026-04-14T06:36:05.257Z","1.22.0":"2026-04-16T07:05:21.867Z","1.22.1":"2026-04-16T08:09:27.188Z","1.23.0":"2026-04-21T03:24:57.600Z","1.23.1":"2026-04-21T03:55:55.941Z","1.24.0":"2026-04-24T12:38:37.008Z","1.25.0":"2026-04-25T15:07:34.449Z","1.26.0":"2026-04-30T10:17:07.451Z","1.26.1":"2026-04-30T12:30:21.155Z","1.27.0":"2026-05-03T13:15:20.476Z","1.28.0":"2026-05-03T15:04:29.506Z","1.28.1":"2026-05-03T16:26:30.892Z","1.28.2":"2026-05-04T01:27:42.728Z","1.29.0":"2026-05-05T08:58:09.434Z","1.31.0":"2026-05-11T02:16:12.189Z","1.31.1":"2026-05-11T03:58:08.839Z","1.31.2":"2026-05-11T04:18:48.351Z","1.32.1":"2026-05-12T13:22:01.933Z","1.32.2":"2026-05-12T14:32:36.509Z","1.32.3":"2026-05-13T14:40:36.139Z","1.32.4":"2026-05-14T15:07:11.094Z","1.32.5":"2026-05-16T08:45:00.876Z","1.32.6":"2026-05-18T08:46:56.986Z","1.33.0":"2026-05-21T08:21:01.455Z","1.33.1":"2026-05-23T06:39:49.077Z","1.33.2":"2026-05-23T15:26:46.205Z","1.33.3":"2026-05-24T01:19:55.323Z","1.33.4":"2026-05-26T16:15:50.462Z","1.34.0":"2026-05-28T15:54:08.255Z","1.34.1":"2026-06-04T21:56:49.189Z","1.34.2":"2026-06-07T06:07:51.767Z","1.35.0":"2026-06-23T02:24:03.503Z","1.35.1":"2026-06-23T02:37:11.841Z","1.36.0":"2026-07-11T01:52:15.386Z","1.36.1":"2026-07-16T09:03:51.530Z","1.37.0":"2026-10-07T02:18:28.569Z","1.38.0":"2026-10-15T10:11:07.227Z","1.38.1":"2026-10-19T13:01:15.040Z"},"bugs":{"url":"https://github.com/portel-dev/photon/issues"},"author":{"name":"Portel Dev"},"license":"MIT","homepage":"https://photon.portel.dev/","keywords":["mcp","mcp-server","mcp-apps","model-context-protocol","ai-agents","ai-tools","chatgpt","claude","claude-code","claude-desktop","cursor","photon","typescript","cli","web-dashboard","single-file","business-logic","convention-over-configuration","hot-reload","marketplace","developer-tools","enterprise"],"repository":{"url":"git+https://github.com/portel-dev/photon.git","type":"git"},"description":"Build MCP servers, CLI tools, and web dashboards for AI agents from a single TypeScript file.","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"readme":"\n<div align=\"center\">\n<img src=\"https://raw.githubusercontent.com/portel-dev/photon/main/assets/photon-logo.png\" alt=\"Photon\" width=\"500\">\n</div>\n\n[![npm version](https://img.shields.io/npm/v/@portel/photon?color=cb3837&label=npm)](https://www.npmjs.com/package/@portel/photon)\n[![npm downloads](https://img.shields.io/npm/dm/@portel/photon?color=cb3837)](https://www.npmjs.com/package/@portel/photon)\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/portel-dev/photon/blob/main/LICENSE)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.0+-3178c6.svg)](https://www.typescriptlang.org)\n[![Node](https://img.shields.io/badge/node-%3E%3D20-43853d.svg)](https://nodejs.org)\n[![MCP](https://img.shields.io/badge/MCP-compatible-7c3aed.svg)](https://modelcontextprotocol.io)\n[![Docs](https://img.shields.io/badge/docs-photon-blue)](https://photon.portel.dev/)\n\n### One TypeScript capability becomes the whole agent stack.\n\nPhoton is the fastest way to turn a small, verified TypeScript method into\nsomething humans can operate and agents can trust. Write the capability once;\nPhoton derives the interfaces, contracts, and runtime behavior around it:\n\n- **MCP server** for Claude, ChatGPT, Cursor, and agents\n- **Embedded app UI** for chat clients that support MCP app resources\n- **CLI tool** for scripts, demos, and automation\n- **Beam web interface** for humans\n- **Web routes, schedules, webhooks, retries, state, and audit history** when the\n  capability grows into a production workflow\n\nPhoton is free and open source software released under the [MIT license](./LICENSE).\nFull documentation lives at [photon.portel.dev](https://photon.portel.dev/).\n\nRelated Portel project: [NCP](https://portel-dev.github.io/ncp/) gives agents\none natural MCP interface to discover and run tools across a whole tool\necosystem. Photon builds reliable agent-facing capabilities; NCP helps agents\nfind and use them alongside every other MCP.\n\n**Try it in two minutes:**\n\n```bash\nbun add -g @portel/photon\nphoton new my-tool\nphoton\n```\n\nThat opens Beam, the generated human UI. Add `photon mcp install my-tool` when\nyou want the same capability inside Claude Desktop or another MCP client.\n\n*Interfaces are optional. Intent is mandatory.*\n\n```bash\ngh repo star portel-dev/photon\n```\n\n---\n\n## From one method to every surface\n\nThe weather example is intentionally small: one TypeScript method, a few\ndocblock tags, and one `@ui` HTML asset. Photon turns that into a CLI command,\nBeam UI, MCP tool, and embedded app surface for MCP app-capable chat clients.\nClaude Desktop can run it from a local stdio MCP command; ChatGPT developer\nmode can connect to the same Photon over a public HTTPS `/mcp` endpoint.\n\n<div align=\"center\">\n<img src=\"https://raw.githubusercontent.com/portel-dev/photon/main/assets/showcase/weather/photon-surface-map.svg\" alt=\"Infographic showing one Photon method becoming CLI, Beam, MCP, Claude Desktop, ChatGPT, and other agent surfaces\" width=\"100%\">\n</div>\n\nReal clients, same Photon:\n\n<table>\n<tr>\n<td width=\"50%\" align=\"center\" valign=\"top\">\n<img src=\"https://raw.githubusercontent.com/portel-dev/photon/main/assets/showcase/weather/chatgpt-photon-weather-local-dot.png\" alt=\"Real ChatGPT developer-mode session rendering the Photon weather app from a public HTTPS MCP endpoint\">\n<br><sub>ChatGPT developer mode rendering the Photon weather UI from a public HTTPS <code>/mcp</code> endpoint.</sub>\n</td>\n<td width=\"50%\" align=\"center\" valign=\"top\">\n<img src=\"https://raw.githubusercontent.com/portel-dev/photon/main/assets/showcase/weather/claude-weather-real.png\" alt=\"Real Claude Desktop session rendering the Photon weather app through local MCP\">\n<br><sub>Claude Desktop rendering the same Photon through local MCP.</sub>\n</td>\n</tr>\n</table>\n\n[Follow the step-by-step tutorial](./docs/tutorials/from-method-to-chat-app.md)\nor open the runnable example in\n[`examples/weather-showcase`](./examples/weather-showcase).\nThe tutorial also includes Beam, CLI, and a concept animation for the full\ntransformation.\n\n---\n\n## The Photon Promise\n\nPhoton is the modern dev stack for the agentic age: each photon is a small,\nauditable brick that can be used by humans, agents, schedulers, webhooks, and\napps without rewriting the same capability for every interface.\n\n<div align=\"center\">\n<img src=\"https://raw.githubusercontent.com/portel-dev/photon/main/assets/photon-agentic-stack.png\" alt=\"Photon agentic stack infographic showing one intent becoming MCP contracts, human surfaces, apps, operations, trust boundaries, and composable systems\" width=\"100%\">\n</div>\n\nThat is the core idea: **tiny trusted capabilities compose into larger\nsystems**. A photon can start as a helper method, become a CLI command, render\nas an app, run on a schedule, accept webhooks, and still expose a clean\nagent-readable contract.\n\n---\n\n### Example\n\n```typescript\n// hello.photon.ts\nexport default class Hello {\n  greet(name: string) {\n    return `Hello, ${name}!`;\n  }\n}\n```\n\nThat's a complete photon. From this single file you get:\n\n```\n$ photon cli hello greet --name Ada        # CLI\n$ photon                                    # Web UI at localhost:3008\n$ photon mcp hello                          # MCP server for Claude, Cursor, etc.\n```\n\nNo decorators. No registration. No server boilerplate.\nJust define the intent. Photon handles the rest.\n\n---\n\n### Quick Start\n\nFrom zero to an MCP server connected to Claude Desktop in three commands:\n\n```bash\nbun add -g @portel/photon\nphoton new my-tool                  # Scaffolds ./my-tool.photon.ts in your CWD\nphoton mcp install my-tool          # Registers it in Claude Desktop's config\n# Restart Claude Desktop. Your tool is live.\n```\n\nPrefer the web dashboard? Skip step 3 and run `photon` instead — it opens Beam, the auto-generated UI.\n\nOr try without installing globally:\n\n```bash\nbunx @portel/photon new my-tool\nbunx @portel/photon mcp install my-tool\n\n# pnpm users can use pnpm dlx instead:\npnpm dlx @portel/photon new my-tool\npnpm dlx @portel/photon mcp install my-tool\n```\n\n> Requires [Node.js 20+](https://nodejs.org). TypeScript is compiled internally; no `tsconfig.json` needed.\n>\n> **Where do photon files live?** `./` (a project directory you cd into) or `~/.photon/` (global, auto-discovered). User settings persist under `~/.photon/state/<photon>/`. See [Where things live](docs/getting-started.md#where-things-live).\n\n### How It Works\n\nYou write a TypeScript class. Methods are your capabilities. Types describe what's valid. Comments explain the intent. Photon reads all of it and generates three interfaces from one file. Same logic. Same validation. Same data.\n\n<div align=\"center\">\n<img src=\"https://raw.githubusercontent.com/portel-dev/photon/main/assets/photon-core-concepts.svg\" alt=\"Six Photon core concepts: methods, comments, types and tags, settings, UI and routes, and operations\" width=\"100%\">\n</div>\n\n```\nanalytics.photon.ts  →  Beam  ·  Web app  ·  Webhook  ·  WebSocket  ·  CLI  ·  MCP\n```\n\nThe more you express, the more Photon derives:\n\n| What you write | What Photon derives |\n|---|---|\n| Method signatures | Tool definitions: names, inputs, outputs |\n| Type annotations | Input validation rules, UI field types |\n| JSDoc comments | Documentation for AI clients and human users |\n| Constructor parameters | Config UI, environment variable mapping, runtime injection (`Photon`, `Cloudflare`, `CloudflareEnv`) |\n| `@tags` | Validation, formatting, scheduling, webhooks, and HTTP routes |\n\nWhen you add a `@param city {@pattern ^[a-zA-Z\\s]+$}` annotation, Beam validates it in the form, the CLI validates it before running, and the MCP schema enforces it for the AI. One annotation. Three consumers.\n\n### Three ways to author\n\n`extends Photon` is one shape. You can also inject `Photon` as a constructor parameter when you already extend something else, or compose without inheritance — same API either way. CF resources reach the photon through a separate `Cloudflare` injection so portable photons stay portable. See [docs/guides/PHOTON-INJECTION.md](docs/guides/PHOTON-INJECTION.md).\n\n---\n\n## Reuse a Photon in application code\n\nExisting Photons can also be application dependencies. Load their source through\nthe public API and call methods from your own Node code:\n\n```typescript\nimport { createPhotonRuntime } from '@portel/photon';\n\nconst runtime = createPhotonRuntime();\ntry {\n  const todo = await runtime.photon<{\n    add(text: string): Promise<unknown>;\n  }>('./todo.photon.ts', { baseDir: '/srv/my-app/photons' });\n  await todo.add('Review the release');\n} finally {\n  await runtime.close();\n}\n```\n\nThis manages initialization and shutdown without starting a server. It executes\ntrusted code in your application process; the host owns authorization. The object\nis separate from a live Beam/daemon instance. Use MCP when your application needs\nto operate on that same live instance. For source resolution, persistence, and\nconstructor-dependency lifecycle limits, see [Photon as a library](docs/internals/PHOTON-AS-LIBRARY.md).\n\n---\n\n## Beam: Human Exploration\n\n[Run the shared task-board walkthrough](docs/tutorials/human-agent-task-board.md) to see a human and an MCP client operate the same state.\n\nBeam is the web dashboard. Every photon becomes an interactive form automatically. Run `photon`. That's the whole command.\n\n<div align=\"center\">\n<img src=\"https://raw.githubusercontent.com/portel-dev/photon/main/assets/beam-dashboard.png\" alt=\"Beam Dashboard\" width=\"100%\">\n</div>\n\nThe UI is **fully auto-generated** from your method signatures: field types, validation, defaults, layouts. You never write frontend code. When you add a `{@choice a,b,c}` tag to a parameter, Beam renders a dropdown. When you mark a string as `{@format email}`, the field validates email format. The UI evolves as your code does.\n\nWhen forms aren't the right interface for what you're building, you can replace Beam's auto-generated view with your own HTML. A global named after your photon is auto-injected (e.g., `analytics.onResult(data => ...)`) — no framework required. `window.photon.url` is also injected and resolves to the Beam base URL so your HTML can construct fetch paths correctly whether running locally or behind a reverse proxy.\n\n> Custom UIs follow the [official MCP Apps Extension](https://modelcontextprotocol.io/extensions/apps/overview) and work across compatible hosts. See the [Custom UI Guide](./docs/guides/CUSTOM-UI.md).\n\nPhotons that declare HTTP routes with `@get`, `@post`, `@put`, `@patch`, or `@delete` are shown in Beam as web apps. Routes support dynamic path segments (e.g. `@get /items/:id`) matched by specificity: literal segments win over parameters. Beam proxies requests to those routes and injects an `x-photon-base-path` header so the app can construct correct absolute paths regardless of where Beam is hosted. Web apps and WebSockets are Photon application targets; MCP Apps are a separate official MCP extension for embedded UI resources.\n\n---\n\n## AI Agents: Machine Invocation\n\nPhoton ships separate, tested MCP adapters: sessionful MCP 2025 over stdio and\nStreamable HTTP, plus stateless MCP `2026-07-28` release-candidate support over\nStreamable HTTP. See the\n[compatibility matrix and runnable clients](./docs/guides/MCP-COMPATIBILITY.md),\nor run `photon doctor mcp` against your installed runtime.\n\n```bash\nphoton info analytics --mcp\n```\n\n```json\n{\n  \"mcpServers\": {\n    \"analytics\": {\n      \"command\": \"photon\",\n      \"args\": [\"mcp\", \"analytics\"]\n    }\n  }\n}\n```\n\nPaste into your AI client's config. Your photon is now an MCP server. Claude can call your methods. Cursor can call your methods. Any MCP-compatible host can call your methods.\n\nThe AI sees the same thing a human sees in Beam: the method names, the parameter descriptions from your JSDoc, the validation rules from your types. The JSDoc comment you wrote to document the tool for yourself is what Claude reads to decide when and how to call it.\n\nThe MCP tools themselves work with [Claude Desktop](https://claude.ai/download), [Claude Code](https://docs.anthropic.com/en/docs/claude-code), [Cursor](https://cursor.com), and any MCP-compatible client. When your photon has a custom UI, clients that support the [MCP Apps Extension](https://modelcontextprotocol.io/extensions/apps/overview) can render it natively, as shown in the weather proof above.\n\n---\n\n## How a Photon Evolves\n\nHere is how a photon grows. Each step adds one thing and gets multiple capabilities from it.\n\n### Add comments: AI understands your intent\n\n```typescript\n/**\n * Weather - Check weather forecasts worldwide\n */\nexport default class Weather {\n  /**\n   * Get the weather forecast for a city\n   * @param city City name (e.g., \"London\")\n   */\n  async forecast(params: { city: string }) { ... }\n}\n```\n\nThe class description becomes how AI clients introduce the tool to users. The `@param` description is what the AI reads before deciding what value to pass. Same comments. Human help text and AI contract at once.\n\n<div align=\"center\">\n<img src=\"https://raw.githubusercontent.com/portel-dev/photon/main/assets/readme-step-2.png\" alt=\"Step 2\" width=\"100%\">\n</div>\n\n### Declare configuration: a settings tool appears\n\n```typescript\nexport default class Weather {\n  /** User-tunable knobs. Photon auto-generates a `settings` tool from this. */\n  protected settings = {\n    /** Units for forecast values */\n    units: 'metric',\n    /** Polling interval in seconds */\n    pollIntervalSec: 300,\n  };\n\n  async forecast(params: { city: string }) {\n    const res = await fetch(`...?units=${this.settings.units}`);\n    return await res.json();\n  }\n}\n```\n\n`protected settings` is the canonical way to expose runtime knobs. Photon reads the JSDoc on each property, generates an MCP `settings` tool with typed inputs, and persists user changes to `~/.photon/state/<photon>/<instance>-settings.json`. Inside methods, `this.settings` is a read-only Proxy. To change a value, the user (or AI) calls the auto-generated `settings` tool.\n\nFor **secrets** that should never be persisted in a settings file (API keys, tokens), use a constructor parameter instead. Photon maps the parameter name to an env var:\n\n```typescript\nexport default class Weather {\n  constructor(private apiKey: string) {}  // → WEATHER_API_KEY\n}\n```\n\nThe constructor pattern is for primitives that come from `.env`. The `protected settings` pattern is for everything else, including any knob the user should be able to change at runtime without restarting. **When in doubt, reach for `settings`.**\n\n<div align=\"center\">\n<img src=\"https://raw.githubusercontent.com/portel-dev/photon/main/assets/readme-step-3.png\" alt=\"Step 3\" width=\"100%\">\n</div>\n\n### Add tags: behavior extends across all surfaces\n\n```typescript\n/**\n * @dependencies node-fetch@^3.0.0\n */\nexport default class Weather {\n  /**\n   * @param city City name {@example London} {@pattern ^[a-zA-Z\\s]+$}\n   * @param days Number of days {@min 1} {@max 7}\n   * @format table\n   */\n  async forecast(params: { city: string; days?: number }) { ... }\n}\n```\n\n`@dependencies` installs `node-fetch` automatically on first run, no manual package install needed. The `{@pattern}` validates in the form, the CLI, and the MCP schema simultaneously. `days` becomes a number spinner with bounds. `@format table` renders the result as a table in Beam. One annotation, three surfaces.\n\n<div align=\"center\">\n<img src=\"https://raw.githubusercontent.com/portel-dev/photon/main/assets/readme-step-4.png\" alt=\"Step 4\" width=\"100%\">\n</div>\n\n### System CLI dependencies\n\nIf your photon wraps a command-line tool, declare it and Photon enforces it at load time:\n\n```typescript\n/**\n * @cli ffmpeg - https://ffmpeg.org/download.html\n */\nexport default class VideoProcessor {\n  async convert({ input, format }: { input: string; format: string }) {\n    // ffmpeg is guaranteed to exist when this runs\n  }\n}\n```\n\n<div align=\"center\">\n<img src=\"https://raw.githubusercontent.com/portel-dev/photon/main/assets/readme-step-5.png\" alt=\"Step 5\" width=\"100%\">\n</div>\n\n---\n\n## What Comes for Free\n\nThings you don't build because Photon handles them:\n\n| | |\n|---|---|\n| **Auto-UI** | Forms, field types, validation, layouts generated from your signatures |\n| **Stateful instances** | Multiple named instances of the same photon, each with isolated state |\n| **Persistent memory** | `this.memory` gives your photon per-instance key-value storage, no database needed |\n| **Scheduled execution** | `@scheduled` runs any method on a cron schedule |\n| **Webhooks** | `@webhook` exposes any method as an HTTP endpoint |\n| **OAuth (client)** | Built-in OAuth 2.0 flows for Google, GitHub, Microsoft |\n| **OAuth Authorization Server** | Issue tokens to MCP clients yourself: CIMD + DCR, PKCE, OIDC id_token, RFC 8693 token exchange |\n| **SQLite persistence** | Audit log, execution history, and OAuth grants survive daemon restart (bun:sqlite or better-sqlite3) |\n| **Daemon ops** | `photon ps` lists and controls scheduled jobs, webhooks, and live sessions |\n| **Distributed locks** | `@locked` serializes access: one caller at a time, across processes |\n| **Cross-photon calls** | `this.call()` invokes another photon's methods |\n| **Cloudflare runtime** | `this.cf.r2('blobs')`, `this.cf.d1('app')`, `this.cf.kv('cache')` — same shape locally (miniflare) and deployed (real bindings). See [CF-BINDINGS.md](docs/guides/CF-BINDINGS.md) |\n| **Real-time events** | `this.emit()` fires named events to the browser UI with zero wiring |\n| **Live rendering** | `this.render()` pushes formatted output to CLI and Beam in real time |\n| **Delegated LLM** | `this.sample()` asks the driving agent's model to generate text — no API key, agent pays |\n| **Inline confirm / input** | `this.confirm()` and `this.elicit()` route through the client's native UI (Beam dialog, Claude prompt) |\n| **Scoped remote access** | `photon claim` generates a short-lived code to scope a remote MCP session to one directory |\n| **Standalone binaries** | `photon build` compiles any photon to a single executable via Bun |\n| **Dependency management** | `@dependencies` auto-installs npm packages on first run |\n\n---\n\n## Coordination: Locks + Events\n\nTwo primitives. Together they unlock a class of things that are surprisingly hard to build today.\n\n**Locks** serialize access. When a method is marked `@locked`, only one caller can execute at a time, whether that caller is a human in Beam, a CLI script, or an AI agent. Everyone else waits their turn.\n\n**Events** push state changes to any browser UI in real time. `this.emit({ event: 'boardUpdated', data: board })` on the server becomes `chess.onBoardUpdated(handler)` in your custom UI — named after your photon file. No WebSockets to configure. No polling. Events are delivered via SSE through the MCP Streamable HTTP transport.\n\nTogether: **turn-based coordination with live state**.\n\n```typescript\nexport default class Chess {\n  /** Make a move. Locks ensure human and AI alternate turns. */\n  /** @locked */\n  async move(params: { from: string; to: string }) {\n    const result = await this.applyMove(params.from, params.to);\n\n    // Browser UI updates instantly, no polling needed\n    this.emit({ event: 'boardUpdated', data: result.board });\n    this.emit({ event: 'turnChanged', data: { next: result.nextPlayer } });\n\n    return result;\n  }\n}\n```\n\n```javascript\n// In your custom UI (ui/chess.html)\n// The global `chess` is auto-injected, named after your photon file\nchess.onBoardUpdated(board => renderBoard(board));\nchess.onTurnChanged(({ next }) => showTurn(next));\n\n// Call server methods directly\nchess.move({ from: 'e2', to: 'e4' });\n```\n\nA human moves through Beam. Claude is configured with the MCP server. The lock ensures they truly alternate. Events keep the board live on both sides. That's a fully functional turn-based chess game, human vs AI, in about 50 lines of application logic.\n\nThe same pattern applies beyond games: approval workflows where a human reviews before AI continues, collaborative tools where edits from any source appear instantly, simulations where steps must execute in strict sequence, any system where **who acts next matters**.\n\n---\n\n## MCP Primitives on `this`\n\nThe MCP protocol's user-facing primitives are surfaced as plain methods\non every photon instance — no decorators, no capability flags, no SDK\nimports. The runtime routes each call through whichever surface the\nrequest arrived on (Beam, Claude Desktop, Cursor, CLI).\n\n```typescript\nexport default class Editor {\n  async summarize(params: { text: string }) {\n    // Ask the driving agent's LLM. No API key. Agent pays.\n    return await this.sample({\n      prompt: `Summarize in one sentence:\\n\\n${params.text}`,\n      maxTokens: 128,\n    });\n  }\n\n  async deploy() {\n    if (!(await this.confirm('Ship to production?'))) return;\n    const env = await this.elicit<string>({\n      ask: 'select',\n      message: 'Which environment?',\n      options: ['staging', 'prod'],\n    });\n    await this.run(env);\n  }\n}\n```\n\n| Primitive | What it does |\n|---|---|\n| `await this.sample({ prompt })` | Delegates LLM generation to the caller's model via MCP sampling |\n| `await this.confirm(question)` | Yes/no prompt — returns `boolean` |\n| `await this.elicit(params)` | Arbitrary input (text, select, form, file, etc.) |\n| `this.status(msg)` / `this.progress(v)` | Live feedback during long work; routes to SSE stream in Beam |\n| `this.roots` | MCP workspace roots declared by the connected client (`roots/list`) |\n| `this.notifyResourceUpdated(uri)` | Push `notifications/resources/updated` to subscribed clients |\n\nFull reference: [`docs/reference/MCP-PRIMITIVES.md`](docs/reference/MCP-PRIMITIVES.md).\n\n---\n\n## Remote Access: Claim Codes\n\nBy default every installed photon is visible to every connected MCP\nclient. When you want to pair a *remote* agent with a *subset* of your\nphotons — your phone driving Beam, a teammate reviewing one project,\na CI agent scoped to a single directory — generate a claim code:\n\n```bash\n$ photon claim --scope /workspace/proj --ttl 4h --label \"phone\"\n✓ Claim code: R3K-9QZ\n  Scope:      /workspace/proj\n  Expires in: 4h\n```\n\nThe remote client presents the code as the `Mcp-Claim-Code` header on\nits MCP session. `tools/list` then only exposes photons whose source\nlives under that directory. Sessions without a code keep full access —\nthe feature is strictly opt-in.\n\nFull reference: [`docs/reference/CLAIM-CODES.md`](docs/reference/CLAIM-CODES.md).\n\n---\n\n## Marketplace\n\nA curated set of photons is ready to install. The public gallery is now kept\nsmall on purpose: polished apps and tools in one place, teaching examples in\nanother.\n\n<div align=\"center\">\n<img src=\"https://raw.githubusercontent.com/portel-dev/photon/main/assets/beam-marketplace.png\" alt=\"Marketplace\" width=\"100%\">\n</div>\n\n```bash\nphoton search boards\nphoton add boards\n```\n\nYou can also install directly from any GitHub repository using qualified refs:\n\n```bash\nphoton add owner/repo/photon-name\n```\n\nBrowse the [Photon Apps marketplace](https://github.com/portel-dev/photons)\nfor ready-to-use photons, or the\n[Photon Examples marketplace](https://github.com/portel-dev/photon-examples)\nfor focused learning examples. You can also host a private marketplace for your\nteam: internal tools that stay off the public internet.\n\n---\n\n## Commands\n\n```bash\n# Run\nphoton                            # Open Beam UI\nphoton mcp <name>                 # Run as MCP server\nphoton mcp <name> --dev           # MCP server with hot reload\nphoton cli <name> [method]        # Run as CLI tool\n\n# Install from GitHub\nphoton beam owner/repo/name       # Install & open in Beam\nphoton cli owner/repo/name method # Install & run via CLI\n\n# Create\nphoton maker new <name>           # Scaffold a new photon\n\n# Build\nphoton build <name>               # Compile to standalone binary\nphoton build <name> --with-app    # Include Beam UI in binary\n\n# Manage\nphoton info                       # List all photons\nphoton info <name> --mcp          # Get MCP client config\nphoton maker validate <name>      # Check for errors\n\n# Marketplace\nphoton add <name>                 # Install photon\nphoton search <query>             # Search marketplace\nphoton upgrade                    # Upgrade all\n\n# Ops\nphoton doctor                     # Diagnose environment\nphoton test                       # Run tests\nphoton ps                         # Observe & control scheduled jobs, webhooks, sessions\n```\n\n### `photon ps`: scheduled jobs, webhooks, and sessions\n\n`photon ps` is the operator surface for the daemon. Without arguments\nit prints a four-section snapshot — ACTIVE schedules, DECLARED-but-\nnot-enrolled, WEBHOOKS, and ACTIVE SESSIONS.\n\n```bash\nphoton ps                          # full snapshot\nphoton ps --json                   # structured output for scripts\nphoton ps --type active            # one section only\nphoton ps --base ~/Projects/kith   # filter to one PHOTON_DIR\n```\n\n**Two-step model.** A `@scheduled` annotation in source is **DECLARED**\nuntil enrolled. Enrollment is per-machine, persistent, and explicit:\n\n```bash\nphoton ps enable  newsletter:sendDigest    # DECLARED → ACTIVE\nphoton ps disable newsletter:sendDigest    # ACTIVE → suppressed (survives restart)\nphoton ps pause   newsletter:sendDigest    # stop firing without removing enrollment\nphoton ps resume  newsletter:sendDigest    # undo pause\nphoton ps history newsletter:sendDigest    # last 20 firings: timestamp, status, error\n```\n\nFor manual cron schedules without a `@scheduled` tag, use the Beam Pulse\npanel (\"Add schedule\") or call `this.schedule.create()` from photon code.\n\n`this.schedule.create()` (programmatic schedules) skips DECLARED and\ngoes straight to ACTIVE. See\n[`docs/GUIDE.md#scheduling`](docs/GUIDE.md#scheduling-scheduled-thisschedule-photon-ps)\nfor the full reference, the daemon state layout, and `.photon-no-host`\nfor multi-host setups.\n\n### Install from GitHub\n\nUse qualified refs to install and run photons directly from any GitHub repository:\n\n```bash\nphoton beam Arul-/photons/claw        # Install from GitHub, open in Beam\nphoton cli Arul-/photons/todo add     # Install from GitHub, run method\n```\n\nThe format is `owner/repo/photon-name`. Transitive `@photon` dependencies from the same repo are resolved automatically.\n\n### Compile to Binary\n\nBuild standalone executables from any photon — no Node.js required on the target machine:\n\n```bash\nphoton build my-tool                         # Binary for current platform\nphoton build my-tool -t bun-linux-x64        # Cross-compile for Linux\nphoton build my-tool --with-app              # Embed Beam UI as a desktop app\n```\n\nUses Bun's compiler under the hood. The binary bundles the photon, its `@dependencies`, and transitive `@photon` deps into a single file.\n\n---\n\n## Tag Reference\n\n| Tag | Where | What it does |\n|---|---|---|\n| `@dependencies` | Class | Auto-install npm packages on first run |\n| `@cli` | Class | Declare system CLI dependencies, checked at load time |\n| `@format` | Method | Result rendering (table, list, markdown, code, etc.) |\n| `@param ... {@choice a,b,c}` | Param | Dropdown selection in Beam |\n| `@param ... {@choice-from method}` | Param | Dynamic dropdown populated from another method's return value |\n| `@param ... {@format email}` | Param | Input validation and field type |\n| `@param ... {@min N} {@max N}` | Param | Numeric range constraints |\n| `@ui` | Class/Method | Link a custom HTML template |\n| `@auth` | Class | Require or describe MCP authentication, including passwordless methods such as `@auth email passkey`, and populate `this.caller` |\n| `@scope` | Method | Override the inferred OAuth scope for a protected MCP tool call |\n| `@expose` | Method | Auto-bind to `POST /api/<kebab>` for SPA fetch (`public` skips the SameSite gate) |\n| `@get /path` | Method | HTTP-only GET route; shown as a web app in Beam, not an MCP tool. Supports `:param` segments |\n| `@post /path` | Method | HTTP-only POST route; shown as a web app in Beam, not an MCP tool. Supports `:param` segments |\n| `@put /path` | Method | HTTP-only PUT route; shown as a web app in Beam, not an MCP tool. Supports `:param` segments |\n| `@patch /path` | Method | HTTP-only PATCH route; shown as a web app in Beam, not an MCP tool. Supports `:param` segments |\n| `@delete /path` | Method | HTTP-only DELETE route; shown as a web app in Beam, not an MCP tool. Supports `:param` segments |\n| `@resource <uri>` | Method | Dynamic MCP resource resolver (canonical form; replaces `@Static`) |\n| `@prompt` | Method | MCP prompt template (canonical form; replaces `@Template`) |\n| `@webhook` | Method | Expose as HTTP endpoint |\n| `@scheduled` | Method | Run on a cron schedule |\n| `@locked` | Method | Distributed lock across processes |\n| `@autorun` | Method | Auto-execute when selected in Beam |\n| `@mcp` | Class | Inject another MCP server as a dependency |\n| `@icon` | Class/Method | Set emoji icon |\n\n> See the full [Tag Reference](./docs/reference/DOCBLOCK-TAGS.md) for all 30+ tags with examples.\n\n---\n\n## Documentation\n\n**Start here:**\n\n| Guide | |\n|---|---|\n| [Getting Started](./docs/getting-started.md) | Install, build, and run your first photon in 5 minutes |\n| [From Method to Chat App](./docs/tutorials/from-method-to-chat-app.md) | Weather showcase: CLI, Beam, MCP, and embedded app UI from one method |\n| [Core Concepts](./docs/concepts.md) | The 6 ideas behind Photon |\n| [Tag Reference](./docs/reference/DOCBLOCK-TAGS.md) | Public reference for every docblock tag Photon understands |\n| [Output Formats](./docs/formats.md) | Visual gallery of every `@format` type |\n| [Intent Metadata](./docs/reference/INTENT-METADATA.md) | How comments, schemas, annotations, and formats map to native surfaces |\n| [Settings](./docs/GUIDE.md#settings-user-configurable-knobs) | Declare runtime knobs with `protected settings` (the canonical config pattern) |\n| [Troubleshooting](./docs/TROUBLESHOOTING.md) | Common issues and solutions |\n\n**Go deeper:**\n\n| Topic | |\n|---|---|\n| [Custom UI](./docs/guides/CUSTOM-UI.md) | Build rich interactive interfaces with the photon bridge API |\n| [OAuth](./docs/guides/AUTH.md) | Built-in OAuth 2.0 with Google, GitHub, Microsoft |\n| [MCP JWT Auth](./docs/guides/MCP-JWT-AUTH.md) | Secure deployed MCP tool calls with short-lived scoped JWTs |\n| [MCP Client Registration](./docs/guides/mcp-client-registration.md) | Register MCP clients with Photon's AS via CIMD or DCR |\n| [Observability](./docs/guides/observability.md) | OpenTelemetry traces, metrics, logs, and structured errors |\n| [Protocol Features](./docs/guides/PROTOCOL-FEATURES.md) | Capability handshake, structured errors, trace correlation |\n| [Multi-target Architecture](./docs/internals/ARCHITECTURE.md#one-execution-model-many-targets) | How one Photon method maps to CLI, MCP, web, webhook, WebSocket, and MCP Tasks |\n| [Daemon Pub/Sub](./docs/internals/DAEMON-PUBSUB.md) | Real-time cross-process messaging |\n| [Webhooks](./docs/reference/WEBHOOKS.md) | HTTP endpoints for external services |\n| [Locks](./docs/reference/LOCKS.md) | Distributed locks for exclusive access |\n| [Advanced Patterns](./docs/guides/ADVANCED.md) | Lifecycle hooks, dependency injection, interactive workflows |\n| [Marketplace Configuration](./docs/guides/MARKETPLACE-CONFIG.md) | Sharing settings across related photons in one marketplace |\n| [Deployment](./docs/guides/DEPLOYMENT.md) | Docker, Cloudflare Workers, AWS Lambda, Systemd |\n\n**Operate:**\n\n| Topic | |\n|---|---|\n| [The Photon Daemon](./docs/guides/DAEMON.md) | Lifecycle, PHOTON_DIR resolution, resilience, troubleshooting |\n| [Security](./SECURITY.md) | Best practices and audit checklist |\n| [Marketplace Publishing](./docs/guides/MARKETPLACE-PUBLISHING.md) | Create and share team marketplaces |\n| [Best Practices](./docs/guides/BEST-PRACTICES.md) | Patterns for production photons |\n\n**Reference:** [Complete Developer Guide](./docs/GUIDE.md) · [Tag Reference](./docs/reference/DOCBLOCK-TAGS.md) · [Naming Conventions](./docs/guides/NAMING-CONVENTIONS.md) · [Architecture](./docs/internals/ARCHITECTURE.md) · [Lifecycle & Ingress](./docs/internals/LIFECYCLE-AND-INGRESS.md) · [PHOTON_DIR & Namespace](./docs/internals/PHOTON-DIR-AND-NAMESPACE.md) · [Changelog](./CHANGELOG.md) · [Contributing](./CONTRIBUTING.md)\n\n---\n\n## Open Source\n\nPhoton is free and open source under the [MIT license](./LICENSE).\n\nThe project is still evolving and contributions are welcome.\n\n- Star the repository if the idea resonates: `gh repo star portel-dev/photon`\n- [Report issues](https://github.com/portel-dev/photon/issues)\n- [Contribute improvements or examples](./CONTRIBUTING.md)\n","readmeFilename":"README.md"}