@bluewombat/runtime 0.7.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 +126 -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 +2 -1
- package/dist/config/agent-shorthand.d.ts.map +1 -1
- package/dist/config/agent-shorthand.js +30 -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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authority.js","sourceRoot":"","sources":["../../src/loop/authority.ts"],"names":[],"mappings":"
|
|
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,5 +1,5 @@
|
|
|
1
|
-
import type { AuthorityPort, Conductor, ConductorMoment } from "@bluewombat/conductor";
|
|
2
|
-
import type { EventName,
|
|
1
|
+
import type { AuthorityPort, Conductor, ConductorMoment, TransformerPort } from "@bluewombat/conductor";
|
|
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";
|
|
5
5
|
import type { Journal } from "./journal.js";
|
|
@@ -19,7 +19,12 @@ export type HostRunInput = {
|
|
|
19
19
|
};
|
|
20
20
|
ledger: WorkLedger;
|
|
21
21
|
conductor: Conductor;
|
|
22
|
-
|
|
22
|
+
/** Where Features are written, ordered and signalled. */
|
|
23
|
+
features: FeatureTrackerPort;
|
|
24
|
+
/** Where the Tickets of a Feature are, and the lines they land on. */
|
|
25
|
+
tickets: TicketTrackerPort;
|
|
26
|
+
/** The Transformers Conductor runs, for the one judgement Host makes itself: a Feature's line. */
|
|
27
|
+
transformers: TransformerPort;
|
|
23
28
|
journal: Journal;
|
|
24
29
|
/** Where a child's raw output was filmed, when the Project asked for it. */
|
|
25
30
|
streams?: Streams;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/loop/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
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,EAChB,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;;;;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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import type { ProjectRunResult } from "@bluewombat/conductor";
|
|
2
1
|
import type { HostDeliveryInput, HostRunInput } from "./context.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
2
|
+
/**
|
|
3
|
+
* A human unblocked an escalated Ticket: it resumes, and the signal is taken
|
|
4
|
+
* back. The sweep drives it; nothing here does.
|
|
5
|
+
*/
|
|
6
|
+
export declare function handleResume(ticket: {
|
|
7
|
+
key: string;
|
|
8
|
+
project: string;
|
|
9
|
+
}, input: HostDeliveryInput): Promise<void>;
|
|
10
|
+
export declare function handleCancel(ticket: {
|
|
11
11
|
key: string;
|
|
12
12
|
project: string;
|
|
13
13
|
}, input: HostDeliveryInput): Promise<void>;
|
|
@@ -26,13 +26,13 @@ export type ReleaseResult = {
|
|
|
26
26
|
state?: string;
|
|
27
27
|
};
|
|
28
28
|
/**
|
|
29
|
-
* Drop a held
|
|
29
|
+
* Drop a held unit by key — without waiting for the bail clock.
|
|
30
30
|
*
|
|
31
|
-
* `freed` is false when the
|
|
32
|
-
* held). Refused past `
|
|
33
|
-
*
|
|
31
|
+
* `freed` is false when the Ticket was already free (running with no unit
|
|
32
|
+
* held). Refused past `running`: those states hold no unit, or are past the
|
|
33
|
+
* point a local release can undo.
|
|
34
34
|
*/
|
|
35
|
-
export declare function
|
|
36
|
-
/** Abandon one
|
|
37
|
-
export declare function
|
|
35
|
+
export declare function releaseTicket(input: HostRunInput, key: string): Promise<ReleaseResult>;
|
|
36
|
+
/** Abandon one Ticket by key — the same path a `cancel` delivery takes. */
|
|
37
|
+
export declare function cancelTicket(input: HostRunInput, key: string): Promise<CancelResult>;
|
|
38
38
|
//# sourceMappingURL=deliveries.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deliveries.d.ts","sourceRoot":"","sources":["../../src/loop/deliveries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"deliveries.d.ts","sourceRoot":"","sources":["../../src/loop/deliveries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGpE;;;GAGG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EACxC,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,IAAI,CAAC,CAuBf;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EACxC,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,IAAI,CAAC,CAuCf;AAED,MAAM,MAAM,YAAY,GACpB;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GACZ;IACE,EAAE,EAAE,KAAK,CAAC;IACV,IAAI,EAAE,WAAW,GAAG,oBAAoB,GAAG,mBAAmB,GAAG,MAAM,CAAC;CACzE,CAAC;AAEN,MAAM,MAAM,aAAa,GACrB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC5B;IACE,EAAE,EAAE,KAAK,CAAC;IACV,IAAI,EAAE,WAAW,GAAG,oBAAoB,CAAC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEN;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAe5F;AAED,2EAA2E;AAC3E,wBAAsB,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAkB1F"}
|
package/dist/loop/deliveries.js
CHANGED
|
@@ -1,160 +1,34 @@
|
|
|
1
|
-
import { driveUntilBlocked } from "./drive.js";
|
|
2
1
|
import { pushReport, resumePointOf } from "./report.js";
|
|
3
2
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* The ledger still records a *new* fingerprint as pending_fingerprint; Host
|
|
7
|
-
* does not admit here, so an echo of Submitted cannot look like one.
|
|
3
|
+
* A human unblocked an escalated Ticket: it resumes, and the signal is taken
|
|
4
|
+
* back. The sweep drives it; nothing here does.
|
|
8
5
|
*/
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
"running",
|
|
12
|
-
"escalated",
|
|
13
|
-
"integrating",
|
|
14
|
-
"submitted",
|
|
15
|
-
"merging",
|
|
16
|
-
"done",
|
|
17
|
-
"cancelled",
|
|
18
|
-
]);
|
|
19
|
-
export async function handleDelivery(input) {
|
|
20
|
-
const adapted = await input.manager.adapt(input.payload);
|
|
21
|
-
switch (adapted.outcome) {
|
|
22
|
-
case "unavailable":
|
|
23
|
-
case "interrupted":
|
|
24
|
-
return { advance: false };
|
|
25
|
-
case "invalid": {
|
|
26
|
-
// Telling the tracker writes to it, and that write delivers the same
|
|
27
|
-
// intention again. What a human wrote has not changed: said once.
|
|
28
|
-
const before = await input.ledger.get(adapted.key);
|
|
29
|
-
if (before.ok &&
|
|
30
|
-
before.aggregate.state === "invalid" &&
|
|
31
|
-
before.aggregate.intention.fingerprint === adapted.fingerprint) {
|
|
32
|
-
input.journal.append({ event: "skipped", key: adapted.key, state: "invalid" });
|
|
33
|
-
return { advance: true };
|
|
34
|
-
}
|
|
35
|
-
await input.ledger.recordInvalid({
|
|
36
|
-
key: adapted.key,
|
|
37
|
-
project: adapted.project,
|
|
38
|
-
code: adapted.invalid.code,
|
|
39
|
-
reason: adapted.invalid.reason,
|
|
40
|
-
fingerprint: adapted.fingerprint,
|
|
41
|
-
});
|
|
42
|
-
input.journal.append({
|
|
43
|
-
event: "invalid",
|
|
44
|
-
key: adapted.key,
|
|
45
|
-
reason: adapted.invalid.reason,
|
|
46
|
-
});
|
|
47
|
-
await pushReport(input, {
|
|
48
|
-
event: "invalid",
|
|
49
|
-
key: adapted.key,
|
|
50
|
-
project: adapted.project,
|
|
51
|
-
// One per intention as written: an edit is a new fingerprint and is said again.
|
|
52
|
-
eventId: `${adapted.key}:invalid:${adapted.fingerprint}`,
|
|
53
|
-
fields: { reason: adapted.invalid.reason },
|
|
54
|
-
});
|
|
55
|
-
return { advance: true };
|
|
56
|
-
}
|
|
57
|
-
case "converted":
|
|
58
|
-
break;
|
|
59
|
-
}
|
|
60
|
-
const feature = adapted.feature;
|
|
61
|
-
// Poll snapshots have no labeled edge: a ready signal on an escalated upsert
|
|
62
|
-
// is the same instruction as an explicit ready intent.
|
|
63
|
-
if (feature.intent === "upsert" && input.manager.signalsReady?.(input.payload) === true) {
|
|
64
|
-
const before = await input.ledger.get(feature.key);
|
|
65
|
-
if (before.ok && before.aggregate.state === "escalated") {
|
|
66
|
-
return await handleReady(feature, input);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
switch (feature.intent) {
|
|
70
|
-
case "ready":
|
|
71
|
-
return await handleReady(feature, input);
|
|
72
|
-
case "cancel":
|
|
73
|
-
await handleCancel(feature, input);
|
|
74
|
-
return { advance: true };
|
|
75
|
-
case "upsert":
|
|
76
|
-
return await handleUpsert(feature, input);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
async function handleUpsert(feature, input) {
|
|
80
|
-
const admission = toAdmission(feature);
|
|
81
|
-
if (admission === undefined) {
|
|
82
|
-
return { advance: true };
|
|
83
|
-
}
|
|
84
|
-
const before = await input.ledger.get(admission.key);
|
|
85
|
-
if (before.ok && IN_FLIGHT_OR_TERMINAL.has(before.aggregate.state)) {
|
|
86
|
-
input.journal.append({
|
|
87
|
-
event: "skipped",
|
|
88
|
-
key: admission.key,
|
|
89
|
-
state: before.aggregate.state,
|
|
90
|
-
});
|
|
91
|
-
return { advance: true };
|
|
92
|
-
}
|
|
93
|
-
const admitted = await input.ledger.admit(admission);
|
|
94
|
-
if (!admitted.ok) {
|
|
95
|
-
if (admitted.code === "too-late" || admitted.code === "point-of-no-return") {
|
|
96
|
-
await pushReport(input, {
|
|
97
|
-
event: "reject_late",
|
|
98
|
-
key: admission.key,
|
|
99
|
-
project: admission.project,
|
|
100
|
-
// One per intention: the same edit delivered again is the echo of
|
|
101
|
-
// this report, not another edit.
|
|
102
|
-
eventId: `${admission.key}:reject_late:${admission.fingerprint}`,
|
|
103
|
-
fields: { reason: `Admission refused: ${admitted.code}` },
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
return { advance: true };
|
|
107
|
-
}
|
|
108
|
-
if (!before.ok || before.aggregate.state === "invalid") {
|
|
109
|
-
input.journal.append({ event: "admitted", key: admission.key, project: admission.project });
|
|
110
|
-
await pushReport(input, {
|
|
111
|
-
event: "accepted",
|
|
112
|
-
key: admission.key,
|
|
113
|
-
project: admission.project,
|
|
114
|
-
// One per intention as written, like `invalid`: a corrected issue is accepted again.
|
|
115
|
-
eventId: `${admission.key}:accepted:${admission.fingerprint}`,
|
|
116
|
-
fields: { priority: admission.priority },
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
const run = await driveUntilBlocked(input, admission.project, admission.key);
|
|
120
|
-
if (run === undefined) {
|
|
121
|
-
// Frozen Project: do not mark it driven, so a later delivery in this pass
|
|
122
|
-
// (a cancel, a ready) can free it and the sweep can start the queue.
|
|
123
|
-
return { advance: true };
|
|
124
|
-
}
|
|
125
|
-
return { advance: true, run, project: admission.project };
|
|
126
|
-
}
|
|
127
|
-
async function handleReady(feature, input) {
|
|
128
|
-
const before = await input.ledger.get(feature.key);
|
|
6
|
+
export async function handleResume(ticket, input) {
|
|
7
|
+
const before = await input.ledger.get(ticket.key);
|
|
129
8
|
if (!before.ok || before.aggregate.state !== "escalated") {
|
|
130
|
-
return
|
|
9
|
+
return;
|
|
131
10
|
}
|
|
132
11
|
const resumePoint = resumePointOf(before.aggregate);
|
|
133
|
-
const
|
|
134
|
-
if (!
|
|
135
|
-
return
|
|
12
|
+
const taken = await input.ledger.resumeTicket(ticket.key);
|
|
13
|
+
if (!taken.ok) {
|
|
14
|
+
return;
|
|
136
15
|
}
|
|
137
16
|
// The signal is an instruction, not a state: left where it is, it resumes the
|
|
138
|
-
//
|
|
139
|
-
await input.
|
|
17
|
+
// ticket again on every pass and an escalation never freezes anything.
|
|
18
|
+
await input.tickets.clearResume?.(ticket.key);
|
|
140
19
|
// The ledger counts the rounds; this resume is the latest one.
|
|
141
|
-
const resumed = await input.ledger.get(
|
|
142
|
-
const round = resumed.ok ?
|
|
20
|
+
const resumed = await input.ledger.get(ticket.key);
|
|
21
|
+
const round = resumed.ok ? resumed.aggregate.resumes : 0;
|
|
143
22
|
await pushReport(input, {
|
|
144
23
|
event: "resumed",
|
|
145
|
-
key:
|
|
146
|
-
project:
|
|
147
|
-
eventId: `${
|
|
24
|
+
key: ticket.key,
|
|
25
|
+
project: ticket.project,
|
|
26
|
+
eventId: `${ticket.key}:resumed:${round}`,
|
|
148
27
|
fields: { resume_point: resumePoint },
|
|
149
28
|
});
|
|
150
|
-
const run = await driveUntilBlocked(input, feature.project, feature.key);
|
|
151
|
-
if (run === undefined) {
|
|
152
|
-
return { advance: true };
|
|
153
|
-
}
|
|
154
|
-
return { advance: true, run, project: feature.project };
|
|
155
29
|
}
|
|
156
|
-
export async function handleCancel(
|
|
157
|
-
const before = await input.ledger.get(
|
|
30
|
+
export async function handleCancel(ticket, input) {
|
|
31
|
+
const before = await input.ledger.get(ticket.key);
|
|
158
32
|
if (!before.ok) {
|
|
159
33
|
return;
|
|
160
34
|
}
|
|
@@ -165,20 +39,20 @@ export async function handleCancel(feature, input) {
|
|
|
165
39
|
return;
|
|
166
40
|
}
|
|
167
41
|
if (state === "done") {
|
|
168
|
-
// A finished
|
|
42
|
+
// A finished ticket's issue closing is the tracker agreeing, not a
|
|
169
43
|
// cancel arriving late — the Submission itself asked for that close.
|
|
170
|
-
input.journal.append({ event: "skipped", key:
|
|
44
|
+
input.journal.append({ event: "skipped", key: ticket.key, state });
|
|
171
45
|
return;
|
|
172
46
|
}
|
|
173
|
-
const cancelled = await input.conductor.cancel(
|
|
47
|
+
const cancelled = await input.conductor.cancel(ticket.key);
|
|
174
48
|
if (!cancelled.ok) {
|
|
175
49
|
if (cancelled.code === "point-of-no-return") {
|
|
176
50
|
await pushReport(input, {
|
|
177
51
|
event: "reject_late",
|
|
178
|
-
key:
|
|
179
|
-
project:
|
|
52
|
+
key: ticket.key,
|
|
53
|
+
project: ticket.project,
|
|
180
54
|
// A closed issue stays closed: every later delivery is the same cancel.
|
|
181
|
-
eventId: `${
|
|
55
|
+
eventId: `${ticket.key}:reject_late:cancel`,
|
|
182
56
|
fields: { reason: "Cancel arrived after the point of no return." },
|
|
183
57
|
});
|
|
184
58
|
}
|
|
@@ -186,29 +60,27 @@ export async function handleCancel(feature, input) {
|
|
|
186
60
|
}
|
|
187
61
|
await pushReport(input, {
|
|
188
62
|
event: "cancelled",
|
|
189
|
-
key:
|
|
190
|
-
project:
|
|
191
|
-
// A
|
|
192
|
-
eventId: `${
|
|
63
|
+
key: ticket.key,
|
|
64
|
+
project: ticket.project,
|
|
65
|
+
// A Ticket is cancelled once: the ledger refuses a second cancel and never re-admits the key.
|
|
66
|
+
eventId: `${ticket.key}:cancelled`,
|
|
193
67
|
fields: { state },
|
|
194
68
|
});
|
|
195
69
|
}
|
|
196
70
|
/**
|
|
197
|
-
* Drop a held
|
|
71
|
+
* Drop a held unit by key — without waiting for the bail clock.
|
|
198
72
|
*
|
|
199
|
-
* `freed` is false when the
|
|
200
|
-
* held). Refused past `
|
|
201
|
-
*
|
|
73
|
+
* `freed` is false when the Ticket was already free (running with no unit
|
|
74
|
+
* held). Refused past `running`: those states hold no unit, or are past the
|
|
75
|
+
* point a local release can undo.
|
|
202
76
|
*/
|
|
203
|
-
export async function
|
|
77
|
+
export async function releaseTicket(input, key) {
|
|
204
78
|
const got = await input.ledger.get(key);
|
|
205
79
|
if (!got.ok) {
|
|
206
80
|
return { ok: false, code: "not-found" };
|
|
207
81
|
}
|
|
208
82
|
const { aggregate } = got;
|
|
209
|
-
const held = aggregate.state === "
|
|
210
|
-
(aggregate.state === "running" &&
|
|
211
|
-
(aggregate.plan?.subtasks.some((subtask) => subtask.state === "running") ?? false));
|
|
83
|
+
const held = aggregate.state === "running" && aggregate.bail !== undefined;
|
|
212
84
|
const released = await input.conductor.release(key);
|
|
213
85
|
if (!released.ok) {
|
|
214
86
|
if (released.code === "not-found") {
|
|
@@ -218,8 +90,8 @@ export async function releaseFeature(input, key) {
|
|
|
218
90
|
}
|
|
219
91
|
return { ok: true, freed: held };
|
|
220
92
|
}
|
|
221
|
-
/** Abandon one
|
|
222
|
-
export async function
|
|
93
|
+
/** Abandon one Ticket by key — the same path a `cancel` delivery takes. */
|
|
94
|
+
export async function cancelTicket(input, key) {
|
|
223
95
|
const got = await input.ledger.get(key);
|
|
224
96
|
if (!got.ok) {
|
|
225
97
|
return { ok: false, code: "not-found" };
|
|
@@ -238,28 +110,4 @@ export async function cancelFeature(input, key) {
|
|
|
238
110
|
}
|
|
239
111
|
return { ok: false, code: "point-of-no-return" };
|
|
240
112
|
}
|
|
241
|
-
function toAdmission(feature) {
|
|
242
|
-
if (feature.intent !== "upsert") {
|
|
243
|
-
return undefined;
|
|
244
|
-
}
|
|
245
|
-
if (feature.intention === undefined) {
|
|
246
|
-
return undefined;
|
|
247
|
-
}
|
|
248
|
-
const admission = {
|
|
249
|
-
key: feature.key,
|
|
250
|
-
project: feature.project,
|
|
251
|
-
fingerprint: feature.fingerprint,
|
|
252
|
-
priority: feature.priority,
|
|
253
|
-
intention: feature.intention,
|
|
254
|
-
manager: feature.manager,
|
|
255
|
-
external_id: feature.external_id,
|
|
256
|
-
};
|
|
257
|
-
if (feature.title !== undefined) {
|
|
258
|
-
admission.title = feature.title;
|
|
259
|
-
}
|
|
260
|
-
if (feature.source !== undefined) {
|
|
261
|
-
admission.source = feature.source;
|
|
262
|
-
}
|
|
263
|
-
return admission;
|
|
264
|
-
}
|
|
265
113
|
//# sourceMappingURL=deliveries.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deliveries.js","sourceRoot":"","sources":["../../src/loop/deliveries.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deliveries.js","sourceRoot":"","sources":["../../src/loop/deliveries.ts"],"names":[],"mappings":"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"}
|
package/dist/loop/describe.d.ts
CHANGED
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import type { PassSpec } from "../config/types.js";
|
|
2
2
|
/**
|
|
3
|
-
* How a delivered
|
|
3
|
+
* How a delivered ticket describes itself is the Project's decision, not
|
|
4
4
|
* Host's: a team has conventions, and an agent can read the change and
|
|
5
5
|
* follow them. The Describer slot is where that lives. Host spawns it once
|
|
6
|
-
* per
|
|
6
|
+
* per ticket, in the ticket workspace where the whole change is, tells it
|
|
7
7
|
* what was asked, and takes one JSON line back: `{ subject, body? }`. What
|
|
8
8
|
* the Authority makes of those words is the manager's business — for GitHub,
|
|
9
|
-
* the fold's message and the pull request's text.
|
|
10
|
-
* described: its fold is folded again into the feature's, and words spent on
|
|
11
|
-
* it are words wasted.
|
|
9
|
+
* the fold's message and the pull request's text.
|
|
12
10
|
*
|
|
13
11
|
* A slot that fails — cannot run, answers nothing readable, subject empty —
|
|
14
12
|
* is not a reason to lose the Submission: the caller keeps the words it had,
|
|
@@ -22,7 +20,7 @@ export type DescribeInput = {
|
|
|
22
20
|
intention: string;
|
|
23
21
|
/** The work line the change will land on, so the slot can diff against it. */
|
|
24
22
|
target: string;
|
|
25
|
-
/** The
|
|
23
|
+
/** The ticket workspace; the slot may read its diff. */
|
|
26
24
|
cwd: string;
|
|
27
25
|
};
|
|
28
26
|
export type Description = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"describe.d.ts","sourceRoot":"","sources":["../../src/loop/describe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAGnD
|
|
1
|
+
{"version":3,"file":"describe.d.ts","sourceRoot":"","sources":["../../src/loop/describe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAGnD;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7D,MAAM,MAAM,cAAc,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,WAAW,EAAE,WAAW,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpG,wBAAsB,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAwC5F"}
|
package/dist/loop/describe.js
CHANGED
|
@@ -10,9 +10,9 @@ export async function describe(slot, input) {
|
|
|
10
10
|
...rest,
|
|
11
11
|
"--id",
|
|
12
12
|
input.id,
|
|
13
|
-
// A Describer keeping a record of its turn files it under the
|
|
13
|
+
// A Describer keeping a record of its turn files it under the ticket,
|
|
14
14
|
// the way every other slot does. Without this its transcripts land in
|
|
15
|
-
// `no-context/` and the
|
|
15
|
+
// `no-context/` and the ticket has to be read back out of the filename.
|
|
16
16
|
"--context",
|
|
17
17
|
input.id,
|
|
18
18
|
"--title",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"describe.js","sourceRoot":"","sources":["../../src/loop/describe.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"describe.js","sourceRoot":"","sources":["../../src/loop/describe.ts"],"names":[],"mappings":"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"}
|
package/dist/loop/drive.d.ts
CHANGED
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
import type { ProjectRunResult } from "@bluewombat/conductor";
|
|
2
2
|
import type { HostDeliveryInput } from "./context.js";
|
|
3
3
|
/**
|
|
4
|
-
* Drive one Project and report on the
|
|
4
|
+
* Drive one Project and report on the Ticket that actually ran.
|
|
5
5
|
*
|
|
6
6
|
* A delivery names a key; `runProject` drives whoever is active on that
|
|
7
7
|
* Project. Attributing the outcome to the delivered key closed the wrong
|
|
8
8
|
* issue, or posted an escalation on one that had only been admitted.
|
|
9
9
|
*
|
|
10
|
-
*
|
|
11
|
-
* repeats the verdict. The delivered key is journaled as queued, and a
|
|
12
|
-
* `progress` Event says so once on the tracker.
|
|
10
|
+
* A Project with an `escalated` Ticket is not driven: the caller checks first.
|
|
13
11
|
*/
|
|
14
|
-
export declare function driveProject(input: HostDeliveryInput, project: string, fallbackKey: string): Promise<ProjectRunResult
|
|
12
|
+
export declare function driveProject(input: HostDeliveryInput, project: string, fallbackKey: string): Promise<ProjectRunResult>;
|
|
15
13
|
/**
|
|
16
14
|
* Drive, then keep driving while a refusal is waiting for repair.
|
|
17
15
|
*
|
|
@@ -26,5 +24,5 @@ export declare function driveProject(input: HostDeliveryInput, project: string,
|
|
|
26
24
|
* Do not continue from `submitted`: judging the Authority waits on the outside
|
|
27
25
|
* and must leave room for listen / probe between ticks.
|
|
28
26
|
*/
|
|
29
|
-
export declare function driveUntilBlocked(input: HostDeliveryInput, project: string, fallbackKey: string): Promise<ProjectRunResult
|
|
27
|
+
export declare function driveUntilBlocked(input: HostDeliveryInput, project: string, fallbackKey: string): Promise<ProjectRunResult>;
|
|
30
28
|
//# 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
|
|
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,GAClB,OAAO,CAAC,gBAAgB,CAAC,CAiC3B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,gBAAgB,CAAC,CAiB3B"}
|
package/dist/loop/drive.js
CHANGED
|
@@ -1,40 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { journalTicket, reportAfterRun } from "./report.js";
|
|
2
|
+
import { describeTicket } from "./trace.js";
|
|
3
3
|
/**
|
|
4
|
-
* Drive one Project and report on the
|
|
4
|
+
* Drive one Project and report on the Ticket that actually ran.
|
|
5
5
|
*
|
|
6
6
|
* A delivery names a key; `runProject` drives whoever is active on that
|
|
7
7
|
* Project. Attributing the outcome to the delivered key closed the wrong
|
|
8
8
|
* issue, or posted an escalation on one that had only been admitted.
|
|
9
9
|
*
|
|
10
|
-
*
|
|
11
|
-
* repeats the verdict. The delivered key is journaled as queued, and a
|
|
12
|
-
* `progress` Event says so once on the tracker.
|
|
10
|
+
* A Project with an `escalated` Ticket is not driven: the caller checks first.
|
|
13
11
|
*/
|
|
14
12
|
export async function driveProject(input, project, fallbackKey) {
|
|
15
|
-
const held = await input.ledger.activeOn(project);
|
|
16
|
-
if (held?.state === "escalated") {
|
|
17
|
-
input.journal.append({ event: "queued", key: fallbackKey, behind: held.key });
|
|
18
|
-
input.trace(`queued ${fallbackKey} behind ${held.key} (escalated)`);
|
|
19
|
-
await pushReport(input, {
|
|
20
|
-
event: "progress",
|
|
21
|
-
key: fallbackKey,
|
|
22
|
-
project,
|
|
23
|
-
eventId: `${fallbackKey}:queued:${held.key}`,
|
|
24
|
-
fields: {
|
|
25
|
-
summary: `Queued behind ${held.key}, which is escalated.`,
|
|
26
|
-
},
|
|
27
|
-
});
|
|
28
|
-
return undefined;
|
|
29
|
-
}
|
|
30
13
|
await input.conductor.reconcile(project);
|
|
31
14
|
const run = await input.conductor.runProject(project);
|
|
32
|
-
// idle / refused name no
|
|
15
|
+
// idle / refused name no Ticket; the delivered key is the only one we have.
|
|
33
16
|
const key = "key" in run && run.key !== undefined ? run.key : fallbackKey;
|
|
34
17
|
const got = await input.ledger.get(key);
|
|
35
18
|
if (got.ok) {
|
|
36
|
-
const line =
|
|
37
|
-
// A held
|
|
19
|
+
const line = describeTicket(got.aggregate);
|
|
20
|
+
// A held Ticket is swept every poll; repeating the same line on stdout
|
|
38
21
|
// looks like the loop is stuck printing, not waiting.
|
|
39
22
|
const traced = `trace:${key}:${line}`;
|
|
40
23
|
if (input.said === undefined || !input.said.has(traced)) {
|
|
@@ -48,7 +31,7 @@ export async function driveProject(input, project, fallbackKey) {
|
|
|
48
31
|
}
|
|
49
32
|
input.trace(line);
|
|
50
33
|
}
|
|
51
|
-
|
|
34
|
+
journalTicket(input.journal, run.outcome, got.aggregate, input.said);
|
|
52
35
|
await reportAfterRun(input, run, got.aggregate);
|
|
53
36
|
// The work landed, or it was abandoned: nobody is going to read what the
|
|
54
37
|
// agents said on the way. An escalation keeps everything — that is the one
|
|
@@ -76,9 +59,6 @@ export async function driveProject(input, project, fallbackKey) {
|
|
|
76
59
|
*/
|
|
77
60
|
export async function driveUntilBlocked(input, project, fallbackKey) {
|
|
78
61
|
let last = await driveProject(input, project, fallbackKey);
|
|
79
|
-
if (last === undefined) {
|
|
80
|
-
return undefined;
|
|
81
|
-
}
|
|
82
62
|
const interruptFlag = input.options.interruptFlag ?? { interrupted: false };
|
|
83
63
|
while (!interruptFlag.interrupted && last.outcome === "paused") {
|
|
84
64
|
const key = "key" in last && last.key !== undefined ? last.key : fallbackKey;
|
|
@@ -89,11 +69,7 @@ export async function driveUntilBlocked(input, project, fallbackKey) {
|
|
|
89
69
|
got.aggregate.parked_refusal === undefined)) {
|
|
90
70
|
break;
|
|
91
71
|
}
|
|
92
|
-
|
|
93
|
-
if (next === undefined) {
|
|
94
|
-
break;
|
|
95
|
-
}
|
|
96
|
-
last = next;
|
|
72
|
+
last = await driveProject(input, project, key);
|
|
97
73
|
}
|
|
98
74
|
return last;
|
|
99
75
|
}
|
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,
|
|
1
|
+
{"version":3,"file":"drive.js","sourceRoot":"","sources":["../../src/loop/drive.ts"],"names":[],"mappings":"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"}
|