@bluewombat/runtime 0.9.0 → 0.10.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/README.md +122 -52
- package/SPECS.md +36 -14
- package/dist/cli.js +4 -4
- package/dist/config/agent-shorthand.d.ts +24 -3
- package/dist/config/agent-shorthand.d.ts.map +1 -1
- package/dist/config/agent-shorthand.js +64 -19
- package/dist/config/agent-shorthand.js.map +1 -1
- package/dist/config/home.d.ts +2 -0
- package/dist/config/home.d.ts.map +1 -1
- package/dist/config/home.js +2 -0
- package/dist/config/home.js.map +1 -1
- package/dist/config/load-config.d.ts.map +1 -1
- package/dist/config/load-config.js +298 -46
- package/dist/config/load-config.js.map +1 -1
- package/dist/config/parse-args.d.ts +1 -1
- package/dist/config/parse-args.d.ts.map +1 -1
- package/dist/config/parse-args.js +83 -56
- package/dist/config/parse-args.js.map +1 -1
- package/dist/config/types.d.ts +104 -16
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +13 -1
- package/dist/config/types.js.map +1 -1
- package/dist/loop/authority.d.ts +38 -1
- package/dist/loop/authority.d.ts.map +1 -1
- package/dist/loop/authority.js +41 -2
- package/dist/loop/authority.js.map +1 -1
- package/dist/loop/context.d.ts +16 -1
- package/dist/loop/context.d.ts.map +1 -1
- package/dist/loop/drive.d.ts +9 -3
- package/dist/loop/drive.d.ts.map +1 -1
- package/dist/loop/drive.js +17 -7
- package/dist/loop/drive.js.map +1 -1
- package/dist/loop/features.d.ts.map +1 -1
- package/dist/loop/features.js +322 -59
- package/dist/loop/features.js.map +1 -1
- package/dist/loop/open-host.d.ts.map +1 -1
- package/dist/loop/open-host.js +109 -7
- package/dist/loop/open-host.js.map +1 -1
- package/dist/loop/report.d.ts.map +1 -1
- package/dist/loop/report.js +21 -9
- package/dist/loop/report.js.map +1 -1
- package/dist/loop/trace.js +1 -1
- package/dist/loop/trace.js.map +1 -1
- package/dist/loop/transformers.d.ts +16 -2
- package/dist/loop/transformers.d.ts.map +1 -1
- package/dist/loop/transformers.js +137 -22
- package/dist/loop/transformers.js.map +1 -1
- package/dist/loop/warm.js +1 -1
- package/dist/loop/warm.js.map +1 -1
- package/dist/operator/agent-plugins.d.ts.map +1 -1
- package/dist/operator/agent-plugins.js +14 -8
- package/dist/operator/agent-plugins.js.map +1 -1
- package/dist/operator/doctor.d.ts +1 -1
- package/dist/operator/doctor.d.ts.map +1 -1
- package/dist/operator/doctor.js +79 -29
- package/dist/operator/doctor.js.map +1 -1
- package/dist/operator/explain.d.ts.map +1 -1
- package/dist/operator/explain.js +37 -8
- package/dist/operator/explain.js.map +1 -1
- package/dist/operator/film.js +0 -3
- package/dist/operator/film.js.map +1 -1
- package/dist/operator/init.js +13 -8
- package/dist/operator/init.js.map +1 -1
- package/dist/operator/log.js +9 -2
- package/dist/operator/log.js.map +1 -1
- package/dist/operator/setup.d.ts.map +1 -1
- package/dist/operator/setup.js +2 -0
- package/dist/operator/setup.js.map +1 -1
- package/package.json +14 -14
package/dist/config/types.d.ts
CHANGED
|
@@ -1,12 +1,40 @@
|
|
|
1
1
|
import type { GateSpec } from "@bluewombat/implementer";
|
|
2
2
|
import type { ManagerModule } from "@bluewombat/manager-kit";
|
|
3
|
+
/**
|
|
4
|
+
* What a Feature can say that makes Host leave a Gate out. Names are the ones a Gate's `skipWhen`
|
|
5
|
+
* is written with, whatever the tracker calls the label behind them.
|
|
6
|
+
*/
|
|
7
|
+
export declare const SKIP_WHEN: readonly ["skip-test-e2e"];
|
|
8
|
+
export type SkipWhen = (typeof SKIP_WHEN)[number];
|
|
9
|
+
/**
|
|
10
|
+
* A Gate as the config writes it: Implementer's, and the condition under which Host does not run
|
|
11
|
+
* it. A Gate that is not run is not a Gate that passed: Host says so in its journal and trace, and
|
|
12
|
+
* the Gate itself knows nothing of it. Only a Feature's Gates take one.
|
|
13
|
+
*/
|
|
14
|
+
export type HostGateSpec = GateSpec & {
|
|
15
|
+
skipWhen?: SkipWhen;
|
|
16
|
+
};
|
|
3
17
|
/**
|
|
4
18
|
* A command with its own Gate sequence. Every role is gated independently —
|
|
5
19
|
* no sharing, no dispatch choosing between two buckets (see DECISIONS.md).
|
|
6
20
|
*/
|
|
7
21
|
export type GatedPassSpec = PassSpec & {
|
|
8
|
-
gates:
|
|
22
|
+
gates: HostGateSpec[];
|
|
9
23
|
};
|
|
24
|
+
/**
|
|
25
|
+
* A review: an agent and the Gates that follow it — or, with `agent: false`,
|
|
26
|
+
* the Gates alone. Writing `agent: false` is how a Project turns the agent off
|
|
27
|
+
* and keeps its checks; with no Gates either, the review is off altogether. A
|
|
28
|
+
* review is always written, so that turning it off is a choice that shows.
|
|
29
|
+
*/
|
|
30
|
+
export type ReviewSpec = GatedPassSpec | {
|
|
31
|
+
agent: false;
|
|
32
|
+
gates: HostGateSpec[];
|
|
33
|
+
};
|
|
34
|
+
/** Whether a review does anything: an agent to run, or Gates to ask. */
|
|
35
|
+
export declare function isOn(review: ReviewSpec | undefined): boolean;
|
|
36
|
+
/** Whether a review has an agent to run before its Gates. */
|
|
37
|
+
export declare function hasAgent(review: ReviewSpec): review is GatedPassSpec;
|
|
10
38
|
/**
|
|
11
39
|
* One tracker integration: the package that talks to it and the options that
|
|
12
40
|
* package reads. Host never reads `options`.
|
|
@@ -38,6 +66,13 @@ export type HostInvocation = {
|
|
|
38
66
|
* reference work line, and Host keeps its own copy under `.mason/work-line`.
|
|
39
67
|
*/
|
|
40
68
|
workLineStable?: string;
|
|
69
|
+
/**
|
|
70
|
+
* A second copy of the work line, kept on the branch a Feature is folded into.
|
|
71
|
+
* It is what the target is merged from when a Feature is brought up to date.
|
|
72
|
+
* Host keeps its own under `.mason/targetLine` when the reference allows;
|
|
73
|
+
* required with an Authority otherwise.
|
|
74
|
+
*/
|
|
75
|
+
workLineTargetStable?: string;
|
|
41
76
|
/**
|
|
42
77
|
* The work line a fold lands on. Absent: what the manager's reference names,
|
|
43
78
|
* or else whatever WorkLineStable has checked out, which is nobody's decision.
|
|
@@ -69,7 +104,13 @@ export type HostInvocation = {
|
|
|
69
104
|
/** Making the unit of work, and judging what came out of it. */
|
|
70
105
|
builder: StageSpec;
|
|
71
106
|
/** Judging the assembled ticket, and fixing what a judgement refused. */
|
|
72
|
-
|
|
107
|
+
ticket: TicketSpec;
|
|
108
|
+
/**
|
|
109
|
+
* Judging the whole Feature before its line is folded, and fixing what that
|
|
110
|
+
* judgement refused. Required with an Authority, which is what folds a line;
|
|
111
|
+
* without one nothing here is read.
|
|
112
|
+
*/
|
|
113
|
+
feature?: FeatureSpec;
|
|
73
114
|
/**
|
|
74
115
|
* The outside judge, when the Project declares one. Absent or disabled: the
|
|
75
116
|
* assembled ticket is folded into WorkLineStable and that fold is final.
|
|
@@ -81,11 +122,6 @@ export type HostInvocation = {
|
|
|
81
122
|
observability?: ObservabilitySpec;
|
|
82
123
|
/** How long any one child outside a Task may run: manager, isolations. */
|
|
83
124
|
timeoutMs: number;
|
|
84
|
-
/**
|
|
85
|
-
* Times the work may be sent back before it escalates, by an Authority, by
|
|
86
|
-
* `assembly.validate`, or by both — one shared budget. Default 3.
|
|
87
|
-
*/
|
|
88
|
-
maxRefusals?: number;
|
|
89
125
|
pollIntervalMs?: number;
|
|
90
126
|
};
|
|
91
127
|
/**
|
|
@@ -141,17 +177,33 @@ export type PassSpec = {
|
|
|
141
177
|
timeoutMs: number;
|
|
142
178
|
};
|
|
143
179
|
/**
|
|
144
|
-
* Making the unit of work: first pass, then repair when a Gate refused
|
|
145
|
-
*
|
|
146
|
-
*
|
|
180
|
+
* Making the unit of work: first pass, then repair when a Gate refused. The
|
|
181
|
+
* config writes one `builder.gates` list; the loader puts it on both passes, so
|
|
182
|
+
* a repair is judged by exactly what judged the producer (Implementer still takes
|
|
183
|
+
* two sequences, one per command).
|
|
147
184
|
*/
|
|
148
185
|
export type StageSpec = {
|
|
149
|
-
/** Produces from a specification. Judged by
|
|
186
|
+
/** Produces from a specification. Judged by `builder.gates`. */
|
|
150
187
|
producer: GatedPassSpec;
|
|
151
|
-
/** Produces again, with the report of what refused the last pass. Judged by
|
|
188
|
+
/** Produces again, with the report of what refused the last pass. Judged by `builder.gates`. */
|
|
152
189
|
repair: GatedPassSpec;
|
|
153
190
|
/** Attempts one Task may start. Default 3. */
|
|
154
191
|
maxAttempts?: number;
|
|
192
|
+
/**
|
|
193
|
+
* The tests of the Task, written before its code by an agent that is not the
|
|
194
|
+
* producer, and committed as a checkpoint the producer's work builds on. Its
|
|
195
|
+
* `gates` are what makes them worth having (they must fail, for the right
|
|
196
|
+
* reason) and what the producer's own Gates then keep intact. With
|
|
197
|
+
* `agent: false` no tests are written first.
|
|
198
|
+
*/
|
|
199
|
+
tests?: ReviewSpec;
|
|
200
|
+
/**
|
|
201
|
+
* The Ticket that holds a Feature's e2e acceptance suite (the tracker's e2e label) is made by
|
|
202
|
+
* this pass instead of the producer and the repair: its own command, its own Gates, nothing
|
|
203
|
+
* borrowed from them. Declaring it declares the e2e check: a Feature needs an e2e Ticket or the
|
|
204
|
+
* skip label, and a Feature Gate with `skipWhen: skip-test-e2e` runs the suite.
|
|
205
|
+
*/
|
|
206
|
+
e2e?: GatedPassSpec;
|
|
155
207
|
};
|
|
156
208
|
/**
|
|
157
209
|
* Judging the assembled ticket as a whole.
|
|
@@ -167,7 +219,19 @@ export type StageSpec = {
|
|
|
167
219
|
* producer of its own (nothing new made, the existing assembled state
|
|
168
220
|
* re-checked; e.g. `ci-green`), and was never shared with `fix` or `validate`.
|
|
169
221
|
*/
|
|
170
|
-
export type
|
|
222
|
+
export type TicketSpec = {
|
|
223
|
+
/**
|
|
224
|
+
* How many Tickets of a Project may be worked on at once. Default 1: one
|
|
225
|
+
* after the other. Above 1 needs `authority.enabled`.
|
|
226
|
+
*/
|
|
227
|
+
maxParallel?: number;
|
|
228
|
+
/** How many Attempts one fix may take. */
|
|
229
|
+
maxAttempts?: number;
|
|
230
|
+
/**
|
|
231
|
+
* Times the work may be sent back before it escalates, by an Authority, by
|
|
232
|
+
* `validate`, or by both — one shared budget. Default 3.
|
|
233
|
+
*/
|
|
234
|
+
maxRefusals?: number;
|
|
171
235
|
/** Fixes what a judgement of the whole refused. Needs `--report`. Judged by its own `gates`. */
|
|
172
236
|
fix?: GatedPassSpec;
|
|
173
237
|
/**
|
|
@@ -177,10 +241,34 @@ export type AssemblySpec = {
|
|
|
177
241
|
* parked on the aggregate and repaired by `fix`, the same as an Authority's.
|
|
178
242
|
* Judged by its own `gates`.
|
|
179
243
|
*/
|
|
180
|
-
validate?:
|
|
181
|
-
maxAttempts?: number;
|
|
244
|
+
validate?: ReviewSpec;
|
|
182
245
|
/** The judgement-only pass's own sequence — see above. */
|
|
183
|
-
gates:
|
|
246
|
+
gates: HostGateSpec[];
|
|
247
|
+
};
|
|
248
|
+
/**
|
|
249
|
+
* What happens to a Feature's line before it is folded: its own judgement, its
|
|
250
|
+
* own fix and its own budget, apart from a Ticket's ticket.
|
|
251
|
+
*/
|
|
252
|
+
export type FeatureSpec = {
|
|
253
|
+
/** Repairs the line when a judgement of it refused. Needs `--report`. Judged by its own `gates`. */
|
|
254
|
+
fix: GatedPassSpec;
|
|
255
|
+
/** How many Attempts one fix may take. */
|
|
256
|
+
maxAttempts?: number;
|
|
257
|
+
/**
|
|
258
|
+
* Times the line may be sent back before the Feature escalates. One shared
|
|
259
|
+
* budget, like a Ticket's. Default 3.
|
|
260
|
+
*/
|
|
261
|
+
maxRefusals?: number;
|
|
262
|
+
/**
|
|
263
|
+
* A local, read-only review of the whole line against the Feature's request,
|
|
264
|
+
* once the target has been merged into it, before the line is published. Its
|
|
265
|
+
* `gates` are where the project's own checks on the whole line run (typecheck,
|
|
266
|
+
* tests) beside the guards that it wrote nothing. Judged by its own gates, not
|
|
267
|
+
* by `gates` below, which read the published branch.
|
|
268
|
+
*/
|
|
269
|
+
validate: ReviewSpec;
|
|
270
|
+
/** Judges the published line, with nothing produced (the CI). At least one. */
|
|
271
|
+
gates: HostGateSpec[];
|
|
184
272
|
};
|
|
185
273
|
/**
|
|
186
274
|
* An invocation still being assembled from the config file and the flags: a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG;IAAE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D;;;GAGG;AACH,eAAO,MAAM,SAAS,4BAA6B,CAAC;AACpD,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAElD;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG;IAAE,QAAQ,CAAC,EAAE,QAAQ,CAAA;CAAE,CAAC;AAE9D;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG;IAAE,KAAK,EAAE,YAAY,EAAE,CAAA;CAAE,CAAC;AAEjE;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,YAAY,EAAE,CAAA;CAAE,CAAC;AAEjF,wEAAwE;AACxE,wBAAgB,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,CAE5D;AAED,6DAA6D;AAC7D,wBAAgB,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,IAAI,aAAa,CAEpE;AAED;;;GAGG;AACH,MAAM,MAAM,WAAW,CAAC,OAAO,GAAG,MAAM,IAAI;IAC1C,qEAAqE;IACrE,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,gDAAgD;IAChD,cAAc,EAAE,WAAW,CAAC;IAC5B,0FAA0F;IAC1F,aAAa,EAAE,WAAW,CAAC;IAC3B,8EAA8E;IAC9E,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnD;;;OAGG;IACH,YAAY,CAAC,EAAE,QAAQ,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,OAAO,EAAE,SAAS,CAAC;IACnB,yEAAyE;IACzE,MAAM,EAAE,UAAU,CAAC;IACnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B;;OAEG;IACH,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,CAAC,EAAE;QACR,OAAO,EAAE,OAAO,CAAC;QACjB,gFAAgF;QAChF,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,6DAA6D;QAC7D,IAAI,CAAC,EAAE,CAAC,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC;KAChC,CAAC;CACH,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,gEAAgE;IAChE,QAAQ,EAAE,aAAa,CAAC;IACxB,gGAAgG;IAChG,MAAM,EAAE,aAAa,CAAC;IACtB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB;;;;;OAKG;IACH,GAAG,CAAC,EAAE,aAAa,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gGAAgG;IAChG,GAAG,CAAC,EAAE,aAAa,CAAC;IACpB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,0DAA0D;IAC1D,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,oGAAoG;IACpG,GAAG,EAAE,aAAa,CAAC;IACnB,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,QAAQ,EAAE,UAAU,CAAC;IACrB,+EAA+E;IAC/E,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,gBAAgB,GAAG,eAAe,CAAC,GAAG;IAC1F,cAAc,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IACtC,aAAa,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CACtC,CAAC;AAEF,0EAA0E;AAC1E,MAAM,MAAM,WAAW,GAAG,IAAI,CAC5B,cAAc,EACd,gBAAgB,GAAG,eAAe,GAAG,WAAW,GAAG,MAAM,GAAG,SAAS,CACtE,GAAG;IACF,8EAA8E;IAC9E,cAAc,EAAE,WAAW,CAAC,MAAM,GAAG,aAAa,CAAC,CAAC;IACpD,aAAa,EAAE,WAAW,CAAC,MAAM,GAAG,aAAa,CAAC,CAAC;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE;QAAE,WAAW,EAAE,OAAO,CAAA;KAAE,CAAC;IACzC,oEAAoE;IACpE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACzC,+DAA+D;IAC/D,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC,CAAC"}
|
package/dist/config/types.js
CHANGED
|
@@ -1,2 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* What a Feature can say that makes Host leave a Gate out. Names are the ones a Gate's `skipWhen`
|
|
3
|
+
* is written with, whatever the tracker calls the label behind them.
|
|
4
|
+
*/
|
|
5
|
+
export const SKIP_WHEN = ["skip-test-e2e"];
|
|
6
|
+
/** Whether a review does anything: an agent to run, or Gates to ask. */
|
|
7
|
+
export function isOn(review) {
|
|
8
|
+
return review !== undefined && (hasAgent(review) || review.gates.length > 0);
|
|
9
|
+
}
|
|
10
|
+
/** Whether a review has an agent to run before its Gates. */
|
|
11
|
+
export function hasAgent(review) {
|
|
12
|
+
return "cmd" in review;
|
|
13
|
+
}
|
|
2
14
|
//# sourceMappingURL=types.js.map
|
package/dist/config/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,eAAe,CAAU,CAAC;AAwBpD,wEAAwE;AACxE,MAAM,UAAU,IAAI,CAAC,MAA8B;IACjD,OAAO,MAAM,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,QAAQ,CAAC,MAAkB;IACzC,OAAO,KAAK,IAAI,MAAM,CAAC;AACzB,CAAC"}
|
package/dist/loop/authority.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AuthorityPort } from "@bluewombat/conductor";
|
|
1
|
+
import type { AuthorityPort, LinePort } from "@bluewombat/conductor";
|
|
2
2
|
import type { TicketTrackerPort } from "@bluewombat/manager-kit";
|
|
3
3
|
import type { PassSpec } from "../config/types.js";
|
|
4
4
|
import type { Journal } from "./journal.js";
|
|
@@ -28,6 +28,41 @@ export declare function openAuthority(input: {
|
|
|
28
28
|
describe?: PassSpec | undefined;
|
|
29
29
|
journal?: Journal | undefined;
|
|
30
30
|
}): AuthorityPort | undefined;
|
|
31
|
+
export type Published = {
|
|
32
|
+
ok: true;
|
|
33
|
+
ref: string;
|
|
34
|
+
} | {
|
|
35
|
+
ok: false;
|
|
36
|
+
reason: string;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Run the Publisher slot in the work line and read the one line it answers.
|
|
40
|
+
*
|
|
41
|
+
* Same contract as every other slot: argv in, one JSON object on stdout. A slot
|
|
42
|
+
* that cannot run at all is a refusal like any other here — the Submission does
|
|
43
|
+
* not happen, the reason reaches the tracker, and the next pass tries again.
|
|
44
|
+
*/
|
|
45
|
+
export declare function publish(input: {
|
|
46
|
+
argv: string[];
|
|
47
|
+
cwd: string;
|
|
48
|
+
id: string;
|
|
49
|
+
ref: string;
|
|
50
|
+
target: string;
|
|
51
|
+
timeoutMs: number;
|
|
52
|
+
env?: Record<string, string> | undefined;
|
|
53
|
+
}): Promise<Published>;
|
|
54
|
+
/**
|
|
55
|
+
* The shared work line copy, kept current for Conductor. Each refresh says in
|
|
56
|
+
* the journal how it went, since a copy that cannot move stops a Ticket cold.
|
|
57
|
+
*/
|
|
58
|
+
export declare function openLine(input: {
|
|
59
|
+
workLineStable: string;
|
|
60
|
+
refreshArgv: string[];
|
|
61
|
+
timeoutMs: number;
|
|
62
|
+
env?: Record<string, string> | undefined;
|
|
63
|
+
journal?: Journal | undefined;
|
|
64
|
+
trace?: ((line: string) => void) | undefined;
|
|
65
|
+
}): LinePort;
|
|
31
66
|
/**
|
|
32
67
|
* Bring the work line copy up to what the Authority holds, through the slot the
|
|
33
68
|
* Project named.
|
|
@@ -39,6 +74,8 @@ export declare function openAuthority(input: {
|
|
|
39
74
|
export declare function refreshWorkLine(input: {
|
|
40
75
|
workLineStable: string;
|
|
41
76
|
workLineTarget: string;
|
|
77
|
+
/** The line `workLineTarget` was cut from, when it is a Feature's line. */
|
|
78
|
+
workLineBase?: string | undefined;
|
|
42
79
|
refreshArgv: string[];
|
|
43
80
|
timeoutMs: number;
|
|
44
81
|
env?: Record<string, string> | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authority.d.ts","sourceRoot":"","sources":["../../src/loop/authority.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"authority.d.ts","sourceRoot":"","sources":["../../src/loop/authority.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,KAAK,EAAqB,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACpF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE;IACnC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9B,kFAAkF;IAClF,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IACzC,yEAAyE;IACzE,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B,GAAG,aAAa,GAAG,SAAS,CAmF5B;AAED,MAAM,MAAM,SAAS,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAElF;;;;;;GAMG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE;IACnC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;CAC1C,GAAG,OAAO,CAAC,SAAS,CAAC,CA+BrB;AAsBD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IACzC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CAC9C,GAAG,QAAQ,CA4BX;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE;IAC3C,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;CAC1C,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA8B5C"}
|
package/dist/loop/authority.js
CHANGED
|
@@ -20,6 +20,7 @@ export function openAuthority(input) {
|
|
|
20
20
|
}
|
|
21
21
|
const submit = manager.submit.bind(manager);
|
|
22
22
|
const fold = manager.fold.bind(manager);
|
|
23
|
+
const behind = manager.behind?.bind(manager);
|
|
23
24
|
return {
|
|
24
25
|
async submit(offer) {
|
|
25
26
|
// A Feature's line is already with the Authority: the cut and every
|
|
@@ -90,6 +91,8 @@ export function openAuthority(input) {
|
|
|
90
91
|
}
|
|
91
92
|
return submitted;
|
|
92
93
|
},
|
|
94
|
+
// Only a manager that can say whether the line moved on gets the question.
|
|
95
|
+
...(behind === undefined ? {} : { behind }),
|
|
93
96
|
async fold(asked) {
|
|
94
97
|
return await fold(asked);
|
|
95
98
|
},
|
|
@@ -102,7 +105,7 @@ export function openAuthority(input) {
|
|
|
102
105
|
* that cannot run at all is a refusal like any other here — the Submission does
|
|
103
106
|
* not happen, the reason reaches the tracker, and the next pass tries again.
|
|
104
107
|
*/
|
|
105
|
-
async function publish(input) {
|
|
108
|
+
export async function publish(input) {
|
|
106
109
|
const [command, ...rest] = input.argv;
|
|
107
110
|
if (command === undefined) {
|
|
108
111
|
return { ok: false, reason: "No Publisher is configured, so nothing can be submitted." };
|
|
@@ -154,6 +157,37 @@ function lastJsonLine(stdout) {
|
|
|
154
157
|
}
|
|
155
158
|
return undefined;
|
|
156
159
|
}
|
|
160
|
+
/**
|
|
161
|
+
* The shared work line copy, kept current for Conductor. Each refresh says in
|
|
162
|
+
* the journal how it went, since a copy that cannot move stops a Ticket cold.
|
|
163
|
+
*/
|
|
164
|
+
export function openLine(input) {
|
|
165
|
+
return {
|
|
166
|
+
async refresh(target) {
|
|
167
|
+
const refreshed = await refreshWorkLine({
|
|
168
|
+
workLineStable: input.workLineStable,
|
|
169
|
+
workLineTarget: target,
|
|
170
|
+
refreshArgv: input.refreshArgv,
|
|
171
|
+
timeoutMs: input.timeoutMs,
|
|
172
|
+
env: input.env,
|
|
173
|
+
});
|
|
174
|
+
if (!refreshed.ok) {
|
|
175
|
+
input.journal?.append({
|
|
176
|
+
event: "refresh",
|
|
177
|
+
outcome: "failed",
|
|
178
|
+
target,
|
|
179
|
+
...(refreshed.detail === undefined ? {} : { detail: refreshed.detail }),
|
|
180
|
+
});
|
|
181
|
+
input.trace?.(`work line cannot fast-forward onto ${target}, so nothing started. ${refreshed.detail ?? ""}`);
|
|
182
|
+
return {
|
|
183
|
+
ok: false,
|
|
184
|
+
...(refreshed.detail === undefined ? {} : { detail: refreshed.detail }),
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
return { ok: true };
|
|
188
|
+
},
|
|
189
|
+
};
|
|
190
|
+
}
|
|
157
191
|
/**
|
|
158
192
|
* Bring the work line copy up to what the Authority holds, through the slot the
|
|
159
193
|
* Project named.
|
|
@@ -169,7 +203,12 @@ export async function refreshWorkLine(input) {
|
|
|
169
203
|
}
|
|
170
204
|
const run = await runSlot({
|
|
171
205
|
command,
|
|
172
|
-
args: [
|
|
206
|
+
args: [
|
|
207
|
+
...rest,
|
|
208
|
+
"--target",
|
|
209
|
+
input.workLineTarget,
|
|
210
|
+
...(input.workLineBase === undefined ? [] : ["--base", input.workLineBase]),
|
|
211
|
+
],
|
|
173
212
|
cwd: input.workLineStable,
|
|
174
213
|
timeoutMs: input.timeoutMs,
|
|
175
214
|
env: { ...process.env, ...input.env },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authority.js","sourceRoot":"","sources":["../../src/loop/authority.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,aAAa,CAAC,KAY7B;IACC,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IACzE,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/D,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"authority.js","sourceRoot":"","sources":["../../src/loop/authority.ts"],"names":[],"mappings":"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"}
|
package/dist/loop/context.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AuthorityPort, Conductor, ConductorMoment, TransformerPort } from "@bluewombat/conductor";
|
|
1
|
+
import type { AuthorityPort, Conductor, ConductorMoment, Delivery, TransformerPort, WarmPort } from "@bluewombat/conductor";
|
|
2
2
|
import type { EventName, FeatureTrackerPort, TicketTrackerPort } from "@bluewombat/manager-kit";
|
|
3
3
|
import type { WorkLedger } from "@bluewombat/work-ledger";
|
|
4
4
|
import type { HostOptions } from "../config/types.js";
|
|
@@ -31,6 +31,21 @@ export type HostRunInput = {
|
|
|
31
31
|
trace: Trace;
|
|
32
32
|
/** Present when the Project declared an Authority and the manager can submit. */
|
|
33
33
|
authority?: AuthorityPort;
|
|
34
|
+
/**
|
|
35
|
+
* How a Feature's line is delivered to the line it is folded into. Present
|
|
36
|
+
* with an Authority, and absent without one: nothing folds a line then.
|
|
37
|
+
*/
|
|
38
|
+
featureDelivery?: {
|
|
39
|
+
delivery: Delivery;
|
|
40
|
+
/** The copy of the line the Feature is folded into, merged into the Feature's work. */
|
|
41
|
+
targetStable: string;
|
|
42
|
+
/** Where the Feature's work is done, outside the Tickets' workspaces. */
|
|
43
|
+
workspaces: string;
|
|
44
|
+
/** Prepares that workspace the way a Ticket's is prepared, when the Project asked for it. */
|
|
45
|
+
warm?: WarmPort & {
|
|
46
|
+
durationMs: number;
|
|
47
|
+
};
|
|
48
|
+
};
|
|
34
49
|
/**
|
|
35
50
|
* Where Conductor's moments land during a pass. A tick points it at its own
|
|
36
51
|
* report function before driving, so what is said mid-pass counts as that
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/loop/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,eAAe,EACf,eAAe,
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/loop/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,eAAe,EACf,QAAQ,EACR,eAAe,EACf,QAAQ,EACT,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAChG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,WAAW,CAAC;IACrB,yFAAyF;IACzF,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAA;KAAE,CAAC;IACxF,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,yDAAyD;IACzD,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,sEAAsE;IACtE,OAAO,EAAE,iBAAiB,CAAC;IAC3B,kGAAkG;IAClG,YAAY,EAAE,eAAe,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC;IACb,iFAAiF;IACjF,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B;;;OAGG;IACH,eAAe,CAAC,EAAE;QAChB,QAAQ,EAAE,QAAQ,CAAC;QACnB,uFAAuF;QACvF,YAAY,EAAE,MAAM,CAAC;QACrB,yEAAyE;QACzE,UAAU,EAAE,MAAM,CAAC;QACnB,6FAA6F;QAC7F,IAAI,CAAC,EAAE,QAAQ,GAAG;YAAE,UAAU,EAAE,MAAM,CAAA;SAAE,CAAC;KAC1C,CAAC;IACF;;;;OAIG;IACH,OAAO,EAAE;QAAE,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAA;KAAE,CAAC;IAChF;;;OAGG;IACH,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACnB,CAAC;AAEF,yFAAyF;AACzF,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG;IAC7C,QAAQ,EAAE,SAAS,EAAE,CAAC;CACvB,CAAC"}
|
package/dist/loop/drive.d.ts
CHANGED
|
@@ -9,7 +9,13 @@ import type { HostDeliveryInput } from "./context.js";
|
|
|
9
9
|
*
|
|
10
10
|
* A Project with an `escalated` Ticket is not driven: the caller checks first.
|
|
11
11
|
*/
|
|
12
|
-
export declare function driveProject(input: HostDeliveryInput, project: string, fallbackKey: string
|
|
12
|
+
export declare function driveProject(input: HostDeliveryInput, project: string, fallbackKey: string,
|
|
13
|
+
/**
|
|
14
|
+
* Drive exactly `fallbackKey`, which the Project already holds, instead of
|
|
15
|
+
* whoever is active: several Tickets are then driven at once, and the
|
|
16
|
+
* reconciling that would disturb the others is the caller's, once, before.
|
|
17
|
+
*/
|
|
18
|
+
exactly?: boolean): Promise<ProjectRunResult>;
|
|
13
19
|
/**
|
|
14
20
|
* Drive, then keep driving while a refusal is waiting for repair.
|
|
15
21
|
*
|
|
@@ -19,10 +25,10 @@ export declare function driveProject(input: HostDeliveryInput, project: string,
|
|
|
19
25
|
* next pass. Waiting a poll interval for that next pass is empty time: the
|
|
20
26
|
* work is local. Re-drive in the same Host tick until that case is gone — a
|
|
21
27
|
* new `submitted`, an escalation, or any non-`paused` outcome (e.g.
|
|
22
|
-
*
|
|
28
|
+
* interrupted).
|
|
23
29
|
*
|
|
24
30
|
* Do not continue from `submitted`: judging the Authority waits on the outside
|
|
25
31
|
* and must leave room for listen / probe between ticks.
|
|
26
32
|
*/
|
|
27
|
-
export declare function driveUntilBlocked(input: HostDeliveryInput, project: string, fallbackKey: string): Promise<ProjectRunResult>;
|
|
33
|
+
export declare function driveUntilBlocked(input: HostDeliveryInput, project: string, fallbackKey: string, exactly?: boolean): Promise<ProjectRunResult>;
|
|
28
34
|
//# sourceMappingURL=drive.d.ts.map
|
package/dist/loop/drive.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drive.d.ts","sourceRoot":"","sources":["../../src/loop/drive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAItD;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"drive.d.ts","sourceRoot":"","sources":["../../src/loop/drive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAItD;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM;AACnB;;;;GAIG;AACH,OAAO,UAAQ,GACd,OAAO,CAAC,gBAAgB,CAAC,CAqC3B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,OAAO,UAAQ,GACd,OAAO,CAAC,gBAAgB,CAAC,CAiB3B"}
|
package/dist/loop/drive.js
CHANGED
|
@@ -9,9 +9,19 @@ import { describeTicket } from "./trace.js";
|
|
|
9
9
|
*
|
|
10
10
|
* A Project with an `escalated` Ticket is not driven: the caller checks first.
|
|
11
11
|
*/
|
|
12
|
-
export async function driveProject(input, project, fallbackKey
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
export async function driveProject(input, project, fallbackKey,
|
|
13
|
+
/**
|
|
14
|
+
* Drive exactly `fallbackKey`, which the Project already holds, instead of
|
|
15
|
+
* whoever is active: several Tickets are then driven at once, and the
|
|
16
|
+
* reconciling that would disturb the others is the caller's, once, before.
|
|
17
|
+
*/
|
|
18
|
+
exactly = false) {
|
|
19
|
+
if (!exactly) {
|
|
20
|
+
await input.conductor.reconcile(project);
|
|
21
|
+
}
|
|
22
|
+
const run = exactly
|
|
23
|
+
? await input.conductor.runTicket(fallbackKey)
|
|
24
|
+
: await input.conductor.runProject(project);
|
|
15
25
|
// idle / refused name no Ticket; the delivered key is the only one we have.
|
|
16
26
|
const key = "key" in run && run.key !== undefined ? run.key : fallbackKey;
|
|
17
27
|
const got = await input.ledger.get(key);
|
|
@@ -52,13 +62,13 @@ export async function driveProject(input, project, fallbackKey) {
|
|
|
52
62
|
* next pass. Waiting a poll interval for that next pass is empty time: the
|
|
53
63
|
* work is local. Re-drive in the same Host tick until that case is gone — a
|
|
54
64
|
* new `submitted`, an escalation, or any non-`paused` outcome (e.g.
|
|
55
|
-
*
|
|
65
|
+
* interrupted).
|
|
56
66
|
*
|
|
57
67
|
* Do not continue from `submitted`: judging the Authority waits on the outside
|
|
58
68
|
* and must leave room for listen / probe between ticks.
|
|
59
69
|
*/
|
|
60
|
-
export async function driveUntilBlocked(input, project, fallbackKey) {
|
|
61
|
-
let last = await driveProject(input, project, fallbackKey);
|
|
70
|
+
export async function driveUntilBlocked(input, project, fallbackKey, exactly = false) {
|
|
71
|
+
let last = await driveProject(input, project, fallbackKey, exactly);
|
|
62
72
|
const interruptFlag = input.options.interruptFlag ?? { interrupted: false };
|
|
63
73
|
while (!interruptFlag.interrupted && last.outcome === "paused") {
|
|
64
74
|
const key = "key" in last && last.key !== undefined ? last.key : fallbackKey;
|
|
@@ -69,7 +79,7 @@ export async function driveUntilBlocked(input, project, fallbackKey) {
|
|
|
69
79
|
got.aggregate.parked_refusal === undefined)) {
|
|
70
80
|
break;
|
|
71
81
|
}
|
|
72
|
-
last = await driveProject(input, project, key);
|
|
82
|
+
last = await driveProject(input, project, key, exactly);
|
|
73
83
|
}
|
|
74
84
|
return last;
|
|
75
85
|
}
|
package/dist/loop/drive.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drive.js","sourceRoot":"","sources":["../../src/loop/drive.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAwB,EACxB,OAAe,EACf,WAAmB;
|
|
1
|
+
{"version":3,"file":"drive.js","sourceRoot":"","sources":["../../src/loop/drive.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../../src/loop/features.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../../src/loop/features.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAA+B,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAgB3F,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EACL,KAAK,YAAY,EAIlB,MAAM,iBAAiB,CAAC;AAiBzB;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CA+C/B;AAyED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwC5F;AAUD;;;GAGG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAsBvC;AAkwBD,wEAAwE;AACxE,wBAAsB,SAAS,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAavF"}
|