@cat-factory/contracts 0.251.0 → 0.252.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 (43) hide show
  1. package/dist/form-fields.d.ts +26 -0
  2. package/dist/form-fields.d.ts.map +1 -1
  3. package/dist/form-fields.js +56 -0
  4. package/dist/form-fields.js.map +1 -1
  5. package/dist/index.d.ts +1 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +1 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/initiative-preset.d.ts +10 -0
  10. package/dist/initiative-preset.d.ts.map +1 -1
  11. package/dist/initiative-preset.js +13 -1
  12. package/dist/initiative-preset.js.map +1 -1
  13. package/dist/public-api.d.ts +21 -0
  14. package/dist/public-api.d.ts.map +1 -1
  15. package/dist/public-api.js +22 -0
  16. package/dist/public-api.js.map +1 -1
  17. package/dist/public-task-types.d.ts +182 -0
  18. package/dist/public-task-types.d.ts.map +1 -0
  19. package/dist/public-task-types.js +191 -0
  20. package/dist/public-task-types.js.map +1 -0
  21. package/dist/routes/index.d.ts +1 -0
  22. package/dist/routes/index.d.ts.map +1 -1
  23. package/dist/routes/index.js +1 -0
  24. package/dist/routes/index.js.map +1 -1
  25. package/dist/routes/public-api.d.ts +66 -0
  26. package/dist/routes/public-api.d.ts.map +1 -1
  27. package/dist/routes/public-api.js +11 -0
  28. package/dist/routes/public-api.js.map +1 -1
  29. package/dist/routes/task-types.d.ts +233 -0
  30. package/dist/routes/task-types.d.ts.map +1 -0
  31. package/dist/routes/task-types.js +55 -0
  32. package/dist/routes/task-types.js.map +1 -0
  33. package/dist/routes/workspaces.d.ts +4 -0
  34. package/dist/routes/workspaces.d.ts.map +1 -1
  35. package/dist/snapshot.d.ts +34 -2
  36. package/dist/snapshot.d.ts.map +1 -1
  37. package/dist/snapshot.js +34 -2
  38. package/dist/snapshot.js.map +1 -1
  39. package/dist/task-types.d.ts +161 -0
  40. package/dist/task-types.d.ts.map +1 -1
  41. package/dist/task-types.js +16 -0
  42. package/dist/task-types.js.map +1 -1
  43. package/package.json +1 -1
@@ -0,0 +1,182 @@
1
+ import * as v from 'valibot';
2
+ import { type DescriptorField, type DescriptorFieldValues } from './form-fields.js';
3
+ import { type TaskTypeFields } from './primitives.js';
4
+ /**
5
+ * The per-type fields a BUILT-IN task type accepts over the public API, as descriptors.
6
+ *
7
+ * A deliberate SUBSET of `taskTypeFieldsSchema`, not a mirror of it. Included is what a caller
8
+ * filing work headlessly actually supplies: a bug's severity and repro, a spike's timebox and
9
+ * question, a document's kind and audience, a review's PR and focus. Excluded are the per-DocKind
10
+ * prose sections (`targetUsers`, `decisionDrivers`, …), which the SPA collects behind a chosen
11
+ * `docKind` and which would triple this surface for fields an integration does not have, plus the
12
+ * document `targetPath`, whose `.md` rule no descriptor type can state (see below). They stay
13
+ * internal until something asks. Adding one later is additive, which is why the subset is safe.
14
+ *
15
+ * The BOUNDS restate `taskTypeFieldsSchema`'s and must stay in step with it. They are declared
16
+ * rather than derived because a descriptor is data a client READS (the discovery response tells a
17
+ * caller the limit before it sends), where a valibot pipe is only a check. `public-task-types.test.ts`
18
+ * pins the relation that must hold in the direction that matters: every value a descriptor here
19
+ * calls valid is one `taskTypeFieldsSchema` also accepts. It is what caught `targetPath`.
20
+ */
21
+ export declare const BUILTIN_PUBLIC_TASK_FIELDS: Readonly<Record<string, readonly DescriptorField[]>>;
22
+ /**
23
+ * The descriptors a built-in type accepts, or an empty list for a type with no public fields.
24
+ * Total, so a caller never has to distinguish "no fields" from "unknown type": the type itself is
25
+ * already validated by `createTaskTypeSchema`.
26
+ */
27
+ export declare function builtinPublicTaskFields(taskType: string): readonly DescriptorField[];
28
+ /** Whether `taskType` is one of the built-in create-form types (rather than a namespaced custom one). */
29
+ export declare function isBuiltinCreateTaskType(taskType: string): boolean;
30
+ /**
31
+ * A built-in type's descriptor-checked values as the internal {@link taskTypeFieldsSchema} shape,
32
+ * PARSED through that schema rather than asserted to match it.
33
+ *
34
+ * The table above restates the schema as descriptors, and a descriptor cannot state every rule a
35
+ * valibot pipe can. `prNumber` is `v.integer()` in the schema and a plain `number` here, because
36
+ * the vocabulary has no integer flag: a caller sending `3.7` satisfied the public surface and the
37
+ * value landed on the block as the pull request to review. `prUrl` likewise loses the schema's
38
+ * `v.trim()`. Casting was what let that through, so the fix is to stop casting: this parse is what
39
+ * makes "everything the public surface accepts, the internal schema also accepts" true at RUN TIME
40
+ * rather than a claim its conformity test samples one value per field.
41
+ *
42
+ * A discriminated result, not a throw: contracts states the RULE and cannot see the error
43
+ * vocabulary that decides how a refusal reaches a caller (the kernel `ValidationError` the public
44
+ * route raises). A failure is a drift between the two tables rather than an ordinary bad request,
45
+ * but the value still came from the request, so the caller is told which field and why.
46
+ */
47
+ export declare function parseBuiltinPublicTaskFields(values: DescriptorFieldValues): {
48
+ ok: true;
49
+ fields: TaskTypeFields;
50
+ } | {
51
+ ok: false;
52
+ problems: string[];
53
+ };
54
+ /**
55
+ * One entry of `GET /api/v1/task-types`: a type a caller may name in `POST /services/:id/tasks`,
56
+ * with the form it accepts.
57
+ *
58
+ * Deliberately omits `formPanel`. It names a FRONTEND component in the deployment's own SPA layer,
59
+ * which is meaningless to an external client and would advertise an id nothing in this API can act
60
+ * on. A type declaring one still appears here, because it IS creatable, but with an EMPTY `fields`
61
+ * list: its bespoke form owns the whole bag, so neither this API nor the internal create door
62
+ * validates one key of it. Projecting the descriptors it happens to declare would advertise a
63
+ * contract nothing enforces, and `fields` on this entry means exactly one thing everywhere
64
+ * (see {@link PublicTaskType.fields}).
65
+ */
66
+ export declare const publicTaskTypeSchema: v.ObjectSchema<{
67
+ /** The id to pass as `taskType` (`feature`, `bug`, …, or a namespaced `acme:incident`). */
68
+ readonly taskType: v.StringSchema<undefined>;
69
+ /** False for a type this deployment registered; true for one cat-factory ships. */
70
+ readonly builtin: v.BooleanSchema<undefined>;
71
+ /** Human label for the type. Deployment-authored English for a custom type. */
72
+ readonly label: v.StringSchema<undefined>;
73
+ /** One-line description, when the type carries one. */
74
+ readonly description: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
75
+ /** The picker grouping caption a custom type declares, when it has one. */
76
+ readonly category: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
77
+ /**
78
+ * The descriptors task creation CHECKS a `fields` bag against for this type, in declaration
79
+ * order. Exactly that, on every entry: a client that reads this list knows what the create call
80
+ * will accept, which is the property the one-table design exists to hold.
81
+ *
82
+ * EMPTY therefore means "this API validates nothing per-case here", which covers two different
83
+ * types and neither of them is a lie. A built-in like `feature` takes title and description
84
+ * only, so there is nothing to send. A custom type with a `formPanel`, or one this process does
85
+ * not register, accepts an arbitrary bag NOTHING checks (the internal create door does not
86
+ * either), so there is no list that would describe it. Both answer "do not expect this API to
87
+ * check what you send"; what a `formPanel` type's own form collects is the deployment's to
88
+ * document.
89
+ */
90
+ readonly fields: v.ArraySchema<v.ObjectSchema<{
91
+ readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 80, undefined>]>;
92
+ readonly label: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
93
+ readonly help: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 300, undefined>]>, undefined>;
94
+ readonly placeholder: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>;
95
+ readonly required: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
96
+ readonly options: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
97
+ readonly value: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
98
+ readonly label: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
99
+ }, undefined>, undefined>, undefined>;
100
+ readonly default: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>;
101
+ 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>;
102
+ readonly showWhen: v.OptionalSchema<v.ObjectSchema<{
103
+ readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
104
+ readonly equals: v.OptionalSchema<v.UnionSchema<[v.StringSchema<undefined>, v.BooleanSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>;
105
+ readonly includes: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
106
+ }, undefined>, undefined>;
107
+ 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>;
108
+ readonly min: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
109
+ readonly max: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
110
+ readonly type: v.OptionalSchema<v.PicklistSchema<["text", "password", "select", "number", "checkbox", "textarea", "checkbox-group", "path"], undefined>, undefined>;
111
+ }, undefined>, undefined>;
112
+ /**
113
+ * The pipeline a task of this type is pinned to at creation when the caller pins none. Present
114
+ * only where the type declares one; `POST /tasks/:id/start` falls back to it.
115
+ */
116
+ readonly defaultPipelineId: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
117
+ }, undefined>;
118
+ export type PublicTaskType = v.InferOutput<typeof publicTaskTypeSchema>;
119
+ /**
120
+ * The whole catalog: the built-in types first, then the deployment's registered ones in
121
+ * registration order. Not paginated, because a catalog is a handful of entries even for an org with a
122
+ * large operation library, and a caller reads it whole at startup.
123
+ *
124
+ * SUPPRESSION applies: a type the key's workspace hides is absent, because this endpoint answers
125
+ * "what may I create here", and a client offered a type creation then refuses has been misled.
126
+ */
127
+ export declare const publicTaskTypeListSchema: v.ObjectSchema<{
128
+ readonly taskTypes: v.ArraySchema<v.ObjectSchema<{
129
+ /** The id to pass as `taskType` (`feature`, `bug`, …, or a namespaced `acme:incident`). */
130
+ readonly taskType: v.StringSchema<undefined>;
131
+ /** False for a type this deployment registered; true for one cat-factory ships. */
132
+ readonly builtin: v.BooleanSchema<undefined>;
133
+ /** Human label for the type. Deployment-authored English for a custom type. */
134
+ readonly label: v.StringSchema<undefined>;
135
+ /** One-line description, when the type carries one. */
136
+ readonly description: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
137
+ /** The picker grouping caption a custom type declares, when it has one. */
138
+ readonly category: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
139
+ /**
140
+ * The descriptors task creation CHECKS a `fields` bag against for this type, in declaration
141
+ * order. Exactly that, on every entry: a client that reads this list knows what the create call
142
+ * will accept, which is the property the one-table design exists to hold.
143
+ *
144
+ * EMPTY therefore means "this API validates nothing per-case here", which covers two different
145
+ * types and neither of them is a lie. A built-in like `feature` takes title and description
146
+ * only, so there is nothing to send. A custom type with a `formPanel`, or one this process does
147
+ * not register, accepts an arbitrary bag NOTHING checks (the internal create door does not
148
+ * either), so there is no list that would describe it. Both answer "do not expect this API to
149
+ * check what you send"; what a `formPanel` type's own form collects is the deployment's to
150
+ * document.
151
+ */
152
+ readonly fields: v.ArraySchema<v.ObjectSchema<{
153
+ readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 80, undefined>]>;
154
+ readonly label: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
155
+ readonly help: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 300, undefined>]>, undefined>;
156
+ readonly placeholder: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>;
157
+ readonly required: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
158
+ readonly options: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
159
+ readonly value: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
160
+ readonly label: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
161
+ }, undefined>, undefined>, undefined>;
162
+ readonly default: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>;
163
+ 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>;
164
+ readonly showWhen: v.OptionalSchema<v.ObjectSchema<{
165
+ readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
166
+ readonly equals: v.OptionalSchema<v.UnionSchema<[v.StringSchema<undefined>, v.BooleanSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>;
167
+ readonly includes: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
168
+ }, undefined>, undefined>;
169
+ 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>;
170
+ readonly min: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
171
+ readonly max: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
172
+ readonly type: v.OptionalSchema<v.PicklistSchema<["text", "password", "select", "number", "checkbox", "textarea", "checkbox-group", "path"], undefined>, undefined>;
173
+ }, undefined>, undefined>;
174
+ /**
175
+ * The pipeline a task of this type is pinned to at creation when the caller pins none. Present
176
+ * only where the type declares one; `POST /tasks/:id/start` falls back to it.
177
+ */
178
+ readonly defaultPipelineId: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
179
+ }, undefined>, undefined>;
180
+ }, undefined>;
181
+ export type PublicTaskTypeList = v.InferOutput<typeof publicTaskTypeListSchema>;
182
+ //# sourceMappingURL=public-task-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-task-types.d.ts","sourceRoot":"","sources":["../src/public-task-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC3B,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,iBAAiB,CAAA;AAkBxB;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC,CA6D3F,CAAA;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,eAAe,EAAE,CAEpF;AAED,yGAAyG;AACzG,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,qBAAqB,GAC5B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAU1E;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,oBAAoB;IAC/B,2FAA2F;;IAE3F,mFAAmF;;IAEnF,+EAA+E;;IAE/E,uDAAuD;;IAEvD,2EAA2E;;IAE3E;;;;;;;;;;;;OAYG;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;OAGG;;aAEH,CAAA;AACF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAEvE;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB;;QAxCnC,2FAA2F;;QAE3F,mFAAmF;;QAEnF,+EAA+E;;QAE/E,uDAAuD;;QAEvD,2EAA2E;;QAE3E;;;;;;;;;;;;WAYG;;;;;;;;;;;;;;;;;;;;;;;QAEH;;;WAGG;;;aAayF,CAAA;AAC9F,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,wBAAwB,CAAC,CAAA"}
@@ -0,0 +1,191 @@
1
+ import * as v from 'valibot';
2
+ import { descriptorFieldSchema, } from './form-fields.js';
3
+ import { BUILTIN_CREATE_TASK_TYPES, DOC_KINDS, taskTypeFieldsSchema, } from './primitives.js';
4
+ // ---------------------------------------------------------------------------
5
+ // The PUBLIC task-type surface: what `GET /api/v1/task-types` serves, and the vocabulary
6
+ // `createPublicTaskSchema.fields` is checked against.
7
+ //
8
+ // A headless caller could always name a task type; it could never fill one in. Both halves of
9
+ // that gap close here, and they close with ONE table rather than two: discovery serves the field
10
+ // descriptors, and creation validates against the same descriptors through the same shared
11
+ // `validateDescriptorFields` the SPA and the internal API use. A caller that reads the discovery
12
+ // response therefore knows exactly what creation will accept, which is the property a separately
13
+ // hand-written OpenAPI shape could not have offered.
14
+ //
15
+ // Custom types bring their own descriptors (the registry already stores them). The BUILT-IN types
16
+ // have none (their fields are schema-typed top-level keys on `taskTypeFieldsSchema`), so this
17
+ // module states them as descriptors, and that statement is the single source both directions read.
18
+ // ---------------------------------------------------------------------------
19
+ /**
20
+ * The per-type fields a BUILT-IN task type accepts over the public API, as descriptors.
21
+ *
22
+ * A deliberate SUBSET of `taskTypeFieldsSchema`, not a mirror of it. Included is what a caller
23
+ * filing work headlessly actually supplies: a bug's severity and repro, a spike's timebox and
24
+ * question, a document's kind and audience, a review's PR and focus. Excluded are the per-DocKind
25
+ * prose sections (`targetUsers`, `decisionDrivers`, …), which the SPA collects behind a chosen
26
+ * `docKind` and which would triple this surface for fields an integration does not have, plus the
27
+ * document `targetPath`, whose `.md` rule no descriptor type can state (see below). They stay
28
+ * internal until something asks. Adding one later is additive, which is why the subset is safe.
29
+ *
30
+ * The BOUNDS restate `taskTypeFieldsSchema`'s and must stay in step with it. They are declared
31
+ * rather than derived because a descriptor is data a client READS (the discovery response tells a
32
+ * caller the limit before it sends), where a valibot pipe is only a check. `public-task-types.test.ts`
33
+ * pins the relation that must hold in the direction that matters: every value a descriptor here
34
+ * calls valid is one `taskTypeFieldsSchema` also accepts. It is what caught `targetPath`.
35
+ */
36
+ export const BUILTIN_PUBLIC_TASK_FIELDS = {
37
+ bug: [
38
+ {
39
+ key: 'severity',
40
+ label: 'Severity',
41
+ type: 'select',
42
+ options: [
43
+ { value: 'low', label: 'Low' },
44
+ { value: 'medium', label: 'Medium' },
45
+ { value: 'high', label: 'High' },
46
+ { value: 'critical', label: 'Critical' },
47
+ ],
48
+ },
49
+ {
50
+ key: 'stepsToReproduce',
51
+ label: 'Steps to reproduce',
52
+ type: 'textarea',
53
+ help: 'Reproduction steps, or observed versus expected behaviour.',
54
+ maxLength: 2000,
55
+ },
56
+ ],
57
+ spike: [
58
+ { key: 'timeboxHours', label: 'Timebox (hours)', type: 'number', min: 0, max: 1000 },
59
+ { key: 'successCriteria', label: 'Success criteria', type: 'textarea', maxLength: 2000 },
60
+ { key: 'researchQuestion', label: 'Research question', type: 'textarea', maxLength: 2000 },
61
+ { key: 'optionsToCompare', label: 'Options to compare', type: 'textarea', maxLength: 2000 },
62
+ ],
63
+ document: [
64
+ {
65
+ key: 'docKind',
66
+ label: 'Document kind',
67
+ type: 'select',
68
+ options: DOC_KINDS.map((kind) => ({ value: kind, label: kind })),
69
+ },
70
+ { key: 'audience', label: 'Audience', type: 'text', maxLength: 300 },
71
+ // `targetPath` is deliberately ABSENT. The internal schema holds it to `isSafeDocPath` (a
72
+ // relative in-repo path ENDING IN `.md`), and no descriptor type states that rule: `path` is
73
+ // the directory guard, and plain `text` would advertise a free string that creation then
74
+ // refuses with a raw schema error naming no field. Advertising a bound the surface cannot
75
+ // enforce is worse than omitting the field, and adding it later is additive.
76
+ { key: 'outlineHints', label: 'Outline hints', type: 'textarea', maxLength: 2000 },
77
+ ],
78
+ review: [
79
+ {
80
+ key: 'prNumber',
81
+ label: 'Pull request number',
82
+ type: 'number',
83
+ help: 'The open PR to review, on the service’s linked repository.',
84
+ min: 1,
85
+ },
86
+ {
87
+ key: 'prUrl',
88
+ label: 'Pull request URL',
89
+ type: 'text',
90
+ help: 'The PR’s full web URL. Wins over the number when both are given.',
91
+ maxLength: 500,
92
+ },
93
+ { key: 'reviewFocus', label: 'Review focus', type: 'textarea', maxLength: 2000 },
94
+ ],
95
+ feature: [],
96
+ ralph: [],
97
+ };
98
+ /**
99
+ * The descriptors a built-in type accepts, or an empty list for a type with no public fields.
100
+ * Total, so a caller never has to distinguish "no fields" from "unknown type": the type itself is
101
+ * already validated by `createTaskTypeSchema`.
102
+ */
103
+ export function builtinPublicTaskFields(taskType) {
104
+ return BUILTIN_PUBLIC_TASK_FIELDS[taskType] ?? [];
105
+ }
106
+ /** Whether `taskType` is one of the built-in create-form types (rather than a namespaced custom one). */
107
+ export function isBuiltinCreateTaskType(taskType) {
108
+ return BUILTIN_CREATE_TASK_TYPES.includes(taskType);
109
+ }
110
+ /**
111
+ * A built-in type's descriptor-checked values as the internal {@link taskTypeFieldsSchema} shape,
112
+ * PARSED through that schema rather than asserted to match it.
113
+ *
114
+ * The table above restates the schema as descriptors, and a descriptor cannot state every rule a
115
+ * valibot pipe can. `prNumber` is `v.integer()` in the schema and a plain `number` here, because
116
+ * the vocabulary has no integer flag: a caller sending `3.7` satisfied the public surface and the
117
+ * value landed on the block as the pull request to review. `prUrl` likewise loses the schema's
118
+ * `v.trim()`. Casting was what let that through, so the fix is to stop casting: this parse is what
119
+ * makes "everything the public surface accepts, the internal schema also accepts" true at RUN TIME
120
+ * rather than a claim its conformity test samples one value per field.
121
+ *
122
+ * A discriminated result, not a throw: contracts states the RULE and cannot see the error
123
+ * vocabulary that decides how a refusal reaches a caller (the kernel `ValidationError` the public
124
+ * route raises). A failure is a drift between the two tables rather than an ordinary bad request,
125
+ * but the value still came from the request, so the caller is told which field and why.
126
+ */
127
+ export function parseBuiltinPublicTaskFields(values) {
128
+ const parsed = v.safeParse(taskTypeFieldsSchema, values);
129
+ if (parsed.success)
130
+ return { ok: true, fields: parsed.output };
131
+ return {
132
+ ok: false,
133
+ problems: parsed.issues.map((issue) => {
134
+ const key = issue.path?.map((segment) => String(segment.key)).join('.');
135
+ return key ? `${key}: ${issue.message}.` : `${issue.message}.`;
136
+ }),
137
+ };
138
+ }
139
+ /**
140
+ * One entry of `GET /api/v1/task-types`: a type a caller may name in `POST /services/:id/tasks`,
141
+ * with the form it accepts.
142
+ *
143
+ * Deliberately omits `formPanel`. It names a FRONTEND component in the deployment's own SPA layer,
144
+ * which is meaningless to an external client and would advertise an id nothing in this API can act
145
+ * on. A type declaring one still appears here, because it IS creatable, but with an EMPTY `fields`
146
+ * list: its bespoke form owns the whole bag, so neither this API nor the internal create door
147
+ * validates one key of it. Projecting the descriptors it happens to declare would advertise a
148
+ * contract nothing enforces, and `fields` on this entry means exactly one thing everywhere
149
+ * (see {@link PublicTaskType.fields}).
150
+ */
151
+ export const publicTaskTypeSchema = v.object({
152
+ /** The id to pass as `taskType` (`feature`, `bug`, …, or a namespaced `acme:incident`). */
153
+ taskType: v.string(),
154
+ /** False for a type this deployment registered; true for one cat-factory ships. */
155
+ builtin: v.boolean(),
156
+ /** Human label for the type. Deployment-authored English for a custom type. */
157
+ label: v.string(),
158
+ /** One-line description, when the type carries one. */
159
+ description: v.optional(v.string()),
160
+ /** The picker grouping caption a custom type declares, when it has one. */
161
+ category: v.optional(v.string()),
162
+ /**
163
+ * The descriptors task creation CHECKS a `fields` bag against for this type, in declaration
164
+ * order. Exactly that, on every entry: a client that reads this list knows what the create call
165
+ * will accept, which is the property the one-table design exists to hold.
166
+ *
167
+ * EMPTY therefore means "this API validates nothing per-case here", which covers two different
168
+ * types and neither of them is a lie. A built-in like `feature` takes title and description
169
+ * only, so there is nothing to send. A custom type with a `formPanel`, or one this process does
170
+ * not register, accepts an arbitrary bag NOTHING checks (the internal create door does not
171
+ * either), so there is no list that would describe it. Both answer "do not expect this API to
172
+ * check what you send"; what a `formPanel` type's own form collects is the deployment's to
173
+ * document.
174
+ */
175
+ fields: v.array(descriptorFieldSchema),
176
+ /**
177
+ * The pipeline a task of this type is pinned to at creation when the caller pins none. Present
178
+ * only where the type declares one; `POST /tasks/:id/start` falls back to it.
179
+ */
180
+ defaultPipelineId: v.optional(v.string()),
181
+ });
182
+ /**
183
+ * The whole catalog: the built-in types first, then the deployment's registered ones in
184
+ * registration order. Not paginated, because a catalog is a handful of entries even for an org with a
185
+ * large operation library, and a caller reads it whole at startup.
186
+ *
187
+ * SUPPRESSION applies: a type the key's workspace hides is absent, because this endpoint answers
188
+ * "what may I create here", and a client offered a type creation then refuses has been misled.
189
+ */
190
+ export const publicTaskTypeListSchema = v.object({ taskTypes: v.array(publicTaskTypeSchema) });
191
+ //# sourceMappingURL=public-task-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-task-types.js","sourceRoot":"","sources":["../src/public-task-types.ts"],"names":[],"mappings":"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"}
@@ -37,6 +37,7 @@ export * from './mergeTrackRecord.js';
37
37
  export * from './model-presets.js';
38
38
  export * from './agent-prompts.js';
39
39
  export * from './agent-settings.js';
40
+ export * from './task-types.js';
40
41
  export * from './shared-stacks.js';
41
42
  export * from './models.js';
42
43
  export * from './notifications.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAGA,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,0BAA0B,CAAA;AACxC,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA;AACrC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,gCAAgC,CAAA;AAC9C,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,mBAAmB,CAAA;AACjC,cAAc,wBAAwB,CAAA;AACtC,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,yBAAyB,CAAA;AACvC,cAAc,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAGA,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,0BAA0B,CAAA;AACxC,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA;AACrC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,gCAAgC,CAAA;AAC9C,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,mBAAmB,CAAA;AACjC,cAAc,wBAAwB,CAAA;AACtC,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,yBAAyB,CAAA;AACvC,cAAc,iBAAiB,CAAA"}
@@ -40,6 +40,7 @@ export * from './mergeTrackRecord.js';
40
40
  export * from './model-presets.js';
41
41
  export * from './agent-prompts.js';
42
42
  export * from './agent-settings.js';
43
+ export * from './task-types.js';
43
44
  export * from './shared-stacks.js';
44
45
  export * from './models.js';
45
46
  export * from './notifications.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,+EAA+E;AAC/E,oDAAoD;AACpD,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,0BAA0B,CAAA;AACxC,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA;AACrC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,gCAAgC,CAAA;AAC9C,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,mBAAmB,CAAA;AACjC,cAAc,wBAAwB,CAAA;AACtC,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,yBAAyB,CAAA;AACvC,cAAc,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,+EAA+E;AAC/E,oDAAoD;AACpD,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,0BAA0B,CAAA;AACxC,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA;AACrC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,gCAAgC,CAAA;AAC9C,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,mBAAmB,CAAA;AACjC,cAAc,wBAAwB,CAAA;AACtC,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,yBAAyB,CAAA;AACvC,cAAc,iBAAiB,CAAA"}
@@ -400,6 +400,7 @@ export declare const createPublicTaskContract: {
400
400
  title: string;
401
401
  content: string;
402
402
  })[], 10, undefined>]>, undefined>;
403
+ readonly fields: import("valibot").OptionalSchema<import("valibot").RecordSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MinLengthAction<string, 1, undefined>, import("valibot").MaxLengthAction<string, 80, undefined>]>, import("valibot").UnionSchema<[import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MaxLengthAction<string, 2000, undefined>]>, import("valibot").SchemaWithPipe<readonly [import("valibot").ArraySchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MaxLengthAction<string, 2000, undefined>]>, undefined>, import("valibot").MaxLengthAction<string[], 50, undefined>]>, import("valibot").BooleanSchema<undefined>, import("valibot").NumberSchema<undefined>], undefined>, undefined>, undefined>;
403
404
  }, undefined>;
404
405
  readonly responsesByStatusCode: {
405
406
  readonly '4xx': import("valibot").ObjectSchema<{
@@ -822,6 +823,71 @@ export declare const deletePublicTaskContract: {
822
823
  readonly 204: typeof ContractNoBody;
823
824
  };
824
825
  };
826
+ /**
827
+ * List the task types this key's workspace may create, with the form each accepts. The discovery
828
+ * half of `createPublicTaskSchema.fields`: a caller reads the descriptors here and fills them
829
+ * there, rather than guessing at a shape the create call would then refuse.
830
+ */
831
+ export declare const listPublicTaskTypesContract: {
832
+ readonly method: "get";
833
+ readonly pathResolver: () => string;
834
+ readonly responsesByStatusCode: {
835
+ readonly '4xx': import("valibot").ObjectSchema<{
836
+ readonly error: import("valibot").ObjectSchema<{
837
+ readonly code: import("valibot").StringSchema<undefined>;
838
+ readonly message: import("valibot").StringSchema<undefined>;
839
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
840
+ readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
841
+ readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
842
+ readonly message: import("valibot").StringSchema<undefined>;
843
+ }, undefined>, undefined>, undefined>;
844
+ }, undefined>;
845
+ }, undefined>;
846
+ readonly '5xx': import("valibot").ObjectSchema<{
847
+ readonly error: import("valibot").ObjectSchema<{
848
+ readonly code: import("valibot").StringSchema<undefined>;
849
+ readonly message: import("valibot").StringSchema<undefined>;
850
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
851
+ readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
852
+ readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
853
+ readonly message: import("valibot").StringSchema<undefined>;
854
+ }, undefined>, undefined>, undefined>;
855
+ }, undefined>;
856
+ }, undefined>;
857
+ readonly 200: import("valibot").ObjectSchema<{
858
+ readonly taskTypes: import("valibot").ArraySchema<import("valibot").ObjectSchema<{
859
+ readonly taskType: import("valibot").StringSchema<undefined>;
860
+ readonly builtin: import("valibot").BooleanSchema<undefined>;
861
+ readonly label: import("valibot").StringSchema<undefined>;
862
+ readonly description: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
863
+ readonly category: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
864
+ readonly fields: import("valibot").ArraySchema<import("valibot").ObjectSchema<{
865
+ readonly key: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MinLengthAction<string, 1, undefined>, import("valibot").MaxLengthAction<string, 80, undefined>]>;
866
+ readonly label: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MinLengthAction<string, 1, undefined>, import("valibot").MaxLengthAction<string, 120, undefined>]>;
867
+ readonly help: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MaxLengthAction<string, 300, undefined>]>, undefined>;
868
+ readonly placeholder: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MaxLengthAction<string, 200, undefined>]>, undefined>;
869
+ readonly required: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, undefined>;
870
+ readonly options: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
871
+ readonly value: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MinLengthAction<string, 1, undefined>, import("valibot").MaxLengthAction<string, 120, undefined>]>;
872
+ readonly label: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MinLengthAction<string, 1, undefined>, import("valibot").MaxLengthAction<string, 120, undefined>]>;
873
+ }, undefined>, undefined>, undefined>;
874
+ readonly default: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MaxLengthAction<string, 2000, undefined>]>, undefined>;
875
+ readonly defaultValues: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").ArraySchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MaxLengthAction<string, 2000, undefined>]>, undefined>, import("valibot").MaxLengthAction<string[], 50, undefined>]>, undefined>;
876
+ readonly showWhen: import("valibot").OptionalSchema<import("valibot").ObjectSchema<{
877
+ readonly key: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MinLengthAction<string, 1, undefined>]>;
878
+ readonly equals: import("valibot").OptionalSchema<import("valibot").UnionSchema<[import("valibot").StringSchema<undefined>, import("valibot").BooleanSchema<undefined>, import("valibot").NumberSchema<undefined>], undefined>, undefined>;
879
+ readonly includes: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
880
+ }, undefined>, undefined>;
881
+ readonly maxLength: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").NumberSchema<undefined>, import("valibot").IntegerAction<number, undefined>, import("valibot").MinValueAction<number, 1, undefined>, import("valibot").MaxValueAction<number, 2000, undefined>]>, undefined>;
882
+ readonly min: import("valibot").OptionalSchema<import("valibot").NumberSchema<undefined>, undefined>;
883
+ readonly max: import("valibot").OptionalSchema<import("valibot").NumberSchema<undefined>, undefined>;
884
+ readonly type: import("valibot").OptionalSchema<import("valibot").PicklistSchema<["text", "password", "select", "number", "checkbox", "textarea", "checkbox-group", "path"], undefined>, undefined>;
885
+ }, undefined>, undefined>;
886
+ readonly defaultPipelineId: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
887
+ }, undefined>, undefined>;
888
+ }, undefined>;
889
+ };
890
+ };
825
891
  /** List the workspace's pipelines (id/name/steps + a headless-startable flag). */
826
892
  export declare const listPublicPipelinesContract: {
827
893
  readonly method: "get";
@@ -1 +1 @@
1
- {"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../../src/routes/public-api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../../src/routes/public-api.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { ContractNoBody, defineApiContract } from '@toad-contracts/valibot';
2
2
  import { createHeadlessPublicApiKeySchema, createPublicApiKeySchema, createdPublicApiKeySchema, publicApiKeyListResultSchema, } from '../public-api-keys.js';
3
3
  import { notificationSchema } from '../notifications.js';
4
4
  import { createPublicJobSchema, createPublicTaskSchema, listPublicJobsQuerySchema, listPublicServiceTasksQuerySchema, publicJobAcceptedSchema, publicIdentitySchema, publicJobListSchema, publicJobSchema, publicNotificationListSchema, publicPipelineListSchema, publicRunSchema, publicServiceListSchema, publicTaskListSchema, publicTaskSchema, publicUsageSchema, startPublicTaskSchema, updatePublicTaskSchema, } from '../public-api.js';
5
+ import { publicTaskTypeListSchema } from '../public-task-types.js';
5
6
  import { errorResponses, singleStringParam } from './_shared.js';
6
7
  // ---------------------------------------------------------------------------
7
8
  // Public-API route contracts. Two surfaces:
@@ -162,6 +163,16 @@ export const deletePublicTaskContract = defineApiContract({
162
163
  responsesByStatusCode: { 204: ContractNoBody, ...errorResponses },
163
164
  });
164
165
  // ---- pipeline discovery (key-authenticated) --------------------------------
166
+ /**
167
+ * List the task types this key's workspace may create, with the form each accepts. The discovery
168
+ * half of `createPublicTaskSchema.fields`: a caller reads the descriptors here and fills them
169
+ * there, rather than guessing at a shape the create call would then refuse.
170
+ */
171
+ export const listPublicTaskTypesContract = defineApiContract({
172
+ method: 'get',
173
+ pathResolver: () => '/api/v1/task-types',
174
+ responsesByStatusCode: { 200: publicTaskTypeListSchema, ...errorResponses },
175
+ });
165
176
  /** List the workspace's pipelines (id/name/steps + a headless-startable flag). */
166
177
  export const listPublicPipelinesContract = defineApiContract({
167
178
  method: 'get',
@@ -1 +1 @@
1
- {"version":3,"file":"public-api.js","sourceRoot":"","sources":["../../src/routes/public-api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"public-api.js","sourceRoot":"","sources":["../../src/routes/public-api.ts"],"names":[],"mappings":"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"}