@rudderhq/server 0.6.6-canary.2 → 0.6.6-canary.21

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 (291) hide show
  1. package/dist/bootstrap/register-api-routes.d.ts.map +1 -1
  2. package/dist/bootstrap/register-api-routes.js +2 -0
  3. package/dist/bootstrap/register-api-routes.js.map +1 -1
  4. package/dist/bundled-plugins/plugin-linear/dist/worker.js +77 -5
  5. package/dist/bundled-plugins/plugin-linear/dist/worker.js.map +3 -3
  6. package/dist/routes/access.d.ts.map +1 -1
  7. package/dist/routes/access.js +6 -0
  8. package/dist/routes/access.js.map +1 -1
  9. package/dist/routes/app-builder.d.ts +3 -0
  10. package/dist/routes/app-builder.d.ts.map +1 -0
  11. package/dist/routes/app-builder.js +305 -0
  12. package/dist/routes/app-builder.js.map +1 -0
  13. package/dist/routes/health.d.ts.map +1 -1
  14. package/dist/routes/health.js +1 -0
  15. package/dist/routes/health.js.map +1 -1
  16. package/dist/routes/index.d.ts +1 -0
  17. package/dist/routes/index.d.ts.map +1 -1
  18. package/dist/routes/index.js +1 -0
  19. package/dist/routes/index.js.map +1 -1
  20. package/dist/routes/issues.mutations.d.ts.map +1 -1
  21. package/dist/routes/issues.mutations.js +1 -5
  22. package/dist/routes/issues.mutations.js.map +1 -1
  23. package/dist/services/agent-run-context.d.ts.map +1 -1
  24. package/dist/services/agent-run-context.js +8 -2
  25. package/dist/services/agent-run-context.js.map +1 -1
  26. package/dist/services/agents.d.ts +13 -13
  27. package/dist/services/app-builder.d.ts +13 -0
  28. package/dist/services/app-builder.d.ts.map +1 -0
  29. package/dist/services/app-builder.js +241 -0
  30. package/dist/services/app-builder.js.map +1 -0
  31. package/dist/services/approvals.d.ts +3 -3
  32. package/dist/services/budgets.d.ts +1 -6
  33. package/dist/services/budgets.d.ts.map +1 -1
  34. package/dist/services/budgets.js +30 -103
  35. package/dist/services/budgets.js.map +1 -1
  36. package/dist/services/chat-annotation-copy-lineage.d.ts.map +1 -1
  37. package/dist/services/chat-annotation-copy-lineage.js +6 -1
  38. package/dist/services/chat-annotation-copy-lineage.js.map +1 -1
  39. package/dist/services/chat-assistant.annotations.d.ts.map +1 -1
  40. package/dist/services/chat-assistant.annotations.js +4 -1
  41. package/dist/services/chat-assistant.annotations.js.map +1 -1
  42. package/dist/services/chat-assistant.annotations.test.js +18 -2
  43. package/dist/services/chat-assistant.annotations.test.js.map +1 -1
  44. package/dist/services/chat-inline-annotation-validation.d.ts.map +1 -1
  45. package/dist/services/chat-inline-annotation-validation.js +75 -7
  46. package/dist/services/chat-inline-annotation-validation.js.map +1 -1
  47. package/dist/services/chat-inline-annotations.test.js +113 -0
  48. package/dist/services/chat-inline-annotations.test.js.map +1 -1
  49. package/dist/services/chat-message-branch.d.ts +5 -0
  50. package/dist/services/chat-message-branch.d.ts.map +1 -0
  51. package/dist/services/chat-message-branch.js +9 -0
  52. package/dist/services/chat-message-branch.js.map +1 -0
  53. package/dist/services/chat-work-manifest.d.ts.map +1 -1
  54. package/dist/services/chat-work-manifest.js +6 -0
  55. package/dist/services/chat-work-manifest.js.map +1 -1
  56. package/dist/services/chats.d.ts +12 -12
  57. package/dist/services/chats.d.ts.map +1 -1
  58. package/dist/services/chats.inline-visual-persistence.d.ts.map +1 -1
  59. package/dist/services/chats.inline-visual-persistence.js +7 -0
  60. package/dist/services/chats.inline-visual-persistence.js.map +1 -1
  61. package/dist/services/chats.js +12 -11
  62. package/dist/services/chats.js.map +1 -1
  63. package/dist/services/dashboard.d.ts +0 -1
  64. package/dist/services/dashboard.d.ts.map +1 -1
  65. package/dist/services/dashboard.js +0 -1
  66. package/dist/services/dashboard.js.map +1 -1
  67. package/dist/services/index.d.ts +1 -0
  68. package/dist/services/index.d.ts.map +1 -1
  69. package/dist/services/index.js +1 -0
  70. package/dist/services/index.js.map +1 -1
  71. package/dist/services/instance-settings.d.ts.map +1 -1
  72. package/dist/services/instance-settings.js +4 -6
  73. package/dist/services/instance-settings.js.map +1 -1
  74. package/dist/services/issue-approvals.d.ts +1 -1
  75. package/dist/services/issues.d.ts +2 -2
  76. package/dist/services/knowledge-portability/organization-skills.d.ts.map +1 -1
  77. package/dist/services/knowledge-portability/organization-skills.js +6 -2
  78. package/dist/services/knowledge-portability/organization-skills.js.map +1 -1
  79. package/dist/services/legacy-operator-state.d.ts +14 -0
  80. package/dist/services/legacy-operator-state.d.ts.map +1 -0
  81. package/dist/services/legacy-operator-state.js +245 -0
  82. package/dist/services/legacy-operator-state.js.map +1 -0
  83. package/dist/services/local-account-auth.d.ts.map +1 -1
  84. package/dist/services/local-account-auth.js +21 -3
  85. package/dist/services/local-account-auth.js.map +1 -1
  86. package/dist/services/messenger.d.ts +3 -3
  87. package/dist/services/orgs.d.ts +1 -1
  88. package/dist/services/projects.d.ts +1 -1
  89. package/dist/services/runtime-kernel/heartbeat.d.ts.map +1 -1
  90. package/dist/services/runtime-kernel/heartbeat.misc.d.ts.map +1 -1
  91. package/dist/services/runtime-kernel/heartbeat.misc.js +5 -10
  92. package/dist/services/runtime-kernel/heartbeat.misc.js.map +1 -1
  93. package/dist/services/secrets.d.ts +1 -1
  94. package/dist/services/side-chats.d.ts.map +1 -1
  95. package/dist/services/side-chats.js +30 -15
  96. package/dist/services/side-chats.js.map +1 -1
  97. package/package.json +14 -14
  98. package/resources/bundled-skills/app-builder/SKILL.md +87 -0
  99. package/resources/bundled-skills/app-builder/agents/openai.yaml +14 -0
  100. package/resources/bundled-skills/app-builder/assets/scaffold/.env.example +3 -0
  101. package/resources/bundled-skills/app-builder/assets/scaffold/app/api/%5F%5Frudder/health/route.ts +20 -0
  102. package/resources/bundled-skills/app-builder/assets/scaffold/app/api/contacts/[id]/route.ts +39 -0
  103. package/resources/bundled-skills/app-builder/assets/scaffold/app/api/contacts/route.ts +31 -0
  104. package/resources/bundled-skills/app-builder/assets/scaffold/app/api/data/export/route.ts +19 -0
  105. package/resources/bundled-skills/app-builder/assets/scaffold/app/api/data/import/route.ts +40 -0
  106. package/resources/bundled-skills/app-builder/assets/scaffold/app/globals.css +32 -0
  107. package/resources/bundled-skills/app-builder/assets/scaffold/app/layout.tsx +15 -0
  108. package/resources/bundled-skills/app-builder/assets/scaffold/app/page.tsx +9 -0
  109. package/resources/bundled-skills/app-builder/assets/scaffold/components/contacts-workspace.tsx +292 -0
  110. package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/button.tsx +42 -0
  111. package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/card.tsx +19 -0
  112. package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/input.tsx +17 -0
  113. package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/label.tsx +6 -0
  114. package/resources/bundled-skills/app-builder/assets/scaffold/data/.gitkeep +1 -0
  115. package/resources/bundled-skills/app-builder/assets/scaffold/drizzle.config.ts +18 -0
  116. package/resources/bundled-skills/app-builder/assets/scaffold/instrumentation.ts +5 -0
  117. package/resources/bundled-skills/app-builder/assets/scaffold/lib/data-transfer.ts +44 -0
  118. package/resources/bundled-skills/app-builder/assets/scaffold/lib/db/client.ts +78 -0
  119. package/resources/bundled-skills/app-builder/assets/scaffold/lib/db/schema.ts +35 -0
  120. package/resources/bundled-skills/app-builder/assets/scaffold/lib/domain.ts +18 -0
  121. package/resources/bundled-skills/app-builder/assets/scaffold/lib/jobs/runner.ts +56 -0
  122. package/resources/bundled-skills/app-builder/assets/scaffold/lib/utils.ts +6 -0
  123. package/resources/bundled-skills/app-builder/assets/scaffold/migrations/0000_app_builder_foundation.sql +27 -0
  124. package/resources/bundled-skills/app-builder/assets/scaffold/migrations/meta/_journal.json +13 -0
  125. package/resources/bundled-skills/app-builder/assets/scaffold/next-env.d.ts +6 -0
  126. package/resources/bundled-skills/app-builder/assets/scaffold/next.config.ts +8 -0
  127. package/resources/bundled-skills/app-builder/assets/scaffold/package.json +47 -0
  128. package/resources/bundled-skills/app-builder/assets/scaffold/playwright.config.ts +30 -0
  129. package/resources/bundled-skills/app-builder/assets/scaffold/pnpm-lock.yaml +2687 -0
  130. package/resources/bundled-skills/app-builder/assets/scaffold/postcss.config.mjs +5 -0
  131. package/resources/bundled-skills/app-builder/assets/scaffold/rudder.app.json +32 -0
  132. package/resources/bundled-skills/app-builder/assets/scaffold/scripts/migrate.ts +21 -0
  133. package/resources/bundled-skills/app-builder/assets/scaffold/scripts/seed.ts +31 -0
  134. package/resources/bundled-skills/app-builder/assets/scaffold/scripts/snapshot.ts +17 -0
  135. package/resources/bundled-skills/app-builder/assets/scaffold/tests/e2e/app.spec.ts +50 -0
  136. package/resources/bundled-skills/app-builder/assets/scaffold/tests/unit/data-transfer.test.ts +28 -0
  137. package/resources/bundled-skills/app-builder/assets/scaffold/tests/unit/domain.test.ts +23 -0
  138. package/resources/bundled-skills/app-builder/assets/scaffold/tsconfig.json +41 -0
  139. package/resources/bundled-skills/app-builder/assets/scaffold/vitest.config.ts +14 -0
  140. package/resources/bundled-skills/app-builder/evals/evals.json +53 -0
  141. package/resources/bundled-skills/app-builder/references/data-safety.md +38 -0
  142. package/resources/bundled-skills/app-builder/references/design-guidelines.md +20 -0
  143. package/resources/bundled-skills/app-builder/references/migrations-and-promotion.md +36 -0
  144. package/resources/bundled-skills/app-builder/references/scaffold-contract.md +62 -0
  145. package/resources/bundled-skills/app-builder/references/verification.md +23 -0
  146. package/resources/bundled-skills/app-builder/scripts/scaffold.mjs +58 -0
  147. package/resources/bundled-skills/app-builder/scripts/validate-manifest.mjs +63 -0
  148. package/skills/app-builder/SKILL.md +87 -0
  149. package/skills/app-builder/agents/openai.yaml +14 -0
  150. package/skills/app-builder/assets/scaffold/.env.example +3 -0
  151. package/skills/app-builder/assets/scaffold/app/api/%5F%5Frudder/health/route.ts +20 -0
  152. package/skills/app-builder/assets/scaffold/app/api/contacts/[id]/route.ts +39 -0
  153. package/skills/app-builder/assets/scaffold/app/api/contacts/route.ts +31 -0
  154. package/skills/app-builder/assets/scaffold/app/api/data/export/route.ts +19 -0
  155. package/skills/app-builder/assets/scaffold/app/api/data/import/route.ts +40 -0
  156. package/skills/app-builder/assets/scaffold/app/globals.css +32 -0
  157. package/skills/app-builder/assets/scaffold/app/layout.tsx +15 -0
  158. package/skills/app-builder/assets/scaffold/app/page.tsx +9 -0
  159. package/skills/app-builder/assets/scaffold/components/contacts-workspace.tsx +292 -0
  160. package/skills/app-builder/assets/scaffold/components/ui/button.tsx +42 -0
  161. package/skills/app-builder/assets/scaffold/components/ui/card.tsx +19 -0
  162. package/skills/app-builder/assets/scaffold/components/ui/input.tsx +17 -0
  163. package/skills/app-builder/assets/scaffold/components/ui/label.tsx +6 -0
  164. package/skills/app-builder/assets/scaffold/data/.gitkeep +1 -0
  165. package/skills/app-builder/assets/scaffold/drizzle.config.ts +18 -0
  166. package/skills/app-builder/assets/scaffold/instrumentation.ts +5 -0
  167. package/skills/app-builder/assets/scaffold/lib/data-transfer.ts +44 -0
  168. package/skills/app-builder/assets/scaffold/lib/db/client.ts +78 -0
  169. package/skills/app-builder/assets/scaffold/lib/db/schema.ts +35 -0
  170. package/skills/app-builder/assets/scaffold/lib/domain.ts +18 -0
  171. package/skills/app-builder/assets/scaffold/lib/jobs/runner.ts +56 -0
  172. package/skills/app-builder/assets/scaffold/lib/utils.ts +6 -0
  173. package/skills/app-builder/assets/scaffold/migrations/0000_app_builder_foundation.sql +27 -0
  174. package/skills/app-builder/assets/scaffold/migrations/meta/_journal.json +13 -0
  175. package/skills/app-builder/assets/scaffold/next-env.d.ts +6 -0
  176. package/skills/app-builder/assets/scaffold/next.config.ts +8 -0
  177. package/skills/app-builder/assets/scaffold/package.json +47 -0
  178. package/skills/app-builder/assets/scaffold/playwright.config.ts +30 -0
  179. package/skills/app-builder/assets/scaffold/pnpm-lock.yaml +2687 -0
  180. package/skills/app-builder/assets/scaffold/postcss.config.mjs +5 -0
  181. package/skills/app-builder/assets/scaffold/rudder.app.json +32 -0
  182. package/skills/app-builder/assets/scaffold/scripts/migrate.ts +21 -0
  183. package/skills/app-builder/assets/scaffold/scripts/seed.ts +31 -0
  184. package/skills/app-builder/assets/scaffold/scripts/snapshot.ts +17 -0
  185. package/skills/app-builder/assets/scaffold/tests/e2e/app.spec.ts +50 -0
  186. package/skills/app-builder/assets/scaffold/tests/unit/data-transfer.test.ts +28 -0
  187. package/skills/app-builder/assets/scaffold/tests/unit/domain.test.ts +23 -0
  188. package/skills/app-builder/assets/scaffold/tsconfig.json +41 -0
  189. package/skills/app-builder/assets/scaffold/vitest.config.ts +14 -0
  190. package/skills/app-builder/evals/evals.json +53 -0
  191. package/skills/app-builder/references/data-safety.md +38 -0
  192. package/skills/app-builder/references/design-guidelines.md +20 -0
  193. package/skills/app-builder/references/migrations-and-promotion.md +36 -0
  194. package/skills/app-builder/references/scaffold-contract.md +62 -0
  195. package/skills/app-builder/references/verification.md +23 -0
  196. package/skills/app-builder/scripts/scaffold.mjs +58 -0
  197. package/skills/app-builder/scripts/validate-manifest.mjs +63 -0
  198. package/ui-dist/assets/LibraryLiveSurface-Cd6wYgzJ.js +1 -0
  199. package/ui-dist/assets/{abnfDiagram-VRR7QNED-BdM6grBK.js → abnfDiagram-VRR7QNED-H2QkzWSq.js} +1 -1
  200. package/ui-dist/assets/{arc-B8Tukeix.js → arc-BIrLdSup.js} +1 -1
  201. package/ui-dist/assets/{architectureDiagram-ZJ3FMSHR-DP_lYJIS.js → architectureDiagram-ZJ3FMSHR-C68uQC9x.js} +1 -1
  202. package/ui-dist/assets/{blockDiagram-677ZJIJ3-D_QKZNjP.js → blockDiagram-677ZJIJ3-DolMzRCT.js} +1 -1
  203. package/ui-dist/assets/{c4Diagram-LMCZKHZV-DJwVavN4.js → c4Diagram-LMCZKHZV-U6f3_L6P.js} +1 -1
  204. package/ui-dist/assets/channel-B_YTptSv.js +1 -0
  205. package/ui-dist/assets/{chunk-2Q5K7J3B-BjdKg2cx.js → chunk-2Q5K7J3B-BRJijXIZ.js} +1 -1
  206. package/ui-dist/assets/{chunk-32BRIVSS-C_u4l725.js → chunk-32BRIVSS-Belug4Vy.js} +1 -1
  207. package/ui-dist/assets/{chunk-5VM5RSS4-DtzEQCc9.js → chunk-5VM5RSS4-BAP9C4WC.js} +1 -1
  208. package/ui-dist/assets/{chunk-EX3LRPZG-Ds_gCBVz.js → chunk-EX3LRPZG-BorLutQY.js} +1 -1
  209. package/ui-dist/assets/{chunk-JWPE2WC7-CHX9VuQf.js → chunk-JWPE2WC7-MCTTrlhK.js} +1 -1
  210. package/ui-dist/assets/{chunk-MOJQB5TN-D_pj9OWe.js → chunk-MOJQB5TN-BEBLFyze.js} +1 -1
  211. package/ui-dist/assets/{chunk-RYQCIY6F-aMYmnUaJ.js → chunk-RYQCIY6F-gzlBaUJ5.js} +1 -1
  212. package/ui-dist/assets/{chunk-V7JOEXUC-Db3LrL-P.js → chunk-V7JOEXUC-Djyk9uKC.js} +1 -1
  213. package/ui-dist/assets/{chunk-VR4S4FIN-BssuUpMr.js → chunk-VR4S4FIN-lxRoHimg.js} +1 -1
  214. package/ui-dist/assets/{chunk-XXDRQBXY-DVzY-_Tv.js → chunk-XXDRQBXY-Ceus5xtJ.js} +1 -1
  215. package/ui-dist/assets/classDiagram-OUVF2IWQ-iR-TAS1r.js +1 -0
  216. package/ui-dist/assets/classDiagram-v2-EOCWNBFH-iR-TAS1r.js +1 -0
  217. package/ui-dist/assets/{cose-bilkent-JH36ORCC-Ch-fM2pW.js → cose-bilkent-JH36ORCC-8gSFuEzG.js} +1 -1
  218. package/ui-dist/assets/{cynefin-VYW2F7L2-C7gJeesr.js → cynefin-VYW2F7L2-Sr3yYkcO.js} +1 -1
  219. package/ui-dist/assets/{cynefinDiagram-TSTJHNR4-BwMpD6aZ.js → cynefinDiagram-TSTJHNR4-BrgLR8Pm.js} +1 -1
  220. package/ui-dist/assets/{dagre-VKFMJZFB-8TgHu2tj.js → dagre-VKFMJZFB-BH4QYWTM.js} +1 -1
  221. package/ui-dist/assets/{diagram-FQU43EPY-ChODej8C.js → diagram-FQU43EPY-hpkOd3am.js} +1 -1
  222. package/ui-dist/assets/{diagram-G47NLZAW-CVq1GXvV.js → diagram-G47NLZAW-CSBB9Flk.js} +1 -1
  223. package/ui-dist/assets/{diagram-NH7WQ7WH-D1IO7xe3.js → diagram-NH7WQ7WH-CgNJflW8.js} +1 -1
  224. package/ui-dist/assets/{diagram-OA4YK3LP-CKlttJto.js → diagram-OA4YK3LP-DqQFUFQv.js} +1 -1
  225. package/ui-dist/assets/{diagram-WEI45ONY-DigjsORo.js → diagram-WEI45ONY-QAnSfiw3.js} +1 -1
  226. package/ui-dist/assets/{ebnfDiagram-CCIWWBDH-CZwO7RGO.js → ebnfDiagram-CCIWWBDH--YVRXF7-.js} +1 -1
  227. package/ui-dist/assets/{erDiagram-Q63AITRT-C3fFVPod.js → erDiagram-Q63AITRT-CRH_K_mE.js} +1 -1
  228. package/ui-dist/assets/{flowDiagram-23GEKE2U-CpccWfFo.js → flowDiagram-23GEKE2U-CwyXvJ5b.js} +1 -1
  229. package/ui-dist/assets/{ganttDiagram-NO4QXBWP-g3KL--4W.js → ganttDiagram-NO4QXBWP-B41Y9cwF.js} +1 -1
  230. package/ui-dist/assets/{gitGraphDiagram-IHSO6WYX-Bn59AW1B.js → gitGraphDiagram-IHSO6WYX-CW7LKrym.js} +1 -1
  231. package/ui-dist/assets/{graph-LZSMW9ku.js → graph-B2oDVjJO.js} +1 -1
  232. package/ui-dist/assets/{index-CrU5g0XU.js → index-3zFxfIXc.js} +565 -561
  233. package/ui-dist/assets/index-BDWwQIJI.js +1 -0
  234. package/ui-dist/assets/{index-CVwGLbgm.js → index-BOLgWo9p.js} +1 -1
  235. package/ui-dist/assets/{index-C3e6slEn.js → index-BdhCuwEn.js} +1 -1
  236. package/ui-dist/assets/{index-CPIoQKcG.js → index-BzBuqR8a.js} +1 -1
  237. package/ui-dist/assets/index-CJ8Y6mRU.js +7 -0
  238. package/ui-dist/assets/index-CNJdbN2c.js +1 -0
  239. package/ui-dist/assets/index-CRRh2Q50.js +1 -0
  240. package/ui-dist/assets/{index-BI9d3zXw.js → index-CS_SCGq-.js} +2 -2
  241. package/ui-dist/assets/{index-C5hYxLM9.js → index-CWZ6QjAd.js} +1 -1
  242. package/ui-dist/assets/index-CiBZqJye.js +1 -0
  243. package/ui-dist/assets/{index-BG46qMXw.js → index-D7jFNS5a.js} +1 -1
  244. package/ui-dist/assets/index-DEdvpket.js +1 -0
  245. package/ui-dist/assets/index-DQRYID5z.js +1 -0
  246. package/ui-dist/assets/index-DTv8W0av.css +1 -0
  247. package/ui-dist/assets/{index-BqhkUdAT.js → index-Df6CE5HD.js} +1 -1
  248. package/ui-dist/assets/{index-BLUJslyp.js → index-DhMy-JmC.js} +1 -1
  249. package/ui-dist/assets/{index-ZFb9ZHAH.js → index-Z1lC3yRm.js} +5 -5
  250. package/ui-dist/assets/index-_QsesMkH.js +1 -0
  251. package/ui-dist/assets/{infoDiagram-FWYZ7A6U-uxPSmmcv.js → infoDiagram-FWYZ7A6U-DyzTlql6.js} +1 -1
  252. package/ui-dist/assets/{ishikawaDiagram-FXEZZL3T-BeKQmaaL.js → ishikawaDiagram-FXEZZL3T-B9FXEgF4.js} +1 -1
  253. package/ui-dist/assets/{journeyDiagram-5HDEW3XC-Cnqh1Fyp.js → journeyDiagram-5HDEW3XC-BG_Kqf0Y.js} +1 -1
  254. package/ui-dist/assets/{kanban-definition-HUTT4EX6-DRvoG8e7.js → kanban-definition-HUTT4EX6-CIZgF9a-.js} +1 -1
  255. package/ui-dist/assets/{layout-By7bOuHZ.js → layout-ua-GqVIZ.js} +1 -1
  256. package/ui-dist/assets/{linear-D-kfwm1O.js → linear-CQqDskaQ.js} +1 -1
  257. package/ui-dist/assets/{map-d3zaWROJ.js → map-DFw_ZSS_.js} +1 -1
  258. package/ui-dist/assets/{mermaid.core-1JtOXpMA.js → mermaid.core-BVJ3bsf4.js} +4 -4
  259. package/ui-dist/assets/{mindmap-definition-LN4V7U3C-D8Jge-_m.js → mindmap-definition-LN4V7U3C-Dp1UsqtW.js} +1 -1
  260. package/ui-dist/assets/{pegDiagram-2B236MQR-UCd9-Gfd.js → pegDiagram-2B236MQR-BDUL53zP.js} +1 -1
  261. package/ui-dist/assets/{pieDiagram-ENE6RG2P-DffPYn-P.js → pieDiagram-ENE6RG2P-CgSzQLOQ.js} +1 -1
  262. package/ui-dist/assets/{quadrantDiagram-ABIIQ3AL-Ds1lQ25G.js → quadrantDiagram-ABIIQ3AL-B0YmTMhz.js} +1 -1
  263. package/ui-dist/assets/{railroadDiagram-RFXS5EU6-P_pLStbY.js → railroadDiagram-RFXS5EU6-BvTcxcz9.js} +1 -1
  264. package/ui-dist/assets/{requirementDiagram-TGXJPOKE-E_1U7w_T.js → requirementDiagram-TGXJPOKE-fkKI0lRC.js} +1 -1
  265. package/ui-dist/assets/{sankeyDiagram-HTMAVEWB-DFgwdZz7.js → sankeyDiagram-HTMAVEWB-BSOcxgQK.js} +1 -1
  266. package/ui-dist/assets/{sequenceDiagram-DBY2YBRQ-CbI2EnTH.js → sequenceDiagram-DBY2YBRQ-DrAQ-gvA.js} +1 -1
  267. package/ui-dist/assets/{sizeCapture-X5ZJPWSS-Axl0diWc.js → sizeCapture-X5ZJPWSS-CdXaDJu7.js} +1 -1
  268. package/ui-dist/assets/{stateDiagram-2N3HPSRC-DxZLENhX.js → stateDiagram-2N3HPSRC-CPtjImOw.js} +1 -1
  269. package/ui-dist/assets/stateDiagram-v2-6OUMAXLB-BntLUyuz.js +1 -0
  270. package/ui-dist/assets/{swimlanes-5IMT3BWC-1G26qvUm.js → swimlanes-5IMT3BWC-BiAgJ_7N.js} +2 -2
  271. package/ui-dist/assets/swimlanesDiagram-G3AALYLV-BwiyiniO.js +8 -0
  272. package/ui-dist/assets/{timeline-definition-FHXFAJF6-B0Ha5bZS.js → timeline-definition-FHXFAJF6-Biw5JBPT.js} +1 -1
  273. package/ui-dist/assets/{vennDiagram-L72KCM5P-BskD_1N5.js → vennDiagram-L72KCM5P-B2sQcNFx.js} +1 -1
  274. package/ui-dist/assets/{wardleyDiagram-EHGQE667-1wE4bYQ8.js → wardleyDiagram-EHGQE667-CKi9r9aK.js} +1 -1
  275. package/ui-dist/assets/{xychartDiagram-FW5EYKEG-DfcOAfb8.js → xychartDiagram-FW5EYKEG-D-0Bf_Kv.js} +1 -1
  276. package/ui-dist/index.html +2 -2
  277. package/ui-dist/assets/LibraryLiveSurface-CUgoFYvG.js +0 -1
  278. package/ui-dist/assets/channel-Cd4sqN24.js +0 -1
  279. package/ui-dist/assets/classDiagram-OUVF2IWQ-Bi3tsM-q.js +0 -1
  280. package/ui-dist/assets/classDiagram-v2-EOCWNBFH-Bi3tsM-q.js +0 -1
  281. package/ui-dist/assets/index-BQv2nBgV.js +0 -1
  282. package/ui-dist/assets/index-BkbdH2n-.js +0 -1
  283. package/ui-dist/assets/index-C-qWhcfC.css +0 -1
  284. package/ui-dist/assets/index-CLETiubs.js +0 -7
  285. package/ui-dist/assets/index-CLnCobCG.js +0 -1
  286. package/ui-dist/assets/index-CQLLvEua.js +0 -1
  287. package/ui-dist/assets/index-ChTD9DV4.js +0 -1
  288. package/ui-dist/assets/index-CiyYjAsy.js +0 -1
  289. package/ui-dist/assets/index-EqVfudOJ.js +0 -1
  290. package/ui-dist/assets/stateDiagram-v2-6OUMAXLB-KzYOpJ1T.js +0 -1
  291. package/ui-dist/assets/swimlanesDiagram-G3AALYLV--Vi3kUvi.js +0 -8
@@ -0,0 +1,17 @@
1
+ import { cn } from "@/lib/utils";
2
+ import * as React from "react";
3
+
4
+ export const Input = React.forwardRef<HTMLInputElement, React.ComponentProps<"input">>(
5
+ ({ className, type, ...props }, ref) => (
6
+ <input
7
+ ref={ref}
8
+ type={type}
9
+ className={cn(
10
+ "flex h-10 w-full rounded-lg border bg-white px-3 py-2 text-sm outline-none placeholder:text-[var(--muted-foreground)] focus:ring-2 focus:ring-[var(--ring)] disabled:opacity-50",
11
+ className,
12
+ )}
13
+ {...props}
14
+ />
15
+ ),
16
+ );
17
+ Input.displayName = "Input";
@@ -0,0 +1,6 @@
1
+ import { cn } from "@/lib/utils";
2
+ import * as React from "react";
3
+
4
+ export function Label({ className, ...props }: React.LabelHTMLAttributes<HTMLLabelElement>) {
5
+ return <label className={cn("text-sm font-medium", className)} {...props} />;
6
+ }
@@ -0,0 +1,18 @@
1
+ import { defineConfig } from "drizzle-kit";
2
+ import path from "node:path";
3
+
4
+ const dataDir = process.env.RUDDER_APP_DATA_DIR
5
+ ? path.resolve(process.env.RUDDER_APP_DATA_DIR)
6
+ : path.resolve("data");
7
+ const mode = process.env.RUDDER_APP_DATA_MODE === "production"
8
+ ? "app.sqlite"
9
+ : "dev.sqlite";
10
+
11
+ export default defineConfig({
12
+ dialect: "sqlite",
13
+ schema: "./lib/db/schema.ts",
14
+ out: "./migrations",
15
+ dbCredentials: {
16
+ url: path.join(dataDir, mode),
17
+ },
18
+ });
@@ -0,0 +1,5 @@
1
+ export async function register() {
2
+ if (process.env.NEXT_RUNTIME !== "nodejs") return;
3
+ const { startJobRunner } = await import("@/lib/jobs/runner");
4
+ startJobRunner();
5
+ }
@@ -0,0 +1,44 @@
1
+ import { z } from "zod";
2
+ import { contactStatusSchema } from "./domain";
3
+
4
+ export const exportedContactSchema = z.object({
5
+ id: z.string().uuid(),
6
+ name: z.string().min(1).max(120),
7
+ email: z.email().max(320),
8
+ company: z.string().max(160),
9
+ status: contactStatusSchema,
10
+ createdAt: z.iso.datetime(),
11
+ updatedAt: z.iso.datetime(),
12
+ });
13
+
14
+ export const importEnvelopeSchema = z.object({
15
+ format: z.literal("rudder-app-data/v1"),
16
+ exportedAt: z.iso.datetime(),
17
+ data: z.object({
18
+ contacts: z.array(exportedContactSchema).max(100_000),
19
+ }),
20
+ }).strict();
21
+
22
+ type ContactRow = {
23
+ id: string;
24
+ name: string;
25
+ email: string;
26
+ company: string;
27
+ status: "new" | "contacted" | "replied" | "paused";
28
+ createdAt: Date;
29
+ updatedAt: Date;
30
+ };
31
+
32
+ export function buildExportEnvelope(rows: ContactRow[]) {
33
+ return {
34
+ format: "rudder-app-data/v1" as const,
35
+ exportedAt: new Date().toISOString(),
36
+ data: {
37
+ contacts: rows.map((row) => ({
38
+ ...row,
39
+ createdAt: row.createdAt.toISOString(),
40
+ updatedAt: row.updatedAt.toISOString(),
41
+ })),
42
+ },
43
+ };
44
+ }
@@ -0,0 +1,78 @@
1
+ import {
2
+ drizzle,
3
+ type SqliteRemoteDatabase,
4
+ } from "drizzle-orm/sqlite-proxy";
5
+ import { mkdirSync } from "node:fs";
6
+ import path from "node:path";
7
+ import { DatabaseSync, type SQLInputValue } from "node:sqlite";
8
+ import * as schema from "./schema";
9
+
10
+ type DatabaseHandle = {
11
+ sqlite: DatabaseSync;
12
+ db: SqliteRemoteDatabase<typeof schema>;
13
+ filePath: string;
14
+ };
15
+
16
+ const handles = new Map<string, DatabaseHandle>();
17
+
18
+ export function dataMode() {
19
+ return process.env.RUDDER_APP_DATA_MODE === "production"
20
+ ? "production"
21
+ : "development";
22
+ }
23
+
24
+ export function dataDirectory() {
25
+ return process.env.RUDDER_APP_DATA_DIR
26
+ ? path.resolve(process.env.RUDDER_APP_DATA_DIR)
27
+ : path.resolve("data");
28
+ }
29
+
30
+ export function databasePath() {
31
+ if (process.env.RUDDER_APP_DATA_DIR) {
32
+ return path.join(
33
+ dataDirectory(),
34
+ dataMode() === "production" ? "app.sqlite" : "dev.sqlite",
35
+ );
36
+ }
37
+ return path.join(
38
+ dataDirectory(),
39
+ dataMode() === "production" ? "production/app.sqlite" : "development/dev.sqlite",
40
+ );
41
+ }
42
+
43
+ export function getDatabase(): DatabaseHandle {
44
+ const filePath = databasePath();
45
+ const cached = handles.get(filePath);
46
+ if (cached) return cached;
47
+
48
+ mkdirSync(path.dirname(filePath), { recursive: true });
49
+ const sqlite = new DatabaseSync(filePath);
50
+ sqlite.exec("PRAGMA journal_mode = WAL");
51
+ sqlite.exec("PRAGMA foreign_keys = ON");
52
+ sqlite.exec("PRAGMA busy_timeout = 5000");
53
+ const db = drizzle(async (query, parameters, method): Promise<{ rows: unknown[] }> => {
54
+ const statement = sqlite.prepare(query);
55
+ statement.setReturnArrays(true);
56
+ const values = parameters as SQLInputValue[];
57
+ if (method === "run") {
58
+ statement.run(...values);
59
+ return { rows: [] };
60
+ }
61
+ if (method === "get") {
62
+ return { rows: statement.get(...values) as unknown as unknown[] };
63
+ }
64
+ return { rows: statement.all(...values) as unknown as unknown[][] };
65
+ }, { schema });
66
+ const handle: DatabaseHandle = {
67
+ sqlite,
68
+ db,
69
+ filePath,
70
+ };
71
+ handles.set(filePath, handle);
72
+ return handle;
73
+ }
74
+
75
+ export function closeDatabases() {
76
+ for (const handle of handles.values()) handle.sqlite.close();
77
+ handles.clear();
78
+ }
@@ -0,0 +1,35 @@
1
+ import { integer, sqliteTable, text, uniqueIndex } from "drizzle-orm/sqlite-core";
2
+
3
+ export const contacts = sqliteTable("contacts", {
4
+ id: text("id").primaryKey(),
5
+ name: text("name").notNull(),
6
+ email: text("email").notNull(),
7
+ company: text("company").notNull().default(""),
8
+ status: text("status", { enum: ["new", "contacted", "replied", "paused"] })
9
+ .notNull()
10
+ .default("new"),
11
+ createdAt: integer("created_at", { mode: "timestamp_ms" }).notNull(),
12
+ updatedAt: integer("updated_at", { mode: "timestamp_ms" }).notNull(),
13
+ }, (table) => [
14
+ uniqueIndex("contacts_email_uq").on(table.email),
15
+ ]);
16
+
17
+ export const jobs = sqliteTable("jobs", {
18
+ id: text("id").primaryKey(),
19
+ kind: text("kind").notNull(),
20
+ idempotencyKey: text("idempotency_key").notNull(),
21
+ payloadJson: text("payload_json").notNull().default("{}"),
22
+ status: text("status", { enum: ["pending", "running", "completed", "failed", "missed"] })
23
+ .notNull()
24
+ .default("pending"),
25
+ catchUpPolicy: text("catch_up_policy", { enum: ["run", "skip", "prompt"] })
26
+ .notNull()
27
+ .default("prompt"),
28
+ scheduledFor: integer("scheduled_for", { mode: "timestamp_ms" }).notNull(),
29
+ attempts: integer("attempts").notNull().default(0),
30
+ lastError: text("last_error"),
31
+ createdAt: integer("created_at", { mode: "timestamp_ms" }).notNull(),
32
+ updatedAt: integer("updated_at", { mode: "timestamp_ms" }).notNull(),
33
+ }, (table) => [
34
+ uniqueIndex("jobs_idempotency_key_uq").on(table.idempotencyKey),
35
+ ]);
@@ -0,0 +1,18 @@
1
+ import { z } from "zod";
2
+
3
+ export const contactStatusSchema = z.enum(["new", "contacted", "replied", "paused"]);
4
+
5
+ export const contactCreateSchema = z.object({
6
+ name: z.string().trim().min(1).max(120),
7
+ email: z.email().max(320),
8
+ company: z.string().trim().max(160).default(""),
9
+ status: contactStatusSchema.default("new"),
10
+ });
11
+
12
+ export const contactUpdateSchema = contactCreateSchema.partial().refine(
13
+ (value) => Object.keys(value).length > 0,
14
+ "At least one contact field is required",
15
+ );
16
+
17
+ export type ContactInput = z.infer<typeof contactCreateSchema>;
18
+ export type ContactStatus = z.infer<typeof contactStatusSchema>;
@@ -0,0 +1,56 @@
1
+ import { getDatabase } from "@/lib/db/client";
2
+
3
+ type RunnerState = {
4
+ timer: NodeJS.Timeout | null;
5
+ ticking: boolean;
6
+ };
7
+
8
+ const globalState = globalThis as typeof globalThis & {
9
+ __rudderAppJobRunner?: RunnerState;
10
+ };
11
+
12
+ function state(): RunnerState {
13
+ globalState.__rudderAppJobRunner ??= { timer: null, ticking: false };
14
+ return globalState.__rudderAppJobRunner;
15
+ }
16
+
17
+ async function tick() {
18
+ const current = state();
19
+ if (current.ticking) return;
20
+ current.ticking = true;
21
+ try {
22
+ const { sqlite } = getDatabase();
23
+ const now = Date.now();
24
+ sqlite.prepare(`
25
+ update jobs
26
+ set status = case catch_up_policy
27
+ when 'skip' then 'missed'
28
+ when 'run' then 'pending'
29
+ else 'missed'
30
+ end,
31
+ updated_at = ?
32
+ where status = 'pending' and scheduled_for < ?
33
+ `).run(now, now - 60_000);
34
+ // Domain-specific handlers should claim one pending job transactionally,
35
+ // execute it with the persisted idempotency key, and then complete/fail it.
36
+ } catch {
37
+ // The health endpoint remains authoritative. A missing pre-migration table
38
+ // must not create an unhandled background rejection during startup.
39
+ } finally {
40
+ current.ticking = false;
41
+ }
42
+ }
43
+
44
+ export function startJobRunner() {
45
+ const current = state();
46
+ if (current.timer) return;
47
+ current.timer = setInterval(() => void tick(), 15_000);
48
+ current.timer.unref();
49
+ void tick();
50
+ }
51
+
52
+ export function stopJobRunner() {
53
+ const current = state();
54
+ if (current.timer) clearInterval(current.timer);
55
+ current.timer = null;
56
+ }
@@ -0,0 +1,6 @@
1
+ import { clsx, type ClassValue } from "clsx";
2
+ import { twMerge } from "tailwind-merge";
3
+
4
+ export function cn(...inputs: ClassValue[]) {
5
+ return twMerge(clsx(inputs));
6
+ }
@@ -0,0 +1,27 @@
1
+ CREATE TABLE `contacts` (
2
+ `id` text PRIMARY KEY NOT NULL,
3
+ `name` text NOT NULL,
4
+ `email` text NOT NULL,
5
+ `company` text DEFAULT '' NOT NULL,
6
+ `status` text DEFAULT 'new' NOT NULL,
7
+ `created_at` integer NOT NULL,
8
+ `updated_at` integer NOT NULL
9
+ );
10
+ --> statement-breakpoint
11
+ CREATE UNIQUE INDEX `contacts_email_uq` ON `contacts` (`email`);
12
+ --> statement-breakpoint
13
+ CREATE TABLE `jobs` (
14
+ `id` text PRIMARY KEY NOT NULL,
15
+ `kind` text NOT NULL,
16
+ `idempotency_key` text NOT NULL,
17
+ `payload_json` text DEFAULT '{}' NOT NULL,
18
+ `status` text DEFAULT 'pending' NOT NULL,
19
+ `catch_up_policy` text DEFAULT 'prompt' NOT NULL,
20
+ `scheduled_for` integer NOT NULL,
21
+ `attempts` integer DEFAULT 0 NOT NULL,
22
+ `last_error` text,
23
+ `created_at` integer NOT NULL,
24
+ `updated_at` integer NOT NULL
25
+ );
26
+ --> statement-breakpoint
27
+ CREATE UNIQUE INDEX `jobs_idempotency_key_uq` ON `jobs` (`idempotency_key`);
@@ -0,0 +1,13 @@
1
+ {
2
+ "version": "7",
3
+ "dialect": "sqlite",
4
+ "entries": [
5
+ {
6
+ "idx": 0,
7
+ "version": "6",
8
+ "when": 1785312000000,
9
+ "tag": "0000_app_builder_foundation",
10
+ "breakpoints": true
11
+ }
12
+ ]
13
+ }
@@ -0,0 +1,6 @@
1
+ /// <reference types="next" />
2
+ /// <reference types="next/image-types/global" />
3
+ import "./.next/dev/types/routes.d.ts";
4
+
5
+ // NOTE: This file should not be edited
6
+ // see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
@@ -0,0 +1,8 @@
1
+ import type { NextConfig } from "next";
2
+
3
+ const nextConfig: NextConfig = {
4
+ output: "standalone",
5
+ poweredByHeader: false,
6
+ };
7
+
8
+ export default nextConfig;
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "rudder-app",
3
+ "version": "0.1.0",
4
+ "private": true,
5
+ "type": "module",
6
+ "engines": {
7
+ "node": ">=22.5.0"
8
+ },
9
+ "scripts": {
10
+ "dev": "next dev --hostname 127.0.0.1",
11
+ "build": "next build",
12
+ "start": "next start --hostname 127.0.0.1",
13
+ "typecheck": "tsc --noEmit",
14
+ "test": "vitest run",
15
+ "test:e2e": "playwright test",
16
+ "db:generate": "drizzle-kit generate",
17
+ "db:migrate": "tsx scripts/migrate.ts",
18
+ "db:seed": "tsx scripts/seed.ts",
19
+ "data:snapshot": "tsx scripts/snapshot.ts",
20
+ "verify": "tsc --noEmit && vitest run && next build",
21
+ "predev": "tsx scripts/migrate.ts && tsx scripts/seed.ts"
22
+ },
23
+ "dependencies": {
24
+ "@radix-ui/react-slot": "1.2.4",
25
+ "class-variance-authority": "0.7.1",
26
+ "clsx": "2.1.1",
27
+ "drizzle-orm": "0.45.2",
28
+ "lucide-react": "1.27.0",
29
+ "next": "16.2.12",
30
+ "react": "19.2.8",
31
+ "react-dom": "19.2.8",
32
+ "tailwind-merge": "3.6.0",
33
+ "zod": "4.4.3"
34
+ },
35
+ "devDependencies": {
36
+ "@playwright/test": "1.58.2",
37
+ "@tailwindcss/postcss": "4.3.3",
38
+ "@types/node": "24.12.0",
39
+ "@types/react": "19.2.7",
40
+ "@types/react-dom": "19.2.3",
41
+ "drizzle-kit": "0.31.10",
42
+ "tailwindcss": "4.3.3",
43
+ "tsx": "4.23.1",
44
+ "typescript": "5.9.3",
45
+ "vitest": "3.2.7"
46
+ }
47
+ }
@@ -0,0 +1,30 @@
1
+ import { defineConfig, devices } from "@playwright/test";
2
+
3
+ export default defineConfig({
4
+ testDir: "./tests/e2e",
5
+ fullyParallel: false,
6
+ retries: 0,
7
+ reporter: "list",
8
+ use: {
9
+ baseURL: process.env.RUDDER_APP_BASE_URL ?? "http://127.0.0.1:3000",
10
+ trace: "retain-on-failure",
11
+ },
12
+ webServer: process.env.RUDDER_APP_BASE_URL
13
+ ? undefined
14
+ : {
15
+ command: "pnpm exec next dev --hostname 127.0.0.1 --port 3000",
16
+ url: "http://127.0.0.1:3000/api/__rudder/health",
17
+ reuseExistingServer: true,
18
+ timeout: 120_000,
19
+ },
20
+ projects: [
21
+ { name: "desktop", use: { ...devices["Desktop Chrome"] } },
22
+ {
23
+ name: "mobile",
24
+ use: {
25
+ viewport: { width: 390, height: 844 },
26
+ isMobile: true,
27
+ },
28
+ },
29
+ ],
30
+ });