@rudderhq/server 0.1.0-canary.0

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 (902) hide show
  1. package/LICENSE +14 -0
  2. package/dist/agent-auth-jwt.d.ts +14 -0
  3. package/dist/agent-auth-jwt.d.ts.map +1 -0
  4. package/dist/agent-auth-jwt.js +119 -0
  5. package/dist/agent-auth-jwt.js.map +1 -0
  6. package/dist/agent-runtimes/codex-models.d.ts +4 -0
  7. package/dist/agent-runtimes/codex-models.d.ts.map +1 -0
  8. package/dist/agent-runtimes/codex-models.js +98 -0
  9. package/dist/agent-runtimes/codex-models.js.map +1 -0
  10. package/dist/agent-runtimes/cursor-models.d.ts +13 -0
  11. package/dist/agent-runtimes/cursor-models.d.ts.map +1 -0
  12. package/dist/agent-runtimes/cursor-models.js +148 -0
  13. package/dist/agent-runtimes/cursor-models.js.map +1 -0
  14. package/dist/agent-runtimes/http/execute.d.ts +3 -0
  15. package/dist/agent-runtimes/http/execute.d.ts.map +1 -0
  16. package/dist/agent-runtimes/http/execute.js +39 -0
  17. package/dist/agent-runtimes/http/execute.js.map +1 -0
  18. package/dist/agent-runtimes/http/index.d.ts +3 -0
  19. package/dist/agent-runtimes/http/index.d.ts.map +1 -0
  20. package/dist/agent-runtimes/http/index.js +20 -0
  21. package/dist/agent-runtimes/http/index.js.map +1 -0
  22. package/dist/agent-runtimes/http/test.d.ts +3 -0
  23. package/dist/agent-runtimes/http/test.d.ts.map +1 -0
  24. package/dist/agent-runtimes/http/test.js +106 -0
  25. package/dist/agent-runtimes/http/test.js.map +1 -0
  26. package/dist/agent-runtimes/index.d.ts +4 -0
  27. package/dist/agent-runtimes/index.d.ts.map +1 -0
  28. package/dist/agent-runtimes/index.js +3 -0
  29. package/dist/agent-runtimes/index.js.map +1 -0
  30. package/dist/agent-runtimes/process/execute.d.ts +3 -0
  31. package/dist/agent-runtimes/process/execute.d.ts.map +1 -0
  32. package/dist/agent-runtimes/process/execute.js +63 -0
  33. package/dist/agent-runtimes/process/execute.js.map +1 -0
  34. package/dist/agent-runtimes/process/index.d.ts +3 -0
  35. package/dist/agent-runtimes/process/index.d.ts.map +1 -0
  36. package/dist/agent-runtimes/process/index.js +23 -0
  37. package/dist/agent-runtimes/process/index.js.map +1 -0
  38. package/dist/agent-runtimes/process/test.d.ts +3 -0
  39. package/dist/agent-runtimes/process/test.d.ts.map +1 -0
  40. package/dist/agent-runtimes/process/test.js +77 -0
  41. package/dist/agent-runtimes/process/test.js.map +1 -0
  42. package/dist/agent-runtimes/registry.d.ts +9 -0
  43. package/dist/agent-runtimes/registry.d.ts.map +1 -0
  44. package/dist/agent-runtimes/registry.js +189 -0
  45. package/dist/agent-runtimes/registry.js.map +1 -0
  46. package/dist/agent-runtimes/types.d.ts +2 -0
  47. package/dist/agent-runtimes/types.d.ts.map +1 -0
  48. package/dist/agent-runtimes/types.js +2 -0
  49. package/dist/agent-runtimes/types.js.map +1 -0
  50. package/dist/agent-runtimes/utils.d.ts +10 -0
  51. package/dist/agent-runtimes/utils.d.ts.map +1 -0
  52. package/dist/agent-runtimes/utils.js +14 -0
  53. package/dist/agent-runtimes/utils.js.map +1 -0
  54. package/dist/agent-workspace-key.d.ts +17 -0
  55. package/dist/agent-workspace-key.d.ts.map +1 -0
  56. package/dist/agent-workspace-key.js +49 -0
  57. package/dist/agent-workspace-key.js.map +1 -0
  58. package/dist/app.d.ts +14 -0
  59. package/dist/app.d.ts.map +1 -0
  60. package/dist/app.js +19 -0
  61. package/dist/app.js.map +1 -0
  62. package/dist/attachment-types.d.ts +33 -0
  63. package/dist/attachment-types.d.ts.map +1 -0
  64. package/dist/attachment-types.js +67 -0
  65. package/dist/attachment-types.js.map +1 -0
  66. package/dist/auth/better-auth.d.ts +24 -0
  67. package/dist/auth/better-auth.d.ts.map +1 -0
  68. package/dist/auth/better-auth.js +108 -0
  69. package/dist/auth/better-auth.js.map +1 -0
  70. package/dist/board-claim.d.ts +23 -0
  71. package/dist/board-claim.d.ts.map +1 -0
  72. package/dist/board-claim.js +115 -0
  73. package/dist/board-claim.js.map +1 -0
  74. package/dist/bootstrap/create-http-app.d.ts +6 -0
  75. package/dist/bootstrap/create-http-app.d.ts.map +1 -0
  76. package/dist/bootstrap/create-http-app.js +122 -0
  77. package/dist/bootstrap/create-http-app.js.map +1 -0
  78. package/dist/bootstrap/plugin-host-runtime.d.ts +116 -0
  79. package/dist/bootstrap/plugin-host-runtime.d.ts.map +1 -0
  80. package/dist/bootstrap/plugin-host-runtime.js +121 -0
  81. package/dist/bootstrap/plugin-host-runtime.js.map +1 -0
  82. package/dist/bootstrap/register-api-routes.d.ts +5 -0
  83. package/dist/bootstrap/register-api-routes.d.ts.map +1 -0
  84. package/dist/bootstrap/register-api-routes.js +65 -0
  85. package/dist/bootstrap/register-api-routes.js.map +1 -0
  86. package/dist/bootstrap/types.d.ts +24 -0
  87. package/dist/bootstrap/types.d.ts.map +1 -0
  88. package/dist/bootstrap/types.js +2 -0
  89. package/dist/bootstrap/types.js.map +1 -0
  90. package/dist/config-file.d.ts +5 -0
  91. package/dist/config-file.d.ts.map +1 -0
  92. package/dist/config-file.js +48 -0
  93. package/dist/config-file.js.map +1 -0
  94. package/dist/config.d.ts +45 -0
  95. package/dist/config.d.ts.map +1 -0
  96. package/dist/config.js +233 -0
  97. package/dist/config.js.map +1 -0
  98. package/dist/dev-server-status.d.ts +29 -0
  99. package/dist/dev-server-status.d.ts.map +1 -0
  100. package/dist/dev-server-status.js +75 -0
  101. package/dist/dev-server-status.js.map +1 -0
  102. package/dist/errors.d.ts +12 -0
  103. package/dist/errors.d.ts.map +1 -0
  104. package/dist/errors.js +28 -0
  105. package/dist/errors.js.map +1 -0
  106. package/dist/home-paths.d.ts +50 -0
  107. package/dist/home-paths.d.ts.map +1 -0
  108. package/dist/home-paths.js +183 -0
  109. package/dist/home-paths.js.map +1 -0
  110. package/dist/index.d.ts +69 -0
  111. package/dist/index.d.ts.map +1 -0
  112. package/dist/index.js +827 -0
  113. package/dist/index.js.map +1 -0
  114. package/dist/langfuse-transcript.d.ts +32 -0
  115. package/dist/langfuse-transcript.d.ts.map +1 -0
  116. package/dist/langfuse-transcript.js +341 -0
  117. package/dist/langfuse-transcript.js.map +1 -0
  118. package/dist/langfuse.d.ts +93 -0
  119. package/dist/langfuse.d.ts.map +1 -0
  120. package/dist/langfuse.js +412 -0
  121. package/dist/langfuse.js.map +1 -0
  122. package/dist/local-runtime.d.ts +67 -0
  123. package/dist/local-runtime.d.ts.map +1 -0
  124. package/dist/local-runtime.js +302 -0
  125. package/dist/local-runtime.js.map +1 -0
  126. package/dist/log-redaction.d.ts +11 -0
  127. package/dist/log-redaction.d.ts.map +1 -0
  128. package/dist/log-redaction.js +118 -0
  129. package/dist/log-redaction.js.map +1 -0
  130. package/dist/middleware/auth.d.ts +12 -0
  131. package/dist/middleware/auth.d.ts.map +1 -0
  132. package/dist/middleware/auth.js +144 -0
  133. package/dist/middleware/auth.js.map +1 -0
  134. package/dist/middleware/board-mutation-guard.d.ts +3 -0
  135. package/dist/middleware/board-mutation-guard.d.ts.map +1 -0
  136. package/dist/middleware/board-mutation-guard.js +59 -0
  137. package/dist/middleware/board-mutation-guard.js.map +1 -0
  138. package/dist/middleware/error-handler.d.ts +17 -0
  139. package/dist/middleware/error-handler.d.ts.map +1 -0
  140. package/dist/middleware/error-handler.js +37 -0
  141. package/dist/middleware/error-handler.js.map +1 -0
  142. package/dist/middleware/index.d.ts +4 -0
  143. package/dist/middleware/index.d.ts.map +1 -0
  144. package/dist/middleware/index.js +4 -0
  145. package/dist/middleware/index.js.map +1 -0
  146. package/dist/middleware/logger.d.ts +4 -0
  147. package/dist/middleware/logger.d.ts.map +1 -0
  148. package/dist/middleware/logger.js +133 -0
  149. package/dist/middleware/logger.js.map +1 -0
  150. package/dist/middleware/private-hostname-guard.d.ts +11 -0
  151. package/dist/middleware/private-hostname-guard.d.ts.map +1 -0
  152. package/dist/middleware/private-hostname-guard.js +78 -0
  153. package/dist/middleware/private-hostname-guard.js.map +1 -0
  154. package/dist/middleware/validate.d.ts +4 -0
  155. package/dist/middleware/validate.d.ts.map +1 -0
  156. package/dist/middleware/validate.js +7 -0
  157. package/dist/middleware/validate.js.map +1 -0
  158. package/dist/onboarding-assets/ceo/AGENTS.md +33 -0
  159. package/dist/onboarding-assets/ceo/HEARTBEAT.md +77 -0
  160. package/dist/onboarding-assets/ceo/SOUL.md +33 -0
  161. package/dist/onboarding-assets/ceo/TOOLS.md +3 -0
  162. package/dist/onboarding-assets/default/AGENTS.md +9 -0
  163. package/dist/onboarding-assets/default/HEARTBEAT.md +36 -0
  164. package/dist/onboarding-assets/default/SOUL.md +23 -0
  165. package/dist/onboarding-assets/default/TOOLS.md +3 -0
  166. package/dist/paths.d.ts +3 -0
  167. package/dist/paths.d.ts.map +1 -0
  168. package/dist/paths.js +31 -0
  169. package/dist/paths.js.map +1 -0
  170. package/dist/realtime/live-events-ws.d.ts +28 -0
  171. package/dist/realtime/live-events-ws.d.ts.map +1 -0
  172. package/dist/realtime/live-events-ws.js +187 -0
  173. package/dist/realtime/live-events-ws.js.map +1 -0
  174. package/dist/redaction.d.ts +4 -0
  175. package/dist/redaction.d.ts.map +1 -0
  176. package/dist/redaction.js +63 -0
  177. package/dist/redaction.js.map +1 -0
  178. package/dist/routes/access.d.ts +57 -0
  179. package/dist/routes/access.d.ts.map +1 -0
  180. package/dist/routes/access.js +2266 -0
  181. package/dist/routes/access.js.map +1 -0
  182. package/dist/routes/activity.d.ts +3 -0
  183. package/dist/routes/activity.d.ts.map +1 -0
  184. package/dist/routes/activity.js +78 -0
  185. package/dist/routes/activity.js.map +1 -0
  186. package/dist/routes/agents.d.ts +3 -0
  187. package/dist/routes/agents.d.ts.map +1 -0
  188. package/dist/routes/agents.js +1913 -0
  189. package/dist/routes/agents.js.map +1 -0
  190. package/dist/routes/approvals.d.ts +3 -0
  191. package/dist/routes/approvals.d.ts.map +1 -0
  192. package/dist/routes/approvals.js +365 -0
  193. package/dist/routes/approvals.js.map +1 -0
  194. package/dist/routes/assets.d.ts +4 -0
  195. package/dist/routes/assets.d.ts.map +1 -0
  196. package/dist/routes/assets.js +309 -0
  197. package/dist/routes/assets.js.map +1 -0
  198. package/dist/routes/authz.d.ts +16 -0
  199. package/dist/routes/authz.d.ts.map +1 -0
  200. package/dist/routes/authz.js +47 -0
  201. package/dist/routes/authz.js.map +1 -0
  202. package/dist/routes/automations.d.ts +3 -0
  203. package/dist/routes/automations.d.ts.map +1 -0
  204. package/dist/routes/automations.js +277 -0
  205. package/dist/routes/automations.js.map +1 -0
  206. package/dist/routes/chats.d.ts +4 -0
  207. package/dist/routes/chats.d.ts.map +1 -0
  208. package/dist/routes/chats.js +1162 -0
  209. package/dist/routes/chats.js.map +1 -0
  210. package/dist/routes/costs.d.ts +3 -0
  211. package/dist/routes/costs.d.ts.map +1 -0
  212. package/dist/routes/costs.js +268 -0
  213. package/dist/routes/costs.js.map +1 -0
  214. package/dist/routes/dashboard.d.ts +3 -0
  215. package/dist/routes/dashboard.d.ts.map +1 -0
  216. package/dist/routes/dashboard.js +15 -0
  217. package/dist/routes/dashboard.js.map +1 -0
  218. package/dist/routes/execution-workspaces.d.ts +3 -0
  219. package/dist/routes/execution-workspaces.d.ts.map +1 -0
  220. package/dist/routes/execution-workspaces.js +165 -0
  221. package/dist/routes/execution-workspaces.js.map +1 -0
  222. package/dist/routes/goals.d.ts +3 -0
  223. package/dist/routes/goals.d.ts.map +1 -0
  224. package/dist/routes/goals.js +95 -0
  225. package/dist/routes/goals.js.map +1 -0
  226. package/dist/routes/health.d.ts +12 -0
  227. package/dist/routes/health.d.ts.map +1 -0
  228. package/dist/routes/health.js +85 -0
  229. package/dist/routes/health.js.map +1 -0
  230. package/dist/routes/index.d.ts +19 -0
  231. package/dist/routes/index.d.ts.map +1 -0
  232. package/dist/routes/index.js +19 -0
  233. package/dist/routes/index.js.map +1 -0
  234. package/dist/routes/instance-settings.d.ts +6 -0
  235. package/dist/routes/instance-settings.d.ts.map +1 -0
  236. package/dist/routes/instance-settings.js +250 -0
  237. package/dist/routes/instance-settings.js.map +1 -0
  238. package/dist/routes/issues-checkout-wakeup.d.ts +9 -0
  239. package/dist/routes/issues-checkout-wakeup.d.ts.map +1 -0
  240. package/dist/routes/issues-checkout-wakeup.js +12 -0
  241. package/dist/routes/issues-checkout-wakeup.js.map +1 -0
  242. package/dist/routes/issues.d.ts +4 -0
  243. package/dist/routes/issues.d.ts.map +1 -0
  244. package/dist/routes/issues.js +1615 -0
  245. package/dist/routes/issues.js.map +1 -0
  246. package/dist/routes/llms.d.ts +3 -0
  247. package/dist/routes/llms.d.ts.map +1 -0
  248. package/dist/routes/llms.js +78 -0
  249. package/dist/routes/llms.js.map +1 -0
  250. package/dist/routes/messenger.d.ts +3 -0
  251. package/dist/routes/messenger.d.ts.map +1 -0
  252. package/dist/routes/messenger.js +108 -0
  253. package/dist/routes/messenger.js.map +1 -0
  254. package/dist/routes/org-chart-logo.d.ts +2 -0
  255. package/dist/routes/org-chart-logo.d.ts.map +1 -0
  256. package/dist/routes/org-chart-logo.js +2 -0
  257. package/dist/routes/org-chart-logo.js.map +1 -0
  258. package/dist/routes/org-chart-svg.d.ts +25 -0
  259. package/dist/routes/org-chart-svg.d.ts.map +1 -0
  260. package/dist/routes/org-chart-svg.js +652 -0
  261. package/dist/routes/org-chart-svg.js.map +1 -0
  262. package/dist/routes/organization-skills.d.ts +3 -0
  263. package/dist/routes/organization-skills.d.ts.map +1 -0
  264. package/dist/routes/organization-skills.js +253 -0
  265. package/dist/routes/organization-skills.js.map +1 -0
  266. package/dist/routes/orgs.d.ts +4 -0
  267. package/dist/routes/orgs.d.ts.map +1 -0
  268. package/dist/routes/orgs.js +575 -0
  269. package/dist/routes/orgs.js.map +1 -0
  270. package/dist/routes/plugin-ui-static.d.ts +69 -0
  271. package/dist/routes/plugin-ui-static.d.ts.map +1 -0
  272. package/dist/routes/plugin-ui-static.js +411 -0
  273. package/dist/routes/plugin-ui-static.js.map +1 -0
  274. package/dist/routes/plugins.d.ts +120 -0
  275. package/dist/routes/plugins.d.ts.map +1 -0
  276. package/dist/routes/plugins.js +1776 -0
  277. package/dist/routes/plugins.js.map +1 -0
  278. package/dist/routes/projects.d.ts +3 -0
  279. package/dist/routes/projects.d.ts.map +1 -0
  280. package/dist/routes/projects.js +235 -0
  281. package/dist/routes/projects.js.map +1 -0
  282. package/dist/routes/run-intelligence.d.ts +3 -0
  283. package/dist/routes/run-intelligence.d.ts.map +1 -0
  284. package/dist/routes/run-intelligence.js +58 -0
  285. package/dist/routes/run-intelligence.js.map +1 -0
  286. package/dist/routes/secrets.d.ts +3 -0
  287. package/dist/routes/secrets.d.ts.map +1 -0
  288. package/dist/routes/secrets.js +128 -0
  289. package/dist/routes/secrets.js.map +1 -0
  290. package/dist/routes/sidebar-badges.d.ts +3 -0
  291. package/dist/routes/sidebar-badges.d.ts.map +1 -0
  292. package/dist/routes/sidebar-badges.js +70 -0
  293. package/dist/routes/sidebar-badges.js.map +1 -0
  294. package/dist/secrets/external-stub-providers.d.ts +5 -0
  295. package/dist/secrets/external-stub-providers.d.ts.map +1 -0
  296. package/dist/secrets/external-stub-providers.js +21 -0
  297. package/dist/secrets/external-stub-providers.js.map +1 -0
  298. package/dist/secrets/local-encrypted-provider.d.ts +3 -0
  299. package/dist/secrets/local-encrypted-provider.d.ts.map +1 -0
  300. package/dist/secrets/local-encrypted-provider.js +116 -0
  301. package/dist/secrets/local-encrypted-provider.js.map +1 -0
  302. package/dist/secrets/provider-registry.d.ts +5 -0
  303. package/dist/secrets/provider-registry.d.ts.map +1 -0
  304. package/dist/secrets/provider-registry.js +20 -0
  305. package/dist/secrets/provider-registry.js.map +1 -0
  306. package/dist/secrets/types.d.ts +21 -0
  307. package/dist/secrets/types.d.ts.map +1 -0
  308. package/dist/secrets/types.js +2 -0
  309. package/dist/secrets/types.js.map +1 -0
  310. package/dist/services/access.d.ts +113 -0
  311. package/dist/services/access.d.ts.map +1 -0
  312. package/dist/services/access.js +247 -0
  313. package/dist/services/access.js.map +1 -0
  314. package/dist/services/activity-log.d.ts +17 -0
  315. package/dist/services/activity-log.d.ts.map +1 -0
  316. package/dist/services/activity-log.js +109 -0
  317. package/dist/services/activity-log.js.map +1 -0
  318. package/dist/services/activity.d.ts +472 -0
  319. package/dist/services/activity.d.ts.map +1 -0
  320. package/dist/services/activity.js +134 -0
  321. package/dist/services/activity.js.map +1 -0
  322. package/dist/services/agent-enabled-skills.d.ts +9 -0
  323. package/dist/services/agent-enabled-skills.d.ts.map +1 -0
  324. package/dist/services/agent-enabled-skills.js +89 -0
  325. package/dist/services/agent-enabled-skills.js.map +1 -0
  326. package/dist/services/agent-instructions.d.ts +98 -0
  327. package/dist/services/agent-instructions.d.ts.map +1 -0
  328. package/dist/services/agent-instructions.js +596 -0
  329. package/dist/services/agent-instructions.js.map +1 -0
  330. package/dist/services/agent-name-pool.d.ts +10 -0
  331. package/dist/services/agent-name-pool.d.ts.map +1 -0
  332. package/dist/services/agent-name-pool.js +230 -0
  333. package/dist/services/agent-name-pool.js.map +1 -0
  334. package/dist/services/agent-permissions.d.ts +6 -0
  335. package/dist/services/agent-permissions.d.ts.map +1 -0
  336. package/dist/services/agent-permissions.js +18 -0
  337. package/dist/services/agent-permissions.js.map +1 -0
  338. package/dist/services/agent-run-context.d.ts +142 -0
  339. package/dist/services/agent-run-context.d.ts.map +1 -0
  340. package/dist/services/agent-run-context.js +451 -0
  341. package/dist/services/agent-run-context.js.map +1 -0
  342. package/dist/services/agents.d.ts +1713 -0
  343. package/dist/services/agents.d.ts.map +1 -0
  344. package/dist/services/agents.js +750 -0
  345. package/dist/services/agents.js.map +1 -0
  346. package/dist/services/approvals.d.ts +546 -0
  347. package/dist/services/approvals.d.ts.map +1 -0
  348. package/dist/services/approvals.js +212 -0
  349. package/dist/services/approvals.js.map +1 -0
  350. package/dist/services/assets.d.ts +33 -0
  351. package/dist/services/assets.d.ts.map +1 -0
  352. package/dist/services/assets.js +17 -0
  353. package/dist/services/assets.js.map +1 -0
  354. package/dist/services/automations.d.ts +135 -0
  355. package/dist/services/automations.d.ts.map +1 -0
  356. package/dist/services/automations.js +1105 -0
  357. package/dist/services/automations.js.map +1 -0
  358. package/dist/services/board-auth.d.ts +234 -0
  359. package/dist/services/board-auth.d.ts.map +1 -0
  360. package/dist/services/board-auth.js +295 -0
  361. package/dist/services/board-auth.js.map +1 -0
  362. package/dist/services/budgets.d.ts +38 -0
  363. package/dist/services/budgets.d.ts.map +1 -0
  364. package/dist/services/budgets.js +784 -0
  365. package/dist/services/budgets.js.map +1 -0
  366. package/dist/services/chat-assistant.d.ts +62 -0
  367. package/dist/services/chat-assistant.d.ts.map +1 -0
  368. package/dist/services/chat-assistant.js +943 -0
  369. package/dist/services/chat-assistant.js.map +1 -0
  370. package/dist/services/chat-generation-locks.d.ts +3 -0
  371. package/dist/services/chat-generation-locks.d.ts.map +1 -0
  372. package/dist/services/chat-generation-locks.js +16 -0
  373. package/dist/services/chat-generation-locks.js.map +1 -0
  374. package/dist/services/chats.d.ts +723 -0
  375. package/dist/services/chats.d.ts.map +1 -0
  376. package/dist/services/chats.js +1188 -0
  377. package/dist/services/chats.js.map +1 -0
  378. package/dist/services/costs.d.ts +114 -0
  379. package/dist/services/costs.d.ts.map +1 -0
  380. package/dist/services/costs.js +326 -0
  381. package/dist/services/costs.js.map +1 -0
  382. package/dist/services/cron.d.ts +80 -0
  383. package/dist/services/cron.d.ts.map +1 -0
  384. package/dist/services/cron.js +300 -0
  385. package/dist/services/cron.js.map +1 -0
  386. package/dist/services/dashboard.d.ts +26 -0
  387. package/dist/services/dashboard.d.ts.map +1 -0
  388. package/dist/services/dashboard.js +98 -0
  389. package/dist/services/dashboard.js.map +1 -0
  390. package/dist/services/default-agent-instructions.d.ts +9 -0
  391. package/dist/services/default-agent-instructions.d.ts.map +1 -0
  392. package/dist/services/default-agent-instructions.js +20 -0
  393. package/dist/services/default-agent-instructions.js.map +1 -0
  394. package/dist/services/documents.d.ts +164 -0
  395. package/dist/services/documents.d.ts.map +1 -0
  396. package/dist/services/documents.js +382 -0
  397. package/dist/services/documents.js.map +1 -0
  398. package/dist/services/execution-workspace-policy.d.ts +20 -0
  399. package/dist/services/execution-workspace-policy.d.ts.map +1 -0
  400. package/dist/services/execution-workspace-policy.js +172 -0
  401. package/dist/services/execution-workspace-policy.js.map +1 -0
  402. package/dist/services/execution-workspaces.d.ts +19 -0
  403. package/dist/services/execution-workspaces.d.ts.map +1 -0
  404. package/dist/services/execution-workspaces.js +87 -0
  405. package/dist/services/execution-workspaces.js.map +1 -0
  406. package/dist/services/finance.d.ts +93 -0
  407. package/dist/services/finance.d.ts.map +1 -0
  408. package/dist/services/finance.js +120 -0
  409. package/dist/services/finance.js.map +1 -0
  410. package/dist/services/goals.d.ts +433 -0
  411. package/dist/services/goals.d.ts.map +1 -0
  412. package/dist/services/goals.js +54 -0
  413. package/dist/services/goals.js.map +1 -0
  414. package/dist/services/heartbeat-run-summary.d.ts +2 -0
  415. package/dist/services/heartbeat-run-summary.d.ts.map +1 -0
  416. package/dist/services/heartbeat-run-summary.js +131 -0
  417. package/dist/services/heartbeat-run-summary.js.map +1 -0
  418. package/dist/services/heartbeat.d.ts +2 -0
  419. package/dist/services/heartbeat.d.ts.map +1 -0
  420. package/dist/services/heartbeat.js +2 -0
  421. package/dist/services/heartbeat.js.map +1 -0
  422. package/dist/services/hire-hook.d.ts +14 -0
  423. package/dist/services/hire-hook.d.ts.map +1 -0
  424. package/dist/services/hire-hook.js +85 -0
  425. package/dist/services/hire-hook.js.map +1 -0
  426. package/dist/services/index.d.ts +38 -0
  427. package/dist/services/index.d.ts.map +1 -0
  428. package/dist/services/index.js +38 -0
  429. package/dist/services/index.js.map +1 -0
  430. package/dist/services/instance-settings.d.ts +14 -0
  431. package/dist/services/instance-settings.d.ts.map +1 -0
  432. package/dist/services/instance-settings.js +158 -0
  433. package/dist/services/instance-settings.js.map +1 -0
  434. package/dist/services/issue-approvals.d.ts +56 -0
  435. package/dist/services/issue-approvals.d.ts.map +1 -0
  436. package/dist/services/issue-approvals.js +153 -0
  437. package/dist/services/issue-approvals.js.map +1 -0
  438. package/dist/services/issue-assignment-wakeup.d.ts +32 -0
  439. package/dist/services/issue-assignment-wakeup.d.ts.map +1 -0
  440. package/dist/services/issue-assignment-wakeup.js +43 -0
  441. package/dist/services/issue-assignment-wakeup.js.map +1 -0
  442. package/dist/services/issue-goal-fallback.d.ts +15 -0
  443. package/dist/services/issue-goal-fallback.d.ts.map +1 -0
  444. package/dist/services/issue-goal-fallback.js +15 -0
  445. package/dist/services/issue-goal-fallback.js.map +1 -0
  446. package/dist/services/issues.d.ts +580 -0
  447. package/dist/services/issues.d.ts.map +1 -0
  448. package/dist/services/issues.js +1464 -0
  449. package/dist/services/issues.js.map +1 -0
  450. package/dist/services/knowledge-portability/organization-portability.d.ts +23 -0
  451. package/dist/services/knowledge-portability/organization-portability.d.ts.map +1 -0
  452. package/dist/services/knowledge-portability/organization-portability.js +3795 -0
  453. package/dist/services/knowledge-portability/organization-portability.js.map +1 -0
  454. package/dist/services/knowledge-portability/organization-skills.d.ts +105 -0
  455. package/dist/services/knowledge-portability/organization-skills.d.ts.map +1 -0
  456. package/dist/services/knowledge-portability/organization-skills.js +3172 -0
  457. package/dist/services/knowledge-portability/organization-skills.js.map +1 -0
  458. package/dist/services/live-events.d.ts +17 -0
  459. package/dist/services/live-events.d.ts.map +1 -0
  460. package/dist/services/live-events.js +33 -0
  461. package/dist/services/live-events.js.map +1 -0
  462. package/dist/services/messenger.d.ts +111 -0
  463. package/dist/services/messenger.d.ts.map +1 -0
  464. package/dist/services/messenger.js +774 -0
  465. package/dist/services/messenger.js.map +1 -0
  466. package/dist/services/native-path-picker.d.ts +18 -0
  467. package/dist/services/native-path-picker.d.ts.map +1 -0
  468. package/dist/services/native-path-picker.js +119 -0
  469. package/dist/services/native-path-picker.js.map +1 -0
  470. package/dist/services/operator-profile.d.ts +7 -0
  471. package/dist/services/operator-profile.d.ts.map +1 -0
  472. package/dist/services/operator-profile.js +66 -0
  473. package/dist/services/operator-profile.js.map +1 -0
  474. package/dist/services/organization-export-readme.d.ts +17 -0
  475. package/dist/services/organization-export-readme.d.ts.map +1 -0
  476. package/dist/services/organization-export-readme.js +148 -0
  477. package/dist/services/organization-export-readme.js.map +1 -0
  478. package/dist/services/organization-portability.d.ts +2 -0
  479. package/dist/services/organization-portability.d.ts.map +1 -0
  480. package/dist/services/organization-portability.js +2 -0
  481. package/dist/services/organization-portability.js.map +1 -0
  482. package/dist/services/organization-skills.d.ts +2 -0
  483. package/dist/services/organization-skills.d.ts.map +1 -0
  484. package/dist/services/organization-skills.js +2 -0
  485. package/dist/services/organization-skills.js.map +1 -0
  486. package/dist/services/organization-workspace-browser.d.ts +8 -0
  487. package/dist/services/organization-workspace-browser.d.ts.map +1 -0
  488. package/dist/services/organization-workspace-browser.js +229 -0
  489. package/dist/services/organization-workspace-browser.js.map +1 -0
  490. package/dist/services/organization-workspace.d.ts +5 -0
  491. package/dist/services/organization-workspace.d.ts.map +1 -0
  492. package/dist/services/organization-workspace.js +71 -0
  493. package/dist/services/organization-workspace.js.map +1 -0
  494. package/dist/services/orgs.d.ts +163 -0
  495. package/dist/services/orgs.d.ts.map +1 -0
  496. package/dist/services/orgs.js +327 -0
  497. package/dist/services/orgs.js.map +1 -0
  498. package/dist/services/plugin-capability-validator.d.ts +108 -0
  499. package/dist/services/plugin-capability-validator.d.ts.map +1 -0
  500. package/dist/services/plugin-capability-validator.js +268 -0
  501. package/dist/services/plugin-capability-validator.js.map +1 -0
  502. package/dist/services/plugin-config-validator.d.ts +26 -0
  503. package/dist/services/plugin-config-validator.d.ts.map +1 -0
  504. package/dist/services/plugin-config-validator.js +41 -0
  505. package/dist/services/plugin-config-validator.js.map +1 -0
  506. package/dist/services/plugin-dev-watcher.d.ts +30 -0
  507. package/dist/services/plugin-dev-watcher.d.ts.map +1 -0
  508. package/dist/services/plugin-dev-watcher.js +241 -0
  509. package/dist/services/plugin-dev-watcher.js.map +1 -0
  510. package/dist/services/plugin-event-bus.d.ts +149 -0
  511. package/dist/services/plugin-event-bus.d.ts.map +1 -0
  512. package/dist/services/plugin-event-bus.js +258 -0
  513. package/dist/services/plugin-event-bus.js.map +1 -0
  514. package/dist/services/plugin-host-service-cleanup.d.ts +14 -0
  515. package/dist/services/plugin-host-service-cleanup.d.ts.map +1 -0
  516. package/dist/services/plugin-host-service-cleanup.js +37 -0
  517. package/dist/services/plugin-host-service-cleanup.js.map +1 -0
  518. package/dist/services/plugin-host-services.d.ts +13 -0
  519. package/dist/services/plugin-host-services.d.ts.map +1 -0
  520. package/dist/services/plugin-host-services.js +973 -0
  521. package/dist/services/plugin-host-services.js.map +1 -0
  522. package/dist/services/plugin-job-coordinator.d.ts +81 -0
  523. package/dist/services/plugin-job-coordinator.d.ts.map +1 -0
  524. package/dist/services/plugin-job-coordinator.js +172 -0
  525. package/dist/services/plugin-job-coordinator.js.map +1 -0
  526. package/dist/services/plugin-job-scheduler.d.ts +163 -0
  527. package/dist/services/plugin-job-scheduler.d.ts.map +1 -0
  528. package/dist/services/plugin-job-scheduler.js +564 -0
  529. package/dist/services/plugin-job-scheduler.js.map +1 -0
  530. package/dist/services/plugin-job-store.d.ts +208 -0
  531. package/dist/services/plugin-job-store.d.ts.map +1 -0
  532. package/dist/services/plugin-job-store.js +350 -0
  533. package/dist/services/plugin-job-store.js.map +1 -0
  534. package/dist/services/plugin-lifecycle.d.ts +203 -0
  535. package/dist/services/plugin-lifecycle.d.ts.map +1 -0
  536. package/dist/services/plugin-lifecycle.js +476 -0
  537. package/dist/services/plugin-lifecycle.js.map +1 -0
  538. package/dist/services/plugin-loader.d.ts +441 -0
  539. package/dist/services/plugin-loader.d.ts.map +1 -0
  540. package/dist/services/plugin-loader.js +1192 -0
  541. package/dist/services/plugin-loader.js.map +1 -0
  542. package/dist/services/plugin-log-retention.d.ts +20 -0
  543. package/dist/services/plugin-log-retention.d.ts.map +1 -0
  544. package/dist/services/plugin-log-retention.js +63 -0
  545. package/dist/services/plugin-log-retention.js.map +1 -0
  546. package/dist/services/plugin-manifest-validator.d.ts +79 -0
  547. package/dist/services/plugin-manifest-validator.d.ts.map +1 -0
  548. package/dist/services/plugin-manifest-validator.js +84 -0
  549. package/dist/services/plugin-manifest-validator.js.map +1 -0
  550. package/dist/services/plugin-registry.d.ts +2542 -0
  551. package/dist/services/plugin-registry.d.ts.map +1 -0
  552. package/dist/services/plugin-registry.js +539 -0
  553. package/dist/services/plugin-registry.js.map +1 -0
  554. package/dist/services/plugin-runtime-sandbox.d.ts +40 -0
  555. package/dist/services/plugin-runtime-sandbox.d.ts.map +1 -0
  556. package/dist/services/plugin-runtime-sandbox.js +154 -0
  557. package/dist/services/plugin-runtime-sandbox.js.map +1 -0
  558. package/dist/services/plugin-secrets-handler.d.ts +81 -0
  559. package/dist/services/plugin-secrets-handler.d.ts.map +1 -0
  560. package/dist/services/plugin-secrets-handler.js +275 -0
  561. package/dist/services/plugin-secrets-handler.js.map +1 -0
  562. package/dist/services/plugin-state-store.d.ts +92 -0
  563. package/dist/services/plugin-state-store.d.ts.map +1 -0
  564. package/dist/services/plugin-state-store.js +190 -0
  565. package/dist/services/plugin-state-store.js.map +1 -0
  566. package/dist/services/plugin-stream-bus.d.ts +29 -0
  567. package/dist/services/plugin-stream-bus.d.ts.map +1 -0
  568. package/dist/services/plugin-stream-bus.js +48 -0
  569. package/dist/services/plugin-stream-bus.js.map +1 -0
  570. package/dist/services/plugin-tool-dispatcher.d.ts +180 -0
  571. package/dist/services/plugin-tool-dispatcher.d.ts.map +1 -0
  572. package/dist/services/plugin-tool-dispatcher.js +224 -0
  573. package/dist/services/plugin-tool-dispatcher.js.map +1 -0
  574. package/dist/services/plugin-tool-registry.d.ts +192 -0
  575. package/dist/services/plugin-tool-registry.d.ts.map +1 -0
  576. package/dist/services/plugin-tool-registry.js +224 -0
  577. package/dist/services/plugin-tool-registry.js.map +1 -0
  578. package/dist/services/plugin-worker-manager.d.ts +260 -0
  579. package/dist/services/plugin-worker-manager.d.ts.map +1 -0
  580. package/dist/services/plugin-worker-manager.js +835 -0
  581. package/dist/services/plugin-worker-manager.js.map +1 -0
  582. package/dist/services/projects.d.ts +92 -0
  583. package/dist/services/projects.d.ts.map +1 -0
  584. package/dist/services/projects.js +705 -0
  585. package/dist/services/projects.js.map +1 -0
  586. package/dist/services/quota-windows.d.ts +9 -0
  587. package/dist/services/quota-windows.d.ts.map +1 -0
  588. package/dist/services/quota-windows.js +56 -0
  589. package/dist/services/quota-windows.js.map +1 -0
  590. package/dist/services/resource-catalog.d.ts +29 -0
  591. package/dist/services/resource-catalog.d.ts.map +1 -0
  592. package/dist/services/resource-catalog.js +298 -0
  593. package/dist/services/resource-catalog.js.map +1 -0
  594. package/dist/services/run-intelligence.d.ts +31 -0
  595. package/dist/services/run-intelligence.d.ts.map +1 -0
  596. package/dist/services/run-intelligence.js +315 -0
  597. package/dist/services/run-intelligence.js.map +1 -0
  598. package/dist/services/run-log-store.d.ts +36 -0
  599. package/dist/services/run-log-store.d.ts.map +1 -0
  600. package/dist/services/run-log-store.js +114 -0
  601. package/dist/services/run-log-store.js.map +1 -0
  602. package/dist/services/runtime-kernel/heartbeat.d.ts +882 -0
  603. package/dist/services/runtime-kernel/heartbeat.d.ts.map +1 -0
  604. package/dist/services/runtime-kernel/heartbeat.js +4345 -0
  605. package/dist/services/runtime-kernel/heartbeat.js.map +1 -0
  606. package/dist/services/runtime-trace-metadata.d.ts +12 -0
  607. package/dist/services/runtime-trace-metadata.d.ts.map +1 -0
  608. package/dist/services/runtime-trace-metadata.js +13 -0
  609. package/dist/services/runtime-trace-metadata.js.map +1 -0
  610. package/dist/services/secrets.d.ts +511 -0
  611. package/dist/services/secrets.d.ts.map +1 -0
  612. package/dist/services/secrets.js +289 -0
  613. package/dist/services/secrets.js.map +1 -0
  614. package/dist/services/sidebar-badges.d.ts +11 -0
  615. package/dist/services/sidebar-badges.d.ts.map +1 -0
  616. package/dist/services/sidebar-badges.js +43 -0
  617. package/dist/services/sidebar-badges.js.map +1 -0
  618. package/dist/services/work-products.d.ts +14 -0
  619. package/dist/services/work-products.d.ts.map +1 -0
  620. package/dist/services/work-products.js +100 -0
  621. package/dist/services/work-products.js.map +1 -0
  622. package/dist/services/workspace-operation-log-store.d.ts +35 -0
  623. package/dist/services/workspace-operation-log-store.d.ts.map +1 -0
  624. package/dist/services/workspace-operation-log-store.js +115 -0
  625. package/dist/services/workspace-operation-log-store.js.map +1 -0
  626. package/dist/services/workspace-operations.d.ts +46 -0
  627. package/dist/services/workspace-operations.d.ts.map +1 -0
  628. package/dist/services/workspace-operations.js +237 -0
  629. package/dist/services/workspace-operations.js.map +1 -0
  630. package/dist/services/workspace-runtime.d.ts +164 -0
  631. package/dist/services/workspace-runtime.d.ts.map +1 -0
  632. package/dist/services/workspace-runtime.js +1235 -0
  633. package/dist/services/workspace-runtime.js.map +1 -0
  634. package/dist/startup-banner.d.ts +31 -0
  635. package/dist/startup-banner.d.ts.map +1 -0
  636. package/dist/startup-banner.js +121 -0
  637. package/dist/startup-banner.js.map +1 -0
  638. package/dist/storage/index.d.ts +6 -0
  639. package/dist/storage/index.d.ts.map +1 -0
  640. package/dist/storage/index.js +29 -0
  641. package/dist/storage/index.js.map +1 -0
  642. package/dist/storage/local-disk-provider.d.ts +3 -0
  643. package/dist/storage/local-disk-provider.d.ts.map +1 -0
  644. package/dist/storage/local-disk-provider.js +79 -0
  645. package/dist/storage/local-disk-provider.js.map +1 -0
  646. package/dist/storage/provider-registry.d.ts +4 -0
  647. package/dist/storage/provider-registry.d.ts.map +1 -0
  648. package/dist/storage/provider-registry.js +15 -0
  649. package/dist/storage/provider-registry.js.map +1 -0
  650. package/dist/storage/s3-provider.d.ts +11 -0
  651. package/dist/storage/s3-provider.d.ts.map +1 -0
  652. package/dist/storage/s3-provider.js +123 -0
  653. package/dist/storage/s3-provider.js.map +1 -0
  654. package/dist/storage/service.d.ts +3 -0
  655. package/dist/storage/service.d.ts.map +1 -0
  656. package/dist/storage/service.js +120 -0
  657. package/dist/storage/service.js.map +1 -0
  658. package/dist/storage/types.d.ts +55 -0
  659. package/dist/storage/types.d.ts.map +1 -0
  660. package/dist/storage/types.js +2 -0
  661. package/dist/storage/types.js.map +1 -0
  662. package/dist/ui-branding.d.ts +14 -0
  663. package/dist/ui-branding.d.ts.map +1 -0
  664. package/dist/ui-branding.js +201 -0
  665. package/dist/ui-branding.js.map +1 -0
  666. package/dist/version.d.ts +2 -0
  667. package/dist/version.d.ts.map +1 -0
  668. package/dist/version.js +5 -0
  669. package/dist/version.js.map +1 -0
  670. package/package.json +101 -0
  671. package/resources/bundled-skills/para-memory-files/SKILL.md +114 -0
  672. package/resources/bundled-skills/para-memory-files/references/schemas.md +35 -0
  673. package/resources/bundled-skills/rudder/SKILL.md +265 -0
  674. package/resources/bundled-skills/rudder/references/api-reference.md +253 -0
  675. package/resources/bundled-skills/rudder/references/cli-reference.md +67 -0
  676. package/resources/bundled-skills/rudder/references/organization-skills.md +155 -0
  677. package/resources/bundled-skills/rudder-create-agent/SKILL.md +166 -0
  678. package/resources/bundled-skills/rudder-create-agent/references/api-reference.md +172 -0
  679. package/resources/bundled-skills/rudder-create-agent/references/cli-reference.md +126 -0
  680. package/resources/bundled-skills/rudder-create-plugin/SKILL.md +103 -0
  681. package/resources/community-skills/deep-research/README.md +124 -0
  682. package/resources/community-skills/deep-research/SKILL.md +107 -0
  683. package/resources/community-skills/deep-research/reference/continuation.md +169 -0
  684. package/resources/community-skills/deep-research/reference/html-generation.md +103 -0
  685. package/resources/community-skills/deep-research/reference/methodology.md +421 -0
  686. package/resources/community-skills/deep-research/reference/quality-gates.md +197 -0
  687. package/resources/community-skills/deep-research/reference/report-assembly.md +119 -0
  688. package/resources/community-skills/deep-research/reference/weasyprint_guidelines.md +324 -0
  689. package/resources/community-skills/deep-research/requirements.txt +14 -0
  690. package/resources/community-skills/deep-research/scripts/citation_manager.py +177 -0
  691. package/resources/community-skills/deep-research/scripts/md_to_html.py +330 -0
  692. package/resources/community-skills/deep-research/scripts/research_engine.py +582 -0
  693. package/resources/community-skills/deep-research/scripts/source_evaluator.py +292 -0
  694. package/resources/community-skills/deep-research/scripts/validate_report.py +403 -0
  695. package/resources/community-skills/deep-research/scripts/verify_citations.py +426 -0
  696. package/resources/community-skills/deep-research/scripts/verify_html.py +220 -0
  697. package/resources/community-skills/deep-research/templates/mckinsey_report_template.html +443 -0
  698. package/resources/community-skills/deep-research/templates/report_template.md +433 -0
  699. package/resources/community-skills/skill-creator/SKILL.md +9 -0
  700. package/resources/community-skills/software-product-advisor/SKILL.md +290 -0
  701. package/skills/para-memory-files/SKILL.md +114 -0
  702. package/skills/para-memory-files/references/schemas.md +35 -0
  703. package/skills/rudder/SKILL.md +265 -0
  704. package/skills/rudder/references/api-reference.md +253 -0
  705. package/skills/rudder/references/cli-reference.md +67 -0
  706. package/skills/rudder/references/organization-skills.md +155 -0
  707. package/skills/rudder-create-agent/SKILL.md +166 -0
  708. package/skills/rudder-create-agent/references/api-reference.md +172 -0
  709. package/skills/rudder-create-agent/references/cli-reference.md +126 -0
  710. package/skills/rudder-create-plugin/SKILL.md +103 -0
  711. package/ui-dist/android-chrome-192x192.png +0 -0
  712. package/ui-dist/android-chrome-512x512.png +0 -0
  713. package/ui-dist/android-chrome-maskable-512x512.png +0 -0
  714. package/ui-dist/apple-touch-icon.png +0 -0
  715. package/ui-dist/assets/_basePickBy-CjUu04_e.js +1 -0
  716. package/ui-dist/assets/_baseUniq-C9YNlrVG.js +1 -0
  717. package/ui-dist/assets/apl-B4CMkyY2.js +1 -0
  718. package/ui-dist/assets/arc-CSSZfktq.js +1 -0
  719. package/ui-dist/assets/architectureDiagram-2XIMDMQ5-Co78JKUi.js +36 -0
  720. package/ui-dist/assets/asciiarmor-Df11BRmG.js +1 -0
  721. package/ui-dist/assets/asn1-EdZsLKOL.js +1 -0
  722. package/ui-dist/assets/asterisk-B-8jnY81.js +1 -0
  723. package/ui-dist/assets/blockDiagram-WCTKOSBZ-2KUUIzzz.js +132 -0
  724. package/ui-dist/assets/brainfuck-C4LP7Hcl.js +1 -0
  725. package/ui-dist/assets/c4Diagram-IC4MRINW-C6pq8tPP.js +10 -0
  726. package/ui-dist/assets/channel-BEODbRMk.js +1 -0
  727. package/ui-dist/assets/chunk-4BX2VUAB-ojCLkixe.js +1 -0
  728. package/ui-dist/assets/chunk-55IACEB6-MGONqzmz.js +1 -0
  729. package/ui-dist/assets/chunk-FMBD7UC4-CmGuLv2P.js +15 -0
  730. package/ui-dist/assets/chunk-JSJVCQXG-BNBefVr6.js +1 -0
  731. package/ui-dist/assets/chunk-KX2RTZJC-DIGBQLn5.js +1 -0
  732. package/ui-dist/assets/chunk-NQ4KR5QH-_KEutsaQ.js +220 -0
  733. package/ui-dist/assets/chunk-QZHKN3VN-B6pzyuwm.js +1 -0
  734. package/ui-dist/assets/chunk-WL4C6EOR-B8NDzcfm.js +189 -0
  735. package/ui-dist/assets/classDiagram-VBA2DB6C-CsSqaaRj.js +1 -0
  736. package/ui-dist/assets/classDiagram-v2-RAHNMMFH-CsSqaaRj.js +1 -0
  737. package/ui-dist/assets/clike-B9uivgTg.js +1 -0
  738. package/ui-dist/assets/clojure-BMjYHr_A.js +1 -0
  739. package/ui-dist/assets/clone-5oWMCI0u.js +1 -0
  740. package/ui-dist/assets/cmake-BQqOBYOt.js +1 -0
  741. package/ui-dist/assets/cobol-CWcv1MsR.js +1 -0
  742. package/ui-dist/assets/coffeescript-S37ZYGWr.js +1 -0
  743. package/ui-dist/assets/commonlisp-DBKNyK5s.js +1 -0
  744. package/ui-dist/assets/cose-bilkent-S5V4N54A-B1t6ulcV.js +1 -0
  745. package/ui-dist/assets/crystal-SjHAIU92.js +1 -0
  746. package/ui-dist/assets/css-BnMrqG3P.js +1 -0
  747. package/ui-dist/assets/cypher-C_CwsFkJ.js +1 -0
  748. package/ui-dist/assets/cytoscape.esm-BQaXIfA_.js +331 -0
  749. package/ui-dist/assets/d-pRatUO7H.js +1 -0
  750. package/ui-dist/assets/dagre-KLK3FWXG-DWVC5_HJ.js +4 -0
  751. package/ui-dist/assets/defaultLocale-DX6XiGOO.js +1 -0
  752. package/ui-dist/assets/diagram-E7M64L7V-C4ztYLox.js +24 -0
  753. package/ui-dist/assets/diagram-IFDJBPK2-DtWBGLnA.js +43 -0
  754. package/ui-dist/assets/diagram-P4PSJMXO-BiqiI4Df.js +24 -0
  755. package/ui-dist/assets/diff-DbItnlRl.js +1 -0
  756. package/ui-dist/assets/dockerfile-BKs6k2Af.js +1 -0
  757. package/ui-dist/assets/dtd-DF_7sFjM.js +1 -0
  758. package/ui-dist/assets/dylan-DwRh75JA.js +1 -0
  759. package/ui-dist/assets/ebnf-CDyGwa7X.js +1 -0
  760. package/ui-dist/assets/ecl-Cabwm37j.js +1 -0
  761. package/ui-dist/assets/eiffel-CnydiIhH.js +1 -0
  762. package/ui-dist/assets/elm-vLlmbW-K.js +1 -0
  763. package/ui-dist/assets/erDiagram-INFDFZHY-CUhr9rIh.js +70 -0
  764. package/ui-dist/assets/erlang-BNw1qcRV.js +1 -0
  765. package/ui-dist/assets/factor-kuTfRLto.js +1 -0
  766. package/ui-dist/assets/fcl-Kvtd6kyn.js +1 -0
  767. package/ui-dist/assets/flowDiagram-PKNHOUZH-BEqBmNL-.js +162 -0
  768. package/ui-dist/assets/forth-Ffai-XNe.js +1 -0
  769. package/ui-dist/assets/fortran-DYz_wnZ1.js +1 -0
  770. package/ui-dist/assets/ganttDiagram-A5KZAMGK-CdeWhdno.js +292 -0
  771. package/ui-dist/assets/gas-Bneqetm1.js +1 -0
  772. package/ui-dist/assets/gherkin-heZmZLOM.js +1 -0
  773. package/ui-dist/assets/gitGraphDiagram-K3NZZRJ6-CgG66QFg.js +65 -0
  774. package/ui-dist/assets/graph-rmownl79.js +1 -0
  775. package/ui-dist/assets/groovy-D9Dt4D0W.js +1 -0
  776. package/ui-dist/assets/haskell-Cw1EW3IL.js +1 -0
  777. package/ui-dist/assets/haxe-H-WmDvRZ.js +1 -0
  778. package/ui-dist/assets/http-DBlCnlav.js +1 -0
  779. package/ui-dist/assets/idl-BEugSyMb.js +1 -0
  780. package/ui-dist/assets/index-B1YyDqaG.js +1 -0
  781. package/ui-dist/assets/index-B7exNxYd.js +1 -0
  782. package/ui-dist/assets/index-BIuriVDl.js +1 -0
  783. package/ui-dist/assets/index-BT9rfwYt.js +1 -0
  784. package/ui-dist/assets/index-BZhmacJG.js +1 -0
  785. package/ui-dist/assets/index-B_ebS3U_.js +3 -0
  786. package/ui-dist/assets/index-BnQqZOsc.js +1 -0
  787. package/ui-dist/assets/index-BwPbAax6.js +1 -0
  788. package/ui-dist/assets/index-C5i670o5.js +1 -0
  789. package/ui-dist/assets/index-C9KwE7Yr.js +1 -0
  790. package/ui-dist/assets/index-CDId_UjP.js +1 -0
  791. package/ui-dist/assets/index-CI9ydSGM.js +1 -0
  792. package/ui-dist/assets/index-CKpm3WGI.css +1 -0
  793. package/ui-dist/assets/index-CMP_bzP3.js +2 -0
  794. package/ui-dist/assets/index-CRcHIoCW.js +1 -0
  795. package/ui-dist/assets/index-DZqNY-Lg.js +1 -0
  796. package/ui-dist/assets/index-DbDKJhW-.js +7 -0
  797. package/ui-dist/assets/index-Dkg6MwQ_.js +1 -0
  798. package/ui-dist/assets/index-Dn0iitKg.js +1 -0
  799. package/ui-dist/assets/index-GvHywIOA.js +1323 -0
  800. package/ui-dist/assets/index-WtX4Y4Fx.js +13 -0
  801. package/ui-dist/assets/index-iyC5PHC3.js +6 -0
  802. package/ui-dist/assets/index-jMlzlqoV.js +1 -0
  803. package/ui-dist/assets/index-pTIOLGTe.js +1 -0
  804. package/ui-dist/assets/infoDiagram-LFFYTUFH-CEhdbTYQ.js +2 -0
  805. package/ui-dist/assets/init-Gi6I4Gst.js +1 -0
  806. package/ui-dist/assets/ishikawaDiagram-PHBUUO56-g9GiiXI2.js +70 -0
  807. package/ui-dist/assets/javascript-iXu5QeM3.js +1 -0
  808. package/ui-dist/assets/journeyDiagram-4ABVD52K-CheeZzlg.js +139 -0
  809. package/ui-dist/assets/julia-DuME0IfC.js +1 -0
  810. package/ui-dist/assets/kanban-definition-K7BYSVSG-BTpuAgUJ.js +89 -0
  811. package/ui-dist/assets/katex-B1X10hvy.js +261 -0
  812. package/ui-dist/assets/layout-CuBgufef.js +1 -0
  813. package/ui-dist/assets/linear-CnXO6wXw.js +1 -0
  814. package/ui-dist/assets/livescript-BwQOo05w.js +1 -0
  815. package/ui-dist/assets/lua-BgMRiT3U.js +1 -0
  816. package/ui-dist/assets/mathematica-DTrFuWx2.js +1 -0
  817. package/ui-dist/assets/mbox-CNhZ1qSd.js +1 -0
  818. package/ui-dist/assets/mermaid.core-DVaYxfh9.js +255 -0
  819. package/ui-dist/assets/mindmap-definition-YRQLILUH-00nAuexq.js +68 -0
  820. package/ui-dist/assets/mirc-CjQqDB4T.js +1 -0
  821. package/ui-dist/assets/mllike-CXdrOF99.js +1 -0
  822. package/ui-dist/assets/modelica-Dc1JOy9r.js +1 -0
  823. package/ui-dist/assets/mscgen-BA5vi2Kp.js +1 -0
  824. package/ui-dist/assets/mumps-BT43cFF4.js +1 -0
  825. package/ui-dist/assets/nginx-DdIZxoE0.js +1 -0
  826. package/ui-dist/assets/nsis-LdVXkNf5.js +1 -0
  827. package/ui-dist/assets/ntriples-BfvgReVJ.js +1 -0
  828. package/ui-dist/assets/octave-Ck1zUtKM.js +1 -0
  829. package/ui-dist/assets/ordinal-Cboi1Yqb.js +1 -0
  830. package/ui-dist/assets/oz-BzwKVEFT.js +1 -0
  831. package/ui-dist/assets/pascal--L3eBynH.js +1 -0
  832. package/ui-dist/assets/perl-CdXCOZ3F.js +1 -0
  833. package/ui-dist/assets/pieDiagram-SKSYHLDU-NaOgRqIj.js +30 -0
  834. package/ui-dist/assets/pig-CevX1Tat.js +1 -0
  835. package/ui-dist/assets/powershell-CFHJl5sT.js +1 -0
  836. package/ui-dist/assets/properties-C78fOPTZ.js +1 -0
  837. package/ui-dist/assets/protobuf-ChK-085T.js +1 -0
  838. package/ui-dist/assets/pug-DeIclll2.js +1 -0
  839. package/ui-dist/assets/puppet-DMA9R1ak.js +1 -0
  840. package/ui-dist/assets/python-BuPzkPfP.js +1 -0
  841. package/ui-dist/assets/q-pXgVlZs6.js +1 -0
  842. package/ui-dist/assets/quadrantDiagram-337W2JSQ-Bnf9OCW0.js +7 -0
  843. package/ui-dist/assets/r-B6wPVr8A.js +1 -0
  844. package/ui-dist/assets/requirementDiagram-Z7DCOOCP-BiacZTTh.js +73 -0
  845. package/ui-dist/assets/rpm-CTu-6PCP.js +1 -0
  846. package/ui-dist/assets/ruby-B2Rjki9n.js +1 -0
  847. package/ui-dist/assets/sankeyDiagram-WA2Y5GQK-DOuD4D2Q.js +10 -0
  848. package/ui-dist/assets/sas-B4kiWyti.js +1 -0
  849. package/ui-dist/assets/scheme-C41bIUwD.js +1 -0
  850. package/ui-dist/assets/sequenceDiagram-2WXFIKYE-oV3M_w-H.js +145 -0
  851. package/ui-dist/assets/shell-CjFT_Tl9.js +1 -0
  852. package/ui-dist/assets/sieve-C3Gn_uJK.js +1 -0
  853. package/ui-dist/assets/simple-mode-GW_nhZxv.js +1 -0
  854. package/ui-dist/assets/smalltalk-CnHTOXQT.js +1 -0
  855. package/ui-dist/assets/solr-DehyRSwq.js +1 -0
  856. package/ui-dist/assets/sparql-DkYu6x3z.js +1 -0
  857. package/ui-dist/assets/spreadsheet-BCZA_wO0.js +1 -0
  858. package/ui-dist/assets/sql-D0XecflT.js +1 -0
  859. package/ui-dist/assets/stateDiagram-RAJIS63D-CdRc2Pqb.js +1 -0
  860. package/ui-dist/assets/stateDiagram-v2-FVOUBMTO-CIMHFJYg.js +1 -0
  861. package/ui-dist/assets/stex-C3f8Ysf7.js +1 -0
  862. package/ui-dist/assets/stylus-B533Al4x.js +1 -0
  863. package/ui-dist/assets/swift-BzpIVaGY.js +1 -0
  864. package/ui-dist/assets/tcl-DVfN8rqt.js +1 -0
  865. package/ui-dist/assets/textile-CnDTJFAw.js +1 -0
  866. package/ui-dist/assets/tiddlywiki-DO-Gjzrf.js +1 -0
  867. package/ui-dist/assets/tiki-DGYXhP31.js +1 -0
  868. package/ui-dist/assets/timeline-definition-YZTLITO2-BCWQDIwt.js +61 -0
  869. package/ui-dist/assets/toml-Bm5Em-hy.js +1 -0
  870. package/ui-dist/assets/treemap-KZPCXAKY-BvsIxXAi.js +162 -0
  871. package/ui-dist/assets/troff-wAsdV37c.js +1 -0
  872. package/ui-dist/assets/ttcn-CfJYG6tj.js +1 -0
  873. package/ui-dist/assets/ttcn-cfg-B9xdYoR4.js +1 -0
  874. package/ui-dist/assets/turtle-B1tBg_DP.js +1 -0
  875. package/ui-dist/assets/vb-CmGdzxic.js +1 -0
  876. package/ui-dist/assets/vbscript-BuJXcnF6.js +1 -0
  877. package/ui-dist/assets/velocity-D8B20fx6.js +1 -0
  878. package/ui-dist/assets/vennDiagram-LZ73GAT5-BzibHs4r.js +34 -0
  879. package/ui-dist/assets/verilog-C6RDOZhf.js +1 -0
  880. package/ui-dist/assets/vhdl-lSbBsy5d.js +1 -0
  881. package/ui-dist/assets/webidl-ZXfAyPTL.js +1 -0
  882. package/ui-dist/assets/xquery-DzFWVndE.js +1 -0
  883. package/ui-dist/assets/xychartDiagram-JWTSCODW-CX_Xt_y-.js +7 -0
  884. package/ui-dist/assets/yacas-BJ4BC0dw.js +1 -0
  885. package/ui-dist/assets/z80-Hz9HOZM7.js +1 -0
  886. package/ui-dist/brands/opencode-logo-dark-square.svg +18 -0
  887. package/ui-dist/brands/opencode-logo-light-square.svg +18 -0
  888. package/ui-dist/favicon-16x16.png +0 -0
  889. package/ui-dist/favicon-32x32.png +0 -0
  890. package/ui-dist/favicon-dev-16x16.png +0 -0
  891. package/ui-dist/favicon-dev-32x32.png +0 -0
  892. package/ui-dist/favicon-dev.ico +0 -0
  893. package/ui-dist/favicon.ico +0 -0
  894. package/ui-dist/favicon.svg +1 -0
  895. package/ui-dist/index.html +61 -0
  896. package/ui-dist/rudder-logo.png +0 -0
  897. package/ui-dist/site.webmanifest +30 -0
  898. package/ui-dist/sw.js +42 -0
  899. package/ui-dist/worktree-favicon-16x16.png +0 -0
  900. package/ui-dist/worktree-favicon-32x32.png +0 -0
  901. package/ui-dist/worktree-favicon.ico +0 -0
  902. package/ui-dist/worktree-favicon.svg +1 -0
package/dist/index.js ADDED
@@ -0,0 +1,827 @@
1
+ /// <reference path="./types/express.d.ts" />
2
+ import { existsSync, readFileSync, rmSync } from "node:fs";
3
+ import { createServer } from "node:http";
4
+ import { resolve } from "node:path";
5
+ import { createInterface } from "node:readline/promises";
6
+ import { stdin, stdout } from "node:process";
7
+ import { pathToFileURL } from "node:url";
8
+ import { and, eq } from "drizzle-orm";
9
+ import { createDb, cleanupStaleSysvSharedMemorySegments, ensurePostgresDatabase, ensurePostgresRolePassword, getPostgresDataDirectory, isEmbeddedPostgresSharedMemoryError, normalizeLegacyColumnNames, inspectMigrations, applyPendingMigrations, reconcilePendingMigrationHistory, formatDatabaseBackupResult, runDatabaseBackup, authUsers, organizations, organizationMemberships, instanceUserRoles, } from "@rudderhq/db";
10
+ import detectPort from "detect-port";
11
+ import { createRudderApp } from "./app.js";
12
+ import { loadConfig } from "./config.js";
13
+ import { initializeLangfuse, shutdownLangfuse } from "./langfuse.js";
14
+ import { pruneOrphanedOrganizationStorage, resolveRudderHomeDir, resolveRudderInstanceId, resolveRudderInstanceRoot, } from "./home-paths.js";
15
+ import { gracefullyStopRuntime, probeLocalRuntime, resolveEffectiveLocalEnvName, resolveLocalRuntimePaths, resolveRuntimeOwnerKind, withRuntimeStartLock, writeLocalRuntimeDescriptor, removeLocalRuntimeDescriptorIfOwned, } from "./local-runtime.js";
16
+ import { logger } from "./middleware/logger.js";
17
+ import { setupLiveEventsWebSocketServer } from "./realtime/live-events-ws.js";
18
+ import { heartbeatService, reconcilePersistedRuntimeServicesOnStartup, automationService, } from "./services/index.js";
19
+ import { createStorageServiceFromConfig } from "./storage/index.js";
20
+ import { resolveRudderConfigPath, resolveRudderEnvPath } from "./paths.js";
21
+ import { printStartupBanner } from "./startup-banner.js";
22
+ import { serverVersion } from "./version.js";
23
+ import { getBoardClaimWarningUrl, initializeBoardClaimChallenge } from "./board-claim.js";
24
+ function mergeRuntimeConfig(baseConfig, overrides) {
25
+ if (!overrides)
26
+ return baseConfig;
27
+ return {
28
+ ...baseConfig,
29
+ ...overrides,
30
+ deploymentExposure: (overrides.deploymentMode ?? baseConfig.deploymentMode) === "local_trusted"
31
+ ? "private"
32
+ : (overrides.deploymentExposure ?? baseConfig.deploymentExposure),
33
+ };
34
+ }
35
+ export async function startManagedLocalServer(options) {
36
+ const instanceId = resolveRudderInstanceId();
37
+ const localEnv = resolveEffectiveLocalEnvName(instanceId);
38
+ const runtimePaths = resolveLocalRuntimePaths(instanceId);
39
+ const takeoverOnVersionMismatch = options.takeoverOnVersionMismatch ?? true;
40
+ const preferredOwner = options.preferredOwner ?? false;
41
+ const gracefulStopTimeoutMs = options.gracefulStopTimeoutMs ?? 10_000;
42
+ return await withRuntimeStartLock({
43
+ instanceId,
44
+ ownerKind: options.ownerKind,
45
+ timeoutMs: options.runtimeStartupLockTimeoutMs,
46
+ }, async () => {
47
+ const probe = await probeLocalRuntime({
48
+ instanceId,
49
+ localEnv,
50
+ expectedVersion: serverVersion,
51
+ });
52
+ if (probe.kind === "healthy") {
53
+ const runtimeOwnerKind = probe.health.runtimeOwnerKind ?? probe.descriptor.ownerKind;
54
+ const shouldTakeOverForOwner = preferredOwner && runtimeOwnerKind !== options.ownerKind;
55
+ const shouldTakeOverForVersion = !probe.versionMatches && takeoverOnVersionMismatch;
56
+ if (shouldTakeOverForOwner || shouldTakeOverForVersion) {
57
+ const stopped = await gracefullyStopRuntime(probe.descriptor, gracefulStopTimeoutMs);
58
+ if (!stopped) {
59
+ const why = shouldTakeOverForOwner
60
+ ? `preferred owner '${options.ownerKind}'`
61
+ : `version ${serverVersion}`;
62
+ throw new Error(`Unable to take over local instance '${instanceId}' for ${why}. ` +
63
+ `Existing runtime pid ${probe.descriptor.pid} did not exit after SIGTERM.`);
64
+ }
65
+ }
66
+ else if (probe.versionMatches) {
67
+ return {
68
+ host: new URL(probe.descriptor.apiUrl).hostname,
69
+ listenPort: probe.descriptor.listenPort,
70
+ apiUrl: probe.descriptor.apiUrl,
71
+ databaseUrl: null,
72
+ instancePaths: {
73
+ homeDir: resolveRudderHomeDir(),
74
+ instanceRoot: resolveRudderInstanceRoot(),
75
+ configPath: resolveRudderConfigPath(),
76
+ envPath: resolveRudderEnvPath(),
77
+ },
78
+ runtime: {
79
+ mode: "attached",
80
+ instanceId,
81
+ localEnv,
82
+ ownerKind: runtimeOwnerKind,
83
+ version: probe.health.version ?? probe.descriptor.version,
84
+ descriptorPath: runtimePaths.descriptorPath,
85
+ lockPath: runtimePaths.lockPath,
86
+ startedAt: probe.descriptor.startedAt,
87
+ },
88
+ stop: async () => { },
89
+ dispose: async () => { },
90
+ };
91
+ }
92
+ else {
93
+ throw new Error(`Local instance '${instanceId}' is already running version ${probe.health.version ?? probe.descriptor.version}. ` +
94
+ `Current server version is ${serverVersion}. Stop the running instance or allow takeover.`);
95
+ }
96
+ }
97
+ const started = await startServer({
98
+ ...options,
99
+ runtimeOwnerKind: options.ownerKind,
100
+ });
101
+ return {
102
+ host: started.host,
103
+ listenPort: started.listenPort,
104
+ apiUrl: started.apiUrl,
105
+ databaseUrl: started.databaseUrl,
106
+ instancePaths: started.instancePaths,
107
+ runtime: {
108
+ mode: "owned",
109
+ instanceId,
110
+ localEnv,
111
+ ownerKind: options.ownerKind,
112
+ version: serverVersion,
113
+ descriptorPath: runtimePaths.descriptorPath,
114
+ lockPath: runtimePaths.lockPath,
115
+ startedAt: new Date().toISOString(),
116
+ },
117
+ stop: started.stop,
118
+ dispose: started.dispose,
119
+ };
120
+ });
121
+ }
122
+ export async function startServer(options = {}) {
123
+ options.onEvent?.({ stage: "config", message: "Loading Rudder configuration" });
124
+ const instanceId = resolveRudderInstanceId();
125
+ const localEnv = resolveEffectiveLocalEnvName(instanceId);
126
+ const runtimeOwnerKind = options.runtimeOwnerKind ?? resolveRuntimeOwnerKind();
127
+ if (runtimeOwnerKind) {
128
+ process.env.RUDDER_RUNTIME_OWNER_KIND = runtimeOwnerKind;
129
+ }
130
+ const config = mergeRuntimeConfig(loadConfig(), options.runtimeOverrides);
131
+ initializeLangfuse({
132
+ enabled: config.langfuse.enabled,
133
+ baseUrl: config.langfuse.baseUrl,
134
+ publicKey: config.langfuse.publicKey,
135
+ secretKey: config.langfuse.secretKey,
136
+ environment: config.langfuse.environment,
137
+ instanceId,
138
+ deploymentMode: config.deploymentMode,
139
+ localEnv,
140
+ release: serverVersion,
141
+ });
142
+ if (process.env.RUDDER_SECRETS_PROVIDER === undefined) {
143
+ process.env.RUDDER_SECRETS_PROVIDER = config.secretsProvider;
144
+ }
145
+ if (process.env.RUDDER_SECRETS_STRICT_MODE === undefined) {
146
+ process.env.RUDDER_SECRETS_STRICT_MODE = config.secretsStrictMode ? "true" : "false";
147
+ }
148
+ if (process.env.RUDDER_SECRETS_MASTER_KEY_FILE === undefined) {
149
+ process.env.RUDDER_SECRETS_MASTER_KEY_FILE = config.secretsMasterKeyFilePath;
150
+ }
151
+ function formatPendingMigrationSummary(migrations) {
152
+ if (migrations.length === 0)
153
+ return "none";
154
+ return migrations.length > 3
155
+ ? `${migrations.slice(0, 3).join(", ")} (+${migrations.length - 3} more)`
156
+ : migrations.join(", ");
157
+ }
158
+ async function promptApplyMigrations(migrations) {
159
+ if (process.env.RUDDER_MIGRATION_PROMPT === "never")
160
+ return false;
161
+ if (process.env.RUDDER_MIGRATION_AUTO_APPLY === "true")
162
+ return true;
163
+ if (!stdin.isTTY || !stdout.isTTY)
164
+ return true;
165
+ const prompt = createInterface({ input: stdin, output: stdout });
166
+ try {
167
+ const answer = (await prompt.question(`Apply pending migrations (${formatPendingMigrationSummary(migrations)}) now? (y/N): `)).trim().toLowerCase();
168
+ return answer === "y" || answer === "yes";
169
+ }
170
+ finally {
171
+ prompt.close();
172
+ }
173
+ }
174
+ async function ensureMigrations(connectionString, label, opts) {
175
+ const normalizedLegacyColumns = await normalizeLegacyColumnNames(connectionString);
176
+ if (normalizedLegacyColumns.length > 0) {
177
+ logger.warn({ normalizedLegacyColumns }, `${label} had legacy schema drift; normalized columns before migration inspection.`);
178
+ }
179
+ const autoApply = opts?.autoApply === true;
180
+ let state = await inspectMigrations(connectionString);
181
+ if (state.status === "needsMigrations" && state.reason === "pending-migrations") {
182
+ const repair = await reconcilePendingMigrationHistory(connectionString);
183
+ if (repair.repairedMigrations.length > 0) {
184
+ logger.warn({ repairedMigrations: repair.repairedMigrations }, `${label} had drifted migration history; repaired migration journal entries from existing schema state.`);
185
+ state = await inspectMigrations(connectionString);
186
+ if (state.status === "upToDate")
187
+ return "already applied";
188
+ }
189
+ }
190
+ if (state.status === "upToDate")
191
+ return "already applied";
192
+ if (state.status === "needsMigrations" && state.reason === "no-migration-journal-non-empty-db") {
193
+ logger.warn({ tableCount: state.tableCount }, `${label} has existing tables but no migration journal. Run migrations manually to sync schema.`);
194
+ const apply = autoApply ? true : await promptApplyMigrations(state.pendingMigrations);
195
+ if (!apply) {
196
+ throw new Error(`${label} has pending migrations (${formatPendingMigrationSummary(state.pendingMigrations)}). ` +
197
+ "Refusing to start against a stale schema. Run pnpm db:migrate or set RUDDER_MIGRATION_AUTO_APPLY=true.");
198
+ }
199
+ logger.info({ pendingMigrations: state.pendingMigrations }, `Applying ${state.pendingMigrations.length} pending migrations for ${label}`);
200
+ await applyPendingMigrations(connectionString);
201
+ return "applied (pending migrations)";
202
+ }
203
+ const apply = autoApply ? true : await promptApplyMigrations(state.pendingMigrations);
204
+ if (!apply) {
205
+ throw new Error(`${label} has pending migrations (${formatPendingMigrationSummary(state.pendingMigrations)}). ` +
206
+ "Refusing to start against a stale schema. Run pnpm db:migrate or set RUDDER_MIGRATION_AUTO_APPLY=true.");
207
+ }
208
+ logger.info({ pendingMigrations: state.pendingMigrations }, `Applying ${state.pendingMigrations.length} pending migrations for ${label}`);
209
+ await applyPendingMigrations(connectionString);
210
+ return "applied (pending migrations)";
211
+ }
212
+ function isLoopbackHost(host) {
213
+ const normalized = host.trim().toLowerCase();
214
+ return normalized === "127.0.0.1" || normalized === "localhost" || normalized === "::1";
215
+ }
216
+ const LOCAL_BOARD_USER_ID = "local-board";
217
+ const LOCAL_BOARD_USER_EMAIL = "local@rudder.local";
218
+ const LOCAL_BOARD_USER_NAME = "Board";
219
+ async function ensureLocalTrustedBoardPrincipal(db) {
220
+ const now = new Date();
221
+ const existingUser = await db
222
+ .select({ id: authUsers.id })
223
+ .from(authUsers)
224
+ .where(eq(authUsers.id, LOCAL_BOARD_USER_ID))
225
+ .then((rows) => rows[0] ?? null);
226
+ if (!existingUser) {
227
+ await db.insert(authUsers).values({
228
+ id: LOCAL_BOARD_USER_ID,
229
+ name: LOCAL_BOARD_USER_NAME,
230
+ email: LOCAL_BOARD_USER_EMAIL,
231
+ emailVerified: true,
232
+ image: null,
233
+ createdAt: now,
234
+ updatedAt: now,
235
+ });
236
+ }
237
+ const role = await db
238
+ .select({ id: instanceUserRoles.id })
239
+ .from(instanceUserRoles)
240
+ .where(and(eq(instanceUserRoles.userId, LOCAL_BOARD_USER_ID), eq(instanceUserRoles.role, "instance_admin")))
241
+ .then((rows) => rows[0] ?? null);
242
+ if (!role) {
243
+ await db.insert(instanceUserRoles).values({
244
+ userId: LOCAL_BOARD_USER_ID,
245
+ role: "instance_admin",
246
+ });
247
+ }
248
+ const companyRows = await db.select({ id: organizations.id }).from(organizations);
249
+ for (const organization of companyRows) {
250
+ const membership = await db
251
+ .select({ id: organizationMemberships.id })
252
+ .from(organizationMemberships)
253
+ .where(and(eq(organizationMemberships.orgId, organization.id), eq(organizationMemberships.principalType, "user"), eq(organizationMemberships.principalId, LOCAL_BOARD_USER_ID)))
254
+ .then((rows) => rows[0] ?? null);
255
+ if (membership)
256
+ continue;
257
+ await db.insert(organizationMemberships).values({
258
+ orgId: organization.id,
259
+ principalType: "user",
260
+ principalId: LOCAL_BOARD_USER_ID,
261
+ status: "active",
262
+ membershipRole: "owner",
263
+ });
264
+ }
265
+ }
266
+ let db;
267
+ let embeddedPostgres = null;
268
+ let embeddedPostgresStartedByThisProcess = false;
269
+ let appHandle = null;
270
+ let migrationSummary = "skipped";
271
+ let activeDatabaseConnectionString;
272
+ let startupDbInfo;
273
+ options.onEvent?.({ stage: "database", message: "Preparing database" });
274
+ if (config.databaseUrl) {
275
+ migrationSummary = await ensureMigrations(config.databaseUrl, "PostgreSQL");
276
+ db = createDb(config.databaseUrl);
277
+ logger.info("Using external PostgreSQL via DATABASE_URL/config");
278
+ activeDatabaseConnectionString = config.databaseUrl;
279
+ startupDbInfo = { mode: "external-postgres", connectionString: config.databaseUrl };
280
+ }
281
+ else {
282
+ const moduleName = "embedded-postgres";
283
+ let EmbeddedPostgres;
284
+ try {
285
+ const mod = await import(moduleName);
286
+ EmbeddedPostgres = mod.default;
287
+ }
288
+ catch {
289
+ throw new Error("Embedded PostgreSQL mode requires dependency `embedded-postgres`. Reinstall dependencies (without omitting required packages), or set DATABASE_URL for external Postgres.");
290
+ }
291
+ const dataDir = resolve(config.embeddedPostgresDataDir);
292
+ const configuredPort = config.embeddedPostgresPort;
293
+ let port = configuredPort;
294
+ const embeddedPostgresLogBuffer = [];
295
+ const EMBEDDED_POSTGRES_LOG_BUFFER_LIMIT = 120;
296
+ const verboseEmbeddedPostgresLogs = process.env.RUDDER_EMBEDDED_POSTGRES_VERBOSE === "true";
297
+ const appendEmbeddedPostgresLog = (message) => {
298
+ const text = typeof message === "string" ? message : message instanceof Error ? message.message : String(message ?? "");
299
+ for (const lineRaw of text.split(/\r?\n/)) {
300
+ const line = lineRaw.trim();
301
+ if (!line)
302
+ continue;
303
+ embeddedPostgresLogBuffer.push(line);
304
+ if (embeddedPostgresLogBuffer.length > EMBEDDED_POSTGRES_LOG_BUFFER_LIMIT) {
305
+ embeddedPostgresLogBuffer.splice(0, embeddedPostgresLogBuffer.length - EMBEDDED_POSTGRES_LOG_BUFFER_LIMIT);
306
+ }
307
+ if (verboseEmbeddedPostgresLogs) {
308
+ logger.info({ embeddedPostgresLog: line }, "embedded-postgres");
309
+ }
310
+ }
311
+ };
312
+ const logEmbeddedPostgresFailure = (phase, err) => {
313
+ if (embeddedPostgresLogBuffer.length > 0) {
314
+ logger.error({
315
+ phase,
316
+ recentLogs: embeddedPostgresLogBuffer,
317
+ err,
318
+ }, "Embedded PostgreSQL failed; showing buffered startup logs");
319
+ }
320
+ };
321
+ const resolveEmbeddedAdminConnectionString = async (candidatePort) => {
322
+ const result = await ensurePostgresRolePassword({
323
+ host: "127.0.0.1",
324
+ port: candidatePort,
325
+ user: "rudder",
326
+ database: "postgres",
327
+ preferredPassword: "rudder",
328
+ fallbackPasswords: ["password"],
329
+ expectedDataDir: dataDir,
330
+ });
331
+ if (result.normalized) {
332
+ logger.warn(`Normalized legacy embedded PostgreSQL password for ${dataDir}; old desktop data dir was using a previous default password`);
333
+ }
334
+ return result.connectionString;
335
+ };
336
+ const createEmbeddedPostgresInstance = (candidatePort) => new EmbeddedPostgres({
337
+ databaseDir: dataDir,
338
+ user: "rudder",
339
+ password: "rudder",
340
+ port: candidatePort,
341
+ persistent: true,
342
+ initdbFlags: ["--encoding=UTF8", "--locale=C"],
343
+ onLog: appendEmbeddedPostgresLog,
344
+ onError: appendEmbeddedPostgresLog,
345
+ });
346
+ if (config.databaseMode === "postgres") {
347
+ logger.warn("Database mode is postgres but no connection string was set; falling back to embedded PostgreSQL");
348
+ }
349
+ const clusterVersionFile = resolve(dataDir, "PG_VERSION");
350
+ const clusterAlreadyInitialized = existsSync(clusterVersionFile);
351
+ const postmasterPidFile = resolve(dataDir, "postmaster.pid");
352
+ const isPidRunning = (pid) => {
353
+ try {
354
+ process.kill(pid, 0);
355
+ return true;
356
+ }
357
+ catch {
358
+ return false;
359
+ }
360
+ };
361
+ const getRunningPid = () => {
362
+ if (!existsSync(postmasterPidFile))
363
+ return null;
364
+ try {
365
+ const pidLine = readFileSync(postmasterPidFile, "utf8").split("\n")[0]?.trim();
366
+ const pid = Number(pidLine);
367
+ if (!Number.isInteger(pid) || pid <= 0)
368
+ return null;
369
+ if (!isPidRunning(pid))
370
+ return null;
371
+ return pid;
372
+ }
373
+ catch {
374
+ return null;
375
+ }
376
+ };
377
+ const runningPid = getRunningPid();
378
+ if (runningPid) {
379
+ logger.warn(`Embedded PostgreSQL already running; reusing existing process (pid=${runningPid}, port=${port})`);
380
+ }
381
+ else {
382
+ try {
383
+ const configuredAdminConnectionString = await resolveEmbeddedAdminConnectionString(configuredPort);
384
+ const actualDataDir = await getPostgresDataDirectory(configuredAdminConnectionString);
385
+ if (typeof actualDataDir !== "string" ||
386
+ resolve(actualDataDir) !== resolve(dataDir)) {
387
+ throw new Error("reachable postgres does not use the expected embedded data directory");
388
+ }
389
+ await ensurePostgresDatabase(configuredAdminConnectionString, "rudder");
390
+ logger.warn(`Embedded PostgreSQL appears to already be reachable without a pid file; reusing existing server on configured port ${configuredPort}`);
391
+ }
392
+ catch {
393
+ const detectedPort = await detectPort(configuredPort);
394
+ if (detectedPort !== configuredPort) {
395
+ logger.warn(`Embedded PostgreSQL port is in use; using next free port (requestedPort=${configuredPort}, selectedPort=${detectedPort})`);
396
+ }
397
+ port = detectedPort;
398
+ logger.info(`Using embedded PostgreSQL because no DATABASE_URL set (dataDir=${dataDir}, port=${port})`);
399
+ embeddedPostgres = createEmbeddedPostgresInstance(port);
400
+ if (!clusterAlreadyInitialized) {
401
+ try {
402
+ await embeddedPostgres.initialise();
403
+ }
404
+ catch (err) {
405
+ logEmbeddedPostgresFailure("initialise", err);
406
+ throw err;
407
+ }
408
+ }
409
+ else {
410
+ logger.info(`Embedded PostgreSQL cluster already exists (${clusterVersionFile}); skipping init`);
411
+ }
412
+ if (existsSync(postmasterPidFile)) {
413
+ logger.warn("Removing stale embedded PostgreSQL lock file");
414
+ rmSync(postmasterPidFile, { force: true });
415
+ }
416
+ try {
417
+ await embeddedPostgres.start();
418
+ }
419
+ catch (err) {
420
+ if (isEmbeddedPostgresSharedMemoryError(err, embeddedPostgresLogBuffer)) {
421
+ const recovered = await cleanupStaleSysvSharedMemorySegments();
422
+ if (recovered.removedIds.length > 0) {
423
+ logger.warn({ removedSegmentIds: recovered.removedIds }, "Recovered stale SysV shared memory segments after embedded PostgreSQL startup failure; retrying once");
424
+ embeddedPostgres = createEmbeddedPostgresInstance(port);
425
+ try {
426
+ await embeddedPostgres.start();
427
+ }
428
+ catch (retryErr) {
429
+ logEmbeddedPostgresFailure("start", retryErr);
430
+ throw retryErr;
431
+ }
432
+ }
433
+ else {
434
+ logEmbeddedPostgresFailure("start", err);
435
+ throw err;
436
+ }
437
+ }
438
+ else {
439
+ logEmbeddedPostgresFailure("start", err);
440
+ throw err;
441
+ }
442
+ }
443
+ embeddedPostgresStartedByThisProcess = true;
444
+ }
445
+ }
446
+ const embeddedAdminConnectionString = await resolveEmbeddedAdminConnectionString(port);
447
+ const dbStatus = await ensurePostgresDatabase(embeddedAdminConnectionString, "rudder");
448
+ if (dbStatus === "created") {
449
+ logger.info("Created embedded PostgreSQL database: rudder");
450
+ }
451
+ const embeddedConnectionString = `postgres://rudder:rudder@127.0.0.1:${port}/rudder`;
452
+ const shouldAutoApplyFirstRunMigrations = !clusterAlreadyInitialized || dbStatus === "created";
453
+ if (shouldAutoApplyFirstRunMigrations) {
454
+ logger.info("Detected first-run embedded PostgreSQL setup; applying pending migrations automatically");
455
+ }
456
+ migrationSummary = await ensureMigrations(embeddedConnectionString, "Embedded PostgreSQL", {
457
+ autoApply: shouldAutoApplyFirstRunMigrations,
458
+ });
459
+ db = createDb(embeddedConnectionString);
460
+ logger.info("Embedded PostgreSQL ready");
461
+ activeDatabaseConnectionString = embeddedConnectionString;
462
+ startupDbInfo = { mode: "embedded-postgres", dataDir, port };
463
+ }
464
+ const liveOrganizationRows = await db
465
+ .select({ id: organizations.id })
466
+ .from(organizations);
467
+ const prunedOrganizationStorage = await pruneOrphanedOrganizationStorage(liveOrganizationRows.map((row) => row.id));
468
+ if (prunedOrganizationStorage.removedOrganizationDirNames.length > 0
469
+ || prunedOrganizationStorage.removedLegacyProjectDirNames.length > 0) {
470
+ logger.warn({
471
+ removedOrganizationDirNames: prunedOrganizationStorage.removedOrganizationDirNames,
472
+ removedLegacyProjectDirNames: prunedOrganizationStorage.removedLegacyProjectDirNames,
473
+ }, "pruned orphaned organization storage on startup");
474
+ }
475
+ if (config.deploymentMode === "local_trusted" && !isLoopbackHost(config.host)) {
476
+ throw new Error(`local_trusted mode requires loopback host binding (received: ${config.host}). ` +
477
+ "Use authenticated mode for non-loopback deployments.");
478
+ }
479
+ if (config.deploymentMode === "local_trusted" && config.deploymentExposure !== "private") {
480
+ throw new Error("local_trusted mode only supports private exposure");
481
+ }
482
+ if (config.deploymentMode === "authenticated") {
483
+ if (config.authBaseUrlMode === "explicit" && !config.authPublicBaseUrl) {
484
+ throw new Error("auth.baseUrlMode=explicit requires auth.publicBaseUrl");
485
+ }
486
+ if (config.deploymentExposure === "public") {
487
+ if (config.authBaseUrlMode !== "explicit") {
488
+ throw new Error("authenticated public exposure requires auth.baseUrlMode=explicit");
489
+ }
490
+ if (!config.authPublicBaseUrl) {
491
+ throw new Error("authenticated public exposure requires auth.publicBaseUrl");
492
+ }
493
+ }
494
+ }
495
+ let authReady = config.deploymentMode === "local_trusted";
496
+ let betterAuthHandler;
497
+ let resolveSession;
498
+ let resolveSessionFromHeaders;
499
+ if (config.deploymentMode === "local_trusted") {
500
+ await ensureLocalTrustedBoardPrincipal(db);
501
+ }
502
+ if (config.deploymentMode === "authenticated") {
503
+ const { createBetterAuthHandler, createBetterAuthInstance, deriveAuthTrustedOrigins, resolveBetterAuthSession, resolveBetterAuthSessionFromHeaders, } = await import("./auth/better-auth.js");
504
+ const betterAuthSecret = process.env.BETTER_AUTH_SECRET?.trim() ?? process.env.RUDDER_AGENT_JWT_SECRET?.trim();
505
+ if (!betterAuthSecret) {
506
+ throw new Error("authenticated mode requires BETTER_AUTH_SECRET (or RUDDER_AGENT_JWT_SECRET) to be set");
507
+ }
508
+ const derivedTrustedOrigins = deriveAuthTrustedOrigins(config);
509
+ const envTrustedOrigins = (process.env.BETTER_AUTH_TRUSTED_ORIGINS ?? "")
510
+ .split(",")
511
+ .map((value) => value.trim())
512
+ .filter((value) => value.length > 0);
513
+ const effectiveTrustedOrigins = Array.from(new Set([...derivedTrustedOrigins, ...envTrustedOrigins]));
514
+ logger.info({
515
+ authBaseUrlMode: config.authBaseUrlMode,
516
+ authPublicBaseUrl: config.authPublicBaseUrl ?? null,
517
+ trustedOrigins: effectiveTrustedOrigins,
518
+ trustedOriginsSource: {
519
+ derived: derivedTrustedOrigins.length,
520
+ env: envTrustedOrigins.length,
521
+ },
522
+ }, "Authenticated mode auth origin configuration");
523
+ const auth = createBetterAuthInstance(db, config, effectiveTrustedOrigins);
524
+ betterAuthHandler = createBetterAuthHandler(auth);
525
+ resolveSession = (req) => resolveBetterAuthSession(auth, req);
526
+ resolveSessionFromHeaders = (headers) => resolveBetterAuthSessionFromHeaders(auth, headers);
527
+ await initializeBoardClaimChallenge(db, { deploymentMode: config.deploymentMode });
528
+ authReady = true;
529
+ }
530
+ const listenPort = await detectPort(config.port);
531
+ const uiMode = config.uiDevMiddleware ? "vite-dev" : config.serveUi ? "static" : "none";
532
+ const storageService = createStorageServiceFromConfig(config);
533
+ options.onEvent?.({ stage: "app", message: "Creating Rudder app" });
534
+ appHandle = await createRudderApp(db, {
535
+ uiMode,
536
+ serverPort: listenPort,
537
+ storageService,
538
+ deploymentMode: config.deploymentMode,
539
+ deploymentExposure: config.deploymentExposure,
540
+ allowedHostnames: config.allowedHostnames,
541
+ bindHost: config.host,
542
+ authReady,
543
+ companyDeletionEnabled: config.companyDeletionEnabled,
544
+ instanceId,
545
+ localEnv,
546
+ runtimeOwnerKind,
547
+ betterAuthHandler,
548
+ resolveSession,
549
+ });
550
+ const server = createServer(appHandle.app);
551
+ if (listenPort !== config.port) {
552
+ logger.warn(`Requested port is busy; using next free port (requestedPort=${config.port}, selectedPort=${listenPort})`);
553
+ }
554
+ const runtimeListenHost = config.host;
555
+ const runtimeApiHost = runtimeListenHost === "0.0.0.0" || runtimeListenHost === "::"
556
+ ? "localhost"
557
+ : runtimeListenHost;
558
+ process.env.RUDDER_LISTEN_HOST = runtimeListenHost;
559
+ process.env.RUDDER_LISTEN_PORT = String(listenPort);
560
+ process.env.RUDDER_API_URL = `http://${runtimeApiHost}:${listenPort}`;
561
+ setupLiveEventsWebSocketServer(server, db, {
562
+ deploymentMode: config.deploymentMode,
563
+ resolveSessionFromHeaders,
564
+ });
565
+ void reconcilePersistedRuntimeServicesOnStartup(db)
566
+ .then((result) => {
567
+ if (result.reconciled > 0) {
568
+ logger.warn({ reconciled: result.reconciled }, "reconciled persisted runtime services from a previous server process");
569
+ }
570
+ })
571
+ .catch((err) => {
572
+ logger.error({ err }, "startup reconciliation of persisted runtime services failed");
573
+ });
574
+ const intervalHandles = [];
575
+ if (config.heartbeatSchedulerEnabled) {
576
+ const heartbeat = heartbeatService(db);
577
+ const automations = automationService(db);
578
+ // Reap orphaned running runs at startup while in-memory execution state is empty,
579
+ // then resume any persisted queued runs that were waiting on the previous process.
580
+ void heartbeat
581
+ .reapOrphanedRuns()
582
+ .then(() => heartbeat.resumeQueuedRuns())
583
+ .catch((err) => {
584
+ logger.error({ err }, "startup heartbeat recovery failed");
585
+ });
586
+ intervalHandles.push(setInterval(() => {
587
+ void heartbeat
588
+ .tickTimers(new Date())
589
+ .then((result) => {
590
+ if (result.enqueued > 0) {
591
+ logger.info({ ...result }, "heartbeat timer tick enqueued runs");
592
+ }
593
+ })
594
+ .catch((err) => {
595
+ logger.error({ err }, "heartbeat timer tick failed");
596
+ });
597
+ void automations
598
+ .tickScheduledTriggers(new Date())
599
+ .then((result) => {
600
+ if (result.triggered > 0) {
601
+ logger.info({ ...result }, "automation scheduler tick enqueued runs");
602
+ }
603
+ })
604
+ .catch((err) => {
605
+ logger.error({ err }, "automation scheduler tick failed");
606
+ });
607
+ // Periodically reap orphaned runs (5-min staleness threshold) and make sure
608
+ // persisted queued work is still being driven forward.
609
+ void heartbeat
610
+ .reapOrphanedRuns({ staleThresholdMs: 5 * 60 * 1000 })
611
+ .then(() => heartbeat.resumeQueuedRuns())
612
+ .catch((err) => {
613
+ logger.error({ err }, "periodic heartbeat recovery failed");
614
+ });
615
+ }, config.heartbeatSchedulerIntervalMs));
616
+ }
617
+ if (config.databaseBackupEnabled) {
618
+ const backupIntervalMs = config.databaseBackupIntervalMinutes * 60 * 1000;
619
+ let backupInFlight = false;
620
+ const runScheduledBackup = async () => {
621
+ if (backupInFlight) {
622
+ logger.warn("Skipping scheduled database backup because a previous backup is still running");
623
+ return;
624
+ }
625
+ backupInFlight = true;
626
+ try {
627
+ const result = await runDatabaseBackup({
628
+ connectionString: activeDatabaseConnectionString,
629
+ backupDir: config.databaseBackupDir,
630
+ retentionDays: config.databaseBackupRetentionDays,
631
+ filenamePrefix: "rudder",
632
+ });
633
+ logger.info({
634
+ backupFile: result.backupFile,
635
+ sizeBytes: result.sizeBytes,
636
+ prunedCount: result.prunedCount,
637
+ backupDir: config.databaseBackupDir,
638
+ retentionDays: config.databaseBackupRetentionDays,
639
+ }, `Automatic database backup complete: ${formatDatabaseBackupResult(result)}`);
640
+ }
641
+ catch (err) {
642
+ logger.error({ err, backupDir: config.databaseBackupDir }, "Automatic database backup failed");
643
+ }
644
+ finally {
645
+ backupInFlight = false;
646
+ }
647
+ };
648
+ logger.info({
649
+ intervalMinutes: config.databaseBackupIntervalMinutes,
650
+ retentionDays: config.databaseBackupRetentionDays,
651
+ backupDir: config.databaseBackupDir,
652
+ }, "Automatic database backups enabled");
653
+ intervalHandles.push(setInterval(() => {
654
+ void runScheduledBackup();
655
+ }, backupIntervalMs));
656
+ }
657
+ options.onEvent?.({ stage: "listening", message: "Starting local HTTP server" });
658
+ await new Promise((resolveListen, rejectListen) => {
659
+ const onError = (err) => {
660
+ server.off("error", onError);
661
+ rejectListen(err);
662
+ };
663
+ server.once("error", onError);
664
+ server.listen(listenPort, config.host, () => {
665
+ server.off("error", onError);
666
+ logger.info(`Server listening on ${config.host}:${listenPort}`);
667
+ const shouldOpenOnListen = options.openOnListen ?? process.env.RUDDER_OPEN_ON_LISTEN === "true";
668
+ if (shouldOpenOnListen) {
669
+ const openHost = config.host === "0.0.0.0" || config.host === "::" ? "127.0.0.1" : config.host;
670
+ const url = `http://${openHost}:${listenPort}`;
671
+ void import("open")
672
+ .then((mod) => mod.default(url))
673
+ .then(() => {
674
+ logger.info(`Opened browser at ${url}`);
675
+ })
676
+ .catch((err) => {
677
+ logger.warn({ err, url }, "Failed to open browser on startup");
678
+ });
679
+ }
680
+ if (options.printBanner ?? true) {
681
+ printStartupBanner({
682
+ host: config.host,
683
+ deploymentMode: config.deploymentMode,
684
+ deploymentExposure: config.deploymentExposure,
685
+ authReady,
686
+ requestedPort: config.port,
687
+ listenPort,
688
+ uiMode,
689
+ db: startupDbInfo,
690
+ migrationSummary,
691
+ heartbeatSchedulerEnabled: config.heartbeatSchedulerEnabled,
692
+ heartbeatSchedulerIntervalMs: config.heartbeatSchedulerIntervalMs,
693
+ databaseBackupEnabled: config.databaseBackupEnabled,
694
+ databaseBackupIntervalMinutes: config.databaseBackupIntervalMinutes,
695
+ databaseBackupRetentionDays: config.databaseBackupRetentionDays,
696
+ databaseBackupDir: config.databaseBackupDir,
697
+ });
698
+ }
699
+ const boardClaimUrl = getBoardClaimWarningUrl(config.host, listenPort);
700
+ if (boardClaimUrl) {
701
+ const red = "\x1b[41m\x1b[30m";
702
+ const yellow = "\x1b[33m";
703
+ const reset = "\x1b[0m";
704
+ console.log([
705
+ `${red} BOARD CLAIM REQUIRED ${reset}`,
706
+ `${yellow}This instance was previously local_trusted and still has local-board as the only admin.${reset}`,
707
+ `${yellow}Sign in with a real user and open this one-time URL to claim ownership:${reset}`,
708
+ `${yellow}${boardClaimUrl}${reset}`,
709
+ `${yellow}If you are connecting over Tailscale, replace the host in this URL with your Tailscale IP/MagicDNS name.${reset}`,
710
+ ].join("\n"));
711
+ }
712
+ resolveListen();
713
+ });
714
+ });
715
+ if (runtimeOwnerKind) {
716
+ await writeLocalRuntimeDescriptor({
717
+ instanceId,
718
+ localEnv,
719
+ pid: process.pid,
720
+ listenPort,
721
+ apiUrl: process.env.RUDDER_API_URL ?? `http://${runtimeApiHost}:${listenPort}`,
722
+ version: serverVersion,
723
+ ownerKind: runtimeOwnerKind,
724
+ startedAt: new Date().toISOString(),
725
+ });
726
+ }
727
+ let stopInFlight = null;
728
+ const stop = async () => {
729
+ if (stopInFlight)
730
+ return stopInFlight;
731
+ options.onEvent?.({ stage: "shutdown", message: "Stopping Rudder server" });
732
+ stopInFlight = (async () => {
733
+ for (const handle of intervalHandles) {
734
+ clearInterval(handle);
735
+ }
736
+ await new Promise((resolveClose) => {
737
+ if (!server.listening) {
738
+ resolveClose();
739
+ return;
740
+ }
741
+ server.close((err) => {
742
+ if (err) {
743
+ logger.warn({ err }, "HTTP server close reported an error during shutdown");
744
+ }
745
+ resolveClose();
746
+ });
747
+ });
748
+ try {
749
+ await appHandle?.close();
750
+ }
751
+ catch (err) {
752
+ logger.warn({ err }, "App cleanup failed during shutdown");
753
+ }
754
+ try {
755
+ await shutdownLangfuse();
756
+ }
757
+ catch (err) {
758
+ logger.warn({ err }, "Langfuse cleanup failed during shutdown");
759
+ }
760
+ if (embeddedPostgres && embeddedPostgresStartedByThisProcess) {
761
+ try {
762
+ await embeddedPostgres.stop();
763
+ }
764
+ catch (err) {
765
+ logger.error({ err }, "Failed to stop embedded PostgreSQL cleanly");
766
+ }
767
+ }
768
+ if (runtimeOwnerKind) {
769
+ await removeLocalRuntimeDescriptorIfOwned({
770
+ instanceId,
771
+ pid: process.pid,
772
+ apiUrl: process.env.RUDDER_API_URL ?? `http://${runtimeApiHost}:${listenPort}`,
773
+ });
774
+ }
775
+ })();
776
+ return stopInFlight;
777
+ };
778
+ const handleSignal = (signal) => {
779
+ void stop()
780
+ .catch((err) => {
781
+ logger.error({ err, signal }, "Rudder shutdown failed");
782
+ })
783
+ .finally(() => {
784
+ process.exit(0);
785
+ });
786
+ };
787
+ process.once("SIGINT", () => {
788
+ handleSignal("SIGINT");
789
+ });
790
+ process.once("SIGTERM", () => {
791
+ handleSignal("SIGTERM");
792
+ });
793
+ options.onEvent?.({ stage: "ready", message: "Rudder server is ready" });
794
+ return {
795
+ server,
796
+ host: config.host,
797
+ listenPort,
798
+ apiUrl: process.env.RUDDER_API_URL ?? `http://${runtimeApiHost}:${listenPort}`,
799
+ databaseUrl: activeDatabaseConnectionString,
800
+ instancePaths: {
801
+ homeDir: resolveRudderHomeDir(),
802
+ instanceRoot: resolveRudderInstanceRoot(),
803
+ configPath: resolveRudderConfigPath(),
804
+ envPath: resolveRudderEnvPath(),
805
+ },
806
+ stop,
807
+ dispose: stop,
808
+ };
809
+ }
810
+ function isMainModule(metaUrl) {
811
+ const entry = process.argv[1];
812
+ if (!entry)
813
+ return false;
814
+ try {
815
+ return pathToFileURL(resolve(entry)).href === metaUrl;
816
+ }
817
+ catch {
818
+ return false;
819
+ }
820
+ }
821
+ if (isMainModule(import.meta.url)) {
822
+ void startServer().catch((err) => {
823
+ logger.error({ err }, "Rudder server failed to start");
824
+ process.exit(1);
825
+ });
826
+ }
827
+ //# sourceMappingURL=index.js.map