@omnitron-dev/omnitron 0.1.2 → 0.2.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 (268) hide show
  1. package/dist/cli/omnitron.js +32 -1
  2. package/dist/cli/omnitron.js.map +1 -1
  3. package/dist/cluster/leader-election.d.ts.map +1 -1
  4. package/dist/cluster/leader-election.js +0 -2
  5. package/dist/cluster/leader-election.js.map +1 -1
  6. package/dist/commands/env.d.ts.map +1 -1
  7. package/dist/commands/env.js +10 -2
  8. package/dist/commands/env.js.map +1 -1
  9. package/dist/commands/health.d.ts.map +1 -1
  10. package/dist/commands/health.js +10 -2
  11. package/dist/commands/health.js.map +1 -1
  12. package/dist/commands/inspect-graph.d.ts +20 -0
  13. package/dist/commands/inspect-graph.d.ts.map +1 -0
  14. package/dist/commands/inspect-graph.js +78 -0
  15. package/dist/commands/inspect-graph.js.map +1 -0
  16. package/dist/commands/inspect.d.ts.map +1 -1
  17. package/dist/commands/inspect.js +10 -2
  18. package/dist/commands/inspect.js.map +1 -1
  19. package/dist/commands/list.d.ts.map +1 -1
  20. package/dist/commands/list.js +11 -1
  21. package/dist/commands/list.js.map +1 -1
  22. package/dist/commands/logs.d.ts.map +1 -1
  23. package/dist/commands/logs.js +17 -3
  24. package/dist/commands/logs.js.map +1 -1
  25. package/dist/commands/metrics.d.ts.map +1 -1
  26. package/dist/commands/metrics.js +10 -2
  27. package/dist/commands/metrics.js.map +1 -1
  28. package/dist/commands/monit.d.ts.map +1 -1
  29. package/dist/commands/monit.js +9 -0
  30. package/dist/commands/monit.js.map +1 -1
  31. package/dist/commands/output.d.ts +35 -0
  32. package/dist/commands/output.d.ts.map +1 -0
  33. package/dist/commands/output.js +63 -0
  34. package/dist/commands/output.js.map +1 -0
  35. package/dist/commands/stack.d.ts.map +1 -1
  36. package/dist/commands/stack.js +22 -7
  37. package/dist/commands/stack.js.map +1 -1
  38. package/dist/commands/status.d.ts.map +1 -1
  39. package/dist/commands/status.js +17 -0
  40. package/dist/commands/status.js.map +1 -1
  41. package/dist/commands/tor.d.ts +13 -0
  42. package/dist/commands/tor.d.ts.map +1 -0
  43. package/dist/commands/tor.js +100 -0
  44. package/dist/commands/tor.js.map +1 -0
  45. package/dist/commands/up.js +1 -1
  46. package/dist/commands/up.js.map +1 -1
  47. package/dist/config/loader.d.ts.map +1 -1
  48. package/dist/config/loader.js +29 -5
  49. package/dist/config/loader.js.map +1 -1
  50. package/dist/config/types.d.ts +14 -0
  51. package/dist/config/types.d.ts.map +1 -1
  52. package/dist/daemon/daemon-client.d.ts +14 -0
  53. package/dist/daemon/daemon-client.d.ts.map +1 -1
  54. package/dist/daemon/daemon-client.js +4 -0
  55. package/dist/daemon/daemon-client.js.map +1 -1
  56. package/dist/daemon/daemon-entry.js +17 -23
  57. package/dist/daemon/daemon-entry.js.map +1 -1
  58. package/dist/daemon/daemon.d.ts +2 -0
  59. package/dist/daemon/daemon.d.ts.map +1 -1
  60. package/dist/daemon/daemon.js +118 -7
  61. package/dist/daemon/daemon.js.map +1 -1
  62. package/dist/daemon/daemon.module.d.ts.map +1 -1
  63. package/dist/daemon/daemon.module.js +41 -14
  64. package/dist/daemon/daemon.module.js.map +1 -1
  65. package/dist/daemon/daemon.rpc-service.d.ts +19 -0
  66. package/dist/daemon/daemon.rpc-service.d.ts.map +1 -1
  67. package/dist/daemon/daemon.rpc-service.js +14 -0
  68. package/dist/daemon/daemon.rpc-service.js.map +1 -1
  69. package/dist/daemon/pid-manager.d.ts +55 -4
  70. package/dist/daemon/pid-manager.d.ts.map +1 -1
  71. package/dist/daemon/pid-manager.js +123 -16
  72. package/dist/daemon/pid-manager.js.map +1 -1
  73. package/dist/daemon/state-store.d.ts.map +1 -1
  74. package/dist/daemon/state-store.js +43 -1
  75. package/dist/daemon/state-store.js.map +1 -1
  76. package/dist/infrastructure/container-runtime.d.ts +10 -0
  77. package/dist/infrastructure/container-runtime.d.ts.map +1 -1
  78. package/dist/infrastructure/container-runtime.js +111 -36
  79. package/dist/infrastructure/container-runtime.js.map +1 -1
  80. package/dist/infrastructure/infrastructure.service.d.ts +41 -0
  81. package/dist/infrastructure/infrastructure.service.d.ts.map +1 -1
  82. package/dist/infrastructure/infrastructure.service.js +157 -8
  83. package/dist/infrastructure/infrastructure.service.js.map +1 -1
  84. package/dist/infrastructure/phantom-endpoint-janitor.d.ts +72 -0
  85. package/dist/infrastructure/phantom-endpoint-janitor.d.ts.map +1 -0
  86. package/dist/infrastructure/phantom-endpoint-janitor.js +149 -0
  87. package/dist/infrastructure/phantom-endpoint-janitor.js.map +1 -0
  88. package/dist/infrastructure/presets/index.d.ts.map +1 -1
  89. package/dist/infrastructure/presets/index.js +2 -0
  90. package/dist/infrastructure/presets/index.js.map +1 -1
  91. package/dist/infrastructure/presets/postgres.d.ts.map +1 -1
  92. package/dist/infrastructure/presets/postgres.js +9 -3
  93. package/dist/infrastructure/presets/postgres.js.map +1 -1
  94. package/dist/infrastructure/presets/redis.d.ts.map +1 -1
  95. package/dist/infrastructure/presets/redis.js +10 -4
  96. package/dist/infrastructure/presets/redis.js.map +1 -1
  97. package/dist/infrastructure/presets/registry.d.ts.map +1 -1
  98. package/dist/infrastructure/presets/registry.js +12 -0
  99. package/dist/infrastructure/presets/registry.js.map +1 -1
  100. package/dist/infrastructure/presets/tor.d.ts +74 -0
  101. package/dist/infrastructure/presets/tor.d.ts.map +1 -0
  102. package/dist/infrastructure/presets/tor.js +176 -0
  103. package/dist/infrastructure/presets/tor.js.map +1 -0
  104. package/dist/infrastructure/service-resolver.d.ts +31 -0
  105. package/dist/infrastructure/service-resolver.d.ts.map +1 -1
  106. package/dist/infrastructure/service-resolver.js +60 -9
  107. package/dist/infrastructure/service-resolver.js.map +1 -1
  108. package/dist/infrastructure/stack-infra-manager.d.ts +1 -1
  109. package/dist/infrastructure/stack-infra-manager.js +1 -1
  110. package/dist/infrastructure/types.d.ts +17 -0
  111. package/dist/infrastructure/types.d.ts.map +1 -1
  112. package/dist/observability/index.d.ts +4 -0
  113. package/dist/observability/index.d.ts.map +1 -0
  114. package/dist/observability/index.js +3 -0
  115. package/dist/observability/index.js.map +1 -0
  116. package/dist/observability/metrics-bridge.d.ts +87 -0
  117. package/dist/observability/metrics-bridge.d.ts.map +1 -0
  118. package/dist/observability/metrics-bridge.js +295 -0
  119. package/dist/observability/metrics-bridge.js.map +1 -0
  120. package/dist/observability/metrics-server.d.ts +68 -0
  121. package/dist/observability/metrics-server.d.ts.map +1 -0
  122. package/dist/observability/metrics-server.js +146 -0
  123. package/dist/observability/metrics-server.js.map +1 -0
  124. package/dist/orchestrator/app-handle.d.ts +13 -1
  125. package/dist/orchestrator/app-handle.d.ts.map +1 -1
  126. package/dist/orchestrator/app-handle.js +12 -0
  127. package/dist/orchestrator/app-handle.js.map +1 -1
  128. package/dist/orchestrator/bootstrap-process.d.ts +49 -0
  129. package/dist/orchestrator/bootstrap-process.d.ts.map +1 -1
  130. package/dist/orchestrator/bootstrap-process.js +167 -0
  131. package/dist/orchestrator/bootstrap-process.js.map +1 -1
  132. package/dist/orchestrator/build-service.d.ts +50 -3
  133. package/dist/orchestrator/build-service.d.ts.map +1 -1
  134. package/dist/orchestrator/build-service.js +357 -85
  135. package/dist/orchestrator/build-service.js.map +1 -1
  136. package/dist/orchestrator/file-watcher.d.ts.map +1 -1
  137. package/dist/orchestrator/file-watcher.js +60 -38
  138. package/dist/orchestrator/file-watcher.js.map +1 -1
  139. package/dist/orchestrator/orchestrator.service.d.ts +176 -3
  140. package/dist/orchestrator/orchestrator.service.d.ts.map +1 -1
  141. package/dist/orchestrator/orchestrator.service.js +587 -56
  142. package/dist/orchestrator/orchestrator.service.js.map +1 -1
  143. package/dist/orchestrator/process-janitor.d.ts +153 -0
  144. package/dist/orchestrator/process-janitor.d.ts.map +1 -0
  145. package/dist/orchestrator/process-janitor.js +279 -0
  146. package/dist/orchestrator/process-janitor.js.map +1 -0
  147. package/dist/project/config-resolver.d.ts.map +1 -1
  148. package/dist/project/config-resolver.js +38 -12
  149. package/dist/project/config-resolver.js.map +1 -1
  150. package/dist/project/registry.d.ts +1 -0
  151. package/dist/project/registry.d.ts.map +1 -1
  152. package/dist/project/registry.js +30 -0
  153. package/dist/project/registry.js.map +1 -1
  154. package/dist/services/auth.service.d.ts.map +1 -1
  155. package/dist/services/auth.service.js +9 -2
  156. package/dist/services/auth.service.js.map +1 -1
  157. package/dist/services/netron-telemetry-transport.d.ts.map +1 -1
  158. package/dist/services/netron-telemetry-transport.js +0 -4
  159. package/dist/services/netron-telemetry-transport.js.map +1 -1
  160. package/dist/services/node-manager.service.js +1 -1
  161. package/dist/services/node-manager.service.js.map +1 -1
  162. package/dist/services/pipeline.service.d.ts +15 -0
  163. package/dist/services/pipeline.service.d.ts.map +1 -1
  164. package/dist/services/pipeline.service.js +53 -2
  165. package/dist/services/pipeline.service.js.map +1 -1
  166. package/dist/services/project.rpc-service.d.ts +4 -0
  167. package/dist/services/project.rpc-service.d.ts.map +1 -1
  168. package/dist/services/project.rpc-service.js +9 -0
  169. package/dist/services/project.rpc-service.js.map +1 -1
  170. package/dist/services/project.service.d.ts +9 -0
  171. package/dist/services/project.service.d.ts.map +1 -1
  172. package/dist/services/project.service.js +148 -21
  173. package/dist/services/project.service.js.map +1 -1
  174. package/dist/shared/dto/project.d.ts +1 -1
  175. package/dist/shared/dto/project.d.ts.map +1 -1
  176. package/dist/shared/dto/services.d.ts +24 -0
  177. package/dist/shared/dto/services.d.ts.map +1 -1
  178. package/dist/workers/health-monitor.service.d.ts.map +1 -1
  179. package/dist/workers/health-monitor.service.js +4 -1
  180. package/dist/workers/health-monitor.service.js.map +1 -1
  181. package/dist/workers/types.d.ts +3 -0
  182. package/dist/workers/types.d.ts.map +1 -1
  183. package/package.json +19 -18
  184. package/webapp/dist/assets/Badge-D2ZBP5iK.js +1 -0
  185. package/webapp/dist/assets/Card-vO88g06B.js +1 -0
  186. package/webapp/dist/assets/CardActions-C9h7Q2wW.js +1 -0
  187. package/webapp/dist/assets/CardContent-BA_Xmmhk.js +1 -0
  188. package/webapp/dist/assets/CardHeader-ceIs__6x.js +1 -0
  189. package/webapp/dist/assets/Chip-Ckk0xUhK.js +1 -0
  190. package/webapp/dist/assets/DialogActions-BhHM7hov.js +1 -0
  191. package/webapp/dist/assets/DialogContentText-BT2JQRmK.js +1 -0
  192. package/webapp/dist/assets/FormControlLabel-CcQByVS8.js +1 -0
  193. package/webapp/dist/assets/Grid-14PETRQW.js +1 -0
  194. package/webapp/dist/assets/InputAdornment-B8aHIsQ7.js +1 -0
  195. package/webapp/dist/assets/Skeleton-B74-Ds6O.js +37 -0
  196. package/webapp/dist/assets/Switch-DvWD2wh4.js +1 -0
  197. package/webapp/dist/assets/SwitchBase-CDU4nY8O.js +1 -0
  198. package/webapp/dist/assets/Tab-DcCOYYp5.js +1 -0
  199. package/webapp/dist/assets/TableContainer-CzTh4mu-.js +1 -0
  200. package/webapp/dist/assets/TableRow-BySEreZR.js +2 -0
  201. package/webapp/dist/assets/TextField-BLf-BHz2.js +1 -0
  202. package/webapp/dist/assets/alerts-DnRbT41C.js +1 -0
  203. package/webapp/dist/assets/apps-CdR0VH2d.js +1 -0
  204. package/webapp/dist/assets/chunk-DtcAfS_W.js +1 -0
  205. package/webapp/dist/assets/client-DU8I_lDc.js +2 -0
  206. package/webapp/dist/assets/containers-Dw-rRXV1.js +1 -0
  207. package/webapp/dist/assets/dashboard-CzgB0uZz.js +1 -0
  208. package/webapp/dist/assets/dashboard-builder-DsA0yg33.js +1 -0
  209. package/webapp/dist/assets/deployments-DtQAoIcQ.js +1 -0
  210. package/webapp/dist/assets/detail-BJR-G7JG.js +1 -0
  211. package/webapp/dist/assets/detail-nlCeSltl.js +8 -0
  212. package/webapp/dist/assets/index-ByQDwp2r.js +566 -0
  213. package/webapp/dist/assets/isMuiElement-DwF2naaF.js +1 -0
  214. package/webapp/dist/assets/logs-Kn8o4H7k.js +11 -0
  215. package/webapp/dist/assets/metrics-DN8Zu5wT.js +2 -0
  216. package/webapp/dist/assets/nodes-Bgch7AtN.js +7 -0
  217. package/webapp/dist/assets/pipelines-Cry3qm-S.js +4 -0
  218. package/webapp/dist/assets/popper-BJFSj6rc.js +1 -0
  219. package/webapp/dist/assets/preload-helper-DSXbuxSR.js +1 -0
  220. package/webapp/dist/assets/projects-Dym2GI1U.js +1 -0
  221. package/webapp/dist/assets/react-apexcharts.esm-CSGK5Cxn.js +958 -0
  222. package/webapp/dist/assets/react-apexcharts.esm-DEAWOwx5.js +1003 -0
  223. package/webapp/dist/assets/settings-va3zTcow.js +1 -0
  224. package/webapp/dist/assets/sign-in-ik35umbp.js +1 -0
  225. package/webapp/dist/assets/stacks-CVFOnxbF.js +1 -0
  226. package/webapp/dist/assets/system-info-npIXAjX2.js +1 -0
  227. package/webapp/dist/assets/topology-bDe70vLs.js +12 -0
  228. package/webapp/dist/assets/traces-DIIcT8DF.js +1 -0
  229. package/webapp/dist/assets/use-stack-context-DHLwZv1r.js +1 -0
  230. package/webapp/dist/index.html +5 -6
  231. package/webapp/dist/assets/Chip-BySxTjyN.js +0 -1
  232. package/webapp/dist/assets/DialogContentText-YQWiAVrU.js +0 -1
  233. package/webapp/dist/assets/DialogTitle-CDkgUIwp.js +0 -1
  234. package/webapp/dist/assets/FormControlLabel-Bu3CCsBM.js +0 -1
  235. package/webapp/dist/assets/Grid-BFY8hAzL.js +0 -1
  236. package/webapp/dist/assets/InputAdornment-_Dayk-3y.js +0 -3
  237. package/webapp/dist/assets/Skeleton-BGj6Sw8m.js +0 -37
  238. package/webapp/dist/assets/Switch-CA6682vv.js +0 -1
  239. package/webapp/dist/assets/TableContainer-4epq10KJ.js +0 -1
  240. package/webapp/dist/assets/TextField-C73KHMVN.js +0 -1
  241. package/webapp/dist/assets/alerts-JEQALS7Y.js +0 -1
  242. package/webapp/dist/assets/apps-DMPysEKB.js +0 -1
  243. package/webapp/dist/assets/client-DlGPter5.js +0 -110
  244. package/webapp/dist/assets/containers-CvkC7do8.js +0 -1
  245. package/webapp/dist/assets/dashboard-C0Fre9pC.js +0 -1
  246. package/webapp/dist/assets/dashboard-builder-DAghqdpE.js +0 -1
  247. package/webapp/dist/assets/deployments-Cg1lI1uT.js +0 -1
  248. package/webapp/dist/assets/detail-CyFtEson.js +0 -1
  249. package/webapp/dist/assets/detail-DqoSGKT1.js +0 -8
  250. package/webapp/dist/assets/icons-ynIWYfBP.js +0 -3
  251. package/webapp/dist/assets/index-vKrDmEA_.js +0 -259
  252. package/webapp/dist/assets/isMuiElement-BRL3YuCT.js +0 -1
  253. package/webapp/dist/assets/logs-IovIij1C.js +0 -11
  254. package/webapp/dist/assets/metrics-Dufwtwjq.js +0 -1
  255. package/webapp/dist/assets/nodes-Brvu8W3j.js +0 -7
  256. package/webapp/dist/assets/pipelines-t40X4MuC.js +0 -4
  257. package/webapp/dist/assets/prop-types-CvVtHxp4.js +0 -1
  258. package/webapp/dist/assets/react-apexcharts.esm-CLO6gala.js +0 -954
  259. package/webapp/dist/assets/settings-DTAIST3v.js +0 -1
  260. package/webapp/dist/assets/sign-in-DQEAkJum.js +0 -1
  261. package/webapp/dist/assets/stacks-BjM1f45N.js +0 -1
  262. package/webapp/dist/assets/system-info-BQSbSEK-.js +0 -1
  263. package/webapp/dist/assets/topology-6N8-Az_Z.js +0 -12
  264. package/webapp/dist/assets/traces-DVXyb-4m.js +0 -1
  265. package/webapp/dist/assets/use-stack-context-CbE8fxBA.js +0 -1
  266. /package/webapp/dist/assets/{constants-DqFQJ27U.js → constants-BgnT-Xdy.js} +0 -0
  267. /package/webapp/dist/assets/{formatters-J3Xqn6BQ.js → formatters-Do41SRmE.js} +0 -0
  268. /package/webapp/dist/assets/{fs-uP8eiZAR.js → fs-CgZLtHiQ.js} +0 -0
@@ -205,13 +205,26 @@ export class PipelineService {
205
205
  this.activeRuns.delete(runId);
206
206
  this.logger.info({ runId, status: overallStatus }, 'Pipeline execution completed');
207
207
  }
208
- async executeStep(step, _params, _xec, signal) {
208
+ async executeStep(step, params, _xec, signal) {
209
209
  const start = Date.now();
210
+ // Evaluate step condition before running — skip if condition is false
211
+ if (step.condition) {
212
+ const conditionMet = this.evaluateCondition(step.condition, params ?? {});
213
+ if (!conditionMet) {
214
+ this.logger.debug({ step: step.name, condition: step.condition }, 'Step skipped — condition not met');
215
+ return { name: step.name, status: 'skipped', duration: 0 };
216
+ }
217
+ }
210
218
  const timeout = step.timeout ?? 300_000; // 5 min default
211
219
  const maxRetries = step.retries ?? 0;
220
+ // Interpolate {{param}} placeholders in the command and env values
221
+ const command = this.interpolateParams(step.run, params ?? {});
222
+ const env = step.env
223
+ ? Object.fromEntries(Object.entries(step.env).map(([k, v]) => [k, this.interpolateParams(v, params ?? {})]))
224
+ : undefined;
212
225
  for (let attempt = 0; attempt <= maxRetries; attempt++) {
213
226
  try {
214
- const output = await this.runShellCommand(step.run, step.env, timeout, signal);
227
+ const output = await this.runShellCommand(command, env, timeout, signal);
215
228
  return {
216
229
  name: step.name,
217
230
  status: 'success',
@@ -234,6 +247,44 @@ export class PipelineService {
234
247
  // Should not reach here
235
248
  return { name: step.name, status: 'failed', duration: Date.now() - start, error: 'Exhausted retries' };
236
249
  }
250
+ /**
251
+ * Substitute {{paramName}} placeholders in a string with values from params.
252
+ * Unknown placeholders are left as-is so they surface clearly in output.
253
+ */
254
+ interpolateParams(template, params) {
255
+ return template.replace(/\{\{(\w+)\}\}/g, (match, key) => {
256
+ const val = params[key];
257
+ if (val === undefined || val === null)
258
+ return match;
259
+ return String(val);
260
+ });
261
+ }
262
+ /**
263
+ * Evaluate a simple step condition expression against pipeline params.
264
+ *
265
+ * Supported forms:
266
+ * params.key == 'value' → string equality
267
+ * params.key != 'value' → string inequality
268
+ * params.key → truthy check
269
+ * !params.key → falsy check
270
+ */
271
+ evaluateCondition(condition, params) {
272
+ const eqMatch = condition.match(/^params\.(\w+)\s*==\s*['"]([^'"]*)['"]\s*$/);
273
+ if (eqMatch)
274
+ return String(params[eqMatch[1]] ?? '') === eqMatch[2];
275
+ const neqMatch = condition.match(/^params\.(\w+)\s*!=\s*['"]([^'"]*)['"]\s*$/);
276
+ if (neqMatch)
277
+ return String(params[neqMatch[1]] ?? '') !== neqMatch[2];
278
+ const notMatch = condition.match(/^!\s*params\.(\w+)\s*$/);
279
+ if (notMatch)
280
+ return !params[notMatch[1]];
281
+ const keyMatch = condition.match(/^params\.(\w+)\s*$/);
282
+ if (keyMatch)
283
+ return Boolean(params[keyMatch[1]]);
284
+ // Unknown syntax — log and allow step to run (fail-open for forward compatibility)
285
+ this.logger.warn({ condition }, 'Pipeline: unrecognized condition syntax — step will run');
286
+ return true;
287
+ }
237
288
  async runShellCommand(command, env, timeout = 300_000, signal) {
238
289
  const { execFile } = await import('node:child_process');
239
290
  const { promisify } = await import('node:util');
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.service.js","sourceRoot":"","sources":["../../src/services/pipeline.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipeline.service.js","sourceRoot":"","sources":["../../src/services/pipeline.service.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,10 @@ export declare class ProjectRpcService {
25
25
  name: string;
26
26
  path: string;
27
27
  }): Promise<IProjectInfo>;
28
+ updateProject(data: {
29
+ name: string;
30
+ path?: string;
31
+ }): Promise<IProjectInfo>;
28
32
  removeProject(data: {
29
33
  name: string;
30
34
  }): Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"project.rpc-service.d.ts","sourceRoot":"","sources":["../../src/services/project.rpc-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;AAElC,qBACa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,cAAc;gBAAd,cAAc,EAAE,cAAc;IAOrD,YAAY,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAKvC,UAAU,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC;IAKzD,gBAAgB,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAS1E,UAAU,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC;IAKvE,aAAa,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAUpE,UAAU,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAK5D,QAAQ,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IAKvE,cAAc,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC;IAIrF;;;OAGG;IAEG,cAAc,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,0BAA0B,EAAE,eAAe,EAAE,CAAC;IAqBxG,UAAU,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IAKzE,SAAS,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IASxE,WAAW,CAAC,IAAI,EAAE;QACtB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;QACrC,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;QACvB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;KACpB,GAAG,OAAO,CAAC,UAAU,CAAC;IAKjB,WAAW,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CAI3F"}
1
+ {"version":3,"file":"project.rpc-service.d.ts","sourceRoot":"","sources":["../../src/services/project.rpc-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;AAElC,qBACa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,cAAc;gBAAd,cAAc,EAAE,cAAc;IAOrD,YAAY,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAKvC,UAAU,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC;IAKzD,gBAAgB,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAS1E,UAAU,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC;IAKvE,aAAa,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC;IAK3E,aAAa,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAUpE,UAAU,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAK5D,QAAQ,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IAKvE,cAAc,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC;IAIrF;;;OAGG;IAEG,cAAc,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,0BAA0B,EAAE,eAAe,EAAE,CAAC;IAqBxG,UAAU,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IAKzE,SAAS,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IASxE,WAAW,CAAC,IAAI,EAAE;QACtB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;QACrC,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;QACvB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;KACpB,GAAG,OAAO,CAAC,UAAU,CAAC;IAKjB,WAAW,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CAI3F"}
@@ -43,6 +43,9 @@ let ProjectRpcService = class ProjectRpcService {
43
43
  async addProject(data) {
44
44
  return this.projectService.addProject(data.name, data.path);
45
45
  }
46
+ async updateProject(data) {
47
+ return this.projectService.updateProject(data.name, data.path ? { path: data.path } : {});
48
+ }
46
49
  async removeProject(data) {
47
50
  this.projectService.removeProject(data.name);
48
51
  return { success: true };
@@ -122,6 +125,12 @@ __decorate([
122
125
  __metadata("design:paramtypes", [Object]),
123
126
  __metadata("design:returntype", Promise)
124
127
  ], ProjectRpcService.prototype, "addProject", null);
128
+ __decorate([
129
+ Public({ auth: { roles: ADMIN_ROLES } }),
130
+ __metadata("design:type", Function),
131
+ __metadata("design:paramtypes", [Object]),
132
+ __metadata("design:returntype", Promise)
133
+ ], ProjectRpcService.prototype, "updateProject", null);
125
134
  __decorate([
126
135
  Public({ auth: { roles: ADMIN_ROLES } }),
127
136
  __metadata("design:type", Function),
@@ -1 +1 @@
1
- {"version":3,"file":"project.rpc-service.js","sourceRoot":"","sources":["../../src/services/project.rpc-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project.rpc-service.js","sourceRoot":"","sources":["../../src/services/project.rpc-service.ts"],"names":[],"mappings":"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"}
@@ -44,6 +44,9 @@ export declare class ProjectService extends EventEmitter {
44
44
  listProjects(): IProjectInfo[];
45
45
  getProject(name: string): IProjectInfo;
46
46
  addProject(name: string, projectPath: string): IProjectInfo;
47
+ updateProject(name: string, data: {
48
+ path?: string;
49
+ }): IProjectInfo;
47
50
  removeProject(name: string): void;
48
51
  scanRequirements(projectName: string): Promise<IProjectRequirements>;
49
52
  createStack(project: string, input: {
@@ -108,6 +111,12 @@ export declare class ProjectService extends EventEmitter {
108
111
  * localhost:{port}/{dbName} with postgres:postgres — matching the stack's provisioned postgres.
109
112
  */
110
113
  private runStackMigrations;
114
+ /**
115
+ * Block until a postgres instance accepts connections, with bounded retries.
116
+ * Used before running migrations to avoid ECONNREFUSED on freshly-provisioned
117
+ * containers.
118
+ */
119
+ private waitForPostgres;
111
120
  /**
112
121
  * Resolve stacks from config + user stacks.
113
122
  * User-created stacks (from omnitron.stacks.json) are merged with config stacks.
@@ -1 +1 @@
1
- {"version":3,"file":"project.service.d.ts","sourceRoot":"","sources":["../../src/services/project.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project.service.d.ts","sourceRoot":"","sources":["../../src/services/project.service.ts"],"names":[],"mappings":"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"}
@@ -79,6 +79,28 @@ export class ProjectService extends EventEmitter {
79
79
  this.emit('project:added', name, projectPath);
80
80
  return this.toProjectInfo(project);
81
81
  }
82
+ updateProject(name, data) {
83
+ const project = this.registry.get(name);
84
+ if (!project)
85
+ throw new Error(`Project '${name}' not found`);
86
+ if (data.path) {
87
+ // Invalidate cached config so next access reloads from new path
88
+ this.configRegistry.delete(name);
89
+ const updated = this.registry.updatePath(name, data.path);
90
+ // Registry may have renamed the project (basename of new path)
91
+ if (updated.name !== name) {
92
+ this.configRegistry.delete(updated.name);
93
+ this.logger.info({ oldName: name, newName: updated.name, path: data.path }, 'Project renamed and path updated');
94
+ this.emit('project:renamed', name, updated.name);
95
+ }
96
+ else {
97
+ this.logger.info({ project: name, path: data.path }, 'Project path updated');
98
+ }
99
+ this.emit('project:updated', updated.name, data);
100
+ return this.toProjectInfo(updated);
101
+ }
102
+ return this.toProjectInfo(project);
103
+ }
82
104
  removeProject(name) {
83
105
  // Stop all running stacks for this project first
84
106
  const runningStacks = this.getRunningStacks(name);
@@ -720,7 +742,35 @@ export class ProjectService extends EventEmitter {
720
742
  state.infraService = infraService;
721
743
  }
722
744
  catch (err) {
723
- this.logger.error({ project: projectName, stack: stackName, error: err.message }, 'Failed to provision stack infrastructure — apps may fail to start');
745
+ const reason = err.message;
746
+ this.logger.error({ project: projectName, stack: stackName, error: reason }, 'Failed to provision stack infrastructure');
747
+ // Fail-fast by default: apps almost always depend on the
748
+ // stack-provisioned infrastructure (postgres, redis, …) and starting
749
+ // them on top of broken infra produces cascading misleading errors
750
+ // ("Redis client connection timed out", "Container not found", …).
751
+ // Bail out with a clear, structured error so the operator sees the
752
+ // real cause first.
753
+ //
754
+ // Edge case: stacks that intentionally talk to *external* infra and
755
+ // declare nothing in their `infrastructure` section never reach this
756
+ // branch (`effectiveInfra` is falsy). For deliberate degraded-mode
757
+ // operation the stack settings can opt in via
758
+ // `settings.allowDegradedInfra: true` (the field is namespaced under
759
+ // settings to remain forward-compatible with stack schema).
760
+ const allowDegraded = stackConfig.settings?.['allowDegradedInfra'] === true;
761
+ if (!allowDegraded) {
762
+ const cleanMsg = `Stack '${projectName}/${stackName}' infrastructure provisioning failed:\n` +
763
+ ` ${reason}\n\n` +
764
+ `Apps were not started. Fix the underlying infrastructure issue (Docker socket, ` +
765
+ `image pull, port conflict, …) and rerun 'omnitron stack start ${projectName} ${stackName}'.\n` +
766
+ `\nIf you intentionally run apps against external infrastructure, set ` +
767
+ `'settings.allowDegradedInfra: true' in your stack config.`;
768
+ const throwable = new Error(cleanMsg);
769
+ throwable.code = 'INFRA_PROVISIONING_FAILED';
770
+ throwable.cause = err;
771
+ throw throwable;
772
+ }
773
+ this.logger.warn({ project: projectName, stack: stackName }, 'allowDegradedInfra=true — proceeding with app start despite infra failure');
724
774
  }
725
775
  }
726
776
  // 2b. Run database migrations for apps that have migrate: true
@@ -903,6 +953,13 @@ export class ProjectService extends EventEmitter {
903
953
  const port = pgConfig.port ?? 5432;
904
954
  const user = pgConfig.user ?? 'postgres';
905
955
  const password = typeof pgConfig.password === 'string' ? pgConfig.password : 'postgres';
956
+ // Wait for postgres to actually accept connections before running ANY migrations.
957
+ // Containers can be reported "running" by Docker before pg_isready would
958
+ // pass, especially right after a fresh provision. Without this we hit
959
+ // ECONNREFUSED on first migration and fail-fast bubbles into the user's
960
+ // face. The probe is cheap (a short TCP connect + readiness query) and
961
+ // bounded.
962
+ await this.waitForPostgres('localhost', port, user, password, 60_000);
906
963
  for (const [dbName, dbConfig] of Object.entries(pgConfig.databases)) {
907
964
  // Only run if migrate flag is set AND a matching app exists
908
965
  if (!dbConfig || typeof dbConfig !== 'object' || !dbConfig.migrate)
@@ -918,30 +975,100 @@ export class ProjectService extends EventEmitter {
918
975
  continue;
919
976
  }
920
977
  this.logger.info({ project: projectName, stack: stackName, database: dbName }, 'Running database migrations');
921
- try {
922
- const { execFileSync } = await import('node:child_process');
923
- execFileSync(process.execPath, ['--import', 'tsx/esm', migrateScript], {
924
- cwd: path.join(projectPath, 'apps', dbName),
925
- env: {
926
- ...process.env,
927
- DATABASE_URL: `postgresql://${user}:${password}@localhost:${port}/${dbName}`,
928
- // App-specific env vars (various naming conventions)
929
- [`${dbName.toUpperCase()}__DATABASE__HOST`]: 'localhost',
930
- [`${dbName.toUpperCase()}__DATABASE__PORT`]: String(port),
931
- [`${dbName.toUpperCase()}__DATABASE__DATABASE`]: dbName,
932
- [`${dbName.toUpperCase()}__DATABASE__USER`]: user,
933
- [`${dbName.toUpperCase()}__DATABASE__PASSWORD`]: password,
934
- },
935
- timeout: 60_000,
936
- stdio: ['ignore', 'pipe', 'pipe'],
978
+ // Retry policy: up to 5 attempts with exponential backoff (1s, 2s, 4s, 8s, 16s).
979
+ // Migration tools are typically idempotent, so retrying after a transient
980
+ // ECONNREFUSED / role-creation race is safe.
981
+ const maxAttempts = 5;
982
+ let attempt = 0;
983
+ let lastErr = null;
984
+ while (attempt < maxAttempts) {
985
+ attempt++;
986
+ try {
987
+ const { execFileSync } = await import('node:child_process');
988
+ execFileSync(process.execPath, ['--import', 'tsx/esm', migrateScript], {
989
+ cwd: path.join(projectPath, 'apps', dbName),
990
+ env: {
991
+ ...process.env,
992
+ DATABASE_URL: `postgresql://${user}:${password}@localhost:${port}/${dbName}`,
993
+ // App-specific env vars (various naming conventions)
994
+ [`${dbName.toUpperCase()}__DATABASE__HOST`]: 'localhost',
995
+ [`${dbName.toUpperCase()}__DATABASE__PORT`]: String(port),
996
+ [`${dbName.toUpperCase()}__DATABASE__DATABASE`]: dbName,
997
+ [`${dbName.toUpperCase()}__DATABASE__USER`]: user,
998
+ [`${dbName.toUpperCase()}__DATABASE__PASSWORD`]: password,
999
+ },
1000
+ timeout: 60_000,
1001
+ stdio: ['ignore', 'pipe', 'pipe'],
1002
+ });
1003
+ this.logger.info({ database: dbName, attempts: attempt }, 'Migrations applied');
1004
+ lastErr = null;
1005
+ break;
1006
+ }
1007
+ catch (err) {
1008
+ lastErr = err;
1009
+ const stderr = err.stderr?.toString?.()?.trim?.() ?? '';
1010
+ // Only retry on transient connection errors. Schema / SQL errors
1011
+ // are deterministic and won't go away by trying again.
1012
+ const transient = /ECONNREFUSED|ECONNRESET|ENOTCONN|terminat(ing|ed)|server closing|kysely.*Connection/i.test(stderr) ||
1013
+ /ECONNREFUSED|ECONNRESET/i.test(err.message ?? '');
1014
+ if (!transient || attempt >= maxAttempts) {
1015
+ this.logger.error({ database: dbName, attempt, error: err.message, stderr }, 'Migration failed — app may fail to start');
1016
+ break;
1017
+ }
1018
+ const delayMs = Math.min(1000 * 2 ** (attempt - 1), 16_000);
1019
+ this.logger.warn({ database: dbName, attempt, nextRetryInMs: delayMs, error: err.message }, 'Migration transient failure — retrying');
1020
+ await new Promise((r) => setTimeout(r, delayMs));
1021
+ }
1022
+ }
1023
+ if (lastErr) {
1024
+ // Already logged above; intentionally do NOT throw here so other
1025
+ // databases can still attempt their migrations.
1026
+ }
1027
+ }
1028
+ }
1029
+ /**
1030
+ * Block until a postgres instance accepts connections, with bounded retries.
1031
+ * Used before running migrations to avoid ECONNREFUSED on freshly-provisioned
1032
+ * containers.
1033
+ */
1034
+ async waitForPostgres(host, port, user, password, timeoutMs) {
1035
+ const deadline = Date.now() + timeoutMs;
1036
+ const { Client } = await import('pg').catch(() => ({ Client: null }));
1037
+ if (!Client) {
1038
+ // pg not available in this build — fall back to a TCP connect probe.
1039
+ const net = await import('node:net');
1040
+ while (Date.now() < deadline) {
1041
+ const ok = await new Promise((resolve) => {
1042
+ const sock = net.createConnection({ host, port }, () => {
1043
+ sock.end();
1044
+ resolve(true);
1045
+ });
1046
+ sock.once('error', () => resolve(false));
1047
+ sock.setTimeout(2_000, () => {
1048
+ sock.destroy();
1049
+ resolve(false);
1050
+ });
937
1051
  });
938
- this.logger.info({ database: dbName }, 'Migrations applied');
1052
+ if (ok)
1053
+ return;
1054
+ await new Promise((r) => setTimeout(r, 500));
939
1055
  }
940
- catch (err) {
941
- const stderr = err.stderr?.toString?.()?.trim?.() ?? '';
942
- this.logger.error({ database: dbName, error: err.message, stderr }, 'Migration failed — app may fail to start');
1056
+ throw new Error(`Postgres at ${host}:${port} not reachable after ${timeoutMs}ms`);
1057
+ }
1058
+ while (Date.now() < deadline) {
1059
+ const client = new Client({ host, port, user, password, database: 'postgres', connectionTimeoutMillis: 2_000 });
1060
+ try {
1061
+ await client.connect();
1062
+ await client.query('SELECT 1');
1063
+ await client.end().catch(() => { });
1064
+ return;
1065
+ }
1066
+ catch {
1067
+ await client.end().catch(() => { });
1068
+ await new Promise((r) => setTimeout(r, 500));
943
1069
  }
944
1070
  }
1071
+ throw new Error(`Postgres at ${host}:${port} did not become ready within ${timeoutMs}ms`);
945
1072
  }
946
1073
  /**
947
1074
  * Resolve stacks from config + user stacks.