@pyric/cli 0.1.0-alpha.27 → 0.1.0-alpha.29

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.
Files changed (283) hide show
  1. package/dist/assurance/.generated/conformance-verdicts.d.ts +16 -0
  2. package/dist/assurance/.generated/conformance-verdicts.d.ts.map +1 -1
  3. package/dist/assurance/.generated/conformance-verdicts.js +16 -0
  4. package/dist/assurance/.generated/conformance-verdicts.js.map +1 -1
  5. package/dist/bridge/surface/arguments/assurance.d.ts +6 -6
  6. package/dist/bridge/surface/arguments/messaging.d.ts +2 -2
  7. package/dist/bridge/surface/methods/assurance/map.d.ts +6 -6
  8. package/dist/bridge/surface/methods/assurance/replaySession.d.ts.map +1 -1
  9. package/dist/bridge/surface/methods/assurance/replaySession.js +18 -6
  10. package/dist/bridge/surface/methods/assurance/replaySession.js.map +1 -1
  11. package/dist/bridge/surface/methods/messaging/send.d.ts +4 -4
  12. package/dist/bridge/surface/render/discriminator-schemas.d.ts +4 -4
  13. package/dist/cli/index.d.ts +1 -0
  14. package/dist/cli/index.d.ts.map +1 -1
  15. package/dist/cli/index.js +15 -1
  16. package/dist/cli/index.js.map +1 -1
  17. package/dist/cli/run.d.ts +42 -0
  18. package/dist/cli/run.d.ts.map +1 -0
  19. package/dist/cli/run.js +115 -0
  20. package/dist/cli/run.js.map +1 -0
  21. package/dist/conformance/.generated/can-i-use.d.ts.map +1 -1
  22. package/dist/conformance/.generated/can-i-use.js +1 -1
  23. package/dist/conformance/.generated/can-i-use.js.map +1 -1
  24. package/dist/conformance/.generated/conformance-docs.d.ts.map +1 -1
  25. package/dist/conformance/.generated/conformance-docs.js +1 -1
  26. package/dist/conformance/.generated/conformance-docs.js.map +1 -1
  27. package/dist/remote/local-storage-url.d.ts +2 -15
  28. package/dist/remote/local-storage-url.d.ts.map +1 -1
  29. package/dist/remote/local-storage-url.js +1 -60
  30. package/dist/remote/local-storage-url.js.map +1 -1
  31. package/dist/serve/assets/avatar-route.d.ts.map +1 -1
  32. package/dist/serve/assets/avatar-route.js +6 -6
  33. package/dist/serve/assets/avatar-route.js.map +1 -1
  34. package/dist/serve/assets/resolver.d.ts +3 -0
  35. package/dist/serve/assets/resolver.d.ts.map +1 -1
  36. package/dist/serve/assets/resolver.js +1 -1
  37. package/dist/serve/assets/resolver.js.map +1 -1
  38. package/dist/serve/entries/app-client.d.ts.map +1 -1
  39. package/dist/serve/entries/app-client.js +6 -0
  40. package/dist/serve/entries/app-client.js.map +1 -1
  41. package/dist/serve/site-ui/_astro/{RulesCodeEditor.kBYcclwV.js → RulesCodeEditor.Cp_-FK3b.js} +1 -1
  42. package/dist/serve/site-ui/_astro/app.C--T2qDK.js +151 -0
  43. package/dist/serve/site-ui/_astro/app.DqyhRyrU.js +1 -0
  44. package/dist/serve/site-ui/_astro/{chess-showcase.CZe_3fJZ.js → chess-showcase.CVhCNUi_.js} +1 -1
  45. package/dist/serve/site-ui/_astro/{example-runtime.CXSZXHZF.js → example-runtime.zC1l-Yka.js} +1 -1
  46. package/dist/serve/site-ui/_astro/{sandbox-controls.Bp5PoonS.js → sandbox-controls.Bv6lfpIe.js} +39 -39
  47. package/dist/serve/site-ui/_astro/{seed.BpXSRzLo.js → seed.B4vza_Bv.js} +1 -1
  48. package/dist/serve/site-ui/_astro/{writes.DHSW22XD.js → writes.Bg0YEEA7.js} +1 -1
  49. package/dist/serve/site-ui/auth/index.html +1 -1
  50. package/dist/serve/site-ui/docs/_rhythm/index.html +1 -1
  51. package/dist/serve/site-ui/docs/agent/set-up-your-agent/index.html +1 -1
  52. package/dist/serve/site-ui/docs/agent/watch-and-review/index.html +1 -1
  53. package/dist/serve/site-ui/docs/agent/work-with-an-agent/index.html +1 -1
  54. package/dist/serve/site-ui/docs/ai-compat/index.html +1 -1
  55. package/dist/serve/site-ui/docs/api-reference/index.html +2 -1
  56. package/dist/serve/site-ui/docs/api-reference.md +1 -0
  57. package/dist/serve/site-ui/docs/app-compat/index.html +1 -1
  58. package/dist/serve/site-ui/docs/auth-compat/index.html +2 -2
  59. package/dist/serve/site-ui/docs/auth-compat.md +1 -1
  60. package/dist/serve/site-ui/docs/auth-flutter-compat/index.html +1 -1
  61. package/dist/serve/site-ui/docs/auth-kotlin-compat/index.html +1 -1
  62. package/dist/serve/site-ui/docs/auth-swift-compat/index.html +1 -1
  63. package/dist/serve/site-ui/docs/build/ai-logic/index.html +1 -1
  64. package/dist/serve/site-ui/docs/build/authentication/index.html +1 -1
  65. package/dist/serve/site-ui/docs/build/cloud-firestore/index.html +1 -1
  66. package/dist/serve/site-ui/docs/build/cloud-messaging/index.html +1 -1
  67. package/dist/serve/site-ui/docs/build/cloud-storage/index.html +13 -2
  68. package/dist/serve/site-ui/docs/build/cloud-storage.md +23 -0
  69. package/dist/serve/site-ui/docs/build/default-avatars/index.html +1 -1
  70. package/dist/serve/site-ui/docs/build/inspect-activity/index.html +1 -1
  71. package/dist/serve/site-ui/docs/build/realtime-database/index.html +1 -1
  72. package/dist/serve/site-ui/docs/conformance-scores/index.html +1 -1
  73. package/dist/serve/site-ui/docs/create-pyric-reference-api/index.html +1 -1
  74. package/dist/serve/site-ui/docs/database-compat/index.html +18 -18
  75. package/dist/serve/site-ui/docs/database-compat.md +17 -17
  76. package/dist/serve/site-ui/docs/examples/chess/index.html +1 -1
  77. package/dist/serve/site-ui/docs/examples/index.html +1 -1
  78. package/dist/serve/site-ui/docs/firestore-compat/index.html +1 -1
  79. package/dist/serve/site-ui/docs/firestore-flutter-compat/index.html +1 -1
  80. package/dist/serve/site-ui/docs/firestore-kotlin-compat/index.html +1 -1
  81. package/dist/serve/site-ui/docs/firestore-swift-compat/index.html +1 -1
  82. package/dist/serve/site-ui/docs/functions-rtdb-compat/index.html +1 -1
  83. package/dist/serve/site-ui/docs/get-started/backend-bundlers/index.html +1 -1
  84. package/dist/serve/site-ui/docs/get-started/flutter/index.html +1 -1
  85. package/dist/serve/site-ui/docs/get-started/how-the-swap-works/index.html +1 -1
  86. package/dist/serve/site-ui/docs/get-started/nextjs/index.html +1 -1
  87. package/dist/serve/site-ui/docs/get-started/node-host/index.html +1 -1
  88. package/dist/serve/site-ui/docs/get-started/start-building/index.html +1 -1
  89. package/dist/serve/site-ui/docs/get-started/vite/index.html +4 -2
  90. package/dist/serve/site-ui/docs/get-started/vite.md +4 -0
  91. package/dist/serve/site-ui/docs/index.json +60 -10
  92. package/dist/serve/site-ui/docs/messaging-compat/index.html +1 -1
  93. package/dist/serve/site-ui/docs/observe/resolve-runtime-status/index.html +1 -1
  94. package/dist/serve/site-ui/docs/observe/see-whats-happening/index.html +1 -1
  95. package/dist/serve/site-ui/docs/observe/shape-your-data/index.html +1 -1
  96. package/dist/serve/site-ui/docs/observe/switch-and-impersonate-identities/index.html +1 -1
  97. package/dist/serve/site-ui/docs/overview/index.html +1 -1
  98. package/dist/serve/site-ui/docs/pyric-admin-app-check-reference-api/index.html +1 -1
  99. package/dist/serve/site-ui/docs/pyric-admin-app-reference-api/index.html +1 -1
  100. package/dist/serve/site-ui/docs/pyric-admin-auth-reference-api/index.html +1 -1
  101. package/dist/serve/site-ui/docs/pyric-admin-data-connect-reference-api/index.html +1 -1
  102. package/dist/serve/site-ui/docs/pyric-admin-database-reference-api/index.html +1 -1
  103. package/dist/serve/site-ui/docs/pyric-admin-eventarc-reference-api/index.html +1 -1
  104. package/dist/serve/site-ui/docs/pyric-admin-extensions-reference-api/index.html +1 -1
  105. package/dist/serve/site-ui/docs/pyric-admin-firestore-reference-api/index.html +1 -1
  106. package/dist/serve/site-ui/docs/pyric-admin-functions-reference-api/index.html +1 -1
  107. package/dist/serve/site-ui/docs/pyric-admin-installations-reference-api/index.html +1 -1
  108. package/dist/serve/site-ui/docs/pyric-admin-instance-id-reference-api/index.html +1 -1
  109. package/dist/serve/site-ui/docs/pyric-admin-machine-learning-reference-api/index.html +1 -1
  110. package/dist/serve/site-ui/docs/pyric-admin-messaging-reference-api/index.html +1 -1
  111. package/dist/serve/site-ui/docs/pyric-admin-phone-number-verification-reference-api/index.html +1 -1
  112. package/dist/serve/site-ui/docs/pyric-admin-project-management-reference-api/index.html +1 -1
  113. package/dist/serve/site-ui/docs/pyric-admin-reference-api/index.html +1 -1
  114. package/dist/serve/site-ui/docs/pyric-admin-remote-config-reference-api/index.html +1 -1
  115. package/dist/serve/site-ui/docs/pyric-admin-security-rules-reference-api/index.html +1 -1
  116. package/dist/serve/site-ui/docs/pyric-admin-storage-reference-api/index.html +1 -1
  117. package/dist/serve/site-ui/docs/pyric-ai-reference-api/index.html +1 -1
  118. package/dist/serve/site-ui/docs/pyric-ai-scripting-reference-api/index.html +1 -1
  119. package/dist/serve/site-ui/docs/pyric-analytics-reference-api/index.html +1 -1
  120. package/dist/serve/site-ui/docs/pyric-app-check-reference-api/index.html +1 -1
  121. package/dist/serve/site-ui/docs/pyric-app-reference-api/index.html +1 -1
  122. package/dist/serve/site-ui/docs/pyric-auth-reference-api/index.html +2 -2
  123. package/dist/serve/site-ui/docs/pyric-auth-reference-api.md +1 -1
  124. package/dist/serve/site-ui/docs/pyric-cli-assurance-browser-reference-api/index.html +1 -1
  125. package/dist/serve/site-ui/docs/pyric-cli-assurance-reference-api/index.html +1 -1
  126. package/dist/serve/site-ui/docs/pyric-cli-bridge-client-reference-api/index.html +1 -1
  127. package/dist/serve/site-ui/docs/pyric-cli-bridge-reference-api/index.html +1 -1
  128. package/dist/serve/site-ui/docs/pyric-cli-bundler-reference-api/index.html +1 -1
  129. package/dist/serve/site-ui/docs/pyric-cli-conformance-browser-reference-api/index.html +1 -1
  130. package/dist/serve/site-ui/docs/pyric-cli-conformance-docs-reference-api/index.html +1 -1
  131. package/dist/serve/site-ui/docs/pyric-cli-conformance-reference-api/index.html +1 -1
  132. package/dist/serve/site-ui/docs/pyric-cli-credentials-node-reference-api/index.html +1 -1
  133. package/dist/serve/site-ui/docs/pyric-cli-discover-reference-api/index.html +1 -1
  134. package/dist/serve/site-ui/docs/pyric-cli-flow-reference-api/index.html +1 -1
  135. package/dist/serve/site-ui/docs/pyric-cli-next-reference-api/index.html +1 -1
  136. package/dist/serve/site-ui/docs/pyric-cli-register-app-bridge-reference-api/index.html +1 -1
  137. package/dist/serve/site-ui/docs/pyric-cli-register-client-app-bridge-reference-api/index.html +1 -1
  138. package/dist/serve/site-ui/docs/pyric-cli-register-client-app-reference-api/index.html +1 -1
  139. package/dist/serve/site-ui/docs/pyric-cli-register-client-auth-reference-api/index.html +1 -1
  140. package/dist/serve/site-ui/docs/pyric-cli-register-client-database-reference-api/index.html +1 -1
  141. package/dist/serve/site-ui/docs/pyric-cli-register-client-firestore-reference-api/index.html +1 -1
  142. package/dist/serve/site-ui/docs/pyric-cli-register-client-storage-reference-api/index.html +1 -1
  143. package/dist/serve/site-ui/docs/pyric-cli-register-reference-api/index.html +1 -1
  144. package/dist/serve/site-ui/docs/pyric-cli-remote-reference-api/index.html +1 -1
  145. package/dist/serve/site-ui/docs/pyric-cli-repro-reference-api/index.html +1 -1
  146. package/dist/serve/site-ui/docs/pyric-cli-serve-worker-reference-api/index.html +1 -1
  147. package/dist/serve/site-ui/docs/pyric-cli-verify-reference-api/index.html +1 -1
  148. package/dist/serve/site-ui/docs/pyric-cli-vite-reference-api/index.html +17 -3
  149. package/dist/serve/site-ui/docs/pyric-cli-vite-reference-api.md +7 -5
  150. package/dist/serve/site-ui/docs/pyric-cli-vite-ssr-loader-reference-api/index.html +1 -1
  151. package/dist/serve/site-ui/docs/pyric-database-reference-api/index.html +1 -1
  152. package/dist/serve/site-ui/docs/pyric-firestore-lite-reference-api/index.html +1 -1
  153. package/dist/serve/site-ui/docs/pyric-firestore-reference-api/index.html +1 -1
  154. package/dist/serve/site-ui/docs/pyric-functions-reference-api/index.html +1 -1
  155. package/dist/serve/site-ui/docs/pyric-messaging-reference-api/index.html +1 -1
  156. package/dist/serve/site-ui/docs/pyric-messaging-sw-reference-api/index.html +1 -1
  157. package/dist/serve/site-ui/docs/pyric-performance-reference-api/index.html +1 -1
  158. package/dist/serve/site-ui/docs/pyric-remote-config-reference-api/index.html +1 -1
  159. package/dist/serve/site-ui/docs/pyric-rules-reference-api/index.html +120 -120
  160. package/dist/serve/site-ui/docs/pyric-rules-reference-api.md +53 -53
  161. package/dist/serve/site-ui/docs/pyric-sandbox-branches-store-reference-api/index.html +1 -1
  162. package/dist/serve/site-ui/docs/pyric-sandbox-checkpoints-directory-reference-api/index.html +1 -1
  163. package/dist/serve/site-ui/docs/pyric-sandbox-checkpoints-reference-api/index.html +1 -1
  164. package/dist/serve/site-ui/docs/pyric-sandbox-database-reference-api/index.html +1 -1
  165. package/dist/serve/site-ui/docs/pyric-sandbox-firestore-reference-api/index.html +1 -1
  166. package/dist/serve/site-ui/docs/pyric-sandbox-reference-api/index.html +1 -1
  167. package/dist/serve/site-ui/docs/pyric-storage-reference-api/index.html +1 -1
  168. package/dist/serve/site-ui/docs/pyric-storage-sw-reference-api/index.html +102 -0
  169. package/dist/serve/site-ui/docs/pyric-storage-sw-reference-api.md +76 -0
  170. package/dist/serve/site-ui/docs/pyric-ui-agents-reference-api/index.html +1 -1
  171. package/dist/serve/site-ui/docs/pyric-ui-auth-hooks-reference-api/index.html +1 -1
  172. package/dist/serve/site-ui/docs/pyric-ui-auth-reference-api/index.html +1 -1
  173. package/dist/serve/site-ui/docs/pyric-ui-events-hooks-reference-api/index.html +1 -1
  174. package/dist/serve/site-ui/docs/pyric-ui-events-reference-api/index.html +1 -1
  175. package/dist/serve/site-ui/docs/pyric-ui-firestore-hooks-reference-api/index.html +1 -1
  176. package/dist/serve/site-ui/docs/pyric-ui-firestore-reference-api/index.html +1 -1
  177. package/dist/serve/site-ui/docs/pyric-ui-listener-owner-reference-api/index.html +1 -1
  178. package/dist/serve/site-ui/docs/pyric-ui-primitives-reference-api/index.html +1 -1
  179. package/dist/serve/site-ui/docs/pyric-ui-rtdb-reference-api/index.html +1 -1
  180. package/dist/serve/site-ui/docs/pyric-ui-rules-hooks-reference-api/index.html +1 -1
  181. package/dist/serve/site-ui/docs/pyric-ui-rules-reference-api/index.html +1 -1
  182. package/dist/serve/site-ui/docs/pyric-ui-storage-hooks-reference-api/index.html +1 -1
  183. package/dist/serve/site-ui/docs/pyric-ui-storage-reference-api/index.html +1 -1
  184. package/dist/serve/site-ui/docs/pyric-ui-traffic-hooks-reference-api/index.html +1 -1
  185. package/dist/serve/site-ui/docs/pyric-ui-traffic-reference-api/index.html +1 -1
  186. package/dist/serve/site-ui/docs/reference/cli/index.html +12 -2
  187. package/dist/serve/site-ui/docs/reference/cli.md +24 -0
  188. package/dist/serve/site-ui/docs/rtdb-flutter-compat/index.html +1 -1
  189. package/dist/serve/site-ui/docs/rtdb-kotlin-compat/index.html +1 -1
  190. package/dist/serve/site-ui/docs/rtdb-swift-compat/index.html +1 -1
  191. package/dist/serve/site-ui/docs/rules-compat/index.html +68 -4
  192. package/dist/serve/site-ui/docs/rules-compat.md +67 -3
  193. package/dist/serve/site-ui/docs/secure/audit-your-rules/index.html +1 -1
  194. package/dist/serve/site-ui/docs/secure/firestore-rules-limits/index.html +1 -1
  195. package/dist/serve/site-ui/docs/secure/read-a-denial/index.html +1 -1
  196. package/dist/serve/site-ui/docs/secure/rtdb-rules-in-typescript/index.html +1 -1
  197. package/dist/serve/site-ui/docs/secure/rtdb-rules-standard-library/index.html +18 -5
  198. package/dist/serve/site-ui/docs/secure/rtdb-rules-standard-library.md +19 -4
  199. package/dist/serve/site-ui/docs/secure/rules-standard-library/index.html +1 -1
  200. package/dist/serve/site-ui/docs/secure/secure-it-with-rules/index.html +1 -1
  201. package/dist/serve/site-ui/docs/secure/simulate-and-lint/index.html +5 -5
  202. package/dist/serve/site-ui/docs/secure/simulate-and-lint.md +8 -8
  203. package/dist/serve/site-ui/docs/secure/write-a-rules-test-suite/index.html +1 -1
  204. package/dist/serve/site-ui/docs/ship/ship-to-production/index.html +1 -1
  205. package/dist/serve/site-ui/docs/ship/test-in-node/index.html +1 -1
  206. package/dist/serve/site-ui/docs/storage-compat/index.html +1 -1
  207. package/dist/serve/site-ui/docs/trust/how-we-know-it-matches-firebase/index.html +1 -1
  208. package/dist/serve/site-ui/docs/trust/rules-standard-library/index.html +1 -1
  209. package/dist/serve/site-ui/docs/trust/versioning-and-compatibility/index.html +1 -1
  210. package/dist/serve/site-ui/docs/tutorial/index.html +1 -1
  211. package/dist/serve/site-ui/examples/chess/index.html +1 -1
  212. package/dist/serve/site-ui/firestore/index.html +1 -1
  213. package/dist/serve/site-ui/llms.txt +1 -0
  214. package/dist/serve/site-ui/rtdb/index.html +1 -1
  215. package/dist/serve/site-ui/settings/index.html +1 -1
  216. package/dist/serve/site-ui/storage/index.html +1 -1
  217. package/dist/serve/site-ui/studio/index.html +1 -1
  218. package/dist/serve/site-ui/traffic/index.html +1 -1
  219. package/dist/serve/vite-plugin.d.ts +6 -0
  220. package/dist/serve/vite-plugin.d.ts.map +1 -1
  221. package/dist/serve/vite-plugin.js +11 -1
  222. package/dist/serve/vite-plugin.js.map +1 -1
  223. package/dist/serve/vite-service-worker.d.ts +12 -0
  224. package/dist/serve/vite-service-worker.d.ts.map +1 -0
  225. package/dist/serve/vite-service-worker.js +33 -0
  226. package/dist/serve/vite-service-worker.js.map +1 -0
  227. package/dist/serve/worker/client/auth.d.ts.map +1 -1
  228. package/dist/serve/worker/client/auth.js +4 -3
  229. package/dist/serve/worker/client/auth.js.map +1 -1
  230. package/dist/serve/worker/client/rtdb-info.d.ts +0 -2
  231. package/dist/serve/worker/client/rtdb-info.d.ts.map +1 -1
  232. package/dist/serve/worker/client/rtdb-info.js +4 -17
  233. package/dist/serve/worker/client/rtdb-info.js.map +1 -1
  234. package/dist/serve/worker/client/rtdb-reads.d.ts.map +1 -1
  235. package/dist/serve/worker/client/rtdb-reads.js +3 -5
  236. package/dist/serve/worker/client/rtdb-reads.js.map +1 -1
  237. package/dist/serve/worker/host/auth-action-codes.js +2 -2
  238. package/dist/serve/worker/host/auth-action-codes.js.map +1 -1
  239. package/dist/serve/worker/host/auth-custom-token.d.ts.map +1 -1
  240. package/dist/serve/worker/host/auth-custom-token.js +4 -2
  241. package/dist/serve/worker/host/auth-custom-token.js.map +1 -1
  242. package/dist/serve/worker/host/dispatch.d.ts.map +1 -1
  243. package/dist/serve/worker/host/dispatch.js +3 -1
  244. package/dist/serve/worker/host/dispatch.js.map +1 -1
  245. package/dist/serve/worker/host-auth.d.ts +6 -0
  246. package/dist/serve/worker/host-auth.d.ts.map +1 -1
  247. package/dist/serve/worker/host-auth.js +16 -5
  248. package/dist/serve/worker/host-auth.js.map +1 -1
  249. package/dist/serve/worker/inbound-validation.d.ts.map +1 -1
  250. package/dist/serve/worker/inbound-validation.js +1 -0
  251. package/dist/serve/worker/inbound-validation.js.map +1 -1
  252. package/dist/serve/worker/protocol/storage.d.ts +1 -8
  253. package/dist/serve/worker/protocol/storage.d.ts.map +1 -1
  254. package/dist/serve/worker/protocol/storage.js +2 -14
  255. package/dist/serve/worker/protocol/storage.js.map +1 -1
  256. package/dist/serve/worker/protocol.d.ts +2 -0
  257. package/dist/serve/worker/protocol.d.ts.map +1 -1
  258. package/dist/serve/worker/protocol.js.map +1 -1
  259. package/package.json +12 -8
  260. package/src/assurance/.generated/conformance-verdicts.ts +16 -0
  261. package/src/bridge/surface/methods/assurance/replaySession.ts +19 -6
  262. package/src/cli/index.ts +15 -1
  263. package/src/cli/run.ts +139 -0
  264. package/src/conformance/.generated/can-i-use.ts +1 -1
  265. package/src/conformance/.generated/conformance-docs.ts +1 -1
  266. package/src/remote/local-storage-url.ts +1 -58
  267. package/src/serve/assets/avatar-route.ts +6 -7
  268. package/src/serve/assets/resolver.ts +4 -1
  269. package/src/serve/entries/app-client.ts +7 -0
  270. package/src/serve/vite-plugin.ts +15 -1
  271. package/src/serve/vite-service-worker.ts +44 -0
  272. package/src/serve/worker/client/auth.ts +4 -3
  273. package/src/serve/worker/client/rtdb-info.ts +4 -17
  274. package/src/serve/worker/client/rtdb-reads.ts +3 -4
  275. package/src/serve/worker/host/auth-action-codes.ts +2 -2
  276. package/src/serve/worker/host/auth-custom-token.ts +4 -2
  277. package/src/serve/worker/host/dispatch.ts +2 -0
  278. package/src/serve/worker/host-auth.ts +18 -5
  279. package/src/serve/worker/inbound-validation.ts +1 -0
  280. package/src/serve/worker/protocol/storage.ts +2 -14
  281. package/src/serve/worker/protocol.ts +2 -0
  282. package/dist/serve/site-ui/_astro/app.CiMHEvEW.js +0 -147
  283. package/dist/serve/site-ui/_astro/app.DpzsBfos.js +0 -1
package/src/cli/run.ts ADDED
@@ -0,0 +1,139 @@
1
+ /**
2
+ * `pyric run [--sandbox <url>] -- <command...>`: run one command against a
3
+ * sandbox host that is already running, such as a Vite dev server with the
4
+ * pyric plugin or a `pyric sandbox` in another terminal.
5
+ *
6
+ * The child gets the environment `pyric sandbox` gives its own child
7
+ * (`buildChildEnv`): the activator, the host's identity, and `--import` with
8
+ * the absolute `file:` URL of this install's register module. Nothing in the
9
+ * child resolves `@pyric/cli` by name, so the command works from any working
10
+ * directory, including one outside the tree pyric is installed in.
11
+ */
12
+ import type { ParsedArgs } from './parse-args.js';
13
+ import {
14
+ buildChildEnv,
15
+ registerModuleUrl,
16
+ spawnSandboxChild,
17
+ type SandboxChildPlan,
18
+ } from './sandbox-runner.js';
19
+ import { discoverServe, probeHostUrl } from '../serve/discovery.js';
20
+
21
+ export interface RunInvocation {
22
+ /** The host URL named by `--sandbox` or `PYRIC_SANDBOX=remote:<url>`; null to discover it. */
23
+ readonly hostUrl: string | null;
24
+ readonly plan: SandboxChildPlan;
25
+ /** How long to wait for the host to answer before giving up; 0 probes once. */
26
+ readonly waitMs: number;
27
+ }
28
+
29
+ export const RUN_USAGE = 'usage: pyric run [--sandbox <url>] [--wait[=<seconds>]] -- <command> [args...]\n';
30
+
31
+ /** `--wait` without a value: the bound `pyric sandbox` gives its first-run race guard. */
32
+ export const DEFAULT_WAIT_SECONDS = 30;
33
+
34
+ /** Strip the optional `remote:` prefix the activator uses. Null when nothing names a URL. */
35
+ function hostUrlOf(value: string | undefined): string | null {
36
+ if (value === undefined) return null;
37
+ const url = value.startsWith('remote:') ? value.slice('remote:'.length) : value;
38
+ const namesUrl = /^https?:\/\//.test(url);
39
+ return namesUrl ? url : null;
40
+ }
41
+
42
+ /**
43
+ * Read a `pyric run` invocation. The host comes from `--sandbox`, then from an
44
+ * inherited `PYRIC_SANDBOX=remote:<url>`; with neither, the caller discovers
45
+ * the project's running host. Returns a usage error string when the command or
46
+ * the flag is missing or malformed.
47
+ */
48
+ export function parseRunInvocation(parsed: ParsedArgs, env: NodeJS.ProcessEnv): RunInvocation | string {
49
+ const passthrough = parsed.passthrough ?? [];
50
+ const argv = passthrough.length > 0 ? passthrough : parsed.positional;
51
+ if (argv.length === 0) return `pyric run: no command to run.\n${RUN_USAGE}`;
52
+ const flag = parsed.flags.get('sandbox');
53
+ let hostUrl: string | null;
54
+ if (flag === undefined) {
55
+ hostUrl = hostUrlOf(env.PYRIC_SANDBOX);
56
+ } else {
57
+ hostUrl = typeof flag === 'string' ? hostUrlOf(flag) : null;
58
+ if (hostUrl === null) {
59
+ return `pyric run: --sandbox needs a host URL, such as http://localhost:5173.\n${RUN_USAGE}`;
60
+ }
61
+ }
62
+ const wait = parsed.flags.get('wait');
63
+ let waitMs = 0;
64
+ if (wait === true) {
65
+ waitMs = DEFAULT_WAIT_SECONDS * 1000;
66
+ } else if (wait !== undefined) {
67
+ const seconds = typeof wait === 'string' ? Number(wait) : Number.NaN;
68
+ const isDuration = Number.isFinite(seconds) && seconds > 0;
69
+ if (!isDuration) return `pyric run: --wait takes a number of seconds, such as --wait=60.\n${RUN_USAGE}`;
70
+ waitMs = seconds * 1000;
71
+ }
72
+ return { hostUrl, plan: { argv: [...argv], label: argv.join(' ') }, waitMs };
73
+ }
74
+
75
+ /**
76
+ * Call `attempt` until it returns a value or `timeoutMs` passes, `intervalMs`
77
+ * apart. A zero timeout makes one attempt. Injectable sleep for the unit suite.
78
+ */
79
+ export async function pollUntil<T>(
80
+ attempt: () => Promise<T | null>,
81
+ opts: { timeoutMs: number; intervalMs?: number; sleep?: (ms: number) => Promise<void>; now?: () => number },
82
+ ): Promise<T | null> {
83
+ const intervalMs = opts.intervalMs ?? 250;
84
+ const sleep = opts.sleep ?? ((ms) => new Promise<void>((r) => setTimeout(r, ms)));
85
+ const now = opts.now ?? Date.now;
86
+ const deadline = now() + opts.timeoutMs;
87
+ for (;;) {
88
+ const value = await attempt();
89
+ if (value !== null) return value;
90
+ if (now() >= deadline) return null;
91
+ await sleep(intervalMs);
92
+ }
93
+ }
94
+
95
+ export async function runRun(parsed: ParsedArgs): Promise<number> {
96
+ const invocation = parseRunInvocation(parsed, process.env);
97
+ if (typeof invocation === 'string') {
98
+ process.stderr.write(invocation);
99
+ return 1;
100
+ }
101
+ const cwd = process.cwd();
102
+ let serveUrl: string;
103
+ let instanceId: string | null;
104
+ if (invocation.hostUrl !== null) {
105
+ const hostUrl = invocation.hostUrl;
106
+ const host = await pollUntil(() => probeHostUrl(hostUrl), { timeoutMs: invocation.waitMs });
107
+ if (host === null) {
108
+ const waited = invocation.waitMs > 0 ? ` after waiting ${invocation.waitMs / 1000}s` : '';
109
+ process.stderr.write(`pyric run: no sandbox host answers at ${hostUrl}/__pyric/health${waited}.\n`);
110
+ return 2;
111
+ }
112
+ serveUrl = host.base;
113
+ instanceId = host.instanceId;
114
+ } else {
115
+ const log = (line: string): void => void process.stderr.write(`pyric run: ${line}\n`);
116
+ const host = await pollUntil(() => discoverServe(cwd, log), { timeoutMs: invocation.waitMs });
117
+ if (host === null) {
118
+ process.stderr.write('pyric run: no running sandbox host found; pass --sandbox <url>.\n');
119
+ return 2;
120
+ }
121
+ serveUrl = host.base;
122
+ instanceId = host.instanceId;
123
+ }
124
+ const env = buildChildEnv(process.env, {
125
+ serveUrl,
126
+ registerUrl: registerModuleUrl(),
127
+ instanceId: instanceId ?? undefined,
128
+ });
129
+ const child = spawnSandboxChild(invocation.plan, { cwd, env, json: false });
130
+ const forward = (signal: NodeJS.Signals): void => child.signal(signal);
131
+ process.on('SIGINT', forward);
132
+ process.on('SIGTERM', forward);
133
+ try {
134
+ return await child.exited;
135
+ } finally {
136
+ process.off('SIGINT', forward);
137
+ process.off('SIGTERM', forward);
138
+ }
139
+ }