@raybase/core 0.0.2 → 0.3.4

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,164 @@
1
+ import type { SqlExecutor } from "./db.js";
2
+ import { RaybaseHttpError } from "./http-error.js";
3
+ import type { RaybaseSchema, RaybaseSystemTable } from "./schema.js";
4
+ /**
5
+ * Secret-at-rest app data. A `secret()` column stores an AES-256-GCM envelope
6
+ * sealed under the deployment key and bound to its table, column, and row id.
7
+ * Plaintext never reaches SQLite, so every raw-SQL path (backups, PITR,
8
+ * exports) carries ciphertext at worst; every generic read surface shows
9
+ * `raybaseSecretRedacted` instead. Plaintext comes back only from an explicit,
10
+ * audited `revealSecret()` call on an action or job context.
11
+ *
12
+ * Envelope: `rbs1.<keyId>.<nonce>.<ciphertext>`, base64url pieces. The key id is
13
+ * HKDF-derived from the key, so it names a key without revealing it.
14
+ */
15
+ export declare const raybaseSecretRedacted: "[REDACTED]";
16
+ export type RaybaseRedactedSecret = typeof raybaseSecretRedacted;
17
+ export declare const dataSecretsKeyEnvName = "RAYBASE_DATA_SECRETS_KEY";
18
+ export declare const dataSecretsRetainedKeysEnvName = "RAYBASE_DATA_SECRETS_KEY_RETAINED";
19
+ export declare const dataSecretLimits: {
20
+ readonly maxPlaintextBytes: number;
21
+ readonly defaultResealBatch: 200;
22
+ readonly maxResealBatch: 1000;
23
+ readonly maxReportedUnreadable: 50;
24
+ };
25
+ export type RaybaseDataSecretErrorCode = "data_secrets_key_missing" | "data_secrets_key_invalid" | "data_secret_key_unavailable" | "data_secret_undecryptable" | "data_secret_invalid" | "data_secret_unaudited";
26
+ export declare class RaybaseDataSecretError extends RaybaseHttpError<RaybaseDataSecretErrorCode> {
27
+ constructor(code: RaybaseDataSecretErrorCode, message: string);
28
+ }
29
+ /** What a sealed value is bound to. Moving ciphertext to another row or column makes it undecryptable. */
30
+ export type RaybaseDataSecretScope = {
31
+ table: string;
32
+ column: string;
33
+ rowId: string;
34
+ };
35
+ export type RaybaseOpenedDataSecret = {
36
+ value: string;
37
+ /** Null for a legacy plaintext value written before the column became `secret()`. */
38
+ keyId: string | null;
39
+ legacyPlaintext: boolean;
40
+ };
41
+ export type RaybaseDataSecretsKeyStatus = {
42
+ configured: boolean;
43
+ currentKeyId: string | null;
44
+ retainedKeyIds: string[];
45
+ /** Safe configuration error, never key material. */
46
+ error: string | null;
47
+ };
48
+ export type RaybaseDataSecrets = {
49
+ seal(scope: RaybaseDataSecretScope, plaintext: string): Promise<string>;
50
+ open(scope: RaybaseDataSecretScope, stored: string): Promise<RaybaseOpenedDataSecret>;
51
+ /** Throws the typed missing/invalid-key error when no usable key is configured. */
52
+ currentKeyId(): Promise<string>;
53
+ keyStatus(): Promise<RaybaseDataSecretsKeyStatus>;
54
+ };
55
+ /** Build a cipher from key strings. Keys are validated and derived on first use, so reads never depend on them. */
56
+ export declare function createDataSecrets(input: {
57
+ currentKey?: string | null;
58
+ retainedKeys?: string | readonly string[] | null;
59
+ }): RaybaseDataSecrets;
60
+ /** The deployment cipher for this env, memoized by key strings so derived keys are reused across requests. */
61
+ export declare function dataSecretsFromEnv(env: unknown): RaybaseDataSecrets;
62
+ /** The read-side projection of a stored secret: the marker when set, null when not. */
63
+ export declare function redactSecretValue(value: unknown): RaybaseRedactedSecret | null;
64
+ type ColumnKinds = {
65
+ columns: Record<string, {
66
+ kind: string;
67
+ }>;
68
+ };
69
+ export declare function secretColumnNames(table: ColumnKinds): string[];
70
+ export type RaybaseSecretColumnTarget = {
71
+ key: string;
72
+ table: {
73
+ name: string;
74
+ };
75
+ column: string;
76
+ };
77
+ /**
78
+ * Every secret column the deployment holds: app tables keyed by schema key,
79
+ * then manifest system tables (such as an integration's sealed session store)
80
+ * keyed by their physical name.
81
+ */
82
+ export declare function schemaSecretColumns(schema: RaybaseSchema, systemTables?: readonly RaybaseSystemTable[]): RaybaseSecretColumnTarget[];
83
+ /** Replace secret column values in a raw SQL row (export, operator query) with the redaction marker. */
84
+ export declare function redactSecretColumns<Row extends Record<string, unknown>>(table: ColumnKinds, row: Row): Row;
85
+ /** The name of every secret column the deployment holds, in app tables and manifest system tables. */
86
+ export declare function secretColumnKeys(schema: RaybaseSchema, systemTables?: readonly RaybaseSystemTable[]): ReadonlySet<string>;
87
+ /**
88
+ * For records that carry column values outside their table row (tool-call
89
+ * arguments, import inputs, audit metadata): redact, at any depth, every
90
+ * object key named like a secret column. Such a record may predate the column
91
+ * becoming `secret()`, so this is applied where the record is read as well as
92
+ * where it is written. A same-named ordinary column in another table is
93
+ * redacted too, which is the safe direction.
94
+ */
95
+ export declare function redactSecretColumnKeys<Value>(columns: ReadonlySet<string>, value: Value): Value;
96
+ export declare function isDataSecretEnvelope(value: unknown): value is string;
97
+ /** The key id a stored value was sealed with; null for legacy plaintext. */
98
+ export declare function dataSecretKeyId(value: string): string | null;
99
+ export declare function assertSecretPlaintext(value: unknown, scope?: Omit<RaybaseDataSecretScope, "rowId"> & {
100
+ rowId?: string;
101
+ }): asserts value is string;
102
+ export type RaybaseDataSecretColumnStatus = {
103
+ table: string;
104
+ column: string;
105
+ set: number;
106
+ current: number;
107
+ /** Values sealed with a retained key, by key id. */
108
+ retained: Record<string, number>;
109
+ /** Values sealed with a key that is not configured at all. */
110
+ unknownKey: Record<string, number>;
111
+ /** Values written before the column became `secret()`. */
112
+ legacyPlaintext: number;
113
+ };
114
+ export type RaybaseDataSecretsStatus = {
115
+ key: RaybaseDataSecretsKeyStatus;
116
+ columns: RaybaseDataSecretColumnStatus[];
117
+ /** True when every set value is sealed with the current key. */
118
+ current: boolean;
119
+ };
120
+ /** Count secret values by key, without decrypting anything. */
121
+ export declare function readDataSecretsStatus(input: {
122
+ schema: RaybaseSchema;
123
+ systemTables?: readonly RaybaseSystemTable[];
124
+ executorFor: (tableName: string) => SqlExecutor;
125
+ secrets: RaybaseDataSecrets;
126
+ }): Promise<RaybaseDataSecretsStatus>;
127
+ export type RaybaseDataSecretsResealCursor = {
128
+ table: string;
129
+ column: string;
130
+ afterId: string | null;
131
+ };
132
+ export type RaybaseDataSecretsResealResult = {
133
+ currentKeyId: string;
134
+ /** Values re-sealed from a retained key. */
135
+ resealed: number;
136
+ /** Legacy plaintext values sealed for the first time. */
137
+ sealed: number;
138
+ /** Values that could not be opened; they are left untouched. */
139
+ unreadable: Array<{
140
+ table: string;
141
+ column: string;
142
+ id: string;
143
+ code: RaybaseDataSecretErrorCode | "unknown";
144
+ }>;
145
+ unreadableCount: number;
146
+ cursor: RaybaseDataSecretsResealCursor | null;
147
+ done: boolean;
148
+ };
149
+ /**
150
+ * Re-seal every secret value not under the current key: values sealed with a
151
+ * retained key, and legacy plaintext left by turning an existing column into
152
+ * `secret()`. Bounded per call; pass `cursor` back until `done`. Each write is
153
+ * compare-and-swap on the old stored value, so a concurrent write wins.
154
+ */
155
+ export declare function resealDataSecrets(input: {
156
+ schema: RaybaseSchema;
157
+ systemTables?: readonly RaybaseSystemTable[];
158
+ executorFor: (tableName: string) => SqlExecutor;
159
+ secrets: RaybaseDataSecrets;
160
+ limit?: number;
161
+ cursor?: RaybaseDataSecretsResealCursor | null;
162
+ }): Promise<RaybaseDataSecretsResealResult>;
163
+ export {};
164
+ //# sourceMappingURL=data-secrets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-secrets.d.ts","sourceRoot":"","sources":["../src/data-secrets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,383 @@
1
+ import { RaybaseHttpError } from "./http-error.js";
2
+ import { q } from "./sql.js";
3
+ /**
4
+ * Secret-at-rest app data. A `secret()` column stores an AES-256-GCM envelope
5
+ * sealed under the deployment key and bound to its table, column, and row id.
6
+ * Plaintext never reaches SQLite, so every raw-SQL path (backups, PITR,
7
+ * exports) carries ciphertext at worst; every generic read surface shows
8
+ * `raybaseSecretRedacted` instead. Plaintext comes back only from an explicit,
9
+ * audited `revealSecret()` call on an action or job context.
10
+ *
11
+ * Envelope: `rbs1.<keyId>.<nonce>.<ciphertext>`, base64url pieces. The key id is
12
+ * HKDF-derived from the key, so it names a key without revealing it.
13
+ */
14
+ export const raybaseSecretRedacted = "[REDACTED]";
15
+ export const dataSecretsKeyEnvName = "RAYBASE_DATA_SECRETS_KEY";
16
+ export const dataSecretsRetainedKeysEnvName = "RAYBASE_DATA_SECRETS_KEY_RETAINED";
17
+ export const dataSecretLimits = {
18
+ maxPlaintextBytes: 16 * 1024,
19
+ defaultResealBatch: 200,
20
+ maxResealBatch: 1_000,
21
+ maxReportedUnreadable: 50
22
+ };
23
+ const envelopeVersion = "rbs1";
24
+ const keyIdBytes = 9;
25
+ const keyIdPattern = /^[A-Za-z0-9_-]{12}$/;
26
+ const encoder = new TextEncoder();
27
+ const decoder = new TextDecoder("utf-8", { fatal: true });
28
+ const errorStatus = {
29
+ data_secrets_key_missing: 503,
30
+ data_secrets_key_invalid: 503,
31
+ data_secret_key_unavailable: 503,
32
+ data_secret_undecryptable: 500,
33
+ data_secret_invalid: 400,
34
+ data_secret_unaudited: 500
35
+ };
36
+ export class RaybaseDataSecretError extends RaybaseHttpError {
37
+ constructor(code, message) {
38
+ super({ status: errorStatus[code], code, message });
39
+ this.name = "RaybaseDataSecretError";
40
+ }
41
+ }
42
+ /** Build a cipher from key strings. Keys are validated and derived on first use, so reads never depend on them. */
43
+ export function createDataSecrets(input) {
44
+ let keyring = null;
45
+ const loadKeyring = () => {
46
+ keyring ??= deriveKeyring(input.currentKey ?? null, splitRetainedKeys(input.retainedKeys));
47
+ return keyring;
48
+ };
49
+ return {
50
+ async seal(scope, plaintext) {
51
+ assertSecretPlaintext(plaintext, scope);
52
+ const { current } = await loadKeyring();
53
+ const nonce = crypto.getRandomValues(new Uint8Array(12));
54
+ const ciphertext = await crypto.subtle.encrypt({ name: "AES-GCM", iv: bufferSource(nonce), additionalData: bufferSource(aad(current.keyId, scope)) }, current.key, bufferSource(encoder.encode(plaintext)));
55
+ return [envelopeVersion, current.keyId, base64Url(nonce), base64Url(new Uint8Array(ciphertext))].join(".");
56
+ },
57
+ async open(scope, stored) {
58
+ const envelope = parseEnvelope(stored);
59
+ if (!envelope)
60
+ return { value: stored, keyId: null, legacyPlaintext: true };
61
+ const { byId } = await loadKeyring();
62
+ const derived = byId.get(envelope.keyId);
63
+ if (!derived) {
64
+ throw new RaybaseDataSecretError("data_secret_key_unavailable", `${describeScope(scope)} was sealed with data-secrets key ${envelope.keyId}, which is not configured. Add that key to ${dataSecretsRetainedKeysEnvName}.`);
65
+ }
66
+ try {
67
+ const plaintext = await crypto.subtle.decrypt({ name: "AES-GCM", iv: bufferSource(envelope.nonce), additionalData: bufferSource(aad(envelope.keyId, scope)) }, derived.key, bufferSource(envelope.ciphertext));
68
+ return { value: decoder.decode(plaintext), keyId: envelope.keyId, legacyPlaintext: false };
69
+ }
70
+ catch {
71
+ throw new RaybaseDataSecretError("data_secret_undecryptable", `${describeScope(scope)} could not be decrypted: the stored value was modified or does not belong to this row and column.`);
72
+ }
73
+ },
74
+ async currentKeyId() {
75
+ return (await loadKeyring()).current.keyId;
76
+ },
77
+ async keyStatus() {
78
+ try {
79
+ const { current, byId } = await loadKeyring();
80
+ return {
81
+ configured: true,
82
+ currentKeyId: current.keyId,
83
+ retainedKeyIds: [...byId.keys()].filter((keyId) => keyId !== current.keyId),
84
+ error: null
85
+ };
86
+ }
87
+ catch (error) {
88
+ return {
89
+ configured: false,
90
+ currentKeyId: null,
91
+ retainedKeyIds: [],
92
+ error: error instanceof Error ? error.message : "Data-secrets key is not usable"
93
+ };
94
+ }
95
+ }
96
+ };
97
+ }
98
+ const envSecretsCache = new Map();
99
+ /** The deployment cipher for this env, memoized by key strings so derived keys are reused across requests. */
100
+ export function dataSecretsFromEnv(env) {
101
+ const record = env && typeof env === "object" ? env : {};
102
+ const currentKey = typeof record[dataSecretsKeyEnvName] === "string" ? record[dataSecretsKeyEnvName] : "";
103
+ const retainedKeys = typeof record[dataSecretsRetainedKeysEnvName] === "string" ? record[dataSecretsRetainedKeysEnvName] : "";
104
+ const cacheKey = `${currentKey}\u0000${retainedKeys}`;
105
+ const cached = envSecretsCache.get(cacheKey);
106
+ if (cached)
107
+ return cached;
108
+ const secrets = createDataSecrets({ currentKey, retainedKeys });
109
+ if (envSecretsCache.size >= 16)
110
+ envSecretsCache.delete(envSecretsCache.keys().next().value);
111
+ envSecretsCache.set(cacheKey, secrets);
112
+ return secrets;
113
+ }
114
+ /** The read-side projection of a stored secret: the marker when set, null when not. */
115
+ export function redactSecretValue(value) {
116
+ return value === null || value === undefined || value === "" ? null : raybaseSecretRedacted;
117
+ }
118
+ export function secretColumnNames(table) {
119
+ return Object.entries(table.columns).filter(([, column]) => column.kind === "secret").map(([name]) => name);
120
+ }
121
+ /**
122
+ * Every secret column the deployment holds: app tables keyed by schema key,
123
+ * then manifest system tables (such as an integration's sealed session store)
124
+ * keyed by their physical name.
125
+ */
126
+ export function schemaSecretColumns(schema, systemTables = []) {
127
+ return [
128
+ ...Object.entries(schema.tables).flatMap(([key, table]) => secretColumnNames(table).map((column) => ({ key, table, column }))),
129
+ ...systemTables.flatMap((table) => secretColumnNames(table).map((column) => ({ key: table.name, table, column })))
130
+ ];
131
+ }
132
+ /** Replace secret column values in a raw SQL row (export, operator query) with the redaction marker. */
133
+ export function redactSecretColumns(table, row) {
134
+ const secrets = secretColumnNames(table);
135
+ if (!secrets.length)
136
+ return row;
137
+ const output = { ...row };
138
+ for (const column of secrets) {
139
+ if (column in output)
140
+ output[column] = redactSecretValue(output[column]);
141
+ }
142
+ return output;
143
+ }
144
+ /** The name of every secret column the deployment holds, in app tables and manifest system tables. */
145
+ export function secretColumnKeys(schema, systemTables = []) {
146
+ return new Set(schemaSecretColumns(schema, systemTables).map((target) => target.column));
147
+ }
148
+ /**
149
+ * For records that carry column values outside their table row (tool-call
150
+ * arguments, import inputs, audit metadata): redact, at any depth, every
151
+ * object key named like a secret column. Such a record may predate the column
152
+ * becoming `secret()`, so this is applied where the record is read as well as
153
+ * where it is written. A same-named ordinary column in another table is
154
+ * redacted too, which is the safe direction.
155
+ */
156
+ export function redactSecretColumnKeys(columns, value) {
157
+ if (!columns.size || value === null || typeof value !== "object")
158
+ return value;
159
+ if (Array.isArray(value))
160
+ return value.map((item) => redactSecretColumnKeys(columns, item));
161
+ const output = {};
162
+ for (const [key, entry] of Object.entries(value)) {
163
+ output[key] = columns.has(key) ? redactSecretValue(entry) : redactSecretColumnKeys(columns, entry);
164
+ }
165
+ return output;
166
+ }
167
+ export function isDataSecretEnvelope(value) {
168
+ return typeof value === "string" && parseEnvelope(value) !== null;
169
+ }
170
+ /** The key id a stored value was sealed with; null for legacy plaintext. */
171
+ export function dataSecretKeyId(value) {
172
+ return parseEnvelope(value)?.keyId ?? null;
173
+ }
174
+ export function assertSecretPlaintext(value, scope) {
175
+ const label = scope ? `${scope.table}.${scope.column}` : "Secret value";
176
+ if (typeof value !== "string")
177
+ throw new RaybaseDataSecretError("data_secret_invalid", `${label} must be a string`);
178
+ if (!value.trim())
179
+ throw new RaybaseDataSecretError("data_secret_invalid", `${label} must not be empty; write null to clear a secret`);
180
+ if (encoder.encode(value).byteLength > dataSecretLimits.maxPlaintextBytes) {
181
+ throw new RaybaseDataSecretError("data_secret_invalid", `${label} exceeds ${dataSecretLimits.maxPlaintextBytes} bytes`);
182
+ }
183
+ }
184
+ const currentPrefixLength = envelopeVersion.length + 1 + 12 + 1;
185
+ /** Count secret values by key, without decrypting anything. */
186
+ export async function readDataSecretsStatus(input) {
187
+ const key = await input.secrets.keyStatus();
188
+ const retainedIds = new Set(key.retainedKeyIds);
189
+ const columns = [];
190
+ for (const { key: tableKey, table, column } of schemaSecretColumns(input.schema, input.systemTables)) {
191
+ const groups = await input.executorFor(tableKey).all(`SELECT CASE WHEN substr(${q(column)}, 1, ${envelopeVersion.length + 1}) = '${envelopeVersion}.' THEN substr(${q(column)}, ${envelopeVersion.length + 2}, 12) ELSE NULL END AS "keyId", COUNT(*) AS "count"
192
+ FROM ${q(table.name)} WHERE ${q(column)} IS NOT NULL AND ${q(column)} != '' GROUP BY "keyId"`);
193
+ const status = { table: table.name, column, set: 0, current: 0, retained: {}, unknownKey: {}, legacyPlaintext: 0 };
194
+ for (const group of groups) {
195
+ const count = Number(group.count);
196
+ status.set += count;
197
+ if (group.keyId === null)
198
+ status.legacyPlaintext += count;
199
+ else if (group.keyId === key.currentKeyId)
200
+ status.current += count;
201
+ else if (retainedIds.has(group.keyId))
202
+ status.retained[group.keyId] = count;
203
+ else
204
+ status.unknownKey[group.keyId] = count;
205
+ }
206
+ columns.push(status);
207
+ }
208
+ return { key, columns, current: columns.every((column) => column.current === column.set) };
209
+ }
210
+ /**
211
+ * Re-seal every secret value not under the current key: values sealed with a
212
+ * retained key, and legacy plaintext left by turning an existing column into
213
+ * `secret()`. Bounded per call; pass `cursor` back until `done`. Each write is
214
+ * compare-and-swap on the old stored value, so a concurrent write wins.
215
+ */
216
+ export async function resealDataSecrets(input) {
217
+ const currentKeyId = await input.secrets.currentKeyId();
218
+ const currentPrefix = `${envelopeVersion}.${currentKeyId}.`;
219
+ const limit = Math.min(Math.max(Math.trunc(input.limit ?? dataSecretLimits.defaultResealBatch), 1), dataSecretLimits.maxResealBatch);
220
+ const targets = schemaSecretColumns(input.schema, input.systemTables);
221
+ const result = {
222
+ currentKeyId,
223
+ resealed: 0,
224
+ sealed: 0,
225
+ unreadable: [],
226
+ unreadableCount: 0,
227
+ cursor: null,
228
+ done: false
229
+ };
230
+ let startIndex = 0;
231
+ let afterId = null;
232
+ if (input.cursor) {
233
+ startIndex = targets.findIndex((target) => target.table.name === input.cursor.table && target.column === input.cursor.column);
234
+ if (startIndex < 0)
235
+ throw new RaybaseDataSecretError("data_secret_invalid", "Reseal cursor does not name a secret column in this schema");
236
+ afterId = input.cursor.afterId;
237
+ }
238
+ let budget = limit;
239
+ for (let index = startIndex; index < targets.length; index += 1) {
240
+ const { key: tableKey, table, column } = targets[index];
241
+ const executor = input.executorFor(tableKey);
242
+ while (budget > 0) {
243
+ const batchLimit = budget;
244
+ const rows = await executor.all(`SELECT "id", ${q(column)} AS "value" FROM ${q(table.name)}
245
+ WHERE ${q(column)} IS NOT NULL AND ${q(column)} != '' AND substr(${q(column)}, 1, ${currentPrefixLength}) != ?
246
+ ${afterId === null ? "" : `AND "id" > ?`}
247
+ ORDER BY "id" LIMIT ?`, afterId === null ? [currentPrefix, batchLimit] : [currentPrefix, afterId, batchLimit]);
248
+ for (const row of rows) {
249
+ const scope = { table: table.name, column, rowId: String(row.id) };
250
+ afterId = String(row.id);
251
+ budget -= 1;
252
+ let opened;
253
+ try {
254
+ opened = await input.secrets.open(scope, row.value);
255
+ assertSecretPlaintext(opened.value, scope);
256
+ }
257
+ catch (error) {
258
+ result.unreadableCount += 1;
259
+ if (result.unreadable.length < dataSecretLimits.maxReportedUnreadable) {
260
+ result.unreadable.push({ table: table.name, column, id: scope.rowId, code: error instanceof RaybaseDataSecretError ? error.code : "unknown" });
261
+ }
262
+ continue;
263
+ }
264
+ const sealed = await input.secrets.seal(scope, opened.value);
265
+ await executor.run(`UPDATE ${q(table.name)} SET ${q(column)} = ? WHERE "id" = ? AND ${q(column)} = ?`, [sealed, scope.rowId, row.value]);
266
+ if (opened.legacyPlaintext)
267
+ result.sealed += 1;
268
+ else
269
+ result.resealed += 1;
270
+ }
271
+ if (rows.length < batchLimit)
272
+ break;
273
+ }
274
+ if (budget === 0) {
275
+ result.cursor = { table: table.name, column, afterId };
276
+ return result;
277
+ }
278
+ afterId = null;
279
+ }
280
+ result.done = true;
281
+ return result;
282
+ }
283
+ function splitRetainedKeys(value) {
284
+ const entries = typeof value === "string" ? value.split(/[\s,]+/) : [...(value ?? [])];
285
+ return entries.map((entry) => entry.trim()).filter(Boolean);
286
+ }
287
+ async function deriveKeyring(currentKey, retainedKeys) {
288
+ if (!currentKey?.trim()) {
289
+ throw new RaybaseDataSecretError("data_secrets_key_missing", `${dataSecretsKeyEnvName} is not configured. Secret columns cannot be written or revealed without it; run raybase data-secrets enable.`);
290
+ }
291
+ const labelled = [
292
+ { label: dataSecretsKeyEnvName, value: currentKey },
293
+ ...retainedKeys.map((value, index) => ({ label: `${dataSecretsRetainedKeysEnvName} entry ${index + 1}`, value }))
294
+ ];
295
+ const derived = [];
296
+ for (const { label, value } of labelled)
297
+ derived.push(await deriveKey(decodeKeyMaterial(value, label)));
298
+ // A retained copy of the current key is harmless and expected mid-rotation,
299
+ // when the retained list is uploaded before the new current key.
300
+ const byId = new Map();
301
+ for (const entry of derived)
302
+ if (!byId.has(entry.keyId))
303
+ byId.set(entry.keyId, entry);
304
+ return { current: derived[0], byId };
305
+ }
306
+ function decodeKeyMaterial(value, label) {
307
+ const normalized = value.trim().replace(/-/g, "+").replace(/_/g, "/");
308
+ if (!/^[A-Za-z0-9+/]+={0,2}$/.test(normalized)) {
309
+ throw new RaybaseDataSecretError("data_secrets_key_invalid", `${label} must be base64 or base64url encoded`);
310
+ }
311
+ let bytes;
312
+ try {
313
+ bytes = Uint8Array.from(atob(normalized.padEnd(Math.ceil(normalized.length / 4) * 4, "=")), (char) => char.charCodeAt(0));
314
+ }
315
+ catch {
316
+ throw new RaybaseDataSecretError("data_secrets_key_invalid", `${label} is not valid base64`);
317
+ }
318
+ if (bytes.byteLength < 32) {
319
+ throw new RaybaseDataSecretError("data_secrets_key_invalid", `${label} must contain at least 256 bits of random key material`);
320
+ }
321
+ if (new Set(bytes).size < 16) {
322
+ bytes.fill(0);
323
+ throw new RaybaseDataSecretError("data_secrets_key_invalid", `${label} does not contain enough entropy`);
324
+ }
325
+ return bytes;
326
+ }
327
+ async function deriveKey(material) {
328
+ try {
329
+ const source = await crypto.subtle.importKey("raw", bufferSource(material), "HKDF", false, ["deriveKey", "deriveBits"]);
330
+ const salt = bufferSource(encoder.encode("raybase/data-secrets/v1"));
331
+ const keyIdBits = await crypto.subtle.deriveBits({ name: "HKDF", hash: "SHA-256", salt, info: bufferSource(encoder.encode("key-id")) }, source, keyIdBytes * 8);
332
+ const key = await crypto.subtle.deriveKey({ name: "HKDF", hash: "SHA-256", salt, info: bufferSource(encoder.encode("aes-256-gcm")) }, source, { name: "AES-GCM", length: 256 }, false, ["encrypt", "decrypt"]);
333
+ return { keyId: base64Url(new Uint8Array(keyIdBits)), key };
334
+ }
335
+ finally {
336
+ material.fill(0);
337
+ }
338
+ }
339
+ function parseEnvelope(value) {
340
+ const parts = value.split(".");
341
+ if (parts.length !== 4 || parts[0] !== envelopeVersion || !keyIdPattern.test(parts[1]))
342
+ return null;
343
+ const nonce = fromBase64Url(parts[2]);
344
+ const ciphertext = fromBase64Url(parts[3]);
345
+ // A GCM ciphertext carries at least its 16-byte authentication tag.
346
+ if (!nonce || nonce.byteLength !== 12 || !ciphertext || ciphertext.byteLength < 17)
347
+ return null;
348
+ return { keyId: parts[1], nonce, ciphertext };
349
+ }
350
+ function aad(keyId, scope) {
351
+ return encoder.encode(JSON.stringify({
352
+ subsystem: "raybase-data-secret",
353
+ envelope: envelopeVersion,
354
+ keyId,
355
+ table: scope.table,
356
+ column: scope.column,
357
+ rowId: scope.rowId
358
+ }));
359
+ }
360
+ function describeScope(scope) {
361
+ return `Secret ${scope.table}.${scope.column} on row ${scope.rowId}`;
362
+ }
363
+ function base64Url(bytes) {
364
+ let binary = "";
365
+ for (const byte of bytes)
366
+ binary += String.fromCharCode(byte);
367
+ return btoa(binary).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/g, "");
368
+ }
369
+ function fromBase64Url(value) {
370
+ if (!/^[A-Za-z0-9_-]+$/.test(value))
371
+ return null;
372
+ try {
373
+ const base64 = value.replace(/-/g, "+").replace(/_/g, "/").padEnd(Math.ceil(value.length / 4) * 4, "=");
374
+ return Uint8Array.from(atob(base64), (char) => char.charCodeAt(0));
375
+ }
376
+ catch {
377
+ return null;
378
+ }
379
+ }
380
+ function bufferSource(bytes) {
381
+ return bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength);
382
+ }
383
+ //# sourceMappingURL=data-secrets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-secrets.js","sourceRoot":"","sources":["../src/data-secrets.ts"],"names":[],"mappings":"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"}