@bluewombat/runtime 0.10.0 → 0.11.1

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.
Files changed (160) hide show
  1. package/README.md +202 -94
  2. package/SPECS.md +151 -25
  3. package/dist/cli.js +95 -1
  4. package/dist/cli.js.map +1 -1
  5. package/dist/config/agent-shorthand.d.ts +3 -4
  6. package/dist/config/agent-shorthand.d.ts.map +1 -1
  7. package/dist/config/agent-shorthand.js +3 -4
  8. package/dist/config/agent-shorthand.js.map +1 -1
  9. package/dist/config/fixture-yaml.d.ts +8 -0
  10. package/dist/config/fixture-yaml.d.ts.map +1 -0
  11. package/dist/config/fixture-yaml.js +30 -0
  12. package/dist/config/fixture-yaml.js.map +1 -0
  13. package/dist/config/load-config.d.ts.map +1 -1
  14. package/dist/config/load-config.js +90 -102
  15. package/dist/config/load-config.js.map +1 -1
  16. package/dist/config/parse-args.d.ts.map +1 -1
  17. package/dist/config/parse-args.js +3 -4
  18. package/dist/config/parse-args.js.map +1 -1
  19. package/dist/config/types.d.ts +15 -16
  20. package/dist/config/types.d.ts.map +1 -1
  21. package/dist/config/types.js +1 -1
  22. package/dist/config/types.js.map +1 -1
  23. package/dist/index.d.ts +3 -1
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +1 -0
  26. package/dist/index.js.map +1 -1
  27. package/dist/loop/authority.d.ts +2 -0
  28. package/dist/loop/authority.d.ts.map +1 -1
  29. package/dist/loop/authority.js +11 -1
  30. package/dist/loop/authority.js.map +1 -1
  31. package/dist/loop/deliveries.d.ts.map +1 -1
  32. package/dist/loop/deliveries.js +19 -0
  33. package/dist/loop/deliveries.js.map +1 -1
  34. package/dist/loop/features.d.ts +30 -0
  35. package/dist/loop/features.d.ts.map +1 -1
  36. package/dist/loop/features.js +195 -73
  37. package/dist/loop/features.js.map +1 -1
  38. package/dist/loop/journal.d.ts +7 -0
  39. package/dist/loop/journal.d.ts.map +1 -1
  40. package/dist/loop/journal.js +23 -1
  41. package/dist/loop/journal.js.map +1 -1
  42. package/dist/loop/lock.d.ts +2 -0
  43. package/dist/loop/lock.d.ts.map +1 -1
  44. package/dist/loop/lock.js +10 -0
  45. package/dist/loop/lock.js.map +1 -1
  46. package/dist/loop/open-host.d.ts +10 -0
  47. package/dist/loop/open-host.d.ts.map +1 -1
  48. package/dist/loop/open-host.js +8 -8
  49. package/dist/loop/open-host.js.map +1 -1
  50. package/dist/loop/run-slot.d.ts +14 -0
  51. package/dist/loop/run-slot.d.ts.map +1 -1
  52. package/dist/loop/run-slot.js +53 -5
  53. package/dist/loop/run-slot.js.map +1 -1
  54. package/dist/loop/streams.d.ts +3 -0
  55. package/dist/loop/streams.d.ts.map +1 -1
  56. package/dist/loop/streams.js +4 -3
  57. package/dist/loop/streams.js.map +1 -1
  58. package/dist/loop/tick.d.ts +3 -0
  59. package/dist/loop/tick.d.ts.map +1 -1
  60. package/dist/loop/tick.js +2 -1
  61. package/dist/loop/tick.js.map +1 -1
  62. package/dist/loop/trace.d.ts +1 -0
  63. package/dist/loop/trace.d.ts.map +1 -1
  64. package/dist/loop/trace.js +1 -1
  65. package/dist/loop/trace.js.map +1 -1
  66. package/dist/loop/transformers.d.ts +4 -4
  67. package/dist/loop/transformers.d.ts.map +1 -1
  68. package/dist/loop/transformers.js +16 -25
  69. package/dist/loop/transformers.js.map +1 -1
  70. package/dist/operator/board.d.ts +43 -4
  71. package/dist/operator/board.d.ts.map +1 -1
  72. package/dist/operator/board.js +153 -10
  73. package/dist/operator/board.js.map +1 -1
  74. package/dist/operator/dash-model.d.ts +65 -0
  75. package/dist/operator/dash-model.d.ts.map +1 -0
  76. package/dist/operator/dash-model.js +209 -0
  77. package/dist/operator/dash-model.js.map +1 -0
  78. package/dist/operator/dash-view.d.ts +16 -0
  79. package/dist/operator/dash-view.d.ts.map +1 -0
  80. package/dist/operator/dash-view.js +226 -0
  81. package/dist/operator/dash-view.js.map +1 -0
  82. package/dist/operator/dash.d.ts +34 -0
  83. package/dist/operator/dash.d.ts.map +1 -0
  84. package/dist/operator/dash.js +141 -0
  85. package/dist/operator/dash.js.map +1 -0
  86. package/dist/operator/doctor.d.ts.map +1 -1
  87. package/dist/operator/doctor.js +48 -8
  88. package/dist/operator/doctor.js.map +1 -1
  89. package/dist/operator/explain.d.ts.map +1 -1
  90. package/dist/operator/explain.js +6 -11
  91. package/dist/operator/explain.js.map +1 -1
  92. package/dist/operator/incident-dossier.d.ts +154 -0
  93. package/dist/operator/incident-dossier.d.ts.map +1 -0
  94. package/dist/operator/incident-dossier.js +692 -0
  95. package/dist/operator/incident-dossier.js.map +1 -0
  96. package/dist/operator/incident-system.d.ts +57 -0
  97. package/dist/operator/incident-system.d.ts.map +1 -0
  98. package/dist/operator/incident-system.js +214 -0
  99. package/dist/operator/incident-system.js.map +1 -0
  100. package/dist/operator/incident.d.ts +27 -0
  101. package/dist/operator/incident.d.ts.map +1 -0
  102. package/dist/operator/incident.js +220 -0
  103. package/dist/operator/incident.js.map +1 -0
  104. package/dist/operator/init.js +24 -24
  105. package/dist/operator/init.js.map +1 -1
  106. package/dist/operator/install.d.ts +9 -0
  107. package/dist/operator/install.d.ts.map +1 -0
  108. package/dist/operator/install.js +14 -0
  109. package/dist/operator/install.js.map +1 -0
  110. package/dist/operator/live.js +4 -4
  111. package/dist/operator/live.js.map +1 -1
  112. package/dist/operator/log.d.ts +2 -0
  113. package/dist/operator/log.d.ts.map +1 -1
  114. package/dist/operator/log.js +2 -5
  115. package/dist/operator/log.js.map +1 -1
  116. package/dist/operator/restart.d.ts +20 -0
  117. package/dist/operator/restart.d.ts.map +1 -0
  118. package/dist/operator/restart.js +63 -0
  119. package/dist/operator/restart.js.map +1 -0
  120. package/dist/operator/supervise/act.d.ts +37 -0
  121. package/dist/operator/supervise/act.d.ts.map +1 -0
  122. package/dist/operator/supervise/act.js +354 -0
  123. package/dist/operator/supervise/act.js.map +1 -0
  124. package/dist/operator/supervise/config.d.ts +74 -0
  125. package/dist/operator/supervise/config.d.ts.map +1 -0
  126. package/dist/operator/supervise/config.js +175 -0
  127. package/dist/operator/supervise/config.js.map +1 -0
  128. package/dist/operator/supervise/council.d.ts +45 -0
  129. package/dist/operator/supervise/council.d.ts.map +1 -0
  130. package/dist/operator/supervise/council.js +97 -0
  131. package/dist/operator/supervise/council.js.map +1 -0
  132. package/dist/operator/supervise/decision.d.ts +46 -0
  133. package/dist/operator/supervise/decision.d.ts.map +1 -0
  134. package/dist/operator/supervise/decision.js +137 -0
  135. package/dist/operator/supervise/decision.js.map +1 -0
  136. package/dist/operator/supervise/exec.d.ts +28 -0
  137. package/dist/operator/supervise/exec.d.ts.map +1 -0
  138. package/dist/operator/supervise/exec.js +47 -0
  139. package/dist/operator/supervise/exec.js.map +1 -0
  140. package/dist/operator/supervise/memory.d.ts +33 -0
  141. package/dist/operator/supervise/memory.d.ts.map +1 -0
  142. package/dist/operator/supervise/memory.js +73 -0
  143. package/dist/operator/supervise/memory.js.map +1 -0
  144. package/dist/operator/supervise/observe.d.ts +47 -0
  145. package/dist/operator/supervise/observe.d.ts.map +1 -0
  146. package/dist/operator/supervise/observe.js +73 -0
  147. package/dist/operator/supervise/observe.js.map +1 -0
  148. package/dist/operator/supervise/prompts.d.ts +60 -0
  149. package/dist/operator/supervise/prompts.d.ts.map +1 -0
  150. package/dist/operator/supervise/prompts.js +338 -0
  151. package/dist/operator/supervise/prompts.js.map +1 -0
  152. package/dist/operator/supervise/review.d.ts +24 -0
  153. package/dist/operator/supervise/review.d.ts.map +1 -0
  154. package/dist/operator/supervise/review.js +51 -0
  155. package/dist/operator/supervise/review.js.map +1 -0
  156. package/dist/operator/supervise/supervise.d.ts +26 -0
  157. package/dist/operator/supervise/supervise.d.ts.map +1 -0
  158. package/dist/operator/supervise/supervise.js +484 -0
  159. package/dist/operator/supervise/supervise.js.map +1 -0
  160. package/package.json +14 -14
@@ -1 +1 @@
1
- {"version":3,"file":"board.js","sourceRoot":"","sources":["../../src/operator/board.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"board.js","sourceRoot":"","sources":["../../src/operator/board.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import type { WorkLedger } from "@bluewombat/work-ledger";
2
+ import type { Install } from "./install.js";
3
+ export type Zone = "active" | "upcoming" | "past";
4
+ export type DashRow = {
5
+ kind: "feature" | "ticket";
6
+ key: string;
7
+ state: string;
8
+ title?: string;
9
+ /** What the board says after the state: the Submission, why it stopped. */
10
+ detail: string;
11
+ priority: number;
12
+ /** The Feature a Ticket belongs to. */
13
+ feature?: string;
14
+ /** Keys it waits on that are not `done` yet. */
15
+ waitingOn: string[];
16
+ /** The last thing the journal says about it. */
17
+ last?: {
18
+ at: number;
19
+ what: string;
20
+ };
21
+ };
22
+ export type Worker = {
23
+ running: true;
24
+ pid: number;
25
+ since: number | undefined;
26
+ version: string | undefined;
27
+ } | {
28
+ running: false;
29
+ /** `killed`: the film has a start and no stop, so the process went without saying so. */
30
+ ended: "clean" | "killed" | "never";
31
+ at: number | undefined;
32
+ version: string | undefined;
33
+ };
34
+ export type Dash = {
35
+ now: number;
36
+ install: Install;
37
+ worker: Worker;
38
+ active: DashRow[];
39
+ upcoming: DashRow[];
40
+ /** Newest first. */
41
+ past: DashRow[];
42
+ };
43
+ export declare function zoneOf(kind: DashRow["kind"], state: string): Zone;
44
+ export type DashInput = {
45
+ ledger: WorkLedger;
46
+ journalPath: string;
47
+ holder: number | undefined;
48
+ install: Install;
49
+ now: number;
50
+ };
51
+ export declare function dashOf(input: DashInput): Promise<Dash>;
52
+ export type TreeNode = {
53
+ row: DashRow;
54
+ /** What it still waits on besides its parent. */
55
+ alsoWaitingOn: string[];
56
+ children: TreeNode[];
57
+ };
58
+ /**
59
+ * What is not over, as a forest: a row hangs under the first thing it waits on
60
+ * (or under its Feature when it waits on nothing), so a reader sees what a stop
61
+ * holds back. A row waiting on several things appears once, under the first,
62
+ * and names the others.
63
+ */
64
+ export declare function treeOf(dash: Pick<Dash, "active" | "upcoming">): TreeNode[];
65
+ //# sourceMappingURL=dash-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dash-model.d.ts","sourceRoot":"","sources":["../../src/operator/dash-model.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAK1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAK5C,MAAM,MAAM,IAAI,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;AAElD,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,gDAAgD;IAChD,IAAI,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,MAAM,GACd;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GACtF;IACE,OAAO,EAAE,KAAK,CAAC;IACf,yFAAyF;IACzF,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B,CAAC;AAEN,MAAM,MAAM,IAAI,GAAG;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,oBAAoB;IACpB,IAAI,EAAE,OAAO,EAAE,CAAC;CACjB,CAAC;AAEF,wBAAgB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAQjE;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,wBAAsB,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CA+D5D;AAmHD,MAAM,MAAM,QAAQ,GAAG;IACrB,GAAG,EAAE,OAAO,CAAC;IACb,iDAAiD;IACjD,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,QAAQ,EAAE,CAAC;CACtB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAC,GAAG,QAAQ,EAAE,CAuB1E"}
@@ -0,0 +1,209 @@
1
+ import { closeSync, fstatSync, openSync, readSync } from "node:fs";
2
+ import { parseJournalChunk } from "../loop/journal.js";
3
+ import { detailOf } from "../loop/trace.js";
4
+ import { compareKeys } from "./board.js";
5
+ import { isQuietJournalLine } from "./film.js";
6
+ /** Enough of the journal's end to know what each Ticket did last; the rest is `mason log`'s. */
7
+ const JOURNAL_TAIL_BYTES = 512 * 1024;
8
+ export function zoneOf(kind, state) {
9
+ if (state === "done" || state === "cancelled") {
10
+ return "past";
11
+ }
12
+ if (kind === "feature") {
13
+ return state === "waiting" ? "upcoming" : "active";
14
+ }
15
+ return state === "received" ? "upcoming" : "active";
16
+ }
17
+ export async function dashOf(input) {
18
+ const film = readTail(input.journalPath);
19
+ const lastByKey = lastEvents(film);
20
+ const states = new Map();
21
+ const rows = [];
22
+ for (const summary of await input.ledger.list()) {
23
+ states.set(summary.key, summary.state);
24
+ }
25
+ for (const summary of await input.ledger.listFeatures()) {
26
+ states.set(summary.key, summary.state);
27
+ }
28
+ for (const summary of await input.ledger.list()) {
29
+ const got = await input.ledger.get(summary.key);
30
+ const intention = got.ok ? got.aggregate.intention : undefined;
31
+ const row = {
32
+ kind: "ticket",
33
+ key: summary.key,
34
+ state: summary.state,
35
+ detail: got.ok ? detailOf(got.aggregate) : "",
36
+ priority: summary.priority,
37
+ waitingOn: pending(intention?.blocked_by, states),
38
+ };
39
+ if (intention?.title !== undefined) {
40
+ row.title = intention.title;
41
+ }
42
+ if (summary.feature !== undefined) {
43
+ row.feature = summary.feature;
44
+ }
45
+ rows.push(withLast(row, lastByKey));
46
+ }
47
+ for (const summary of await input.ledger.listFeatures()) {
48
+ const got = await input.ledger.getFeature(summary.key);
49
+ if (!got.ok) {
50
+ continue;
51
+ }
52
+ const feature = got.aggregate;
53
+ const row = {
54
+ kind: "feature",
55
+ key: summary.key,
56
+ state: feature.state,
57
+ detail: featureDetail(feature.state, feature),
58
+ priority: summary.priority,
59
+ waitingOn: pending(feature.intention.blocked_by, states),
60
+ };
61
+ if (feature.intention.title !== undefined) {
62
+ row.title = feature.intention.title;
63
+ }
64
+ rows.push(withLast(row, lastByKey));
65
+ }
66
+ const inZone = (zone) => rows.filter((r) => zoneOf(r.kind, r.state) === zone);
67
+ return {
68
+ now: input.now,
69
+ install: input.install,
70
+ worker: workerOf(input.holder, film),
71
+ active: inZone("active").sort(activeOrder),
72
+ upcoming: inZone("upcoming").sort(byKeyThenKind),
73
+ past: inZone("past").sort((a, b) => (b.last?.at ?? 0) - (a.last?.at ?? 0) || byKeyThenKind(a, b)),
74
+ };
75
+ }
76
+ /** A person is needed first, then what is being worked on, then what sits with the Authority. */
77
+ const ACTIVE_RANK = {
78
+ escalated: 0,
79
+ invalid: 1,
80
+ running: 2,
81
+ integrating: 3,
82
+ open: 3,
83
+ merging: 4,
84
+ submitted: 5,
85
+ };
86
+ function activeOrder(a, b) {
87
+ return (ACTIVE_RANK[a.state] ?? 9) - (ACTIVE_RANK[b.state] ?? 9) || byKeyThenKind(a, b);
88
+ }
89
+ function byKeyThenKind(a, b) {
90
+ return compareKeys(a.key, b.key) || (a.kind === b.kind ? 0 : a.kind === "feature" ? -1 : 1);
91
+ }
92
+ function pending(blockedBy, states) {
93
+ return (blockedBy ?? []).filter((key) => states.get(key) !== "done");
94
+ }
95
+ function featureDetail(state, feature) {
96
+ if (state === "submitted" || state === "done") {
97
+ return feature.submission?.reference ?? feature.integration_reference ?? "";
98
+ }
99
+ return state === "escalated" ? `${feature.escalation?.kind ?? "?"} — waiting for a human` : "";
100
+ }
101
+ function withLast(row, lastByKey) {
102
+ const last = lastByKey.get(row.key);
103
+ return last === undefined ? row : { ...row, last };
104
+ }
105
+ /** The last non-quiet line that names each key. */
106
+ function lastEvents(film) {
107
+ const found = new Map();
108
+ for (const line of film) {
109
+ if (typeof line.key !== "string" || isQuietJournalLine(line)) {
110
+ continue;
111
+ }
112
+ const at = typeof line.at === "string" ? Date.parse(line.at) : Number.NaN;
113
+ if (Number.isNaN(at)) {
114
+ continue;
115
+ }
116
+ found.set(line.key, { at, what: shortWhat(line) });
117
+ }
118
+ return found;
119
+ }
120
+ function shortWhat(line) {
121
+ const event = typeof line.event === "string" ? line.event : "event";
122
+ const extra = [line.phase, line.label, line.outcome, line.verdict].find((v) => typeof v === "string" && v.length > 0);
123
+ return extra === undefined ? event : `${event} ${extra}`;
124
+ }
125
+ function workerOf(holder, film) {
126
+ const marks = film.filter((l) => l.event === "host-started" || l.event === "host-stopped");
127
+ const lastMark = marks.at(-1);
128
+ const lastStart = [...marks].reverse().find((l) => l.event === "host-started");
129
+ if (holder !== undefined) {
130
+ // The lock names the process; the film says since when, and which version it is.
131
+ const mine = [...marks].reverse().find((l) => l.event === "host-started" && l.pid === holder);
132
+ return { running: true, pid: holder, since: atOf(mine), version: versionOf(mine) };
133
+ }
134
+ const ended = lastMark === undefined ? "never" : lastMark.event === "host-stopped" ? "clean" : "killed";
135
+ return { running: false, ended, at: atOf(lastMark), version: versionOf(lastStart) };
136
+ }
137
+ function atOf(line) {
138
+ const at = typeof line?.at === "string" ? Date.parse(line.at) : Number.NaN;
139
+ return Number.isNaN(at) ? undefined : at;
140
+ }
141
+ function versionOf(line) {
142
+ return typeof line?.version === "string" ? line.version : undefined;
143
+ }
144
+ function readTail(path) {
145
+ let fd;
146
+ try {
147
+ fd = openSync(path, "r");
148
+ const size = fstatSync(fd).size;
149
+ const start = Math.max(0, size - JOURNAL_TAIL_BYTES);
150
+ const buf = Buffer.alloc(size - start);
151
+ readSync(fd, buf, 0, buf.length, start);
152
+ let text = buf.toString("utf8");
153
+ if (start > 0) {
154
+ // The cut falls inside a line: drop that line rather than misread it.
155
+ const newline = text.indexOf("\n");
156
+ text = newline < 0 ? "" : text.slice(newline + 1);
157
+ }
158
+ return parseJournalChunk(text, "").lines;
159
+ }
160
+ catch {
161
+ return [];
162
+ }
163
+ finally {
164
+ if (fd !== undefined) {
165
+ closeSync(fd);
166
+ }
167
+ }
168
+ }
169
+ /**
170
+ * What is not over, as a forest: a row hangs under the first thing it waits on
171
+ * (or under its Feature when it waits on nothing), so a reader sees what a stop
172
+ * holds back. A row waiting on several things appears once, under the first,
173
+ * and names the others.
174
+ */
175
+ export function treeOf(dash) {
176
+ const rows = [...dash.active, ...dash.upcoming];
177
+ const nodes = new Map(rows.map((row) => [row.key, { row, alsoWaitingOn: [], children: [] }]));
178
+ const parentOf = (row) => row.waitingOn.find((key) => nodes.has(key)) ??
179
+ (row.feature !== undefined && nodes.has(row.feature) ? row.feature : undefined);
180
+ const roots = [];
181
+ for (const row of rows) {
182
+ const node = nodes.get(row.key);
183
+ const parent = parentOf(row);
184
+ if (node === undefined) {
185
+ continue;
186
+ }
187
+ node.alsoWaitingOn = row.waitingOn.filter((key) => key !== parent);
188
+ const holder = parent === undefined || reaches(nodes, parent, row.key, parentOf)
189
+ ? undefined
190
+ : nodes.get(parent);
191
+ (holder?.children ?? roots).push(node);
192
+ }
193
+ return roots;
194
+ }
195
+ /** Following parents from `from`, do we come back to `target`? A cycle in the tracker must not loop the screen. */
196
+ function reaches(nodes, from, target, parentOf) {
197
+ const seen = new Set();
198
+ let at = from;
199
+ while (at !== undefined && !seen.has(at)) {
200
+ if (at === target) {
201
+ return true;
202
+ }
203
+ seen.add(at);
204
+ const node = nodes.get(at);
205
+ at = node === undefined ? undefined : parentOf(node.row);
206
+ }
207
+ return false;
208
+ }
209
+ //# sourceMappingURL=dash-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dash-model.js","sourceRoot":"","sources":["../../src/operator/dash-model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { type Dash } from "./dash-model.js";
2
+ export type DashStyle = {
3
+ /** Terminal columns; rows are cut to fit. */
4
+ width: number;
5
+ /** Terminal rows; the lists share what the header and section titles leave. */
6
+ height: number;
7
+ color: boolean;
8
+ /** `tree` hangs what waits under what it waits on; default `list`. */
9
+ mode?: "list" | "tree";
10
+ /** A last line, for the keys the screen answers to. */
11
+ footer?: string;
12
+ };
13
+ /** The whole frame as lines. Pure: the same Dash and style give the same frame. */
14
+ export declare function renderDash(dash: Dash, style: DashStyle): string[];
15
+ export declare function age(ms: number): string;
16
+ //# sourceMappingURL=dash-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dash-view.d.ts","sourceRoot":"","sources":["../../src/operator/dash-view.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,IAAI,EAMV,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,SAAS,GAAG;IACtB,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,sEAAsE;IACtE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AA2CF,mFAAmF;AACnF,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM,EAAE,CAgDjE;AA8ID,wBAAgB,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAWtC"}
@@ -0,0 +1,226 @@
1
+ import { homedir } from "node:os";
2
+ import { CLI_NAME } from "@bluewombat/manager-kit";
3
+ import { treeOf, zoneOf, } from "./dash-model.js";
4
+ const ICONS = {
5
+ received: "⏳",
6
+ waiting: "⏳",
7
+ running: "🔨",
8
+ open: "🔨",
9
+ integrating: "🧩",
10
+ submitted: "📬",
11
+ merging: "🔀",
12
+ escalated: "🛑",
13
+ invalid: "❗",
14
+ done: "✅",
15
+ cancelled: "🚫",
16
+ };
17
+ const CODES = {
18
+ red: "31",
19
+ green: "32",
20
+ yellow: "33",
21
+ blue: "34",
22
+ dim: "2",
23
+ bold: "1",
24
+ };
25
+ const STATE_PAINT = {
26
+ running: "blue",
27
+ open: "blue",
28
+ integrating: "blue",
29
+ submitted: "yellow",
30
+ merging: "yellow",
31
+ escalated: "red",
32
+ invalid: "red",
33
+ done: "green",
34
+ cancelled: "dim",
35
+ received: "dim",
36
+ waiting: "dim",
37
+ };
38
+ const STATE_WIDTH = 11;
39
+ /** A section always shows at least this many rows, however short the terminal. */
40
+ const MIN_ROWS = 3;
41
+ /** The whole frame as lines. Pure: the same Dash and style give the same frame. */
42
+ export function renderDash(dash, style) {
43
+ const paint = (text, how) => style.color ? `\x1b[${CODES[how]}m${text}\x1b[0m` : text;
44
+ const lines = [];
45
+ lines.push(...headerOf(dash, paint));
46
+ if (style.mode === "tree") {
47
+ lines.push(...treeLines(dash, style, paint));
48
+ if (style.footer !== undefined) {
49
+ lines.push(paint(style.footer, "dim"));
50
+ }
51
+ return lines;
52
+ }
53
+ // 2 header lines + 3 section titles + 1 footer.
54
+ const budget = Math.max(MIN_ROWS * 3, style.height - 6);
55
+ const sizes = split(budget, [dash.active.length, dash.upcoming.length, dash.past.length]);
56
+ const all = [...dash.active, ...dash.upcoming, ...dash.past];
57
+ const prefix = commonPrefix(all.map((r) => r.key));
58
+ const short = (key) => key.slice(prefix.length);
59
+ const keyWidth = Math.max(0, ...all.map((r) => short(r.key).length));
60
+ const section = (title, rows, size, now, showLast) => {
61
+ lines.push(paint(`${title} (${rows.length})`, "bold"));
62
+ if (rows.length === 0) {
63
+ lines.push(paint(" —", "dim"));
64
+ return;
65
+ }
66
+ // A hidden tail still counts: "+N more" takes the last row's place.
67
+ const shown = rows.length > size ? rows.slice(0, Math.max(0, size - 1)) : rows;
68
+ for (const row of shown) {
69
+ lines.push(rowLine(row, { keyWidth, now, width: style.width, paint, short, showLast }));
70
+ }
71
+ if (shown.length < rows.length) {
72
+ lines.push(paint(` … +${rows.length - shown.length} more`, "dim"));
73
+ }
74
+ };
75
+ section("ACTIVE", dash.active, sizes[0] ?? MIN_ROWS, dash.now, true);
76
+ section("UPCOMING", dash.upcoming, sizes[1] ?? MIN_ROWS, dash.now, false);
77
+ section("PAST", dash.past, sizes[2] ?? MIN_ROWS, dash.now, true);
78
+ if (style.footer !== undefined) {
79
+ lines.push(paint(style.footer, "dim"));
80
+ }
81
+ return lines;
82
+ }
83
+ /** Everything still to do, as a tree; what is over is only counted. */
84
+ function treeLines(dash, style, paint) {
85
+ const roots = treeOf(dash);
86
+ const flat = [];
87
+ const walk = (nodes, lead) => {
88
+ nodes.forEach((node, index) => {
89
+ const last = index === nodes.length - 1;
90
+ flat.push({
91
+ node,
92
+ indent: lead === "" && nodes === roots ? "" : `${lead}${last ? "└─ " : "├─ "}`,
93
+ });
94
+ walk(node.children, nodes === roots ? "" : `${lead}${last ? " " : "│ "}`);
95
+ });
96
+ };
97
+ walk(roots, "");
98
+ // Children of a root hang from column 0.
99
+ const prefix = commonPrefix([...dash.active, ...dash.upcoming, ...dash.past].map((r) => r.key));
100
+ const short = (key) => key.slice(prefix.length);
101
+ const keyWidth = Math.max(0, ...flat.map(({ node, indent }) => indent.length + short(node.row.key).length));
102
+ const lines = [paint(`TO DO (${flat.length}) · ${dash.past.length} over`, "bold")];
103
+ // 2 header + 1 title + 1 footer.
104
+ const room = Math.max(MIN_ROWS, style.height - 4);
105
+ const shown = flat.length > room ? flat.slice(0, Math.max(0, room - 1)) : flat;
106
+ for (const { node, indent } of shown) {
107
+ const row = { ...node.row, waitingOn: node.alsoWaitingOn };
108
+ lines.push(rowLine(row, {
109
+ keyWidth,
110
+ now: dash.now,
111
+ width: style.width,
112
+ paint,
113
+ short,
114
+ showLast: zoneOf(row.kind, row.state) === "active",
115
+ indent,
116
+ }));
117
+ }
118
+ if (flat.length === 0) {
119
+ lines.push(paint(" —", "dim"));
120
+ }
121
+ else if (shown.length < flat.length) {
122
+ lines.push(paint(` … +${flat.length - shown.length} more`, "dim"));
123
+ }
124
+ return lines;
125
+ }
126
+ function headerOf(dash, paint) {
127
+ const where = dash.install.source === "npm" ? "npm package" : `local copy ${tilde(dash.install.dir)}`;
128
+ const first = `${CLI_NAME} ${dash.install.version} · ${where}`;
129
+ return [paint(first, "bold"), `${workerText(dash.worker, dash.now, paint)}${versionNote(dash)}`];
130
+ }
131
+ function versionNote(dash) {
132
+ const theirs = dash.worker.version;
133
+ return theirs !== undefined && theirs !== dash.install.version
134
+ ? ` ⚠️ the worker runs ${theirs}, this command ${dash.install.version}`
135
+ : "";
136
+ }
137
+ function workerText(worker, now, paint) {
138
+ if (worker.running) {
139
+ const up = worker.since === undefined ? "" : ` · up ${age(now - worker.since)}`;
140
+ return `${paint("🟢 running", "green")} pid ${worker.pid}${up}`;
141
+ }
142
+ const when = worker.at === undefined ? "" : ` ${age(now - worker.at)} ago`;
143
+ switch (worker.ended) {
144
+ case "clean":
145
+ return `${paint("⚫ stopped", "dim")} stopped${when}`;
146
+ case "killed":
147
+ return `${paint("🔴 stopped", "red")} died without saying so (last sign${when})`;
148
+ default:
149
+ return `${paint("⚫ stopped", "dim")} no run recorded in this ledger`;
150
+ }
151
+ }
152
+ function rowLine(row, ctx) {
153
+ const icon = ICONS[row.state] ?? "▫️";
154
+ const indent = ctx.indent ?? "";
155
+ const lead = `${indent}${icon} ${ctx.short(row.key).padEnd(ctx.keyWidth - indent.length)} `;
156
+ const state = ctx.paint(row.state.padEnd(STATE_WIDTH), STATE_PAINT[row.state] ?? "dim");
157
+ // Icon is two columns wide however many code points it takes.
158
+ const used = 2 + 1 + ctx.keyWidth + 2 + STATE_WIDTH + 2;
159
+ // (the indent is part of keyWidth: columns line up whatever the depth)
160
+ const room = Math.max(0, ctx.width - used);
161
+ const tag = row.kind === "feature" ? "Feature " : "";
162
+ const wait = row.waitingOn.length > 0 ? ` ⛓ ${row.waitingOn.map(ctx.short).join(", ")}` : "";
163
+ const seen = row.last === undefined || !ctx.showLast
164
+ ? ""
165
+ : ` · ${row.last.what} ${age(ctx.now - row.last.at)}`;
166
+ const text = [`${tag}${row.title ?? ""}`.trim(), row.detail]
167
+ .filter((s) => s.length > 0)
168
+ .join(" — ");
169
+ const rest = clip(`${text}${wait}`, room);
170
+ const tail = clip(seen, Math.max(0, room - rest.length));
171
+ return `${lead}${state} ${rest}${ctx.paint(tail, "dim")}`.trimEnd();
172
+ }
173
+ /** Rows each list may show: all it needs, with the leftover going to whichever needs more. */
174
+ function split(budget, needs) {
175
+ const sizes = needs.map(() => MIN_ROWS);
176
+ let left = budget - MIN_ROWS * needs.length;
177
+ for (;;) {
178
+ const hungry = needs.findIndex((n, i) => n > (sizes[i] ?? 0));
179
+ if (left <= 0 || hungry < 0) {
180
+ break;
181
+ }
182
+ // Active is served first, then upcoming, then past.
183
+ sizes[hungry] = (sizes[hungry] ?? 0) + 1;
184
+ left -= 1;
185
+ }
186
+ return sizes;
187
+ }
188
+ export function age(ms) {
189
+ const s = Math.max(0, Math.floor(ms / 1000));
190
+ if (s < 60) {
191
+ return `${s}s`;
192
+ }
193
+ const m = Math.floor(s / 60);
194
+ if (m < 60) {
195
+ return `${m}m`;
196
+ }
197
+ const h = Math.floor(m / 60);
198
+ return h < 48 ? `${h}h${String(m % 60).padStart(2, "0")}` : `${Math.floor(h / 24)}d`;
199
+ }
200
+ function clip(text, width) {
201
+ if (width <= 0) {
202
+ return "";
203
+ }
204
+ return text.length <= width ? text : `${text.slice(0, Math.max(0, width - 1))}…`;
205
+ }
206
+ function tilde(path) {
207
+ const home = homedir();
208
+ return path.startsWith(home) ? `~${path.slice(home.length)}` : path;
209
+ }
210
+ /** What every key starts with, up to and including a `#` or `:` — `github:tilap/ksmgr#` — so a row only says its number. */
211
+ function commonPrefix(keys) {
212
+ const first = keys[0];
213
+ if (first === undefined) {
214
+ return "";
215
+ }
216
+ let end = first.length;
217
+ for (const key of keys) {
218
+ while (end > 0 && !key.startsWith(first.slice(0, end))) {
219
+ end -= 1;
220
+ }
221
+ }
222
+ const head = first.slice(0, end);
223
+ const cut = Math.max(head.lastIndexOf("#"), head.lastIndexOf(":"));
224
+ return cut < 0 ? "" : head.slice(0, cut + 1);
225
+ }
226
+ //# sourceMappingURL=dash-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dash-view.js","sourceRoot":"","sources":["../../src/operator/dash-view.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ export type DashInput = {
2
+ cwd: string;
3
+ argv: string[];
4
+ write: (text: string) => void;
5
+ interruptFlag: {
6
+ interrupted: boolean;
7
+ };
8
+ /** Present at a terminal: the screen is redrawn in place. Absent (a pipe), one frame is printed. */
9
+ screen?: {
10
+ columns: number;
11
+ rows: number;
12
+ color: boolean;
13
+ size: () => {
14
+ columns: number;
15
+ rows: number;
16
+ };
17
+ };
18
+ /** Keys typed at the terminal: `t` flips list and tree, `r` redraws, `q` or Ctrl-C leaves. Absent, the screen answers to no key. */
19
+ keys?: {
20
+ subscribe: (onKey: (key: string) => void) => () => void;
21
+ };
22
+ /** Which view to open on. */
23
+ tree?: boolean;
24
+ /** Tests shrink this. */
25
+ now?: () => number;
26
+ };
27
+ /**
28
+ * A dashboard of the ledger that redraws itself: the version, whether the worker
29
+ * is there, what is being worked on, what is next, what just finished.
30
+ *
31
+ * Like `watch`, it opens the ledger and the journal and nothing else.
32
+ */
33
+ export declare function runDash(input: DashInput): Promise<number>;
34
+ //# sourceMappingURL=dash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dash.d.ts","sourceRoot":"","sources":["../../src/operator/dash.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,SAAS,GAAG;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,aAAa,EAAE;QAAE,WAAW,EAAE,OAAO,CAAA;KAAE,CAAC;IACxC,oGAAoG;IACpG,MAAM,CAAC,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,OAAO,CAAC;QACf,IAAI,EAAE,MAAM;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;KAC/C,CAAC;IACF,oIAAoI;IACpI,IAAI,CAAC,EAAE;QAAE,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,KAAK,MAAM,IAAI,CAAA;KAAE,CAAC;IACnE,6BAA6B;IAC7B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,yBAAyB;IACzB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB,CAAC;AAmBF;;;;;GAKG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CA2E/D"}