@cat-factory/contracts 0.227.0 → 0.230.1

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 (82) hide show
  1. package/dist/entities.d.ts +1 -1
  2. package/dist/errors.d.ts +1 -1
  3. package/dist/errors.d.ts.map +1 -1
  4. package/dist/errors.js +15 -0
  5. package/dist/errors.js.map +1 -1
  6. package/dist/execution.d.ts +25 -1
  7. package/dist/execution.d.ts.map +1 -1
  8. package/dist/execution.js +16 -1
  9. package/dist/execution.js.map +1 -1
  10. package/dist/form-fields.d.ts +203 -0
  11. package/dist/form-fields.d.ts.map +1 -0
  12. package/dist/form-fields.js +315 -0
  13. package/dist/form-fields.js.map +1 -0
  14. package/dist/index.d.ts +2 -0
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +2 -0
  17. package/dist/index.js.map +1 -1
  18. package/dist/initiative-preset.d.ts +34 -93
  19. package/dist/initiative-preset.d.ts.map +1 -1
  20. package/dist/initiative-preset.js +30 -182
  21. package/dist/initiative-preset.js.map +1 -1
  22. package/dist/initiative.d.ts +14 -9
  23. package/dist/initiative.d.ts.map +1 -1
  24. package/dist/initiative.js +15 -15
  25. package/dist/initiative.js.map +1 -1
  26. package/dist/input-gate.d.ts +115 -0
  27. package/dist/input-gate.d.ts.map +1 -0
  28. package/dist/input-gate.js +131 -0
  29. package/dist/input-gate.js.map +1 -0
  30. package/dist/merge.d.ts +2 -2
  31. package/dist/merge.js +2 -2
  32. package/dist/primitives.d.ts +10 -5
  33. package/dist/primitives.d.ts.map +1 -1
  34. package/dist/primitives.js +11 -5
  35. package/dist/primitives.js.map +1 -1
  36. package/dist/public-decisions.d.ts +65 -1
  37. package/dist/public-decisions.d.ts.map +1 -1
  38. package/dist/public-decisions.js +45 -6
  39. package/dist/public-decisions.js.map +1 -1
  40. package/dist/requests.d.ts +1 -1
  41. package/dist/routes/agent-runs.d.ts +22 -0
  42. package/dist/routes/agent-runs.d.ts.map +1 -1
  43. package/dist/routes/board.d.ts +14 -14
  44. package/dist/routes/bug-hunt.d.ts +24 -2
  45. package/dist/routes/bug-hunt.d.ts.map +1 -1
  46. package/dist/routes/execution.d.ts +90 -2
  47. package/dist/routes/execution.d.ts.map +1 -1
  48. package/dist/routes/human-review.d.ts +11 -0
  49. package/dist/routes/human-review.d.ts.map +1 -1
  50. package/dist/routes/human-test.d.ts +55 -0
  51. package/dist/routes/human-test.d.ts.map +1 -1
  52. package/dist/routes/index.d.ts +1 -0
  53. package/dist/routes/index.d.ts.map +1 -1
  54. package/dist/routes/index.js +1 -0
  55. package/dist/routes/index.js.map +1 -1
  56. package/dist/routes/initiative.d.ts +17 -17
  57. package/dist/routes/input-gate.d.ts +48 -0
  58. package/dist/routes/input-gate.d.ts.map +1 -0
  59. package/dist/routes/input-gate.js +24 -0
  60. package/dist/routes/input-gate.js.map +1 -0
  61. package/dist/routes/public-decisions.d.ts +193 -0
  62. package/dist/routes/public-decisions.d.ts.map +1 -1
  63. package/dist/routes/public-decisions.js +20 -1
  64. package/dist/routes/public-decisions.js.map +1 -1
  65. package/dist/routes/tasks.d.ts +3 -3
  66. package/dist/routes/visual-confirm.d.ts +33 -0
  67. package/dist/routes/visual-confirm.d.ts.map +1 -1
  68. package/dist/routes/workspace-settings.d.ts +3 -0
  69. package/dist/routes/workspace-settings.d.ts.map +1 -1
  70. package/dist/routes/workspaces.d.ts +70 -26
  71. package/dist/routes/workspaces.d.ts.map +1 -1
  72. package/dist/snapshot.d.ts +35 -13
  73. package/dist/snapshot.d.ts.map +1 -1
  74. package/dist/task-types.d.ts +69 -28
  75. package/dist/task-types.d.ts.map +1 -1
  76. package/dist/task-types.js +50 -25
  77. package/dist/task-types.js.map +1 -1
  78. package/dist/workspace-settings.d.ts +13 -0
  79. package/dist/workspace-settings.d.ts.map +1 -1
  80. package/dist/workspace-settings.js +14 -0
  81. package/dist/workspace-settings.js.map +1 -1
  82. package/package.json +1 -1
@@ -0,0 +1,115 @@
1
+ import * as v from 'valibot';
2
+ /**
3
+ * A structural gap the gate can find in a task's input. CLOSED and PERSISTED (it rides a
4
+ * run row), so a member may be added freely but a retired one has to be NAMED as retired
5
+ * rather than dropped. A stored run keeps whatever code was current when it parked, and
6
+ * the reader that meets a withdrawn value is the very surface whose job is to tell a human
7
+ * what to go and fix.
8
+ *
9
+ * - `description_missing`: the task has no description at all.
10
+ * - `description_placeholder`: the description is nothing but a placeholder (`TBD`, `TODO`,
11
+ * `n/a`, `?`), authored but carrying no statement of the work.
12
+ * - `description_thin`: a description too short to specify anything (advisory: a one-line
13
+ * task can still be a real task).
14
+ * - `reproduction_missing`: a `bug` task with neither reproduction steps nor any
15
+ * reproduction cue in its description. The single most expensive input gap there is: a
16
+ * fixer with nothing to reproduce cannot know when it is done.
17
+ * - `review_target_missing`: a `review` task naming no pull request. There is literally
18
+ * nothing for the run to open.
19
+ * - `success_criteria_missing`: a `spike` with no stated success criteria or research
20
+ * question, so nothing decides when the timebox has been spent well (advisory).
21
+ */
22
+ export declare const INPUT_GATE_ISSUE_CODES: readonly ['description_missing', 'description_placeholder', 'description_thin', 'reproduction_missing', 'review_target_missing', 'success_criteria_missing'];
23
+ export declare const inputGateIssueCodeSchema: v.PicklistSchema<readonly ["description_missing", "description_placeholder", "description_thin", "reproduction_missing", "review_target_missing", "success_criteria_missing"], undefined>;
24
+ export type InputGateIssueCode = v.InferOutput<typeof inputGateIssueCodeSchema>;
25
+ /**
26
+ * How hard a finding bites. `blocking` parks the run before its first dispatch;
27
+ * `advisory` is recorded and reported but never stops anything.
28
+ *
29
+ * A finding's severity is INTRINSIC to its code (see kernel's `INPUT_GATE_SEVERITY`) and
30
+ * then floored by the workspace's {@link inputGateModeSchema}. `advisory` mode downgrades
31
+ * every finding; it never upgrades one. So the mode can only ever make the gate quieter,
32
+ * which is what lets it default to on.
33
+ */
34
+ export declare const inputGateSeveritySchema: v.PicklistSchema<["blocking", "advisory"], undefined>;
35
+ export type InputGateSeverity = v.InferOutput<typeof inputGateSeveritySchema>;
36
+ /** One structural finding: its code and the severity it carried in THIS evaluation. */
37
+ export declare const inputGateIssueSchema: v.ObjectSchema<{
38
+ readonly code: v.PicklistSchema<readonly ["description_missing", "description_placeholder", "description_thin", "reproduction_missing", "review_target_missing", "success_criteria_missing"], undefined>;
39
+ readonly severity: v.PicklistSchema<["blocking", "advisory"], undefined>;
40
+ }, undefined>;
41
+ export type InputGateIssue = v.InferOutput<typeof inputGateIssueSchema>;
42
+ /**
43
+ * Whether/how the gate applies to a workspace's runs:
44
+ * - `standard` (the default): a blocking finding parks the run before any model call.
45
+ * - `advisory`: every finding is downgraded, so nothing ever parks; the findings are
46
+ * still recorded on the run (and shown), which is how a workspace watches what the gate
47
+ * WOULD have caught before turning it up.
48
+ * - `off`: the gate does not run. Distinct from `advisory`: `off` records no
49
+ * findings at all, so "we looked and found nothing" and "nobody looked" stay apart.
50
+ */
51
+ export declare const inputGateModeSchema: v.PicklistSchema<["standard", "advisory", "off"], undefined>;
52
+ export type InputGateMode = v.InferOutput<typeof inputGateModeSchema>;
53
+ /**
54
+ * The gate's disposition for a run. Five values because each needs a different reaction and
55
+ * collapsing any pair would state something false:
56
+ * - `off`: the workspace has the gate turned off, so it did not run. NOT the same as
57
+ * finding nothing.
58
+ * - `not_applicable`: the gate is on, but this run's task is not one a human AUTHORED, so
59
+ * there is no description for it to judge. A recurring schedule's reused block is the
60
+ * case: its real input is the schedule (and, for intake, the ticket it picks up), and a
61
+ * blank description on it means nothing is wrong. Kept apart from `off` because the two
62
+ * have opposite fixes: one is a setting somebody chose, the other is a property of the
63
+ * task that no setting will change.
64
+ * - `passed`: it ran and nothing blocking was found (`issues` may still hold advisories).
65
+ * - `blocked`: it ran, found blocking gaps, and the run is parked on them.
66
+ * - `overridden`: a human read the blocking gaps and chose to run anyway. The findings
67
+ * stay on the run: what was waived is part of the record, and the agents are told.
68
+ */
69
+ export declare const inputGateStatusSchema: v.PicklistSchema<["off", "not_applicable", "passed", "blocked", "overridden"], undefined>;
70
+ export type InputGateStatus = v.InferOutput<typeof inputGateStatusSchema>;
71
+ /**
72
+ * The gate's verdict as stamped on a run. Rides the run's `detail` JSON (no dedicated
73
+ * column, so it is runtime-symmetric by construction) and is written exactly once per
74
+ * evaluation. The presence of this record is also what makes the check idempotent under a
75
+ * durable replay: a re-driven run reads its own settled verdict instead of re-evaluating a
76
+ * block a human may have edited in the meantime.
77
+ */
78
+ export declare const runInputGateSchema: v.ObjectSchema<{
79
+ /** The disposition (see {@link inputGateStatusSchema}). */
80
+ readonly status: v.PicklistSchema<["off", "not_applicable", "passed", "blocked", "overridden"], undefined>;
81
+ /** The mode the evaluation ran under, so a recorded verdict explains its own severities. */
82
+ readonly mode: v.PicklistSchema<["standard", "advisory", "off"], undefined>;
83
+ /**
84
+ * Every finding, blocking and advisory alike, in a stable order. Empty on `off` (nothing
85
+ * was looked at) and on a clean `passed`.
86
+ */
87
+ readonly issues: v.ArraySchema<v.ObjectSchema<{
88
+ readonly code: v.PicklistSchema<readonly ["description_missing", "description_placeholder", "description_thin", "reproduction_missing", "review_target_missing", "success_criteria_missing"], undefined>;
89
+ readonly severity: v.PicklistSchema<["blocking", "advisory"], undefined>;
90
+ }, undefined>, undefined>;
91
+ /** Epoch ms of the evaluation that produced this verdict. */
92
+ readonly checkedAt: v.NumberSchema<undefined>;
93
+ /**
94
+ * Internal user id (`usr_*`) of whoever waived the blocking findings, on `overridden`.
95
+ * Absent when the run was never blocked, and when the waiver came from a caller with no
96
+ * signed-in user (auth-disabled dev, a headless key).
97
+ */
98
+ readonly overriddenBy: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
99
+ /** Epoch ms the override was recorded. Absent unless `status` is `overridden`. */
100
+ readonly overriddenAt: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
101
+ }, undefined>;
102
+ export type RunInputGate = v.InferOutput<typeof runInputGateSchema>;
103
+ /**
104
+ * How a human resolves a run parked on the gate:
105
+ * - `recheck`: re-evaluate against the task as it stands NOW (they went and filled the
106
+ * gaps in). Clears the park only if the gaps are genuinely gone, so the fix is verified
107
+ * rather than asserted.
108
+ * - `proceed`: waive the findings and run anyway.
109
+ */
110
+ export declare const resolveInputGateSchema: v.ObjectSchema<{
111
+ readonly choice: v.PicklistSchema<["recheck", "proceed"], undefined>;
112
+ }, undefined>;
113
+ export type ResolveInputGateRequest = v.InferOutput<typeof resolveInputGateSchema>;
114
+ export type ResolveInputGateChoice = ResolveInputGateRequest['choice'];
115
+ //# sourceMappingURL=input-gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-gate.d.ts","sourceRoot":"","sources":["../src/input-gate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAiB5B;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,sBAAsB,YACjC,qBAAqB,EACrB,yBAAyB,EACzB,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,CAClB,CAAA;AACV,eAAO,MAAM,wBAAwB,2LAAqC,CAAA;AAC1E,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAE/E;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,uDAAuC,CAAA;AAC3E,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAE7E,uFAAuF;AACvF,eAAO,MAAM,oBAAoB;;;aAG/B,CAAA;AACF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAEvE;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,8DAA8C,CAAA;AAC9E,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAErE;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,qBAAqB,2FAMhC,CAAA;AACF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEzE;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB;IAC7B,2DAA2D;;IAE3D,4FAA4F;;IAE5F;;;OAGG;;;;;IAEH,6DAA6D;;IAE7D;;;;OAIG;;IAEH,kFAAkF;;aAElF,CAAA;AACF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAEnE;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB;;aAEjC,CAAA;AACF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAClF,MAAM,MAAM,sBAAsB,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAA"}
@@ -0,0 +1,131 @@
1
+ import * as v from 'valibot';
2
+ // ---------------------------------------------------------------------------
3
+ // The PRE-DISPATCH INPUT GATE's wire vocabulary: what a run's structural input check
4
+ // found, how severe it is, and how the run was let past it.
5
+ //
6
+ // The gate is a deterministic reduction over a task's own authored fields (title,
7
+ // description, the per-type fields), run ONCE before a run's first agent step is
8
+ // dispatched, so a task nobody could act on parks having spent nothing, rather than
9
+ // buying that same verdict from the requirements reviewer for one model call.
10
+ //
11
+ // It lives in contracts (not only in kernel) because the SPA renders each finding and
12
+ // must key its translated copy off the SAME closed vocabulary the engine writes. Pure
13
+ // evaluation is kernel's `domain/input-gate.ts`; the run state is stamped by the
14
+ // orchestration `InputGateController`.
15
+ // ---------------------------------------------------------------------------
16
+ /**
17
+ * A structural gap the gate can find in a task's input. CLOSED and PERSISTED (it rides a
18
+ * run row), so a member may be added freely but a retired one has to be NAMED as retired
19
+ * rather than dropped. A stored run keeps whatever code was current when it parked, and
20
+ * the reader that meets a withdrawn value is the very surface whose job is to tell a human
21
+ * what to go and fix.
22
+ *
23
+ * - `description_missing`: the task has no description at all.
24
+ * - `description_placeholder`: the description is nothing but a placeholder (`TBD`, `TODO`,
25
+ * `n/a`, `?`), authored but carrying no statement of the work.
26
+ * - `description_thin`: a description too short to specify anything (advisory: a one-line
27
+ * task can still be a real task).
28
+ * - `reproduction_missing`: a `bug` task with neither reproduction steps nor any
29
+ * reproduction cue in its description. The single most expensive input gap there is: a
30
+ * fixer with nothing to reproduce cannot know when it is done.
31
+ * - `review_target_missing`: a `review` task naming no pull request. There is literally
32
+ * nothing for the run to open.
33
+ * - `success_criteria_missing`: a `spike` with no stated success criteria or research
34
+ * question, so nothing decides when the timebox has been spent well (advisory).
35
+ */
36
+ export const INPUT_GATE_ISSUE_CODES = [
37
+ 'description_missing',
38
+ 'description_placeholder',
39
+ 'description_thin',
40
+ 'reproduction_missing',
41
+ 'review_target_missing',
42
+ 'success_criteria_missing',
43
+ ];
44
+ export const inputGateIssueCodeSchema = v.picklist(INPUT_GATE_ISSUE_CODES);
45
+ /**
46
+ * How hard a finding bites. `blocking` parks the run before its first dispatch;
47
+ * `advisory` is recorded and reported but never stops anything.
48
+ *
49
+ * A finding's severity is INTRINSIC to its code (see kernel's `INPUT_GATE_SEVERITY`) and
50
+ * then floored by the workspace's {@link inputGateModeSchema}. `advisory` mode downgrades
51
+ * every finding; it never upgrades one. So the mode can only ever make the gate quieter,
52
+ * which is what lets it default to on.
53
+ */
54
+ export const inputGateSeveritySchema = v.picklist(['blocking', 'advisory']);
55
+ /** One structural finding: its code and the severity it carried in THIS evaluation. */
56
+ export const inputGateIssueSchema = v.object({
57
+ code: inputGateIssueCodeSchema,
58
+ severity: inputGateSeveritySchema,
59
+ });
60
+ /**
61
+ * Whether/how the gate applies to a workspace's runs:
62
+ * - `standard` (the default): a blocking finding parks the run before any model call.
63
+ * - `advisory`: every finding is downgraded, so nothing ever parks; the findings are
64
+ * still recorded on the run (and shown), which is how a workspace watches what the gate
65
+ * WOULD have caught before turning it up.
66
+ * - `off`: the gate does not run. Distinct from `advisory`: `off` records no
67
+ * findings at all, so "we looked and found nothing" and "nobody looked" stay apart.
68
+ */
69
+ export const inputGateModeSchema = v.picklist(['standard', 'advisory', 'off']);
70
+ /**
71
+ * The gate's disposition for a run. Five values because each needs a different reaction and
72
+ * collapsing any pair would state something false:
73
+ * - `off`: the workspace has the gate turned off, so it did not run. NOT the same as
74
+ * finding nothing.
75
+ * - `not_applicable`: the gate is on, but this run's task is not one a human AUTHORED, so
76
+ * there is no description for it to judge. A recurring schedule's reused block is the
77
+ * case: its real input is the schedule (and, for intake, the ticket it picks up), and a
78
+ * blank description on it means nothing is wrong. Kept apart from `off` because the two
79
+ * have opposite fixes: one is a setting somebody chose, the other is a property of the
80
+ * task that no setting will change.
81
+ * - `passed`: it ran and nothing blocking was found (`issues` may still hold advisories).
82
+ * - `blocked`: it ran, found blocking gaps, and the run is parked on them.
83
+ * - `overridden`: a human read the blocking gaps and chose to run anyway. The findings
84
+ * stay on the run: what was waived is part of the record, and the agents are told.
85
+ */
86
+ export const inputGateStatusSchema = v.picklist([
87
+ 'off',
88
+ 'not_applicable',
89
+ 'passed',
90
+ 'blocked',
91
+ 'overridden',
92
+ ]);
93
+ /**
94
+ * The gate's verdict as stamped on a run. Rides the run's `detail` JSON (no dedicated
95
+ * column, so it is runtime-symmetric by construction) and is written exactly once per
96
+ * evaluation. The presence of this record is also what makes the check idempotent under a
97
+ * durable replay: a re-driven run reads its own settled verdict instead of re-evaluating a
98
+ * block a human may have edited in the meantime.
99
+ */
100
+ export const runInputGateSchema = v.object({
101
+ /** The disposition (see {@link inputGateStatusSchema}). */
102
+ status: inputGateStatusSchema,
103
+ /** The mode the evaluation ran under, so a recorded verdict explains its own severities. */
104
+ mode: inputGateModeSchema,
105
+ /**
106
+ * Every finding, blocking and advisory alike, in a stable order. Empty on `off` (nothing
107
+ * was looked at) and on a clean `passed`.
108
+ */
109
+ issues: v.array(inputGateIssueSchema),
110
+ /** Epoch ms of the evaluation that produced this verdict. */
111
+ checkedAt: v.number(),
112
+ /**
113
+ * Internal user id (`usr_*`) of whoever waived the blocking findings, on `overridden`.
114
+ * Absent when the run was never blocked, and when the waiver came from a caller with no
115
+ * signed-in user (auth-disabled dev, a headless key).
116
+ */
117
+ overriddenBy: v.optional(v.nullable(v.string())),
118
+ /** Epoch ms the override was recorded. Absent unless `status` is `overridden`. */
119
+ overriddenAt: v.optional(v.number()),
120
+ });
121
+ /**
122
+ * How a human resolves a run parked on the gate:
123
+ * - `recheck`: re-evaluate against the task as it stands NOW (they went and filled the
124
+ * gaps in). Clears the park only if the gaps are genuinely gone, so the fix is verified
125
+ * rather than asserted.
126
+ * - `proceed`: waive the findings and run anyway.
127
+ */
128
+ export const resolveInputGateSchema = v.object({
129
+ choice: v.picklist(['recheck', 'proceed']),
130
+ });
131
+ //# sourceMappingURL=input-gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-gate.js","sourceRoot":"","sources":["../src/input-gate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAE5B,8EAA8E;AAC9E,qFAAqF;AACrF,4DAA4D;AAC5D,EAAE;AACF,kFAAkF;AAClF,iFAAiF;AACjF,oFAAoF;AACpF,8EAA8E;AAC9E,EAAE;AACF,sFAAsF;AACtF,sFAAsF;AACtF,iFAAiF;AACjF,uCAAuC;AACvC,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,qBAAqB;IACrB,yBAAyB;IACzB,kBAAkB;IAClB,sBAAsB;IACtB,uBAAuB;IACvB,0BAA0B;CAClB,CAAA;AACV,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAA;AAG1E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAA;AAG3E,uFAAuF;AACvF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,IAAI,EAAE,wBAAwB;IAC9B,QAAQ,EAAE,uBAAuB;CAClC,CAAC,CAAA;AAGF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAA;AAG9E;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,QAAQ,CAAC;IAC9C,KAAK;IACL,gBAAgB;IAChB,QAAQ;IACR,SAAS;IACT,YAAY;CACb,CAAC,CAAA;AAGF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,2DAA2D;IAC3D,MAAM,EAAE,qBAAqB;IAC7B,4FAA4F;IAC5F,IAAI,EAAE,mBAAmB;IACzB;;;OAGG;IACH,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC;IACrC,6DAA6D;IAC7D,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB;;;;OAIG;IACH,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAChD,kFAAkF;IAClF,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CACrC,CAAC,CAAA;AAGF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;CAC3C,CAAC,CAAA"}
package/dist/merge.d.ts CHANGED
@@ -97,7 +97,7 @@ export type MergeClassRules = v.InferOutput<typeof mergeClassRulesSchema>;
97
97
  * A partial map from {@link workspaceRoleSchema} to that role's own {@link mergeClassRulesSchema}.
98
98
  * The base `classRules` say what the WORK may do; this says what a given tier of person may do
99
99
  * with it, so a workspace can widen `dependency` to `always` for everyone and still hold a
100
- * non-engineer's runs to review on `source`.
100
+ * non-developer's runs to review on `source`.
101
101
  *
102
102
  * Composition is NARROW-ONLY (`narrowMergeClassRule` in kernel): a role entry may only make a
103
103
  * class MORE restrictive than the base rule, never less. That is the whole safety property — an
@@ -607,7 +607,7 @@ export type ClassRulesByRole = v.InferOutput<typeof classRulesByRoleSchema>;
607
607
  * such a role starts does the work and opens its PR, but nothing merges — not automatically, and
608
608
  * not through the manual merge endpoint either.
609
609
  *
610
- * This is the "sandboxed run for a non-engineer" setting. It is expressed on the preset rather
610
+ * This is the "sandboxed run for a non-developer" setting. It is expressed on the preset rather
611
611
  * than on the role catalog because it is a POLICY about a body of work (this service's tasks),
612
612
  * not a capability of the person: the same product manager may be trusted to land copy changes on
613
613
  * one service and nothing at all on another, and the preset is already what a task selects.
package/dist/merge.js CHANGED
@@ -69,7 +69,7 @@ v.strictObject(Object.fromEntries(RULEABLE_CHANGE_CLASSES.map((c) => [c, mergeCl
69
69
  * A partial map from {@link workspaceRoleSchema} to that role's own {@link mergeClassRulesSchema}.
70
70
  * The base `classRules` say what the WORK may do; this says what a given tier of person may do
71
71
  * with it, so a workspace can widen `dependency` to `always` for everyone and still hold a
72
- * non-engineer's runs to review on `source`.
72
+ * non-developer's runs to review on `source`.
73
73
  *
74
74
  * Composition is NARROW-ONLY (`narrowMergeClassRule` in kernel): a role entry may only make a
75
75
  * class MORE restrictive than the base rule, never less. That is the whole safety property — an
@@ -91,7 +91,7 @@ v.strictObject(Object.fromEntries(WORKSPACE_ROLES.map((r) => [r, mergeClassRules
91
91
  * such a role starts does the work and opens its PR, but nothing merges — not automatically, and
92
92
  * not through the manual merge endpoint either.
93
93
  *
94
- * This is the "sandboxed run for a non-engineer" setting. It is expressed on the preset rather
94
+ * This is the "sandboxed run for a non-developer" setting. It is expressed on the preset rather
95
95
  * than on the role catalog because it is a POLICY about a body of work (this service's tasks),
96
96
  * not a capability of the person: the same product manager may be trusted to land copy changes on
97
97
  * one service and nothing at all on another, and the preset is already what a task selects.
@@ -161,12 +161,17 @@ export declare const taskTypeFieldsSchema: v.ObjectSchema<{
161
161
  /** Review: freeform focus/guidance for the reviewer (e.g. "focus on the auth changes"). */
162
162
  readonly reviewFocus: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 4000, undefined>]>, undefined>;
163
163
  /**
164
- * Values for the descriptor-driven fields a CUSTOM (deployment-registered) task type
165
- * declares (see `customTaskTypeSchema.fields`), keyed by each field descriptor's `key`.
166
- * Sparse and additive like the built-in fields above never migrated, never touches them.
167
- * String or number per the descriptor's input `type`; the built-in types leave this absent.
164
+ * Values for the descriptor-driven fields a CUSTOM (deployment-registered) task type declares
165
+ * (see `customTaskTypeSchema.fields`), keyed by each field descriptor's `key`. Sparse and
166
+ * additive like the built-in fields above: never migrated, never touches them; the built-in
167
+ * types leave it absent.
168
+ *
169
+ * The SHARED descriptor-form value bag (`form-fields.ts`), so a value is a string, a number, a
170
+ * boolean (`checkbox`) or a `string[]` (`checkbox-group`), exactly as an initiative preset's
171
+ * inputs are. Widening it from `string | number` is a pure widening: every existing row parses
172
+ * unchanged, so there is nothing to migrate.
168
173
  */
169
- readonly custom: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, undefined>;
174
+ readonly custom: v.OptionalSchema<v.RecordSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 80, undefined>]>, v.UnionSchema<[v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>, v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>, v.MaxLengthAction<string[], 50, undefined>]>, v.BooleanSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, undefined>;
170
175
  }, undefined>;
171
176
  export type TaskTypeFields = v.InferOutput<typeof taskTypeFieldsSchema>;
172
177
  /** A kind-specific document field key on {@link taskTypeFieldsSchema}. */
@@ -1 +1 @@
1
- {"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../src/primitives.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../src/primitives.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAO5B,0EAA0E;AAC1E,eAAO,MAAM,QAAQ,iGAAqC,CAAA;AAE1D,8GAA8G;AAC9G,eAAO,MAAM,SAAS,2JAAkE,CAAA;AAExF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,qBAAqB,QAAwD,CAAA;AAE1F,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAElD;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,4JAM9B,CAAA;AAED,eAAO,MAAM,eAAe,mJAW1B,CAAA;AACF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,eAAe,CAAC,CAAA;AAE7D;;;;;;;;;GASG;AACH,eAAO,MAAM,mBAAmB,6EAA6D,CAAA;AAC7F,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAErE,gGAAgG;AAChG,eAAO,MAAM,gBAAgB,YAAI,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAU,CAAA;AAEvF,eAAO,MAAM,iBAAiB,iGAO5B,CAAA;AACF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAEjE;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,gFAAgE,CAAA;AAC7F,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAE/D,iGAAiG;AACjG,eAAO,MAAM,kBAAkB,YAC7B,SAAS,EACT,KAAK,EACL,UAAU,EACV,OAAO,EACP,QAAQ,EACR,OAAO,EACP,WAAW,CACH,CAAA;AACV,uGAAuG;AACvG,eAAO,MAAM,yBAAyB,YACpC,SAAS,EACT,KAAK,EACL,UAAU,EACV,OAAO,EACP,QAAQ,EACR,OAAO,CACC,CAAA;AAEV;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,cAAc,uSAAgE,CAAA;AAC3F,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,cAAc,CAAC,CAAA;AAE3D,qGAAqG;AACrG,eAAO,MAAM,oBAAoB,0RAG/B,CAAA;AACF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAEvE;;;;;GAKG;AACH,eAAO,MAAM,SAAS,YACpB,KAAK,EACL,KAAK,EACL,KAAK,EACL,QAAQ,EACR,WAAW,EACX,KAAK,EACL,SAAS,EACT,UAAU,EACV,WAAW,EACX,OAAO,CACC,CAAA;AACV,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAA;AAEhD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAOnD;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB;IAC/B,qCAAqC;;IAErC,sDAAsD;;IAEtD,mDAAmD;;IAEnD,4FAA4F;;IAE5F,0DAA0D;;IAE1D,2FAA2F;;IAE3F;;;;;OAKG;;IAWH,sFAAsF;;IAQtF,sEAAsE;;IAEtE,yEAAyE;;IAEzE,2EAA2E;;IAE3E,oDAAoD;;IAEpD,4DAA4D;;IAE5D,4DAA4D;;IAE5D,iEAAiE;;IAEjE,4EAA4E;;IAE5E,yFAAyF;;IAEzF,iEAAiE;;IAEjE,+DAA+D;;IAI/D;;;;OAIG;;IAEH;;;;;;OAMG;;IAEH,2FAA2F;;IAI3F;;;;;;;;;;OAUG;;aAEH,CAAA;AACF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAEvE,0EAA0E;AAC1E,MAAM,MAAM,eAAe,GACvB,aAAa,GACb,gBAAgB,GAChB,wBAAwB,GACxB,iBAAiB,GACjB,iBAAiB,GACjB,mBAAmB,GACnB,WAAW,GACX,gBAAgB,GAChB,kBAAkB,GAClB,kBAAkB,GAClB,YAAY,CAAA;AAEhB,oGAAoG;AACpG,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,eAAe,CAAA;IAC7B,6FAA6F;IAC7F,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;CAC5B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC,CAsBjF,CAAA;AAED,eAAO,MAAM,gBAAgB,iFAAiE,CAAA;AAC9F,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAE/D,qEAAqE;AACrE,eAAO,MAAM,eAAe,iGAAqC,CAAA;AACjE,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,eAAe,CAAC,CAAA;AAE7D;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,gQASlE;AAWD,4DAA4D;AAC5D,eAAO,MAAM,4BAA4B,mBAAmB,CAAA;AAC5D,gEAAgE;AAChE,eAAO,MAAM,gCAAgC,uBAAuB,CAAA;AACpE,uFAAuF;AACvF,eAAO,MAAM,4BAA4B,oBAAoB,CAAA;AAE7D,mGAAmG;AACnG,eAAO,MAAM,sBAAsB;IACjC,8FAA8F;;IAQ9F,kGAAkG;;IAElG;;;;;;;OAOG;;aAUH,CAAA;AACF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAE3E,eAAO,MAAM,cAAc;;;aAGzB,CAAA;AACF,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,cAAc,CAAC,CAAA;AAE3D;;;;;GAKG;AACH,eAAO,MAAM,UAAU;;;aAGrB,CAAA;AACF,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,UAAU,CAAC,CAAA"}
@@ -1,4 +1,5 @@
1
1
  import * as v from 'valibot';
2
+ import { descriptorFieldValuesSchema } from './form-fields.js';
2
3
  // Shared scalar schemas. Picklists mirror the frontend's `app/types/domain.ts`
3
4
  // unions exactly, so a payload that validates here drops straight into the Pinia
4
5
  // stores without translation.
@@ -224,12 +225,17 @@ export const taskTypeFieldsSchema = v.object({
224
225
  reviewFocus: v.optional(v.pipe(v.string(), v.maxLength(4000))),
225
226
  // --- Custom-task-type fields ----------------------------------------------
226
227
  /**
227
- * Values for the descriptor-driven fields a CUSTOM (deployment-registered) task type
228
- * declares (see `customTaskTypeSchema.fields`), keyed by each field descriptor's `key`.
229
- * Sparse and additive like the built-in fields above never migrated, never touches them.
230
- * String or number per the descriptor's input `type`; the built-in types leave this absent.
228
+ * Values for the descriptor-driven fields a CUSTOM (deployment-registered) task type declares
229
+ * (see `customTaskTypeSchema.fields`), keyed by each field descriptor's `key`. Sparse and
230
+ * additive like the built-in fields above: never migrated, never touches them; the built-in
231
+ * types leave it absent.
232
+ *
233
+ * The SHARED descriptor-form value bag (`form-fields.ts`), so a value is a string, a number, a
234
+ * boolean (`checkbox`) or a `string[]` (`checkbox-group`), exactly as an initiative preset's
235
+ * inputs are. Widening it from `string | number` is a pure widening: every existing row parses
236
+ * unchanged, so there is nothing to migrate.
231
237
  */
232
- custom: v.optional(v.record(v.string(), v.union([v.string(), v.number()]))),
238
+ custom: v.optional(descriptorFieldValuesSchema),
233
239
  });
234
240
  /**
235
241
  * Which kind-specific fields the create-task form shows — and the author agents fold into the
@@ -1 +1 @@
1
- {"version":3,"file":"primitives.js","sourceRoot":"","sources":["../src/primitives.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"primitives.js","sourceRoot":"","sources":["../src/primitives.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAA;AAE9D,+EAA+E;AAC/E,iFAAiF;AACjF,8BAA8B;AAE9B,0EAA0E;AAC1E,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;AAE1D,8GAA8G;AAC9G,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;AAExF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,qDAAqD,CAAA;AAE1F,4EAA4E;AAC5E,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,OAAO,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AACvC,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CACtC,CAAC,CAAC,MAAM,EAAE,EACV,CAAC,CAAC,KAAK,CACL,qBAAqB,EACrB,2EAA2E,CAC5E,CACF,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,QAAQ,CAAC;IACxC,UAAU;IACV,SAAS;IACT,SAAS;IACT,UAAU;IACV,KAAK;IACL,UAAU;IACV,OAAO;IACP,aAAa;IACb,UAAU;IACV,aAAa;CACd,CAAC,CAAA;AAGF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAA;AAG7F,gGAAgG;AAChG,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAU,CAAA;AAEvF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,QAAQ,CAAC;IAC1C,SAAS;IACT,OAAO;IACP,aAAa;IACb,SAAS;IACT,UAAU;IACV,MAAM;CACP,CAAC,CAAA;AAGF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAA;AAG7F,iGAAiG;AACjG,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,SAAS;IACT,KAAK;IACL,UAAU;IACV,OAAO;IACP,QAAQ;IACR,OAAO;IACP,WAAW;CACH,CAAA;AACV,uGAAuG;AACvG,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,SAAS;IACT,KAAK;IACL,UAAU;IACV,OAAO;IACP,QAAQ;IACR,OAAO;CACC,CAAA;AAEV;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAA;AAG3F,qGAAqG;AACrG,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC;IAC1C,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IACrC,kBAAkB;CACnB,CAAC,CAAA;AAGF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,KAAK;IACL,KAAK;IACL,KAAK;IACL,QAAQ;IACR,WAAW;IACX,KAAK;IACL,SAAS;IACT,UAAU;IACV,WAAW;IACX,OAAO;CACC,CAAA;AAGV;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;IACrB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,GAAG;QAAE,OAAO,KAAK,CAAA;IACtC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IAC3D,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAA;IACtD,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC;QAAE,OAAO,KAAK,CAAA;IAClE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AACxC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,qCAAqC;IACrC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IACvE,sDAAsD;IACtD,gBAAgB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACnE,mDAAmD;IACnD,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7E,4FAA4F;IAC5F,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAClE,0DAA0D;IAC1D,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC1C,2FAA2F;IAC3F,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D;;;;;OAKG;IACH,UAAU,EAAE,CAAC,CAAC,QAAQ,CACpB,CAAC,CAAC,IAAI,CACJ,CAAC,CAAC,MAAM,EAAE,EACV,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAChB,CAAC,CAAC,KAAK,CACL,aAAa,EACb,mHAAmH,CACpH,CACF,CACF;IACD,sFAAsF;IACtF,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAE/D,8EAA8E;IAC9E,sFAAsF;IACtF,uFAAuF;IACvF,gFAAgF;IAChF,EAAE;IACF,sEAAsE;IACtE,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,yEAAyE;IACzE,cAAc,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACjE,2EAA2E;IAC3E,sBAAsB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACzE,oDAAoD;IACpD,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAClE,4DAA4D;IAC5D,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAClE,4DAA4D;IAC5D,iBAAiB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE,iEAAiE;IACjE,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5D,4EAA4E;IAC5E,cAAc,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACjE,yFAAyF;IACzF,gBAAgB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACnE,iEAAiE;IACjE,gBAAgB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACnE,+DAA+D;IAC/D,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAE7D,6EAA6E;IAC7E;;;;OAIG;IACH,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE;;;;;;OAMG;IACH,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IACjE,2FAA2F;IAC3F,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAE9D,6EAA6E;IAC7E;;;;;;;;;;OAUG;IACH,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC;CAChD,CAAC,CAAA;AAwBF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAA0D;IACpF,GAAG,EAAE;QACH,EAAE,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,EAAE;QACvC,EAAE,GAAG,EAAE,gBAAgB,EAAE,SAAS,EAAE,IAAI,EAAE;KAC3C;IACD,GAAG,EAAE;QACH,EAAE,GAAG,EAAE,wBAAwB,EAAE,SAAS,EAAE,IAAI,EAAE;QAClD,EAAE,GAAG,EAAE,iBAAiB,EAAE,SAAS,EAAE,IAAI,EAAE;KAC5C;IACD,GAAG,EAAE;QACH,EAAE,GAAG,EAAE,iBAAiB,EAAE,SAAS,EAAE,IAAI,EAAE;QAC3C,EAAE,GAAG,EAAE,mBAAmB,EAAE,SAAS,EAAE,IAAI,EAAE;KAC9C;IACD,OAAO,EAAE;QACP,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE;QACrC,EAAE,GAAG,EAAE,gBAAgB,EAAE,SAAS,EAAE,IAAI,EAAE;KAC3C;IACD,QAAQ,EAAE;QACR,EAAE,GAAG,EAAE,kBAAkB,EAAE,SAAS,EAAE,KAAK,EAAE;QAC7C,EAAE,GAAG,EAAE,kBAAkB,EAAE,SAAS,EAAE,IAAI,EAAE;KAC7C;IACD,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;CAC9C,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAA;AAG9F,qEAAqE;AACrE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;AAGjE;;;;;;;;GAQG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAA2B;IACjE,OAAO,CAAC,CAAC,IAAI,CACX,CAAC,CAAC,MAAM,EAAE,EACV,CAAC,CAAC,IAAI,EAAE,EACR,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EACd,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,EACf,CAAC,CAAC,KAAK,CAAC,sBAAsB,EAAE,4BAA4B,CAAC,EAC7D,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAC/D,CAAA;AACH,CAAC;AAED,8EAA8E;AAC9E,mFAAmF;AACnF,sFAAsF;AACtF,+EAA+E;AAC/E,0FAA0F;AAC1F,wFAAwF;AACxF,+FAA+F;AAC/F,8EAA8E;AAE9E,4DAA4D;AAC5D,MAAM,CAAC,MAAM,4BAA4B,GAAG,gBAAgB,CAAA;AAC5D,gEAAgE;AAChE,MAAM,CAAC,MAAM,gCAAgC,GAAG,oBAAoB,CAAA;AACpE,uFAAuF;AACvF,MAAM,CAAC,MAAM,4BAA4B,GAAG,iBAAiB,CAAA;AAE7D,mGAAmG;AACnG,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,8FAA8F;IAC9F,MAAM,EAAE,CAAC,CAAC,IAAI,CACZ,CAAC,CAAC,MAAM,EAAE,EACV,CAAC,CAAC,IAAI,EAAE,EACR,CAAC,CAAC,KAAK,CAAC,cAAc,EAAE,4BAA4B,CAAC,EACrD,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EACd,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAChB;IACD,kGAAkG;IAClG,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3E;;;;;;;OAOG;IACH,OAAO,EAAE,CAAC,CAAC,QAAQ,CACjB,CAAC,CAAC,IAAI,CACJ,CAAC,CAAC,MAAM,EAAE,EACV,CAAC,CAAC,IAAI,EAAE,EACR,CAAC,CAAC,KAAK,CAAC,8BAA8B,EAAE,kCAAkC,CAAC,EAC3E,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EACd,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CACjB,CACF;CACF,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;IACb,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;CACd,CAAC,CAAA;AAGF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;CACrC,CAAC,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import * as v from 'valibot';
2
2
  /** Which parked decision a `publicDecision` entry describes. */
3
- export declare const publicDecisionKindSchema: v.PicklistSchema<["requirements-review", "fork", "judge"], undefined>;
3
+ export declare const publicDecisionKindSchema: v.PicklistSchema<["requirements-review", "fork", "judge", "input-gate"], undefined>;
4
4
  export type PublicDecisionKind = v.InferOutput<typeof publicDecisionKindSchema>;
5
5
  /**
6
6
  * One reviewer finding as exposed externally — the question, how serious it is, and where it
@@ -126,6 +126,33 @@ export declare const publicJudgeDecisionSchema: v.ObjectSchema<{
126
126
  readonly maxBounces: v.NumberSchema<undefined>;
127
127
  }, undefined>;
128
128
  export type PublicJudgeDecision = v.InferOutput<typeof publicJudgeDecisionSchema>;
129
+ /**
130
+ * A run parked on the PRE-DISPATCH INPUT GATE as exposed externally: the task states nothing an
131
+ * agent could act on, and the run stopped before its first dispatch having spent nothing.
132
+ *
133
+ * This one is exposed for a reason the other three do not have. The gate parks on the shape of
134
+ * the TASK rather than the shape of the pipeline, so it can hold ANY public run, including one
135
+ * whose pipeline carries no park at all; a caller filing title-only tasks would otherwise watch
136
+ * them stop with `GET .../decisions` reporting `parked: true` and nothing to answer, and
137
+ * `POST /api/v1/jobs/:id/cancel` as the only way out. The findings are the same closed codes the
138
+ * SPA renders, so an integration can map them to its own copy or hand them back to whoever filed
139
+ * the ticket.
140
+ */
141
+ export declare const publicInputGateDecisionSchema: v.ObjectSchema<{
142
+ readonly kind: v.LiteralSchema<"input-gate", undefined>;
143
+ /** The disposition; only `blocked` accepts an answer. */
144
+ readonly status: v.PicklistSchema<["off", "not_applicable", "passed", "blocked", "overridden"], undefined>;
145
+ /** The workspace mode the evaluation ran under, so a verdict explains its own severities. */
146
+ readonly mode: v.PicklistSchema<["standard", "advisory", "off"], undefined>;
147
+ /** Every finding, blocking and advisory alike, in a stable order. */
148
+ readonly issues: v.ArraySchema<v.ObjectSchema<{
149
+ readonly code: v.PicklistSchema<readonly ["description_missing", "description_placeholder", "description_thin", "reproduction_missing", "review_target_missing", "success_criteria_missing"], undefined>;
150
+ readonly severity: v.PicklistSchema<["blocking", "advisory"], undefined>;
151
+ }, undefined>, undefined>;
152
+ /** Epoch ms of the evaluation that produced this verdict. */
153
+ readonly checkedAt: v.NumberSchema<undefined>;
154
+ }, undefined>;
155
+ export type PublicInputGateDecision = v.InferOutput<typeof publicInputGateDecisionSchema>;
129
156
  export declare const publicDecisionSchema: v.VariantSchema<"kind", [v.ObjectSchema<{
130
157
  readonly kind: v.LiteralSchema<"requirements-review", undefined>;
131
158
  readonly reviewId: v.StringSchema<undefined>;
@@ -197,6 +224,19 @@ export declare const publicDecisionSchema: v.VariantSchema<"kind", [v.ObjectSche
197
224
  /** Rework rounds spent and the ceiling, so a caller knows whether `bounce` is the last word. */
198
225
  readonly bounces: v.NumberSchema<undefined>;
199
226
  readonly maxBounces: v.NumberSchema<undefined>;
227
+ }, undefined>, v.ObjectSchema<{
228
+ readonly kind: v.LiteralSchema<"input-gate", undefined>;
229
+ /** The disposition; only `blocked` accepts an answer. */
230
+ readonly status: v.PicklistSchema<["off", "not_applicable", "passed", "blocked", "overridden"], undefined>;
231
+ /** The workspace mode the evaluation ran under, so a verdict explains its own severities. */
232
+ readonly mode: v.PicklistSchema<["standard", "advisory", "off"], undefined>;
233
+ /** Every finding, blocking and advisory alike, in a stable order. */
234
+ readonly issues: v.ArraySchema<v.ObjectSchema<{
235
+ readonly code: v.PicklistSchema<readonly ["description_missing", "description_placeholder", "description_thin", "reproduction_missing", "review_target_missing", "success_criteria_missing"], undefined>;
236
+ readonly severity: v.PicklistSchema<["blocking", "advisory"], undefined>;
237
+ }, undefined>, undefined>;
238
+ /** Epoch ms of the evaluation that produced this verdict. */
239
+ readonly checkedAt: v.NumberSchema<undefined>;
200
240
  }, undefined>], undefined>;
201
241
  export type PublicDecision = v.InferOutput<typeof publicDecisionSchema>;
202
242
  /**
@@ -282,6 +322,19 @@ export declare const publicDecisionListSchema: v.ObjectSchema<{
282
322
  /** Rework rounds spent and the ceiling, so a caller knows whether `bounce` is the last word. */
283
323
  readonly bounces: v.NumberSchema<undefined>;
284
324
  readonly maxBounces: v.NumberSchema<undefined>;
325
+ }, undefined>, v.ObjectSchema<{
326
+ readonly kind: v.LiteralSchema<"input-gate", undefined>;
327
+ /** The disposition; only `blocked` accepts an answer. */
328
+ readonly status: v.PicklistSchema<["off", "not_applicable", "passed", "blocked", "overridden"], undefined>;
329
+ /** The workspace mode the evaluation ran under, so a verdict explains its own severities. */
330
+ readonly mode: v.PicklistSchema<["standard", "advisory", "off"], undefined>;
331
+ /** Every finding, blocking and advisory alike, in a stable order. */
332
+ readonly issues: v.ArraySchema<v.ObjectSchema<{
333
+ readonly code: v.PicklistSchema<readonly ["description_missing", "description_placeholder", "description_thin", "reproduction_missing", "review_target_missing", "success_criteria_missing"], undefined>;
334
+ readonly severity: v.PicklistSchema<["blocking", "advisory"], undefined>;
335
+ }, undefined>, undefined>;
336
+ /** Epoch ms of the evaluation that produced this verdict. */
337
+ readonly checkedAt: v.NumberSchema<undefined>;
285
338
  }, undefined>], undefined>, undefined>;
286
339
  }, undefined>;
287
340
  export type PublicDecisionList = v.InferOutput<typeof publicDecisionListSchema>;
@@ -344,4 +397,15 @@ export declare const publicResolveJudgeSchema: v.ObjectSchema<{
344
397
  readonly feedback: v.OptionalSchema<v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 4000, undefined>]>, undefined>, undefined>;
345
398
  }, undefined>;
346
399
  export type PublicResolveJudgeInput = v.InferOutput<typeof publicResolveJudgeSchema>;
400
+ /**
401
+ * Resolve a run parked on the PRE-DISPATCH INPUT GATE from a headless caller. Identical to the
402
+ * SPA's {@link resolveInputGateSchema} — both surfaces drive the SAME service method, so there
403
+ * is nothing to narrow: `recheck` re-evaluates the task as it now stands (which is what actually
404
+ * clears the park, so an integration fixes the task over `PATCH /api/v1/tasks/:taskId` first),
405
+ * and `proceed` waives the findings and records who did it.
406
+ */
407
+ export declare const publicResolveInputGateSchema: v.ObjectSchema<{
408
+ readonly choice: v.PicklistSchema<["recheck", "proceed"], undefined>;
409
+ }, undefined>;
410
+ export type PublicResolveInputGateInput = v.InferOutput<typeof publicResolveInputGateSchema>;
347
411
  //# sourceMappingURL=public-decisions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"public-decisions.d.ts","sourceRoot":"","sources":["../src/public-decisions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"public-decisions.d.ts","sourceRoot":"","sources":["../src/public-decisions.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import * as v from 'valibot';
2
2
  import { forkDecisionStatusSchema, forkOptionSchema } from './forkDecision.js';
3
+ import { inputGateIssueSchema, inputGateModeSchema, inputGateStatusSchema, resolveInputGateSchema, } from './input-gate.js';
3
4
  import { judgeStatusSchema, judgeVerdictSchema, resolveJudgeSchema } from './judge.js';
4
5
  import { publicRunStatusSchema } from './public-api.js';
5
6
  import { requirementReviewStatusSchema, reviewItemCategorySchema, reviewItemSeveritySchema, reviewItemStatusSchema, } from './requirements.js';
@@ -12,11 +13,12 @@ import { requirementReviewStatusSchema, reviewItemCategorySchema, reviewItemSeve
12
13
  // the SPA, so a headless (`/api/v1`) run could not include clarification at all — the public
13
14
  // surface refused any pipeline that could park.
14
15
  //
15
- // These resources are the external counterpart of that loop. Two decision kinds are exposed today:
16
- // the requirements review (findings + the iteration loop) and the implementation-fork choice. Both
17
- // are deliberately SMALL projections of the internal entities, following the `publicTask` /
18
- // `publicService` pattern: a caller sees the findings and their stable ids, never the engine's
19
- // step/approval internals, the recommendation machinery, or the reviewer's model plumbing.
16
+ // These resources are the external counterpart of that loop. Four decision kinds are exposed
17
+ // today: the requirements review (findings + the iteration loop), the implementation-fork choice,
18
+ // a parked judge verdict, and the pre-dispatch input gate. Each is deliberately a SMALL projection of
19
+ // the internal entity, following the `publicTask` / `publicService` pattern: a caller sees the
20
+ // findings and their stable ids, never the engine's step/approval internals, the recommendation
21
+ // machinery, or the reviewer's model plumbing.
20
22
  //
21
23
  // Answering rides the SAME service methods the SPA controllers call, so the park's CAS/approval-id
22
24
  // arbitration and the task's merge-preset knobs (iteration cap, tolerated severity) apply
@@ -24,7 +26,12 @@ import { requirementReviewStatusSchema, reviewItemCategorySchema, reviewItemSeve
24
26
  // `docs/initiatives/headless-clarification-loop.md`.
25
27
  // ---------------------------------------------------------------------------
26
28
  /** Which parked decision a `publicDecision` entry describes. */
27
- export const publicDecisionKindSchema = v.picklist(['requirements-review', 'fork', 'judge']);
29
+ export const publicDecisionKindSchema = v.picklist([
30
+ 'requirements-review',
31
+ 'fork',
32
+ 'judge',
33
+ 'input-gate',
34
+ ]);
28
35
  /**
29
36
  * One reviewer finding as exposed externally — the question, how serious it is, and where it
30
37
  * stands. `itemId` is the STABLE anchor a reply addresses (and, in slice 2, the id rendered into
@@ -114,10 +121,34 @@ export const publicJudgeDecisionSchema = v.object({
114
121
  bounces: v.number(),
115
122
  maxBounces: v.number(),
116
123
  });
124
+ /**
125
+ * A run parked on the PRE-DISPATCH INPUT GATE as exposed externally: the task states nothing an
126
+ * agent could act on, and the run stopped before its first dispatch having spent nothing.
127
+ *
128
+ * This one is exposed for a reason the other three do not have. The gate parks on the shape of
129
+ * the TASK rather than the shape of the pipeline, so it can hold ANY public run, including one
130
+ * whose pipeline carries no park at all; a caller filing title-only tasks would otherwise watch
131
+ * them stop with `GET .../decisions` reporting `parked: true` and nothing to answer, and
132
+ * `POST /api/v1/jobs/:id/cancel` as the only way out. The findings are the same closed codes the
133
+ * SPA renders, so an integration can map them to its own copy or hand them back to whoever filed
134
+ * the ticket.
135
+ */
136
+ export const publicInputGateDecisionSchema = v.object({
137
+ kind: v.literal('input-gate'),
138
+ /** The disposition; only `blocked` accepts an answer. */
139
+ status: inputGateStatusSchema,
140
+ /** The workspace mode the evaluation ran under, so a verdict explains its own severities. */
141
+ mode: inputGateModeSchema,
142
+ /** Every finding, blocking and advisory alike, in a stable order. */
143
+ issues: v.array(inputGateIssueSchema),
144
+ /** Epoch ms of the evaluation that produced this verdict. */
145
+ checkedAt: v.number(),
146
+ });
117
147
  export const publicDecisionSchema = v.variant('kind', [
118
148
  publicRequirementsDecisionSchema,
119
149
  publicForkDecisionSchema,
120
150
  publicJudgeDecisionSchema,
151
+ publicInputGateDecisionSchema,
121
152
  ]);
122
153
  /**
123
154
  * A run's currently-parked decisions. `parked` is the single flag a caller polls or reacts to:
@@ -180,4 +211,12 @@ export const publicChooseForkSchema = v.pipe(v.object({
180
211
  * nothing to narrow: `proceed` / `bounce` / `stop` mean exactly the same thing either way.
181
212
  */
182
213
  export const publicResolveJudgeSchema = resolveJudgeSchema;
214
+ /**
215
+ * Resolve a run parked on the PRE-DISPATCH INPUT GATE from a headless caller. Identical to the
216
+ * SPA's {@link resolveInputGateSchema} — both surfaces drive the SAME service method, so there
217
+ * is nothing to narrow: `recheck` re-evaluates the task as it now stands (which is what actually
218
+ * clears the park, so an integration fixes the task over `PATCH /api/v1/tasks/:taskId` first),
219
+ * and `proceed` waives the findings and records who did it.
220
+ */
221
+ export const publicResolveInputGateSchema = resolveInputGateSchema;
183
222
  //# sourceMappingURL=public-decisions.js.map