@raybase/core 0.0.1 → 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
package/dist/db.js ADDED
@@ -0,0 +1,324 @@
1
+ import { createDataClient } from "./data-client.js";
2
+ import { dataSecretsFromEnv } from "./data-secrets.js";
3
+ import { recordAudit } from "./audit.js";
4
+ import { realtimeSchemaFromRaybaseSchema, resolveRealtimeConfig } from "./realtime.js";
5
+ import { bindRaybaseExecutorEnv, raybaseRuntimeProfile } from "./platform.js";
6
+ import { schemaSql } from "./schema.js";
7
+ import { sha256Hex } from "./internal.js";
8
+ import { servicePrincipal } from "./principal.js";
9
+ import { authAccountTableName, authPasskeyTableName, authSessionTableName, authUserTableName, authVerificationTableName } from "./auth-schema.js";
10
+ import { importRowsTableName, importRunsTableName } from "./imports.js";
11
+ import { raybaseSearchDocumentsTableName, raybaseSearchFtsTableName, raybaseSearchReindexRunsTableName } from "./search.js";
12
+ import { RaybaseBackupError } from "./backup-crypto.js";
13
+ export const backupDatabaseProtocolLimits = {
14
+ defaultPageBytes: 256 * 1024,
15
+ maximumPageBytes: 2 * 1024 * 1024,
16
+ defaultPageRows: 250,
17
+ maximumPageRows: 1_000,
18
+ smallSnapshotDatabaseBytes: 2 * 1024 * 1024,
19
+ smallSnapshotLogicalBytes: 4 * 1024 * 1024,
20
+ maximumTables: 1_024,
21
+ maximumRestoreBatchBytes: 2 * 1024 * 1024,
22
+ maximumRestoreBatchRecords: 1_000
23
+ };
24
+ export const raybaseBackupStateTableName = "_raybase_backup_state";
25
+ export const raybaseBackupRestoreJournalTableName = "_raybase_restore_journal";
26
+ export const raybaseBackupRestoreSchemasTableName = "_raybase_restore_schemas";
27
+ export const raybaseBackupRestoreSessionsTableName = "_raybase_restore_sessions";
28
+ /** Internal restore/snapshot state must never be exposed as application data. */
29
+ export function isRaybaseBackupOperationalTableName(name) {
30
+ return name === raybaseBackupStateTableName ||
31
+ name === raybaseBackupRestoreJournalTableName ||
32
+ name === raybaseBackupRestoreSchemasTableName ||
33
+ name === raybaseBackupRestoreSessionsTableName;
34
+ }
35
+ /**
36
+ * Retry an optimistic snapshot attempt without ever combining bytes from two
37
+ * generations. The callback must discard all output from a failed attempt.
38
+ */
39
+ export async function retryConsistentBackupSnapshot(runAttempt, options = {}) {
40
+ const maxAttempts = Math.min(Math.max(Math.trunc(options.maxAttempts ?? 3), 1), 10);
41
+ const delay = options.delay ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
42
+ const baseDelayMs = Math.min(Math.max(Math.trunc(options.baseDelayMs ?? 50), 0), 5_000);
43
+ for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {
44
+ try {
45
+ return await runAttempt(attempt);
46
+ }
47
+ catch (error) {
48
+ const inconsistent = error instanceof RaybaseBackupError &&
49
+ error.code === "BACKUP_SNAPSHOT_INCONSISTENT";
50
+ if (!inconsistent)
51
+ throw error;
52
+ if (attempt === maxAttempts) {
53
+ throw new RaybaseBackupError("BACKUP_DATABASE_TOO_HOT", `Database changed during ${maxAttempts} consecutive snapshot attempts`);
54
+ }
55
+ await delay(baseDelayMs * 2 ** (attempt - 1));
56
+ }
57
+ }
58
+ throw new RaybaseBackupError("BACKUP_DATABASE_TOO_HOT", "Database is too hot for a consistent backup");
59
+ }
60
+ export const controlTableNames = new Set([
61
+ authUserTableName,
62
+ authSessionTableName,
63
+ authAccountTableName,
64
+ authVerificationTableName,
65
+ authPasskeyTableName,
66
+ "_invites",
67
+ "_auth_pending",
68
+ "_used_tokens",
69
+ "_audit",
70
+ "_audit_archives",
71
+ "_job_runs",
72
+ "_job_events",
73
+ "_job_schedules",
74
+ "_job_stats_daily",
75
+ "_job_batches",
76
+ "_job_rate_buckets",
77
+ "_changes",
78
+ "_state",
79
+ "_settings",
80
+ "_schema_versions",
81
+ importRunsTableName,
82
+ importRowsTableName,
83
+ raybaseSearchDocumentsTableName,
84
+ raybaseSearchReindexRunsTableName,
85
+ raybaseSearchFtsTableName,
86
+ "_search_fts_data",
87
+ "_search_fts_idx",
88
+ "_search_fts_content",
89
+ "_search_fts_docsize",
90
+ "_search_fts_config"
91
+ ]);
92
+ const singletonDatabaseName = "default";
93
+ const ensuredDoSchemas = new Set();
94
+ const ensuringDoSchemas = new Map();
95
+ function systemTablesCacheKey(systemTables = []) {
96
+ return JSON.stringify(systemTables.map((table) => ({
97
+ name: table.name,
98
+ columns: table.columns,
99
+ indexes: table.indexes
100
+ })));
101
+ }
102
+ async function schemaBundle(schema, appMigrations, systemTables) {
103
+ const cloneableSystemTables = systemTables?.map((table) => ({
104
+ name: table.name,
105
+ columns: table.columns,
106
+ drizzleTable: undefined,
107
+ label: table.label,
108
+ system: true,
109
+ indexes: table.indexes,
110
+ operatorVisible: table.operatorVisible
111
+ }));
112
+ if (appMigrations !== undefined) {
113
+ if (!appMigrations.length && Object.keys(schema.tables).length) {
114
+ throw new Error("App migration bundle is empty. Run raybase migrate to generate src/db/migrations.gen.ts before touching app data.");
115
+ }
116
+ return { migrations: appMigrations, systemTables: cloneableSystemTables };
117
+ }
118
+ if (!Object.keys(schema.tables).length)
119
+ return { migrations: [], systemTables: cloneableSystemTables };
120
+ // Legacy fallback for apps that predate generated migration bundles: a single
121
+ // full-schema migration keyed by content checksum. It cannot evolve existing
122
+ // tables (no ALTERs), which is why doctor requires the generated bundle.
123
+ const sql = schemaSql(schema);
124
+ const checksum = await sha256Hex(sql);
125
+ return {
126
+ systemTables: cloneableSystemTables,
127
+ migrations: [
128
+ {
129
+ name: `schema-${checksum.slice(0, 16)}`,
130
+ checksum,
131
+ sql
132
+ }
133
+ ]
134
+ };
135
+ }
136
+ export function dataStub(env) {
137
+ const profiled = raybaseRuntimeProfile(env)?.database?.dataStub;
138
+ if (profiled)
139
+ return profiled(env);
140
+ if (!env.RAYBASE_DATA)
141
+ throw new Error("RAYBASE_DATA Durable Object binding is missing");
142
+ return env.RAYBASE_DATA.get(env.RAYBASE_DATA.idFromName(singletonDatabaseName));
143
+ }
144
+ /**
145
+ * Transactional change-log storage plus realtime fanout for any app-data
146
+ * client, including requestless Agent and Job lanes.
147
+ */
148
+ export function realtimeDataContext(env, config, schema) {
149
+ const realtime = resolveRealtimeConfig(config.realtime);
150
+ if (!realtime.enabled)
151
+ return {};
152
+ const snapshot = realtimeSchemaFromRaybaseSchema(schema);
153
+ return {
154
+ realtime,
155
+ notify: async (change) => {
156
+ if (!("seq" in change))
157
+ return;
158
+ await dataStub(env).notifyDataChange({ change, config: realtime, schema: snapshot });
159
+ }
160
+ };
161
+ }
162
+ export function doExecutor(env, schema, appMigrations, options = {}) {
163
+ const stub = dataStub(env);
164
+ const ensure = async () => {
165
+ const bundle = await schemaBundle(schema, appMigrations, options.systemTables);
166
+ const schemaKey = bundle.migrations.length ? bundle.migrations.map((migration) => `${migration.name}:${migration.checksum}`).join(",") : "control";
167
+ const tablesKey = systemTablesCacheKey(bundle.systemTables);
168
+ const addressKey = "id" in stub && stub.id ? String(stub.id) : singletonDatabaseName;
169
+ const key = `${addressKey}:${schemaKey}:${tablesKey}`;
170
+ if (ensuredDoSchemas.has(key))
171
+ return;
172
+ let pending = ensuringDoSchemas.get(key);
173
+ if (!pending) {
174
+ pending = (async () => {
175
+ await stub.ensureSchema(bundle);
176
+ const latest = bundle.migrations.at(-1);
177
+ if (latest) {
178
+ await stub.run(`INSERT OR REPLACE INTO "_schema_versions" ("targetId", "kind", "version", "updatedAt")
179
+ VALUES (?, 'database', ?, ?)`, [singletonDatabaseName, latest.name, new Date().toISOString()]);
180
+ }
181
+ ensuredDoSchemas.add(key);
182
+ })();
183
+ ensuringDoSchemas.set(key, pending);
184
+ }
185
+ try {
186
+ await pending;
187
+ }
188
+ finally {
189
+ if (ensuringDoSchemas.get(key) === pending)
190
+ ensuringDoSchemas.delete(key);
191
+ }
192
+ };
193
+ return bindRaybaseExecutorEnv({
194
+ cacheKey: "id" in stub && stub.id ? String(stub.id) : singletonDatabaseName,
195
+ async all(sql, params = []) {
196
+ await ensure();
197
+ return stub.all(sql, params);
198
+ },
199
+ async first(sql, params = []) {
200
+ await ensure();
201
+ return stub.first(sql, params);
202
+ },
203
+ async run(sql, params = []) {
204
+ await ensure();
205
+ await stub.run(sql, params);
206
+ },
207
+ async runTransaction(statements) {
208
+ await ensure();
209
+ await stub.runTransaction(statements);
210
+ },
211
+ async runWithChange(input) {
212
+ await ensure();
213
+ return stub.runWithChange({
214
+ sql: input.sql,
215
+ params: input.params ?? [],
216
+ change: input.change,
217
+ realtime: input.realtime ?? options.realtime
218
+ });
219
+ }
220
+ }, env);
221
+ }
222
+ const profiledRuntimeSecrets = new WeakMap();
223
+ export function createRaybaseDb(env, schema, appMigrations, options = {}) {
224
+ const secrets = dataSecretsFromEnv(env);
225
+ const profiled = raybaseRuntimeProfile(env)?.database;
226
+ if (profiled) {
227
+ const runtime = profiled.create(env, schema, appMigrations, options);
228
+ // Patched in place, not copied: a profile's own forService() reaches the
229
+ // data client through its runtime object's for(), and must get the cipher too.
230
+ if (!profiledRuntimeSecrets.has(runtime)) {
231
+ const profiledFor = runtime.for;
232
+ runtime.for = (ctx) => profiledFor.call(runtime, { ...ctx, secrets: ctx.secrets ?? profiledRuntimeSecrets.get(runtime) });
233
+ }
234
+ profiledRuntimeSecrets.set(runtime, secrets);
235
+ if (typeof runtime.forService === "function")
236
+ return runtime;
237
+ return {
238
+ ...runtime,
239
+ forService(name) {
240
+ return serviceDataClient(runtime, name);
241
+ }
242
+ };
243
+ }
244
+ const executor = doExecutor(env, schema, appMigrations, options);
245
+ const backend = {
246
+ executorFor() {
247
+ return executor;
248
+ }
249
+ };
250
+ const runtime = {
251
+ for(ctx) {
252
+ return createDataClient(backend, schema, {
253
+ ...ctx,
254
+ secrets: ctx.secrets ?? secrets,
255
+ afterMutation: ctx.afterMutation ?? options.afterMutation
256
+ });
257
+ },
258
+ forService(name) {
259
+ return serviceDataClient(runtime, name);
260
+ },
261
+ appData: executor,
262
+ control: executor,
263
+ executorFor: backend.executorFor
264
+ };
265
+ return runtime;
266
+ }
267
+ function serviceDataClient(runtime, rawName) {
268
+ const name = rawName.trim();
269
+ if (!/^[A-Za-z][A-Za-z0-9_.:-]{0,127}$/.test(name)) {
270
+ throw new Error("Service principal name must start with a letter and contain only letters, numbers, ., :, _, or -");
271
+ }
272
+ const principal = servicePrincipal(name);
273
+ const client = runtime.for({
274
+ principal,
275
+ user: {
276
+ id: `service:${name}`,
277
+ email: `${name.replace(/[^a-z0-9]+/gi, "-").toLowerCase()}@service.raybase.local`,
278
+ name: `Service ${name}`,
279
+ operatorRole: null,
280
+ appRoles: []
281
+ },
282
+ audit: (event) => recordAudit(runtime.control, {
283
+ actor: principal,
284
+ action: event.action,
285
+ target: event.target,
286
+ metadata: event.metadata,
287
+ source: event.source
288
+ })
289
+ });
290
+ const auditRead = (action, tableName, metadata) => recordAudit(runtime.control, {
291
+ actor: principal,
292
+ action,
293
+ target: { type: tableName },
294
+ metadata,
295
+ source: { surface: "service-data", service: name }
296
+ });
297
+ return {
298
+ assertReadable: client.assertReadable,
299
+ async list(tableName, options) {
300
+ const result = await client.list(tableName, options);
301
+ await auditRead("data.list", tableName, {
302
+ returned: result.rows.length,
303
+ total: result.total,
304
+ limit: options?.limit ?? null,
305
+ offset: options?.offset ?? null
306
+ });
307
+ return result;
308
+ },
309
+ async get(tableName, id) {
310
+ const result = await client.get(tableName, id);
311
+ await auditRead("data.get", tableName, { id, found: result !== null });
312
+ return result;
313
+ },
314
+ async authorize(tableName, action, id, newRow) {
315
+ const allowed = await client.authorize(tableName, action, id, newRow);
316
+ await auditRead("data.authorize", tableName, { action, id: id ?? null, allowed });
317
+ return allowed;
318
+ },
319
+ create: client.create,
320
+ update: client.update,
321
+ delete: client.delete
322
+ };
323
+ }
324
+ //# sourceMappingURL=db.js.map
package/dist/db.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import type { SqlExecutor } from "./db.js";
2
+ /**
3
+ * What the runtime is in the middle of, for local dev tooling to consult
4
+ * before it takes the runtime away.
5
+ *
6
+ * A restart is not the same event as a hot update. A hot update leaves work in
7
+ * flight alone — modules are re-fetched per request and running work keeps its
8
+ * own code. A restart ends the isolate, and an agent turn dies with it: turns
9
+ * run detached under `ctx.waitUntil`, so nothing is holding them and nothing
10
+ * notices they are gone. The run row stays `running` until the staleness
11
+ * horizon fails it, which is why an interrupted turn shows as a spinner for
12
+ * five minutes and then has nothing to show.
13
+ *
14
+ * The rule this encodes: **report work that is executing, never work that is
15
+ * waiting.** A queued job run is durable and survives a restart untouched; a
16
+ * queued agent request is re-drained when the object next wakes. Holding for
17
+ * either would mean a dev server that rarely restarts, for no gain. A leased
18
+ * job whose lease has expired has no live worker either, so it does not count.
19
+ */
20
+ export type RaybaseDevActivityRun = {
21
+ runId: string;
22
+ agentName: string;
23
+ conversationId: string;
24
+ status: string;
25
+ startedAt: string;
26
+ };
27
+ export type RaybaseDevActivityJob = {
28
+ id: string;
29
+ jobName: string;
30
+ status: string;
31
+ startedAt: string | null;
32
+ leaseExpiresAt: string | null;
33
+ };
34
+ export type RaybaseDevActivity = {
35
+ /** True while ending the runtime now would destroy work nothing will retry. */
36
+ busy: boolean;
37
+ checkedAt: string;
38
+ /** The window a `running` row is believed within — Core's own staleness horizon. */
39
+ horizonSeconds: number;
40
+ runs: RaybaseDevActivityRun[];
41
+ jobs: RaybaseDevActivityJob[];
42
+ };
43
+ export declare function readRaybaseDevActivity(control: SqlExecutor, options?: {
44
+ now?: string;
45
+ }): Promise<RaybaseDevActivity>;
46
+ /** One line naming what is executing, for a log the developer will read once. */
47
+ export declare function describeRaybaseDevActivity(activity: RaybaseDevActivity): string;
48
+ //# sourceMappingURL=dev-activity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-activity.d.ts","sourceRoot":"","sources":["../src/dev-activity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG3C;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,+EAA+E;IAC/E,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,oFAAoF;IACpF,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,qBAAqB,EAAE,CAAC;IAC9B,IAAI,EAAE,qBAAqB,EAAE,CAAC;CAC/B,CAAC;AAuBF,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,WAAW,EACpB,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAC7B,OAAO,CAAC,kBAAkB,CAAC,CA+B7B;AAED,iFAAiF;AACjF,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,CAO/E"}
@@ -0,0 +1,50 @@
1
+ import { activeAgentRunStaleSeconds } from "./agent.js";
2
+ import { nowIso, q } from "./sql.js";
3
+ /** Enough to name what is holding things up; this is a signal, not a report. */
4
+ const activityRowLimit = 10;
5
+ /**
6
+ * A control table that does not exist yet is not an error here — an app with no
7
+ * agents has no `_agent_runs`, and one with no jobs has no `_job_runs`. Either
8
+ * way the answer is "nothing executing", and dev tooling must never wedge
9
+ * because a probe found less than it expected.
10
+ */
11
+ async function rowsOrNone(control, sql, params) {
12
+ try {
13
+ return await control.all(sql, params);
14
+ }
15
+ catch {
16
+ return [];
17
+ }
18
+ }
19
+ export async function readRaybaseDevActivity(control, options = {}) {
20
+ const checkedAt = options.now ?? nowIso();
21
+ const startedAfter = new Date(new Date(checkedAt).getTime() - activeAgentRunStaleSeconds * 1000).toISOString();
22
+ const runs = await rowsOrNone(control, `SELECT "runId", "agentName", "conversationId", "status", "startedAt"
23
+ FROM ${q("_agent_runs")}
24
+ WHERE "status" = 'running' AND COALESCE("heartbeatAt", "startedAt") > ?
25
+ ORDER BY "startedAt" DESC LIMIT ?`, [startedAfter, activityRowLimit]);
26
+ const jobs = await rowsOrNone(control, `SELECT "id", "jobName", "status", "startedAt", "leaseExpiresAt"
27
+ FROM ${q("_job_runs")}
28
+ WHERE "status" IN ('leased', 'running')
29
+ AND ("leaseExpiresAt" IS NULL OR "leaseExpiresAt" > ?)
30
+ AND COALESCE("startedAt", "createdAt") > ?
31
+ ORDER BY COALESCE("startedAt", "createdAt") DESC LIMIT ?`, [checkedAt, startedAfter, activityRowLimit]);
32
+ return {
33
+ busy: runs.length > 0 || jobs.length > 0,
34
+ checkedAt,
35
+ horizonSeconds: activeAgentRunStaleSeconds,
36
+ runs,
37
+ jobs
38
+ };
39
+ }
40
+ /** One line naming what is executing, for a log the developer will read once. */
41
+ export function describeRaybaseDevActivity(activity) {
42
+ const parts = [
43
+ ...activity.runs.map((run) => `${run.agentName} is mid-turn (run ${run.runId})`),
44
+ ...activity.jobs.map((job) => `job ${job.jobName} is running (${job.id})`)
45
+ ];
46
+ if (!parts.length)
47
+ return "nothing executing";
48
+ return parts.length <= 2 ? parts.join(" and ") : `${parts.slice(0, 2).join(", ")} and ${parts.length - 2} more`;
49
+ }
50
+ //# sourceMappingURL=dev-activity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-activity.js","sourceRoot":"","sources":["../src/dev-activity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAExD,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AA8CrC,gFAAgF;AAChF,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAE5B;;;;;GAKG;AACH,KAAK,UAAU,UAAU,CACvB,OAAoB,EACpB,GAAW,EACX,MAA8B;IAE9B,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,GAAG,CAAI,GAAG,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAoB,EACpB,UAA4B,EAAE;IAE9B,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC;IAC1C,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,0BAA0B,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IAE/G,MAAM,IAAI,GAAG,MAAM,UAAU,CAC3B,OAAO,EACP;cACU,CAAC,CAAC,aAAa,CAAC;;wCAEU,EACpC,CAAC,YAAY,EAAE,gBAAgB,CAAC,CACjC,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,UAAU,CAC3B,OAAO,EACP;cACU,CAAC,CAAC,WAAW,CAAC;;;;+DAImC,EAC3D,CAAC,SAAS,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAC5C,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QACxC,SAAS;QACT,cAAc,EAAE,0BAA0B;QAC1C,IAAI;QACJ,IAAI;KACL,CAAC;AACJ,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,0BAA0B,CAAC,QAA4B;IACrE,MAAM,KAAK,GAAG;QACZ,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS,qBAAqB,GAAG,CAAC,KAAK,GAAG,CAAC;QAChF,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,CAAC,OAAO,gBAAgB,GAAG,CAAC,EAAE,GAAG,CAAC;KAC3E,CAAC;IACF,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,mBAAmB,CAAC;IAC9C,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC;AAClH,CAAC"}