@cat-factory/contracts 0.292.2 → 0.294.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 (35) hide show
  1. package/dist/environments-kubernetes.d.ts +32 -0
  2. package/dist/environments-kubernetes.d.ts.map +1 -1
  3. package/dist/environments-kubernetes.js +8 -0
  4. package/dist/environments-kubernetes.js.map +1 -1
  5. package/dist/environments.d.ts +22 -0
  6. package/dist/environments.d.ts.map +1 -1
  7. package/dist/index.d.ts +1 -0
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +1 -0
  10. package/dist/index.js.map +1 -1
  11. package/dist/public-api.d.ts +48 -0
  12. package/dist/public-api.d.ts.map +1 -1
  13. package/dist/public-api.js +12 -0
  14. package/dist/public-api.js.map +1 -1
  15. package/dist/public-provisioning.d.ts +698 -0
  16. package/dist/public-provisioning.d.ts.map +1 -0
  17. package/dist/public-provisioning.js +431 -0
  18. package/dist/public-provisioning.js.map +1 -0
  19. package/dist/routes/environmentUserHandlers.d.ts +6 -0
  20. package/dist/routes/environmentUserHandlers.d.ts.map +1 -1
  21. package/dist/routes/environments.d.ts +21 -0
  22. package/dist/routes/environments.d.ts.map +1 -1
  23. package/dist/routes/index.d.ts +1 -0
  24. package/dist/routes/index.d.ts.map +1 -1
  25. package/dist/routes/index.js +1 -0
  26. package/dist/routes/index.js.map +1 -1
  27. package/dist/routes/public-api.d.ts +14 -0
  28. package/dist/routes/public-api.d.ts.map +1 -1
  29. package/dist/routes/public-board.d.ts +14 -0
  30. package/dist/routes/public-board.d.ts.map +1 -1
  31. package/dist/routes/public-provisioning.d.ts +540 -0
  32. package/dist/routes/public-provisioning.d.ts.map +1 -0
  33. package/dist/routes/public-provisioning.js +128 -0
  34. package/dist/routes/public-provisioning.js.map +1 -0
  35. package/package.json +1 -1
@@ -0,0 +1,540 @@
1
+ /**
2
+ * Create a repository and adapt it with the bootstrapper agent.
3
+ *
4
+ * Asynchronous by construction, like every other agent run on this surface: it answers 201 with a
5
+ * job to poll rather than blocking for the minutes a container takes. The job's `serviceId` is the
6
+ * board frame the run materialises, so a caller can file work against the service before the
7
+ * repository itself has finished being written.
8
+ */
9
+ export declare const startPublicRepoBootstrapContract: {
10
+ readonly method: "post";
11
+ readonly pathResolver: () => string;
12
+ readonly requestBodySchema: import("valibot").SchemaWithPipe<readonly [import("valibot").ObjectSchema<{
13
+ readonly repoName: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").TrimAction, import("valibot").RegexAction<string, "Only letters, digits, '.', '_' and '-' are allowed">, import("valibot").MinLengthAction<string, 1, undefined>, import("valibot").MaxLengthAction<string, 100, undefined>]>;
14
+ readonly type: import("valibot").OptionalSchema<import("valibot").PicklistSchema<["service", "frontend", "library", "document"], undefined>, undefined>;
15
+ readonly description: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MaxLengthAction<string, 2000, undefined>]>, undefined>;
16
+ readonly private: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, undefined>;
17
+ readonly instructions: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MaxLengthAction<string, 8000, undefined>]>, undefined>;
18
+ readonly referenceArchitectureId: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MinLengthAction<string, 1, undefined>]>, undefined>;
19
+ }, undefined>, import("valibot").CheckAction<{
20
+ repoName: string;
21
+ type?: "document" | "frontend" | "library" | "service" | undefined;
22
+ description?: string | undefined;
23
+ private?: boolean | undefined;
24
+ instructions?: string | undefined;
25
+ referenceArchitectureId?: string | undefined;
26
+ }, "Provide a reference architecture or freeform instructions to bootstrap from.">]>;
27
+ readonly responsesByStatusCode: {
28
+ readonly '4xx': import("valibot").ObjectSchema<{
29
+ readonly error: import("valibot").ObjectSchema<{
30
+ readonly code: import("valibot").StringSchema<undefined>;
31
+ readonly message: import("valibot").StringSchema<undefined>;
32
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
33
+ readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
34
+ readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
35
+ readonly message: import("valibot").StringSchema<undefined>;
36
+ }, undefined>, undefined>, undefined>;
37
+ }, undefined>;
38
+ }, undefined>;
39
+ readonly '5xx': import("valibot").ObjectSchema<{
40
+ readonly error: import("valibot").ObjectSchema<{
41
+ readonly code: import("valibot").StringSchema<undefined>;
42
+ readonly message: import("valibot").StringSchema<undefined>;
43
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
44
+ readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
45
+ readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
46
+ readonly message: import("valibot").StringSchema<undefined>;
47
+ }, undefined>, undefined>, undefined>;
48
+ }, undefined>;
49
+ }, undefined>;
50
+ readonly 201: import("valibot").ObjectSchema<{
51
+ readonly jobId: import("valibot").StringSchema<undefined>;
52
+ readonly status: import("valibot").PicklistSchema<["pending", "running", "succeeded", "failed"], undefined>;
53
+ readonly repoName: import("valibot").StringSchema<undefined>;
54
+ readonly repoOwner: import("valibot").NullableSchema<import("valibot").StringSchema<undefined>, undefined>;
55
+ readonly repoUrl: import("valibot").NullableSchema<import("valibot").StringSchema<undefined>, undefined>;
56
+ readonly serviceId: import("valibot").NullableSchema<import("valibot").StringSchema<undefined>, undefined>;
57
+ readonly progress: import("valibot").NullableSchema<import("valibot").ObjectSchema<{
58
+ readonly completed: import("valibot").NumberSchema<undefined>;
59
+ readonly inProgress: import("valibot").NumberSchema<undefined>;
60
+ readonly total: import("valibot").NumberSchema<undefined>;
61
+ readonly items: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
62
+ readonly label: import("valibot").StringSchema<undefined>;
63
+ readonly status: import("valibot").PicklistSchema<["pending", "in_progress", "completed"], undefined>;
64
+ }, undefined>, undefined>, undefined>;
65
+ }, undefined>, undefined>;
66
+ readonly error: import("valibot").NullableSchema<import("valibot").StringSchema<undefined>, undefined>;
67
+ readonly failureKind: import("valibot").NullableSchema<import("valibot").PicklistSchema<["preflight", "dispatch", "environment", "evicted", "timeout", "agent", "job_failed", "rejected", "companion_rejected", "stalled", "cancelled", "unknown"], undefined>, undefined>;
68
+ readonly failureDetail: import("valibot").NullableSchema<import("valibot").StringSchema<undefined>, undefined>;
69
+ readonly failureHint: import("valibot").NullableSchema<import("valibot").StringSchema<undefined>, undefined>;
70
+ readonly createdAt: import("valibot").NumberSchema<undefined>;
71
+ readonly updatedAt: import("valibot").NumberSchema<undefined>;
72
+ }, undefined>;
73
+ };
74
+ } & {
75
+ readonly minScope: "admin";
76
+ };
77
+ /** Poll one bootstrap run. Idempotent, and the only way to learn a run's outcome. */
78
+ export declare const getPublicRepoBootstrapContract: {
79
+ readonly method: "get";
80
+ readonly requestPathParamsSchema: import("valibot").ObjectSchema<{
81
+ jobId: import("valibot").StringSchema<undefined>;
82
+ }, undefined> & import("@toad-contracts/core").StandardObjectKeysV1<unknown, unknown>;
83
+ readonly pathResolver: ({ jobId }: {
84
+ jobId: string;
85
+ }) => string;
86
+ readonly responsesByStatusCode: {
87
+ readonly '4xx': import("valibot").ObjectSchema<{
88
+ readonly error: import("valibot").ObjectSchema<{
89
+ readonly code: import("valibot").StringSchema<undefined>;
90
+ readonly message: import("valibot").StringSchema<undefined>;
91
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
92
+ readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
93
+ readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
94
+ readonly message: import("valibot").StringSchema<undefined>;
95
+ }, undefined>, undefined>, undefined>;
96
+ }, undefined>;
97
+ }, undefined>;
98
+ readonly '5xx': import("valibot").ObjectSchema<{
99
+ readonly error: import("valibot").ObjectSchema<{
100
+ readonly code: import("valibot").StringSchema<undefined>;
101
+ readonly message: import("valibot").StringSchema<undefined>;
102
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
103
+ readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
104
+ readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
105
+ readonly message: import("valibot").StringSchema<undefined>;
106
+ }, undefined>, undefined>, undefined>;
107
+ }, undefined>;
108
+ }, undefined>;
109
+ readonly 200: import("valibot").ObjectSchema<{
110
+ readonly jobId: import("valibot").StringSchema<undefined>;
111
+ readonly status: import("valibot").PicklistSchema<["pending", "running", "succeeded", "failed"], undefined>;
112
+ readonly repoName: import("valibot").StringSchema<undefined>;
113
+ readonly repoOwner: import("valibot").NullableSchema<import("valibot").StringSchema<undefined>, undefined>;
114
+ readonly repoUrl: import("valibot").NullableSchema<import("valibot").StringSchema<undefined>, undefined>;
115
+ readonly serviceId: import("valibot").NullableSchema<import("valibot").StringSchema<undefined>, undefined>;
116
+ readonly progress: import("valibot").NullableSchema<import("valibot").ObjectSchema<{
117
+ readonly completed: import("valibot").NumberSchema<undefined>;
118
+ readonly inProgress: import("valibot").NumberSchema<undefined>;
119
+ readonly total: import("valibot").NumberSchema<undefined>;
120
+ readonly items: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
121
+ readonly label: import("valibot").StringSchema<undefined>;
122
+ readonly status: import("valibot").PicklistSchema<["pending", "in_progress", "completed"], undefined>;
123
+ }, undefined>, undefined>, undefined>;
124
+ }, undefined>, undefined>;
125
+ readonly error: import("valibot").NullableSchema<import("valibot").StringSchema<undefined>, undefined>;
126
+ readonly failureKind: import("valibot").NullableSchema<import("valibot").PicklistSchema<["preflight", "dispatch", "environment", "evicted", "timeout", "agent", "job_failed", "rejected", "companion_rejected", "stalled", "cancelled", "unknown"], undefined>, undefined>;
127
+ readonly failureDetail: import("valibot").NullableSchema<import("valibot").StringSchema<undefined>, undefined>;
128
+ readonly failureHint: import("valibot").NullableSchema<import("valibot").StringSchema<undefined>, undefined>;
129
+ readonly createdAt: import("valibot").NumberSchema<undefined>;
130
+ readonly updatedAt: import("valibot").NumberSchema<undefined>;
131
+ }, undefined>;
132
+ };
133
+ } & {
134
+ readonly minScope: "admin";
135
+ };
136
+ /**
137
+ * Probe a candidate connection without persisting it.
138
+ *
139
+ * Worth its own endpoint rather than letting the register call find out, because the two failures
140
+ * surface in completely different places: an unreachable apiserver or an expired token discovered
141
+ * here is a setup error a caller can act on immediately, where the same fault discovered later
142
+ * surfaces on the `deployer` step of a run that has already paid for a design pass and an
143
+ * implementation.
144
+ */
145
+ export declare const testPublicEnvironmentConnectionContract: {
146
+ readonly method: "post";
147
+ readonly pathResolver: () => string;
148
+ readonly requestBodySchema: import("valibot").ObjectSchema<{
149
+ readonly connection: import("valibot").VariantSchema<"engine", [import("valibot").ObjectSchema<{
150
+ readonly engine: import("valibot").LiteralSchema<"kubernetes", undefined>;
151
+ readonly kubernetes: import("valibot").ObjectSchema<{
152
+ readonly label: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").TrimAction, import("valibot").MinLengthAction<string, 1, undefined>, import("valibot").MaxLengthAction<string, 120, undefined>]>;
153
+ readonly apiServerUrl: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").UrlAction<string, undefined>, import("valibot").MaxLengthAction<string, 500, undefined>]>;
154
+ readonly caCertPem: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
155
+ readonly insecureSkipTlsVerify: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, undefined>;
156
+ readonly namespaceTemplate: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").TrimAction, import("valibot").MinLengthAction<string, 1, undefined>, import("valibot").MaxLengthAction<string, 200, undefined>]>, undefined>;
157
+ readonly url: import("valibot").VariantSchema<"source", [import("valibot").ObjectSchema<{
158
+ readonly source: import("valibot").LiteralSchema<"ingressTemplate", undefined>;
159
+ readonly hostTemplate: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").TrimAction, import("valibot").MinLengthAction<string, 1, undefined>, import("valibot").MaxLengthAction<string, 500, undefined>]>;
160
+ readonly port: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").NumberSchema<undefined>, import("valibot").IntegerAction<number, undefined>, import("valibot").MinValueAction<number, 1, undefined>, import("valibot").MaxValueAction<number, 65535, undefined>]>, undefined>;
161
+ readonly scheme: import("valibot").OptionalSchema<import("valibot").PicklistSchema<["http", "https"], undefined>, undefined>;
162
+ }, undefined>, import("valibot").ObjectSchema<{
163
+ readonly source: import("valibot").LiteralSchema<"ingressStatus", undefined>;
164
+ readonly ingressName: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").TrimAction, import("valibot").MinLengthAction<string, 1, undefined>]>, undefined>;
165
+ readonly scheme: import("valibot").OptionalSchema<import("valibot").PicklistSchema<["http", "https"], undefined>, undefined>;
166
+ }, undefined>, import("valibot").ObjectSchema<{
167
+ readonly source: import("valibot").LiteralSchema<"serviceStatus", undefined>;
168
+ readonly serviceName: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").TrimAction, import("valibot").MinLengthAction<string, 1, undefined>]>;
169
+ readonly port: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").NumberSchema<undefined>, import("valibot").IntegerAction<number, undefined>, import("valibot").MinValueAction<number, 1, undefined>, import("valibot").MaxValueAction<number, 65535, undefined>]>, undefined>;
170
+ readonly scheme: import("valibot").OptionalSchema<import("valibot").PicklistSchema<["http", "https"], undefined>, undefined>;
171
+ }, undefined>, import("valibot").ObjectSchema<{
172
+ readonly source: import("valibot").LiteralSchema<"gatewayStatus", undefined>;
173
+ readonly gatewayName: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").TrimAction, import("valibot").MinLengthAction<string, 1, undefined>]>, undefined>;
174
+ readonly scheme: import("valibot").OptionalSchema<import("valibot").PicklistSchema<["http", "https"], undefined>, undefined>;
175
+ }, undefined>, import("valibot").ObjectSchema<{
176
+ readonly source: import("valibot").LiteralSchema<"httpRouteStatus", undefined>;
177
+ readonly httpRouteName: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").TrimAction, import("valibot").MinLengthAction<string, 1, undefined>]>, undefined>;
178
+ readonly scheme: import("valibot").OptionalSchema<import("valibot").PicklistSchema<["http", "https"], undefined>, undefined>;
179
+ }, undefined>], undefined>;
180
+ readonly imageTemplate: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").TrimAction, import("valibot").MaxLengthAction<string, 500, undefined>]>, undefined>;
181
+ readonly defaultTtlMs: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").NumberSchema<undefined>, import("valibot").MinValueAction<number, 60000, undefined>]>, undefined>;
182
+ readonly labels: import("valibot").OptionalSchema<import("valibot").RecordSchema<import("valibot").StringSchema<undefined>, import("valibot").StringSchema<undefined>, undefined>, undefined>;
183
+ readonly annotations: import("valibot").OptionalSchema<import("valibot").RecordSchema<import("valibot").StringSchema<undefined>, import("valibot").StringSchema<undefined>, undefined>, undefined>;
184
+ }, undefined>;
185
+ }, undefined>], undefined>;
186
+ readonly secrets: import("valibot").OptionalSchema<import("valibot").RecordSchema<import("valibot").StringSchema<undefined>, import("valibot").StringSchema<undefined>, undefined>, undefined>;
187
+ }, undefined>;
188
+ readonly responsesByStatusCode: {
189
+ readonly '4xx': import("valibot").ObjectSchema<{
190
+ readonly error: import("valibot").ObjectSchema<{
191
+ readonly code: import("valibot").StringSchema<undefined>;
192
+ readonly message: import("valibot").StringSchema<undefined>;
193
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
194
+ readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
195
+ readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
196
+ readonly message: import("valibot").StringSchema<undefined>;
197
+ }, undefined>, undefined>, undefined>;
198
+ }, undefined>;
199
+ }, undefined>;
200
+ readonly '5xx': import("valibot").ObjectSchema<{
201
+ readonly error: import("valibot").ObjectSchema<{
202
+ readonly code: import("valibot").StringSchema<undefined>;
203
+ readonly message: import("valibot").StringSchema<undefined>;
204
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
205
+ readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
206
+ readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
207
+ readonly message: import("valibot").StringSchema<undefined>;
208
+ }, undefined>, undefined>, undefined>;
209
+ }, undefined>;
210
+ }, undefined>;
211
+ readonly 200: import("valibot").ObjectSchema<{
212
+ readonly ok: import("valibot").BooleanSchema<undefined>;
213
+ readonly message: import("valibot").NullableSchema<import("valibot").StringSchema<undefined>, undefined>;
214
+ }, undefined>;
215
+ };
216
+ } & {
217
+ readonly minScope: "admin";
218
+ };
219
+ /**
220
+ * Bind the workspace's environment provisioning to a cluster. Idempotent: re-connecting replaces.
221
+ *
222
+ * The path is `/connections` rather than the internal `/handlers`: a caller is describing a
223
+ * connection to infrastructure, where "handler" names the engine-side object that services it, and
224
+ * a frozen surface should carry the caller's vocabulary rather than the engine's.
225
+ */
226
+ export declare const connectPublicEnvironmentContract: {
227
+ readonly method: "post";
228
+ readonly pathResolver: () => string;
229
+ readonly requestBodySchema: import("valibot").ObjectSchema<{
230
+ readonly connection: import("valibot").VariantSchema<"engine", [import("valibot").ObjectSchema<{
231
+ readonly engine: import("valibot").LiteralSchema<"kubernetes", undefined>;
232
+ readonly kubernetes: import("valibot").ObjectSchema<{
233
+ readonly label: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").TrimAction, import("valibot").MinLengthAction<string, 1, undefined>, import("valibot").MaxLengthAction<string, 120, undefined>]>;
234
+ readonly apiServerUrl: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").UrlAction<string, undefined>, import("valibot").MaxLengthAction<string, 500, undefined>]>;
235
+ readonly caCertPem: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
236
+ readonly insecureSkipTlsVerify: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, undefined>;
237
+ readonly namespaceTemplate: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").TrimAction, import("valibot").MinLengthAction<string, 1, undefined>, import("valibot").MaxLengthAction<string, 200, undefined>]>, undefined>;
238
+ readonly url: import("valibot").VariantSchema<"source", [import("valibot").ObjectSchema<{
239
+ readonly source: import("valibot").LiteralSchema<"ingressTemplate", undefined>;
240
+ readonly hostTemplate: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").TrimAction, import("valibot").MinLengthAction<string, 1, undefined>, import("valibot").MaxLengthAction<string, 500, undefined>]>;
241
+ readonly port: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").NumberSchema<undefined>, import("valibot").IntegerAction<number, undefined>, import("valibot").MinValueAction<number, 1, undefined>, import("valibot").MaxValueAction<number, 65535, undefined>]>, undefined>;
242
+ readonly scheme: import("valibot").OptionalSchema<import("valibot").PicklistSchema<["http", "https"], undefined>, undefined>;
243
+ }, undefined>, import("valibot").ObjectSchema<{
244
+ readonly source: import("valibot").LiteralSchema<"ingressStatus", undefined>;
245
+ readonly ingressName: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").TrimAction, import("valibot").MinLengthAction<string, 1, undefined>]>, undefined>;
246
+ readonly scheme: import("valibot").OptionalSchema<import("valibot").PicklistSchema<["http", "https"], undefined>, undefined>;
247
+ }, undefined>, import("valibot").ObjectSchema<{
248
+ readonly source: import("valibot").LiteralSchema<"serviceStatus", undefined>;
249
+ readonly serviceName: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").TrimAction, import("valibot").MinLengthAction<string, 1, undefined>]>;
250
+ readonly port: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").NumberSchema<undefined>, import("valibot").IntegerAction<number, undefined>, import("valibot").MinValueAction<number, 1, undefined>, import("valibot").MaxValueAction<number, 65535, undefined>]>, undefined>;
251
+ readonly scheme: import("valibot").OptionalSchema<import("valibot").PicklistSchema<["http", "https"], undefined>, undefined>;
252
+ }, undefined>, import("valibot").ObjectSchema<{
253
+ readonly source: import("valibot").LiteralSchema<"gatewayStatus", undefined>;
254
+ readonly gatewayName: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").TrimAction, import("valibot").MinLengthAction<string, 1, undefined>]>, undefined>;
255
+ readonly scheme: import("valibot").OptionalSchema<import("valibot").PicklistSchema<["http", "https"], undefined>, undefined>;
256
+ }, undefined>, import("valibot").ObjectSchema<{
257
+ readonly source: import("valibot").LiteralSchema<"httpRouteStatus", undefined>;
258
+ readonly httpRouteName: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").TrimAction, import("valibot").MinLengthAction<string, 1, undefined>]>, undefined>;
259
+ readonly scheme: import("valibot").OptionalSchema<import("valibot").PicklistSchema<["http", "https"], undefined>, undefined>;
260
+ }, undefined>], undefined>;
261
+ readonly imageTemplate: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").TrimAction, import("valibot").MaxLengthAction<string, 500, undefined>]>, undefined>;
262
+ readonly defaultTtlMs: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").NumberSchema<undefined>, import("valibot").MinValueAction<number, 60000, undefined>]>, undefined>;
263
+ readonly labels: import("valibot").OptionalSchema<import("valibot").RecordSchema<import("valibot").StringSchema<undefined>, import("valibot").StringSchema<undefined>, undefined>, undefined>;
264
+ readonly annotations: import("valibot").OptionalSchema<import("valibot").RecordSchema<import("valibot").StringSchema<undefined>, import("valibot").StringSchema<undefined>, undefined>, undefined>;
265
+ }, undefined>;
266
+ }, undefined>], undefined>;
267
+ readonly secrets: import("valibot").RecordSchema<import("valibot").StringSchema<undefined>, import("valibot").StringSchema<undefined>, undefined>;
268
+ }, undefined>;
269
+ readonly responsesByStatusCode: {
270
+ readonly '4xx': import("valibot").ObjectSchema<{
271
+ readonly error: import("valibot").ObjectSchema<{
272
+ readonly code: import("valibot").StringSchema<undefined>;
273
+ readonly message: import("valibot").StringSchema<undefined>;
274
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
275
+ readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
276
+ readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
277
+ readonly message: import("valibot").StringSchema<undefined>;
278
+ }, undefined>, undefined>, undefined>;
279
+ }, undefined>;
280
+ }, undefined>;
281
+ readonly '5xx': import("valibot").ObjectSchema<{
282
+ readonly error: import("valibot").ObjectSchema<{
283
+ readonly code: import("valibot").StringSchema<undefined>;
284
+ readonly message: import("valibot").StringSchema<undefined>;
285
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
286
+ readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
287
+ readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
288
+ readonly message: import("valibot").StringSchema<undefined>;
289
+ }, undefined>, undefined>, undefined>;
290
+ }, undefined>;
291
+ }, undefined>;
292
+ readonly 201: import("valibot").ObjectSchema<{
293
+ readonly provisionType: import("valibot").StringSchema<undefined>;
294
+ readonly engine: import("valibot").LiteralSchema<"kubernetes", undefined>;
295
+ readonly label: import("valibot").StringSchema<undefined>;
296
+ readonly apiServerUrl: import("valibot").StringSchema<undefined>;
297
+ readonly secretKeys: import("valibot").ArraySchema<import("valibot").StringSchema<undefined>, undefined>;
298
+ }, undefined>;
299
+ };
300
+ } & {
301
+ readonly minScope: "admin";
302
+ };
303
+ /**
304
+ * Patch a service: its authored fields, and where its per-run manifests live.
305
+ *
306
+ * The provisioning half is why this exists. A cluster connection alone provisions nothing, because
307
+ * the platform deliberately keeps "which cluster" (one per workspace) apart from "which manifests"
308
+ * (one set per service), and a caller with no way to declare the second could connect a cluster and
309
+ * still watch every `deployer` step report an empty manifest source.
310
+ *
311
+ * No board COORDINATES here, exactly as `POST /api/v1/services` has none: position, size and
312
+ * reparenting stay off a surface that is frozen forever.
313
+ */
314
+ export declare const updatePublicServiceContract: {
315
+ readonly method: "patch";
316
+ readonly requestPathParamsSchema: import("valibot").ObjectSchema<{
317
+ serviceId: import("valibot").StringSchema<undefined>;
318
+ }, undefined> & import("@toad-contracts/core").StandardObjectKeysV1<unknown, unknown>;
319
+ readonly pathResolver: ({ serviceId }: {
320
+ serviceId: string;
321
+ }) => string;
322
+ readonly requestBodySchema: import("valibot").SchemaWithPipe<readonly [import("valibot").ObjectSchema<{
323
+ readonly title: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").TrimAction, import("valibot").MinLengthAction<string, 1, undefined>, import("valibot").MaxLengthAction<string, 200, undefined>]>, undefined>;
324
+ readonly description: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MaxLengthAction<string, 2000, undefined>]>, undefined>;
325
+ readonly provisioning: import("valibot").OptionalSchema<import("valibot").VariantSchema<"type", [import("valibot").ObjectSchema<{
326
+ readonly type: import("valibot").LiteralSchema<"kubernetes", undefined>;
327
+ readonly manifestSource: import("valibot").VariantSchema<"type", [import("valibot").ObjectSchema<{
328
+ readonly type: import("valibot").LiteralSchema<"colocated", undefined>;
329
+ readonly path: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").TrimAction, import("valibot").MinLengthAction<string, 1, undefined>, import("valibot").MaxLengthAction<string, 500, undefined>]>;
330
+ readonly renderer: import("valibot").OptionalSchema<import("valibot").PicklistSchema<["raw", "kustomize"], undefined>, undefined>;
331
+ }, undefined>, import("valibot").ObjectSchema<{
332
+ readonly type: import("valibot").LiteralSchema<"separate", undefined>;
333
+ readonly repo: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").TrimAction, import("valibot").RegexAction<string, "must be \"owner/repo\"">]>;
334
+ readonly ref: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").TrimAction, import("valibot").MinLengthAction<string, 1, undefined>]>, undefined>;
335
+ readonly path: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").TrimAction, import("valibot").MinLengthAction<string, 1, undefined>, import("valibot").MaxLengthAction<string, 500, undefined>]>;
336
+ readonly renderer: import("valibot").OptionalSchema<import("valibot").PicklistSchema<["raw", "kustomize"], undefined>, undefined>;
337
+ }, undefined>], undefined>;
338
+ }, undefined>], undefined>, undefined>;
339
+ }, undefined>, import("valibot").CheckAction<{
340
+ title?: string | undefined;
341
+ description?: string | undefined;
342
+ provisioning?: {
343
+ type: "kubernetes";
344
+ manifestSource: {
345
+ type: "colocated";
346
+ path: string;
347
+ renderer?: "kustomize" | "raw" | undefined;
348
+ } | {
349
+ type: "separate";
350
+ repo: string;
351
+ ref?: string | undefined;
352
+ path: string;
353
+ renderer?: "kustomize" | "raw" | undefined;
354
+ };
355
+ } | undefined;
356
+ }, "Supply at least one of title, description or provisioning.">]>;
357
+ readonly responsesByStatusCode: {
358
+ readonly '4xx': import("valibot").ObjectSchema<{
359
+ readonly error: import("valibot").ObjectSchema<{
360
+ readonly code: import("valibot").StringSchema<undefined>;
361
+ readonly message: import("valibot").StringSchema<undefined>;
362
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
363
+ readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
364
+ readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
365
+ readonly message: import("valibot").StringSchema<undefined>;
366
+ }, undefined>, undefined>, undefined>;
367
+ }, undefined>;
368
+ }, undefined>;
369
+ readonly '5xx': import("valibot").ObjectSchema<{
370
+ readonly error: import("valibot").ObjectSchema<{
371
+ readonly code: import("valibot").StringSchema<undefined>;
372
+ readonly message: import("valibot").StringSchema<undefined>;
373
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
374
+ readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
375
+ readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
376
+ readonly message: import("valibot").StringSchema<undefined>;
377
+ }, undefined>, undefined>, undefined>;
378
+ }, undefined>;
379
+ }, undefined>;
380
+ readonly 200: import("valibot").ObjectSchema<{
381
+ readonly serviceId: import("valibot").StringSchema<undefined>;
382
+ readonly title: import("valibot").StringSchema<undefined>;
383
+ readonly description: import("valibot").StringSchema<undefined>;
384
+ readonly type: import("valibot").PicklistSchema<["frontend", "service", "library", "document", "api", "database", "queue", "integration", "external", "environment"], undefined>;
385
+ readonly status: import("valibot").PicklistSchema<["planned", "ready", "in_progress", "blocked", "pr_ready", "done"], undefined>;
386
+ readonly provisioning: import("valibot").OptionalSchema<import("valibot").VariantSchema<"type", [import("valibot").ObjectSchema<{
387
+ readonly type: import("valibot").LiteralSchema<"kubernetes", undefined>;
388
+ readonly manifestSource: import("valibot").VariantSchema<"type", [import("valibot").ObjectSchema<{
389
+ readonly type: import("valibot").LiteralSchema<"colocated", undefined>;
390
+ readonly path: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").TrimAction, import("valibot").MinLengthAction<string, 1, undefined>, import("valibot").MaxLengthAction<string, 500, undefined>]>;
391
+ readonly renderer: import("valibot").OptionalSchema<import("valibot").PicklistSchema<["raw", "kustomize"], undefined>, undefined>;
392
+ }, undefined>, import("valibot").ObjectSchema<{
393
+ readonly type: import("valibot").LiteralSchema<"separate", undefined>;
394
+ readonly repo: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").TrimAction, import("valibot").RegexAction<string, "must be \"owner/repo\"">]>;
395
+ readonly ref: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").TrimAction, import("valibot").MinLengthAction<string, 1, undefined>]>, undefined>;
396
+ readonly path: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").TrimAction, import("valibot").MinLengthAction<string, 1, undefined>, import("valibot").MaxLengthAction<string, 500, undefined>]>;
397
+ readonly renderer: import("valibot").OptionalSchema<import("valibot").PicklistSchema<["raw", "kustomize"], undefined>, undefined>;
398
+ }, undefined>], undefined>;
399
+ }, undefined>], undefined>, undefined>;
400
+ }, undefined>;
401
+ };
402
+ } & {
403
+ readonly minScope: "admin";
404
+ };
405
+ /**
406
+ * The workspace's model catalog, with the two flags that decide whether a run can dispatch.
407
+ *
408
+ * The alternative to serving this is not a different call, it is a caller discovering an unwired
409
+ * model forty minutes into a run it has already paid for.
410
+ */
411
+ export declare const listPublicWiredModelsContract: {
412
+ readonly method: "get";
413
+ readonly pathResolver: () => string;
414
+ readonly responsesByStatusCode: {
415
+ readonly '4xx': import("valibot").ObjectSchema<{
416
+ readonly error: import("valibot").ObjectSchema<{
417
+ readonly code: import("valibot").StringSchema<undefined>;
418
+ readonly message: import("valibot").StringSchema<undefined>;
419
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
420
+ readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
421
+ readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
422
+ readonly message: import("valibot").StringSchema<undefined>;
423
+ }, undefined>, undefined>, undefined>;
424
+ }, undefined>;
425
+ }, undefined>;
426
+ readonly '5xx': import("valibot").ObjectSchema<{
427
+ readonly error: import("valibot").ObjectSchema<{
428
+ readonly code: import("valibot").StringSchema<undefined>;
429
+ readonly message: import("valibot").StringSchema<undefined>;
430
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
431
+ readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
432
+ readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
433
+ readonly message: import("valibot").StringSchema<undefined>;
434
+ }, undefined>, undefined>, undefined>;
435
+ }, undefined>;
436
+ }, undefined>;
437
+ readonly 200: import("valibot").ObjectSchema<{
438
+ readonly models: import("valibot").ArraySchema<import("valibot").ObjectSchema<{
439
+ readonly modelId: import("valibot").StringSchema<undefined>;
440
+ readonly label: import("valibot").StringSchema<undefined>;
441
+ readonly provider: import("valibot").StringSchema<undefined>;
442
+ readonly available: import("valibot").BooleanSchema<undefined>;
443
+ readonly policyBlocked: import("valibot").BooleanSchema<undefined>;
444
+ }, undefined>, undefined>;
445
+ readonly excludesUserScopedModels: import("valibot").BooleanSchema<undefined>;
446
+ }, undefined>;
447
+ };
448
+ } & {
449
+ readonly minScope: "admin";
450
+ };
451
+ /**
452
+ * The workspace's VCS connection and what it may do, or `connection: null` when nothing is
453
+ * connected. Provider-neutral: a GitLab-connected workspace answers here too, and the row's own
454
+ * `provider` says which instance it talks to.
455
+ */
456
+ export declare const getPublicVcsConnectionContract: {
457
+ readonly method: "get";
458
+ readonly pathResolver: () => string;
459
+ readonly responsesByStatusCode: {
460
+ readonly '4xx': import("valibot").ObjectSchema<{
461
+ readonly error: import("valibot").ObjectSchema<{
462
+ readonly code: import("valibot").StringSchema<undefined>;
463
+ readonly message: import("valibot").StringSchema<undefined>;
464
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
465
+ readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
466
+ readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
467
+ readonly message: import("valibot").StringSchema<undefined>;
468
+ }, undefined>, undefined>, undefined>;
469
+ }, undefined>;
470
+ }, undefined>;
471
+ readonly '5xx': import("valibot").ObjectSchema<{
472
+ readonly error: import("valibot").ObjectSchema<{
473
+ readonly code: import("valibot").StringSchema<undefined>;
474
+ readonly message: import("valibot").StringSchema<undefined>;
475
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
476
+ readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
477
+ readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
478
+ readonly message: import("valibot").StringSchema<undefined>;
479
+ }, undefined>, undefined>, undefined>;
480
+ }, undefined>;
481
+ }, undefined>;
482
+ readonly 200: import("valibot").ObjectSchema<{
483
+ readonly connection: import("valibot").NullableSchema<import("valibot").ObjectSchema<{
484
+ readonly provider: import("valibot").PicklistSchema<["github", "gitlab"], undefined>;
485
+ readonly accountLogin: import("valibot").StringSchema<undefined>;
486
+ readonly method: import("valibot").PicklistSchema<["app", "pat"], undefined>;
487
+ readonly canCreateRepos: import("valibot").BooleanSchema<undefined>;
488
+ readonly canManageWorkflows: import("valibot").BooleanSchema<undefined>;
489
+ }, undefined>, undefined>;
490
+ }, undefined>;
491
+ };
492
+ } & {
493
+ readonly minScope: "admin";
494
+ };
495
+ /**
496
+ * The workspace's merge-preset library. The `isDefault` row is the policy a task that pins none
497
+ * resolves, so it is the one that decides whether this caller's runs can land without a person.
498
+ */
499
+ export declare const listPublicMergePresetsContract: {
500
+ readonly method: "get";
501
+ readonly pathResolver: () => string;
502
+ readonly responsesByStatusCode: {
503
+ readonly '4xx': import("valibot").ObjectSchema<{
504
+ readonly error: import("valibot").ObjectSchema<{
505
+ readonly code: import("valibot").StringSchema<undefined>;
506
+ readonly message: import("valibot").StringSchema<undefined>;
507
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
508
+ readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
509
+ readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
510
+ readonly message: import("valibot").StringSchema<undefined>;
511
+ }, undefined>, undefined>, undefined>;
512
+ }, undefined>;
513
+ }, undefined>;
514
+ readonly '5xx': import("valibot").ObjectSchema<{
515
+ readonly error: import("valibot").ObjectSchema<{
516
+ readonly code: import("valibot").StringSchema<undefined>;
517
+ readonly message: import("valibot").StringSchema<undefined>;
518
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
519
+ readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
520
+ readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
521
+ readonly message: import("valibot").StringSchema<undefined>;
522
+ }, undefined>, undefined>, undefined>;
523
+ }, undefined>;
524
+ }, undefined>;
525
+ readonly 200: import("valibot").ObjectSchema<{
526
+ readonly presets: import("valibot").ArraySchema<import("valibot").ObjectSchema<{
527
+ readonly presetId: import("valibot").StringSchema<undefined>;
528
+ readonly name: import("valibot").StringSchema<undefined>;
529
+ readonly isDefault: import("valibot").BooleanSchema<undefined>;
530
+ readonly autoMergeEnabled: import("valibot").BooleanSchema<undefined>;
531
+ readonly ciMaxAttempts: import("valibot").NumberSchema<undefined>;
532
+ readonly dryRunRoles: import("valibot").ArraySchema<import("valibot").PicklistSchema<readonly ["admin", "member", "viewer"], undefined>, undefined>;
533
+ readonly submissionRestrictedRoles: import("valibot").ArraySchema<import("valibot").PicklistSchema<readonly ["admin", "member", "viewer"], undefined>, undefined>;
534
+ }, undefined>, undefined>;
535
+ }, undefined>;
536
+ };
537
+ } & {
538
+ readonly minScope: "admin";
539
+ };
540
+ //# sourceMappingURL=public-provisioning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-provisioning.d.ts","sourceRoot":"","sources":["../../src/routes/public-provisioning.ts"],"names":[],"mappings":"AA0CA;;;;;;;GAOG;AACH,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQ5C,CAAA;AAED,qFAAqF;AACrF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQ1C,CAAA;AAID;;;;;;;;GAQG;AACH,eAAO,MAAM,uCAAuC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQnD,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQ5C,CAAA;AAID;;;;;;;;;;GAUG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CASvC,CAAA;AAID;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOzC,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAO1C,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAO1C,CAAA"}