@cat-factory/contracts 0.229.0 → 0.231.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 (59) hide show
  1. package/dist/entities.d.ts +1 -1
  2. package/dist/errors.js +1 -1
  3. package/dist/errors.js.map +1 -1
  4. package/dist/execution.d.ts +9 -2
  5. package/dist/execution.d.ts.map +1 -1
  6. package/dist/execution.js +11 -2
  7. package/dist/execution.js.map +1 -1
  8. package/dist/form-fields.d.ts +203 -0
  9. package/dist/form-fields.d.ts.map +1 -0
  10. package/dist/form-fields.js +315 -0
  11. package/dist/form-fields.js.map +1 -0
  12. package/dist/index.d.ts +1 -0
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +1 -0
  15. package/dist/index.js.map +1 -1
  16. package/dist/initiative-preset.d.ts +34 -93
  17. package/dist/initiative-preset.d.ts.map +1 -1
  18. package/dist/initiative-preset.js +30 -182
  19. package/dist/initiative-preset.js.map +1 -1
  20. package/dist/initiative.d.ts +14 -9
  21. package/dist/initiative.d.ts.map +1 -1
  22. package/dist/initiative.js +15 -15
  23. package/dist/initiative.js.map +1 -1
  24. package/dist/input-gate.js +1 -1
  25. package/dist/input-gate.js.map +1 -1
  26. package/dist/merge.d.ts +374 -344
  27. package/dist/merge.d.ts.map +1 -1
  28. package/dist/merge.js +50 -4
  29. package/dist/merge.js.map +1 -1
  30. package/dist/primitives.d.ts +10 -5
  31. package/dist/primitives.d.ts.map +1 -1
  32. package/dist/primitives.js +11 -5
  33. package/dist/primitives.js.map +1 -1
  34. package/dist/public-decisions.d.ts +2 -2
  35. package/dist/public-decisions.js +3 -3
  36. package/dist/public-decisions.js.map +1 -1
  37. package/dist/requests.d.ts +1 -1
  38. package/dist/routes/board.d.ts +14 -14
  39. package/dist/routes/bug-hunt.d.ts +2 -2
  40. package/dist/routes/execution.d.ts +2 -2
  41. package/dist/routes/initiative.d.ts +17 -17
  42. package/dist/routes/input-gate.js +2 -2
  43. package/dist/routes/input-gate.js.map +1 -1
  44. package/dist/routes/merge.d.ts +504 -504
  45. package/dist/routes/public-decisions.d.ts +1 -1
  46. package/dist/routes/public-decisions.js +2 -2
  47. package/dist/routes/public-decisions.js.map +1 -1
  48. package/dist/routes/tasks.d.ts +3 -3
  49. package/dist/routes/workspaces.d.ts +210 -194
  50. package/dist/routes/workspaces.d.ts.map +1 -1
  51. package/dist/snapshot.d.ts +105 -97
  52. package/dist/snapshot.d.ts.map +1 -1
  53. package/dist/task-types.d.ts +42 -28
  54. package/dist/task-types.d.ts.map +1 -1
  55. package/dist/task-types.js +30 -25
  56. package/dist/task-types.js.map +1 -1
  57. package/dist/workspace-settings.d.ts +1 -1
  58. package/dist/workspace-settings.js +1 -1
  59. package/package.json +1 -1
@@ -0,0 +1,315 @@
1
+ import * as v from 'valibot';
2
+ // ---------------------------------------------------------------------------
3
+ // ONE descriptor-driven form vocabulary, shared by every surface where a DEPLOYMENT declares a
4
+ // small form and the platform collects, validates, freezes and renders the answers as data:
5
+ //
6
+ // - an initiative PRESET's create form (`initiative-preset.ts`, values on `presetInputs`)
7
+ // - a reusable OPERATION's per-case brief (a custom task type's `fields` in `task-types.ts`,
8
+ // values in the sparse `taskTypeFields.custom` bag)
9
+ //
10
+ // The two grew the same shape independently, and the second was the poorer copy: four input types
11
+ // against eight, no defaults, no conditional visibility, and no shared validation, so a form that
12
+ // rendered correctly in one surface was unexpressible in the other. This module is the union, and
13
+ // each surface declares only WHICH TYPES it admits over it (see `taskTypeFieldTypeSchema`, which
14
+ // excludes `password` by construction: a task field value reaches prompts, the board snapshot and
15
+ // telemetry, so a secret belongs in the capability-credential store instead).
16
+ //
17
+ // Everything here is PURE and total, because the same rule has to hold at four doors: the SPA's
18
+ // submit button, the internal create controller, the public API, and (for rendering) the prompt
19
+ // fold. Descriptor labels/help/option captions are DEPLOYMENT-authored English rendered verbatim
20
+ // (the `describeConfig` convention); only the chrome around them is i18n.
21
+ // ---------------------------------------------------------------------------
22
+ /** Bound on a field `key`, and on a key in a filled {@link descriptorFieldValuesSchema} bag. */
23
+ export const DESCRIPTOR_FIELD_KEY_MAX = 80;
24
+ /** Bound on a single string / string-array element value. */
25
+ export const DESCRIPTOR_FIELD_VALUE_MAX = 2000;
26
+ /** Bound on the number of elements in a `checkbox-group` (multi-value) answer. */
27
+ export const DESCRIPTOR_FIELD_ARRAY_MAX = 50;
28
+ /** One filled value: a scalar (`text`/`select`/`path`/…), a multi-select, a toggle, or a number. */
29
+ export const descriptorFieldValueSchema = v.union([
30
+ v.pipe(v.string(), v.maxLength(DESCRIPTOR_FIELD_VALUE_MAX)),
31
+ v.pipe(v.array(v.pipe(v.string(), v.maxLength(DESCRIPTOR_FIELD_VALUE_MAX))), v.maxLength(DESCRIPTOR_FIELD_ARRAY_MAX)),
32
+ v.boolean(),
33
+ v.number(),
34
+ ]);
35
+ /** A filled descriptor form: a bounded map from field `key` to its value. */
36
+ export const descriptorFieldValuesSchema = v.record(v.pipe(v.string(), v.minLength(1), v.maxLength(DESCRIPTOR_FIELD_KEY_MAX)), descriptorFieldValueSchema);
37
+ /**
38
+ * How a field is rendered and collected. The first six mirror `ProviderConfigField`'s types
39
+ * exactly; `checkbox-group` (a multi-select, value `string[]`) and `path` (a repo-relative
40
+ * directory, {@link isSafeRepoDirPath}-validated) are the two the preset form added.
41
+ *
42
+ * A surface may admit a SUBSET (each declares its own picklist over these members) but never a
43
+ * member outside them: the renderer and the validators below switch over exactly this union.
44
+ */
45
+ export const descriptorFieldTypeSchema = v.picklist([
46
+ 'text',
47
+ 'password',
48
+ 'select',
49
+ 'number',
50
+ 'checkbox',
51
+ 'textarea',
52
+ 'checkbox-group',
53
+ 'path',
54
+ ]);
55
+ /**
56
+ * Single-condition visibility for a field: it renders only when the referenced field's value
57
+ * matches. `equals` compares a scalar value; `includes` tests membership in a `checkbox-group`
58
+ * value ("show `diagramsDir` only when `docTypes` includes `diagrams`"). Deliberately ONE
59
+ * condition: resist growing this into a recursive schema renderer (that is the descriptor-forms
60
+ * initiative's separate line item).
61
+ */
62
+ export const descriptorFieldShowWhenSchema = v.object({
63
+ /** The `key` of the field whose value gates this one's visibility. */
64
+ key: v.pipe(v.string(), v.minLength(1)),
65
+ /**
66
+ * Show when the referenced scalar value equals this. A union so `equals` can gate a `checkbox`
67
+ * (boolean) or `number` field, not only a `select`/`text` string. The comparison is strict, so
68
+ * the type must match the referenced field's value.
69
+ */
70
+ equals: v.optional(v.union([v.string(), v.boolean(), v.number()])),
71
+ /** Show when the referenced `checkbox-group` value includes this. */
72
+ includes: v.optional(v.string()),
73
+ });
74
+ /** One choice of a `select` / `checkbox-group` field. */
75
+ export const descriptorFieldOptionSchema = v.object({
76
+ /** The value stored when this choice is picked (an enum-stable string). */
77
+ value: v.pipe(v.string(), v.minLength(1), v.maxLength(120)),
78
+ /** The caption shown in the form, and rendered in place of the value in prose. */
79
+ label: v.pipe(v.string(), v.minLength(1), v.maxLength(120)),
80
+ });
81
+ /**
82
+ * Everything a descriptor field carries EXCEPT its `type`, which each surface narrows to its own
83
+ * admitted picklist. Spread into that surface's own `v.object({ ...descriptorFieldEntries, type })`
84
+ * so the shared bounds cannot drift per surface and a new shared attribute reaches both at once.
85
+ */
86
+ export const descriptorFieldEntries = {
87
+ /** Stable key the value is stored/sent under (e.g. `docTypes`, `entity`). */
88
+ key: v.pipe(v.string(), v.minLength(1), v.maxLength(DESCRIPTOR_FIELD_KEY_MAX)),
89
+ /** Human label for the form field (deployment-supplied English). */
90
+ label: v.pipe(v.string(), v.minLength(1), v.maxLength(120)),
91
+ /** Optional helper text shown under the field. */
92
+ help: v.optional(v.pipe(v.string(), v.maxLength(300))),
93
+ /** Optional input placeholder. */
94
+ placeholder: v.optional(v.pipe(v.string(), v.maxLength(200))),
95
+ /** Whether the value is required (absent means optional). A hidden field is never required. */
96
+ required: v.optional(v.boolean()),
97
+ /** Choices for a `select` / `checkbox-group` field; ignored for the other types. */
98
+ options: v.optional(v.array(descriptorFieldOptionSchema)),
99
+ /** The scalar default (`text`/`select`/`path`/`number`/`checkbox`), used to seed the form. */
100
+ default: v.optional(v.pipe(v.string(), v.maxLength(DESCRIPTOR_FIELD_VALUE_MAX))),
101
+ /** The multi-select default for a `checkbox-group` field. */
102
+ defaultValues: v.optional(v.pipe(v.array(v.pipe(v.string(), v.maxLength(DESCRIPTOR_FIELD_VALUE_MAX))), v.maxLength(DESCRIPTOR_FIELD_ARRAY_MAX))),
103
+ /** Single-condition visibility; absent means always shown. */
104
+ showWhen: v.optional(descriptorFieldShowWhenSchema),
105
+ /**
106
+ * Max length for a string value (characters), enforced by the input AND the validator.
107
+ *
108
+ * Capped at {@link DESCRIPTOR_FIELD_VALUE_MAX}, the bound the filled bag itself carries: a
109
+ * descriptor allowed to declare more would render an input that accepts what the wire schema
110
+ * then refuses, and that refusal arrives as a raw schema error from the request parse rather
111
+ * than the readable per-field message {@link validateDescriptorFields} produces.
112
+ */
113
+ maxLength: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(DESCRIPTOR_FIELD_VALUE_MAX))),
114
+ };
115
+ /**
116
+ * A descriptor field admitting EVERY type: the shape the shared helpers below take. A surface's
117
+ * own narrower field type is structurally assignable to it, so `validate`/`sanitize`/`render`
118
+ * work against a preset's fields and a task type's alike with no adapter.
119
+ */
120
+ export const descriptorFieldSchema = v.object({
121
+ ...descriptorFieldEntries,
122
+ /** Field type; absent is treated as `text`. */
123
+ type: v.optional(descriptorFieldTypeSchema),
124
+ });
125
+ // ---------------------------------------------------------------------------
126
+ // Path safety, visibility, validation, sanitization, rendering: the pure rules every door shares.
127
+ // ---------------------------------------------------------------------------
128
+ /**
129
+ * Whether `path` is a SAFE repo-relative DIRECTORY (the `path`-field analogue of `isSafeDocPath`,
130
+ * minus the `.md` requirement). A `path` value is used verbatim as an in-repo placement dir that
131
+ * agents commit under, so it must not escape the repo: no `..` traversal, no absolute path (`/…`
132
+ * or a Windows drive), no backslash / NUL. An empty string is NOT a valid path (callers treat
133
+ * "unset" separately). A trailing slash is tolerated.
134
+ */
135
+ export function isSafeRepoDirPath(path) {
136
+ const p = path.trim();
137
+ if (!p || p.length > 300)
138
+ return false;
139
+ if (p.startsWith('/') || /^[a-zA-Z]:/.test(p))
140
+ return false;
141
+ if (p.includes('\\') || p.includes('\0'))
142
+ return false;
143
+ return !p.split('/').some((segment) => segment === '..');
144
+ }
145
+ /** Whether a field is visible given the current values (its `showWhen` condition). */
146
+ export function isDescriptorFieldVisible(field, values) {
147
+ const cond = field.showWhen;
148
+ if (!cond)
149
+ return true;
150
+ const value = values[cond.key];
151
+ if (cond.equals !== undefined) {
152
+ // An unchecked checkbox is ABSENT from the values (an off box stays unset: see the form
153
+ // renderer's drop-when-empty rule), so an absent value reads as `false` when the condition
154
+ // compares against a boolean. Without this, `equals: false` would never match at initial
155
+ // render (only after a toggle on then off), hiding a field that should be shown.
156
+ const actual = value === undefined && typeof cond.equals === 'boolean' ? false : value;
157
+ return actual === cond.equals;
158
+ }
159
+ if (cond.includes !== undefined)
160
+ return Array.isArray(value) && value.includes(cond.includes);
161
+ // A `showWhen` with neither predicate is a malformed condition; treat as always visible.
162
+ return true;
163
+ }
164
+ /** Whether a filled value matches the field's declared type (structural, pre-semantic check). */
165
+ function valueMatchesFieldType(field, value) {
166
+ switch (field.type) {
167
+ case 'checkbox-group':
168
+ return Array.isArray(value);
169
+ case 'checkbox':
170
+ return typeof value === 'boolean';
171
+ case 'number':
172
+ return typeof value === 'number';
173
+ default:
174
+ // text / password / select / textarea / path (and the untyped default) are strings.
175
+ return typeof value === 'string';
176
+ }
177
+ }
178
+ /**
179
+ * Whether a value counts as FILLED. A checkbox is "present" only when checked, so a required
180
+ * checkbox means "must be checked" and an unchecked `false` counts as unset. A numeric `0` is a
181
+ * real answer (the strict comparisons never match it).
182
+ */
183
+ function isFilled(value) {
184
+ if (value === undefined || value === false)
185
+ return false;
186
+ if (typeof value === 'string')
187
+ return value.trim() !== '';
188
+ if (Array.isArray(value))
189
+ return value.length > 0;
190
+ return true;
191
+ }
192
+ /**
193
+ * Whether a value {@link isFilled} rejects is nonetheless an ANSWER worth freezing. Exactly one
194
+ * is: an explicit `false` on a `checkbox`, which is the opt-OUT of a default-ON toggle. Absent and
195
+ * `false` are the same value there and opposite facts, so dropping it would leave a consumer
196
+ * reading `inputs[key] !== false` (the tech-migration preset's `humanReview`) unable to ever
197
+ * observe the unchecked state, and the toggle would be dead.
198
+ *
199
+ * A `false` on any OTHER field type is not an answer at all: it is a wrong-typed value that
200
+ * {@link validateDescriptorFields} never type-checked, because the fill check short-circuits
201
+ * first. Same for a blank string or an empty multi-select, which say nothing anywhere.
202
+ */
203
+ function isExplicitOptOut(field, value) {
204
+ return field.type === 'checkbox' && value === false;
205
+ }
206
+ /**
207
+ * Validate filled values against a field list, returning a list of human-readable problems (EMPTY
208
+ * means valid). Pure + total (never throws), so a controller maps a non-empty result to a single
209
+ * `ValidationError` and the SPA disables its submit button off the same call. Enforces: no unknown
210
+ * keys, the right value type per field, required VISIBLE fields present,
211
+ * `select`/`checkbox-group` values drawn from the declared options, declared `maxLength` respected,
212
+ * and `path` values that stay inside the repo ({@link isSafeRepoDirPath}). Hidden fields (failing
213
+ * `showWhen`) are not required and their stale values are ignored.
214
+ */
215
+ export function validateDescriptorFields(fields, values) {
216
+ const problems = [];
217
+ const byKey = new Map(fields.map((f) => [f.key, f]));
218
+ for (const key of Object.keys(values)) {
219
+ if (!byKey.has(key))
220
+ problems.push(`Unknown field "${key}".`);
221
+ }
222
+ for (const field of fields) {
223
+ if (!isDescriptorFieldVisible(field, values))
224
+ continue;
225
+ const value = values[field.key];
226
+ if (!isFilled(value)) {
227
+ if (field.required)
228
+ problems.push(`Field "${field.key}" is required.`);
229
+ continue;
230
+ }
231
+ if (!valueMatchesFieldType(field, value)) {
232
+ problems.push(`Field "${field.key}" has the wrong type for a ${field.type ?? 'text'} field.`);
233
+ continue;
234
+ }
235
+ problems.push(...semanticProblems(field, value));
236
+ }
237
+ return problems;
238
+ }
239
+ /** The per-type semantic checks, once the value is present and structurally right. */
240
+ function semanticProblems(field, value) {
241
+ const problems = [];
242
+ const optionValues = new Set((field.options ?? []).map((o) => o.value));
243
+ if (field.type === 'select' && optionValues.size > 0 && !optionValues.has(value)) {
244
+ problems.push(`Field "${field.key}" has a value outside its options.`);
245
+ }
246
+ if (field.type === 'checkbox-group' && optionValues.size > 0) {
247
+ for (const entry of value) {
248
+ if (!optionValues.has(entry))
249
+ problems.push(`Field "${field.key}" has an option "${entry}" outside its choices.`);
250
+ }
251
+ }
252
+ if (field.type === 'path' && !isSafeRepoDirPath(value)) {
253
+ problems.push(`Field "${field.key}" must be a relative path inside the repo (no "..", absolute, or backslash segments).`);
254
+ }
255
+ // A declared `maxLength` binds the SERVER too, not only the input's own attribute: a form is not
256
+ // the only door (the public API fills the same fields), so the descriptor's stated bound has to
257
+ // hold where the value is actually frozen.
258
+ if (field.maxLength !== undefined &&
259
+ typeof value === 'string' &&
260
+ value.length > field.maxLength) {
261
+ problems.push(`Field "${field.key}" exceeds its maximum length of ${field.maxLength}.`);
262
+ }
263
+ return problems;
264
+ }
265
+ /**
266
+ * Reduce filled values to the ones SAFE to freeze: only fields the list declares, that are
267
+ * currently VISIBLE (their `showWhen` holds), and that {@link validateDescriptorFields} actually
268
+ * inspected. Unknown keys and hidden fields, whose stale values validation deliberately skips, are
269
+ * dropped, so a hidden field can never freeze an unvalidated value (e.g. a `path` that escapes the
270
+ * repo). Pure + total; run AFTER validation, on values already known valid.
271
+ *
272
+ * The UNFILLED values go too, and that is the same rule rather than a second one: validation
273
+ * short-circuits on a value that says nothing, so a `false` on a `text` field, a blank string or
274
+ * an empty multi-select reaches here having passed NO type check. Keeping them would freeze a
275
+ * wrong-typed answer the prompt fold then renders to every agent as the operation's own brief
276
+ * (`notes: false` reads as `Notes: No`), and would put a `custom` bag on a row that collected
277
+ * nothing, when its presence is what tells the dispatch projection parameters WERE collected. The
278
+ * one exception is {@link isExplicitOptOut}.
279
+ */
280
+ export function sanitizeDescriptorFields(fields, values) {
281
+ const sanitized = {};
282
+ for (const field of fields) {
283
+ if (!isDescriptorFieldVisible(field, values))
284
+ continue;
285
+ const value = values[field.key];
286
+ if (value === undefined)
287
+ continue;
288
+ if (!isFilled(value) && !isExplicitOptOut(field, value))
289
+ continue;
290
+ sanitized[field.key] = value;
291
+ }
292
+ return sanitized;
293
+ }
294
+ /**
295
+ * Render one filled value as human-readable prose (option captions preferred over raw values,
296
+ * `checkbox-group` joined, boolean as `Yes`/`No`). Shared by the initiative create flow's
297
+ * skip-interview qa seeding, the operation prompt fold, and the SPA form review, so a field reads
298
+ * identically everywhere. Deployment-supplied English. Pure + total.
299
+ *
300
+ * `field` is OPTIONAL because a bag key can outlive the descriptor that declared it (a node whose
301
+ * build predates a re-registration still has to render the row it stored). With no field there is
302
+ * no option list to consult, so the raw value is the answer; the caller does not have to invent a
303
+ * fieldless descriptor to say so.
304
+ */
305
+ export function renderDescriptorFieldValue(field, value) {
306
+ const labelOf = (raw) => (field?.options ?? []).find((o) => o.value === raw)?.label ?? raw;
307
+ if (Array.isArray(value))
308
+ return value.map(labelOf).join(', ');
309
+ if (typeof value === 'boolean')
310
+ return value ? 'Yes' : 'No';
311
+ if (typeof value === 'number')
312
+ return String(value);
313
+ return labelOf(value);
314
+ }
315
+ //# sourceMappingURL=form-fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-fields.js","sourceRoot":"","sources":["../src/form-fields.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -77,6 +77,7 @@ export * from './package-registries.js';
77
77
  export * from './agent-config.js';
78
78
  export * from './result-views.js';
79
79
  export * from './agent-presentation.js';
80
+ export * from './form-fields.js';
80
81
  export * from './task-types.js';
81
82
  export * from './testing.js';
82
83
  export * from './compute-provisioning.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,0BAA0B,CAAA;AACxC,cAAc,eAAe,CAAA;AAC7B,cAAc,0BAA0B,CAAA;AACxC,cAAc,cAAc,CAAA;AAC5B,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,qBAAqB,CAAA;AACnC,cAAc,eAAe,CAAA;AAC7B,cAAc,wBAAwB,CAAA;AACtC,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,WAAW,CAAA;AACzB,cAAc,mBAAmB,CAAA;AACjC,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,uBAAuB,CAAA;AACrC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,yBAAyB,CAAA;AACvC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,2BAA2B,CAAA;AACzC,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,cAAc,CAAA;AAC5B,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,yBAAyB,CAAA;AACvC,cAAc,eAAe,CAAA;AAC7B,cAAc,sBAAsB,CAAA;AACpC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA;AACrC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,yBAAyB,CAAA;AACvC,cAAc,qBAAqB,CAAA;AACnC,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA"}
package/dist/index.js CHANGED
@@ -77,6 +77,7 @@ export * from './package-registries.js';
77
77
  export * from './agent-config.js';
78
78
  export * from './result-views.js';
79
79
  export * from './agent-presentation.js';
80
+ export * from './form-fields.js';
80
81
  export * from './task-types.js';
81
82
  export * from './testing.js';
82
83
  export * from './compute-provisioning.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,68 +1,41 @@
1
1
  import * as v from 'valibot';
2
- import { type InitiativePresetInputs, type InitiativePresetInputValue } from './initiative.js';
2
+ import { type DescriptorFieldShowWhen } from './form-fields.js';
3
+ import { type InitiativePresetInputs } from './initiative.js';
3
4
  /**
4
- * How a preset field is rendered/collected. The first six mirror {@link ProviderConfigField}'s
5
- * types exactly; `checkbox-group` (a multi-select, value `string[]`) and `path` (a repo-relative
6
- * directory, {@link isSafeRepoDirPath}-validated) are the two additions the preset form needs.
5
+ * How a preset field is rendered/collected: the whole shared union, a preset being the surface
6
+ * that motivated it. `password` is admitted here (a preset input may carry a token the planning
7
+ * flow needs) and refused for a task type, whose values reach prompts and telemetry.
7
8
  */
8
9
  export declare const initiativePresetFieldTypeSchema: v.PicklistSchema<["text", "password", "select", "number", "checkbox", "textarea", "checkbox-group", "path"], undefined>;
9
10
  export type InitiativePresetFieldType = v.InferOutput<typeof initiativePresetFieldTypeSchema>;
10
- /**
11
- * Single-condition visibility for a field: it renders only when the referenced field's value
12
- * matches. `equals` compares a scalar value; `includes` tests membership in a `checkbox-group`
13
- * value (the per-doc-type subfolder case — "show `diagramsDir` only when `docTypes` includes
14
- * `diagrams`"). Deliberately ONE condition — resist growing this into a recursive schema
15
- * renderer (that is the descriptor-forms initiative's separate line item).
16
- */
11
+ /** Single-condition visibility for a preset field (the shared {@link descriptorFieldShowWhenSchema}). */
17
12
  export declare const initiativePresetShowWhenSchema: v.ObjectSchema<{
18
- /** The `key` of the field whose value gates this one's visibility. */
19
13
  readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
20
- /**
21
- * Show when the referenced scalar value equals this. A union so `equals` can gate a
22
- * `checkbox` (boolean) or `number` field, not only a `select`/`text` string — the
23
- * comparison is strict, so the type must match the referenced field's value.
24
- */
25
14
  readonly equals: v.OptionalSchema<v.UnionSchema<[v.StringSchema<undefined>, v.BooleanSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>;
26
- /** Show when the referenced `checkbox-group` value includes this. */
27
15
  readonly includes: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
28
16
  }, undefined>;
29
- export type InitiativePresetShowWhen = v.InferOutput<typeof initiativePresetShowWhenSchema>;
17
+ export type InitiativePresetShowWhen = DescriptorFieldShowWhen;
30
18
  /** One value a preset needs, rendered as a single form field. */
31
19
  export declare const initiativePresetFieldSchema: v.ObjectSchema<{
32
- /** Stable key the value is stored/sent under (e.g. `docTypes`, `docsRoot`). */
33
20
  readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 80, undefined>]>;
34
- /** Human label for the form field (backend-supplied English). */
35
21
  readonly label: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
36
- /** Optional helper text shown under the field. */
37
- readonly help: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
38
- /** Optional input placeholder. */
39
- readonly placeholder: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
40
- /** Whether the value is required (absent ⇒ optional). A hidden (`showWhen`) field is never required. */
22
+ readonly help: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 300, undefined>]>, undefined>;
23
+ readonly placeholder: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>;
41
24
  readonly required: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
42
- /** Field type; absent is treated as `text`. */
43
- readonly type: v.OptionalSchema<v.PicklistSchema<["text", "password", "select", "number", "checkbox", "textarea", "checkbox-group", "path"], undefined>, undefined>;
44
- /** Choices for a `select` / `checkbox-group` field. */
45
25
  readonly options: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
46
- readonly value: v.StringSchema<undefined>;
47
- readonly label: v.StringSchema<undefined>;
26
+ readonly value: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
27
+ readonly label: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
48
28
  }, undefined>, undefined>, undefined>;
49
- /** The scalar default (`text`/`select`/`path`/`number`/`checkbox`); the form falls back to it when blank. */
50
- readonly default: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
51
- /** The multi-select default for a `checkbox-group` field. */
52
- readonly defaultValues: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, undefined>;
53
- /** Single-condition visibility; absent ⇒ always shown. */
29
+ readonly default: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>;
30
+ readonly defaultValues: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>, v.MaxLengthAction<string[], 50, undefined>]>, undefined>;
54
31
  readonly showWhen: v.OptionalSchema<v.ObjectSchema<{
55
- /** The `key` of the field whose value gates this one's visibility. */
56
32
  readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
57
- /**
58
- * Show when the referenced scalar value equals this. A union so `equals` can gate a
59
- * `checkbox` (boolean) or `number` field, not only a `select`/`text` string — the
60
- * comparison is strict, so the type must match the referenced field's value.
61
- */
62
33
  readonly equals: v.OptionalSchema<v.UnionSchema<[v.StringSchema<undefined>, v.BooleanSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>;
63
- /** Show when the referenced `checkbox-group` value includes this. */
64
34
  readonly includes: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
65
35
  }, undefined>, undefined>;
36
+ readonly maxLength: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 2000, undefined>]>, undefined>;
37
+ /** Field type; absent is treated as `text`. */
38
+ readonly type: v.OptionalSchema<v.PicklistSchema<["text", "password", "select", "number", "checkbox", "textarea", "checkbox-group", "path"], undefined>, undefined>;
66
39
  }, undefined>;
67
40
  export type InitiativePresetField = v.InferOutput<typeof initiativePresetFieldSchema>;
68
41
  /** Display metadata for a preset in the create-initiative picker. */
@@ -163,40 +136,25 @@ export declare const initiativePresetDescriptorSchema: v.ObjectSchema<{
163
136
  }, undefined>;
164
137
  /** The form fields the user fills at create time (empty for the generic preset). */
165
138
  readonly fields: v.ArraySchema<v.ObjectSchema<{
166
- /** Stable key the value is stored/sent under (e.g. `docTypes`, `docsRoot`). */
167
139
  readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 80, undefined>]>;
168
- /** Human label for the form field (backend-supplied English). */
169
140
  readonly label: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
170
- /** Optional helper text shown under the field. */
171
- readonly help: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
172
- /** Optional input placeholder. */
173
- readonly placeholder: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
174
- /** Whether the value is required (absent ⇒ optional). A hidden (`showWhen`) field is never required. */
141
+ readonly help: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 300, undefined>]>, undefined>;
142
+ readonly placeholder: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>;
175
143
  readonly required: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
176
- /** Field type; absent is treated as `text`. */
177
- readonly type: v.OptionalSchema<v.PicklistSchema<["text", "password", "select", "number", "checkbox", "textarea", "checkbox-group", "path"], undefined>, undefined>;
178
- /** Choices for a `select` / `checkbox-group` field. */
179
144
  readonly options: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
180
- readonly value: v.StringSchema<undefined>;
181
- readonly label: v.StringSchema<undefined>;
145
+ readonly value: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
146
+ readonly label: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
182
147
  }, undefined>, undefined>, undefined>;
183
- /** The scalar default (`text`/`select`/`path`/`number`/`checkbox`); the form falls back to it when blank. */
184
- readonly default: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
185
- /** The multi-select default for a `checkbox-group` field. */
186
- readonly defaultValues: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, undefined>;
187
- /** Single-condition visibility; absent ⇒ always shown. */
148
+ readonly default: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>;
149
+ readonly defaultValues: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>, v.MaxLengthAction<string[], 50, undefined>]>, undefined>;
188
150
  readonly showWhen: v.OptionalSchema<v.ObjectSchema<{
189
- /** The `key` of the field whose value gates this one's visibility. */
190
151
  readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
191
- /**
192
- * Show when the referenced scalar value equals this. A union so `equals` can gate a
193
- * `checkbox` (boolean) or `number` field, not only a `select`/`text` string — the
194
- * comparison is strict, so the type must match the referenced field's value.
195
- */
196
152
  readonly equals: v.OptionalSchema<v.UnionSchema<[v.StringSchema<undefined>, v.BooleanSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>;
197
- /** Show when the referenced `checkbox-group` value includes this. */
198
153
  readonly includes: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
199
154
  }, undefined>, undefined>;
155
+ readonly maxLength: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 2000, undefined>]>, undefined>;
156
+ /** Field type; absent is treated as `text`. */
157
+ readonly type: v.OptionalSchema<v.PicklistSchema<["text", "password", "select", "number", "checkbox", "textarea", "checkbox-group", "path"], undefined>, undefined>;
200
158
  }, undefined>, undefined>;
201
159
  /** The planning pipeline the SPA starts (e.g. `pl_initiative`, `pl_initiative_docs`). */
202
160
  readonly planningPipelineId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
@@ -338,40 +296,23 @@ export type InitiativePresetDescriptor = v.InferOutput<typeof initiativePresetDe
338
296
  /** Strictly parse a preset descriptor. Throws on shape violations. */
339
297
  export declare function parseInitiativePresetDescriptor(value: unknown): InitiativePresetDescriptor;
340
298
  /**
341
- * Whether `path` is a SAFE repo-relative DIRECTORY (the `path`-field analogue of
342
- * {@link isSafeDocPath}, minus the `.md` requirement). A preset `path` value is used verbatim
343
- * as an in-repo placement dir the writers commit under, so it must not escape the repo: no `..`
344
- * traversal, no absolute path (`/…` or a Windows drive), no backslash / NUL. An empty string is
345
- * NOT a valid path (callers treat "unset" separately). A trailing slash is tolerated.
299
+ * The field-list-shaped rules under their preset names: `isPresetFieldVisible` (a field's
300
+ * `showWhen` against the current inputs), `renderInitiativePresetValue` (one value as prose), and
301
+ * the `path` write-boundary guard. Aliases, not copies: one implementation, two vocabularies.
346
302
  */
347
- export declare function isSafeRepoDirPath(path: string): boolean;
348
- /** Whether a field is visible given the current input values (its `showWhen` condition). */
349
- export declare function isPresetFieldVisible(field: InitiativePresetField, inputs: InitiativePresetInputs): boolean;
303
+ export { isDescriptorFieldVisible as isPresetFieldVisible, isSafeRepoDirPath, renderDescriptorFieldValue as renderInitiativePresetValue, } from './form-fields.js';
350
304
  /**
351
305
  * Validate a filled preset form against its descriptor, returning a list of human-readable
352
- * problems (EMPTY valid). Pure + total (never throws), so the create controller can map a
353
- * non-empty result to a single ValidationError. Enforces: no unknown keys, correct value type
354
- * per field, required VISIBLE fields present (a required `checkbox` must be CHECKED — an
355
- * unchecked `false` counts as unset), `select`/`checkbox-group` values drawn from the declared
356
- * options, and `path` values that stay inside the repo ({@link isSafeRepoDirPath}). Hidden
357
- * fields (failing `showWhen`) are not required and their stale values are ignored.
306
+ * problems (EMPTY means valid). Pure + total (never throws), so the create controller can map a
307
+ * non-empty result to a single ValidationError and the SPA can disable submit off the same call.
358
308
  */
359
309
  export declare function validateInitiativePresetInputs(descriptor: InitiativePresetDescriptor, inputs: InitiativePresetInputs): string[];
360
310
  /**
361
- * Reduce a filled preset form to the values SAFE to freeze on the entity: only fields the
362
- * descriptor declares AND that are currently VISIBLE (their `showWhen` holds). Unknown keys and
363
- * hidden fields whose stale values {@link validateInitiativePresetInputs} deliberately skips
364
- * are dropped, so a hidden field can never freeze an unvalidated value (e.g. a `path` that escapes
365
- * the repo). Pure + total; run AFTER validation, on a form already known valid.
311
+ * Reduce a filled preset form to the values SAFE to freeze on the entity: the declared, currently
312
+ * VISIBLE fields only, so a hidden field can never freeze an unvalidated value (e.g. a `path` that
313
+ * escapes the repo). Pure + total; run AFTER validation, on a form already known valid.
366
314
  */
367
315
  export declare function sanitizeInitiativePresetInputs(descriptor: InitiativePresetDescriptor, inputs: InitiativePresetInputs): InitiativePresetInputs;
368
- /**
369
- * Render one filled preset value as human-readable prose (option labels preferred over raw
370
- * values, `checkbox-group` joined, boolean → `Yes`/`No`). Shared by the create flow's skip-interview
371
- * qa seeding and the SPA form review so a field reads identically in both. Backend-supplied English
372
- * (the `describeConfig` convention). Pure + total.
373
- */
374
- export declare function renderInitiativePresetValue(field: InitiativePresetField, value: InitiativePresetInputValue): string;
375
316
  /** Strictly parse a bounded preset-inputs record. Throws on shape violations. */
376
317
  export declare function parseInitiativePresetInputs(value: unknown): InitiativePresetInputs;
377
318
  //# sourceMappingURL=initiative-preset.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"initiative-preset.d.ts","sourceRoot":"","sources":["../src/initiative-preset.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"initiative-preset.d.ts","sourceRoot":"","sources":["../src/initiative-preset.ts"],"names":[],"mappings":"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"}