@cat-factory/server 0.321.0 → 0.323.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/modules/assistant/AssistantController.d.ts.map +1 -1
- package/dist/modules/assistant/AssistantController.js +6 -0
- package/dist/modules/assistant/AssistantController.js.map +1 -1
- package/dist/modules/bugHunt/BugHuntController.d.ts.map +1 -1
- package/dist/modules/bugHunt/BugHuntController.js +8 -5
- package/dist/modules/bugHunt/BugHuntController.js.map +1 -1
- package/dist/modules/documents/DocumentSourceController.d.ts.map +1 -1
- package/dist/modules/documents/DocumentSourceController.js +4 -2
- package/dist/modules/documents/DocumentSourceController.js.map +1 -1
- package/dist/modules/providers/personalCredentialGate.d.ts +24 -0
- package/dist/modules/providers/personalCredentialGate.d.ts.map +1 -1
- package/dist/modules/providers/personalCredentialGate.js +62 -3
- package/dist/modules/providers/personalCredentialGate.js.map +1 -1
- package/dist/modules/publicApi/PublicApiController.d.ts.map +1 -1
- package/dist/modules/publicApi/PublicApiController.js +17 -0
- package/dist/modules/publicApi/PublicApiController.js.map +1 -1
- package/dist/modules/publicApi/decisions/gateRoutes.d.ts.map +1 -1
- package/dist/modules/publicApi/decisions/gateRoutes.js +26 -1
- package/dist/modules/publicApi/decisions/gateRoutes.js.map +1 -1
- package/dist/modules/publicApi/decisions/projection.d.ts +10 -1
- package/dist/modules/publicApi/decisions/projection.d.ts.map +1 -1
- package/dist/modules/publicApi/decisions/projection.js +97 -7
- package/dist/modules/publicApi/decisions/projection.js.map +1 -1
- package/dist/modules/publicApi/decisions/resumeBudget.d.ts +22 -0
- package/dist/modules/publicApi/decisions/resumeBudget.d.ts.map +1 -0
- package/dist/modules/publicApi/decisions/resumeBudget.js +41 -0
- package/dist/modules/publicApi/decisions/resumeBudget.js.map +1 -0
- package/dist/modules/publicApi/openapiDocument.generated.d.ts +1 -1
- package/dist/modules/publicApi/openapiDocument.generated.d.ts.map +1 -1
- package/dist/modules/publicApi/openapiDocument.generated.js +1 -1
- package/dist/modules/publicApi/openapiDocument.generated.js.map +1 -1
- package/dist/modules/publicApi/publicApiAdmission.d.ts +57 -27
- package/dist/modules/publicApi/publicApiAdmission.d.ts.map +1 -1
- package/dist/modules/publicApi/publicApiAdmission.js +108 -37
- package/dist/modules/publicApi/publicApiAdmission.js.map +1 -1
- package/dist/modules/sandbox/SandboxController.d.ts.map +1 -1
- package/dist/modules/sandbox/SandboxController.js +4 -1
- package/dist/modules/sandbox/SandboxController.js.map +1 -1
- package/dist/persistence/rpc-allowlist.d.ts +1 -1
- package/dist/persistence/rpc-allowlist.js +1 -1
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapiDocument.generated.js","sourceRoot":"","sources":["../../../src/modules/publicApi/openapiDocument.generated.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,EAAE;AACF,0FAA0F;AAC1F,8FAA8F;AAC9F,8FAA8F;AAC9F,8EAA8E;AAE9E,MAAM,CAAC,MAAM,YAAY,GAAG,
|
|
1
|
+
{"version":3,"file":"openapiDocument.generated.js","sourceRoot":"","sources":["../../../src/modules/publicApi/openapiDocument.generated.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,EAAE;AACF,0FAA0F;AAC1F,8FAA8F;AAC9F,8FAA8F;AAC9F,8EAA8E;AAE9E,MAAM,CAAC,MAAM,YAAY,GAAG,8y9vBAA8y9vB,CAAA"}
|
|
@@ -63,25 +63,42 @@ export declare const BINARY_CANDIDATE_PARK_SURFACE = "binary-candidates";
|
|
|
63
63
|
export declare const PUBLIC_JOB_CANCEL_PATH = "POST /api/v1/jobs/:id/cancel";
|
|
64
64
|
export declare const PUBLIC_TASK_STOP_PATH = "POST /api/v1/tasks/:taskId/stop";
|
|
65
65
|
/**
|
|
66
|
-
* The park surfaces `/api/v1/runs/:runId/decisions` can actually ANSWER today
|
|
66
|
+
* The park surfaces `/api/v1/runs/:runId/decisions` can actually ANSWER today, each mapped to the
|
|
67
|
+
* `decisions[]` entry that answers it.
|
|
67
68
|
*
|
|
68
|
-
* Deliberately a SEPARATE
|
|
69
|
-
* two is the thing worth stating: admission decides what a `decide` key may set in motion, and
|
|
69
|
+
* Deliberately a SEPARATE table from {@link PARKING_INLINE_KINDS}, because the asymmetry between
|
|
70
|
+
* the two is the thing worth stating: admission decides what a `decide` key may set in motion, and
|
|
70
71
|
* this decides what the refusal is allowed to PROMISE it can then answer.
|
|
71
72
|
*
|
|
72
73
|
* Keeping the answerable set EXPLICIT rather than implied is what stops the refusal below drifting
|
|
73
|
-
* from what the surface really serves: landing a slice
|
|
74
|
+
* from what the surface really serves: landing a slice adds a member here and the message it
|
|
74
75
|
* builds updates itself, where a hand-written sentence would keep promising an answer path that
|
|
75
76
|
* does not exist — which is exactly the defect this replaced.
|
|
76
77
|
*
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
78
|
+
* A MAP rather than a set, because a park surface and the decision kind that answers it are not
|
|
79
|
+
* always spelled the same, and the refusal is read by somebody who then has to FIND the entry:
|
|
80
|
+
* the `pr-reviewer` step is answered by `kind: 'pr-review'`, and both brainstorm kinds are
|
|
81
|
+
* answered by the one `kind: 'brainstorm'`. Naming the surface in a message that points at
|
|
82
|
+
* `decisions[]` sent an integration looking for a kind that is never in it. The values are typed
|
|
83
|
+
* against {@link PublicDecisionKind}, so a kind that does not exist on the wire fails to compile
|
|
84
|
+
* and a decision kind renamed on that side breaks the build here rather than the message.
|
|
85
|
+
*
|
|
86
|
+
* THREE members of {@link parkSurfacesOf} are absent, for three different reasons:
|
|
87
|
+
*
|
|
88
|
+
* - `human-review` is not a slice waiting to be built: its answer is a person approving the pull
|
|
89
|
+
* request on the VCS host, not an API call this surface could offer.
|
|
90
|
+
* - {@link BINARY_CANDIDATE_PARK_SURFACE} is the other way round, a real route not yet projected
|
|
91
|
+
* onto `/api/v1`.
|
|
92
|
+
* - `bug-fisher` (a curating kind, like `pr-reviewer` below, which IS here) parks so a person can
|
|
93
|
+
* mark which of the bugs it found are worth fixing, and marking has no public route at all yet.
|
|
94
|
+
*
|
|
95
|
+
* Either way a run parked there is honestly reported as `parked: true` with the wait NAMED in
|
|
96
|
+
* `unanswerable` and nothing offered to answer it, and the refusal says as much. That report is
|
|
97
|
+
* built from THIS table too (`curationWait`), so what the start surface refuses and what the
|
|
98
|
+
* decision surface admits it cannot answer are one decision. See
|
|
82
99
|
* `backend/docs/adr/0043-public-decision-surface.md`.
|
|
83
100
|
*/
|
|
84
|
-
export declare const PUBLICLY_ANSWERABLE_PARK_SURFACES:
|
|
101
|
+
export declare const PUBLICLY_ANSWERABLE_PARK_SURFACES: Map<string, "agent-decision" | "approval-gate" | "brainstorm" | "clarity-review" | "follow-ups" | "fork" | "human-test" | "input-gate" | "interview" | "judge" | "pr-review" | "requirements-review" | "visual-confirmation">;
|
|
85
102
|
/** The pipeline shape admission reasons about: the step chain plus its parallel flag arrays. */
|
|
86
103
|
export interface AdmissiblePipelineShape {
|
|
87
104
|
agentKinds: string[];
|
|
@@ -135,14 +152,15 @@ export declare function admissionRegistries(source: {
|
|
|
135
152
|
}): AdmissionRegistries;
|
|
136
153
|
/**
|
|
137
154
|
* Whether a pipeline can PARK the run on a human decision: an approval gate on an enabled step, one
|
|
138
|
-
* of the {@link PARKING_INLINE_KINDS} review/brainstorm kinds,
|
|
139
|
-
*
|
|
140
|
-
* loop. It just needs an answerer, which is what the
|
|
155
|
+
* of the {@link PARKING_INLINE_KINDS} review/brainstorm kinds, a gate that waits on a person with
|
|
156
|
+
* no deadline ({@link isHumanWaitGate}), or a step that curates ({@link isCurationGate}). Parking
|
|
157
|
+
* is not a defect: it is the clarification loop. It just needs an answerer, which is what the
|
|
158
|
+
* `decide` scope asserts.
|
|
141
159
|
*/
|
|
142
160
|
export declare function canParkOnHuman(pipeline: AdmissiblePipelineShape, registries: AdmissionRegistries): boolean;
|
|
143
161
|
/**
|
|
144
162
|
* Every park surface an ENABLED step of `pipeline` can put the run on, in step order and deduped.
|
|
145
|
-
*
|
|
163
|
+
* Six mechanisms, each a separate check because each parks for a different reason:
|
|
146
164
|
*
|
|
147
165
|
* 1. an approval gate flag on the step ({@link APPROVAL_GATE_PARK_SURFACE});
|
|
148
166
|
* 2. the step's own kind being an inline review/brainstorm ({@link PARKING_INLINE_KINDS});
|
|
@@ -150,19 +168,24 @@ export declare function canParkOnHuman(pipeline: AdmissiblePipelineShape, regist
|
|
|
150
168
|
* ({@link isHumanWaitGate});
|
|
151
169
|
* 4. the step's own kind carrying the `interview-gate` TRAIT ({@link INTERVIEW_PARK_SURFACE});
|
|
152
170
|
* 5. the step's OPTIONS configuring a binary-candidate comparison
|
|
153
|
-
* ({@link BINARY_CANDIDATE_PARK_SURFACE})
|
|
171
|
+
* ({@link BINARY_CANDIDATE_PARK_SURFACE});
|
|
172
|
+
* 6. the step's own kind carrying the `curation-gate` TRAIT ({@link isCurationGate}).
|
|
154
173
|
*
|
|
155
174
|
* This is the single enumeration {@link canParkOnHuman} derives its boolean from, so the predicate
|
|
156
175
|
* and the explanation a caller is given can never disagree about what parks.
|
|
157
176
|
*
|
|
158
|
-
* Cases 4 and
|
|
159
|
-
* gates already taught repeating itself: an enumeration written against the park
|
|
160
|
-
* somebody thought of misses the ones they did not, so ask what each entry is DERIVED
|
|
161
|
-
* 2, 3 and
|
|
162
|
-
* a gate's registered `pollExhaustion`, a registered trait). Case 5 derives
|
|
163
|
-
* configuration, which is the same property one level down: it is what a
|
|
164
|
-
* than what it registers, and it was invisible here until a shipped
|
|
165
|
-
* Whatever is added next should be derivable too.
|
|
177
|
+
* Cases 4, 5 and 6 each arrived after the earlier ones had shipped, which is the lesson the
|
|
178
|
+
* human-wait gates already taught repeating itself: an enumeration written against the park
|
|
179
|
+
* mechanisms somebody thought of misses the ones they did not, so ask what each entry is DERIVED
|
|
180
|
+
* from. Cases 2, 3, 4 and 6 derive from a declaration a deployment's own registrations flow
|
|
181
|
+
* through (a kind list, a gate's registered `pollExhaustion`, a registered trait). Case 5 derives
|
|
182
|
+
* from the step's stored configuration, which is the same property one level down: it is what a
|
|
183
|
+
* deployment AUTHORS rather than what it registers, and it was invisible here until a shipped
|
|
184
|
+
* preset finally set it. Whatever is added next should be derivable too.
|
|
185
|
+
*
|
|
186
|
+
* Case 6 is the one that had been missed LONGEST, and the shape of the miss is worth keeping: the
|
|
187
|
+
* two kinds that carry it park through machinery of their OWN rather than through anything shared,
|
|
188
|
+
* so there was no declaration to read until the trait was added to make one.
|
|
166
189
|
*
|
|
167
190
|
* TWO THINGS ARE DELIBERATELY NOT HERE, and they are absent for two different reasons:
|
|
168
191
|
*
|
|
@@ -192,10 +215,17 @@ export declare function parkSurfacesOf(pipeline: AdmissiblePipelineShape, regist
|
|
|
192
215
|
* got a run whose only exit is `POST /api/v1/jobs/:id/cancel` — the platform's degrade-loudly rule
|
|
193
216
|
* inverted, since the refusal was confidently describing a capability it does not have.
|
|
194
217
|
*
|
|
195
|
-
*
|
|
196
|
-
* `POST /tasks/:taskId/start` adopted it with the API-stability commitment (the tracker's
|
|
197
|
-
* question, settled)
|
|
198
|
-
* not
|
|
218
|
+
* Every public path that sets a run in motion applies the parking rule now: `POST /jobs` always
|
|
219
|
+
* has, `POST /tasks/:taskId/start` adopted it with the API-stability commitment (the tracker's
|
|
220
|
+
* open question, settled), and `POST /tasks/:taskId/retry` re-drives the run's STORED steps under
|
|
221
|
+
* the same rule. A `write` key must not be able to set in motion a park it is by definition not
|
|
222
|
+
* trusted to answer, and which of the three calls started it makes no difference to that.
|
|
223
|
+
*
|
|
224
|
+
* The park surfaces are listed verbatim (they are what a reader matches against the pipeline's own
|
|
225
|
+
* steps) while the answer promise names DECISION KINDS, out of
|
|
226
|
+
* {@link PUBLICLY_ANSWERABLE_PARK_SURFACES}. Three surfaces are spelled differently in the two
|
|
227
|
+
* places, so naming the surface in a sentence that points at `decisions[]` told an integration to
|
|
228
|
+
* look for a `pr-reviewer` entry that is never there.
|
|
199
229
|
*
|
|
200
230
|
* `cancelPath` is REQUIRED rather than defaulted, because which route frees an abandoned park is a
|
|
201
231
|
* property of the START SURFACE and every surface answers differently: a headless job is cancelled
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publicApiAdmission.d.ts","sourceRoot":"","sources":["../../../src/modules/publicApi/publicApiAdmission.ts"],"names":[],"mappings":"AAaA,OAAO,EACL,KAAK,iBAAiB,
|
|
1
|
+
{"version":3,"file":"publicApiAdmission.d.ts","sourceRoot":"","sources":["../../../src/modules/publicApi/publicApiAdmission.ts"],"names":[],"mappings":"AAaA,OAAO,EACL,KAAK,iBAAiB,EAUvB,MAAM,qBAAqB,CAAA;AAG5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEvD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,oBAAoB,aAK/B,CAAA;AASF;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,eAAe,CAAA;AAuBnD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,6BAA6B,sBAAsB,CAAA;AAkDhE;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,iCAAiC,CAAA;AACpE,eAAO,MAAM,qBAAqB,oCAAoC,CAAA;AAEtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,iCAAiC,+NAW5C,CAAA;AAEF,gGAAgG;AAChG,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,6FAA6F;IAC7F,OAAO,CAAC,EAAE,OAAO,EAAE,CAAA;IACnB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,OAAO,EAAE,CAAA;IACjB;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;QAAE,YAAY,CAAC,EAAE;YAAE,UAAU,CAAC,EAAE,OAAO,CAAA;SAAE,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,CAAA;CACjG;AASD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,uBAAuB,EACjC,QAAQ,EAAE,iBAAiB,GAC1B,OAAO,CAIT;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,0EAA0E;IAC1E,UAAU,EAAE,iBAAiB,CAAA;IAC7B,2GAA2G;IAC3G,KAAK,EAAE,YAAY,CAAA;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAC1C,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,YAAY,EAAE,YAAY,CAAA;CAC3B,GAAG,mBAAmB,CAEtB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,uBAAuB,EACjC,UAAU,EAAE,mBAAmB,GAC9B,OAAO,CAET;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,uBAAuB,EACjC,UAAU,EAAE,mBAAmB,GAC9B,MAAM,EAAE,CAwBV;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CA2BjG;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,uBAAuB,EACjC,UAAU,EAAE,mBAAmB,EAC/B,OAAO,EAAE;IAAE,eAAe,EAAE,OAAO,CAAA;CAAE,GACpC,MAAM,EAAE,CAKV;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,uBAAuB,EACjC,UAAU,EAAE,mBAAmB,GAC9B,OAAO,CAIT"}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
// cross-runtime conformance suite.
|
|
11
11
|
//
|
|
12
12
|
// See backend/docs/adr/0047-headless-clarification-loop.md (D1).
|
|
13
|
-
import { ARCHITECTURE_BRAINSTORM_AGENT_KIND, CLARITY_REVIEW_AGENT_KIND,
|
|
13
|
+
import { ARCHITECTURE_BRAINSTORM_AGENT_KIND, CLARITY_REVIEW_AGENT_KIND, CURATION_GATE_TRAIT, INTERVIEW_GATE_TRAIT, isInlineModelStep, PR_REVIEWER_KIND, REQUIREMENTS_BRAINSTORM_AGENT_KIND, REQUIREMENTS_REVIEW_AGENT_KIND, traitsFor, } from '@cat-factory/agents';
|
|
14
14
|
/**
|
|
15
15
|
* Inline agent kinds that PARK a run on a human/gate decision. This MUST list every
|
|
16
16
|
* inline-and-parking kind: the two review gates AND the two brainstorm dialogues (all four set the
|
|
@@ -96,6 +96,25 @@ const INTERVIEW_PARK_SURFACE = 'interview';
|
|
|
96
96
|
* Over-counting is the safe direction here, the same way the interview gate's is.
|
|
97
97
|
*/
|
|
98
98
|
export const BINARY_CANDIDATE_PARK_SURFACE = 'binary-candidates';
|
|
99
|
+
/**
|
|
100
|
+
* Whether a step's kind CURATES: its completion parks the run so a person can pick which of the
|
|
101
|
+
* things it found are worth acting on, read off the kind's registered `curation-gate` trait.
|
|
102
|
+
*
|
|
103
|
+
* A SIXTH mechanism, and the one that shows the enumeration's lesson has not run out. Every check
|
|
104
|
+
* above reads a park the engine raises through shared machinery (an approval flag, an inline
|
|
105
|
+
* review, a gate's `pollExhaustion`, an interview gate, a step option). A curation step raises its
|
|
106
|
+
* own: each kind's completion interceptor writes its own state shape (`step.prReview`,
|
|
107
|
+
* `step.bugFishing`) and parks from there, so there was no shared declaration to read and the park
|
|
108
|
+
* was invisible here. `pl_review` and `pl_bug_fishing` are single-step pipelines built out of
|
|
109
|
+
* exactly those kinds, so both reported NO park surface and a plain `write` key could start either
|
|
110
|
+
* and then hold a run whose every verb needs `decide`.
|
|
111
|
+
*
|
|
112
|
+
* Derived from a registration rather than a kind list, like the interview gate and for the same
|
|
113
|
+
* reason: a deployment that curates through its own registered kind is seen with no edit here.
|
|
114
|
+
*/
|
|
115
|
+
function isCurationGate(traits) {
|
|
116
|
+
return traits.has(CURATION_GATE_TRAIT);
|
|
117
|
+
}
|
|
99
118
|
/**
|
|
100
119
|
* Whether a polling-GATE kind parks the run on a human, read off the gate's OWN registration.
|
|
101
120
|
*
|
|
@@ -132,32 +151,52 @@ function isHumanWaitGate(kind, gates) {
|
|
|
132
151
|
export const PUBLIC_JOB_CANCEL_PATH = 'POST /api/v1/jobs/:id/cancel';
|
|
133
152
|
export const PUBLIC_TASK_STOP_PATH = 'POST /api/v1/tasks/:taskId/stop';
|
|
134
153
|
/**
|
|
135
|
-
* The park surfaces `/api/v1/runs/:runId/decisions` can actually ANSWER today
|
|
154
|
+
* The park surfaces `/api/v1/runs/:runId/decisions` can actually ANSWER today, each mapped to the
|
|
155
|
+
* `decisions[]` entry that answers it.
|
|
136
156
|
*
|
|
137
|
-
* Deliberately a SEPARATE
|
|
138
|
-
* two is the thing worth stating: admission decides what a `decide` key may set in motion, and
|
|
157
|
+
* Deliberately a SEPARATE table from {@link PARKING_INLINE_KINDS}, because the asymmetry between
|
|
158
|
+
* the two is the thing worth stating: admission decides what a `decide` key may set in motion, and
|
|
139
159
|
* this decides what the refusal is allowed to PROMISE it can then answer.
|
|
140
160
|
*
|
|
141
161
|
* Keeping the answerable set EXPLICIT rather than implied is what stops the refusal below drifting
|
|
142
|
-
* from what the surface really serves: landing a slice
|
|
162
|
+
* from what the surface really serves: landing a slice adds a member here and the message it
|
|
143
163
|
* builds updates itself, where a hand-written sentence would keep promising an answer path that
|
|
144
164
|
* does not exist — which is exactly the defect this replaced.
|
|
145
165
|
*
|
|
146
|
-
*
|
|
147
|
-
*
|
|
148
|
-
*
|
|
149
|
-
*
|
|
150
|
-
*
|
|
166
|
+
* A MAP rather than a set, because a park surface and the decision kind that answers it are not
|
|
167
|
+
* always spelled the same, and the refusal is read by somebody who then has to FIND the entry:
|
|
168
|
+
* the `pr-reviewer` step is answered by `kind: 'pr-review'`, and both brainstorm kinds are
|
|
169
|
+
* answered by the one `kind: 'brainstorm'`. Naming the surface in a message that points at
|
|
170
|
+
* `decisions[]` sent an integration looking for a kind that is never in it. The values are typed
|
|
171
|
+
* against {@link PublicDecisionKind}, so a kind that does not exist on the wire fails to compile
|
|
172
|
+
* and a decision kind renamed on that side breaks the build here rather than the message.
|
|
173
|
+
*
|
|
174
|
+
* THREE members of {@link parkSurfacesOf} are absent, for three different reasons:
|
|
175
|
+
*
|
|
176
|
+
* - `human-review` is not a slice waiting to be built: its answer is a person approving the pull
|
|
177
|
+
* request on the VCS host, not an API call this surface could offer.
|
|
178
|
+
* - {@link BINARY_CANDIDATE_PARK_SURFACE} is the other way round, a real route not yet projected
|
|
179
|
+
* onto `/api/v1`.
|
|
180
|
+
* - `bug-fisher` (a curating kind, like `pr-reviewer` below, which IS here) parks so a person can
|
|
181
|
+
* mark which of the bugs it found are worth fixing, and marking has no public route at all yet.
|
|
182
|
+
*
|
|
183
|
+
* Either way a run parked there is honestly reported as `parked: true` with the wait NAMED in
|
|
184
|
+
* `unanswerable` and nothing offered to answer it, and the refusal says as much. That report is
|
|
185
|
+
* built from THIS table too (`curationWait`), so what the start surface refuses and what the
|
|
186
|
+
* decision surface admits it cannot answer are one decision. See
|
|
151
187
|
* `backend/docs/adr/0043-public-decision-surface.md`.
|
|
152
188
|
*/
|
|
153
|
-
export const PUBLICLY_ANSWERABLE_PARK_SURFACES = new
|
|
154
|
-
REQUIREMENTS_REVIEW_AGENT_KIND,
|
|
155
|
-
CLARITY_REVIEW_AGENT_KIND,
|
|
156
|
-
REQUIREMENTS_BRAINSTORM_AGENT_KIND,
|
|
157
|
-
ARCHITECTURE_BRAINSTORM_AGENT_KIND,
|
|
158
|
-
INPUT_GATE_PARK_SURFACE,
|
|
159
|
-
APPROVAL_GATE_PARK_SURFACE,
|
|
160
|
-
INTERVIEW_PARK_SURFACE,
|
|
189
|
+
export const PUBLICLY_ANSWERABLE_PARK_SURFACES = new Map([
|
|
190
|
+
[REQUIREMENTS_REVIEW_AGENT_KIND, 'requirements-review'],
|
|
191
|
+
[CLARITY_REVIEW_AGENT_KIND, 'clarity-review'],
|
|
192
|
+
[REQUIREMENTS_BRAINSTORM_AGENT_KIND, 'brainstorm'],
|
|
193
|
+
[ARCHITECTURE_BRAINSTORM_AGENT_KIND, 'brainstorm'],
|
|
194
|
+
[INPUT_GATE_PARK_SURFACE, 'input-gate'],
|
|
195
|
+
[APPROVAL_GATE_PARK_SURFACE, 'approval-gate'],
|
|
196
|
+
[INTERVIEW_PARK_SURFACE, 'interview'],
|
|
197
|
+
// The PR deep review's finding curation: `…/decisions/pr-review/resolve` (finish / fix / post),
|
|
198
|
+
// plus per-finding dismiss, challenge and resume.
|
|
199
|
+
[PR_REVIEWER_KIND, 'pr-review'],
|
|
161
200
|
]);
|
|
162
201
|
/** The enabled steps of a pipeline, paired with their ORIGINAL index (gates are index-aligned). */
|
|
163
202
|
function enabledSteps(pipeline) {
|
|
@@ -189,16 +228,17 @@ export function admissionRegistries(source) {
|
|
|
189
228
|
}
|
|
190
229
|
/**
|
|
191
230
|
* Whether a pipeline can PARK the run on a human decision: an approval gate on an enabled step, one
|
|
192
|
-
* of the {@link PARKING_INLINE_KINDS} review/brainstorm kinds,
|
|
193
|
-
*
|
|
194
|
-
* loop. It just needs an answerer, which is what the
|
|
231
|
+
* of the {@link PARKING_INLINE_KINDS} review/brainstorm kinds, a gate that waits on a person with
|
|
232
|
+
* no deadline ({@link isHumanWaitGate}), or a step that curates ({@link isCurationGate}). Parking
|
|
233
|
+
* is not a defect: it is the clarification loop. It just needs an answerer, which is what the
|
|
234
|
+
* `decide` scope asserts.
|
|
195
235
|
*/
|
|
196
236
|
export function canParkOnHuman(pipeline, registries) {
|
|
197
237
|
return parkSurfacesOf(pipeline, registries).length > 0;
|
|
198
238
|
}
|
|
199
239
|
/**
|
|
200
240
|
* Every park surface an ENABLED step of `pipeline` can put the run on, in step order and deduped.
|
|
201
|
-
*
|
|
241
|
+
* Six mechanisms, each a separate check because each parks for a different reason:
|
|
202
242
|
*
|
|
203
243
|
* 1. an approval gate flag on the step ({@link APPROVAL_GATE_PARK_SURFACE});
|
|
204
244
|
* 2. the step's own kind being an inline review/brainstorm ({@link PARKING_INLINE_KINDS});
|
|
@@ -206,19 +246,24 @@ export function canParkOnHuman(pipeline, registries) {
|
|
|
206
246
|
* ({@link isHumanWaitGate});
|
|
207
247
|
* 4. the step's own kind carrying the `interview-gate` TRAIT ({@link INTERVIEW_PARK_SURFACE});
|
|
208
248
|
* 5. the step's OPTIONS configuring a binary-candidate comparison
|
|
209
|
-
* ({@link BINARY_CANDIDATE_PARK_SURFACE})
|
|
249
|
+
* ({@link BINARY_CANDIDATE_PARK_SURFACE});
|
|
250
|
+
* 6. the step's own kind carrying the `curation-gate` TRAIT ({@link isCurationGate}).
|
|
210
251
|
*
|
|
211
252
|
* This is the single enumeration {@link canParkOnHuman} derives its boolean from, so the predicate
|
|
212
253
|
* and the explanation a caller is given can never disagree about what parks.
|
|
213
254
|
*
|
|
214
|
-
* Cases 4 and
|
|
215
|
-
* gates already taught repeating itself: an enumeration written against the park
|
|
216
|
-
* somebody thought of misses the ones they did not, so ask what each entry is DERIVED
|
|
217
|
-
* 2, 3 and
|
|
218
|
-
* a gate's registered `pollExhaustion`, a registered trait). Case 5 derives
|
|
219
|
-
* configuration, which is the same property one level down: it is what a
|
|
220
|
-
* than what it registers, and it was invisible here until a shipped
|
|
221
|
-
* Whatever is added next should be derivable too.
|
|
255
|
+
* Cases 4, 5 and 6 each arrived after the earlier ones had shipped, which is the lesson the
|
|
256
|
+
* human-wait gates already taught repeating itself: an enumeration written against the park
|
|
257
|
+
* mechanisms somebody thought of misses the ones they did not, so ask what each entry is DERIVED
|
|
258
|
+
* from. Cases 2, 3, 4 and 6 derive from a declaration a deployment's own registrations flow
|
|
259
|
+
* through (a kind list, a gate's registered `pollExhaustion`, a registered trait). Case 5 derives
|
|
260
|
+
* from the step's stored configuration, which is the same property one level down: it is what a
|
|
261
|
+
* deployment AUTHORS rather than what it registers, and it was invisible here until a shipped
|
|
262
|
+
* preset finally set it. Whatever is added next should be derivable too.
|
|
263
|
+
*
|
|
264
|
+
* Case 6 is the one that had been missed LONGEST, and the shape of the miss is worth keeping: the
|
|
265
|
+
* two kinds that carry it park through machinery of their OWN rather than through anything shared,
|
|
266
|
+
* so there was no declaration to read until the trait was added to make one.
|
|
222
267
|
*
|
|
223
268
|
* TWO THINGS ARE DELIBERATELY NOT HERE, and they are absent for two different reasons:
|
|
224
269
|
*
|
|
@@ -245,9 +290,19 @@ export function parkSurfacesOf(pipeline, registries) {
|
|
|
245
290
|
if (PARKING_INLINE_KINDS.has(kind) || isHumanWaitGate(kind, registries.gates)) {
|
|
246
291
|
surfaces.add(kind);
|
|
247
292
|
}
|
|
248
|
-
|
|
293
|
+
// Resolved ONCE per step: `traitsFor` unions the kind's standard traits, its registration's
|
|
294
|
+
// own and any assigned to it into a fresh Set on every call, and two trait questions asking it
|
|
295
|
+
// twice doubles that per step of every pipeline the discovery list projects.
|
|
296
|
+
const traits = traitsFor(kind, registries.agentKinds);
|
|
297
|
+
if (traits.has(INTERVIEW_GATE_TRAIT)) {
|
|
249
298
|
surfaces.add(INTERVIEW_PARK_SURFACE);
|
|
250
299
|
}
|
|
300
|
+
// Named by the KIND, the way the inline review/brainstorm kinds are, rather than by one shared
|
|
301
|
+
// label: what a caller has to be able to answer differs per curation kind (a PR review's
|
|
302
|
+
// findings have public verbs, an expedition's catch does not), so collapsing them would make
|
|
303
|
+
// the refusal promise an answer path for whichever one it did not mean.
|
|
304
|
+
if (isCurationGate(traits))
|
|
305
|
+
surfaces.add(kind);
|
|
251
306
|
if (pipeline.stepOptions?.[i]?.binaryOutput?.comparison) {
|
|
252
307
|
surfaces.add(BINARY_CANDIDATE_PARK_SURFACE);
|
|
253
308
|
}
|
|
@@ -264,10 +319,17 @@ export function parkSurfacesOf(pipeline, registries) {
|
|
|
264
319
|
* got a run whose only exit is `POST /api/v1/jobs/:id/cancel` — the platform's degrade-loudly rule
|
|
265
320
|
* inverted, since the refusal was confidently describing a capability it does not have.
|
|
266
321
|
*
|
|
267
|
-
*
|
|
268
|
-
* `POST /tasks/:taskId/start` adopted it with the API-stability commitment (the tracker's
|
|
269
|
-
* question, settled)
|
|
270
|
-
* not
|
|
322
|
+
* Every public path that sets a run in motion applies the parking rule now: `POST /jobs` always
|
|
323
|
+
* has, `POST /tasks/:taskId/start` adopted it with the API-stability commitment (the tracker's
|
|
324
|
+
* open question, settled), and `POST /tasks/:taskId/retry` re-drives the run's STORED steps under
|
|
325
|
+
* the same rule. A `write` key must not be able to set in motion a park it is by definition not
|
|
326
|
+
* trusted to answer, and which of the three calls started it makes no difference to that.
|
|
327
|
+
*
|
|
328
|
+
* The park surfaces are listed verbatim (they are what a reader matches against the pipeline's own
|
|
329
|
+
* steps) while the answer promise names DECISION KINDS, out of
|
|
330
|
+
* {@link PUBLICLY_ANSWERABLE_PARK_SURFACES}. Three surfaces are spelled differently in the two
|
|
331
|
+
* places, so naming the surface in a sentence that points at `decisions[]` told an integration to
|
|
332
|
+
* look for a `pr-reviewer` entry that is never there.
|
|
271
333
|
*
|
|
272
334
|
* `cancelPath` is REQUIRED rather than defaulted, because which route frees an abandoned park is a
|
|
273
335
|
* property of the START SURFACE and every surface answers differently: a headless job is cancelled
|
|
@@ -279,7 +341,16 @@ export function parkSurfacesOf(pipeline, registries) {
|
|
|
279
341
|
*/
|
|
280
342
|
export function parkingRefusalMessage(surfaces, options) {
|
|
281
343
|
const { cancelPath } = options;
|
|
282
|
-
|
|
344
|
+
// The ANSWERABLE half is named by DECISION KIND, deduped, because the sentence points a caller
|
|
345
|
+
// at `decisions[]` and that is the field it will look the entry up by. The surfaces are still
|
|
346
|
+
// listed verbatim in the first sentence, which is where a reader matches the message against
|
|
347
|
+
// the pipeline's own step chain.
|
|
348
|
+
const answerable = [
|
|
349
|
+
...new Set(surfaces.flatMap((s) => {
|
|
350
|
+
const kind = PUBLICLY_ANSWERABLE_PARK_SURFACES.get(s);
|
|
351
|
+
return kind ? [kind] : [];
|
|
352
|
+
})),
|
|
353
|
+
];
|
|
283
354
|
const unanswerable = surfaces.filter((s) => !PUBLICLY_ANSWERABLE_PARK_SURFACES.has(s));
|
|
284
355
|
const parts = [`This pipeline can park on a human decision (${surfaces.join(', ')}).`];
|
|
285
356
|
parts.push(answerable.length > 0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publicApiAdmission.js","sourceRoot":"","sources":["../../../src/modules/publicApi/publicApiAdmission.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,0FAA0F;AAC1F,mCAAmC;AACnC,EAAE;AACF,iGAAiG;AACjG,mGAAmG;AACnG,mGAAmG;AACnG,mGAAmG;AACnG,sFAAsF;AACtF,mCAAmC;AACnC,EAAE;AACF,iEAAiE;AAEjE,OAAO,EAEL,kCAAkC,EAClC,yBAAyB,EACzB,
|
|
1
|
+
{"version":3,"file":"publicApiAdmission.js","sourceRoot":"","sources":["../../../src/modules/publicApi/publicApiAdmission.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SandboxController.d.ts","sourceRoot":"","sources":["../../../src/modules/sandbox/SandboxController.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAU/C;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"SandboxController.d.ts","sourceRoot":"","sources":["../../../src/modules/sandbox/SandboxController.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAU/C;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAAC,MAAM,CAAC,CAwHhD"}
|
|
@@ -89,7 +89,10 @@ export function sandboxController() {
|
|
|
89
89
|
// Run + grade every cell of the experiment, then return the full result grid.
|
|
90
90
|
buildHonoRoute(app, launchSandboxExperimentContract, async (c) => {
|
|
91
91
|
const sandbox = requireSandbox(c);
|
|
92
|
-
return c.json(
|
|
92
|
+
return c.json(
|
|
93
|
+
// The launcher, so every cell's model call draws on their credential tier too: an
|
|
94
|
+
// experiment has no run, so this is the only tier beyond the workspace it can carry.
|
|
95
|
+
await sandbox.runService.launch(param(c, 'workspaceId'), c.req.valid('param').experimentId, c.get('user')?.id), 200);
|
|
93
96
|
});
|
|
94
97
|
return app;
|
|
95
98
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SandboxController.js","sourceRoot":"","sources":["../../../src/modules/sandbox/SandboxController.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"SandboxController.js","sourceRoot":"","sources":["../../../src/modules/sandbox/SandboxController.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ import type { PersistenceMethodTable } from './rpc.js';
|
|
|
13
13
|
*
|
|
14
14
|
* Still EXCLUDED (added in later gate slices, with their own scope rules, or kept
|
|
15
15
|
* mothership-internal):
|
|
16
|
-
* - `subscriptionActivationRepository.
|
|
16
|
+
* - `subscriptionActivationRepository.deleteByScope`: the activation row is the local
|
|
17
17
|
* `node:sqlite` bucket (per the per-repo checklist), not the remote surface, so it is not
|
|
18
18
|
* exposed here.
|
|
19
19
|
* - Global sweeper methods (`listStale`, `deleteOlderThan`) and high-impact unscoped ops
|
|
@@ -27,7 +27,7 @@ import { VCS_PERSISTENCE_METHODS } from './rpc-allowlist-vcs.js';
|
|
|
27
27
|
*
|
|
28
28
|
* Still EXCLUDED (added in later gate slices, with their own scope rules, or kept
|
|
29
29
|
* mothership-internal):
|
|
30
|
-
* - `subscriptionActivationRepository.
|
|
30
|
+
* - `subscriptionActivationRepository.deleteByScope`: the activation row is the local
|
|
31
31
|
* `node:sqlite` bucket (per the per-repo checklist), not the remote surface, so it is not
|
|
32
32
|
* exposed here.
|
|
33
33
|
* - Global sweeper methods (`listStale`, `deleteOlderThan`) and high-impact unscoped ops
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cat-factory/server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.323.0",
|
|
4
4
|
"description": "Runtime-neutral HTTP layer for the Agent Architecture Board: the Hono controllers, middleware (auth/authz/CORS/error), request helpers and the gateway seams shared by every deployment facade (Cloudflare Worker, Node service).",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -24,13 +24,13 @@
|
|
|
24
24
|
"access": "public"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@cat-factory/agents": "0.
|
|
28
|
-
"@cat-factory/contracts": "0.
|
|
29
|
-
"@cat-factory/integrations": "0.
|
|
30
|
-
"@cat-factory/kernel": "0.
|
|
31
|
-
"@cat-factory/mcp-server": "0.
|
|
32
|
-
"@cat-factory/orchestration": "0.
|
|
33
|
-
"@cat-factory/spend": "0.21.
|
|
27
|
+
"@cat-factory/agents": "0.165.0",
|
|
28
|
+
"@cat-factory/contracts": "0.353.0",
|
|
29
|
+
"@cat-factory/integrations": "0.173.1",
|
|
30
|
+
"@cat-factory/kernel": "0.346.1",
|
|
31
|
+
"@cat-factory/mcp-server": "0.50.0",
|
|
32
|
+
"@cat-factory/orchestration": "0.311.0",
|
|
33
|
+
"@cat-factory/spend": "0.21.7",
|
|
34
34
|
"@toad-contracts/core": "0.4.0",
|
|
35
35
|
"@toad-contracts/hono": "0.3.2",
|
|
36
36
|
"@toad-contracts/valibot": "0.5.0",
|