@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.
- package/dist/environments-kubernetes.d.ts +32 -0
- package/dist/environments-kubernetes.d.ts.map +1 -1
- package/dist/environments-kubernetes.js +8 -0
- package/dist/environments-kubernetes.js.map +1 -1
- package/dist/environments.d.ts +22 -0
- package/dist/environments.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/public-api.d.ts +48 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +12 -0
- package/dist/public-api.js.map +1 -1
- package/dist/public-provisioning.d.ts +698 -0
- package/dist/public-provisioning.d.ts.map +1 -0
- package/dist/public-provisioning.js +431 -0
- package/dist/public-provisioning.js.map +1 -0
- package/dist/routes/environmentUserHandlers.d.ts +6 -0
- package/dist/routes/environmentUserHandlers.d.ts.map +1 -1
- package/dist/routes/environments.d.ts +21 -0
- package/dist/routes/environments.d.ts.map +1 -1
- package/dist/routes/index.d.ts +1 -0
- package/dist/routes/index.d.ts.map +1 -1
- package/dist/routes/index.js +1 -0
- package/dist/routes/index.js.map +1 -1
- package/dist/routes/public-api.d.ts +14 -0
- package/dist/routes/public-api.d.ts.map +1 -1
- package/dist/routes/public-board.d.ts +14 -0
- package/dist/routes/public-board.d.ts.map +1 -1
- package/dist/routes/public-provisioning.d.ts +540 -0
- package/dist/routes/public-provisioning.d.ts.map +1 -0
- package/dist/routes/public-provisioning.js +128 -0
- package/dist/routes/public-provisioning.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-provisioning.d.ts","sourceRoot":"","sources":["../src/public-provisioning.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,431 @@
|
|
|
1
|
+
import * as v from 'valibot';
|
|
2
|
+
import { frameRepoTypeSchema } from './primitives.js';
|
|
3
|
+
import { stepSubtasksSchema } from './execution.js';
|
|
4
|
+
import { bootstrapStatusSchema } from './bootstrap.js';
|
|
5
|
+
import { agentFailureKindSchema } from './agent-failure-kinds.js';
|
|
6
|
+
import { vcsProviderSchema } from './routes/auth.js';
|
|
7
|
+
import { vcsConnectMethodSchema } from './routes/vcs.js';
|
|
8
|
+
import { workspaceRoleSchema } from './workspace-members.js';
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
// DEPLOYMENT PROVISIONING on `/api/v1`: what a headless caller needs to bring a workspace from
|
|
11
|
+
// "connected" to "able to run a pipeline", which until now had no public counterpart at all.
|
|
12
|
+
//
|
|
13
|
+
// Four groups, and they are four because each answers a different question a caller asks BEFORE it
|
|
14
|
+
// has anything to file work against: make me a repository; connect me to the infrastructure a run
|
|
15
|
+
// deploys onto; tell one service where its manifests live; and tell me what this deployment has
|
|
16
|
+
// actually wired.
|
|
17
|
+
//
|
|
18
|
+
// **Every STRUCTURAL shape here is a PROJECTION, never a re-export of the internal one**, and that
|
|
19
|
+
// is the load-bearing decision in this file. The internal shapes it projects from
|
|
20
|
+
// (`infraHandlerConfig`'s five-engine variant, `serviceProvisioning`'s per-engine bag,
|
|
21
|
+
// `kubernetesManifestSource`, `kubernetesUrlSource`, `modelOption`, `githubConnection`,
|
|
22
|
+
// `riskPolicy`) are INTERNAL wire shapes, which this repo evolves freely and deliberately without
|
|
23
|
+
// migrations. `/api/v1` is the opposite: frozen, and broken only through a version change plus a
|
|
24
|
+
// migration path (ADR 0034). Re-exporting one onto the other would silently bind the frozen surface
|
|
25
|
+
// to a shape someone is expected to change, so the next ordinary field rename becomes a public
|
|
26
|
+
// break nobody reviewed as one. The projections cost a mapper each, in
|
|
27
|
+
// `PublicProvisioningController`, and that mapper is exactly where the two vocabularies are allowed
|
|
28
|
+
// to differ.
|
|
29
|
+
//
|
|
30
|
+
// **The shared closed VOCABULARIES are the stated exception, and they are pinned rather than
|
|
31
|
+
// copied**: `bootstrapStatus`, `agentFailureKind`, `vcsProvider`, `vcsConnectMethod`,
|
|
32
|
+
// `workspaceRole` and the three counters of `stepSubtasks` are imported and used as they are. A
|
|
33
|
+
// second copy of a picklist buys nothing a projection buys: the members ARE meant to be the same
|
|
34
|
+
// set, and duplicating them creates the stale-value hazard the repo warns about (a value a stored
|
|
35
|
+
// row still holds, mapped through a lookup that no longer has it). What a projection would have
|
|
36
|
+
// caught is caught instead by `public-provisioning.test.ts`, which pins each published member list,
|
|
37
|
+
// so editing one of these internally fails a test that names the public break rather than
|
|
38
|
+
// regenerating four SDKs quietly.
|
|
39
|
+
//
|
|
40
|
+
// **A secret goes IN and never comes back.** The connection calls accept a secret bundle because
|
|
41
|
+
// reaching an apiserver requires one; every response projects the KEYS that were supplied and no
|
|
42
|
+
// value, so a caller can confirm what it sent without the surface ever becoming a way to read a
|
|
43
|
+
// credential back out.
|
|
44
|
+
// ---------------------------------------------------------------------------
|
|
45
|
+
const slugField = v.pipe(v.string(), v.trim(), v.regex(/^[A-Za-z0-9_.-]+$/, "Only letters, digits, '.', '_' and '-' are allowed"), v.minLength(1), v.maxLength(100));
|
|
46
|
+
const descriptionField = v.pipe(v.string(), v.maxLength(2000));
|
|
47
|
+
const instructionsField = v.pipe(v.string(), v.maxLength(8000));
|
|
48
|
+
const labelField = v.pipe(v.string(), v.trim(), v.minLength(1), v.maxLength(120));
|
|
49
|
+
// ---- 1. Repo bootstrap ------------------------------------------------------
|
|
50
|
+
// **A request field carries no valibot DEFAULT**, here or in any of the bodies below, and the
|
|
51
|
+
// omitted-value rule is applied by the controller instead. A default means "always present" on the
|
|
52
|
+
// way out and "may be omitted" on the way in, and one schema cannot say both to a generator that
|
|
53
|
+
// emits a request type and a response type from it (`scripts/sdk/ir.mjs` refuses the ambiguity
|
|
54
|
+
// outright). The documented default is stated in each field's own comment, which is what a caller
|
|
55
|
+
// reads, and applied once where the internal input is built.
|
|
56
|
+
/**
|
|
57
|
+
* Create a repository from scratch (or from a reference architecture) and adapt it with an agent.
|
|
58
|
+
*
|
|
59
|
+
* The one act of board setup with no public counterpart at all: `POST /api/v1/services` can back a
|
|
60
|
+
* service with a repository that already EXISTS, and nothing on this surface could make one, so a
|
|
61
|
+
* deployment automating itself had to open a browser exactly once, at the very first step.
|
|
62
|
+
*
|
|
63
|
+
* Mirrors the internal bootstrap body's own rule rather than relaxing it: a run needs either a
|
|
64
|
+
* reference architecture to clone or a brief to scaffold from, and a request carrying neither
|
|
65
|
+
* describes no work.
|
|
66
|
+
*/
|
|
67
|
+
export const publicBootstrapRepoSchema = v.pipe(v.object({
|
|
68
|
+
/** Name for the new repository, under the owner the workspace's VCS connection names. */
|
|
69
|
+
repoName: slugField,
|
|
70
|
+
/** The repository's role on the board. Omitted ⇒ `service`. */
|
|
71
|
+
type: v.optional(frameRepoTypeSchema),
|
|
72
|
+
description: v.optional(descriptionField),
|
|
73
|
+
/** Whether the new repository is private. Omitted ⇒ private, which is the safe default. */
|
|
74
|
+
private: v.optional(v.boolean()),
|
|
75
|
+
/**
|
|
76
|
+
* The brief for the bootstrapper agent. With a reference architecture these are appended to
|
|
77
|
+
* its stored defaults; with none they are the whole brief.
|
|
78
|
+
*/
|
|
79
|
+
instructions: v.optional(instructionsField),
|
|
80
|
+
/** A reference architecture to clone from; omit to scaffold from `instructions` alone. */
|
|
81
|
+
referenceArchitectureId: v.optional(v.pipe(v.string(), v.minLength(1))),
|
|
82
|
+
}), v.check((input) => Boolean(input.referenceArchitectureId) || (input.instructions ?? '').trim().length > 0, 'Provide a reference architecture or freeform instructions to bootstrap from.'));
|
|
83
|
+
/**
|
|
84
|
+
* One bootstrap run, as this surface reports it.
|
|
85
|
+
*
|
|
86
|
+
* `serviceId` is the board service frame the run materialises, named as this surface names a
|
|
87
|
+
* service everywhere else rather than as the `blockId` the engine calls it: a caller joins it
|
|
88
|
+
* straight onto `POST /api/v1/services/:serviceId` and `/api/v1/services/:serviceId/tasks`.
|
|
89
|
+
*
|
|
90
|
+
* `failureKind` is projected beside `error` because the two answer different questions: the string
|
|
91
|
+
* says what went wrong, the kind says whether a retry could plausibly help (a `preflight` refusal
|
|
92
|
+
* cannot be retried into success, an `evicted` container can).
|
|
93
|
+
*
|
|
94
|
+
* `failureDetail` and `failureHint` ride beside it because both are diagnostic PROSE the platform
|
|
95
|
+
* wrote for this moment, not engine internals: the hint is literally "where to look next". Omitting
|
|
96
|
+
* them would leave a headless caller re-deriving a worse version of a sentence the deployment
|
|
97
|
+
* already produced, which is the same reason the deployment's own config problems are relayed
|
|
98
|
+
* verbatim rather than paraphrased. What stays off is the structured remainder whose shape is
|
|
99
|
+
* genuinely internal (`reason`, kind-scoped and open-ended; `stepIndex`, documented as absent on a
|
|
100
|
+
* bootstrap; `occurredAt` and `lastSubtasks`, already answerable from the fields above).
|
|
101
|
+
*
|
|
102
|
+
* `failureKind` carries the FULL agent-failure vocabulary rather than the narrower list a bootstrap run is
|
|
103
|
+
* documented to produce, and deliberately so. The stored value is the shared `agentFailure`, so the
|
|
104
|
+
* narrow list is a claim about which members are REACHED, not a constraint on what a row can hold.
|
|
105
|
+
* Projecting through the narrow one would leave this mapper with a value outside its own type on
|
|
106
|
+
* exactly the path whose job is to name what went wrong, and the only ways out of that are to drop
|
|
107
|
+
* the kind (reporting a failure as having no classification) or to guess it onto a member nothing
|
|
108
|
+
* knows was meant. Reporting the recorded value is the honest third option, and a new internal kind
|
|
109
|
+
* reaches this surface as an additive enum member, which the SDKs tolerate by design.
|
|
110
|
+
*/
|
|
111
|
+
export const publicBootstrapJobSchema = v.object({
|
|
112
|
+
jobId: v.string(),
|
|
113
|
+
status: bootstrapStatusSchema,
|
|
114
|
+
repoName: v.string(),
|
|
115
|
+
/** The owner the repository was created under, resolved at run time; null until known. */
|
|
116
|
+
repoOwner: v.nullable(v.string()),
|
|
117
|
+
/** Web URL of the created repository; null until it succeeds. */
|
|
118
|
+
repoUrl: v.nullable(v.string()),
|
|
119
|
+
/** The board service frame this run materialises; null when none was created. */
|
|
120
|
+
serviceId: v.nullable(v.string()),
|
|
121
|
+
/** Live subtask counts from the agent's todo list; null until it first reports. */
|
|
122
|
+
progress: v.nullable(stepSubtasksSchema),
|
|
123
|
+
/** One-line failure reason when `status` is `failed`; null otherwise. */
|
|
124
|
+
error: v.nullable(v.string()),
|
|
125
|
+
/** How the run faulted, when it did: the part that says whether a retry is worth it. */
|
|
126
|
+
failureKind: v.nullable(agentFailureKindSchema),
|
|
127
|
+
/** Extended detail behind `error` when the platform captured any (a harness reason, an HTTP body). */
|
|
128
|
+
failureDetail: v.nullable(v.string()),
|
|
129
|
+
/** The platform's own "where to look next", relayed verbatim; null when it had none to offer. */
|
|
130
|
+
failureHint: v.nullable(v.string()),
|
|
131
|
+
createdAt: v.number(),
|
|
132
|
+
updatedAt: v.number(),
|
|
133
|
+
});
|
|
134
|
+
// ---- 2. The environment connection (the ENGINE half) ------------------------
|
|
135
|
+
/**
|
|
136
|
+
* How the manifests at `path` are rendered. `raw` (the default) treats the path as a manifest file
|
|
137
|
+
* or a flat directory of valid YAML; `kustomize` treats it as an overlay directory, which only the
|
|
138
|
+
* container-backed deploy adapter can build.
|
|
139
|
+
*
|
|
140
|
+
* A projection of the internal renderer picklist rather than the picklist itself, for the reason
|
|
141
|
+
* the header states: these two Kubernetes shapes are the largest STRUCTURAL surfaces this file
|
|
142
|
+
* publishes, and a renderer the internal adapter grows is a public member only once someone adds it
|
|
143
|
+
* here.
|
|
144
|
+
*/
|
|
145
|
+
export const publicKubernetesRendererSchema = v.picklist(['raw', 'kustomize']);
|
|
146
|
+
/**
|
|
147
|
+
* Where a service's per-PR manifests are read from. `colocated` reads them from the service's own
|
|
148
|
+
* repository at the pull request's head; `separate` reads them from another repository, which is
|
|
149
|
+
* where a platform team's manifests usually live.
|
|
150
|
+
*/
|
|
151
|
+
export const publicKubernetesManifestSourceSchema = v.variant('type', [
|
|
152
|
+
v.object({
|
|
153
|
+
type: v.literal('colocated'),
|
|
154
|
+
/** File or directory path within the pull request's repository. */
|
|
155
|
+
path: v.pipe(v.string(), v.trim(), v.minLength(1), v.maxLength(500)),
|
|
156
|
+
/** Omitted ⇒ `raw`. */
|
|
157
|
+
renderer: v.optional(publicKubernetesRendererSchema),
|
|
158
|
+
}),
|
|
159
|
+
v.object({
|
|
160
|
+
type: v.literal('separate'),
|
|
161
|
+
/** `owner/repo` of the manifests repository. */
|
|
162
|
+
repo: v.pipe(v.string(), v.trim(), v.regex(/^[^/\s]+\/[^/\s]+$/, 'must be "owner/repo"')),
|
|
163
|
+
/** Branch, tag or sha to read at; omitted ⇒ that repository's default branch. */
|
|
164
|
+
ref: v.optional(v.pipe(v.string(), v.trim(), v.minLength(1))),
|
|
165
|
+
/** File or directory path within the manifests repository. */
|
|
166
|
+
path: v.pipe(v.string(), v.trim(), v.minLength(1), v.maxLength(500)),
|
|
167
|
+
/** Omitted ⇒ `raw`. */
|
|
168
|
+
renderer: v.optional(publicKubernetesRendererSchema),
|
|
169
|
+
}),
|
|
170
|
+
]);
|
|
171
|
+
/**
|
|
172
|
+
* How the environment's URL is derived once the manifests are applied: from a host template the
|
|
173
|
+
* platform renders itself, or by reading the address back off one of four applied objects.
|
|
174
|
+
*/
|
|
175
|
+
export const publicKubernetesUrlSourceSchema = v.variant('source', [
|
|
176
|
+
v.object({
|
|
177
|
+
source: v.literal('ingressTemplate'),
|
|
178
|
+
/** Host template, e.g. `{{branch}}.preview.example.com`, rendered with the provision vars. */
|
|
179
|
+
hostTemplate: v.pipe(v.string(), v.trim(), v.minLength(1), v.maxLength(500)),
|
|
180
|
+
/**
|
|
181
|
+
* Host port the ingress controller answers on, when it is not the scheme's default. Kept out
|
|
182
|
+
* of `hostTemplate` because the rendered template is also the Ingress `host` the manifests
|
|
183
|
+
* declare, and a Kubernetes `host` may not carry a port.
|
|
184
|
+
*/
|
|
185
|
+
port: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(65535))),
|
|
186
|
+
scheme: v.optional(v.picklist(['http', 'https'])),
|
|
187
|
+
}),
|
|
188
|
+
v.object({
|
|
189
|
+
source: v.literal('ingressStatus'),
|
|
190
|
+
/** Ingress to read `.status.loadBalancer` from; omitted ⇒ the only Ingress applied. */
|
|
191
|
+
ingressName: v.optional(v.pipe(v.string(), v.trim(), v.minLength(1))),
|
|
192
|
+
scheme: v.optional(v.picklist(['http', 'https'])),
|
|
193
|
+
}),
|
|
194
|
+
v.object({
|
|
195
|
+
source: v.literal('serviceStatus'),
|
|
196
|
+
/** Service to read `.status.loadBalancer` from. */
|
|
197
|
+
serviceName: v.pipe(v.string(), v.trim(), v.minLength(1)),
|
|
198
|
+
port: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(65535))),
|
|
199
|
+
scheme: v.optional(v.picklist(['http', 'https'])),
|
|
200
|
+
}),
|
|
201
|
+
v.object({
|
|
202
|
+
source: v.literal('gatewayStatus'),
|
|
203
|
+
/** Gateway-API `Gateway` to read `.status.addresses[]` from; omitted ⇒ the only one applied. */
|
|
204
|
+
gatewayName: v.optional(v.pipe(v.string(), v.trim(), v.minLength(1))),
|
|
205
|
+
scheme: v.optional(v.picklist(['http', 'https'])),
|
|
206
|
+
}),
|
|
207
|
+
v.object({
|
|
208
|
+
source: v.literal('httpRouteStatus'),
|
|
209
|
+
/** `HTTPRoute` whose `parentRefs` resolve the address; omitted ⇒ the only one applied. */
|
|
210
|
+
httpRouteName: v.optional(v.pipe(v.string(), v.trim(), v.minLength(1))),
|
|
211
|
+
scheme: v.optional(v.picklist(['http', 'https'])),
|
|
212
|
+
}),
|
|
213
|
+
]);
|
|
214
|
+
/**
|
|
215
|
+
* A Kubernetes cluster the platform provisions per-run environments against.
|
|
216
|
+
*
|
|
217
|
+
* Narrower than the internal engine config on purpose. Left off are the fields that only mean
|
|
218
|
+
* something to a specific execution shape the caller is not choosing here (`rolloutTimeoutSeconds`,
|
|
219
|
+
* belonging to the container deploy adapter; `helmReleases`, a cluster-singleton concern an
|
|
220
|
+
* operator owns). They can be ADDED later as optional fields, which is the additive direction this
|
|
221
|
+
* surface allows; they could never be removed once shipped, which is why they are not here now.
|
|
222
|
+
*/
|
|
223
|
+
export const publicKubernetesConnectionSchema = v.object({
|
|
224
|
+
/** Human label for the connection, shown wherever the platform names the engine. */
|
|
225
|
+
label: labelField,
|
|
226
|
+
/** kube-apiserver root URL, e.g. `https://cluster.example:6443`. */
|
|
227
|
+
apiServerUrl: v.pipe(v.string(), v.url(), v.maxLength(500)),
|
|
228
|
+
/** PEM CA bundle verifying the apiserver certificate. Omit only for a publicly-trusted CA. */
|
|
229
|
+
caCertPem: v.optional(v.string()),
|
|
230
|
+
/**
|
|
231
|
+
* Skip apiserver TLS verification. Throwaway clusters only, and stated as its own field rather
|
|
232
|
+
* than inferred from an absent CA, so turning verification off is always something a caller
|
|
233
|
+
* asked for in writing.
|
|
234
|
+
*/
|
|
235
|
+
insecureSkipTlsVerify: v.optional(v.boolean()),
|
|
236
|
+
/** Namespace template for the per-run environment, e.g. `env-{{pullNumber}}`. */
|
|
237
|
+
namespaceTemplate: v.optional(v.pipe(v.string(), v.trim(), v.minLength(1), v.maxLength(200))),
|
|
238
|
+
/** How the environment URL is derived once the manifests are applied. */
|
|
239
|
+
url: publicKubernetesUrlSourceSchema,
|
|
240
|
+
/** Image reference exposed to the manifests as `{{image}}`. */
|
|
241
|
+
imageTemplate: v.optional(v.pipe(v.string(), v.trim(), v.maxLength(500))),
|
|
242
|
+
/** Backstop TTL (ms) after which an environment is swept and torn down. */
|
|
243
|
+
defaultTtlMs: v.optional(v.pipe(v.number(), v.minValue(60000))),
|
|
244
|
+
/** Extra labels stamped on the namespace and every applied resource. */
|
|
245
|
+
labels: v.optional(v.record(v.string(), v.string())),
|
|
246
|
+
/** Extra annotations stamped on the namespace. */
|
|
247
|
+
annotations: v.optional(v.record(v.string(), v.string())),
|
|
248
|
+
});
|
|
249
|
+
/**
|
|
250
|
+
* The engine a workspace provisions environments through, discriminated by `engine`.
|
|
251
|
+
*
|
|
252
|
+
* A one-member variant rather than a bare object, which is the whole point: `kubernetes` is the
|
|
253
|
+
* engine that is automatable today, and a second member is an additive enum value the SDKs already
|
|
254
|
+
* tolerate by design. A bare object would have to be RESHAPED to gain a sibling, and reshaping is
|
|
255
|
+
* the thing this surface may not do.
|
|
256
|
+
*
|
|
257
|
+
* The internal engine vocabulary splits Kubernetes in two (`local-k3s` and `remote-kubernetes`,
|
|
258
|
+
* which differ in how the deployment reaches the cluster, not in what a caller supplies). That
|
|
259
|
+
* split is not a public fact, and it is not a public DECISION either: one backend serves both
|
|
260
|
+
* names, both lower to the same provision type and the same config, so a connection made here is
|
|
261
|
+
* registered under the one name the controller states (`remote-kubernetes`) and nothing a run does
|
|
262
|
+
* can observe the difference. A caller describes its cluster; which internal name that is stored
|
|
263
|
+
* under is the platform's business.
|
|
264
|
+
*/
|
|
265
|
+
export const publicEnvironmentConnectionSchema = v.variant('engine', [
|
|
266
|
+
v.object({ engine: v.literal('kubernetes'), kubernetes: publicKubernetesConnectionSchema }),
|
|
267
|
+
]);
|
|
268
|
+
/** Probe a candidate connection. Persists nothing, which is the reason it is its own call. */
|
|
269
|
+
export const testPublicEnvironmentConnectionSchema = v.object({
|
|
270
|
+
connection: publicEnvironmentConnectionSchema,
|
|
271
|
+
/** Secret bundle the engine authenticates with, e.g. `{ apiToken: '...' }`. */
|
|
272
|
+
secrets: v.optional(v.record(v.string(), v.string())),
|
|
273
|
+
});
|
|
274
|
+
/** The verdict of a probe. `ok: false` is an ANSWER, so it is a 200 rather than an error. */
|
|
275
|
+
export const publicEnvironmentConnectionTestSchema = v.object({
|
|
276
|
+
ok: v.boolean(),
|
|
277
|
+
/** What the probe read back, whether it succeeded or not; null when it had nothing to add. */
|
|
278
|
+
message: v.nullable(v.string()),
|
|
279
|
+
});
|
|
280
|
+
/**
|
|
281
|
+
* Bind a provision type to an engine connection. Idempotent: re-connecting REPLACES, so a caller
|
|
282
|
+
* re-running its own setup converges instead of accumulating handlers or having to delete first.
|
|
283
|
+
*/
|
|
284
|
+
export const connectPublicEnvironmentSchema = v.object({
|
|
285
|
+
connection: publicEnvironmentConnectionSchema,
|
|
286
|
+
secrets: v.record(v.string(), v.string()),
|
|
287
|
+
});
|
|
288
|
+
/**
|
|
289
|
+
* A registered connection, as this surface reports it back.
|
|
290
|
+
*
|
|
291
|
+
* `secretKeys` and not the secrets: a caller confirming its own setup needs to know WHICH keys
|
|
292
|
+
* landed, and nothing on a read surface should be able to return a credential value. That holds
|
|
293
|
+
* even though the caller supplied it moments earlier, because the read is repeatable by anyone
|
|
294
|
+
* holding the key afterwards.
|
|
295
|
+
*/
|
|
296
|
+
export const publicEnvironmentConnectionViewSchema = v.object({
|
|
297
|
+
/** The provision type this connection serves. */
|
|
298
|
+
provisionType: v.string(),
|
|
299
|
+
engine: v.literal('kubernetes'),
|
|
300
|
+
label: v.string(),
|
|
301
|
+
apiServerUrl: v.string(),
|
|
302
|
+
/** The secret-bundle keys this connection holds, never their values. */
|
|
303
|
+
secretKeys: v.array(v.string()),
|
|
304
|
+
});
|
|
305
|
+
// ---- 3. A service's provisioning (the SOURCE half) --------------------------
|
|
306
|
+
/**
|
|
307
|
+
* Where ONE service's per-run manifests live: the half the engine connection does not carry.
|
|
308
|
+
*
|
|
309
|
+
* The platform keeps these two apart deliberately (one cluster, many services, each with its own
|
|
310
|
+
* manifests), and this surface keeps the same seam rather than collapsing them into one call, so a
|
|
311
|
+
* caller adding a second service to an existing cluster changes one thing.
|
|
312
|
+
*/
|
|
313
|
+
export const publicServiceProvisioningSchema = v.variant('type', [
|
|
314
|
+
v.object({ type: v.literal('kubernetes'), manifestSource: publicKubernetesManifestSourceSchema }),
|
|
315
|
+
]);
|
|
316
|
+
/**
|
|
317
|
+
* Patch a service. Only the supplied fields change, and an omitted `provisioning` LEAVES the stored
|
|
318
|
+
* one alone rather than clearing it: a caller renaming a service must not silently un-deploy it.
|
|
319
|
+
*
|
|
320
|
+
* At least one field is REQUIRED, on the same reading as the bootstrap body above: a patch naming
|
|
321
|
+
* nothing describes no edit, and admitting it would spend a write, a re-read and a board-wide
|
|
322
|
+
* event broadcast on a request whose only possible outcome is the state it started in. The generated
|
|
323
|
+
* clients default the body, so an empty one is a call a caller makes by accident rather than on
|
|
324
|
+
* purpose.
|
|
325
|
+
*/
|
|
326
|
+
export const updatePublicServiceSchema = v.pipe(v.object({
|
|
327
|
+
title: v.optional(v.pipe(v.string(), v.trim(), v.minLength(1), v.maxLength(200))),
|
|
328
|
+
description: v.optional(descriptionField),
|
|
329
|
+
provisioning: v.optional(publicServiceProvisioningSchema),
|
|
330
|
+
}), v.check((input) => input.title !== undefined ||
|
|
331
|
+
input.description !== undefined ||
|
|
332
|
+
input.provisioning !== undefined, 'Supply at least one of title, description or provisioning.'));
|
|
333
|
+
// ---- 4. What this deployment has WIRED --------------------------------------
|
|
334
|
+
/**
|
|
335
|
+
* One model in the workspace's catalog, reduced to the question a caller actually has: can a run
|
|
336
|
+
* dispatch to this, and if not, is that because nobody configured it or because a policy refuses it?
|
|
337
|
+
*
|
|
338
|
+
* Those two are separated because they need OPPOSITE fixes, and conflating them is the specific
|
|
339
|
+
* failure this projection exists to prevent: telling an operator to add a provider key when every
|
|
340
|
+
* model is already configured and blocked by their account's model-family policy sends them to
|
|
341
|
+
* change a setting that is already correct.
|
|
342
|
+
*/
|
|
343
|
+
export const publicWiredModelSchema = v.object({
|
|
344
|
+
modelId: v.string(),
|
|
345
|
+
label: v.string(),
|
|
346
|
+
/** Provider label for the flavour actually in use, e.g. `Cloudflare`, `Bedrock`. */
|
|
347
|
+
provider: v.string(),
|
|
348
|
+
/** Whether a run can dispatch to it right now. */
|
|
349
|
+
available: v.boolean(),
|
|
350
|
+
/** Whether it is unavailable specifically because an account model policy refuses its family. */
|
|
351
|
+
policyBlocked: v.boolean(),
|
|
352
|
+
});
|
|
353
|
+
/**
|
|
354
|
+
* The catalog, plus the one thing the catalog itself cannot say.
|
|
355
|
+
*
|
|
356
|
+
* `excludesUserScopedModels` reports that this deployment serves per-user locally-run model
|
|
357
|
+
* endpoints, which a key-authenticated read does not see: they are one developer's own machine, and
|
|
358
|
+
* an API key has no developer, so folding them in would attribute someone else's endpoints to the
|
|
359
|
+
* caller. Without this flag their absence is byte-for-byte "this deployment has nothing wired", and
|
|
360
|
+
* those two need OPPOSITE remedies: the first is a run that must be started by a signed-in user,
|
|
361
|
+
* the second is a provider key. That is the same conflation `policyBlocked` exists to prevent, one
|
|
362
|
+
* level up: a third state, stated rather than collapsed into a false.
|
|
363
|
+
*/
|
|
364
|
+
export const publicWiredModelListSchema = v.object({
|
|
365
|
+
models: v.array(publicWiredModelSchema),
|
|
366
|
+
/** Whether per-user locally-run endpoints exist here that this read cannot enumerate. */
|
|
367
|
+
excludesUserScopedModels: v.boolean(),
|
|
368
|
+
});
|
|
369
|
+
/**
|
|
370
|
+
* The workspace's VCS connection, reduced to what it may DO.
|
|
371
|
+
*
|
|
372
|
+
* The two permission flags are the whole reason this is on the surface. Both are refused by the
|
|
373
|
+
* provider at PUSH time rather than at connect time, so a caller that cannot read them discovers a
|
|
374
|
+
* missing `workflows: write` as a repository that bootstrapped and then failed to gain its CI
|
|
375
|
+
* workflow, which reads like a broken bootstrap rather than a missing permission.
|
|
376
|
+
*/
|
|
377
|
+
export const publicVcsConnectionSchema = v.object({
|
|
378
|
+
provider: vcsProviderSchema,
|
|
379
|
+
/** The account (user or organisation) the workspace is connected to. */
|
|
380
|
+
accountLogin: v.string(),
|
|
381
|
+
/** How the workspace authenticates: an app installation, or a pasted token. */
|
|
382
|
+
method: vcsConnectMethodSchema,
|
|
383
|
+
/** Whether the platform can create repositories under this account itself. */
|
|
384
|
+
canCreateRepos: v.boolean(),
|
|
385
|
+
/** Whether the connection may write `.github/workflows/*`, which a CI gate depends on. */
|
|
386
|
+
canManageWorkflows: v.boolean(),
|
|
387
|
+
});
|
|
388
|
+
/**
|
|
389
|
+
* `connection: null` is a real, reportable state (nothing connected), not an absence to 404 on: a
|
|
390
|
+
* caller setting a workspace up asks this question precisely when the answer may be "nothing yet".
|
|
391
|
+
*/
|
|
392
|
+
export const publicVcsConnectionViewSchema = v.object({
|
|
393
|
+
connection: v.nullable(publicVcsConnectionSchema),
|
|
394
|
+
});
|
|
395
|
+
/**
|
|
396
|
+
* One merge preset, reduced to what decides whether a run can LAND without a person.
|
|
397
|
+
*
|
|
398
|
+
* `dryRunRoles` is projected even though a caller cannot resolve which role its own key runs
|
|
399
|
+
* under: a non-empty list is the difference between "this preset merges" and "this preset merges
|
|
400
|
+
* for everyone except the role you might be", and stating it lets a caller report the caveat
|
|
401
|
+
* rather than assert a verdict it has not earned.
|
|
402
|
+
*
|
|
403
|
+
* `submissionRestrictedRoles` is the SECOND such caveat and rides for the same reason. A preset
|
|
404
|
+
* carries two role-scoped bars on LANDING (ADR 0039's per-role change-class allowlist, enforced at
|
|
405
|
+
* both merge exits, and the dry-run list), and publishing one of them made the other read as
|
|
406
|
+
* absent: `autoMergeEnabled: true` with an empty `dryRunRoles` says "this preset merges" while a
|
|
407
|
+
* role allowlist holds every run outside its classes for a human. What is deliberately NOT here is
|
|
408
|
+
* the per-role narrowing of the score CEILINGS (`classRulesByRole`), on the same line this
|
|
409
|
+
* projection already draws for the ceilings themselves: it decides how much review landing takes,
|
|
410
|
+
* where these two decide whether landing happens at all.
|
|
411
|
+
*/
|
|
412
|
+
export const publicMergePresetSchema = v.object({
|
|
413
|
+
presetId: v.string(),
|
|
414
|
+
name: v.string(),
|
|
415
|
+
/** Whether a task that pins no preset resolves this one. */
|
|
416
|
+
isDefault: v.boolean(),
|
|
417
|
+
/** The master switch: false holds every pull request for a person. */
|
|
418
|
+
autoMergeEnabled: v.boolean(),
|
|
419
|
+
/** How many times the `ci-fixer` may try to turn CI green before giving up. */
|
|
420
|
+
ciMaxAttempts: v.number(),
|
|
421
|
+
/** Workspace roles whose runs this preset forces into dry-run mode. */
|
|
422
|
+
dryRunRoles: v.array(workspaceRoleSchema),
|
|
423
|
+
/**
|
|
424
|
+
* Workspace roles whose runs may land only the change classes an allowlist names, so a run
|
|
425
|
+
* outside them is held for a person however good its scores are. A role absent from this list is
|
|
426
|
+
* unrestricted; the classes themselves are internal vocabulary and stay off this surface.
|
|
427
|
+
*/
|
|
428
|
+
submissionRestrictedRoles: v.array(workspaceRoleSchema),
|
|
429
|
+
});
|
|
430
|
+
export const publicMergePresetListSchema = v.object({ presets: v.array(publicMergePresetSchema) });
|
|
431
|
+
//# sourceMappingURL=public-provisioning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-provisioning.js","sourceRoot":"","sources":["../src/public-provisioning.ts"],"names":[],"mappings":"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"}
|
|
@@ -165,6 +165,7 @@ export declare const listEnvironmentUserHandlersContract: {
|
|
|
165
165
|
readonly url: v.VariantSchema<"source", [v.ObjectSchema<{
|
|
166
166
|
readonly source: v.LiteralSchema<"ingressTemplate", undefined>;
|
|
167
167
|
readonly hostTemplate: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
168
|
+
readonly port: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 65535, undefined>]>, undefined>;
|
|
168
169
|
readonly scheme: v.OptionalSchema<v.PicklistSchema<["http", "https"], undefined>, undefined>;
|
|
169
170
|
}, undefined>, v.ObjectSchema<{
|
|
170
171
|
readonly source: v.LiteralSchema<"ingressStatus", undefined>;
|
|
@@ -220,6 +221,7 @@ export declare const listEnvironmentUserHandlersContract: {
|
|
|
220
221
|
readonly url: v.VariantSchema<"source", [v.ObjectSchema<{
|
|
221
222
|
readonly source: v.LiteralSchema<"ingressTemplate", undefined>;
|
|
222
223
|
readonly hostTemplate: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
224
|
+
readonly port: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 65535, undefined>]>, undefined>;
|
|
223
225
|
readonly scheme: v.OptionalSchema<v.PicklistSchema<["http", "https"], undefined>, undefined>;
|
|
224
226
|
}, undefined>, v.ObjectSchema<{
|
|
225
227
|
readonly source: v.LiteralSchema<"ingressStatus", undefined>;
|
|
@@ -526,6 +528,7 @@ export declare const upsertEnvironmentUserHandlerContract: {
|
|
|
526
528
|
readonly url: v.VariantSchema<"source", [v.ObjectSchema<{
|
|
527
529
|
readonly source: v.LiteralSchema<"ingressTemplate", undefined>;
|
|
528
530
|
readonly hostTemplate: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
531
|
+
readonly port: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 65535, undefined>]>, undefined>;
|
|
529
532
|
readonly scheme: v.OptionalSchema<v.PicklistSchema<["http", "https"], undefined>, undefined>;
|
|
530
533
|
}, undefined>, v.ObjectSchema<{
|
|
531
534
|
readonly source: v.LiteralSchema<"ingressStatus", undefined>;
|
|
@@ -581,6 +584,7 @@ export declare const upsertEnvironmentUserHandlerContract: {
|
|
|
581
584
|
readonly url: v.VariantSchema<"source", [v.ObjectSchema<{
|
|
582
585
|
readonly source: v.LiteralSchema<"ingressTemplate", undefined>;
|
|
583
586
|
readonly hostTemplate: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
587
|
+
readonly port: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 65535, undefined>]>, undefined>;
|
|
584
588
|
readonly scheme: v.OptionalSchema<v.PicklistSchema<["http", "https"], undefined>, undefined>;
|
|
585
589
|
}, undefined>, v.ObjectSchema<{
|
|
586
590
|
readonly source: v.LiteralSchema<"ingressStatus", undefined>;
|
|
@@ -908,6 +912,7 @@ export declare const upsertEnvironmentUserHandlerContract: {
|
|
|
908
912
|
readonly url: v.VariantSchema<"source", [v.ObjectSchema<{
|
|
909
913
|
readonly source: v.LiteralSchema<"ingressTemplate", undefined>;
|
|
910
914
|
readonly hostTemplate: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
915
|
+
readonly port: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 65535, undefined>]>, undefined>;
|
|
911
916
|
readonly scheme: v.OptionalSchema<v.PicklistSchema<["http", "https"], undefined>, undefined>;
|
|
912
917
|
}, undefined>, v.ObjectSchema<{
|
|
913
918
|
readonly source: v.LiteralSchema<"ingressStatus", undefined>;
|
|
@@ -963,6 +968,7 @@ export declare const upsertEnvironmentUserHandlerContract: {
|
|
|
963
968
|
readonly url: v.VariantSchema<"source", [v.ObjectSchema<{
|
|
964
969
|
readonly source: v.LiteralSchema<"ingressTemplate", undefined>;
|
|
965
970
|
readonly hostTemplate: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
971
|
+
readonly port: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 65535, undefined>]>, undefined>;
|
|
966
972
|
readonly scheme: v.OptionalSchema<v.PicklistSchema<["http", "https"], undefined>, undefined>;
|
|
967
973
|
}, undefined>, v.ObjectSchema<{
|
|
968
974
|
readonly source: v.LiteralSchema<"ingressStatus", undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environmentUserHandlers.d.ts","sourceRoot":"","sources":["../../src/routes/environmentUserHandlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,yBAAyB,CAAA;AAE3E,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAwB5B,eAAO,MAAM,mCAAmC
|
|
1
|
+
{"version":3,"file":"environmentUserHandlers.d.ts","sourceRoot":"","sources":["../../src/routes/environmentUserHandlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,yBAAyB,CAAA;AAE3E,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAwB5B,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAK9C,CAAA;AAEF,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAS/C,CAAA;AAEF,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQ/C,CAAA"}
|