@bluewombat/runtime 0.1.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 +473 -0
- package/SPECS.md +303 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +172 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/defaults.d.ts +17 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +17 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/find-config.d.ts +9 -0
- package/dist/config/find-config.d.ts.map +1 -0
- package/dist/config/find-config.js +25 -0
- package/dist/config/find-config.js.map +1 -0
- package/dist/config/home.d.ts +17 -0
- package/dist/config/home.d.ts.map +1 -0
- package/dist/config/home.js +23 -0
- package/dist/config/home.js.map +1 -0
- package/dist/config/load-config.d.ts +13 -0
- package/dist/config/load-config.d.ts.map +1 -0
- package/dist/config/load-config.js +537 -0
- package/dist/config/load-config.js.map +1 -0
- package/dist/config/parse-args.d.ts +25 -0
- package/dist/config/parse-args.d.ts.map +1 -0
- package/dist/config/parse-args.js +478 -0
- package/dist/config/parse-args.js.map +1 -0
- package/dist/config/types.d.ts +144 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +2 -0
- package/dist/config/types.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/loop/authority.d.ts +51 -0
- package/dist/loop/authority.d.ts.map +1 -0
- package/dist/loop/authority.js +166 -0
- package/dist/loop/authority.js.map +1 -0
- package/dist/loop/context.d.ts +44 -0
- package/dist/loop/context.d.ts.map +1 -0
- package/dist/loop/context.js +2 -0
- package/dist/loop/context.js.map +1 -0
- package/dist/loop/cursor.d.ts +4 -0
- package/dist/loop/cursor.d.ts.map +1 -0
- package/dist/loop/cursor.js +20 -0
- package/dist/loop/cursor.js.map +1 -0
- package/dist/loop/deliveries.d.ts +22 -0
- package/dist/loop/deliveries.d.ts.map +1 -0
- package/dist/loop/deliveries.js +240 -0
- package/dist/loop/deliveries.js.map +1 -0
- package/dist/loop/describe.d.ts +40 -0
- package/dist/loop/describe.d.ts.map +1 -0
- package/dist/loop/describe.js +48 -0
- package/dist/loop/describe.js.map +1 -0
- package/dist/loop/drive.d.ts +15 -0
- package/dist/loop/drive.d.ts.map +1 -0
- package/dist/loop/drive.js +42 -0
- package/dist/loop/drive.js.map +1 -0
- package/dist/loop/journal.d.ts +22 -0
- package/dist/loop/journal.d.ts.map +1 -0
- package/dist/loop/journal.js +49 -0
- package/dist/loop/journal.js.map +1 -0
- package/dist/loop/lock.d.ts +11 -0
- package/dist/loop/lock.d.ts.map +1 -0
- package/dist/loop/lock.js +60 -0
- package/dist/loop/lock.js.map +1 -0
- package/dist/loop/message.d.ts +34 -0
- package/dist/loop/message.d.ts.map +1 -0
- package/dist/loop/message.js +48 -0
- package/dist/loop/message.js.map +1 -0
- package/dist/loop/open-host.d.ts +13 -0
- package/dist/loop/open-host.d.ts.map +1 -0
- package/dist/loop/open-host.js +180 -0
- package/dist/loop/open-host.js.map +1 -0
- package/dist/loop/probe.d.ts +9 -0
- package/dist/loop/probe.d.ts.map +1 -0
- package/dist/loop/probe.js +57 -0
- package/dist/loop/probe.js.map +1 -0
- package/dist/loop/report.d.ts +26 -0
- package/dist/loop/report.d.ts.map +1 -0
- package/dist/loop/report.js +328 -0
- package/dist/loop/report.js.map +1 -0
- package/dist/loop/tick.d.ts +24 -0
- package/dist/loop/tick.d.ts.map +1 -0
- package/dist/loop/tick.js +169 -0
- package/dist/loop/tick.js.map +1 -0
- package/dist/loop/trace.d.ts +16 -0
- package/dist/loop/trace.d.ts.map +1 -0
- package/dist/loop/trace.js +49 -0
- package/dist/loop/trace.js.map +1 -0
- package/dist/loop/transformers.d.ts +27 -0
- package/dist/loop/transformers.d.ts.map +1 -0
- package/dist/loop/transformers.js +229 -0
- package/dist/loop/transformers.js.map +1 -0
- package/dist/loop/work-line.d.ts +73 -0
- package/dist/loop/work-line.d.ts.map +1 -0
- package/dist/loop/work-line.js +109 -0
- package/dist/loop/work-line.js.map +1 -0
- package/dist/operator/board.d.ts +31 -0
- package/dist/operator/board.d.ts.map +1 -0
- package/dist/operator/board.js +67 -0
- package/dist/operator/board.js.map +1 -0
- package/dist/operator/cancel.d.ts +19 -0
- package/dist/operator/cancel.d.ts.map +1 -0
- package/dist/operator/cancel.js +70 -0
- package/dist/operator/cancel.js.map +1 -0
- package/dist/operator/doctor.d.ts +15 -0
- package/dist/operator/doctor.d.ts.map +1 -0
- package/dist/operator/doctor.js +416 -0
- package/dist/operator/doctor.js.map +1 -0
- package/dist/operator/git-remote.d.ts +39 -0
- package/dist/operator/git-remote.d.ts.map +1 -0
- package/dist/operator/git-remote.js +78 -0
- package/dist/operator/git-remote.js.map +1 -0
- package/dist/operator/init.d.ts +28 -0
- package/dist/operator/init.d.ts.map +1 -0
- package/dist/operator/init.js +522 -0
- package/dist/operator/init.js.map +1 -0
- package/dist/operator/live.d.ts +19 -0
- package/dist/operator/live.d.ts.map +1 -0
- package/dist/operator/live.js +149 -0
- package/dist/operator/live.js.map +1 -0
- package/dist/operator/prompt.d.ts +35 -0
- package/dist/operator/prompt.d.ts.map +1 -0
- package/dist/operator/prompt.js +125 -0
- package/dist/operator/prompt.js.map +1 -0
- package/dist/operator/setup.d.ts +18 -0
- package/dist/operator/setup.d.ts.map +1 -0
- package/dist/operator/setup.js +62 -0
- package/dist/operator/setup.js.map +1 -0
- package/dist/plugins/discover.d.ts +13 -0
- package/dist/plugins/discover.d.ts.map +1 -0
- package/dist/plugins/discover.js +81 -0
- package/dist/plugins/discover.js.map +1 -0
- package/dist/plugins/isolation.d.ts +78 -0
- package/dist/plugins/isolation.d.ts.map +1 -0
- package/dist/plugins/isolation.js +64 -0
- package/dist/plugins/isolation.js.map +1 -0
- package/dist/plugins/load.d.ts +35 -0
- package/dist/plugins/load.d.ts.map +1 -0
- package/dist/plugins/load.js +109 -0
- package/dist/plugins/load.js.map +1 -0
- package/dist/plugins/manager.d.ts +43 -0
- package/dist/plugins/manager.d.ts.map +1 -0
- package/dist/plugins/manager.js +47 -0
- package/dist/plugins/manager.js.map +1 -0
- package/dist/plugins/persist.d.ts +33 -0
- package/dist/plugins/persist.d.ts.map +1 -0
- package/dist/plugins/persist.js +26 -0
- package/dist/plugins/persist.js.map +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"open-host.js","sourceRoot":"","sources":["../../src/loop/open-host.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { HostDeliveryInput } from "./context.js";
|
|
2
|
+
/**
|
|
3
|
+
* Ask the manager whether Features Host already holds are still on the tracker.
|
|
4
|
+
*
|
|
5
|
+
* A poll cannot see an absence: a deleted item never appears again. `gone` is
|
|
6
|
+
* the same abandon as a `cancel` delivery. `unavailable` is not.
|
|
7
|
+
*/
|
|
8
|
+
export declare function abandonGone(input: HostDeliveryInput, listenOutcome: string): Promise<"ok" | "stop">;
|
|
9
|
+
//# sourceMappingURL=probe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"probe.d.ts","sourceRoot":"","sources":["../../src/loop/probe.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AA0BtD;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,iBAAiB,EACxB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,CA2BxB"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { handleCancel } from "./deliveries.js";
|
|
2
|
+
/**
|
|
3
|
+
* States abandon is still legal for. `merging` is the point of no return;
|
|
4
|
+
* terminal and `invalid` are not holding a Project.
|
|
5
|
+
*/
|
|
6
|
+
const ABANDONABLE = new Set([
|
|
7
|
+
"received",
|
|
8
|
+
"planning",
|
|
9
|
+
"running",
|
|
10
|
+
"escalated",
|
|
11
|
+
"integrating",
|
|
12
|
+
"submitted",
|
|
13
|
+
]);
|
|
14
|
+
/**
|
|
15
|
+
* Listen outcomes that never reached the tracker. Probing after one of these
|
|
16
|
+
* would read a dead token as every Feature disappearing.
|
|
17
|
+
*/
|
|
18
|
+
const LISTEN_MISSED_SOURCE = new Set([
|
|
19
|
+
"source-lost",
|
|
20
|
+
"interrupted",
|
|
21
|
+
"invalid-invocation",
|
|
22
|
+
]);
|
|
23
|
+
/**
|
|
24
|
+
* Ask the manager whether Features Host already holds are still on the tracker.
|
|
25
|
+
*
|
|
26
|
+
* A poll cannot see an absence: a deleted item never appears again. `gone` is
|
|
27
|
+
* the same abandon as a `cancel` delivery. `unavailable` is not.
|
|
28
|
+
*/
|
|
29
|
+
export async function abandonGone(input, listenOutcome) {
|
|
30
|
+
if (input.manager.probe === undefined || LISTEN_MISSED_SOURCE.has(listenOutcome)) {
|
|
31
|
+
return "ok";
|
|
32
|
+
}
|
|
33
|
+
const summaries = await input.ledger.list();
|
|
34
|
+
for (const summary of summaries) {
|
|
35
|
+
if (input.options.interruptFlag?.interrupted === true) {
|
|
36
|
+
return "stop";
|
|
37
|
+
}
|
|
38
|
+
if (!ABANDONABLE.has(summary.state)) {
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
const outcome = await input.manager.probe(summary.key);
|
|
42
|
+
if (outcome === "interrupted") {
|
|
43
|
+
return "stop";
|
|
44
|
+
}
|
|
45
|
+
if (outcome !== "gone") {
|
|
46
|
+
if (outcome === "unavailable") {
|
|
47
|
+
input.journal.append({ event: "probed", key: summary.key, outcome });
|
|
48
|
+
}
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
input.journal.append({ event: "probed", key: summary.key, outcome: "gone" });
|
|
52
|
+
input.trace(`gone ${summary.key}`);
|
|
53
|
+
await handleCancel({ key: summary.key, project: summary.project }, input);
|
|
54
|
+
}
|
|
55
|
+
return "ok";
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=probe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"probe.js","sourceRoot":"","sources":["../../src/loop/probe.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C;;;GAGG;AACH,MAAM,WAAW,GAA8B,IAAI,GAAG,CAAC;IACrD,UAAU;IACV,UAAU;IACV,SAAS;IACT,WAAW;IACX,aAAa;IACb,WAAW;CACZ,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,oBAAoB,GAAwB,IAAI,GAAG,CAAC;IACxD,aAAa;IACb,aAAa;IACb,oBAAoB;CACrB,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAwB,EACxB,aAAqB;IAErB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,oBAAoB,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;QACjF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC5C,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;QAChC,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,WAAW,KAAK,IAAI,EAAE,CAAC;YACtD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACpC,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACvD,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;YAC9B,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;YACvB,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;gBAC9B,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;YACvE,CAAC;YACD,SAAS;QACX,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7E,KAAK,CAAC,KAAK,CAAC,cAAc,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACzC,MAAM,YAAY,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type ConductorMoment, type ProjectRunResult } from "@bluewombat/conductor";
|
|
2
|
+
import type { EventFields, EventName } from "@bluewombat/manager-kit";
|
|
3
|
+
import type { FeatureAggregate } from "@bluewombat/work-ledger";
|
|
4
|
+
import type { HostDeliveryInput } from "./context.js";
|
|
5
|
+
import type { Journal } from "./journal.js";
|
|
6
|
+
/**
|
|
7
|
+
* A moment inside a pass, said to the tracker as it happens. Each is said
|
|
8
|
+
* once: the id names the fact, and a pass that sees it again says nothing.
|
|
9
|
+
*/
|
|
10
|
+
export declare function reportMoment(input: HostDeliveryInput, moment: ConductorMoment): Promise<void>;
|
|
11
|
+
export declare function reportAfterRun(input: HostDeliveryInput, run: ProjectRunResult, aggregate: FeatureAggregate): Promise<void>;
|
|
12
|
+
export declare function resumePointOf(aggregate: FeatureAggregate): "planning" | "running" | "integrating";
|
|
13
|
+
export declare function pushReport(input: Pick<HostDeliveryInput, "manager" | "reported" | "journal"> & {
|
|
14
|
+
said?: Set<string>;
|
|
15
|
+
}, report: {
|
|
16
|
+
event: EventName;
|
|
17
|
+
key: string;
|
|
18
|
+
project: string;
|
|
19
|
+
fields: EventFields;
|
|
20
|
+
eventId?: string;
|
|
21
|
+
}): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* One Host line per Project we drove: the outcome, and a heartbeat while it waits.
|
|
24
|
+
*/
|
|
25
|
+
export declare function journalFeature(journal: Journal, outcome: string, aggregate: FeatureAggregate, said?: Set<string>): void;
|
|
26
|
+
//# sourceMappingURL=report.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/loop/report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,gBAAgB,EAAa,MAAM,uBAAuB,CAAC;AAC/F,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAkB,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAM5C;;;GAGG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,IAAI,CAAC,CAsCf;AA2BD,wBAAsB,cAAc,CAClC,KAAK,EAAE,iBAAiB,EACxB,GAAG,EAAE,gBAAgB,EACrB,SAAS,EAAE,gBAAgB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAqHf;AAiGD,wBAAgB,aAAa,CAAC,SAAS,EAAE,gBAAgB,GAAG,UAAU,GAAG,SAAS,GAAG,aAAa,CAajG;AAED,wBAAsB,UAAU,CAC9B,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAAE,EAC3F,MAAM,EAAE;IACN,KAAK,EAAE,SAAS,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GACA,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,gBAAgB,EAC3B,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GACjB,IAAI,CAoBN"}
|
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
import { subjectOf } from "@bluewombat/conductor";
|
|
2
|
+
/** Conductor's and Implementer's own defaults, said here so a counter reads right without a config key. */
|
|
3
|
+
const DEFAULT_MAX_REFUSALS = 3;
|
|
4
|
+
const DEFAULT_MAX_ATTEMPTS = 3;
|
|
5
|
+
/**
|
|
6
|
+
* A moment inside a pass, said to the tracker as it happens. Each is said
|
|
7
|
+
* once: the id names the fact, and a pass that sees it again says nothing.
|
|
8
|
+
*/
|
|
9
|
+
export async function reportMoment(input, moment) {
|
|
10
|
+
const got = await input.ledger.get(moment.key);
|
|
11
|
+
if (!got.ok) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const { aggregate } = got;
|
|
15
|
+
const key = aggregate.intention.key;
|
|
16
|
+
const project = aggregate.intention.project;
|
|
17
|
+
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
|
+
case "submitted":
|
|
38
|
+
await pushReport(input, {
|
|
39
|
+
event: "submitted",
|
|
40
|
+
key,
|
|
41
|
+
project,
|
|
42
|
+
fields: { reference: moment.reference },
|
|
43
|
+
eventId: `${key}:submitted:${moment.reference}`,
|
|
44
|
+
});
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
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
|
+
export async function reportAfterRun(input, run, aggregate) {
|
|
68
|
+
const key = aggregate.intention.key;
|
|
69
|
+
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
|
+
switch (run.outcome) {
|
|
77
|
+
case "done":
|
|
78
|
+
// The Authority's own name for the work, when there was one. A local
|
|
79
|
+
// fold has no name a reader of the tracker could open, and the path of
|
|
80
|
+
// this machine's directory is the operator's layout, not a reference.
|
|
81
|
+
await pushReport(input, {
|
|
82
|
+
event: "done",
|
|
83
|
+
key,
|
|
84
|
+
project,
|
|
85
|
+
fields: {
|
|
86
|
+
...(aggregate.submission === undefined
|
|
87
|
+
? {}
|
|
88
|
+
: { reference: aggregate.submission.reference }),
|
|
89
|
+
...(aggregate.integration_reference === undefined
|
|
90
|
+
? {}
|
|
91
|
+
: { integration_reference: aggregate.integration_reference }),
|
|
92
|
+
},
|
|
93
|
+
eventId: `${key}:done`,
|
|
94
|
+
});
|
|
95
|
+
return;
|
|
96
|
+
case "escalated":
|
|
97
|
+
break;
|
|
98
|
+
case "paused":
|
|
99
|
+
await reportRefusal(input, aggregate);
|
|
100
|
+
return;
|
|
101
|
+
case "idle":
|
|
102
|
+
case "refused":
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
const kind = aggregate.escalation?.kind ?? "subtask";
|
|
106
|
+
// One escalation per round and kind: a Feature escalates again only after a
|
|
107
|
+
// human's `ready`, which is what the ledger counts. The Attempt count would
|
|
108
|
+
// not do — a Plan refused twice has none.
|
|
109
|
+
const eventId = escalationId(key, aggregate, kind);
|
|
110
|
+
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
|
+
case "merging":
|
|
127
|
+
await pushReport(input, {
|
|
128
|
+
event: "escalated",
|
|
129
|
+
key,
|
|
130
|
+
project,
|
|
131
|
+
eventId,
|
|
132
|
+
fields: {
|
|
133
|
+
stage: "merging",
|
|
134
|
+
reason: "Integration into WorkLineStable escalated.",
|
|
135
|
+
},
|
|
136
|
+
});
|
|
137
|
+
return;
|
|
138
|
+
case "assembly":
|
|
139
|
+
// The feature as a whole, which names no unit: reporting it as a Subtask
|
|
140
|
+
// sends a reader to look at work that did not fail.
|
|
141
|
+
await pushReport(input, {
|
|
142
|
+
event: "escalated",
|
|
143
|
+
key,
|
|
144
|
+
project,
|
|
145
|
+
eventId,
|
|
146
|
+
fields: {
|
|
147
|
+
stage: "integrating",
|
|
148
|
+
reason: "The assembled feature was refused and no attempt is left.",
|
|
149
|
+
...(aggregate.escalation?.report === undefined
|
|
150
|
+
? {}
|
|
151
|
+
: { trace: aggregate.escalation.report }),
|
|
152
|
+
},
|
|
153
|
+
});
|
|
154
|
+
return;
|
|
155
|
+
case "submitted":
|
|
156
|
+
await pushReport(input, {
|
|
157
|
+
event: "escalated",
|
|
158
|
+
key,
|
|
159
|
+
project,
|
|
160
|
+
eventId,
|
|
161
|
+
fields: {
|
|
162
|
+
stage: "submitting",
|
|
163
|
+
reason: "The Submission was refused and no attempt is left.",
|
|
164
|
+
...((aggregate.escalation?.report ?? aggregate.submission?.last_report) === undefined
|
|
165
|
+
? {}
|
|
166
|
+
: {
|
|
167
|
+
trace: (aggregate.escalation?.report ??
|
|
168
|
+
aggregate.submission?.last_report),
|
|
169
|
+
}),
|
|
170
|
+
},
|
|
171
|
+
});
|
|
172
|
+
return;
|
|
173
|
+
case "subtask":
|
|
174
|
+
await pushReport(input, {
|
|
175
|
+
event: "escalated",
|
|
176
|
+
key,
|
|
177
|
+
project,
|
|
178
|
+
eventId,
|
|
179
|
+
fields: subtaskEscalation(input, aggregate),
|
|
180
|
+
});
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
/** `<key>:escalated:<round>:<kind>[:<subtask>]` — the same escalation hashes the same after a restart. */
|
|
185
|
+
function escalationId(key, aggregate, kind) {
|
|
186
|
+
const round = aggregate.resumes ?? 0;
|
|
187
|
+
const unit = kind === "subtask" ? `:${aggregate.escalation?.subtask_id ?? "unknown"}` : "";
|
|
188
|
+
return `${key}:escalated:${round}:${kind}${unit}`;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* A Subtask escalation, for a person who was not there. The Plan's headline
|
|
192
|
+
* says what was tried, the last Attempt says who refused it and why, the
|
|
193
|
+
* count says whether more patience would have helped — and what resuming does,
|
|
194
|
+
* because that is the only question left to the reader.
|
|
195
|
+
*/
|
|
196
|
+
function subtaskEscalation(input, aggregate) {
|
|
197
|
+
const id = aggregate.escalation?.subtask_id;
|
|
198
|
+
const unit = id ?? "unknown";
|
|
199
|
+
const planned = aggregate.plan?.subtasks.find((subtask) => subtask.id === id);
|
|
200
|
+
const what = planned === undefined ? unit : subjectOf(planned.intention);
|
|
201
|
+
// This round's Attempts only: the budget is per round, and a Subtask resumed
|
|
202
|
+
// once already spent three — "6 times of 3" counts against nothing.
|
|
203
|
+
const round = aggregate.resumes ?? 0;
|
|
204
|
+
const attempts = aggregate.attempts.filter((attempt) => attempt.subtask_id === id && (attempt.round ?? 0) === round);
|
|
205
|
+
const last = [...attempts].reverse().find((attempt) => attempt.trace !== undefined)?.trace;
|
|
206
|
+
const max = input.options.builder?.maxAttempts ?? DEFAULT_MAX_ATTEMPTS;
|
|
207
|
+
const by = last?.refusedBy ?? "a Gate";
|
|
208
|
+
let why;
|
|
209
|
+
if (last?.ended === "fail-blocking") {
|
|
210
|
+
why = `${by} refused it outright, and no further attempt could change that`;
|
|
211
|
+
}
|
|
212
|
+
else if (last?.ended === "fail-retryable") {
|
|
213
|
+
const reports = attempts.map((attempt) => attempt.trace?.report);
|
|
214
|
+
const same = reports.every((report) => report === last.report);
|
|
215
|
+
const times = attempts.length === 1 ? "once" : `${attempts.length} times of ${max}`;
|
|
216
|
+
const pattern = attempts.length < 2
|
|
217
|
+
? ""
|
|
218
|
+
: same
|
|
219
|
+
? ", for the same reason each time"
|
|
220
|
+
: ", each time differently";
|
|
221
|
+
const which = round === 0 ? "" : `, in round ${round + 1}`;
|
|
222
|
+
why = `${by} refused it ${times}${pattern}${which}`;
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
why = (aggregate.escalation?.report ?? "it escalated").replace(/\.$/, "");
|
|
226
|
+
}
|
|
227
|
+
const resume = `On resume, ${unit} starts again from zero; what already landed is kept.`;
|
|
228
|
+
const fields = {
|
|
229
|
+
stage: "unit",
|
|
230
|
+
reason: `${what} — ${why}. ${resume}`,
|
|
231
|
+
// The refusal in the refuser's own words; the ledger's sentence when no
|
|
232
|
+
// Attempt left one (a fold conflict); the verdict alone for a record
|
|
233
|
+
// written before reports were kept.
|
|
234
|
+
trace: last?.report ?? aggregate.escalation?.report ?? last?.ended ?? "No Trace recorded.",
|
|
235
|
+
unit,
|
|
236
|
+
};
|
|
237
|
+
if (attempts.length > 0) {
|
|
238
|
+
fields.counters = { attempts: `${attempts.length} of ${max}` };
|
|
239
|
+
}
|
|
240
|
+
return fields;
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* The Authority sent the Submission back and a repair is on its way. Between
|
|
244
|
+
* "submitted" and the next verdict the tracker would otherwise say nothing,
|
|
245
|
+
* and a reader would take the silence for waiting.
|
|
246
|
+
*/
|
|
247
|
+
async function reportRefusal(input, aggregate) {
|
|
248
|
+
const submission = aggregate.submission;
|
|
249
|
+
if (aggregate.state !== "integrating" ||
|
|
250
|
+
submission === undefined ||
|
|
251
|
+
submission.last_report === undefined ||
|
|
252
|
+
submission.refusals === 0) {
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
const max = input.options.maxRefusals ?? DEFAULT_MAX_REFUSALS;
|
|
256
|
+
await pushReport(input, {
|
|
257
|
+
event: "progress",
|
|
258
|
+
key: aggregate.intention.key,
|
|
259
|
+
project: aggregate.intention.project,
|
|
260
|
+
// One per refusal: the same round is driven again on every pass.
|
|
261
|
+
eventId: `${aggregate.intention.key}:refused:${submission.refusals}`,
|
|
262
|
+
fields: {
|
|
263
|
+
// Who refused, what happens next, and how many refusals the Authority may
|
|
264
|
+
// still send back before this escalates — in one sentence.
|
|
265
|
+
summary: `${submission.last_refused_by ?? "The Authority"} refused the Submission; a repair is on its way (refusal ${submission.refusals} of ${max}).`,
|
|
266
|
+
stage: "submitting",
|
|
267
|
+
trace: submission.last_report,
|
|
268
|
+
},
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
export function resumePointOf(aggregate) {
|
|
272
|
+
switch (aggregate.escalation?.kind) {
|
|
273
|
+
case "plan":
|
|
274
|
+
return "planning";
|
|
275
|
+
// What the ledger does on resumeReady, said in the same words.
|
|
276
|
+
case "merging":
|
|
277
|
+
case "assembly":
|
|
278
|
+
case "submitted":
|
|
279
|
+
return "integrating";
|
|
280
|
+
case "subtask":
|
|
281
|
+
case undefined:
|
|
282
|
+
return "running";
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
export async function pushReport(input, report) {
|
|
286
|
+
if (report.eventId !== undefined && input.said?.has(report.eventId)) {
|
|
287
|
+
return;
|
|
288
|
+
}
|
|
289
|
+
const ok = await input.manager.report({
|
|
290
|
+
event: report.event,
|
|
291
|
+
key: report.key,
|
|
292
|
+
project: report.project,
|
|
293
|
+
fields: report.fields,
|
|
294
|
+
...(report.eventId === undefined ? {} : { eventId: report.eventId }),
|
|
295
|
+
});
|
|
296
|
+
if (ok) {
|
|
297
|
+
input.reported.push(report.event);
|
|
298
|
+
input.journal.append({ event: "reported", key: report.key, reported: report.event });
|
|
299
|
+
if (report.eventId !== undefined) {
|
|
300
|
+
input.said?.add(report.eventId);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* One Host line per Project we drove: the outcome, and a heartbeat while it waits.
|
|
306
|
+
*/
|
|
307
|
+
export function journalFeature(journal, outcome, aggregate, said) {
|
|
308
|
+
const key = aggregate.intention.key;
|
|
309
|
+
journal.append({ event: "ran", key, outcome, state: aggregate.state });
|
|
310
|
+
if (aggregate.state !== "submitted" || aggregate.submission === undefined) {
|
|
311
|
+
return;
|
|
312
|
+
}
|
|
313
|
+
// A Submission is driven again on every pass while it waits. Its line is
|
|
314
|
+
// written when it changes — the reference, or the count of refusals — not
|
|
315
|
+
// every time the pass sees it again.
|
|
316
|
+
const seen = `journal:${key}:submitted:${aggregate.submission.reference}:${aggregate.submission.refusals}`;
|
|
317
|
+
if (said?.has(seen)) {
|
|
318
|
+
return;
|
|
319
|
+
}
|
|
320
|
+
said?.add(seen);
|
|
321
|
+
journal.append({
|
|
322
|
+
event: "submitted",
|
|
323
|
+
key,
|
|
324
|
+
reference: aggregate.submission.reference,
|
|
325
|
+
refusals: aggregate.submission.refusals,
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
//# sourceMappingURL=report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/loop/report.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Conductor, ProjectRunResult } from "@bluewombat/conductor";
|
|
2
|
+
import type { EventName } from "@bluewombat/manager-kit";
|
|
3
|
+
import type { WorkLedger } from "@bluewombat/work-ledger";
|
|
4
|
+
import type { HostRunInput } from "./context.js";
|
|
5
|
+
import { type CancelResult } from "./deliveries.js";
|
|
6
|
+
export type HostTickResult = {
|
|
7
|
+
listenerOutcome: string;
|
|
8
|
+
reported: EventName[];
|
|
9
|
+
lastRun?: ProjectRunResult;
|
|
10
|
+
cursor?: string;
|
|
11
|
+
};
|
|
12
|
+
export type Host = {
|
|
13
|
+
ledger: WorkLedger;
|
|
14
|
+
conductor: Conductor;
|
|
15
|
+
runOnce(): Promise<HostTickResult>;
|
|
16
|
+
run(): Promise<HostTickResult>;
|
|
17
|
+
/** Abandon one Feature by key. Takes the same path as a `cancel` delivery. */
|
|
18
|
+
cancel(key: string): Promise<CancelResult>;
|
|
19
|
+
/** Give the ledger back: the lock `openHost` took. */
|
|
20
|
+
close(): Promise<void>;
|
|
21
|
+
};
|
|
22
|
+
export declare function runOnce(input: HostRunInput): Promise<HostTickResult>;
|
|
23
|
+
export declare function run(input: HostRunInput): Promise<HostTickResult>;
|
|
24
|
+
//# sourceMappingURL=tick.d.ts.map
|
|
@@ -0,0 +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,EAAgC,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAExF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAE,KAAK,YAAY,EAAkB,MAAM,iBAAiB,CAAC;AAiBpE,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,8EAA8E;IAC9E,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3C,sDAAsD;IACtD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC;AAEF,wBAAsB,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CA0H1E;AAED,wBAAsB,GAAG,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAmBtE"}
|