@bluewombat/runtime 0.8.0 → 0.9.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 +124 -100
- package/SPECS.md +103 -84
- package/dist/cli.js +32 -34
- package/dist/cli.js.map +1 -1
- package/dist/config/agent-shorthand.d.ts +0 -1
- package/dist/config/agent-shorthand.d.ts.map +1 -1
- package/dist/config/agent-shorthand.js +1 -9
- package/dist/config/agent-shorthand.js.map +1 -1
- package/dist/config/defaults.d.ts +0 -2
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +0 -2
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/find-config.d.ts +3 -2
- package/dist/config/find-config.d.ts.map +1 -1
- package/dist/config/find-config.js +4 -4
- package/dist/config/find-config.js.map +1 -1
- package/dist/config/home.js +2 -2
- package/dist/config/home.js.map +1 -1
- package/dist/config/load-config.d.ts +2 -2
- package/dist/config/load-config.d.ts.map +1 -1
- package/dist/config/load-config.js +46 -29
- package/dist/config/load-config.js.map +1 -1
- package/dist/config/parse-args.d.ts.map +1 -1
- package/dist/config/parse-args.js +50 -48
- package/dist/config/parse-args.js.map +1 -1
- package/dist/config/types.d.ts +40 -24
- package/dist/config/types.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/loop/authority.d.ts +3 -4
- package/dist/loop/authority.d.ts.map +1 -1
- package/dist/loop/authority.js +27 -22
- package/dist/loop/authority.js.map +1 -1
- package/dist/loop/context.d.ts +8 -3
- package/dist/loop/context.d.ts.map +1 -1
- package/dist/loop/deliveries.d.ts +16 -16
- package/dist/loop/deliveries.d.ts.map +1 -1
- package/dist/loop/deliveries.js +35 -187
- package/dist/loop/deliveries.js.map +1 -1
- package/dist/loop/describe.d.ts +4 -6
- package/dist/loop/describe.d.ts.map +1 -1
- package/dist/loop/describe.js +2 -2
- package/dist/loop/describe.js.map +1 -1
- package/dist/loop/drive.d.ts +4 -6
- package/dist/loop/drive.d.ts.map +1 -1
- package/dist/loop/drive.js +9 -33
- package/dist/loop/drive.js.map +1 -1
- package/dist/loop/features.d.ts +23 -0
- package/dist/loop/features.d.ts.map +1 -0
- package/dist/loop/features.js +571 -0
- package/dist/loop/features.js.map +1 -0
- package/dist/loop/journal.d.ts +1 -1
- package/dist/loop/journal.js +2 -2
- package/dist/loop/journal.js.map +1 -1
- package/dist/loop/lock.d.ts +1 -1
- package/dist/loop/lock.js +1 -1
- package/dist/loop/open-host.d.ts.map +1 -1
- package/dist/loop/open-host.js +23 -24
- package/dist/loop/open-host.js.map +1 -1
- package/dist/loop/probe.d.ts +1 -1
- package/dist/loop/probe.d.ts.map +1 -1
- package/dist/loop/probe.js +51 -22
- package/dist/loop/probe.js.map +1 -1
- package/dist/loop/process-tree.d.ts +1 -1
- package/dist/loop/process-tree.js +1 -1
- package/dist/loop/report.d.ts +9 -7
- package/dist/loop/report.d.ts.map +1 -1
- package/dist/loop/report.js +30 -99
- package/dist/loop/report.js.map +1 -1
- package/dist/loop/streams.d.ts +5 -5
- package/dist/loop/streams.d.ts.map +1 -1
- package/dist/loop/streams.js +3 -3
- package/dist/loop/streams.js.map +1 -1
- package/dist/loop/tick.d.ts +6 -4
- package/dist/loop/tick.d.ts.map +1 -1
- package/dist/loop/tick.js +50 -78
- package/dist/loop/tick.js.map +1 -1
- package/dist/loop/trace.d.ts +5 -5
- package/dist/loop/trace.d.ts.map +1 -1
- package/dist/loop/trace.js +5 -14
- package/dist/loop/trace.js.map +1 -1
- package/dist/loop/transformers.d.ts +3 -13
- package/dist/loop/transformers.d.ts.map +1 -1
- package/dist/loop/transformers.js +3 -53
- package/dist/loop/transformers.js.map +1 -1
- package/dist/loop/warm.d.ts +3 -3
- package/dist/loop/warm.js +3 -3
- package/dist/loop/work-line.d.ts +1 -1
- package/dist/operator/agent-plugins.d.ts +11 -0
- package/dist/operator/agent-plugins.d.ts.map +1 -1
- package/dist/operator/agent-plugins.js +3 -3
- package/dist/operator/agent-plugins.js.map +1 -1
- package/dist/operator/board.d.ts +3 -8
- package/dist/operator/board.d.ts.map +1 -1
- package/dist/operator/board.js +2 -11
- package/dist/operator/board.js.map +1 -1
- package/dist/operator/cancel.d.ts +2 -2
- package/dist/operator/cancel.js +6 -6
- package/dist/operator/cancel.js.map +1 -1
- package/dist/operator/doctor.d.ts +9 -0
- package/dist/operator/doctor.d.ts.map +1 -1
- package/dist/operator/doctor.js +32 -25
- package/dist/operator/doctor.js.map +1 -1
- package/dist/operator/explain.d.ts +76 -0
- package/dist/operator/explain.d.ts.map +1 -0
- package/dist/operator/explain.js +556 -0
- package/dist/operator/explain.js.map +1 -0
- package/dist/operator/film.d.ts +3 -11
- package/dist/operator/film.d.ts.map +1 -1
- package/dist/operator/film.js +8 -90
- package/dist/operator/film.js.map +1 -1
- package/dist/operator/init.d.ts.map +1 -1
- package/dist/operator/init.js +41 -49
- package/dist/operator/init.js.map +1 -1
- package/dist/operator/live.js +1 -1
- package/dist/operator/live.js.map +1 -1
- package/dist/operator/log.js +3 -4
- package/dist/operator/log.js.map +1 -1
- package/dist/operator/release.d.ts +2 -2
- package/dist/operator/release.js +7 -7
- package/dist/operator/release.js.map +1 -1
- package/dist/operator/run.d.ts +25 -0
- package/dist/operator/run.d.ts.map +1 -0
- package/dist/operator/run.js +70 -0
- package/dist/operator/run.js.map +1 -0
- package/dist/operator/setup.d.ts.map +1 -1
- package/dist/operator/setup.js +20 -16
- package/dist/operator/setup.js.map +1 -1
- package/dist/plugins/manager.d.ts +33 -2
- package/dist/plugins/manager.d.ts.map +1 -1
- package/dist/plugins/manager.js +67 -0
- package/dist/plugins/manager.js.map +1 -1
- package/package.json +15 -16
package/dist/loop/report.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { subjectOf } from "@bluewombat/conductor";
|
|
2
1
|
/** Conductor's and Implementer's own defaults, said here so a counter reads right without a config key. */
|
|
3
2
|
const DEFAULT_MAX_REFUSALS = 3;
|
|
4
3
|
const DEFAULT_MAX_ATTEMPTS = 3;
|
|
@@ -15,25 +14,6 @@ export async function reportMoment(input, moment) {
|
|
|
15
14
|
const key = aggregate.intention.key;
|
|
16
15
|
const project = aggregate.intention.project;
|
|
17
16
|
switch (moment.kind) {
|
|
18
|
-
case "planned":
|
|
19
|
-
if (aggregate.plan !== undefined) {
|
|
20
|
-
await pushReport(input, plannedReport(key, project, aggregate.plan));
|
|
21
|
-
}
|
|
22
|
-
return;
|
|
23
|
-
case "subtask-integrated": {
|
|
24
|
-
// What landed, in the Plan's own headline: the sentence a person waits
|
|
25
|
-
// for. The counters that used to sit under it said the same thing worse.
|
|
26
|
-
const landed = aggregate.plan?.subtasks.find((subtask) => subtask.id === moment.subtaskId);
|
|
27
|
-
const what = landed === undefined ? moment.subtaskId : subjectOf(landed.intention);
|
|
28
|
-
await pushReport(input, {
|
|
29
|
-
event: "progress",
|
|
30
|
-
key,
|
|
31
|
-
project,
|
|
32
|
-
fields: { summary: `Landed ${moment.integrated} of ${moment.total}: ${what}` },
|
|
33
|
-
eventId: `${key}:integrated:${moment.subtaskId}`,
|
|
34
|
-
});
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
17
|
case "submitted":
|
|
38
18
|
await pushReport(input, {
|
|
39
19
|
event: "submitted",
|
|
@@ -45,34 +25,9 @@ export async function reportMoment(input, moment) {
|
|
|
45
25
|
return;
|
|
46
26
|
}
|
|
47
27
|
}
|
|
48
|
-
function plannedReport(key, project, record) {
|
|
49
|
-
// One line a person can read per Subtask: its first sentence, and what it
|
|
50
|
-
// waits on. The whole intention is in the ledger and on the pull request.
|
|
51
|
-
const plan = record.subtasks
|
|
52
|
-
.map((subtask, at) => {
|
|
53
|
-
const after = subtask.depends_on.length === 0 ? "" : ` (after ${subtask.depends_on.join(", ")})`;
|
|
54
|
-
return `${at + 1}. ${subjectOf(subtask.intention)}${after}`;
|
|
55
|
-
})
|
|
56
|
-
.join("\n");
|
|
57
|
-
return {
|
|
58
|
-
event: "planned",
|
|
59
|
-
key,
|
|
60
|
-
project,
|
|
61
|
-
fields: { plan },
|
|
62
|
-
// A feature is driven again on every pass while it waits for a verdict.
|
|
63
|
-
// The Plan was made once; say it once.
|
|
64
|
-
eventId: `${key}:planned:${record.planned_at}`,
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
28
|
export async function reportAfterRun(input, run, aggregate) {
|
|
68
29
|
const key = aggregate.intention.key;
|
|
69
30
|
const project = aggregate.intention.project;
|
|
70
|
-
// The plan is said as it lands (reportMoment); this is the catch-up for a
|
|
71
|
-
// plan made before a restart or while the tracker was down — same id, so a
|
|
72
|
-
// manager that already has it says nothing.
|
|
73
|
-
if (aggregate.plan !== undefined) {
|
|
74
|
-
await pushReport(input, plannedReport(key, project, aggregate.plan));
|
|
75
|
-
}
|
|
76
31
|
switch (run.outcome) {
|
|
77
32
|
case "done":
|
|
78
33
|
// The Authority's own name for the work, when there was one. A local
|
|
@@ -102,27 +57,12 @@ export async function reportAfterRun(input, run, aggregate) {
|
|
|
102
57
|
case "refused":
|
|
103
58
|
return;
|
|
104
59
|
}
|
|
105
|
-
const kind = aggregate.escalation?.kind ?? "
|
|
106
|
-
// One escalation per round and kind: a
|
|
107
|
-
// human's
|
|
108
|
-
// not do —
|
|
60
|
+
const kind = aggregate.escalation?.kind ?? "unit";
|
|
61
|
+
// One escalation per round and kind: a Ticket escalates again only after a
|
|
62
|
+
// human's resume, which is what the ledger counts. The Attempt count would
|
|
63
|
+
// not do — an escalation before any Attempt has none.
|
|
109
64
|
const eventId = escalationId(key, aggregate, kind);
|
|
110
65
|
switch (kind) {
|
|
111
|
-
case "plan":
|
|
112
|
-
await pushReport(input, {
|
|
113
|
-
event: "escalated",
|
|
114
|
-
key,
|
|
115
|
-
project,
|
|
116
|
-
eventId,
|
|
117
|
-
fields: {
|
|
118
|
-
stage: "plan",
|
|
119
|
-
// A refused Plan left its reason as `invalid`; a freeze for an
|
|
120
|
-
// intention edited in flight left the ledger's sentence as the
|
|
121
|
-
// escalation's report. Neither is "the Plan was refused" for the other.
|
|
122
|
-
reason: aggregate.invalid?.reason ?? aggregate.escalation?.report ?? "The Plan was refused.",
|
|
123
|
-
},
|
|
124
|
-
});
|
|
125
|
-
return;
|
|
126
66
|
case "merging":
|
|
127
67
|
await pushReport(input, {
|
|
128
68
|
event: "escalated",
|
|
@@ -136,8 +76,8 @@ export async function reportAfterRun(input, run, aggregate) {
|
|
|
136
76
|
});
|
|
137
77
|
return;
|
|
138
78
|
case "assembly":
|
|
139
|
-
// The
|
|
140
|
-
//
|
|
79
|
+
// The assembled work, not the unit: reporting it as the unit sends a
|
|
80
|
+
// reader to look at work that did not fail.
|
|
141
81
|
await pushReport(input, {
|
|
142
82
|
event: "escalated",
|
|
143
83
|
key,
|
|
@@ -145,7 +85,7 @@ export async function reportAfterRun(input, run, aggregate) {
|
|
|
145
85
|
eventId,
|
|
146
86
|
fields: {
|
|
147
87
|
stage: "integrating",
|
|
148
|
-
reason: "The assembled
|
|
88
|
+
reason: "The assembled work was refused and no attempt is left.",
|
|
149
89
|
...(aggregate.escalation?.report === undefined
|
|
150
90
|
? {}
|
|
151
91
|
: { trace: aggregate.escalation.report }),
|
|
@@ -170,13 +110,13 @@ export async function reportAfterRun(input, run, aggregate) {
|
|
|
170
110
|
},
|
|
171
111
|
});
|
|
172
112
|
return;
|
|
173
|
-
case "
|
|
113
|
+
case "unit":
|
|
174
114
|
await pushReport(input, {
|
|
175
115
|
event: "escalated",
|
|
176
116
|
key,
|
|
177
117
|
project,
|
|
178
118
|
eventId,
|
|
179
|
-
fields:
|
|
119
|
+
fields: unitEscalation(input, aggregate),
|
|
180
120
|
});
|
|
181
121
|
return;
|
|
182
122
|
}
|
|
@@ -197,27 +137,20 @@ function submittedReason(aggregate, maxRefusals) {
|
|
|
197
137
|
? "The Submission was refused and no attempt is left."
|
|
198
138
|
: "The Submission was refused.";
|
|
199
139
|
}
|
|
200
|
-
/** `<key>:escalated:<round>:<kind
|
|
140
|
+
/** `<key>:escalated:<round>:<kind>` — the same escalation hashes the same after a restart. */
|
|
201
141
|
function escalationId(key, aggregate, kind) {
|
|
202
|
-
|
|
203
|
-
const unit = kind === "subtask" ? `:${aggregate.escalation?.subtask_id ?? "unknown"}` : "";
|
|
204
|
-
return `${key}:escalated:${round}:${kind}${unit}`;
|
|
142
|
+
return `${key}:escalated:${aggregate.resumes}:${kind}`;
|
|
205
143
|
}
|
|
206
144
|
/**
|
|
207
|
-
* A
|
|
208
|
-
*
|
|
209
|
-
*
|
|
210
|
-
* because that is the only question left to the reader.
|
|
145
|
+
* A unit escalation, for a person who was not there. The last Attempt says who
|
|
146
|
+
* refused it and why, the count says whether more patience would have helped —
|
|
147
|
+
* and what resuming does, because that is the only question left to the reader.
|
|
211
148
|
*/
|
|
212
|
-
function
|
|
213
|
-
|
|
214
|
-
const unit = id ?? "unknown";
|
|
215
|
-
const planned = aggregate.plan?.subtasks.find((subtask) => subtask.id === id);
|
|
216
|
-
const what = planned === undefined ? unit : subjectOf(planned.intention);
|
|
217
|
-
// This round's Attempts only: the budget is per round, and a Subtask resumed
|
|
149
|
+
function unitEscalation(input, aggregate) {
|
|
150
|
+
// This round's Attempts only: the budget is per round, and a unit resumed
|
|
218
151
|
// once already spent three — "6 times of 3" counts against nothing.
|
|
219
|
-
const round = aggregate.resumes
|
|
220
|
-
const attempts = aggregate.attempts.filter((attempt) => attempt.
|
|
152
|
+
const round = aggregate.resumes;
|
|
153
|
+
const attempts = aggregate.attempts.filter((attempt) => attempt.round === round);
|
|
221
154
|
const last = [...attempts].reverse().find((attempt) => attempt.trace !== undefined)?.trace;
|
|
222
155
|
const max = input.options.builder?.maxAttempts ?? DEFAULT_MAX_ATTEMPTS;
|
|
223
156
|
const by = last?.refusedBy ?? "a Gate";
|
|
@@ -240,15 +173,13 @@ function subtaskEscalation(input, aggregate) {
|
|
|
240
173
|
else {
|
|
241
174
|
why = (aggregate.escalation?.report ?? "it escalated").replace(/\.$/, "");
|
|
242
175
|
}
|
|
243
|
-
const resume =
|
|
176
|
+
const resume = "On resume, the work starts again from zero.";
|
|
244
177
|
const fields = {
|
|
245
178
|
stage: "unit",
|
|
246
|
-
reason: `${
|
|
179
|
+
reason: `${why}. ${resume}`,
|
|
247
180
|
// The refusal in the refuser's own words; the ledger's sentence when no
|
|
248
|
-
// Attempt left one
|
|
249
|
-
// written before reports were kept.
|
|
181
|
+
// Attempt left one; the verdict alone when none was kept.
|
|
250
182
|
trace: last?.report ?? aggregate.escalation?.report ?? last?.ended ?? "No Trace recorded.",
|
|
251
|
-
unit,
|
|
252
183
|
};
|
|
253
184
|
if (attempts.length > 0) {
|
|
254
185
|
fields.counters = { attempts: `${attempts.length} of ${max}` };
|
|
@@ -282,7 +213,7 @@ async function reportRefusal(input, aggregate) {
|
|
|
282
213
|
// in the same round would otherwise collide with this id.
|
|
283
214
|
eventId: `${aggregate.intention.key}:refused:parked:${parkedRefusals}`,
|
|
284
215
|
fields: {
|
|
285
|
-
summary: `${parked.refused_by ?? "assembly.validate"} refused the assembled
|
|
216
|
+
summary: `${parked.refused_by ?? "assembly.validate"} refused the assembled work; a repair is on its way (refusal ${spent} of ${max}).`,
|
|
286
217
|
stage: "integrating",
|
|
287
218
|
trace: parked.report,
|
|
288
219
|
},
|
|
@@ -312,26 +243,26 @@ async function reportRefusal(input, aggregate) {
|
|
|
312
243
|
}
|
|
313
244
|
export function resumePointOf(aggregate) {
|
|
314
245
|
switch (aggregate.escalation?.kind) {
|
|
315
|
-
|
|
316
|
-
return "planning";
|
|
317
|
-
// What the ledger does on resumeReady, said in the same words.
|
|
246
|
+
// What the ledger does on resumeTicket, said in the same words.
|
|
318
247
|
case "merging":
|
|
319
248
|
case "assembly":
|
|
320
249
|
case "submitted":
|
|
321
250
|
return "integrating";
|
|
322
|
-
case "
|
|
251
|
+
case "unit":
|
|
323
252
|
case undefined:
|
|
324
253
|
return "running";
|
|
325
254
|
}
|
|
326
255
|
}
|
|
327
|
-
export async function pushReport(input, report
|
|
256
|
+
export async function pushReport(input, report,
|
|
257
|
+
/** Whose Thread it goes to: a Ticket's tracker by default, a Feature's manager when named. */
|
|
258
|
+
to = "tickets") {
|
|
328
259
|
if (report.eventId !== undefined && input.said?.has(report.eventId)) {
|
|
329
260
|
return;
|
|
330
261
|
}
|
|
331
262
|
// How long the tracker took, kept either way: a report is awaited where the
|
|
332
263
|
// work is, and one that hung for minutes looked like nothing at all.
|
|
333
264
|
const started = Date.now();
|
|
334
|
-
const ok = await input.
|
|
265
|
+
const ok = await input[to].report({
|
|
335
266
|
event: report.event,
|
|
336
267
|
key: report.key,
|
|
337
268
|
project: report.project,
|
|
@@ -352,9 +283,9 @@ export async function pushReport(input, report) {
|
|
|
352
283
|
/**
|
|
353
284
|
* One Host line per Project we drove: the outcome, and a heartbeat while it waits.
|
|
354
285
|
*/
|
|
355
|
-
export function
|
|
286
|
+
export function journalTicket(journal, outcome, aggregate, said) {
|
|
356
287
|
const key = aggregate.intention.key;
|
|
357
|
-
// A
|
|
288
|
+
// A unit held by a bail is driven again every poll until the clock (or a
|
|
358
289
|
// release) frees it. One `held` line names the wait; repeating `ran paused`
|
|
359
290
|
// every ten seconds is noise.
|
|
360
291
|
if (outcome === "paused" &&
|
package/dist/loop/report.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/loop/report.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/loop/report.ts"],"names":[],"mappings":"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"}
|
package/dist/loop/streams.d.ts
CHANGED
|
@@ -24,9 +24,9 @@ export type ChildSink = {
|
|
|
24
24
|
};
|
|
25
25
|
/** Which child is speaking, in Host's terms rather than any one Transformer's. */
|
|
26
26
|
export type StreamSubject = {
|
|
27
|
-
/** The
|
|
27
|
+
/** The Ticket this serves, when the Transformer knew it. */
|
|
28
28
|
key?: string | undefined;
|
|
29
|
-
/** The Task
|
|
29
|
+
/** The Task — the name its transcript is filed under. */
|
|
30
30
|
id: string;
|
|
31
31
|
attempt?: number | undefined;
|
|
32
32
|
gateId?: string | undefined;
|
|
@@ -34,9 +34,9 @@ export type StreamSubject = {
|
|
|
34
34
|
export type Streams = {
|
|
35
35
|
open(subject: StreamSubject): ChildSink | undefined;
|
|
36
36
|
/**
|
|
37
|
-
* Forget what was filmed of one
|
|
37
|
+
* Forget what was filmed of one Ticket.
|
|
38
38
|
*
|
|
39
|
-
* Called when a
|
|
39
|
+
* Called when a Ticket reaches an end nobody has to read: the work landed,
|
|
40
40
|
* or it was abandoned. An escalation keeps everything — that is exactly when
|
|
41
41
|
* a person has to go and look.
|
|
42
42
|
*/
|
|
@@ -53,7 +53,7 @@ export type StreamsSpec = {
|
|
|
53
53
|
/**
|
|
54
54
|
* One file per child, filed the way a transcript is.
|
|
55
55
|
*
|
|
56
|
-
* Same directory per
|
|
56
|
+
* Same directory per Ticket and same stem as `openTranscript` writes, so the
|
|
57
57
|
* prompt a slot kept and the stream underneath it sit side by side and join by
|
|
58
58
|
* name rather than by guesswork.
|
|
59
59
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streams.d.ts","sourceRoot":"","sources":["../../src/loop/streams.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACxD,KAAK,IAAI,IAAI,CAAC;CACf,CAAC;AAEF,kFAAkF;AAClF,MAAM,MAAM,aAAa,GAAG;IAC1B,
|
|
1
|
+
{"version":3,"file":"streams.d.ts","sourceRoot":"","sources":["../../src/loop/streams.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACxD,KAAK,IAAI,IAAI,CAAC;CACf,CAAC;AAEF,kFAAkF;AAClF,MAAM,MAAM,aAAa,GAAG;IAC1B,4DAA4D;IAC5D,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,yDAAyD;IACzD,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS,GAAG,SAAS,CAAC;IACpD;;;;;;OAMG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,yEAAyE;IACzE,GAAG,EAAE,MAAM,CAAC;IACZ,qEAAqE;IACrE,IAAI,EAAE,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC;IACvC,2EAA2E;IAC3E,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAmEtD"}
|
package/dist/loop/streams.js
CHANGED
|
@@ -3,7 +3,7 @@ import { join, relative } from "node:path";
|
|
|
3
3
|
/**
|
|
4
4
|
* One file per child, filed the way a transcript is.
|
|
5
5
|
*
|
|
6
|
-
* Same directory per
|
|
6
|
+
* Same directory per Ticket and same stem as `openTranscript` writes, so the
|
|
7
7
|
* prompt a slot kept and the stream underneath it sit side by side and join by
|
|
8
8
|
* name rather than by guesswork.
|
|
9
9
|
*/
|
|
@@ -78,7 +78,7 @@ export function openStreams(spec) {
|
|
|
78
78
|
},
|
|
79
79
|
};
|
|
80
80
|
}
|
|
81
|
-
/** What one
|
|
81
|
+
/** What one Ticket's directory holds, before it is removed. */
|
|
82
82
|
function measure(dir) {
|
|
83
83
|
let files = 0;
|
|
84
84
|
let bytes = 0;
|
|
@@ -135,7 +135,7 @@ function sinkOf(file, keep, report) {
|
|
|
135
135
|
/**
|
|
136
136
|
* `<id>-attempt-<n>[-gate-<id>]-<stamp>.ndjson`.
|
|
137
137
|
*
|
|
138
|
-
* Stamped because a
|
|
138
|
+
* Stamped because a Ticket resumed by a human starts its Attempt count again,
|
|
139
139
|
* and two rounds would otherwise write the same name. The journal names the
|
|
140
140
|
* file it opened, so nothing has to reconstruct this.
|
|
141
141
|
*/
|
package/dist/loop/streams.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streams.js","sourceRoot":"","sources":["../../src/loop/streams.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"streams.js","sourceRoot":"","sources":["../../src/loop/streams.ts"],"names":[],"mappings":"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"}
|
package/dist/loop/tick.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { Conductor, ProjectRunResult } from "@bluewombat/conductor";
|
|
|
2
2
|
import type { EventName } from "@bluewombat/manager-kit";
|
|
3
3
|
import type { WorkLedger } from "@bluewombat/work-ledger";
|
|
4
4
|
import type { HostRunInput } from "./context.js";
|
|
5
|
-
import {
|
|
5
|
+
import type { CancelResult, ReleaseResult } from "./deliveries.js";
|
|
6
6
|
export type HostTickResult = {
|
|
7
7
|
listenerOutcome: string;
|
|
8
8
|
reported: EventName[];
|
|
@@ -14,13 +14,15 @@ export type Host = {
|
|
|
14
14
|
conductor: Conductor;
|
|
15
15
|
runOnce(): Promise<HostTickResult>;
|
|
16
16
|
run(): Promise<HostTickResult>;
|
|
17
|
-
/** Abandon one Feature by key. Takes the same path as a `cancel` delivery. */
|
|
17
|
+
/** Abandon one Feature or Ticket by key. Takes the same path as a `cancel` delivery. */
|
|
18
18
|
cancel(key: string): Promise<CancelResult>;
|
|
19
|
-
/** Drop a held
|
|
19
|
+
/** Drop a held unit without waiting for the bail clock. */
|
|
20
20
|
release(key: string): Promise<ReleaseResult>;
|
|
21
21
|
/** Give the ledger back: the lock `openHost` took. */
|
|
22
22
|
close(): Promise<void>;
|
|
23
23
|
};
|
|
24
24
|
export declare function runOnce(input: HostRunInput): Promise<HostTickResult>;
|
|
25
|
-
|
|
25
|
+
/** How long an idle loop goes without saying that it is still turning. */
|
|
26
|
+
export declare const HEARTBEAT_MS = 60000;
|
|
27
|
+
export declare function run(input: HostRunInput, now?: () => number): Promise<HostTickResult>;
|
|
26
28
|
//# sourceMappingURL=tick.d.ts.map
|
package/dist/loop/tick.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tick.d.ts","sourceRoot":"","sources":["../../src/loop/tick.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"tick.d.ts","sourceRoot":"","sources":["../../src/loop/tick.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAgB,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAQnE,MAAM,MAAM,cAAc,GAAG;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,IAAI,GAAG;IACjB,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;IACnC,GAAG,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;IAC/B,wFAAwF;IACxF,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3C,2DAA2D;IAC3D,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC7C,sDAAsD;IACtD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC;AAEF,wBAAsB,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAiF1E;AAED,0EAA0E;AAC1E,eAAO,MAAM,YAAY,QAAS,CAAC;AAEnC,wBAAsB,GAAG,CACvB,KAAK,EAAE,YAAY,EACnB,GAAG,GAAE,MAAM,MAAiB,GAC3B,OAAO,CAAC,cAAc,CAAC,CAoCzB"}
|
package/dist/loop/tick.js
CHANGED
|
@@ -1,34 +1,20 @@
|
|
|
1
|
-
import { refreshWorkLine } from "./authority.js";
|
|
2
1
|
import { loadCursor, saveCursor } from "./cursor.js";
|
|
3
|
-
import {
|
|
4
|
-
import { driveUntilBlocked } from "./drive.js";
|
|
2
|
+
import { advanceProject, handleFeatureDelivery } from "./features.js";
|
|
5
3
|
import { abandonGone } from "./probe.js";
|
|
6
4
|
import { reportMoment } from "./report.js";
|
|
7
|
-
/**
|
|
8
|
-
|
|
9
|
-
* `received` is the queue that nothing else starts once the tracker goes quiet.
|
|
10
|
-
*/
|
|
11
|
-
const SWEEP_STATES = new Set([
|
|
12
|
-
"received",
|
|
13
|
-
"planning",
|
|
14
|
-
"running",
|
|
15
|
-
"integrating",
|
|
16
|
-
"submitted",
|
|
17
|
-
]);
|
|
5
|
+
/** Features that still have something to do: the Projects the sweep moves along. */
|
|
6
|
+
const SWEEP_STATES = new Set(["waiting", "open", "submitted"]);
|
|
18
7
|
export async function runOnce(input) {
|
|
19
|
-
const { options,
|
|
8
|
+
const { options, ledger, features, journal, trace } = input;
|
|
20
9
|
const interruptFlag = options.interruptFlag ?? { interrupted: false };
|
|
21
10
|
const reported = [];
|
|
22
11
|
let lastRun;
|
|
23
|
-
// Projects a delivery already drove this pass. Driving one twice is not
|
|
24
|
-
// wrong, it just does two steps where the caller asked for one.
|
|
25
|
-
const driven = new Set();
|
|
26
12
|
const since = await loadCursor(options.ledgerRoot);
|
|
27
13
|
const listenInput = {};
|
|
28
14
|
if (since !== undefined) {
|
|
29
15
|
listenInput.since = since;
|
|
30
16
|
}
|
|
31
|
-
const listened = await
|
|
17
|
+
const listened = await features.listen(listenInput);
|
|
32
18
|
journal.append({
|
|
33
19
|
event: "listen",
|
|
34
20
|
outcome: listened.outcome,
|
|
@@ -37,84 +23,49 @@ export async function runOnce(input) {
|
|
|
37
23
|
if (listened.deliveries.length > 0) {
|
|
38
24
|
trace(`listen ${listened.deliveries.length} to look at`);
|
|
39
25
|
}
|
|
26
|
+
// A tracker that cannot be read is the one thing a quiet loop must not hide:
|
|
27
|
+
// it is repeated on every poll until it answers again.
|
|
28
|
+
if (listened.outcome === "source-lost" || listened.outcome === "invalid-invocation") {
|
|
29
|
+
trace(`listen ${listened.outcome}: the tracker could not be read`);
|
|
30
|
+
}
|
|
40
31
|
const deliveryInput = { ...input, reported };
|
|
41
32
|
const probed = await abandonGone(deliveryInput, listened.outcome);
|
|
42
33
|
if (probed === "stop") {
|
|
43
34
|
return { listenerOutcome: listened.outcome, reported };
|
|
44
35
|
}
|
|
45
|
-
// The work line copy is brought up to date before anything is driven on it
|
|
46
|
-
// — and only then: a pass with nothing to drive fetches nothing. Starting
|
|
47
|
-
// work on a copy that could not be brought up to date builds on a version
|
|
48
|
-
// that no longer exists, so a failed refresh drives nothing; the next pass
|
|
49
|
-
// tries again, and a human can look at that tree meanwhile.
|
|
50
|
-
const pendingBefore = await pendingWork(ledger);
|
|
51
|
-
const somethingToDrive = listened.deliveries.length > 0 || pendingBefore.length > 0;
|
|
52
|
-
if (somethingToDrive && authority !== undefined && workLine.target !== undefined) {
|
|
53
|
-
const refreshed = await refreshWorkLine({
|
|
54
|
-
workLineStable: workLine.stable,
|
|
55
|
-
workLineTarget: workLine.target,
|
|
56
|
-
refreshArgv: options.authority?.refreshArgv ?? [],
|
|
57
|
-
timeoutMs: options.timeoutMs,
|
|
58
|
-
env: workLine.env,
|
|
59
|
-
});
|
|
60
|
-
if (!refreshed.ok) {
|
|
61
|
-
journal.append({
|
|
62
|
-
event: "refresh",
|
|
63
|
-
outcome: "failed",
|
|
64
|
-
target: workLine.target,
|
|
65
|
-
...(refreshed.detail === undefined ? {} : { detail: refreshed.detail }),
|
|
66
|
-
});
|
|
67
|
-
trace(`work line cannot fast-forward onto ${workLine.target}, so nothing started. ${refreshed.detail ?? ""}`);
|
|
68
|
-
return { listenerOutcome: "skipped", reported };
|
|
69
|
-
}
|
|
70
|
-
journal.append({ event: "refresh", outcome: "ok", target: workLine.target });
|
|
71
|
-
}
|
|
72
36
|
// What Conductor says mid-pass is reported as it happens, not after the pass:
|
|
73
|
-
// a
|
|
37
|
+
// a Submission is something a person waits for.
|
|
74
38
|
input.watcher.current = (moment) => reportMoment(deliveryInput, moment);
|
|
75
39
|
let cursor = since;
|
|
76
40
|
for (const delivery of listened.deliveries) {
|
|
77
41
|
if (interruptFlag.interrupted) {
|
|
78
42
|
break;
|
|
79
43
|
}
|
|
80
|
-
const handled = await
|
|
81
|
-
...deliveryInput,
|
|
82
|
-
payload: delivery.payload,
|
|
83
|
-
});
|
|
44
|
+
const handled = await handleFeatureDelivery(deliveryInput, delivery.payload);
|
|
84
45
|
if (!handled.advance) {
|
|
85
46
|
break;
|
|
86
47
|
}
|
|
87
|
-
if (handled.run !== undefined) {
|
|
88
|
-
lastRun = handled.run;
|
|
89
|
-
}
|
|
90
|
-
if (handled.project !== undefined) {
|
|
91
|
-
driven.add(handled.project);
|
|
92
|
-
}
|
|
93
48
|
cursor = delivery.cursor;
|
|
94
49
|
await saveCursor(options.ledgerRoot, delivery.cursor);
|
|
95
50
|
}
|
|
96
|
-
// A Project with
|
|
97
|
-
//
|
|
98
|
-
//
|
|
99
|
-
//
|
|
100
|
-
const
|
|
101
|
-
if (
|
|
102
|
-
journal.append({
|
|
103
|
-
event: "sweep",
|
|
104
|
-
keys: pending.map((summary) => summary.key),
|
|
105
|
-
});
|
|
51
|
+
// A Project with a Feature to open, make or fold moves on whether or not the
|
|
52
|
+
// tracker mentioned it again: nothing else claims it, so a restart with only
|
|
53
|
+
// waiting work would otherwise sit idle until a delivery that has no reason
|
|
54
|
+
// to come.
|
|
55
|
+
const projects = await projectsToSweep(ledger);
|
|
56
|
+
if (projects.length > 0) {
|
|
57
|
+
journal.append({ event: "sweep", projects });
|
|
106
58
|
}
|
|
107
|
-
for (const
|
|
108
|
-
if (interruptFlag.interrupted
|
|
109
|
-
|
|
59
|
+
for (const project of projects) {
|
|
60
|
+
if (interruptFlag.interrupted) {
|
|
61
|
+
break;
|
|
110
62
|
}
|
|
111
|
-
|
|
112
|
-
const run = await driveUntilBlocked(deliveryInput, summary.project, summary.key);
|
|
63
|
+
const run = await advanceProject(deliveryInput, project);
|
|
113
64
|
if (run !== undefined) {
|
|
114
65
|
lastRun = run;
|
|
115
66
|
}
|
|
116
67
|
}
|
|
117
|
-
if (listened.deliveries.length === 0 &&
|
|
68
|
+
if (listened.deliveries.length === 0 && projects.length === 0) {
|
|
118
69
|
journal.append({ event: "idle" });
|
|
119
70
|
}
|
|
120
71
|
const result = {
|
|
@@ -129,13 +80,17 @@ export async function runOnce(input) {
|
|
|
129
80
|
}
|
|
130
81
|
return result;
|
|
131
82
|
}
|
|
132
|
-
|
|
133
|
-
|
|
83
|
+
/** How long an idle loop goes without saying that it is still turning. */
|
|
84
|
+
export const HEARTBEAT_MS = 60_000;
|
|
85
|
+
export async function run(input, now = Date.now) {
|
|
86
|
+
const { options, conductor, journal, trace } = input;
|
|
134
87
|
const interruptFlag = options.interruptFlag ?? { interrupted: false };
|
|
135
88
|
let last = {
|
|
136
89
|
listenerOutcome: "completed",
|
|
137
90
|
reported: [],
|
|
138
91
|
};
|
|
92
|
+
let idlePasses = 0;
|
|
93
|
+
let lastSaid = now();
|
|
139
94
|
for (;;) {
|
|
140
95
|
if (interruptFlag.interrupted) {
|
|
141
96
|
journal.append({ event: "paused" });
|
|
@@ -146,12 +101,29 @@ export async function run(input) {
|
|
|
146
101
|
if (options.pollIntervalMs === undefined) {
|
|
147
102
|
return last;
|
|
148
103
|
}
|
|
104
|
+
// Nothing printed for a minute looks the same as a hung process, so an idle
|
|
105
|
+
// loop says once a minute that it is polling and found nothing to do.
|
|
106
|
+
if (last.lastRun === undefined && last.reported.length === 0) {
|
|
107
|
+
idlePasses += 1;
|
|
108
|
+
if (now() - lastSaid >= HEARTBEAT_MS) {
|
|
109
|
+
trace(`waiting nothing to do: ${idlePasses} poll(s) in ${Math.round((now() - lastSaid) / 1000)}s`);
|
|
110
|
+
idlePasses = 0;
|
|
111
|
+
lastSaid = now();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
idlePasses = 0;
|
|
116
|
+
lastSaid = now();
|
|
117
|
+
}
|
|
149
118
|
await sleep(options.pollIntervalMs, interruptFlag);
|
|
150
119
|
}
|
|
151
120
|
}
|
|
152
|
-
async function
|
|
153
|
-
const
|
|
154
|
-
|
|
121
|
+
async function projectsToSweep(ledger) {
|
|
122
|
+
const features = await ledger.listFeatures();
|
|
123
|
+
const projects = features
|
|
124
|
+
.filter((summary) => SWEEP_STATES.has(summary.state))
|
|
125
|
+
.map((summary) => summary.project);
|
|
126
|
+
return [...new Set(projects)];
|
|
155
127
|
}
|
|
156
128
|
function sleep(ms, interruptFlag) {
|
|
157
129
|
return new Promise((resolve) => {
|