@fideliosai/server 2026.331.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 (753) hide show
  1. package/LICENSE +22 -0
  2. package/dist/adapters/codex-models.d.ts +4 -0
  3. package/dist/adapters/codex-models.d.ts.map +1 -0
  4. package/dist/adapters/codex-models.js +98 -0
  5. package/dist/adapters/codex-models.js.map +1 -0
  6. package/dist/adapters/cursor-models.d.ts +13 -0
  7. package/dist/adapters/cursor-models.d.ts.map +1 -0
  8. package/dist/adapters/cursor-models.js +148 -0
  9. package/dist/adapters/cursor-models.js.map +1 -0
  10. package/dist/adapters/http/execute.d.ts +3 -0
  11. package/dist/adapters/http/execute.d.ts.map +1 -0
  12. package/dist/adapters/http/execute.js +39 -0
  13. package/dist/adapters/http/execute.js.map +1 -0
  14. package/dist/adapters/http/index.d.ts +3 -0
  15. package/dist/adapters/http/index.d.ts.map +1 -0
  16. package/dist/adapters/http/index.js +20 -0
  17. package/dist/adapters/http/index.js.map +1 -0
  18. package/dist/adapters/http/test.d.ts +3 -0
  19. package/dist/adapters/http/test.d.ts.map +1 -0
  20. package/dist/adapters/http/test.js +106 -0
  21. package/dist/adapters/http/test.js.map +1 -0
  22. package/dist/adapters/index.d.ts +4 -0
  23. package/dist/adapters/index.d.ts.map +1 -0
  24. package/dist/adapters/index.js +3 -0
  25. package/dist/adapters/index.js.map +1 -0
  26. package/dist/adapters/process/execute.d.ts +3 -0
  27. package/dist/adapters/process/execute.d.ts.map +1 -0
  28. package/dist/adapters/process/execute.js +63 -0
  29. package/dist/adapters/process/execute.js.map +1 -0
  30. package/dist/adapters/process/index.d.ts +3 -0
  31. package/dist/adapters/process/index.d.ts.map +1 -0
  32. package/dist/adapters/process/index.js +23 -0
  33. package/dist/adapters/process/index.js.map +1 -0
  34. package/dist/adapters/process/test.d.ts +3 -0
  35. package/dist/adapters/process/test.d.ts.map +1 -0
  36. package/dist/adapters/process/test.js +77 -0
  37. package/dist/adapters/process/test.js.map +1 -0
  38. package/dist/adapters/registry.d.ts +14 -0
  39. package/dist/adapters/registry.d.ts.map +1 -0
  40. package/dist/adapters/registry.js +164 -0
  41. package/dist/adapters/registry.js.map +1 -0
  42. package/dist/adapters/types.d.ts +2 -0
  43. package/dist/adapters/types.d.ts.map +1 -0
  44. package/dist/adapters/types.js +2 -0
  45. package/dist/adapters/types.js.map +1 -0
  46. package/dist/adapters/utils.d.ts +10 -0
  47. package/dist/adapters/utils.d.ts.map +1 -0
  48. package/dist/adapters/utils.js +14 -0
  49. package/dist/adapters/utils.js.map +1 -0
  50. package/dist/agent-auth-jwt.d.ts +14 -0
  51. package/dist/agent-auth-jwt.d.ts.map +1 -0
  52. package/dist/agent-auth-jwt.js +117 -0
  53. package/dist/agent-auth-jwt.js.map +1 -0
  54. package/dist/app.d.ts +25 -0
  55. package/dist/app.d.ts.map +1 -0
  56. package/dist/app.js +265 -0
  57. package/dist/app.js.map +1 -0
  58. package/dist/attachment-types.d.ts +33 -0
  59. package/dist/attachment-types.d.ts.map +1 -0
  60. package/dist/attachment-types.js +67 -0
  61. package/dist/attachment-types.js.map +1 -0
  62. package/dist/auth/better-auth.d.ts +24 -0
  63. package/dist/auth/better-auth.d.ts.map +1 -0
  64. package/dist/auth/better-auth.js +108 -0
  65. package/dist/auth/better-auth.js.map +1 -0
  66. package/dist/board-claim.d.ts +23 -0
  67. package/dist/board-claim.d.ts.map +1 -0
  68. package/dist/board-claim.js +115 -0
  69. package/dist/board-claim.js.map +1 -0
  70. package/dist/config-file.d.ts +3 -0
  71. package/dist/config-file.d.ts.map +1 -0
  72. package/dist/config-file.js +16 -0
  73. package/dist/config-file.js.map +1 -0
  74. package/dist/config.d.ts +45 -0
  75. package/dist/config.d.ts.map +1 -0
  76. package/dist/config.js +171 -0
  77. package/dist/config.js.map +1 -0
  78. package/dist/dev-server-status.d.ts +27 -0
  79. package/dist/dev-server-status.d.ts.map +1 -0
  80. package/dist/dev-server-status.js +70 -0
  81. package/dist/dev-server-status.js.map +1 -0
  82. package/dist/dev-watch-ignore.d.ts +2 -0
  83. package/dist/dev-watch-ignore.d.ts.map +1 -0
  84. package/dist/dev-watch-ignore.js +33 -0
  85. package/dist/dev-watch-ignore.js.map +1 -0
  86. package/dist/errors.d.ts +12 -0
  87. package/dist/errors.d.ts.map +1 -0
  88. package/dist/errors.js +28 -0
  89. package/dist/errors.js.map +1 -0
  90. package/dist/home-paths.d.ts +17 -0
  91. package/dist/home-paths.d.ts.map +1 -0
  92. package/dist/home-paths.js +75 -0
  93. package/dist/home-paths.js.map +1 -0
  94. package/dist/index.d.ts +10 -0
  95. package/dist/index.d.ts.map +1 -0
  96. package/dist/index.js +642 -0
  97. package/dist/index.js.map +1 -0
  98. package/dist/log-redaction.d.ts +11 -0
  99. package/dist/log-redaction.d.ts.map +1 -0
  100. package/dist/log-redaction.js +118 -0
  101. package/dist/log-redaction.js.map +1 -0
  102. package/dist/middleware/auth.d.ts +12 -0
  103. package/dist/middleware/auth.d.ts.map +1 -0
  104. package/dist/middleware/auth.js +144 -0
  105. package/dist/middleware/auth.js.map +1 -0
  106. package/dist/middleware/board-mutation-guard.d.ts +3 -0
  107. package/dist/middleware/board-mutation-guard.d.ts.map +1 -0
  108. package/dist/middleware/board-mutation-guard.js +59 -0
  109. package/dist/middleware/board-mutation-guard.js.map +1 -0
  110. package/dist/middleware/error-handler.d.ts +17 -0
  111. package/dist/middleware/error-handler.d.ts.map +1 -0
  112. package/dist/middleware/error-handler.js +37 -0
  113. package/dist/middleware/error-handler.js.map +1 -0
  114. package/dist/middleware/index.d.ts +4 -0
  115. package/dist/middleware/index.d.ts.map +1 -0
  116. package/dist/middleware/index.js +4 -0
  117. package/dist/middleware/index.js.map +1 -0
  118. package/dist/middleware/logger.d.ts +4 -0
  119. package/dist/middleware/logger.d.ts.map +1 -0
  120. package/dist/middleware/logger.js +87 -0
  121. package/dist/middleware/logger.js.map +1 -0
  122. package/dist/middleware/private-hostname-guard.d.ts +11 -0
  123. package/dist/middleware/private-hostname-guard.d.ts.map +1 -0
  124. package/dist/middleware/private-hostname-guard.js +78 -0
  125. package/dist/middleware/private-hostname-guard.js.map +1 -0
  126. package/dist/middleware/validate.d.ts +4 -0
  127. package/dist/middleware/validate.d.ts.map +1 -0
  128. package/dist/middleware/validate.js +7 -0
  129. package/dist/middleware/validate.js.map +1 -0
  130. package/dist/onboarding-assets/ceo/AGENTS.md +54 -0
  131. package/dist/onboarding-assets/ceo/HEARTBEAT.md +72 -0
  132. package/dist/onboarding-assets/ceo/SOUL.md +33 -0
  133. package/dist/onboarding-assets/ceo/TOOLS.md +3 -0
  134. package/dist/onboarding-assets/default/AGENTS.md +3 -0
  135. package/dist/paths.d.ts +3 -0
  136. package/dist/paths.d.ts.map +1 -0
  137. package/dist/paths.js +31 -0
  138. package/dist/paths.js.map +1 -0
  139. package/dist/realtime/live-events-ws.d.ts +28 -0
  140. package/dist/realtime/live-events-ws.d.ts.map +1 -0
  141. package/dist/realtime/live-events-ws.js +187 -0
  142. package/dist/realtime/live-events-ws.js.map +1 -0
  143. package/dist/redaction.d.ts +4 -0
  144. package/dist/redaction.d.ts.map +1 -0
  145. package/dist/redaction.js +63 -0
  146. package/dist/redaction.js.map +1 -0
  147. package/dist/routes/access.d.ts +61 -0
  148. package/dist/routes/access.d.ts.map +1 -0
  149. package/dist/routes/access.js +2265 -0
  150. package/dist/routes/access.js.map +1 -0
  151. package/dist/routes/activity.d.ts +3 -0
  152. package/dist/routes/activity.d.ts.map +1 -0
  153. package/dist/routes/activity.js +78 -0
  154. package/dist/routes/activity.js.map +1 -0
  155. package/dist/routes/agents.d.ts +3 -0
  156. package/dist/routes/agents.d.ts.map +1 -0
  157. package/dist/routes/agents.js +1828 -0
  158. package/dist/routes/agents.js.map +1 -0
  159. package/dist/routes/approvals.d.ts +3 -0
  160. package/dist/routes/approvals.d.ts.map +1 -0
  161. package/dist/routes/approvals.js +275 -0
  162. package/dist/routes/approvals.js.map +1 -0
  163. package/dist/routes/assets.d.ts +4 -0
  164. package/dist/routes/assets.d.ts.map +1 -0
  165. package/dist/routes/assets.js +309 -0
  166. package/dist/routes/assets.js.map +1 -0
  167. package/dist/routes/authz.d.ts +16 -0
  168. package/dist/routes/authz.d.ts.map +1 -0
  169. package/dist/routes/authz.js +47 -0
  170. package/dist/routes/authz.js.map +1 -0
  171. package/dist/routes/companies.d.ts +4 -0
  172. package/dist/routes/companies.d.ts.map +1 -0
  173. package/dist/routes/companies.js +303 -0
  174. package/dist/routes/companies.js.map +1 -0
  175. package/dist/routes/company-skills.d.ts +3 -0
  176. package/dist/routes/company-skills.d.ts.map +1 -0
  177. package/dist/routes/company-skills.js +228 -0
  178. package/dist/routes/company-skills.js.map +1 -0
  179. package/dist/routes/costs.d.ts +3 -0
  180. package/dist/routes/costs.d.ts.map +1 -0
  181. package/dist/routes/costs.js +268 -0
  182. package/dist/routes/costs.js.map +1 -0
  183. package/dist/routes/dashboard.d.ts +3 -0
  184. package/dist/routes/dashboard.d.ts.map +1 -0
  185. package/dist/routes/dashboard.js +15 -0
  186. package/dist/routes/dashboard.js.map +1 -0
  187. package/dist/routes/execution-workspaces.d.ts +3 -0
  188. package/dist/routes/execution-workspaces.d.ts.map +1 -0
  189. package/dist/routes/execution-workspaces.js +165 -0
  190. package/dist/routes/execution-workspaces.js.map +1 -0
  191. package/dist/routes/goals.d.ts +3 -0
  192. package/dist/routes/goals.d.ts.map +1 -0
  193. package/dist/routes/goals.js +95 -0
  194. package/dist/routes/goals.js.map +1 -0
  195. package/dist/routes/health.d.ts +9 -0
  196. package/dist/routes/health.d.ts.map +1 -0
  197. package/dist/routes/health.js +69 -0
  198. package/dist/routes/health.js.map +1 -0
  199. package/dist/routes/index.d.ts +18 -0
  200. package/dist/routes/index.d.ts.map +1 -0
  201. package/dist/routes/index.js +18 -0
  202. package/dist/routes/index.js.map +1 -0
  203. package/dist/routes/instance-settings.d.ts +3 -0
  204. package/dist/routes/instance-settings.d.ts.map +1 -0
  205. package/dist/routes/instance-settings.js +71 -0
  206. package/dist/routes/instance-settings.js.map +1 -0
  207. package/dist/routes/issues-checkout-wakeup.d.ts +9 -0
  208. package/dist/routes/issues-checkout-wakeup.d.ts.map +1 -0
  209. package/dist/routes/issues-checkout-wakeup.js +12 -0
  210. package/dist/routes/issues-checkout-wakeup.js.map +1 -0
  211. package/dist/routes/issues.d.ts +4 -0
  212. package/dist/routes/issues.d.ts.map +1 -0
  213. package/dist/routes/issues.js +1520 -0
  214. package/dist/routes/issues.js.map +1 -0
  215. package/dist/routes/llms.d.ts +3 -0
  216. package/dist/routes/llms.d.ts.map +1 -0
  217. package/dist/routes/llms.js +78 -0
  218. package/dist/routes/llms.js.map +1 -0
  219. package/dist/routes/org-chart-svg.d.ts +25 -0
  220. package/dist/routes/org-chart-svg.d.ts.map +1 -0
  221. package/dist/routes/org-chart-svg.js +657 -0
  222. package/dist/routes/org-chart-svg.js.map +1 -0
  223. package/dist/routes/plugin-ui-static.d.ts +69 -0
  224. package/dist/routes/plugin-ui-static.d.ts.map +1 -0
  225. package/dist/routes/plugin-ui-static.js +411 -0
  226. package/dist/routes/plugin-ui-static.js.map +1 -0
  227. package/dist/routes/plugins.d.ts +120 -0
  228. package/dist/routes/plugins.d.ts.map +1 -0
  229. package/dist/routes/plugins.js +1784 -0
  230. package/dist/routes/plugins.js.map +1 -0
  231. package/dist/routes/projects.d.ts +3 -0
  232. package/dist/routes/projects.d.ts.map +1 -0
  233. package/dist/routes/projects.js +257 -0
  234. package/dist/routes/projects.js.map +1 -0
  235. package/dist/routes/routines.d.ts +3 -0
  236. package/dist/routes/routines.d.ts.map +1 -0
  237. package/dist/routes/routines.js +277 -0
  238. package/dist/routes/routines.js.map +1 -0
  239. package/dist/routes/secrets.d.ts +3 -0
  240. package/dist/routes/secrets.d.ts.map +1 -0
  241. package/dist/routes/secrets.js +128 -0
  242. package/dist/routes/secrets.js.map +1 -0
  243. package/dist/routes/sidebar-badges.d.ts +3 -0
  244. package/dist/routes/sidebar-badges.d.ts.map +1 -0
  245. package/dist/routes/sidebar-badges.js +45 -0
  246. package/dist/routes/sidebar-badges.js.map +1 -0
  247. package/dist/secrets/external-stub-providers.d.ts +5 -0
  248. package/dist/secrets/external-stub-providers.d.ts.map +1 -0
  249. package/dist/secrets/external-stub-providers.js +21 -0
  250. package/dist/secrets/external-stub-providers.js.map +1 -0
  251. package/dist/secrets/local-encrypted-provider.d.ts +3 -0
  252. package/dist/secrets/local-encrypted-provider.d.ts.map +1 -0
  253. package/dist/secrets/local-encrypted-provider.js +116 -0
  254. package/dist/secrets/local-encrypted-provider.js.map +1 -0
  255. package/dist/secrets/provider-registry.d.ts +5 -0
  256. package/dist/secrets/provider-registry.d.ts.map +1 -0
  257. package/dist/secrets/provider-registry.js +20 -0
  258. package/dist/secrets/provider-registry.js.map +1 -0
  259. package/dist/secrets/types.d.ts +21 -0
  260. package/dist/secrets/types.d.ts.map +1 -0
  261. package/dist/secrets/types.js +2 -0
  262. package/dist/secrets/types.js.map +1 -0
  263. package/dist/services/access.d.ts +113 -0
  264. package/dist/services/access.d.ts.map +1 -0
  265. package/dist/services/access.js +247 -0
  266. package/dist/services/access.js.map +1 -0
  267. package/dist/services/activity-log.d.ts +17 -0
  268. package/dist/services/activity-log.d.ts.map +1 -0
  269. package/dist/services/activity-log.js +74 -0
  270. package/dist/services/activity-log.js.map +1 -0
  271. package/dist/services/activity.d.ts +764 -0
  272. package/dist/services/activity.d.ts.map +1 -0
  273. package/dist/services/activity.js +105 -0
  274. package/dist/services/activity.js.map +1 -0
  275. package/dist/services/agent-instructions.d.ts +91 -0
  276. package/dist/services/agent-instructions.d.ts.map +1 -0
  277. package/dist/services/agent-instructions.js +580 -0
  278. package/dist/services/agent-instructions.js.map +1 -0
  279. package/dist/services/agent-permissions.d.ts +6 -0
  280. package/dist/services/agent-permissions.d.ts.map +1 -0
  281. package/dist/services/agent-permissions.js +18 -0
  282. package/dist/services/agent-permissions.js.map +1 -0
  283. package/dist/services/agents.d.ts +1670 -0
  284. package/dist/services/agents.d.ts.map +1 -0
  285. package/dist/services/agents.js +566 -0
  286. package/dist/services/agents.js.map +1 -0
  287. package/dist/services/approvals.d.ts +546 -0
  288. package/dist/services/approvals.d.ts.map +1 -0
  289. package/dist/services/approvals.js +212 -0
  290. package/dist/services/approvals.js.map +1 -0
  291. package/dist/services/assets.d.ts +33 -0
  292. package/dist/services/assets.d.ts.map +1 -0
  293. package/dist/services/assets.js +17 -0
  294. package/dist/services/assets.js.map +1 -0
  295. package/dist/services/board-auth.d.ts +234 -0
  296. package/dist/services/board-auth.d.ts.map +1 -0
  297. package/dist/services/board-auth.js +295 -0
  298. package/dist/services/board-auth.js.map +1 -0
  299. package/dist/services/budgets.d.ts +38 -0
  300. package/dist/services/budgets.d.ts.map +1 -0
  301. package/dist/services/budgets.js +784 -0
  302. package/dist/services/budgets.js.map +1 -0
  303. package/dist/services/companies.d.ts +124 -0
  304. package/dist/services/companies.d.ts.map +1 -0
  305. package/dist/services/companies.js +256 -0
  306. package/dist/services/companies.js.map +1 -0
  307. package/dist/services/company-export-readme.d.ts +17 -0
  308. package/dist/services/company-export-readme.d.ts.map +1 -0
  309. package/dist/services/company-export-readme.js +148 -0
  310. package/dist/services/company-export-readme.js.map +1 -0
  311. package/dist/services/company-portability.d.ts +23 -0
  312. package/dist/services/company-portability.d.ts.map +1 -0
  313. package/dist/services/company-portability.js +3739 -0
  314. package/dist/services/company-portability.js.map +1 -0
  315. package/dist/services/company-skills.d.ts +77 -0
  316. package/dist/services/company-skills.d.ts.map +1 -0
  317. package/dist/services/company-skills.js +2042 -0
  318. package/dist/services/company-skills.js.map +1 -0
  319. package/dist/services/costs.d.ts +114 -0
  320. package/dist/services/costs.d.ts.map +1 -0
  321. package/dist/services/costs.js +294 -0
  322. package/dist/services/costs.js.map +1 -0
  323. package/dist/services/cron.d.ts +80 -0
  324. package/dist/services/cron.d.ts.map +1 -0
  325. package/dist/services/cron.js +300 -0
  326. package/dist/services/cron.js.map +1 -0
  327. package/dist/services/dashboard.d.ts +26 -0
  328. package/dist/services/dashboard.d.ts.map +1 -0
  329. package/dist/services/dashboard.js +98 -0
  330. package/dist/services/dashboard.js.map +1 -0
  331. package/dist/services/default-agent-instructions.d.ts +9 -0
  332. package/dist/services/default-agent-instructions.d.ts.map +1 -0
  333. package/dist/services/default-agent-instructions.js +20 -0
  334. package/dist/services/default-agent-instructions.js.map +1 -0
  335. package/dist/services/documents.d.ts +164 -0
  336. package/dist/services/documents.d.ts.map +1 -0
  337. package/dist/services/documents.js +382 -0
  338. package/dist/services/documents.js.map +1 -0
  339. package/dist/services/execution-workspace-policy.d.ts +21 -0
  340. package/dist/services/execution-workspace-policy.d.ts.map +1 -0
  341. package/dist/services/execution-workspace-policy.js +177 -0
  342. package/dist/services/execution-workspace-policy.js.map +1 -0
  343. package/dist/services/execution-workspaces.d.ts +19 -0
  344. package/dist/services/execution-workspaces.d.ts.map +1 -0
  345. package/dist/services/execution-workspaces.js +87 -0
  346. package/dist/services/execution-workspaces.js.map +1 -0
  347. package/dist/services/finance.d.ts +93 -0
  348. package/dist/services/finance.d.ts.map +1 -0
  349. package/dist/services/finance.js +120 -0
  350. package/dist/services/finance.js.map +1 -0
  351. package/dist/services/goals.d.ts +433 -0
  352. package/dist/services/goals.d.ts.map +1 -0
  353. package/dist/services/goals.js +54 -0
  354. package/dist/services/goals.js.map +1 -0
  355. package/dist/services/heartbeat-run-summary.d.ts +2 -0
  356. package/dist/services/heartbeat-run-summary.d.ts.map +1 -0
  357. package/dist/services/heartbeat-run-summary.js +30 -0
  358. package/dist/services/heartbeat-run-summary.js.map +1 -0
  359. package/dist/services/heartbeat.d.ts +812 -0
  360. package/dist/services/heartbeat.d.ts.map +1 -0
  361. package/dist/services/heartbeat.js +3156 -0
  362. package/dist/services/heartbeat.js.map +1 -0
  363. package/dist/services/hire-hook.d.ts +14 -0
  364. package/dist/services/hire-hook.d.ts.map +1 -0
  365. package/dist/services/hire-hook.js +85 -0
  366. package/dist/services/hire-hook.js.map +1 -0
  367. package/dist/services/index.d.ts +33 -0
  368. package/dist/services/index.d.ts.map +1 -0
  369. package/dist/services/index.js +33 -0
  370. package/dist/services/index.js.map +1 -0
  371. package/dist/services/instance-settings.d.ts +11 -0
  372. package/dist/services/instance-settings.d.ts.map +1 -0
  373. package/dist/services/instance-settings.js +116 -0
  374. package/dist/services/instance-settings.js.map +1 -0
  375. package/dist/services/issue-approvals.d.ts +56 -0
  376. package/dist/services/issue-approvals.d.ts.map +1 -0
  377. package/dist/services/issue-approvals.js +153 -0
  378. package/dist/services/issue-approvals.js.map +1 -0
  379. package/dist/services/issue-assignment-wakeup.d.ts +29 -0
  380. package/dist/services/issue-assignment-wakeup.d.ts.map +1 -0
  381. package/dist/services/issue-assignment-wakeup.js +22 -0
  382. package/dist/services/issue-assignment-wakeup.js.map +1 -0
  383. package/dist/services/issue-goal-fallback.d.ts +18 -0
  384. package/dist/services/issue-goal-fallback.d.ts.map +1 -0
  385. package/dist/services/issue-goal-fallback.js +33 -0
  386. package/dist/services/issue-goal-fallback.js.map +1 -0
  387. package/dist/services/issues.d.ts +560 -0
  388. package/dist/services/issues.d.ts.map +1 -0
  389. package/dist/services/issues.js +1478 -0
  390. package/dist/services/issues.js.map +1 -0
  391. package/dist/services/live-events.d.ts +17 -0
  392. package/dist/services/live-events.d.ts.map +1 -0
  393. package/dist/services/live-events.js +33 -0
  394. package/dist/services/live-events.js.map +1 -0
  395. package/dist/services/plugin-capability-validator.d.ts +108 -0
  396. package/dist/services/plugin-capability-validator.d.ts.map +1 -0
  397. package/dist/services/plugin-capability-validator.js +268 -0
  398. package/dist/services/plugin-capability-validator.js.map +1 -0
  399. package/dist/services/plugin-config-validator.d.ts +26 -0
  400. package/dist/services/plugin-config-validator.d.ts.map +1 -0
  401. package/dist/services/plugin-config-validator.js +41 -0
  402. package/dist/services/plugin-config-validator.js.map +1 -0
  403. package/dist/services/plugin-dev-watcher.d.ts +30 -0
  404. package/dist/services/plugin-dev-watcher.d.ts.map +1 -0
  405. package/dist/services/plugin-dev-watcher.js +241 -0
  406. package/dist/services/plugin-dev-watcher.js.map +1 -0
  407. package/dist/services/plugin-event-bus.d.ts +149 -0
  408. package/dist/services/plugin-event-bus.d.ts.map +1 -0
  409. package/dist/services/plugin-event-bus.js +258 -0
  410. package/dist/services/plugin-event-bus.js.map +1 -0
  411. package/dist/services/plugin-host-service-cleanup.d.ts +14 -0
  412. package/dist/services/plugin-host-service-cleanup.d.ts.map +1 -0
  413. package/dist/services/plugin-host-service-cleanup.js +37 -0
  414. package/dist/services/plugin-host-service-cleanup.js.map +1 -0
  415. package/dist/services/plugin-host-services.d.ts +13 -0
  416. package/dist/services/plugin-host-services.d.ts.map +1 -0
  417. package/dist/services/plugin-host-services.js +969 -0
  418. package/dist/services/plugin-host-services.js.map +1 -0
  419. package/dist/services/plugin-job-coordinator.d.ts +81 -0
  420. package/dist/services/plugin-job-coordinator.d.ts.map +1 -0
  421. package/dist/services/plugin-job-coordinator.js +172 -0
  422. package/dist/services/plugin-job-coordinator.js.map +1 -0
  423. package/dist/services/plugin-job-scheduler.d.ts +163 -0
  424. package/dist/services/plugin-job-scheduler.d.ts.map +1 -0
  425. package/dist/services/plugin-job-scheduler.js +454 -0
  426. package/dist/services/plugin-job-scheduler.js.map +1 -0
  427. package/dist/services/plugin-job-store.d.ts +208 -0
  428. package/dist/services/plugin-job-store.d.ts.map +1 -0
  429. package/dist/services/plugin-job-store.js +350 -0
  430. package/dist/services/plugin-job-store.js.map +1 -0
  431. package/dist/services/plugin-lifecycle.d.ts +203 -0
  432. package/dist/services/plugin-lifecycle.d.ts.map +1 -0
  433. package/dist/services/plugin-lifecycle.js +476 -0
  434. package/dist/services/plugin-lifecycle.js.map +1 -0
  435. package/dist/services/plugin-loader.d.ts +441 -0
  436. package/dist/services/plugin-loader.d.ts.map +1 -0
  437. package/dist/services/plugin-loader.js +1192 -0
  438. package/dist/services/plugin-loader.js.map +1 -0
  439. package/dist/services/plugin-log-retention.d.ts +20 -0
  440. package/dist/services/plugin-log-retention.d.ts.map +1 -0
  441. package/dist/services/plugin-log-retention.js +63 -0
  442. package/dist/services/plugin-log-retention.js.map +1 -0
  443. package/dist/services/plugin-manifest-validator.d.ts +79 -0
  444. package/dist/services/plugin-manifest-validator.d.ts.map +1 -0
  445. package/dist/services/plugin-manifest-validator.js +84 -0
  446. package/dist/services/plugin-manifest-validator.js.map +1 -0
  447. package/dist/services/plugin-registry.d.ts +2542 -0
  448. package/dist/services/plugin-registry.d.ts.map +1 -0
  449. package/dist/services/plugin-registry.js +539 -0
  450. package/dist/services/plugin-registry.js.map +1 -0
  451. package/dist/services/plugin-runtime-sandbox.d.ts +40 -0
  452. package/dist/services/plugin-runtime-sandbox.d.ts.map +1 -0
  453. package/dist/services/plugin-runtime-sandbox.js +154 -0
  454. package/dist/services/plugin-runtime-sandbox.js.map +1 -0
  455. package/dist/services/plugin-secrets-handler.d.ts +81 -0
  456. package/dist/services/plugin-secrets-handler.d.ts.map +1 -0
  457. package/dist/services/plugin-secrets-handler.js +275 -0
  458. package/dist/services/plugin-secrets-handler.js.map +1 -0
  459. package/dist/services/plugin-state-store.d.ts +92 -0
  460. package/dist/services/plugin-state-store.d.ts.map +1 -0
  461. package/dist/services/plugin-state-store.js +190 -0
  462. package/dist/services/plugin-state-store.js.map +1 -0
  463. package/dist/services/plugin-stream-bus.d.ts +29 -0
  464. package/dist/services/plugin-stream-bus.d.ts.map +1 -0
  465. package/dist/services/plugin-stream-bus.js +48 -0
  466. package/dist/services/plugin-stream-bus.js.map +1 -0
  467. package/dist/services/plugin-tool-dispatcher.d.ts +180 -0
  468. package/dist/services/plugin-tool-dispatcher.d.ts.map +1 -0
  469. package/dist/services/plugin-tool-dispatcher.js +224 -0
  470. package/dist/services/plugin-tool-dispatcher.js.map +1 -0
  471. package/dist/services/plugin-tool-registry.d.ts +192 -0
  472. package/dist/services/plugin-tool-registry.d.ts.map +1 -0
  473. package/dist/services/plugin-tool-registry.js +224 -0
  474. package/dist/services/plugin-tool-registry.js.map +1 -0
  475. package/dist/services/plugin-worker-manager.d.ts +260 -0
  476. package/dist/services/plugin-worker-manager.d.ts.map +1 -0
  477. package/dist/services/plugin-worker-manager.js +835 -0
  478. package/dist/services/plugin-worker-manager.js.map +1 -0
  479. package/dist/services/projects.d.ts +87 -0
  480. package/dist/services/projects.d.ts.map +1 -0
  481. package/dist/services/projects.js +656 -0
  482. package/dist/services/projects.js.map +1 -0
  483. package/dist/services/quota-windows.d.ts +9 -0
  484. package/dist/services/quota-windows.d.ts.map +1 -0
  485. package/dist/services/quota-windows.js +56 -0
  486. package/dist/services/quota-windows.js.map +1 -0
  487. package/dist/services/routines.d.ts +135 -0
  488. package/dist/services/routines.d.ts.map +1 -0
  489. package/dist/services/routines.js +1105 -0
  490. package/dist/services/routines.js.map +1 -0
  491. package/dist/services/run-log-store.d.ts +34 -0
  492. package/dist/services/run-log-store.d.ts.map +1 -0
  493. package/dist/services/run-log-store.js +109 -0
  494. package/dist/services/run-log-store.js.map +1 -0
  495. package/dist/services/secrets.d.ts +511 -0
  496. package/dist/services/secrets.d.ts.map +1 -0
  497. package/dist/services/secrets.js +289 -0
  498. package/dist/services/secrets.js.map +1 -0
  499. package/dist/services/sidebar-badges.d.ts +9 -0
  500. package/dist/services/sidebar-badges.d.ts.map +1 -0
  501. package/dist/services/sidebar-badges.js +33 -0
  502. package/dist/services/sidebar-badges.js.map +1 -0
  503. package/dist/services/work-products.d.ts +14 -0
  504. package/dist/services/work-products.d.ts.map +1 -0
  505. package/dist/services/work-products.js +100 -0
  506. package/dist/services/work-products.js.map +1 -0
  507. package/dist/services/workspace-operation-log-store.d.ts +33 -0
  508. package/dist/services/workspace-operation-log-store.d.ts.map +1 -0
  509. package/dist/services/workspace-operation-log-store.js +110 -0
  510. package/dist/services/workspace-operation-log-store.js.map +1 -0
  511. package/dist/services/workspace-operations.d.ts +44 -0
  512. package/dist/services/workspace-operations.d.ts.map +1 -0
  513. package/dist/services/workspace-operations.js +211 -0
  514. package/dist/services/workspace-operations.js.map +1 -0
  515. package/dist/services/workspace-runtime.d.ts +164 -0
  516. package/dist/services/workspace-runtime.d.ts.map +1 -0
  517. package/dist/services/workspace-runtime.js +1235 -0
  518. package/dist/services/workspace-runtime.js.map +1 -0
  519. package/dist/startup-banner.d.ts +31 -0
  520. package/dist/startup-banner.d.ts.map +1 -0
  521. package/dist/startup-banner.js +117 -0
  522. package/dist/startup-banner.js.map +1 -0
  523. package/dist/storage/index.d.ts +6 -0
  524. package/dist/storage/index.d.ts.map +1 -0
  525. package/dist/storage/index.js +29 -0
  526. package/dist/storage/index.js.map +1 -0
  527. package/dist/storage/local-disk-provider.d.ts +3 -0
  528. package/dist/storage/local-disk-provider.d.ts.map +1 -0
  529. package/dist/storage/local-disk-provider.js +79 -0
  530. package/dist/storage/local-disk-provider.js.map +1 -0
  531. package/dist/storage/provider-registry.d.ts +4 -0
  532. package/dist/storage/provider-registry.d.ts.map +1 -0
  533. package/dist/storage/provider-registry.js +15 -0
  534. package/dist/storage/provider-registry.js.map +1 -0
  535. package/dist/storage/s3-provider.d.ts +11 -0
  536. package/dist/storage/s3-provider.d.ts.map +1 -0
  537. package/dist/storage/s3-provider.js +123 -0
  538. package/dist/storage/s3-provider.js.map +1 -0
  539. package/dist/storage/service.d.ts +3 -0
  540. package/dist/storage/service.d.ts.map +1 -0
  541. package/dist/storage/service.js +120 -0
  542. package/dist/storage/service.js.map +1 -0
  543. package/dist/storage/types.d.ts +55 -0
  544. package/dist/storage/types.d.ts.map +1 -0
  545. package/dist/storage/types.js +2 -0
  546. package/dist/storage/types.js.map +1 -0
  547. package/dist/ui-branding.d.ts +13 -0
  548. package/dist/ui-branding.d.ts.map +1 -0
  549. package/dist/ui-branding.js +188 -0
  550. package/dist/ui-branding.js.map +1 -0
  551. package/dist/version.d.ts +2 -0
  552. package/dist/version.d.ts.map +1 -0
  553. package/dist/version.js +5 -0
  554. package/dist/version.js.map +1 -0
  555. package/dist/worktree-config.d.ts +19 -0
  556. package/dist/worktree-config.d.ts.map +1 -0
  557. package/dist/worktree-config.js +365 -0
  558. package/dist/worktree-config.js.map +1 -0
  559. package/package.json +90 -0
  560. package/skills/fidelios/SKILL.md +365 -0
  561. package/skills/fidelios/references/api-reference.md +647 -0
  562. package/skills/fidelios/references/company-skills.md +193 -0
  563. package/skills/fidelios-create-agent/SKILL.md +142 -0
  564. package/skills/fidelios-create-agent/references/api-reference.md +105 -0
  565. package/skills/fidelios-create-plugin/SKILL.md +101 -0
  566. package/skills/para-memory-files/SKILL.md +104 -0
  567. package/skills/para-memory-files/references/schemas.md +35 -0
  568. package/ui-dist/android-chrome-192x192.png +0 -0
  569. package/ui-dist/android-chrome-512x512.png +0 -0
  570. package/ui-dist/apple-touch-icon.png +0 -0
  571. package/ui-dist/assets/_basePickBy-DDS8rFE9.js +1 -0
  572. package/ui-dist/assets/_baseUniq-BTIdqnfJ.js +1 -0
  573. package/ui-dist/assets/apl-B4CMkyY2.js +1 -0
  574. package/ui-dist/assets/arc-CER6ytAf.js +1 -0
  575. package/ui-dist/assets/architectureDiagram-VXUJARFQ-CrJvVSPh.js +36 -0
  576. package/ui-dist/assets/asciiarmor-Df11BRmG.js +1 -0
  577. package/ui-dist/assets/asn1-EdZsLKOL.js +1 -0
  578. package/ui-dist/assets/asterisk-B-8jnY81.js +1 -0
  579. package/ui-dist/assets/blockDiagram-VD42YOAC-p-DB7nkA.js +122 -0
  580. package/ui-dist/assets/brainfuck-C4LP7Hcl.js +1 -0
  581. package/ui-dist/assets/c4Diagram-YG6GDRKO-D1K75fYz.js +10 -0
  582. package/ui-dist/assets/channel-B1viE-VZ.js +1 -0
  583. package/ui-dist/assets/chunk-4BX2VUAB-C1J-fCaK.js +1 -0
  584. package/ui-dist/assets/chunk-55IACEB6-CjEOgVYA.js +1 -0
  585. package/ui-dist/assets/chunk-B4BG7PRW-CGZwFaze.js +165 -0
  586. package/ui-dist/assets/chunk-DI55MBZ5-Dp2ZahPN.js +220 -0
  587. package/ui-dist/assets/chunk-FMBD7UC4-nXC1OkzD.js +15 -0
  588. package/ui-dist/assets/chunk-QN33PNHL-D_uFCkMK.js +1 -0
  589. package/ui-dist/assets/chunk-QZHKN3VN-CG3WK_AN.js +1 -0
  590. package/ui-dist/assets/chunk-TZMSLE5B-COlBSWdP.js +1 -0
  591. package/ui-dist/assets/classDiagram-2ON5EDUG-Cs4NEMXI.js +1 -0
  592. package/ui-dist/assets/classDiagram-v2-WZHVMYZB-Cs4NEMXI.js +1 -0
  593. package/ui-dist/assets/clike-B9uivgTg.js +1 -0
  594. package/ui-dist/assets/clojure-BMjYHr_A.js +1 -0
  595. package/ui-dist/assets/clone-CGwZV8ud.js +1 -0
  596. package/ui-dist/assets/cmake-BQqOBYOt.js +1 -0
  597. package/ui-dist/assets/cobol-CWcv1MsR.js +1 -0
  598. package/ui-dist/assets/coffeescript-S37ZYGWr.js +1 -0
  599. package/ui-dist/assets/commonlisp-DBKNyK5s.js +1 -0
  600. package/ui-dist/assets/cose-bilkent-S5V4N54A-B9XYqCMb.js +1 -0
  601. package/ui-dist/assets/crystal-SjHAIU92.js +1 -0
  602. package/ui-dist/assets/css-BnMrqG3P.js +1 -0
  603. package/ui-dist/assets/cypher-C_CwsFkJ.js +1 -0
  604. package/ui-dist/assets/cytoscape.esm-BQaXIfA_.js +331 -0
  605. package/ui-dist/assets/d-pRatUO7H.js +1 -0
  606. package/ui-dist/assets/dagre-6UL2VRFP-DcCdBLC7.js +4 -0
  607. package/ui-dist/assets/defaultLocale-DX6XiGOO.js +1 -0
  608. package/ui-dist/assets/diagram-PSM6KHXK-np1kLquy.js +24 -0
  609. package/ui-dist/assets/diagram-QEK2KX5R-C-b4qIN1.js +43 -0
  610. package/ui-dist/assets/diagram-S2PKOQOG-Ba-173Ug.js +24 -0
  611. package/ui-dist/assets/diff-DbItnlRl.js +1 -0
  612. package/ui-dist/assets/dockerfile-BKs6k2Af.js +1 -0
  613. package/ui-dist/assets/dtd-DF_7sFjM.js +1 -0
  614. package/ui-dist/assets/dylan-DwRh75JA.js +1 -0
  615. package/ui-dist/assets/ebnf-CDyGwa7X.js +1 -0
  616. package/ui-dist/assets/ecl-Cabwm37j.js +1 -0
  617. package/ui-dist/assets/eiffel-CnydiIhH.js +1 -0
  618. package/ui-dist/assets/elm-vLlmbW-K.js +1 -0
  619. package/ui-dist/assets/erDiagram-Q2GNP2WA-BBmkHiJP.js +60 -0
  620. package/ui-dist/assets/erlang-BNw1qcRV.js +1 -0
  621. package/ui-dist/assets/factor-kuTfRLto.js +1 -0
  622. package/ui-dist/assets/fcl-Kvtd6kyn.js +1 -0
  623. package/ui-dist/assets/flowDiagram-NV44I4VS-Dj_iTDkp.js +162 -0
  624. package/ui-dist/assets/forth-Ffai-XNe.js +1 -0
  625. package/ui-dist/assets/fortran-DYz_wnZ1.js +1 -0
  626. package/ui-dist/assets/ganttDiagram-JELNMOA3-Bn1hanTg.js +267 -0
  627. package/ui-dist/assets/gas-Bneqetm1.js +1 -0
  628. package/ui-dist/assets/gherkin-heZmZLOM.js +1 -0
  629. package/ui-dist/assets/gitGraphDiagram-V2S2FVAM-BjmRpty0.js +65 -0
  630. package/ui-dist/assets/graph-CWBOAGTW.js +1 -0
  631. package/ui-dist/assets/groovy-D9Dt4D0W.js +1 -0
  632. package/ui-dist/assets/haskell-Cw1EW3IL.js +1 -0
  633. package/ui-dist/assets/haxe-H-WmDvRZ.js +1 -0
  634. package/ui-dist/assets/http-DBlCnlav.js +1 -0
  635. package/ui-dist/assets/idl-BEugSyMb.js +1 -0
  636. package/ui-dist/assets/index-B52MtqBm.js +1 -0
  637. package/ui-dist/assets/index-BEBYIFOJ.js +1 -0
  638. package/ui-dist/assets/index-BIvl9YFB.js +1 -0
  639. package/ui-dist/assets/index-BNyP1gwD.js +1 -0
  640. package/ui-dist/assets/index-BRW6bV_B.js +6 -0
  641. package/ui-dist/assets/index-BcQTWaKH.js +1 -0
  642. package/ui-dist/assets/index-BfKYbH5T.js +13 -0
  643. package/ui-dist/assets/index-BhX49pA0.js +1 -0
  644. package/ui-dist/assets/index-BoFaTgOC.js +2 -0
  645. package/ui-dist/assets/index-C-Es83iE.js +7 -0
  646. package/ui-dist/assets/index-C3LG8kvr.js +1 -0
  647. package/ui-dist/assets/index-C5Z9j0rD.js +1 -0
  648. package/ui-dist/assets/index-CFlEF-gp.js +1 -0
  649. package/ui-dist/assets/index-Cjm12V39.js +1 -0
  650. package/ui-dist/assets/index-Cp84QmJD.css +1 -0
  651. package/ui-dist/assets/index-D2t01AH0.js +1 -0
  652. package/ui-dist/assets/index-DEt1jkxJ.js +1 -0
  653. package/ui-dist/assets/index-DeAKBJuz.js +3 -0
  654. package/ui-dist/assets/index-Du65R_Zq.js +1 -0
  655. package/ui-dist/assets/index-WUHteAuP.js +1 -0
  656. package/ui-dist/assets/index-Y_jO6IK_.js +1180 -0
  657. package/ui-dist/assets/index-ZQU9QA5y.js +1 -0
  658. package/ui-dist/assets/index-f6wRGThx.js +1 -0
  659. package/ui-dist/assets/index-hMuLlvYa.js +1 -0
  660. package/ui-dist/assets/infoDiagram-HS3SLOUP-CVMKJlmV.js +2 -0
  661. package/ui-dist/assets/init-Gi6I4Gst.js +1 -0
  662. package/ui-dist/assets/javascript-iXu5QeM3.js +1 -0
  663. package/ui-dist/assets/journeyDiagram-XKPGCS4Q-FrNTHHMi.js +139 -0
  664. package/ui-dist/assets/julia-DuME0IfC.js +1 -0
  665. package/ui-dist/assets/kanban-definition-3W4ZIXB7-BQYKwdVh.js +89 -0
  666. package/ui-dist/assets/katex-O9d3_IXG.js +261 -0
  667. package/ui-dist/assets/layout-BxccZ6zb.js +1 -0
  668. package/ui-dist/assets/linear-Db-Yv5jO.js +1 -0
  669. package/ui-dist/assets/livescript-BwQOo05w.js +1 -0
  670. package/ui-dist/assets/lua-BgMRiT3U.js +1 -0
  671. package/ui-dist/assets/mathematica-DTrFuWx2.js +1 -0
  672. package/ui-dist/assets/mbox-CNhZ1qSd.js +1 -0
  673. package/ui-dist/assets/mermaid.core-BCE9tDOe.js +256 -0
  674. package/ui-dist/assets/mindmap-definition-VGOIOE7T-ZWLuqirD.js +68 -0
  675. package/ui-dist/assets/mirc-CjQqDB4T.js +1 -0
  676. package/ui-dist/assets/mllike-CXdrOF99.js +1 -0
  677. package/ui-dist/assets/modelica-Dc1JOy9r.js +1 -0
  678. package/ui-dist/assets/mscgen-BA5vi2Kp.js +1 -0
  679. package/ui-dist/assets/mumps-BT43cFF4.js +1 -0
  680. package/ui-dist/assets/nginx-DdIZxoE0.js +1 -0
  681. package/ui-dist/assets/nsis-LdVXkNf5.js +1 -0
  682. package/ui-dist/assets/ntriples-BfvgReVJ.js +1 -0
  683. package/ui-dist/assets/octave-Ck1zUtKM.js +1 -0
  684. package/ui-dist/assets/ordinal-Cboi1Yqb.js +1 -0
  685. package/ui-dist/assets/oz-BzwKVEFT.js +1 -0
  686. package/ui-dist/assets/pascal--L3eBynH.js +1 -0
  687. package/ui-dist/assets/perl-CdXCOZ3F.js +1 -0
  688. package/ui-dist/assets/pieDiagram-ADFJNKIX-D01HRHJF.js +30 -0
  689. package/ui-dist/assets/pig-CevX1Tat.js +1 -0
  690. package/ui-dist/assets/powershell-CFHJl5sT.js +1 -0
  691. package/ui-dist/assets/properties-C78fOPTZ.js +1 -0
  692. package/ui-dist/assets/protobuf-ChK-085T.js +1 -0
  693. package/ui-dist/assets/pug-DeIclll2.js +1 -0
  694. package/ui-dist/assets/puppet-DMA9R1ak.js +1 -0
  695. package/ui-dist/assets/python-BuPzkPfP.js +1 -0
  696. package/ui-dist/assets/q-pXgVlZs6.js +1 -0
  697. package/ui-dist/assets/quadrantDiagram-AYHSOK5B-lAmOPnB4.js +7 -0
  698. package/ui-dist/assets/r-B6wPVr8A.js +1 -0
  699. package/ui-dist/assets/requirementDiagram-UZGBJVZJ-ByNWbh-O.js +64 -0
  700. package/ui-dist/assets/rpm-CTu-6PCP.js +1 -0
  701. package/ui-dist/assets/ruby-B2Rjki9n.js +1 -0
  702. package/ui-dist/assets/sankeyDiagram-TZEHDZUN-Cf_Gq84u.js +10 -0
  703. package/ui-dist/assets/sas-B4kiWyti.js +1 -0
  704. package/ui-dist/assets/scheme-C41bIUwD.js +1 -0
  705. package/ui-dist/assets/sequenceDiagram-WL72ISMW-Bx2VZbdr.js +145 -0
  706. package/ui-dist/assets/shell-CjFT_Tl9.js +1 -0
  707. package/ui-dist/assets/sieve-C3Gn_uJK.js +1 -0
  708. package/ui-dist/assets/simple-mode-GW_nhZxv.js +1 -0
  709. package/ui-dist/assets/smalltalk-CnHTOXQT.js +1 -0
  710. package/ui-dist/assets/solr-DehyRSwq.js +1 -0
  711. package/ui-dist/assets/sparql-DkYu6x3z.js +1 -0
  712. package/ui-dist/assets/spreadsheet-BCZA_wO0.js +1 -0
  713. package/ui-dist/assets/sql-D0XecflT.js +1 -0
  714. package/ui-dist/assets/stateDiagram-FKZM4ZOC-vP7G7A65.js +1 -0
  715. package/ui-dist/assets/stateDiagram-v2-4FDKWEC3-C2xpsAAO.js +1 -0
  716. package/ui-dist/assets/stex-C3f8Ysf7.js +1 -0
  717. package/ui-dist/assets/stylus-B533Al4x.js +1 -0
  718. package/ui-dist/assets/swift-BzpIVaGY.js +1 -0
  719. package/ui-dist/assets/tcl-DVfN8rqt.js +1 -0
  720. package/ui-dist/assets/textile-CnDTJFAw.js +1 -0
  721. package/ui-dist/assets/tiddlywiki-DO-Gjzrf.js +1 -0
  722. package/ui-dist/assets/tiki-DGYXhP31.js +1 -0
  723. package/ui-dist/assets/timeline-definition-IT6M3QCI-BJww-sEp.js +61 -0
  724. package/ui-dist/assets/toml-Bm5Em-hy.js +1 -0
  725. package/ui-dist/assets/treemap-GDKQZRPO-DUux14NY.js +162 -0
  726. package/ui-dist/assets/troff-wAsdV37c.js +1 -0
  727. package/ui-dist/assets/ttcn-CfJYG6tj.js +1 -0
  728. package/ui-dist/assets/ttcn-cfg-B9xdYoR4.js +1 -0
  729. package/ui-dist/assets/turtle-B1tBg_DP.js +1 -0
  730. package/ui-dist/assets/vb-CmGdzxic.js +1 -0
  731. package/ui-dist/assets/vbscript-BuJXcnF6.js +1 -0
  732. package/ui-dist/assets/velocity-D8B20fx6.js +1 -0
  733. package/ui-dist/assets/verilog-C6RDOZhf.js +1 -0
  734. package/ui-dist/assets/vhdl-lSbBsy5d.js +1 -0
  735. package/ui-dist/assets/webidl-ZXfAyPTL.js +1 -0
  736. package/ui-dist/assets/xquery-DzFWVndE.js +1 -0
  737. package/ui-dist/assets/xychartDiagram-PRI3JC2R-AU5ZOwAw.js +7 -0
  738. package/ui-dist/assets/yacas-BJ4BC0dw.js +1 -0
  739. package/ui-dist/assets/z80-Hz9HOZM7.js +1 -0
  740. package/ui-dist/brands/opencode-logo-dark-square.svg +18 -0
  741. package/ui-dist/brands/opencode-logo-light-square.svg +18 -0
  742. package/ui-dist/favicon-16x16.png +0 -0
  743. package/ui-dist/favicon-32x32.png +0 -0
  744. package/ui-dist/favicon-96x96.png +0 -0
  745. package/ui-dist/favicon.ico +0 -0
  746. package/ui-dist/favicon.svg +3 -0
  747. package/ui-dist/index.html +48 -0
  748. package/ui-dist/site.webmanifest +21 -0
  749. package/ui-dist/sw.js +42 -0
  750. package/ui-dist/worktree-favicon-16x16.png +0 -0
  751. package/ui-dist/worktree-favicon-32x32.png +0 -0
  752. package/ui-dist/worktree-favicon.ico +0 -0
  753. package/ui-dist/worktree-favicon.svg +3 -0
package/dist/index.js ADDED
@@ -0,0 +1,642 @@
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, ensurePostgresDatabase, formatEmbeddedPostgresError, getPostgresDataDirectory, inspectMigrations, applyPendingMigrations, createEmbeddedPostgresLogBuffer, reconcilePendingMigrationHistory, formatDatabaseBackupResult, runDatabaseBackup, authUsers, companies, companyMemberships, instanceUserRoles, } from "@fideliosai/db";
10
+ import detectPort from "detect-port";
11
+ import { createApp } from "./app.js";
12
+ import { loadConfig } from "./config.js";
13
+ import { logger } from "./middleware/logger.js";
14
+ import { setupLiveEventsWebSocketServer } from "./realtime/live-events-ws.js";
15
+ import { heartbeatService, reconcilePersistedRuntimeServicesOnStartup, routineService } from "./services/index.js";
16
+ import { createStorageServiceFromConfig } from "./storage/index.js";
17
+ import { printStartupBanner } from "./startup-banner.js";
18
+ import { getBoardClaimWarningUrl, initializeBoardClaimChallenge } from "./board-claim.js";
19
+ import { maybePersistWorktreeRuntimePorts } from "./worktree-config.js";
20
+ export async function startServer() {
21
+ let config = loadConfig();
22
+ if (process.env.FIDELIOS_SECRETS_PROVIDER === undefined) {
23
+ process.env.FIDELIOS_SECRETS_PROVIDER = config.secretsProvider;
24
+ }
25
+ if (process.env.FIDELIOS_SECRETS_STRICT_MODE === undefined) {
26
+ process.env.FIDELIOS_SECRETS_STRICT_MODE = config.secretsStrictMode ? "true" : "false";
27
+ }
28
+ if (process.env.FIDELIOS_SECRETS_MASTER_KEY_FILE === undefined) {
29
+ process.env.FIDELIOS_SECRETS_MASTER_KEY_FILE = config.secretsMasterKeyFilePath;
30
+ }
31
+ function formatPendingMigrationSummary(migrations) {
32
+ if (migrations.length === 0)
33
+ return "none";
34
+ return migrations.length > 3
35
+ ? `${migrations.slice(0, 3).join(", ")} (+${migrations.length - 3} more)`
36
+ : migrations.join(", ");
37
+ }
38
+ async function promptApplyMigrations(migrations) {
39
+ if (process.env.FIDELIOS_MIGRATION_AUTO_APPLY === "true")
40
+ return true;
41
+ if (process.env.FIDELIOS_MIGRATION_PROMPT === "never")
42
+ return false;
43
+ if (!stdin.isTTY || !stdout.isTTY)
44
+ return true;
45
+ const prompt = createInterface({ input: stdin, output: stdout });
46
+ try {
47
+ const answer = (await prompt.question(`Apply pending migrations (${formatPendingMigrationSummary(migrations)}) now? (y/N): `)).trim().toLowerCase();
48
+ return answer === "y" || answer === "yes";
49
+ }
50
+ finally {
51
+ prompt.close();
52
+ }
53
+ }
54
+ async function ensureMigrations(connectionString, label, opts) {
55
+ const autoApply = opts?.autoApply === true;
56
+ let state = await inspectMigrations(connectionString);
57
+ if (state.status === "needsMigrations" && state.reason === "pending-migrations") {
58
+ const repair = await reconcilePendingMigrationHistory(connectionString);
59
+ if (repair.repairedMigrations.length > 0) {
60
+ logger.warn({ repairedMigrations: repair.repairedMigrations }, `${label} had drifted migration history; repaired migration journal entries from existing schema state.`);
61
+ state = await inspectMigrations(connectionString);
62
+ if (state.status === "upToDate")
63
+ return "already applied";
64
+ }
65
+ }
66
+ if (state.status === "upToDate")
67
+ return "already applied";
68
+ if (state.status === "needsMigrations" && state.reason === "no-migration-journal-non-empty-db") {
69
+ logger.warn({ tableCount: state.tableCount }, `${label} has existing tables but no migration journal. Run migrations manually to sync schema.`);
70
+ const apply = autoApply ? true : await promptApplyMigrations(state.pendingMigrations);
71
+ if (!apply) {
72
+ throw new Error(`${label} has pending migrations (${formatPendingMigrationSummary(state.pendingMigrations)}). ` +
73
+ "Refusing to start against a stale schema. Run pnpm db:migrate or set FIDELIOS_MIGRATION_AUTO_APPLY=true.");
74
+ }
75
+ logger.info({ pendingMigrations: state.pendingMigrations }, `Applying ${state.pendingMigrations.length} pending migrations for ${label}`);
76
+ await applyPendingMigrations(connectionString);
77
+ return "applied (pending migrations)";
78
+ }
79
+ const apply = autoApply ? true : await promptApplyMigrations(state.pendingMigrations);
80
+ if (!apply) {
81
+ throw new Error(`${label} has pending migrations (${formatPendingMigrationSummary(state.pendingMigrations)}). ` +
82
+ "Refusing to start against a stale schema. Run pnpm db:migrate or set FIDELIOS_MIGRATION_AUTO_APPLY=true.");
83
+ }
84
+ logger.info({ pendingMigrations: state.pendingMigrations }, `Applying ${state.pendingMigrations.length} pending migrations for ${label}`);
85
+ await applyPendingMigrations(connectionString);
86
+ return "applied (pending migrations)";
87
+ }
88
+ function isLoopbackHost(host) {
89
+ const normalized = host.trim().toLowerCase();
90
+ return normalized === "127.0.0.1" || normalized === "localhost" || normalized === "::1";
91
+ }
92
+ function rewriteLocalUrlPort(rawUrl, port) {
93
+ if (!rawUrl)
94
+ return undefined;
95
+ try {
96
+ const parsed = new URL(rawUrl);
97
+ if (!isLoopbackHost(parsed.hostname))
98
+ return rawUrl;
99
+ parsed.port = String(port);
100
+ return parsed.toString();
101
+ }
102
+ catch {
103
+ return rawUrl;
104
+ }
105
+ }
106
+ const LOCAL_BOARD_USER_ID = "local-board";
107
+ const LOCAL_BOARD_USER_EMAIL = "local@fidelios.local";
108
+ const LOCAL_BOARD_USER_NAME = "Board";
109
+ async function ensureLocalTrustedBoardPrincipal(db) {
110
+ const now = new Date();
111
+ const existingUser = await db
112
+ .select({ id: authUsers.id })
113
+ .from(authUsers)
114
+ .where(eq(authUsers.id, LOCAL_BOARD_USER_ID))
115
+ .then((rows) => rows[0] ?? null);
116
+ if (!existingUser) {
117
+ await db.insert(authUsers).values({
118
+ id: LOCAL_BOARD_USER_ID,
119
+ name: LOCAL_BOARD_USER_NAME,
120
+ email: LOCAL_BOARD_USER_EMAIL,
121
+ emailVerified: true,
122
+ image: null,
123
+ createdAt: now,
124
+ updatedAt: now,
125
+ });
126
+ }
127
+ const role = await db
128
+ .select({ id: instanceUserRoles.id })
129
+ .from(instanceUserRoles)
130
+ .where(and(eq(instanceUserRoles.userId, LOCAL_BOARD_USER_ID), eq(instanceUserRoles.role, "instance_admin")))
131
+ .then((rows) => rows[0] ?? null);
132
+ if (!role) {
133
+ await db.insert(instanceUserRoles).values({
134
+ userId: LOCAL_BOARD_USER_ID,
135
+ role: "instance_admin",
136
+ });
137
+ }
138
+ const companyRows = await db.select({ id: companies.id }).from(companies);
139
+ for (const company of companyRows) {
140
+ const membership = await db
141
+ .select({ id: companyMemberships.id })
142
+ .from(companyMemberships)
143
+ .where(and(eq(companyMemberships.companyId, company.id), eq(companyMemberships.principalType, "user"), eq(companyMemberships.principalId, LOCAL_BOARD_USER_ID)))
144
+ .then((rows) => rows[0] ?? null);
145
+ if (membership)
146
+ continue;
147
+ await db.insert(companyMemberships).values({
148
+ companyId: company.id,
149
+ principalType: "user",
150
+ principalId: LOCAL_BOARD_USER_ID,
151
+ status: "active",
152
+ membershipRole: "owner",
153
+ });
154
+ }
155
+ }
156
+ let db;
157
+ let embeddedPostgres = null;
158
+ let embeddedPostgresStartedByThisProcess = false;
159
+ let migrationSummary = "skipped";
160
+ let activeDatabaseConnectionString;
161
+ let resolvedEmbeddedPostgresPort = null;
162
+ let startupDbInfo;
163
+ if (config.databaseUrl) {
164
+ migrationSummary = await ensureMigrations(config.databaseUrl, "PostgreSQL");
165
+ db = createDb(config.databaseUrl);
166
+ logger.info("Using external PostgreSQL via DATABASE_URL/config");
167
+ activeDatabaseConnectionString = config.databaseUrl;
168
+ startupDbInfo = { mode: "external-postgres", connectionString: config.databaseUrl };
169
+ }
170
+ else {
171
+ const moduleName = "embedded-postgres";
172
+ let EmbeddedPostgres;
173
+ try {
174
+ const mod = await import(moduleName);
175
+ EmbeddedPostgres = mod.default;
176
+ }
177
+ catch {
178
+ throw new Error("Embedded PostgreSQL mode requires dependency `embedded-postgres`. Reinstall dependencies (without omitting required packages), or set DATABASE_URL for external Postgres.");
179
+ }
180
+ const dataDir = resolve(config.embeddedPostgresDataDir);
181
+ const configuredPort = config.embeddedPostgresPort;
182
+ let port = configuredPort;
183
+ const logBuffer = createEmbeddedPostgresLogBuffer(120);
184
+ const verboseEmbeddedPostgresLogs = process.env.FIDELIOS_EMBEDDED_POSTGRES_VERBOSE === "true";
185
+ const appendEmbeddedPostgresLog = (message) => {
186
+ logBuffer.append(message);
187
+ if (!verboseEmbeddedPostgresLogs) {
188
+ return;
189
+ }
190
+ const lines = typeof message === "string"
191
+ ? message.split(/\r?\n/)
192
+ : message instanceof Error
193
+ ? [message.message]
194
+ : [String(message ?? "")];
195
+ for (const lineRaw of lines) {
196
+ const line = lineRaw.trim();
197
+ if (!line)
198
+ continue;
199
+ logger.info({ embeddedPostgresLog: line }, "embedded-postgres");
200
+ }
201
+ };
202
+ const logEmbeddedPostgresFailure = (phase, err) => {
203
+ const recentLogs = logBuffer.getRecentLogs();
204
+ if (recentLogs.length > 0) {
205
+ logger.error({
206
+ phase,
207
+ recentLogs,
208
+ err,
209
+ }, "Embedded PostgreSQL failed; showing buffered startup logs");
210
+ }
211
+ };
212
+ if (config.databaseMode === "postgres") {
213
+ logger.warn("Database mode is postgres but no connection string was set; falling back to embedded PostgreSQL");
214
+ }
215
+ const clusterVersionFile = resolve(dataDir, "PG_VERSION");
216
+ const clusterAlreadyInitialized = existsSync(clusterVersionFile);
217
+ const postmasterPidFile = resolve(dataDir, "postmaster.pid");
218
+ const isPidRunning = (pid) => {
219
+ try {
220
+ process.kill(pid, 0);
221
+ return true;
222
+ }
223
+ catch {
224
+ return false;
225
+ }
226
+ };
227
+ const getRunningPid = () => {
228
+ if (!existsSync(postmasterPidFile))
229
+ return null;
230
+ try {
231
+ const pidLine = readFileSync(postmasterPidFile, "utf8").split("\n")[0]?.trim();
232
+ const pid = Number(pidLine);
233
+ if (!Number.isInteger(pid) || pid <= 0)
234
+ return null;
235
+ if (!isPidRunning(pid))
236
+ return null;
237
+ return pid;
238
+ }
239
+ catch {
240
+ return null;
241
+ }
242
+ };
243
+ const runningPid = getRunningPid();
244
+ if (runningPid) {
245
+ logger.warn(`Embedded PostgreSQL already running; reusing existing process (pid=${runningPid}, port=${port})`);
246
+ }
247
+ else {
248
+ const configuredAdminConnectionString = `postgres://fidelios:fidelios@127.0.0.1:${configuredPort}/postgres`;
249
+ try {
250
+ const actualDataDir = await getPostgresDataDirectory(configuredAdminConnectionString);
251
+ if (typeof actualDataDir !== "string" ||
252
+ resolve(actualDataDir) !== resolve(dataDir)) {
253
+ throw new Error("reachable postgres does not use the expected embedded data directory");
254
+ }
255
+ await ensurePostgresDatabase(configuredAdminConnectionString, "fidelios");
256
+ logger.warn(`Embedded PostgreSQL appears to already be reachable without a pid file; reusing existing server on configured port ${configuredPort}`);
257
+ }
258
+ catch {
259
+ const detectedPort = await detectPort(configuredPort);
260
+ if (detectedPort !== configuredPort) {
261
+ logger.warn(`Embedded PostgreSQL port is in use; using next free port (requestedPort=${configuredPort}, selectedPort=${detectedPort})`);
262
+ }
263
+ port = detectedPort;
264
+ logger.info(`Using embedded PostgreSQL because no DATABASE_URL set (dataDir=${dataDir}, port=${port})`);
265
+ embeddedPostgres = new EmbeddedPostgres({
266
+ databaseDir: dataDir,
267
+ user: "fidelios",
268
+ password: "fidelios",
269
+ port,
270
+ persistent: true,
271
+ initdbFlags: ["--encoding=UTF8", "--locale=C", "--lc-messages=C"],
272
+ onLog: appendEmbeddedPostgresLog,
273
+ onError: appendEmbeddedPostgresLog,
274
+ });
275
+ if (!clusterAlreadyInitialized) {
276
+ try {
277
+ await embeddedPostgres.initialise();
278
+ }
279
+ catch (err) {
280
+ logEmbeddedPostgresFailure("initialise", err);
281
+ throw formatEmbeddedPostgresError(err, {
282
+ fallbackMessage: `Failed to initialize embedded PostgreSQL cluster in ${dataDir} on port ${port}`,
283
+ recentLogs: logBuffer.getRecentLogs(),
284
+ });
285
+ }
286
+ }
287
+ else {
288
+ logger.info(`Embedded PostgreSQL cluster already exists (${clusterVersionFile}); skipping init`);
289
+ }
290
+ if (existsSync(postmasterPidFile)) {
291
+ logger.warn("Removing stale embedded PostgreSQL lock file");
292
+ rmSync(postmasterPidFile, { force: true });
293
+ }
294
+ try {
295
+ await embeddedPostgres.start();
296
+ }
297
+ catch (err) {
298
+ logEmbeddedPostgresFailure("start", err);
299
+ throw formatEmbeddedPostgresError(err, {
300
+ fallbackMessage: `Failed to start embedded PostgreSQL on port ${port}`,
301
+ recentLogs: logBuffer.getRecentLogs(),
302
+ });
303
+ }
304
+ embeddedPostgresStartedByThisProcess = true;
305
+ }
306
+ }
307
+ const embeddedAdminConnectionString = `postgres://fidelios:fidelios@127.0.0.1:${port}/postgres`;
308
+ const dbStatus = await ensurePostgresDatabase(embeddedAdminConnectionString, "fidelios");
309
+ if (dbStatus === "created") {
310
+ logger.info("Created embedded PostgreSQL database: fidelios");
311
+ }
312
+ const embeddedConnectionString = `postgres://fidelios:fidelios@127.0.0.1:${port}/fidelios`;
313
+ const shouldAutoApplyFirstRunMigrations = !clusterAlreadyInitialized || dbStatus === "created";
314
+ if (shouldAutoApplyFirstRunMigrations) {
315
+ logger.info("Detected first-run embedded PostgreSQL setup; applying pending migrations automatically");
316
+ }
317
+ migrationSummary = await ensureMigrations(embeddedConnectionString, "Embedded PostgreSQL", {
318
+ autoApply: shouldAutoApplyFirstRunMigrations,
319
+ });
320
+ db = createDb(embeddedConnectionString);
321
+ logger.info("Embedded PostgreSQL ready");
322
+ activeDatabaseConnectionString = embeddedConnectionString;
323
+ resolvedEmbeddedPostgresPort = port;
324
+ startupDbInfo = { mode: "embedded-postgres", dataDir, port };
325
+ }
326
+ if (config.deploymentMode === "local_trusted" && !isLoopbackHost(config.host)) {
327
+ throw new Error(`local_trusted mode requires loopback host binding (received: ${config.host}). ` +
328
+ "Use authenticated mode for non-loopback deployments.");
329
+ }
330
+ if (config.deploymentMode === "local_trusted" && config.deploymentExposure !== "private") {
331
+ throw new Error("local_trusted mode only supports private exposure");
332
+ }
333
+ if (config.deploymentMode === "authenticated") {
334
+ if (config.authBaseUrlMode === "explicit" && !config.authPublicBaseUrl) {
335
+ throw new Error("auth.baseUrlMode=explicit requires auth.publicBaseUrl");
336
+ }
337
+ if (config.deploymentExposure === "public") {
338
+ if (config.authBaseUrlMode !== "explicit") {
339
+ throw new Error("authenticated public exposure requires auth.baseUrlMode=explicit");
340
+ }
341
+ if (!config.authPublicBaseUrl) {
342
+ throw new Error("authenticated public exposure requires auth.publicBaseUrl");
343
+ }
344
+ }
345
+ }
346
+ let authReady = config.deploymentMode === "local_trusted";
347
+ let betterAuthHandler;
348
+ let resolveSession;
349
+ let resolveSessionFromHeaders;
350
+ if (config.deploymentMode === "local_trusted") {
351
+ await ensureLocalTrustedBoardPrincipal(db);
352
+ }
353
+ if (config.deploymentMode === "authenticated") {
354
+ const { createBetterAuthHandler, createBetterAuthInstance, deriveAuthTrustedOrigins, resolveBetterAuthSession, resolveBetterAuthSessionFromHeaders, } = await import("./auth/better-auth.js");
355
+ const betterAuthSecret = process.env.BETTER_AUTH_SECRET?.trim() ?? process.env.FIDELIOS_AGENT_JWT_SECRET?.trim();
356
+ if (!betterAuthSecret) {
357
+ throw new Error("authenticated mode requires BETTER_AUTH_SECRET (or FIDELIOS_AGENT_JWT_SECRET) to be set");
358
+ }
359
+ const derivedTrustedOrigins = deriveAuthTrustedOrigins(config);
360
+ const envTrustedOrigins = (process.env.BETTER_AUTH_TRUSTED_ORIGINS ?? "")
361
+ .split(",")
362
+ .map((value) => value.trim())
363
+ .filter((value) => value.length > 0);
364
+ const effectiveTrustedOrigins = Array.from(new Set([...derivedTrustedOrigins, ...envTrustedOrigins]));
365
+ logger.info({
366
+ authBaseUrlMode: config.authBaseUrlMode,
367
+ authPublicBaseUrl: config.authPublicBaseUrl ?? null,
368
+ trustedOrigins: effectiveTrustedOrigins,
369
+ trustedOriginsSource: {
370
+ derived: derivedTrustedOrigins.length,
371
+ env: envTrustedOrigins.length,
372
+ },
373
+ }, "Authenticated mode auth origin configuration");
374
+ const auth = createBetterAuthInstance(db, config, effectiveTrustedOrigins);
375
+ betterAuthHandler = createBetterAuthHandler(auth);
376
+ resolveSession = (req) => resolveBetterAuthSession(auth, req);
377
+ resolveSessionFromHeaders = (headers) => resolveBetterAuthSessionFromHeaders(auth, headers);
378
+ await initializeBoardClaimChallenge(db, { deploymentMode: config.deploymentMode });
379
+ authReady = true;
380
+ }
381
+ const listenPort = await detectPort(config.port);
382
+ if (listenPort !== config.port) {
383
+ config.port = listenPort;
384
+ }
385
+ if (resolvedEmbeddedPostgresPort !== null && resolvedEmbeddedPostgresPort !== config.embeddedPostgresPort) {
386
+ config.embeddedPostgresPort = resolvedEmbeddedPostgresPort;
387
+ }
388
+ if (config.authBaseUrlMode === "explicit" && config.authPublicBaseUrl) {
389
+ config.authPublicBaseUrl = rewriteLocalUrlPort(config.authPublicBaseUrl, listenPort);
390
+ }
391
+ maybePersistWorktreeRuntimePorts({
392
+ serverPort: listenPort,
393
+ databasePort: resolvedEmbeddedPostgresPort,
394
+ });
395
+ const uiMode = config.uiDevMiddleware ? "vite-dev" : config.serveUi ? "static" : "none";
396
+ const storageService = createStorageServiceFromConfig(config);
397
+ const app = await createApp(db, {
398
+ uiMode,
399
+ serverPort: listenPort,
400
+ storageService,
401
+ deploymentMode: config.deploymentMode,
402
+ deploymentExposure: config.deploymentExposure,
403
+ allowedHostnames: config.allowedHostnames,
404
+ bindHost: config.host,
405
+ authReady,
406
+ companyDeletionEnabled: config.companyDeletionEnabled,
407
+ betterAuthHandler,
408
+ resolveSession,
409
+ });
410
+ const server = createServer(app);
411
+ if (listenPort !== config.port) {
412
+ logger.warn(`Requested port is busy; using next free port (requestedPort=${config.port}, selectedPort=${listenPort})`);
413
+ }
414
+ const runtimeListenHost = config.host;
415
+ const runtimeApiHost = runtimeListenHost === "0.0.0.0" || runtimeListenHost === "::"
416
+ ? "localhost"
417
+ : runtimeListenHost;
418
+ process.env.FIDELIOS_LISTEN_HOST = runtimeListenHost;
419
+ process.env.FIDELIOS_LISTEN_PORT = String(listenPort);
420
+ process.env.FIDELIOS_API_URL = `http://${runtimeApiHost}:${listenPort}`;
421
+ setupLiveEventsWebSocketServer(server, db, {
422
+ deploymentMode: config.deploymentMode,
423
+ resolveSessionFromHeaders,
424
+ });
425
+ void reconcilePersistedRuntimeServicesOnStartup(db)
426
+ .then((result) => {
427
+ if (result.reconciled > 0) {
428
+ logger.warn({ reconciled: result.reconciled }, "reconciled persisted runtime services from a previous server process");
429
+ }
430
+ })
431
+ .catch((err) => {
432
+ logger.error({ err }, "startup reconciliation of persisted runtime services failed");
433
+ });
434
+ if (config.heartbeatSchedulerEnabled) {
435
+ const heartbeat = heartbeatService(db);
436
+ const routines = routineService(db);
437
+ // Reap orphaned running runs at startup while in-memory execution state is empty,
438
+ // then resume any persisted queued runs that were waiting on the previous process.
439
+ void heartbeat
440
+ .reapOrphanedRuns()
441
+ .then(() => heartbeat.resumeQueuedRuns())
442
+ .catch((err) => {
443
+ logger.error({ err }, "startup heartbeat recovery failed");
444
+ });
445
+ setInterval(() => {
446
+ void heartbeat
447
+ .tickTimers(new Date())
448
+ .then((result) => {
449
+ if (result.enqueued > 0) {
450
+ logger.info({ ...result }, "heartbeat timer tick enqueued runs");
451
+ }
452
+ })
453
+ .catch((err) => {
454
+ logger.error({ err }, "heartbeat timer tick failed");
455
+ });
456
+ void routines
457
+ .tickScheduledTriggers(new Date())
458
+ .then((result) => {
459
+ if (result.triggered > 0) {
460
+ logger.info({ ...result }, "routine scheduler tick enqueued runs");
461
+ }
462
+ })
463
+ .catch((err) => {
464
+ logger.error({ err }, "routine scheduler tick failed");
465
+ });
466
+ // Periodically reap orphaned runs (5-min staleness threshold) and make sure
467
+ // persisted queued work is still being driven forward.
468
+ void heartbeat
469
+ .reapOrphanedRuns({ staleThresholdMs: 5 * 60 * 1000 })
470
+ .then(() => heartbeat.resumeQueuedRuns())
471
+ .catch((err) => {
472
+ logger.error({ err }, "periodic heartbeat recovery failed");
473
+ });
474
+ }, config.heartbeatSchedulerIntervalMs);
475
+ }
476
+ if (config.databaseBackupEnabled) {
477
+ const backupIntervalMs = config.databaseBackupIntervalMinutes * 60 * 1000;
478
+ let backupInFlight = false;
479
+ const runScheduledBackup = async () => {
480
+ if (backupInFlight) {
481
+ logger.warn("Skipping scheduled database backup because a previous backup is still running");
482
+ return;
483
+ }
484
+ backupInFlight = true;
485
+ try {
486
+ const result = await runDatabaseBackup({
487
+ connectionString: activeDatabaseConnectionString,
488
+ backupDir: config.databaseBackupDir,
489
+ retentionDays: config.databaseBackupRetentionDays,
490
+ filenamePrefix: "fidelios",
491
+ });
492
+ logger.info({
493
+ backupFile: result.backupFile,
494
+ sizeBytes: result.sizeBytes,
495
+ uncompressedSizeBytes: result.uncompressedSizeBytes,
496
+ prunedCount: result.prunedCount,
497
+ backupDir: config.databaseBackupDir,
498
+ retentionDays: config.databaseBackupRetentionDays,
499
+ }, `Automatic database backup complete: ${formatDatabaseBackupResult(result)}`);
500
+ // S3 cloud sync (non-blocking, graceful degradation)
501
+ if (config.databaseBackupS3Enabled) {
502
+ try {
503
+ const { uploadBackupToS3, pruneS3Backups } = await import("@fideliosai/db/s3-sync");
504
+ const s3Config = {
505
+ enabled: true,
506
+ bucket: config.databaseBackupS3Bucket,
507
+ region: config.databaseBackupS3Region,
508
+ prefix: config.databaseBackupS3Prefix,
509
+ retentionDays: config.databaseBackupS3RetentionDays,
510
+ accessKeyId: config.databaseBackupS3AccessKeyId,
511
+ secretAccessKey: config.databaseBackupS3SecretAccessKey,
512
+ };
513
+ const s3Result = await uploadBackupToS3(result.backupFile, s3Config);
514
+ if (s3Result) {
515
+ logger.info({ s3Key: s3Result.key, bucket: s3Result.bucket }, "Backup synced to S3");
516
+ const s3Pruned = await pruneS3Backups(s3Config);
517
+ if (s3Pruned > 0) {
518
+ logger.info({ prunedCount: s3Pruned }, "Pruned old S3 backups");
519
+ }
520
+ }
521
+ }
522
+ catch (s3Err) {
523
+ logger.warn({ err: s3Err }, "S3 backup sync failed (non-fatal)");
524
+ }
525
+ }
526
+ }
527
+ catch (err) {
528
+ logger.error({ err, backupDir: config.databaseBackupDir }, "Automatic database backup failed");
529
+ }
530
+ finally {
531
+ backupInFlight = false;
532
+ }
533
+ };
534
+ logger.info({
535
+ intervalMinutes: config.databaseBackupIntervalMinutes,
536
+ retentionDays: config.databaseBackupRetentionDays,
537
+ backupDir: config.databaseBackupDir,
538
+ }, "Automatic database backups enabled");
539
+ setInterval(() => {
540
+ void runScheduledBackup();
541
+ }, backupIntervalMs);
542
+ }
543
+ await new Promise((resolveListen, rejectListen) => {
544
+ const onError = (err) => {
545
+ server.off("error", onError);
546
+ rejectListen(err);
547
+ };
548
+ server.once("error", onError);
549
+ server.listen(listenPort, config.host, () => {
550
+ server.off("error", onError);
551
+ logger.info(`Server listening on ${config.host}:${listenPort}`);
552
+ if (process.env.FIDELIOS_OPEN_ON_LISTEN === "true") {
553
+ const openHost = config.host === "0.0.0.0" || config.host === "::" ? "127.0.0.1" : config.host;
554
+ const url = `http://${openHost}:${listenPort}`;
555
+ void import("open")
556
+ .then((mod) => mod.default(url))
557
+ .then(() => {
558
+ logger.info(`Opened browser at ${url}`);
559
+ })
560
+ .catch((err) => {
561
+ logger.warn({ err, url }, "Failed to open browser on startup");
562
+ });
563
+ }
564
+ printStartupBanner({
565
+ host: config.host,
566
+ deploymentMode: config.deploymentMode,
567
+ deploymentExposure: config.deploymentExposure,
568
+ authReady,
569
+ requestedPort: config.port,
570
+ listenPort,
571
+ uiMode,
572
+ db: startupDbInfo,
573
+ migrationSummary,
574
+ heartbeatSchedulerEnabled: config.heartbeatSchedulerEnabled,
575
+ heartbeatSchedulerIntervalMs: config.heartbeatSchedulerIntervalMs,
576
+ databaseBackupEnabled: config.databaseBackupEnabled,
577
+ databaseBackupIntervalMinutes: config.databaseBackupIntervalMinutes,
578
+ databaseBackupRetentionDays: config.databaseBackupRetentionDays,
579
+ databaseBackupDir: config.databaseBackupDir,
580
+ });
581
+ const boardClaimUrl = getBoardClaimWarningUrl(config.host, listenPort);
582
+ if (boardClaimUrl) {
583
+ const red = "\x1b[41m\x1b[30m";
584
+ const yellow = "\x1b[33m";
585
+ const reset = "\x1b[0m";
586
+ console.log([
587
+ `${red} BOARD CLAIM REQUIRED ${reset}`,
588
+ `${yellow}This instance was previously local_trusted and still has local-board as the only admin.${reset}`,
589
+ `${yellow}Sign in with a real user and open this one-time URL to claim ownership:${reset}`,
590
+ `${yellow}${boardClaimUrl}${reset}`,
591
+ `${yellow}If you are connecting over Tailscale, replace the host in this URL with your Tailscale IP/MagicDNS name.${reset}`,
592
+ ].join("\n"));
593
+ }
594
+ resolveListen();
595
+ });
596
+ });
597
+ if (embeddedPostgres && embeddedPostgresStartedByThisProcess) {
598
+ const shutdown = async (signal) => {
599
+ logger.info({ signal }, "Stopping embedded PostgreSQL");
600
+ try {
601
+ await embeddedPostgres?.stop();
602
+ }
603
+ catch (err) {
604
+ logger.error({ err }, "Failed to stop embedded PostgreSQL cleanly");
605
+ }
606
+ finally {
607
+ process.exit(0);
608
+ }
609
+ };
610
+ process.once("SIGINT", () => {
611
+ void shutdown("SIGINT");
612
+ });
613
+ process.once("SIGTERM", () => {
614
+ void shutdown("SIGTERM");
615
+ });
616
+ }
617
+ return {
618
+ server,
619
+ host: config.host,
620
+ listenPort,
621
+ apiUrl: process.env.FIDELIOS_API_URL ?? `http://${runtimeApiHost}:${listenPort}`,
622
+ databaseUrl: activeDatabaseConnectionString,
623
+ };
624
+ }
625
+ function isMainModule(metaUrl) {
626
+ const entry = process.argv[1];
627
+ if (!entry)
628
+ return false;
629
+ try {
630
+ return pathToFileURL(resolve(entry)).href === metaUrl;
631
+ }
632
+ catch {
633
+ return false;
634
+ }
635
+ }
636
+ if (isMainModule(import.meta.url)) {
637
+ void startServer().catch((err) => {
638
+ logger.error({ err }, "FideliOS server failed to start");
639
+ process.exit(1);
640
+ });
641
+ }
642
+ //# sourceMappingURL=index.js.map