create-pyric 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/dist/template-nextjs.js +7 -7
- package/dist/template-nextjs.js.map +1 -1
- package/dist/templates.d.ts +1 -1
- package/dist/templates.d.ts.map +1 -1
- package/dist/templates.js +35 -24
- package/dist/templates.js.map +1 -1
- package/package.json +2 -2
- package/src/template-nextjs.ts +7 -7
- package/src/templates.ts +35 -24
- package/templates/chat/vite.config.ts +1 -1
package/dist/template-nextjs.js
CHANGED
|
@@ -19,7 +19,7 @@ const nextConfig = {
|
|
|
19
19
|
],
|
|
20
20
|
};
|
|
21
21
|
|
|
22
|
-
// Under development mode (\`pyric
|
|
22
|
+
// Under development mode (\`pyric sandbox -- next dev\`), withPyric maps client-side
|
|
23
23
|
// firebase/* SDK imports to Pyric sandbox adapters via Webpack/Turbopack aliases,
|
|
24
24
|
// externalizes server-side firebase and firebase-admin imports for Node loader
|
|
25
25
|
// hooks (@pyric/cli/register), and proxies /__pyric/* bridge traffic.
|
|
@@ -56,7 +56,7 @@ const NEXTJS_TSCONFIG_JSON = `{
|
|
|
56
56
|
}
|
|
57
57
|
`;
|
|
58
58
|
const NEXTJS_ENV_EXAMPLE = `# Your real Firebase application configuration from the Firebase Console.
|
|
59
|
-
# UNUSED in local development under \`pyric
|
|
59
|
+
# UNUSED in local development under \`pyric sandbox\` (the Pyric sandbox stands in);
|
|
60
60
|
# USED by \`next build\` for production cloud builds. Next.js exposes environment
|
|
61
61
|
# variables prefixed with \`NEXT_PUBLIC_\` to client-side code in the browser.
|
|
62
62
|
NEXT_PUBLIC_FIREBASE_API_KEY=
|
|
@@ -458,18 +458,18 @@ function buildReadme(projectName) {
|
|
|
458
458
|
return `# ${projectName}
|
|
459
459
|
|
|
460
460
|
A Firebase web application built with Next.js and wrapped with \`@pyric/cli/next\` (\`withPyric\`).
|
|
461
|
-
In development, the application runs entirely on Pyric's local sandbox
|
|
461
|
+
In development, the application runs entirely on Pyric's local sandbox and requires
|
|
462
462
|
zero Firebase projects, service account keys, or cloud emulators.
|
|
463
463
|
|
|
464
|
-
- **Develop:** \`npm run dev\` or \`bun run dev\`
|
|
465
|
-
- **Build for production:** \`npm run build\` or \`bun run build\`
|
|
466
|
-
- **Start:** \`npm start\` or \`bun run start\`
|
|
464
|
+
- **Develop:** \`npm run dev\` or \`bun run dev\` executes \`pyric sandbox -- next dev\`. The \`withPyric\` wrapper substitutes client SDK imports with local sandbox mirrors via Webpack and Turbopack aliases, intercepts server-side API requests via \`@pyric/cli/register\`, and proxies WebSocket bridge traffic automatically.
|
|
465
|
+
- **Build for production:** \`npm run build\` or \`bun run build\` executes \`next build\`. Production mode makes \`withPyric\` an identity passthrough and compiles the standard Firebase and Firebase Admin SDKs without sandbox code.
|
|
466
|
+
- **Start:** \`npm start\` or \`bun run start\` serves your built Next.js production server.
|
|
467
467
|
- **Deploy:** \`npx firebase-tools deploy\` (via Firebase Web Frameworks) after production build, or deploy standard built artifacts directly to Vercel and cloud compute platforms.
|
|
468
468
|
`;
|
|
469
469
|
}
|
|
470
470
|
export const NEXTJS_TEMPLATE = {
|
|
471
471
|
scripts: {
|
|
472
|
-
dev: 'pyric
|
|
472
|
+
dev: 'pyric sandbox -- next dev',
|
|
473
473
|
'dev:direct': 'next dev',
|
|
474
474
|
build: 'next build',
|
|
475
475
|
start: 'next start',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-nextjs.js","sourceRoot":"","sources":["../src/template-nextjs.ts"],"names":[],"mappings":"AAKA,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BzB,CAAC;AAEF,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2B5B,CAAC;AAEF,MAAM,kBAAkB,GAAG;;;;;;;;;;CAU1B,CAAC;AAEF,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCxB,CAAC;AAEF,MAAM,oBAAoB,GAAG;;;;;;CAM5B,CAAC;AAEF,MAAM,wBAAwB,GAAG;;;;CAIhC,CAAC;AAEF,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;CAoB9B,CAAC;AAEF,SAAS,eAAe,CAAC,WAAmB;IAC1C,OAAO;;;;YAIG,WAAW;;;;;;;;;;;;;;;;;;;;;;;;CAwBtB,CAAC;AACF,CAAC;AAED,SAAS,mBAAmB;IAC1B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4DR,CAAC;AACF,CAAC;AAED,SAAS,aAAa,CAAC,WAAmB;IACxC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAgLG,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiDtB,CAAC;AACF,CAAC;AAED,SAAS,WAAW,CAAC,WAAmB;IACtC,OAAO,KAAK,WAAW;;;;;;;;;;CAUxB,CAAC;AACF,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAqB;IAC/C,OAAO,EAAE;QACP,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"template-nextjs.js","sourceRoot":"","sources":["../src/template-nextjs.ts"],"names":[],"mappings":"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"}
|
package/dist/templates.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* toolchain, no graduation cliff — the sandbox↔Firebase swap is environmental
|
|
8
8
|
* (dev vs build), never a code edit (the design rationale section 9).
|
|
9
9
|
*
|
|
10
|
-
* `static` is the
|
|
10
|
+
* `static` is the no-bundler scaffold. A static app run by `pyric sandbox`
|
|
11
11
|
* runs against the in-page sandbox via a runtime import map. For pre-built /
|
|
12
12
|
* retrofit apps, or anyone who wants zero build step.
|
|
13
13
|
*
|
package/dist/templates.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAOH,eAAO,MAAM,cAAc,sDAAuD,CAAC;AACnF,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,YAAY,CAEnE;AAED,MAAM,WAAW,gBAAgB;IAC/B,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC;6EACyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,8EAA8E;IAC9E,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,qDAAqD;IACrD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9D,4DAA4D;IAC5D,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAMD,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAkBD,oFAAoF;AACpF,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG;IAC9E,WAAW,EAAE;QACX,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACpC,CAAC;IACF,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB,CAkEA;
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAOH,eAAO,MAAM,cAAc,sDAAuD,CAAC;AACnF,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,YAAY,CAEnE;AAED,MAAM,WAAW,gBAAgB;IAC/B,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC;6EACyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,8EAA8E;IAC9E,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,qDAAqD;IACrD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9D,4DAA4D;IAC5D,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAMD,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAkBD,oFAAoF;AACpF,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG;IAC9E,WAAW,EAAE;QACX,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACpC,CAAC;IACF,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB,CAkEA;AA4mBD,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAoG5D,CAAC"}
|
package/dist/templates.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* toolchain, no graduation cliff — the sandbox↔Firebase swap is environmental
|
|
8
8
|
* (dev vs build), never a code edit (the design rationale section 9).
|
|
9
9
|
*
|
|
10
|
-
* `static` is the
|
|
10
|
+
* `static` is the no-bundler scaffold. A static app run by `pyric sandbox`
|
|
11
11
|
* runs against the in-page sandbox via a runtime import map. For pre-built /
|
|
12
12
|
* retrofit apps, or anyone who wants zero build step.
|
|
13
13
|
*
|
|
@@ -126,7 +126,7 @@ const WEB_INDEX_HTML = (name) => `<!doctype html>
|
|
|
126
126
|
</body>
|
|
127
127
|
</html>
|
|
128
128
|
`;
|
|
129
|
-
const WEB_APP_JS = `// Canonical firebase/* imports. Under \`pyric
|
|
129
|
+
const WEB_APP_JS = `// Canonical firebase/* imports. Under \`pyric sandbox\` they are served by the
|
|
130
130
|
// in-page pyric sandbox (the config below is ignored); under any standard
|
|
131
131
|
// bundler/pipeline the same imports resolve to the real \`firebase\` package.
|
|
132
132
|
// Graduation changes where you run this code, never the code itself.
|
|
@@ -148,7 +148,7 @@ import {
|
|
|
148
148
|
|
|
149
149
|
const app = initializeApp({
|
|
150
150
|
// Graduation: your real web-app config from the Firebase console
|
|
151
|
-
// (see .env.example). Unused while developing under \`pyric
|
|
151
|
+
// (see .env.example). Unused while developing under \`pyric sandbox\`.
|
|
152
152
|
apiKey: 'demo',
|
|
153
153
|
authDomain: 'demo.firebaseapp.com',
|
|
154
154
|
projectId: 'demo',
|
|
@@ -201,7 +201,7 @@ onSnapshot(collection(db, 'posts'), (snap) => {
|
|
|
201
201
|
const WEB_RULES = `rules_version = '2';
|
|
202
202
|
service cloud.firestore {
|
|
203
203
|
match /databases/{database}/documents {
|
|
204
|
-
// Owner-based from line 1
|
|
204
|
+
// Owner-based from line 1. \`pyric sandbox\` hot-reloads this file and
|
|
205
205
|
// ships a sign-in helper, so safe rules are cheap to iterate. These
|
|
206
206
|
// deploy as-is.
|
|
207
207
|
match /posts/{postId} {
|
|
@@ -236,7 +236,7 @@ const WEB_SEED_JSON = `{
|
|
|
236
236
|
}
|
|
237
237
|
`;
|
|
238
238
|
const WEB_ENV_EXAMPLE = `# Graduation config — your real Firebase web app (console → project settings).
|
|
239
|
-
# Unused under \`pyric
|
|
239
|
+
# Unused under \`pyric sandbox\`; wire it into public/app.js (or a bundler env)
|
|
240
240
|
# when you deploy against the real backend.
|
|
241
241
|
FIREBASE_API_KEY=
|
|
242
242
|
FIREBASE_AUTH_DOMAIN=
|
|
@@ -255,14 +255,14 @@ sandbox — no Firebase project, credentials, or emulators.
|
|
|
255
255
|
popup sign-in via the helper dialog.
|
|
256
256
|
- **Agent:** \`bun run dev:agent\` — same, plus the MCP bridge on the dev-server
|
|
257
257
|
origin (\`/__pyric/mcp\`).
|
|
258
|
-
- **Persist (optional):** \`pyric
|
|
258
|
+
- **Persist (optional):** \`pyric sandbox --persist --seed seed.json\` keeps data and
|
|
259
259
|
test users survive reloads and restarts in \`.pyric/state/state.json\`
|
|
260
260
|
(plain JSON; gitignored). Promote lived state to a committable fixture
|
|
261
|
-
with \`pyric snapshot\`, then
|
|
261
|
+
with \`pyric snapshot\`, then load it again: \`pyric sandbox --seed pyric-state.json\`.
|
|
262
262
|
- **Graduate:** fill \`.env\` from the Firebase console and point the config in
|
|
263
263
|
\`public/app.js\` at it, then run \`npx firebase-tools deploy\`. Bare
|
|
264
264
|
\`firebase/*\` imports need a bundler
|
|
265
|
-
(e.g. \`vite build\`) or an import map in production
|
|
265
|
+
(e.g. \`vite build\`) or an import map in production. \`pyric sandbox\`
|
|
266
266
|
provides the map in dev.
|
|
267
267
|
|
|
268
268
|
The app code uses canonical \`firebase/*\` imports everywhere. Switching
|
|
@@ -367,18 +367,31 @@ bun run dev # Pyric sandbox through the Node package swap
|
|
|
367
367
|
bun start # production: real Firebase
|
|
368
368
|
\`\`\`
|
|
369
369
|
|
|
370
|
-
## Use with
|
|
370
|
+
## Use with a coding agent
|
|
371
371
|
|
|
372
|
-
Install the
|
|
373
|
-
stdio proxy that discovers the running bridge from \`.pyric/serve.json\` and probes
|
|
374
|
-
both IPv4 + IPv6, so there is NO \`claude mcp add\` step and no hand-written URL (a
|
|
375
|
-
static \`127.0.0.1\` URL hits the loopback-family trap). Just start the bridge:
|
|
372
|
+
Install the Pyric agent plugin:
|
|
376
373
|
|
|
377
374
|
\`\`\`bash
|
|
378
|
-
|
|
375
|
+
npx plugins add davideast/pyric
|
|
379
376
|
\`\`\`
|
|
380
377
|
|
|
381
|
-
and
|
|
378
|
+
Antigravity CLI and OpenCode use the standalone skill installer:
|
|
379
|
+
|
|
380
|
+
\`\`\`bash
|
|
381
|
+
npx skills add https://github.com/davideast/pyric/tree/main/pyric-plugin/skills/pyric --agent antigravity-cli
|
|
382
|
+
npx skills add https://github.com/davideast/pyric/tree/main/pyric-plugin/skills/pyric --agent opencode
|
|
383
|
+
\`\`\`
|
|
384
|
+
|
|
385
|
+
Then invoke the skill:
|
|
386
|
+
|
|
387
|
+
| Agent | Enter |
|
|
388
|
+
|---|---|
|
|
389
|
+
| Codex | \`$pyric\` |
|
|
390
|
+
| Claude Code | \`/pyric:pyric\` |
|
|
391
|
+
| Antigravity CLI | \`/pyric\` |
|
|
392
|
+
| OpenCode | \`/pyric\` |
|
|
393
|
+
|
|
394
|
+
The skill starts the bridge and connects the agent's Pyric tools.
|
|
382
395
|
|
|
383
396
|
## Graduating to a real Firebase project
|
|
384
397
|
|
|
@@ -582,7 +595,7 @@ import { pyric } from '@pyric/cli/vite';
|
|
|
582
595
|
// sandbox and deploys + hot-reloads firestore.rules — no Firebase project,
|
|
583
596
|
// credentials, or emulators. \`vite build\` (mode production) ships the real
|
|
584
597
|
// firebase package; the swap never reaches the deployed artifact. For a
|
|
585
|
-
// self-contained sandbox preview you can serve under \`pyric
|
|
598
|
+
// self-contained sandbox preview you can serve under \`pyric sandbox\`, build with a
|
|
586
599
|
// non-production mode: \`vite build --mode development\` (see the \`build:sandbox\`
|
|
587
600
|
// script). That output is marked and can never be deployed.
|
|
588
601
|
export default defineConfig({
|
|
@@ -663,10 +676,8 @@ in-process sandbox — no Firebase project, credentials, or emulators.
|
|
|
663
676
|
> between the sandbox and real Firebase is \`vite dev\` vs \`vite build\`, never
|
|
664
677
|
> what you wrote.
|
|
665
678
|
|
|
666
|
-
The plugin is
|
|
667
|
-
|
|
668
|
-
later releases. For a pre-built / no-build app, use \`pyric init --template static\`
|
|
669
|
-
+ \`pyric dev\`.
|
|
679
|
+
The plugin is development-only. For a pre-built or no-build app, use
|
|
680
|
+
\`pyric init --template static\` and \`pyric sandbox\`.
|
|
670
681
|
`;
|
|
671
682
|
let chatAssets;
|
|
672
683
|
const getChatAssets = () => (chatAssets ??= loadAssetTemplate('chat'));
|
|
@@ -708,7 +719,7 @@ export const TEMPLATES = {
|
|
|
708
719
|
node: {
|
|
709
720
|
scripts: {
|
|
710
721
|
start: 'node --env-file-if-exists=.env --experimental-strip-types src/app.ts',
|
|
711
|
-
dev: 'pyric
|
|
722
|
+
dev: 'pyric sandbox --no-open -- node --env-file-if-exists=.env --experimental-strip-types src/app.ts',
|
|
712
723
|
bridge: 'pyric bridge',
|
|
713
724
|
},
|
|
714
725
|
dependencies: { firebase: '^12.12.0' },
|
|
@@ -726,13 +737,13 @@ export const TEMPLATES = {
|
|
|
726
737
|
],
|
|
727
738
|
nextSteps: ['bun install', 'bun run dev', 'bun start # production: real Firebase'],
|
|
728
739
|
},
|
|
729
|
-
// static
|
|
740
|
+
// static: the no-bundler scaffold run by `pyric sandbox`
|
|
730
741
|
// runs against the in-page sandbox via a runtime import map. For pre-built /
|
|
731
742
|
// retrofit apps, or anyone who wants zero build step.
|
|
732
743
|
static: {
|
|
733
744
|
scripts: {
|
|
734
|
-
dev: 'pyric
|
|
735
|
-
'dev:agent': 'pyric
|
|
745
|
+
dev: 'pyric sandbox --seed seed.json',
|
|
746
|
+
'dev:agent': 'pyric sandbox --bridge --seed seed.json',
|
|
736
747
|
},
|
|
737
748
|
dependencies: { firebase: '^12.12.0' },
|
|
738
749
|
devDependencies: { '@pyric/cli': '*' },
|
package/dist/templates.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-pyric",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.20",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"homepage": "https://pyric.dev",
|
|
6
6
|
"repository": {
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"typecheck": "bun x tsc -p tsconfig.json --noEmit"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"@types/bun": "
|
|
38
|
+
"@types/bun": "1.3.14",
|
|
39
39
|
"typescript": "^5.7.0"
|
|
40
40
|
},
|
|
41
41
|
"engines": {
|
package/src/template-nextjs.ts
CHANGED
|
@@ -24,7 +24,7 @@ const nextConfig = {
|
|
|
24
24
|
],
|
|
25
25
|
};
|
|
26
26
|
|
|
27
|
-
// Under development mode (\`pyric
|
|
27
|
+
// Under development mode (\`pyric sandbox -- next dev\`), withPyric maps client-side
|
|
28
28
|
// firebase/* SDK imports to Pyric sandbox adapters via Webpack/Turbopack aliases,
|
|
29
29
|
// externalizes server-side firebase and firebase-admin imports for Node loader
|
|
30
30
|
// hooks (@pyric/cli/register), and proxies /__pyric/* bridge traffic.
|
|
@@ -63,7 +63,7 @@ const NEXTJS_TSCONFIG_JSON = `{
|
|
|
63
63
|
`;
|
|
64
64
|
|
|
65
65
|
const NEXTJS_ENV_EXAMPLE = `# Your real Firebase application configuration from the Firebase Console.
|
|
66
|
-
# UNUSED in local development under \`pyric
|
|
66
|
+
# UNUSED in local development under \`pyric sandbox\` (the Pyric sandbox stands in);
|
|
67
67
|
# USED by \`next build\` for production cloud builds. Next.js exposes environment
|
|
68
68
|
# variables prefixed with \`NEXT_PUBLIC_\` to client-side code in the browser.
|
|
69
69
|
NEXT_PUBLIC_FIREBASE_API_KEY=
|
|
@@ -473,19 +473,19 @@ function buildReadme(projectName: string): string {
|
|
|
473
473
|
return `# ${projectName}
|
|
474
474
|
|
|
475
475
|
A Firebase web application built with Next.js and wrapped with \`@pyric/cli/next\` (\`withPyric\`).
|
|
476
|
-
In development, the application runs entirely on Pyric's local sandbox
|
|
476
|
+
In development, the application runs entirely on Pyric's local sandbox and requires
|
|
477
477
|
zero Firebase projects, service account keys, or cloud emulators.
|
|
478
478
|
|
|
479
|
-
- **Develop:** \`npm run dev\` or \`bun run dev\`
|
|
480
|
-
- **Build for production:** \`npm run build\` or \`bun run build\`
|
|
481
|
-
- **Start:** \`npm start\` or \`bun run start\`
|
|
479
|
+
- **Develop:** \`npm run dev\` or \`bun run dev\` executes \`pyric sandbox -- next dev\`. The \`withPyric\` wrapper substitutes client SDK imports with local sandbox mirrors via Webpack and Turbopack aliases, intercepts server-side API requests via \`@pyric/cli/register\`, and proxies WebSocket bridge traffic automatically.
|
|
480
|
+
- **Build for production:** \`npm run build\` or \`bun run build\` executes \`next build\`. Production mode makes \`withPyric\` an identity passthrough and compiles the standard Firebase and Firebase Admin SDKs without sandbox code.
|
|
481
|
+
- **Start:** \`npm start\` or \`bun run start\` serves your built Next.js production server.
|
|
482
482
|
- **Deploy:** \`npx firebase-tools deploy\` (via Firebase Web Frameworks) after production build, or deploy standard built artifacts directly to Vercel and cloud compute platforms.
|
|
483
483
|
`;
|
|
484
484
|
}
|
|
485
485
|
|
|
486
486
|
export const NEXTJS_TEMPLATE: ScaffoldTemplate = {
|
|
487
487
|
scripts: {
|
|
488
|
-
dev: 'pyric
|
|
488
|
+
dev: 'pyric sandbox -- next dev',
|
|
489
489
|
'dev:direct': 'next dev',
|
|
490
490
|
build: 'next build',
|
|
491
491
|
start: 'next start',
|
package/src/templates.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* toolchain, no graduation cliff — the sandbox↔Firebase swap is environmental
|
|
8
8
|
* (dev vs build), never a code edit (the design rationale section 9).
|
|
9
9
|
*
|
|
10
|
-
* `static` is the
|
|
10
|
+
* `static` is the no-bundler scaffold. A static app run by `pyric sandbox`
|
|
11
11
|
* runs against the in-page sandbox via a runtime import map. For pre-built /
|
|
12
12
|
* retrofit apps, or anyone who wants zero build step.
|
|
13
13
|
*
|
|
@@ -181,7 +181,7 @@ const WEB_INDEX_HTML = (name: string): string => `<!doctype html>
|
|
|
181
181
|
</html>
|
|
182
182
|
`;
|
|
183
183
|
|
|
184
|
-
const WEB_APP_JS = `// Canonical firebase/* imports. Under \`pyric
|
|
184
|
+
const WEB_APP_JS = `// Canonical firebase/* imports. Under \`pyric sandbox\` they are served by the
|
|
185
185
|
// in-page pyric sandbox (the config below is ignored); under any standard
|
|
186
186
|
// bundler/pipeline the same imports resolve to the real \`firebase\` package.
|
|
187
187
|
// Graduation changes where you run this code, never the code itself.
|
|
@@ -203,7 +203,7 @@ import {
|
|
|
203
203
|
|
|
204
204
|
const app = initializeApp({
|
|
205
205
|
// Graduation: your real web-app config from the Firebase console
|
|
206
|
-
// (see .env.example). Unused while developing under \`pyric
|
|
206
|
+
// (see .env.example). Unused while developing under \`pyric sandbox\`.
|
|
207
207
|
apiKey: 'demo',
|
|
208
208
|
authDomain: 'demo.firebaseapp.com',
|
|
209
209
|
projectId: 'demo',
|
|
@@ -257,7 +257,7 @@ onSnapshot(collection(db, 'posts'), (snap) => {
|
|
|
257
257
|
const WEB_RULES = `rules_version = '2';
|
|
258
258
|
service cloud.firestore {
|
|
259
259
|
match /databases/{database}/documents {
|
|
260
|
-
// Owner-based from line 1
|
|
260
|
+
// Owner-based from line 1. \`pyric sandbox\` hot-reloads this file and
|
|
261
261
|
// ships a sign-in helper, so safe rules are cheap to iterate. These
|
|
262
262
|
// deploy as-is.
|
|
263
263
|
match /posts/{postId} {
|
|
@@ -295,7 +295,7 @@ const WEB_SEED_JSON = `{
|
|
|
295
295
|
`;
|
|
296
296
|
|
|
297
297
|
const WEB_ENV_EXAMPLE = `# Graduation config — your real Firebase web app (console → project settings).
|
|
298
|
-
# Unused under \`pyric
|
|
298
|
+
# Unused under \`pyric sandbox\`; wire it into public/app.js (or a bundler env)
|
|
299
299
|
# when you deploy against the real backend.
|
|
300
300
|
FIREBASE_API_KEY=
|
|
301
301
|
FIREBASE_AUTH_DOMAIN=
|
|
@@ -315,14 +315,14 @@ sandbox — no Firebase project, credentials, or emulators.
|
|
|
315
315
|
popup sign-in via the helper dialog.
|
|
316
316
|
- **Agent:** \`bun run dev:agent\` — same, plus the MCP bridge on the dev-server
|
|
317
317
|
origin (\`/__pyric/mcp\`).
|
|
318
|
-
- **Persist (optional):** \`pyric
|
|
318
|
+
- **Persist (optional):** \`pyric sandbox --persist --seed seed.json\` keeps data and
|
|
319
319
|
test users survive reloads and restarts in \`.pyric/state/state.json\`
|
|
320
320
|
(plain JSON; gitignored). Promote lived state to a committable fixture
|
|
321
|
-
with \`pyric snapshot\`, then
|
|
321
|
+
with \`pyric snapshot\`, then load it again: \`pyric sandbox --seed pyric-state.json\`.
|
|
322
322
|
- **Graduate:** fill \`.env\` from the Firebase console and point the config in
|
|
323
323
|
\`public/app.js\` at it, then run \`npx firebase-tools deploy\`. Bare
|
|
324
324
|
\`firebase/*\` imports need a bundler
|
|
325
|
-
(e.g. \`vite build\`) or an import map in production
|
|
325
|
+
(e.g. \`vite build\`) or an import map in production. \`pyric sandbox\`
|
|
326
326
|
provides the map in dev.
|
|
327
327
|
|
|
328
328
|
The app code uses canonical \`firebase/*\` imports everywhere. Switching
|
|
@@ -436,18 +436,31 @@ bun run dev # Pyric sandbox through the Node package swap
|
|
|
436
436
|
bun start # production: real Firebase
|
|
437
437
|
\`\`\`
|
|
438
438
|
|
|
439
|
-
## Use with
|
|
439
|
+
## Use with a coding agent
|
|
440
440
|
|
|
441
|
-
Install the
|
|
442
|
-
stdio proxy that discovers the running bridge from \`.pyric/serve.json\` and probes
|
|
443
|
-
both IPv4 + IPv6, so there is NO \`claude mcp add\` step and no hand-written URL (a
|
|
444
|
-
static \`127.0.0.1\` URL hits the loopback-family trap). Just start the bridge:
|
|
441
|
+
Install the Pyric agent plugin:
|
|
445
442
|
|
|
446
443
|
\`\`\`bash
|
|
447
|
-
|
|
444
|
+
npx plugins add davideast/pyric
|
|
448
445
|
\`\`\`
|
|
449
446
|
|
|
450
|
-
and
|
|
447
|
+
Antigravity CLI and OpenCode use the standalone skill installer:
|
|
448
|
+
|
|
449
|
+
\`\`\`bash
|
|
450
|
+
npx skills add https://github.com/davideast/pyric/tree/main/pyric-plugin/skills/pyric --agent antigravity-cli
|
|
451
|
+
npx skills add https://github.com/davideast/pyric/tree/main/pyric-plugin/skills/pyric --agent opencode
|
|
452
|
+
\`\`\`
|
|
453
|
+
|
|
454
|
+
Then invoke the skill:
|
|
455
|
+
|
|
456
|
+
| Agent | Enter |
|
|
457
|
+
|---|---|
|
|
458
|
+
| Codex | \`$pyric\` |
|
|
459
|
+
| Claude Code | \`/pyric:pyric\` |
|
|
460
|
+
| Antigravity CLI | \`/pyric\` |
|
|
461
|
+
| OpenCode | \`/pyric\` |
|
|
462
|
+
|
|
463
|
+
The skill starts the bridge and connects the agent's Pyric tools.
|
|
451
464
|
|
|
452
465
|
## Graduating to a real Firebase project
|
|
453
466
|
|
|
@@ -655,7 +668,7 @@ import { pyric } from '@pyric/cli/vite';
|
|
|
655
668
|
// sandbox and deploys + hot-reloads firestore.rules — no Firebase project,
|
|
656
669
|
// credentials, or emulators. \`vite build\` (mode production) ships the real
|
|
657
670
|
// firebase package; the swap never reaches the deployed artifact. For a
|
|
658
|
-
// self-contained sandbox preview you can serve under \`pyric
|
|
671
|
+
// self-contained sandbox preview you can serve under \`pyric sandbox\`, build with a
|
|
659
672
|
// non-production mode: \`vite build --mode development\` (see the \`build:sandbox\`
|
|
660
673
|
// script). That output is marked and can never be deployed.
|
|
661
674
|
export default defineConfig({
|
|
@@ -742,10 +755,8 @@ in-process sandbox — no Firebase project, credentials, or emulators.
|
|
|
742
755
|
> between the sandbox and real Firebase is \`vite dev\` vs \`vite build\`, never
|
|
743
756
|
> what you wrote.
|
|
744
757
|
|
|
745
|
-
The plugin is
|
|
746
|
-
|
|
747
|
-
later releases. For a pre-built / no-build app, use \`pyric init --template static\`
|
|
748
|
-
+ \`pyric dev\`.
|
|
758
|
+
The plugin is development-only. For a pre-built or no-build app, use
|
|
759
|
+
\`pyric init --template static\` and \`pyric sandbox\`.
|
|
749
760
|
`;
|
|
750
761
|
|
|
751
762
|
let chatAssets: ReturnType<typeof loadAssetTemplate> | undefined;
|
|
@@ -791,7 +802,7 @@ export const TEMPLATES: Record<TemplateName, ScaffoldTemplate> = {
|
|
|
791
802
|
node: {
|
|
792
803
|
scripts: {
|
|
793
804
|
start: 'node --env-file-if-exists=.env --experimental-strip-types src/app.ts',
|
|
794
|
-
dev: 'pyric
|
|
805
|
+
dev: 'pyric sandbox --no-open -- node --env-file-if-exists=.env --experimental-strip-types src/app.ts',
|
|
795
806
|
bridge: 'pyric bridge',
|
|
796
807
|
},
|
|
797
808
|
dependencies: { firebase: '^12.12.0' },
|
|
@@ -809,13 +820,13 @@ export const TEMPLATES: Record<TemplateName, ScaffoldTemplate> = {
|
|
|
809
820
|
],
|
|
810
821
|
nextSteps: ['bun install', 'bun run dev', 'bun start # production: real Firebase'],
|
|
811
822
|
},
|
|
812
|
-
// static
|
|
823
|
+
// static: the no-bundler scaffold run by `pyric sandbox`
|
|
813
824
|
// runs against the in-page sandbox via a runtime import map. For pre-built /
|
|
814
825
|
// retrofit apps, or anyone who wants zero build step.
|
|
815
826
|
static: {
|
|
816
827
|
scripts: {
|
|
817
|
-
dev: 'pyric
|
|
818
|
-
'dev:agent': 'pyric
|
|
828
|
+
dev: 'pyric sandbox --seed seed.json',
|
|
829
|
+
'dev:agent': 'pyric sandbox --bridge --seed seed.json',
|
|
819
830
|
},
|
|
820
831
|
dependencies: { firebase: '^12.12.0' },
|
|
821
832
|
devDependencies: { '@pyric/cli': '*' },
|
|
@@ -8,7 +8,7 @@ import path from 'node:path';
|
|
|
8
8
|
// sandbox and deploys + hot-reloads the rules — no Firebase project,
|
|
9
9
|
// credentials, or emulators. `vite build` (mode production) ships the real
|
|
10
10
|
// firebase package; the swap never reaches the deployed artifact. For a
|
|
11
|
-
// self-contained sandbox preview you can serve under `pyric
|
|
11
|
+
// self-contained sandbox preview you can serve under `pyric sandbox`, build with a
|
|
12
12
|
// non-production mode: `vite build --mode development` (see the `build:sandbox`
|
|
13
13
|
// script). That output is marked and can never be deployed.
|
|
14
14
|
export default defineConfig({
|