@cat-factory/contracts 0.242.0 → 0.244.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +7 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/merge.d.ts +299 -1
- package/dist/merge.d.ts.map +1 -1
- package/dist/merge.js +159 -1
- package/dist/merge.js.map +1 -1
- package/dist/public-decisions.d.ts +282 -9
- package/dist/public-decisions.d.ts.map +1 -1
- package/dist/public-decisions.js +158 -8
- package/dist/public-decisions.js.map +1 -1
- package/dist/risk-policy-selection.d.ts +80 -0
- package/dist/risk-policy-selection.d.ts.map +1 -0
- package/dist/risk-policy-selection.js +71 -0
- package/dist/risk-policy-selection.js.map +1 -0
- package/dist/routes/merge.d.ts +228 -0
- package/dist/routes/merge.d.ts.map +1 -1
- package/dist/routes/public-decisions.d.ts +2658 -3
- package/dist/routes/public-decisions.d.ts.map +1 -1
- package/dist/routes/public-decisions.js +89 -1
- package/dist/routes/public-decisions.js.map +1 -1
- package/dist/routes/workspaces.d.ts +76 -0
- package/dist/routes/workspaces.d.ts.map +1 -1
- package/dist/snapshot.d.ts +38 -0
- package/dist/snapshot.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/merge.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as v from 'valibot';
|
|
2
2
|
import { stepGatingSchema } from './consensus.js';
|
|
3
|
-
import { changeClassSchema, RULEABLE_CHANGE_CLASSES } from './mergeTrackRecord.js';
|
|
3
|
+
import { changeClassSchema, RULEABLE_CHANGE_CLASSES, } from './mergeTrackRecord.js';
|
|
4
4
|
import { DEFAULT_JUDGE_MAX_BOUNCES, DEFAULT_JUDGE_MIN_SCORE } from './judge.js';
|
|
5
5
|
import { WORKSPACE_ROLES, workspaceRoleSchema } from './workspace-members.js';
|
|
6
6
|
// ---------------------------------------------------------------------------
|
|
@@ -101,6 +101,40 @@ v.strictObject(Object.fromEntries(WORKSPACE_ROLES.map((r) => [r, mergeClassRules
|
|
|
101
101
|
* cannot start runs at all (`viewer`, which holds no `runs.execute`) may be listed without effect.
|
|
102
102
|
*/
|
|
103
103
|
export const dryRunRolesSchema = v.array(workspaceRoleSchema);
|
|
104
|
+
/** A picklist over the classes a rule (or an allowlist entry) may be authored for. */
|
|
105
|
+
const ruleableChangeClassSchema = v.picklist(RULEABLE_CHANGE_CLASSES);
|
|
106
|
+
/**
|
|
107
|
+
* The change classes a preset will LAND at all for a given role: a partial map from
|
|
108
|
+
* {@link workspaceRoleSchema} to the list of classes that role's runs may submit.
|
|
109
|
+
*
|
|
110
|
+
* This is the third role-scoped setting, and it answers a question neither of its siblings can.
|
|
111
|
+
* `classRulesByRole` with `never` routes a class to a human, but the human it routes to may be
|
|
112
|
+
* the initiator themselves: the review card carries a merge button and the RBAC write floor is
|
|
113
|
+
* `member`, so a member's run can raise its own card and land on the next tap. `dryRunRoles`
|
|
114
|
+
* closes that by refusing both exits, but only for EVERY class at once. Between them sits the
|
|
115
|
+
* thing a workspace most often wants to say: a product manager may land copy and dependency
|
|
116
|
+
* bumps on this service, and may not land source, however good the scores look.
|
|
117
|
+
*
|
|
118
|
+
* Three readings define it, and each is deliberate:
|
|
119
|
+
*
|
|
120
|
+
* - **An ALLOWLIST, never a denylist.** A class nobody thought about is OUTSIDE the list, so a
|
|
121
|
+
* class added to the vocabulary in a later release is refused for a scoped role rather than
|
|
122
|
+
* silently landed by it. Same safety property as {@link narrowMergeClassRule}: authoring one
|
|
123
|
+
* can subtract capability, never add it.
|
|
124
|
+
* - **Absent means UNRESTRICTED, not empty.** Silence is not an empty allowlist, exactly as an
|
|
125
|
+
* absent class is not a `thresholds` rule in {@link classRulesByRoleSchema}. Only a role
|
|
126
|
+
* somebody wrote an entry for is scoped, so `{}` is the identity the wire contract says it is
|
|
127
|
+
* (and an EMPTY array is a real, different policy: that role lands nothing).
|
|
128
|
+
* - **`unknown` is INERT.** An unreadable diff must not hold back a run that would otherwise
|
|
129
|
+
* have landed, the same reading `resolveMergeClassRule` takes: a VCS outage cannot change
|
|
130
|
+
* policy. This is the OPPOSITE direction from the first reading, and deliberately so: a class
|
|
131
|
+
* we have never heard of is a policy gap, while a class we could not READ is an outage, and
|
|
132
|
+
* only one of those is evidence about the change.
|
|
133
|
+
*/
|
|
134
|
+
export const submissionClassesByRoleSchema = v.partial(
|
|
135
|
+
// STRICT for the same reason both rule maps are: a caller who thinks they authored an
|
|
136
|
+
// allowlist must not be told it worked when the role name was a typo.
|
|
137
|
+
v.strictObject(Object.fromEntries(WORKSPACE_ROLES.map((r) => [r, v.array(ruleableChangeClassSchema)]))));
|
|
104
138
|
/**
|
|
105
139
|
* How much review a rule DEMANDS, higher is stricter. The ordering is the point of the scale:
|
|
106
140
|
* `always` merges with nothing consulted, `thresholds` merges only within the score ceilings, and
|
|
@@ -134,6 +168,64 @@ const MERGE_CLASS_RULE_STRICTNESS = {
|
|
|
134
168
|
export function narrowMergeClassRule(base, role) {
|
|
135
169
|
return MERGE_CLASS_RULE_STRICTNESS[role] > MERGE_CLASS_RULE_STRICTNESS[base] ? role : base;
|
|
136
170
|
}
|
|
171
|
+
/**
|
|
172
|
+
* Whether `next` demands LESS review than `held`, over the same ordering
|
|
173
|
+
* {@link narrowMergeClassRule} composes on. Derived from that one function rather than from a
|
|
174
|
+
* second read of the strictness table, so the rules can never be ordered one way for narrowing
|
|
175
|
+
* and another way for the comparison that refuses a relaxation.
|
|
176
|
+
*/
|
|
177
|
+
export function mergeClassRuleRelaxes(held, next) {
|
|
178
|
+
return next !== held && narrowMergeClassRule(next, held) === held;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* The rule a preset applies to a given change class: the explicit entry when there is one, else
|
|
182
|
+
* `thresholds` (so an empty/absent rule map behaves exactly as it did before per-class rules).
|
|
183
|
+
*
|
|
184
|
+
* `unknown` ALWAYS resolves to `thresholds` — no rule may match it. This is the invariant that
|
|
185
|
+
* keeps a classification failure inert: a transient VCS outage falls back to the score
|
|
186
|
+
* comparison instead of silently adopting a widened (or tightened) policy.
|
|
187
|
+
*/
|
|
188
|
+
export function resolveMergeClassRule(rules, changeClass) {
|
|
189
|
+
if (changeClass === 'unknown')
|
|
190
|
+
return 'thresholds';
|
|
191
|
+
return rules?.[changeClass] ?? 'thresholds';
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Resolve the per-class rule that governs one run: the preset's base rule for the run's change
|
|
195
|
+
* class, narrowed by the entry (if any) its initiator's ROLE carries.
|
|
196
|
+
*
|
|
197
|
+
* Two absences pass straight through to the base rule, deliberately and for the same reason:
|
|
198
|
+
* an unattributed run (no pinned role — a schedule fire, a public-API start, auth-disabled dev)
|
|
199
|
+
* and a role with no authored entry. Neither is evidence about how much review the work needs,
|
|
200
|
+
* and inventing a tier for the first would either hand it the preset's widest rules or sandbox
|
|
201
|
+
* every scheduled run in the deployment the day someone first authors a role entry.
|
|
202
|
+
*
|
|
203
|
+
* `unknown` remains inert through both layers: {@link resolveMergeClassRule} already forces it to
|
|
204
|
+
* `thresholds`, and narrowing `thresholds` by a rule authored for some OTHER class cannot reach
|
|
205
|
+
* it, so a diff we could not read still falls back to the score comparison whoever started it.
|
|
206
|
+
*
|
|
207
|
+
* It lives here rather than in kernel for the reason {@link narrowMergeClassRule} does, and it
|
|
208
|
+
* moved here the day the SPA acquired a second question that needs the same answer: which presets
|
|
209
|
+
* a task may be re-pointed at (`refuseRiskPolicySelection`). The picker has to agree with the
|
|
210
|
+
* engine about what a role's entry actually costs that role, and a rule the SPA cannot import is
|
|
211
|
+
* a rule the SPA reimplements.
|
|
212
|
+
*/
|
|
213
|
+
export function resolveRoleScopedMergeClassRule(input) {
|
|
214
|
+
const base = resolveMergeClassRule(input.rules, input.changeClass);
|
|
215
|
+
if (!input.role || input.changeClass === 'unknown') {
|
|
216
|
+
return { base, effective: base, narrowedByRole: false };
|
|
217
|
+
}
|
|
218
|
+
// Read the role's entry as an OPTIONAL lookup, NOT through `resolveMergeClassRule`. That helper
|
|
219
|
+
// substitutes `thresholds` for an absent class, which is right when it IS the policy and wrong
|
|
220
|
+
// here: a role that authored nothing has said nothing, and folding its silence in as
|
|
221
|
+
// `thresholds` would narrow every `always` in the base map the moment a preset gained its first
|
|
222
|
+
// role entry — for the roles that entry is not even about. Absent is not a rule.
|
|
223
|
+
const roleRule = input.byRole?.[input.role]?.[input.changeClass];
|
|
224
|
+
if (!roleRule)
|
|
225
|
+
return { base, effective: base, narrowedByRole: false };
|
|
226
|
+
const effective = narrowMergeClassRule(base, roleRule);
|
|
227
|
+
return { base, effective, narrowedByRole: effective !== base };
|
|
228
|
+
}
|
|
137
229
|
/**
|
|
138
230
|
* Whether a preset's {@link dryRunRolesSchema} sandboxes a run started under `role`.
|
|
139
231
|
*
|
|
@@ -146,6 +238,42 @@ export function narrowMergeClassRule(base, role) {
|
|
|
146
238
|
export function dryRunForcedForRole(dryRunRoles, role) {
|
|
147
239
|
return !!role && !!dryRunRoles?.includes(role);
|
|
148
240
|
}
|
|
241
|
+
/**
|
|
242
|
+
* The allowlist that governs one run, or `undefined` when nothing does.
|
|
243
|
+
*
|
|
244
|
+
* Kept apart from {@link submissionAllowedForRole} because the two questions differ: "is this run
|
|
245
|
+
* scoped at all" decides whether the merge path owes a classification (one VCS call), and only
|
|
246
|
+
* then does "may it land THIS class" have anything to compare. Reading the boolean first and the
|
|
247
|
+
* verdict second is what keeps an unscoped preset paying for neither.
|
|
248
|
+
*/
|
|
249
|
+
export function submissionAllowlistForRole(byRole, role) {
|
|
250
|
+
// A run with no pinned role matches no entry, exactly as `dryRunForcedForRole` reads one: a
|
|
251
|
+
// schedule fire / public-API start / auth-disabled dev is not a tier, and treating it as one
|
|
252
|
+
// would scope every unattributed run in a deployment the day somebody first scopes a role.
|
|
253
|
+
if (!role)
|
|
254
|
+
return undefined;
|
|
255
|
+
return byRole?.[role];
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Whether a preset lets a run started by `role` LAND a change of `changeClass`.
|
|
259
|
+
*
|
|
260
|
+
* Every absence answers `true`, and each for its own reason: no pinned role matches no entry, a
|
|
261
|
+
* role with no authored entry is unrestricted, and an `unknown` class is an unreadable diff
|
|
262
|
+
* rather than evidence about the change. Only a role that HAS an allowlist, on a diff that
|
|
263
|
+
* classified, can be refused, and then the list is exhaustive, so a class outside it is refused
|
|
264
|
+
* whether the operator excluded it on purpose or the vocabulary gained it after they wrote the
|
|
265
|
+
* policy.
|
|
266
|
+
*
|
|
267
|
+
* It lives in contracts, beside the map it reads, because the SPA has to state the same verdict:
|
|
268
|
+
* a merge control that offered to land a change the engine will refuse would be advertising a
|
|
269
|
+
* capability the person does not have.
|
|
270
|
+
*/
|
|
271
|
+
export function submissionAllowedForRole(byRole, role, changeClass) {
|
|
272
|
+
if (changeClass === 'unknown')
|
|
273
|
+
return true;
|
|
274
|
+
const allowed = submissionAllowlistForRole(byRole, role);
|
|
275
|
+
return !allowed || allowed.includes(changeClass);
|
|
276
|
+
}
|
|
149
277
|
export const mergeAssessmentSchema = v.object({
|
|
150
278
|
/** How intricate the change is (size, coupling, subtlety). */
|
|
151
279
|
complexity: v.pipe(v.number(), v.minValue(0), v.maxValue(1)),
|
|
@@ -262,6 +390,14 @@ export const riskPolicySchema = v.object({
|
|
|
262
390
|
* and the PR opens, but nothing merges. Empty on the built-ins.
|
|
263
391
|
*/
|
|
264
392
|
dryRunRoles: dryRunRolesSchema,
|
|
393
|
+
/**
|
|
394
|
+
* Per-ROLE allowlist of the change classes this preset will land at all
|
|
395
|
+
* ({@link submissionClassesByRoleSchema}). Orthogonal to `classRulesByRole`, and both apply: a
|
|
396
|
+
* class may be `always` under the role's class rules and still outside its allowlist, and the
|
|
397
|
+
* allowlist wins, because it bars landing rather than deciding how much review landing takes.
|
|
398
|
+
* A role with no entry is unrestricted, so `{}` is the identity. Empty on the built-ins.
|
|
399
|
+
*/
|
|
400
|
+
submissionClassesByRole: submissionClassesByRoleSchema,
|
|
265
401
|
/** The workspace's fallback preset, used by tasks that pick none. Exactly one is true. */
|
|
266
402
|
isDefault: v.boolean(),
|
|
267
403
|
/**
|
|
@@ -307,6 +443,8 @@ export const createRiskPolicySchema = v.object({
|
|
|
307
443
|
classRulesByRole: v.optional(classRulesByRoleSchema, {}),
|
|
308
444
|
/** Roles whose runs are forced into dry-run mode; absent ⇒ nobody is sandboxed. */
|
|
309
445
|
dryRunRoles: v.optional(dryRunRolesSchema, []),
|
|
446
|
+
/** Per-role allowlist of landable change classes; absent ⇒ every role is unrestricted. */
|
|
447
|
+
submissionClassesByRole: v.optional(submissionClassesByRoleSchema, {}),
|
|
310
448
|
/** Make this the workspace default (demotes the previous default). */
|
|
311
449
|
isDefault: v.optional(v.boolean(), false),
|
|
312
450
|
});
|
|
@@ -333,6 +471,8 @@ export const updateRiskPolicySchema = v.object({
|
|
|
333
471
|
classRulesByRole: v.optional(classRulesByRoleSchema),
|
|
334
472
|
/** Replaces the whole list, so un-sandboxing a role is a plain omission. */
|
|
335
473
|
dryRunRoles: v.optional(dryRunRolesSchema),
|
|
474
|
+
/** Replaces the whole map, so un-scoping a role is a plain omission (never an empty array). */
|
|
475
|
+
submissionClassesByRole: v.optional(submissionClassesByRoleSchema),
|
|
336
476
|
isDefault: v.optional(v.boolean()),
|
|
337
477
|
});
|
|
338
478
|
/** Parse-or-throw an assessment payload an agent returned (the engine validates it). */
|
|
@@ -378,6 +518,17 @@ export const mergeDecisionThresholdsSchema = v.object({
|
|
|
378
518
|
* someone else".
|
|
379
519
|
*/
|
|
380
520
|
roleRule: v.optional(mergeClassRuleSchema),
|
|
521
|
+
/**
|
|
522
|
+
* The change classes the initiator's role may land at all, recorded whenever that role carried
|
|
523
|
+
* a submission allowlist, not only when the allowlist is what held the PR back.
|
|
524
|
+
*
|
|
525
|
+
* Present-means-scoped is the useful reading here (the opposite of `roleRule` above, which is
|
|
526
|
+
* recorded only when it changed the outcome): an allowlist that PERMITTED this class is the
|
|
527
|
+
* fact that explains why an otherwise identical PR on another class will not land, and a
|
|
528
|
+
* banner that mentioned the scope only on the refusal would make the permission look like an
|
|
529
|
+
* absence of policy.
|
|
530
|
+
*/
|
|
531
|
+
submissionClasses: v.optional(v.array(ruleableChangeClassSchema)),
|
|
381
532
|
});
|
|
382
533
|
export const mergeDecisionSchema = v.object({
|
|
383
534
|
/** What the engine did: merged the PR for real, or left it open for a human. */
|
|
@@ -405,6 +556,12 @@ export const mergeDecisionSchema = v.object({
|
|
|
405
556
|
* `class_requires_review` because the two need opposite fixes: one is a policy about the
|
|
406
557
|
* KIND of change (edit the class rule), the other about WHO started it (a teammate on a
|
|
407
558
|
* higher tier can merge this PR as it stands).
|
|
559
|
+
* - `submission_not_allowed`: review; the initiator's role carries a submission allowlist and
|
|
560
|
+
* this run's change class is outside it, so the platform will not land the work whatever the
|
|
561
|
+
* scores or the class rules say. Kept apart from `role_requires_review` because the remedies
|
|
562
|
+
* differ in kind: that one is satisfied by ANY reviewer merging the PR through this
|
|
563
|
+
* platform, while this one refuses the platform merge path outright (the PR is still a real
|
|
564
|
+
* PR, and someone with write access on the host can merge it there).
|
|
408
565
|
* - `dry_run`: review; the run was a DRY RUN, so no outcome of the assessment could have
|
|
409
566
|
* merged it. The master switch above every other reason, including `auto_merge_disabled`:
|
|
410
567
|
* a preset that would otherwise auto-merge must not report a dry run's PR as "held back by
|
|
@@ -421,6 +578,7 @@ export const mergeDecisionSchema = v.object({
|
|
|
421
578
|
'class_auto_merge',
|
|
422
579
|
'class_requires_review',
|
|
423
580
|
'role_requires_review',
|
|
581
|
+
'submission_not_allowed',
|
|
424
582
|
'dry_run',
|
|
425
583
|
]),
|
|
426
584
|
/** The merger's assessment (absent only when it produced no parseable one). */
|
package/dist/merge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../src/merge.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../src/merge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GAGxB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAC/E,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAsB,MAAM,wBAAwB,CAAA;AAEjG,8EAA8E;AAC9E,8EAA8E;AAC9E,iFAAiF;AACjF,iFAAiF;AACjF,iFAAiF;AACjF,iFAAiF;AACjF,+DAA+D;AAC/D,EAAE;AACF,8EAA8E;AAC9E,+EAA+E;AAC/E,gFAAgF;AAChF,kFAAkF;AAClF,qCAAqC;AACrC,8EAA8E;AAE9E;;;;GAIG;AACH;;;;GAIG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;AAG1F,+EAA+E;AAC/E,MAAM,CAAC,MAAM,wBAAwB,GAA4C;IAC/E,IAAI,EAAE,CAAC;IACP,GAAG,EAAE,CAAC;IACN,MAAM,EAAE,CAAC;IACT,IAAI,EAAE,CAAC;CACR,CAAA;AAED,8EAA8E;AAC9E,gFAAgF;AAChF,kFAAkF;AAClF,8EAA8E;AAC9E,mFAAmF;AACnF,6EAA6E;AAC7E,8EAA8E;AAE9E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,YAAY,EAAE,QAAQ,EAAE,OAAO,CAAU,CAAA;AAE3E,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAA;AAGjE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,OAAO;AAC5C,gGAAgG;AAChG,gGAAgG;AAChG,CAAC,CAAC,YAAY,CACZ,MAAM,CAAC,WAAW,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAE/E,CACF,CACF,CAAA;AAGD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,OAAO;AAC7C,6FAA6F;AAC7F,iEAAiE;AACjE,CAAC,CAAC,YAAY,CACZ,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAExE,CACF,CACF,CAAA;AAGD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;AAG7D,sFAAsF;AACtF,MAAM,yBAAyB,GAAG,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAA;AAErE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,OAAO;AACpD,sFAAsF;AACtF,sEAAsE;AACtE,CAAC,CAAC,YAAY,CACZ,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAKrF,CACF,CACF,CAAA;AAGD;;;;;;;;GAQG;AACH,MAAM,2BAA2B,GAAmC;IAClE,MAAM,EAAE,CAAC;IACT,UAAU,EAAE,CAAC;IACb,KAAK,EAAE,CAAC;CACT,CAAA;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAoB,EAAE,IAAoB;IAC7E,OAAO,2BAA2B,CAAC,IAAI,CAAC,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;AAC5F,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAoB,EAAE,IAAoB;IAC9E,OAAO,IAAI,KAAK,IAAI,IAAI,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,CAAA;AACnE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAyC,EACzC,WAAwB;IAExB,IAAI,WAAW,KAAK,SAAS;QAAE,OAAO,YAAY,CAAA;IAClD,OAAO,KAAK,EAAE,CAAC,WAAW,CAAC,IAAI,YAAY,CAAA;AAC7C,CAAC;AAgBD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,+BAA+B,CAAC,KAK/C;IACC,MAAM,IAAI,GAAG,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,CAAA;IAClE,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACnD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAA;IACzD,CAAC;IACD,gGAAgG;IAChG,+FAA+F;IAC/F,qFAAqF;IACrF,gGAAgG;IAChG,iFAAiF;IACjF,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IAChE,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAA;IACtE,MAAM,SAAS,GAAG,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IACtD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,KAAK,IAAI,EAAE,CAAA;AAChE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CACjC,WAAwD,EACxD,IAAsC;IAEtC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAA;AAChD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B,CACxC,MAAkD,EAClD,IAAsC;IAEtC,4FAA4F;IAC5F,6FAA6F;IAC7F,2FAA2F;IAC3F,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAA;IAC3B,OAAO,MAAM,EAAE,CAAC,IAAI,CAAC,CAAA;AACvB,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,wBAAwB,CACtC,MAAkD,EAClD,IAAsC,EACtC,WAAwB;IAExB,IAAI,WAAW,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA;IAC1C,MAAM,OAAO,GAAG,0BAA0B,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACxD,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;AAClD,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,8DAA8D;IAC9D,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5D,yEAAyE;IACzE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtD,+DAA+D;IAC/D,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxD,qFAAqF;IACrF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAA;AAGF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,4EAA4E;IAC5E,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC/D,sEAAsE;IACtE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACzD,wEAAwE;IACxE,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC3D,qFAAqF;IACrF,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC7D;;;;OAIG;IACH,wBAAwB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxE;;;;;;;OAOG;IACH,4BAA4B,EAAE,6BAA6B;IAC3D;;;;;;OAMG;IACH,0BAA0B,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC1E;;;OAGG;IACH,yBAAyB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACzE;;;;OAIG;IACH,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAClE;;;;;OAKG;IACH,uBAAuB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACvE;;;;;OAKG;IACH,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC/D;;;;OAIG;IACH,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC/D;;;;;OAKG;IACH,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE;IAC7B;;;;;;;;;OASG;IACH,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IACtD;;;;OAIG;IACH,UAAU,EAAE,qBAAqB;IACjC;;;;OAIG;IACH,gBAAgB,EAAE,sBAAsB;IACxC;;;OAGG;IACH,WAAW,EAAE,iBAAiB;IAC9B;;;;;;OAMG;IACH,uBAAuB,EAAE,6BAA6B;IACtD,0FAA0F;IAC1F,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB;;;;;OAKG;IACH,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC/B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAA;AAGF,8EAA8E;AAE9E,MAAM,gBAAgB,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,EAAE,CAAC,CAAC,CAAA;AACtF,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AACpE,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAA;AACrF,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAA;AACvF,MAAM,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;AAC3F,MAAM,qBAAqB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAA;AAC5F,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;AAC3F,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAA;AAEpF,0DAA0D;AAC1D,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,IAAI,EAAE,gBAAgB;IACtB,aAAa,EAAE,WAAW;IAC1B,OAAO,EAAE,WAAW;IACpB,SAAS,EAAE,WAAW;IACtB,aAAa,EAAE,cAAc;IAC7B,wBAAwB,EAAE,gBAAgB;IAC1C,4BAA4B,EAAE,6BAA6B;IAC3D,0BAA0B,EAAE,CAAC,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC3D,yBAAyB,EAAE,CAAC,CAAC,QAAQ,CAAC,mBAAmB,EAAE,EAAE,CAAC;IAC9D,kBAAkB,EAAE,CAAC,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC,CAAC;IACxD,uBAAuB,EAAE,CAAC,CAAC,QAAQ,CAAC,kBAAkB,EAAE,EAAE,CAAC;IAC3D,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,uBAAuB,CAAC;IAC/D,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,yBAAyB,CAAC;IACrE,mFAAmF;IACnF,gBAAgB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC;IAC/C,+FAA+F;IAC/F,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IACtD,uFAAuF;IACvF,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,qBAAqB,EAAE,EAAE,CAAC;IACjD,8FAA8F;IAC9F,gBAAgB,EAAE,CAAC,CAAC,QAAQ,CAAC,sBAAsB,EAAE,EAAE,CAAC;IACxD,mFAAmF;IACnF,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,iBAAiB,EAAE,EAAE,CAAC;IAC9C,0FAA0F;IAC1F,uBAAuB,EAAE,CAAC,CAAC,QAAQ,CAAC,6BAA6B,EAAE,EAAE,CAAC;IACtE,sEAAsE;IACtE,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC;CAC1C,CAAC,CAAA;AAGF,sEAAsE;AACtE,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAClC,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;IACtC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;IAChC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;IAClC,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;IACzC,wBAAwB,EAAE,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IACtD,4BAA4B,EAAE,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IACvE,0BAA0B,EAAE,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IACxD,yBAAyB,EAAE,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAC1D,kBAAkB,EAAE,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IACrD,uBAAuB,EAAE,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IACvD,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;IACtC,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;IAC1C,gBAAgB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACzC,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IACtD,yFAAyF;IACzF,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAC7C,4FAA4F;IAC5F,gBAAgB,EAAE,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IACpD,4EAA4E;IAC5E,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC1C,+FAA+F;IAC/F,uBAAuB,EAAE,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IAClE,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;CACnC,CAAC,CAAA;AAGF,wFAAwF;AACxF,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,OAAO,CAAC,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAA;AAC9C,CAAC;AAED,8EAA8E;AAC9E,gFAAgF;AAChF,oFAAoF;AACpF,mFAAmF;AACnF,sFAAsF;AACtF,6EAA6E;AAC7E,8EAA8E;AAE9E,yDAAyD;AACzD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAA;AAG3E,yFAAyF;AACzF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IACpD,4DAA4D;IAC5D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC/D,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACzD,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC3D,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE;IAC7B;;;;;OAKG;IACH,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IAC3C;;;;;;OAMG;IACH,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAC9C;;;;;OAKG;IACH,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IAC1C;;;;;;;;;OASG;IACH,iBAAiB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;CAClE,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,gFAAgF;IAChF,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;IACvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACH,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC;QACjB,mBAAmB;QACnB,qBAAqB;QACrB,qBAAqB;QACrB,cAAc;QACd,eAAe;QACf,cAAc;QACd,eAAe;QACf,kBAAkB;QAClB,uBAAuB;QACvB,sBAAsB;QACtB,wBAAwB;QACxB,SAAS;KACV,CAAC;IACF,+EAA+E;IAC/E,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAC7C,UAAU,EAAE,6BAA6B;IACzC,6FAA6F;IAC7F,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;IACtC;;;;;OAKG;IACH,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC;CAC3C,CAAC,CAAA"}
|
|
@@ -7,7 +7,7 @@ import * as v from 'valibot';
|
|
|
7
7
|
* route behind it is exactly the "refusal advertising a capability we do not have" defect that set
|
|
8
8
|
* builds. Add a member only together with its routes.
|
|
9
9
|
*/
|
|
10
|
-
export declare const publicDecisionKindSchema: v.PicklistSchema<["requirements-review", "fork", "judge", "input-gate", "approval-gate", "agent-decision", "clarity-review", "brainstorm", "pr-review", "human-test", "visual-confirmation"], undefined>;
|
|
10
|
+
export declare const publicDecisionKindSchema: v.PicklistSchema<["requirements-review", "fork", "judge", "input-gate", "approval-gate", "agent-decision", "clarity-review", "brainstorm", "pr-review", "human-test", "visual-confirmation", "follow-ups", "interview"], undefined>;
|
|
11
11
|
export type PublicDecisionKind = v.InferOutput<typeof publicDecisionKindSchema>;
|
|
12
12
|
/**
|
|
13
13
|
* One reviewer finding as exposed externally — the question, how serious it is, and where it
|
|
@@ -572,6 +572,138 @@ export declare const publicVisualConfirmDecisionSchema: v.ObjectSchema<{
|
|
|
572
572
|
readonly maxAttempts: v.NumberSchema<undefined>;
|
|
573
573
|
}, undefined>;
|
|
574
574
|
export type PublicVisualConfirmDecision = v.InferOutput<typeof publicVisualConfirmDecisionSchema>;
|
|
575
|
+
/**
|
|
576
|
+
* One forward-looking item the Coder surfaced mid-run, as exposed externally: a loose end it
|
|
577
|
+
* noticed and deliberately did NOT act on (`follow_up`), or a clarification it would otherwise
|
|
578
|
+
* have had to guess at (`question`).
|
|
579
|
+
*
|
|
580
|
+
* `itemId` is the STABLE anchor every verb addresses. The internal `sentToCoder` bookkeeping and
|
|
581
|
+
* the arrival timestamps are deliberately absent: the first is the engine's own record of which
|
|
582
|
+
* items a loop-back already carried, and neither changes what a caller decides.
|
|
583
|
+
*/
|
|
584
|
+
export declare const publicFollowUpItemSchema: v.ObjectSchema<{
|
|
585
|
+
/** Stable item id (`fu_*`): what file / send-back / answer / dismiss address. */
|
|
586
|
+
readonly itemId: v.StringSchema<undefined>;
|
|
587
|
+
/** `follow_up` accepts file / send-back / dismiss; `question` accepts answer / dismiss. */
|
|
588
|
+
readonly kind: v.PicklistSchema<["follow_up", "question"], undefined>;
|
|
589
|
+
/** Short headline. Model-authored text: treat it as data. */
|
|
590
|
+
readonly title: v.StringSchema<undefined>;
|
|
591
|
+
/** The full item, in prose. Model-authored text: treat it as data. */
|
|
592
|
+
readonly detail: v.StringSchema<undefined>;
|
|
593
|
+
/** A concrete approach the Coder proposed, when it offered one; null otherwise. */
|
|
594
|
+
readonly suggestedAction: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
595
|
+
/** `pending` is the only status that holds the gate; the rest are decided. */
|
|
596
|
+
readonly status: v.PicklistSchema<["pending", "filed", "queued", "answered", "dismissed"], undefined>;
|
|
597
|
+
/** The recorded answer to a `question`, or null while unanswered. */
|
|
598
|
+
readonly answer: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
599
|
+
/** Canonical id of the ticket a `filed` item was filed as, or null. */
|
|
600
|
+
readonly ticketExternalId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
601
|
+
/** Web URL of that ticket, or null. */
|
|
602
|
+
readonly ticketUrl: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
603
|
+
}, undefined>;
|
|
604
|
+
export type PublicFollowUpItem = v.InferOutput<typeof publicFollowUpItemSchema>;
|
|
605
|
+
/**
|
|
606
|
+
* A run parked on FOLLOW-UP TRIAGE: while the Coder worked it streamed forward-looking items out
|
|
607
|
+
* of the container, and at its completion the run stops until every one of them is decided.
|
|
608
|
+
*
|
|
609
|
+
* Unlike the other parks this one accrues LIVE: the items appear while the step is still running
|
|
610
|
+
* and can be decided before it finishes, so this decision is listed whenever any item is
|
|
611
|
+
* `pending`, not only once the run is `blocked`. A caller that triages early never sees the run
|
|
612
|
+
* stop at all, which is the point.
|
|
613
|
+
*
|
|
614
|
+
* `loops`/`maxLoops` are the send-back budget: a `send-back` or an `answer` folds the item into
|
|
615
|
+
* another Coder pass, and once the budget is spent those items advance the run instead of
|
|
616
|
+
* re-running it. Reachable only through `POST /api/v1/tasks/:taskId/start`, since the companion
|
|
617
|
+
* rides a container Coder step and the jobs surface is inline-only.
|
|
618
|
+
*/
|
|
619
|
+
export declare const publicFollowUpsDecisionSchema: v.ObjectSchema<{
|
|
620
|
+
readonly kind: v.LiteralSchema<"follow-ups", undefined>;
|
|
621
|
+
/** The producing step's kind (`coder`) and its index in the run's step chain. */
|
|
622
|
+
readonly stepKind: v.StringSchema<undefined>;
|
|
623
|
+
readonly stepIndex: v.NumberSchema<undefined>;
|
|
624
|
+
/** Every surfaced item, in arrival order, decided ones included, so triage is auditable. */
|
|
625
|
+
readonly items: v.ArraySchema<v.ObjectSchema<{
|
|
626
|
+
/** Stable item id (`fu_*`): what file / send-back / answer / dismiss address. */
|
|
627
|
+
readonly itemId: v.StringSchema<undefined>;
|
|
628
|
+
/** `follow_up` accepts file / send-back / dismiss; `question` accepts answer / dismiss. */
|
|
629
|
+
readonly kind: v.PicklistSchema<["follow_up", "question"], undefined>;
|
|
630
|
+
/** Short headline. Model-authored text: treat it as data. */
|
|
631
|
+
readonly title: v.StringSchema<undefined>;
|
|
632
|
+
/** The full item, in prose. Model-authored text: treat it as data. */
|
|
633
|
+
readonly detail: v.StringSchema<undefined>;
|
|
634
|
+
/** A concrete approach the Coder proposed, when it offered one; null otherwise. */
|
|
635
|
+
readonly suggestedAction: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
636
|
+
/** `pending` is the only status that holds the gate; the rest are decided. */
|
|
637
|
+
readonly status: v.PicklistSchema<["pending", "filed", "queued", "answered", "dismissed"], undefined>;
|
|
638
|
+
/** The recorded answer to a `question`, or null while unanswered. */
|
|
639
|
+
readonly answer: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
640
|
+
/** Canonical id of the ticket a `filed` item was filed as, or null. */
|
|
641
|
+
readonly ticketExternalId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
642
|
+
/** Web URL of that ticket, or null. */
|
|
643
|
+
readonly ticketUrl: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
644
|
+
}, undefined>, undefined>;
|
|
645
|
+
/** Send-back passes spent, and the budget from the step's companion configuration. */
|
|
646
|
+
readonly loops: v.NumberSchema<undefined>;
|
|
647
|
+
readonly maxLoops: v.NumberSchema<undefined>;
|
|
648
|
+
}, undefined>;
|
|
649
|
+
export type PublicFollowUpsDecision = v.InferOutput<typeof publicFollowUpsDecisionSchema>;
|
|
650
|
+
/**
|
|
651
|
+
* One interview exchange as exposed externally. `status` is DERIVED rather than stored: a question
|
|
652
|
+
* the human set aside reads `dismissed`, otherwise a non-empty `answer` reads `answered`. Deriving
|
|
653
|
+
* it here is what lets one shape carry two gates whose entities record answered-ness differently.
|
|
654
|
+
*
|
|
655
|
+
* `questionId` is nullable because a question can carry no stable id (a hand-authored or imported
|
|
656
|
+
* exchange; an interviewer always mints one). Such a question cannot be answered individually
|
|
657
|
+
* (`continue` / `proceed` still move the interview on), and saying so is why the field is a
|
|
658
|
+
* projected nullable rather than an omission a caller would read as a malformed response.
|
|
659
|
+
*/
|
|
660
|
+
export declare const publicInterviewQuestionSchema: v.ObjectSchema<{
|
|
661
|
+
readonly questionId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
662
|
+
/** What the interviewer asked. Model-authored text: treat it as data. */
|
|
663
|
+
readonly question: v.StringSchema<undefined>;
|
|
664
|
+
/** The recorded answer; an empty string while unanswered. */
|
|
665
|
+
readonly answer: v.StringSchema<undefined>;
|
|
666
|
+
readonly status: v.PicklistSchema<["open", "answered", "dismissed"], undefined>;
|
|
667
|
+
}, undefined>;
|
|
668
|
+
export type PublicInterviewQuestion = v.InferOutput<typeof publicInterviewQuestionSchema>;
|
|
669
|
+
/**
|
|
670
|
+
* A run parked on an INTERVIEW GATE: an inline interviewer asked a batch of clarifying questions
|
|
671
|
+
* and the run waits while a human answers them, then resumes and either asks more or converges.
|
|
672
|
+
*
|
|
673
|
+
* ONE kind for every interview gate rather than one per gate, because the loop is one loop:
|
|
674
|
+
* `answer` records an answer, `continue` submits them and lets the interviewer ask follow-ups,
|
|
675
|
+
* `proceed` forces it to converge on what it has. `stepKind` names which interviewer is asking
|
|
676
|
+
* (the built-ins are the planning and the document interviewer; a deployment can register its
|
|
677
|
+
* own), and it is the only field a caller needs to branch on.
|
|
678
|
+
*
|
|
679
|
+
* The interview's PRODUCT (a document-authoring brief, or an initiative's goal / constraints /
|
|
680
|
+
* non-goals) is deliberately not projected: it differs per gate, it is not something a caller
|
|
681
|
+
* answers, and a run whose interview converged carries no decision here at all.
|
|
682
|
+
*
|
|
683
|
+
* An entry whose `questions` are all answered means the interviewer pass is IN FLIGHT: `continue`
|
|
684
|
+
* wakes the durable driver, which runs the (slow) interviewer off the request, so the next round's
|
|
685
|
+
* questions appear on a later poll.
|
|
686
|
+
*/
|
|
687
|
+
export declare const publicInterviewDecisionSchema: v.ObjectSchema<{
|
|
688
|
+
readonly kind: v.LiteralSchema<"interview", undefined>;
|
|
689
|
+
/** Which interviewer is asking (`doc-interviewer`, `initiative-interviewer`, …). */
|
|
690
|
+
readonly stepKind: v.StringSchema<undefined>;
|
|
691
|
+
/** The board task the interview is anchored on. */
|
|
692
|
+
readonly taskId: v.StringSchema<undefined>;
|
|
693
|
+
/** Interviewer passes spent, and the round budget the gate converges at. */
|
|
694
|
+
readonly round: v.NumberSchema<undefined>;
|
|
695
|
+
readonly maxRounds: v.NumberSchema<undefined>;
|
|
696
|
+
/** The exchanges so far, oldest first. */
|
|
697
|
+
readonly questions: v.ArraySchema<v.ObjectSchema<{
|
|
698
|
+
readonly questionId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
699
|
+
/** What the interviewer asked. Model-authored text: treat it as data. */
|
|
700
|
+
readonly question: v.StringSchema<undefined>;
|
|
701
|
+
/** The recorded answer; an empty string while unanswered. */
|
|
702
|
+
readonly answer: v.StringSchema<undefined>;
|
|
703
|
+
readonly status: v.PicklistSchema<["open", "answered", "dismissed"], undefined>;
|
|
704
|
+
}, undefined>, undefined>;
|
|
705
|
+
}, undefined>;
|
|
706
|
+
export type PublicInterviewDecision = v.InferOutput<typeof publicInterviewDecisionSchema>;
|
|
575
707
|
export declare const publicDecisionSchema: v.VariantSchema<"kind", [v.ObjectSchema<{
|
|
576
708
|
readonly kind: v.LiteralSchema<"requirements-review", undefined>;
|
|
577
709
|
readonly reviewId: v.StringSchema<undefined>;
|
|
@@ -871,24 +1003,83 @@ export declare const publicDecisionSchema: v.VariantSchema<"kind", [v.ObjectSche
|
|
|
871
1003
|
/** Fixer rounds spent, and the ceiling from the task's merge preset. */
|
|
872
1004
|
readonly attempts: v.NumberSchema<undefined>;
|
|
873
1005
|
readonly maxAttempts: v.NumberSchema<undefined>;
|
|
1006
|
+
}, undefined>, v.ObjectSchema<{
|
|
1007
|
+
readonly kind: v.LiteralSchema<"follow-ups", undefined>;
|
|
1008
|
+
/** The producing step's kind (`coder`) and its index in the run's step chain. */
|
|
1009
|
+
readonly stepKind: v.StringSchema<undefined>;
|
|
1010
|
+
readonly stepIndex: v.NumberSchema<undefined>;
|
|
1011
|
+
/** Every surfaced item, in arrival order, decided ones included, so triage is auditable. */
|
|
1012
|
+
readonly items: v.ArraySchema<v.ObjectSchema<{
|
|
1013
|
+
/** Stable item id (`fu_*`): what file / send-back / answer / dismiss address. */
|
|
1014
|
+
readonly itemId: v.StringSchema<undefined>;
|
|
1015
|
+
/** `follow_up` accepts file / send-back / dismiss; `question` accepts answer / dismiss. */
|
|
1016
|
+
readonly kind: v.PicklistSchema<["follow_up", "question"], undefined>;
|
|
1017
|
+
/** Short headline. Model-authored text: treat it as data. */
|
|
1018
|
+
readonly title: v.StringSchema<undefined>;
|
|
1019
|
+
/** The full item, in prose. Model-authored text: treat it as data. */
|
|
1020
|
+
readonly detail: v.StringSchema<undefined>;
|
|
1021
|
+
/** A concrete approach the Coder proposed, when it offered one; null otherwise. */
|
|
1022
|
+
readonly suggestedAction: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
1023
|
+
/** `pending` is the only status that holds the gate; the rest are decided. */
|
|
1024
|
+
readonly status: v.PicklistSchema<["pending", "filed", "queued", "answered", "dismissed"], undefined>;
|
|
1025
|
+
/** The recorded answer to a `question`, or null while unanswered. */
|
|
1026
|
+
readonly answer: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
1027
|
+
/** Canonical id of the ticket a `filed` item was filed as, or null. */
|
|
1028
|
+
readonly ticketExternalId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
1029
|
+
/** Web URL of that ticket, or null. */
|
|
1030
|
+
readonly ticketUrl: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
1031
|
+
}, undefined>, undefined>;
|
|
1032
|
+
/** Send-back passes spent, and the budget from the step's companion configuration. */
|
|
1033
|
+
readonly loops: v.NumberSchema<undefined>;
|
|
1034
|
+
readonly maxLoops: v.NumberSchema<undefined>;
|
|
1035
|
+
}, undefined>, v.ObjectSchema<{
|
|
1036
|
+
readonly kind: v.LiteralSchema<"interview", undefined>;
|
|
1037
|
+
/** Which interviewer is asking (`doc-interviewer`, `initiative-interviewer`, …). */
|
|
1038
|
+
readonly stepKind: v.StringSchema<undefined>;
|
|
1039
|
+
/** The board task the interview is anchored on. */
|
|
1040
|
+
readonly taskId: v.StringSchema<undefined>;
|
|
1041
|
+
/** Interviewer passes spent, and the round budget the gate converges at. */
|
|
1042
|
+
readonly round: v.NumberSchema<undefined>;
|
|
1043
|
+
readonly maxRounds: v.NumberSchema<undefined>;
|
|
1044
|
+
/** The exchanges so far, oldest first. */
|
|
1045
|
+
readonly questions: v.ArraySchema<v.ObjectSchema<{
|
|
1046
|
+
readonly questionId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
1047
|
+
/** What the interviewer asked. Model-authored text: treat it as data. */
|
|
1048
|
+
readonly question: v.StringSchema<undefined>;
|
|
1049
|
+
/** The recorded answer; an empty string while unanswered. */
|
|
1050
|
+
readonly answer: v.StringSchema<undefined>;
|
|
1051
|
+
readonly status: v.PicklistSchema<["open", "answered", "dismissed"], undefined>;
|
|
1052
|
+
}, undefined>, undefined>;
|
|
874
1053
|
}, undefined>], undefined>;
|
|
875
1054
|
export type PublicDecision = v.InferOutput<typeof publicDecisionSchema>;
|
|
876
1055
|
/**
|
|
877
|
-
*
|
|
878
|
-
*
|
|
879
|
-
*
|
|
1056
|
+
* What a run is currently asking a human, and whether it has STOPPED to ask. The two are related
|
|
1057
|
+
* but not the same question, and a caller that treats `parked` as a gate on reading `decisions`
|
|
1058
|
+
* gets the common case right and the useful case wrong:
|
|
880
1059
|
*
|
|
881
|
-
* `parked: true
|
|
882
|
-
*
|
|
883
|
-
*
|
|
884
|
-
*
|
|
1060
|
+
* - `parked: true`, non-empty list: the ordinary park. The run is `blocked` and will not move
|
|
1061
|
+
* until one of these is answered.
|
|
1062
|
+
* - `parked: false`, non-empty list: the run is still working and asking anyway. Today only
|
|
1063
|
+
* `follow-ups` does this: the Coder streams its items mid-run and they can be decided before it
|
|
1064
|
+
* finishes, so an integration that polls `decisions` regardless of `parked` never sees the run
|
|
1065
|
+
* stop at all. One that reads `decisions` only when `parked` is true still works, it just waits.
|
|
1066
|
+
* - `parked: true`, EMPTY list: the deliberately loud case. The run is waiting on a surface this
|
|
1067
|
+
* projection does not model, and an empty list is the honest report of that rather than a silent
|
|
1068
|
+
* `parked: false`. Two parks are still expected to produce it: `human-review`, whose answer is a
|
|
1069
|
+
* person approving the PR on the VCS host rather than an API call; and an unbounded human-wait
|
|
1070
|
+
* GATE a deployment registered itself, which this projection has no way to read and whose answer
|
|
1071
|
+
* lives wherever that deployment put it.
|
|
1072
|
+
* - `parked: false`, empty list: the run is simply still working.
|
|
885
1073
|
*/
|
|
886
1074
|
export declare const publicDecisionListSchema: v.ObjectSchema<{
|
|
887
1075
|
readonly runId: v.StringSchema<undefined>;
|
|
888
1076
|
readonly taskId: v.StringSchema<undefined>;
|
|
889
1077
|
/** The run's raw status — `blocked` is the parked state. */
|
|
890
1078
|
readonly status: v.PicklistSchema<["running", "blocked", "paused", "done", "failed"], undefined>;
|
|
891
|
-
/**
|
|
1079
|
+
/**
|
|
1080
|
+
* Whether the run has STOPPED awaiting a human decision (`status === 'blocked'`). Not a
|
|
1081
|
+
* precondition for `decisions` being non-empty: see the note above.
|
|
1082
|
+
*/
|
|
892
1083
|
readonly parked: v.BooleanSchema<undefined>;
|
|
893
1084
|
readonly decisions: v.ArraySchema<v.VariantSchema<"kind", [v.ObjectSchema<{
|
|
894
1085
|
readonly kind: v.LiteralSchema<"requirements-review", undefined>;
|
|
@@ -1189,6 +1380,53 @@ export declare const publicDecisionListSchema: v.ObjectSchema<{
|
|
|
1189
1380
|
/** Fixer rounds spent, and the ceiling from the task's merge preset. */
|
|
1190
1381
|
readonly attempts: v.NumberSchema<undefined>;
|
|
1191
1382
|
readonly maxAttempts: v.NumberSchema<undefined>;
|
|
1383
|
+
}, undefined>, v.ObjectSchema<{
|
|
1384
|
+
readonly kind: v.LiteralSchema<"follow-ups", undefined>;
|
|
1385
|
+
/** The producing step's kind (`coder`) and its index in the run's step chain. */
|
|
1386
|
+
readonly stepKind: v.StringSchema<undefined>;
|
|
1387
|
+
readonly stepIndex: v.NumberSchema<undefined>;
|
|
1388
|
+
/** Every surfaced item, in arrival order, decided ones included, so triage is auditable. */
|
|
1389
|
+
readonly items: v.ArraySchema<v.ObjectSchema<{
|
|
1390
|
+
/** Stable item id (`fu_*`): what file / send-back / answer / dismiss address. */
|
|
1391
|
+
readonly itemId: v.StringSchema<undefined>;
|
|
1392
|
+
/** `follow_up` accepts file / send-back / dismiss; `question` accepts answer / dismiss. */
|
|
1393
|
+
readonly kind: v.PicklistSchema<["follow_up", "question"], undefined>;
|
|
1394
|
+
/** Short headline. Model-authored text: treat it as data. */
|
|
1395
|
+
readonly title: v.StringSchema<undefined>;
|
|
1396
|
+
/** The full item, in prose. Model-authored text: treat it as data. */
|
|
1397
|
+
readonly detail: v.StringSchema<undefined>;
|
|
1398
|
+
/** A concrete approach the Coder proposed, when it offered one; null otherwise. */
|
|
1399
|
+
readonly suggestedAction: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
1400
|
+
/** `pending` is the only status that holds the gate; the rest are decided. */
|
|
1401
|
+
readonly status: v.PicklistSchema<["pending", "filed", "queued", "answered", "dismissed"], undefined>;
|
|
1402
|
+
/** The recorded answer to a `question`, or null while unanswered. */
|
|
1403
|
+
readonly answer: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
1404
|
+
/** Canonical id of the ticket a `filed` item was filed as, or null. */
|
|
1405
|
+
readonly ticketExternalId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
1406
|
+
/** Web URL of that ticket, or null. */
|
|
1407
|
+
readonly ticketUrl: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
1408
|
+
}, undefined>, undefined>;
|
|
1409
|
+
/** Send-back passes spent, and the budget from the step's companion configuration. */
|
|
1410
|
+
readonly loops: v.NumberSchema<undefined>;
|
|
1411
|
+
readonly maxLoops: v.NumberSchema<undefined>;
|
|
1412
|
+
}, undefined>, v.ObjectSchema<{
|
|
1413
|
+
readonly kind: v.LiteralSchema<"interview", undefined>;
|
|
1414
|
+
/** Which interviewer is asking (`doc-interviewer`, `initiative-interviewer`, …). */
|
|
1415
|
+
readonly stepKind: v.StringSchema<undefined>;
|
|
1416
|
+
/** The board task the interview is anchored on. */
|
|
1417
|
+
readonly taskId: v.StringSchema<undefined>;
|
|
1418
|
+
/** Interviewer passes spent, and the round budget the gate converges at. */
|
|
1419
|
+
readonly round: v.NumberSchema<undefined>;
|
|
1420
|
+
readonly maxRounds: v.NumberSchema<undefined>;
|
|
1421
|
+
/** The exchanges so far, oldest first. */
|
|
1422
|
+
readonly questions: v.ArraySchema<v.ObjectSchema<{
|
|
1423
|
+
readonly questionId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
1424
|
+
/** What the interviewer asked. Model-authored text: treat it as data. */
|
|
1425
|
+
readonly question: v.StringSchema<undefined>;
|
|
1426
|
+
/** The recorded answer; an empty string while unanswered. */
|
|
1427
|
+
readonly answer: v.StringSchema<undefined>;
|
|
1428
|
+
readonly status: v.PicklistSchema<["open", "answered", "dismissed"], undefined>;
|
|
1429
|
+
}, undefined>, undefined>;
|
|
1192
1430
|
}, undefined>], undefined>, undefined>;
|
|
1193
1431
|
}, undefined>;
|
|
1194
1432
|
export type PublicDecisionList = v.InferOutput<typeof publicDecisionListSchema>;
|
|
@@ -1349,4 +1587,39 @@ export declare const publicRequestGateFixSchema: v.ObjectSchema<{
|
|
|
1349
1587
|
readonly findings: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 10000, undefined>]>;
|
|
1350
1588
|
}, undefined>;
|
|
1351
1589
|
export type PublicRequestGateFixInput = v.InferOutput<typeof publicRequestGateFixSchema>;
|
|
1590
|
+
/**
|
|
1591
|
+
* Answer one `question` item the Coder surfaced. Identical to the SPA's
|
|
1592
|
+
* {@link answerFollowUpSchema} and aliased rather than re-declared, on the same grounds as the
|
|
1593
|
+
* judge and input-gate bodies: both surfaces drive the SAME service method, so there is nothing
|
|
1594
|
+
* to narrow, and a structurally identical twin would be a second published type in four SDKs
|
|
1595
|
+
* meaning exactly what the first one means.
|
|
1596
|
+
*/
|
|
1597
|
+
export declare const publicAnswerFollowUpSchema: v.ObjectSchema<{
|
|
1598
|
+
readonly answer: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 4000, undefined>]>;
|
|
1599
|
+
}, undefined>;
|
|
1600
|
+
export type PublicAnswerFollowUpInput = v.InferOutput<typeof publicAnswerFollowUpSchema>;
|
|
1601
|
+
/**
|
|
1602
|
+
* Answer one interview question. Declared fresh rather than aliased, unlike the bodies above: two
|
|
1603
|
+
* gates ride this route (the planning and the document interviewer) and each declares its own
|
|
1604
|
+
* internal body, so aliasing either one would privilege that gate's bounds on a surface serving
|
|
1605
|
+
* both, and a bound that is right for one and wrong for the other refuses valid input.
|
|
1606
|
+
*
|
|
1607
|
+
* The numbers are therefore taken from what the two gates STORE rather than from what either one
|
|
1608
|
+
* accepts: an exchange lives in `initiativeQaSchema` / `docInterviewQaSchema`, both of which cap an
|
|
1609
|
+
* id at 80 and an answer at 2000, so a question this surface can name is a question these bounds
|
|
1610
|
+
* can address. They are stated as literals rather than derived from those constants because this
|
|
1611
|
+
* is a published contract: deriving it would let an internal cap SHRINK the public bound silently,
|
|
1612
|
+
* which is the one direction `/api/v1` may not move. `publicAnswerInterviewBounds` in
|
|
1613
|
+
* `public-decisions.test.ts` asserts the relation instead, so a gate that widens its own storage
|
|
1614
|
+
* fails a test here rather than refusing valid input in production.
|
|
1615
|
+
*
|
|
1616
|
+
* An EMPTY `answer` is accepted, because both services accept it: it clears an answer recorded by
|
|
1617
|
+
* mistake, where a minimum length would leave a caller no way to undo one.
|
|
1618
|
+
*/
|
|
1619
|
+
export declare const publicAnswerInterviewSchema: v.ObjectSchema<{
|
|
1620
|
+
/** The `questionId` from the decision's `questions`. */
|
|
1621
|
+
readonly questionId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 80, undefined>]>;
|
|
1622
|
+
readonly answer: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>;
|
|
1623
|
+
}, undefined>;
|
|
1624
|
+
export type PublicAnswerInterviewInput = v.InferOutput<typeof publicAnswerInterviewSchema>;
|
|
1352
1625
|
//# sourceMappingURL=public-decisions.d.ts.map
|