@raybase/core 0.0.2 → 0.3.3

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 (435) hide show
  1. package/LICENSE +21 -0
  2. package/dist/.admin-build/AdminApp.css +2 -0
  3. package/dist/.admin-build/AdminApp.js +77 -0
  4. package/dist/.admin-docs-build/AdminDocsApp.css +2 -0
  5. package/dist/.admin-docs-build/AdminDocsApp.js +45 -0
  6. package/dist/actions.d.ts +347 -0
  7. package/dist/actions.d.ts.map +1 -0
  8. package/dist/actions.js +661 -0
  9. package/dist/actions.js.map +1 -0
  10. package/dist/admin-assets/admin.7738f50720a8ed7b.css +2 -0
  11. package/dist/admin-assets/admin.8678cb61db34dc81.js +77 -0
  12. package/dist/admin-boot.d.ts +94 -0
  13. package/dist/admin-boot.d.ts.map +1 -0
  14. package/dist/admin-boot.js +139 -0
  15. package/dist/admin-boot.js.map +1 -0
  16. package/dist/admin-docs-content.d.ts +95 -0
  17. package/dist/admin-docs-content.d.ts.map +1 -0
  18. package/dist/admin-docs-content.js +463 -0
  19. package/dist/admin-docs-content.js.map +1 -0
  20. package/dist/admin-docs-ui.d.ts +11 -0
  21. package/dist/admin-docs-ui.d.ts.map +1 -0
  22. package/dist/admin-docs-ui.js +23 -0
  23. package/dist/admin-docs-ui.js.map +1 -0
  24. package/dist/admin-kit.d.ts +29 -0
  25. package/dist/admin-kit.js +1557 -0
  26. package/dist/admin-role.d.ts +8 -0
  27. package/dist/admin-role.d.ts.map +1 -0
  28. package/dist/admin-role.js +22 -0
  29. package/dist/admin-role.js.map +1 -0
  30. package/dist/admin-ui.d.ts +3 -0
  31. package/dist/admin-ui.d.ts.map +1 -0
  32. package/dist/admin-ui.js +16 -0
  33. package/dist/admin-ui.js.map +1 -0
  34. package/dist/agent-ai-chat.d.ts +127 -0
  35. package/dist/agent-ai-chat.d.ts.map +1 -0
  36. package/dist/agent-ai-chat.js +5975 -0
  37. package/dist/agent-ai-chat.js.map +1 -0
  38. package/dist/agent-chapter-archive.d.ts +214 -0
  39. package/dist/agent-chapter-archive.d.ts.map +1 -0
  40. package/dist/agent-chapter-archive.js +696 -0
  41. package/dist/agent-chapter-archive.js.map +1 -0
  42. package/dist/agent-chapter-search.d.ts +116 -0
  43. package/dist/agent-chapter-search.d.ts.map +1 -0
  44. package/dist/agent-chapter-search.js +605 -0
  45. package/dist/agent-chapter-search.js.map +1 -0
  46. package/dist/agent-chapter-tools.d.ts +45 -0
  47. package/dist/agent-chapter-tools.d.ts.map +1 -0
  48. package/dist/agent-chapter-tools.js +344 -0
  49. package/dist/agent-chapter-tools.js.map +1 -0
  50. package/dist/agent-chapters.d.ts +228 -0
  51. package/dist/agent-chapters.d.ts.map +1 -0
  52. package/dist/agent-chapters.js +737 -0
  53. package/dist/agent-chapters.js.map +1 -0
  54. package/dist/agent-data-parts.d.ts +167 -0
  55. package/dist/agent-data-parts.d.ts.map +1 -0
  56. package/dist/agent-data-parts.js +68 -0
  57. package/dist/agent-data-parts.js.map +1 -0
  58. package/dist/agent-errors.d.ts +41 -0
  59. package/dist/agent-errors.d.ts.map +1 -0
  60. package/dist/agent-errors.js +191 -0
  61. package/dist/agent-errors.js.map +1 -0
  62. package/dist/agent-follow-up-store.d.ts +273 -0
  63. package/dist/agent-follow-up-store.d.ts.map +1 -0
  64. package/dist/agent-follow-up-store.js +703 -0
  65. package/dist/agent-follow-up-store.js.map +1 -0
  66. package/dist/agent-follow-ups.d.ts +314 -0
  67. package/dist/agent-follow-ups.d.ts.map +1 -0
  68. package/dist/agent-follow-ups.js +840 -0
  69. package/dist/agent-follow-ups.js.map +1 -0
  70. package/dist/agent-memory.d.ts +323 -0
  71. package/dist/agent-memory.d.ts.map +1 -0
  72. package/dist/agent-memory.js +1270 -0
  73. package/dist/agent-memory.js.map +1 -0
  74. package/dist/agent-message-parts.d.ts +58 -0
  75. package/dist/agent-message-parts.d.ts.map +1 -0
  76. package/dist/agent-message-parts.js +163 -0
  77. package/dist/agent-message-parts.js.map +1 -0
  78. package/dist/agent-remote-mcp-credentials.d.ts +154 -0
  79. package/dist/agent-remote-mcp-credentials.d.ts.map +1 -0
  80. package/dist/agent-remote-mcp-credentials.js +287 -0
  81. package/dist/agent-remote-mcp-credentials.js.map +1 -0
  82. package/dist/agent-remote-mcp-crypto.d.ts +32 -0
  83. package/dist/agent-remote-mcp-crypto.d.ts.map +1 -0
  84. package/dist/agent-remote-mcp-crypto.js +101 -0
  85. package/dist/agent-remote-mcp-crypto.js.map +1 -0
  86. package/dist/agent-remote-mcp-install.d.ts +299 -0
  87. package/dist/agent-remote-mcp-install.d.ts.map +1 -0
  88. package/dist/agent-remote-mcp-install.js +785 -0
  89. package/dist/agent-remote-mcp-install.js.map +1 -0
  90. package/dist/agent-remote-mcp-oauth.d.ts +73 -0
  91. package/dist/agent-remote-mcp-oauth.d.ts.map +1 -0
  92. package/dist/agent-remote-mcp-oauth.js +344 -0
  93. package/dist/agent-remote-mcp-oauth.js.map +1 -0
  94. package/dist/agent-remote-mcp-transport.d.ts +46 -0
  95. package/dist/agent-remote-mcp-transport.d.ts.map +1 -0
  96. package/dist/agent-remote-mcp-transport.js +225 -0
  97. package/dist/agent-remote-mcp-transport.js.map +1 -0
  98. package/dist/agent-remote-mcp.d.ts +147 -0
  99. package/dist/agent-remote-mcp.d.ts.map +1 -0
  100. package/dist/agent-remote-mcp.js +681 -0
  101. package/dist/agent-remote-mcp.js.map +1 -0
  102. package/dist/agent-room-redaction.d.ts +66 -0
  103. package/dist/agent-room-redaction.d.ts.map +1 -0
  104. package/dist/agent-room-redaction.js +264 -0
  105. package/dist/agent-room-redaction.js.map +1 -0
  106. package/dist/agent-rooms.d.ts +209 -0
  107. package/dist/agent-rooms.d.ts.map +1 -0
  108. package/dist/agent-rooms.js +244 -0
  109. package/dist/agent-rooms.js.map +1 -0
  110. package/dist/agent-runtime.d.ts +541 -0
  111. package/dist/agent-runtime.d.ts.map +1 -0
  112. package/dist/agent-runtime.js +4260 -0
  113. package/dist/agent-runtime.js.map +1 -0
  114. package/dist/agent-skill-archive.d.ts +20 -0
  115. package/dist/agent-skill-archive.d.ts.map +1 -0
  116. package/dist/agent-skill-archive.js +316 -0
  117. package/dist/agent-skill-archive.js.map +1 -0
  118. package/dist/agent-skill-discovery.d.ts +96 -0
  119. package/dist/agent-skill-discovery.d.ts.map +1 -0
  120. package/dist/agent-skill-discovery.js +464 -0
  121. package/dist/agent-skill-discovery.js.map +1 -0
  122. package/dist/agent-skill-format.d.ts +57 -0
  123. package/dist/agent-skill-format.d.ts.map +1 -0
  124. package/dist/agent-skill-format.js +238 -0
  125. package/dist/agent-skill-format.js.map +1 -0
  126. package/dist/agent-skill-import.d.ts +64 -0
  127. package/dist/agent-skill-import.d.ts.map +1 -0
  128. package/dist/agent-skill-import.js +295 -0
  129. package/dist/agent-skill-import.js.map +1 -0
  130. package/dist/agent-skill-publish.d.ts +51 -0
  131. package/dist/agent-skill-publish.d.ts.map +1 -0
  132. package/dist/agent-skill-publish.js +136 -0
  133. package/dist/agent-skill-publish.js.map +1 -0
  134. package/dist/agent-skill-store.d.ts +252 -0
  135. package/dist/agent-skill-store.d.ts.map +1 -0
  136. package/dist/agent-skill-store.js +514 -0
  137. package/dist/agent-skill-store.js.map +1 -0
  138. package/dist/agent-skills.d.ts +85 -0
  139. package/dist/agent-skills.d.ts.map +1 -0
  140. package/dist/agent-skills.js +291 -0
  141. package/dist/agent-skills.js.map +1 -0
  142. package/dist/agent-transcript-pager.d.ts +77 -0
  143. package/dist/agent-transcript-pager.d.ts.map +1 -0
  144. package/dist/agent-transcript-pager.js +210 -0
  145. package/dist/agent-transcript-pager.js.map +1 -0
  146. package/dist/agent-user-data-parts.d.ts +20 -0
  147. package/dist/agent-user-data-parts.d.ts.map +1 -0
  148. package/dist/agent-user-data-parts.js +161 -0
  149. package/dist/agent-user-data-parts.js.map +1 -0
  150. package/dist/agent-user-transcript.d.ts +46 -0
  151. package/dist/agent-user-transcript.d.ts.map +1 -0
  152. package/dist/agent-user-transcript.js +106 -0
  153. package/dist/agent-user-transcript.js.map +1 -0
  154. package/dist/agent-voice-notes.d.ts +15 -0
  155. package/dist/agent-voice-notes.d.ts.map +1 -0
  156. package/dist/agent-voice-notes.js +17 -0
  157. package/dist/agent-voice-notes.js.map +1 -0
  158. package/dist/agent-wakes.d.ts +213 -0
  159. package/dist/agent-wakes.d.ts.map +1 -0
  160. package/dist/agent-wakes.js +534 -0
  161. package/dist/agent-wakes.js.map +1 -0
  162. package/dist/agent.d.ts +1780 -0
  163. package/dist/agent.d.ts.map +1 -0
  164. package/dist/agent.js +3123 -0
  165. package/dist/agent.js.map +1 -0
  166. package/dist/ai.d.ts +583 -0
  167. package/dist/ai.d.ts.map +1 -0
  168. package/dist/ai.js +1858 -0
  169. package/dist/ai.js.map +1 -0
  170. package/dist/app-manifest.d.ts +255 -0
  171. package/dist/app-manifest.d.ts.map +1 -0
  172. package/dist/app-manifest.js +372 -0
  173. package/dist/app-manifest.js.map +1 -0
  174. package/dist/app-users.d.ts +30 -0
  175. package/dist/app-users.d.ts.map +1 -0
  176. package/dist/app-users.js +91 -0
  177. package/dist/app-users.js.map +1 -0
  178. package/dist/audit-archive.d.ts +85 -0
  179. package/dist/audit-archive.d.ts.map +1 -0
  180. package/dist/audit-archive.js +178 -0
  181. package/dist/audit-archive.js.map +1 -0
  182. package/dist/audit.d.ts +54 -0
  183. package/dist/audit.d.ts.map +1 -0
  184. package/dist/audit.js +95 -0
  185. package/dist/audit.js.map +1 -0
  186. package/dist/auth-logger.d.ts +28 -0
  187. package/dist/auth-logger.d.ts.map +1 -0
  188. package/dist/auth-logger.js +53 -0
  189. package/dist/auth-logger.js.map +1 -0
  190. package/dist/auth-password-secret.d.ts +59 -0
  191. package/dist/auth-password-secret.d.ts.map +1 -0
  192. package/dist/auth-password-secret.js +409 -0
  193. package/dist/auth-password-secret.js.map +1 -0
  194. package/dist/auth-schema.d.ts +120 -0
  195. package/dist/auth-schema.d.ts.map +1 -0
  196. package/dist/auth-schema.js +285 -0
  197. package/dist/auth-schema.js.map +1 -0
  198. package/dist/auth.d.ts +321 -0
  199. package/dist/auth.d.ts.map +1 -0
  200. package/dist/auth.js +1562 -0
  201. package/dist/auth.js.map +1 -0
  202. package/dist/backup-archive.d.ts +257 -0
  203. package/dist/backup-archive.d.ts.map +1 -0
  204. package/dist/backup-archive.js +2068 -0
  205. package/dist/backup-archive.js.map +1 -0
  206. package/dist/backup-crypto.d.ts +313 -0
  207. package/dist/backup-crypto.d.ts.map +1 -0
  208. package/dist/backup-crypto.js +693 -0
  209. package/dist/backup-crypto.js.map +1 -0
  210. package/dist/backup-format.d.ts +200 -0
  211. package/dist/backup-format.d.ts.map +1 -0
  212. package/dist/backup-format.js +1247 -0
  213. package/dist/backup-format.js.map +1 -0
  214. package/dist/cli.d.ts +9 -0
  215. package/dist/cli.d.ts.map +1 -0
  216. package/dist/cli.js +15 -0
  217. package/dist/cli.js.map +1 -0
  218. package/dist/clock.d.ts +35 -0
  219. package/dist/clock.d.ts.map +1 -0
  220. package/dist/clock.js +83 -0
  221. package/dist/clock.js.map +1 -0
  222. package/dist/data-client.d.ts +187 -0
  223. package/dist/data-client.d.ts.map +1 -0
  224. package/dist/data-client.js +590 -0
  225. package/dist/data-client.js.map +1 -0
  226. package/dist/data-secrets.d.ts +164 -0
  227. package/dist/data-secrets.d.ts.map +1 -0
  228. package/dist/data-secrets.js +383 -0
  229. package/dist/data-secrets.js.map +1 -0
  230. package/dist/db.d.ts +453 -0
  231. package/dist/db.d.ts.map +1 -0
  232. package/dist/db.js +324 -0
  233. package/dist/db.js.map +1 -0
  234. package/dist/dev-activity.d.ts +48 -0
  235. package/dist/dev-activity.d.ts.map +1 -0
  236. package/dist/dev-activity.js +50 -0
  237. package/dist/dev-activity.js.map +1 -0
  238. package/dist/do.d.ts +429 -0
  239. package/dist/do.d.ts.map +1 -0
  240. package/dist/do.js +4526 -0
  241. package/dist/do.js.map +1 -0
  242. package/dist/email.d.ts +137 -0
  243. package/dist/email.d.ts.map +1 -0
  244. package/dist/email.js +527 -0
  245. package/dist/email.js.map +1 -0
  246. package/dist/generated/admin-assets.d.ts +16 -0
  247. package/dist/generated/admin-assets.d.ts.map +1 -0
  248. package/dist/generated/admin-assets.js +16 -0
  249. package/dist/generated/admin-assets.js.map +1 -0
  250. package/dist/generated/admin-docs-assets.d.ts +3 -0
  251. package/dist/generated/admin-docs-assets.d.ts.map +1 -0
  252. package/dist/generated/admin-docs-assets.js +3 -0
  253. package/dist/generated/admin-docs-assets.js.map +1 -0
  254. package/dist/handoff-consumer.d.ts +79 -0
  255. package/dist/handoff-consumer.d.ts.map +1 -0
  256. package/dist/handoff-consumer.js +300 -0
  257. package/dist/handoff-consumer.js.map +1 -0
  258. package/dist/handoff.d.ts +70 -0
  259. package/dist/handoff.d.ts.map +1 -0
  260. package/dist/handoff.js +228 -0
  261. package/dist/handoff.js.map +1 -0
  262. package/dist/host-auth.d.ts +47 -0
  263. package/dist/host-auth.d.ts.map +1 -0
  264. package/dist/host-auth.js +59 -0
  265. package/dist/host-auth.js.map +1 -0
  266. package/dist/host-user.d.ts +15 -0
  267. package/dist/host-user.d.ts.map +1 -0
  268. package/dist/host-user.js +23 -0
  269. package/dist/host-user.js.map +1 -0
  270. package/dist/html.d.ts +35 -0
  271. package/dist/html.d.ts.map +1 -0
  272. package/dist/html.js +634 -0
  273. package/dist/html.js.map +1 -0
  274. package/dist/http-error.d.ts +13 -0
  275. package/dist/http-error.d.ts.map +1 -0
  276. package/dist/http-error.js +15 -0
  277. package/dist/http-error.js.map +1 -0
  278. package/dist/imports.d.ts +219 -0
  279. package/dist/imports.d.ts.map +1 -0
  280. package/dist/imports.js +571 -0
  281. package/dist/imports.js.map +1 -0
  282. package/dist/index.d.ts +78 -0
  283. package/dist/index.d.ts.map +1 -0
  284. package/dist/index.js +76 -0
  285. package/dist/index.js.map +1 -0
  286. package/dist/inference-tape.d.ts +64 -0
  287. package/dist/inference-tape.d.ts.map +1 -0
  288. package/dist/inference-tape.js +278 -0
  289. package/dist/inference-tape.js.map +1 -0
  290. package/dist/internal.d.ts +15 -0
  291. package/dist/internal.d.ts.map +1 -0
  292. package/dist/internal.js +48 -0
  293. package/dist/internal.js.map +1 -0
  294. package/dist/jobs.d.ts +796 -0
  295. package/dist/jobs.d.ts.map +1 -0
  296. package/dist/jobs.js +538 -0
  297. package/dist/jobs.js.map +1 -0
  298. package/dist/json-schema.d.ts +91 -0
  299. package/dist/json-schema.d.ts.map +1 -0
  300. package/dist/json-schema.js +884 -0
  301. package/dist/json-schema.js.map +1 -0
  302. package/dist/knowledge.d.ts +33 -0
  303. package/dist/knowledge.d.ts.map +1 -0
  304. package/dist/knowledge.js +348 -0
  305. package/dist/knowledge.js.map +1 -0
  306. package/dist/local-dev-chrome.d.ts +29 -0
  307. package/dist/local-dev-chrome.d.ts.map +1 -0
  308. package/dist/local-dev-chrome.js +514 -0
  309. package/dist/local-dev-chrome.js.map +1 -0
  310. package/dist/local-dev-personas.d.ts +15 -0
  311. package/dist/local-dev-personas.d.ts.map +1 -0
  312. package/dist/local-dev-personas.js +46 -0
  313. package/dist/local-dev-personas.js.map +1 -0
  314. package/dist/mcp.d.ts +567 -0
  315. package/dist/mcp.d.ts.map +1 -0
  316. package/dist/mcp.js +2480 -0
  317. package/dist/mcp.js.map +1 -0
  318. package/dist/modules.d.ts +145 -0
  319. package/dist/modules.d.ts.map +1 -0
  320. package/dist/modules.js +164 -0
  321. package/dist/modules.js.map +1 -0
  322. package/dist/notification-client.d.ts +94 -0
  323. package/dist/notification-client.d.ts.map +1 -0
  324. package/dist/notification-client.js +127 -0
  325. package/dist/notification-client.js.map +1 -0
  326. package/dist/notifications.d.ts +447 -0
  327. package/dist/notifications.d.ts.map +1 -0
  328. package/dist/notifications.js +1625 -0
  329. package/dist/notifications.js.map +1 -0
  330. package/dist/operator-data-query.d.ts +117 -0
  331. package/dist/operator-data-query.d.ts.map +1 -0
  332. package/dist/operator-data-query.js +431 -0
  333. package/dist/operator-data-query.js.map +1 -0
  334. package/dist/operator-mcp.d.ts +63 -0
  335. package/dist/operator-mcp.d.ts.map +1 -0
  336. package/dist/operator-mcp.js +2828 -0
  337. package/dist/operator-mcp.js.map +1 -0
  338. package/dist/outbound-https.d.ts +24 -0
  339. package/dist/outbound-https.d.ts.map +1 -0
  340. package/dist/outbound-https.js +172 -0
  341. package/dist/outbound-https.js.map +1 -0
  342. package/dist/pitr.d.ts +60 -0
  343. package/dist/pitr.d.ts.map +1 -0
  344. package/dist/pitr.js +94 -0
  345. package/dist/pitr.js.map +1 -0
  346. package/dist/platform.d.ts +199 -0
  347. package/dist/platform.d.ts.map +1 -0
  348. package/dist/platform.js +196 -0
  349. package/dist/platform.js.map +1 -0
  350. package/dist/policies.d.ts +115 -0
  351. package/dist/policies.d.ts.map +1 -0
  352. package/dist/policies.js +158 -0
  353. package/dist/policies.js.map +1 -0
  354. package/dist/principal.d.ts +143 -0
  355. package/dist/principal.d.ts.map +1 -0
  356. package/dist/principal.js +174 -0
  357. package/dist/principal.js.map +1 -0
  358. package/dist/realtime.d.ts +280 -0
  359. package/dist/realtime.d.ts.map +1 -0
  360. package/dist/realtime.js +578 -0
  361. package/dist/realtime.js.map +1 -0
  362. package/dist/retrieval.d.ts +263 -0
  363. package/dist/retrieval.d.ts.map +1 -0
  364. package/dist/retrieval.js +602 -0
  365. package/dist/retrieval.js.map +1 -0
  366. package/dist/runtime-error-client.d.ts +10 -0
  367. package/dist/runtime-error-client.d.ts.map +1 -0
  368. package/dist/runtime-error-client.js +70 -0
  369. package/dist/runtime-error-client.js.map +1 -0
  370. package/dist/runtime-errors.d.ts +180 -0
  371. package/dist/runtime-errors.d.ts.map +1 -0
  372. package/dist/runtime-errors.js +572 -0
  373. package/dist/runtime-errors.js.map +1 -0
  374. package/dist/schema.d.ts +434 -0
  375. package/dist/schema.d.ts.map +1 -0
  376. package/dist/schema.js +232 -0
  377. package/dist/schema.js.map +1 -0
  378. package/dist/search.d.ts +216 -0
  379. package/dist/search.d.ts.map +1 -0
  380. package/dist/search.js +785 -0
  381. package/dist/search.js.map +1 -0
  382. package/dist/settings.d.ts +191 -0
  383. package/dist/settings.d.ts.map +1 -0
  384. package/dist/settings.js +478 -0
  385. package/dist/settings.js.map +1 -0
  386. package/dist/sql.d.ts +7 -0
  387. package/dist/sql.d.ts.map +1 -0
  388. package/dist/sql.js +30 -0
  389. package/dist/sql.js.map +1 -0
  390. package/dist/storage-client.d.ts +69 -0
  391. package/dist/storage-client.d.ts.map +1 -0
  392. package/dist/storage-client.js +469 -0
  393. package/dist/storage-client.js.map +1 -0
  394. package/dist/storage.d.ts +21 -0
  395. package/dist/storage.d.ts.map +1 -0
  396. package/dist/storage.js +82 -0
  397. package/dist/storage.js.map +1 -0
  398. package/dist/subject-domains.d.ts +15 -0
  399. package/dist/subject-domains.d.ts.map +1 -0
  400. package/dist/subject-domains.js +38 -0
  401. package/dist/subject-domains.js.map +1 -0
  402. package/dist/support.d.ts +132 -0
  403. package/dist/support.d.ts.map +1 -0
  404. package/dist/support.js +483 -0
  405. package/dist/support.js.map +1 -0
  406. package/dist/system-tables.d.ts +12 -0
  407. package/dist/system-tables.d.ts.map +1 -0
  408. package/dist/system-tables.js +225 -0
  409. package/dist/system-tables.js.map +1 -0
  410. package/dist/test.d.ts +57 -0
  411. package/dist/test.d.ts.map +1 -0
  412. package/dist/test.js +454 -0
  413. package/dist/test.js.map +1 -0
  414. package/dist/vite.d.ts +82 -0
  415. package/dist/vite.d.ts.map +1 -0
  416. package/dist/vite.js +82 -0
  417. package/dist/vite.js.map +1 -0
  418. package/dist/webpush-crypto.d.ts +39 -0
  419. package/dist/webpush-crypto.d.ts.map +1 -0
  420. package/dist/webpush-crypto.js +213 -0
  421. package/dist/webpush-crypto.js.map +1 -0
  422. package/dist/webpush-private.d.ts +11 -0
  423. package/dist/webpush-private.d.ts.map +1 -0
  424. package/dist/webpush-private.js +11 -0
  425. package/dist/webpush-private.js.map +1 -0
  426. package/dist/webpush.d.ts +86 -0
  427. package/dist/webpush.d.ts.map +1 -0
  428. package/dist/webpush.js +375 -0
  429. package/dist/webpush.js.map +1 -0
  430. package/dist/worker.d.ts +185 -0
  431. package/dist/worker.d.ts.map +1 -0
  432. package/dist/worker.js +13021 -0
  433. package/dist/worker.js.map +1 -0
  434. package/package.json +161 -8
  435. package/README.md +0 -3
@@ -0,0 +1,469 @@
1
+ import { doExecutor } from "./db.js";
2
+ import { sha256Hex } from "./internal.js";
3
+ import { assertRaybaseObjectKey, raybaseObjectKey, raybaseRuntimeScope, runtimePolicySubjectId } from "./platform.js";
4
+ import { evaluatePolicy } from "./policies.js";
5
+ import { nowIso, q, randomId } from "./sql.js";
6
+ import { ensureFilesTable, raybaseFilesTableName, storageHardMaxSizeBytes, validateStorageConfig } from "./storage.js";
7
+ export class StorageError extends Error {
8
+ status;
9
+ constructor(message, status = 400) {
10
+ super(message);
11
+ this.status = status;
12
+ }
13
+ }
14
+ const hiddenStatuses = new Set(["uploading", "deleting", "deleted", "quarantined"]);
15
+ function defaultBackend(env) {
16
+ const executor = doExecutor(env, { tables: {} });
17
+ return {
18
+ executorFor() {
19
+ return executor;
20
+ }
21
+ };
22
+ }
23
+ function executorFor(db, ctx) {
24
+ return "executorFor" in db ? db.executorFor(raybaseFilesTableName, ctx) : db;
25
+ }
26
+ function bucketFor(storage, bucketName) {
27
+ const bucket = storage.buckets[bucketName];
28
+ if (!bucket)
29
+ throw new StorageError(`Unknown file bucket: ${bucketName}`, 404);
30
+ return bucket;
31
+ }
32
+ function bucketMaxSize(bucket) {
33
+ if (!bucket.maxSizeBytes)
34
+ throw new StorageError(`Bucket ${bucket.name} must set maxSizeBytes`, 500);
35
+ return Math.min(bucket.maxSizeBytes, storageHardMaxSizeBytes);
36
+ }
37
+ function can(bucket, action, ctx, row, newRow) {
38
+ return evaluatePolicy(bucket.policies?.[action], {
39
+ user: ctx.user,
40
+ row,
41
+ newRow,
42
+ action,
43
+ adminOverride: ctx.adminOverride
44
+ });
45
+ }
46
+ function parseMetadata(value) {
47
+ if (!value)
48
+ return null;
49
+ try {
50
+ return JSON.parse(value);
51
+ }
52
+ catch {
53
+ return value;
54
+ }
55
+ }
56
+ function normalizeFile(row) {
57
+ return {
58
+ id: row.id,
59
+ bucket: row.bucket,
60
+ filename: row.filename,
61
+ contentType: row.contentType,
62
+ size: Number(row.size ?? 0),
63
+ etag: row.etag,
64
+ checksum: row.checksum,
65
+ status: row.status,
66
+ createdBy: row.createdBy,
67
+ createdAt: row.createdAt,
68
+ updatedAt: row.updatedAt,
69
+ deletedAt: row.deletedAt,
70
+ objectDeletedAt: row.objectDeletedAt,
71
+ deleteError: row.deleteError,
72
+ metadata: parseMetadata(row.metadata)
73
+ };
74
+ }
75
+ function normalizeForPolicy(row) {
76
+ return { ...normalizeFile(row), key: row.key };
77
+ }
78
+ function buildR2Key(bucketName, fileId) {
79
+ return `files/v1/${bucketName}/${fileId}`;
80
+ }
81
+ function safeFilename(value) {
82
+ const text = typeof value === "string" ? value.trim() : "";
83
+ const withoutControls = text.replace(/[\r\n]/g, " ").replace(/[/\\]/g, "_").trim();
84
+ return withoutControls || "file";
85
+ }
86
+ function filenameFromContentDisposition(value) {
87
+ if (!value)
88
+ return "";
89
+ const utf8 = value.match(/filename\*\s*=\s*UTF-8''([^;]+)/i)?.[1];
90
+ if (utf8) {
91
+ try {
92
+ return decodeURIComponent(utf8);
93
+ }
94
+ catch {
95
+ return utf8;
96
+ }
97
+ }
98
+ return value.match(/filename\s*=\s*"([^"]+)"/i)?.[1] ?? value.match(/filename\s*=\s*([^;]+)/i)?.[1]?.trim() ?? "";
99
+ }
100
+ async function parseRequestUpload(request) {
101
+ const contentType = request.headers.get("content-type") ?? "";
102
+ if (contentType.toLowerCase().includes("multipart/form-data")) {
103
+ const form = await request.formData();
104
+ const file = form.get("file");
105
+ if (!(file instanceof Blob))
106
+ throw new StorageError('multipart/form-data uploads require a "file" field');
107
+ const metadataValue = form.get("metadata");
108
+ let metadata = null;
109
+ if (typeof metadataValue === "string" && metadataValue.trim()) {
110
+ metadata = JSON.parse(metadataValue);
111
+ }
112
+ return {
113
+ body: file,
114
+ filename: safeFilename("name" in file ? file.name : "file"),
115
+ contentType: file.type || "application/octet-stream",
116
+ metadata
117
+ };
118
+ }
119
+ const filename = request.headers.get("x-raybase-filename") || filenameFromContentDisposition(request.headers.get("content-disposition")) || "file";
120
+ return {
121
+ body: request.body ?? new Uint8Array(),
122
+ filename: safeFilename(filename),
123
+ contentType: contentType.split(";")[0]?.trim() || "application/octet-stream",
124
+ metadata: null
125
+ };
126
+ }
127
+ async function parseUpload(input) {
128
+ if (input instanceof Request)
129
+ return parseRequestUpload(input);
130
+ if (input instanceof Blob) {
131
+ return {
132
+ body: input,
133
+ filename: safeFilename("name" in input ? input.name : "file"),
134
+ contentType: input.type || "application/octet-stream",
135
+ metadata: null
136
+ };
137
+ }
138
+ return {
139
+ body: input.body,
140
+ filename: safeFilename(input.filename),
141
+ contentType: input.contentType || (input.body instanceof Blob ? input.body.type : "") || "application/octet-stream",
142
+ metadata: input.metadata ?? null
143
+ };
144
+ }
145
+ function contentTypeAllowed(bucket, contentType) {
146
+ if (!bucket.accept?.length)
147
+ return true;
148
+ const normalized = contentType.toLowerCase();
149
+ return bucket.accept.some((entry) => {
150
+ const allowed = entry.toLowerCase();
151
+ if (allowed.endsWith("/*"))
152
+ return normalized.startsWith(allowed.slice(0, -1));
153
+ return normalized === allowed;
154
+ });
155
+ }
156
+ function uint8FromBufferSource(value) {
157
+ if (value instanceof ArrayBuffer)
158
+ return new Uint8Array(value);
159
+ return new Uint8Array(value.buffer, value.byteOffset, value.byteLength);
160
+ }
161
+ async function readStreamAtMost(stream, maxBytes) {
162
+ const reader = stream.getReader();
163
+ const chunks = [];
164
+ let size = 0;
165
+ try {
166
+ while (true) {
167
+ const next = await reader.read();
168
+ if (next.done)
169
+ break;
170
+ size += next.value.byteLength;
171
+ if (size > maxBytes)
172
+ throw new StorageError(`File exceeds the ${maxBytes} byte bucket limit`, 413);
173
+ chunks.push(next.value);
174
+ }
175
+ }
176
+ finally {
177
+ reader.releaseLock();
178
+ }
179
+ const out = new Uint8Array(size);
180
+ let offset = 0;
181
+ for (const chunk of chunks) {
182
+ out.set(chunk, offset);
183
+ offset += chunk.byteLength;
184
+ }
185
+ return out;
186
+ }
187
+ async function readBodyAtMost(body, maxBytes) {
188
+ if (body instanceof ReadableStream)
189
+ return readStreamAtMost(body, maxBytes);
190
+ if (body instanceof Blob) {
191
+ if (body.size > maxBytes)
192
+ throw new StorageError(`File exceeds the ${maxBytes} byte bucket limit`, 413);
193
+ return new Uint8Array(await body.arrayBuffer());
194
+ }
195
+ if (body instanceof ArrayBuffer || ArrayBuffer.isView(body)) {
196
+ const bytes = uint8FromBufferSource(body);
197
+ if (bytes.byteLength > maxBytes)
198
+ throw new StorageError(`File exceeds the ${maxBytes} byte bucket limit`, 413);
199
+ return bytes;
200
+ }
201
+ if (typeof body === "string") {
202
+ const bytes = new TextEncoder().encode(body);
203
+ if (bytes.byteLength > maxBytes)
204
+ throw new StorageError(`File exceeds the ${maxBytes} byte bucket limit`, 413);
205
+ return bytes;
206
+ }
207
+ if (body instanceof URLSearchParams || body instanceof FormData) {
208
+ throw new StorageError("Structured body uploads must use a Request or Blob");
209
+ }
210
+ throw new StorageError("Unsupported file upload body");
211
+ }
212
+ function asciiFallbackFilename(filename) {
213
+ const fallback = filename
214
+ .replace(/[\r\n"\\/]/g, "_")
215
+ .replace(/[\x00-\x1F\x7F]/g, "")
216
+ .replace(/[^\x20-\x7E]/g, "_")
217
+ .trim();
218
+ return fallback || "download";
219
+ }
220
+ function encodeRfc5987(value) {
221
+ return encodeURIComponent(value).replace(/['()*]/g, (char) => `%${char.charCodeAt(0).toString(16).toUpperCase()}`);
222
+ }
223
+ export function contentDispositionHeader(filename) {
224
+ const fallback = asciiFallbackFilename(filename);
225
+ return `attachment; filename="${fallback}"; filename*=UTF-8''${encodeRfc5987(filename || fallback)}`;
226
+ }
227
+ function assertR2(env) {
228
+ if (!env.RAYBASE_FILES)
229
+ throw new StorageError("RAYBASE_FILES R2 bucket binding is missing", 500);
230
+ return env.RAYBASE_FILES;
231
+ }
232
+ async function firstFile(db, bucketName, id) {
233
+ return db.first(`SELECT * FROM ${q(raybaseFilesTableName)} WHERE "bucket" = ? AND "id" = ?`, [bucketName, id]);
234
+ }
235
+ function visible(row, includeHidden) {
236
+ return includeHidden || !hiddenStatuses.has(row.status);
237
+ }
238
+ export function createRaybaseStorage(env, storage, db = defaultBackend(env)) {
239
+ validateStorageConfig(storage);
240
+ const bucket = assertR2(env);
241
+ return {
242
+ for(ctx) {
243
+ const executor = executorFor(db, ctx);
244
+ const runtimeScope = () => {
245
+ const current = raybaseRuntimeScope(env);
246
+ if (!ctx.adminOverride || !ctx.adminOrgId)
247
+ return current;
248
+ return {
249
+ ...current,
250
+ scopeId: ctx.adminOrgId,
251
+ organizationId: ctx.adminOrgId
252
+ };
253
+ };
254
+ let ensured = null;
255
+ const ensure = () => (ensured ??= ensureFilesTable(executor));
256
+ async function list(bucketName, options = {}) {
257
+ const bucketConfig = bucketFor(storage, bucketName);
258
+ await ensure();
259
+ const includeHidden = Boolean(options.includeHidden && ctx.adminOverride);
260
+ const limit = Math.min(Math.max(options.limit ?? 100, 1), 500);
261
+ const offset = Math.max(options.offset ?? 0, 0);
262
+ const where = includeHidden ? `"bucket" = ?` : `"bucket" = ? AND "status" = 'ready'`;
263
+ const rows = await executor.all(`SELECT * FROM ${q(raybaseFilesTableName)} WHERE ${where} ORDER BY "createdAt" DESC LIMIT ? OFFSET ?`, [bucketName, limit, offset]);
264
+ const files = rows
265
+ .filter((row) => visible(row, includeHidden))
266
+ .filter((row) => can(bucketConfig, "read", ctx, normalizeForPolicy(row)))
267
+ .map(normalizeFile);
268
+ return { items: files, count: files.length };
269
+ }
270
+ async function get(bucketName, id, options = {}) {
271
+ const bucketConfig = bucketFor(storage, bucketName);
272
+ await ensure();
273
+ const row = await firstFile(executor, bucketName, id);
274
+ const includeHidden = Boolean(options.includeHidden && ctx.adminOverride);
275
+ if (!row || !visible(row, includeHidden))
276
+ return null;
277
+ return can(bucketConfig, "read", ctx, normalizeForPolicy(row)) ? normalizeFile(row) : null;
278
+ }
279
+ async function create(bucketName, input) {
280
+ const bucketConfig = bucketFor(storage, bucketName);
281
+ await ensure();
282
+ const upload = await parseUpload(input);
283
+ const id = randomId("file");
284
+ const scope = runtimeScope();
285
+ const key = raybaseObjectKey(env, "files", [bucketName, id], scope, () => buildR2Key(bucketName, id));
286
+ const now = nowIso();
287
+ const createdBy = runtimePolicySubjectId(env, ctx.user);
288
+ const candidate = {
289
+ id,
290
+ bucket: bucketName,
291
+ key,
292
+ filename: upload.filename,
293
+ contentType: upload.contentType,
294
+ size: 0,
295
+ etag: null,
296
+ checksum: null,
297
+ status: "uploading",
298
+ createdBy,
299
+ createdAt: now,
300
+ updatedAt: now,
301
+ deletedAt: null,
302
+ objectDeletedAt: null,
303
+ deleteError: null,
304
+ metadata: JSON.stringify(upload.metadata ?? null)
305
+ };
306
+ if (!can(bucketConfig, "create", ctx, undefined, normalizeForPolicy(candidate))) {
307
+ throw new StorageError(`Policy denied create on file bucket ${bucketName}`, 403);
308
+ }
309
+ await executor.run(`INSERT INTO ${q(raybaseFilesTableName)}
310
+ ("id", "bucket", "key", "filename", "contentType", "size", "etag", "checksum", "status", "createdBy", "createdAt", "updatedAt", "metadata")
311
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
312
+ candidate.id,
313
+ candidate.bucket,
314
+ candidate.key,
315
+ candidate.filename,
316
+ candidate.contentType,
317
+ candidate.size,
318
+ candidate.etag,
319
+ candidate.checksum,
320
+ candidate.status,
321
+ candidate.createdBy,
322
+ candidate.createdAt,
323
+ candidate.updatedAt,
324
+ candidate.metadata
325
+ ]);
326
+ if (!contentTypeAllowed(bucketConfig, upload.contentType)) {
327
+ throw new StorageError(`Content type ${upload.contentType} is not accepted by bucket ${bucketName}`, 415);
328
+ }
329
+ const bytes = await readBodyAtMost(upload.body, bucketMaxSize(bucketConfig));
330
+ const checksum = await sha256Hex(bytes);
331
+ const object = await bucket.put(key, bytes, {
332
+ httpMetadata: {
333
+ contentType: upload.contentType,
334
+ contentDisposition: contentDispositionHeader(upload.filename)
335
+ },
336
+ customMetadata: {
337
+ bucket: bucketName,
338
+ fileId: id
339
+ }
340
+ });
341
+ const etag = object?.etag ?? object?.httpEtag ?? null;
342
+ const updatedAt = nowIso();
343
+ await executor.run(`UPDATE ${q(raybaseFilesTableName)}
344
+ SET "size" = ?, "etag" = ?, "checksum" = ?, "status" = 'ready', "updatedAt" = ?
345
+ WHERE "id" = ?`, [bytes.byteLength, etag, checksum, updatedAt, id]);
346
+ const ready = await firstFile(executor, bucketName, id);
347
+ if (!ready)
348
+ throw new StorageError("File metadata disappeared after upload", 500);
349
+ await ctx.audit?.({
350
+ action: ctx.adminOverride ? "admin.file.create" : "file.create",
351
+ target: { type: bucketName, id },
352
+ metadata: { filename: upload.filename, contentType: upload.contentType, size: bytes.byteLength, checksum }
353
+ });
354
+ return normalizeFile(ready);
355
+ }
356
+ async function download(bucketName, id) {
357
+ const bucketConfig = bucketFor(storage, bucketName);
358
+ await ensure();
359
+ const row = await firstFile(executor, bucketName, id);
360
+ if (!row || hiddenStatuses.has(row.status))
361
+ throw new StorageError("Not found", 404);
362
+ if (!can(bucketConfig, "read", ctx, normalizeForPolicy(row)))
363
+ throw new StorageError("Not found", 404);
364
+ assertRaybaseObjectKey(env, "files", row.key, runtimeScope());
365
+ const object = await bucket.get(row.key);
366
+ if (!object) {
367
+ if (ctx.adminOverride) {
368
+ await ctx.audit?.({
369
+ action: "admin.file.missing_object",
370
+ target: { type: bucketName, id },
371
+ metadata: { key: row.key }
372
+ });
373
+ }
374
+ throw new StorageError("File object is gone", 410);
375
+ }
376
+ if (ctx.adminOverride) {
377
+ await ctx.audit?.({
378
+ action: "admin.file.download",
379
+ target: { type: bucketName, id },
380
+ metadata: { filename: row.filename, size: row.size }
381
+ });
382
+ }
383
+ const headers = new Headers();
384
+ headers.set("Content-Type", row.contentType || "application/octet-stream");
385
+ headers.set("Content-Length", String(row.size));
386
+ headers.set("Content-Disposition", contentDispositionHeader(row.filename));
387
+ headers.set("X-Content-Type-Options", "nosniff");
388
+ headers.set("Cache-Control", "private, no-store");
389
+ return new Response(object.body, { headers });
390
+ }
391
+ async function update(bucketName, id, input) {
392
+ const bucketConfig = bucketFor(storage, bucketName);
393
+ await ensure();
394
+ const row = await firstFile(executor, bucketName, id);
395
+ if (!row || hiddenStatuses.has(row.status))
396
+ throw new StorageError("Not found", 404);
397
+ const current = normalizeForPolicy(row);
398
+ const next = {
399
+ ...current,
400
+ filename: input.filename !== undefined ? safeFilename(input.filename) : row.filename,
401
+ metadata: input.metadata !== undefined ? input.metadata : parseMetadata(row.metadata)
402
+ };
403
+ if (!can(bucketConfig, "update", ctx, current, next)) {
404
+ throw new StorageError(`Policy denied update on file bucket ${bucketName}`, 403);
405
+ }
406
+ const updates = [];
407
+ const params = [];
408
+ if (input.filename !== undefined) {
409
+ updates.push(`"filename" = ?`);
410
+ params.push(safeFilename(input.filename));
411
+ }
412
+ if (input.metadata !== undefined) {
413
+ updates.push(`"metadata" = ?`);
414
+ params.push(JSON.stringify(input.metadata));
415
+ }
416
+ updates.push(`"updatedAt" = ?`);
417
+ params.push(nowIso(), id);
418
+ await executor.run(`UPDATE ${q(raybaseFilesTableName)} SET ${updates.join(", ")} WHERE "id" = ?`, params);
419
+ await ctx.audit?.({
420
+ action: ctx.adminOverride ? "admin.file.update" : "file.update",
421
+ target: { type: bucketName, id },
422
+ metadata: input
423
+ });
424
+ const updated = await firstFile(executor, bucketName, id);
425
+ if (!updated)
426
+ throw new StorageError("File metadata disappeared after update", 500);
427
+ return normalizeFile(updated);
428
+ }
429
+ async function remove(bucketName, id) {
430
+ const bucketConfig = bucketFor(storage, bucketName);
431
+ await ensure();
432
+ const row = await firstFile(executor, bucketName, id);
433
+ if (!row || hiddenStatuses.has(row.status))
434
+ throw new StorageError("Not found", 404);
435
+ if (!can(bucketConfig, "delete", ctx, normalizeForPolicy(row))) {
436
+ throw new StorageError(`Policy denied delete on file bucket ${bucketName}`, 403);
437
+ }
438
+ const deletedAt = nowIso();
439
+ await executor.run(`UPDATE ${q(raybaseFilesTableName)} SET "status" = 'deleting', "deletedAt" = ?, "updatedAt" = ? WHERE "id" = ?`, [deletedAt, deletedAt, id]);
440
+ try {
441
+ assertRaybaseObjectKey(env, "files", row.key, runtimeScope());
442
+ await bucket.delete(row.key);
443
+ const objectDeletedAt = nowIso();
444
+ await executor.run(`UPDATE ${q(raybaseFilesTableName)}
445
+ SET "status" = 'deleted', "objectDeletedAt" = ?, "deleteError" = NULL, "updatedAt" = ?
446
+ WHERE "id" = ?`, [objectDeletedAt, objectDeletedAt, id]);
447
+ await ctx.audit?.({
448
+ action: ctx.adminOverride ? "admin.file.delete" : "file.delete",
449
+ target: { type: bucketName, id },
450
+ metadata: { filename: row.filename, size: row.size }
451
+ });
452
+ return { ok: true };
453
+ }
454
+ catch (error) {
455
+ const message = error instanceof Error ? error.message : String(error);
456
+ await executor.run(`UPDATE ${q(raybaseFilesTableName)} SET "deleteError" = ?, "updatedAt" = ? WHERE "id" = ?`, [message, nowIso(), id]);
457
+ await ctx.audit?.({
458
+ action: ctx.adminOverride ? "admin.file.delete_failed" : "file.delete_failed",
459
+ target: { type: bucketName, id },
460
+ metadata: { error: message }
461
+ });
462
+ throw new StorageError(`R2 delete failed: ${message}`, 502);
463
+ }
464
+ }
465
+ return { list, get, create, download, update, delete: remove };
466
+ }
467
+ };
468
+ }
469
+ //# sourceMappingURL=storage-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-client.js","sourceRoot":"","sources":["../src/storage-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { SqlExecutor } from "./db.js";
2
+ import type { PolicyMap } from "./schema.js";
3
+ export declare const raybaseFilesTableName = "_files";
4
+ export declare const storageHardMaxSizeBytes: number;
5
+ export type RaybaseBucket = {
6
+ name: string;
7
+ policies?: PolicyMap;
8
+ label?: string;
9
+ maxSizeBytes?: number;
10
+ accept?: string[];
11
+ };
12
+ export type RaybaseStorageConfig = {
13
+ buckets: Record<string, RaybaseBucket>;
14
+ };
15
+ export declare function raybaseBucket(name: string, options?: Omit<RaybaseBucket, "name">): RaybaseBucket;
16
+ export declare function raybaseStorage(buckets: Record<string, RaybaseBucket>): RaybaseStorageConfig;
17
+ export declare function requiredStoragePolicyActions(): Array<keyof PolicyMap>;
18
+ export declare function validateStorageConfig(storage: RaybaseStorageConfig | undefined): void;
19
+ export declare function validateBucketName(name: string): void;
20
+ export declare function ensureFilesTable(db: SqlExecutor): Promise<void>;
21
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,eAAO,MAAM,qBAAqB,WAAW,CAAC;AAC9C,eAAO,MAAM,uBAAuB,QAAmB,CAAC;AAExD,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CACxC,CAAC;AAIF,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAM,GACxC,aAAa,CAiBf;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,oBAAoB,CAW3F;AAED,wBAAgB,4BAA4B,IAAI,KAAK,CAAC,MAAM,SAAS,CAAC,CAErE;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,oBAAoB,GAAG,SAAS,GAAG,IAAI,CAerF;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAIrD;AAED,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBrE"}
@@ -0,0 +1,82 @@
1
+ export const raybaseFilesTableName = "_files";
2
+ export const storageHardMaxSizeBytes = 25 * 1024 * 1024;
3
+ const bucketNamePattern = /^[a-z][a-z0-9_]*$/;
4
+ export function raybaseBucket(name, options = {}) {
5
+ validateBucketName(name);
6
+ if (options.maxSizeBytes !== undefined && (!Number.isFinite(options.maxSizeBytes) || options.maxSizeBytes <= 0)) {
7
+ throw new Error(`Bucket ${name} maxSizeBytes must be a positive number`);
8
+ }
9
+ if (options.accept !== undefined) {
10
+ for (const value of options.accept) {
11
+ if (!value || /[\r\n]/.test(value))
12
+ throw new Error(`Bucket ${name} has an invalid accept entry`);
13
+ }
14
+ }
15
+ return {
16
+ name,
17
+ policies: options.policies,
18
+ label: options.label,
19
+ maxSizeBytes: options.maxSizeBytes,
20
+ accept: options.accept
21
+ };
22
+ }
23
+ export function raybaseStorage(buckets) {
24
+ const output = {};
25
+ for (const [key, bucket] of Object.entries(buckets)) {
26
+ validateBucketName(key);
27
+ validateBucketName(bucket.name);
28
+ if (key !== bucket.name) {
29
+ throw new Error(`Storage bucket key "${key}" must match bucket name "${bucket.name}"`);
30
+ }
31
+ output[key] = bucket;
32
+ }
33
+ return { buckets: output };
34
+ }
35
+ export function requiredStoragePolicyActions() {
36
+ return ["read", "create", "update", "delete"];
37
+ }
38
+ export function validateStorageConfig(storage) {
39
+ if (!storage)
40
+ return;
41
+ for (const bucket of Object.values(storage.buckets)) {
42
+ validateBucketName(bucket.name);
43
+ const missing = requiredStoragePolicyActions().filter((action) => !bucket.policies?.[action]);
44
+ if (missing.length) {
45
+ throw new Error(`Bucket ${bucket.name} is missing policies for: ${missing.join(", ")}`);
46
+ }
47
+ if (!bucket.maxSizeBytes) {
48
+ throw new Error(`Bucket ${bucket.name} must set maxSizeBytes`);
49
+ }
50
+ if (bucket.maxSizeBytes > storageHardMaxSizeBytes) {
51
+ throw new Error(`Bucket ${bucket.name} maxSizeBytes exceeds the v1 hard cap of ${storageHardMaxSizeBytes} bytes`);
52
+ }
53
+ }
54
+ }
55
+ export function validateBucketName(name) {
56
+ if (!bucketNamePattern.test(name)) {
57
+ throw new Error(`Invalid storage bucket name: ${name}. Use lowercase letters, numbers, and underscores.`);
58
+ }
59
+ }
60
+ export async function ensureFilesTable(db) {
61
+ await db.run(`CREATE TABLE IF NOT EXISTS "_files" (
62
+ "id" TEXT PRIMARY KEY NOT NULL,
63
+ "bucket" TEXT NOT NULL,
64
+ "key" TEXT NOT NULL UNIQUE,
65
+ "filename" TEXT NOT NULL,
66
+ "contentType" TEXT NOT NULL,
67
+ "size" INTEGER NOT NULL,
68
+ "etag" TEXT,
69
+ "checksum" TEXT,
70
+ "status" TEXT NOT NULL,
71
+ "createdBy" TEXT NOT NULL,
72
+ "createdAt" TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
73
+ "updatedAt" TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
74
+ "deletedAt" TEXT,
75
+ "objectDeletedAt" TEXT,
76
+ "deleteError" TEXT,
77
+ "metadata" TEXT
78
+ )`);
79
+ await db.run(`CREATE INDEX IF NOT EXISTS "_files_bucket_created_at_idx" ON "_files" ("bucket", "createdAt")`);
80
+ await db.run(`CREATE INDEX IF NOT EXISTS "_files_bucket_created_by_idx" ON "_files" ("bucket", "createdBy")`);
81
+ }
82
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export type RaybaseSubjectDomain = "identity" | "policy";
2
+ export type RaybasePersistedSubject = {
3
+ table: string;
4
+ column: string;
5
+ domain: RaybaseSubjectDomain;
6
+ qualifier?: string;
7
+ };
8
+ /**
9
+ * Persisted subject-bearing columns owned by the shared runtime. Settings is
10
+ * intentionally qualified because one physical column stores app constants,
11
+ * scoped IDs, and identity subjects according to its explicit `scope` value.
12
+ */
13
+ export declare const raybaseSubjectDomainManifest: readonly RaybasePersistedSubject[];
14
+ export declare function validateRaybaseSubjectDomainManifest(manifest?: readonly RaybasePersistedSubject[]): void;
15
+ //# sourceMappingURL=subject-domains.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subject-domains.d.ts","sourceRoot":"","sources":["../src/subject-domains.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEzD,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,oBAAoB,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,EAAE,SAAS,uBAAuB,EAsBjE,CAAC;AAEX,wBAAgB,oCAAoC,CAClD,QAAQ,GAAE,SAAS,uBAAuB,EAAiC,GAC1E,IAAI,CAON"}