@agent-relay/factory 0.1.49 → 0.1.51

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 (173) hide show
  1. package/README.md +93 -11
  2. package/dist/cli/fleet.d.ts +4 -1
  3. package/dist/cli/fleet.d.ts.map +1 -1
  4. package/dist/cli/fleet.js +87 -42
  5. package/dist/cli/fleet.js.map +1 -1
  6. package/dist/config/schema.d.ts +1671 -10
  7. package/dist/config/schema.d.ts.map +1 -1
  8. package/dist/config/schema.js +83 -0
  9. package/dist/config/schema.js.map +1 -1
  10. package/dist/dispatch/templates.d.ts +6 -0
  11. package/dist/dispatch/templates.d.ts.map +1 -1
  12. package/dist/dispatch/templates.js +16 -0
  13. package/dist/dispatch/templates.js.map +1 -1
  14. package/dist/environments/connection-registry.d.ts +617 -0
  15. package/dist/environments/connection-registry.d.ts.map +1 -0
  16. package/dist/environments/connection-registry.js +174 -0
  17. package/dist/environments/connection-registry.js.map +1 -0
  18. package/dist/environments/index.d.ts +21 -0
  19. package/dist/environments/index.d.ts.map +1 -0
  20. package/dist/environments/index.js +11 -0
  21. package/dist/environments/index.js.map +1 -0
  22. package/dist/environments/k6-job.d.ts +64 -0
  23. package/dist/environments/k6-job.d.ts.map +1 -0
  24. package/dist/environments/k6-job.js +376 -0
  25. package/dist/environments/k6-job.js.map +1 -0
  26. package/dist/environments/kubernetes-client.d.ts +72 -0
  27. package/dist/environments/kubernetes-client.d.ts.map +1 -0
  28. package/dist/environments/kubernetes-client.js +337 -0
  29. package/dist/environments/kubernetes-client.js.map +1 -0
  30. package/dist/environments/kubernetes-command.d.ts +30 -0
  31. package/dist/environments/kubernetes-command.d.ts.map +1 -0
  32. package/dist/environments/kubernetes-command.js +108 -0
  33. package/dist/environments/kubernetes-command.js.map +1 -0
  34. package/dist/environments/kubernetes-environment.d.ts +38 -0
  35. package/dist/environments/kubernetes-environment.d.ts.map +1 -0
  36. package/dist/environments/kubernetes-environment.js +333 -0
  37. package/dist/environments/kubernetes-environment.js.map +1 -0
  38. package/dist/environments/kubernetes-provider.d.ts +83 -0
  39. package/dist/environments/kubernetes-provider.d.ts.map +1 -0
  40. package/dist/environments/kubernetes-provider.js +956 -0
  41. package/dist/environments/kubernetes-provider.js.map +1 -0
  42. package/dist/environments/load-harness.d.ts +199 -0
  43. package/dist/environments/load-harness.d.ts.map +1 -0
  44. package/dist/environments/load-harness.js +259 -0
  45. package/dist/environments/load-harness.js.map +1 -0
  46. package/dist/environments/load-profile.d.ts +294 -0
  47. package/dist/environments/load-profile.d.ts.map +1 -0
  48. package/dist/environments/load-profile.js +125 -0
  49. package/dist/environments/load-profile.js.map +1 -0
  50. package/dist/environments/stack-deployer.d.ts +22 -0
  51. package/dist/environments/stack-deployer.d.ts.map +1 -0
  52. package/dist/environments/stack-deployer.js +27 -0
  53. package/dist/environments/stack-deployer.js.map +1 -0
  54. package/dist/environments/stack-descriptor.d.ts +243 -0
  55. package/dist/environments/stack-descriptor.d.ts.map +1 -0
  56. package/dist/environments/stack-descriptor.js +88 -0
  57. package/dist/environments/stack-descriptor.js.map +1 -0
  58. package/dist/environments/verification-pipeline.d.ts +117 -0
  59. package/dist/environments/verification-pipeline.d.ts.map +1 -0
  60. package/dist/environments/verification-pipeline.js +643 -0
  61. package/dist/environments/verification-pipeline.js.map +1 -0
  62. package/dist/environments/verification-stack-deployer.d.ts +73 -0
  63. package/dist/environments/verification-stack-deployer.d.ts.map +1 -0
  64. package/dist/environments/verification-stack-deployer.js +484 -0
  65. package/dist/environments/verification-stack-deployer.js.map +1 -0
  66. package/dist/environments/verification-stack-descriptor.d.ts +1134 -0
  67. package/dist/environments/verification-stack-descriptor.d.ts.map +1 -0
  68. package/dist/environments/verification-stack-descriptor.js +275 -0
  69. package/dist/environments/verification-stack-descriptor.js.map +1 -0
  70. package/dist/environments/verification-stack.d.ts +29 -0
  71. package/dist/environments/verification-stack.d.ts.map +1 -0
  72. package/dist/environments/verification-stack.js +43 -0
  73. package/dist/environments/verification-stack.js.map +1 -0
  74. package/dist/featuremap/generate.d.ts +72 -0
  75. package/dist/featuremap/generate.d.ts.map +1 -0
  76. package/dist/featuremap/generate.js +854 -0
  77. package/dist/featuremap/generate.js.map +1 -0
  78. package/dist/featuremap/index.d.ts +2 -0
  79. package/dist/featuremap/index.d.ts.map +1 -1
  80. package/dist/featuremap/index.js +1 -0
  81. package/dist/featuremap/index.js.map +1 -1
  82. package/dist/featuremap/validate.d.ts +6 -0
  83. package/dist/featuremap/validate.d.ts.map +1 -1
  84. package/dist/featuremap/validate.js +95 -13
  85. package/dist/featuremap/validate.js.map +1 -1
  86. package/dist/fleet/create-fleet.d.ts +2 -0
  87. package/dist/fleet/create-fleet.d.ts.map +1 -1
  88. package/dist/fleet/create-fleet.js +1 -0
  89. package/dist/fleet/create-fleet.js.map +1 -1
  90. package/dist/fleet/internal-fleet-client.d.ts +8 -1
  91. package/dist/fleet/internal-fleet-client.d.ts.map +1 -1
  92. package/dist/fleet/internal-fleet-client.js +31 -6
  93. package/dist/fleet/internal-fleet-client.js.map +1 -1
  94. package/dist/fleet/relay-fleet-client.d.ts +4 -1
  95. package/dist/fleet/relay-fleet-client.d.ts.map +1 -1
  96. package/dist/fleet/relay-fleet-client.js +142 -1
  97. package/dist/fleet/relay-fleet-client.js.map +1 -1
  98. package/dist/git/agent-worktree.d.ts +4 -1
  99. package/dist/git/agent-worktree.d.ts.map +1 -1
  100. package/dist/git/agent-worktree.js +151 -8
  101. package/dist/git/agent-worktree.js.map +1 -1
  102. package/dist/index.d.ts +32 -8
  103. package/dist/index.d.ts.map +1 -1
  104. package/dist/index.js +15 -3
  105. package/dist/index.js.map +1 -1
  106. package/dist/mount/local-mount-preflight.d.ts.map +1 -1
  107. package/dist/mount/local-mount-preflight.js +6 -2
  108. package/dist/mount/local-mount-preflight.js.map +1 -1
  109. package/dist/mount/relayfile-cloud-mount-client.d.ts +8 -2
  110. package/dist/mount/relayfile-cloud-mount-client.d.ts.map +1 -1
  111. package/dist/mount/relayfile-cloud-mount-client.js +11 -1
  112. package/dist/mount/relayfile-cloud-mount-client.js.map +1 -1
  113. package/dist/node/factory-node.d.ts +2 -0
  114. package/dist/node/factory-node.d.ts.map +1 -1
  115. package/dist/node/factory-node.js +107 -2
  116. package/dist/node/factory-node.js.map +1 -1
  117. package/dist/node/preview-process.d.ts +65 -0
  118. package/dist/node/preview-process.d.ts.map +1 -0
  119. package/dist/node/preview-process.js +431 -0
  120. package/dist/node/preview-process.js.map +1 -0
  121. package/dist/node/tailscale-preview.d.ts +45 -0
  122. package/dist/node/tailscale-preview.d.ts.map +1 -0
  123. package/dist/node/tailscale-preview.js +748 -0
  124. package/dist/node/tailscale-preview.js.map +1 -0
  125. package/dist/observability/events.d.ts +1838 -28
  126. package/dist/observability/events.d.ts.map +1 -1
  127. package/dist/observability/events.js +52 -0
  128. package/dist/observability/events.js.map +1 -1
  129. package/dist/orchestrator/factory.d.ts.map +1 -1
  130. package/dist/orchestrator/factory.js +1416 -78
  131. package/dist/orchestrator/factory.js.map +1 -1
  132. package/dist/orchestrator/index.d.ts +2 -1
  133. package/dist/orchestrator/index.d.ts.map +1 -1
  134. package/dist/orchestrator/index.js +1 -1
  135. package/dist/orchestrator/index.js.map +1 -1
  136. package/dist/orchestrator/reaper.d.ts +24 -0
  137. package/dist/orchestrator/reaper.d.ts.map +1 -1
  138. package/dist/orchestrator/reaper.js +117 -0
  139. package/dist/orchestrator/reaper.js.map +1 -1
  140. package/dist/ports/environment.d.ts +83 -0
  141. package/dist/ports/environment.d.ts.map +1 -0
  142. package/dist/ports/environment.js +2 -0
  143. package/dist/ports/environment.js.map +1 -0
  144. package/dist/ports/fleet.d.ts +68 -1
  145. package/dist/ports/fleet.d.ts.map +1 -1
  146. package/dist/ports/index.d.ts +3 -2
  147. package/dist/ports/index.d.ts.map +1 -1
  148. package/dist/ports/mount.d.ts +9 -0
  149. package/dist/ports/mount.d.ts.map +1 -1
  150. package/dist/ports/state.d.ts +17 -1
  151. package/dist/ports/state.d.ts.map +1 -1
  152. package/dist/ports/worktree.d.ts +14 -0
  153. package/dist/ports/worktree.d.ts.map +1 -1
  154. package/dist/state/file-state-store.js +28 -1
  155. package/dist/state/file-state-store.js.map +1 -1
  156. package/dist/subscriptions/index.d.ts +2 -0
  157. package/dist/subscriptions/index.d.ts.map +1 -1
  158. package/dist/subscriptions/index.js +1 -0
  159. package/dist/subscriptions/index.js.map +1 -1
  160. package/dist/subscriptions/resource-subscriptions.d.ts +77 -0
  161. package/dist/subscriptions/resource-subscriptions.d.ts.map +1 -0
  162. package/dist/subscriptions/resource-subscriptions.js +91 -0
  163. package/dist/subscriptions/resource-subscriptions.js.map +1 -0
  164. package/dist/testing/fakes.d.ts +9 -1
  165. package/dist/testing/fakes.d.ts.map +1 -1
  166. package/dist/testing/fakes.js +40 -0
  167. package/dist/testing/fakes.js.map +1 -1
  168. package/dist/triage/schema.d.ts +32 -32
  169. package/dist/types.d.ts +4 -1
  170. package/dist/types.d.ts.map +1 -1
  171. package/package.json +18 -4
  172. package/schemas/kubernetes-environment-stack.schema.json +86 -0
  173. package/schemas/verification-stack.schema.json +292 -0
@@ -0,0 +1,243 @@
1
+ import { z } from 'zod';
2
+ export declare const KubernetesDeploymentSchema: z.ZodDiscriminatedUnion<"strategy", [z.ZodObject<{
3
+ strategy: z.ZodLiteral<"helm">;
4
+ chart: z.ZodEffects<z.ZodString, string, string>;
5
+ release: z.ZodOptional<z.ZodString>;
6
+ valuesFiles: z.ZodDefault<z.ZodArray<z.ZodEffects<z.ZodString, string, string>, "many">>;
7
+ values: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
8
+ }, "strict", z.ZodTypeAny, {
9
+ values: Record<string, string | number | boolean>;
10
+ strategy: "helm";
11
+ chart: string;
12
+ valuesFiles: string[];
13
+ release?: string | undefined;
14
+ }, {
15
+ strategy: "helm";
16
+ chart: string;
17
+ values?: Record<string, string | number | boolean> | undefined;
18
+ release?: string | undefined;
19
+ valuesFiles?: string[] | undefined;
20
+ }>, z.ZodObject<{
21
+ strategy: z.ZodLiteral<"kustomize">;
22
+ path: z.ZodEffects<z.ZodString, string, string>;
23
+ }, "strict", z.ZodTypeAny, {
24
+ path: string;
25
+ strategy: "kustomize";
26
+ }, {
27
+ path: string;
28
+ strategy: "kustomize";
29
+ }>, z.ZodObject<{
30
+ strategy: z.ZodLiteral<"manifests">;
31
+ paths: z.ZodArray<z.ZodEffects<z.ZodString, string, string>, "many">;
32
+ }, "strict", z.ZodTypeAny, {
33
+ strategy: "manifests";
34
+ paths: string[];
35
+ }, {
36
+ strategy: "manifests";
37
+ paths: string[];
38
+ }>]>;
39
+ export declare const KubernetesEndpointSchema: z.ZodObject<{
40
+ name: z.ZodString;
41
+ service: z.ZodString;
42
+ port: z.ZodNumber;
43
+ protocol: z.ZodDefault<z.ZodEnum<["http", "https"]>>;
44
+ path: z.ZodDefault<z.ZodString>;
45
+ ingressUrl: z.ZodOptional<z.ZodString>;
46
+ }, "strict", z.ZodTypeAny, {
47
+ path: string;
48
+ port: number;
49
+ name: string;
50
+ service: string;
51
+ protocol: "http" | "https";
52
+ ingressUrl?: string | undefined;
53
+ }, {
54
+ port: number;
55
+ name: string;
56
+ service: string;
57
+ path?: string | undefined;
58
+ protocol?: "http" | "https" | undefined;
59
+ ingressUrl?: string | undefined;
60
+ }>;
61
+ export declare const ReferencedKubernetesSecretSchema: z.ZodEffects<z.ZodObject<{
62
+ name: z.ZodString;
63
+ key: z.ZodString;
64
+ secretRef: z.ZodString;
65
+ }, "strict", z.ZodTypeAny, {
66
+ key: string;
67
+ secretRef: string;
68
+ name: string;
69
+ }, {
70
+ key: string;
71
+ secretRef: string;
72
+ name: string;
73
+ }>, {
74
+ key: string;
75
+ secretRef: string;
76
+ name: string;
77
+ }, {
78
+ key: string;
79
+ secretRef: string;
80
+ name: string;
81
+ }>;
82
+ /** Kubernetes slice of the repository-owned verification-stack contract. */
83
+ export declare const KubernetesStackDescriptorSchema: z.ZodObject<{
84
+ apiVersion: z.ZodDefault<z.ZodLiteral<"factory.agentworkforce.dev/v1alpha1">>;
85
+ name: z.ZodString;
86
+ deployKind: z.ZodLiteral<"kubernetes">;
87
+ target: z.ZodDefault<z.ZodEnum<["byoc", "managed"]>>;
88
+ deployment: z.ZodDiscriminatedUnion<"strategy", [z.ZodObject<{
89
+ strategy: z.ZodLiteral<"helm">;
90
+ chart: z.ZodEffects<z.ZodString, string, string>;
91
+ release: z.ZodOptional<z.ZodString>;
92
+ valuesFiles: z.ZodDefault<z.ZodArray<z.ZodEffects<z.ZodString, string, string>, "many">>;
93
+ values: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
94
+ }, "strict", z.ZodTypeAny, {
95
+ values: Record<string, string | number | boolean>;
96
+ strategy: "helm";
97
+ chart: string;
98
+ valuesFiles: string[];
99
+ release?: string | undefined;
100
+ }, {
101
+ strategy: "helm";
102
+ chart: string;
103
+ values?: Record<string, string | number | boolean> | undefined;
104
+ release?: string | undefined;
105
+ valuesFiles?: string[] | undefined;
106
+ }>, z.ZodObject<{
107
+ strategy: z.ZodLiteral<"kustomize">;
108
+ path: z.ZodEffects<z.ZodString, string, string>;
109
+ }, "strict", z.ZodTypeAny, {
110
+ path: string;
111
+ strategy: "kustomize";
112
+ }, {
113
+ path: string;
114
+ strategy: "kustomize";
115
+ }>, z.ZodObject<{
116
+ strategy: z.ZodLiteral<"manifests">;
117
+ paths: z.ZodArray<z.ZodEffects<z.ZodString, string, string>, "many">;
118
+ }, "strict", z.ZodTypeAny, {
119
+ strategy: "manifests";
120
+ paths: string[];
121
+ }, {
122
+ strategy: "manifests";
123
+ paths: string[];
124
+ }>]>;
125
+ endpoints: z.ZodDefault<z.ZodArray<z.ZodObject<{
126
+ name: z.ZodString;
127
+ service: z.ZodString;
128
+ port: z.ZodNumber;
129
+ protocol: z.ZodDefault<z.ZodEnum<["http", "https"]>>;
130
+ path: z.ZodDefault<z.ZodString>;
131
+ ingressUrl: z.ZodOptional<z.ZodString>;
132
+ }, "strict", z.ZodTypeAny, {
133
+ path: string;
134
+ port: number;
135
+ name: string;
136
+ service: string;
137
+ protocol: "http" | "https";
138
+ ingressUrl?: string | undefined;
139
+ }, {
140
+ port: number;
141
+ name: string;
142
+ service: string;
143
+ path?: string | undefined;
144
+ protocol?: "http" | "https" | undefined;
145
+ ingressUrl?: string | undefined;
146
+ }>, "many">>;
147
+ secrets: z.ZodDefault<z.ZodArray<z.ZodEffects<z.ZodObject<{
148
+ name: z.ZodString;
149
+ key: z.ZodString;
150
+ secretRef: z.ZodString;
151
+ }, "strict", z.ZodTypeAny, {
152
+ key: string;
153
+ secretRef: string;
154
+ name: string;
155
+ }, {
156
+ key: string;
157
+ secretRef: string;
158
+ name: string;
159
+ }>, {
160
+ key: string;
161
+ secretRef: string;
162
+ name: string;
163
+ }, {
164
+ key: string;
165
+ secretRef: string;
166
+ name: string;
167
+ }>, "many">>;
168
+ allowClusterScopedResources: z.ZodDefault<z.ZodBoolean>;
169
+ readinessTimeoutMs: z.ZodOptional<z.ZodNumber>;
170
+ }, "strict", z.ZodTypeAny, {
171
+ target: "byoc" | "managed";
172
+ allowClusterScopedResources: boolean;
173
+ name: string;
174
+ apiVersion: "factory.agentworkforce.dev/v1alpha1";
175
+ deployKind: "kubernetes";
176
+ deployment: {
177
+ values: Record<string, string | number | boolean>;
178
+ strategy: "helm";
179
+ chart: string;
180
+ valuesFiles: string[];
181
+ release?: string | undefined;
182
+ } | {
183
+ path: string;
184
+ strategy: "kustomize";
185
+ } | {
186
+ strategy: "manifests";
187
+ paths: string[];
188
+ };
189
+ endpoints: {
190
+ path: string;
191
+ port: number;
192
+ name: string;
193
+ service: string;
194
+ protocol: "http" | "https";
195
+ ingressUrl?: string | undefined;
196
+ }[];
197
+ secrets: {
198
+ key: string;
199
+ secretRef: string;
200
+ name: string;
201
+ }[];
202
+ readinessTimeoutMs?: number | undefined;
203
+ }, {
204
+ name: string;
205
+ deployKind: "kubernetes";
206
+ deployment: {
207
+ strategy: "helm";
208
+ chart: string;
209
+ values?: Record<string, string | number | boolean> | undefined;
210
+ release?: string | undefined;
211
+ valuesFiles?: string[] | undefined;
212
+ } | {
213
+ path: string;
214
+ strategy: "kustomize";
215
+ } | {
216
+ strategy: "manifests";
217
+ paths: string[];
218
+ };
219
+ target?: "byoc" | "managed" | undefined;
220
+ allowClusterScopedResources?: boolean | undefined;
221
+ readinessTimeoutMs?: number | undefined;
222
+ apiVersion?: "factory.agentworkforce.dev/v1alpha1" | undefined;
223
+ endpoints?: {
224
+ port: number;
225
+ name: string;
226
+ service: string;
227
+ path?: string | undefined;
228
+ protocol?: "http" | "https" | undefined;
229
+ ingressUrl?: string | undefined;
230
+ }[] | undefined;
231
+ secrets?: {
232
+ key: string;
233
+ secretRef: string;
234
+ name: string;
235
+ }[] | undefined;
236
+ }>;
237
+ export type KubernetesDeployment = z.output<typeof KubernetesDeploymentSchema>;
238
+ export type KubernetesEndpoint = z.output<typeof KubernetesEndpointSchema>;
239
+ export type ReferencedKubernetesSecret = z.output<typeof ReferencedKubernetesSecretSchema>;
240
+ export type KubernetesStackDescriptor = z.output<typeof KubernetesStackDescriptorSchema>;
241
+ export type KubernetesStackDescriptorInput = z.input<typeof KubernetesStackDescriptorSchema>;
242
+ export declare function loadKubernetesStackDescriptor(path: string): Promise<KubernetesStackDescriptor>;
243
+ //# sourceMappingURL=stack-descriptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack-descriptor.d.ts","sourceRoot":"","sources":["../../src/environments/stack-descriptor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AA0BvB,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAIrC,CAAA;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;EAO1B,CAAA;AAEX,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;EAmB3C,CAAA;AAEF,4EAA4E;AAC5E,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUjC,CAAA;AAEX,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,0BAA0B,CAAC,CAAA;AAC9E,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAC1E,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,gCAAgC,CAAC,CAAA;AAC1F,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,+BAA+B,CAAC,CAAA;AACxF,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAA;AAE5F,wBAAsB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAiBpG"}
@@ -0,0 +1,88 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { parse as parseYaml } from 'yaml';
3
+ import { z } from 'zod';
4
+ const relativePathSchema = z.string().trim().min(1).superRefine((value, context) => {
5
+ if (value.startsWith('/') || value.split(/[\\/]/u).includes('..')) {
6
+ context.addIssue({ code: z.ZodIssueCode.custom, message: 'must stay within the repository checkout' });
7
+ }
8
+ });
9
+ const helmDeploymentSchema = z.object({
10
+ strategy: z.literal('helm'),
11
+ chart: relativePathSchema,
12
+ release: z.string().trim().min(1).max(53).optional(),
13
+ valuesFiles: z.array(relativePathSchema).default([]),
14
+ values: z.record(z.string(), z.union([z.string(), z.number(), z.boolean()])).default({}),
15
+ }).strict();
16
+ const kustomizeDeploymentSchema = z.object({
17
+ strategy: z.literal('kustomize'),
18
+ path: relativePathSchema,
19
+ }).strict();
20
+ const manifestsDeploymentSchema = z.object({
21
+ strategy: z.literal('manifests'),
22
+ paths: z.array(relativePathSchema).min(1),
23
+ }).strict();
24
+ export const KubernetesDeploymentSchema = z.discriminatedUnion('strategy', [
25
+ helmDeploymentSchema,
26
+ kustomizeDeploymentSchema,
27
+ manifestsDeploymentSchema,
28
+ ]);
29
+ export const KubernetesEndpointSchema = z.object({
30
+ name: z.string().trim().min(1).max(63),
31
+ service: z.string().trim().min(1).max(253),
32
+ port: z.number().int().min(1).max(65_535),
33
+ protocol: z.enum(['http', 'https']).default('http'),
34
+ path: z.string().startsWith('/').default('/'),
35
+ ingressUrl: z.string().url().optional(),
36
+ }).strict();
37
+ export const ReferencedKubernetesSecretSchema = z.object({
38
+ name: z.string().trim().min(1).max(63),
39
+ key: z.string().trim().min(1).max(253),
40
+ secretRef: z.string().trim().min(1).max(512),
41
+ }).strict().superRefine((secret, context) => {
42
+ if (!/^[a-z][a-z0-9+.-]*:\S+$/iu.test(secret.secretRef)) {
43
+ context.addIssue({
44
+ code: z.ZodIssueCode.custom,
45
+ path: ['secretRef'],
46
+ message: 'must be an opaque scheme-prefixed secret-manager reference',
47
+ });
48
+ }
49
+ if (/-----BEGIN|password\s*=|token\s*=|\{\s*"/iu.test(secret.secretRef)) {
50
+ context.addIssue({
51
+ code: z.ZodIssueCode.custom,
52
+ path: ['secretRef'],
53
+ message: 'must be an opaque secret-manager reference, never inline secret data',
54
+ });
55
+ }
56
+ });
57
+ /** Kubernetes slice of the repository-owned verification-stack contract. */
58
+ export const KubernetesStackDescriptorSchema = z.object({
59
+ apiVersion: z.literal('factory.agentworkforce.dev/v1alpha1').default('factory.agentworkforce.dev/v1alpha1'),
60
+ name: z.string().trim().min(1).max(63),
61
+ deployKind: z.literal('kubernetes'),
62
+ target: z.enum(['byoc', 'managed']).default('byoc'),
63
+ deployment: KubernetesDeploymentSchema,
64
+ endpoints: z.array(KubernetesEndpointSchema).default([]),
65
+ secrets: z.array(ReferencedKubernetesSecretSchema).default([]),
66
+ allowClusterScopedResources: z.boolean().default(false),
67
+ readinessTimeoutMs: z.number().int().min(1_000).max(60 * 60_000).optional(),
68
+ }).strict();
69
+ export async function loadKubernetesStackDescriptor(path) {
70
+ const source = await readFile(path, 'utf8');
71
+ let value;
72
+ try {
73
+ value = parseYaml(source);
74
+ }
75
+ catch (error) {
76
+ throw new Error(`Could not parse verification stack descriptor ${path}: ${errorMessage(error)}`);
77
+ }
78
+ const parsed = KubernetesStackDescriptorSchema.safeParse(value);
79
+ if (!parsed.success) {
80
+ const issues = parsed.error.issues
81
+ .map((issue) => `${issue.path.join('.') || '<root>'}: ${issue.message}`)
82
+ .join('; ');
83
+ throw new Error(`Invalid verification stack descriptor ${path}: ${issues}`);
84
+ }
85
+ return parsed.data;
86
+ }
87
+ const errorMessage = (error) => error instanceof Error ? error.message : String(error);
88
+ //# sourceMappingURL=stack-descriptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack-descriptor.js","sourceRoot":"","sources":["../../src/environments/stack-descriptor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ import type { FactoryEventReporter } from '../ports/observability.js';
2
+ import type { Logger } from '../ports/system.js';
3
+ import type { VerificationEnvironment, VerificationEnvironmentProvider } from '../ports/environment.js';
4
+ import type { LoadMeasurements, LoadSloViolation } from './load-harness.js';
5
+ import { type StackDeployment } from './verification-stack-deployer.js';
6
+ import { type ResolvedVerificationStack } from './verification-stack.js';
7
+ export declare const VERIFICATION_EVIDENCE_CONTRACT: "factory.verification.evidence.v1";
8
+ export declare const DEFAULT_VERIFICATION_DESCRIPTOR = ".factory/verification-stack.yaml";
9
+ export type VerificationStageStatus = 'pass' | 'fail' | 'skipped' | 'timed_out';
10
+ export interface VerificationStageEvidence {
11
+ status: VerificationStageStatus;
12
+ durationMs: number;
13
+ error?: string;
14
+ }
15
+ export interface VerificationE2eEvidence extends VerificationStageEvidence {
16
+ exitCode?: number;
17
+ }
18
+ export interface VerificationLoadEvidence extends VerificationStageEvidence {
19
+ measured?: LoadMeasurements;
20
+ violations?: LoadSloViolation[];
21
+ }
22
+ export interface VerificationEvidence {
23
+ contract: typeof VERIFICATION_EVIDENCE_CONTRACT;
24
+ runId: string;
25
+ repository: string;
26
+ repositoryPath: string;
27
+ descriptorPath: string;
28
+ expectedHeadSha?: string;
29
+ environmentId?: string;
30
+ namespace?: string;
31
+ startedAt: string;
32
+ completedAt: string;
33
+ timedOut: boolean;
34
+ stages: {
35
+ resolve: VerificationStageEvidence;
36
+ provision: VerificationStageEvidence;
37
+ deploy: VerificationStageEvidence;
38
+ e2e: VerificationE2eEvidence;
39
+ load: VerificationLoadEvidence;
40
+ evaluate: VerificationStageEvidence;
41
+ teardown: VerificationStageEvidence;
42
+ };
43
+ }
44
+ export interface VerificationVerdict {
45
+ status: 'pass' | 'fail';
46
+ passed: boolean;
47
+ reason: string;
48
+ evidence: VerificationEvidence;
49
+ }
50
+ export interface VerificationGateInput {
51
+ repository: string;
52
+ repositoryPath: string;
53
+ issueKey?: string;
54
+ expectedHeadSha?: string;
55
+ descriptorPath?: string;
56
+ runId?: string;
57
+ }
58
+ export interface VerificationGate {
59
+ verify(input: VerificationGateInput): Promise<VerificationVerdict>;
60
+ }
61
+ export interface E2eCommandInput {
62
+ image: string;
63
+ environment: VerificationEnvironment;
64
+ command: string;
65
+ args: string[];
66
+ cwd: string;
67
+ env: Record<string, string>;
68
+ timeoutMs: number;
69
+ signal: AbortSignal;
70
+ }
71
+ export interface E2eCommandResult {
72
+ exitCode: number;
73
+ stdout: string;
74
+ stderr: string;
75
+ durationMs: number;
76
+ }
77
+ export type E2eCommandRunner = (input: E2eCommandInput) => Promise<E2eCommandResult>;
78
+ export type VerificationRevisionResolver = (repositoryPath: string) => Promise<string>;
79
+ export interface VerificationLoadResult {
80
+ status: 'pass' | 'fail';
81
+ measured: LoadMeasurements;
82
+ violations: LoadSloViolation[];
83
+ }
84
+ export type VerificationLoadRunner = (environment: VerificationEnvironment, stack: ResolvedVerificationStack, runId: string, signal?: AbortSignal) => Promise<VerificationLoadResult>;
85
+ export interface VerificationStackDeployRunner {
86
+ deploy(stack: ResolvedVerificationStack['loaded'], environment: VerificationEnvironment, options?: {
87
+ signal?: AbortSignal;
88
+ }): Promise<StackDeployment>;
89
+ }
90
+ export type VerificationLeaseProvider = Pick<VerificationEnvironmentProvider, 'provision' | 'teardown'>;
91
+ export interface VerificationPipelineOptions {
92
+ descriptorPath?: string;
93
+ environmentProvider?: VerificationLeaseProvider;
94
+ stackDeployer?: VerificationStackDeployRunner;
95
+ e2eRunner?: E2eCommandRunner;
96
+ loadRunner?: VerificationLoadRunner;
97
+ revisionResolver?: VerificationRevisionResolver;
98
+ reporter?: FactoryEventReporter;
99
+ logger?: Logger;
100
+ maxConcurrentEnvironments?: number;
101
+ maxRunTimeoutMs?: number;
102
+ maxEnvironmentTtlMs?: number;
103
+ maxTeardownTimeoutMs?: number;
104
+ now?: () => Date;
105
+ runId?: () => string;
106
+ }
107
+ export declare class VerificationPipeline implements VerificationGate {
108
+ #private;
109
+ constructor(options?: VerificationPipelineOptions);
110
+ verify(input: VerificationGateInput): Promise<VerificationVerdict>;
111
+ }
112
+ export declare function resolveGitHeadRevision(repositoryPath: string): Promise<string>;
113
+ export declare function runE2eCommand(input: E2eCommandInput): Promise<E2eCommandResult>;
114
+ export declare class VerificationTimeoutError extends Error {
115
+ constructor(message: string);
116
+ }
117
+ //# sourceMappingURL=verification-pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification-pipeline.d.ts","sourceRoot":"","sources":["../../src/environments/verification-pipeline.ts"],"names":[],"mappings":"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"}