@pyric/cli 0.1.0-alpha.30.2 → 0.1.0-alpha.31
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/assurance/.generated/conformance-verdicts.d.ts +107 -40
- package/dist/assurance/.generated/conformance-verdicts.d.ts.map +1 -1
- package/dist/assurance/.generated/conformance-verdicts.js +107 -40
- package/dist/assurance/.generated/conformance-verdicts.js.map +1 -1
- package/dist/assurance/capabilities.d.ts.map +1 -1
- package/dist/assurance/capabilities.js +12 -14
- package/dist/assurance/capabilities.js.map +1 -1
- package/dist/bounded-request.d.ts +27 -5
- package/dist/bounded-request.d.ts.map +1 -1
- package/dist/bounded-request.js +48 -4
- package/dist/bounded-request.js.map +1 -1
- package/dist/bridge/client/bridge-url.d.ts +5 -1
- package/dist/bridge/client/bridge-url.d.ts.map +1 -1
- package/dist/bridge/client/bridge-url.js +5 -1
- package/dist/bridge/client/bridge-url.js.map +1 -1
- package/dist/bridge/client/bridge.d.ts +9 -3
- package/dist/bridge/client/bridge.d.ts.map +1 -1
- package/dist/bridge/client/bridge.js +17 -3
- package/dist/bridge/client/bridge.js.map +1 -1
- package/dist/bridge/frame-output.d.ts.map +1 -1
- package/dist/bridge/frame-output.js +46 -0
- package/dist/bridge/frame-output.js.map +1 -1
- package/dist/bridge/protocol.d.ts +10 -0
- package/dist/bridge/protocol.d.ts.map +1 -1
- package/dist/bridge/protocol.js +10 -0
- package/dist/bridge/protocol.js.map +1 -1
- package/dist/bridge/server/in-process.d.ts +16 -7
- package/dist/bridge/server/in-process.d.ts.map +1 -1
- package/dist/bridge/server/in-process.js +51 -17
- package/dist/bridge/server/in-process.js.map +1 -1
- package/dist/bridge/server/peer.d.ts +8 -0
- package/dist/bridge/server/peer.d.ts.map +1 -1
- package/dist/bridge/server/peer.js +10 -0
- package/dist/bridge/server/peer.js.map +1 -1
- package/dist/bridge/server/standalone.d.ts +7 -2
- package/dist/bridge/server/standalone.d.ts.map +1 -1
- package/dist/bridge/server/standalone.js +27 -99
- package/dist/bridge/server/standalone.js.map +1 -1
- package/dist/bridge/surface/arguments/firestore.d.ts +6 -6
- package/dist/bridge/surface/arguments/sandbox.d.ts +0 -47
- package/dist/bridge/surface/arguments/sandbox.d.ts.map +1 -1
- package/dist/bridge/surface/arguments/sandbox.js +2 -59
- package/dist/bridge/surface/arguments/sandbox.js.map +1 -1
- package/dist/bridge/surface/arguments/seed.d.ts +61 -0
- package/dist/bridge/surface/arguments/seed.d.ts.map +1 -0
- package/dist/bridge/surface/arguments/seed.js +67 -0
- package/dist/bridge/surface/arguments/seed.js.map +1 -0
- package/dist/bridge/surface/arguments/storage.d.ts +2 -2
- package/dist/bridge/surface/context.d.ts +5 -10
- package/dist/bridge/surface/context.d.ts.map +1 -1
- package/dist/bridge/surface/context.js +11 -23
- package/dist/bridge/surface/context.js.map +1 -1
- package/dist/bridge/surface/database-instance-catalog.d.ts +0 -3
- package/dist/bridge/surface/database-instance-catalog.d.ts.map +1 -1
- package/dist/bridge/surface/database-instance-catalog.js +4 -27
- package/dist/bridge/surface/database-instance-catalog.js.map +1 -1
- package/dist/bridge/surface/database-instance-project.d.ts +5 -0
- package/dist/bridge/surface/database-instance-project.d.ts.map +1 -0
- package/dist/bridge/surface/database-instance-project.js +32 -0
- package/dist/bridge/surface/database-instance-project.js.map +1 -0
- package/dist/bridge/surface/database-instance.d.ts +3 -3
- package/dist/bridge/surface/database-instance.d.ts.map +1 -1
- package/dist/bridge/surface/database-instance.js +1 -2
- package/dist/bridge/surface/database-instance.js.map +1 -1
- package/dist/bridge/surface/functions-runtime.d.ts +2 -2
- package/dist/bridge/surface/functions-runtime.js +5 -5
- package/dist/bridge/surface/functions-runtime.js.map +1 -1
- package/dist/bridge/surface/held-identity.d.ts +4 -4
- package/dist/bridge/surface/held-identity.d.ts.map +1 -1
- package/dist/bridge/surface/held-identity.js.map +1 -1
- package/dist/bridge/surface/manifest.sandbox.generated.d.ts +3 -0
- package/dist/bridge/surface/manifest.sandbox.generated.d.ts.map +1 -0
- package/dist/bridge/surface/manifest.sandbox.generated.js +135 -0
- package/dist/bridge/surface/manifest.sandbox.generated.js.map +1 -0
- package/dist/bridge/surface/method-types.d.ts +48 -7
- package/dist/bridge/surface/method-types.d.ts.map +1 -1
- package/dist/bridge/surface/method-types.js +15 -0
- package/dist/bridge/surface/method-types.js.map +1 -1
- package/dist/bridge/surface/methods/ai_logic/clearScripts.d.ts +2 -1
- package/dist/bridge/surface/methods/ai_logic/clearScripts.d.ts.map +1 -1
- package/dist/bridge/surface/methods/ai_logic/clearScripts.js +2 -1
- package/dist/bridge/surface/methods/ai_logic/clearScripts.js.map +1 -1
- package/dist/bridge/surface/methods/ai_logic/script.d.ts +2 -1
- package/dist/bridge/surface/methods/ai_logic/script.d.ts.map +1 -1
- package/dist/bridge/surface/methods/ai_logic/script.js +2 -1
- package/dist/bridge/surface/methods/ai_logic/script.js.map +1 -1
- package/dist/bridge/surface/methods/ai_logic/scripts.d.ts +2 -1
- package/dist/bridge/surface/methods/ai_logic/scripts.d.ts.map +1 -1
- package/dist/bridge/surface/methods/ai_logic/scripts.js +2 -1
- package/dist/bridge/surface/methods/ai_logic/scripts.js.map +1 -1
- package/dist/bridge/surface/methods/ai_logic/status.d.ts +2 -1
- package/dist/bridge/surface/methods/ai_logic/status.d.ts.map +1 -1
- package/dist/bridge/surface/methods/ai_logic/status.js +1 -0
- package/dist/bridge/surface/methods/ai_logic/status.js.map +1 -1
- package/dist/bridge/surface/methods/assurance/attach.d.ts +1 -0
- package/dist/bridge/surface/methods/assurance/attach.d.ts.map +1 -1
- package/dist/bridge/surface/methods/assurance/attach.js +1 -0
- package/dist/bridge/surface/methods/assurance/attach.js.map +1 -1
- package/dist/bridge/surface/methods/assurance/canIUse.d.ts +1 -0
- package/dist/bridge/surface/methods/assurance/canIUse.d.ts.map +1 -1
- package/dist/bridge/surface/methods/assurance/canIUse.js +1 -0
- package/dist/bridge/surface/methods/assurance/canIUse.js.map +1 -1
- package/dist/bridge/surface/methods/assurance/define.d.ts +1 -0
- package/dist/bridge/surface/methods/assurance/define.d.ts.map +1 -1
- package/dist/bridge/surface/methods/assurance/define.js +1 -0
- package/dist/bridge/surface/methods/assurance/define.js.map +1 -1
- package/dist/bridge/surface/methods/assurance/export.d.ts +1 -0
- package/dist/bridge/surface/methods/assurance/export.d.ts.map +1 -1
- package/dist/bridge/surface/methods/assurance/export.js +1 -0
- package/dist/bridge/surface/methods/assurance/export.js.map +1 -1
- package/dist/bridge/surface/methods/assurance/inspect.d.ts +1 -0
- package/dist/bridge/surface/methods/assurance/inspect.d.ts.map +1 -1
- package/dist/bridge/surface/methods/assurance/inspect.js +1 -0
- package/dist/bridge/surface/methods/assurance/inspect.js.map +1 -1
- package/dist/bridge/surface/methods/assurance/map.d.ts +1 -0
- package/dist/bridge/surface/methods/assurance/map.d.ts.map +1 -1
- package/dist/bridge/surface/methods/assurance/map.js +1 -0
- package/dist/bridge/surface/methods/assurance/map.js.map +1 -1
- package/dist/bridge/surface/methods/assurance/minimize.d.ts +1 -0
- package/dist/bridge/surface/methods/assurance/minimize.d.ts.map +1 -1
- package/dist/bridge/surface/methods/assurance/minimize.js +1 -0
- package/dist/bridge/surface/methods/assurance/minimize.js.map +1 -1
- package/dist/bridge/surface/methods/assurance/propose.d.ts +1 -0
- package/dist/bridge/surface/methods/assurance/propose.d.ts.map +1 -1
- package/dist/bridge/surface/methods/assurance/propose.js +1 -0
- package/dist/bridge/surface/methods/assurance/propose.js.map +1 -1
- package/dist/bridge/surface/methods/assurance/replaySession.d.ts +1 -0
- package/dist/bridge/surface/methods/assurance/replaySession.d.ts.map +1 -1
- package/dist/bridge/surface/methods/assurance/replaySession.js +1 -0
- package/dist/bridge/surface/methods/assurance/replaySession.js.map +1 -1
- package/dist/bridge/surface/methods/assurance/run.d.ts +1 -0
- package/dist/bridge/surface/methods/assurance/run.d.ts.map +1 -1
- package/dist/bridge/surface/methods/assurance/run.js +1 -0
- package/dist/bridge/surface/methods/assurance/run.js.map +1 -1
- package/dist/bridge/surface/methods/assurance/start.d.ts +1 -0
- package/dist/bridge/surface/methods/assurance/start.d.ts.map +1 -1
- package/dist/bridge/surface/methods/assurance/start.js +1 -0
- package/dist/bridge/surface/methods/assurance/start.js.map +1 -1
- package/dist/bridge/surface/methods/assurance/testRulesHosted.d.ts +1 -0
- package/dist/bridge/surface/methods/assurance/testRulesHosted.d.ts.map +1 -1
- package/dist/bridge/surface/methods/assurance/testRulesHosted.js +1 -0
- package/dist/bridge/surface/methods/assurance/testRulesHosted.js.map +1 -1
- package/dist/bridge/surface/methods/assurance/verify.d.ts +1 -0
- package/dist/bridge/surface/methods/assurance/verify.d.ts.map +1 -1
- package/dist/bridge/surface/methods/assurance/verify.js +1 -0
- package/dist/bridge/surface/methods/assurance/verify.js.map +1 -1
- package/dist/bridge/surface/methods/assurance/verifyCases.d.ts +1 -0
- package/dist/bridge/surface/methods/assurance/verifyCases.d.ts.map +1 -1
- package/dist/bridge/surface/methods/assurance/verifyCases.js +1 -0
- package/dist/bridge/surface/methods/assurance/verifyCases.js.map +1 -1
- package/dist/bridge/surface/methods/auth/actAsAdmin.d.ts +2 -1
- package/dist/bridge/surface/methods/auth/actAsAdmin.d.ts.map +1 -1
- package/dist/bridge/surface/methods/auth/actAsAdmin.js +1 -0
- package/dist/bridge/surface/methods/auth/actAsAdmin.js.map +1 -1
- package/dist/bridge/surface/methods/auth/actAsAnonymous.d.ts +2 -1
- package/dist/bridge/surface/methods/auth/actAsAnonymous.d.ts.map +1 -1
- package/dist/bridge/surface/methods/auth/actAsAnonymous.js +1 -0
- package/dist/bridge/surface/methods/auth/actAsAnonymous.js.map +1 -1
- package/dist/bridge/surface/methods/auth/createCustomToken.d.ts +1 -0
- package/dist/bridge/surface/methods/auth/createCustomToken.d.ts.map +1 -1
- package/dist/bridge/surface/methods/auth/createCustomToken.js +1 -0
- package/dist/bridge/surface/methods/auth/createCustomToken.js.map +1 -1
- package/dist/bridge/surface/methods/auth/createUser.d.ts +2 -1
- package/dist/bridge/surface/methods/auth/createUser.d.ts.map +1 -1
- package/dist/bridge/surface/methods/auth/createUser.js +2 -1
- package/dist/bridge/surface/methods/auth/createUser.js.map +1 -1
- package/dist/bridge/surface/methods/auth/deleteUser.d.ts +2 -1
- package/dist/bridge/surface/methods/auth/deleteUser.d.ts.map +1 -1
- package/dist/bridge/surface/methods/auth/deleteUser.js +2 -1
- package/dist/bridge/surface/methods/auth/deleteUser.js.map +1 -1
- package/dist/bridge/surface/methods/auth/getUser.d.ts +2 -1
- package/dist/bridge/surface/methods/auth/getUser.d.ts.map +1 -1
- package/dist/bridge/surface/methods/auth/getUser.js +2 -1
- package/dist/bridge/surface/methods/auth/getUser.js.map +1 -1
- package/dist/bridge/surface/methods/auth/getUserByEmail.d.ts +2 -1
- package/dist/bridge/surface/methods/auth/getUserByEmail.d.ts.map +1 -1
- package/dist/bridge/surface/methods/auth/getUserByEmail.js +2 -1
- package/dist/bridge/surface/methods/auth/getUserByEmail.js.map +1 -1
- package/dist/bridge/surface/methods/auth/impersonate.d.ts +2 -1
- package/dist/bridge/surface/methods/auth/impersonate.d.ts.map +1 -1
- package/dist/bridge/surface/methods/auth/impersonate.js +1 -0
- package/dist/bridge/surface/methods/auth/impersonate.js.map +1 -1
- package/dist/bridge/surface/methods/auth/importUsers.d.ts +2 -1
- package/dist/bridge/surface/methods/auth/importUsers.d.ts.map +1 -1
- package/dist/bridge/surface/methods/auth/importUsers.js +3 -2
- package/dist/bridge/surface/methods/auth/importUsers.js.map +1 -1
- package/dist/bridge/surface/methods/auth/listUsers.d.ts +2 -1
- package/dist/bridge/surface/methods/auth/listUsers.d.ts.map +1 -1
- package/dist/bridge/surface/methods/auth/listUsers.js +2 -1
- package/dist/bridge/surface/methods/auth/listUsers.js.map +1 -1
- package/dist/bridge/surface/methods/auth/sessions.d.ts +2 -1
- package/dist/bridge/surface/methods/auth/sessions.d.ts.map +1 -1
- package/dist/bridge/surface/methods/auth/sessions.js +1 -0
- package/dist/bridge/surface/methods/auth/sessions.js.map +1 -1
- package/dist/bridge/surface/methods/auth/setCustomUserClaims.d.ts +2 -1
- package/dist/bridge/surface/methods/auth/setCustomUserClaims.d.ts.map +1 -1
- package/dist/bridge/surface/methods/auth/setCustomUserClaims.js +2 -1
- package/dist/bridge/surface/methods/auth/setCustomUserClaims.js.map +1 -1
- package/dist/bridge/surface/methods/auth/signInAnonymously.d.ts +2 -1
- package/dist/bridge/surface/methods/auth/signInAnonymously.d.ts.map +1 -1
- package/dist/bridge/surface/methods/auth/signInAnonymously.js +1 -0
- package/dist/bridge/surface/methods/auth/signInAnonymously.js.map +1 -1
- package/dist/bridge/surface/methods/auth/signInWithCredential.d.ts +2 -1
- package/dist/bridge/surface/methods/auth/signInWithCredential.d.ts.map +1 -1
- package/dist/bridge/surface/methods/auth/signInWithCredential.js +1 -0
- package/dist/bridge/surface/methods/auth/signInWithCredential.js.map +1 -1
- package/dist/bridge/surface/methods/auth/signInWithCustomToken.d.ts +2 -1
- package/dist/bridge/surface/methods/auth/signInWithCustomToken.d.ts.map +1 -1
- package/dist/bridge/surface/methods/auth/signInWithCustomToken.js +1 -0
- package/dist/bridge/surface/methods/auth/signInWithCustomToken.js.map +1 -1
- package/dist/bridge/surface/methods/auth/signInWithEmailAndPassword.d.ts +2 -1
- package/dist/bridge/surface/methods/auth/signInWithEmailAndPassword.d.ts.map +1 -1
- package/dist/bridge/surface/methods/auth/signInWithEmailAndPassword.js +1 -0
- package/dist/bridge/surface/methods/auth/signInWithEmailAndPassword.js.map +1 -1
- package/dist/bridge/surface/methods/auth/signOut.d.ts +2 -1
- package/dist/bridge/surface/methods/auth/signOut.d.ts.map +1 -1
- package/dist/bridge/surface/methods/auth/signOut.js +1 -0
- package/dist/bridge/surface/methods/auth/signOut.js.map +1 -1
- package/dist/bridge/surface/methods/auth/takeAuthMail.d.ts +2 -1
- package/dist/bridge/surface/methods/auth/takeAuthMail.d.ts.map +1 -1
- package/dist/bridge/surface/methods/auth/takeAuthMail.js +1 -0
- package/dist/bridge/surface/methods/auth/takeAuthMail.js.map +1 -1
- package/dist/bridge/surface/methods/auth/updateUser.d.ts +2 -1
- package/dist/bridge/surface/methods/auth/updateUser.d.ts.map +1 -1
- package/dist/bridge/surface/methods/auth/updateUser.js +2 -1
- package/dist/bridge/surface/methods/auth/updateUser.js.map +1 -1
- package/dist/bridge/surface/methods/auth/useAppSession.d.ts +2 -1
- package/dist/bridge/surface/methods/auth/useAppSession.d.ts.map +1 -1
- package/dist/bridge/surface/methods/auth/useAppSession.js +1 -0
- package/dist/bridge/surface/methods/auth/useAppSession.js.map +1 -1
- package/dist/bridge/surface/methods/auth/whoami.d.ts +2 -1
- package/dist/bridge/surface/methods/auth/whoami.d.ts.map +1 -1
- package/dist/bridge/surface/methods/auth/whoami.js +1 -0
- package/dist/bridge/surface/methods/auth/whoami.js.map +1 -1
- package/dist/bridge/surface/methods/database/crawl.d.ts +2 -1
- package/dist/bridge/surface/methods/database/crawl.d.ts.map +1 -1
- package/dist/bridge/surface/methods/database/crawl.js +1 -0
- package/dist/bridge/surface/methods/database/crawl.js.map +1 -1
- package/dist/bridge/surface/methods/database/get.d.ts +2 -1
- package/dist/bridge/surface/methods/database/get.d.ts.map +1 -1
- package/dist/bridge/surface/methods/database/get.js +1 -0
- package/dist/bridge/surface/methods/database/get.js.map +1 -1
- package/dist/bridge/surface/methods/database/push.d.ts +2 -1
- package/dist/bridge/surface/methods/database/push.d.ts.map +1 -1
- package/dist/bridge/surface/methods/database/push.js +1 -0
- package/dist/bridge/surface/methods/database/push.js.map +1 -1
- package/dist/bridge/surface/methods/database/query.d.ts +2 -1
- package/dist/bridge/surface/methods/database/query.d.ts.map +1 -1
- package/dist/bridge/surface/methods/database/query.js +1 -0
- package/dist/bridge/surface/methods/database/query.js.map +1 -1
- package/dist/bridge/surface/methods/database/remove.d.ts +2 -1
- package/dist/bridge/surface/methods/database/remove.d.ts.map +1 -1
- package/dist/bridge/surface/methods/database/remove.js +1 -0
- package/dist/bridge/surface/methods/database/remove.js.map +1 -1
- package/dist/bridge/surface/methods/database/set.d.ts +2 -1
- package/dist/bridge/surface/methods/database/set.d.ts.map +1 -1
- package/dist/bridge/surface/methods/database/set.js +1 -0
- package/dist/bridge/surface/methods/database/set.js.map +1 -1
- package/dist/bridge/surface/methods/database/update.d.ts +2 -1
- package/dist/bridge/surface/methods/database/update.d.ts.map +1 -1
- package/dist/bridge/surface/methods/database/update.js +1 -0
- package/dist/bridge/surface/methods/database/update.js.map +1 -1
- package/dist/bridge/surface/methods/firestore/addDoc.d.ts +2 -1
- package/dist/bridge/surface/methods/firestore/addDoc.d.ts.map +1 -1
- package/dist/bridge/surface/methods/firestore/addDoc.js +2 -1
- package/dist/bridge/surface/methods/firestore/addDoc.js.map +1 -1
- package/dist/bridge/surface/methods/firestore/deleteDoc.d.ts +2 -1
- package/dist/bridge/surface/methods/firestore/deleteDoc.d.ts.map +1 -1
- package/dist/bridge/surface/methods/firestore/deleteDoc.js +2 -1
- package/dist/bridge/surface/methods/firestore/deleteDoc.js.map +1 -1
- package/dist/bridge/surface/methods/firestore/discoverPaths.d.ts +2 -1
- package/dist/bridge/surface/methods/firestore/discoverPaths.d.ts.map +1 -1
- package/dist/bridge/surface/methods/firestore/discoverPaths.js +1 -0
- package/dist/bridge/surface/methods/firestore/discoverPaths.js.map +1 -1
- package/dist/bridge/surface/methods/firestore/extractIndexes.d.ts +7 -6
- package/dist/bridge/surface/methods/firestore/extractIndexes.d.ts.map +1 -1
- package/dist/bridge/surface/methods/firestore/extractIndexes.js +1 -0
- package/dist/bridge/surface/methods/firestore/extractIndexes.js.map +1 -1
- package/dist/bridge/surface/methods/firestore/findCollectionGroup.d.ts +2 -1
- package/dist/bridge/surface/methods/firestore/findCollectionGroup.d.ts.map +1 -1
- package/dist/bridge/surface/methods/firestore/findCollectionGroup.js +1 -0
- package/dist/bridge/surface/methods/firestore/findCollectionGroup.js.map +1 -1
- package/dist/bridge/surface/methods/firestore/getAggregateFromServer.d.ts +6 -5
- package/dist/bridge/surface/methods/firestore/getAggregateFromServer.d.ts.map +1 -1
- package/dist/bridge/surface/methods/firestore/getAggregateFromServer.js +1 -0
- package/dist/bridge/surface/methods/firestore/getAggregateFromServer.js.map +1 -1
- package/dist/bridge/surface/methods/firestore/getCountFromServer.d.ts +6 -5
- package/dist/bridge/surface/methods/firestore/getCountFromServer.d.ts.map +1 -1
- package/dist/bridge/surface/methods/firestore/getCountFromServer.js +1 -0
- package/dist/bridge/surface/methods/firestore/getCountFromServer.js.map +1 -1
- package/dist/bridge/surface/methods/firestore/getDoc.d.ts +2 -1
- package/dist/bridge/surface/methods/firestore/getDoc.d.ts.map +1 -1
- package/dist/bridge/surface/methods/firestore/getDoc.js +2 -1
- package/dist/bridge/surface/methods/firestore/getDoc.js.map +1 -1
- package/dist/bridge/surface/methods/firestore/getDocs.d.ts +6 -5
- package/dist/bridge/surface/methods/firestore/getDocs.d.ts.map +1 -1
- package/dist/bridge/surface/methods/firestore/getDocs.js +2 -1
- package/dist/bridge/surface/methods/firestore/getDocs.js.map +1 -1
- package/dist/bridge/surface/methods/firestore/setDoc.d.ts +2 -1
- package/dist/bridge/surface/methods/firestore/setDoc.d.ts.map +1 -1
- package/dist/bridge/surface/methods/firestore/setDoc.js +2 -1
- package/dist/bridge/surface/methods/firestore/setDoc.js.map +1 -1
- package/dist/bridge/surface/methods/firestore/updateDoc.d.ts +2 -1
- package/dist/bridge/surface/methods/firestore/updateDoc.d.ts.map +1 -1
- package/dist/bridge/surface/methods/firestore/updateDoc.js +2 -1
- package/dist/bridge/surface/methods/firestore/updateDoc.js.map +1 -1
- package/dist/bridge/surface/methods/firestore/writeBatch.d.ts +2 -1
- package/dist/bridge/surface/methods/firestore/writeBatch.d.ts.map +1 -1
- package/dist/bridge/surface/methods/firestore/writeBatch.js +2 -1
- package/dist/bridge/surface/methods/firestore/writeBatch.js.map +1 -1
- package/dist/bridge/surface/methods/firestore/writeIndexes.d.ts +1 -0
- package/dist/bridge/surface/methods/firestore/writeIndexes.d.ts.map +1 -1
- package/dist/bridge/surface/methods/firestore/writeIndexes.js +1 -0
- package/dist/bridge/surface/methods/firestore/writeIndexes.js.map +1 -1
- package/dist/bridge/surface/methods/functions/executions.d.ts +3 -2
- package/dist/bridge/surface/methods/functions/executions.d.ts.map +1 -1
- package/dist/bridge/surface/methods/functions/executions.js +2 -1
- package/dist/bridge/surface/methods/functions/executions.js.map +1 -1
- package/dist/bridge/surface/methods/functions/fire.d.ts +1 -0
- package/dist/bridge/surface/methods/functions/fire.d.ts.map +1 -1
- package/dist/bridge/surface/methods/functions/fire.js +6 -5
- package/dist/bridge/surface/methods/functions/fire.js.map +1 -1
- package/dist/bridge/surface/methods/functions/listTriggers.d.ts +2 -1
- package/dist/bridge/surface/methods/functions/listTriggers.d.ts.map +1 -1
- package/dist/bridge/surface/methods/functions/listTriggers.js +1 -0
- package/dist/bridge/surface/methods/functions/listTriggers.js.map +1 -1
- package/dist/bridge/surface/methods/messaging/deliveries.d.ts +2 -1
- package/dist/bridge/surface/methods/messaging/deliveries.d.ts.map +1 -1
- package/dist/bridge/surface/methods/messaging/deliveries.js +1 -0
- package/dist/bridge/surface/methods/messaging/deliveries.js.map +1 -1
- package/dist/bridge/surface/methods/messaging/send.d.ts +2 -1
- package/dist/bridge/surface/methods/messaging/send.d.ts.map +1 -1
- package/dist/bridge/surface/methods/messaging/send.js +2 -1
- package/dist/bridge/surface/methods/messaging/send.js.map +1 -1
- package/dist/bridge/surface/methods/messaging/subscribeToTopic.d.ts +2 -1
- package/dist/bridge/surface/methods/messaging/subscribeToTopic.d.ts.map +1 -1
- package/dist/bridge/surface/methods/messaging/subscribeToTopic.js +1 -0
- package/dist/bridge/surface/methods/messaging/subscribeToTopic.js.map +1 -1
- package/dist/bridge/surface/methods/messaging/tokens.d.ts +2 -1
- package/dist/bridge/surface/methods/messaging/tokens.d.ts.map +1 -1
- package/dist/bridge/surface/methods/messaging/tokens.js +1 -0
- package/dist/bridge/surface/methods/messaging/tokens.js.map +1 -1
- package/dist/bridge/surface/methods/messaging/unsubscribeFromTopic.d.ts +2 -1
- package/dist/bridge/surface/methods/messaging/unsubscribeFromTopic.d.ts.map +1 -1
- package/dist/bridge/surface/methods/messaging/unsubscribeFromTopic.js +1 -0
- package/dist/bridge/surface/methods/messaging/unsubscribeFromTopic.js.map +1 -1
- package/dist/bridge/surface/methods/registry.d.ts.map +1 -1
- package/dist/bridge/surface/methods/registry.js +2 -8
- package/dist/bridge/surface/methods/registry.js.map +1 -1
- package/dist/bridge/surface/methods/rules/explainDenial.d.ts +1 -0
- package/dist/bridge/surface/methods/rules/explainDenial.d.ts.map +1 -1
- package/dist/bridge/surface/methods/rules/explainDenial.js +1 -0
- package/dist/bridge/surface/methods/rules/explainDenial.js.map +1 -1
- package/dist/bridge/surface/methods/rules/getStdlib.d.ts +1 -0
- package/dist/bridge/surface/methods/rules/getStdlib.d.ts.map +1 -1
- package/dist/bridge/surface/methods/rules/getStdlib.js +1 -0
- package/dist/bridge/surface/methods/rules/getStdlib.js.map +1 -1
- package/dist/bridge/surface/methods/rules/lint.d.ts +1 -0
- package/dist/bridge/surface/methods/rules/lint.d.ts.map +1 -1
- package/dist/bridge/surface/methods/rules/lint.js +1 -0
- package/dist/bridge/surface/methods/rules/lint.js.map +1 -1
- package/dist/bridge/surface/methods/rules/listStdlib.d.ts +1 -0
- package/dist/bridge/surface/methods/rules/listStdlib.d.ts.map +1 -1
- package/dist/bridge/surface/methods/rules/listStdlib.js +1 -0
- package/dist/bridge/surface/methods/rules/listStdlib.js.map +1 -1
- package/dist/bridge/surface/methods/rules/set.d.ts +1 -0
- package/dist/bridge/surface/methods/rules/set.d.ts.map +1 -1
- package/dist/bridge/surface/methods/rules/set.js +1 -0
- package/dist/bridge/surface/methods/rules/set.js.map +1 -1
- package/dist/bridge/surface/methods/rules/simulate.d.ts +1 -0
- package/dist/bridge/surface/methods/rules/simulate.d.ts.map +1 -1
- package/dist/bridge/surface/methods/rules/simulate.js +1 -0
- package/dist/bridge/surface/methods/rules/simulate.js.map +1 -1
- package/dist/bridge/surface/methods/sandbox/activity.d.ts +2 -1
- package/dist/bridge/surface/methods/sandbox/activity.d.ts.map +1 -1
- package/dist/bridge/surface/methods/sandbox/activity.js +2 -1
- package/dist/bridge/surface/methods/sandbox/activity.js.map +1 -1
- package/dist/bridge/surface/methods/sandbox/advanceClock.d.ts +2 -1
- package/dist/bridge/surface/methods/sandbox/advanceClock.d.ts.map +1 -1
- package/dist/bridge/surface/methods/sandbox/advanceClock.js +1 -0
- package/dist/bridge/surface/methods/sandbox/advanceClock.js.map +1 -1
- package/dist/bridge/surface/methods/sandbox/apply.d.ts +1 -0
- package/dist/bridge/surface/methods/sandbox/apply.d.ts.map +1 -1
- package/dist/bridge/surface/methods/sandbox/apply.js +1 -0
- package/dist/bridge/surface/methods/sandbox/apply.js.map +1 -1
- package/dist/bridge/surface/methods/sandbox/checkpoint.d.ts +1 -0
- package/dist/bridge/surface/methods/sandbox/checkpoint.d.ts.map +1 -1
- package/dist/bridge/surface/methods/sandbox/checkpoint.js +1 -0
- package/dist/bridge/surface/methods/sandbox/checkpoint.js.map +1 -1
- package/dist/bridge/surface/methods/sandbox/deleteCapture.d.ts +1 -0
- package/dist/bridge/surface/methods/sandbox/deleteCapture.d.ts.map +1 -1
- package/dist/bridge/surface/methods/sandbox/deleteCapture.js +1 -1
- package/dist/bridge/surface/methods/sandbox/deleteCapture.js.map +1 -1
- package/dist/bridge/surface/methods/sandbox/deleteCheckpoint.d.ts +1 -0
- package/dist/bridge/surface/methods/sandbox/deleteCheckpoint.d.ts.map +1 -1
- package/dist/bridge/surface/methods/sandbox/deleteCheckpoint.js +1 -0
- package/dist/bridge/surface/methods/sandbox/deleteCheckpoint.js.map +1 -1
- package/dist/bridge/surface/methods/sandbox/diff.d.ts +1 -0
- package/dist/bridge/surface/methods/sandbox/diff.d.ts.map +1 -1
- package/dist/bridge/surface/methods/sandbox/diff.js +1 -0
- package/dist/bridge/surface/methods/sandbox/diff.js.map +1 -1
- package/dist/bridge/surface/methods/sandbox/discard.d.ts +1 -0
- package/dist/bridge/surface/methods/sandbox/discard.d.ts.map +1 -1
- package/dist/bridge/surface/methods/sandbox/discard.js +1 -0
- package/dist/bridge/surface/methods/sandbox/discard.js.map +1 -1
- package/dist/bridge/surface/methods/sandbox/events.d.ts +2 -1
- package/dist/bridge/surface/methods/sandbox/events.d.ts.map +1 -1
- package/dist/bridge/surface/methods/sandbox/events.js +2 -1
- package/dist/bridge/surface/methods/sandbox/events.js.map +1 -1
- package/dist/bridge/surface/methods/sandbox/exportFixture.d.ts +1 -0
- package/dist/bridge/surface/methods/sandbox/exportFixture.d.ts.map +1 -1
- package/dist/bridge/surface/methods/sandbox/exportFixture.js +1 -0
- package/dist/bridge/surface/methods/sandbox/exportFixture.js.map +1 -1
- package/dist/bridge/surface/methods/sandbox/fork.d.ts +1 -0
- package/dist/bridge/surface/methods/sandbox/fork.d.ts.map +1 -1
- package/dist/bridge/surface/methods/sandbox/fork.js +1 -0
- package/dist/bridge/surface/methods/sandbox/fork.js.map +1 -1
- package/dist/bridge/surface/methods/sandbox/inspect.d.ts +2 -1
- package/dist/bridge/surface/methods/sandbox/inspect.d.ts.map +1 -1
- package/dist/bridge/surface/methods/sandbox/inspect.js +2 -1
- package/dist/bridge/surface/methods/sandbox/inspect.js.map +1 -1
- package/dist/bridge/surface/methods/sandbox/listBranches.d.ts +1 -0
- package/dist/bridge/surface/methods/sandbox/listBranches.d.ts.map +1 -1
- package/dist/bridge/surface/methods/sandbox/listBranches.js +1 -0
- package/dist/bridge/surface/methods/sandbox/listBranches.js.map +1 -1
- package/dist/bridge/surface/methods/sandbox/listCaptures.d.ts +1 -0
- package/dist/bridge/surface/methods/sandbox/listCaptures.d.ts.map +1 -1
- package/dist/bridge/surface/methods/sandbox/listCaptures.js +1 -1
- package/dist/bridge/surface/methods/sandbox/listCaptures.js.map +1 -1
- package/dist/bridge/surface/methods/sandbox/listCheckpoints.d.ts +1 -0
- package/dist/bridge/surface/methods/sandbox/listCheckpoints.d.ts.map +1 -1
- package/dist/bridge/surface/methods/sandbox/listCheckpoints.js +1 -0
- package/dist/bridge/surface/methods/sandbox/listCheckpoints.js.map +1 -1
- package/dist/bridge/surface/methods/sandbox/listeners.d.ts +2 -1
- package/dist/bridge/surface/methods/sandbox/listeners.d.ts.map +1 -1
- package/dist/bridge/surface/methods/sandbox/listeners.js +1 -0
- package/dist/bridge/surface/methods/sandbox/listeners.js.map +1 -1
- package/dist/bridge/surface/methods/sandbox/openCapture.d.ts +1 -0
- package/dist/bridge/surface/methods/sandbox/openCapture.d.ts.map +1 -1
- package/dist/bridge/surface/methods/sandbox/openCapture.js +1 -1
- package/dist/bridge/surface/methods/sandbox/openCapture.js.map +1 -1
- package/dist/bridge/surface/methods/sandbox/promote.d.ts +1 -0
- package/dist/bridge/surface/methods/sandbox/promote.d.ts.map +1 -1
- package/dist/bridge/surface/methods/sandbox/promote.js +1 -0
- package/dist/bridge/surface/methods/sandbox/promote.js.map +1 -1
- package/dist/bridge/surface/methods/sandbox/renameCapture.d.ts +3 -2
- package/dist/bridge/surface/methods/sandbox/renameCapture.d.ts.map +1 -1
- package/dist/bridge/surface/methods/sandbox/renameCapture.js +1 -1
- package/dist/bridge/surface/methods/sandbox/renameCapture.js.map +1 -1
- package/dist/bridge/surface/methods/sandbox/reset.d.ts +3 -2
- package/dist/bridge/surface/methods/sandbox/reset.d.ts.map +1 -1
- package/dist/bridge/surface/methods/sandbox/reset.js +1 -0
- package/dist/bridge/surface/methods/sandbox/reset.js.map +1 -1
- package/dist/bridge/surface/methods/sandbox/resetClock.d.ts +2 -1
- package/dist/bridge/surface/methods/sandbox/resetClock.d.ts.map +1 -1
- package/dist/bridge/surface/methods/sandbox/resetClock.js +1 -0
- package/dist/bridge/surface/methods/sandbox/resetClock.js.map +1 -1
- package/dist/bridge/surface/methods/sandbox/restore.d.ts +1 -0
- package/dist/bridge/surface/methods/sandbox/restore.d.ts.map +1 -1
- package/dist/bridge/surface/methods/sandbox/restore.js +1 -0
- package/dist/bridge/surface/methods/sandbox/restore.js.map +1 -1
- package/dist/bridge/surface/methods/sandbox/saveCapture.d.ts +1 -0
- package/dist/bridge/surface/methods/sandbox/saveCapture.d.ts.map +1 -1
- package/dist/bridge/surface/methods/sandbox/saveCapture.js +1 -1
- package/dist/bridge/surface/methods/sandbox/saveCapture.js.map +1 -1
- package/dist/bridge/surface/methods/sandbox/seed.d.ts +2 -1
- package/dist/bridge/surface/methods/sandbox/seed.d.ts.map +1 -1
- package/dist/bridge/surface/methods/sandbox/seed.js +3 -2
- package/dist/bridge/surface/methods/sandbox/seed.js.map +1 -1
- package/dist/bridge/surface/methods/sandbox/seedFromFixture.d.ts +1 -0
- package/dist/bridge/surface/methods/sandbox/seedFromFixture.d.ts.map +1 -1
- package/dist/bridge/surface/methods/sandbox/seedFromFixture.js +1 -0
- package/dist/bridge/surface/methods/sandbox/seedFromFixture.js.map +1 -1
- package/dist/bridge/surface/methods/sandbox/setClock.d.ts +2 -1
- package/dist/bridge/surface/methods/sandbox/setClock.d.ts.map +1 -1
- package/dist/bridge/surface/methods/sandbox/setClock.js +1 -0
- package/dist/bridge/surface/methods/sandbox/setClock.js.map +1 -1
- package/dist/bridge/surface/methods/sandbox-registry.d.ts +6 -0
- package/dist/bridge/surface/methods/sandbox-registry.d.ts.map +1 -0
- package/dist/bridge/surface/methods/sandbox-registry.js +21 -0
- package/dist/bridge/surface/methods/sandbox-registry.js.map +1 -0
- package/dist/bridge/surface/methods/storage/deleteObject.d.ts +2 -1
- package/dist/bridge/surface/methods/storage/deleteObject.d.ts.map +1 -1
- package/dist/bridge/surface/methods/storage/deleteObject.js +1 -0
- package/dist/bridge/surface/methods/storage/deleteObject.js.map +1 -1
- package/dist/bridge/surface/methods/storage/getBytes.d.ts +2 -1
- package/dist/bridge/surface/methods/storage/getBytes.d.ts.map +1 -1
- package/dist/bridge/surface/methods/storage/getBytes.js +1 -0
- package/dist/bridge/surface/methods/storage/getBytes.js.map +1 -1
- package/dist/bridge/surface/methods/storage/getDownloadURL.d.ts +2 -1
- package/dist/bridge/surface/methods/storage/getDownloadURL.d.ts.map +1 -1
- package/dist/bridge/surface/methods/storage/getDownloadURL.js +1 -0
- package/dist/bridge/surface/methods/storage/getDownloadURL.js.map +1 -1
- package/dist/bridge/surface/methods/storage/getMetadata.d.ts +2 -1
- package/dist/bridge/surface/methods/storage/getMetadata.d.ts.map +1 -1
- package/dist/bridge/surface/methods/storage/getMetadata.js +1 -0
- package/dist/bridge/surface/methods/storage/getMetadata.js.map +1 -1
- package/dist/bridge/surface/methods/storage/listAll.d.ts +2 -1
- package/dist/bridge/surface/methods/storage/listAll.d.ts.map +1 -1
- package/dist/bridge/surface/methods/storage/listAll.js +1 -0
- package/dist/bridge/surface/methods/storage/listAll.js.map +1 -1
- package/dist/bridge/surface/methods/storage/provision.d.ts +1 -0
- package/dist/bridge/surface/methods/storage/provision.d.ts.map +1 -1
- package/dist/bridge/surface/methods/storage/provision.js +1 -0
- package/dist/bridge/surface/methods/storage/provision.js.map +1 -1
- package/dist/bridge/surface/methods/storage/setCrossServiceIam.d.ts +2 -1
- package/dist/bridge/surface/methods/storage/setCrossServiceIam.d.ts.map +1 -1
- package/dist/bridge/surface/methods/storage/setCrossServiceIam.js +1 -0
- package/dist/bridge/surface/methods/storage/setCrossServiceIam.js.map +1 -1
- package/dist/bridge/surface/methods/storage/status.d.ts +1 -0
- package/dist/bridge/surface/methods/storage/status.d.ts.map +1 -1
- package/dist/bridge/surface/methods/storage/status.js +1 -0
- package/dist/bridge/surface/methods/storage/status.js.map +1 -1
- package/dist/bridge/surface/methods/storage/updateMetadata.d.ts +6 -5
- package/dist/bridge/surface/methods/storage/updateMetadata.d.ts.map +1 -1
- package/dist/bridge/surface/methods/storage/updateMetadata.js +1 -0
- package/dist/bridge/surface/methods/storage/updateMetadata.js.map +1 -1
- package/dist/bridge/surface/methods/storage/uploadBytes.d.ts +1 -0
- package/dist/bridge/surface/methods/storage/uploadBytes.d.ts.map +1 -1
- package/dist/bridge/surface/methods/storage/uploadBytes.js +1 -0
- package/dist/bridge/surface/methods/storage/uploadBytes.js.map +1 -1
- package/dist/bridge/surface/render/discriminator-schemas.d.ts +2 -2
- package/dist/bridge/surface/request-instant.d.ts +2 -2
- package/dist/bridge/surface/request-instant.d.ts.map +1 -1
- package/dist/bridge/surface/request-instant.js.map +1 -1
- package/dist/bridge/surface/rules-engines/database.d.ts.map +1 -1
- package/dist/bridge/surface/rules-engines/database.js +1 -2
- package/dist/bridge/surface/rules-engines/database.js.map +1 -1
- package/dist/bridge/surface/rules-engines/storage-request-resource.d.ts +38 -0
- package/dist/bridge/surface/rules-engines/storage-request-resource.d.ts.map +1 -0
- package/dist/bridge/surface/rules-engines/storage-request-resource.js +246 -0
- package/dist/bridge/surface/rules-engines/storage-request-resource.js.map +1 -0
- package/dist/bridge/surface/rules-engines/storage.d.ts.map +1 -1
- package/dist/bridge/surface/rules-engines/storage.js +44 -65
- package/dist/bridge/surface/rules-engines/storage.js.map +1 -1
- package/dist/bridge/surface/sandbox-context.d.ts +25 -0
- package/dist/bridge/surface/sandbox-context.d.ts.map +1 -0
- package/dist/bridge/surface/sandbox-context.js +29 -0
- package/dist/bridge/surface/sandbox-context.js.map +1 -0
- package/dist/bridge/surface/service-handles.d.ts +6 -6
- package/dist/bridge/surface/service-handles.d.ts.map +1 -1
- package/dist/bridge/surface/service-handles.js +7 -4
- package/dist/bridge/surface/service-handles.js.map +1 -1
- package/dist/bridge/surface/sign-in.d.ts +2 -2
- package/dist/bridge/surface/sign-in.d.ts.map +1 -1
- package/dist/bridge/surface/sign-in.js +1 -1
- package/dist/bridge/surface/sign-in.js.map +1 -1
- package/dist/bridge/surface/storage-rules.d.ts +2 -9
- package/dist/bridge/surface/storage-rules.d.ts.map +1 -1
- package/dist/bridge/surface/storage-rules.js +0 -10
- package/dist/bridge/surface/storage-rules.js.map +1 -1
- package/dist/bridge/surface/stored-identity.d.ts +3 -3
- package/dist/bridge/surface/stored-identity.d.ts.map +1 -1
- package/dist/bridge/surface/stored-identity.js.map +1 -1
- package/dist/bridge/surface/types.d.ts +29 -8
- package/dist/bridge/surface/types.d.ts.map +1 -1
- package/dist/cli/firebase-json.d.ts +35 -7
- package/dist/cli/firebase-json.d.ts.map +1 -1
- package/dist/cli/firebase-json.js +13 -0
- package/dist/cli/firebase-json.js.map +1 -1
- package/dist/cli/firestore-indexes.d.ts.map +1 -1
- package/dist/cli/firestore-indexes.js +2 -1
- package/dist/cli/firestore-indexes.js.map +1 -1
- package/dist/cli/index.d.ts +6 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +44 -11
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/public-dir-hint.d.ts +8 -0
- package/dist/cli/public-dir-hint.d.ts.map +1 -0
- package/dist/cli/public-dir-hint.js +30 -0
- package/dist/cli/public-dir-hint.js.map +1 -0
- package/dist/cli/run.d.ts +8 -2
- package/dist/cli/run.d.ts.map +1 -1
- package/dist/cli/run.js +28 -5
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/sandbox-runner.d.ts.map +1 -1
- package/dist/cli/sandbox-runner.js +11 -2
- package/dist/cli/sandbox-runner.js.map +1 -1
- package/dist/cli/serve-diagnostics.d.ts.map +1 -1
- package/dist/cli/serve-diagnostics.js +11 -1
- package/dist/cli/serve-diagnostics.js.map +1 -1
- package/dist/cli/serve.d.ts.map +1 -1
- package/dist/cli/serve.js +25 -24
- package/dist/cli/serve.js.map +1 -1
- package/dist/cli/snapshot.d.ts.map +1 -1
- package/dist/cli/snapshot.js +13 -5
- package/dist/cli/snapshot.js.map +1 -1
- package/dist/cli/surface-method-runner.js +1 -1
- package/dist/cli/surface-method-runner.js.map +1 -1
- package/dist/cli/verify.d.ts.map +1 -1
- package/dist/cli/verify.js +10 -1
- package/dist/cli/verify.js.map +1 -1
- package/dist/conformance/.generated/can-i-use-browser.d.ts.map +1 -1
- package/dist/conformance/.generated/can-i-use-browser.js +19 -3
- package/dist/conformance/.generated/can-i-use-browser.js.map +1 -1
- package/dist/conformance/.generated/can-i-use.d.ts.map +1 -1
- package/dist/conformance/.generated/can-i-use.js +1 -1
- package/dist/conformance/.generated/can-i-use.js.map +1 -1
- package/dist/conformance/.generated/conformance-docs.d.ts.map +1 -1
- package/dist/conformance/.generated/conformance-docs.js +1 -1
- package/dist/conformance/.generated/conformance-docs.js.map +1 -1
- package/dist/conformance/.generated/served-availability.d.ts.map +1 -1
- package/dist/conformance/.generated/served-availability.js +1 -1
- package/dist/conformance/.generated/served-availability.js.map +1 -1
- package/dist/discover/merge.d.ts.map +1 -1
- package/dist/discover/merge.js +11 -3
- package/dist/discover/merge.js.map +1 -1
- package/dist/functions/child-protocol.d.ts +43 -0
- package/dist/functions/child-protocol.d.ts.map +1 -0
- package/dist/functions/child-protocol.js +14 -0
- package/dist/functions/child-protocol.js.map +1 -0
- package/dist/functions/child.d.ts +2 -0
- package/dist/functions/child.d.ts.map +1 -0
- package/dist/functions/child.js +92 -0
- package/dist/functions/child.js.map +1 -0
- package/dist/{functions-rtdb → functions}/development-runtime.d.ts +5 -4
- package/dist/functions/development-runtime.d.ts.map +1 -0
- package/dist/{functions-rtdb → functions}/development-runtime.js +2 -2
- package/dist/functions/development-runtime.js.map +1 -0
- package/dist/functions/endpoints.d.ts +39 -0
- package/dist/functions/endpoints.d.ts.map +1 -0
- package/dist/functions/endpoints.js +48 -0
- package/dist/functions/endpoints.js.map +1 -0
- package/dist/functions/events.d.ts.map +1 -0
- package/dist/functions/events.js.map +1 -0
- package/dist/functions/execution-log.d.ts.map +1 -0
- package/dist/functions/execution-log.js.map +1 -0
- package/dist/functions/module-loader.d.ts.map +1 -0
- package/dist/functions/module-loader.js.map +1 -0
- package/dist/functions/project.d.ts +7 -0
- package/dist/functions/project.d.ts.map +1 -0
- package/dist/{functions-rtdb → functions}/project.js +1 -1
- package/dist/functions/project.js.map +1 -0
- package/dist/functions/rtdb/child-runtime.d.ts +23 -0
- package/dist/functions/rtdb/child-runtime.d.ts.map +1 -0
- package/dist/functions/rtdb/child-runtime.js +102 -0
- package/dist/functions/rtdb/child-runtime.js.map +1 -0
- package/dist/functions/rtdb/delivery.d.ts.map +1 -0
- package/dist/functions/rtdb/delivery.js.map +1 -0
- package/dist/{functions-rtdb → functions/rtdb}/discovery.d.ts +3 -20
- package/dist/functions/rtdb/discovery.d.ts.map +1 -0
- package/dist/{functions-rtdb → functions/rtdb}/discovery.js +6 -21
- package/dist/functions/rtdb/discovery.js.map +1 -0
- package/dist/functions/rtdb/event.d.ts.map +1 -0
- package/dist/functions/rtdb/event.js.map +1 -0
- package/dist/functions/rtdb/execution.d.ts.map +1 -0
- package/dist/functions/rtdb/execution.js.map +1 -0
- package/dist/functions/rtdb/in-memory-delivery.d.ts.map +1 -0
- package/dist/functions/rtdb/in-memory-delivery.js.map +1 -0
- package/dist/functions/rtdb/projection.d.ts.map +1 -0
- package/dist/functions/rtdb/projection.js.map +1 -0
- package/dist/functions/rtdb/reference-pattern.d.ts.map +1 -0
- package/dist/functions/rtdb/reference-pattern.js.map +1 -0
- package/dist/{functions-rtdb → functions/rtdb}/remote-delivery.d.ts +1 -1
- package/dist/functions/rtdb/remote-delivery.d.ts.map +1 -0
- package/dist/functions/rtdb/remote-delivery.js.map +1 -0
- package/dist/{functions-rtdb/child.d.ts → functions/spawn.d.ts} +16 -38
- package/dist/functions/spawn.d.ts.map +1 -0
- package/dist/functions/spawn.js +166 -0
- package/dist/functions/spawn.js.map +1 -0
- package/dist/functions/unsupported.d.ts +23 -0
- package/dist/functions/unsupported.d.ts.map +1 -0
- package/dist/functions/unsupported.js +25 -0
- package/dist/functions/unsupported.js.map +1 -0
- package/dist/google-endpoints.d.ts +9 -2
- package/dist/google-endpoints.d.ts.map +1 -1
- package/dist/google-endpoints.js +72 -3
- package/dist/google-endpoints.js.map +1 -1
- package/dist/next/bridge-import-loader.d.ts +9 -0
- package/dist/next/bridge-import-loader.d.ts.map +1 -0
- package/dist/next/bridge-import-loader.js +45 -0
- package/dist/next/bridge-import-loader.js.map +1 -0
- package/dist/next/bridge-imports.d.ts +26 -0
- package/dist/next/bridge-imports.d.ts.map +1 -0
- package/dist/next/bridge-imports.js +90 -0
- package/dist/next/bridge-imports.js.map +1 -0
- package/dist/next/client-aliases.d.ts +13 -5
- package/dist/next/client-aliases.d.ts.map +1 -1
- package/dist/next/client-aliases.js +14 -27
- package/dist/next/client-aliases.js.map +1 -1
- package/dist/next/guard.d.ts +3 -2
- package/dist/next/guard.d.ts.map +1 -1
- package/dist/next/guard.js +28 -10
- package/dist/next/guard.js.map +1 -1
- package/dist/next/turbopack-config.d.ts +9 -0
- package/dist/next/turbopack-config.d.ts.map +1 -1
- package/dist/next/turbopack-config.js +21 -0
- package/dist/next/turbopack-config.js.map +1 -1
- package/dist/next/webpack-config.d.ts +9 -0
- package/dist/next/webpack-config.d.ts.map +1 -1
- package/dist/next/webpack-config.js +18 -0
- package/dist/next/webpack-config.js.map +1 -1
- package/dist/next/with-pyric.d.ts +1 -0
- package/dist/next/with-pyric.d.ts.map +1 -1
- package/dist/next/with-pyric.js +25 -0
- package/dist/next/with-pyric.js.map +1 -1
- package/dist/register/activation.d.ts +16 -0
- package/dist/register/activation.d.ts.map +1 -0
- package/dist/register/activation.js +22 -0
- package/dist/register/activation.js.map +1 -0
- package/dist/register/app-bridge-admin-app-check.d.ts.map +1 -1
- package/dist/register/app-bridge-admin-app-check.js +3 -1
- package/dist/register/app-bridge-admin-app-check.js.map +1 -1
- package/dist/register/child-process-guard.d.ts +43 -0
- package/dist/register/child-process-guard.d.ts.map +1 -0
- package/dist/register/child-process-guard.js +165 -0
- package/dist/register/child-process-guard.js.map +1 -0
- package/dist/register/client/bootstrap.js +6 -1
- package/dist/register/client/bootstrap.js.map +1 -1
- package/dist/register/connect-prototypes.d.ts +9 -0
- package/dist/register/connect-prototypes.d.ts.map +1 -1
- package/dist/register/connect-prototypes.js +11 -0
- package/dist/register/connect-prototypes.js.map +1 -1
- package/dist/register/hooks.d.ts +7 -1
- package/dist/register/hooks.d.ts.map +1 -1
- package/dist/register/hooks.js +44 -2
- package/dist/register/hooks.js.map +1 -1
- package/dist/register/index.d.ts.map +1 -1
- package/dist/register/index.js +93 -23
- package/dist/register/index.js.map +1 -1
- package/dist/register/mapping.d.ts +33 -0
- package/dist/register/mapping.d.ts.map +1 -1
- package/dist/register/mapping.js +45 -3
- package/dist/register/mapping.js.map +1 -1
- package/dist/register/net-guard.d.ts +17 -0
- package/dist/register/net-guard.d.ts.map +1 -1
- package/dist/register/net-guard.js +118 -41
- package/dist/register/net-guard.js.map +1 -1
- package/dist/register/package-identity.d.ts +16 -0
- package/dist/register/package-identity.d.ts.map +1 -0
- package/dist/register/package-identity.js +97 -0
- package/dist/register/package-identity.js.map +1 -0
- package/dist/register/swap-or-stop.d.ts +27 -0
- package/dist/register/swap-or-stop.d.ts.map +1 -0
- package/dist/register/swap-or-stop.js +170 -0
- package/dist/register/swap-or-stop.js.map +1 -0
- package/dist/register/worker-guard.d.ts +20 -0
- package/dist/register/worker-guard.d.ts.map +1 -0
- package/dist/register/worker-guard.js +77 -0
- package/dist/register/worker-guard.js.map +1 -0
- package/dist/remote/resolve-host.d.ts +9 -0
- package/dist/remote/resolve-host.d.ts.map +1 -1
- package/dist/remote/resolve-host.js +13 -2
- package/dist/remote/resolve-host.js.map +1 -1
- package/dist/serve/ai-proxy.d.ts +2 -0
- package/dist/serve/ai-proxy.d.ts.map +1 -1
- package/dist/serve/ai-proxy.js +33 -8
- package/dist/serve/ai-proxy.js.map +1 -1
- package/dist/serve/app-ports.d.ts +48 -0
- package/dist/serve/app-ports.d.ts.map +1 -0
- package/dist/serve/app-ports.js +82 -0
- package/dist/serve/app-ports.js.map +1 -0
- package/dist/serve/bridge-mount.d.ts +13 -0
- package/dist/serve/bridge-mount.d.ts.map +1 -1
- package/dist/serve/bridge-mount.js +28 -8
- package/dist/serve/bridge-mount.js.map +1 -1
- package/dist/serve/bundler.d.ts +6 -0
- package/dist/serve/bundler.d.ts.map +1 -1
- package/dist/serve/bundler.js +78 -26
- package/dist/serve/bundler.js.map +1 -1
- package/dist/serve/discovery.d.ts +17 -3
- package/dist/serve/discovery.d.ts.map +1 -1
- package/dist/serve/discovery.js +199 -63
- package/dist/serve/discovery.js.map +1 -1
- package/dist/serve/entries/auth.d.ts.map +1 -1
- package/dist/serve/entries/auth.js +19 -1
- package/dist/serve/entries/auth.js.map +1 -1
- package/dist/serve/entries/firestore-surface.d.ts +1 -0
- package/dist/serve/entries/firestore-surface.d.ts.map +1 -1
- package/dist/serve/entries/firestore-surface.js +1 -0
- package/dist/serve/entries/firestore-surface.js.map +1 -1
- package/dist/serve/entries/init-payload.d.ts +9 -2
- package/dist/serve/entries/init-payload.d.ts.map +1 -1
- package/dist/serve/entries/init-payload.js +25 -5
- package/dist/serve/entries/init-payload.js.map +1 -1
- package/dist/serve/entries/moved-host.d.ts +18 -0
- package/dist/serve/entries/moved-host.d.ts.map +1 -0
- package/dist/serve/entries/moved-host.js +14 -0
- package/dist/serve/entries/moved-host.js.map +1 -0
- package/dist/serve/entries/runtime-origin.d.ts +6 -0
- package/dist/serve/entries/runtime-origin.d.ts.map +1 -1
- package/dist/serve/entries/runtime-origin.js.map +1 -1
- package/dist/serve/entries/unsupported/firestore.d.ts +0 -1
- package/dist/serve/entries/unsupported/firestore.d.ts.map +1 -1
- package/dist/serve/entries/unsupported/firestore.js +0 -1
- package/dist/serve/entries/unsupported/firestore.js.map +1 -1
- package/dist/serve/entries/worker-runtime.d.ts.map +1 -1
- package/dist/serve/entries/worker-runtime.js +19 -7
- package/dist/serve/entries/worker-runtime.js.map +1 -1
- package/dist/serve/firebase-module-swap.d.ts +19 -2
- package/dist/serve/firebase-module-swap.d.ts.map +1 -1
- package/dist/serve/firebase-module-swap.js +92 -16
- package/dist/serve/firebase-module-swap.js.map +1 -1
- package/dist/serve/gemini-proxy.js +2 -2
- package/dist/serve/gemini-proxy.js.map +1 -1
- package/dist/serve/hosted/runtime.d.ts.map +1 -1
- package/dist/serve/hosted/runtime.js +10 -3
- package/dist/serve/hosted/runtime.js.map +1 -1
- package/dist/serve/namespace.d.ts +7 -0
- package/dist/serve/namespace.d.ts.map +1 -1
- package/dist/serve/namespace.js +32 -24
- package/dist/serve/namespace.js.map +1 -1
- package/dist/serve/repro/compare.d.ts +2 -1
- package/dist/serve/repro/compare.d.ts.map +1 -1
- package/dist/serve/repro/compare.js +9 -1
- package/dist/serve/repro/compare.js.map +1 -1
- package/dist/serve/rules-fixture-check.d.ts.map +1 -1
- package/dist/serve/rules-fixture-check.js +22 -10
- package/dist/serve/rules-fixture-check.js.map +1 -1
- package/dist/serve/rules.d.ts +35 -9
- package/dist/serve/rules.d.ts.map +1 -1
- package/dist/serve/rules.js +72 -21
- package/dist/serve/rules.js.map +1 -1
- package/dist/serve/sandbox-session.d.ts +3 -0
- package/dist/serve/sandbox-session.d.ts.map +1 -1
- package/dist/serve/sandbox-session.js +10 -3
- package/dist/serve/sandbox-session.js.map +1 -1
- package/dist/serve/server.d.ts +10 -2
- package/dist/serve/server.d.ts.map +1 -1
- package/dist/serve/server.js +24 -4
- package/dist/serve/server.js.map +1 -1
- package/dist/serve/site-ui/_astro/{RulesCodeEditor.Cp_-FK3b.js → RulesCodeEditor.D-eQLCvu.js} +1 -1
- package/dist/serve/site-ui/_astro/app.BjQiEBOY.js +1 -0
- package/dist/serve/site-ui/_astro/app.C84Qr10v.js +151 -0
- package/dist/serve/site-ui/_astro/{chess-showcase.CVhCNUi_.js → chess-showcase.CsH1s4g7.js} +1 -1
- package/dist/serve/site-ui/_astro/{example-runtime.zC1l-Yka.js → example-runtime.CTp8mh7I.js} +1 -1
- package/dist/serve/site-ui/_astro/sandbox-controls.DI8MTU3L.js +1725 -0
- package/dist/serve/site-ui/_astro/{seed.B4vza_Bv.js → seed.BvtbLu-q.js} +1 -1
- package/dist/serve/site-ui/_astro/writes.D8gcuovU.js +1 -0
- package/dist/serve/site-ui/auth/index.html +1 -1
- package/dist/serve/site-ui/docs/ai-compat/index.html +48 -9
- package/dist/serve/site-ui/docs/ai-compat.md +53 -8
- package/dist/serve/site-ui/docs/app-check-compat/index.html +102 -26
- package/dist/serve/site-ui/docs/app-check-compat.md +107 -25
- package/dist/serve/site-ui/docs/auth-compat/index.html +33 -21
- package/dist/serve/site-ui/docs/auth-compat.md +35 -20
- package/dist/serve/site-ui/docs/build/ai-logic/index.html +13 -4
- package/dist/serve/site-ui/docs/build/ai-logic.md +14 -4
- package/dist/serve/site-ui/docs/conformance-scores/index.html +2 -2
- package/dist/serve/site-ui/docs/conformance-scores.md +2 -2
- package/dist/serve/site-ui/docs/database-compat/index.html +113 -49
- package/dist/serve/site-ui/docs/database-compat.md +118 -48
- package/dist/serve/site-ui/docs/firestore-compat/index.html +144 -37
- package/dist/serve/site-ui/docs/firestore-compat.md +149 -36
- package/dist/serve/site-ui/docs/firestore-swift-compat/index.html +1 -1
- package/dist/serve/site-ui/docs/firestore-swift-compat.md +1 -1
- package/dist/serve/site-ui/docs/functions-rtdb-compat/index.html +12 -12
- package/dist/serve/site-ui/docs/functions-rtdb-compat.md +12 -12
- package/dist/serve/site-ui/docs/get-started/how-the-swap-works/index.html +1 -1
- package/dist/serve/site-ui/docs/get-started/how-the-swap-works.md +1 -1
- package/dist/serve/site-ui/docs/get-started/node-host/index.html +1 -0
- package/dist/serve/site-ui/docs/get-started/node-host.md +2 -0
- package/dist/serve/site-ui/docs/index.json +45 -5
- package/dist/serve/site-ui/docs/messaging-compat/index.html +2 -2
- package/dist/serve/site-ui/docs/messaging-compat.md +2 -2
- package/dist/serve/site-ui/docs/pyric-ai-scripting-reference-api/index.html +3 -1
- package/dist/serve/site-ui/docs/pyric-ai-scripting-reference-api.md +2 -0
- package/dist/serve/site-ui/docs/pyric-app-check-reference-api/index.html +11 -3
- package/dist/serve/site-ui/docs/pyric-app-check-reference-api.md +13 -3
- package/dist/serve/site-ui/docs/pyric-cli-bridge-client-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-cli-bridge-client-reference-api.md +1 -1
- package/dist/serve/site-ui/docs/pyric-cli-next-reference-api/index.html +1 -0
- package/dist/serve/site-ui/docs/pyric-cli-next-reference-api.md +1 -0
- package/dist/serve/site-ui/docs/pyric-cli-register-client-firestore-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-cli-register-client-firestore-reference-api.md +1 -1
- package/dist/serve/site-ui/docs/pyric-cli-serve-worker-reference-api/index.html +17 -9
- package/dist/serve/site-ui/docs/pyric-cli-serve-worker-reference-api.md +13 -11
- package/dist/serve/site-ui/docs/pyric-database-reference-api/index.html +8 -4
- package/dist/serve/site-ui/docs/pyric-database-reference-api.md +9 -4
- package/dist/serve/site-ui/docs/pyric-rules-reference-api/index.html +15 -4
- package/dist/serve/site-ui/docs/pyric-rules-reference-api.md +21 -4
- package/dist/serve/site-ui/docs/pyric-storage-reference-api/index.html +7 -1
- package/dist/serve/site-ui/docs/pyric-storage-reference-api.md +1 -0
- package/dist/serve/site-ui/docs/reference/cli/index.html +4 -3
- package/dist/serve/site-ui/docs/reference/cli.md +5 -3
- package/dist/serve/site-ui/docs/rules-compat/index.html +150 -49
- package/dist/serve/site-ui/docs/rules-compat.md +149 -51
- package/dist/serve/site-ui/docs/storage-compat/index.html +20 -20
- package/dist/serve/site-ui/docs/storage-compat.md +20 -20
- package/dist/serve/site-ui/docs/tutorial/index.html +2 -1
- package/dist/serve/site-ui/docs/tutorial.md +2 -1
- package/dist/serve/site-ui/examples/chess/index.html +1 -1
- package/dist/serve/site-ui/firestore/index.html +1 -1
- package/dist/serve/site-ui/rtdb/index.html +1 -1
- package/dist/serve/site-ui/settings/index.html +1 -1
- package/dist/serve/site-ui/storage/index.html +1 -1
- package/dist/serve/site-ui/studio/index.html +1 -1
- package/dist/serve/site-ui/traffic/index.html +1 -1
- package/dist/serve/vite-ai-config.d.ts +8 -0
- package/dist/serve/vite-ai-config.d.ts.map +1 -1
- package/dist/serve/vite-ai-config.js +16 -1
- package/dist/serve/vite-ai-config.js.map +1 -1
- package/dist/serve/vite-functions-development.d.ts +3 -3
- package/dist/serve/vite-functions-development.d.ts.map +1 -1
- package/dist/serve/vite-functions-development.js +1 -1
- package/dist/serve/vite-functions-development.js.map +1 -1
- package/dist/serve/vite-generation-bridge.d.ts +2 -2
- package/dist/serve/vite-generation-bridge.d.ts.map +1 -1
- package/dist/serve/vite-generation-functions.d.ts +3 -3
- package/dist/serve/vite-generation-functions.d.ts.map +1 -1
- package/dist/serve/vite-generation-functions.js +1 -1
- package/dist/serve/vite-generation-functions.js.map +1 -1
- package/dist/serve/vite-generation-middleware.d.ts +1 -1
- package/dist/serve/vite-generation-middleware.d.ts.map +1 -1
- package/dist/serve/vite-generation-middleware.js +36 -1
- package/dist/serve/vite-generation-middleware.js.map +1 -1
- package/dist/serve/vite-module-swap.d.ts.map +1 -1
- package/dist/serve/vite-module-swap.js +8 -0
- package/dist/serve/vite-module-swap.js.map +1 -1
- package/dist/serve/vite-page-runtime.d.ts.map +1 -1
- package/dist/serve/vite-page-runtime.js +7 -1
- package/dist/serve/vite-page-runtime.js.map +1 -1
- package/dist/serve/vite-rules-source.d.ts +1 -1
- package/dist/serve/vite-rules-source.d.ts.map +1 -1
- package/dist/serve/vite-rules-source.js +2 -4
- package/dist/serve/vite-rules-source.js.map +1 -1
- package/dist/serve/vite-sandbox-generation.d.ts +2 -2
- package/dist/serve/vite-sandbox-generation.d.ts.map +1 -1
- package/dist/serve/vite-sandbox-generation.js +2 -2
- package/dist/serve/vite-sandbox-generation.js.map +1 -1
- package/dist/serve/worker/client/auth.d.ts +29 -5
- package/dist/serve/worker/client/auth.d.ts.map +1 -1
- package/dist/serve/worker/client/auth.js +61 -11
- package/dist/serve/worker/client/auth.js.map +1 -1
- package/dist/serve/worker/client/clock.d.ts +0 -16
- package/dist/serve/worker/client/clock.d.ts.map +1 -1
- package/dist/serve/worker/client/clock.js +23 -10
- package/dist/serve/worker/client/clock.js.map +1 -1
- package/dist/serve/worker/client/firestore-reads.d.ts +12 -5
- package/dist/serve/worker/client/firestore-reads.d.ts.map +1 -1
- package/dist/serve/worker/client/firestore-reads.js +47 -16
- package/dist/serve/worker/client/firestore-reads.js.map +1 -1
- package/dist/serve/worker/client/firestore-refs.d.ts.map +1 -1
- package/dist/serve/worker/client/firestore-refs.js +4 -14
- package/dist/serve/worker/client/firestore-refs.js.map +1 -1
- package/dist/serve/worker/client/rtdb-connection-lifecycle.d.ts.map +1 -1
- package/dist/serve/worker/client/rtdb-connection-lifecycle.js +5 -0
- package/dist/serve/worker/client/rtdb-connection-lifecycle.js.map +1 -1
- package/dist/serve/worker/client/rtdb-snapshots.d.ts +7 -0
- package/dist/serve/worker/client/rtdb-snapshots.d.ts.map +1 -1
- package/dist/serve/worker/client/rtdb-snapshots.js +25 -1
- package/dist/serve/worker/client/rtdb-snapshots.js.map +1 -1
- package/dist/serve/worker/client/rtdb-value-validation.d.ts +21 -0
- package/dist/serve/worker/client/rtdb-value-validation.d.ts.map +1 -0
- package/dist/serve/worker/client/rtdb-value-validation.js +183 -0
- package/dist/serve/worker/client/rtdb-value-validation.js.map +1 -0
- package/dist/serve/worker/client/rtdb-writes.d.ts.map +1 -1
- package/dist/serve/worker/client/rtdb-writes.js +7 -0
- package/dist/serve/worker/client/rtdb-writes.js.map +1 -1
- package/dist/serve/worker/client/snapshots.d.ts +2 -0
- package/dist/serve/worker/client/snapshots.d.ts.map +1 -1
- package/dist/serve/worker/client/snapshots.js +13 -7
- package/dist/serve/worker/client/snapshots.js.map +1 -1
- package/dist/serve/worker/client/websocket-connection.d.ts +6 -0
- package/dist/serve/worker/client/websocket-connection.d.ts.map +1 -1
- package/dist/serve/worker/client/websocket-connection.js +32 -3
- package/dist/serve/worker/client/websocket-connection.js.map +1 -1
- package/dist/serve/worker/host/auth-credential-sign-in.d.ts +33 -0
- package/dist/serve/worker/host/auth-credential-sign-in.d.ts.map +1 -0
- package/dist/serve/worker/host/auth-credential-sign-in.js +70 -0
- package/dist/serve/worker/host/auth-credential-sign-in.js.map +1 -0
- package/dist/serve/worker/host/auth-reauthentication.js +3 -3
- package/dist/serve/worker/host/auth-reauthentication.js.map +1 -1
- package/dist/serve/worker/host/rules.d.ts +15 -1
- package/dist/serve/worker/host/rules.d.ts.map +1 -1
- package/dist/serve/worker/host/rules.js +43 -34
- package/dist/serve/worker/host/rules.js.map +1 -1
- package/dist/serve/worker/host/staged-sign-in-results.d.ts +24 -0
- package/dist/serve/worker/host/staged-sign-in-results.d.ts.map +1 -0
- package/dist/serve/worker/host/staged-sign-in-results.js +40 -0
- package/dist/serve/worker/host/staged-sign-in-results.js.map +1 -0
- package/dist/serve/worker/host/storage.d.ts.map +1 -1
- package/dist/serve/worker/host/storage.js +20 -12
- package/dist/serve/worker/host/storage.js.map +1 -1
- package/dist/serve/worker/host/subscriptions.d.ts.map +1 -1
- package/dist/serve/worker/host/subscriptions.js +6 -2
- package/dist/serve/worker/host/subscriptions.js.map +1 -1
- package/dist/serve/worker/host-auth.d.ts +3 -0
- package/dist/serve/worker/host-auth.d.ts.map +1 -1
- package/dist/serve/worker/host-auth.js +32 -13
- package/dist/serve/worker/host-auth.js.map +1 -1
- package/dist/serve/worker/inbound-validation/operation-arguments.d.ts.map +1 -1
- package/dist/serve/worker/inbound-validation/operation-arguments.js +27 -14
- package/dist/serve/worker/inbound-validation/operation-arguments.js.map +1 -1
- package/dist/serve/worker/operation-persistence.d.ts +1 -0
- package/dist/serve/worker/operation-persistence.d.ts.map +1 -1
- package/dist/serve/worker/operation-persistence.js +1 -0
- package/dist/serve/worker/operation-persistence.js.map +1 -1
- package/dist/serve/worker/protocol.d.ts +9 -1
- package/dist/serve/worker/protocol.d.ts.map +1 -1
- package/dist/serve/worker/protocol.js.map +1 -1
- package/dist/serve/worker/rtdb-value-equality.d.ts.map +1 -1
- package/dist/serve/worker/rtdb-value-equality.js +3 -1
- package/dist/serve/worker/rtdb-value-equality.js.map +1 -1
- package/dist/serve/worker/serve-init.d.ts.map +1 -1
- package/dist/serve/worker/serve-init.js +3 -9
- package/dist/serve/worker/serve-init.js.map +1 -1
- package/dist/serve/worker-build-lock.d.ts +23 -0
- package/dist/serve/worker-build-lock.d.ts.map +1 -0
- package/dist/serve/worker-build-lock.js +179 -0
- package/dist/serve/worker-build-lock.js.map +1 -0
- package/dist/serve/worker-bundle-cache.d.ts +17 -0
- package/dist/serve/worker-bundle-cache.d.ts.map +1 -0
- package/dist/serve/worker-bundle-cache.js +89 -0
- package/dist/serve/worker-bundle-cache.js.map +1 -0
- package/dist/verify/cases.js +7 -3
- package/dist/verify/cases.js.map +1 -1
- package/dist/verify/index.d.ts.map +1 -1
- package/dist/verify/index.js +11 -5
- package/dist/verify/index.js.map +1 -1
- package/package.json +10 -4
- package/src/assurance/.generated/conformance-verdicts.ts +107 -40
- package/src/assurance/capabilities.ts +11 -15
- package/src/bounded-request.ts +66 -7
- package/src/bridge/client/bridge-url.ts +5 -1
- package/src/bridge/client/bridge.ts +19 -3
- package/src/bridge/frame-output.ts +45 -0
- package/src/bridge/protocol.ts +13 -0
- package/src/bridge/server/in-process.ts +57 -17
- package/src/bridge/server/peer.ts +11 -0
- package/src/bridge/server/standalone.ts +29 -107
- package/src/bridge/surface/arguments/sandbox.ts +2 -69
- package/src/bridge/surface/arguments/seed.ts +78 -0
- package/src/bridge/surface/context.ts +26 -37
- package/src/bridge/surface/database-instance-catalog.ts +4 -32
- package/src/bridge/surface/database-instance-project.ts +40 -0
- package/src/bridge/surface/database-instance.ts +4 -4
- package/src/bridge/surface/functions-runtime.ts +5 -5
- package/src/bridge/surface/held-identity.ts +4 -4
- package/src/bridge/surface/manifest.sandbox.generated.ts +137 -0
- package/src/bridge/surface/method-types.ts +61 -7
- package/src/bridge/surface/methods/ai_logic/clearScripts.ts +2 -1
- package/src/bridge/surface/methods/ai_logic/script.ts +2 -1
- package/src/bridge/surface/methods/ai_logic/scripts.ts +2 -1
- package/src/bridge/surface/methods/ai_logic/status.ts +1 -0
- package/src/bridge/surface/methods/assurance/attach.ts +1 -0
- package/src/bridge/surface/methods/assurance/canIUse.ts +1 -0
- package/src/bridge/surface/methods/assurance/define.ts +1 -0
- package/src/bridge/surface/methods/assurance/export.ts +1 -0
- package/src/bridge/surface/methods/assurance/inspect.ts +1 -0
- package/src/bridge/surface/methods/assurance/map.ts +1 -0
- package/src/bridge/surface/methods/assurance/minimize.ts +1 -0
- package/src/bridge/surface/methods/assurance/propose.ts +1 -0
- package/src/bridge/surface/methods/assurance/replaySession.ts +1 -0
- package/src/bridge/surface/methods/assurance/run.ts +1 -0
- package/src/bridge/surface/methods/assurance/start.ts +1 -0
- package/src/bridge/surface/methods/assurance/testRulesHosted.ts +1 -0
- package/src/bridge/surface/methods/assurance/verify.ts +1 -0
- package/src/bridge/surface/methods/assurance/verifyCases.ts +1 -0
- package/src/bridge/surface/methods/auth/actAsAdmin.ts +1 -0
- package/src/bridge/surface/methods/auth/actAsAnonymous.ts +1 -0
- package/src/bridge/surface/methods/auth/createCustomToken.ts +1 -0
- package/src/bridge/surface/methods/auth/createUser.ts +2 -1
- package/src/bridge/surface/methods/auth/deleteUser.ts +2 -1
- package/src/bridge/surface/methods/auth/getUser.ts +2 -1
- package/src/bridge/surface/methods/auth/getUserByEmail.ts +2 -1
- package/src/bridge/surface/methods/auth/impersonate.ts +1 -0
- package/src/bridge/surface/methods/auth/importUsers.ts +3 -2
- package/src/bridge/surface/methods/auth/listUsers.ts +2 -1
- package/src/bridge/surface/methods/auth/sessions.ts +1 -0
- package/src/bridge/surface/methods/auth/setCustomUserClaims.ts +2 -1
- package/src/bridge/surface/methods/auth/signInAnonymously.ts +1 -0
- package/src/bridge/surface/methods/auth/signInWithCredential.ts +1 -0
- package/src/bridge/surface/methods/auth/signInWithCustomToken.ts +1 -0
- package/src/bridge/surface/methods/auth/signInWithEmailAndPassword.ts +1 -0
- package/src/bridge/surface/methods/auth/signOut.ts +1 -0
- package/src/bridge/surface/methods/auth/takeAuthMail.ts +1 -0
- package/src/bridge/surface/methods/auth/updateUser.ts +2 -1
- package/src/bridge/surface/methods/auth/useAppSession.ts +1 -0
- package/src/bridge/surface/methods/auth/whoami.ts +1 -0
- package/src/bridge/surface/methods/database/crawl.ts +1 -0
- package/src/bridge/surface/methods/database/get.ts +1 -0
- package/src/bridge/surface/methods/database/push.ts +1 -0
- package/src/bridge/surface/methods/database/query.ts +1 -0
- package/src/bridge/surface/methods/database/remove.ts +1 -0
- package/src/bridge/surface/methods/database/set.ts +1 -0
- package/src/bridge/surface/methods/database/update.ts +1 -0
- package/src/bridge/surface/methods/firestore/addDoc.ts +2 -1
- package/src/bridge/surface/methods/firestore/deleteDoc.ts +2 -1
- package/src/bridge/surface/methods/firestore/discoverPaths.ts +1 -0
- package/src/bridge/surface/methods/firestore/extractIndexes.ts +1 -0
- package/src/bridge/surface/methods/firestore/findCollectionGroup.ts +1 -0
- package/src/bridge/surface/methods/firestore/getAggregateFromServer.ts +1 -0
- package/src/bridge/surface/methods/firestore/getCountFromServer.ts +1 -0
- package/src/bridge/surface/methods/firestore/getDoc.ts +2 -1
- package/src/bridge/surface/methods/firestore/getDocs.ts +2 -1
- package/src/bridge/surface/methods/firestore/setDoc.ts +2 -1
- package/src/bridge/surface/methods/firestore/updateDoc.ts +2 -1
- package/src/bridge/surface/methods/firestore/writeBatch.ts +2 -1
- package/src/bridge/surface/methods/firestore/writeIndexes.ts +1 -0
- package/src/bridge/surface/methods/functions/executions.ts +2 -1
- package/src/bridge/surface/methods/functions/fire.ts +7 -6
- package/src/bridge/surface/methods/functions/listTriggers.ts +1 -0
- package/src/bridge/surface/methods/messaging/deliveries.ts +1 -0
- package/src/bridge/surface/methods/messaging/send.ts +2 -1
- package/src/bridge/surface/methods/messaging/subscribeToTopic.ts +1 -0
- package/src/bridge/surface/methods/messaging/tokens.ts +1 -0
- package/src/bridge/surface/methods/messaging/unsubscribeFromTopic.ts +1 -0
- package/src/bridge/surface/methods/registry.ts +2 -12
- package/src/bridge/surface/methods/rules/explainDenial.ts +1 -0
- package/src/bridge/surface/methods/rules/getStdlib.ts +1 -0
- package/src/bridge/surface/methods/rules/lint.ts +1 -0
- package/src/bridge/surface/methods/rules/listStdlib.ts +1 -0
- package/src/bridge/surface/methods/rules/set.ts +1 -0
- package/src/bridge/surface/methods/rules/simulate.ts +1 -0
- package/src/bridge/surface/methods/sandbox/activity.ts +2 -1
- package/src/bridge/surface/methods/sandbox/advanceClock.ts +1 -0
- package/src/bridge/surface/methods/sandbox/apply.ts +1 -0
- package/src/bridge/surface/methods/sandbox/checkpoint.ts +1 -0
- package/src/bridge/surface/methods/sandbox/deleteCapture.ts +1 -1
- package/src/bridge/surface/methods/sandbox/deleteCheckpoint.ts +1 -0
- package/src/bridge/surface/methods/sandbox/diff.ts +1 -0
- package/src/bridge/surface/methods/sandbox/discard.ts +1 -0
- package/src/bridge/surface/methods/sandbox/events.ts +2 -1
- package/src/bridge/surface/methods/sandbox/exportFixture.ts +1 -0
- package/src/bridge/surface/methods/sandbox/fork.ts +1 -0
- package/src/bridge/surface/methods/sandbox/inspect.ts +2 -1
- package/src/bridge/surface/methods/sandbox/listBranches.ts +1 -0
- package/src/bridge/surface/methods/sandbox/listCaptures.ts +1 -1
- package/src/bridge/surface/methods/sandbox/listCheckpoints.ts +1 -0
- package/src/bridge/surface/methods/sandbox/listeners.ts +1 -0
- package/src/bridge/surface/methods/sandbox/openCapture.ts +1 -1
- package/src/bridge/surface/methods/sandbox/promote.ts +1 -0
- package/src/bridge/surface/methods/sandbox/renameCapture.ts +1 -1
- package/src/bridge/surface/methods/sandbox/reset.ts +3 -2
- package/src/bridge/surface/methods/sandbox/resetClock.ts +1 -0
- package/src/bridge/surface/methods/sandbox/restore.ts +1 -0
- package/src/bridge/surface/methods/sandbox/saveCapture.ts +1 -1
- package/src/bridge/surface/methods/sandbox/seed.ts +3 -2
- package/src/bridge/surface/methods/sandbox/seedFromFixture.ts +1 -0
- package/src/bridge/surface/methods/sandbox/setClock.ts +1 -0
- package/src/bridge/surface/methods/sandbox-registry.ts +24 -0
- package/src/bridge/surface/methods/storage/deleteObject.ts +1 -0
- package/src/bridge/surface/methods/storage/getBytes.ts +1 -0
- package/src/bridge/surface/methods/storage/getDownloadURL.ts +1 -0
- package/src/bridge/surface/methods/storage/getMetadata.ts +1 -0
- package/src/bridge/surface/methods/storage/listAll.ts +1 -0
- package/src/bridge/surface/methods/storage/provision.ts +1 -0
- package/src/bridge/surface/methods/storage/setCrossServiceIam.ts +1 -0
- package/src/bridge/surface/methods/storage/status.ts +1 -0
- package/src/bridge/surface/methods/storage/updateMetadata.ts +1 -0
- package/src/bridge/surface/methods/storage/uploadBytes.ts +1 -0
- package/src/bridge/surface/request-instant.ts +2 -2
- package/src/bridge/surface/rules-engines/database.ts +1 -2
- package/src/bridge/surface/rules-engines/storage-request-resource.ts +275 -0
- package/src/bridge/surface/rules-engines/storage.ts +54 -81
- package/src/bridge/surface/sandbox-context.ts +49 -0
- package/src/bridge/surface/service-handles.ts +13 -9
- package/src/bridge/surface/sign-in.ts +3 -3
- package/src/bridge/surface/storage-rules.ts +2 -14
- package/src/bridge/surface/stored-identity.ts +3 -3
- package/src/bridge/surface/types.ts +30 -8
- package/src/cli/firebase-json.ts +45 -7
- package/src/cli/firestore-indexes.ts +2 -1
- package/src/cli/index.ts +46 -11
- package/src/cli/public-dir-hint.ts +35 -0
- package/src/cli/run.ts +35 -7
- package/src/cli/sandbox-runner.ts +10 -2
- package/src/cli/serve-diagnostics.ts +12 -1
- package/src/cli/serve.ts +27 -26
- package/src/cli/service-commands.test.ts +7 -0
- package/src/cli/snapshot.ts +15 -6
- package/src/cli/surface-method-runner.ts +1 -1
- package/src/cli/verify.ts +11 -1
- package/src/conformance/.generated/can-i-use-browser.ts +22 -3
- package/src/conformance/.generated/can-i-use.ts +1 -1
- package/src/conformance/.generated/conformance-docs.ts +1 -1
- package/src/conformance/.generated/served-availability.ts +1 -1
- package/src/discover/merge.ts +12 -3
- package/src/functions/child-protocol.ts +59 -0
- package/src/functions/child.ts +107 -0
- package/src/{functions-rtdb → functions}/development-runtime.ts +13 -14
- package/src/functions/endpoints.ts +80 -0
- package/src/{functions-rtdb → functions}/project.ts +2 -2
- package/src/functions/rtdb/child-runtime.ts +139 -0
- package/src/{functions-rtdb → functions/rtdb}/discovery.ts +9 -43
- package/src/{functions-rtdb → functions/rtdb}/remote-delivery.ts +1 -1
- package/src/functions/spawn.ts +212 -0
- package/src/functions/unsupported.ts +42 -0
- package/src/google-endpoints.ts +74 -3
- package/src/next/bridge-import-loader.ts +56 -0
- package/src/next/bridge-imports.ts +108 -0
- package/src/next/client-aliases.ts +14 -27
- package/src/next/guard.ts +33 -11
- package/src/next/turbopack-config.ts +26 -0
- package/src/next/webpack-config.ts +26 -0
- package/src/next/with-pyric.ts +26 -0
- package/src/register/activation.ts +26 -0
- package/src/register/app-bridge-admin-app-check.ts +3 -1
- package/src/register/child-process-guard.ts +189 -0
- package/src/register/client/bootstrap.ts +7 -1
- package/src/register/connect-prototypes.ts +12 -0
- package/src/register/hooks.ts +56 -3
- package/src/register/index.ts +92 -20
- package/src/register/mapping.ts +57 -3
- package/src/register/net-guard.ts +149 -39
- package/src/register/package-identity.ts +98 -0
- package/src/register/swap-or-stop.ts +194 -0
- package/src/register/worker-guard.ts +90 -0
- package/src/remote/resolve-host.ts +14 -2
- package/src/serve/ai-proxy.ts +36 -8
- package/src/serve/app-ports.ts +119 -0
- package/src/serve/bridge-mount.ts +36 -8
- package/src/serve/bundler.ts +87 -29
- package/src/serve/discovery.ts +244 -67
- package/src/serve/entries/auth.ts +22 -1
- package/src/serve/entries/firestore-surface.ts +1 -0
- package/src/serve/entries/init-payload.ts +28 -5
- package/src/serve/entries/moved-host.ts +28 -0
- package/src/serve/entries/runtime-origin.ts +6 -0
- package/src/serve/entries/unsupported/firestore.ts +0 -1
- package/src/serve/entries/worker-runtime.ts +19 -6
- package/src/serve/firebase-module-swap.ts +98 -15
- package/src/serve/gemini-proxy.ts +2 -2
- package/src/serve/hosted/runtime.ts +10 -2
- package/src/serve/namespace.ts +41 -29
- package/src/serve/repro/compare.ts +9 -1
- package/src/serve/rules-fixture-check.ts +34 -9
- package/src/serve/rules.ts +104 -20
- package/src/serve/sandbox-session.ts +11 -3
- package/src/serve/server.ts +29 -2
- package/src/serve/vite-ai-config.ts +19 -1
- package/src/serve/vite-functions-development.ts +3 -3
- package/src/serve/vite-generation-bridge.ts +2 -2
- package/src/serve/vite-generation-functions.ts +5 -5
- package/src/serve/vite-generation-middleware.ts +38 -2
- package/src/serve/vite-module-swap.ts +8 -0
- package/src/serve/vite-page-runtime.ts +6 -0
- package/src/serve/vite-rules-source.ts +2 -5
- package/src/serve/vite-sandbox-generation.ts +5 -5
- package/src/serve/worker/__tests__/auth-credential-sign-in.test.ts +343 -0
- package/src/serve/worker/__tests__/auth-m2-parity.test.ts +45 -1
- package/src/serve/worker/__tests__/staged-sign-in-results.test.ts +139 -0
- package/src/serve/worker/client/auth.ts +97 -21
- package/src/serve/worker/client/clock.ts +10 -12
- package/src/serve/worker/client/firestore-reads.ts +70 -21
- package/src/serve/worker/client/firestore-refs.ts +4 -14
- package/src/serve/worker/client/rtdb-connection-lifecycle.ts +5 -0
- package/src/serve/worker/client/rtdb-snapshots.ts +24 -2
- package/src/serve/worker/client/rtdb-value-validation.ts +198 -0
- package/src/serve/worker/client/rtdb-writes.ts +7 -0
- package/src/serve/worker/client/snapshots.ts +15 -6
- package/src/serve/worker/client/websocket-connection.ts +39 -3
- package/src/serve/worker/host/auth-credential-sign-in.ts +97 -0
- package/src/serve/worker/host/auth-reauthentication.ts +3 -3
- package/src/serve/worker/host/rules.ts +53 -34
- package/src/serve/worker/host/staged-sign-in-results.ts +53 -0
- package/src/serve/worker/host/storage.ts +26 -11
- package/src/serve/worker/host/subscriptions.ts +7 -4
- package/src/serve/worker/host-auth.ts +33 -15
- package/src/serve/worker/inbound-validation/operation-arguments.ts +27 -14
- package/src/serve/worker/operation-persistence.ts +1 -0
- package/src/serve/worker/protocol.ts +7 -1
- package/src/serve/worker/rtdb-value-equality.ts +3 -1
- package/src/serve/worker/serve-init.ts +3 -9
- package/src/serve/worker-build-lock.ts +207 -0
- package/src/serve/worker-bundle-cache.ts +90 -0
- package/src/verify/cases.ts +6 -3
- package/src/verify/index.ts +16 -4
- package/dist/functions-rtdb/child.d.ts.map +0 -1
- package/dist/functions-rtdb/child.js +0 -386
- package/dist/functions-rtdb/child.js.map +0 -1
- package/dist/functions-rtdb/delivery.d.ts.map +0 -1
- package/dist/functions-rtdb/delivery.js.map +0 -1
- package/dist/functions-rtdb/development-runtime.d.ts.map +0 -1
- package/dist/functions-rtdb/development-runtime.js.map +0 -1
- package/dist/functions-rtdb/discovery.d.ts.map +0 -1
- package/dist/functions-rtdb/discovery.js.map +0 -1
- package/dist/functions-rtdb/event.d.ts.map +0 -1
- package/dist/functions-rtdb/event.js.map +0 -1
- package/dist/functions-rtdb/events.d.ts.map +0 -1
- package/dist/functions-rtdb/events.js.map +0 -1
- package/dist/functions-rtdb/execution-log.d.ts.map +0 -1
- package/dist/functions-rtdb/execution-log.js.map +0 -1
- package/dist/functions-rtdb/execution.d.ts.map +0 -1
- package/dist/functions-rtdb/execution.js.map +0 -1
- package/dist/functions-rtdb/in-memory-delivery.d.ts.map +0 -1
- package/dist/functions-rtdb/in-memory-delivery.js.map +0 -1
- package/dist/functions-rtdb/module-loader.d.ts.map +0 -1
- package/dist/functions-rtdb/module-loader.js.map +0 -1
- package/dist/functions-rtdb/project.d.ts +0 -7
- package/dist/functions-rtdb/project.d.ts.map +0 -1
- package/dist/functions-rtdb/project.js.map +0 -1
- package/dist/functions-rtdb/projection.d.ts.map +0 -1
- package/dist/functions-rtdb/projection.js.map +0 -1
- package/dist/functions-rtdb/reference-pattern.d.ts.map +0 -1
- package/dist/functions-rtdb/reference-pattern.js.map +0 -1
- package/dist/functions-rtdb/remote-delivery.d.ts.map +0 -1
- package/dist/functions-rtdb/remote-delivery.js.map +0 -1
- package/dist/serve/gemini-error-redaction.d.ts +0 -6
- package/dist/serve/gemini-error-redaction.d.ts.map +0 -1
- package/dist/serve/gemini-error-redaction.js +0 -61
- package/dist/serve/gemini-error-redaction.js.map +0 -1
- package/dist/serve/site-ui/_astro/app.C--T2qDK.js +0 -151
- package/dist/serve/site-ui/_astro/app.DqyhRyrU.js +0 -1
- package/dist/serve/site-ui/_astro/sandbox-controls.Bv6lfpIe.js +0 -1725
- package/dist/serve/site-ui/_astro/writes.Bg0YEEA7.js +0 -1
- package/src/functions-rtdb/child.ts +0 -512
- package/src/serve/gemini-error-redaction.ts +0 -60
- /package/dist/{functions-rtdb → functions}/events.d.ts +0 -0
- /package/dist/{functions-rtdb → functions}/events.js +0 -0
- /package/dist/{functions-rtdb → functions}/execution-log.d.ts +0 -0
- /package/dist/{functions-rtdb → functions}/execution-log.js +0 -0
- /package/dist/{functions-rtdb → functions}/module-loader.d.ts +0 -0
- /package/dist/{functions-rtdb → functions}/module-loader.js +0 -0
- /package/dist/{functions-rtdb → functions/rtdb}/delivery.d.ts +0 -0
- /package/dist/{functions-rtdb → functions/rtdb}/delivery.js +0 -0
- /package/dist/{functions-rtdb → functions/rtdb}/event.d.ts +0 -0
- /package/dist/{functions-rtdb → functions/rtdb}/event.js +0 -0
- /package/dist/{functions-rtdb → functions/rtdb}/execution.d.ts +0 -0
- /package/dist/{functions-rtdb → functions/rtdb}/execution.js +0 -0
- /package/dist/{functions-rtdb → functions/rtdb}/in-memory-delivery.d.ts +0 -0
- /package/dist/{functions-rtdb → functions/rtdb}/in-memory-delivery.js +0 -0
- /package/dist/{functions-rtdb → functions/rtdb}/projection.d.ts +0 -0
- /package/dist/{functions-rtdb → functions/rtdb}/projection.js +0 -0
- /package/dist/{functions-rtdb → functions/rtdb}/reference-pattern.d.ts +0 -0
- /package/dist/{functions-rtdb → functions/rtdb}/reference-pattern.js +0 -0
- /package/dist/{functions-rtdb → functions/rtdb}/remote-delivery.js +0 -0
- /package/src/{functions-rtdb → functions}/events.ts +0 -0
- /package/src/{functions-rtdb → functions}/execution-log.ts +0 -0
- /package/src/{functions-rtdb → functions}/module-loader.ts +0 -0
- /package/src/{functions-rtdb → functions/rtdb}/delivery.ts +0 -0
- /package/src/{functions-rtdb → functions/rtdb}/event.ts +0 -0
- /package/src/{functions-rtdb → functions/rtdb}/execution.ts +0 -0
- /package/src/{functions-rtdb → functions/rtdb}/in-memory-delivery.ts +0 -0
- /package/src/{functions-rtdb → functions/rtdb}/projection.ts +0 -0
- /package/src/{functions-rtdb → functions/rtdb}/reference-pattern.ts +0 -0
package/src/bounded-request.ts
CHANGED
|
@@ -10,11 +10,13 @@
|
|
|
10
10
|
* socket in any state. `req.setTimeout()` is no substitute: it does not arm
|
|
11
11
|
* until the `connect` event.
|
|
12
12
|
*
|
|
13
|
-
* Discovery's health probes and the register beacon
|
|
14
|
-
* {@link boundedRequest}
|
|
13
|
+
* Discovery's health probes and the register beacon go through
|
|
14
|
+
* {@link boundedRequest}; the CLI's other local probes (snapshot, serve
|
|
15
|
+
* diagnostics, the sandbox peer wait, the collision probe) go through its
|
|
16
|
+
* fetch-shaped {@link boundedFetch} (#1167). The http modules load on first use, so a runtime
|
|
15
17
|
* without them loses the request only, never the importing module.
|
|
16
18
|
*/
|
|
17
|
-
import type { IncomingMessage, OutgoingHttpHeaders, request as httpRequestFn } from 'node:http';
|
|
19
|
+
import type { IncomingHttpHeaders, IncomingMessage, OutgoingHttpHeaders, request as httpRequestFn } from 'node:http';
|
|
18
20
|
import { createRequire } from 'node:module';
|
|
19
21
|
|
|
20
22
|
/** The most response body a bounded request reads. Past it, the request gives up. */
|
|
@@ -33,10 +35,15 @@ export interface BoundedRequestOptions {
|
|
|
33
35
|
* deadline still ends it.
|
|
34
36
|
*/
|
|
35
37
|
readonly unref?: boolean;
|
|
38
|
+
/** The most response body to read. Past it, the request gives up. Defaults to {@link MAX_RESPONSE_BYTES}. */
|
|
39
|
+
readonly maxBytes?: number;
|
|
40
|
+
/** Ends the request early, as the deadline would. */
|
|
41
|
+
readonly signal?: AbortSignal;
|
|
36
42
|
}
|
|
37
43
|
|
|
38
44
|
export interface BoundedResponse {
|
|
39
45
|
readonly status: number;
|
|
46
|
+
readonly headers: IncomingHttpHeaders;
|
|
40
47
|
readonly body: Buffer;
|
|
41
48
|
}
|
|
42
49
|
|
|
@@ -73,13 +80,18 @@ function readBody(res: IncomingMessage, maxBytes: number): Promise<Buffer | null
|
|
|
73
80
|
/**
|
|
74
81
|
* Send one request to `url` and read its response, all within
|
|
75
82
|
* `options.deadlineMs` of the call. `null` for a refused or dropped connect,
|
|
76
|
-
* an error, a body past
|
|
77
|
-
*
|
|
83
|
+
* an error, a body past `options.maxBytes`, a url the http module rejects, an
|
|
84
|
+
* aborted `options.signal`, or the deadline passing. Never rejects. Redirects are not followed:
|
|
78
85
|
* a 3xx is returned as its own status. No agent is used, and the socket is
|
|
79
86
|
* destroyed when the result settles, so nothing outlives the call.
|
|
80
87
|
*/
|
|
81
88
|
export function boundedRequest(url: string, options: BoundedRequestOptions): Promise<BoundedResponse | null> {
|
|
82
89
|
return new Promise((resolve) => {
|
|
90
|
+
const signal = options.signal;
|
|
91
|
+
if (signal?.aborted) {
|
|
92
|
+
resolve(null);
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
83
95
|
let req: ReturnType<RequestFn>;
|
|
84
96
|
try {
|
|
85
97
|
// No agent: a pooled keep-alive socket would outlive the call.
|
|
@@ -93,10 +105,13 @@ export function boundedRequest(url: string, options: BoundedRequestOptions): Pro
|
|
|
93
105
|
if (settled) return;
|
|
94
106
|
settled = true;
|
|
95
107
|
clearTimeout(deadline);
|
|
108
|
+
signal?.removeEventListener('abort', onAbort);
|
|
96
109
|
req.destroy();
|
|
97
110
|
resolve(result);
|
|
98
111
|
};
|
|
99
112
|
const deadline = setTimeout(() => finish(null), options.deadlineMs);
|
|
113
|
+
const onAbort = (): void => finish(null);
|
|
114
|
+
signal?.addEventListener('abort', onAbort, { once: true });
|
|
100
115
|
if (options.unref) {
|
|
101
116
|
deadline.unref();
|
|
102
117
|
req.on('socket', (socket) => socket.unref());
|
|
@@ -104,9 +119,9 @@ export function boundedRequest(url: string, options: BoundedRequestOptions): Pro
|
|
|
104
119
|
req.on('error', () => finish(null));
|
|
105
120
|
req.on('response', (res: IncomingMessage) => {
|
|
106
121
|
res.on('error', () => finish(null));
|
|
107
|
-
void readBody(res, MAX_RESPONSE_BYTES).then((body) => {
|
|
122
|
+
void readBody(res, options.maxBytes ?? MAX_RESPONSE_BYTES).then((body) => {
|
|
108
123
|
const hasBody = body !== null;
|
|
109
|
-
finish(hasBody ? { status: res.statusCode ?? 0, body } : null);
|
|
124
|
+
finish(hasBody ? { status: res.statusCode ?? 0, headers: res.headers, body } : null);
|
|
110
125
|
});
|
|
111
126
|
});
|
|
112
127
|
req.end(options.body);
|
|
@@ -133,3 +148,47 @@ export async function getJsonWithin(url: string, deadlineMs: number): Promise<Js
|
|
|
133
148
|
return null;
|
|
134
149
|
}
|
|
135
150
|
}
|
|
151
|
+
|
|
152
|
+
/** Options for {@link boundedFetch}: a bounded request plus fetch's redirect mode. */
|
|
153
|
+
export interface BoundedFetchOptions extends BoundedRequestOptions {
|
|
154
|
+
/**
|
|
155
|
+
* Redirects are never followed. `'error'` rejects on a 3xx, as fetch does;
|
|
156
|
+
* `'manual'`, the default, returns it.
|
|
157
|
+
*/
|
|
158
|
+
readonly redirect?: 'error' | 'manual';
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/** Statuses whose `Response` must have a null body. */
|
|
162
|
+
const NULL_BODY_STATUSES = new Set([101, 103, 204, 205, 304]);
|
|
163
|
+
|
|
164
|
+
function headersOf(incoming: IncomingHttpHeaders): Headers {
|
|
165
|
+
const headers = new Headers();
|
|
166
|
+
for (const [name, value] of Object.entries(incoming)) {
|
|
167
|
+
const values = Array.isArray(value) ? value : [value];
|
|
168
|
+
for (const one of values) {
|
|
169
|
+
const isPresent = one !== undefined;
|
|
170
|
+
if (isPresent) headers.append(name, one);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return headers;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* {@link boundedRequest} in fetch's shape, for code written against `fetch`
|
|
178
|
+
* and its injectable `fetchImpl` seams. Resolves a `Response` whose body is
|
|
179
|
+
* already read, and rejects with a `TypeError` where `boundedRequest` gives
|
|
180
|
+
* `null`, as `fetch` rejects on a network error or an abort.
|
|
181
|
+
*/
|
|
182
|
+
export async function boundedFetch(input: string | URL, options: BoundedFetchOptions): Promise<Response> {
|
|
183
|
+
const url = String(input);
|
|
184
|
+
const response = await boundedRequest(url, options);
|
|
185
|
+
if (response === null) throw new TypeError(`fetch failed: ${url}`);
|
|
186
|
+
const { status } = response;
|
|
187
|
+
const isRedirect = status >= 300 && status < 400;
|
|
188
|
+
const refusesRedirect = isRedirect && options.redirect === 'error';
|
|
189
|
+
if (refusesRedirect) throw new TypeError(`fetch failed: ${url} redirected`);
|
|
190
|
+
const isConstructible = status >= 200 && status <= 599;
|
|
191
|
+
if (!isConstructible) throw new TypeError(`fetch failed: ${url} answered ${status}`);
|
|
192
|
+
const body = NULL_BODY_STATUSES.has(status) ? null : new Uint8Array(response.body);
|
|
193
|
+
return new Response(body, { status, headers: headersOf(response.headers) });
|
|
194
|
+
}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { DEFAULT_BRIDGE_PORT, DEFAULT_SANDBOX_PATH } from '../protocol.js';
|
|
2
2
|
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Explicit URL, then `window.__PYRIC_BRIDGE_URL__` when the page sets it (no
|
|
5
|
+
* pyric integration does), then the standalone `pyric bridge` port on the
|
|
6
|
+
* page's hostname, which refuses a browser page with a reason (#1468).
|
|
7
|
+
*/
|
|
4
8
|
export function resolveBridgeUrl(explicit?: string): string {
|
|
5
9
|
const hasExplicitUrl = explicit !== undefined && explicit.length > 0;
|
|
6
10
|
if (hasExplicitUrl) return explicit;
|
|
@@ -7,8 +7,13 @@
|
|
|
7
7
|
*
|
|
8
8
|
* Discovery order for the bridge URL:
|
|
9
9
|
* 1. Explicit `opts.url`.
|
|
10
|
-
* 2. `window.__PYRIC_BRIDGE_URL__
|
|
11
|
-
*
|
|
10
|
+
* 2. `window.__PYRIC_BRIDGE_URL__`, when the page sets it. No pyric
|
|
11
|
+
* integration sets it: the Vite plugin, `withPyric` and the served entry
|
|
12
|
+
* mount their own bridge and hand its URL to their own runtime.
|
|
13
|
+
* 3. `ws://${location.hostname}:5174/sandbox`, the standalone `pyric bridge`
|
|
14
|
+
* port. That bridge has no browser socket (#1468): it closes the page
|
|
15
|
+
* with NO_BROWSER_PEER_CLOSE_CODE, and this client stops there with a
|
|
16
|
+
* reason that names `pyric sandbox --bridge`.
|
|
12
17
|
*
|
|
13
18
|
* Reconnect strategy: simple exponential backoff up to 30s. The
|
|
14
19
|
* connection is best-effort — if the bridge is down the host app
|
|
@@ -42,6 +47,7 @@ import {
|
|
|
42
47
|
isBridgeMessage,
|
|
43
48
|
MAX_BRIDGE_FRAME_BYTES,
|
|
44
49
|
assertJsonSafeRelayValue,
|
|
50
|
+
NO_BROWSER_PEER_CLOSE_CODE,
|
|
45
51
|
PEER_REPLACED_CLOSE_CODE,
|
|
46
52
|
WORKER_RELAY_CAPABILITY,
|
|
47
53
|
} from '../protocol.js';
|
|
@@ -58,7 +64,8 @@ const utf8 = new TextEncoder();
|
|
|
58
64
|
export interface ConnectBridgeOptions {
|
|
59
65
|
/**
|
|
60
66
|
* Bridge WebSocket URL. Overrides the discovery chain.
|
|
61
|
-
* Example: `ws://localhost:
|
|
67
|
+
* Example: `ws://localhost:3473/__pyric/sandbox`, the socket
|
|
68
|
+
* `pyric sandbox --bridge` serves.
|
|
62
69
|
*/
|
|
63
70
|
url?: string;
|
|
64
71
|
/**
|
|
@@ -367,6 +374,15 @@ export function connectBridge(
|
|
|
367
374
|
// and re-issues it after the next hello, so live worker listeners from
|
|
368
375
|
// THIS connection must go now (or the next connection double-delivers).
|
|
369
376
|
teardownRelaySubs();
|
|
377
|
+
const hasNoBrowserSocket = event.code === NO_BROWSER_PEER_CLOSE_CODE;
|
|
378
|
+
if (hasNoBrowserSocket) {
|
|
379
|
+
// The standalone `pyric bridge` takes no browser peer. Reconnecting
|
|
380
|
+
// can never succeed, so stop and say what to run instead.
|
|
381
|
+
closed = true;
|
|
382
|
+
console.error(`[pyric] ${reason}`);
|
|
383
|
+
setState({ kind: 'disconnected', reason });
|
|
384
|
+
return;
|
|
385
|
+
}
|
|
370
386
|
const isReplacedByPeer = event.code === PEER_REPLACED_CLOSE_CODE;
|
|
371
387
|
if (isReplacedByPeer) {
|
|
372
388
|
// Another tab won the peer slot. Re-helloing now would kick it right
|
|
@@ -93,8 +93,53 @@ export function failBridgeResponse(frame: BridgeMessage, error: FrameError): Bri
|
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
+
const RTDB_WRITE_FIELDS = ['value', 'values', 'priority'] as const;
|
|
97
|
+
|
|
98
|
+
function childPath(path: string, key: string): string {
|
|
99
|
+
return path.endsWith('/') ? `${path}${key}` : `${path}/${key}`;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/** Where `value` holds something JSON drops or turns into null, and what it is. */
|
|
103
|
+
function findJsonLoss(value: unknown, path: string): { path: string; found: string } | undefined {
|
|
104
|
+
const isLost = value === undefined || (typeof value === 'number' && !Number.isFinite(value));
|
|
105
|
+
if (isLost) return { path, found: String(value) };
|
|
106
|
+
const isLeaf = typeof value !== 'object' || value === null;
|
|
107
|
+
if (isLeaf) return;
|
|
108
|
+
for (const [key, child] of Object.entries(value)) {
|
|
109
|
+
const loss = findJsonLoss(child, childPath(path, key));
|
|
110
|
+
if (loss !== undefined) return loss;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Refuse an RTDB write whose value JSON cannot carry. NaN and Infinity encode
|
|
116
|
+
* as null and an undefined member vanishes, so the host would store a delete
|
|
117
|
+
* (RP-1, #1362). The served client refuses these first with the SDK's text;
|
|
118
|
+
* this is the second line.
|
|
119
|
+
*/
|
|
120
|
+
function assertJsonSafeRtdbWrite(frame: BridgeMessage): void {
|
|
121
|
+
const isOtherFrame = frame.type !== 'worker-message';
|
|
122
|
+
if (isOtherFrame) return;
|
|
123
|
+
const message = frame.message;
|
|
124
|
+
const isRtdbOperation = message.t === 'op' && message.method.startsWith('rtdb.');
|
|
125
|
+
if (!isRtdbOperation) return;
|
|
126
|
+
const fields: Record<string, unknown> = { ...message };
|
|
127
|
+
const path = typeof fields.path === 'string' ? fields.path : '/';
|
|
128
|
+
for (const field of RTDB_WRITE_FIELDS) {
|
|
129
|
+
const isAbsent = !Object.hasOwn(fields, field);
|
|
130
|
+
if (isAbsent) continue;
|
|
131
|
+
const loss = findJsonLoss(fields[field], path);
|
|
132
|
+
const isJsonSafe = loss === undefined;
|
|
133
|
+
if (isJsonSafe) continue;
|
|
134
|
+
throw new Error(
|
|
135
|
+
`RTDB ${message.method} ${field} at ${loss.path} holds ${loss.found}, which a JSON frame cannot carry. The write was not sent.`,
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
96
140
|
/** Encode bounded output, retaining correlation when an oversized result can be refused. */
|
|
97
141
|
export function encodeBridgeMessage(frame: BridgeMessage): string | undefined {
|
|
142
|
+
assertJsonSafeRtdbWrite(frame);
|
|
98
143
|
const payload = JSON.stringify(frame);
|
|
99
144
|
const fitsFrameLimit = utf8.encode(payload).byteLength <= MAX_BRIDGE_FRAME_BYTES;
|
|
100
145
|
if (fitsFrameLimit) return payload;
|
package/src/bridge/protocol.ts
CHANGED
|
@@ -84,6 +84,19 @@ export const PEER_REPLACED_CLOSE_CODE = 4001;
|
|
|
84
84
|
/** Human-readable reason sent with {@link PEER_REPLACED_CLOSE_CODE}. */
|
|
85
85
|
export const PEER_REPLACED_CLOSE_REASON = 'replaced by a newer sandbox peer';
|
|
86
86
|
|
|
87
|
+
/**
|
|
88
|
+
* WS close code the standalone `pyric bridge` sends a page that opens its
|
|
89
|
+
* `/sandbox` socket. That bridge has no browser peer (#1468): the page is
|
|
90
|
+
* closed before it can register, and `connectBridge` stops instead of
|
|
91
|
+
* reconnecting. A page that needs a browser bridge runs under
|
|
92
|
+
* `pyric sandbox --bridge`, which serves the page and guards its socket.
|
|
93
|
+
*/
|
|
94
|
+
export const NO_BROWSER_PEER_CLOSE_CODE = 4010;
|
|
95
|
+
|
|
96
|
+
/** Reason sent with {@link NO_BROWSER_PEER_CLOSE_CODE}; a close frame carries at most 123 bytes. */
|
|
97
|
+
export const NO_BROWSER_PEER_CLOSE_REASON =
|
|
98
|
+
'pyric bridge does not accept a browser sandbox. Run pyric sandbox --bridge, which serves the page and its bridge.';
|
|
99
|
+
|
|
87
100
|
// ── Bridge ↔ browser WebSocket protocol ──────────────────────────────
|
|
88
101
|
//
|
|
89
102
|
// All messages are JSON. Each message has a `type` discriminator.
|
|
@@ -53,6 +53,14 @@ import {
|
|
|
53
53
|
import type { BridgeToolEvent } from './bridge.js';
|
|
54
54
|
import type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';
|
|
55
55
|
import { claimProjectState } from '../../serve/hosted/project-ownership.js';
|
|
56
|
+
import {
|
|
57
|
+
firestoreDatabaseWarnings,
|
|
58
|
+
firestoreDatabases,
|
|
59
|
+
prepareStorageRulesSource,
|
|
60
|
+
storageRulesPath,
|
|
61
|
+
} from '../../serve/rules.js';
|
|
62
|
+
import { readFirebaseRcSync, type FirebaseJson } from '../../cli/firebase-json.js';
|
|
63
|
+
import { defaultFirestoreDatabase } from 'pyric/sandbox/internal';
|
|
56
64
|
import { TargetRouter } from './target-router.js';
|
|
57
65
|
import type { discoverServe } from '../../serve/discovery.js';
|
|
58
66
|
import type { callHostedMethod } from '../../cli/hosted-method.js';
|
|
@@ -156,17 +164,44 @@ export interface ProjectRulesLoad {
|
|
|
156
164
|
refused: string | null;
|
|
157
165
|
}
|
|
158
166
|
|
|
167
|
+
function readProjectFirebaseJson(cwd: string): FirebaseJson | null {
|
|
168
|
+
const path = join(cwd, 'firebase.json');
|
|
169
|
+
if (!existsSync(path)) return null;
|
|
170
|
+
try {
|
|
171
|
+
return JSON.parse(readFileSync(path, 'utf8')) as FirebaseJson;
|
|
172
|
+
} catch (error) {
|
|
173
|
+
throw new Error(`pyric: failed to parse firebase.json: ${error instanceof Error ? error.message : String(error)}`);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
159
177
|
/**
|
|
160
|
-
* Load `<cwd>/
|
|
161
|
-
*
|
|
162
|
-
*
|
|
163
|
-
*
|
|
164
|
-
* rules
|
|
165
|
-
*
|
|
178
|
+
* Load the rules `<cwd>/firebase.json` deploys to the `(default)` Firestore
|
|
179
|
+
* database, resolved as the dev server resolves them, else
|
|
180
|
+
* `<cwd>/firestore.rules` when `firebase.json` names none. A file production
|
|
181
|
+
* would not load (it does not parse, or it is past a compile limit) is
|
|
182
|
+
* refused: the rules in force stay, and lint and simulate read the file's
|
|
183
|
+
* source. Null when there is no rules file. Without rules, rules-enforcing
|
|
184
|
+
* (`as:{uid}`) ops fall back to the sandbox's default; admin ops are
|
|
185
|
+
* unaffected. `onWarning` receives one line per named database or unresolved
|
|
186
|
+
* deploy target pyric does not serve yet, and one for a named file that is
|
|
187
|
+
* missing.
|
|
166
188
|
*/
|
|
167
|
-
export function loadProjectRules(
|
|
168
|
-
|
|
169
|
-
|
|
189
|
+
export function loadProjectRules(
|
|
190
|
+
sandbox: LocalSandbox,
|
|
191
|
+
cwd: string,
|
|
192
|
+
onWarning: (message: string) => void = () => {},
|
|
193
|
+
): ProjectRulesLoad | null {
|
|
194
|
+
const config = readProjectFirebaseJson(cwd);
|
|
195
|
+
const projectId = readFirebaseRcSync(cwd)?.projects?.default;
|
|
196
|
+
const databases = firestoreDatabases(cwd, config, projectId === undefined ? {} : { projectId });
|
|
197
|
+
for (const warning of firestoreDatabaseWarnings(cwd, databases)) onWarning(warning);
|
|
198
|
+
const entry = defaultFirestoreDatabase(databases);
|
|
199
|
+
const path = entry?.rulesFile;
|
|
200
|
+
if (entry === undefined || path === undefined) return null;
|
|
201
|
+
if (!existsSync(path)) {
|
|
202
|
+
if (entry.configured) onWarning(`${entry.label} points Firestore rules at ${path}, but it does not exist.`);
|
|
203
|
+
return null;
|
|
204
|
+
}
|
|
170
205
|
return { path, refused: loadFirestoreRules(sandbox, readFileSync(path, 'utf8')) };
|
|
171
206
|
}
|
|
172
207
|
|
|
@@ -179,23 +214,28 @@ export function loadProjectRules(sandbox: LocalSandbox, cwd: string): ProjectRul
|
|
|
179
214
|
* a restored session complete. Returns the storage handle, which the sidecar
|
|
180
215
|
* codec reads and writes; storage keeps its own durability and is not in the
|
|
181
216
|
* bundle at all.
|
|
217
|
+
*
|
|
218
|
+
* Storage enforces the rules file the project deploys, found and prepared as
|
|
219
|
+
* the dev server finds and prepares it: the first `firebase.json` `storage`
|
|
220
|
+
* entry with a `rules` path, else `storage.rules` in `cwd`, with `2+modules`
|
|
221
|
+
* imports resolved against the file's own directory.
|
|
182
222
|
*/
|
|
183
223
|
export function openPersistedServices(sandbox: LocalSandbox, cwd: string): FirebaseStorage {
|
|
184
224
|
getAuth(sandbox);
|
|
185
225
|
getAdminDatabase(sandbox);
|
|
186
226
|
// Storage rules are read only by the call that opens the service, so the
|
|
187
227
|
// project's rules have to be in hand here or not at all.
|
|
188
|
-
const rulesPath =
|
|
228
|
+
const rulesPath = storageRulesPath(cwd, readProjectFirebaseJson(cwd));
|
|
189
229
|
if (!existsSync(rulesPath)) return getAdminStorageSandbox(sandbox);
|
|
190
230
|
const source = readFileSync(rulesPath, 'utf8');
|
|
191
231
|
try {
|
|
192
|
-
return getAdminStorageSandbox(sandbox, { rules: source });
|
|
232
|
+
return getAdminStorageSandbox(sandbox, { rules: prepareStorageRulesSource(source, rulesPath) });
|
|
193
233
|
} catch (error) {
|
|
194
|
-
// A rules file
|
|
195
|
-
// call must still be able to say what is wrong with it. The service
|
|
196
|
-
// without rules and the source is kept for the lint operation.
|
|
234
|
+
// A rules file the sandbox cannot install cannot govern the service, but a
|
|
235
|
+
// lint call must still be able to say what is wrong with it. The service
|
|
236
|
+
// opens without rules and the source is kept for the lint operation.
|
|
197
237
|
process.stderr.write(
|
|
198
|
-
`[pyric mcp in-process]
|
|
238
|
+
`[pyric mcp in-process] Storage rules not loaded: ${error instanceof Error ? error.message : String(error)}\n`,
|
|
199
239
|
);
|
|
200
240
|
rememberUnloadedStorageRules(sandbox, source);
|
|
201
241
|
return getAdminStorageSandbox(sandbox);
|
|
@@ -389,13 +429,13 @@ async function runInProcessSession(
|
|
|
389
429
|
}
|
|
390
430
|
// After the snapshot: restoring it resets the ruleset to the sandbox default,
|
|
391
431
|
// and the project's rules file is the authority for what the server enforces.
|
|
392
|
-
const projectRules = loadProjectRules(sandbox, projectDir);
|
|
432
|
+
const projectRules = loadProjectRules(sandbox, projectDir, log);
|
|
393
433
|
if (projectRules !== null && projectRules.refused === null) {
|
|
394
434
|
log(`rules loaded from ${projectRules.path}`);
|
|
395
435
|
} else if (projectRules !== null) {
|
|
396
436
|
log(`rules not loaded from ${projectRules.path}: ${projectRules.refused} The sandbox keeps the rules in force.`);
|
|
397
437
|
} else {
|
|
398
|
-
log(`no
|
|
438
|
+
log(`no Firestore rules for (default) found in ${projectDir}`);
|
|
399
439
|
}
|
|
400
440
|
const restoredObjects = await loadStorageSidecar(storage, projectDir);
|
|
401
441
|
const restoredStorage = restoredObjects > 0;
|
|
@@ -449,6 +449,17 @@ export function createConsumerSession(
|
|
|
449
449
|
* code lets a route answer 413 instead of treating it as malformed JSON. */
|
|
450
450
|
export const BODY_TOO_LARGE_CODE = 'PYRIC_BODY_TOO_LARGE';
|
|
451
451
|
|
|
452
|
+
/**
|
|
453
|
+
* Headers for an answer sent before the request body was read to its end,
|
|
454
|
+
* as a 413 is. The server is still owed the rest of the upload, so a client
|
|
455
|
+
* that reuses the socket would have its next request read as that remainder
|
|
456
|
+
* and answered 400 (#1706). Closing the connection sends the next request on
|
|
457
|
+
* a fresh one (RFC 9112 §9.6).
|
|
458
|
+
*/
|
|
459
|
+
export function closingHeaders(headers: Record<string, string> = {}): Record<string, string> {
|
|
460
|
+
return { ...headers, connection: 'close' };
|
|
461
|
+
}
|
|
462
|
+
|
|
452
463
|
function bodyTooLarge(): Error {
|
|
453
464
|
return Object.assign(new Error('request body too large'), { code: BODY_TOO_LARGE_CODE });
|
|
454
465
|
}
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Standalone bridge server. Spins up an HTTP server on a known
|
|
3
|
-
* loopback port that handles
|
|
3
|
+
* loopback port that handles two routes:
|
|
4
4
|
*
|
|
5
5
|
* GET /health — diagnostic
|
|
6
6
|
* POST /mcp — MCP-over-HTTP (StreamableHTTPServerTransport)
|
|
7
|
-
*
|
|
7
|
+
*
|
|
8
|
+
* It serves only the tools that run in the bridge process. It has no browser
|
|
9
|
+
* socket (#1468): a page that opens `/sandbox` is closed with
|
|
10
|
+
* NO_BROWSER_PEER_CLOSE_CODE and a reason naming `pyric sandbox --bridge`,
|
|
11
|
+
* before it can register as the sandbox peer. `connectBridge` stops on that
|
|
12
|
+
* close and reports the reason.
|
|
8
13
|
*
|
|
9
14
|
* Bound to 127.0.0.1 only. Refuses to start if the port is occupied.
|
|
10
15
|
*
|
|
@@ -16,7 +21,7 @@
|
|
|
16
21
|
|
|
17
22
|
import { createServer } from 'node:http';
|
|
18
23
|
import { randomUUID } from 'node:crypto';
|
|
19
|
-
import { WebSocketServer
|
|
24
|
+
import { WebSocketServer } from 'ws';
|
|
20
25
|
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
21
26
|
import { createBridge, type Bridge, type BridgeToolEvent } from './bridge.js';
|
|
22
27
|
import { buildMcpServer } from './mcp.js';
|
|
@@ -29,16 +34,15 @@ import {
|
|
|
29
34
|
} from './logger.js';
|
|
30
35
|
import {
|
|
31
36
|
DEFAULT_BRIDGE_PORT,
|
|
32
|
-
MAX_BRIDGE_FRAME_BYTES,
|
|
33
37
|
DEFAULT_HEALTH_PATH,
|
|
34
38
|
DEFAULT_MCP_PATH,
|
|
35
39
|
DEFAULT_SANDBOX_PATH,
|
|
36
|
-
|
|
40
|
+
NO_BROWSER_PEER_CLOSE_CODE,
|
|
41
|
+
NO_BROWSER_PEER_CLOSE_REASON,
|
|
37
42
|
} from '../protocol.js';
|
|
38
|
-
import { parseBridgeMessage, requestEnvelopeError, requestProtocolError } from './request-envelope.js';
|
|
39
|
-
import { sendBridgeMessage } from './socket-message.js';
|
|
40
43
|
import { pyricVersion } from '../../serve/standalone-assets.js';
|
|
41
44
|
import { isAllowedLoopbackRequest, isAllowedUpgrade } from '../../serve/server.js';
|
|
45
|
+
import { createAppPorts } from '../../serve/app-ports.js';
|
|
42
46
|
|
|
43
47
|
const BRIDGE_VERSION = pyricVersion();
|
|
44
48
|
const DEFAULT_SESSION_IDLE_MS = 10 * 60 * 1000; // 10 minutes
|
|
@@ -112,7 +116,8 @@ export async function startServer(
|
|
|
112
116
|
},
|
|
113
117
|
});
|
|
114
118
|
|
|
115
|
-
|
|
119
|
+
// No browser peer can attach here, so the tools a peer would run are not offered.
|
|
120
|
+
const { inProcess } = getBridgeToolSurface({
|
|
116
121
|
projectDir: opts.projectDir ?? process.cwd(),
|
|
117
122
|
consumers: bridge.consumers,
|
|
118
123
|
callerIdentity: bridge.callerIdentity,
|
|
@@ -165,7 +170,7 @@ export async function startServer(
|
|
|
165
170
|
logger.verbose(`session ${id.slice(0, 8)}… initialized`);
|
|
166
171
|
},
|
|
167
172
|
});
|
|
168
|
-
const server = buildMcpServer(bridge, { forwarded, inProcess });
|
|
173
|
+
const server = buildMcpServer(bridge, { forwarded: [], inProcess });
|
|
169
174
|
const session: Session = {
|
|
170
175
|
transport,
|
|
171
176
|
idleTimer: null,
|
|
@@ -185,6 +190,8 @@ export async function startServer(
|
|
|
185
190
|
}
|
|
186
191
|
|
|
187
192
|
// ── HTTP server ─────────────────────────────────────────────────
|
|
193
|
+
// No proxy fronts this bridge, so it learns no port: an MCP request names this port or none.
|
|
194
|
+
const mcpPorts = createAppPorts('127.0.0.1');
|
|
188
195
|
const http = createServer(async (req, res) => {
|
|
189
196
|
const url = req.url ?? '/';
|
|
190
197
|
const debugEnabled = Boolean(process.env.PYRIC_DEBUG);
|
|
@@ -201,7 +208,7 @@ export async function startServer(
|
|
|
201
208
|
const supportsMcpMethod = req.method === 'POST' || req.method === 'GET' || req.method === 'DELETE';
|
|
202
209
|
const requestsMcp = url === DEFAULT_MCP_PATH && supportsMcpMethod;
|
|
203
210
|
if (requestsMcp) {
|
|
204
|
-
const refusesOrigin = !isAllowedLoopbackRequest(req, '127.0.0.1', opts.allowedHosts);
|
|
211
|
+
const refusesOrigin = !isAllowedLoopbackRequest(req, '127.0.0.1', opts.allowedHosts, mcpPorts.forRequest(req));
|
|
205
212
|
if (refusesOrigin) {
|
|
206
213
|
res.writeHead(403, { 'Content-Type': 'application/json' });
|
|
207
214
|
res.end(JSON.stringify({ error: 'Forbidden: invalid host or origin' }));
|
|
@@ -259,17 +266,20 @@ export async function startServer(
|
|
|
259
266
|
res.end(JSON.stringify({ error: 'not found', path: url }));
|
|
260
267
|
});
|
|
261
268
|
|
|
262
|
-
// ──
|
|
263
|
-
|
|
269
|
+
// ── /sandbox: refused with a reason ─────────────────────────────
|
|
270
|
+
// A browser cannot read an HTTP refusal of an upgrade, so the socket is
|
|
271
|
+
// accepted and closed at once with a reason `connectBridge` reports. No
|
|
272
|
+
// message from it is read, and it never registers as the sandbox peer.
|
|
273
|
+
const wss = new WebSocketServer({ noServer: true, maxPayload: 1024 });
|
|
264
274
|
http.on('upgrade', (req, socket, head) => {
|
|
265
275
|
const hasWrongPath = (req.url ?? '') !== DEFAULT_SANDBOX_PATH;
|
|
266
276
|
if (hasWrongPath) {
|
|
267
277
|
socket.destroy();
|
|
268
278
|
return;
|
|
269
279
|
}
|
|
270
|
-
// DNS-rebinding + cross-origin
|
|
271
|
-
//
|
|
272
|
-
//
|
|
280
|
+
// DNS-rebinding + cross-origin guard: only a loopback page is told why.
|
|
281
|
+
// The port is not compared here: the page that reaches this socket loads
|
|
282
|
+
// from the app's own dev server on another port.
|
|
273
283
|
const refusesUpgrade = !isAllowedUpgrade(req.headers, '127.0.0.1', opts.allowedHosts);
|
|
274
284
|
if (refusesUpgrade) {
|
|
275
285
|
logger.error(
|
|
@@ -279,7 +289,8 @@ export async function startServer(
|
|
|
279
289
|
return;
|
|
280
290
|
}
|
|
281
291
|
wss.handleUpgrade(req, socket, head, (ws) => {
|
|
282
|
-
|
|
292
|
+
logger.info(`refused a browser sandbox on ${DEFAULT_SANDBOX_PATH}: run pyric sandbox --bridge instead`);
|
|
293
|
+
ws.close(NO_BROWSER_PEER_CLOSE_CODE, NO_BROWSER_PEER_CLOSE_REASON);
|
|
283
294
|
});
|
|
284
295
|
});
|
|
285
296
|
|
|
@@ -305,12 +316,9 @@ export async function startServer(
|
|
|
305
316
|
url,
|
|
306
317
|
auditLogPath: auditWriter?.path ?? null,
|
|
307
318
|
async stop() {
|
|
308
|
-
// Stop accepting new WebSocket upgrades
|
|
319
|
+
// Stop accepting new WebSocket upgrades, and terminate a refused
|
|
320
|
+
// socket whose close handshake is still in flight.
|
|
309
321
|
wss.close();
|
|
310
|
-
// …and forcibly terminate any existing WS clients. Without this,
|
|
311
|
-
// http.close() below waits for clients to disconnect on their own
|
|
312
|
-
// (MCP keep-alives sit forever — a Ctrl-C with any open peer
|
|
313
|
-
// would hang the CLI shutdown indefinitely).
|
|
314
322
|
for (const client of wss.clients) {
|
|
315
323
|
try { client.terminate(); } catch { /* already closed */ }
|
|
316
324
|
}
|
|
@@ -332,92 +340,6 @@ export async function startServer(
|
|
|
332
340
|
};
|
|
333
341
|
}
|
|
334
342
|
|
|
335
|
-
function attachPeer(bridge: Bridge, ws: WebSocket, logger: BridgeLogger): void {
|
|
336
|
-
let disconnect: (() => void) | null = null;
|
|
337
|
-
let helloed = false;
|
|
338
|
-
let sandboxId: string | null = null;
|
|
339
|
-
let peerGeneration = 0;
|
|
340
|
-
|
|
341
|
-
ws.on('message', (raw) => {
|
|
342
|
-
const isClosingConnection = ws.readyState !== ws.OPEN;
|
|
343
|
-
if (isClosingConnection) return;
|
|
344
|
-
const parsed = parseBridgeMessage(raw.toString());
|
|
345
|
-
const isInvalidMessage = parsed.kind === 'invalid';
|
|
346
|
-
if (isInvalidMessage) {
|
|
347
|
-
ws.close(1002, parsed.reason);
|
|
348
|
-
return;
|
|
349
|
-
}
|
|
350
|
-
const msg = parsed.message;
|
|
351
|
-
const isHello = msg.type === 'hello';
|
|
352
|
-
if (isHello) {
|
|
353
|
-
const protocolError = requestProtocolError(msg);
|
|
354
|
-
const hasProtocolError = protocolError !== undefined;
|
|
355
|
-
if (hasProtocolError) {
|
|
356
|
-
ws.close(1008, protocolError);
|
|
357
|
-
return;
|
|
358
|
-
}
|
|
359
|
-
const envelopeError = requestEnvelopeError(msg);
|
|
360
|
-
const hasEnvelopeError = envelopeError !== undefined;
|
|
361
|
-
if (hasEnvelopeError) {
|
|
362
|
-
ws.close(1002, envelopeError);
|
|
363
|
-
return;
|
|
364
|
-
}
|
|
365
|
-
if (helloed) return; // ignore duplicate hellos
|
|
366
|
-
helloed = true;
|
|
367
|
-
sandboxId = msg.sandboxId;
|
|
368
|
-
logger.info(
|
|
369
|
-
`peer connected — sandboxId=${sandboxId.slice(0, 12)} tools=${msg.tools.length}`,
|
|
370
|
-
);
|
|
371
|
-
disconnect = bridge.registerSandboxPeer(
|
|
372
|
-
(out: BridgeMessage) => {
|
|
373
|
-
try {
|
|
374
|
-
sendBridgeMessage(ws, out, bridge.handleSandboxMessage);
|
|
375
|
-
} catch {
|
|
376
|
-
// socket likely closed; the close handler runs disconnect.
|
|
377
|
-
}
|
|
378
|
-
},
|
|
379
|
-
msg.tools,
|
|
380
|
-
msg.sandboxId,
|
|
381
|
-
);
|
|
382
|
-
peerGeneration = bridge.peerGeneration();
|
|
383
|
-
sendBridgeMessage(ws, {
|
|
384
|
-
type: 'hello-ack',
|
|
385
|
-
protocol: 1,
|
|
386
|
-
bridgeVersion: bridge.version,
|
|
387
|
-
});
|
|
388
|
-
return;
|
|
389
|
-
}
|
|
390
|
-
|
|
391
|
-
const isUnregistered = !helloed;
|
|
392
|
-
if (isUnregistered) return; // ignore messages before hello
|
|
393
|
-
const envelopeError = requestEnvelopeError(msg);
|
|
394
|
-
const hasEnvelopeError = envelopeError !== undefined;
|
|
395
|
-
if (hasEnvelopeError) {
|
|
396
|
-
ws.close(1002, envelopeError);
|
|
397
|
-
return;
|
|
398
|
-
}
|
|
399
|
-
bridge.handleSandboxMessage(msg, peerGeneration);
|
|
400
|
-
});
|
|
401
|
-
|
|
402
|
-
ws.on('close', () => {
|
|
403
|
-
const releasePeer = disconnect;
|
|
404
|
-
const hasPeer = releasePeer !== null;
|
|
405
|
-
if (hasPeer) {
|
|
406
|
-
releasePeer();
|
|
407
|
-
const id = sandboxId;
|
|
408
|
-
const hasId = id !== null && id.length > 0;
|
|
409
|
-
let label = 'unknown';
|
|
410
|
-
if (hasId) label = id.slice(0, 12);
|
|
411
|
-
logger.info(`peer disconnected — sandboxId=${label}`);
|
|
412
|
-
}
|
|
413
|
-
disconnect = null;
|
|
414
|
-
});
|
|
415
|
-
|
|
416
|
-
ws.on('error', () => {
|
|
417
|
-
// ws will follow up with a 'close' event; cleanup happens there.
|
|
418
|
-
});
|
|
419
|
-
}
|
|
420
|
-
|
|
421
343
|
/** Construct a default logger only when the caller did not supply one. */
|
|
422
344
|
function defaultLogger(silent = false): BridgeLogger {
|
|
423
345
|
if (silent) return createSilentLogger();
|