@synth-deploy/server 0.1.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 (317) hide show
  1. package/dist/agent/debrief-retention.d.ts +12 -0
  2. package/dist/agent/debrief-retention.d.ts.map +1 -0
  3. package/dist/agent/debrief-retention.js +27 -0
  4. package/dist/agent/debrief-retention.js.map +1 -0
  5. package/dist/agent/envoy-client.d.ts +216 -0
  6. package/dist/agent/envoy-client.d.ts.map +1 -0
  7. package/dist/agent/envoy-client.js +266 -0
  8. package/dist/agent/envoy-client.js.map +1 -0
  9. package/dist/agent/envoy-registry.d.ts +102 -0
  10. package/dist/agent/envoy-registry.d.ts.map +1 -0
  11. package/dist/agent/envoy-registry.js +319 -0
  12. package/dist/agent/envoy-registry.js.map +1 -0
  13. package/dist/agent/health-checker.d.ts +39 -0
  14. package/dist/agent/health-checker.d.ts.map +1 -0
  15. package/dist/agent/health-checker.js +49 -0
  16. package/dist/agent/health-checker.js.map +1 -0
  17. package/dist/agent/mcp-client-manager.d.ts +36 -0
  18. package/dist/agent/mcp-client-manager.d.ts.map +1 -0
  19. package/dist/agent/mcp-client-manager.js +106 -0
  20. package/dist/agent/mcp-client-manager.js.map +1 -0
  21. package/dist/agent/stale-deployment-detector.d.ts +15 -0
  22. package/dist/agent/stale-deployment-detector.d.ts.map +1 -0
  23. package/dist/agent/stale-deployment-detector.js +50 -0
  24. package/dist/agent/stale-deployment-detector.js.map +1 -0
  25. package/dist/agent/step-runner.d.ts +31 -0
  26. package/dist/agent/step-runner.d.ts.map +1 -0
  27. package/dist/agent/step-runner.js +80 -0
  28. package/dist/agent/step-runner.js.map +1 -0
  29. package/dist/agent/synth-agent.d.ts +168 -0
  30. package/dist/agent/synth-agent.d.ts.map +1 -0
  31. package/dist/agent/synth-agent.js +1195 -0
  32. package/dist/agent/synth-agent.js.map +1 -0
  33. package/dist/api/agent.d.ts +36 -0
  34. package/dist/api/agent.d.ts.map +1 -0
  35. package/dist/api/agent.js +867 -0
  36. package/dist/api/agent.js.map +1 -0
  37. package/dist/api/api-keys.d.ts +4 -0
  38. package/dist/api/api-keys.d.ts.map +1 -0
  39. package/dist/api/api-keys.js +118 -0
  40. package/dist/api/api-keys.js.map +1 -0
  41. package/dist/api/artifacts.d.ts +5 -0
  42. package/dist/api/artifacts.d.ts.map +1 -0
  43. package/dist/api/artifacts.js +142 -0
  44. package/dist/api/artifacts.js.map +1 -0
  45. package/dist/api/auth.d.ts +4 -0
  46. package/dist/api/auth.d.ts.map +1 -0
  47. package/dist/api/auth.js +280 -0
  48. package/dist/api/auth.js.map +1 -0
  49. package/dist/api/deployments.d.ts +11 -0
  50. package/dist/api/deployments.d.ts.map +1 -0
  51. package/dist/api/deployments.js +1098 -0
  52. package/dist/api/deployments.js.map +1 -0
  53. package/dist/api/environments.d.ts +5 -0
  54. package/dist/api/environments.d.ts.map +1 -0
  55. package/dist/api/environments.js +69 -0
  56. package/dist/api/environments.js.map +1 -0
  57. package/dist/api/envoy-reports.d.ts +17 -0
  58. package/dist/api/envoy-reports.d.ts.map +1 -0
  59. package/dist/api/envoy-reports.js +138 -0
  60. package/dist/api/envoy-reports.js.map +1 -0
  61. package/dist/api/envoys.d.ts +5 -0
  62. package/dist/api/envoys.d.ts.map +1 -0
  63. package/dist/api/envoys.js +192 -0
  64. package/dist/api/envoys.js.map +1 -0
  65. package/dist/api/fleet.d.ts +11 -0
  66. package/dist/api/fleet.d.ts.map +1 -0
  67. package/dist/api/fleet.js +394 -0
  68. package/dist/api/fleet.js.map +1 -0
  69. package/dist/api/graph.d.ts +8 -0
  70. package/dist/api/graph.d.ts.map +1 -0
  71. package/dist/api/graph.js +355 -0
  72. package/dist/api/graph.js.map +1 -0
  73. package/dist/api/health.d.ts +20 -0
  74. package/dist/api/health.d.ts.map +1 -0
  75. package/dist/api/health.js +248 -0
  76. package/dist/api/health.js.map +1 -0
  77. package/dist/api/idp-schemas.d.ts +41 -0
  78. package/dist/api/idp-schemas.d.ts.map +1 -0
  79. package/dist/api/idp-schemas.js +17 -0
  80. package/dist/api/idp-schemas.js.map +1 -0
  81. package/dist/api/idp.d.ts +6 -0
  82. package/dist/api/idp.d.ts.map +1 -0
  83. package/dist/api/idp.js +620 -0
  84. package/dist/api/idp.js.map +1 -0
  85. package/dist/api/intake.d.ts +10 -0
  86. package/dist/api/intake.d.ts.map +1 -0
  87. package/dist/api/intake.js +418 -0
  88. package/dist/api/intake.js.map +1 -0
  89. package/dist/api/partitions.d.ts +5 -0
  90. package/dist/api/partitions.d.ts.map +1 -0
  91. package/dist/api/partitions.js +113 -0
  92. package/dist/api/partitions.js.map +1 -0
  93. package/dist/api/progress-event-store.d.ts +62 -0
  94. package/dist/api/progress-event-store.d.ts.map +1 -0
  95. package/dist/api/progress-event-store.js +118 -0
  96. package/dist/api/progress-event-store.js.map +1 -0
  97. package/dist/api/schemas.d.ts +1000 -0
  98. package/dist/api/schemas.d.ts.map +1 -0
  99. package/dist/api/schemas.js +328 -0
  100. package/dist/api/schemas.js.map +1 -0
  101. package/dist/api/security-boundaries.d.ts +4 -0
  102. package/dist/api/security-boundaries.d.ts.map +1 -0
  103. package/dist/api/security-boundaries.js +32 -0
  104. package/dist/api/security-boundaries.js.map +1 -0
  105. package/dist/api/settings.d.ts +4 -0
  106. package/dist/api/settings.d.ts.map +1 -0
  107. package/dist/api/settings.js +99 -0
  108. package/dist/api/settings.js.map +1 -0
  109. package/dist/api/system.d.ts +75 -0
  110. package/dist/api/system.d.ts.map +1 -0
  111. package/dist/api/system.js +558 -0
  112. package/dist/api/system.js.map +1 -0
  113. package/dist/api/telemetry.d.ts +4 -0
  114. package/dist/api/telemetry.d.ts.map +1 -0
  115. package/dist/api/telemetry.js +24 -0
  116. package/dist/api/telemetry.js.map +1 -0
  117. package/dist/api/users.d.ts +4 -0
  118. package/dist/api/users.d.ts.map +1 -0
  119. package/dist/api/users.js +173 -0
  120. package/dist/api/users.js.map +1 -0
  121. package/dist/archive-unpacker.d.ts +24 -0
  122. package/dist/archive-unpacker.d.ts.map +1 -0
  123. package/dist/archive-unpacker.js +239 -0
  124. package/dist/archive-unpacker.js.map +1 -0
  125. package/dist/artifact-analyzer.d.ts +59 -0
  126. package/dist/artifact-analyzer.d.ts.map +1 -0
  127. package/dist/artifact-analyzer.js +334 -0
  128. package/dist/artifact-analyzer.js.map +1 -0
  129. package/dist/auth/idp/index.d.ts +9 -0
  130. package/dist/auth/idp/index.d.ts.map +1 -0
  131. package/dist/auth/idp/index.js +5 -0
  132. package/dist/auth/idp/index.js.map +1 -0
  133. package/dist/auth/idp/ldap.d.ts +56 -0
  134. package/dist/auth/idp/ldap.d.ts.map +1 -0
  135. package/dist/auth/idp/ldap.js +276 -0
  136. package/dist/auth/idp/ldap.js.map +1 -0
  137. package/dist/auth/idp/oidc.d.ts +27 -0
  138. package/dist/auth/idp/oidc.d.ts.map +1 -0
  139. package/dist/auth/idp/oidc.js +97 -0
  140. package/dist/auth/idp/oidc.js.map +1 -0
  141. package/dist/auth/idp/role-mapping.d.ts +9 -0
  142. package/dist/auth/idp/role-mapping.d.ts.map +1 -0
  143. package/dist/auth/idp/role-mapping.js +16 -0
  144. package/dist/auth/idp/role-mapping.js.map +1 -0
  145. package/dist/auth/idp/saml.d.ts +40 -0
  146. package/dist/auth/idp/saml.d.ts.map +1 -0
  147. package/dist/auth/idp/saml.js +117 -0
  148. package/dist/auth/idp/saml.js.map +1 -0
  149. package/dist/auth/idp/types.d.ts +23 -0
  150. package/dist/auth/idp/types.d.ts.map +1 -0
  151. package/dist/auth/idp/types.js +2 -0
  152. package/dist/auth/idp/types.js.map +1 -0
  153. package/dist/fleet/fleet-executor.d.ts +35 -0
  154. package/dist/fleet/fleet-executor.d.ts.map +1 -0
  155. package/dist/fleet/fleet-executor.js +228 -0
  156. package/dist/fleet/fleet-executor.js.map +1 -0
  157. package/dist/fleet/fleet-store.d.ts +13 -0
  158. package/dist/fleet/fleet-store.d.ts.map +1 -0
  159. package/dist/fleet/fleet-store.js +13 -0
  160. package/dist/fleet/fleet-store.js.map +1 -0
  161. package/dist/fleet/index.d.ts +5 -0
  162. package/dist/fleet/index.d.ts.map +1 -0
  163. package/dist/fleet/index.js +4 -0
  164. package/dist/fleet/index.js.map +1 -0
  165. package/dist/fleet/representative-selector.d.ts +15 -0
  166. package/dist/fleet/representative-selector.d.ts.map +1 -0
  167. package/dist/fleet/representative-selector.js +71 -0
  168. package/dist/fleet/representative-selector.js.map +1 -0
  169. package/dist/graph/graph-executor.d.ts +36 -0
  170. package/dist/graph/graph-executor.d.ts.map +1 -0
  171. package/dist/graph/graph-executor.js +348 -0
  172. package/dist/graph/graph-executor.js.map +1 -0
  173. package/dist/graph/graph-inference.d.ts +22 -0
  174. package/dist/graph/graph-inference.d.ts.map +1 -0
  175. package/dist/graph/graph-inference.js +149 -0
  176. package/dist/graph/graph-inference.js.map +1 -0
  177. package/dist/graph/graph-store.d.ts +12 -0
  178. package/dist/graph/graph-store.d.ts.map +1 -0
  179. package/dist/graph/graph-store.js +61 -0
  180. package/dist/graph/graph-store.js.map +1 -0
  181. package/dist/graph/index.d.ts +5 -0
  182. package/dist/graph/index.d.ts.map +1 -0
  183. package/dist/graph/index.js +4 -0
  184. package/dist/graph/index.js.map +1 -0
  185. package/dist/index.d.ts +2 -0
  186. package/dist/index.d.ts.map +1 -0
  187. package/dist/index.js +837 -0
  188. package/dist/index.js.map +1 -0
  189. package/dist/intake/index.d.ts +6 -0
  190. package/dist/intake/index.d.ts.map +1 -0
  191. package/dist/intake/index.js +5 -0
  192. package/dist/intake/index.js.map +1 -0
  193. package/dist/intake/intake-processor.d.ts +17 -0
  194. package/dist/intake/intake-processor.d.ts.map +1 -0
  195. package/dist/intake/intake-processor.js +99 -0
  196. package/dist/intake/intake-processor.js.map +1 -0
  197. package/dist/intake/intake-store.d.ts +7 -0
  198. package/dist/intake/intake-store.d.ts.map +1 -0
  199. package/dist/intake/intake-store.js +7 -0
  200. package/dist/intake/intake-store.js.map +1 -0
  201. package/dist/intake/registry-poller.d.ts +41 -0
  202. package/dist/intake/registry-poller.d.ts.map +1 -0
  203. package/dist/intake/registry-poller.js +202 -0
  204. package/dist/intake/registry-poller.js.map +1 -0
  205. package/dist/intake/webhook-handlers.d.ts +37 -0
  206. package/dist/intake/webhook-handlers.d.ts.map +1 -0
  207. package/dist/intake/webhook-handlers.js +268 -0
  208. package/dist/intake/webhook-handlers.js.map +1 -0
  209. package/dist/logger.d.ts +5 -0
  210. package/dist/logger.d.ts.map +1 -0
  211. package/dist/logger.js +15 -0
  212. package/dist/logger.js.map +1 -0
  213. package/dist/mcp/resources.d.ts +9 -0
  214. package/dist/mcp/resources.d.ts.map +1 -0
  215. package/dist/mcp/resources.js +72 -0
  216. package/dist/mcp/resources.js.map +1 -0
  217. package/dist/mcp/server.d.ts +15 -0
  218. package/dist/mcp/server.d.ts.map +1 -0
  219. package/dist/mcp/server.js +20 -0
  220. package/dist/mcp/server.js.map +1 -0
  221. package/dist/mcp/tools.d.ts +9 -0
  222. package/dist/mcp/tools.d.ts.map +1 -0
  223. package/dist/mcp/tools.js +88 -0
  224. package/dist/mcp/tools.js.map +1 -0
  225. package/dist/middleware/auth.d.ts +29 -0
  226. package/dist/middleware/auth.d.ts.map +1 -0
  227. package/dist/middleware/auth.js +76 -0
  228. package/dist/middleware/auth.js.map +1 -0
  229. package/dist/middleware/permissions.d.ts +13 -0
  230. package/dist/middleware/permissions.d.ts.map +1 -0
  231. package/dist/middleware/permissions.js +32 -0
  232. package/dist/middleware/permissions.js.map +1 -0
  233. package/dist/pattern-store.d.ts +104 -0
  234. package/dist/pattern-store.d.ts.map +1 -0
  235. package/dist/pattern-store.js +299 -0
  236. package/dist/pattern-store.js.map +1 -0
  237. package/package.json +54 -0
  238. package/src/agent/debrief-retention.ts +44 -0
  239. package/src/agent/envoy-client.ts +474 -0
  240. package/src/agent/envoy-registry.ts +384 -0
  241. package/src/agent/health-checker.ts +70 -0
  242. package/src/agent/mcp-client-manager.ts +131 -0
  243. package/src/agent/stale-deployment-detector.ts +79 -0
  244. package/src/agent/step-runner.ts +124 -0
  245. package/src/agent/synth-agent.ts +1567 -0
  246. package/src/api/agent.ts +1075 -0
  247. package/src/api/api-keys.ts +129 -0
  248. package/src/api/artifacts.ts +194 -0
  249. package/src/api/auth.ts +320 -0
  250. package/src/api/deployments.ts +1347 -0
  251. package/src/api/environments.ts +97 -0
  252. package/src/api/envoy-reports.ts +159 -0
  253. package/src/api/envoys.ts +237 -0
  254. package/src/api/fleet.ts +510 -0
  255. package/src/api/graph.ts +516 -0
  256. package/src/api/health.ts +311 -0
  257. package/src/api/idp-schemas.ts +19 -0
  258. package/src/api/idp.ts +735 -0
  259. package/src/api/intake.ts +537 -0
  260. package/src/api/partitions.ts +147 -0
  261. package/src/api/progress-event-store.ts +153 -0
  262. package/src/api/schemas.ts +376 -0
  263. package/src/api/security-boundaries.ts +54 -0
  264. package/src/api/settings.ts +118 -0
  265. package/src/api/system.ts +704 -0
  266. package/src/api/telemetry.ts +32 -0
  267. package/src/api/users.ts +210 -0
  268. package/src/archive-unpacker.ts +271 -0
  269. package/src/artifact-analyzer.ts +438 -0
  270. package/src/auth/idp/index.ts +8 -0
  271. package/src/auth/idp/ldap.ts +340 -0
  272. package/src/auth/idp/oidc.ts +117 -0
  273. package/src/auth/idp/role-mapping.ts +22 -0
  274. package/src/auth/idp/saml.ts +148 -0
  275. package/src/auth/idp/types.ts +22 -0
  276. package/src/fleet/fleet-executor.ts +309 -0
  277. package/src/fleet/fleet-store.ts +13 -0
  278. package/src/fleet/index.ts +4 -0
  279. package/src/fleet/representative-selector.ts +83 -0
  280. package/src/graph/graph-executor.ts +446 -0
  281. package/src/graph/graph-inference.ts +184 -0
  282. package/src/graph/graph-store.ts +75 -0
  283. package/src/graph/index.ts +4 -0
  284. package/src/index.ts +916 -0
  285. package/src/intake/index.ts +5 -0
  286. package/src/intake/intake-processor.ts +111 -0
  287. package/src/intake/intake-store.ts +7 -0
  288. package/src/intake/registry-poller.ts +230 -0
  289. package/src/intake/webhook-handlers.ts +328 -0
  290. package/src/logger.ts +19 -0
  291. package/src/mcp/resources.ts +98 -0
  292. package/src/mcp/server.ts +34 -0
  293. package/src/mcp/tools.ts +117 -0
  294. package/src/middleware/auth.ts +103 -0
  295. package/src/middleware/permissions.ts +35 -0
  296. package/src/pattern-store.ts +409 -0
  297. package/tests/agent-mode.test.ts +536 -0
  298. package/tests/api-handlers.test.ts +1245 -0
  299. package/tests/archive-unpacker.test.ts +179 -0
  300. package/tests/artifact-analyzer.test.ts +240 -0
  301. package/tests/auth-middleware.test.ts +189 -0
  302. package/tests/decision-diary.test.ts +957 -0
  303. package/tests/diary-reader.test.ts +782 -0
  304. package/tests/envoy-client.test.ts +342 -0
  305. package/tests/envoy-reports.test.ts +156 -0
  306. package/tests/mcp-tools.test.ts +213 -0
  307. package/tests/orchestration.test.ts +536 -0
  308. package/tests/partition-deletion.test.ts +143 -0
  309. package/tests/partition-isolation.test.ts +830 -0
  310. package/tests/pattern-store.test.ts +371 -0
  311. package/tests/rbac-enforcement.test.ts +409 -0
  312. package/tests/ssrf-validation.test.ts +56 -0
  313. package/tests/stale-deployment.test.ts +85 -0
  314. package/tests/step-runner.test.ts +308 -0
  315. package/tests/ui-journey.test.ts +330 -0
  316. package/tsconfig.json +11 -0
  317. package/vitest.config.ts +27 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployments.js","sourceRoot":"","sources":["../../src/api/deployments.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { FastifyInstance } from "fastify";
2
+ import type { IEnvironmentStore, ITelemetryStore } from "@synth-deploy/core";
3
+ import type { DeploymentStore } from "../agent/synth-agent.js";
4
+ export declare function registerEnvironmentRoutes(app: FastifyInstance, environments: IEnvironmentStore, deployments: DeploymentStore, telemetry: ITelemetryStore): void;
5
+ //# sourceMappingURL=environments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environments.d.ts","sourceRoot":"","sources":["../../src/api/environments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAkB,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG7F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,eAAe,EACpB,YAAY,EAAE,iBAAiB,EAC/B,WAAW,EAAE,eAAe,EAC5B,SAAS,EAAE,eAAe,GACzB,IAAI,CAqFN"}
@@ -0,0 +1,69 @@
1
+ import { CreateEnvironmentSchema, UpdateEnvironmentSchema } from "./schemas.js";
2
+ import { requirePermission } from "../middleware/permissions.js";
3
+ export function registerEnvironmentRoutes(app, environments, deployments, telemetry) {
4
+ // List all environments
5
+ app.get("/api/environments", { preHandler: [requirePermission("environment.view")] }, async () => {
6
+ return { environments: environments.list() };
7
+ });
8
+ // Create an environment
9
+ app.post("/api/environments", { preHandler: [requirePermission("environment.create")] }, async (request, reply) => {
10
+ const parsed = CreateEnvironmentSchema.safeParse(request.body);
11
+ if (!parsed.success) {
12
+ return reply.status(400).send({ error: "Invalid input", details: parsed.error.format() });
13
+ }
14
+ const environment = environments.create(parsed.data.name.trim(), parsed.data.variables ?? {});
15
+ telemetry.record({ actor: (request.user?.email) ?? "anonymous", action: "environment.created", target: { type: "environment", id: environment.id }, details: { name: parsed.data.name } });
16
+ return reply.status(201).send({ environment });
17
+ });
18
+ // Get environment by ID
19
+ app.get("/api/environments/:id", { preHandler: [requirePermission("environment.view")] }, async (request, reply) => {
20
+ const environment = environments.get(request.params.id);
21
+ if (!environment) {
22
+ return reply.status(404).send({ error: "Environment not found" });
23
+ }
24
+ return { environment };
25
+ });
26
+ // Update environment
27
+ app.put("/api/environments/:id", { preHandler: [requirePermission("environment.update")] }, async (request, reply) => {
28
+ const parsed = UpdateEnvironmentSchema.safeParse(request.body);
29
+ if (!parsed.success) {
30
+ return reply.status(400).send({ error: "Invalid input", details: parsed.error.format() });
31
+ }
32
+ try {
33
+ const environment = environments.update(request.params.id, {
34
+ name: parsed.data.name?.trim(),
35
+ variables: parsed.data.variables,
36
+ });
37
+ telemetry.record({ actor: (request.user?.email) ?? "anonymous", action: "environment.updated", target: { type: "environment", id: request.params.id }, details: { name: parsed.data.name } });
38
+ return { environment };
39
+ }
40
+ catch (err) {
41
+ if (err instanceof Error && err.message.toLowerCase().includes("not found")) {
42
+ return reply.status(404).send({ error: "Environment not found" });
43
+ }
44
+ app.log.error(err, "Failed to update environment");
45
+ return reply.status(500).send({ error: "Internal server error" });
46
+ }
47
+ });
48
+ // Delete environment (with linked-operations safety check)
49
+ app.delete("/api/environments/:id", { preHandler: [requirePermission("environment.delete")] }, async (request, reply) => {
50
+ const envId = request.params.id;
51
+ const env = environments.get(envId);
52
+ if (!env) {
53
+ return reply.status(404).send({ error: "Environment not found" });
54
+ }
55
+ // Check if any deployments reference this environment
56
+ const linkedDeployments = deployments
57
+ .list()
58
+ .filter((d) => d.environmentId === envId);
59
+ if (linkedDeployments.length > 0) {
60
+ return reply.status(409).send({
61
+ error: `Environment has ${linkedDeployments.length} deployment(s). Cannot delete an environment with deployment history.`,
62
+ deploymentCount: linkedDeployments.length,
63
+ });
64
+ }
65
+ environments.delete(envId);
66
+ return { deleted: true };
67
+ });
68
+ }
69
+ //# sourceMappingURL=environments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environments.js","sourceRoot":"","sources":["../../src/api/environments.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { FastifyInstance } from "fastify";
2
+ import type { DebriefWriter } from "@synth-deploy/core";
3
+ import type { DeploymentStore } from "../agent/synth-agent.js";
4
+ import type { EnvoyRegistry } from "../agent/envoy-registry.js";
5
+ /**
6
+ * Endpoint for Envoys to push reports back to Command.
7
+ *
8
+ * When a Envoy completes a deployment (success or failure), it pushes
9
+ * a report containing its full debrief entries. Command ingests these
10
+ * into its own debrief so there is one unified Debrief that contains
11
+ * both Command's orchestration decisions and the Envoy's execution
12
+ * decisions.
13
+ *
14
+ * This is the Envoy->Command direction of bidirectional communication.
15
+ */
16
+ export declare function registerEnvoyReportRoutes(app: FastifyInstance, debrief: DebriefWriter, deployments: DeploymentStore, registry: EnvoyRegistry): void;
17
+ //# sourceMappingURL=envoy-reports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envoy-reports.d.ts","sourceRoot":"","sources":["../../src/api/envoy-reports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG/C,OAAO,KAAK,EAAE,aAAa,EAAgB,MAAM,oBAAoB,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AA6ChE;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,eAAe,EACpB,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,eAAe,EAC5B,QAAQ,EAAE,aAAa,GACtB,IAAI,CA4FN"}
@@ -0,0 +1,138 @@
1
+ import { z } from "zod";
2
+ import { DecisionTypeEnum } from "@synth-deploy/core";
3
+ // ---------------------------------------------------------------------------
4
+ // Schema — validates incoming Envoy reports
5
+ // ---------------------------------------------------------------------------
6
+ const DebriefEntrySchema = z.object({
7
+ id: z.string(),
8
+ timestamp: z.string(),
9
+ partitionId: z.string().nullable(),
10
+ deploymentId: z.string().nullable(),
11
+ agent: z.enum(["server", "envoy"]),
12
+ decisionType: DecisionTypeEnum,
13
+ decision: z.string(),
14
+ reasoning: z.string(),
15
+ context: z.record(z.unknown()),
16
+ });
17
+ const EnvoyReportSchema = z.object({
18
+ type: z.literal("deployment-result"),
19
+ envoyId: z.string(),
20
+ deploymentId: z.string(),
21
+ success: z.boolean(),
22
+ failureReason: z.string().nullable(),
23
+ debriefEntries: z.array(DebriefEntrySchema),
24
+ summary: z.object({
25
+ artifacts: z.array(z.string()),
26
+ workspacePath: z.string(),
27
+ executionDurationMs: z.number(),
28
+ totalDurationMs: z.number(),
29
+ verificationPassed: z.boolean(),
30
+ verificationChecks: z.array(z.object({
31
+ name: z.string(),
32
+ passed: z.boolean(),
33
+ detail: z.string(),
34
+ })),
35
+ }),
36
+ });
37
+ // ---------------------------------------------------------------------------
38
+ // Route registration
39
+ // ---------------------------------------------------------------------------
40
+ /**
41
+ * Endpoint for Envoys to push reports back to Command.
42
+ *
43
+ * When a Envoy completes a deployment (success or failure), it pushes
44
+ * a report containing its full debrief entries. Command ingests these
45
+ * into its own debrief so there is one unified Debrief that contains
46
+ * both Command's orchestration decisions and the Envoy's execution
47
+ * decisions.
48
+ *
49
+ * This is the Envoy->Command direction of bidirectional communication.
50
+ */
51
+ export function registerEnvoyReportRoutes(app, debrief, deployments, registry) {
52
+ app.post("/api/envoy/report", async (request, reply) => {
53
+ const authHeader = (request.headers.authorization ?? "");
54
+ const token = authHeader.startsWith("Bearer ") ? authHeader.slice(7) : null;
55
+ if (!token || !registry.validateToken(token)) {
56
+ return reply.status(401).send({ error: "Invalid or missing envoy token" });
57
+ }
58
+ const parsed = EnvoyReportSchema.safeParse(request.body);
59
+ if (!parsed.success) {
60
+ return reply.status(400).send({
61
+ error: "Invalid Envoy report",
62
+ details: parsed.error.format(),
63
+ });
64
+ }
65
+ const report = parsed.data;
66
+ // Validate partition boundary: each debrief entry's deploymentId must
67
+ // belong to the claimed partitionId. Reject cross-partition reports.
68
+ for (const entry of report.debriefEntries) {
69
+ if (entry.deploymentId && entry.partitionId) {
70
+ const deployment = deployments.get(entry.deploymentId);
71
+ if (!deployment || deployment.partitionId !== entry.partitionId) {
72
+ debrief.record({
73
+ partitionId: entry.partitionId,
74
+ deploymentId: entry.deploymentId,
75
+ agent: "server",
76
+ decisionType: "system",
77
+ decision: "Rejected Envoy report: partition boundary violation",
78
+ reasoning: `Deployment ${entry.deploymentId} does not belong to partition ${entry.partitionId}. Report from envoy ${report.envoyId} rejected.`,
79
+ context: { envoyId: report.envoyId, reportedPartitionId: entry.partitionId },
80
+ });
81
+ return reply.status(403).send({
82
+ error: "Partition boundary violation",
83
+ detail: `Deployment ${entry.deploymentId} does not belong to partition ${entry.partitionId}`,
84
+ });
85
+ }
86
+ }
87
+ }
88
+ let ingested = 0;
89
+ // Ingest each Envoy debrief entry into Command's debrief.
90
+ // We re-record them (rather than inserting raw) so Command's debrief
91
+ // assigns its own IDs and timestamps. The original Envoy entry data
92
+ // is preserved in the context field for traceability.
93
+ for (const entry of report.debriefEntries) {
94
+ debrief.record({
95
+ partitionId: entry.partitionId,
96
+ deploymentId: entry.deploymentId,
97
+ agent: entry.agent,
98
+ decisionType: entry.decisionType,
99
+ decision: entry.decision,
100
+ reasoning: entry.reasoning,
101
+ context: {
102
+ ...entry.context,
103
+ _envoyReport: {
104
+ envoyId: report.envoyId,
105
+ originalEntryId: entry.id,
106
+ originalTimestamp: entry.timestamp,
107
+ },
108
+ },
109
+ });
110
+ ingested++;
111
+ }
112
+ // Update deployment status based on the result
113
+ const deployment = deployments.get(report.deploymentId);
114
+ if (deployment && deployment.status === "running") {
115
+ let finalStatus;
116
+ if (report.success) {
117
+ finalStatus = "succeeded";
118
+ }
119
+ else {
120
+ const hadRollback = report.debriefEntries.some((e) => e.decisionType === "rollback-execution");
121
+ finalStatus = (hadRollback ? "rolled_back" : "failed");
122
+ }
123
+ deployment.status = finalStatus;
124
+ if (!report.success && report.failureReason) {
125
+ deployment.failureReason = report.failureReason;
126
+ }
127
+ deployment.completedAt = new Date();
128
+ deployments.save(deployment);
129
+ }
130
+ return reply.status(200).send({
131
+ accepted: true,
132
+ deploymentId: report.deploymentId,
133
+ envoyId: report.envoyId,
134
+ entriesIngested: ingested,
135
+ });
136
+ });
137
+ }
138
+ //# sourceMappingURL=envoy-reports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envoy-reports.js","sourceRoot":"","sources":["../../src/api/envoy-reports.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { FastifyInstance } from "fastify";
2
+ import type { ISettingsStore, ITelemetryStore, IDeploymentStore, DebriefReader } from "@synth-deploy/core";
3
+ import type { EnvoyRegistry } from "../agent/envoy-registry.js";
4
+ export declare function registerEnvoyRoutes(app: FastifyInstance, settings: ISettingsStore, registry: EnvoyRegistry, telemetry: ITelemetryStore, deployments: IDeploymentStore, debrief: DebriefReader): void;
5
+ //# sourceMappingURL=envoys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envoys.d.ts","sourceRoot":"","sources":["../../src/api/envoys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC3G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAIhE,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,eAAe,EACpB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,eAAe,EAC1B,WAAW,EAAE,gBAAgB,EAC7B,OAAO,EAAE,aAAa,GACrB,IAAI,CA+NN"}
@@ -0,0 +1,192 @@
1
+ import { requirePermission } from "../middleware/permissions.js";
2
+ import { getMaxEnvoys, EditionError } from "@synth-deploy/core";
3
+ export function registerEnvoyRoutes(app, settings, registry, telemetry, deployments, debrief) {
4
+ // List all registered Envoys (cached data — no live probe)
5
+ app.get("/api/envoys", { preHandler: [requirePermission("envoy.view")] }, async () => {
6
+ let entries = registry.listEntries();
7
+ // Also include the legacy settings-based default envoy if no registry entries
8
+ if (entries.length === 0) {
9
+ const envoyConfig = settings.get().envoy;
10
+ if (envoyConfig?.url) {
11
+ const legacy = registry.register({
12
+ name: "default",
13
+ url: envoyConfig.url,
14
+ });
15
+ const entry = registry.get(legacy.id);
16
+ if (entry)
17
+ entries = [entry];
18
+ }
19
+ }
20
+ return {
21
+ envoys: entries.map((e) => ({
22
+ id: e.id,
23
+ name: e.name,
24
+ url: e.url,
25
+ health: e.health,
26
+ hostname: e.hostname,
27
+ os: e.os,
28
+ lastSeen: e.lastSeen,
29
+ summary: e.summary,
30
+ readiness: e.readiness,
31
+ assignedEnvironments: e.assignedEnvironments,
32
+ assignedPartitions: e.assignedPartitions,
33
+ })),
34
+ };
35
+ });
36
+ // Register a new Envoy
37
+ app.post("/api/envoys", { preHandler: [requirePermission("envoy.register")] }, async (request, reply) => {
38
+ const body = request.body;
39
+ if (!body.name || !body.url) {
40
+ return reply.status(400).send({ error: "name and url are required" });
41
+ }
42
+ // Enforce envoy count limit (Community: 10, Enterprise: license value)
43
+ const maxEnvoys = getMaxEnvoys();
44
+ if (maxEnvoys > 0 && registry.listEntries().length >= maxEnvoys) {
45
+ throw new EditionError("unlimited-envoys");
46
+ }
47
+ const registration = registry.register({
48
+ name: body.name,
49
+ url: body.url,
50
+ assignedEnvironments: body.assignedEnvironments,
51
+ assignedPartitions: body.assignedPartitions,
52
+ });
53
+ // Probe health immediately after registration
54
+ const entry = await registry.probe(registration.id);
55
+ telemetry.record({ actor: (request.user?.email) ?? "anonymous", action: "envoy.registered", target: { type: "envoy", id: registration.id }, details: { name: body.name, url: body.url } });
56
+ return reply.status(201).send({
57
+ envoy: {
58
+ id: registration.id,
59
+ name: registration.name,
60
+ url: registration.url,
61
+ token: registration.token,
62
+ assignedEnvironments: registration.assignedEnvironments,
63
+ assignedPartitions: registration.assignedPartitions,
64
+ registeredAt: registration.registeredAt,
65
+ health: entry?.health ?? "Unreachable",
66
+ },
67
+ });
68
+ });
69
+ // Get a specific Envoy's cached status (instant, no live probe)
70
+ app.get("/api/envoys/:id/health", { preHandler: [requirePermission("envoy.view")] }, async (request, reply) => {
71
+ const { id } = request.params;
72
+ const entry = registry.get(id);
73
+ if (!entry) {
74
+ return reply.status(404).send({ error: "Envoy not found" });
75
+ }
76
+ return {
77
+ envoy: {
78
+ id: entry.id,
79
+ name: entry.name,
80
+ url: entry.url,
81
+ health: entry.health,
82
+ hostname: entry.hostname,
83
+ os: entry.os,
84
+ lastSeen: entry.lastSeen,
85
+ summary: entry.summary,
86
+ readiness: entry.readiness,
87
+ assignedEnvironments: entry.assignedEnvironments,
88
+ assignedPartitions: entry.assignedPartitions,
89
+ },
90
+ };
91
+ });
92
+ // Update an Envoy's configuration
93
+ app.put("/api/envoys/:id", { preHandler: [requirePermission("envoy.configure")] }, async (request, reply) => {
94
+ const { id } = request.params;
95
+ const body = request.body;
96
+ const existing = registry.get(id);
97
+ const updated = registry.update(id, body);
98
+ if (!updated) {
99
+ return reply.status(404).send({ error: "Envoy not found" });
100
+ }
101
+ const actor = (request.user?.email) ?? "anonymous";
102
+ if (body.assignedEnvironments !== undefined && existing) {
103
+ const prev = new Set(existing.assignedEnvironments);
104
+ const next = new Set(body.assignedEnvironments);
105
+ for (const envId of next) {
106
+ if (!prev.has(envId))
107
+ telemetry.record({ actor, action: "envoy.connection.added", target: { type: "envoy", id }, details: { connectionType: "environment", targetId: envId } });
108
+ }
109
+ for (const envId of prev) {
110
+ if (!next.has(envId))
111
+ telemetry.record({ actor, action: "envoy.connection.removed", target: { type: "envoy", id }, details: { connectionType: "environment", targetId: envId } });
112
+ }
113
+ }
114
+ if (body.assignedPartitions !== undefined && existing) {
115
+ const prev = new Set(existing.assignedPartitions);
116
+ const next = new Set(body.assignedPartitions);
117
+ for (const partId of next) {
118
+ if (!prev.has(partId))
119
+ telemetry.record({ actor, action: "envoy.connection.added", target: { type: "envoy", id }, details: { connectionType: "partition", targetId: partId } });
120
+ }
121
+ for (const partId of prev) {
122
+ if (!next.has(partId))
123
+ telemetry.record({ actor, action: "envoy.connection.removed", target: { type: "envoy", id }, details: { connectionType: "partition", targetId: partId } });
124
+ }
125
+ }
126
+ return {
127
+ envoy: {
128
+ id: updated.id,
129
+ name: updated.name,
130
+ url: updated.url,
131
+ assignedEnvironments: updated.assignedEnvironments,
132
+ assignedPartitions: updated.assignedPartitions,
133
+ },
134
+ };
135
+ });
136
+ // Deregister an Envoy
137
+ app.delete("/api/envoys/:id", { preHandler: [requirePermission("envoy.configure")] }, async (request, reply) => {
138
+ const { id } = request.params;
139
+ const removed = registry.deregister(id);
140
+ if (!removed) {
141
+ return reply.status(404).send({ error: "Envoy not found" });
142
+ }
143
+ return reply.status(204).send();
144
+ });
145
+ // Rotate an Envoy's token
146
+ app.post("/api/envoys/:id/rotate-token", { preHandler: [requirePermission("envoy.configure")] }, async (request, reply) => {
147
+ const { id } = request.params;
148
+ const newToken = registry.rotateToken(id);
149
+ if (!newToken) {
150
+ return reply.status(404).send({ error: "Envoy not found" });
151
+ }
152
+ return { token: newToken };
153
+ });
154
+ // Get accumulated knowledge for an Envoy — system observations from environment scans
155
+ app.get("/api/envoys/:id/knowledge", { preHandler: [requirePermission("envoy.view")] }, async (request, reply) => {
156
+ const { id } = request.params;
157
+ const entry = registry.get(id);
158
+ if (!entry) {
159
+ return reply.status(404).send({ error: "Envoy not found" });
160
+ }
161
+ const envoyDeployments = deployments.list().filter((d) => d.envoyId === id);
162
+ const observations = [];
163
+ for (const d of envoyDeployments) {
164
+ const entries = debrief.getByDeployment(d.id);
165
+ for (const e of entries) {
166
+ if (e.decisionType === "environment-scan") {
167
+ observations.push({ id: e.id, timestamp: e.timestamp.toISOString(), text: e.reasoning || e.decision });
168
+ }
169
+ }
170
+ }
171
+ // Sort newest first, cap at 20
172
+ observations.sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
173
+ return { knowledge: observations.slice(0, 20) };
174
+ });
175
+ // Validate an Envoy token (used by Envoy report endpoint)
176
+ app.post("/api/envoys/validate-token", async (request, reply) => {
177
+ const body = request.body;
178
+ if (!body.token) {
179
+ return reply.status(400).send({ error: "token is required" });
180
+ }
181
+ const envoy = registry.validateToken(body.token);
182
+ if (!envoy) {
183
+ return reply.status(401).send({ error: "Invalid token" });
184
+ }
185
+ return {
186
+ valid: true,
187
+ envoyId: envoy.id,
188
+ envoyName: envoy.name,
189
+ };
190
+ });
191
+ }
192
+ //# sourceMappingURL=envoys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envoys.js","sourceRoot":"","sources":["../../src/api/envoys.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { FastifyInstance } from "fastify";
2
+ import type { IDeploymentStore, DebriefWriter } from "@synth-deploy/core";
3
+ import type { EnvoyRegistry } from "../agent/envoy-registry.js";
4
+ import type { FleetDeploymentStore } from "../fleet/fleet-store.js";
5
+ import type { FleetExecutor } from "../fleet/fleet-executor.js";
6
+ /**
7
+ * REST API routes for fleet (large-scale) deployments.
8
+ * Provides create, list, get, approve, execute, pause, and resume endpoints.
9
+ */
10
+ export declare function registerFleetRoutes(app: FastifyInstance, fleetStore: FleetDeploymentStore, envoyRegistry: EnvoyRegistry, deploymentStore: IDeploymentStore, fleetExecutor: FleetExecutor, debrief: DebriefWriter): void;
11
+ //# sourceMappingURL=fleet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fleet.d.ts","sourceRoot":"","sources":["../../src/api/fleet.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAA8C,gBAAgB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACtH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAsB,MAAM,4BAA4B,CAAC;AAIpF;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,eAAe,EACpB,UAAU,EAAE,oBAAoB,EAChC,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,gBAAgB,EACjC,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,aAAa,GACrB,IAAI,CAyeN"}