{"bin":{"photon":"bin/photon"},"bugs":{"url":"https://github.com/portel-dev/photon/issues"},"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","name":"@portel/photon","type":"module","types":"./dist/index.d.ts","author":{"name":"Portel Dev"},"engines":{"bun":">=1.0.0","node":">=20.0.0"},"gitHead":"09d640379d2a6dd5de9333e79df8c54667c1b387","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: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"},"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.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"},"_id":"@portel/photon@1.37.0","version":"1.37.0"}