@pyric/cli 0.1.0-alpha.9

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 (1169) hide show
  1. package/LICENSE +216 -0
  2. package/README.md +156 -0
  3. package/README.md.orig +138 -0
  4. package/dist/assurance/attachment.d.ts +24 -0
  5. package/dist/assurance/attachment.d.ts.map +1 -0
  6. package/dist/assurance/attachment.js +138 -0
  7. package/dist/assurance/attachment.js.map +1 -0
  8. package/dist/assurance/browser.d.ts +7 -0
  9. package/dist/assurance/browser.d.ts.map +1 -0
  10. package/dist/assurance/browser.js +68 -0
  11. package/dist/assurance/browser.js.map +1 -0
  12. package/dist/assurance/campaign.d.ts +41 -0
  13. package/dist/assurance/campaign.d.ts.map +1 -0
  14. package/dist/assurance/campaign.js +364 -0
  15. package/dist/assurance/campaign.js.map +1 -0
  16. package/dist/assurance/capabilities.d.ts +7 -0
  17. package/dist/assurance/capabilities.d.ts.map +1 -0
  18. package/dist/assurance/capabilities.js +295 -0
  19. package/dist/assurance/capabilities.js.map +1 -0
  20. package/dist/assurance/cases.d.ts +14 -0
  21. package/dist/assurance/cases.d.ts.map +1 -0
  22. package/dist/assurance/cases.js +27 -0
  23. package/dist/assurance/cases.js.map +1 -0
  24. package/dist/assurance/generated-capabilities.d.ts +52 -0
  25. package/dist/assurance/generated-capabilities.d.ts.map +1 -0
  26. package/dist/assurance/generated-capabilities.js +329 -0
  27. package/dist/assurance/generated-capabilities.js.map +1 -0
  28. package/dist/assurance/index.d.ts +11 -0
  29. package/dist/assurance/index.d.ts.map +1 -0
  30. package/dist/assurance/index.js +9 -0
  31. package/dist/assurance/index.js.map +1 -0
  32. package/dist/assurance/runner.d.ts +3 -0
  33. package/dist/assurance/runner.d.ts.map +1 -0
  34. package/dist/assurance/runner.js +633 -0
  35. package/dist/assurance/runner.js.map +1 -0
  36. package/dist/assurance/tool-names.d.ts +4 -0
  37. package/dist/assurance/tool-names.d.ts.map +1 -0
  38. package/dist/assurance/tool-names.js +14 -0
  39. package/dist/assurance/tool-names.js.map +1 -0
  40. package/dist/assurance/tools.d.ts +19 -0
  41. package/dist/assurance/tools.d.ts.map +1 -0
  42. package/dist/assurance/tools.js +740 -0
  43. package/dist/assurance/tools.js.map +1 -0
  44. package/dist/assurance/types.d.ts +348 -0
  45. package/dist/assurance/types.d.ts.map +1 -0
  46. package/dist/assurance/types.js +7 -0
  47. package/dist/assurance/types.js.map +1 -0
  48. package/dist/assurance/validation.d.ts +8 -0
  49. package/dist/assurance/validation.d.ts.map +1 -0
  50. package/dist/assurance/validation.js +269 -0
  51. package/dist/assurance/validation.js.map +1 -0
  52. package/dist/bridge/client/bridge.d.ts +133 -0
  53. package/dist/bridge/client/bridge.d.ts.map +1 -0
  54. package/dist/bridge/client/bridge.js +429 -0
  55. package/dist/bridge/client/bridge.js.map +1 -0
  56. package/dist/bridge/client/dispatch.d.ts +41 -0
  57. package/dist/bridge/client/dispatch.d.ts.map +1 -0
  58. package/dist/bridge/client/dispatch.js +111 -0
  59. package/dist/bridge/client/dispatch.js.map +1 -0
  60. package/dist/bridge/client.d.ts +24 -0
  61. package/dist/bridge/client.d.ts.map +1 -0
  62. package/dist/bridge/client.js +26 -0
  63. package/dist/bridge/client.js.map +1 -0
  64. package/dist/bridge/protocol.d.ts +227 -0
  65. package/dist/bridge/protocol.d.ts.map +1 -0
  66. package/dist/bridge/protocol.js +131 -0
  67. package/dist/bridge/protocol.js.map +1 -0
  68. package/dist/bridge/server/audit.d.ts +19 -0
  69. package/dist/bridge/server/audit.d.ts.map +1 -0
  70. package/dist/bridge/server/audit.js +46 -0
  71. package/dist/bridge/server/audit.js.map +1 -0
  72. package/dist/bridge/server/bridge.d.ts +126 -0
  73. package/dist/bridge/server/bridge.d.ts.map +1 -0
  74. package/dist/bridge/server/bridge.js +383 -0
  75. package/dist/bridge/server/bridge.js.map +1 -0
  76. package/dist/bridge/server/headless.d.ts +36 -0
  77. package/dist/bridge/server/headless.d.ts.map +1 -0
  78. package/dist/bridge/server/headless.js +142 -0
  79. package/dist/bridge/server/headless.js.map +1 -0
  80. package/dist/bridge/server/json-schema-to-zod.d.ts +37 -0
  81. package/dist/bridge/server/json-schema-to-zod.d.ts.map +1 -0
  82. package/dist/bridge/server/json-schema-to-zod.js +93 -0
  83. package/dist/bridge/server/json-schema-to-zod.js.map +1 -0
  84. package/dist/bridge/server/local-bridge.d.ts +33 -0
  85. package/dist/bridge/server/local-bridge.d.ts.map +1 -0
  86. package/dist/bridge/server/local-bridge.js +41 -0
  87. package/dist/bridge/server/local-bridge.js.map +1 -0
  88. package/dist/bridge/server/logger.d.ts +28 -0
  89. package/dist/bridge/server/logger.d.ts.map +1 -0
  90. package/dist/bridge/server/logger.js +42 -0
  91. package/dist/bridge/server/logger.js.map +1 -0
  92. package/dist/bridge/server/mcp-contract.d.ts +21 -0
  93. package/dist/bridge/server/mcp-contract.d.ts.map +1 -0
  94. package/dist/bridge/server/mcp-contract.js +62 -0
  95. package/dist/bridge/server/mcp-contract.js.map +1 -0
  96. package/dist/bridge/server/mcp.d.ts +26 -0
  97. package/dist/bridge/server/mcp.d.ts.map +1 -0
  98. package/dist/bridge/server/mcp.js +102 -0
  99. package/dist/bridge/server/mcp.js.map +1 -0
  100. package/dist/bridge/server/peer.d.ts +39 -0
  101. package/dist/bridge/server/peer.d.ts.map +1 -0
  102. package/dist/bridge/server/peer.js +189 -0
  103. package/dist/bridge/server/peer.js.map +1 -0
  104. package/dist/bridge/server/standalone.d.ts +49 -0
  105. package/dist/bridge/server/standalone.d.ts.map +1 -0
  106. package/dist/bridge/server/standalone.js +267 -0
  107. package/dist/bridge/server/standalone.js.map +1 -0
  108. package/dist/bridge/server/tool-metadata.d.ts +38 -0
  109. package/dist/bridge/server/tool-metadata.d.ts.map +1 -0
  110. package/dist/bridge/server/tool-metadata.js +81 -0
  111. package/dist/bridge/server/tool-metadata.js.map +1 -0
  112. package/dist/bridge/server.d.ts +21 -0
  113. package/dist/bridge/server.d.ts.map +1 -0
  114. package/dist/bridge/server.js +18 -0
  115. package/dist/bridge/server.js.map +1 -0
  116. package/dist/cli/database-rules.d.ts +43 -0
  117. package/dist/cli/database-rules.d.ts.map +1 -0
  118. package/dist/cli/database-rules.js +261 -0
  119. package/dist/cli/database-rules.js.map +1 -0
  120. package/dist/cli/dev-runner.d.ts +112 -0
  121. package/dist/cli/dev-runner.d.ts.map +1 -0
  122. package/dist/cli/dev-runner.js +239 -0
  123. package/dist/cli/dev-runner.js.map +1 -0
  124. package/dist/cli/firebase-json.d.ts +66 -0
  125. package/dist/cli/firebase-json.d.ts.map +1 -0
  126. package/dist/cli/firebase-json.js +60 -0
  127. package/dist/cli/firebase-json.js.map +1 -0
  128. package/dist/cli/firestore-indexes.d.ts +21 -0
  129. package/dist/cli/firestore-indexes.d.ts.map +1 -0
  130. package/dist/cli/firestore-indexes.js +39 -0
  131. package/dist/cli/firestore-indexes.js.map +1 -0
  132. package/dist/cli/index.d.ts +56 -0
  133. package/dist/cli/index.d.ts.map +1 -0
  134. package/dist/cli/index.js +379 -0
  135. package/dist/cli/index.js.map +1 -0
  136. package/dist/cli/init.d.ts +50 -0
  137. package/dist/cli/init.d.ts.map +1 -0
  138. package/dist/cli/init.js +182 -0
  139. package/dist/cli/init.js.map +1 -0
  140. package/dist/cli/mcp-proxy.d.ts +10 -0
  141. package/dist/cli/mcp-proxy.d.ts.map +1 -0
  142. package/dist/cli/mcp-proxy.js +129 -0
  143. package/dist/cli/mcp-proxy.js.map +1 -0
  144. package/dist/cli/parse-args.d.ts +20 -0
  145. package/dist/cli/parse-args.d.ts.map +1 -0
  146. package/dist/cli/parse-args.js +69 -0
  147. package/dist/cli/parse-args.js.map +1 -0
  148. package/dist/cli/rules.d.ts +55 -0
  149. package/dist/cli/rules.d.ts.map +1 -0
  150. package/dist/cli/rules.js +199 -0
  151. package/dist/cli/rules.js.map +1 -0
  152. package/dist/cli/scope.d.ts +12 -0
  153. package/dist/cli/scope.d.ts.map +1 -0
  154. package/dist/cli/scope.js +44 -0
  155. package/dist/cli/scope.js.map +1 -0
  156. package/dist/cli/serve.d.ts +122 -0
  157. package/dist/cli/serve.d.ts.map +1 -0
  158. package/dist/cli/serve.js +844 -0
  159. package/dist/cli/serve.js.map +1 -0
  160. package/dist/cli/service-commands.d.ts +8 -0
  161. package/dist/cli/service-commands.d.ts.map +1 -0
  162. package/dist/cli/service-commands.js +58 -0
  163. package/dist/cli/service-commands.js.map +1 -0
  164. package/dist/cli/snapshot.d.ts +22 -0
  165. package/dist/cli/snapshot.d.ts.map +1 -0
  166. package/dist/cli/snapshot.js +139 -0
  167. package/dist/cli/snapshot.js.map +1 -0
  168. package/dist/cli/storage-rules.d.ts +21 -0
  169. package/dist/cli/storage-rules.d.ts.map +1 -0
  170. package/dist/cli/storage-rules.js +121 -0
  171. package/dist/cli/storage-rules.js.map +1 -0
  172. package/dist/cli/verify.d.ts +23 -0
  173. package/dist/cli/verify.d.ts.map +1 -0
  174. package/dist/cli/verify.js +349 -0
  175. package/dist/cli/verify.js.map +1 -0
  176. package/dist/credentials/core/memoize-ttl.d.ts +58 -0
  177. package/dist/credentials/core/memoize-ttl.d.ts.map +1 -0
  178. package/dist/credentials/core/memoize-ttl.js +88 -0
  179. package/dist/credentials/core/memoize-ttl.js.map +1 -0
  180. package/dist/credentials/core/types.d.ts +11 -0
  181. package/dist/credentials/core/types.d.ts.map +1 -0
  182. package/dist/credentials/core/types.js +2 -0
  183. package/dist/credentials/core/types.js.map +1 -0
  184. package/dist/credentials/node/from-adc.d.ts +10 -0
  185. package/dist/credentials/node/from-adc.d.ts.map +1 -0
  186. package/dist/credentials/node/from-adc.js +76 -0
  187. package/dist/credentials/node/from-adc.js.map +1 -0
  188. package/dist/credentials/node/from-service-account.d.ts +24 -0
  189. package/dist/credentials/node/from-service-account.d.ts.map +1 -0
  190. package/dist/credentials/node/from-service-account.js +108 -0
  191. package/dist/credentials/node/from-service-account.js.map +1 -0
  192. package/dist/credentials/node/index.d.ts +7 -0
  193. package/dist/credentials/node/index.d.ts.map +1 -0
  194. package/dist/credentials/node/index.js +7 -0
  195. package/dist/credentials/node/index.js.map +1 -0
  196. package/dist/discover/concurrency.d.ts +42 -0
  197. package/dist/discover/concurrency.d.ts.map +1 -0
  198. package/dist/discover/concurrency.js +113 -0
  199. package/dist/discover/concurrency.js.map +1 -0
  200. package/dist/discover/crawler-adapter.d.ts +48 -0
  201. package/dist/discover/crawler-adapter.d.ts.map +1 -0
  202. package/dist/discover/crawler-adapter.js +92 -0
  203. package/dist/discover/crawler-adapter.js.map +1 -0
  204. package/dist/discover/crawler.d.ts +294 -0
  205. package/dist/discover/crawler.d.ts.map +1 -0
  206. package/dist/discover/crawler.js +764 -0
  207. package/dist/discover/crawler.js.map +1 -0
  208. package/dist/discover/credential-free.d.ts +19 -0
  209. package/dist/discover/credential-free.d.ts.map +1 -0
  210. package/dist/discover/credential-free.js +18 -0
  211. package/dist/discover/credential-free.js.map +1 -0
  212. package/dist/discover/findCollectionGroup.d.ts +44 -0
  213. package/dist/discover/findCollectionGroup.d.ts.map +1 -0
  214. package/dist/discover/findCollectionGroup.js +81 -0
  215. package/dist/discover/findCollectionGroup.js.map +1 -0
  216. package/dist/discover/firestore-source.d.ts +60 -0
  217. package/dist/discover/firestore-source.d.ts.map +1 -0
  218. package/dist/discover/firestore-source.js +11 -0
  219. package/dist/discover/firestore-source.js.map +1 -0
  220. package/dist/discover/index.d.ts +3 -0
  221. package/dist/discover/index.d.ts.map +1 -0
  222. package/dist/discover/index.js +5 -0
  223. package/dist/discover/index.js.map +1 -0
  224. package/dist/discover/merge.d.ts +108 -0
  225. package/dist/discover/merge.d.ts.map +1 -0
  226. package/dist/discover/merge.js +394 -0
  227. package/dist/discover/merge.js.map +1 -0
  228. package/dist/discover/session.d.ts +116 -0
  229. package/dist/discover/session.d.ts.map +1 -0
  230. package/dist/discover/session.js +331 -0
  231. package/dist/discover/session.js.map +1 -0
  232. package/dist/discover/tools.d.ts +58 -0
  233. package/dist/discover/tools.d.ts.map +1 -0
  234. package/dist/discover/tools.js +115 -0
  235. package/dist/discover/tools.js.map +1 -0
  236. package/dist/discover/types.d.ts +190 -0
  237. package/dist/discover/types.d.ts.map +1 -0
  238. package/dist/discover/types.js +12 -0
  239. package/dist/discover/types.js.map +1 -0
  240. package/dist/discover/wire.d.ts +70 -0
  241. package/dist/discover/wire.d.ts.map +1 -0
  242. package/dist/discover/wire.js +309 -0
  243. package/dist/discover/wire.js.map +1 -0
  244. package/dist/functions-rtdb/child.d.ts +52 -0
  245. package/dist/functions-rtdb/child.d.ts.map +1 -0
  246. package/dist/functions-rtdb/child.js +283 -0
  247. package/dist/functions-rtdb/child.js.map +1 -0
  248. package/dist/functions-rtdb/delivery.d.ts +4 -0
  249. package/dist/functions-rtdb/delivery.d.ts.map +1 -0
  250. package/dist/functions-rtdb/delivery.js +2 -0
  251. package/dist/functions-rtdb/delivery.js.map +1 -0
  252. package/dist/functions-rtdb/discovery.d.ts +41 -0
  253. package/dist/functions-rtdb/discovery.d.ts.map +1 -0
  254. package/dist/functions-rtdb/discovery.js +86 -0
  255. package/dist/functions-rtdb/discovery.js.map +1 -0
  256. package/dist/functions-rtdb/event.d.ts +20 -0
  257. package/dist/functions-rtdb/event.d.ts.map +1 -0
  258. package/dist/functions-rtdb/event.js +45 -0
  259. package/dist/functions-rtdb/event.js.map +1 -0
  260. package/dist/functions-rtdb/execution.d.ts +20 -0
  261. package/dist/functions-rtdb/execution.d.ts.map +1 -0
  262. package/dist/functions-rtdb/execution.js +70 -0
  263. package/dist/functions-rtdb/execution.js.map +1 -0
  264. package/dist/functions-rtdb/in-memory-delivery.d.ts +9 -0
  265. package/dist/functions-rtdb/in-memory-delivery.d.ts.map +1 -0
  266. package/dist/functions-rtdb/in-memory-delivery.js +36 -0
  267. package/dist/functions-rtdb/in-memory-delivery.js.map +1 -0
  268. package/dist/functions-rtdb/project.d.ts +7 -0
  269. package/dist/functions-rtdb/project.d.ts.map +1 -0
  270. package/dist/functions-rtdb/project.js +54 -0
  271. package/dist/functions-rtdb/project.js.map +1 -0
  272. package/dist/functions-rtdb/projection.d.ts +14 -0
  273. package/dist/functions-rtdb/projection.d.ts.map +1 -0
  274. package/dist/functions-rtdb/projection.js +65 -0
  275. package/dist/functions-rtdb/projection.js.map +1 -0
  276. package/dist/functions-rtdb/reference-pattern.d.ts +5 -0
  277. package/dist/functions-rtdb/reference-pattern.d.ts.map +1 -0
  278. package/dist/functions-rtdb/reference-pattern.js +14 -0
  279. package/dist/functions-rtdb/reference-pattern.js.map +1 -0
  280. package/dist/functions-rtdb/remote-delivery.d.ts +9 -0
  281. package/dist/functions-rtdb/remote-delivery.d.ts.map +1 -0
  282. package/dist/functions-rtdb/remote-delivery.js +11 -0
  283. package/dist/functions-rtdb/remote-delivery.js.map +1 -0
  284. package/dist/pkg-version.d.ts +2 -0
  285. package/dist/pkg-version.d.ts.map +1 -0
  286. package/dist/pkg-version.js +47 -0
  287. package/dist/pkg-version.js.map +1 -0
  288. package/dist/register/esm-exports.d.ts +26 -0
  289. package/dist/register/esm-exports.d.ts.map +1 -0
  290. package/dist/register/esm-exports.js +61 -0
  291. package/dist/register/esm-exports.js.map +1 -0
  292. package/dist/register/hooks.d.ts +13 -0
  293. package/dist/register/hooks.d.ts.map +1 -0
  294. package/dist/register/hooks.js +15 -0
  295. package/dist/register/hooks.js.map +1 -0
  296. package/dist/register/index.d.ts +5 -0
  297. package/dist/register/index.d.ts.map +1 -0
  298. package/dist/register/index.js +124 -0
  299. package/dist/register/index.js.map +1 -0
  300. package/dist/register/mapping.d.ts +19 -0
  301. package/dist/register/mapping.d.ts.map +1 -0
  302. package/dist/register/mapping.js +35 -0
  303. package/dist/register/mapping.js.map +1 -0
  304. package/dist/remote/index.d.ts +232 -0
  305. package/dist/remote/index.d.ts.map +1 -0
  306. package/dist/remote/index.js +720 -0
  307. package/dist/remote/index.js.map +1 -0
  308. package/dist/rtdb/crawl-snapshot.d.ts +17 -0
  309. package/dist/rtdb/crawl-snapshot.d.ts.map +1 -0
  310. package/dist/rtdb/crawl-snapshot.js +72 -0
  311. package/dist/rtdb/crawl-snapshot.js.map +1 -0
  312. package/dist/rtdb/inspection.d.ts +8 -0
  313. package/dist/rtdb/inspection.d.ts.map +1 -0
  314. package/dist/rtdb/inspection.js +111 -0
  315. package/dist/rtdb/inspection.js.map +1 -0
  316. package/dist/rtdb/load-rules-document.d.ts +25 -0
  317. package/dist/rtdb/load-rules-document.d.ts.map +1 -0
  318. package/dist/rtdb/load-rules-document.js +38 -0
  319. package/dist/rtdb/load-rules-document.js.map +1 -0
  320. package/dist/rtdb/rules-generation-tool.d.ts +4 -0
  321. package/dist/rtdb/rules-generation-tool.d.ts.map +1 -0
  322. package/dist/rtdb/rules-generation-tool.js +35 -0
  323. package/dist/rtdb/rules-generation-tool.js.map +1 -0
  324. package/dist/rtdb/rules-json.d.ts +8 -0
  325. package/dist/rtdb/rules-json.d.ts.map +1 -0
  326. package/dist/rtdb/rules-json.js +17 -0
  327. package/dist/rtdb/rules-json.js.map +1 -0
  328. package/dist/serve/bridge-mount.d.ts +36 -0
  329. package/dist/serve/bridge-mount.d.ts.map +1 -0
  330. package/dist/serve/bridge-mount.js +162 -0
  331. package/dist/serve/bridge-mount.js.map +1 -0
  332. package/dist/serve/bundler.d.ts +110 -0
  333. package/dist/serve/bundler.d.ts.map +1 -0
  334. package/dist/serve/bundler.js +432 -0
  335. package/dist/serve/bundler.js.map +1 -0
  336. package/dist/serve/capture-store.d.ts +27 -0
  337. package/dist/serve/capture-store.d.ts.map +1 -0
  338. package/dist/serve/capture-store.js +47 -0
  339. package/dist/serve/capture-store.js.map +1 -0
  340. package/dist/serve/discovery.d.ts +71 -0
  341. package/dist/serve/discovery.d.ts.map +1 -0
  342. package/dist/serve/discovery.js +158 -0
  343. package/dist/serve/discovery.js.map +1 -0
  344. package/dist/serve/docs-ui/_astro/_slug_.CQYSemvw.css +1 -0
  345. package/dist/serve/docs-ui/docs/_rhythm/index.html +99 -0
  346. package/dist/serve/docs-ui/docs/_rhythm.md +101 -0
  347. package/dist/serve/docs-ui/docs/api-reference/index.html +64 -0
  348. package/dist/serve/docs-ui/docs/api-reference.md +67 -0
  349. package/dist/serve/docs-ui/docs/audit-your-rules/index.html +34 -0
  350. package/dist/serve/docs-ui/docs/audit-your-rules.md +50 -0
  351. package/dist/serve/docs-ui/docs/create-pyric-reference-api/index.html +498 -0
  352. package/dist/serve/docs-ui/docs/create-pyric-reference-api.md +345 -0
  353. package/dist/serve/docs-ui/docs/firestore-rules-limits/index.html +59 -0
  354. package/dist/serve/docs-ui/docs/firestore-rules-limits.md +54 -0
  355. package/dist/serve/docs-ui/docs/how-the-swap-works/index.html +47 -0
  356. package/dist/serve/docs-ui/docs/how-the-swap-works.md +43 -0
  357. package/dist/serve/docs-ui/docs/how-we-know-it-matches-firebase/index.html +131 -0
  358. package/dist/serve/docs-ui/docs/how-we-know-it-matches-firebase.md +169 -0
  359. package/dist/serve/docs-ui/docs/index.html +2 -0
  360. package/dist/serve/docs-ui/docs/index.json +18637 -0
  361. package/dist/serve/docs-ui/docs/overview/index.html +23 -0
  362. package/dist/serve/docs-ui/docs/overview.md +40 -0
  363. package/dist/serve/docs-ui/docs/pyric-admin-app/index.html +19 -0
  364. package/dist/serve/docs-ui/docs/pyric-admin-app-reference-api/index.html +185 -0
  365. package/dist/serve/docs-ui/docs/pyric-admin-app-reference-api.md +206 -0
  366. package/dist/serve/docs-ui/docs/pyric-admin-app.md +27 -0
  367. package/dist/serve/docs-ui/docs/pyric-admin-auth/index.html +24 -0
  368. package/dist/serve/docs-ui/docs/pyric-admin-auth-reference-api/index.html +617 -0
  369. package/dist/serve/docs-ui/docs/pyric-admin-auth-reference-api.md +441 -0
  370. package/dist/serve/docs-ui/docs/pyric-admin-auth.md +29 -0
  371. package/dist/serve/docs-ui/docs/pyric-admin-database/index.html +26 -0
  372. package/dist/serve/docs-ui/docs/pyric-admin-database-reference-api/index.html +583 -0
  373. package/dist/serve/docs-ui/docs/pyric-admin-database-reference-api.md +597 -0
  374. package/dist/serve/docs-ui/docs/pyric-admin-database.md +31 -0
  375. package/dist/serve/docs-ui/docs/pyric-admin-firestore/index.html +38 -0
  376. package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-error-translation/index.html +57 -0
  377. package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-error-translation.md +95 -0
  378. package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-per-call-delegate/index.html +58 -0
  379. package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-per-call-delegate.md +94 -0
  380. package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-why-mirror-admin-shape/index.html +59 -0
  381. package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-why-mirror-admin-shape.md +88 -0
  382. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-run-a-transaction/index.html +53 -0
  383. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-run-a-transaction.md +76 -0
  384. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-seed-and-set-rules/index.html +62 -0
  385. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-seed-and-set-rules.md +96 -0
  386. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-translate-denials/index.html +80 -0
  387. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-translate-denials.md +98 -0
  388. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-use-onsnapshot/index.html +57 -0
  389. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-use-onsnapshot.md +88 -0
  390. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-write-a-batch/index.html +50 -0
  391. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-write-a-batch.md +73 -0
  392. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-api/index.html +32 -0
  393. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-api.md +30 -0
  394. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-onsnapshot/index.html +68 -0
  395. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-onsnapshot.md +81 -0
  396. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-re-exported-types/index.html +76 -0
  397. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-re-exported-types.md +103 -0
  398. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-sandbox-firestore/index.html +40 -0
  399. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-sandbox-firestore.md +77 -0
  400. package/dist/serve/docs-ui/docs/pyric-admin-firestore-tutorials-01-first-admin-session/index.html +118 -0
  401. package/dist/serve/docs-ui/docs/pyric-admin-firestore-tutorials-01-first-admin-session.md +166 -0
  402. package/dist/serve/docs-ui/docs/pyric-admin-firestore.md +53 -0
  403. package/dist/serve/docs-ui/docs/pyric-admin-storage/index.html +25 -0
  404. package/dist/serve/docs-ui/docs/pyric-admin-storage-reference-api/index.html +317 -0
  405. package/dist/serve/docs-ui/docs/pyric-admin-storage-reference-api.md +285 -0
  406. package/dist/serve/docs-ui/docs/pyric-admin-storage.md +30 -0
  407. package/dist/serve/docs-ui/docs/pyric-ai-compat/index.html +436 -0
  408. package/dist/serve/docs-ui/docs/pyric-ai-compat.md +471 -0
  409. package/dist/serve/docs-ui/docs/pyric-ai-reference-api/index.html +5831 -0
  410. package/dist/serve/docs-ui/docs/pyric-ai-reference-api.md +5440 -0
  411. package/dist/serve/docs-ui/docs/pyric-ai-scripting-reference-api/index.html +159 -0
  412. package/dist/serve/docs-ui/docs/pyric-ai-scripting-reference-api.md +122 -0
  413. package/dist/serve/docs-ui/docs/pyric-app-compat/index.html +180 -0
  414. package/dist/serve/docs-ui/docs/pyric-app-compat.md +199 -0
  415. package/dist/serve/docs-ui/docs/pyric-app-reference-api/index.html +420 -0
  416. package/dist/serve/docs-ui/docs/pyric-app-reference-api.md +326 -0
  417. package/dist/serve/docs-ui/docs/pyric-auth/index.html +59 -0
  418. package/dist/serve/docs-ui/docs/pyric-auth-compat/index.html +804 -0
  419. package/dist/serve/docs-ui/docs/pyric-auth-compat.md +847 -0
  420. package/dist/serve/docs-ui/docs/pyric-auth-reference-api/index.html +5452 -0
  421. package/dist/serve/docs-ui/docs/pyric-auth-reference-api.md +5271 -0
  422. package/dist/serve/docs-ui/docs/pyric-auth-reference-feature-matrix/index.html +781 -0
  423. package/dist/serve/docs-ui/docs/pyric-auth-reference-feature-matrix.md +198 -0
  424. package/dist/serve/docs-ui/docs/pyric-auth-reference-sandbox-test-driver/index.html +71 -0
  425. package/dist/serve/docs-ui/docs/pyric-auth-reference-sandbox-test-driver.md +108 -0
  426. package/dist/serve/docs-ui/docs/pyric-auth.md +86 -0
  427. package/dist/serve/docs-ui/docs/pyric-cli/index.html +40 -0
  428. package/dist/serve/docs-ui/docs/pyric-cli-assurance-browser-reference-api/index.html +98 -0
  429. package/dist/serve/docs-ui/docs/pyric-cli-assurance-browser-reference-api.md +88 -0
  430. package/dist/serve/docs-ui/docs/pyric-cli-assurance-reference-api/index.html +2355 -0
  431. package/dist/serve/docs-ui/docs/pyric-cli-assurance-reference-api.md +1554 -0
  432. package/dist/serve/docs-ui/docs/pyric-cli-bridge/index.html +69 -0
  433. package/dist/serve/docs-ui/docs/pyric-cli-bridge-client-reference-api/index.html +546 -0
  434. package/dist/serve/docs-ui/docs/pyric-cli-bridge-client-reference-api.md +485 -0
  435. package/dist/serve/docs-ui/docs/pyric-cli-bridge-reference-api/index.html +506 -0
  436. package/dist/serve/docs-ui/docs/pyric-cli-bridge-reference-api.md +419 -0
  437. package/dist/serve/docs-ui/docs/pyric-cli-bridge.md +99 -0
  438. package/dist/serve/docs-ui/docs/pyric-cli-credentials-node-reference-api/index.html +67 -0
  439. package/dist/serve/docs-ui/docs/pyric-cli-credentials-node-reference-api.md +59 -0
  440. package/dist/serve/docs-ui/docs/pyric-cli-discover-reference-api/index.html +2355 -0
  441. package/dist/serve/docs-ui/docs/pyric-cli-discover-reference-api.md +2036 -0
  442. package/dist/serve/docs-ui/docs/pyric-cli-functions-rtdb-compat/index.html +112 -0
  443. package/dist/serve/docs-ui/docs/pyric-cli-functions-rtdb-compat.md +124 -0
  444. package/dist/serve/docs-ui/docs/pyric-cli-how-to-build-a-standalone-binary/index.html +91 -0
  445. package/dist/serve/docs-ui/docs/pyric-cli-how-to-build-a-standalone-binary.md +105 -0
  446. package/dist/serve/docs-ui/docs/pyric-cli-how-to-promote-sandbox-state-to-a-fixture/index.html +52 -0
  447. package/dist/serve/docs-ui/docs/pyric-cli-how-to-promote-sandbox-state-to-a-fixture.md +98 -0
  448. package/dist/serve/docs-ui/docs/pyric-cli-how-to-run-rtdb-onvaluecreated/index.html +66 -0
  449. package/dist/serve/docs-ui/docs/pyric-cli-how-to-run-rtdb-onvaluecreated.md +100 -0
  450. package/dist/serve/docs-ui/docs/pyric-cli-how-to-serve-persistence-and-multi-tab/index.html +228 -0
  451. package/dist/serve/docs-ui/docs/pyric-cli-how-to-serve-persistence-and-multi-tab.md +179 -0
  452. package/dist/serve/docs-ui/docs/pyric-cli-how-to-use-the-vite-plugin/index.html +341 -0
  453. package/dist/serve/docs-ui/docs/pyric-cli-how-to-use-the-vite-plugin.md +309 -0
  454. package/dist/serve/docs-ui/docs/pyric-cli-how-to-verify-against-a-captured-session/index.html +128 -0
  455. package/dist/serve/docs-ui/docs/pyric-cli-how-to-verify-against-a-captured-session.md +207 -0
  456. package/dist/serve/docs-ui/docs/pyric-cli-reference-cli/index.html +404 -0
  457. package/dist/serve/docs-ui/docs/pyric-cli-reference-cli.md +249 -0
  458. package/dist/serve/docs-ui/docs/pyric-cli-reference-package-and-resolution/index.html +93 -0
  459. package/dist/serve/docs-ui/docs/pyric-cli-reference-package-and-resolution.md +65 -0
  460. package/dist/serve/docs-ui/docs/pyric-cli-reference-verify/index.html +81 -0
  461. package/dist/serve/docs-ui/docs/pyric-cli-reference-verify.md +110 -0
  462. package/dist/serve/docs-ui/docs/pyric-cli-register-reference-api/index.html +10 -0
  463. package/dist/serve/docs-ui/docs/pyric-cli-register-reference-api.md +16 -0
  464. package/dist/serve/docs-ui/docs/pyric-cli-remote-reference-api/index.html +1044 -0
  465. package/dist/serve/docs-ui/docs/pyric-cli-remote-reference-api.md +952 -0
  466. package/dist/serve/docs-ui/docs/pyric-cli-serve-worker-reference-api/index.html +5041 -0
  467. package/dist/serve/docs-ui/docs/pyric-cli-serve-worker-reference-api.md +4739 -0
  468. package/dist/serve/docs-ui/docs/pyric-cli-tutorials-server-adoption/index.html +219 -0
  469. package/dist/serve/docs-ui/docs/pyric-cli-tutorials-server-adoption.md +251 -0
  470. package/dist/serve/docs-ui/docs/pyric-cli-tutorials-wire-claude-code/index.html +136 -0
  471. package/dist/serve/docs-ui/docs/pyric-cli-tutorials-wire-claude-code.md +217 -0
  472. package/dist/serve/docs-ui/docs/pyric-cli-verify-reference-api/index.html +926 -0
  473. package/dist/serve/docs-ui/docs/pyric-cli-verify-reference-api.md +586 -0
  474. package/dist/serve/docs-ui/docs/pyric-cli-vite-reference-api/index.html +102 -0
  475. package/dist/serve/docs-ui/docs/pyric-cli-vite-reference-api.md +76 -0
  476. package/dist/serve/docs-ui/docs/pyric-cli.md +42 -0
  477. package/dist/serve/docs-ui/docs/pyric-conformance-scores/index.html +180 -0
  478. package/dist/serve/docs-ui/docs/pyric-conformance-scores.md +184 -0
  479. package/dist/serve/docs-ui/docs/pyric-database/index.html +43 -0
  480. package/dist/serve/docs-ui/docs/pyric-database-compat/index.html +1224 -0
  481. package/dist/serve/docs-ui/docs/pyric-database-compat.md +1289 -0
  482. package/dist/serve/docs-ui/docs/pyric-database-explanation-rules-authoring-and-deploy-are-separate/index.html +16 -0
  483. package/dist/serve/docs-ui/docs/pyric-database-explanation-rules-authoring-and-deploy-are-separate.md +23 -0
  484. package/dist/serve/docs-ui/docs/pyric-database-reference-api/index.html +1851 -0
  485. package/dist/serve/docs-ui/docs/pyric-database-reference-api.md +1842 -0
  486. package/dist/serve/docs-ui/docs/pyric-database-reference-constraints/index.html +381 -0
  487. package/dist/serve/docs-ui/docs/pyric-database-reference-constraints.md +168 -0
  488. package/dist/serve/docs-ui/docs/pyric-database-reference-rules-tooling/index.html +218 -0
  489. package/dist/serve/docs-ui/docs/pyric-database-reference-rules-tooling.md +303 -0
  490. package/dist/serve/docs-ui/docs/pyric-database-tutorials-01-author-rtdb-rules-with-constraints/index.html +125 -0
  491. package/dist/serve/docs-ui/docs/pyric-database-tutorials-01-author-rtdb-rules-with-constraints.md +171 -0
  492. package/dist/serve/docs-ui/docs/pyric-database.md +26 -0
  493. package/dist/serve/docs-ui/docs/pyric-explanation-versioning-and-compatibility/index.html +40 -0
  494. package/dist/serve/docs-ui/docs/pyric-explanation-versioning-and-compatibility.md +68 -0
  495. package/dist/serve/docs-ui/docs/pyric-firestore/index.html +48 -0
  496. package/dist/serve/docs-ui/docs/pyric-firestore-compat/index.html +868 -0
  497. package/dist/serve/docs-ui/docs/pyric-firestore-compat.md +939 -0
  498. package/dist/serve/docs-ui/docs/pyric-firestore-explanation-rules-tooling-is-separate/index.html +92 -0
  499. package/dist/serve/docs-ui/docs/pyric-firestore-explanation-rules-tooling-is-separate.md +70 -0
  500. package/dist/serve/docs-ui/docs/pyric-firestore-explanation-target-symbol-opacity/index.html +59 -0
  501. package/dist/serve/docs-ui/docs/pyric-firestore-explanation-target-symbol-opacity.md +91 -0
  502. package/dist/serve/docs-ui/docs/pyric-firestore-explanation-two-backends-one-surface/index.html +43 -0
  503. package/dist/serve/docs-ui/docs/pyric-firestore-explanation-two-backends-one-surface.md +58 -0
  504. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-migrate-from-firebase-firestore/index.html +58 -0
  505. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-migrate-from-firebase-firestore.md +86 -0
  506. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-pick-a-backend/index.html +52 -0
  507. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-pick-a-backend.md +83 -0
  508. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-run-a-transaction/index.html +42 -0
  509. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-run-a-transaction.md +59 -0
  510. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-onsnapshot/index.html +66 -0
  511. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-onsnapshot.md +96 -0
  512. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-sandbox-ops/index.html +61 -0
  513. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-sandbox-ops.md +92 -0
  514. package/dist/serve/docs-ui/docs/pyric-firestore-reference-api/index.html +3623 -0
  515. package/dist/serve/docs-ui/docs/pyric-firestore-reference-api.md +3399 -0
  516. package/dist/serve/docs-ui/docs/pyric-firestore-reference-feature-matrix/index.html +80 -0
  517. package/dist/serve/docs-ui/docs/pyric-firestore-reference-feature-matrix.md +66 -0
  518. package/dist/serve/docs-ui/docs/pyric-firestore-reference-getfirestore/index.html +46 -0
  519. package/dist/serve/docs-ui/docs/pyric-firestore-reference-getfirestore.md +73 -0
  520. package/dist/serve/docs-ui/docs/pyric-firestore-reference-query-constraints/index.html +80 -0
  521. package/dist/serve/docs-ui/docs/pyric-firestore-reference-query-constraints.md +129 -0
  522. package/dist/serve/docs-ui/docs/pyric-firestore-reference-sandbox-ops/index.html +58 -0
  523. package/dist/serve/docs-ui/docs/pyric-firestore-reference-sandbox-ops.md +88 -0
  524. package/dist/serve/docs-ui/docs/pyric-firestore-reference-tool-factories/index.html +51 -0
  525. package/dist/serve/docs-ui/docs/pyric-firestore-reference-tool-factories.md +71 -0
  526. package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-01-write-a-sandbox-demo/index.html +130 -0
  527. package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-01-write-a-sandbox-demo.md +180 -0
  528. package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-02-swap-to-prod-backend/index.html +59 -0
  529. package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-02-swap-to-prod-backend.md +92 -0
  530. package/dist/serve/docs-ui/docs/pyric-firestore-values-reference-api/index.html +30 -0
  531. package/dist/serve/docs-ui/docs/pyric-firestore-values-reference-api.md +30 -0
  532. package/dist/serve/docs-ui/docs/pyric-firestore.md +72 -0
  533. package/dist/serve/docs-ui/docs/pyric-messaging-compat/index.html +300 -0
  534. package/dist/serve/docs-ui/docs/pyric-messaging-compat.md +321 -0
  535. package/dist/serve/docs-ui/docs/pyric-messaging-reference-api/index.html +508 -0
  536. package/dist/serve/docs-ui/docs/pyric-messaging-reference-api.md +374 -0
  537. package/dist/serve/docs-ui/docs/pyric-messaging-sw-reference-api/index.html +482 -0
  538. package/dist/serve/docs-ui/docs/pyric-messaging-sw-reference-api.md +348 -0
  539. package/dist/serve/docs-ui/docs/pyric-rules/index.html +87 -0
  540. package/dist/serve/docs-ui/docs/pyric-rules-compat/index.html +328 -0
  541. package/dist/serve/docs-ui/docs/pyric-rules-compat.md +347 -0
  542. package/dist/serve/docs-ui/docs/pyric-rules-explanation-agent-failure-modes/index.html +50 -0
  543. package/dist/serve/docs-ui/docs/pyric-rules-explanation-agent-failure-modes.md +78 -0
  544. package/dist/serve/docs-ui/docs/pyric-rules-explanation-lint-vs-validate-vs-simulate-vs-test/index.html +79 -0
  545. package/dist/serve/docs-ui/docs/pyric-rules-explanation-lint-vs-validate-vs-simulate-vs-test.md +69 -0
  546. package/dist/serve/docs-ui/docs/pyric-rules-explanation-runtime-budget-and-shared-gates/index.html +67 -0
  547. package/dist/serve/docs-ui/docs/pyric-rules-explanation-runtime-budget-and-shared-gates.md +75 -0
  548. package/dist/serve/docs-ui/docs/pyric-rules-explanation-sentinel-expression-engine/index.html +49 -0
  549. package/dist/serve/docs-ui/docs/pyric-rules-explanation-sentinel-expression-engine.md +74 -0
  550. package/dist/serve/docs-ui/docs/pyric-rules-explanation-simulator-vs-rules-test-api/index.html +95 -0
  551. package/dist/serve/docs-ui/docs/pyric-rules-explanation-simulator-vs-rules-test-api.md +80 -0
  552. package/dist/serve/docs-ui/docs/pyric-rules-explanation-the-2-plus-modules-extension/index.html +58 -0
  553. package/dist/serve/docs-ui/docs/pyric-rules-explanation-the-2-plus-modules-extension.md +79 -0
  554. package/dist/serve/docs-ui/docs/pyric-rules-explanation-value-wrappers-design/index.html +63 -0
  555. package/dist/serve/docs-ui/docs/pyric-rules-explanation-value-wrappers-design.md +84 -0
  556. package/dist/serve/docs-ui/docs/pyric-rules-explanation-why-this-package-exists/index.html +34 -0
  557. package/dist/serve/docs-ui/docs/pyric-rules-explanation-why-this-package-exists.md +43 -0
  558. package/dist/serve/docs-ui/docs/pyric-rules-how-to-compare-rulesets-for-weakening/index.html +55 -0
  559. package/dist/serve/docs-ui/docs/pyric-rules-how-to-compare-rulesets-for-weakening.md +77 -0
  560. package/dist/serve/docs-ui/docs/pyric-rules-how-to-inspect-rules-via-the-ast/index.html +90 -0
  561. package/dist/serve/docs-ui/docs/pyric-rules-how-to-inspect-rules-via-the-ast.md +129 -0
  562. package/dist/serve/docs-ui/docs/pyric-rules-how-to-lint-rules-source/index.html +55 -0
  563. package/dist/serve/docs-ui/docs/pyric-rules-how-to-lint-rules-source.md +84 -0
  564. package/dist/serve/docs-ui/docs/pyric-rules-how-to-pin-request-time/index.html +49 -0
  565. package/dist/serve/docs-ui/docs/pyric-rules-how-to-pin-request-time.md +64 -0
  566. package/dist/serve/docs-ui/docs/pyric-rules-how-to-register-tools-with-an-agent/index.html +61 -0
  567. package/dist/serve/docs-ui/docs/pyric-rules-how-to-register-tools-with-an-agent.md +87 -0
  568. package/dist/serve/docs-ui/docs/pyric-rules-how-to-resolve-module-imports/index.html +93 -0
  569. package/dist/serve/docs-ui/docs/pyric-rules-how-to-resolve-module-imports.md +105 -0
  570. package/dist/serve/docs-ui/docs/pyric-rules-how-to-simulate-rules-locally/index.html +89 -0
  571. package/dist/serve/docs-ui/docs/pyric-rules-how-to-simulate-rules-locally.md +134 -0
  572. package/dist/serve/docs-ui/docs/pyric-rules-how-to-test-rules-against-firebase/index.html +66 -0
  573. package/dist/serve/docs-ui/docs/pyric-rules-how-to-test-rules-against-firebase.md +102 -0
  574. package/dist/serve/docs-ui/docs/pyric-rules-reference-api/index.html +2629 -0
  575. package/dist/serve/docs-ui/docs/pyric-rules-reference-api.md +2213 -0
  576. package/dist/serve/docs-ui/docs/pyric-rules-reference-ast/index.html +85 -0
  577. package/dist/serve/docs-ui/docs/pyric-rules-reference-ast.md +121 -0
  578. package/dist/serve/docs-ui/docs/pyric-rules-reference-conformance-gaps/index.html +277 -0
  579. package/dist/serve/docs-ui/docs/pyric-rules-reference-conformance-gaps.md +360 -0
  580. package/dist/serve/docs-ui/docs/pyric-rules-reference-errors/index.html +76 -0
  581. package/dist/serve/docs-ui/docs/pyric-rules-reference-errors.md +123 -0
  582. package/dist/serve/docs-ui/docs/pyric-rules-reference-lint-rules/index.html +148 -0
  583. package/dist/serve/docs-ui/docs/pyric-rules-reference-lint-rules.md +159 -0
  584. package/dist/serve/docs-ui/docs/pyric-rules-reference-simulator-context/index.html +66 -0
  585. package/dist/serve/docs-ui/docs/pyric-rules-reference-simulator-context.md +104 -0
  586. package/dist/serve/docs-ui/docs/pyric-rules-reference-stdlib-modules/index.html +241 -0
  587. package/dist/serve/docs-ui/docs/pyric-rules-reference-stdlib-modules.md +143 -0
  588. package/dist/serve/docs-ui/docs/pyric-rules-reference-test-case-schema/index.html +94 -0
  589. package/dist/serve/docs-ui/docs/pyric-rules-reference-test-case-schema.md +121 -0
  590. package/dist/serve/docs-ui/docs/pyric-rules-reference-validator-findings/index.html +87 -0
  591. package/dist/serve/docs-ui/docs/pyric-rules-reference-validator-findings.md +117 -0
  592. package/dist/serve/docs-ui/docs/pyric-rules-reference-value-wrappers/index.html +102 -0
  593. package/dist/serve/docs-ui/docs/pyric-rules-reference-value-wrappers.md +152 -0
  594. package/dist/serve/docs-ui/docs/pyric-rules.md +93 -0
  595. package/dist/serve/docs-ui/docs/pyric-sandbox/index.html +67 -0
  596. package/dist/serve/docs-ui/docs/pyric-sandbox-database-reference-api/index.html +120 -0
  597. package/dist/serve/docs-ui/docs/pyric-sandbox-database-reference-api.md +110 -0
  598. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-every-op-is-a-request/index.html +141 -0
  599. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-every-op-is-a-request.md +161 -0
  600. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-identity-is-a-context/index.html +66 -0
  601. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-identity-is-a-context.md +110 -0
  602. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-internal-adapter-protocol/index.html +71 -0
  603. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-internal-adapter-protocol.md +111 -0
  604. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-listener-re-evaluation/index.html +56 -0
  605. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-listener-re-evaluation.md +82 -0
  606. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-local-backend-vs-firestore-offline/index.html +64 -0
  607. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-local-backend-vs-firestore-offline.md +56 -0
  608. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-why-adapters-are-siblings/index.html +92 -0
  609. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-why-adapters-are-siblings.md +90 -0
  610. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-why-this-package-exists/index.html +69 -0
  611. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-why-this-package-exists.md +57 -0
  612. package/dist/serve/docs-ui/docs/pyric-sandbox-firestore-reference-api/index.html +202 -0
  613. package/dist/serve/docs-ui/docs/pyric-sandbox-firestore-reference-api.md +134 -0
  614. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-multiple-isolated-sandboxes/index.html +63 -0
  615. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-multiple-isolated-sandboxes.md +89 -0
  616. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-observe-events/index.html +159 -0
  617. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-observe-events.md +168 -0
  618. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-pick-an-adapter/index.html +79 -0
  619. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-pick-an-adapter.md +75 -0
  620. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-replay-events/index.html +88 -0
  621. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-replay-events.md +92 -0
  622. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-reset-between-tests/index.html +68 -0
  623. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-reset-between-tests.md +92 -0
  624. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-seed-data-and-rules/index.html +91 -0
  625. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-seed-data-and-rules.md +122 -0
  626. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-switch-users/index.html +50 -0
  627. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-switch-users.md +78 -0
  628. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-use-admin-reads/index.html +54 -0
  629. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-use-admin-reads.md +85 -0
  630. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-api/index.html +5019 -0
  631. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-api.md +4060 -0
  632. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-divergences/index.html +125 -0
  633. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-divergences.md +151 -0
  634. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-error-codes/index.html +110 -0
  635. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-error-codes.md +118 -0
  636. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-internal-protocol/index.html +72 -0
  637. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-internal-protocol.md +109 -0
  638. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-sandbox-and-context/index.html +90 -0
  639. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-sandbox-and-context.md +140 -0
  640. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-sandbox-event/index.html +146 -0
  641. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-sandbox-event.md +204 -0
  642. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-snapshot-and-admin/index.html +53 -0
  643. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-snapshot-and-admin.md +89 -0
  644. package/dist/serve/docs-ui/docs/pyric-sandbox-tutorials-01-your-first-sandbox-session/index.html +115 -0
  645. package/dist/serve/docs-ui/docs/pyric-sandbox-tutorials-01-your-first-sandbox-session.md +176 -0
  646. package/dist/serve/docs-ui/docs/pyric-sandbox.md +69 -0
  647. package/dist/serve/docs-ui/docs/pyric-storage/index.html +65 -0
  648. package/dist/serve/docs-ui/docs/pyric-storage-compat/index.html +676 -0
  649. package/dist/serve/docs-ui/docs/pyric-storage-compat.md +699 -0
  650. package/dist/serve/docs-ui/docs/pyric-storage-explanation-implementation-scope/index.html +52 -0
  651. package/dist/serve/docs-ui/docs/pyric-storage-explanation-implementation-scope.md +85 -0
  652. package/dist/serve/docs-ui/docs/pyric-storage-explanation-session-archive-use-case/index.html +58 -0
  653. package/dist/serve/docs-ui/docs/pyric-storage-explanation-session-archive-use-case.md +82 -0
  654. package/dist/serve/docs-ui/docs/pyric-storage-explanation-why-indexeddb/index.html +50 -0
  655. package/dist/serve/docs-ui/docs/pyric-storage-explanation-why-indexeddb.md +82 -0
  656. package/dist/serve/docs-ui/docs/pyric-storage-how-to-enforce-rules/index.html +120 -0
  657. package/dist/serve/docs-ui/docs/pyric-storage-how-to-enforce-rules.md +127 -0
  658. package/dist/serve/docs-ui/docs/pyric-storage-how-to-list-and-delete/index.html +53 -0
  659. package/dist/serve/docs-ui/docs/pyric-storage-how-to-list-and-delete.md +86 -0
  660. package/dist/serve/docs-ui/docs/pyric-storage-how-to-switch-backends/index.html +43 -0
  661. package/dist/serve/docs-ui/docs/pyric-storage-how-to-switch-backends.md +65 -0
  662. package/dist/serve/docs-ui/docs/pyric-storage-how-to-test-rule-expressions/index.html +70 -0
  663. package/dist/serve/docs-ui/docs/pyric-storage-how-to-test-rule-expressions.md +88 -0
  664. package/dist/serve/docs-ui/docs/pyric-storage-reference-api/index.html +2120 -0
  665. package/dist/serve/docs-ui/docs/pyric-storage-reference-api.md +1687 -0
  666. package/dist/serve/docs-ui/docs/pyric-storage-reference-conformance-gaps/index.html +137 -0
  667. package/dist/serve/docs-ui/docs/pyric-storage-reference-conformance-gaps.md +171 -0
  668. package/dist/serve/docs-ui/docs/pyric-storage-reference-error-codes/index.html +37 -0
  669. package/dist/serve/docs-ui/docs/pyric-storage-reference-error-codes.md +57 -0
  670. package/dist/serve/docs-ui/docs/pyric-storage-reference-rules-subset/index.html +96 -0
  671. package/dist/serve/docs-ui/docs/pyric-storage-reference-rules-subset.md +134 -0
  672. package/dist/serve/docs-ui/docs/pyric-storage-reference-storage-options/index.html +39 -0
  673. package/dist/serve/docs-ui/docs/pyric-storage-reference-storage-options.md +61 -0
  674. package/dist/serve/docs-ui/docs/pyric-storage.md +67 -0
  675. package/dist/serve/docs-ui/docs/pyric-ui-agents-reference-api/index.html +638 -0
  676. package/dist/serve/docs-ui/docs/pyric-ui-agents-reference-api.md +430 -0
  677. package/dist/serve/docs-ui/docs/pyric-ui-auth-hooks-reference-api/index.html +813 -0
  678. package/dist/serve/docs-ui/docs/pyric-ui-auth-hooks-reference-api.md +634 -0
  679. package/dist/serve/docs-ui/docs/pyric-ui-auth-reference-api/index.html +1708 -0
  680. package/dist/serve/docs-ui/docs/pyric-ui-auth-reference-api.md +1300 -0
  681. package/dist/serve/docs-ui/docs/pyric-ui-events-hooks-reference-api/index.html +177 -0
  682. package/dist/serve/docs-ui/docs/pyric-ui-events-hooks-reference-api.md +111 -0
  683. package/dist/serve/docs-ui/docs/pyric-ui-events-reference-api/index.html +1542 -0
  684. package/dist/serve/docs-ui/docs/pyric-ui-events-reference-api.md +903 -0
  685. package/dist/serve/docs-ui/docs/pyric-ui-firestore-hooks-reference-api/index.html +1024 -0
  686. package/dist/serve/docs-ui/docs/pyric-ui-firestore-hooks-reference-api.md +640 -0
  687. package/dist/serve/docs-ui/docs/pyric-ui-firestore-reference-api/index.html +2753 -0
  688. package/dist/serve/docs-ui/docs/pyric-ui-firestore-reference-api.md +2171 -0
  689. package/dist/serve/docs-ui/docs/pyric-ui-primitives-reference-api/index.html +1005 -0
  690. package/dist/serve/docs-ui/docs/pyric-ui-primitives-reference-api.md +693 -0
  691. package/dist/serve/docs-ui/docs/pyric-ui-rtdb-reference-api/index.html +1388 -0
  692. package/dist/serve/docs-ui/docs/pyric-ui-rtdb-reference-api.md +1340 -0
  693. package/dist/serve/docs-ui/docs/pyric-ui-rules-hooks-reference-api/index.html +131 -0
  694. package/dist/serve/docs-ui/docs/pyric-ui-rules-hooks-reference-api.md +76 -0
  695. package/dist/serve/docs-ui/docs/pyric-ui-rules-reference-api/index.html +648 -0
  696. package/dist/serve/docs-ui/docs/pyric-ui-rules-reference-api.md +508 -0
  697. package/dist/serve/docs-ui/docs/pyric-ui-storage-hooks-reference-api/index.html +1457 -0
  698. package/dist/serve/docs-ui/docs/pyric-ui-storage-hooks-reference-api.md +1029 -0
  699. package/dist/serve/docs-ui/docs/pyric-ui-storage-reference-api/index.html +2476 -0
  700. package/dist/serve/docs-ui/docs/pyric-ui-storage-reference-api.md +1919 -0
  701. package/dist/serve/docs-ui/docs/pyric-ui-traffic-hooks-reference-api/index.html +1241 -0
  702. package/dist/serve/docs-ui/docs/pyric-ui-traffic-hooks-reference-api.md +817 -0
  703. package/dist/serve/docs-ui/docs/pyric-ui-traffic-reference-api/index.html +2289 -0
  704. package/dist/serve/docs-ui/docs/pyric-ui-traffic-reference-api.md +1489 -0
  705. package/dist/serve/docs-ui/docs/read-a-denial/index.html +40 -0
  706. package/dist/serve/docs-ui/docs/read-a-denial.md +62 -0
  707. package/dist/serve/docs-ui/docs/receive-messages/index.html +28 -0
  708. package/dist/serve/docs-ui/docs/receive-messages.md +43 -0
  709. package/dist/serve/docs-ui/docs/rtdb-rules-in-typescript/index.html +67 -0
  710. package/dist/serve/docs-ui/docs/rtdb-rules-in-typescript.md +101 -0
  711. package/dist/serve/docs-ui/docs/rules-patterns/index.html +68 -0
  712. package/dist/serve/docs-ui/docs/rules-patterns.md +104 -0
  713. package/dist/serve/docs-ui/docs/rules-standard-library/index.html +87 -0
  714. package/dist/serve/docs-ui/docs/rules-standard-library.md +93 -0
  715. package/dist/serve/docs-ui/docs/run-ai-logic-locally/index.html +27 -0
  716. package/dist/serve/docs-ui/docs/run-ai-logic-locally.md +43 -0
  717. package/dist/serve/docs-ui/docs/secure-it-with-rules/index.html +69 -0
  718. package/dist/serve/docs-ui/docs/secure-it-with-rules.md +101 -0
  719. package/dist/serve/docs-ui/docs/see-whats-happening/index.html +73 -0
  720. package/dist/serve/docs-ui/docs/see-whats-happening.md +77 -0
  721. package/dist/serve/docs-ui/docs/set-up-the-project/index.html +14 -0
  722. package/dist/serve/docs-ui/docs/set-up-the-project.md +19 -0
  723. package/dist/serve/docs-ui/docs/set-up-your-agent/index.html +42 -0
  724. package/dist/serve/docs-ui/docs/set-up-your-agent.md +86 -0
  725. package/dist/serve/docs-ui/docs/shape-your-data/index.html +44 -0
  726. package/dist/serve/docs-ui/docs/shape-your-data.md +88 -0
  727. package/dist/serve/docs-ui/docs/ship-to-production/index.html +36 -0
  728. package/dist/serve/docs-ui/docs/ship-to-production.md +80 -0
  729. package/dist/serve/docs-ui/docs/sign-in-and-manage-users/index.html +31 -0
  730. package/dist/serve/docs-ui/docs/sign-in-and-manage-users.md +50 -0
  731. package/dist/serve/docs-ui/docs/simulate-and-lint/index.html +95 -0
  732. package/dist/serve/docs-ui/docs/simulate-and-lint.md +99 -0
  733. package/dist/serve/docs-ui/docs/skills/index.html +20 -0
  734. package/dist/serve/docs-ui/docs/skills.md +34 -0
  735. package/dist/serve/docs-ui/docs/start-building/index.html +32 -0
  736. package/dist/serve/docs-ui/docs/start-building.md +64 -0
  737. package/dist/serve/docs-ui/docs/store-and-query-data/index.html +16 -0
  738. package/dist/serve/docs-ui/docs/store-and-query-data.md +33 -0
  739. package/dist/serve/docs-ui/docs/store-files/index.html +13 -0
  740. package/dist/serve/docs-ui/docs/store-files.md +25 -0
  741. package/dist/serve/docs-ui/docs/sync-realtime-data/index.html +15 -0
  742. package/dist/serve/docs-ui/docs/sync-realtime-data.md +27 -0
  743. package/dist/serve/docs-ui/docs/test-in-node/index.html +74 -0
  744. package/dist/serve/docs-ui/docs/test-in-node.md +100 -0
  745. package/dist/serve/docs-ui/docs/ui/index.html +76 -0
  746. package/dist/serve/docs-ui/docs/ui-auth-authsigninhelper/index.html +194 -0
  747. package/dist/serve/docs-ui/docs/ui-auth-authsigninhelper.md +114 -0
  748. package/dist/serve/docs-ui/docs/ui-auth-authusers/index.html +263 -0
  749. package/dist/serve/docs-ui/docs/ui-auth-authusers.md +183 -0
  750. package/dist/serve/docs-ui/docs/ui-firestore-collectionlist/index.html +92 -0
  751. package/dist/serve/docs-ui/docs/ui-firestore-collectionlist.md +79 -0
  752. package/dist/serve/docs-ui/docs/ui-firestore-deletewithconfirm/index.html +128 -0
  753. package/dist/serve/docs-ui/docs/ui-firestore-deletewithconfirm.md +104 -0
  754. package/dist/serve/docs-ui/docs/ui-firestore-documenteditor/index.html +154 -0
  755. package/dist/serve/docs-ui/docs/ui-firestore-documenteditor.md +117 -0
  756. package/dist/serve/docs-ui/docs/ui-firestore-documentlist/index.html +132 -0
  757. package/dist/serve/docs-ui/docs/ui-firestore-documentlist.md +92 -0
  758. package/dist/serve/docs-ui/docs/ui-firestore-documentpreview/index.html +159 -0
  759. package/dist/serve/docs-ui/docs/ui-firestore-documentpreview.md +84 -0
  760. package/dist/serve/docs-ui/docs/ui-firestore-querybuilder/index.html +104 -0
  761. package/dist/serve/docs-ui/docs/ui-firestore-querybuilder.md +103 -0
  762. package/dist/serve/docs-ui/docs/ui-firestore-referencepicker/index.html +113 -0
  763. package/dist/serve/docs-ui/docs/ui-firestore-referencepicker.md +93 -0
  764. package/dist/serve/docs-ui/docs/ui-primitives-badge/index.html +56 -0
  765. package/dist/serve/docs-ui/docs/ui-primitives-badge.md +40 -0
  766. package/dist/serve/docs-ui/docs/ui-primitives-confirmdialog/index.html +140 -0
  767. package/dist/serve/docs-ui/docs/ui-primitives-confirmdialog.md +108 -0
  768. package/dist/serve/docs-ui/docs/ui-primitives-copybutton/index.html +58 -0
  769. package/dist/serve/docs-ui/docs/ui-primitives-copybutton.md +37 -0
  770. package/dist/serve/docs-ui/docs/ui-primitives-jsonview/index.html +58 -0
  771. package/dist/serve/docs-ui/docs/ui-primitives-jsonview.md +47 -0
  772. package/dist/serve/docs-ui/docs/ui-primitives-segmentedcontrol/index.html +70 -0
  773. package/dist/serve/docs-ui/docs/ui-primitives-segmentedcontrol.md +50 -0
  774. package/dist/serve/docs-ui/docs/ui-primitives-toast/index.html +87 -0
  775. package/dist/serve/docs-ui/docs/ui-primitives-toast.md +82 -0
  776. package/dist/serve/docs-ui/docs/ui-primitives-virtuallist/index.html +85 -0
  777. package/dist/serve/docs-ui/docs/ui-primitives-virtuallist.md +54 -0
  778. package/dist/serve/docs-ui/docs/ui-storage/index.html +150 -0
  779. package/dist/serve/docs-ui/docs/ui-storage-deleteselectionwithconfirm/index.html +126 -0
  780. package/dist/serve/docs-ui/docs/ui-storage-deleteselectionwithconfirm.md +88 -0
  781. package/dist/serve/docs-ui/docs/ui-storage-objectbrowser/index.html +137 -0
  782. package/dist/serve/docs-ui/docs/ui-storage-objectbrowser.md +90 -0
  783. package/dist/serve/docs-ui/docs/ui-storage-objectinspector/index.html +139 -0
  784. package/dist/serve/docs-ui/docs/ui-storage-objectinspector.md +93 -0
  785. package/dist/serve/docs-ui/docs/ui-storage-pathbreadcrumb/index.html +72 -0
  786. package/dist/serve/docs-ui/docs/ui-storage-pathbreadcrumb.md +57 -0
  787. package/dist/serve/docs-ui/docs/ui-storage-rules-aware-affordances/index.html +60 -0
  788. package/dist/serve/docs-ui/docs/ui-storage-rules-aware-affordances.md +52 -0
  789. package/dist/serve/docs-ui/docs/ui-storage-uploaddropzone/index.html +93 -0
  790. package/dist/serve/docs-ui/docs/ui-storage-uploaddropzone.md +78 -0
  791. package/dist/serve/docs-ui/docs/ui-storage-usestoragerulesgate/index.html +144 -0
  792. package/dist/serve/docs-ui/docs/ui-storage-usestoragerulesgate.md +101 -0
  793. package/dist/serve/docs-ui/docs/ui-storage.md +165 -0
  794. package/dist/serve/docs-ui/docs/ui-traffic/index.html +88 -0
  795. package/dist/serve/docs-ui/docs/ui-traffic-ruleheatmap/index.html +79 -0
  796. package/dist/serve/docs-ui/docs/ui-traffic-ruleheatmap.md +60 -0
  797. package/dist/serve/docs-ui/docs/ui-traffic-trafficdetail/index.html +78 -0
  798. package/dist/serve/docs-ui/docs/ui-traffic-trafficdetail.md +59 -0
  799. package/dist/serve/docs-ui/docs/ui-traffic-trafficlog/index.html +118 -0
  800. package/dist/serve/docs-ui/docs/ui-traffic-trafficlog.md +69 -0
  801. package/dist/serve/docs-ui/docs/ui-traffic-trafficstats/index.html +51 -0
  802. package/dist/serve/docs-ui/docs/ui-traffic-trafficstats.md +46 -0
  803. package/dist/serve/docs-ui/docs/ui-traffic.md +102 -0
  804. package/dist/serve/docs-ui/docs/ui.md +90 -0
  805. package/dist/serve/docs-ui/docs/watch-and-review/index.html +25 -0
  806. package/dist/serve/docs-ui/docs/watch-and-review.md +40 -0
  807. package/dist/serve/docs-ui/docs/what-your-agent-can-do/index.html +81 -0
  808. package/dist/serve/docs-ui/docs/what-your-agent-can-do.md +78 -0
  809. package/dist/serve/docs-ui/docs/whats-experimental/index.html +22 -0
  810. package/dist/serve/docs-ui/docs/whats-experimental.md +33 -0
  811. package/dist/serve/docs-ui/docs/whats-possible/index.html +63 -0
  812. package/dist/serve/docs-ui/docs/whats-possible.md +53 -0
  813. package/dist/serve/docs-ui/docs/which-data-service/index.html +8 -0
  814. package/dist/serve/docs-ui/docs/which-data-service.md +11 -0
  815. package/dist/serve/docs-ui/docs/write-a-rules-test-suite/index.html +85 -0
  816. package/dist/serve/docs-ui/docs/write-a-rules-test-suite.md +119 -0
  817. package/dist/serve/docs-ui/index.html +1 -0
  818. package/dist/serve/docs-ui/llms.txt +308 -0
  819. package/dist/serve/entries/ai.d.ts +4 -0
  820. package/dist/serve/entries/ai.d.ts.map +1 -0
  821. package/dist/serve/entries/ai.js +184 -0
  822. package/dist/serve/entries/ai.js.map +1 -0
  823. package/dist/serve/entries/app-backend.d.ts +2 -0
  824. package/dist/serve/entries/app-backend.d.ts.map +1 -0
  825. package/dist/serve/entries/app-backend.js +4 -0
  826. package/dist/serve/entries/app-backend.js.map +1 -0
  827. package/dist/serve/entries/app-client.d.ts +5 -0
  828. package/dist/serve/entries/app-client.d.ts.map +1 -0
  829. package/dist/serve/entries/app-client.js +23 -0
  830. package/dist/serve/entries/app-client.js.map +1 -0
  831. package/dist/serve/entries/app-session-store.d.ts +14 -0
  832. package/dist/serve/entries/app-session-store.d.ts.map +1 -0
  833. package/dist/serve/entries/app-session-store.js +37 -0
  834. package/dist/serve/entries/app-session-store.js.map +1 -0
  835. package/dist/serve/entries/app.d.ts +2 -0
  836. package/dist/serve/entries/app.d.ts.map +1 -0
  837. package/dist/serve/entries/app.js +10 -0
  838. package/dist/serve/entries/app.js.map +1 -0
  839. package/dist/serve/entries/auth-helper-core.d.ts +52 -0
  840. package/dist/serve/entries/auth-helper-core.d.ts.map +1 -0
  841. package/dist/serve/entries/auth-helper-core.js +118 -0
  842. package/dist/serve/entries/auth-helper-core.js.map +1 -0
  843. package/dist/serve/entries/auth-helper-dom.d.ts +14 -0
  844. package/dist/serve/entries/auth-helper-dom.d.ts.map +1 -0
  845. package/dist/serve/entries/auth-helper-dom.js +116 -0
  846. package/dist/serve/entries/auth-helper-dom.js.map +1 -0
  847. package/dist/serve/entries/auth-helper-runtime.d.ts +5 -0
  848. package/dist/serve/entries/auth-helper-runtime.d.ts.map +1 -0
  849. package/dist/serve/entries/auth-helper-runtime.js +11 -0
  850. package/dist/serve/entries/auth-helper-runtime.js.map +1 -0
  851. package/dist/serve/entries/auth.d.ts +77 -0
  852. package/dist/serve/entries/auth.d.ts.map +1 -0
  853. package/dist/serve/entries/auth.js +201 -0
  854. package/dist/serve/entries/auth.js.map +1 -0
  855. package/dist/serve/entries/bridge-url.d.ts +25 -0
  856. package/dist/serve/entries/bridge-url.d.ts.map +1 -0
  857. package/dist/serve/entries/bridge-url.js +30 -0
  858. package/dist/serve/entries/bridge-url.js.map +1 -0
  859. package/dist/serve/entries/database.d.ts +46 -0
  860. package/dist/serve/entries/database.d.ts.map +1 -0
  861. package/dist/serve/entries/database.js +80 -0
  862. package/dist/serve/entries/database.js.map +1 -0
  863. package/dist/serve/entries/firestore.d.ts +104 -0
  864. package/dist/serve/entries/firestore.d.ts.map +1 -0
  865. package/dist/serve/entries/firestore.js +202 -0
  866. package/dist/serve/entries/firestore.js.map +1 -0
  867. package/dist/serve/entries/init.d.ts +2 -0
  868. package/dist/serve/entries/init.d.ts.map +1 -0
  869. package/dist/serve/entries/init.js +40 -0
  870. package/dist/serve/entries/init.js.map +1 -0
  871. package/dist/serve/entries/keepalive.d.ts +20 -0
  872. package/dist/serve/entries/keepalive.d.ts.map +1 -0
  873. package/dist/serve/entries/keepalive.js +38 -0
  874. package/dist/serve/entries/keepalive.js.map +1 -0
  875. package/dist/serve/entries/messaging-sw.d.ts +10 -0
  876. package/dist/serve/entries/messaging-sw.d.ts.map +1 -0
  877. package/dist/serve/entries/messaging-sw.js +36 -0
  878. package/dist/serve/entries/messaging-sw.js.map +1 -0
  879. package/dist/serve/entries/messaging.d.ts +11 -0
  880. package/dist/serve/entries/messaging.d.ts.map +1 -0
  881. package/dist/serve/entries/messaging.js +53 -0
  882. package/dist/serve/entries/messaging.js.map +1 -0
  883. package/dist/serve/entries/runtime.d.ts +46 -0
  884. package/dist/serve/entries/runtime.d.ts.map +1 -0
  885. package/dist/serve/entries/runtime.js +435 -0
  886. package/dist/serve/entries/runtime.js.map +1 -0
  887. package/dist/serve/entries/session-store.d.ts +48 -0
  888. package/dist/serve/entries/session-store.d.ts.map +1 -0
  889. package/dist/serve/entries/session-store.js +82 -0
  890. package/dist/serve/entries/session-store.js.map +1 -0
  891. package/dist/serve/entries/storage.d.ts +25 -0
  892. package/dist/serve/entries/storage.d.ts.map +1 -0
  893. package/dist/serve/entries/storage.js +61 -0
  894. package/dist/serve/entries/storage.js.map +1 -0
  895. package/dist/serve/entries/tab-sync-wiring.d.ts +88 -0
  896. package/dist/serve/entries/tab-sync-wiring.d.ts.map +1 -0
  897. package/dist/serve/entries/tab-sync-wiring.js +217 -0
  898. package/dist/serve/entries/tab-sync-wiring.js.map +1 -0
  899. package/dist/serve/entries/worker-runtime.d.ts +10 -0
  900. package/dist/serve/entries/worker-runtime.d.ts.map +1 -0
  901. package/dist/serve/entries/worker-runtime.js +59 -0
  902. package/dist/serve/entries/worker-runtime.js.map +1 -0
  903. package/dist/serve/init-payload.d.ts +21 -0
  904. package/dist/serve/init-payload.d.ts.map +1 -0
  905. package/dist/serve/init-payload.js +2 -0
  906. package/dist/serve/init-payload.js.map +1 -0
  907. package/dist/serve/namespace.d.ts +73 -0
  908. package/dist/serve/namespace.d.ts.map +1 -0
  909. package/dist/serve/namespace.js +470 -0
  910. package/dist/serve/namespace.js.map +1 -0
  911. package/dist/serve/open-browser.d.ts +23 -0
  912. package/dist/serve/open-browser.d.ts.map +1 -0
  913. package/dist/serve/open-browser.js +58 -0
  914. package/dist/serve/open-browser.js.map +1 -0
  915. package/dist/serve/rules.d.ts +77 -0
  916. package/dist/serve/rules.d.ts.map +1 -0
  917. package/dist/serve/rules.js +202 -0
  918. package/dist/serve/rules.js.map +1 -0
  919. package/dist/serve/sandbox-marker.d.ts +9 -0
  920. package/dist/serve/sandbox-marker.d.ts.map +1 -0
  921. package/dist/serve/sandbox-marker.js +31 -0
  922. package/dist/serve/sandbox-marker.js.map +1 -0
  923. package/dist/serve/server.d.ts +135 -0
  924. package/dist/serve/server.d.ts.map +1 -0
  925. package/dist/serve/server.js +328 -0
  926. package/dist/serve/server.js.map +1 -0
  927. package/dist/serve/standalone-assets.d.ts +67 -0
  928. package/dist/serve/standalone-assets.d.ts.map +1 -0
  929. package/dist/serve/standalone-assets.js +134 -0
  930. package/dist/serve/standalone-assets.js.map +1 -0
  931. package/dist/serve/state-store.d.ts +45 -0
  932. package/dist/serve/state-store.d.ts.map +1 -0
  933. package/dist/serve/state-store.js +120 -0
  934. package/dist/serve/state-store.js.map +1 -0
  935. package/dist/serve/studio/disk-project-store.d.ts +9 -0
  936. package/dist/serve/studio/disk-project-store.d.ts.map +1 -0
  937. package/dist/serve/studio/disk-project-store.js +173 -0
  938. package/dist/serve/studio/disk-project-store.js.map +1 -0
  939. package/dist/serve/studio/disk-workspace.d.ts +14 -0
  940. package/dist/serve/studio/disk-workspace.d.ts.map +1 -0
  941. package/dist/serve/studio/disk-workspace.js +152 -0
  942. package/dist/serve/studio/disk-workspace.js.map +1 -0
  943. package/dist/serve/studio/index.d.ts +10 -0
  944. package/dist/serve/studio/index.d.ts.map +1 -0
  945. package/dist/serve/studio/index.js +9 -0
  946. package/dist/serve/studio/index.js.map +1 -0
  947. package/dist/serve/studio/routes.d.ts +40 -0
  948. package/dist/serve/studio/routes.d.ts.map +1 -0
  949. package/dist/serve/studio/routes.js +182 -0
  950. package/dist/serve/studio/routes.js.map +1 -0
  951. package/dist/serve/studio/store-types.d.ts +45 -0
  952. package/dist/serve/studio/store-types.d.ts.map +1 -0
  953. package/dist/serve/studio/store-types.js +11 -0
  954. package/dist/serve/studio/store-types.js.map +1 -0
  955. package/dist/serve/studio-ui/assets/RulesCodeEditor-BZpD57II.js +23 -0
  956. package/dist/serve/studio-ui/assets/index-Bsa-TQNK.css +1 -0
  957. package/dist/serve/studio-ui/assets/index-DGaVuOhE.js +1211 -0
  958. package/dist/serve/studio-ui/assets/seed-CTmn6YuO.js +2 -0
  959. package/dist/serve/studio-ui/index.html +32 -0
  960. package/dist/serve/studio-ui/pyric-logo.svg +76 -0
  961. package/dist/serve/vite-plugin.d.ts +57 -0
  962. package/dist/serve/vite-plugin.d.ts.map +1 -0
  963. package/dist/serve/vite-plugin.js +658 -0
  964. package/dist/serve/vite-plugin.js.map +1 -0
  965. package/dist/serve/worker/client/admin-firestore.d.ts +18 -0
  966. package/dist/serve/worker/client/admin-firestore.d.ts.map +1 -0
  967. package/dist/serve/worker/client/admin-firestore.js +26 -0
  968. package/dist/serve/worker/client/admin-firestore.js.map +1 -0
  969. package/dist/serve/worker/client/ai.d.ts +31 -0
  970. package/dist/serve/worker/client/ai.d.ts.map +1 -0
  971. package/dist/serve/worker/client/ai.js +89 -0
  972. package/dist/serve/worker/client/ai.js.map +1 -0
  973. package/dist/serve/worker/client/auth.d.ts +168 -0
  974. package/dist/serve/worker/client/auth.d.ts.map +1 -0
  975. package/dist/serve/worker/client/auth.js +322 -0
  976. package/dist/serve/worker/client/auth.js.map +1 -0
  977. package/dist/serve/worker/client/connection.d.ts +80 -0
  978. package/dist/serve/worker/client/connection.d.ts.map +1 -0
  979. package/dist/serve/worker/client/connection.js +148 -0
  980. package/dist/serve/worker/client/connection.js.map +1 -0
  981. package/dist/serve/worker/client/core.d.ts +109 -0
  982. package/dist/serve/worker/client/core.d.ts.map +1 -0
  983. package/dist/serve/worker/client/core.js +248 -0
  984. package/dist/serve/worker/client/core.js.map +1 -0
  985. package/dist/serve/worker/client/disconnect.d.ts +7 -0
  986. package/dist/serve/worker/client/disconnect.d.ts.map +1 -0
  987. package/dist/serve/worker/client/disconnect.js +26 -0
  988. package/dist/serve/worker/client/disconnect.js.map +1 -0
  989. package/dist/serve/worker/client/firestore-reads.d.ts +49 -0
  990. package/dist/serve/worker/client/firestore-reads.d.ts.map +1 -0
  991. package/dist/serve/worker/client/firestore-reads.js +139 -0
  992. package/dist/serve/worker/client/firestore-reads.js.map +1 -0
  993. package/dist/serve/worker/client/firestore-refs.d.ts +54 -0
  994. package/dist/serve/worker/client/firestore-refs.d.ts.map +1 -0
  995. package/dist/serve/worker/client/firestore-refs.js +167 -0
  996. package/dist/serve/worker/client/firestore-refs.js.map +1 -0
  997. package/dist/serve/worker/client/firestore-writes.d.ts +70 -0
  998. package/dist/serve/worker/client/firestore-writes.d.ts.map +1 -0
  999. package/dist/serve/worker/client/firestore-writes.js +169 -0
  1000. package/dist/serve/worker/client/firestore-writes.js.map +1 -0
  1001. package/dist/serve/worker/client/handles.d.ts +73 -0
  1002. package/dist/serve/worker/client/handles.d.ts.map +1 -0
  1003. package/dist/serve/worker/client/handles.js +4 -0
  1004. package/dist/serve/worker/client/handles.js.map +1 -0
  1005. package/dist/serve/worker/client/messaging.d.ts +16 -0
  1006. package/dist/serve/worker/client/messaging.d.ts.map +1 -0
  1007. package/dist/serve/worker/client/messaging.js +60 -0
  1008. package/dist/serve/worker/client/messaging.js.map +1 -0
  1009. package/dist/serve/worker/client/presence.d.ts +43 -0
  1010. package/dist/serve/worker/client/presence.d.ts.map +1 -0
  1011. package/dist/serve/worker/client/presence.js +132 -0
  1012. package/dist/serve/worker/client/presence.js.map +1 -0
  1013. package/dist/serve/worker/client/rtdb.d.ts +36 -0
  1014. package/dist/serve/worker/client/rtdb.d.ts.map +1 -0
  1015. package/dist/serve/worker/client/rtdb.js +241 -0
  1016. package/dist/serve/worker/client/rtdb.js.map +1 -0
  1017. package/dist/serve/worker/client/rules.d.ts +24 -0
  1018. package/dist/serve/worker/client/rules.d.ts.map +1 -0
  1019. package/dist/serve/worker/client/rules.js +44 -0
  1020. package/dist/serve/worker/client/rules.js.map +1 -0
  1021. package/dist/serve/worker/client/service-worker-connection.d.ts +3 -0
  1022. package/dist/serve/worker/client/service-worker-connection.d.ts.map +1 -0
  1023. package/dist/serve/worker/client/service-worker-connection.js +53 -0
  1024. package/dist/serve/worker/client/service-worker-connection.js.map +1 -0
  1025. package/dist/serve/worker/client/snapshots.d.ts +32 -0
  1026. package/dist/serve/worker/client/snapshots.d.ts.map +1 -0
  1027. package/dist/serve/worker/client/snapshots.js +46 -0
  1028. package/dist/serve/worker/client/snapshots.js.map +1 -0
  1029. package/dist/serve/worker/client/storage.d.ts +64 -0
  1030. package/dist/serve/worker/client/storage.d.ts.map +1 -0
  1031. package/dist/serve/worker/client/storage.js +125 -0
  1032. package/dist/serve/worker/client/storage.js.map +1 -0
  1033. package/dist/serve/worker/client/studio.d.ts +32 -0
  1034. package/dist/serve/worker/client/studio.d.ts.map +1 -0
  1035. package/dist/serve/worker/client/studio.js +61 -0
  1036. package/dist/serve/worker/client/studio.js.map +1 -0
  1037. package/dist/serve/worker/client.d.ts +43 -0
  1038. package/dist/serve/worker/client.d.ts.map +1 -0
  1039. package/dist/serve/worker/client.js +44 -0
  1040. package/dist/serve/worker/client.js.map +1 -0
  1041. package/dist/serve/worker/entry.d.ts +40 -0
  1042. package/dist/serve/worker/entry.d.ts.map +1 -0
  1043. package/dist/serve/worker/entry.js +144 -0
  1044. package/dist/serve/worker/entry.js.map +1 -0
  1045. package/dist/serve/worker/host/admin-firestore.d.ts +17 -0
  1046. package/dist/serve/worker/host/admin-firestore.d.ts.map +1 -0
  1047. package/dist/serve/worker/host/admin-firestore.js +92 -0
  1048. package/dist/serve/worker/host/admin-firestore.js.map +1 -0
  1049. package/dist/serve/worker/host/connection.d.ts +40 -0
  1050. package/dist/serve/worker/host/connection.d.ts.map +1 -0
  1051. package/dist/serve/worker/host/connection.js +153 -0
  1052. package/dist/serve/worker/host/connection.js.map +1 -0
  1053. package/dist/serve/worker/host/core.d.ts +159 -0
  1054. package/dist/serve/worker/host/core.d.ts.map +1 -0
  1055. package/dist/serve/worker/host/core.js +296 -0
  1056. package/dist/serve/worker/host/core.js.map +1 -0
  1057. package/dist/serve/worker/host/dispatch.d.ts +34 -0
  1058. package/dist/serve/worker/host/dispatch.d.ts.map +1 -0
  1059. package/dist/serve/worker/host/dispatch.js +267 -0
  1060. package/dist/serve/worker/host/dispatch.js.map +1 -0
  1061. package/dist/serve/worker/host/firestore-reads.d.ts +17 -0
  1062. package/dist/serve/worker/host/firestore-reads.d.ts.map +1 -0
  1063. package/dist/serve/worker/host/firestore-reads.js +108 -0
  1064. package/dist/serve/worker/host/firestore-reads.js.map +1 -0
  1065. package/dist/serve/worker/host/firestore-writes.d.ts +37 -0
  1066. package/dist/serve/worker/host/firestore-writes.d.ts.map +1 -0
  1067. package/dist/serve/worker/host/firestore-writes.js +409 -0
  1068. package/dist/serve/worker/host/firestore-writes.js.map +1 -0
  1069. package/dist/serve/worker/host/presence.d.ts +38 -0
  1070. package/dist/serve/worker/host/presence.d.ts.map +1 -0
  1071. package/dist/serve/worker/host/presence.js +280 -0
  1072. package/dist/serve/worker/host/presence.js.map +1 -0
  1073. package/dist/serve/worker/host/rtdb.d.ts +18 -0
  1074. package/dist/serve/worker/host/rtdb.d.ts.map +1 -0
  1075. package/dist/serve/worker/host/rtdb.js +128 -0
  1076. package/dist/serve/worker/host/rtdb.js.map +1 -0
  1077. package/dist/serve/worker/host/rules.d.ts +17 -0
  1078. package/dist/serve/worker/host/rules.d.ts.map +1 -0
  1079. package/dist/serve/worker/host/rules.js +118 -0
  1080. package/dist/serve/worker/host/rules.js.map +1 -0
  1081. package/dist/serve/worker/host/storage.d.ts +19 -0
  1082. package/dist/serve/worker/host/storage.d.ts.map +1 -0
  1083. package/dist/serve/worker/host/storage.js +260 -0
  1084. package/dist/serve/worker/host/storage.js.map +1 -0
  1085. package/dist/serve/worker/host/studio.d.ts +13 -0
  1086. package/dist/serve/worker/host/studio.d.ts.map +1 -0
  1087. package/dist/serve/worker/host/studio.js +30 -0
  1088. package/dist/serve/worker/host/studio.js.map +1 -0
  1089. package/dist/serve/worker/host/subscriptions.d.ts +21 -0
  1090. package/dist/serve/worker/host/subscriptions.d.ts.map +1 -0
  1091. package/dist/serve/worker/host/subscriptions.js +162 -0
  1092. package/dist/serve/worker/host/subscriptions.js.map +1 -0
  1093. package/dist/serve/worker/host-ai.d.ts +59 -0
  1094. package/dist/serve/worker/host-ai.d.ts.map +1 -0
  1095. package/dist/serve/worker/host-ai.js +158 -0
  1096. package/dist/serve/worker/host-ai.js.map +1 -0
  1097. package/dist/serve/worker/host-auth.d.ts +47 -0
  1098. package/dist/serve/worker/host-auth.d.ts.map +1 -0
  1099. package/dist/serve/worker/host-auth.js +464 -0
  1100. package/dist/serve/worker/host-auth.js.map +1 -0
  1101. package/dist/serve/worker/host-context.d.ts +220 -0
  1102. package/dist/serve/worker/host-context.d.ts.map +1 -0
  1103. package/dist/serve/worker/host-context.js +45 -0
  1104. package/dist/serve/worker/host-context.js.map +1 -0
  1105. package/dist/serve/worker/host-events.d.ts +21 -0
  1106. package/dist/serve/worker/host-events.d.ts.map +1 -0
  1107. package/dist/serve/worker/host-events.js +87 -0
  1108. package/dist/serve/worker/host-events.js.map +1 -0
  1109. package/dist/serve/worker/host-messaging.d.ts +60 -0
  1110. package/dist/serve/worker/host-messaging.d.ts.map +1 -0
  1111. package/dist/serve/worker/host-messaging.js +226 -0
  1112. package/dist/serve/worker/host-messaging.js.map +1 -0
  1113. package/dist/serve/worker/host.d.ts +36 -0
  1114. package/dist/serve/worker/host.d.ts.map +1 -0
  1115. package/dist/serve/worker/host.js +39 -0
  1116. package/dist/serve/worker/host.js.map +1 -0
  1117. package/dist/serve/worker/index.d.ts +22 -0
  1118. package/dist/serve/worker/index.d.ts.map +1 -0
  1119. package/dist/serve/worker/index.js +61 -0
  1120. package/dist/serve/worker/index.js.map +1 -0
  1121. package/dist/serve/worker/presence-timing.d.ts +14 -0
  1122. package/dist/serve/worker/presence-timing.d.ts.map +1 -0
  1123. package/dist/serve/worker/presence-timing.js +14 -0
  1124. package/dist/serve/worker/presence-timing.js.map +1 -0
  1125. package/dist/serve/worker/protocol.d.ts +1150 -0
  1126. package/dist/serve/worker/protocol.d.ts.map +1 -0
  1127. package/dist/serve/worker/protocol.js +228 -0
  1128. package/dist/serve/worker/protocol.js.map +1 -0
  1129. package/dist/serve/worker/serve-init.d.ts +201 -0
  1130. package/dist/serve/worker/serve-init.d.ts.map +1 -0
  1131. package/dist/serve/worker/serve-init.js +579 -0
  1132. package/dist/serve/worker/serve-init.js.map +1 -0
  1133. package/dist/serve/worker/service-worker-channel.d.ts +23 -0
  1134. package/dist/serve/worker/service-worker-channel.d.ts.map +1 -0
  1135. package/dist/serve/worker/service-worker-channel.js +9 -0
  1136. package/dist/serve/worker/service-worker-channel.js.map +1 -0
  1137. package/dist/serve/worker/service-worker-relay.d.ts +22 -0
  1138. package/dist/serve/worker/service-worker-relay.d.ts.map +1 -0
  1139. package/dist/serve/worker/service-worker-relay.js +63 -0
  1140. package/dist/serve/worker/service-worker-relay.js.map +1 -0
  1141. package/dist/serve/writer-lock.d.ts +32 -0
  1142. package/dist/serve/writer-lock.d.ts.map +1 -0
  1143. package/dist/serve/writer-lock.js +43 -0
  1144. package/dist/serve/writer-lock.js.map +1 -0
  1145. package/dist/verify/cases.d.ts +37 -0
  1146. package/dist/verify/cases.d.ts.map +1 -0
  1147. package/dist/verify/cases.js +173 -0
  1148. package/dist/verify/cases.js.map +1 -0
  1149. package/dist/verify/fixture.d.ts +100 -0
  1150. package/dist/verify/fixture.d.ts.map +1 -0
  1151. package/dist/verify/fixture.js +156 -0
  1152. package/dist/verify/fixture.js.map +1 -0
  1153. package/dist/verify/index.d.ts +102 -0
  1154. package/dist/verify/index.d.ts.map +1 -0
  1155. package/dist/verify/index.js +318 -0
  1156. package/dist/verify/index.js.map +1 -0
  1157. package/dist/verify/tools.d.ts +7 -0
  1158. package/dist/verify/tools.d.ts.map +1 -0
  1159. package/dist/verify/tools.js +83 -0
  1160. package/dist/verify/tools.js.map +1 -0
  1161. package/dist/version/compat-target.d.ts +18 -0
  1162. package/dist/version/compat-target.d.ts.map +1 -0
  1163. package/dist/version/compat-target.js +18 -0
  1164. package/dist/version/compat-target.js.map +1 -0
  1165. package/dist/vite.d.ts +12 -0
  1166. package/dist/vite.d.ts.map +1 -0
  1167. package/dist/vite.js +16 -0
  1168. package/dist/vite.js.map +1 -0
  1169. package/package.json +133 -0
@@ -0,0 +1,1919 @@
1
+
2
+ <!-- Generated from published package declarations via TypeDoc. Do not edit by hand; run bun run docs:api:generate. -->
3
+
4
+ ## Interfaces
5
+
6
+ <a id="custommetadataentry"></a>
7
+
8
+ ### CustomMetadataEntry
9
+
10
+ One `customMetadata` row. `id` is a stable render key — keys are
11
+ user-editable, so they can't key the rows themselves.
12
+
13
+ #### Properties
14
+
15
+ | Property | Type | Description |
16
+ | :------ | :------ | :------ |
17
+ | <a id="error"></a> `error?` | `string` | Validation error (`'Key is required'` / `'Duplicate key'`). |
18
+ | <a id="id"></a> `id` | `string` | - |
19
+ | <a id="key"></a> `key` | `string` | - |
20
+ | <a id="value"></a> `value` | `string` | - |
21
+
22
+ ***
23
+
24
+ <a id="deleteselectionwithconfirmprops"></a>
25
+
26
+ ### DeleteSelectionWithConfirmProps
27
+
28
+ #### Properties
29
+
30
+ | Property | Type | Description |
31
+ | :------ | :------ | :------ |
32
+ | <a id="body"></a> `body?` | `ReactNode` | Confirm-dialog body. Default lists the selected paths. |
33
+ | <a id="classname"></a> `className?` | `string` | Class forwarded to the default trigger button. |
34
+ | <a id="confirmlabel"></a> `confirmLabel?` | `string` | - |
35
+ | <a id="entries"></a> `entries` | [`StorageSelectionEntry`](#storageselectionentry)[] | What to delete — `useStorageSelection().selected` (or any `{kind, fullPath}` rows). Folders delete recursively. |
36
+ | <a id="gate"></a> `gate?` | `Pick`\<[`UseStorageRulesGateResult`](#usestoragerulesgateresult), `"verdictFor"`\> | Rules-aware affordance — pass `useStorageRulesGate(storage)`. When ANY selected entry's DELETE verdict denies, the trigger disables with the reason (default trigger: `data-pyric-denied` + `data-pyric-denied-reason` + `title`; `renderTrigger` receives `deniedReason`). For folder entries the verdict evaluates the folder path itself — an approximation of the recursive walk (descendants matched by `{allPaths=**}` rules share the verdict). |
37
+ | <a id="impl"></a> `impl?` | [`StorageRecursiveDeleteImpl`](#storagerecursivedeleteimpl) | Folder-walk impl override (default: the `listAll`-driven one). |
38
+ | <a id="list"></a> `list?` | `Pick`\<[`UseStorageListResult`](#usestoragelistresult), `"insertItem"` \| `"removeItem"`\> | Optimistic seam from `useStorageList`. |
39
+ | <a id="ondeleted"></a> `onDeleted?` | (`outcome`: [`StorageDeleteOutcome`](#storagedeleteoutcome)) => `void` | Fired after a run with NO failures (e.g. clear the selection + refresh the list). |
40
+ | <a id="onfailed"></a> `onFailed?` | (`outcome`: [`StorageDeleteOutcome`](#storagedeleteoutcome)) => `void` | Fired after a run with failures (the toast already showed). |
41
+ | <a id="rendertrigger"></a> `renderTrigger?` | (`props`: \{ `deniedReason?`: `string`; `disabled`: `boolean`; `isRunning`: `boolean`; `onClick`: () => `void`; `progress`: `number`; \}) => `ReactNode` | Render override for the trigger button. |
42
+ | <a id="storage"></a> `storage` | `any` | The package's single Storage handle prop. |
43
+ | <a id="title"></a> `title?` | `string` | Confirm-dialog title. Default derives from the entry count. |
44
+
45
+ ***
46
+
47
+ <a id="droppedfile"></a>
48
+
49
+ ### DroppedFile
50
+
51
+ One dropped file, flattened from the drop's file/folder tree.
52
+
53
+ #### Properties
54
+
55
+ | Property | Type | Description |
56
+ | :------ | :------ | :------ |
57
+ | <a id="file"></a> `file` | `File` | - |
58
+ | <a id="relativepath"></a> `relativePath` | `string` | Path relative to the drop — `'a.txt'` for a plain file drop, `'photos/cat.png'` for a file inside a dropped folder. Feed straight into `useObjectUpload`: `upload(files.map((f) => ({ path: f.relativePath, data: f.file })))`. |
59
+
60
+ ***
61
+
62
+ <a id="metadataeditorstate"></a>
63
+
64
+ ### MetadataEditorState
65
+
66
+ #### Properties
67
+
68
+ | Property | Type | Description |
69
+ | :------ | :------ | :------ |
70
+ | <a id="draft"></a> `draft` | `MetadataDraft` | - |
71
+ | <a id="errorcount"></a> `errorCount` | `number` | - |
72
+ | <a id="initial"></a> `initial` | `MetadataDraft` | Snapshot for `isDirty` / `reset` — same reference-compare semantics as the document editor's `tree !== initial`. |
73
+
74
+ ***
75
+
76
+ <a id="objectbrowserprops"></a>
77
+
78
+ ### ObjectBrowserProps
79
+
80
+ #### Properties
81
+
82
+ | Property | Type | Description |
83
+ | :------ | :------ | :------ |
84
+ | <a id="classname-1"></a> `className?` | `string` | - |
85
+ | <a id="emptystate"></a> `emptyState?` | `ReactNode` | - |
86
+ | <a id="entries-1"></a> `entries` | [`StorageListEntry`](#storagelistentry)[] | The folders-first row model from `useStorageList`. |
87
+ | <a id="error-1"></a> `error?` | `Error` | Renders a `role="alert"` container with the message. Pair with the hook's typed `StorageError` for code-driven copy. |
88
+ | <a id="gate-1"></a> `gate?` | `Pick`\<[`UseStorageRulesGateResult`](#usestoragerulesgateresult), `"verdictFor"`\> | Rules-aware affordances — pass `useStorageRulesGate(storage)`. Rows whose READ verdict denies are stamped `data-pyric-denied` (with the evaluator's reason trace on `data-pyric-denied-reason`). A denied folder row would throw `storage/unauthorized` on `listAll`; the stamp warns BEFORE the click. Rows stay clickable — the affordance is advisory and the sandbox enforcement layer remains authoritative. |
89
+ | <a id="onnavigate"></a> `onNavigate?` | (`path`: `string`) => `void` | Folder row click — fired with the prefix's `fullPath`. Wire to `usePathState.enter` (or `setPath`). |
90
+ | <a id="onselect"></a> `onSelect?` | (`ref`: `StorageReference`) => `void` | Object row click — fired with the object's reference. |
91
+ | <a id="renderentry"></a> `renderEntry?` | (`entry`: [`StorageListEntry`](#storagelistentry)) => `ReactNode` | Row-label slot. Default renders the entry name. The row button, its click wiring, and the `data-*` states stay with the component — the slot only owns the label content. |
92
+ | <a id="renderrowaction"></a> `renderRowAction?` | (`entry`: [`StorageListEntry`](#storagelistentry)) => `ReactNode` | Optional per-row action rendered as a sibling of the navigation/select button. Use this for independent controls such as selection checkboxes. |
93
+ | <a id="rowheight"></a> `rowHeight?` | `number` \| (`index`: `number`) => `number` | Estimated row height when virtualizing. Default 36. |
94
+ | <a id="selectedpath"></a> `selectedPath?` | `string` | Marks the matching object row `data-pyric-selected` + `aria-selected`. |
95
+ | <a id="status"></a> `status?` | [`StorageListStatus`](#storageliststatus) | Drives the loading state (`'loading'` with no rows yet) and the idle short-circuit. Default `'success'` for static usage. |
96
+ | <a id="virtualizedheight"></a> `virtualizedHeight?` | `string` \| `number` | Scroll-container height when virtualized. Default `'60vh'`. |
97
+ | <a id="virtualizethreshold"></a> `virtualizeThreshold?` | `number` | Above this row count, the list switches to virtualization via `<VirtualList>` — `listAll` has no pagination, so a big prefix arrives as one flat result and virtualization is the only defense. Default 100 (same as `<DocumentList>`). `Infinity` disables. |
98
+
99
+ ***
100
+
101
+ <a id="objectinspectorprops"></a>
102
+
103
+ ### ObjectInspectorProps
104
+
105
+ #### Properties
106
+
107
+ | Property | Type | Description |
108
+ | :------ | :------ | :------ |
109
+ | <a id="children"></a> `children?` | `ReactNode` | Extra content below the preview (metadata editor, delete button, …). |
110
+ | <a id="classname-2"></a> `className?` | `string` | - |
111
+ | <a id="path"></a> `path` | `string` | Object path to inspect. `null` renders the idle shell — keep the inspector mounted and swap paths as the user selects rows. |
112
+ | <a id="previews"></a> `previews?` | [`StoragePreview`](#storagepreview)[] | Consumer previews, tried BEFORE the built-ins (first match wins) — the extension channel of the preview registry. |
113
+ | <a id="rendermetadata"></a> `renderMetadata?` | (`metadata`: `FullMetadata`) => `ReactNode` | Metadata-section slot. Default renders the standard field list. The header, preview, and state wiring stay with the component. |
114
+ | <a id="storage-1"></a> `storage` | `any` | The package's sandbox Storage handle. |
115
+
116
+ ***
117
+
118
+ <a id="pathbreadcrumbprops"></a>
119
+
120
+ ### PathBreadcrumbProps
121
+
122
+ #### Properties
123
+
124
+ | Property | Type | Description |
125
+ | :------ | :------ | :------ |
126
+ | <a id="classname-3"></a> `className?` | `string` | - |
127
+ | <a id="onnavigate-1"></a> `onNavigate?` | (`path`: `string`) => `void` | Fired with the absolute path of the clicked crumb (`''` for root). Wire to `usePathState.setPath`. |
128
+ | <a id="path-1"></a> `path` | `string` | Current path. `''` renders just the root crumb. |
129
+ | <a id="rootlabel"></a> `rootLabel?` | `ReactNode` | Label for the root crumb. Default `'/'` — pass the bucket name for a `gs://bucket` feel. |
130
+ | <a id="separator"></a> `separator?` | `ReactNode` | Rendered between crumbs. Default `'/'`. |
131
+
132
+ ***
133
+
134
+ <a id="storagedeletefailure"></a>
135
+
136
+ ### StorageDeleteFailure
137
+
138
+ One entry's failure in a bulk run. `error` is the typed
139
+ `StorageError` (`.code` e.g. `storage/unauthorized`).
140
+
141
+ #### Properties
142
+
143
+ | Property | Type |
144
+ | :------ | :------ |
145
+ | <a id="error-2"></a> `error` | `Error` |
146
+ | <a id="fullpath"></a> `fullPath` | `string` |
147
+
148
+ ***
149
+
150
+ <a id="storagedeleteoutcome"></a>
151
+
152
+ ### StorageDeleteOutcome
153
+
154
+ #### Properties
155
+
156
+ | Property | Type | Description |
157
+ | :------ | :------ | :------ |
158
+ | <a id="deleted"></a> `deleted` | `string`[] | fullPaths of entries fully deleted. |
159
+ | <a id="failed"></a> `failed` | [`StorageDeleteFailure`](#storagedeletefailure)[] | - |
160
+
161
+ ***
162
+
163
+ <a id="storagedeleteprogress"></a>
164
+
165
+ ### StorageDeleteProgress
166
+
167
+ #### Properties
168
+
169
+ | Property | Type | Description |
170
+ | :------ | :------ | :------ |
171
+ | <a id="deletedcount"></a> `deletedCount` | `number` | Objects deleted so far in this folder walk. |
172
+ | <a id="done"></a> `done` | `boolean` | True for the final emission. |
173
+
174
+ ***
175
+
176
+ <a id="storagegateverdict"></a>
177
+
178
+ ### StorageGateVerdict
179
+
180
+ Per-path verdict. `pyric/storage`'s rules subset has exactly two
181
+ verbs (`read` | `write` — the granular get/list/create/update/
182
+ delete forms are a parser follow-up), so `delete` and `upload` are
183
+ DERIVED aliases of `write`: Firebase Storage's `write` permission
184
+ governs create, overwrite, AND delete.
185
+
186
+ #### Properties
187
+
188
+ | Property | Type | Description |
189
+ | :------ | :------ | :------ |
190
+ | <a id="delete"></a> `delete` | `boolean` | Derived — always `=== write` under the two-verb subset. |
191
+ | <a id="read"></a> `read` | `boolean` | - |
192
+ | <a id="reasons"></a> `reasons` | \{ `read`: `string`[]; `write`: `string`[]; \} | Evaluator reason traces for DENIED verbs (`"no rule matches…"` / `"match /… : condition false"`); empty arrays when allowed. Feed into disabled-state tooltips and `data-*-reason` attributes. |
193
+ | `reasons.read` | `string`[] | - |
194
+ | `reasons.write` | `string`[] | - |
195
+ | <a id="upload"></a> `upload` | `boolean` | Derived — always `=== write` under the two-verb subset. |
196
+ | <a id="write"></a> `write` | `boolean` | - |
197
+
198
+ ***
199
+
200
+ <a id="storagelistentry"></a>
201
+
202
+ ### StorageListEntry
203
+
204
+ One row of the merged folder/object model, the prefix→folder
205
+ synthesis ported (as an idea, not code) from the emulator UI's
206
+ `useStorageFiles`: `listAll`'s `prefixes` become `kind: 'folder'`
207
+ rows, its `items` become `kind: 'object'` rows, folders first.
208
+
209
+ #### Properties
210
+
211
+ | Property | Type | Description |
212
+ | :------ | :------ | :------ |
213
+ | <a id="fullpath-1"></a> `fullPath` | `string` | Bucket-rooted path (no trailing slash, even for folders). |
214
+ | <a id="kind"></a> `kind` | `"object"` \| `"folder"` | - |
215
+ | <a id="name"></a> `name` | `string` | Last path segment, display name. |
216
+ | <a id="ref"></a> `ref` | `StorageReference` | - |
217
+
218
+ ***
219
+
220
+ <a id="storagepreview"></a>
221
+
222
+ ### StoragePreview
223
+
224
+ One entry in the content-type preview registry — the storage
225
+ counterpart of the Firestore field-editor registry, keyed by a
226
+ `match` predicate instead of a type name because content types are
227
+ open-ended. First match wins; consumer previews run BEFORE the
228
+ built-ins, so overriding `image/*` is just shipping your own
229
+ matcher.
230
+
231
+ #### Properties
232
+
233
+ | Property | Type | Description |
234
+ | :------ | :------ | :------ |
235
+ | <a id="id-1"></a> `id` | `string` | Diagnostic id — also stamped on the preview container as `data-pyric-preview="<id>"`. |
236
+ | <a id="match"></a> `match` | (`metadata`: `FullMetadata`) => `boolean` | - |
237
+ | <a id="maxbytes"></a> `maxBytes?` | `number` | Skip the preview (and the blob download) for objects larger than this — the inspector renders its `data-pyric-preview-too-large` fallback instead. `undefined` = no cap. |
238
+ | <a id="needsblob"></a> `needsBlob?` | `boolean` | Ask the inspector to `loadBlob()` before rendering. Default `false` (metadata-only previews render immediately). |
239
+ | <a id="render"></a> `render` | (`ctx`: [`StoragePreviewContext`](#storagepreviewcontext)) => `ReactNode` | - |
240
+
241
+ ***
242
+
243
+ <a id="storagepreviewcontext"></a>
244
+
245
+ ### StoragePreviewContext
246
+
247
+ What a preview's `render` receives. `blob`/`blobUrl` are only
248
+ populated for previews that declared `needsBlob`.
249
+
250
+ #### Properties
251
+
252
+ | Property | Type |
253
+ | :------ | :------ |
254
+ | <a id="blob"></a> `blob` | `Blob` |
255
+ | <a id="bloburl"></a> `blobUrl` | `string` |
256
+ | <a id="metadata"></a> `metadata` | `FullMetadata` |
257
+
258
+ ***
259
+
260
+ <a id="storagerecursivedeleteimpl"></a>
261
+
262
+ ### StorageRecursiveDeleteImpl
263
+
264
+ Recursive folder delete implementation — the same injection seam
265
+ as the Firestore half's `RecursiveDeleteImpl`. Unlike Firestore
266
+ (where tree-walking needs sandbox introspection or a Cloud
267
+ Function), the public storage surface CAN walk a prefix, so the
268
+ package ships [createListAllDeleteImpl](#createlistalldeleteimpl) as the default;
269
+ inject your own for server-driven deletes.
270
+
271
+ #### Properties
272
+
273
+ | Property | Type |
274
+ | :------ | :------ |
275
+ | <a id="start"></a> `start` | (`target`: `StorageReference`) => `AsyncIterableIterator`\<[`StorageDeleteProgress`](#storagedeleteprogress)\> |
276
+
277
+ ***
278
+
279
+ <a id="storageselectionentry"></a>
280
+
281
+ ### StorageSelectionEntry
282
+
283
+ What the selection tracks per row — a structural subset of
284
+ `StorageListEntry`, so `useStorageList`'s entries pass straight
285
+ in. The `kind` decides the delete verb later (object →
286
+ `deleteObject`, folder → recursive).
287
+
288
+ #### Properties
289
+
290
+ | Property | Type |
291
+ | :------ | :------ |
292
+ | <a id="fullpath-2"></a> `fullPath` | `string` |
293
+ | <a id="kind-1"></a> `kind` | `"object"` \| `"folder"` |
294
+
295
+ ***
296
+
297
+ <a id="uploaddropzoneprops"></a>
298
+
299
+ ### UploadDropzoneProps
300
+
301
+ #### Properties
302
+
303
+ | Property | Type | Description |
304
+ | :------ | :------ | :------ |
305
+ | <a id="children-1"></a> `children?` | `ReactNode` | Slot — the dropzone chrome ("Drop files here…", a browse `<input type="file">`, anything). The component owns only the drag wiring + `data-*` states. |
306
+ | <a id="classname-4"></a> `className?` | `string` | - |
307
+ | <a id="disabled"></a> `disabled?` | `boolean` | Ignore drops + suppress the dragging state. |
308
+ | <a id="disabledreason"></a> `disabledReason?` | `string` | Why the dropzone is disabled — stamped on `data-disabled-reason` (and only while `disabled`) so the chrome/styling can surface it. The canonical source is the rules gate: `disabled={!gate.verdictFor(path).upload}` + `disabledReason={gate.verdictFor(path).reasons.write.join('; ')}`. |
309
+ | <a id="onfiles"></a> `onFiles` | (`files`: [`DroppedFile`](#droppedfile)[]) => `void` | Fired once per drop with the flattened file list (folder drops are traversed recursively via `webkitGetAsEntry`; empty folders yield nothing — wire `useObjectUpload.createFolder` to your own "new folder" affordance instead). Not fired for empty drops. |
310
+
311
+ ***
312
+
313
+ <a id="uploadentry"></a>
314
+
315
+ ### UploadEntry
316
+
317
+ Explicit-path upload input. `path` is relative to the hook's
318
+ `path` option (the destination folder).
319
+
320
+ #### Properties
321
+
322
+ | Property | Type |
323
+ | :------ | :------ |
324
+ | <a id="data"></a> `data` | `Blob` \| `ArrayBuffer` \| `Uint8Array`\<`ArrayBufferLike`\> |
325
+ | <a id="metadata-1"></a> `metadata?` | `SettableMetadata` |
326
+ | <a id="path-2"></a> `path` | `string` |
327
+
328
+ ***
329
+
330
+ <a id="uploadtask"></a>
331
+
332
+ ### UploadTask
333
+
334
+ One file's upload, TASK-SHAPED for resumable forward-compat: the
335
+ byte counters and the `onProgress` callback are in the type NOW so
336
+ a future `uploadBytesResumable`-backed implementation emits real
337
+ intermediate snapshots without a breaking change. Today
338
+ (`pyric/storage` has no resumable uploads — COMPAT) a task
339
+ completes in one tick: `onProgress` fires once at 0 bytes and once
340
+ at `totalBytes`.
341
+
342
+ #### Properties
343
+
344
+ | Property | Type | Description |
345
+ | :------ | :------ | :------ |
346
+ | <a id="bytestransferred"></a> `bytesTransferred` | `number` | - |
347
+ | <a id="error-3"></a> `error?` | `Error` | Populated on `'error'` — a typed `StorageError` from the sandbox (`.code` is `storage/<code>`, e.g. `storage/unauthorized` for a rules-denied write). |
348
+ | <a id="fullpath-3"></a> `fullPath` | `string` | Bucket-rooted destination path. |
349
+ | <a id="id-2"></a> `id` | `string` | Stable id — key task rows on this, not on `fullPath` (two uploads can target the same path). |
350
+ | <a id="metadata-2"></a> `metadata?` | `FullMetadata` | Populated on `'success'`. |
351
+ | <a id="status-1"></a> `status` | [`UploadTaskStatus`](#uploadtaskstatus-1) | - |
352
+ | <a id="totalbytes"></a> `totalBytes` | `number` | - |
353
+
354
+ ***
355
+
356
+ <a id="usemetadataeditoroptions"></a>
357
+
358
+ ### UseMetadataEditorOptions
359
+
360
+ #### Properties
361
+
362
+ | Property | Type | Description |
363
+ | :------ | :------ | :------ |
364
+ | <a id="initial-1"></a> `initial?` | `SettableMetadata` | The metadata being edited — the same shape `useStorageObject`'s `metadata` carries. Read once on mount (the editor is a stateful workspace, like the document editor); `reset()` + remount to re-initialize. |
365
+
366
+ ***
367
+
368
+ <a id="usemetadataeditorresult"></a>
369
+
370
+ ### UseMetadataEditorResult
371
+
372
+ #### Properties
373
+
374
+ | Property | Type | Description |
375
+ | :------ | :------ | :------ |
376
+ | <a id="addcustomentry"></a> `addCustomEntry` | (`key?`: `string`, `value?`: `string`) => `void` | - |
377
+ | <a id="cachecontrol"></a> `cacheControl` | `string` | - |
378
+ | <a id="contenttype"></a> `contentType` | `string` | - |
379
+ | <a id="custom"></a> `custom` | [`CustomMetadataEntry`](#custommetadataentry)[] | - |
380
+ | <a id="dispatch"></a> `dispatch` | (`action`: [`MetadataEditorAction`](#metadataeditoraction)) => `void` | Raw dispatch — prefer the named helpers. |
381
+ | <a id="errorcount-1"></a> `errorCount` | `number` | - |
382
+ | <a id="isdirty"></a> `isDirty` | `boolean` | `true` once any modifying action fired since the last `reset`/successful `save`. Reference-compare semantics — manual re-entry of the original values does NOT clear it. |
383
+ | <a id="issaving"></a> `isSaving` | `boolean` | - |
384
+ | <a id="isvalid"></a> `isValid` | `boolean` | Convenience: `errorCount === 0`. |
385
+ | <a id="removecustomentry"></a> `removeCustomEntry` | (`id`: `string`) => `void` | - |
386
+ | <a id="reset"></a> `reset` | () => `void` | Restore the initial values. Clears `isDirty`. |
387
+ | <a id="save"></a> `save` | () => `Promise`\<`any`\> | `updateMetadata(ref(storage, path), toPatch())`. Errors surface via `saveError` (typed `StorageError`), not throws — resolves `undefined` on failure or when the draft is invalid. On success the draft becomes the new baseline (`isDirty` clears) and the fresh `FullMetadata` is returned. |
388
+ | <a id="saveerror"></a> `saveError` | `Error` | - |
389
+ | <a id="setcachecontrol"></a> `setCacheControl` | (`value`: `string`) => `void` | - |
390
+ | <a id="setcontenttype"></a> `setContentType` | (`value`: `string`) => `void` | - |
391
+ | <a id="setcustomkey"></a> `setCustomKey` | (`id`: `string`, `key`: `string`) => `void` | - |
392
+ | <a id="setcustomvalue"></a> `setCustomValue` | (`id`: `string`, `value`: `string`) => `void` | - |
393
+ | <a id="topatch"></a> `toPatch` | () => `SettableMetadata` | Serialize the draft to an `updateMetadata` patch. Empty `contentType`/`cacheControl` become `undefined` — which LEAVES the previous value (the sandbox doesn't model null-clears; see `pyric/storage`'s `updateMetadata` doc). `customMetadata` is always included and replaces wholesale, so row removal works. |
394
+
395
+ ***
396
+
397
+ <a id="useobjectuploadoptions"></a>
398
+
399
+ ### UseObjectUploadOptions
400
+
401
+ #### Properties
402
+
403
+ | Property | Type | Description |
404
+ | :------ | :------ | :------ |
405
+ | <a id="list-1"></a> `list?` | `Pick`\<[`UseStorageListResult`](#usestoragelistresult), `"insertItem"` \| `"removeItem"`\> | Optimistic seam from `useStorageList`: each upload inserts its path immediately and rolls back via `removeItem` on failure. Caveat: rolling back an upload that was OVERWRITING an existing object drops that object's row locally (the seam can't tell an optimistic row from a listed one) — `refresh()` restores server truth. |
406
+ | <a id="oncomplete"></a> `onComplete?` | (`task`: [`UploadTask`](#uploadtask)) => `void` | Fired once per task reaching `'success'`. |
407
+ | <a id="onerror"></a> `onError?` | (`task`: [`UploadTask`](#uploadtask)) => `void` | Fired once per task reaching `'error'`. |
408
+ | <a id="onprogress"></a> `onProgress?` | (`task`: [`UploadTask`](#uploadtask)) => `void` | Task-shaped progress callback (see [UploadTask](#uploadtask)). |
409
+ | <a id="path-3"></a> `path?` | `string` | Destination folder, bucket-rooted. Default `''` (root). Wire to `usePathState().path` so uploads land in the browsed folder. |
410
+
411
+ ***
412
+
413
+ <a id="useobjectuploadresult"></a>
414
+
415
+ ### UseObjectUploadResult
416
+
417
+ #### Properties
418
+
419
+ | Property | Type | Description |
420
+ | :------ | :------ | :------ |
421
+ | <a id="clearcompleted"></a> `clearCompleted` | () => `void` | Drop settled (`success`/`error`) tasks from `tasks`. |
422
+ | <a id="createfolder"></a> `createFolder` | (`name`: `string`) => `Promise`\<`void`\> | Create an empty folder under the hook's `path`: writes the GCS placeholder convention — a zero-byte object named `<path>/` (trailing slash). `listAll` hides the placeholder from `items` at every level (it only surfaces as a prefix), so the folder appears in the browser with no phantom file inside. `ref()` normalizes the trailing slash away, so the placeholder is written through a structural value-object reference the sandbox accepts. Throws the underlying error after rolling back the optimistic prefix insert. ALTERNATIVE: when the store must stay free of placeholder objects (Pyric Studio's choice), use the client-side pending-prefix mechanism instead — see `pendingPrefixes.ts` for the reducer and the recorded tradeoff. |
423
+ | <a id="isuploading"></a> `isUploading` | `boolean` | `true` while any task is `'running'`. |
424
+ | <a id="tasks"></a> `tasks` | [`UploadTask`](#uploadtask)[] | Every task started by this hook instance, oldest first. |
425
+ | <a id="upload-1"></a> `upload` | (`input`: [`UploadInput`](#uploadinput) \| [`UploadInput`](#uploadinput)[]) => `Promise`\<[`UploadTask`](#uploadtask)[]\> | Upload one or many files. Tasks run concurrently; the promise resolves with the settled tasks once ALL finish and never rejects — per-file failures land on `task.error` (and `onError`), so one bad file doesn't mask the others. |
426
+
427
+ ***
428
+
429
+ <a id="usepathstateoptions"></a>
430
+
431
+ ### UsePathStateOptions
432
+
433
+ #### Properties
434
+
435
+ | Property | Type | Description |
436
+ | :------ | :------ | :------ |
437
+ | <a id="defaultpath"></a> `defaultPath?` | `string` | Uncontrolled initial value. Default `''` (bucket root). |
438
+ | <a id="onpathchange"></a> `onPathChange?` | (`path`: `string`) => `void` | Fired with the normalized next path on every navigation. Called in both modes. |
439
+ | <a id="path-4"></a> `path?` | `string` | Controlled value. When provided, the hook derives everything from it and navigation calls only fire `onPathChange` — the owner owns the state (e.g. a router binding `?path=`). |
440
+
441
+ ***
442
+
443
+ <a id="usepathstateresult"></a>
444
+
445
+ ### UsePathStateResult
446
+
447
+ #### Properties
448
+
449
+ | Property | Type | Description |
450
+ | :------ | :------ | :------ |
451
+ | <a id="enter"></a> `enter` | (`nameOrPath`: `string`) => `void` | Descend into a child folder — accepts a bare name (`'sub'`) or an absolute path (`'docs/sub'`, e.g. a prefix's `fullPath`). |
452
+ | <a id="navigatetoindex"></a> `navigateToIndex` | (`index`: `number`) => `void` | Jump to the ancestor ending at `segments[index]` — the breadcrumb click. `navigateToIndex(-1)` (or any negative) is the root. |
453
+ | <a id="path-5"></a> `path` | `string` | Current normalized path. `''` is the bucket root. |
454
+ | <a id="segments"></a> `segments` | `string`[] | Path split into segments. `[]` at root. |
455
+ | <a id="setpath"></a> `setPath` | (`path`: `string`) => `void` | Jump to an absolute path (normalized). |
456
+ | <a id="up"></a> `up` | () => `void` | Ascend one level. No-op at root. |
457
+
458
+ ***
459
+
460
+ <a id="usestoragedeleteoptions"></a>
461
+
462
+ ### UseStorageDeleteOptions
463
+
464
+ #### Properties
465
+
466
+ | Property | Type | Description |
467
+ | :------ | :------ | :------ |
468
+ | <a id="impl-1"></a> `impl?` | [`StorageRecursiveDeleteImpl`](#storagerecursivedeleteimpl) | Folder-walk implementation. Default [createListAllDeleteImpl](#createlistalldeleteimpl). |
469
+ | <a id="list-2"></a> `list?` | `Pick`\<[`UseStorageListResult`](#usestoragelistresult), `"insertItem"` \| `"removeItem"`\> | Optimistic seam from `useStorageList`: entries vanish from the local list immediately and roll back (object → item, folder → trailing-slash prefix insert) on failure. |
470
+
471
+ ***
472
+
473
+ <a id="usestoragedeleteresult"></a>
474
+
475
+ ### UseStorageDeleteResult
476
+
477
+ #### Properties
478
+
479
+ | Property | Type | Description |
480
+ | :------ | :------ | :------ |
481
+ | <a id="deleteentries"></a> `deleteEntries` | (`entries`: [`StorageSelectionEntry`](#storageselectionentry)[]) => `Promise`\<[`StorageDeleteOutcome`](#storagedeleteoutcome)\> | Delete a mixed object/folder selection (objects via `deleteObject`, folders via the recursive impl), sequentially in selection order. Resolves with the outcome and never rejects — per-entry failures land in `outcome.failed` (and `error` keeps the first one for simple renders). |
482
+ | <a id="error-4"></a> `error` | `Error` | First failure of the current/last run. Cleared on the next call. |
483
+ | <a id="isrunning"></a> `isRunning` | `boolean` | - |
484
+ | <a id="progress"></a> `progress` | `number` | Objects deleted in the current/last run (folder walks included). |
485
+
486
+ ***
487
+
488
+ <a id="usestoragelistresult"></a>
489
+
490
+ ### UseStorageListResult
491
+
492
+ #### Properties
493
+
494
+ | Property | Type | Description |
495
+ | :------ | :------ | :------ |
496
+ | <a id="entries-2"></a> `entries` | [`StorageListEntry`](#storagelistentry)[] | Folders-first merged row model. Derived from `prefixes` + `items`. |
497
+ | <a id="error-5"></a> `error` | `Error` | `StorageError` (with a typed `storage/<code>` on `.code`) from the sandbox. A denied list is `error.code === 'storage/unauthorized'` (ST-B2). |
498
+ | <a id="insertitem"></a> `insertItem` | (`fullPath`: `string`) => `void` | Optimistic seam (consumed by M3 upload / M6 bulk ops, exposed now so those hooks layer on without reshaping this one). Inserts `fullPath` into the local list immediately, applying the same prefix→folder synthesis `listAll` would: a direct child becomes an item, a deeper descendant surfaces as its first-segment folder. A trailing slash declares a folder (the GCS placeholder convention `useObjectUpload.createFolder` writes): a direct trailing-slash child inserts a prefix, not an item. No-op for paths outside the listed path, duplicates, or when `status` is `'idle'`. What each call ACTUALLY inserted is recorded (keyed by the given `fullPath`) so `removeItem` can reverse it precisely. Rollback = `removeItem` or `refresh`. |
499
+ | <a id="items"></a> `items` | `StorageReference`[] | Direct child objects under `path`. Sorted by `fullPath`. |
500
+ | <a id="prefixes"></a> `prefixes` | `StorageReference`[] | Synthetic folder prefixes under `path`. Sorted by `fullPath`. |
501
+ | <a id="refresh"></a> `refresh` | () => `void` | Re-run `listAll` for the current path. |
502
+ | <a id="removeitem"></a> `removeItem` | (`fullPath`: `string`) => `void` | Optimistic counterpart. When `fullPath` was previously given to `insertItem`, this reverses EXACTLY what that call inserted: a deep upload that synthesized a first-segment folder row removes that folder row, and an insert that was a no-op (the row already existed — e.g. a real, listed folder) removes NOTHING, so a failed upload can never delete server-truth rows. For paths never seen by `insertItem` it removes the matching item/folder row directly (the optimistic-delete use). Rollback = `refresh`. |
503
+ | <a id="status-2"></a> `status` | [`StorageListStatus`](#storageliststatus) | `'idle'` only when `storage` is null/undefined. |
504
+
505
+ ***
506
+
507
+ <a id="usestorageobjectresult"></a>
508
+
509
+ ### UseStorageObjectResult
510
+
511
+ #### Properties
512
+
513
+ | Property | Type | Description |
514
+ | :------ | :------ | :------ |
515
+ | <a id="blob-1"></a> `blob` | `Blob` | - |
516
+ | <a id="bloberror"></a> `blobError` | `Error` | - |
517
+ | <a id="blobstatus"></a> `blobStatus` | [`StorageObjectStatus`](#storageobjectstatus) | Blob read state. Stays `'idle'` until `loadBlob()`, the blob is LAZY; metadata alone never downloads bytes. |
518
+ | <a id="bloburl-1"></a> `blobUrl` | `string` | `URL.createObjectURL` handle for the loaded blob, used as the local preview channel. Revoked automatically when the blob is replaced, the path changes, or the hook unmounts. |
519
+ | <a id="error-6"></a> `error` | `Error` | Typed `StorageError` (`storage/object-not-found`, `storage/unauthorized`, …). |
520
+ | <a id="loadblob"></a> `loadBlob` | () => `void` | Fetch the bytes via `getBlob`. Subsequent calls re-fetch. |
521
+ | <a id="metadata-3"></a> `metadata` | `any` | - |
522
+ | <a id="refresh-1"></a> `refresh` | () => `void` | Re-read the metadata (also resets the blob, the object may have been overwritten). |
523
+ | <a id="status-3"></a> `status` | [`StorageObjectStatus`](#storageobjectstatus) | Metadata read state. `'idle'` when `storage` or `path` is null. |
524
+
525
+ ***
526
+
527
+ <a id="usestoragerulesgateoptions"></a>
528
+
529
+ ### UseStorageRulesGateOptions
530
+
531
+ #### Properties
532
+
533
+ | Property | Type | Description |
534
+ | :------ | :------ | :------ |
535
+ | <a id="identity"></a> `identity?` | `any` | Identity override. `null` is anonymous; OMIT the field to use the handle's own identity (the sandbox context's `auth`). |
536
+ | <a id="paths"></a> `paths?` | `string` \| readonly `string`[] | Path (or paths) to pre-evaluate into `verdicts`, keyed by the normalized path. Ad-hoc paths (e.g. browser rows) go through `verdictFor` instead — the two are the same evaluation. |
537
+ | <a id="rules"></a> `rules?` | `any` | Explicit rules source — raw rules text (parsed here; a malformed string surfaces as `status: 'error'`) or a pre-parsed `StorageRules` handle. Overrides the sandbox's deployed ruleset when both exist. |
538
+ | <a id="writeresource"></a> `writeResource?` | \{ `contentType?`: `string`; `size`: `number`; \} | The about-to-write payload bound to `request.resource` for the WRITE evaluation — pass `{ size, contentType }` when gating a specific upload so size/contentType-conditioned rules evaluate truthfully. When omitted, `request.resource` is unset, which is exactly DELETE semantics (deletes carry no inbound payload) — a rule like `request.resource.size < N` then denies, the conservative answer for uploads. |
539
+ | `writeResource.contentType?` | `string` | - |
540
+ | `writeResource.size` | `number` | - |
541
+
542
+ ***
543
+
544
+ <a id="usestoragerulesgateresult"></a>
545
+
546
+ ### UseStorageRulesGateResult
547
+
548
+ #### Properties
549
+
550
+ | Property | Type | Description |
551
+ | :------ | :------ | :------ |
552
+ | <a id="advisory"></a> `advisory` | `boolean` | Always false: `pyric/storage` handles are sandbox mirrors. |
553
+ | <a id="error-7"></a> `error` | `Error` | Rules-resolution failure (e.g. a malformed `rules` string). |
554
+ | <a id="identity-1"></a> `identity` | `any` | The identity the verdicts evaluate under. |
555
+ | <a id="source"></a> `source` | [`StorageRulesSource`](#storagerulessource) | Where the active ruleset came from. |
556
+ | <a id="status-4"></a> `status` | [`StorageRulesGateStatus`](#storagerulesgatestatus) | `'idle'` only when `storage` is null/undefined. |
557
+ | <a id="verdictfor"></a> `verdictFor` | (`path`: `string`) => [`StorageGateVerdict`](#storagegateverdict) | Evaluate an arbitrary path under the current ruleset + identity. Pure and synchronous once `status` is `'ready'`; before that (and whenever no rules are reachable) it returns the allow-all verdict — the gate FAILS OPEN, because affordances are advisory and the real enforcement (sandbox throw / server denial) stays authoritative. |
558
+ | <a id="verdicts"></a> `verdicts` | `Record`\<`string`, [`StorageGateVerdict`](#storagegateverdict)\> | Pre-evaluated verdicts for `options.paths`, keyed by normalized path. |
559
+
560
+ ***
561
+
562
+ <a id="usestorageselectionresult"></a>
563
+
564
+ ### UseStorageSelectionResult
565
+
566
+ #### Properties
567
+
568
+ | Property | Type | Description |
569
+ | :------ | :------ | :------ |
570
+ | <a id="clear"></a> `clear` | () => `void` | - |
571
+ | <a id="deselect"></a> `deselect` | (`fullPath`: `string`) => `void` | - |
572
+ | <a id="isselected"></a> `isSelected` | (`fullPath`: `string`) => `boolean` | - |
573
+ | <a id="select"></a> `select` | (`entry`: [`StorageSelectionEntry`](#storageselectionentry)) => `void` | - |
574
+ | <a id="selectall"></a> `selectAll` | (`entries`: [`StorageSelectionEntry`](#storageselectionentry)[]) => `void` | Replace the selection (e.g. a "select all" over `list.entries`). |
575
+ | <a id="selected"></a> `selected` | [`StorageSelectionEntry`](#storageselectionentry)[] | Selected entries in selection order. |
576
+ | <a id="size"></a> `size` | `number` | - |
577
+ | <a id="toggle"></a> `toggle` | (`entry`: [`StorageSelectionEntry`](#storageselectionentry)) => `void` | Add/remove — the checkbox verb. |
578
+
579
+ ## Type Aliases
580
+
581
+ <a id="metadataeditoraction"></a>
582
+
583
+ ### MetadataEditorAction
584
+
585
+ ```ts
586
+ type MetadataEditorAction =
587
+ | {
588
+ type: "setContentType";
589
+ value: string;
590
+ }
591
+ | {
592
+ type: "setCacheControl";
593
+ value: string;
594
+ }
595
+ | {
596
+ id: string;
597
+ key: string;
598
+ type: "setCustomKey";
599
+ }
600
+ | {
601
+ id: string;
602
+ type: "setCustomValue";
603
+ value: string;
604
+ }
605
+ | {
606
+ key?: string;
607
+ type: "addCustomEntry";
608
+ value?: string;
609
+ }
610
+ | {
611
+ id: string;
612
+ type: "removeCustomEntry";
613
+ }
614
+ | {
615
+ type: "reset";
616
+ }
617
+ | {
618
+ type: "commit";
619
+ };
620
+ ```
621
+
622
+ #### Type Declaration
623
+
624
+ ```ts
625
+ {
626
+ type: "setContentType";
627
+ value: string;
628
+ }
629
+ ```
630
+
631
+ ##### type
632
+
633
+ ```ts
634
+ type: "setContentType";
635
+ ```
636
+
637
+ ##### value
638
+
639
+ ```ts
640
+ value: string;
641
+ ```
642
+
643
+ ```ts
644
+ {
645
+ type: "setCacheControl";
646
+ value: string;
647
+ }
648
+ ```
649
+
650
+ ##### type
651
+
652
+ ```ts
653
+ type: "setCacheControl";
654
+ ```
655
+
656
+ ##### value
657
+
658
+ ```ts
659
+ value: string;
660
+ ```
661
+
662
+ ```ts
663
+ {
664
+ id: string;
665
+ key: string;
666
+ type: "setCustomKey";
667
+ }
668
+ ```
669
+
670
+ ##### id
671
+
672
+ ```ts
673
+ id: string;
674
+ ```
675
+
676
+ ##### key
677
+
678
+ ```ts
679
+ key: string;
680
+ ```
681
+
682
+ ##### type
683
+
684
+ ```ts
685
+ type: "setCustomKey";
686
+ ```
687
+
688
+ ```ts
689
+ {
690
+ id: string;
691
+ type: "setCustomValue";
692
+ value: string;
693
+ }
694
+ ```
695
+
696
+ ##### id
697
+
698
+ ```ts
699
+ id: string;
700
+ ```
701
+
702
+ ##### type
703
+
704
+ ```ts
705
+ type: "setCustomValue";
706
+ ```
707
+
708
+ ##### value
709
+
710
+ ```ts
711
+ value: string;
712
+ ```
713
+
714
+ ```ts
715
+ {
716
+ key?: string;
717
+ type: "addCustomEntry";
718
+ value?: string;
719
+ }
720
+ ```
721
+
722
+ ##### key?
723
+
724
+ ```ts
725
+ optional key: string;
726
+ ```
727
+
728
+ ##### type
729
+
730
+ ```ts
731
+ type: "addCustomEntry";
732
+ ```
733
+
734
+ ##### value?
735
+
736
+ ```ts
737
+ optional value: string;
738
+ ```
739
+
740
+ ```ts
741
+ {
742
+ id: string;
743
+ type: "removeCustomEntry";
744
+ }
745
+ ```
746
+
747
+ ##### id
748
+
749
+ ```ts
750
+ id: string;
751
+ ```
752
+
753
+ ##### type
754
+
755
+ ```ts
756
+ type: "removeCustomEntry";
757
+ ```
758
+
759
+ ```ts
760
+ {
761
+ type: "reset";
762
+ }
763
+ ```
764
+
765
+ ##### type
766
+
767
+ ```ts
768
+ type: "reset";
769
+ ```
770
+
771
+ ```ts
772
+ {
773
+ type: "commit";
774
+ }
775
+ ```
776
+
777
+ ##### type
778
+
779
+ ```ts
780
+ type: "commit";
781
+ ```
782
+
783
+ Internal — a successful save makes the draft the new baseline.
784
+
785
+ ***
786
+
787
+ <a id="pendingprefixaction"></a>
788
+
789
+ ### PendingPrefixAction
790
+
791
+ ```ts
792
+ type PendingPrefixAction =
793
+ | {
794
+ path: string;
795
+ type: "create";
796
+ }
797
+ | {
798
+ path: string;
799
+ type: "materialize";
800
+ }
801
+ | {
802
+ path: string;
803
+ type: "discard";
804
+ }
805
+ | {
806
+ type: "clear";
807
+ };
808
+ ```
809
+
810
+ #### Type Declaration
811
+
812
+ ```ts
813
+ {
814
+ path: string;
815
+ type: "create";
816
+ }
817
+ ```
818
+
819
+ ##### path
820
+
821
+ ```ts
822
+ path: string;
823
+ ```
824
+
825
+ ##### type
826
+
827
+ ```ts
828
+ type: "create";
829
+ ```
830
+
831
+ Create a folder at `path` (absolute, bucket-rooted; nested paths
832
+ allowed) — adds the full ancestor chain.
833
+
834
+ ```ts
835
+ {
836
+ path: string;
837
+ type: "materialize";
838
+ }
839
+ ```
840
+
841
+ ##### path
842
+
843
+ ```ts
844
+ path: string;
845
+ ```
846
+
847
+ ##### type
848
+
849
+ ```ts
850
+ type: "materialize";
851
+ ```
852
+
853
+ An object now exists directly under `path`: drop `path` and its
854
+ ancestors from pending (they are real prefixes now).
855
+
856
+ ```ts
857
+ {
858
+ path: string;
859
+ type: "discard";
860
+ }
861
+ ```
862
+
863
+ ##### path
864
+
865
+ ```ts
866
+ path: string;
867
+ ```
868
+
869
+ ##### type
870
+
871
+ ```ts
872
+ type: "discard";
873
+ ```
874
+
875
+ Remove a session-only folder and every pending descendant beneath it.
876
+
877
+ ```ts
878
+ {
879
+ type: "clear";
880
+ }
881
+ ```
882
+
883
+ ##### type
884
+
885
+ ```ts
886
+ type: "clear";
887
+ ```
888
+
889
+ ***
890
+
891
+ <a id="pendingprefixstate"></a>
892
+
893
+ ### PendingPrefixState
894
+
895
+ ```ts
896
+ type PendingPrefixState = readonly string[];
897
+ ```
898
+
899
+ Sorted, deduped, normalized pending prefix paths.
900
+
901
+ ***
902
+
903
+ <a id="storageapi"></a>
904
+
905
+ ### StorageApi
906
+
907
+ ```ts
908
+ type StorageApi = Pick<any,
909
+ | "ref"
910
+ | "listAll"
911
+ | "getMetadata"
912
+ | "getBlob"
913
+ | "uploadBytes"
914
+ | "deleteObject">;
915
+ ```
916
+
917
+ The modular Storage fns the browse/inspect hooks call, as an INJECTABLE
918
+ bundle (same pattern as `@pyric/ui`'s FirestoreApi / AuthApi).
919
+
920
+ Default = in-process `pyric/storage`, so existing consumers are unchanged.
921
+ Pyric Studio served mode injects the SharedWorker client bundle so the Storage
922
+ surface browses the live worker object store. These ops are already async, so
923
+ no sync/async wrinkle (unlike auth `listUsers`); the worker handles/refs are
924
+ runtime-compatible at the surface the hooks use (`.fullPath` / `.name`).
925
+
926
+ `uploadBytes` rides the same seam so `useObjectUpload` follows the injected
927
+ backend: in-process writes are uncapped; the worker client's `uploadBytes`
928
+ (base64 `storage.putBytes` over the MessagePort) enforces an 8 MiB payload
929
+ cap on both ends — an over-cap upload fails that file's task with the typed
930
+ `storage/...` too-large error and the rest of the batch proceeds.
931
+
932
+ NOTE the rules gate (`useStorageRulesGate`) is NOT here: it reads in-process
933
+ rules internals and no-ops on a handle without them (worker handles), which is
934
+ the correct degrade (the worker enforces read rules on `listAll` server-side).
935
+
936
+ ***
937
+
938
+ <a id="storageliststatus"></a>
939
+
940
+ ### StorageListStatus
941
+
942
+ ```ts
943
+ type StorageListStatus = "idle" | "loading" | "success" | "error";
944
+ ```
945
+
946
+ ***
947
+
948
+ <a id="storageobjectstatus"></a>
949
+
950
+ ### StorageObjectStatus
951
+
952
+ ```ts
953
+ type StorageObjectStatus = "idle" | "loading" | "success" | "error";
954
+ ```
955
+
956
+ ***
957
+
958
+ <a id="storagerulesgatestatus"></a>
959
+
960
+ ### StorageRulesGateStatus
961
+
962
+ ```ts
963
+ type StorageRulesGateStatus = "idle" | "loading" | "ready" | "error";
964
+ ```
965
+
966
+ ***
967
+
968
+ <a id="storagerulessource"></a>
969
+
970
+ ### StorageRulesSource
971
+
972
+ ```ts
973
+ type StorageRulesSource = "option" | "sandbox" | "none";
974
+ ```
975
+
976
+ Where the active ruleset came from:
977
+ - `'option'` — the explicit `rules` option (string or pre-parsed).
978
+ - `'sandbox'` — the ruleset deployed on the sandbox handle
979
+ (`getStorageSandbox(ctx, { rules })`), read off the handle's
980
+ `StorageService`.
981
+ - `'none'` — no rules reachable. Every verdict allows
982
+ (open-by-default, the same semantics `pyric/storage`'s
983
+ enforcement layer applies when no rules are configured).
984
+
985
+ ***
986
+
987
+ <a id="uploadinput"></a>
988
+
989
+ ### UploadInput
990
+
991
+ ```ts
992
+ type UploadInput = File | UploadEntry;
993
+ ```
994
+
995
+ `upload()` accepts plain `File`s (destination = the file's
996
+ `webkitRelativePath` when present — folder drops keep their
997
+ structure — else its `name`) or explicit [UploadEntry](#uploadentry)s.
998
+
999
+ ***
1000
+
1001
+ <a id="uploadtaskstatus-1"></a>
1002
+
1003
+ ### UploadTaskStatus
1004
+
1005
+ ```ts
1006
+ type UploadTaskStatus = "running" | "success" | "error";
1007
+ ```
1008
+
1009
+ ## Variables
1010
+
1011
+ <a id="defaultstoragepreviews"></a>
1012
+
1013
+ ### defaultStoragePreviews
1014
+
1015
+ ```ts
1016
+ const defaultStoragePreviews: ReadonlyArray<StoragePreview>;
1017
+ ```
1018
+
1019
+ The section 3 defaults: image, text/json; everything else is
1020
+ metadata-only (the inspector's `data-pyric-preview-none` state).
1021
+
1022
+ ***
1023
+
1024
+ <a id="imagepreview"></a>
1025
+
1026
+ ### imagePreview
1027
+
1028
+ ```ts
1029
+ const imagePreview: StoragePreview;
1030
+ ```
1031
+
1032
+ `image/*` → blob-URL `<img>`.
1033
+
1034
+ ***
1035
+
1036
+ <a id="initialpendingprefixes"></a>
1037
+
1038
+ ### initialPendingPrefixes
1039
+
1040
+ ```ts
1041
+ const initialPendingPrefixes: PendingPrefixState;
1042
+ ```
1043
+
1044
+ ***
1045
+
1046
+ <a id="text_preview_max_bytes"></a>
1047
+
1048
+ ### TEXT\_PREVIEW\_MAX\_BYTES
1049
+
1050
+ ```ts
1051
+ const TEXT_PREVIEW_MAX_BYTES: number;
1052
+ ```
1053
+
1054
+ 256KB — the section 3 default cap for the text-family preview.
1055
+
1056
+ ***
1057
+
1058
+ <a id="textpreview"></a>
1059
+
1060
+ ### textPreview
1061
+
1062
+ ```ts
1063
+ const textPreview: StoragePreview;
1064
+ ```
1065
+
1066
+ `text/*` + `application/json` → text panel, 256KB cap (bigger
1067
+ objects fall through to the too-large fallback). JSON is
1068
+ pretty-printed when parseable.
1069
+
1070
+ ## Functions
1071
+
1072
+ <a id="createlistalldeleteimpl"></a>
1073
+
1074
+ ### createListAllDeleteImpl()
1075
+
1076
+ ```ts
1077
+ function createListAllDeleteImpl(api?: Pick<StorageApi, "listAll" | "deleteObject">): StorageRecursiveDeleteImpl;
1078
+ ```
1079
+
1080
+ The default, `listAll`-driven impl: walks the prefix tree,
1081
+ `deleteObject`s every item (yielding progress per object), then
1082
+ sweeps each visited folder's `<path>/` placeholder so emptied
1083
+ create-folder folders disappear too (`listAll` hides placeholders,
1084
+ so the walk alone would leave ghost folders). Placeholder sweeps
1085
+ are best-effort — `deletedCount` counts listed objects only.
1086
+
1087
+ #### Parameters
1088
+
1089
+ | Parameter | Type |
1090
+ | :------ | :------ |
1091
+ | `api?` | `Pick`\<[`StorageApi`](#storageapi), `"listAll"` \| `"deleteObject"`\> |
1092
+
1093
+ #### Returns
1094
+
1095
+ [`StorageRecursiveDeleteImpl`](#storagerecursivedeleteimpl)
1096
+
1097
+ ***
1098
+
1099
+ <a id="deleteselectionwithconfirm"></a>
1100
+
1101
+ ### DeleteSelectionWithConfirm()
1102
+
1103
+ ```ts
1104
+ function DeleteSelectionWithConfirm(__namedParameters: DeleteSelectionWithConfirmProps): Element;
1105
+ ```
1106
+
1107
+ Bulk delete behind the confirm-dialog primitive, with toasts on
1108
+ outcome — wires `useConfirm` + `useStorageDelete` + `useToast` the
1109
+ way `<DeleteWithConfirm>` wires the Firestore trio. Requires
1110
+ `<ConfirmProvider>` AND `<ToastProvider>` ancestors.
1111
+
1112
+ Outcome toasts: all-success → one `success` toast with the count;
1113
+ any failure → an `error` toast listing each failed path with its
1114
+ typed `StorageError.code`.
1115
+
1116
+ The default trigger styles via `[data-pyric-ui="delete-selection"]`
1117
+ (+ `[data-pyric-destructive]`, `[data-pyric-running]`,
1118
+ `[data-pyric-denied]` with the reason on
1119
+ `data-pyric-denied-reason`/`title`); it disables while running,
1120
+ when `entries` is empty, or when the rules `gate` denies the
1121
+ selection.
1122
+
1123
+ #### Parameters
1124
+
1125
+ | Parameter | Type |
1126
+ | :------ | :------ |
1127
+ | `__namedParameters` | [`DeleteSelectionWithConfirmProps`](#deleteselectionwithconfirmprops) |
1128
+
1129
+ #### Returns
1130
+
1131
+ `Element`
1132
+
1133
+ ***
1134
+
1135
+ <a id="expandpathchain"></a>
1136
+
1137
+ ### expandPathChain()
1138
+
1139
+ ```ts
1140
+ function expandPathChain(path: string): string[];
1141
+ ```
1142
+
1143
+ `'a/b/c'` → `['a', 'a/b', 'a/b/c']`; `''` → `[]`.
1144
+
1145
+ #### Parameters
1146
+
1147
+ | Parameter | Type |
1148
+ | :------ | :------ |
1149
+ | `path` | `string` |
1150
+
1151
+ #### Returns
1152
+
1153
+ `string`[]
1154
+
1155
+ ***
1156
+
1157
+ <a id="folderinputerror"></a>
1158
+
1159
+ ### folderInputError()
1160
+
1161
+ ```ts
1162
+ function folderInputError(input: string): string;
1163
+ ```
1164
+
1165
+ Validate a create-folder input (relative to the current folder;
1166
+ nested `a/b/c` allowed — VS Code semantics). Returns an error
1167
+ message or `null` when valid. Normalization tolerates stray/repeat
1168
+ slashes; `.`/`..` segments are rejected (GCS object names have no
1169
+ dot-segment semantics — accepting them would create unreachable
1170
+ names).
1171
+
1172
+ #### Parameters
1173
+
1174
+ | Parameter | Type |
1175
+ | :------ | :------ |
1176
+ | `input` | `string` |
1177
+
1178
+ #### Returns
1179
+
1180
+ `string`
1181
+
1182
+ ***
1183
+
1184
+ <a id="initmetadataeditorstate"></a>
1185
+
1186
+ ### initMetadataEditorState()
1187
+
1188
+ ```ts
1189
+ function initMetadataEditorState(initial: any): MetadataEditorState;
1190
+ ```
1191
+
1192
+ Build the edit state from the metadata a `getMetadata` /
1193
+ `useStorageObject` read returned.
1194
+
1195
+ #### Parameters
1196
+
1197
+ | Parameter | Type |
1198
+ | :------ | :------ |
1199
+ | `initial` | `any` |
1200
+
1201
+ #### Returns
1202
+
1203
+ [`MetadataEditorState`](#metadataeditorstate)
1204
+
1205
+ ***
1206
+
1207
+ <a id="ispendingprefix"></a>
1208
+
1209
+ ### isPendingPrefix()
1210
+
1211
+ ```ts
1212
+ function isPendingPrefix(state: PendingPrefixState, path: string): boolean;
1213
+ ```
1214
+
1215
+ Whether `path` itself is a pending (session-only) folder.
1216
+
1217
+ #### Parameters
1218
+
1219
+ | Parameter | Type |
1220
+ | :------ | :------ |
1221
+ | `state` | [`PendingPrefixState`](#pendingprefixstate) |
1222
+ | `path` | `string` |
1223
+
1224
+ #### Returns
1225
+
1226
+ `boolean`
1227
+
1228
+ ***
1229
+
1230
+ <a id="metadataeditorreducer"></a>
1231
+
1232
+ ### metadataEditorReducer()
1233
+
1234
+ ```ts
1235
+ function metadataEditorReducer(state: MetadataEditorState, action: MetadataEditorAction): MetadataEditorState;
1236
+ ```
1237
+
1238
+ Pure reducer — exported (with [initMetadataEditorState](#initmetadataeditorstate)) so
1239
+ the edit state is testable without React, mirroring the document
1240
+ editor's reducer/hook split.
1241
+
1242
+ #### Parameters
1243
+
1244
+ | Parameter | Type |
1245
+ | :------ | :------ |
1246
+ | `state` | [`MetadataEditorState`](#metadataeditorstate) |
1247
+ | `action` | [`MetadataEditorAction`](#metadataeditoraction) |
1248
+
1249
+ #### Returns
1250
+
1251
+ [`MetadataEditorState`](#metadataeditorstate)
1252
+
1253
+ ***
1254
+
1255
+ <a id="normalizestoragepath"></a>
1256
+
1257
+ ### normalizeStoragePath()
1258
+
1259
+ ```ts
1260
+ function normalizeStoragePath(path: string): string;
1261
+ ```
1262
+
1263
+ Strip leading/trailing slashes and collapse repeats — mirrors
1264
+ `pyric/storage`'s reference normalization so `usePathState` and
1265
+ `useStorageList` always agree on what a path is.
1266
+
1267
+ #### Parameters
1268
+
1269
+ | Parameter | Type |
1270
+ | :------ | :------ |
1271
+ | `path` | `string` |
1272
+
1273
+ #### Returns
1274
+
1275
+ `string`
1276
+
1277
+ ***
1278
+
1279
+ <a id="objectbrowser"></a>
1280
+
1281
+ ### ObjectBrowser()
1282
+
1283
+ ```ts
1284
+ function ObjectBrowser(__namedParameters: ObjectBrowserProps): Element;
1285
+ ```
1286
+
1287
+ Headless storage browser shell — renders `useStorageList`'s merged
1288
+ folder/object rows. Folder rows navigate (`onNavigate` with the
1289
+ prefix path), object rows select (`onSelect` with the ref). Below
1290
+ `virtualizeThreshold` renders a plain `<ul>`; above it, composes
1291
+ the package's `<VirtualList>`.
1292
+
1293
+ Ships no visual styling. Consumers style via:
1294
+ - `[data-pyric-ui="object-browser"]` — the root (stamps `data-size`)
1295
+ - `…[data-pyric-loading]` / `[data-pyric-empty]` / `[data-pyric-error]`
1296
+ - `…[data-pyric-virtualized]` — virtualized mode
1297
+ - `[data-pyric-object-browser-items]` — the `<ul>` in plain mode
1298
+ - `[data-pyric-storage-entry]` — each row
1299
+ - `[data-pyric-storage-entry][data-pyric-entry-kind="folder"|"object"]`
1300
+ - `[data-pyric-storage-entry][data-pyric-entry-path="docs/a.txt"]`
1301
+ - `[data-pyric-storage-entry][data-pyric-denied]` — read-denied row
1302
+ (rules gate; reason on `data-pyric-denied-reason`)
1303
+ - `[data-pyric-entry-select]` — the row button
1304
+ - `[data-pyric-entry-select][data-pyric-selected]` — the selected object
1305
+ - `[data-pyric-storage-action]` — optional sibling row action
1306
+
1307
+ #### Parameters
1308
+
1309
+ | Parameter | Type |
1310
+ | :------ | :------ |
1311
+ | `__namedParameters` | [`ObjectBrowserProps`](#objectbrowserprops) |
1312
+
1313
+ #### Returns
1314
+
1315
+ `Element`
1316
+
1317
+ ***
1318
+
1319
+ <a id="objectinspector"></a>
1320
+
1321
+ ### ObjectInspector()
1322
+
1323
+ ```ts
1324
+ function ObjectInspector(__namedParameters: ObjectInspectorProps): Element;
1325
+ ```
1326
+
1327
+ Headless inspector for one storage object: metadata + a
1328
+ content-type-driven preview. Previews come from the registry
1329
+ (`image/*` and `text/* + application/json` built in; extend via
1330
+ `previews`). Blob bytes load lazily and ONLY when the matched
1331
+ preview asks (`needsBlob`) and the object is within the preview's
1332
+ `maxBytes` cap; the blob URL is revoked on unmount/path change
1333
+ (see `useStorageObject`).
1334
+
1335
+ Ships no visual styling. Consumers style via:
1336
+ - `[data-pyric-ui="object-inspector"]` — root (stamps `data-size`)
1337
+ - `…[data-pyric-idle]` / `[data-pyric-loading]` / `[data-pyric-error]`
1338
+ - `[data-pyric-object-name]` / `[data-pyric-object-metadata]`
1339
+ - `[data-pyric-metadata-field="<field>"]` — each metadata row
1340
+ - `[data-pyric-object-preview]` — the preview container, stamping
1341
+ `data-pyric-preview="<id>"` for the matched registry entry
1342
+ - `…[data-pyric-preview-loading]` — blob in flight
1343
+ - `…[data-pyric-preview-error]` — blob load failed
1344
+ - `…[data-pyric-preview-too-large]` — over the preview's cap
1345
+ - `…[data-pyric-preview-none]` — no registry match (metadata-only)
1346
+
1347
+ #### Parameters
1348
+
1349
+ | Parameter | Type |
1350
+ | :------ | :------ |
1351
+ | `__namedParameters` | [`ObjectInspectorProps`](#objectinspectorprops) |
1352
+
1353
+ #### Returns
1354
+
1355
+ `Element`
1356
+
1357
+ ***
1358
+
1359
+ <a id="parsecopycounter"></a>
1360
+
1361
+ ### parseCopyCounter()
1362
+
1363
+ ```ts
1364
+ function parseCopyCounter(stem: string): {
1365
+ base: string;
1366
+ counter: number;
1367
+ };
1368
+ ```
1369
+
1370
+ Trailing ` (n)` counter: `photo (3)` → base `photo`, counter 3.
1371
+ `counter: null` when the stem carries none. A counter beyond
1372
+ `Number.MAX_SAFE_INTEGER` is treated as plain text (no counter):
1373
+ incrementing it would be lossy — `n + 1 === n` in float land, which
1374
+ turns [resolveCollision](#resolvecollision)'s probe loop into a hang — and the
1375
+ candidate would render in scientific notation anyway.
1376
+
1377
+ #### Parameters
1378
+
1379
+ | Parameter | Type |
1380
+ | :------ | :------ |
1381
+ | `stem` | `string` |
1382
+
1383
+ #### Returns
1384
+
1385
+ ```ts
1386
+ {
1387
+ base: string;
1388
+ counter: number;
1389
+ }
1390
+ ```
1391
+
1392
+ ##### base
1393
+
1394
+ ```ts
1395
+ base: string;
1396
+ ```
1397
+
1398
+ ##### counter
1399
+
1400
+ ```ts
1401
+ counter: number;
1402
+ ```
1403
+
1404
+ ***
1405
+
1406
+ <a id="pathbreadcrumb"></a>
1407
+
1408
+ ### PathBreadcrumb()
1409
+
1410
+ ```ts
1411
+ function PathBreadcrumb(__namedParameters: PathBreadcrumbProps): Element;
1412
+ ```
1413
+
1414
+ Headless breadcrumb for storage paths. Every crumb (including the
1415
+ current one) is a real `<button>` — clicking the current crumb is
1416
+ a cheap "refresh this level" affordance for consumers that wire
1417
+ `onNavigate` to a path-keyed loader.
1418
+
1419
+ Ships no visual styling. Consumers style via:
1420
+ - `[data-pyric-ui="path-breadcrumb"]` — the `<nav>` root
1421
+ - `[data-pyric-breadcrumb-item]` — each `<li>`
1422
+ - `[data-pyric-breadcrumb-link]` — each crumb button
1423
+ - `[data-pyric-breadcrumb-link][data-pyric-current]` — the current level
1424
+ - `[data-pyric-breadcrumb-root]` — the root crumb's button
1425
+ - `[data-pyric-breadcrumb-separator]` — the separators
1426
+
1427
+ #### Parameters
1428
+
1429
+ | Parameter | Type |
1430
+ | :------ | :------ |
1431
+ | `__namedParameters` | [`PathBreadcrumbProps`](#pathbreadcrumbprops) |
1432
+
1433
+ #### Returns
1434
+
1435
+ `Element`
1436
+
1437
+ ***
1438
+
1439
+ <a id="pendingchildfolders"></a>
1440
+
1441
+ ### pendingChildFolders()
1442
+
1443
+ ```ts
1444
+ function pendingChildFolders(state: PendingPrefixState, parentPath: string): string[];
1445
+ ```
1446
+
1447
+ Direct-child folder NAMES pending under `parentPath` (`''` = root),
1448
+ sorted. The chain expansion guarantees every level is present, so a
1449
+ simple parent match is exact.
1450
+
1451
+ #### Parameters
1452
+
1453
+ | Parameter | Type |
1454
+ | :------ | :------ |
1455
+ | `state` | [`PendingPrefixState`](#pendingprefixstate) |
1456
+ | `parentPath` | `string` |
1457
+
1458
+ #### Returns
1459
+
1460
+ `string`[]
1461
+
1462
+ ***
1463
+
1464
+ <a id="pendingprefixreducer"></a>
1465
+
1466
+ ### pendingPrefixReducer()
1467
+
1468
+ ```ts
1469
+ function pendingPrefixReducer(state: PendingPrefixState, action: PendingPrefixAction): PendingPrefixState;
1470
+ ```
1471
+
1472
+ #### Parameters
1473
+
1474
+ | Parameter | Type |
1475
+ | :------ | :------ |
1476
+ | `state` | [`PendingPrefixState`](#pendingprefixstate) |
1477
+ | `action` | [`PendingPrefixAction`](#pendingprefixaction) |
1478
+
1479
+ #### Returns
1480
+
1481
+ [`PendingPrefixState`](#pendingprefixstate)
1482
+
1483
+ ***
1484
+
1485
+ <a id="planbatchnames"></a>
1486
+
1487
+ ### planBatchNames()
1488
+
1489
+ ```ts
1490
+ function planBatchNames(relativePaths: readonly string[], taken: ReadonlySet<string>): string[];
1491
+ ```
1492
+
1493
+ Resolve a whole drop/pick batch against the destination folder's
1494
+ existing names, with OS drop semantics: collisions are detected and
1495
+ renamed at the batch's TOP LEVEL only (the names the OS drop
1496
+ "creates" in the destination — a plain file's name, or a dropped
1497
+ folder's root segment). Files inside a dropped folder ride their
1498
+ folder's rename and keep their inner structure untouched — exactly
1499
+ like dropping `photos/` next to an existing `photos/` yields
1500
+ `photos (1)/…` with the contents intact.
1501
+
1502
+ Within one batch:
1503
+ - all paths sharing a top-level FOLDER segment share its resolution
1504
+ (one dropped folder = one rename), and
1505
+ - top-level FILES resolve individually in order, each claiming its
1506
+ resolved name, so two same-named files in one batch get successive
1507
+ counters.
1508
+
1509
+ Only the destination's DIRECT children can be checked — that is all
1510
+ the drop target (one `listAll` level) knows. Deeper paths follow GCS
1511
+ overwrite semantics, which the folder-level rename already shields
1512
+ in practice (a colliding folder is renamed wholesale).
1513
+
1514
+ Returns resolved paths in input order.
1515
+
1516
+ #### Parameters
1517
+
1518
+ | Parameter | Type |
1519
+ | :------ | :------ |
1520
+ | `relativePaths` | readonly `string`[] |
1521
+ | `taken` | `ReadonlySet`\<`string`\> |
1522
+
1523
+ #### Returns
1524
+
1525
+ `string`[]
1526
+
1527
+ ***
1528
+
1529
+ <a id="resolvecollision"></a>
1530
+
1531
+ ### resolveCollision()
1532
+
1533
+ ```ts
1534
+ function resolveCollision(name: string, taken: ReadonlySet<string>): string;
1535
+ ```
1536
+
1537
+ Resolve one name against a set of taken sibling names. Returns the
1538
+ name unchanged when free; otherwise the first ` (n)` candidate that
1539
+ is free, per the module rule above.
1540
+
1541
+ #### Parameters
1542
+
1543
+ | Parameter | Type |
1544
+ | :------ | :------ |
1545
+ | `name` | `string` |
1546
+ | `taken` | `ReadonlySet`\<`string`\> |
1547
+
1548
+ #### Returns
1549
+
1550
+ `string`
1551
+
1552
+ ***
1553
+
1554
+ <a id="selectstoragepreview"></a>
1555
+
1556
+ ### selectStoragePreview()
1557
+
1558
+ ```ts
1559
+ function selectStoragePreview(metadata: FullMetadata, consumerPreviews: readonly StoragePreview[]): StoragePreview;
1560
+ ```
1561
+
1562
+ Pick the preview for `metadata`: consumer previews first (override
1563
+ channel), then the built-ins, first `match` wins. `undefined`
1564
+ means metadata-only.
1565
+
1566
+ #### Parameters
1567
+
1568
+ | Parameter | Type |
1569
+ | :------ | :------ |
1570
+ | `metadata` | `FullMetadata` |
1571
+ | `consumerPreviews` | readonly [`StoragePreview`](#storagepreview)[] |
1572
+
1573
+ #### Returns
1574
+
1575
+ [`StoragePreview`](#storagepreview)
1576
+
1577
+ ***
1578
+
1579
+ <a id="splitstoragename"></a>
1580
+
1581
+ ### splitStorageName()
1582
+
1583
+ ```ts
1584
+ function splitStorageName(name: string): {
1585
+ ext: string;
1586
+ stem: string;
1587
+ };
1588
+ ```
1589
+
1590
+ `name` split as the rule defines: `ext` includes the leading dot,
1591
+ or is `''` when the name has no extension (dotfiles, trailing dots,
1592
+ extensionless names).
1593
+
1594
+ #### Parameters
1595
+
1596
+ | Parameter | Type |
1597
+ | :------ | :------ |
1598
+ | `name` | `string` |
1599
+
1600
+ #### Returns
1601
+
1602
+ ```ts
1603
+ {
1604
+ ext: string;
1605
+ stem: string;
1606
+ }
1607
+ ```
1608
+
1609
+ ##### ext
1610
+
1611
+ ```ts
1612
+ ext: string;
1613
+ ```
1614
+
1615
+ ##### stem
1616
+
1617
+ ```ts
1618
+ stem: string;
1619
+ ```
1620
+
1621
+ ***
1622
+
1623
+ <a id="storageapiprovider"></a>
1624
+
1625
+ ### StorageApiProvider()
1626
+
1627
+ ```ts
1628
+ function StorageApiProvider(__namedParameters: {
1629
+ children: ReactNode;
1630
+ value: StorageApi;
1631
+ }): FunctionComponentElement<ProviderProps<StorageApi>>;
1632
+ ```
1633
+
1634
+ Provide a Storage API bundle to the subtree (Studio's worker client).
1635
+
1636
+ #### Parameters
1637
+
1638
+ | Parameter | Type |
1639
+ | :------ | :------ |
1640
+ | `__namedParameters` | \{ `children`: `ReactNode`; `value`: [`StorageApi`](#storageapi); \} |
1641
+ | `__namedParameters.children` | `ReactNode` |
1642
+ | `__namedParameters.value` | [`StorageApi`](#storageapi) |
1643
+
1644
+ #### Returns
1645
+
1646
+ `FunctionComponentElement`\<`ProviderProps`\<[`StorageApi`](#storageapi)\>\>
1647
+
1648
+ ***
1649
+
1650
+ <a id="uploaddropzone"></a>
1651
+
1652
+ ### UploadDropzone()
1653
+
1654
+ ```ts
1655
+ function UploadDropzone(__namedParameters: UploadDropzoneProps): Element;
1656
+ ```
1657
+
1658
+ Headless drop target for file + folder uploads. Slot-based: the
1659
+ children render the chrome; the component owns drag wiring and
1660
+ stamps `data-dragging` while a drag hovers (a counter tracks
1661
+ enter/leave pairs so crossing child elements doesn't flicker).
1662
+
1663
+ Ships no visual styling. Consumers style via:
1664
+ - `[data-pyric-ui="upload-dropzone"]` — the root
1665
+ - `…[data-dragging]` — a drag is hovering
1666
+ - `…[data-disabled]`
1667
+ - `…[data-disabled-reason="…"]` — why (e.g. a denied write verdict)
1668
+
1669
+ #### Parameters
1670
+
1671
+ | Parameter | Type |
1672
+ | :------ | :------ |
1673
+ | `__namedParameters` | [`UploadDropzoneProps`](#uploaddropzoneprops) |
1674
+
1675
+ #### Returns
1676
+
1677
+ `Element`
1678
+
1679
+ ***
1680
+
1681
+ <a id="usemetadataeditor"></a>
1682
+
1683
+ ### useMetadataEditor()
1684
+
1685
+ ```ts
1686
+ function useMetadataEditor(
1687
+ storage: any,
1688
+ path: string,
1689
+ options?: UseMetadataEditorOptions): UseMetadataEditorResult;
1690
+ ```
1691
+
1692
+ Headless metadata editor — the `useDocumentEditor` reducer pattern
1693
+ over `updateMetadata`: a pure reducer owns the draft (contentType,
1694
+ cacheControl, customMetadata k/v rows with stable ids +
1695
+ empty/duplicate-key validation); the hook adds named dispatch
1696
+ helpers and the save half.
1697
+
1698
+ #### Parameters
1699
+
1700
+ | Parameter | Type |
1701
+ | :------ | :------ |
1702
+ | `storage` | `any` |
1703
+ | `path` | `string` |
1704
+ | `options?` | [`UseMetadataEditorOptions`](#usemetadataeditoroptions) |
1705
+
1706
+ #### Returns
1707
+
1708
+ [`UseMetadataEditorResult`](#usemetadataeditorresult)
1709
+
1710
+ ***
1711
+
1712
+ <a id="useobjectupload"></a>
1713
+
1714
+ ### useObjectUpload()
1715
+
1716
+ ```ts
1717
+ function useObjectUpload(storage: any, options?: UseObjectUploadOptions): UseObjectUploadResult;
1718
+ ```
1719
+
1720
+ Multi-file upload over the package's single Storage handle prop.
1721
+ Headless: returns task state; render it however you like (the
1722
+ `<UploadDropzone>` component is one producer of `upload()` calls).
1723
+
1724
+ Optimistic-with-rollback: with the `list` seam wired, each upload's
1725
+ row appears in `useStorageList` immediately and disappears again if
1726
+ the write fails (typed `StorageError` on `task.error`).
1727
+
1728
+ #### Parameters
1729
+
1730
+ | Parameter | Type |
1731
+ | :------ | :------ |
1732
+ | `storage` | `any` |
1733
+ | `options?` | [`UseObjectUploadOptions`](#useobjectuploadoptions) |
1734
+
1735
+ #### Returns
1736
+
1737
+ [`UseObjectUploadResult`](#useobjectuploadresult)
1738
+
1739
+ ***
1740
+
1741
+ <a id="usepathstate"></a>
1742
+
1743
+ ### usePathState()
1744
+
1745
+ ```ts
1746
+ function usePathState(options?: UsePathStateOptions): UsePathStateResult;
1747
+ ```
1748
+
1749
+ Path navigation state for the storage browser. Controlled when
1750
+ `path` is provided (the owner re-renders with the next value),
1751
+ uncontrolled otherwise — standard React value/defaultValue
1752
+ semantics. All emitted paths are normalized (`normalizeStoragePath`).
1753
+
1754
+ #### Parameters
1755
+
1756
+ | Parameter | Type |
1757
+ | :------ | :------ |
1758
+ | `options?` | [`UsePathStateOptions`](#usepathstateoptions) |
1759
+
1760
+ #### Returns
1761
+
1762
+ [`UsePathStateResult`](#usepathstateresult)
1763
+
1764
+ ***
1765
+
1766
+ <a id="usestorageapi"></a>
1767
+
1768
+ ### useStorageApi()
1769
+
1770
+ ```ts
1771
+ function useStorageApi(): StorageApi;
1772
+ ```
1773
+
1774
+ Read the active Storage API bundle (defaults to in-process `pyric/storage`).
1775
+
1776
+ #### Returns
1777
+
1778
+ [`StorageApi`](#storageapi)
1779
+
1780
+ ***
1781
+
1782
+ <a id="usestoragedelete"></a>
1783
+
1784
+ ### useStorageDelete()
1785
+
1786
+ ```ts
1787
+ function useStorageDelete(storage: any, options?: UseStorageDeleteOptions): UseStorageDeleteResult;
1788
+ ```
1789
+
1790
+ Drive bulk + recursive deletes from a React component — the
1791
+ storage counterpart of `useRecursiveDelete` (same progress /
1792
+ isRunning / error shape, same stale-run generation token), bulk
1793
+ because storage selections are flat multi-row affairs.
1794
+
1795
+ #### Parameters
1796
+
1797
+ | Parameter | Type |
1798
+ | :------ | :------ |
1799
+ | `storage` | `any` |
1800
+ | `options?` | [`UseStorageDeleteOptions`](#usestoragedeleteoptions) |
1801
+
1802
+ #### Returns
1803
+
1804
+ [`UseStorageDeleteResult`](#usestoragedeleteresult)
1805
+
1806
+ ***
1807
+
1808
+ <a id="usestoragelist"></a>
1809
+
1810
+ ### useStorageList()
1811
+
1812
+ ```ts
1813
+ function useStorageList(storage: any, path: string): UseStorageListResult;
1814
+ ```
1815
+
1816
+ List the objects + synthetic folders directly under `path` :
1817
+ `listAll` over the package's sandbox Storage handle. Read-via-get,
1818
+ not realtime: the list updates on `refresh`, path change, or the
1819
+ optimistic seam. Pass `''` (or the result of `usePathState`) for
1820
+ the bucket root.
1821
+
1822
+ `listAll` has no pagination; a very large prefix arrives as one flat
1823
+ result (virtualize the rendering, which `<ObjectBrowser>` does).
1824
+
1825
+ #### Parameters
1826
+
1827
+ | Parameter | Type |
1828
+ | :------ | :------ |
1829
+ | `storage` | `any` |
1830
+ | `path` | `string` |
1831
+
1832
+ #### Returns
1833
+
1834
+ [`UseStorageListResult`](#usestoragelistresult)
1835
+
1836
+ ***
1837
+
1838
+ <a id="usestorageobject"></a>
1839
+
1840
+ ### useStorageObject()
1841
+
1842
+ ```ts
1843
+ function useStorageObject(storage: any, path: string): UseStorageObjectResult;
1844
+ ```
1845
+
1846
+ One object's metadata + lazily-loaded bytes, the data source for
1847
+ `<ObjectInspector>`. Read-via-get like the rest of the storage
1848
+ half: updates on `refresh`, `path` change, or `loadBlob`.
1849
+
1850
+ #### Parameters
1851
+
1852
+ | Parameter | Type |
1853
+ | :------ | :------ |
1854
+ | `storage` | `any` |
1855
+ | `path` | `string` |
1856
+
1857
+ #### Returns
1858
+
1859
+ [`UseStorageObjectResult`](#usestorageobjectresult)
1860
+
1861
+ ***
1862
+
1863
+ <a id="usestoragerulesgate"></a>
1864
+
1865
+ ### useStorageRulesGate()
1866
+
1867
+ ```ts
1868
+ function useStorageRulesGate(storage: any, options?: UseStorageRulesGateOptions): UseStorageRulesGateResult;
1869
+ ```
1870
+
1871
+ Pre-flight rules evaluation — the M7 differentiator. Evaluates the
1872
+ current identity against paths BEFORE the click, so components can
1873
+ annotate denied affordances (`data-pyric-denied`, disabled-with-
1874
+ reason) instead of letting the user discover a denial via a thrown
1875
+ `storage/unauthorized`.
1876
+
1877
+ Rules discovery: a sandbox handle carries its deployed ruleset
1878
+ (`getStorageSandbox(ctx, { rules })` parses it into the handle's
1879
+ `StorageService`) — the hook reads it through the handle's target,
1880
+ so sandbox callers pass nothing. Identity likewise defaults to the
1881
+ handle's `SandboxContext.auth`. An explicit `rules` or `identity`
1882
+ option overrides the handle when evaluating a what-if scenario.
1883
+
1884
+ Evaluation contract (mirrors `pyric/storage`'s own enforcement):
1885
+ `resource` (the existing object) is bound as `null` — the gate
1886
+ pre-evaluates without fetching per-path metadata, matching how the
1887
+ sandbox enforces `listAll`. Rules conditioned on existing-object
1888
+ state (`resource.*`) evaluate as if the object doesn't exist; the
1889
+ common identity/path/payload-shaped rules evaluate exactly.
1890
+
1891
+ #### Parameters
1892
+
1893
+ | Parameter | Type |
1894
+ | :------ | :------ |
1895
+ | `storage` | `any` |
1896
+ | `options?` | [`UseStorageRulesGateOptions`](#usestoragerulesgateoptions) |
1897
+
1898
+ #### Returns
1899
+
1900
+ [`UseStorageRulesGateResult`](#usestoragerulesgateresult)
1901
+
1902
+ ***
1903
+
1904
+ <a id="usestorageselection"></a>
1905
+
1906
+ ### useStorageSelection()
1907
+
1908
+ ```ts
1909
+ function useStorageSelection(): UseStorageSelectionResult;
1910
+ ```
1911
+
1912
+ Multi-select state over storage rows, keyed by `fullPath`.
1913
+ Deliberately dumb: it doesn't watch the list, so clear it on path
1914
+ change (or after a bulk op via the delete hook's outcome) — the
1915
+ consumer owns that policy.
1916
+
1917
+ #### Returns
1918
+
1919
+ [`UseStorageSelectionResult`](#usestorageselectionresult)