@synth-deploy/server 1.0.6 → 1.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 (97) hide show
  1. package/dist/agent/envoy-client.d.ts +65 -15
  2. package/dist/agent/envoy-client.d.ts.map +1 -1
  3. package/dist/agent/envoy-client.js +58 -8
  4. package/dist/agent/envoy-client.js.map +1 -1
  5. package/dist/agent/stale-deployment-detector.js +1 -1
  6. package/dist/agent/stale-deployment-detector.js.map +1 -1
  7. package/dist/agent/synth-agent.d.ts +7 -5
  8. package/dist/agent/synth-agent.d.ts.map +1 -1
  9. package/dist/agent/synth-agent.js +59 -50
  10. package/dist/agent/synth-agent.js.map +1 -1
  11. package/dist/alert-webhooks/alert-parsers.d.ts +21 -0
  12. package/dist/alert-webhooks/alert-parsers.d.ts.map +1 -0
  13. package/dist/alert-webhooks/alert-parsers.js +184 -0
  14. package/dist/alert-webhooks/alert-parsers.js.map +1 -0
  15. package/dist/api/agent.d.ts +0 -6
  16. package/dist/api/agent.d.ts.map +1 -1
  17. package/dist/api/agent.js +6 -459
  18. package/dist/api/agent.js.map +1 -1
  19. package/dist/api/alert-webhooks.d.ts +13 -0
  20. package/dist/api/alert-webhooks.d.ts.map +1 -0
  21. package/dist/api/alert-webhooks.js +279 -0
  22. package/dist/api/alert-webhooks.js.map +1 -0
  23. package/dist/api/envoy-reports.js +2 -2
  24. package/dist/api/envoy-reports.js.map +1 -1
  25. package/dist/api/envoys.js +1 -1
  26. package/dist/api/envoys.js.map +1 -1
  27. package/dist/api/fleet.d.ts.map +1 -1
  28. package/dist/api/fleet.js +14 -15
  29. package/dist/api/fleet.js.map +1 -1
  30. package/dist/api/graph.js +3 -3
  31. package/dist/api/graph.js.map +1 -1
  32. package/dist/api/operations.d.ts +7 -0
  33. package/dist/api/operations.d.ts.map +1 -0
  34. package/dist/api/operations.js +1900 -0
  35. package/dist/api/operations.js.map +1 -0
  36. package/dist/api/partitions.js +1 -1
  37. package/dist/api/partitions.js.map +1 -1
  38. package/dist/api/schemas.d.ts +434 -133
  39. package/dist/api/schemas.d.ts.map +1 -1
  40. package/dist/api/schemas.js +53 -25
  41. package/dist/api/schemas.js.map +1 -1
  42. package/dist/api/system.d.ts.map +1 -1
  43. package/dist/api/system.js +22 -21
  44. package/dist/api/system.js.map +1 -1
  45. package/dist/artifact-analyzer.js +2 -2
  46. package/dist/artifact-analyzer.js.map +1 -1
  47. package/dist/fleet/fleet-executor.js +3 -3
  48. package/dist/fleet/fleet-executor.js.map +1 -1
  49. package/dist/graph/graph-executor.d.ts.map +1 -1
  50. package/dist/graph/graph-executor.js +18 -4
  51. package/dist/graph/graph-executor.js.map +1 -1
  52. package/dist/index.js +89 -61
  53. package/dist/index.js.map +1 -1
  54. package/dist/mcp/resources.js +3 -3
  55. package/dist/mcp/resources.js.map +1 -1
  56. package/dist/mcp/tools.d.ts.map +1 -1
  57. package/dist/mcp/tools.js +2 -9
  58. package/dist/mcp/tools.js.map +1 -1
  59. package/dist/middleware/auth.js +1 -1
  60. package/dist/middleware/auth.js.map +1 -1
  61. package/package.json +1 -1
  62. package/src/agent/envoy-client.ts +111 -19
  63. package/src/agent/stale-deployment-detector.ts +1 -1
  64. package/src/agent/synth-agent.ts +76 -56
  65. package/src/alert-webhooks/alert-parsers.ts +291 -0
  66. package/src/api/agent.ts +9 -528
  67. package/src/api/alert-webhooks.ts +354 -0
  68. package/src/api/envoy-reports.ts +2 -2
  69. package/src/api/envoys.ts +1 -1
  70. package/src/api/fleet.ts +14 -15
  71. package/src/api/graph.ts +3 -3
  72. package/src/api/operations.ts +2260 -0
  73. package/src/api/partitions.ts +1 -1
  74. package/src/api/schemas.ts +59 -27
  75. package/src/api/system.ts +23 -21
  76. package/src/artifact-analyzer.ts +2 -2
  77. package/src/fleet/fleet-executor.ts +3 -3
  78. package/src/graph/graph-executor.ts +18 -4
  79. package/src/index.ts +91 -61
  80. package/src/mcp/resources.ts +3 -3
  81. package/src/mcp/tools.ts +5 -9
  82. package/src/middleware/auth.ts +1 -1
  83. package/tests/agent-mode.test.ts +5 -376
  84. package/tests/api-handlers.test.ts +27 -27
  85. package/tests/composite-operations.test.ts +557 -0
  86. package/tests/decision-diary.test.ts +62 -63
  87. package/tests/diary-reader.test.ts +14 -18
  88. package/tests/mcp-tools.test.ts +1 -1
  89. package/tests/orchestration.test.ts +34 -30
  90. package/tests/partition-isolation.test.ts +4 -9
  91. package/tests/rbac-enforcement.test.ts +8 -8
  92. package/tests/ui-journey.test.ts +9 -9
  93. package/dist/api/deployments.d.ts +0 -11
  94. package/dist/api/deployments.d.ts.map +0 -1
  95. package/dist/api/deployments.js +0 -1098
  96. package/dist/api/deployments.js.map +0 -1
  97. package/src/api/deployments.ts +0 -1347
@@ -1 +1 @@
1
- {"version":3,"file":"graph-executor.d.ts","sourceRoot":"","sources":["../../src/graph/graph-executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAqB,MAAM,0BAA0B,CAAC;AAM/E,MAAM,WAAW,kBAAkB;IACjC,IAAI,EACA,cAAc,GACd,gBAAgB,GAChB,aAAa,GACb,cAAc,GACd,iBAAiB,GACjB,cAAc,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE;QACR,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD,wBAAgB,eAAe,CAC7B,KAAK,EAAE,mBAAmB,EAAE,EAC5B,KAAK,EAAE,mBAAmB,EAAE,GAC3B,MAAM,EAAE,CAqCV;AAMD,wBAAgB,aAAa,CAC3B,KAAK,EAAE,mBAAmB,EAAE,EAC5B,KAAK,EAAE,mBAAmB,EAAE,GAC3B,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAyBrB;AAkCD,qBAAa,aAAa;IAEtB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,YAAY;gBADZ,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,WAAW;IAGvE;;;;;OAKG;IACI,OAAO,CACZ,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,EAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1C,cAAc,CAAC,kBAAkB,CAAC;IAuOrC;;;OAGG;IACI,QAAQ,CACb,KAAK,EAAE,eAAe,EACtB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,GACzC,cAAc,CAAC,kBAAkB,CAAC;CA8CtC"}
1
+ {"version":3,"file":"graph-executor.d.ts","sourceRoot":"","sources":["../../src/graph/graph-executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAqB,MAAM,0BAA0B,CAAC;AAM/E,MAAM,WAAW,kBAAkB;IACjC,IAAI,EACA,cAAc,GACd,gBAAgB,GAChB,aAAa,GACb,cAAc,GACd,iBAAiB,GACjB,cAAc,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE;QACR,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD,wBAAgB,eAAe,CAC7B,KAAK,EAAE,mBAAmB,EAAE,EAC5B,KAAK,EAAE,mBAAmB,EAAE,GAC3B,MAAM,EAAE,CAqCV;AAMD,wBAAgB,aAAa,CAC3B,KAAK,EAAE,mBAAmB,EAAE,EAC5B,KAAK,EAAE,mBAAmB,EAAE,GAC3B,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAyBrB;AAkCD,qBAAa,aAAa;IAEtB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,YAAY;gBADZ,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,WAAW;IAGvE;;;;;OAKG;IACI,OAAO,CACZ,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,EAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1C,cAAc,CAAC,kBAAkB,CAAC;IA8OrC;;;OAGG;IACI,QAAQ,CACb,KAAK,EAAE,eAAe,EACtB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,GACzC,cAAc,CAAC,kBAAkB,CAAC;CAqDtC"}
@@ -166,10 +166,17 @@ export class GraphExecutor {
166
166
  }
167
167
  : plan;
168
168
  const result = await client.executeApprovedPlan({
169
- deploymentId: node.deploymentId ?? node.id,
169
+ operationId: node.deploymentId ?? node.id,
170
170
  plan: enrichedPlan,
171
171
  rollbackPlan: {
172
- steps: [],
172
+ scriptedPlan: {
173
+ platform: "bash",
174
+ executionScript: "# No rollback plan provided",
175
+ dryRunScript: null,
176
+ rollbackScript: null,
177
+ reasoning: "No rollback plan provided",
178
+ stepSummary: [],
179
+ },
173
180
  reasoning: "No rollback plan provided",
174
181
  },
175
182
  artifactType: "graph-node",
@@ -317,10 +324,17 @@ export class GraphExecutor {
317
324
  const client = this.createClient(entry.url, 60_000);
318
325
  try {
319
326
  await client.executeApprovedPlan({
320
- deploymentId: node.deploymentId ?? nodeId,
327
+ operationId: node.deploymentId ?? nodeId,
321
328
  plan,
322
329
  rollbackPlan: {
323
- steps: [],
330
+ scriptedPlan: {
331
+ platform: "bash",
332
+ executionScript: "# Rollback of rollback not supported",
333
+ dryRunScript: null,
334
+ rollbackScript: null,
335
+ reasoning: "Rollback of rollback not supported",
336
+ stepSummary: [],
337
+ },
324
338
  reasoning: "Rollback of rollback not supported",
325
339
  },
326
340
  artifactType: "graph-node-rollback",
@@ -1 +1 @@
1
- {"version":3,"file":"graph-executor.js","sourceRoot":"","sources":["../../src/graph/graph-executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graph-executor.js","sourceRoot":"","sources":["../../src/graph/graph-executor.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -9,12 +9,12 @@ import fastifyStatic from "@fastify/static";
9
9
  import fastifyFormBody from "@fastify/formbody";
10
10
  import fastifyMultipart from "@fastify/multipart";
11
11
  import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
12
- import { PersistentDecisionDebrief, openEntityDatabase, PersistentPartitionStore, PersistentEnvironmentStore, PersistentSettingsStore, PersistentDeploymentStore, PersistentArtifactStore, PersistentSecurityBoundaryStore, PersistentTelemetryStore, PersistentUserStore, PersistentRoleStore, PersistentUserRoleStore, PersistentSessionStore, PersistentIdpProviderStore, PersistentRoleMappingStore, PersistentApiKeyStore, PersistentEnvoyRegistryStore, PersistentRegistryPollerVersionStore, LlmClient, buildLlmConfigFromSettings, initEdition, EditionError } from "@synth-deploy/core";
12
+ import { PersistentDecisionDebrief, openEntityDatabase, PersistentPartitionStore, PersistentEnvironmentStore, PersistentSettingsStore, PersistentDeploymentStore, PersistentArtifactStore, PersistentSecurityBoundaryStore, PersistentTelemetryStore, PersistentUserStore, PersistentRoleStore, PersistentUserRoleStore, PersistentSessionStore, PersistentIdpProviderStore, PersistentRoleMappingStore, PersistentApiKeyStore, PersistentEnvoyRegistryStore, PersistentRegistryPollerVersionStore, PersistentAlertWebhookStore, LlmClient, buildLlmConfigFromSettings, initEdition, EditionError } from "@synth-deploy/core";
13
13
  import { SynthAgent } from "./agent/synth-agent.js";
14
14
  import { EnvoyHealthChecker } from "./agent/health-checker.js";
15
15
  import { McpClientManager } from "./agent/mcp-client-manager.js";
16
16
  import { createMcpServer } from "./mcp/server.js";
17
- import { registerDeploymentRoutes } from "./api/deployments.js";
17
+ import { registerOperationRoutes } from "./api/operations.js";
18
18
  import { registerHealthRoutes } from "./api/health.js";
19
19
  import { registerEnvoyReportRoutes } from "./api/envoy-reports.js";
20
20
  import { registerArtifactRoutes } from "./api/artifacts.js";
@@ -40,6 +40,7 @@ import { registerFleetRoutes } from "./api/fleet.js";
40
40
  import { FleetDeploymentStore, FleetExecutor } from "./fleet/index.js";
41
41
  import { IntakeChannelStore, IntakeEventStore, IntakeProcessor, RegistryPoller } from "./intake/index.js";
42
42
  import { registerIntakeRoutes } from "./api/intake.js";
43
+ import { registerAlertWebhookRoutes } from "./api/alert-webhooks.js";
43
44
  import { ArtifactAnalyzer } from "./artifact-analyzer.js";
44
45
  import { DeploymentGraphStore, GraphInferenceEngine } from "./graph/index.js";
45
46
  import { registerGraphRoutes } from "./api/graph.js";
@@ -262,17 +263,27 @@ if (process.env.SYNTH_SEED_DEMO !== 'false' && partitions.list().length === 0) {
262
263
  artifactStore.addVersion({ artifactId: workerArtifact.id, version: "3.0.0", source: "github-releases", metadata: { commit: "pqr1234", binary: "worker-linux-amd64", majorUpgrade: "true" } });
263
264
  // --- Deployments (mix of statuses and ages) ---
264
265
  const dep1 = {
265
- id: crypto.randomUUID(), artifactId: webAppArtifact.id, partitionId: acmePartition.id,
266
+ id: crypto.randomUUID(), input: { type: "deploy", artifactId: webAppArtifact.id }, partitionId: acmePartition.id,
266
267
  environmentId: prodEnv.id, version: "2.3.0", status: "succeeded",
267
268
  variables: { ...acmePartition.variables, ...prodEnv.variables },
268
269
  plan: {
269
- steps: [
270
- { description: "Stop service", action: "systemctl stop web-app", target: "prd-web-01", reversible: true, rollbackAction: "systemctl start web-app", execPreview: "systemctl stop web-app" },
271
- { description: "Backup current binaries", action: "cp -r /opt/web-app/ /opt/web-app.bak/", target: "prd-web-01", reversible: false, execPreview: "cp -r /opt/web-app/ /opt/web-app.bak/" },
272
- { description: "Deploy new artifact", action: "tar -xzf web-app-2.3.0.tar.gz -C /opt/web-app/", target: "prd-web-01", reversible: true, rollbackAction: "cp -r /opt/web-app.bak/ /opt/web-app/", execPreview: "tar -xzf /opt/releases/web-app-2.3.0.tar.gz -C /opt/web-app/" },
273
- { description: "Apply environment config (1 variable changed: API_ENDPOINT)", action: "envsubst < config.template > /opt/web-app/.env", target: "prd-web-01", reversible: true, rollbackAction: "cp /opt/web-app.bak/.env /opt/web-app/.env", execPreview: "envsubst < /opt/web-app/config.template > /opt/web-app/.env" },
274
- { description: "Start service and verify health endpoint → 200 OK", action: "systemctl start web-app && curl -f http://localhost:8080/health", target: "prd-web-01", reversible: true, rollbackAction: "systemctl stop web-app", execPreview: "systemctl start web-app" },
275
- ],
270
+ scriptedPlan: {
271
+ platform: "bash",
272
+ executionScript: "#!/usr/bin/env bash\nset -euo pipefail\nsystemctl stop web-app\ncp -r /opt/web-app/ /opt/web-app.bak/\ntar -xzf /opt/releases/web-app-2.3.0.tar.gz -C /opt/web-app/\nenvsubst < /opt/web-app/config.template > /opt/web-app/.env\nsystemctl start web-app\ncurl -f --retry 3 --retry-delay 5 http://localhost:8080/health",
273
+ dryRunScript: null,
274
+ rollbackScript: "#!/usr/bin/env bash\nset -euo pipefail\nsystemctl stop web-app\ncp -r /opt/web-app.bak/ /opt/web-app/\ncp /opt/web-app.bak/.env /opt/web-app/.env\nsystemctl start web-app",
275
+ reasoning: "Standard 5-step deploy: stop, backup, extract, config, start. One config change: API_ENDPOINT updated to v2 endpoint validated in staging for 4h.",
276
+ stepSummary: [
277
+ { description: "Stop service", reversible: true },
278
+ { description: "Backup current binaries", reversible: false },
279
+ { description: "Deploy new artifact", reversible: true },
280
+ { description: "Apply environment config (1 variable changed: API_ENDPOINT)", reversible: true },
281
+ { description: "Start service and verify health endpoint → 200 OK", reversible: true },
282
+ ],
283
+ diffFromCurrent: [
284
+ { key: "API_ENDPOINT", from: "https://api.acme.corp/v1", to: "https://api.acme.corp/v2" },
285
+ ],
286
+ },
276
287
  reasoning: "Standard 5-step deploy: stop, backup, extract, config, start. One config change: API_ENDPOINT updated to v2 endpoint validated in staging for 4h.",
277
288
  diffFromCurrent: [
278
289
  { key: "API_ENDPOINT", from: "https://api.acme.corp/v1", to: "https://api.acme.corp/v2" },
@@ -282,21 +293,21 @@ if (process.env.SYNTH_SEED_DEMO !== 'false' && partitions.list().length === 0) {
282
293
  createdAt: hoursAgo(72), completedAt: hoursAgo(71.5), failureReason: undefined,
283
294
  };
284
295
  const dep2 = {
285
- id: crypto.randomUUID(), artifactId: webAppArtifact.id, partitionId: acmePartition.id,
296
+ id: crypto.randomUUID(), input: { type: "deploy", artifactId: webAppArtifact.id }, partitionId: acmePartition.id,
286
297
  environmentId: prodEnv.id, version: "2.4.0", status: "succeeded",
287
298
  variables: { ...acmePartition.variables, ...prodEnv.variables },
288
299
  debriefEntryIds: [],
289
300
  createdAt: hoursAgo(48), completedAt: hoursAgo(47.8), failureReason: undefined,
290
301
  };
291
302
  const dep3 = {
292
- id: crypto.randomUUID(), artifactId: webAppArtifact.id, partitionId: acmePartition.id,
303
+ id: crypto.randomUUID(), input: { type: "deploy", artifactId: webAppArtifact.id }, partitionId: acmePartition.id,
293
304
  environmentId: prodEnv.id, version: "2.4.1", status: "succeeded",
294
305
  variables: { ...acmePartition.variables, ...prodEnv.variables },
295
306
  debriefEntryIds: [],
296
307
  createdAt: hoursAgo(24), completedAt: hoursAgo(23.7), failureReason: undefined,
297
308
  };
298
309
  const dep4 = {
299
- id: crypto.randomUUID(), artifactId: apiArtifact.id, partitionId: acmePartition.id,
310
+ id: crypto.randomUUID(), input: { type: "deploy", artifactId: apiArtifact.id }, partitionId: acmePartition.id,
300
311
  environmentId: prodEnv.id, version: "1.11.0", status: "failed",
301
312
  variables: { ...acmePartition.variables, ...prodEnv.variables },
302
313
  debriefEntryIds: [],
@@ -304,21 +315,21 @@ if (process.env.SYNTH_SEED_DEMO !== 'false' && partitions.list().length === 0) {
304
315
  failureReason: "Health check failed after 3 retries: connection refused on port 8080",
305
316
  };
306
317
  const dep5 = {
307
- id: crypto.randomUUID(), artifactId: apiArtifact.id, partitionId: acmePartition.id,
318
+ id: crypto.randomUUID(), input: { type: "deploy", artifactId: apiArtifact.id }, partitionId: acmePartition.id,
308
319
  environmentId: prodEnv.id, version: "1.12.0", status: "succeeded",
309
320
  variables: { ...acmePartition.variables, ...prodEnv.variables },
310
321
  debriefEntryIds: [],
311
322
  createdAt: hoursAgo(12), completedAt: hoursAgo(11.8), failureReason: undefined,
312
323
  };
313
324
  const dep6 = {
314
- id: crypto.randomUUID(), artifactId: webAppArtifact.id, partitionId: globexPartition.id,
325
+ id: crypto.randomUUID(), input: { type: "deploy", artifactId: webAppArtifact.id }, partitionId: globexPartition.id,
315
326
  environmentId: stagingEnv.id, version: "2.5.0-rc.1", status: "succeeded",
316
327
  variables: { ...globexPartition.variables, ...stagingEnv.variables },
317
328
  debriefEntryIds: [],
318
329
  createdAt: hoursAgo(6), completedAt: hoursAgo(5.8), failureReason: undefined,
319
330
  };
320
331
  const dep7 = {
321
- id: crypto.randomUUID(), artifactId: workerArtifact.id, partitionId: initechPartition.id,
332
+ id: crypto.randomUUID(), input: { type: "deploy", artifactId: workerArtifact.id }, partitionId: initechPartition.id,
322
333
  environmentId: prodEnv.id, version: "2.9.0", status: "failed",
323
334
  variables: { ...initechPartition.variables, ...prodEnv.variables },
324
335
  debriefEntryIds: [],
@@ -326,48 +337,62 @@ if (process.env.SYNTH_SEED_DEMO !== 'false' && partitions.list().length === 0) {
326
337
  failureReason: "Queue depth exceeded threshold (342 > 100) during verification",
327
338
  };
328
339
  const dep8 = {
329
- id: crypto.randomUUID(), artifactId: workerArtifact.id, partitionId: initechPartition.id,
340
+ id: crypto.randomUUID(), input: { type: "deploy", artifactId: workerArtifact.id }, partitionId: initechPartition.id,
330
341
  environmentId: prodEnv.id, version: "3.0.0", status: "succeeded",
331
342
  variables: { ...initechPartition.variables, ...prodEnv.variables },
332
343
  debriefEntryIds: [],
333
344
  createdAt: hoursAgo(3), completedAt: hoursAgo(2.7), failureReason: undefined,
334
345
  };
335
346
  const dep9 = {
336
- id: crypto.randomUUID(), artifactId: apiArtifact.id, partitionId: globexPartition.id,
347
+ id: crypto.randomUUID(), input: { type: "deploy", artifactId: apiArtifact.id }, partitionId: globexPartition.id,
337
348
  environmentId: stagingEnv.id, version: "1.13.0-beta.2", status: "running",
338
349
  variables: { ...globexPartition.variables, ...stagingEnv.variables },
339
350
  plan: {
340
- steps: [
341
- { description: "Pull latest image from registry", action: "docker pull", target: "registry.internal/api:1.13.0-beta.2", reversible: true, rollbackAction: "docker pull registry.internal/api:1.12.0", execPreview: "docker pull registry.internal/api:1.13.0-beta.2" },
342
- { description: "Stop running container", action: "docker stop", target: "api-staging", reversible: true, rollbackAction: "docker start api-staging", execPreview: "docker stop api-staging" },
343
- { description: "Start new container with updated image", action: "docker run", target: "registry.internal/api:1.13.0-beta.2", reversible: true, rollbackAction: "docker stop api-staging && docker run ... api:1.12.0", execPreview: "docker run -d --name api-staging --env-file /opt/api/.env -p 8080:8080 registry.internal/api:1.13.0-beta.2" },
344
- { description: "Verify health endpoint returns 200", action: "verify health", target: "http://localhost:8080/health", reversible: false, execPreview: "curl -f --retry 3 --retry-delay 5 http://localhost:8080/health" },
345
- ],
351
+ scriptedPlan: {
352
+ platform: "bash",
353
+ executionScript: "#!/usr/bin/env bash\nset -euo pipefail\ndocker pull registry.internal/api:1.13.0-beta.2\ndocker stop api-staging\ndocker run -d --name api-staging --env-file /opt/api/.env -p 8080:8080 registry.internal/api:1.13.0-beta.2\ncurl -f --retry 3 --retry-delay 5 http://localhost:8080/health",
354
+ dryRunScript: null,
355
+ rollbackScript: "#!/usr/bin/env bash\nset -euo pipefail\ndocker stop api-staging\ndocker pull registry.internal/api:1.12.0\ndocker start api-staging",
356
+ reasoning: "Container swap: pull new image, stop old container, start new one, verify health. Staging environment — rollback is fast via image tag swap.",
357
+ stepSummary: [
358
+ { description: "Pull latest image from registry", reversible: true },
359
+ { description: "Stop running container", reversible: true },
360
+ { description: "Start new container with updated image", reversible: true },
361
+ { description: "Verify health endpoint returns 200", reversible: false },
362
+ ],
363
+ },
346
364
  reasoning: "Container swap: pull new image, stop old container, start new one, verify health. Staging environment — rollback is fast via image tag swap.",
347
365
  },
348
366
  debriefEntryIds: [],
349
367
  createdAt: hoursAgo(0.5),
350
368
  };
351
369
  const dep11 = {
352
- id: crypto.randomUUID(), artifactId: workerArtifact.id, partitionId: globexPartition.id,
370
+ id: crypto.randomUUID(), input: { type: "deploy", artifactId: workerArtifact.id }, partitionId: globexPartition.id,
353
371
  environmentId: prodEnv.id, version: "3.1.0", status: "awaiting_approval",
354
372
  variables: { ...globexPartition.variables, ...prodEnv.variables },
355
373
  plan: {
356
- steps: [
357
- { description: "Drain queue — wait for in-flight jobs to complete", action: "run command", target: "worker-drain", reversible: false, execPreview: "npm run worker:drain --timeout=120" },
358
- { description: "Stop worker processes on all nodes", action: "systemctl stop", target: "synth-worker", reversible: true, rollbackAction: "systemctl start synth-worker", execPreview: "systemctl stop synth-worker" },
359
- { description: "Deploy new worker binary", action: "copy file", target: "/opt/worker/", reversible: true, rollbackAction: "restore /opt/worker/ from backup", execPreview: "cp -r /opt/releases/worker-3.1.0/* /opt/worker/" },
360
- { description: "Update queue concurrency config (WORKER_CONCURRENCY: 4 8)", action: "write config", target: "/opt/worker/.env", reversible: true, rollbackAction: "restore previous .env", execPreview: "envsubst < /opt/worker/config.template > /opt/worker/.env" },
361
- { description: "Start worker and verify queue depth drops", action: "systemctl start", target: "synth-worker", reversible: true, rollbackAction: "systemctl stop synth-worker", execPreview: "systemctl start synth-worker" },
362
- { description: "Verify queue processing resumes within 30s", action: "verify health", target: "http://localhost:9090/metrics", reversible: false, execPreview: "curl -f --retry 6 --retry-delay 5 http://localhost:9090/metrics" },
363
- ],
374
+ scriptedPlan: {
375
+ platform: "bash",
376
+ executionScript: "#!/usr/bin/env bash\nset -euo pipefail\nnpm run worker:drain --timeout=120\nsystemctl stop synth-worker\ncp -r /opt/releases/worker-3.1.0/* /opt/worker/\nenvsubst < /opt/worker/config.template > /opt/worker/.env\nsystemctl start synth-worker\ncurl -f --retry 6 --retry-delay 5 http://localhost:9090/metrics",
377
+ dryRunScript: null,
378
+ rollbackScript: "#!/usr/bin/env bash\nset -euo pipefail\nsystemctl stop synth-worker\ncp -r /opt/worker.bak/* /opt/worker/\ncp /opt/worker.bak/.env /opt/worker/.env\nsystemctl start synth-worker",
379
+ reasoning: "Worker upgrade with concurrency increase. Drain first to avoid job loss, then replace binary and config atomically. Queue depth check confirms processing resumed.",
380
+ stepSummary: [
381
+ { description: "Drain queue — wait for in-flight jobs to complete", reversible: false },
382
+ { description: "Stop worker processes on all nodes", reversible: true },
383
+ { description: "Deploy new worker binary", reversible: true },
384
+ { description: "Update queue concurrency config (WORKER_CONCURRENCY: 4 → 8)", reversible: true },
385
+ { description: "Start worker and verify queue depth drops", reversible: true },
386
+ { description: "Verify queue processing resumes within 30s", reversible: false },
387
+ ],
388
+ },
364
389
  reasoning: "Worker upgrade with concurrency increase. Drain first to avoid job loss, then replace binary and config atomically. Queue depth check confirms processing resumed.",
365
390
  },
366
391
  debriefEntryIds: [],
367
392
  createdAt: hoursAgo(0.1),
368
393
  };
369
394
  const dep10 = {
370
- id: crypto.randomUUID(), artifactId: webAppArtifact.id, partitionId: initechPartition.id,
395
+ id: crypto.randomUUID(), input: { type: "deploy", artifactId: webAppArtifact.id }, partitionId: initechPartition.id,
371
396
  environmentId: prodEnv.id, version: "2.4.1", status: "rolled_back",
372
397
  variables: { ...initechPartition.variables, ...prodEnv.variables },
373
398
  debriefEntryIds: [],
@@ -393,164 +418,164 @@ if (process.env.SYNTH_SEED_DEMO !== 'false' && partitions.list().length === 0) {
393
418
  ]);
394
419
  // --- Debrief entries (rich decision diary) ---
395
420
  debrief.record({
396
- partitionId: null, deploymentId: null, agent: "server", decisionType: "system",
421
+ partitionId: null, operationId: null, agent: "server", decisionType: "system",
397
422
  decision: "Command initialized with demo data",
398
423
  reasoning: "Seeded 3 partitions, 3 environments, 3 artifacts, 10 deployments, and 2 envoy security boundary sets.",
399
424
  context: { partitions: 3, environments: 3, deployments: 10, artifacts: 3, securityBoundaries: 2 },
400
425
  });
401
426
  // dep1 — web-app 2.3.0 succeeded
402
427
  debrief.record({
403
- partitionId: acmePartition.id, deploymentId: dep1.id, agent: "server", decisionType: "pipeline-plan",
428
+ partitionId: acmePartition.id, operationId: dep1.id, agent: "server", decisionType: "pipeline-plan",
404
429
  decision: "Planned deployment pipeline for web-app v2.3.0 to Acme Corp production",
405
430
  reasoning: "Standard 3-step pipeline: install deps, run migrations, health check. No variable conflicts.",
406
431
  context: { version: "2.3.0", steps: 3 },
407
432
  });
408
433
  debrief.record({
409
- partitionId: acmePartition.id, deploymentId: dep1.id, agent: "server", decisionType: "configuration-resolved",
434
+ partitionId: acmePartition.id, operationId: dep1.id, agent: "server", decisionType: "configuration-resolved",
410
435
  decision: "Resolved 4 variables for Acme Corp production (partition + environment merged)",
411
436
  reasoning: "Merged partition variables (APP_ENV, DB_HOST, REGION) with environment variables (APP_ENV, LOG_LEVEL). APP_ENV conflict resolved: environment value takes precedence.",
412
437
  context: { resolvedCount: 4, conflicts: 1, policy: "environment-wins" },
413
438
  });
414
439
  debrief.record({
415
- partitionId: acmePartition.id, deploymentId: dep1.id, agent: "envoy", decisionType: "deployment-execution",
440
+ partitionId: acmePartition.id, operationId: dep1.id, agent: "envoy", decisionType: "deployment-execution",
416
441
  decision: "Executed deployment web-app v2.3.0 on Acme Corp production",
417
442
  reasoning: "All 3 steps completed. Total execution time: 28.4s.",
418
443
  context: { duration: 28400 },
419
444
  });
420
445
  debrief.record({
421
- partitionId: acmePartition.id, deploymentId: dep1.id, agent: "envoy", decisionType: "health-check",
446
+ partitionId: acmePartition.id, operationId: dep1.id, agent: "envoy", decisionType: "health-check",
422
447
  decision: "Health check passed on first attempt",
423
448
  reasoning: "GET /health returned 200 with body {\"status\":\"ok\"} in 45ms.",
424
449
  context: { attempts: 1, responseTime: 45 },
425
450
  });
426
451
  debrief.record({
427
- partitionId: acmePartition.id, deploymentId: dep1.id, agent: "server", decisionType: "deployment-completion",
452
+ partitionId: acmePartition.id, operationId: dep1.id, agent: "server", decisionType: "deployment-completion",
428
453
  decision: "Deployment web-app v2.3.0 completed successfully",
429
454
  reasoning: "All pipeline steps passed. Health check confirmed. Marked as succeeded.",
430
455
  context: { status: "succeeded" },
431
456
  });
432
457
  // dep4 — api-service 1.11.0 failed
433
458
  debrief.record({
434
- partitionId: acmePartition.id, deploymentId: dep4.id, agent: "server", decisionType: "pipeline-plan",
459
+ partitionId: acmePartition.id, operationId: dep4.id, agent: "server", decisionType: "pipeline-plan",
435
460
  decision: "Planned deployment pipeline for api-service v1.11.0 to Acme Corp production",
436
461
  reasoning: "2-step pipeline: pull image, verify endpoint.",
437
462
  context: { version: "1.11.0", steps: 2 },
438
463
  });
439
464
  debrief.record({
440
- partitionId: acmePartition.id, deploymentId: dep4.id, agent: "envoy", decisionType: "deployment-execution",
465
+ partitionId: acmePartition.id, operationId: dep4.id, agent: "envoy", decisionType: "deployment-execution",
441
466
  decision: "Image pull succeeded, starting verification",
442
467
  reasoning: "docker pull completed in 12.3s. Image sha256:a4f8e... verified.",
443
468
  context: { step: "Pull image", duration: 12300 },
444
469
  });
445
470
  debrief.record({
446
- partitionId: acmePartition.id, deploymentId: dep4.id, agent: "envoy", decisionType: "health-check",
471
+ partitionId: acmePartition.id, operationId: dep4.id, agent: "envoy", decisionType: "health-check",
447
472
  decision: "Health check failed after 3 retries",
448
473
  reasoning: "Connection refused on port 8080. Retry 1: refused (5s). Retry 2: refused (10s). Retry 3: refused (15s). Container logs: \"Error: EADDRINUSE :::8080\".",
449
474
  context: { attempts: 3, lastError: "ECONNREFUSED", containerLog: "EADDRINUSE" },
450
475
  });
451
476
  debrief.record({
452
- partitionId: acmePartition.id, deploymentId: dep4.id, agent: "envoy", decisionType: "diagnostic-investigation",
477
+ partitionId: acmePartition.id, operationId: dep4.id, agent: "envoy", decisionType: "diagnostic-investigation",
453
478
  decision: "Root cause: port 8080 bound by stale process from previous deployment",
454
479
  reasoning: "Found zombie process from api-service v1.10.0 holding port 8080. Previous deployment did not cleanly shut down.",
455
480
  context: { rootCause: "port-conflict", stalePid: 14823 },
456
481
  });
457
482
  debrief.record({
458
- partitionId: acmePartition.id, deploymentId: dep4.id, agent: "server", decisionType: "deployment-failure",
483
+ partitionId: acmePartition.id, operationId: dep4.id, agent: "server", decisionType: "deployment-failure",
459
484
  decision: "Deployment api-service v1.11.0 failed — health check could not connect",
460
485
  reasoning: "Envoy diagnostic identified port conflict from stale process. Recommend adding a pre-deploy cleanup step.",
461
486
  context: { status: "failed", recommendation: "Add cleanup step" },
462
487
  });
463
488
  // dep7 — worker-service 2.9.0 failed
464
489
  debrief.record({
465
- partitionId: initechPartition.id, deploymentId: dep7.id, agent: "server", decisionType: "pipeline-plan",
490
+ partitionId: initechPartition.id, operationId: dep7.id, agent: "server", decisionType: "pipeline-plan",
466
491
  decision: "Planned deployment pipeline for worker-service v2.9.0 to Initech production",
467
492
  reasoning: "4-step pipeline with full verification strategy.",
468
493
  context: { version: "2.9.0", steps: 4, verificationStrategy: "full" },
469
494
  });
470
495
  debrief.record({
471
- partitionId: initechPartition.id, deploymentId: dep7.id, agent: "envoy", decisionType: "deployment-execution",
496
+ partitionId: initechPartition.id, operationId: dep7.id, agent: "envoy", decisionType: "deployment-execution",
472
497
  decision: "Workers stopped and binary deployed successfully",
473
498
  reasoning: "Pre-deploy steps completed. Workers stopped gracefully (0 in-flight jobs lost). Binary copied.",
474
499
  context: { stepsCompleted: 2, jobsLost: 0 },
475
500
  });
476
501
  debrief.record({
477
- partitionId: initechPartition.id, deploymentId: dep7.id, agent: "envoy", decisionType: "deployment-verification",
502
+ partitionId: initechPartition.id, operationId: dep7.id, agent: "envoy", decisionType: "deployment-verification",
478
503
  decision: "Verification failed: queue depth 342 exceeds threshold of 100",
479
504
  reasoning: "Workers restarted but queue depth grew rapidly. v2.9.0 introduced a regression in the message processing loop causing 10x slowdown.",
480
505
  context: { queueDepth: 342, threshold: 100, processingRate: "0.3/s vs expected 3/s" },
481
506
  });
482
507
  debrief.record({
483
- partitionId: initechPartition.id, deploymentId: dep7.id, agent: "server", decisionType: "deployment-failure",
508
+ partitionId: initechPartition.id, operationId: dep7.id, agent: "server", decisionType: "deployment-failure",
484
509
  decision: "Deployment worker-service v2.9.0 failed — queue depth exceeded threshold",
485
510
  reasoning: "Queue depth check returned 342 (max 100). Processing regression in v2.9.0.",
486
511
  context: { status: "failed" },
487
512
  });
488
513
  // dep10 — web-app 2.4.1 rolled back
489
514
  debrief.record({
490
- partitionId: initechPartition.id, deploymentId: dep10.id, agent: "server", decisionType: "pipeline-plan",
515
+ partitionId: initechPartition.id, operationId: dep10.id, agent: "server", decisionType: "pipeline-plan",
491
516
  decision: "Planned deployment pipeline for web-app v2.4.1 to Initech production",
492
517
  reasoning: "Standard 3-step pipeline.",
493
518
  context: { version: "2.4.1", steps: 3 },
494
519
  });
495
520
  debrief.record({
496
- partitionId: initechPartition.id, deploymentId: dep10.id, agent: "envoy", decisionType: "deployment-execution",
521
+ partitionId: initechPartition.id, operationId: dep10.id, agent: "envoy", decisionType: "deployment-execution",
497
522
  decision: "All deployment steps completed, starting post-deploy verification",
498
523
  reasoning: "Dependencies installed (14.2s), migrations ran (3.1s), health check passed (0.2s).",
499
524
  context: { totalDuration: 17500 },
500
525
  });
501
526
  debrief.record({
502
- partitionId: initechPartition.id, deploymentId: dep10.id, agent: "envoy", decisionType: "deployment-verification",
527
+ partitionId: initechPartition.id, operationId: dep10.id, agent: "envoy", decisionType: "deployment-verification",
503
528
  decision: "Post-deploy smoke test detected 502 errors on /api/v2/users",
504
529
  reasoning: "12 endpoint checks: 10 passed, 2 returned 502 (GET and POST /api/v2/users). The v2 users endpoint depends on a schema migration that was partially applied.",
505
530
  context: { passed: 10, failed: 2, failedEndpoints: ["/api/v2/users"] },
506
531
  });
507
532
  debrief.record({
508
- partitionId: initechPartition.id, deploymentId: dep10.id, agent: "server", decisionType: "deployment-failure",
533
+ partitionId: initechPartition.id, operationId: dep10.id, agent: "server", decisionType: "deployment-failure",
509
534
  decision: "Initiated rollback of web-app v2.4.1 on Initech production",
510
535
  reasoning: "502 errors on critical user endpoints. Rolling back to previous known-good version.",
511
536
  context: { status: "rolled_back", rolledBackFrom: "2.4.1" },
512
537
  });
513
538
  // dep6 — web-app 2.5.0-rc.1 with variable conflict
514
539
  debrief.record({
515
- partitionId: globexPartition.id, deploymentId: dep6.id, agent: "server", decisionType: "pipeline-plan",
540
+ partitionId: globexPartition.id, operationId: dep6.id, agent: "server", decisionType: "pipeline-plan",
516
541
  decision: "Planned deployment for web-app v2.5.0-rc.1 to Globex staging",
517
542
  reasoning: "Standard 3-step pipeline. Release candidate — permissive conflict policy.",
518
543
  context: { version: "2.5.0-rc.1", steps: 3 },
519
544
  });
520
545
  debrief.record({
521
- partitionId: globexPartition.id, deploymentId: dep6.id, agent: "server", decisionType: "variable-conflict",
546
+ partitionId: globexPartition.id, operationId: dep6.id, agent: "server", decisionType: "variable-conflict",
522
547
  decision: "Variable conflict: APP_ENV defined in both partition and environment",
523
548
  reasoning: "Partition sets APP_ENV=production, environment sets APP_ENV=staging. Permissive policy — using environment value.",
524
549
  context: { variable: "APP_ENV", partitionValue: "production", environmentValue: "staging", resolution: "environment-wins" },
525
550
  });
526
551
  debrief.record({
527
- partitionId: globexPartition.id, deploymentId: dep6.id, agent: "server", decisionType: "deployment-completion",
552
+ partitionId: globexPartition.id, operationId: dep6.id, agent: "server", decisionType: "deployment-completion",
528
553
  decision: "Deployment web-app v2.5.0-rc.1 completed on Globex staging",
529
554
  reasoning: "All steps passed despite variable conflict. RC verified in staging.",
530
555
  context: { status: "succeeded" },
531
556
  });
532
557
  // dep9 — in-progress
533
558
  debrief.record({
534
- partitionId: globexPartition.id, deploymentId: dep9.id, agent: "server", decisionType: "pipeline-plan",
559
+ partitionId: globexPartition.id, operationId: dep9.id, agent: "server", decisionType: "pipeline-plan",
535
560
  decision: "Planned deployment for api-service v1.13.0-beta.2 to Globex staging",
536
561
  reasoning: "2-step pipeline for staging. Beta version — monitoring closely.",
537
562
  context: { version: "1.13.0-beta.2", steps: 2 },
538
563
  });
539
564
  debrief.record({
540
- partitionId: globexPartition.id, deploymentId: dep9.id, agent: "envoy", decisionType: "deployment-execution",
565
+ partitionId: globexPartition.id, operationId: dep9.id, agent: "envoy", decisionType: "deployment-execution",
541
566
  decision: "Image pull in progress for api-service v1.13.0-beta.2",
542
567
  reasoning: "Pulling docker image from registry. Download progress: 67%.",
543
568
  context: { step: "Pull image", progress: "67%" },
544
569
  });
545
570
  // Environment scans
546
571
  debrief.record({
547
- partitionId: acmePartition.id, deploymentId: null, agent: "envoy", decisionType: "environment-scan",
572
+ partitionId: acmePartition.id, operationId: null, agent: "envoy", decisionType: "environment-scan",
548
573
  decision: "Environment scan completed for Acme Corp production",
549
574
  reasoning: "Current versions: web-app v2.4.1, api-service v1.12.0. Disk: 62%. Memory: 71%. No drift detected.",
550
575
  context: { versions: { "web-app": "2.4.1", "api-service": "1.12.0" }, diskUsage: "62%", memoryUsage: "71%" },
551
576
  });
552
577
  debrief.record({
553
- partitionId: initechPartition.id, deploymentId: null, agent: "envoy", decisionType: "environment-scan",
578
+ partitionId: initechPartition.id, operationId: null, agent: "envoy", decisionType: "environment-scan",
554
579
  decision: "Environment scan for Initech production — drift detected",
555
580
  reasoning: "worker-service v3.0.0 running. web-app at v2.4.0 (v2.4.1 was rolled back). Drift: LOG_LEVEL manually changed from 'warn' to 'debug' outside deployment pipeline.",
556
581
  context: { drift: true, driftDetails: "LOG_LEVEL changed outside pipeline" },
@@ -659,7 +684,7 @@ registerHealthRoutes(app, {
659
684
  });
660
685
  const progressStore = new ProgressEventStore();
661
686
  const defaultEnvoyClient = new EnvoyClient(settings.get().envoy.url, settings.get().envoy.timeoutMs);
662
- registerDeploymentRoutes(app, deployments, debrief, partitions, environments, artifactStore, settings, telemetryStore, progressStore, defaultEnvoyClient, envoyRegistry, llm);
687
+ registerOperationRoutes(app, deployments, debrief, partitions, environments, artifactStore, settings, telemetryStore, progressStore, defaultEnvoyClient, envoyRegistry, llm);
663
688
  registerEnvoyReportRoutes(app, debrief, deployments, envoyRegistry);
664
689
  registerArtifactRoutes(app, artifactStore, telemetryStore, artifactAnalyzer);
665
690
  registerSecurityBoundaryRoutes(app, securityBoundaryStore, telemetryStore);
@@ -704,6 +729,9 @@ for (const ch of intakeChannelStore.list()) {
704
729
  registryPoller.startPolling(ch);
705
730
  }
706
731
  }
732
+ // --- Alert Webhooks (external monitoring triggers) ---
733
+ const alertWebhookStore = new PersistentAlertWebhookStore(entityDb);
734
+ registerAlertWebhookRoutes(app, alertWebhookStore, deployments, debrief, environments, partitions, telemetryStore, envoyRegistry);
707
735
  // --- Serve UI static files if built ---
708
736
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
709
737
  const uiDistPath = path.resolve(__dirname, "../../ui/dist");