@cat-factory/contracts 0.124.0 → 0.125.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/agent-presentation.d.ts +2 -2
- package/dist/entities.d.ts +115 -0
- package/dist/entities.d.ts.map +1 -1
- package/dist/entities.js +36 -0
- package/dist/entities.js.map +1 -1
- package/dist/forkDecision.d.ts +169 -0
- package/dist/forkDecision.d.ts.map +1 -0
- package/dist/forkDecision.js +145 -0
- package/dist/forkDecision.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/merge.d.ts +32 -0
- package/dist/merge.d.ts.map +1 -1
- package/dist/merge.js +15 -0
- package/dist/merge.js.map +1 -1
- package/dist/notifications.d.ts +6 -2
- package/dist/notifications.d.ts.map +1 -1
- package/dist/notifications.js +8 -0
- package/dist/notifications.js.map +1 -1
- package/dist/result-views.d.ts +1 -1
- package/dist/result-views.d.ts.map +1 -1
- package/dist/result-views.js +1 -0
- package/dist/result-views.js.map +1 -1
- package/dist/routes/agent-runs.d.ts +72 -0
- package/dist/routes/agent-runs.d.ts.map +1 -1
- package/dist/routes/execution.d.ts +288 -0
- package/dist/routes/execution.d.ts.map +1 -1
- package/dist/routes/forkDecision.d.ts +143 -0
- package/dist/routes/forkDecision.d.ts.map +1 -0
- package/dist/routes/forkDecision.js +27 -0
- package/dist/routes/forkDecision.js.map +1 -0
- package/dist/routes/human-review.d.ts +36 -0
- package/dist/routes/human-review.d.ts.map +1 -1
- package/dist/routes/human-test.d.ts +180 -0
- package/dist/routes/human-test.d.ts.map +1 -1
- package/dist/routes/index.d.ts +1 -0
- package/dist/routes/index.d.ts.map +1 -1
- package/dist/routes/index.js +1 -0
- package/dist/routes/index.js.map +1 -1
- package/dist/routes/merge.d.ts +42 -0
- package/dist/routes/merge.d.ts.map +1 -1
- package/dist/routes/notifications.d.ts +6 -3
- package/dist/routes/notifications.d.ts.map +1 -1
- package/dist/routes/slack.d.ts +3 -3
- package/dist/routes/visual-confirm.d.ts +108 -0
- package/dist/routes/visual-confirm.d.ts.map +1 -1
- package/dist/routes/workspaces.d.ts +92 -4
- package/dist/routes/workspaces.d.ts.map +1 -1
- package/dist/slack.d.ts +2 -2
- package/dist/snapshot.d.ts +46 -2
- package/dist/snapshot.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import * as v from 'valibot';
|
|
2
|
+
/**
|
|
3
|
+
* One materially different implementation approach the proposer surfaced. Two
|
|
4
|
+
* forks are materially different only if they lead to different code being
|
|
5
|
+
* reviewed, different risk, or different future maintenance — naming/style
|
|
6
|
+
* variants of one approach are ONE fork. `id` is engine-minted (`fork_*`).
|
|
7
|
+
*/
|
|
8
|
+
export declare const forkOptionSchema: v.ObjectSchema<{
|
|
9
|
+
/** Engine-minted stable id (`fork_*`); assigned when the proposal is recorded. */
|
|
10
|
+
readonly id: v.StringSchema<undefined>;
|
|
11
|
+
/** Short headline of the approach. */
|
|
12
|
+
readonly title: v.StringSchema<undefined>;
|
|
13
|
+
/** One-line gist of what this approach does. */
|
|
14
|
+
readonly summary: v.StringSchema<undefined>;
|
|
15
|
+
/** The concrete plan: seams/files/modules touched and the order of work. */
|
|
16
|
+
readonly approach: v.StringSchema<undefined>;
|
|
17
|
+
/** Honest pros AND cons of this approach (both directions). */
|
|
18
|
+
readonly tradeoffs: v.ArraySchema<v.StringSchema<undefined>, undefined>;
|
|
19
|
+
/** Anything irreversible this approach entails (schema, wire contracts, data). */
|
|
20
|
+
readonly riskNotes: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
21
|
+
/** The proposer marks exactly one fork recommended. */
|
|
22
|
+
readonly recommended: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
23
|
+
}, undefined>;
|
|
24
|
+
export type ForkOption = v.InferOutput<typeof forkOptionSchema>;
|
|
25
|
+
/**
|
|
26
|
+
* One turn in the grounded fork chat. Assistant turns are appended by the durable
|
|
27
|
+
* driver's inline LLM call (the chat responder). Chat is delivered live on the
|
|
28
|
+
* `execution` event — there is no dedicated chat table.
|
|
29
|
+
*/
|
|
30
|
+
export declare const forkChatMessageSchema: v.ObjectSchema<{
|
|
31
|
+
readonly id: v.StringSchema<undefined>;
|
|
32
|
+
readonly role: v.PicklistSchema<["human", "assistant"], undefined>;
|
|
33
|
+
readonly text: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 4000, undefined>]>;
|
|
34
|
+
readonly createdAt: v.NumberSchema<undefined>;
|
|
35
|
+
}, undefined>;
|
|
36
|
+
export type ForkChatMessage = v.InferOutput<typeof forkChatMessageSchema>;
|
|
37
|
+
/**
|
|
38
|
+
* The fork-decision lifecycle on a coder step:
|
|
39
|
+
* - `proposing`: the `fork-proposer` explore job is in flight (phase A).
|
|
40
|
+
* - `awaiting_choice`: parked; the human picks / types a custom approach / chats.
|
|
41
|
+
* - `answering`: a chat turn is pending (`pendingForkChat` set; the driver is
|
|
42
|
+
* computing the reply). Re-enters `awaiting_choice` once the reply is appended.
|
|
43
|
+
* - `chosen`: the human decided; the Coder dispatch (phase B) runs next.
|
|
44
|
+
* - `single_path`: the proposer's escape hatch fired (a trivial/obvious task or a
|
|
45
|
+
* prescribed pattern) — no park, the Coder runs directly.
|
|
46
|
+
* - `skipped`: the estimate gate was not met (or tri-state `off`) — the Coder runs
|
|
47
|
+
* directly, exactly as before the feature existed.
|
|
48
|
+
*/
|
|
49
|
+
export declare const forkDecisionStatusSchema: v.PicklistSchema<["proposing", "awaiting_choice", "answering", "chosen", "single_path", "skipped"], undefined>;
|
|
50
|
+
export type ForkDecisionStatus = v.InferOutput<typeof forkDecisionStatusSchema>;
|
|
51
|
+
/**
|
|
52
|
+
* The human's resolution: EXACTLY one of a picked `forkId` or a free-text `custom`
|
|
53
|
+
* approach (enforced by the xor check). A picked fork may carry a steering `note`.
|
|
54
|
+
*/
|
|
55
|
+
export declare const forkChoiceSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
56
|
+
/** The chosen proposed fork's id; absent when the human entered a custom approach. */
|
|
57
|
+
readonly forkId: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
58
|
+
/** The human's own free-text approach; absent when a proposed fork was picked. */
|
|
59
|
+
readonly custom: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
60
|
+
/** Optional steering note the human added to a picked fork. */
|
|
61
|
+
readonly note: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
62
|
+
readonly at: v.NumberSchema<undefined>;
|
|
63
|
+
}, undefined>, v.CheckAction<{
|
|
64
|
+
forkId?: string | null | undefined;
|
|
65
|
+
custom?: string | null | undefined;
|
|
66
|
+
note?: string | null | undefined;
|
|
67
|
+
at: number;
|
|
68
|
+
}, "Provide exactly one of forkId or custom.">]>;
|
|
69
|
+
export type ForkChoice = v.InferOutput<typeof forkChoiceSchema>;
|
|
70
|
+
/**
|
|
71
|
+
* Live fork-decision state carried on the run's coder step. Created lazily by the
|
|
72
|
+
* engine when the phase activates (the config itself never lives on the step —
|
|
73
|
+
* it's on the block + the risk policy). `seamSummary` is the proposer's read of
|
|
74
|
+
* where the change lands (grounding for the human + the chat); `maxChatTurns`
|
|
75
|
+
* bounds inline LLM spend and step-row size; `model` records the proposing model.
|
|
76
|
+
*/
|
|
77
|
+
export declare const forkDecisionStepStateSchema: v.ObjectSchema<{
|
|
78
|
+
readonly status: v.PicklistSchema<["proposing", "awaiting_choice", "answering", "chosen", "single_path", "skipped"], undefined>;
|
|
79
|
+
/** The proposer's read of where the change lands (the seam it identified). */
|
|
80
|
+
readonly seamSummary: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
81
|
+
/** The materially different approaches; empty until the proposer completes. */
|
|
82
|
+
readonly forks: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
83
|
+
/** Engine-minted stable id (`fork_*`); assigned when the proposal is recorded. */
|
|
84
|
+
readonly id: v.StringSchema<undefined>;
|
|
85
|
+
/** Short headline of the approach. */
|
|
86
|
+
readonly title: v.StringSchema<undefined>;
|
|
87
|
+
/** One-line gist of what this approach does. */
|
|
88
|
+
readonly summary: v.StringSchema<undefined>;
|
|
89
|
+
/** The concrete plan: seams/files/modules touched and the order of work. */
|
|
90
|
+
readonly approach: v.StringSchema<undefined>;
|
|
91
|
+
/** Honest pros AND cons of this approach (both directions). */
|
|
92
|
+
readonly tradeoffs: v.ArraySchema<v.StringSchema<undefined>, undefined>;
|
|
93
|
+
/** Anything irreversible this approach entails (schema, wire contracts, data). */
|
|
94
|
+
readonly riskNotes: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
95
|
+
/** The proposer marks exactly one fork recommended. */
|
|
96
|
+
readonly recommended: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
97
|
+
}, undefined>, undefined>, readonly []>;
|
|
98
|
+
/** Why the proposer took the single-path escape hatch, when `status` is `single_path`. */
|
|
99
|
+
readonly singlePathReason: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
100
|
+
/** The grounded chat so far (human + assistant turns), in order. */
|
|
101
|
+
readonly chat: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
102
|
+
readonly id: v.StringSchema<undefined>;
|
|
103
|
+
readonly role: v.PicklistSchema<["human", "assistant"], undefined>;
|
|
104
|
+
readonly text: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 4000, undefined>]>;
|
|
105
|
+
readonly createdAt: v.NumberSchema<undefined>;
|
|
106
|
+
}, undefined>, undefined>, readonly []>;
|
|
107
|
+
/** Hard budget on chat turns (human messages); a 409 is returned past it. */
|
|
108
|
+
readonly maxChatTurns: v.OptionalSchema<v.NumberSchema<undefined>, 15>;
|
|
109
|
+
/** The human's resolution once decided; absent while proposing / awaiting. */
|
|
110
|
+
readonly chosen: v.OptionalSchema<v.NullableSchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
111
|
+
/** The chosen proposed fork's id; absent when the human entered a custom approach. */
|
|
112
|
+
readonly forkId: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
113
|
+
/** The human's own free-text approach; absent when a proposed fork was picked. */
|
|
114
|
+
readonly custom: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
115
|
+
/** Optional steering note the human added to a picked fork. */
|
|
116
|
+
readonly note: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
117
|
+
readonly at: v.NumberSchema<undefined>;
|
|
118
|
+
}, undefined>, v.CheckAction<{
|
|
119
|
+
forkId?: string | null | undefined;
|
|
120
|
+
custom?: string | null | undefined;
|
|
121
|
+
note?: string | null | undefined;
|
|
122
|
+
at: number;
|
|
123
|
+
}, "Provide exactly one of forkId or custom.">]>, undefined>, undefined>;
|
|
124
|
+
/** Identifier of the model that produced the proposal, for transparency. */
|
|
125
|
+
readonly model: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
126
|
+
}, undefined>;
|
|
127
|
+
export type ForkDecisionStepState = v.InferOutput<typeof forkDecisionStepStateSchema>;
|
|
128
|
+
/** Send a human chat message about the proposed forks (the reply arrives via the stream). */
|
|
129
|
+
export declare const forkChatRequestSchema: v.ObjectSchema<{
|
|
130
|
+
readonly text: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 4000, undefined>]>;
|
|
131
|
+
}, undefined>;
|
|
132
|
+
export type ForkChatRequestInput = v.InferOutput<typeof forkChatRequestSchema>;
|
|
133
|
+
/**
|
|
134
|
+
* Choose an implementation fork: EXACTLY one of a proposed `forkId` or a free-text
|
|
135
|
+
* `custom` approach (≤8000 chars). A picked fork may carry a steering `note`.
|
|
136
|
+
*/
|
|
137
|
+
export declare const chooseForkSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
138
|
+
readonly forkId: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
139
|
+
readonly custom: v.OptionalSchema<v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 8000, undefined>]>, undefined>, undefined>;
|
|
140
|
+
readonly note: v.OptionalSchema<v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 4000, undefined>]>, undefined>, undefined>;
|
|
141
|
+
}, undefined>, v.CheckAction<{
|
|
142
|
+
forkId?: string | null | undefined;
|
|
143
|
+
custom?: string | null | undefined;
|
|
144
|
+
note?: string | null | undefined;
|
|
145
|
+
}, "Provide exactly one of forkId or custom.">]>;
|
|
146
|
+
export type ChooseForkInput = v.InferOutput<typeof chooseForkSchema>;
|
|
147
|
+
/**
|
|
148
|
+
* The lenient structured shape the `fork-proposer` explore agent returns (the
|
|
149
|
+
* engine mints ids / records it onto the step). `singlePath` is the escape hatch:
|
|
150
|
+
* when true, any competent senior engineer would implement it the same way, so no
|
|
151
|
+
* park happens and the Coder runs directly against the one returned fork.
|
|
152
|
+
*/
|
|
153
|
+
export declare const forkProposalSchema: v.ObjectSchema<{
|
|
154
|
+
/** The proposer's read of where the change lands. */
|
|
155
|
+
readonly seamSummary: v.OptionalSchema<v.StringSchema<undefined>, "">;
|
|
156
|
+
readonly forks: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
157
|
+
readonly title: v.OptionalSchema<v.StringSchema<undefined>, "">;
|
|
158
|
+
readonly summary: v.OptionalSchema<v.StringSchema<undefined>, "">;
|
|
159
|
+
readonly approach: v.OptionalSchema<v.StringSchema<undefined>, "">;
|
|
160
|
+
readonly tradeoffs: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, readonly []>;
|
|
161
|
+
readonly riskNotes: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
162
|
+
readonly recommended: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
163
|
+
}, undefined>, undefined>, readonly []>;
|
|
164
|
+
/** True ⇒ trivial/obvious/prescribed; return the one fork and skip the park. */
|
|
165
|
+
readonly singlePath: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
|
|
166
|
+
readonly singlePathReason: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
167
|
+
}, undefined>;
|
|
168
|
+
export type ForkProposal = v.InferOutput<typeof forkProposalSchema>;
|
|
169
|
+
//# sourceMappingURL=forkDecision.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forkDecision.d.ts","sourceRoot":"","sources":["../src/forkDecision.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAqB5B;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB;IAC3B,kFAAkF;;IAElF,sCAAsC;;IAEtC,gDAAgD;;IAEhD,4EAA4E;;IAE5E,+DAA+D;;IAE/D,kFAAkF;;IAElF,uDAAuD;;aAEvD,CAAA;AACF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAE/D;;;;GAIG;AACH,eAAO,MAAM,qBAAqB;;;;;aAKhC,CAAA;AACF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEzE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,wBAAwB,gHAOnC,CAAA;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAE/E;;;GAGG;AACH,eAAO,MAAM,gBAAgB;IAEzB,sFAAsF;;IAEtF,kFAAkF;;IAElF,+DAA+D;;;;;;;;gDAQlE,CAAA;AACD,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAE/D;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B;;IAEtC,8EAA8E;;IAE9E,+EAA+E;;QApF/E,kFAAkF;;QAElF,sCAAsC;;QAEtC,gDAAgD;;QAEhD,4EAA4E;;QAE5E,+DAA+D;;QAE/D,kFAAkF;;QAElF,uDAAuD;;;IA0EvD,0FAA0F;;IAE1F,oEAAoE;;;;;;;IAEpE,6EAA6E;;IAE7E,8EAA8E;;QAlC5E,sFAAsF;;QAEtF,kFAAkF;;QAElF,+DAA+D;;;;;;;;;IAgCjE,4EAA4E;;aAE5E,CAAA;AACF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,2BAA2B,CAAC,CAAA;AAIrF,6FAA6F;AAC7F,eAAO,MAAM,qBAAqB;;aAEhC,CAAA;AACF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAE9E;;;GAGG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;gDAU5B,CAAA;AACD,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAEpE;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB;IAC7B,qDAAqD;;;;;;;;;;IAerD,gFAAgF;;;aAGhF,CAAA;AACF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,kBAAkB,CAAC,CAAA"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import * as v from 'valibot';
|
|
2
|
+
// ---------------------------------------------------------------------------
|
|
3
|
+
// Implementation-fork decision wire contracts. Before the Coder (agentKind
|
|
4
|
+
// `coder`, the standard `build` phase) writes any code, an optional read-only
|
|
5
|
+
// `fork-proposer` explore agent aggressively surfaces the MATERIALLY different
|
|
6
|
+
// ways the task could be implemented ("patch the call site vs refactor the
|
|
7
|
+
// seam", "migrate the schema vs adapt the mapper", "targeted fix vs behind a
|
|
8
|
+
// flag"). The run then PARKS for the human to pick a proposed fork, enter their
|
|
9
|
+
// own free-text approach, or chat about the forks before deciding; the chosen
|
|
10
|
+
// fork is folded into the Coder's prompt as a binding directive.
|
|
11
|
+
//
|
|
12
|
+
// The phase lives INSIDE the coder step (a two-phase coder step): phase A is the
|
|
13
|
+
// proposer explore dispatch, then the human park, then phase B is the ordinary
|
|
14
|
+
// Coder dispatch with the chosen approach folded in. It is gated on the task
|
|
15
|
+
// Estimator's estimate via the workspace risk policy (see `riskPolicySchema`),
|
|
16
|
+
// plus a per-task tri-state (`auto`/`always`/`off`). All state rides the run's
|
|
17
|
+
// coder step (`PipelineStep.forkDecision`) — no side table — so it is
|
|
18
|
+
// runtime-symmetric by construction, exactly like `followUps` / `testerQuality`.
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
/**
|
|
21
|
+
* One materially different implementation approach the proposer surfaced. Two
|
|
22
|
+
* forks are materially different only if they lead to different code being
|
|
23
|
+
* reviewed, different risk, or different future maintenance — naming/style
|
|
24
|
+
* variants of one approach are ONE fork. `id` is engine-minted (`fork_*`).
|
|
25
|
+
*/
|
|
26
|
+
export const forkOptionSchema = v.object({
|
|
27
|
+
/** Engine-minted stable id (`fork_*`); assigned when the proposal is recorded. */
|
|
28
|
+
id: v.string(),
|
|
29
|
+
/** Short headline of the approach. */
|
|
30
|
+
title: v.string(),
|
|
31
|
+
/** One-line gist of what this approach does. */
|
|
32
|
+
summary: v.string(),
|
|
33
|
+
/** The concrete plan: seams/files/modules touched and the order of work. */
|
|
34
|
+
approach: v.string(),
|
|
35
|
+
/** Honest pros AND cons of this approach (both directions). */
|
|
36
|
+
tradeoffs: v.array(v.string()),
|
|
37
|
+
/** Anything irreversible this approach entails (schema, wire contracts, data). */
|
|
38
|
+
riskNotes: v.optional(v.nullable(v.string())),
|
|
39
|
+
/** The proposer marks exactly one fork recommended. */
|
|
40
|
+
recommended: v.optional(v.boolean()),
|
|
41
|
+
});
|
|
42
|
+
/**
|
|
43
|
+
* One turn in the grounded fork chat. Assistant turns are appended by the durable
|
|
44
|
+
* driver's inline LLM call (the chat responder). Chat is delivered live on the
|
|
45
|
+
* `execution` event — there is no dedicated chat table.
|
|
46
|
+
*/
|
|
47
|
+
export const forkChatMessageSchema = v.object({
|
|
48
|
+
id: v.string(),
|
|
49
|
+
role: v.picklist(['human', 'assistant']),
|
|
50
|
+
text: v.pipe(v.string(), v.maxLength(4000)),
|
|
51
|
+
createdAt: v.number(),
|
|
52
|
+
});
|
|
53
|
+
/**
|
|
54
|
+
* The fork-decision lifecycle on a coder step:
|
|
55
|
+
* - `proposing`: the `fork-proposer` explore job is in flight (phase A).
|
|
56
|
+
* - `awaiting_choice`: parked; the human picks / types a custom approach / chats.
|
|
57
|
+
* - `answering`: a chat turn is pending (`pendingForkChat` set; the driver is
|
|
58
|
+
* computing the reply). Re-enters `awaiting_choice` once the reply is appended.
|
|
59
|
+
* - `chosen`: the human decided; the Coder dispatch (phase B) runs next.
|
|
60
|
+
* - `single_path`: the proposer's escape hatch fired (a trivial/obvious task or a
|
|
61
|
+
* prescribed pattern) — no park, the Coder runs directly.
|
|
62
|
+
* - `skipped`: the estimate gate was not met (or tri-state `off`) — the Coder runs
|
|
63
|
+
* directly, exactly as before the feature existed.
|
|
64
|
+
*/
|
|
65
|
+
export const forkDecisionStatusSchema = v.picklist([
|
|
66
|
+
'proposing',
|
|
67
|
+
'awaiting_choice',
|
|
68
|
+
'answering',
|
|
69
|
+
'chosen',
|
|
70
|
+
'single_path',
|
|
71
|
+
'skipped',
|
|
72
|
+
]);
|
|
73
|
+
/**
|
|
74
|
+
* The human's resolution: EXACTLY one of a picked `forkId` or a free-text `custom`
|
|
75
|
+
* approach (enforced by the xor check). A picked fork may carry a steering `note`.
|
|
76
|
+
*/
|
|
77
|
+
export const forkChoiceSchema = v.pipe(v.object({
|
|
78
|
+
/** The chosen proposed fork's id; absent when the human entered a custom approach. */
|
|
79
|
+
forkId: v.optional(v.nullable(v.string())),
|
|
80
|
+
/** The human's own free-text approach; absent when a proposed fork was picked. */
|
|
81
|
+
custom: v.optional(v.nullable(v.string())),
|
|
82
|
+
/** Optional steering note the human added to a picked fork. */
|
|
83
|
+
note: v.optional(v.nullable(v.string())),
|
|
84
|
+
at: v.number(),
|
|
85
|
+
}), v.check((c) => (c.forkId != null) !== (c.custom != null), 'Provide exactly one of forkId or custom.'));
|
|
86
|
+
/**
|
|
87
|
+
* Live fork-decision state carried on the run's coder step. Created lazily by the
|
|
88
|
+
* engine when the phase activates (the config itself never lives on the step —
|
|
89
|
+
* it's on the block + the risk policy). `seamSummary` is the proposer's read of
|
|
90
|
+
* where the change lands (grounding for the human + the chat); `maxChatTurns`
|
|
91
|
+
* bounds inline LLM spend and step-row size; `model` records the proposing model.
|
|
92
|
+
*/
|
|
93
|
+
export const forkDecisionStepStateSchema = v.object({
|
|
94
|
+
status: forkDecisionStatusSchema,
|
|
95
|
+
/** The proposer's read of where the change lands (the seam it identified). */
|
|
96
|
+
seamSummary: v.optional(v.nullable(v.string())),
|
|
97
|
+
/** The materially different approaches; empty until the proposer completes. */
|
|
98
|
+
forks: v.optional(v.array(forkOptionSchema), []),
|
|
99
|
+
/** Why the proposer took the single-path escape hatch, when `status` is `single_path`. */
|
|
100
|
+
singlePathReason: v.optional(v.nullable(v.string())),
|
|
101
|
+
/** The grounded chat so far (human + assistant turns), in order. */
|
|
102
|
+
chat: v.optional(v.array(forkChatMessageSchema), []),
|
|
103
|
+
/** Hard budget on chat turns (human messages); a 409 is returned past it. */
|
|
104
|
+
maxChatTurns: v.optional(v.number(), 15),
|
|
105
|
+
/** The human's resolution once decided; absent while proposing / awaiting. */
|
|
106
|
+
chosen: v.optional(v.nullable(forkChoiceSchema)),
|
|
107
|
+
/** Identifier of the model that produced the proposal, for transparency. */
|
|
108
|
+
model: v.optional(v.nullable(v.string())),
|
|
109
|
+
});
|
|
110
|
+
// ---- Request bodies -------------------------------------------------------
|
|
111
|
+
/** Send a human chat message about the proposed forks (the reply arrives via the stream). */
|
|
112
|
+
export const forkChatRequestSchema = v.object({
|
|
113
|
+
text: v.pipe(v.string(), v.trim(), v.minLength(1), v.maxLength(4000)),
|
|
114
|
+
});
|
|
115
|
+
/**
|
|
116
|
+
* Choose an implementation fork: EXACTLY one of a proposed `forkId` or a free-text
|
|
117
|
+
* `custom` approach (≤8000 chars). A picked fork may carry a steering `note`.
|
|
118
|
+
*/
|
|
119
|
+
export const chooseForkSchema = v.pipe(v.object({
|
|
120
|
+
forkId: v.optional(v.nullable(v.string())),
|
|
121
|
+
custom: v.optional(v.nullable(v.pipe(v.string(), v.trim(), v.minLength(1), v.maxLength(8000)))),
|
|
122
|
+
note: v.optional(v.nullable(v.pipe(v.string(), v.trim(), v.maxLength(4000)))),
|
|
123
|
+
}), v.check((c) => (c.forkId != null && c.forkId.length > 0) !== (c.custom != null && c.custom.length > 0), 'Provide exactly one of forkId or custom.'));
|
|
124
|
+
/**
|
|
125
|
+
* The lenient structured shape the `fork-proposer` explore agent returns (the
|
|
126
|
+
* engine mints ids / records it onto the step). `singlePath` is the escape hatch:
|
|
127
|
+
* when true, any competent senior engineer would implement it the same way, so no
|
|
128
|
+
* park happens and the Coder runs directly against the one returned fork.
|
|
129
|
+
*/
|
|
130
|
+
export const forkProposalSchema = v.object({
|
|
131
|
+
/** The proposer's read of where the change lands. */
|
|
132
|
+
seamSummary: v.optional(v.string(), ''),
|
|
133
|
+
forks: v.optional(v.array(v.object({
|
|
134
|
+
title: v.optional(v.string(), ''),
|
|
135
|
+
summary: v.optional(v.string(), ''),
|
|
136
|
+
approach: v.optional(v.string(), ''),
|
|
137
|
+
tradeoffs: v.optional(v.array(v.string()), []),
|
|
138
|
+
riskNotes: v.optional(v.nullable(v.string())),
|
|
139
|
+
recommended: v.optional(v.boolean()),
|
|
140
|
+
})), []),
|
|
141
|
+
/** True ⇒ trivial/obvious/prescribed; return the one fork and skip the park. */
|
|
142
|
+
singlePath: v.optional(v.boolean(), false),
|
|
143
|
+
singlePathReason: v.optional(v.nullable(v.string())),
|
|
144
|
+
});
|
|
145
|
+
//# sourceMappingURL=forkDecision.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forkDecision.js","sourceRoot":"","sources":["../src/forkDecision.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -33,6 +33,7 @@ export * from './iteration-cap.js';
|
|
|
33
33
|
export * from './requirements.js';
|
|
34
34
|
export * from './doc-interview.js';
|
|
35
35
|
export * from './followUp.js';
|
|
36
|
+
export * from './forkDecision.js';
|
|
36
37
|
export * from './human-test.js';
|
|
37
38
|
export * from './visual-confirm.js';
|
|
38
39
|
export * from './human-review.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,0BAA0B,CAAA;AACxC,cAAc,cAAc,CAAA;AAC5B,cAAc,sBAAsB,CAAA;AACpC,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,wBAAwB,CAAA;AACtC,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,yBAAyB,CAAA;AACvC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,cAAc,CAAA;AAC5B,cAAc,2BAA2B,CAAA;AACzC,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,yBAAyB,CAAA;AACvC,cAAc,eAAe,CAAA;AAC7B,cAAc,sBAAsB,CAAA;AACpC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,6BAA6B,CAAA;AAC3C,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,yBAAyB,CAAA;AACvC,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,0BAA0B,CAAA;AACxC,cAAc,cAAc,CAAA;AAC5B,cAAc,sBAAsB,CAAA;AACpC,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,wBAAwB,CAAA;AACtC,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,yBAAyB,CAAA;AACvC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,cAAc,CAAA;AAC5B,cAAc,2BAA2B,CAAA;AACzC,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,yBAAyB,CAAA;AACvC,cAAc,eAAe,CAAA;AAC7B,cAAc,sBAAsB,CAAA;AACpC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,6BAA6B,CAAA;AAC3C,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,yBAAyB,CAAA;AACvC,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -33,6 +33,7 @@ export * from './iteration-cap.js';
|
|
|
33
33
|
export * from './requirements.js';
|
|
34
34
|
export * from './doc-interview.js';
|
|
35
35
|
export * from './followUp.js';
|
|
36
|
+
export * from './forkDecision.js';
|
|
36
37
|
export * from './human-test.js';
|
|
37
38
|
export * from './visual-confirm.js';
|
|
38
39
|
export * from './human-review.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,0BAA0B,CAAA;AACxC,cAAc,cAAc,CAAA;AAC5B,cAAc,sBAAsB,CAAA;AACpC,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,wBAAwB,CAAA;AACtC,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,yBAAyB,CAAA;AACvC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,cAAc,CAAA;AAC5B,cAAc,2BAA2B,CAAA;AACzC,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,yBAAyB,CAAA;AACvC,cAAc,eAAe,CAAA;AAC7B,cAAc,sBAAsB,CAAA;AACpC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,6BAA6B,CAAA;AAC3C,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,yBAAyB,CAAA;AACvC,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,0BAA0B,CAAA;AACxC,cAAc,cAAc,CAAA;AAC5B,cAAc,sBAAsB,CAAA;AACpC,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,wBAAwB,CAAA;AACtC,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,yBAAyB,CAAA;AACvC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,cAAc,CAAA;AAC5B,cAAc,2BAA2B,CAAA;AACzC,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,yBAAyB,CAAA;AACvC,cAAc,eAAe,CAAA;AAC7B,cAAc,sBAAsB,CAAA;AACpC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,6BAA6B,CAAA;AAC3C,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,yBAAyB,CAAA;AACvC,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA"}
|
package/dist/merge.d.ts
CHANGED
|
@@ -89,6 +89,23 @@ export declare const riskPolicySchema: v.ObjectSchema<{
|
|
|
89
89
|
* (the historical behaviour: auto-merge a within-threshold, explained assessment).
|
|
90
90
|
*/
|
|
91
91
|
readonly autoMergeEnabled: v.BooleanSchema<undefined>;
|
|
92
|
+
/**
|
|
93
|
+
* Estimate gating for the optional implementation-fork decision phase on the Coder step
|
|
94
|
+
* (the same three axes / `onMissingEstimate` as any other {@link stepGatingSchema}). When
|
|
95
|
+
* present and `enabled`, a task whose Coder config resolves to `auto` surfaces materially
|
|
96
|
+
* different implementation approaches and parks for a human whenever ANY supplied axis of
|
|
97
|
+
* its estimate is met/exceeded; `onMissingEstimate: 'run'` proposes even without an
|
|
98
|
+
* estimate (fail toward asking). Absent/disabled ⇒ fork surfacing is off in `auto` mode
|
|
99
|
+
* (a task can still force it via its `always` tri-state). Disabled by default on the
|
|
100
|
+
* built-in presets.
|
|
101
|
+
*/
|
|
102
|
+
readonly forkDecision: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
|
|
103
|
+
readonly enabled: v.BooleanSchema<undefined>;
|
|
104
|
+
readonly minComplexity: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>, undefined>;
|
|
105
|
+
readonly minRisk: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>, undefined>;
|
|
106
|
+
readonly minImpact: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>, undefined>;
|
|
107
|
+
readonly onMissingEstimate: v.OptionalSchema<v.PicklistSchema<["run", "skip"], undefined>, "run">;
|
|
108
|
+
}, undefined>, undefined>, undefined>;
|
|
92
109
|
/** The workspace's fallback preset, used by tasks that pick none. Exactly one is true. */
|
|
93
110
|
readonly isDefault: v.BooleanSchema<undefined>;
|
|
94
111
|
/**
|
|
@@ -116,6 +133,14 @@ export declare const createRiskPolicySchema: v.ObjectSchema<{
|
|
|
116
133
|
readonly humanReviewGraceMinutes: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1440, undefined>]>, 10>;
|
|
117
134
|
/** Allow auto-merge of a within-threshold, explained assessment (default true). */
|
|
118
135
|
readonly autoMergeEnabled: v.OptionalSchema<v.BooleanSchema<undefined>, true>;
|
|
136
|
+
/** Estimate gating for the implementation-fork decision phase; absent ⇒ off in `auto` mode. */
|
|
137
|
+
readonly forkDecision: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
|
|
138
|
+
readonly enabled: v.BooleanSchema<undefined>;
|
|
139
|
+
readonly minComplexity: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>, undefined>;
|
|
140
|
+
readonly minRisk: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>, undefined>;
|
|
141
|
+
readonly minImpact: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>, undefined>;
|
|
142
|
+
readonly onMissingEstimate: v.OptionalSchema<v.PicklistSchema<["run", "skip"], undefined>, "run">;
|
|
143
|
+
}, undefined>, undefined>, undefined>;
|
|
119
144
|
/** Make this the workspace default (demotes the previous default). */
|
|
120
145
|
readonly isDefault: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
|
|
121
146
|
}, undefined>;
|
|
@@ -134,6 +159,13 @@ export declare const updateRiskPolicySchema: v.ObjectSchema<{
|
|
|
134
159
|
readonly releaseMaxAttempts: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 10, undefined>]>, undefined>;
|
|
135
160
|
readonly humanReviewGraceMinutes: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1440, undefined>]>, undefined>;
|
|
136
161
|
readonly autoMergeEnabled: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
162
|
+
readonly forkDecision: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
|
|
163
|
+
readonly enabled: v.BooleanSchema<undefined>;
|
|
164
|
+
readonly minComplexity: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>, undefined>;
|
|
165
|
+
readonly minRisk: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>, undefined>;
|
|
166
|
+
readonly minImpact: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>, undefined>;
|
|
167
|
+
readonly onMissingEstimate: v.OptionalSchema<v.PicklistSchema<["run", "skip"], undefined>, "run">;
|
|
168
|
+
}, undefined>, undefined>, undefined>;
|
|
137
169
|
readonly isDefault: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
138
170
|
}, undefined>;
|
|
139
171
|
export type UpdateRiskPolicyInput = v.InferOutput<typeof updateRiskPolicySchema>;
|
package/dist/merge.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../src/merge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../src/merge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAkB5B;;;;GAIG;AACH;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,gEAAgD,CAAA;AAC1F,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,6BAA6B,CAAC,CAAA;AAEzF,+EAA+E;AAC/E,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAK5E,CAAA;AAED,eAAO,MAAM,qBAAqB;IAChC,8DAA8D;;IAE9D,yEAAyE;;IAEzE,+DAA+D;;IAE/D,qFAAqF;;aAErF,CAAA;AACF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEzE;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB;;;IAG3B,4EAA4E;;IAE5E,sEAAsE;;IAEtE,wEAAwE;;IAExE,qFAAqF;;IAErF;;;;OAIG;;IAEH;;;;;;;OAOG;;IAEH;;;;;;OAMG;;IAEH;;;OAGG;;IAEH;;;;OAIG;;IAEH;;;;;OAKG;;IAEH;;;;;OAKG;;IAEH;;;;;;;;;OASG;;;;;;;;IAEH,0FAA0F;;IAE1F;;;;;OAKG;;;aAGH,CAAA;AACF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAY/D,0DAA0D;AAC1D,eAAO,MAAM,sBAAsB;;;;;;;;;;;;IAYjC,mFAAmF;;IAEnF,+FAA+F;;;;;;;;IAE/F,sEAAsE;;aAEtE,CAAA;AACF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAEhF,sEAAsE;AACtE,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;aAejC,CAAA;AACF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAEhF,wFAAwF;AACxF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAEpE;AAUD,yDAAyD;AACzD,eAAO,MAAM,eAAe,+DAA+C,CAAA;AAC3E,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,eAAe,CAAC,CAAA;AAE7D,yFAAyF;AACzF,eAAO,MAAM,6BAA6B;IACxC,4DAA4D;;;;;;aAM5D,CAAA;AACF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,6BAA6B,CAAC,CAAA;AAEzF,eAAO,MAAM,mBAAmB;IAC9B,gFAAgF;;IAEhF;;;;;;;;;;;;;OAaG;;IAUH,+EAA+E;;QA7M/E,8DAA8D;;QAE9D,yEAAyE;;QAEzE,+DAA+D;;QAE/D,qFAAqF;;;;QAoKrF,4DAA4D;;;;;;;IAsC5D,6FAA6F;;aAE7F,CAAA;AACF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,mBAAmB,CAAC,CAAA"}
|
package/dist/merge.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as v from 'valibot';
|
|
2
|
+
import { stepGatingSchema } from './consensus.js';
|
|
2
3
|
// ---------------------------------------------------------------------------
|
|
3
4
|
// Merge-policy wire contracts. After a pipeline's implementation work is done
|
|
4
5
|
// and CI is green, a `merger` agent assesses the pull request along three axes —
|
|
@@ -106,6 +107,17 @@ export const riskPolicySchema = v.object({
|
|
|
106
107
|
* (the historical behaviour: auto-merge a within-threshold, explained assessment).
|
|
107
108
|
*/
|
|
108
109
|
autoMergeEnabled: v.boolean(),
|
|
110
|
+
/**
|
|
111
|
+
* Estimate gating for the optional implementation-fork decision phase on the Coder step
|
|
112
|
+
* (the same three axes / `onMissingEstimate` as any other {@link stepGatingSchema}). When
|
|
113
|
+
* present and `enabled`, a task whose Coder config resolves to `auto` surfaces materially
|
|
114
|
+
* different implementation approaches and parks for a human whenever ANY supplied axis of
|
|
115
|
+
* its estimate is met/exceeded; `onMissingEstimate: 'run'` proposes even without an
|
|
116
|
+
* estimate (fail toward asking). Absent/disabled ⇒ fork surfacing is off in `auto` mode
|
|
117
|
+
* (a task can still force it via its `always` tri-state). Disabled by default on the
|
|
118
|
+
* built-in presets.
|
|
119
|
+
*/
|
|
120
|
+
forkDecision: v.optional(v.nullable(stepGatingSchema)),
|
|
109
121
|
/** The workspace's fallback preset, used by tasks that pick none. Exactly one is true. */
|
|
110
122
|
isDefault: v.boolean(),
|
|
111
123
|
/**
|
|
@@ -140,6 +152,8 @@ export const createRiskPolicySchema = v.object({
|
|
|
140
152
|
humanReviewGraceMinutes: v.optional(graceMinutesSchema, 10),
|
|
141
153
|
/** Allow auto-merge of a within-threshold, explained assessment (default true). */
|
|
142
154
|
autoMergeEnabled: v.optional(v.boolean(), true),
|
|
155
|
+
/** Estimate gating for the implementation-fork decision phase; absent ⇒ off in `auto` mode. */
|
|
156
|
+
forkDecision: v.optional(v.nullable(stepGatingSchema)),
|
|
143
157
|
/** Make this the workspace default (demotes the previous default). */
|
|
144
158
|
isDefault: v.optional(v.boolean(), false),
|
|
145
159
|
});
|
|
@@ -157,6 +171,7 @@ export const updateRiskPolicySchema = v.object({
|
|
|
157
171
|
releaseMaxAttempts: v.optional(releaseAttemptsSchema),
|
|
158
172
|
humanReviewGraceMinutes: v.optional(graceMinutesSchema),
|
|
159
173
|
autoMergeEnabled: v.optional(v.boolean()),
|
|
174
|
+
forkDecision: v.optional(v.nullable(stepGatingSchema)),
|
|
160
175
|
isDefault: v.optional(v.boolean()),
|
|
161
176
|
});
|
|
162
177
|
/** Parse-or-throw an assessment payload an agent returned (the engine validates it). */
|
package/dist/merge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../src/merge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../src/merge.ts"],"names":[],"mappings":"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"}
|
package/dist/notifications.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import * as v from 'valibot';
|
|
|
4
4
|
* the frontend can switch on it to render the right action; extending it is a
|
|
5
5
|
* one-line change here plus a handler in the worker's `act` route.
|
|
6
6
|
*/
|
|
7
|
-
export declare const notificationTypeSchema: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "initiative"], undefined>;
|
|
7
|
+
export declare const notificationTypeSchema: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "initiative"], undefined>;
|
|
8
8
|
export type NotificationType = v.InferOutput<typeof notificationTypeSchema>;
|
|
9
9
|
/**
|
|
10
10
|
* Lifecycle of a notification: `open` until a human engages, terminal `acted`
|
|
@@ -43,6 +43,8 @@ export declare const notificationPayloadSchema: v.ObjectSchema<{
|
|
|
43
43
|
readonly pipelineName: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
44
44
|
/** Number of open findings, on a `requirement_review`. */
|
|
45
45
|
readonly findingCount: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
|
|
46
|
+
/** Number of materially different implementation forks surfaced, on a `fork_decision_pending`. */
|
|
47
|
+
readonly forkCount: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
|
|
46
48
|
/** The `on-call` agent's assessment, on a `release_regression`. */
|
|
47
49
|
readonly onCallAssessment: v.OptionalSchema<v.ObjectSchema<{
|
|
48
50
|
readonly culpritConfidence: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>;
|
|
@@ -81,7 +83,7 @@ export type NotificationPayload = v.InferOutput<typeof notificationPayloadSchema
|
|
|
81
83
|
/** A human-actionable item surfaced on the board. */
|
|
82
84
|
export declare const notificationSchema: v.ObjectSchema<{
|
|
83
85
|
readonly id: v.StringSchema<undefined>;
|
|
84
|
-
readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "initiative"], undefined>;
|
|
86
|
+
readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "initiative"], undefined>;
|
|
85
87
|
readonly status: v.PicklistSchema<["open", "acted", "dismissed"], undefined>;
|
|
86
88
|
/**
|
|
87
89
|
* Render urgency (see {@link notificationSeveritySchema}). Absent ⇒ `normal`. Flipped
|
|
@@ -111,6 +113,8 @@ export declare const notificationSchema: v.ObjectSchema<{
|
|
|
111
113
|
readonly pipelineName: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
112
114
|
/** Number of open findings, on a `requirement_review`. */
|
|
113
115
|
readonly findingCount: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
|
|
116
|
+
/** Number of materially different implementation forks surfaced, on a `fork_decision_pending`. */
|
|
117
|
+
readonly forkCount: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
|
|
114
118
|
/** The `on-call` agent's assessment, on a `release_regression`. */
|
|
115
119
|
readonly onCallAssessment: v.OptionalSchema<v.ObjectSchema<{
|
|
116
120
|
readonly culpritConfidence: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../src/notifications.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../src/notifications.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAuD5B;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,+SAejC,CAAA;AACF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAE3E;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,6DAA6C,CAAA;AAClF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAE/E;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,mDAAmC,CAAA;AAC1E,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,0BAA0B,CAAC,CAAA;AAEnF;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB;IACpC,4DAA4D;;;;;;;IAE5D,sEAAsE;;IAEtE,gFAAgF;;IAEhF,0DAA0D;;IAE1D,kGAAkG;;IAElG,mEAAmE;;;;;;;IAEnE,mEAAmE;;;;;;;;IAEnE,4EAA4E;;IAE5E;;;;OAIG;;IAEH,gFAAgF;;IAEhF;;;;OAIG;;IAEH,yGAAyG;;aAEzG,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAEjF,qDAAqD;AACrD,eAAO,MAAM,kBAAkB;;;;IAI7B;;;OAGG;;IAEH,iFAAiF;;IAEjF,yDAAyD;;IAEzD,wCAAwC;;IAExC,mCAAmC;;IAEnC,wFAAwF;;QArDxF,4DAA4D;;;;;;;QAE5D,sEAAsE;;QAEtE,gFAAgF;;QAEhF,0DAA0D;;QAE1D,kGAAkG;;QAElG,mEAAmE;;;;;;;QAEnE,mEAAmE;;;;;;;;QAEnE,4EAA4E;;QAE5E;;;;WAIG;;QAEH,gFAAgF;;QAEhF;;;;WAIG;;QAEH,yGAAyG;;;;IA0BzG,8DAA8D;;aAE9D,CAAA;AACF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAInE,yDAAyD;AACzD,eAAO,MAAM,+BAA+B,iDAAiC,CAAA;AAC7E,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,+BAA+B,CAAC,CAAA"}
|
package/dist/notifications.js
CHANGED
|
@@ -31,6 +31,11 @@ import { onCallAssessmentSchema, releaseSignalSchema } from './release.js';
|
|
|
31
31
|
// Informational + a deep-link to the parked task (where the human
|
|
32
32
|
// can also request a freeform fix); the gate waits indefinitely and
|
|
33
33
|
// the severity sweep escalates the card the longer it waits.
|
|
34
|
+
// - `fork_decision_pending`— the optional implementation-fork phase on a Coder step
|
|
35
|
+
// surfaced materially different ways to implement the task and the
|
|
36
|
+
// run parked for a human to choose. Informational + a deep-link to the
|
|
37
|
+
// parked task (where the fork-decision window lets the human pick /
|
|
38
|
+
// type a custom approach / chat); `act` just marks it read.
|
|
34
39
|
// - `initiative` — the initiative execution loop needs a human: a spawned task was
|
|
35
40
|
// blocked (its phase is halted until it is retried/skipped), or the
|
|
36
41
|
// initiative finished (every planned task resolved). Informational +
|
|
@@ -64,6 +69,7 @@ export const notificationTypeSchema = v.picklist([
|
|
|
64
69
|
'visual_confirmation_ready',
|
|
65
70
|
'human_review',
|
|
66
71
|
'followup_pending',
|
|
72
|
+
'fork_decision_pending',
|
|
67
73
|
'initiative',
|
|
68
74
|
]);
|
|
69
75
|
/**
|
|
@@ -96,6 +102,8 @@ export const notificationPayloadSchema = v.object({
|
|
|
96
102
|
pipelineName: v.optional(v.string()),
|
|
97
103
|
/** Number of open findings, on a `requirement_review`. */
|
|
98
104
|
findingCount: v.optional(v.number()),
|
|
105
|
+
/** Number of materially different implementation forks surfaced, on a `fork_decision_pending`. */
|
|
106
|
+
forkCount: v.optional(v.number()),
|
|
99
107
|
/** The `on-call` agent's assessment, on a `release_regression`. */
|
|
100
108
|
onCallAssessment: v.optional(onCallAssessmentSchema),
|
|
101
109
|
/** The monitors/SLOs that regressed, on a `release_regression`. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifications.js","sourceRoot":"","sources":["../src/notifications.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"notifications.js","sourceRoot":"","sources":["../src/notifications.ts"],"names":[],"mappings":"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"}
|