@pyric/cli 0.1.0-alpha.18 → 0.1.0-alpha.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -9
- package/dist/bridge/server/mcp-contract.d.ts +2 -2
- package/dist/bridge/server/mcp-contract.d.ts.map +1 -1
- package/dist/bridge/server/mcp-contract.js +3 -0
- package/dist/bridge/server/mcp-contract.js.map +1 -1
- package/dist/cli/index.d.ts +3 -2
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +51 -42
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/mcp-proxy.d.ts.map +1 -1
- package/dist/cli/mcp-proxy.js +3 -3
- package/dist/cli/mcp-proxy.js.map +1 -1
- package/dist/cli/parse-args.d.ts +1 -1
- package/dist/cli/parse-args.d.ts.map +1 -1
- package/dist/cli/parse-args.js +51 -15
- package/dist/cli/parse-args.js.map +1 -1
- package/dist/cli/pyric-config.d.ts +24 -0
- package/dist/cli/pyric-config.d.ts.map +1 -0
- package/dist/cli/pyric-config.js +28 -0
- package/dist/cli/pyric-config.js.map +1 -0
- package/dist/cli/rules.d.ts +1 -0
- package/dist/cli/rules.d.ts.map +1 -1
- package/dist/cli/rules.js +18 -4
- package/dist/cli/rules.js.map +1 -1
- package/dist/cli/{dev-runner.d.ts → sandbox-runner.d.ts} +33 -36
- package/dist/cli/sandbox-runner.d.ts.map +1 -0
- package/dist/cli/{dev-runner.js → sandbox-runner.js} +90 -55
- package/dist/cli/sandbox-runner.js.map +1 -0
- package/dist/cli/serve.d.ts +6 -4
- package/dist/cli/serve.d.ts.map +1 -1
- package/dist/cli/serve.js +99 -40
- package/dist/cli/serve.js.map +1 -1
- package/dist/cli/service-command-records/storage-rules-resolve.d.ts +4 -0
- package/dist/cli/service-command-records/storage-rules-resolve.d.ts.map +1 -0
- package/dist/cli/service-command-records/storage-rules-resolve.js +3 -0
- package/dist/cli/service-command-records/storage-rules-resolve.js.map +1 -0
- package/dist/cli/service-commands.generated.d.ts +3 -0
- package/dist/cli/service-commands.generated.d.ts.map +1 -1
- package/dist/cli/service-commands.generated.js +2 -0
- package/dist/cli/service-commands.generated.js.map +1 -1
- package/dist/cli/snapshot.js +5 -5
- package/dist/cli/snapshot.js.map +1 -1
- package/dist/cli/verify.js +1 -1
- package/dist/cli/verify.js.map +1 -1
- package/dist/functions-rtdb/development-runtime.js +1 -1
- package/dist/functions-rtdb/development-runtime.js.map +1 -1
- package/dist/functions-rtdb/project.js +8 -8
- package/dist/functions-rtdb/project.js.map +1 -1
- package/dist/next/guard.js +1 -1
- package/dist/next/guard.js.map +1 -1
- package/dist/remote/index.d.ts +1 -1
- package/dist/remote/index.js +9 -9
- package/dist/remote/index.js.map +1 -1
- package/dist/serve/bundler.js +10 -10
- package/dist/serve/bundler.js.map +1 -1
- package/dist/serve/entries/ai.d.ts.map +1 -1
- package/dist/serve/entries/ai.js +27 -1
- package/dist/serve/entries/ai.js.map +1 -1
- package/dist/serve/entries/auth-helper-dom.js +1 -1
- package/dist/serve/entries/auth-helper-dom.js.map +1 -1
- package/dist/serve/entries/auth-helper-runtime.js +1 -1
- package/dist/serve/entries/auth-helper-runtime.js.map +1 -1
- package/dist/serve/entries/firestore.js +3 -3
- package/dist/serve/entries/firestore.js.map +1 -1
- package/dist/serve/entries/keepalive.js +1 -1
- package/dist/serve/entries/keepalive.js.map +1 -1
- package/dist/serve/entries/runtime.js +21 -14
- package/dist/serve/entries/runtime.js.map +1 -1
- package/dist/serve/entries/storage.js +1 -1
- package/dist/serve/entries/storage.js.map +1 -1
- package/dist/serve/entries/worker-runtime.js +1 -1
- package/dist/serve/entries/worker-runtime.js.map +1 -1
- package/dist/serve/init-payload.d.ts +4 -0
- package/dist/serve/init-payload.d.ts.map +1 -1
- package/dist/serve/namespace.d.ts +6 -0
- package/dist/serve/namespace.d.ts.map +1 -1
- package/dist/serve/namespace.js +36 -5
- package/dist/serve/namespace.js.map +1 -1
- package/dist/serve/rules.d.ts +3 -3
- package/dist/serve/rules.d.ts.map +1 -1
- package/dist/serve/rules.js +56 -25
- package/dist/serve/rules.js.map +1 -1
- package/dist/serve/runtime/chip.d.ts.map +1 -1
- package/dist/serve/runtime/chip.js +32 -1
- package/dist/serve/runtime/chip.js.map +1 -1
- package/dist/serve/runtime/manifest.d.ts +1 -1
- package/dist/serve/runtime/manifest.d.ts.map +1 -1
- package/dist/serve/runtime/manifest.js +1 -1
- package/dist/serve/runtime/manifest.js.map +1 -1
- package/dist/serve/runtime/status.d.ts.map +1 -1
- package/dist/serve/runtime/status.js +23 -0
- package/dist/serve/runtime/status.js.map +1 -1
- package/dist/serve/sandbox-session.d.ts +1 -0
- package/dist/serve/sandbox-session.d.ts.map +1 -1
- package/dist/serve/sandbox-session.js +10 -4
- package/dist/serve/sandbox-session.js.map +1 -1
- package/dist/serve/server.d.ts +7 -0
- package/dist/serve/server.d.ts.map +1 -1
- package/dist/serve/server.js +15 -1
- package/dist/serve/server.js.map +1 -1
- package/dist/serve/site-ui/404.html +1 -1
- package/dist/serve/site-ui/_astro/{RulesCodeEditor.CzwHdCi9.js → RulesCodeEditor.XtDmHOlN.js} +1 -1
- package/dist/serve/site-ui/_astro/_example_.B9DG9HLJ.css +1 -0
- package/dist/serve/site-ui/_astro/_slug_.Da5VLhW1.css +1 -0
- package/dist/serve/site-ui/_astro/_studio_.BnfYCKoI.css +1 -0
- package/dist/serve/site-ui/_astro/app.B52xr-DK.js +1 -0
- package/dist/serve/site-ui/_astro/app.DWBraPUw.js +12 -0
- package/dist/serve/site-ui/_astro/app.pMSnN6Qw.css +1 -0
- package/dist/serve/site-ui/_astro/chess-showcase.B72XYeoh.js +354 -0
- package/dist/serve/site-ui/_astro/{example-runtime.B0byNQOl.js → example-runtime.C25_lx6Z.js} +2 -26
- package/dist/serve/site-ui/_astro/index.Tb-31efc.css +1 -0
- package/dist/serve/site-ui/_astro/index.UkCBr-_0.css +1 -0
- package/dist/serve/site-ui/_astro/sandbox-controls.DEpnKg-O.js +1169 -0
- package/dist/serve/site-ui/_astro/seed.Co0yUJY5.js +20 -0
- package/dist/serve/site-ui/_astro/writes.rpjrFzmu.js +102 -0
- package/dist/serve/site-ui/auth/index.html +5 -3
- package/dist/serve/site-ui/david-east.jpg +0 -0
- package/dist/serve/site-ui/docs/_rhythm/index.html +6 -3
- package/dist/serve/site-ui/docs/_rhythm.md +1 -1
- package/dist/serve/site-ui/docs/agent/set-up-your-agent/index.html +45 -17
- package/dist/serve/site-ui/docs/agent/set-up-your-agent.md +20 -17
- package/dist/serve/site-ui/docs/agent/watch-and-review/index.html +6 -5
- package/dist/serve/site-ui/docs/agent/watch-and-review.md +1 -5
- package/dist/serve/site-ui/docs/agent/work-with-an-agent/index.html +8 -5
- package/dist/serve/site-ui/docs/agent/work-with-an-agent.md +4 -4
- package/dist/serve/site-ui/docs/ai-compat/index.html +5 -2
- package/dist/serve/site-ui/docs/api-reference/index.html +6 -2
- package/dist/serve/site-ui/docs/api-reference.md +1 -0
- package/dist/serve/site-ui/docs/app-compat/index.html +5 -2
- package/dist/serve/site-ui/docs/auth-compat/index.html +5 -2
- package/dist/serve/site-ui/docs/build/ai-logic/index.html +5 -2
- package/dist/serve/site-ui/docs/build/authentication/index.html +7 -4
- package/dist/serve/site-ui/docs/build/authentication.md +2 -2
- package/dist/serve/site-ui/docs/build/cloud-firestore/index.html +34 -53
- package/dist/serve/site-ui/docs/build/cloud-firestore.md +40 -36
- package/dist/serve/site-ui/docs/build/cloud-messaging/index.html +5 -2
- package/dist/serve/site-ui/docs/build/cloud-storage/index.html +6 -3
- package/dist/serve/site-ui/docs/build/cloud-storage.md +1 -1
- package/dist/serve/site-ui/docs/build/realtime-database/index.html +9 -6
- package/dist/serve/site-ui/docs/build/realtime-database.md +4 -4
- package/dist/serve/site-ui/docs/conformance-scores/index.html +5 -2
- package/dist/serve/site-ui/docs/create-pyric-reference-api/index.html +6 -3
- package/dist/serve/site-ui/docs/create-pyric-reference-api.md +1 -1
- package/dist/serve/site-ui/docs/database-compat/index.html +5 -2
- package/dist/serve/site-ui/docs/examples/chess/index.html +649 -250
- package/dist/serve/site-ui/docs/examples/chess.md +45 -16
- package/dist/serve/site-ui/docs/examples/index.html +6 -3
- package/dist/serve/site-ui/docs/firestore-compat/index.html +5 -2
- package/dist/serve/site-ui/docs/functions-rtdb-compat/index.html +5 -2
- package/dist/serve/site-ui/docs/get-started/how-the-swap-works/index.html +9 -6
- package/dist/serve/site-ui/docs/get-started/how-the-swap-works.md +5 -5
- package/dist/serve/site-ui/docs/get-started/nextjs/index.html +9 -6
- package/dist/serve/site-ui/docs/get-started/nextjs.md +4 -4
- package/dist/serve/site-ui/docs/get-started/start-building/index.html +41 -10
- package/dist/serve/site-ui/docs/get-started/start-building.md +21 -10
- package/dist/serve/site-ui/docs/get-started/vite/index.html +6 -3
- package/dist/serve/site-ui/docs/get-started/vite.md +1 -1
- package/dist/serve/site-ui/docs/index.json +203 -168
- package/dist/serve/site-ui/docs/messaging-compat/index.html +5 -2
- package/dist/serve/site-ui/docs/observe/resolve-runtime-status/index.html +5 -2
- package/dist/serve/site-ui/docs/observe/see-whats-happening/index.html +6 -4
- package/dist/serve/site-ui/docs/observe/see-whats-happening.md +2 -4
- package/dist/serve/site-ui/docs/observe/shape-your-data/index.html +9 -6
- package/dist/serve/site-ui/docs/observe/shape-your-data.md +4 -4
- package/dist/serve/site-ui/docs/overview/index.html +16 -10
- package/dist/serve/site-ui/docs/overview.md +19 -11
- package/dist/serve/site-ui/docs/pyric-admin-app-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-admin-auth-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-admin-database-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-admin-firestore-reference-api/index.html +8 -5
- package/dist/serve/site-ui/docs/pyric-admin-firestore-reference-api.md +3 -3
- package/dist/serve/site-ui/docs/pyric-admin-messaging-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-admin-reference-api/index.html +501 -0
- package/dist/serve/site-ui/docs/pyric-admin-reference-api.md +587 -0
- package/dist/serve/site-ui/docs/pyric-admin-storage-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-ai-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-ai-scripting-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-app-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-auth-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-cli-assurance-browser-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-cli-assurance-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-cli-bridge-client-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-cli-bridge-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-cli-conformance-browser-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-cli-conformance-docs-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-cli-conformance-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-cli-credentials-node-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-cli-discover-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-cli-next-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-cli-register-app-bridge-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-cli-register-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-cli-remote-reference-api/index.html +6 -3
- package/dist/serve/site-ui/docs/pyric-cli-remote-reference-api.md +1 -1
- package/dist/serve/site-ui/docs/pyric-cli-serve-worker-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-cli-verify-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-cli-vite-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-database-reference-api/index.html +166 -95
- package/dist/serve/site-ui/docs/pyric-database-reference-api.md +107 -1
- package/dist/serve/site-ui/docs/pyric-firestore-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-messaging-reference-api/index.html +10 -4
- package/dist/serve/site-ui/docs/pyric-messaging-reference-api.md +5 -2
- package/dist/serve/site-ui/docs/pyric-messaging-sw-reference-api/index.html +10 -4
- package/dist/serve/site-ui/docs/pyric-messaging-sw-reference-api.md +5 -2
- package/dist/serve/site-ui/docs/pyric-rules-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-sandbox-database-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-sandbox-firestore-reference-api/index.html +6 -3
- package/dist/serve/site-ui/docs/pyric-sandbox-firestore-reference-api.md +2 -2
- package/dist/serve/site-ui/docs/pyric-sandbox-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-storage-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-ui-agents-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-ui-auth-hooks-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-ui-auth-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-ui-events-hooks-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-ui-events-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-ui-firestore-hooks-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-ui-firestore-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-ui-primitives-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-ui-rtdb-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-ui-rules-hooks-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-ui-rules-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-ui-storage-hooks-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-ui-storage-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-ui-traffic-hooks-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-ui-traffic-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/reference/cli/index.html +153 -0
- package/dist/serve/site-ui/docs/reference/cli.md +114 -0
- package/dist/serve/site-ui/docs/rules-compat/index.html +5 -2
- package/dist/serve/site-ui/docs/secure/audit-your-rules/index.html +5 -2
- package/dist/serve/site-ui/docs/secure/firestore-rules-limits/index.html +5 -2
- package/dist/serve/site-ui/docs/secure/read-a-denial/index.html +6 -3
- package/dist/serve/site-ui/docs/secure/read-a-denial.md +1 -1
- package/dist/serve/site-ui/docs/secure/rtdb-rules-in-typescript/index.html +5 -2
- package/dist/serve/site-ui/docs/secure/rules-standard-library/index.html +5 -2
- package/dist/serve/site-ui/docs/secure/secure-it-with-rules/index.html +5 -2
- package/dist/serve/site-ui/docs/secure/simulate-and-lint/index.html +5 -2
- package/dist/serve/site-ui/docs/secure/write-a-rules-test-suite/index.html +5 -2
- package/dist/serve/site-ui/docs/ship/ship-to-production/index.html +7 -4
- package/dist/serve/site-ui/docs/ship/ship-to-production.md +2 -2
- package/dist/serve/site-ui/docs/ship/test-in-node/index.html +9 -6
- package/dist/serve/site-ui/docs/ship/test-in-node.md +4 -4
- package/dist/serve/site-ui/docs/storage-compat/index.html +5 -2
- package/dist/serve/site-ui/docs/trust/how-we-know-it-matches-firebase/index.html +5 -2
- package/dist/serve/site-ui/docs/trust/rules-standard-library/index.html +5 -2
- package/dist/serve/site-ui/docs/trust/versioning-and-compatibility/index.html +5 -2
- package/dist/serve/site-ui/docs/tutorial/index.html +10 -7
- package/dist/serve/site-ui/docs/tutorial.md +4 -4
- package/dist/serve/site-ui/examples/chess/index.html +4 -2
- package/dist/serve/site-ui/firestore/index.html +5 -3
- package/dist/serve/site-ui/hero-charcoal.jpg +0 -0
- package/dist/serve/site-ui/index.html +9 -7
- package/dist/serve/site-ui/llms.txt +4 -3
- package/dist/serve/site-ui/pyric-campfire-full.png +0 -0
- package/dist/serve/site-ui/pyric-campfire.png +0 -0
- package/dist/serve/site-ui/rtdb/index.html +5 -3
- package/dist/serve/site-ui/settings/index.html +5 -3
- package/dist/serve/site-ui/storage/index.html +5 -3
- package/dist/serve/site-ui/studio/index.html +13 -0
- package/dist/serve/site-ui/studio-routes.json +1 -1
- package/dist/serve/site-ui/traffic/index.html +5 -3
- package/dist/serve/studio/routes.d.ts +9 -0
- package/dist/serve/studio/routes.d.ts.map +1 -1
- package/dist/serve/studio/routes.js +47 -7
- package/dist/serve/studio/routes.js.map +1 -1
- package/dist/serve/vite-ai-config.d.ts.map +1 -1
- package/dist/serve/vite-ai-config.js +38 -8
- package/dist/serve/vite-ai-config.js.map +1 -1
- package/dist/serve/vite-module-swap.d.ts.map +1 -1
- package/dist/serve/vite-module-swap.js +0 -28
- package/dist/serve/vite-module-swap.js.map +1 -1
- package/dist/serve/vite-rules-source.d.ts.map +1 -1
- package/dist/serve/vite-rules-source.js +28 -7
- package/dist/serve/vite-rules-source.js.map +1 -1
- package/dist/serve/vite-sandbox-generation.d.ts +1 -1
- package/dist/serve/vite-sandbox-generation.d.ts.map +1 -1
- package/dist/serve/vite-sandbox-generation.js +1 -1
- package/dist/serve/vite-sandbox-generation.js.map +1 -1
- package/dist/serve/worker/client/disconnect.js +1 -1
- package/dist/serve/worker/client/disconnect.js.map +1 -1
- package/dist/serve/worker/client/presence.d.ts.map +1 -1
- package/dist/serve/worker/client/presence.js +18 -5
- package/dist/serve/worker/client/presence.js.map +1 -1
- package/dist/serve/worker/host-ai.d.ts.map +1 -1
- package/dist/serve/worker/host-ai.js +15 -0
- package/dist/serve/worker/host-ai.js.map +1 -1
- package/dist/serve/worker/protocol.d.ts +4 -0
- package/dist/serve/worker/protocol.d.ts.map +1 -1
- package/dist/serve/worker/protocol.js.map +1 -1
- package/dist/serve/worker/serve-init.d.ts.map +1 -1
- package/dist/serve/worker/serve-init.js +7 -1
- package/dist/serve/worker/serve-init.js.map +1 -1
- package/package.json +5 -5
- package/src/bridge/server/mcp-contract.ts +3 -0
- package/src/cli/cli.test.ts +2 -2
- package/src/cli/index.ts +51 -42
- package/src/cli/mcp-proxy.ts +10 -11
- package/src/cli/parse-args.ts +61 -15
- package/src/cli/pyric-config.ts +45 -0
- package/src/cli/rules.ts +31 -4
- package/src/cli/{dev-runner.ts → sandbox-runner.ts} +117 -72
- package/src/cli/serve.ts +115 -47
- package/src/cli/service-command-records/storage-rules-resolve.ts +4 -0
- package/src/cli/service-commands.generated.ts +2 -0
- package/src/cli/snapshot.ts +5 -5
- package/src/cli/verify.ts +1 -1
- package/src/functions-rtdb/development-runtime.ts +1 -1
- package/src/functions-rtdb/project.ts +8 -8
- package/src/next/guard.ts +1 -1
- package/src/remote/index.ts +9 -9
- package/src/serve/bundler.ts +10 -10
- package/src/serve/entries/ai.ts +27 -1
- package/src/serve/entries/auth-helper-dom.ts +1 -1
- package/src/serve/entries/auth-helper-runtime.ts +1 -1
- package/src/serve/entries/firestore.ts +3 -3
- package/src/serve/entries/keepalive.ts +1 -1
- package/src/serve/entries/runtime.ts +19 -14
- package/src/serve/entries/storage.ts +1 -1
- package/src/serve/entries/worker-runtime.ts +1 -1
- package/src/serve/init-payload.ts +4 -0
- package/src/serve/namespace.ts +44 -5
- package/src/serve/rules.ts +61 -26
- package/src/serve/runtime/chip.ts +38 -1
- package/src/serve/runtime/manifest.ts +1 -1
- package/src/serve/runtime/status.ts +24 -0
- package/src/serve/sandbox-session.ts +10 -4
- package/src/serve/server.ts +18 -1
- package/src/serve/studio/routes.ts +63 -7
- package/src/serve/vite-ai-config.ts +37 -7
- package/src/serve/vite-module-swap.ts +0 -28
- package/src/serve/vite-rules-source.ts +29 -7
- package/src/serve/vite-sandbox-generation.ts +1 -1
- package/src/serve/worker/client/disconnect.ts +1 -1
- package/src/serve/worker/client/presence.ts +25 -5
- package/src/serve/worker/host-ai.ts +15 -0
- package/src/serve/worker/protocol.ts +2 -1
- package/src/serve/worker/serve-init.ts +5 -1
- package/README.md.orig +0 -141
- package/dist/cli/dev-runner.d.ts.map +0 -1
- package/dist/cli/dev-runner.js.map +0 -1
- package/dist/serve/site-ui/_astro/_example_.jevZ7OdV.css +0 -1
- package/dist/serve/site-ui/_astro/_slug_.C6QfVOxJ.css +0 -1
- package/dist/serve/site-ui/_astro/_slug_.CXh9yTP1.css +0 -1
- package/dist/serve/site-ui/_astro/_studio_.B6b_G1ev.css +0 -1
- package/dist/serve/site-ui/_astro/app.B7pBzz5N.js +0 -11
- package/dist/serve/site-ui/_astro/app.BsFsMjn0.css +0 -1
- package/dist/serve/site-ui/_astro/app.boex5SnQ.js +0 -1
- package/dist/serve/site-ui/_astro/chess-showcase.DDqE-QGe.js +0 -1
- package/dist/serve/site-ui/_astro/chess-source-explorer.C5k9c5yK.js +0 -1
- package/dist/serve/site-ui/_astro/chess-v2.CFHmd3UL.js +0 -354
- package/dist/serve/site-ui/_astro/index.uwPvjH_1.js +0 -1
- package/dist/serve/site-ui/_astro/jsx-runtime.D_zvdyIk.js +0 -9
- package/dist/serve/site-ui/_astro/reads.Dh3z0fJy.js +0 -1
- package/dist/serve/site-ui/_astro/sandbox-controls.C2IqtoSw.js +0 -1252
- package/dist/serve/site-ui/_astro/seed.CCmj00su.js +0 -20
- package/dist/serve/site-ui/docs/trust/storage-rules-stdlib-research/index.html +0 -582
- package/dist/serve/site-ui/docs/trust/storage-rules-stdlib-research.md +0 -448
- package/dist/serve/site-ui/examples/firestore-first-write/index.html +0 -2
package/README.md
CHANGED
|
@@ -26,17 +26,22 @@ Antigravity CLI and OpenCode use the standalone skill installer:
|
|
|
26
26
|
|
|
27
27
|
```bash
|
|
28
28
|
# Antigravity CLI
|
|
29
|
-
npx skills add https://github.com/davideast/pyric/tree/main/pyric-plugin/skills/pyric
|
|
29
|
+
npx skills add https://github.com/davideast/pyric/tree/main/pyric-plugin/skills/pyric --agent antigravity-cli
|
|
30
30
|
|
|
31
31
|
# OpenCode
|
|
32
|
-
npx skills add https://github.com/davideast/pyric/tree/main/pyric-plugin/skills/pyric
|
|
32
|
+
npx skills add https://github.com/davideast/pyric/tree/main/pyric-plugin/skills/pyric --agent opencode
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
Then
|
|
35
|
+
Then invoke the skill:
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
| Agent | Enter |
|
|
38
|
+
|---|---|
|
|
39
|
+
| Codex | `$pyric` |
|
|
40
|
+
| Claude Code | `/pyric:pyric` |
|
|
41
|
+
| Antigravity CLI | `/pyric` |
|
|
42
|
+
| OpenCode | `/pyric` |
|
|
43
|
+
|
|
44
|
+
The leading `$` or `/` is part of the command.
|
|
40
45
|
|
|
41
46
|
The skill chooses the project launcher, starts one local sandbox bridge, opens the application, and confirms that the browser sandbox is connected.
|
|
42
47
|
|
|
@@ -79,9 +84,9 @@ npm run dev
|
|
|
79
84
|
|
|
80
85
|
During `vite dev`, the plugin swaps supported `firebase/*` modules at resolution time. The backend runs in a SharedWorker, so tabs on the same development origin use one local backend. Browser-local persistence uses IndexedDB.
|
|
81
86
|
|
|
82
|
-
Pyric Studio is available on the Vite origin at `/__pyric/ui
|
|
87
|
+
Pyric Studio is available on the Vite origin at `/__pyric/ui/studio`. It opens the same backend used by the application.
|
|
83
88
|
|
|
84
|
-
For a static application or a Node process, `pyric
|
|
89
|
+
For a static application or a Node process, `pyric sandbox` provides the same development-only package swap without the Vite plugin. The [CLI reference](packages/site-docs/src/content/reference/cli.md) documents those paths and every command.
|
|
85
90
|
|
|
86
91
|
## Keep using official Firebase SDKs
|
|
87
92
|
|
|
@@ -109,7 +114,7 @@ Pyric documents the parts that differ locally, including supported behavior, Sec
|
|
|
109
114
|
|
|
110
115
|
## Monitor the local environment in Pyric Studio
|
|
111
116
|
|
|
112
|
-
Pyric Studio shows local data, requests, authentication state, Security Rules verdicts, and denied operations. Open `/__pyric/ui
|
|
117
|
+
Pyric Studio shows local data, requests, authentication state, Security Rules verdicts, and denied operations. Open `/__pyric/ui/studio` on the development server and reproduce the failure. A denied request includes the path and verdict needed to correct the rule or the application code.
|
|
113
118
|
|
|
114
119
|
<img width="1512" height="947" alt="image" src="https://github.com/user-attachments/assets/cb4a219c-c5f0-4fb7-8904-996416c0a79c" />
|
|
115
120
|
|
|
@@ -7,8 +7,8 @@ import { type ToolMetadata } from './tool-metadata.js';
|
|
|
7
7
|
*/
|
|
8
8
|
export declare const DEFAULT_MCP_FORWARDED_TOOL_NAMES: readonly ["firestore_simulator_create", "firestore_simulator_execute", "firestore_simulator_read", "firestore_simulator_batch", "firestore_create_with_auto_id", "firestore_simulator_undo", "firestore_simulator_redo", "firestore_simulator_events", "firestore_simulator_transaction", "firestore_get_document", "firestore_list_documents", "firestore_create_document", "firestore_add_document", "firestore_update_document", "firestore_delete_document", "firestore_batch_write", "firestore_query_where", "sandbox_inspect", "rtdb_simulate_access", "rtdb_crawl_structure"];
|
|
9
9
|
/** Local rules tools that run in the MCP process without a browser peer. */
|
|
10
|
-
export declare const DEFAULT_MCP_IN_PROCESS_TOOL_NAMES: readonly ["firestore_simulate_rules", "firestore_rules_stdlib_list", "firestore_rules_stdlib_get", "firestore_lint_rules", "firestore_resolve_modules", "pyric_can_i_use"];
|
|
11
|
-
export declare const DEFAULT_MCP_TOOL_NAMES: readonly ["firestore_simulator_create", "firestore_simulator_execute", "firestore_simulator_read", "firestore_simulator_batch", "firestore_create_with_auto_id", "firestore_simulator_undo", "firestore_simulator_redo", "firestore_simulator_events", "firestore_simulator_transaction", "firestore_get_document", "firestore_list_documents", "firestore_create_document", "firestore_add_document", "firestore_update_document", "firestore_delete_document", "firestore_batch_write", "firestore_query_where", "sandbox_inspect", "rtdb_simulate_access", "rtdb_crawl_structure", "firestore_simulate_rules", "firestore_rules_stdlib_list", "firestore_rules_stdlib_get", "firestore_lint_rules", "firestore_resolve_modules", "pyric_can_i_use"];
|
|
10
|
+
export declare const DEFAULT_MCP_IN_PROCESS_TOOL_NAMES: readonly ["firestore_simulate_rules", "firestore_rules_stdlib_list", "firestore_rules_stdlib_get", "firestore_lint_rules", "firestore_resolve_modules", "rules_stdlib_list", "rules_stdlib_get", "rules_resolve_modules", "pyric_can_i_use"];
|
|
11
|
+
export declare const DEFAULT_MCP_TOOL_NAMES: readonly ["firestore_simulator_create", "firestore_simulator_execute", "firestore_simulator_read", "firestore_simulator_batch", "firestore_create_with_auto_id", "firestore_simulator_undo", "firestore_simulator_redo", "firestore_simulator_events", "firestore_simulator_transaction", "firestore_get_document", "firestore_list_documents", "firestore_create_document", "firestore_add_document", "firestore_update_document", "firestore_delete_document", "firestore_batch_write", "firestore_query_where", "sandbox_inspect", "rtdb_simulate_access", "rtdb_crawl_structure", "firestore_simulate_rules", "firestore_rules_stdlib_list", "firestore_rules_stdlib_get", "firestore_lint_rules", "firestore_resolve_modules", "rules_stdlib_list", "rules_stdlib_get", "rules_resolve_modules", "pyric_can_i_use"];
|
|
12
12
|
export interface DefaultMcpToolSurface {
|
|
13
13
|
forwarded: ToolMetadata[];
|
|
14
14
|
inProcess: ToolHandler[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-contract.d.ts","sourceRoot":"","sources":["../../../src/bridge/server/mcp-contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAC;AAE5B;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,ujBAqBnC,CAAC;AAEX,4EAA4E;AAC5E,eAAO,MAAM,iCAAiC,
|
|
1
|
+
{"version":3,"file":"mcp-contract.d.ts","sourceRoot":"","sources":["../../../src/bridge/server/mcp-contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAC;AAE5B;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,ujBAqBnC,CAAC;AAEX,4EAA4E;AAC5E,eAAO,MAAM,iCAAiC,8OAUpC,CAAC;AAEX,eAAO,MAAM,sBAAsB,0xBAGzB,CAAC;AAEX,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,SAAS,EAAE,WAAW,EAAE,CAAC;CAC1B;AAqBD;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,qBAAqB,CAchE"}
|
|
@@ -33,6 +33,9 @@ export const DEFAULT_MCP_IN_PROCESS_TOOL_NAMES = [
|
|
|
33
33
|
'firestore_rules_stdlib_get',
|
|
34
34
|
'firestore_lint_rules',
|
|
35
35
|
'firestore_resolve_modules',
|
|
36
|
+
'rules_stdlib_list',
|
|
37
|
+
'rules_stdlib_get',
|
|
38
|
+
'rules_resolve_modules',
|
|
36
39
|
'pyric_can_i_use',
|
|
37
40
|
];
|
|
38
41
|
export const DEFAULT_MCP_TOOL_NAMES = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-contract.js","sourceRoot":"","sources":["../../../src/bridge/server/mcp-contract.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EACxB,sBAAsB,GAEvB,MAAM,oBAAoB,CAAC;AAE5B;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG;IAC9C,4BAA4B;IAC5B,6BAA6B;IAC7B,0BAA0B;IAC1B,2BAA2B;IAC3B,+BAA+B;IAC/B,0BAA0B;IAC1B,0BAA0B;IAC1B,4BAA4B;IAC5B,iCAAiC;IACjC,wBAAwB;IACxB,0BAA0B;IAC1B,2BAA2B;IAC3B,wBAAwB;IACxB,2BAA2B;IAC3B,2BAA2B;IAC3B,uBAAuB;IACvB,uBAAuB;IACvB,iBAAiB;IACjB,sBAAsB;IACtB,sBAAsB;CACd,CAAC;AAEX,4EAA4E;AAC5E,MAAM,CAAC,MAAM,iCAAiC,GAAG;IAC/C,0BAA0B;IAC1B,6BAA6B;IAC7B,4BAA4B;IAC5B,sBAAsB;IACtB,2BAA2B;IAC3B,iBAAiB;CACT,CAAC;AAEX,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,GAAG,gCAAgC;IACnC,GAAG,iCAAiC;CAC5B,CAAC;AAOX,SAAS,gBAAgB,CACvB,KAAa,EACb,MAAyB,EACzB,QAA2B;IAE3B,MAAM,YAAY,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,MAAM,cAAc,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5C,IACE,YAAY,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM;QAC7C,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,cAAc,CAAC,KAAK,CAAC,CAAC,EAClE,CAAC;QACD,MAAM,IAAI,KAAK,CACb,GAAG,KAAK,0CAA0C;YAChD,aAAa,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YACpC,aAAa,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACnC,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB;IACtC,MAAM,SAAS,GAAG,sBAAsB,EAAE,CAAC;IAC3C,MAAM,SAAS,GAAG,wBAAwB,EAAE,CAAC;IAC7C,gBAAgB,CACd,yBAAyB,EACzB,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAClC,gCAAgC,CACjC,CAAC;IACF,gBAAgB,CACd,kBAAkB,EAClB,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAClC,iCAAiC,CAClC,CAAC;IACF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAClC,CAAC"}
|
|
1
|
+
{"version":3,"file":"mcp-contract.js","sourceRoot":"","sources":["../../../src/bridge/server/mcp-contract.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EACxB,sBAAsB,GAEvB,MAAM,oBAAoB,CAAC;AAE5B;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG;IAC9C,4BAA4B;IAC5B,6BAA6B;IAC7B,0BAA0B;IAC1B,2BAA2B;IAC3B,+BAA+B;IAC/B,0BAA0B;IAC1B,0BAA0B;IAC1B,4BAA4B;IAC5B,iCAAiC;IACjC,wBAAwB;IACxB,0BAA0B;IAC1B,2BAA2B;IAC3B,wBAAwB;IACxB,2BAA2B;IAC3B,2BAA2B;IAC3B,uBAAuB;IACvB,uBAAuB;IACvB,iBAAiB;IACjB,sBAAsB;IACtB,sBAAsB;CACd,CAAC;AAEX,4EAA4E;AAC5E,MAAM,CAAC,MAAM,iCAAiC,GAAG;IAC/C,0BAA0B;IAC1B,6BAA6B;IAC7B,4BAA4B;IAC5B,sBAAsB;IACtB,2BAA2B;IAC3B,mBAAmB;IACnB,kBAAkB;IAClB,uBAAuB;IACvB,iBAAiB;CACT,CAAC;AAEX,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,GAAG,gCAAgC;IACnC,GAAG,iCAAiC;CAC5B,CAAC;AAOX,SAAS,gBAAgB,CACvB,KAAa,EACb,MAAyB,EACzB,QAA2B;IAE3B,MAAM,YAAY,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,MAAM,cAAc,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5C,IACE,YAAY,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM;QAC7C,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,cAAc,CAAC,KAAK,CAAC,CAAC,EAClE,CAAC;QACD,MAAM,IAAI,KAAK,CACb,GAAG,KAAK,0CAA0C;YAChD,aAAa,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YACpC,aAAa,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACnC,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB;IACtC,MAAM,SAAS,GAAG,sBAAsB,EAAE,CAAC;IAC3C,MAAM,SAAS,GAAG,wBAAwB,EAAE,CAAC;IAC7C,gBAAgB,CACd,yBAAyB,EACzB,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAClC,gCAAgC,CACjC,CAAC;IACF,gBAAgB,CACd,kBAAkB,EAClB,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAClC,iCAAiC,CAClC,CAAC;IACF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAClC,CAAC"}
|
package/dist/cli/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* `pyric` CLI
|
|
3
|
+
* `pyric` CLI front door to the bridge and project tooling.
|
|
4
4
|
*
|
|
5
5
|
* Subcommands:
|
|
6
6
|
* pyric bridge [--port N] [--project ID]
|
|
7
|
-
* pyric
|
|
7
|
+
* pyric sandbox [flags] [--] [command...]
|
|
8
8
|
* pyric init [dir] [--template web|node] [--name N] [--force] [--json]
|
|
9
9
|
* pyric vendor [dir] [--json]
|
|
10
10
|
* pyric snapshot [--out FILE] [--port N] [--force] [--json] [--include-passwords]
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
* pyric firestore rules resolve <path> [--out <path>]
|
|
16
16
|
* pyric firestore indexes generate <path...> [--out <path>]
|
|
17
17
|
* pyric storage rules lint <path>
|
|
18
|
+
* pyric storage rules resolve <path> [--out <path>]
|
|
18
19
|
* pyric storage rules simulate [--stdin]
|
|
19
20
|
* pyric database rules lint <path>
|
|
20
21
|
* pyric database rules validate <path>
|
package/dist/cli/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAIH,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAqR7D;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAyClE;AAQD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C;;;;;;;GAOG;AACH,wBAAgB,WAAW,IAAI,OAAO,CASrC;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,IAAI,IAAI,CAUhC"}
|
package/dist/cli/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* `pyric` CLI
|
|
3
|
+
* `pyric` CLI front door to the bridge and project tooling.
|
|
4
4
|
*
|
|
5
5
|
* Subcommands:
|
|
6
6
|
* pyric bridge [--port N] [--project ID]
|
|
7
|
-
* pyric
|
|
7
|
+
* pyric sandbox [flags] [--] [command...]
|
|
8
8
|
* pyric init [dir] [--template web|node] [--name N] [--force] [--json]
|
|
9
9
|
* pyric vendor [dir] [--json]
|
|
10
10
|
* pyric snapshot [--out FILE] [--port N] [--force] [--json] [--include-passwords]
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
* pyric firestore rules resolve <path> [--out <path>]
|
|
16
16
|
* pyric firestore indexes generate <path...> [--out <path>]
|
|
17
17
|
* pyric storage rules lint <path>
|
|
18
|
+
* pyric storage rules resolve <path> [--out <path>]
|
|
18
19
|
* pyric storage rules simulate [--stdin]
|
|
19
20
|
* pyric database rules lint <path>
|
|
20
21
|
* pyric database rules validate <path>
|
|
@@ -51,12 +52,12 @@ import { dispatchServiceCommand } from './service-commands.js';
|
|
|
51
52
|
const VERSION = pyricVersion();
|
|
52
53
|
function printUsage() {
|
|
53
54
|
process.stdout.write(`pyric ${VERSION}
|
|
54
|
-
Firebase for agents
|
|
55
|
+
Firebase for agents. Bridge an in-browser Pyric sandbox to external MCP
|
|
55
56
|
clients (Claude Code, Cursor, ...).
|
|
56
57
|
|
|
57
58
|
USAGE
|
|
58
59
|
pyric bridge [flags]
|
|
59
|
-
pyric
|
|
60
|
+
pyric sandbox [flags] [--] [command...]
|
|
60
61
|
pyric init [dir] [--template=web|node]
|
|
61
62
|
pyric snapshot [--out=FILE]
|
|
62
63
|
pyric verify [fixture|dir] [--engine sandbox|rules-test-api|both]
|
|
@@ -68,6 +69,7 @@ USAGE
|
|
|
68
69
|
pyric firestore rules resolve <path> [--out <path>]
|
|
69
70
|
pyric firestore indexes generate <path...> [--out <path>]
|
|
70
71
|
pyric storage rules lint <path>
|
|
72
|
+
pyric storage rules resolve <path> [--out <path>]
|
|
71
73
|
pyric storage rules simulate [--stdin]
|
|
72
74
|
pyric database rules lint <path>
|
|
73
75
|
pyric database rules validate <path>
|
|
@@ -78,16 +80,14 @@ USAGE
|
|
|
78
80
|
|
|
79
81
|
COMMANDS
|
|
80
82
|
bridge Start the HTTP+WebSocket bridge external MCP clients point at.
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
sandbox (PYRIC_SANDBOX + \`--import @pyric/cli/register\`). A
|
|
87
|
-
firebase.json Functions source is discovered automatically;
|
|
83
|
+
sandbox [command...] Run an application command or script inside the local Firebase sandbox
|
|
84
|
+
with unmodified firebase/* and firebase-admin/* imports routed to the
|
|
85
|
+
in-memory mirror. When [command...] is omitted, runs the command
|
|
86
|
+
configured in pyric.json; if none is configured, runs the sandbox host only.
|
|
87
|
+
A firebase.json Functions source is discovered automatically;
|
|
88
88
|
supported RTDB onValueCreated exports run in isolated Node.
|
|
89
89
|
init [dir] Scaffold a pyric project. --template=web (default; Vite app
|
|
90
|
-
on \`@pyric/cli/vite\`), static (\`pyric
|
|
90
|
+
on \`@pyric/cli/vite\`), static (\`pyric sandbox\`), or node.
|
|
91
91
|
--name=NAME --force (overwrite scaffold files) --json (machine
|
|
92
92
|
output on stdout). Never prompts; rerunning is safe.
|
|
93
93
|
Greenfield shortcut: \`npm create pyric [dir]\`.
|
|
@@ -97,15 +97,15 @@ COMMANDS
|
|
|
97
97
|
bun install. Standalone binary only.
|
|
98
98
|
mcp Stdio MCP server for editors (Cursor / Claude /
|
|
99
99
|
Antigravity). Hosts a headless in-process sandbox,
|
|
100
|
-
or attaches to a running \`pyric
|
|
100
|
+
or attaches to a running \`pyric sandbox --bridge\`
|
|
101
101
|
(found via .pyric/serve.json) for shared-live Studio.
|
|
102
|
-
snapshot [--out=FILE] Promote lived sandbox state (live
|
|
102
|
+
snapshot [--out=FILE] Promote lived sandbox state (live sandbox --persist, else
|
|
103
103
|
.pyric/state/state.json) to a committable fixture that
|
|
104
|
-
\`pyric
|
|
104
|
+
\`pyric sandbox --seed FILE\` re-serves. Passwords are redacted
|
|
105
105
|
by default (--include-passwords keeps them). --port, --force, --json.
|
|
106
106
|
verify [fixture|dir] Replay a captured sandbox session against candidate rules
|
|
107
107
|
for the Firestore/RTDB services present in the fixture.
|
|
108
|
-
No arg replays the latest \`pyric
|
|
108
|
+
No arg replays the latest \`pyric sandbox\` capture
|
|
109
109
|
(.pyric/last-session.json). --service filters services.
|
|
110
110
|
--engine sandbox (default), rules-test-api, or both.
|
|
111
111
|
Hosted Rules Test API verification is Firestore-only
|
|
@@ -124,64 +124,73 @@ COMMANDS
|
|
|
124
124
|
firestore rules resolve Resolve Firestore 2+modules imports to one ruleset.
|
|
125
125
|
firestore indexes generate Generate firestore.indexes.json from application source.
|
|
126
126
|
storage rules lint Check Storage rules syntax locally.
|
|
127
|
+
storage rules resolve Resolve Storage 2+modules imports to one ruleset.
|
|
127
128
|
storage rules simulate Run the local Storage rules evaluator.
|
|
128
129
|
database rules lint Run the Realtime Database rules expression linter.
|
|
129
130
|
database rules validate Validate Realtime Database rules expressions.
|
|
130
131
|
database rules simulate Run the local Realtime Database rules simulator.
|
|
131
132
|
database rules generate Compile a constraints module to database.rules.json.
|
|
132
|
-
CORE FLAGS (
|
|
133
|
-
--port Port to serve on. Default 3473
|
|
134
|
-
|
|
133
|
+
CORE FLAGS (sandbox)
|
|
134
|
+
--port Port to serve on. Default 3473. Pyric scans forward when
|
|
135
|
+
the selected port is taken.
|
|
135
136
|
--host Host to bind. Default localhost.
|
|
136
137
|
--no-cache Rebuild the served pyric SDK bundles (skip ~/.pyric/serve-cache).
|
|
137
138
|
--only hosting Accepted for firebase-serve parity (hosting is all v1 serves).
|
|
138
|
-
--bridge Also mount the MCP bridge on the serve origin
|
|
139
|
+
--bridge Also mount the MCP bridge on the serve origin. Agents point
|
|
139
140
|
at http://<host>:<port>/__pyric/mcp and drive the sandbox
|
|
140
141
|
living in the served page. --project labels health/audit.
|
|
141
|
-
--ui
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
--seed FILE JSON map of "collection/doc" → fields, loaded admin-style.
|
|
142
|
+
--ui Open Studio instead of the served page. Studio and docs
|
|
143
|
+
are served by default at <url>/__pyric/ui/.
|
|
144
|
+
--no-ui Do not serve Studio, docs, workspace, or project routes.
|
|
145
|
+
--seed FILE JSON map of "collection/doc" to fields, loaded with admin access.
|
|
146
146
|
Also accepts a pyric state file (from \`pyric snapshot\`,
|
|
147
|
-
detected by its version key)
|
|
148
|
-
|
|
147
|
+
detected by its version key). Seeds documents and auth users
|
|
148
|
+
before application code runs.
|
|
149
149
|
--no-watch Disable firestore.rules hot-reload (on by default).
|
|
150
|
-
--no-open Don't auto-open the browser.
|
|
150
|
+
--no-open Don't auto-open the browser. sandbox opens the served page
|
|
151
151
|
by default (the sandbox is browser-resident); auto-open
|
|
152
152
|
is already suppressed under --json, no TTY, and CI.
|
|
153
|
-
--no-capture Don't write the session capture.
|
|
153
|
+
--no-capture Don't write the session capture. sandbox writes
|
|
154
154
|
.pyric/last-session.json by default so \`pyric verify\`
|
|
155
155
|
can replay your session; --no-capture disables it.
|
|
156
|
+
--permissive Allow unauthenticated Realtime Database reads and writes when no
|
|
157
|
+
rules file is present. For local prototyping only.
|
|
156
158
|
--allowed-host H Allow an extra Host header past the DNS-rebinding guard
|
|
157
159
|
(comma-separated; localhost/127.0.0.1 always allowed).
|
|
158
160
|
--persist Persist sandbox state (docs + auth users) to
|
|
159
|
-
.pyric/state/state.json
|
|
161
|
+
.pyric/state/state.json. It survives reloads and sandbox
|
|
160
162
|
restarts. Once a state file exists it wins; --seed
|
|
161
163
|
applies only on the first (state-less) run. Ephemeral
|
|
162
164
|
is the default.
|
|
163
165
|
--fresh Requires --persist: discard the existing state file and
|
|
164
166
|
re-seed from scratch (escape hatch when you've edited
|
|
165
|
-
seed.json). Without --persist, --fresh errors
|
|
167
|
+
seed.json). Without --persist, --fresh errors because there is
|
|
166
168
|
no state file to discard. Half-reset warning: a browser
|
|
167
169
|
tab that already has sandbox data in IndexedDB keeps it
|
|
168
170
|
and writes it back to the new file; also clear the
|
|
169
|
-
browser store
|
|
171
|
+
browser store in Studio under Settings, Reset, or use an
|
|
170
172
|
incognito window) for a full reset.
|
|
171
|
-
|
|
173
|
+
[command...] Run a command once the host is up, with PYRIC_SANDBOX set and
|
|
172
174
|
NODE_OPTIONS extended with --import @pyric/cli/register
|
|
173
|
-
so firebase-admin/firebase resolve to the sandbox.
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
is given explicitly.
|
|
175
|
+
so firebase-admin/firebase resolve to the sandbox. Put
|
|
176
|
+
Pyric flags before the command. A bare -- separates the
|
|
177
|
+
command and its flags. When omitted, pyric.json#command
|
|
178
|
+
runs. With no configured command, the host runs alone.
|
|
179
|
+
--no-run Don't run an explicit or configured command. A declared
|
|
180
|
+
Functions source still runs.
|
|
180
181
|
--json One machine-readable line on stdout ({url, port, mcpUrl,
|
|
181
182
|
rulesHash, persist, restoredDocs, restoredUsers}); the
|
|
182
|
-
banner moves to stderr.
|
|
183
|
+
banner moves to stderr. A pyric.json command is skipped
|
|
184
|
+
unless a command is supplied explicitly. Readiness probe:
|
|
183
185
|
GET <url>/__pyric/init.json → 200 (live rules hash).
|
|
184
186
|
|
|
187
|
+
PROJECT CONFIG (pyric.json)
|
|
188
|
+
command Default child command. An explicit CLI command overrides it.
|
|
189
|
+
port Default sandbox port. --port overrides it.
|
|
190
|
+
project Project label. --project, then PYRIC_PROJECT, override it.
|
|
191
|
+
rules Firestore rules path, or an object with firestore,
|
|
192
|
+
database, and storage paths.
|
|
193
|
+
|
|
185
194
|
CORE FLAGS (bridge)
|
|
186
195
|
--port Port to bind on 127.0.0.1. Default 5174. Env: PYRIC_PORT.
|
|
187
196
|
--project Project label surfaced in /health + audit output.
|
|
@@ -312,7 +321,7 @@ export async function dispatch(parsed) {
|
|
|
312
321
|
return parsed.subcommand === null ? 0 : 1;
|
|
313
322
|
case 'bridge':
|
|
314
323
|
return await runBridge(parsed);
|
|
315
|
-
case '
|
|
324
|
+
case 'sandbox':
|
|
316
325
|
const { runServe } = await import('./serve.js');
|
|
317
326
|
return runServe(parsed);
|
|
318
327
|
case 'snapshot':
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-proxy.d.ts","sourceRoot":"","sources":["../../src/cli/mcp-proxy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcp-proxy.d.ts","sourceRoot":"","sources":["../../src/cli/mcp-proxy.ts"],"names":[],"mappings":"AAsCA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAc,MAAM,uBAAuB,CAAC;AAKlE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAsBtD,qEAAqE;AACrE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,OAAO,aAAa,CAAC;IAChC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC7C;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,UAAU,EACnB,GAAG,GAAE,MAAsB,EAC3B,IAAI,GAAE,YAAiB,GACtB,OAAO,CAAC,MAAM,CAAC,CAsHjB"}
|
package/dist/cli/mcp-proxy.js
CHANGED
|
@@ -30,11 +30,11 @@ export async function runMcpProxy(_parsed, cwd = process.cwd(), deps = {}) {
|
|
|
30
30
|
if (!found) {
|
|
31
31
|
// Hybrid mode (design rationale): no dev server to attach to, so host the
|
|
32
32
|
// sandbox IN this process. Zero setup, no browser tab required. A running
|
|
33
|
-
// `pyric
|
|
34
|
-
log('no running `pyric
|
|
33
|
+
// `pyric sandbox --bridge` upgrades to the shared session on reconnect.
|
|
34
|
+
log('no running `pyric sandbox --bridge` found (looked for .pyric/serve.json and ports ' +
|
|
35
35
|
`${SCAN_PORTS.join(', ')}); starting a headless in-process sandbox (zero-setup).\n` +
|
|
36
36
|
' Data persists to .pyric/state/headless.json. For a shared-live Studio\n' +
|
|
37
|
-
' session, start `pyric
|
|
37
|
+
' session, start `pyric sandbox --bridge` before connecting the agent (a sandbox host\n' +
|
|
38
38
|
' started mid-session does not yet adopt this headless data).');
|
|
39
39
|
const headless = deps.headless ??
|
|
40
40
|
((c) => import('../bridge/server/headless.js').then((m) => m.runHeadlessMcp(c)));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-proxy.js","sourceRoot":"","sources":["../../src/cli/mcp-proxy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcp-proxy.js","sourceRoot":"","sources":["../../src/cli/mcp-proxy.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/parse-args.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ export interface ParsedArgs {
|
|
|
11
11
|
subcommand: string | null;
|
|
12
12
|
flags: Map<string, FlagValue>;
|
|
13
13
|
positional: string[];
|
|
14
|
-
/** Everything after a bare `--`, verbatim (e.g. `pyric
|
|
14
|
+
/** Everything after a bare `--`, verbatim (e.g. `pyric sandbox -- npm start`).
|
|
15
15
|
* Optional so hand-built ParsedArgs literals stay valid. */
|
|
16
16
|
passthrough?: string[];
|
|
17
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-args.d.ts","sourceRoot":"","sources":["../../src/cli/parse-args.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC9B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB;iEAC6D;IAC7D,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"parse-args.d.ts","sourceRoot":"","sources":["../../src/cli/parse-args.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC9B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB;iEAC6D;IAC7D,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;AA4CnE,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CA+CpD"}
|
package/dist/cli/parse-args.js
CHANGED
|
@@ -7,10 +7,38 @@
|
|
|
7
7
|
* beyond a "command + positionals + flags" model belongs in a
|
|
8
8
|
* dedicated subcommand handler, not here.
|
|
9
9
|
*/
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
const BOOLEAN_FLAGS = new Set([
|
|
11
|
+
'json',
|
|
12
|
+
'bridge',
|
|
13
|
+
'ui',
|
|
14
|
+
'no-ui',
|
|
15
|
+
'no-open',
|
|
16
|
+
'no-run',
|
|
17
|
+
'no-cache',
|
|
18
|
+
'no-watch',
|
|
19
|
+
'no-capture',
|
|
20
|
+
'persist',
|
|
21
|
+
'fresh',
|
|
22
|
+
'force',
|
|
23
|
+
'permissive',
|
|
24
|
+
'help',
|
|
25
|
+
'version',
|
|
26
|
+
]);
|
|
27
|
+
function isBooleanFlag(key) {
|
|
28
|
+
return BOOLEAN_FLAGS.has(key) || key.startsWith('no-');
|
|
29
|
+
}
|
|
30
|
+
const SHORT_VALUE_ALIASES = new Map([
|
|
31
|
+
['p', 'port'],
|
|
32
|
+
]);
|
|
33
|
+
function consumeFlag(flags, key, argv, currentIndex, canTakeValue) {
|
|
34
|
+
const next = argv[currentIndex + 1];
|
|
35
|
+
if (canTakeValue && next !== undefined && !next.startsWith('-')) {
|
|
36
|
+
setFlag(flags, key, next);
|
|
37
|
+
return currentIndex + 1;
|
|
38
|
+
}
|
|
39
|
+
setFlag(flags, key, true);
|
|
40
|
+
return currentIndex;
|
|
41
|
+
}
|
|
14
42
|
export function parseArgs(argv) {
|
|
15
43
|
const flags = new Map();
|
|
16
44
|
const positional = [];
|
|
@@ -25,10 +53,15 @@ export function parseArgs(argv) {
|
|
|
25
53
|
}
|
|
26
54
|
if (arg === '--') {
|
|
27
55
|
// Everything after a bare `--` belongs to the child command, verbatim
|
|
28
|
-
// — never parsed as flags (`pyric
|
|
56
|
+
// — never parsed as flags (`pyric sandbox -- npm start --port 3000`).
|
|
29
57
|
passthrough.push(...argv.slice(i + 1).filter((a) => a !== undefined));
|
|
30
58
|
break;
|
|
31
59
|
}
|
|
60
|
+
if (isExecutionSubcommand(subcommand) && positional.length > 0) {
|
|
61
|
+
positional.push(arg);
|
|
62
|
+
i += 1;
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
32
65
|
if (arg.startsWith('--')) {
|
|
33
66
|
const eq = arg.indexOf('=');
|
|
34
67
|
if (eq !== -1) {
|
|
@@ -36,18 +69,18 @@ export function parseArgs(argv) {
|
|
|
36
69
|
}
|
|
37
70
|
else {
|
|
38
71
|
const key = arg.slice(2);
|
|
39
|
-
|
|
40
|
-
if (!BOOLEAN_FLAGS.has(key) && next && !next.startsWith('-')) {
|
|
41
|
-
setFlag(flags, key, next);
|
|
42
|
-
i += 1;
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
setFlag(flags, key, true);
|
|
46
|
-
}
|
|
72
|
+
i = consumeFlag(flags, key, argv, i, !isBooleanFlag(key));
|
|
47
73
|
}
|
|
48
74
|
}
|
|
49
|
-
else if (arg.startsWith('-')) {
|
|
50
|
-
|
|
75
|
+
else if (arg.startsWith('-') && arg !== '-') {
|
|
76
|
+
const raw = arg.slice(1);
|
|
77
|
+
const longKey = SHORT_VALUE_ALIASES.get(raw);
|
|
78
|
+
if (longKey !== undefined) {
|
|
79
|
+
i = consumeFlag(flags, longKey, argv, i, true);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
setFlag(flags, raw, true);
|
|
83
|
+
}
|
|
51
84
|
}
|
|
52
85
|
else if (subcommand === null) {
|
|
53
86
|
subcommand = arg;
|
|
@@ -59,6 +92,9 @@ export function parseArgs(argv) {
|
|
|
59
92
|
}
|
|
60
93
|
return { subcommand, flags, positional, passthrough };
|
|
61
94
|
}
|
|
95
|
+
function isExecutionSubcommand(subcommand) {
|
|
96
|
+
return subcommand === 'sandbox';
|
|
97
|
+
}
|
|
62
98
|
function setFlag(flags, key, value) {
|
|
63
99
|
const current = flags.get(key);
|
|
64
100
|
if (current === undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-args.js","sourceRoot":"","sources":["../../src/cli/parse-args.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAaH,
|
|
1
|
+
{"version":3,"file":"parse-args.js","sourceRoot":"","sources":["../../src/cli/parse-args.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reader for the optional project-level `pyric.json` configuration file.
|
|
3
|
+
*
|
|
4
|
+
* Configures defaults for `pyric sandbox` (such as a default `command`,
|
|
5
|
+
* custom `port`, or explicit `rules` paths) without requiring CLI flags
|
|
6
|
+
* or magic process sniffing.
|
|
7
|
+
*/
|
|
8
|
+
export interface PyricRulesConfig {
|
|
9
|
+
firestore?: string;
|
|
10
|
+
database?: string;
|
|
11
|
+
storage?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface PyricConfig {
|
|
14
|
+
/** Default command to execute under the sandbox if none is passed on CLI. */
|
|
15
|
+
command?: string;
|
|
16
|
+
/** Local port to bind the Pyric sandbox host. */
|
|
17
|
+
port?: number;
|
|
18
|
+
/** Path to Firestore, RTDB, or Storage rules files. */
|
|
19
|
+
rules?: string | PyricRulesConfig;
|
|
20
|
+
/** Project ID label for emulation. */
|
|
21
|
+
project?: string;
|
|
22
|
+
}
|
|
23
|
+
export declare function readPyricConfig(cwd?: string): Promise<PyricConfig>;
|
|
24
|
+
//# sourceMappingURL=pyric-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pyric-config.d.ts","sourceRoot":"","sources":["../../src/cli/pyric-config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAClC,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,eAAe,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,WAAW,CAAC,CAgBvF"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reader for the optional project-level `pyric.json` configuration file.
|
|
3
|
+
*
|
|
4
|
+
* Configures defaults for `pyric sandbox` (such as a default `command`,
|
|
5
|
+
* custom `port`, or explicit `rules` paths) without requiring CLI flags
|
|
6
|
+
* or magic process sniffing.
|
|
7
|
+
*/
|
|
8
|
+
import { readFile } from 'node:fs/promises';
|
|
9
|
+
import { join } from 'node:path';
|
|
10
|
+
export async function readPyricConfig(cwd = process.cwd()) {
|
|
11
|
+
const path = join(cwd, 'pyric.json');
|
|
12
|
+
let raw;
|
|
13
|
+
try {
|
|
14
|
+
raw = await readFile(path, 'utf-8');
|
|
15
|
+
}
|
|
16
|
+
catch (e) {
|
|
17
|
+
if (e.code === 'ENOENT')
|
|
18
|
+
return {};
|
|
19
|
+
throw e;
|
|
20
|
+
}
|
|
21
|
+
try {
|
|
22
|
+
return JSON.parse(raw);
|
|
23
|
+
}
|
|
24
|
+
catch (e) {
|
|
25
|
+
throw new Error(`pyric: failed to parse pyric.json: ${e instanceof Error ? e.message : String(e)}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=pyric-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pyric-config.js","sourceRoot":"","sources":["../../src/cli/pyric-config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAmBjC,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IACrC,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAK,CAA2B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,EAAE,CAAC;QAC9D,MAAM,CAAC,CAAC;IACV,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAgB,CAAC;IACxC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,sCAAsC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACnF,CAAC;IACJ,CAAC;AACH,CAAC"}
|
package/dist/cli/rules.d.ts
CHANGED
|
@@ -51,5 +51,6 @@ export interface ResolveRulesDeps {
|
|
|
51
51
|
export declare function runRulesLint(parsed: ParsedArgs, deps?: RulesDeps): Promise<number>;
|
|
52
52
|
export declare function runRulesValidate(parsed: ParsedArgs, deps?: RulesDeps): Promise<number>;
|
|
53
53
|
export declare function runRulesResolve(parsed: ParsedArgs, deps?: ResolveRulesDeps): Promise<number>;
|
|
54
|
+
export declare function runStorageRulesResolve(parsed: ParsedArgs, deps?: ResolveRulesDeps): Promise<number>;
|
|
54
55
|
export declare function runRulesSimulate(parsed: ParsedArgs, deps?: RulesDeps): Promise<number>;
|
|
55
56
|
//# sourceMappingURL=rules.d.ts.map
|