@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.
- package/dist/entities.d.ts +1 -1
- package/dist/errors.js +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/execution.d.ts +9 -2
- package/dist/execution.d.ts.map +1 -1
- package/dist/execution.js +11 -2
- package/dist/execution.js.map +1 -1
- package/dist/form-fields.d.ts +203 -0
- package/dist/form-fields.d.ts.map +1 -0
- package/dist/form-fields.js +315 -0
- package/dist/form-fields.js.map +1 -0
- 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/initiative-preset.d.ts +34 -93
- package/dist/initiative-preset.d.ts.map +1 -1
- package/dist/initiative-preset.js +30 -182
- package/dist/initiative-preset.js.map +1 -1
- package/dist/initiative.d.ts +14 -9
- package/dist/initiative.d.ts.map +1 -1
- package/dist/initiative.js +15 -15
- package/dist/initiative.js.map +1 -1
- package/dist/input-gate.js +1 -1
- package/dist/input-gate.js.map +1 -1
- package/dist/merge.d.ts +374 -344
- package/dist/merge.d.ts.map +1 -1
- package/dist/merge.js +50 -4
- package/dist/merge.js.map +1 -1
- package/dist/primitives.d.ts +10 -5
- package/dist/primitives.d.ts.map +1 -1
- package/dist/primitives.js +11 -5
- package/dist/primitives.js.map +1 -1
- package/dist/public-decisions.d.ts +2 -2
- package/dist/public-decisions.js +3 -3
- package/dist/public-decisions.js.map +1 -1
- package/dist/requests.d.ts +1 -1
- package/dist/routes/board.d.ts +14 -14
- package/dist/routes/bug-hunt.d.ts +2 -2
- package/dist/routes/execution.d.ts +2 -2
- package/dist/routes/initiative.d.ts +17 -17
- package/dist/routes/input-gate.js +2 -2
- package/dist/routes/input-gate.js.map +1 -1
- package/dist/routes/merge.d.ts +504 -504
- package/dist/routes/public-decisions.d.ts +1 -1
- package/dist/routes/public-decisions.js +2 -2
- package/dist/routes/public-decisions.js.map +1 -1
- package/dist/routes/tasks.d.ts +3 -3
- package/dist/routes/workspaces.d.ts +210 -194
- package/dist/routes/workspaces.d.ts.map +1 -1
- package/dist/snapshot.d.ts +105 -97
- package/dist/snapshot.d.ts.map +1 -1
- package/dist/task-types.d.ts +42 -28
- package/dist/task-types.d.ts.map +1 -1
- package/dist/task-types.js +30 -25
- package/dist/task-types.js.map +1 -1
- package/dist/workspace-settings.d.ts +1 -1
- package/dist/workspace-settings.js +1 -1
- 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';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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":"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"}
|
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":"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,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"}
|
|
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
|
|
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
|
|
5
|
-
*
|
|
6
|
-
*
|
|
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 =
|
|
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
|
-
|
|
37
|
-
readonly
|
|
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
|
-
|
|
50
|
-
readonly
|
|
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
|
-
|
|
171
|
-
readonly
|
|
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
|
-
|
|
184
|
-
readonly
|
|
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
|
-
*
|
|
342
|
-
*
|
|
343
|
-
*
|
|
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
|
|
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
|
|
353
|
-
* non-empty result to a single ValidationError
|
|
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:
|
|
362
|
-
*
|
|
363
|
-
*
|
|
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":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAML,KAAK,
|
|
1
|
+
{"version":3,"file":"initiative-preset.d.ts","sourceRoot":"","sources":["../src/initiative-preset.ts"],"names":[],"mappings":"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"}
|