@cat-factory/contracts 0.319.0 → 0.322.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 (64) hide show
  1. package/dist/debug-api.d.ts +1 -1
  2. package/dist/debug-api.d.ts.map +1 -1
  3. package/dist/debug-api.js +3 -7
  4. package/dist/debug-api.js.map +1 -1
  5. package/dist/errors.d.ts +1 -1
  6. package/dist/errors.d.ts.map +1 -1
  7. package/dist/errors.js +7 -0
  8. package/dist/errors.js.map +1 -1
  9. package/dist/index.d.ts +2 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +2 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/kaizen.d.ts +74 -0
  14. package/dist/kaizen.d.ts.map +1 -1
  15. package/dist/kaizen.js +37 -0
  16. package/dist/kaizen.js.map +1 -1
  17. package/dist/public-api.d.ts +31 -0
  18. package/dist/public-api.d.ts.map +1 -1
  19. package/dist/public-api.js +33 -21
  20. package/dist/public-api.js.map +1 -1
  21. package/dist/public-kaizen.d.ts +316 -0
  22. package/dist/public-kaizen.d.ts.map +1 -0
  23. package/dist/public-kaizen.js +218 -0
  24. package/dist/public-kaizen.js.map +1 -0
  25. package/dist/public-paging.d.ts +24 -0
  26. package/dist/public-paging.d.ts.map +1 -0
  27. package/dist/public-paging.js +41 -0
  28. package/dist/public-paging.js.map +1 -0
  29. package/dist/public-provisioning.d.ts +193 -0
  30. package/dist/public-provisioning.d.ts.map +1 -1
  31. package/dist/public-provisioning.js +161 -0
  32. package/dist/public-provisioning.js.map +1 -1
  33. package/dist/routes/index.d.ts +1 -0
  34. package/dist/routes/index.d.ts.map +1 -1
  35. package/dist/routes/index.js +1 -0
  36. package/dist/routes/index.js.map +1 -1
  37. package/dist/routes/kaizen.d.ts +6 -0
  38. package/dist/routes/kaizen.d.ts.map +1 -1
  39. package/dist/routes/public-api.d.ts +4 -0
  40. package/dist/routes/public-api.d.ts.map +1 -1
  41. package/dist/routes/public-board.d.ts +4 -0
  42. package/dist/routes/public-board.d.ts.map +1 -1
  43. package/dist/routes/public-kaizen.d.ts +240 -0
  44. package/dist/routes/public-kaizen.d.ts.map +1 -0
  45. package/dist/routes/public-kaizen.js +64 -0
  46. package/dist/routes/public-kaizen.js.map +1 -0
  47. package/dist/routes/public-provisioning.d.ts +147 -0
  48. package/dist/routes/public-provisioning.d.ts.map +1 -1
  49. package/dist/routes/public-provisioning.js +60 -2
  50. package/dist/routes/public-provisioning.js.map +1 -1
  51. package/dist/routes/sandbox.d.ts +20 -10
  52. package/dist/routes/sandbox.d.ts.map +1 -1
  53. package/dist/routes/sandbox.js +12 -2
  54. package/dist/routes/sandbox.js.map +1 -1
  55. package/dist/routes/tasks.d.ts +1 -1
  56. package/dist/sandbox.d.ts +70 -13
  57. package/dist/sandbox.d.ts.map +1 -1
  58. package/dist/sandbox.js +41 -2
  59. package/dist/sandbox.js.map +1 -1
  60. package/dist/tasks.d.ts +11 -2
  61. package/dist/tasks.d.ts.map +1 -1
  62. package/dist/tasks.js +10 -0
  63. package/dist/tasks.js.map +1 -1
  64. package/package.json +1 -1
@@ -0,0 +1,218 @@
1
+ import * as v from 'valibot';
2
+ import { kaizenGradingStatusSchema } from './kaizen.js';
3
+ import { publicTaskStatusSchema } from './public-api.js';
4
+ import { booleanQuerySchema, cursorSchema, epochMsQuerySchema, pageLimitSchema, } from './public-paging.js';
5
+ // ---------------------------------------------------------------------------
6
+ // Public KAIZEN-ENTRY wire shapes (`/api/v1/kaizen/entries`, `…/{entryId}`, `…/acknowledge`).
7
+ //
8
+ // A Kaizen entry is one post-run grading of one agent step: how smooth or chaotic that
9
+ // interaction was, and what the grader recommends changing (`KaizenService`). Inside
10
+ // the app they are read one board at a time — the Kaizen screen's bounded history, and the
11
+ // per-run status strip in the run window — which is enough for a person browsing, and useless
12
+ // for the thing this surface exists for: a continuous-improvement loop that has to consume EVERY
13
+ // entry exactly once, file the recommendations somewhere, and come back for what is new.
14
+ //
15
+ // Three rules shape these shapes:
16
+ //
17
+ // 1. **The list is workspace-wide and keyset-paginated, with NO run or task required up front.**
18
+ // An improvement loop does not know which runs produced recommendations; that is what it is
19
+ // asking. Every other Kaizen read makes the caller name a run first, which is the one thing
20
+ // it cannot supply.
21
+ // 2. **An entry carries the investigative context, not just the grade.** The point of reading
22
+ // one is deciding whether to act on it, and that decision needs to know WHAT was graded
23
+ // (agent kind, resolved model, prompt version), WHERE (run, step index, task, service) and
24
+ // whether the combo it names is already verified and therefore no longer being graded.
25
+ // Everything here is either on the grading row or one batched lookup away; the run's own
26
+ // detail stays behind `GET /api/v1/debug/runs/{runId}`, which the `runId` joins onto.
27
+ // 3. **Acknowledgement is the entry's own state**, written only through this surface and never
28
+ // by the grading sweep. It is what makes the loop incremental: `?acknowledged=false` is the
29
+ // backlog, and acknowledging is what takes an entry out of it.
30
+ // ---------------------------------------------------------------------------
31
+ /** Machine-readable `details.reason` for an entry id this workspace does not hold. */
32
+ export const KAIZEN_ENTRY_NOT_FOUND_REASON = 'kaizen_entry_not_found';
33
+ /**
34
+ * Machine-readable `details.reason` for acknowledging an entry that has not settled yet.
35
+ *
36
+ * Distinct from a 404 because it is about TIMING rather than identity: the entry exists, the
37
+ * grader has simply not finished with it, and a caller that acknowledged it now would be marking
38
+ * recommendations triaged before they were written. Retry once the entry reaches `complete` or
39
+ * `failed`.
40
+ */
41
+ export const KAIZEN_ENTRY_NOT_SETTLED_REASON = 'kaizen_entry_not_settled';
42
+ /**
43
+ * The board coordinates of the graded run, resolved at read time — null when the task block has
44
+ * since been deleted.
45
+ *
46
+ * Separate from the entry's own `taskId` on purpose: the id is a fact the grading row RECORDED
47
+ * and always answers, while this is what the board says about it NOW. Collapsing the two would
48
+ * make a deleted task read as an entry that never had one.
49
+ */
50
+ export const publicKaizenEntryTaskSchema = v.object({
51
+ title: v.string(),
52
+ /**
53
+ * The task's board lifecycle status, in the SAME vocabulary `/api/v1/tasks` speaks
54
+ * (`publicTaskStatusSchema`) rather than the internal block one it happens to mirror today.
55
+ *
56
+ * Typed against the public picklist on purpose: the two are separate closed vocabularies
57
+ * precisely so the board can gain a status without that widening `/api/v1` by accident. Reading
58
+ * the internal one here would publish the new member with no version decision, and would let two
59
+ * endpoints answer differently about the same task. Adding a member internally now fails to
60
+ * compile until somebody decides what the public surface says about it.
61
+ */
62
+ status: publicTaskStatusSchema,
63
+ /**
64
+ * The enclosing service frame (`GET /api/v1/services/{serviceId}`), or null for a task outside
65
+ * one — a headless job's anchor, or a board block that predates services.
66
+ *
67
+ * Resolved by walking the block's parent chain to its service frame, which is how every other
68
+ * `/api/v1` surface answers the same question (`GET /api/v1/services/{serviceId}/tasks`,
69
+ * `GET /api/v1/tasks/{taskId}`). Deriving it any other way would let one task report a service
70
+ * here and a different answer (or none) there, for the same board.
71
+ */
72
+ serviceId: v.nullable(v.string()),
73
+ /**
74
+ * That service's title. Non-null exactly when `serviceId` is: both are read off the SAME
75
+ * resolved frame block, so a caller never receives an id that `GET /api/v1/services/{serviceId}`
76
+ * cannot answer for.
77
+ */
78
+ serviceTitle: v.nullable(v.string()),
79
+ });
80
+ /**
81
+ * Where the entry's `(agentKind, model, promptVersion)` combo stands in the verification streak,
82
+ * or null when nothing has been recorded for it yet.
83
+ *
84
+ * Carried because it decides whether an entry is worth acting on: a VERIFIED combo is one the
85
+ * engine has stopped grading, so its recommendations are historical, and a long streak says the
86
+ * pairing is behaving even if this one run was not.
87
+ */
88
+ export const publicKaizenEntryComboSchema = v.object({
89
+ /** Consecutive high grades (4 or 5, no recommendations) recorded for the combo. */
90
+ consecutiveHighGrades: v.number(),
91
+ /** Whether it crossed the streak threshold and is no longer graded. */
92
+ verified: v.boolean(),
93
+ /** Epoch ms it crossed, else null. */
94
+ verifiedAt: v.nullable(v.number()),
95
+ });
96
+ /**
97
+ * One Kaizen entry as `/api/v1` speaks it: the grading, what produced it, and its triage state.
98
+ *
99
+ * The id vocabulary is the public one — `entryId` for the grading, `runId` and `taskId` for the
100
+ * run and board block the stored row calls `executionId` and `blockId` — so every id here
101
+ * addresses something on this API. Nothing the row holds is dropped.
102
+ */
103
+ export const publicKaizenEntrySchema = v.object({
104
+ /** The id to pass to `GET /api/v1/kaizen/entries/{entryId}` and the acknowledge route. */
105
+ entryId: v.string(),
106
+ /** The run whose step was graded (`GET /api/v1/debug/runs/{runId}` for its own detail). */
107
+ runId: v.string(),
108
+ /** Index of the graded step within that run's pipeline. */
109
+ stepIndex: v.number(),
110
+ /** The board task the run was started on, as the row recorded it. */
111
+ taskId: v.string(),
112
+ /** What the board says about that task now, or null when it has been deleted. */
113
+ task: v.nullable(publicKaizenEntryTaskSchema),
114
+ /** The graded step's agent kind (`coder`, `architect`, a deployment's own kind, …). */
115
+ agentKind: v.string(),
116
+ /** The model the step actually dispatched on, as resolved at dispatch. */
117
+ model: v.string(),
118
+ /** The shipped prompt version the step ran, from the agents prompt-version registry. */
119
+ promptVersion: v.number(),
120
+ /** `agentKind|model|promptVersion(|revision|variant)` — what the streak is kept against. */
121
+ comboKey: v.string(),
122
+ /** The combo's verification progress, or null when nothing has been recorded for it. */
123
+ combo: v.nullable(publicKaizenEntryComboSchema),
124
+ /** Where the grading itself got to (`scheduled` / `running` / `complete` / `failed`). */
125
+ status: kaizenGradingStatusSchema,
126
+ /** 1..5 once `complete` (5 = smooth, guided, efficient); null while pending or failed. */
127
+ grade: v.nullable(v.number()),
128
+ /** The grader's prose account of how the interaction went; empty until it completes. */
129
+ summary: v.string(),
130
+ /** What the grader recommends changing. Empty ⇒ it found nothing to improve. */
131
+ recommendations: v.array(v.string()),
132
+ /** `provider:model` that produced the grade, so a reader can weigh the grader itself. */
133
+ graderModel: v.nullable(v.string()),
134
+ /**
135
+ * Why the grading `failed`, else null. A failure is a real entry rather than a hidden one: it
136
+ * usually names a deployment-level problem (prompt recording off, no grader model wired) that
137
+ * nothing else reports, and it is acknowledgeable for exactly that reason.
138
+ */
139
+ error: v.nullable(v.string()),
140
+ /** Whether somebody has triaged it — the same fact `acknowledgedAt` carries, as the filter. */
141
+ acknowledged: v.boolean(),
142
+ /** Epoch ms it was acknowledged, else null. */
143
+ acknowledgedAt: v.nullable(v.number()),
144
+ /** The user (`usr_*`) or API key (`pak_*`) that acknowledged it, else null. */
145
+ acknowledgedBy: v.nullable(v.string()),
146
+ /** The note left with the acknowledgement, else null. */
147
+ acknowledgementNote: v.nullable(v.string()),
148
+ /** Epoch ms the grading was scheduled (also what the list orders and pages on). */
149
+ createdAt: v.number(),
150
+ /** Epoch ms the row last changed (a grader transition or an acknowledgement). */
151
+ updatedAt: v.number(),
152
+ });
153
+ export const publicKaizenEntryListSchema = v.object({
154
+ entries: v.array(publicKaizenEntrySchema),
155
+ /**
156
+ * Cursor to pass as `?cursor=` for the next page, or null when this was the last page. A
157
+ * non-null cursor means "there may be more", so a client pages until it comes back null.
158
+ */
159
+ nextCursor: v.nullable(v.string()),
160
+ });
161
+ /**
162
+ * Query params for `GET /api/v1/kaizen/entries`. Ordering is newest-first on the grading's
163
+ * `createdAt`, keyset-paged on `(createdAt, entryId)` so a burst of gradings sharing a
164
+ * millisecond cannot lose rows between pages.
165
+ *
166
+ * The filters are the questions an improvement loop actually asks, each pushed into SQL: what is
167
+ * untriaged, what the grader has finished with, what one agent kind is being told, and what is new
168
+ * since the last sweep. They compose, and `?acknowledged=false&settled=true` is the working
169
+ * backlog: every entry in it is one the acknowledge route accepts.
170
+ */
171
+ export const listPublicKaizenEntriesQuerySchema = v.object({
172
+ /** Rows per page (1..100); omitted → 25. */
173
+ limit: v.optional(pageLimitSchema),
174
+ /** Opaque cursor from a previous page's `nextCursor`. */
175
+ cursor: v.optional(cursorSchema),
176
+ /** `false` for the untriaged backlog, `true` for what has been handled; omitted → both. */
177
+ acknowledged: v.optional(booleanQuerySchema),
178
+ /**
179
+ * `true` for entries the grader has FINISHED with (whatever it concluded), `false` for those
180
+ * still scheduled or running; omitted → both.
181
+ *
182
+ * The filter that makes `?acknowledged=false&settled=true` an actionable backlog: every row it
183
+ * returns is one the acknowledge route will accept, where `?acknowledged=false` alone also
184
+ * returns gradings mid-flight that it refuses with `409 kaizen_entry_not_settled`. It is a
185
+ * separate question from `status` because the settled SET is what the write is gated on, and
186
+ * spelling it as `status=complete` drops the `failed` entries (which usually name a deployment
187
+ * problem, and are the ones most worth acting on) while a client-side union of the two would
188
+ * silently miss any settled state added later.
189
+ */
190
+ settled: v.optional(booleanQuerySchema),
191
+ /** Return only entries whose grading is in this exact state. */
192
+ status: v.optional(kaizenGradingStatusSchema),
193
+ /** Return only entries grading this agent kind. */
194
+ agentKind: v.optional(v.pipe(v.string(), v.trim(), v.minLength(1), v.maxLength(120))),
195
+ /** Return only entries created at or after this epoch-ms stamp (the incremental-poll filter). */
196
+ since: v.optional(epochMsQuerySchema),
197
+ });
198
+ /** Longest acknowledgement note the surface stores. */
199
+ export const KAIZEN_ACKNOWLEDGEMENT_NOTE_MAX = 2_000;
200
+ /**
201
+ * Body for `POST /api/v1/kaizen/entries/{entryId}/acknowledge`.
202
+ *
203
+ * `acknowledged` is optional and defaults to `true`, so the ordinary call is an empty body; pass
204
+ * `false` to put an entry back on the backlog after acknowledging it by mistake. Acknowledging an
205
+ * already-acknowledged entry is a no-op that returns the row unchanged, which keeps
206
+ * `acknowledgedAt` naming when it was FIRST triaged rather than when a retrying client last
207
+ * repeated itself.
208
+ */
209
+ export const acknowledgeKaizenEntrySchema = v.object({
210
+ /** `true` (the default) records the acknowledgement; `false` clears it. */
211
+ acknowledged: v.optional(v.boolean()),
212
+ /**
213
+ * What the next reader should know: a ticket id, a decision, why it was dismissed. Stored only
214
+ * with the acknowledgement that lands, and cleared along with it.
215
+ */
216
+ note: v.optional(v.nullable(v.pipe(v.string(), v.trim(), v.maxLength(KAIZEN_ACKNOWLEDGEMENT_NOTE_MAX)))),
217
+ });
218
+ //# sourceMappingURL=public-kaizen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-kaizen.js","sourceRoot":"","sources":["../src/public-kaizen.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import * as v from 'valibot';
2
+ /** Hard ceiling on rows one page may return, wherever a list is paginated. */
3
+ export declare const PUBLIC_MAX_PAGE_LIMIT = 100;
4
+ /**
5
+ * An OPAQUE keyset pagination cursor. Callers must treat it as a black box and echo it back
6
+ * verbatim — its encoding is an implementation detail (today a base64url `<sortKey>|<id>` pair)
7
+ * that may change. Keyset, not offset: an offset page shifts under concurrent inserts, silently
8
+ * skipping or repeating rows, which is exactly what a polling integration must never see.
9
+ */
10
+ export declare const cursorSchema: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>;
11
+ /** Rows one page may return (1..{@link PUBLIC_MAX_PAGE_LIMIT}); each list documents its default. */
12
+ export declare const pageLimitSchema: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "Must be a whole number">, v.TransformAction<any, number>, v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 100, undefined>]>;
13
+ /** An epoch-ms query filter: digits only, for the same reason as {@link pageLimitSchema}. */
14
+ export declare const epochMsQuerySchema: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "Must be a whole number of epoch milliseconds">, v.TransformAction<any, number>, v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
15
+ /**
16
+ * A boolean query filter, spelled `true` / `false`.
17
+ *
18
+ * A closed picklist rather than "anything that is not `false` is true": on a tri-state filter
19
+ * (omitted / true / false) a typo has to refuse, because coercing `?acknowledged=yes` to `true`
20
+ * would serve a caller the confident opposite of what it asked for on a `false` typo, with no
21
+ * way to notice.
22
+ */
23
+ export declare const booleanQuerySchema: v.SchemaWithPipe<readonly [v.PicklistSchema<["true", "false"], undefined>, v.TransformAction<"false" | "true", boolean>]>;
24
+ //# sourceMappingURL=public-paging.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-paging.d.ts","sourceRoot":"","sources":["../src/public-paging.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAoB5B,8EAA8E;AAC9E,eAAO,MAAM,qBAAqB,MAAM,CAAA;AAExC;;;;;GAKG;AACH,eAAO,MAAM,YAAY,0JAAiE,CAAA;AAE1F,oGAAoG;AACpG,eAAO,MAAM,eAAe,0RAQ3B,CAAA;AAED,6FAA6F;AAC7F,eAAO,MAAM,kBAAkB,sQAO9B,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,2HAG9B,CAAA"}
@@ -0,0 +1,41 @@
1
+ import * as v from 'valibot';
2
+ // ---------------------------------------------------------------------------
3
+ // The query-parameter primitives every bounded `/api/v1` list shares: the opaque keyset
4
+ // cursor, the page limit, an epoch-ms lower bound and a boolean flag.
5
+ //
6
+ // One module rather than a private copy per contract file, because these ARE the surface's
7
+ // pagination contract (`backend/docs/public-api.md`, "Pagination") rather than four
8
+ // independent local details: a list whose `limit` ceiling or cursor length drifted from its
9
+ // siblings would be a difference a caller discovers by getting a 400 from one endpoint and
10
+ // not another. `/jobs`, the task list, the whole `/debug` surface and the Kaizen entries all
11
+ // read them from here.
12
+ //
13
+ // Query params arrive as STRINGS, so each numeric one is digit-checked BEFORE the coercion:
14
+ // `Number()` alone also accepts `1e9`, `0x64` and `' '`, which would read as plausible values
15
+ // rather than the 400 a malformed request deserves. The `maxValue` ceilings are what make the
16
+ // bounds real backstops rather than suggestions (a caller cannot ask for the whole table back
17
+ // by passing a huge limit).
18
+ // ---------------------------------------------------------------------------
19
+ /** Hard ceiling on rows one page may return, wherever a list is paginated. */
20
+ export const PUBLIC_MAX_PAGE_LIMIT = 100;
21
+ /**
22
+ * An OPAQUE keyset pagination cursor. Callers must treat it as a black box and echo it back
23
+ * verbatim — its encoding is an implementation detail (today a base64url `<sortKey>|<id>` pair)
24
+ * that may change. Keyset, not offset: an offset page shifts under concurrent inserts, silently
25
+ * skipping or repeating rows, which is exactly what a polling integration must never see.
26
+ */
27
+ export const cursorSchema = v.pipe(v.string(), v.trim(), v.minLength(1), v.maxLength(200));
28
+ /** Rows one page may return (1..{@link PUBLIC_MAX_PAGE_LIMIT}); each list documents its default. */
29
+ export const pageLimitSchema = v.pipe(v.string(), v.regex(/^\d+$/, 'Must be a whole number'), v.transform(Number), v.number(), v.integer(), v.minValue(1), v.maxValue(PUBLIC_MAX_PAGE_LIMIT));
30
+ /** An epoch-ms query filter: digits only, for the same reason as {@link pageLimitSchema}. */
31
+ export const epochMsQuerySchema = v.pipe(v.string(), v.regex(/^\d+$/, 'Must be a whole number of epoch milliseconds'), v.transform(Number), v.number(), v.integer(), v.minValue(0));
32
+ /**
33
+ * A boolean query filter, spelled `true` / `false`.
34
+ *
35
+ * A closed picklist rather than "anything that is not `false` is true": on a tri-state filter
36
+ * (omitted / true / false) a typo has to refuse, because coercing `?acknowledged=yes` to `true`
37
+ * would serve a caller the confident opposite of what it asked for on a `false` typo, with no
38
+ * way to notice.
39
+ */
40
+ export const booleanQuerySchema = v.pipe(v.picklist(['true', 'false']), v.transform((value) => value === 'true'));
41
+ //# sourceMappingURL=public-paging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-paging.js","sourceRoot":"","sources":["../src/public-paging.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAE5B,8EAA8E;AAC9E,wFAAwF;AACxF,sEAAsE;AACtE,EAAE;AACF,2FAA2F;AAC3F,oFAAoF;AACpF,4FAA4F;AAC5F,2FAA2F;AAC3F,6FAA6F;AAC7F,uBAAuB;AACvB,EAAE;AACF,4FAA4F;AAC5F,8FAA8F;AAC9F,8FAA8F;AAC9F,8FAA8F;AAC9F,4BAA4B;AAC5B,8EAA8E;AAE9E,8EAA8E;AAC9E,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAA;AAExC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;AAE1F,oGAAoG;AACpG,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CACnC,CAAC,CAAC,MAAM,EAAE,EACV,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,wBAAwB,CAAC,EAC1C,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EACnB,CAAC,CAAC,MAAM,EAAE,EACV,CAAC,CAAC,OAAO,EAAE,EACX,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EACb,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAClC,CAAA;AAED,6FAA6F;AAC7F,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CACtC,CAAC,CAAC,MAAM,EAAE,EACV,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,8CAA8C,CAAC,EAChE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EACnB,CAAC,CAAC,MAAM,EAAE,EACV,CAAC,CAAC,OAAO,EAAE,EACX,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CACd,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CACtC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAC7B,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,MAAM,CAAC,CACzC,CAAA"}
@@ -240,6 +240,83 @@ export declare const linkPublicRepoSchema: v.ObjectSchema<{
240
240
  readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.RegexAction<string, "Only letters, digits, '.', '_' and '-' are allowed">, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 100, undefined>]>;
241
241
  }, undefined>;
242
242
  export type LinkPublicRepoInput = v.InferOutput<typeof linkPublicRepoSchema>;
243
+ /**
244
+ * Characters ONE file read may answer with, past which it is REFUSED rather than truncated.
245
+ *
246
+ * A caller reading a file to grade what an agent committed is joining on its exact bytes, and a
247
+ * silently shortened answer is indistinguishable from an agent that wrote a shorter file. So the
248
+ * cap refuses (`422`, `details.reason: 'file_too_large'`) and names the size, which is a fact the
249
+ * caller can act on where a truncation is not. Generous enough for source: 256 KiB is past any
250
+ * hand-written manifest, workflow or module.
251
+ *
252
+ * It is not the only ceiling in play, and the refusal is deliberately the SAME one either way: a
253
+ * provider's own contents API stops serving a blob at a limit of its own (1 MB on GitHub), which
254
+ * arrives here as a `403` that says nothing about the file. That is mapped to this reason too, with
255
+ * the provider's limit in `details` and no `size`, because nothing measured one.
256
+ */
257
+ export declare const MAX_REPO_FILE_CHARS = 262144;
258
+ /**
259
+ * A repo-root-relative file path, refused here rather than left to the provider's 404.
260
+ *
261
+ * The provider would answer "no such file" for a traversal or an absolute path anyway, so this is
262
+ * not a security boundary and does not claim to be one: the resolution is already scoped to a
263
+ * repository this workspace LINKED, which is what actually bounds the read. What it buys is an
264
+ * honest refusal. `..` and a leading `/` are the two ways a caller means something other than what
265
+ * it typed, and answering both as `file_not_found` sends someone hunting for a file that is right
266
+ * where they left it.
267
+ */
268
+ export declare const publicRepoFilePathSchema: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 1000, undefined>, v.CheckAction<string, "A path is relative to the repository root">, v.CheckAction<string, "No path segment may be '..'">]>;
269
+ /**
270
+ * ONE file from a repository this workspace has LINKED, at a ref.
271
+ *
272
+ * The read that closes the loop on everything else this surface can start: a caller can create a
273
+ * repository, adopt one, file work against it and watch a run merge, and then had no way to see WHAT
274
+ * the run committed. The only alternative was grepping the agent's final reply, which is asserting on
275
+ * model prose (swap the model and it goes red having found nothing wrong), so anything that wanted a
276
+ * real answer had to hold a VCS credential of its own: a second token in an operator's config, with
277
+ * its own scopes to get right, for data the workspace's own connection can already read.
278
+ *
279
+ * **A single file, deliberately, and no directory listing.** A listing is a separate decision with
280
+ * its own frozen-forever questions (pagination, recursion, what a large tree does), and this surface
281
+ * may not answer one badly and then keep answering it. `GET /api/v1/services/:id/spec` remains the
282
+ * structured read for the one tree the platform itself understands.
283
+ *
284
+ * **Only what the workspace has LINKED.** The scope is the same one every other read here takes, so
285
+ * this publishes nothing a caller could not already reach through the board, and a repository the
286
+ * connection can see but this workspace has not adopted is a `404` exactly as it is everywhere else.
287
+ */
288
+ export declare const publicRepoFileSchema: v.ObjectSchema<{
289
+ readonly owner: v.StringSchema<undefined>;
290
+ readonly name: v.StringSchema<undefined>;
291
+ /** The repo-root-relative path that was read, as the request gave it. */
292
+ readonly path: v.StringSchema<undefined>;
293
+ /**
294
+ * The ref the read was pinned to, or `null` when the request named none and the PROVIDER resolved
295
+ * the repository's own default branch.
296
+ *
297
+ * Null rather than the branch name, because this read does not learn which branch that was and the
298
+ * platform's own idea of it is a value it may have INVENTED: a projection row that carries no
299
+ * default branch is defaulted to `main` for the benefit of clone targets, and reporting that as the
300
+ * ref graded would name a branch the repository may not have. `sha` is the value to record either
301
+ * way, being the one identifier that cannot drift.
302
+ */
303
+ readonly ref: v.NullableSchema<v.StringSchema<undefined>, undefined>;
304
+ /**
305
+ * The file's blob sha: the byte-exact handle, for a caller comparing two reads without diffing
306
+ * their bodies, or joining what it graded to what the repository holds.
307
+ */
308
+ readonly sha: v.StringSchema<undefined>;
309
+ /**
310
+ * The file's content, decoded as UTF-8.
311
+ *
312
+ * Text only. A file whose bytes are not valid UTF-8 is REFUSED (`422`,
313
+ * `details.reason: 'file_not_text'`, carrying the `sha`) rather than answered as the replacement
314
+ * characters a lossy decode produces: mojibake presented as a file's content is the same lie a
315
+ * truncation would be, and a caller hashing it would be hashing the decoder's output.
316
+ */
317
+ readonly content: v.StringSchema<undefined>;
318
+ }, undefined>;
319
+ export type PublicRepoFile = v.InferOutput<typeof publicRepoFileSchema>;
243
320
  /**
244
321
  * How the manifests at `path` are rendered. `raw` (the default) treats the path as a manifest file
245
322
  * or a flat directory of valid YAML; `kustomize` treats it as an overlay directory, which only the
@@ -620,12 +697,106 @@ export declare const publicEnvironmentConnectionViewSchema: v.ObjectSchema<{
620
697
  readonly secretKeys: v.ArraySchema<v.StringSchema<undefined>, undefined>;
621
698
  }, undefined>;
622
699
  export type PublicEnvironmentConnectionView = v.InferOutput<typeof publicEnvironmentConnectionViewSchema>;
700
+ /**
701
+ * One registered handler as the LIST reports it, whatever engine services it.
702
+ *
703
+ * Its own shape rather than a reuse of {@link publicEnvironmentConnectionViewSchema}, and the reason
704
+ * is the difference between the two calls. That one answers a `POST` this surface only ever makes
705
+ * with `engine: 'kubernetes'`, so its literal is exactly true. A list has to report every handler a
706
+ * workspace holds, including the `remote-custom` ones a deployment SEEDS from its composition root,
707
+ * and widening the shipped literal to a string would retype a field a released client already
708
+ * narrows on. Additive beats a retype (ADR 0034), so the list gets its own view.
709
+ *
710
+ * `endpoint` and not `apiServerUrl`: the noun is only true of Kubernetes, and the same mistake in a
711
+ * shared reduction is what makes an operator whose environment is a VM go looking for an apiserver.
712
+ *
713
+ * The write is what makes this read worth having. Handlers are the one half of provisioning a
714
+ * headless caller could WRITE and never READ, so a deployment that seeds them programmatically (the
715
+ * documented path for a multi-tenant Node deployment, and the one local mode takes) had no way for
716
+ * any caller to confirm the seed landed. "Kargo accepts our token" and "this workspace has a Kargo
717
+ * handler" are different failures with different fixes, and only one of them was checkable.
718
+ */
719
+ export declare const publicEnvironmentHandlerSchema: v.ObjectSchema<{
720
+ /** The provision type this handler serves (`kubernetes`, `docker-compose`, `custom`, …). */
721
+ readonly provisionType: v.StringSchema<undefined>;
722
+ /**
723
+ * For a `custom` handler, the manifest id it is KEYED to; null for every other type.
724
+ *
725
+ * Both this and {@link acceptsManifestId} are reported because the engine's own resolution matches
726
+ * a service's pinned `manifestId` against EITHER, and only one of the two is set by either way of
727
+ * registering a handler: a seed that keys a handler to `kargo` sets this one and leaves the other
728
+ * null, while a `remote-custom` connection sets the other. Publishing one of them made the
729
+ * commonest seed shape indistinguishable from a handler that serves nothing, which is the exact
730
+ * question this read exists to answer.
731
+ */
732
+ readonly manifestId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
733
+ /** For a `custom` handler, the manifest id it declares it ACCEPTS; null for every other type. */
734
+ readonly acceptsManifestId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
735
+ /** The internal engine servicing it, as an open string: a deployment may register its own. */
736
+ readonly engine: v.StringSchema<undefined>;
737
+ /** The registry backend kind that builds this handler's provider. */
738
+ readonly backendKind: v.StringSchema<undefined>;
739
+ readonly label: v.StringSchema<undefined>;
740
+ /** The connection's own endpoint (an apiserver for Kubernetes, the management API otherwise). */
741
+ readonly endpoint: v.StringSchema<undefined>;
742
+ /** The secret-bundle keys this handler holds, never their values. */
743
+ readonly secretKeys: v.ArraySchema<v.StringSchema<undefined>, undefined>;
744
+ readonly connectedAt: v.NumberSchema<undefined>;
745
+ }, undefined>;
746
+ export type PublicEnvironmentHandler = v.InferOutput<typeof publicEnvironmentHandlerSchema>;
747
+ export declare const publicEnvironmentHandlerListSchema: v.ObjectSchema<{
748
+ readonly connections: v.ArraySchema<v.ObjectSchema<{
749
+ /** The provision type this handler serves (`kubernetes`, `docker-compose`, `custom`, …). */
750
+ readonly provisionType: v.StringSchema<undefined>;
751
+ /**
752
+ * For a `custom` handler, the manifest id it is KEYED to; null for every other type.
753
+ *
754
+ * Both this and {@link acceptsManifestId} are reported because the engine's own resolution matches
755
+ * a service's pinned `manifestId` against EITHER, and only one of the two is set by either way of
756
+ * registering a handler: a seed that keys a handler to `kargo` sets this one and leaves the other
757
+ * null, while a `remote-custom` connection sets the other. Publishing one of them made the
758
+ * commonest seed shape indistinguishable from a handler that serves nothing, which is the exact
759
+ * question this read exists to answer.
760
+ */
761
+ readonly manifestId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
762
+ /** For a `custom` handler, the manifest id it declares it ACCEPTS; null for every other type. */
763
+ readonly acceptsManifestId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
764
+ /** The internal engine servicing it, as an open string: a deployment may register its own. */
765
+ readonly engine: v.StringSchema<undefined>;
766
+ /** The registry backend kind that builds this handler's provider. */
767
+ readonly backendKind: v.StringSchema<undefined>;
768
+ readonly label: v.StringSchema<undefined>;
769
+ /** The connection's own endpoint (an apiserver for Kubernetes, the management API otherwise). */
770
+ readonly endpoint: v.StringSchema<undefined>;
771
+ /** The secret-bundle keys this handler holds, never their values. */
772
+ readonly secretKeys: v.ArraySchema<v.StringSchema<undefined>, undefined>;
773
+ readonly connectedAt: v.NumberSchema<undefined>;
774
+ }, undefined>, undefined>;
775
+ }, undefined>;
776
+ export type PublicEnvironmentHandlerList = v.InferOutput<typeof publicEnvironmentHandlerListSchema>;
623
777
  /**
624
778
  * Where ONE service's per-run manifests live: the half the engine connection does not carry.
625
779
  *
626
780
  * The platform keeps these two apart deliberately (one cluster, many services, each with its own
627
781
  * manifests), and this surface keeps the same seam rather than collapsing them into one call, so a
628
782
  * caller adding a second service to an existing cluster changes one thing.
783
+ *
784
+ * **`custom` is here because a deployment that ships its OWN environment backend could not say so.**
785
+ * The registry model exists precisely so one can (`EnvironmentBackendRegistry`,
786
+ * `CustomManifestTypeRegistry`, `seedEnvironmentHandlers`), and everything such a backend needs is
787
+ * reachable from a composition root; none of it was reachable from this surface. A Kargo-backed or
788
+ * Nomad-backed service could therefore neither be pinned nor READ BACK here, and that second half is
789
+ * the one that hurts: the projection omitted what it could not describe, so a pinned service and an
790
+ * unpinned one answered identically (`provisioning: undefined`) and a headless caller could not
791
+ * report the state, let alone check it.
792
+ *
793
+ * **It pins by `manifestId` and carries no backend config**, and that is deliberate rather than
794
+ * partial. The engine side of a custom backend is an `environmentManifest` whose `providerConfig` is
795
+ * an open `Record<string, unknown>` by design, so publishing it would freeze a shape this repo
796
+ * evolves freely onto a surface that may never be reshaped (ADR 0034). What a caller pins here is an
797
+ * id the DEPLOYMENT already registered, which is a closed, stable value; registering the handler
798
+ * behind it stays a composition-root act, and `GET /api/v1/environments/connections` is how a caller
799
+ * confirms one landed.
629
800
  */
630
801
  export declare const publicServiceProvisioningSchema: v.VariantSchema<"type", [v.ObjectSchema<{
631
802
  readonly type: v.LiteralSchema<"kubernetes", undefined>;
@@ -646,6 +817,15 @@ export declare const publicServiceProvisioningSchema: v.VariantSchema<"type", [v
646
817
  /** Omitted ⇒ `raw`. */
647
818
  readonly renderer: v.OptionalSchema<v.PicklistSchema<["raw", "kustomize"], undefined>, undefined>;
648
819
  }, undefined>], undefined>;
820
+ }, undefined>, v.ObjectSchema<{
821
+ readonly type: v.LiteralSchema<"custom", undefined>;
822
+ /**
823
+ * The custom-manifest-type id this service produces, matched to a `remote-custom` handler that
824
+ * declares it accepts the same one.
825
+ */
826
+ readonly manifestId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.RegexAction<string, "Only lowercase letters, digits and hyphens are allowed">, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
827
+ /** Where the manifest lives in the repository; omitted ⇒ the manifest type's own default. */
828
+ readonly manifestPath: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
649
829
  }, undefined>], undefined>;
650
830
  export type PublicServiceProvisioning = v.InferOutput<typeof publicServiceProvisioningSchema>;
651
831
  /**
@@ -680,6 +860,15 @@ export declare const updatePublicServiceSchema: v.SchemaWithPipe<readonly [v.Obj
680
860
  /** Omitted ⇒ `raw`. */
681
861
  readonly renderer: v.OptionalSchema<v.PicklistSchema<["raw", "kustomize"], undefined>, undefined>;
682
862
  }, undefined>], undefined>;
863
+ }, undefined>, v.ObjectSchema<{
864
+ readonly type: v.LiteralSchema<"custom", undefined>;
865
+ /**
866
+ * The custom-manifest-type id this service produces, matched to a `remote-custom` handler that
867
+ * declares it accepts the same one.
868
+ */
869
+ readonly manifestId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.RegexAction<string, "Only lowercase letters, digits and hyphens are allowed">, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
870
+ /** Where the manifest lives in the repository; omitted ⇒ the manifest type's own default. */
871
+ readonly manifestPath: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
683
872
  }, undefined>], undefined>, undefined>;
684
873
  }, undefined>, v.CheckAction<{
685
874
  title?: string | undefined;
@@ -697,6 +886,10 @@ export declare const updatePublicServiceSchema: v.SchemaWithPipe<readonly [v.Obj
697
886
  path: string;
698
887
  renderer?: "kustomize" | "raw" | undefined;
699
888
  };
889
+ } | {
890
+ type: "custom";
891
+ manifestId: string;
892
+ manifestPath?: string | undefined;
700
893
  } | undefined;
701
894
  }, "Supply at least one of title, description or provisioning.">]>;
702
895
  export type UpdatePublicServiceInput = v.InferOutput<typeof updatePublicServiceSchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"public-provisioning.d.ts","sourceRoot":"","sources":["../src/public-provisioning.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"public-provisioning.d.ts","sourceRoot":"","sources":["../src/public-provisioning.ts"],"names":[],"mappings":"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"}