@bluewombat/runtime 0.1.2 → 0.3.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.
Files changed (75) hide show
  1. package/README.md +81 -32
  2. package/SPECS.md +86 -9
  3. package/dist/cli.js +19 -0
  4. package/dist/cli.js.map +1 -1
  5. package/dist/config/find-config.d.ts +2 -2
  6. package/dist/config/find-config.js +2 -2
  7. package/dist/config/load-config.d.ts +1 -1
  8. package/dist/config/load-config.d.ts.map +1 -1
  9. package/dist/config/load-config.js +95 -13
  10. package/dist/config/load-config.js.map +1 -1
  11. package/dist/config/parse-args.d.ts.map +1 -1
  12. package/dist/config/parse-args.js +40 -2
  13. package/dist/config/parse-args.js.map +1 -1
  14. package/dist/config/types.d.ts +35 -4
  15. package/dist/config/types.d.ts.map +1 -1
  16. package/dist/index.d.ts +2 -0
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +1 -0
  19. package/dist/index.js.map +1 -1
  20. package/dist/loop/authority.d.ts.map +1 -1
  21. package/dist/loop/authority.js +16 -1
  22. package/dist/loop/authority.js.map +1 -1
  23. package/dist/loop/context.d.ts +3 -0
  24. package/dist/loop/context.d.ts.map +1 -1
  25. package/dist/loop/describe.d.ts.map +1 -1
  26. package/dist/loop/describe.js +5 -0
  27. package/dist/loop/describe.js.map +1 -1
  28. package/dist/loop/drive.d.ts +8 -6
  29. package/dist/loop/drive.d.ts.map +1 -1
  30. package/dist/loop/drive.js +17 -7
  31. package/dist/loop/drive.js.map +1 -1
  32. package/dist/loop/journal.d.ts +27 -0
  33. package/dist/loop/journal.d.ts.map +1 -1
  34. package/dist/loop/journal.js +68 -0
  35. package/dist/loop/journal.js.map +1 -1
  36. package/dist/loop/open-host.d.ts.map +1 -1
  37. package/dist/loop/open-host.js +60 -3
  38. package/dist/loop/open-host.js.map +1 -1
  39. package/dist/loop/report.d.ts.map +1 -1
  40. package/dist/loop/report.js +48 -6
  41. package/dist/loop/report.js.map +1 -1
  42. package/dist/loop/streams.d.ts +61 -0
  43. package/dist/loop/streams.d.ts.map +1 -0
  44. package/dist/loop/streams.js +156 -0
  45. package/dist/loop/streams.js.map +1 -0
  46. package/dist/loop/trace.d.ts +7 -0
  47. package/dist/loop/trace.d.ts.map +1 -1
  48. package/dist/loop/trace.js +40 -1
  49. package/dist/loop/trace.js.map +1 -1
  50. package/dist/loop/transformers.d.ts +7 -1
  51. package/dist/loop/transformers.d.ts.map +1 -1
  52. package/dist/loop/transformers.js +44 -11
  53. package/dist/loop/transformers.js.map +1 -1
  54. package/dist/operator/board.d.ts +4 -0
  55. package/dist/operator/board.d.ts.map +1 -1
  56. package/dist/operator/board.js +6 -0
  57. package/dist/operator/board.js.map +1 -1
  58. package/dist/operator/doctor.d.ts.map +1 -1
  59. package/dist/operator/doctor.js +45 -22
  60. package/dist/operator/doctor.js.map +1 -1
  61. package/dist/operator/film.d.ts +28 -0
  62. package/dist/operator/film.d.ts.map +1 -0
  63. package/dist/operator/film.js +211 -0
  64. package/dist/operator/film.js.map +1 -0
  65. package/dist/operator/init.d.ts.map +1 -1
  66. package/dist/operator/init.js +3 -2
  67. package/dist/operator/init.js.map +1 -1
  68. package/dist/operator/live.d.ts.map +1 -1
  69. package/dist/operator/live.js +3 -1
  70. package/dist/operator/live.js.map +1 -1
  71. package/dist/operator/log.d.ts +13 -0
  72. package/dist/operator/log.d.ts.map +1 -0
  73. package/dist/operator/log.js +238 -0
  74. package/dist/operator/log.js.map +1 -0
  75. package/package.json +16 -15
@@ -0,0 +1,238 @@
1
+ import { closeSync, existsSync, openSync, readdirSync, readFileSync, readSync, statSync, } from "node:fs";
2
+ import { join, resolve } from "node:path";
3
+ import { PRODUCT } from "@bluewombat/manager-kit";
4
+ import { parseArgs } from "../config/parse-args.js";
5
+ import { journalPath, parseJournalChunk } from "../loop/journal.js";
6
+ import { formatJournalLine, isProblemJournalLine, isQuietJournalLine, tallyProblems, } from "./film.js";
7
+ const DEFAULT_TAIL = 80;
8
+ /**
9
+ * Replay the journal a run already wrote, with the reasons the live trace drops.
10
+ *
11
+ * Does not open Host, a manager, or Conductor. `watch` follows new lines from
12
+ * the end; this reads the film that is already there.
13
+ */
14
+ export async function runLog(input) {
15
+ const flags = peelFlags(input.argv);
16
+ if (flags.error !== undefined) {
17
+ input.write(`${flags.error}\n`);
18
+ return 2;
19
+ }
20
+ const parsed = parseArgs(flags.rest, { cwd: input.cwd, checkPaths: false });
21
+ if (!parsed.ok) {
22
+ input.write(`${parsed.reason}\n`);
23
+ return 2;
24
+ }
25
+ const path = journalPath(parsed.invocation.ledgerRoot);
26
+ if (!existsSync(path)) {
27
+ input.write(`No journal at ${path}.\n`);
28
+ input.write(`${PRODUCT} run has not written one yet.\n`);
29
+ return 0;
30
+ }
31
+ let body;
32
+ try {
33
+ body = readFileSync(path, "utf8");
34
+ }
35
+ catch (error) {
36
+ input.write(`${error instanceof Error ? error.message : String(error)}\n`);
37
+ return 2;
38
+ }
39
+ const parsedLines = parseJournalChunk(body.endsWith("\n") ? body : `${body}\n`, "").lines;
40
+ const kept = parsedLines.filter((line) => keepLine(line, flags));
41
+ const limit = flags.json && !flags.tailExplicit ? 0 : flags.tail;
42
+ const shown = limit > 0 && kept.length > limit ? kept.slice(-limit) : kept;
43
+ if (flags.json) {
44
+ const payload = flags.tailExplicit && shown.length < kept.length
45
+ ? { kept: kept.length, shown: shown.length, lines: shown }
46
+ : shown;
47
+ input.write(`${JSON.stringify(payload, null, 2)}\n`);
48
+ return 0;
49
+ }
50
+ input.write(`journal ${path}\n`);
51
+ if (shown.length < kept.length) {
52
+ input.write(`showing last ${shown.length} of ${kept.length} (${PRODUCT} log --tail 0 shows every kept line)\n`);
53
+ }
54
+ else if (!flags.problems && kept.length < parsedLines.length) {
55
+ input.write(`${kept.length} lines (${parsedLines.length - kept.length} quiet lines hidden)\n`);
56
+ }
57
+ else {
58
+ input.write(`${kept.length} lines\n`);
59
+ }
60
+ if (shown.length === 0) {
61
+ input.write("Nothing to show.\n");
62
+ }
63
+ else {
64
+ for (const line of shown) {
65
+ input.write(`${formatJournalLine(line)}\n`);
66
+ }
67
+ }
68
+ writeProblems(input.write, parsedLines);
69
+ writeTranscripts(input.write, parsed.invocation);
70
+ return 0;
71
+ }
72
+ function keepLine(line, flags) {
73
+ if (flags.problems) {
74
+ return isProblemJournalLine(line);
75
+ }
76
+ if (flags.all) {
77
+ return true;
78
+ }
79
+ return !isQuietJournalLine(line);
80
+ }
81
+ function writeProblems(write, kept) {
82
+ const counts = tallyProblems(kept);
83
+ write("problems\n");
84
+ if (counts.length === 0) {
85
+ write(" none\n");
86
+ return;
87
+ }
88
+ for (const [label, count] of counts) {
89
+ write(count > 1 ? ` ${label} ×${count}\n` : ` ${label}\n`);
90
+ }
91
+ }
92
+ function writeTranscripts(write, invocation) {
93
+ const dir = transcriptDir(invocation);
94
+ if (dir === undefined) {
95
+ return;
96
+ }
97
+ const files = newestTranscripts(dir, 5);
98
+ write(`transcripts ${dir}\n`);
99
+ if (files.length === 0) {
100
+ write(" (empty)\n");
101
+ return;
102
+ }
103
+ for (const file of files) {
104
+ const bits = [file.name, file.exit, file.duration].filter((part) => part.length > 0);
105
+ write(` ${bits.join(" ")}\n`);
106
+ write(` ${file.path}\n`);
107
+ }
108
+ }
109
+ function transcriptDir(invocation) {
110
+ const commands = [
111
+ invocation.planner.cmd,
112
+ invocation.builder.producer.cmd,
113
+ invocation.builder.repair.cmd,
114
+ ...(invocation.assembly.fix === undefined ? [] : [invocation.assembly.fix.cmd]),
115
+ ...(invocation.assembly.validate === undefined ? [] : [invocation.assembly.validate.cmd]),
116
+ ];
117
+ for (const cmd of commands) {
118
+ const index = cmd.indexOf("--transcript-dir");
119
+ const value = index >= 0 ? cmd[index + 1] : undefined;
120
+ if (value !== undefined && value.length > 0) {
121
+ return resolve(invocation.configDir, value);
122
+ }
123
+ }
124
+ const fallback = join(invocation.home, "transcripts");
125
+ return existsSync(fallback) ? fallback : undefined;
126
+ }
127
+ function newestTranscripts(dir, limit) {
128
+ const found = [];
129
+ collectTranscripts(dir, found);
130
+ found.sort((a, b) => b.mtimeMs - a.mtimeMs);
131
+ return found.slice(0, limit).map((file) => {
132
+ const heading = transcriptHeading(file.path);
133
+ return {
134
+ name: file.path.slice(dir.length + 1),
135
+ path: file.path,
136
+ exit: heading.exit,
137
+ duration: heading.duration,
138
+ };
139
+ });
140
+ }
141
+ function collectTranscripts(dir, found) {
142
+ let entries;
143
+ try {
144
+ entries = readdirSync(dir);
145
+ }
146
+ catch {
147
+ return;
148
+ }
149
+ for (const name of entries) {
150
+ const path = join(dir, name);
151
+ let stat;
152
+ try {
153
+ stat = statSync(path);
154
+ }
155
+ catch {
156
+ continue;
157
+ }
158
+ if (stat.isDirectory()) {
159
+ collectTranscripts(path, found);
160
+ continue;
161
+ }
162
+ if (name.endsWith(".md")) {
163
+ found.push({ path, mtimeMs: stat.mtimeMs });
164
+ }
165
+ }
166
+ }
167
+ function transcriptHeading(path) {
168
+ let fd;
169
+ try {
170
+ fd = openSync(path, "r");
171
+ const buf = Buffer.alloc(1500);
172
+ const read = readSync(fd, buf, 0, buf.length, 0);
173
+ const head = buf.toString("utf8", 0, read);
174
+ return {
175
+ exit: headingField(head, "exit"),
176
+ duration: headingField(head, "duration"),
177
+ };
178
+ }
179
+ catch {
180
+ return { exit: "", duration: "" };
181
+ }
182
+ finally {
183
+ if (fd !== undefined) {
184
+ closeSync(fd);
185
+ }
186
+ }
187
+ }
188
+ function headingField(head, name) {
189
+ const match = head.match(new RegExp(`^- ${name}: (.+)$`, "m"));
190
+ if (match === null || match[1] === undefined) {
191
+ return "";
192
+ }
193
+ return `${name} ${match[1].trim()}`;
194
+ }
195
+ function peelFlags(argv) {
196
+ const rest = [];
197
+ let json = false;
198
+ let all = false;
199
+ let problems = false;
200
+ let tail = DEFAULT_TAIL;
201
+ let tailExplicit = false;
202
+ for (let i = 0; i < argv.length; i++) {
203
+ const token = argv[i];
204
+ if (token === "--json") {
205
+ json = true;
206
+ continue;
207
+ }
208
+ if (token === "--all") {
209
+ all = true;
210
+ continue;
211
+ }
212
+ if (token === "--problems") {
213
+ problems = true;
214
+ continue;
215
+ }
216
+ if (token === "--tail") {
217
+ const raw = argv[i + 1];
218
+ if (raw === undefined || !/^\d+$/.test(raw)) {
219
+ return {
220
+ json,
221
+ all,
222
+ problems,
223
+ tail,
224
+ tailExplicit,
225
+ rest,
226
+ error: "--tail needs a number (0 shows every kept line).",
227
+ };
228
+ }
229
+ tail = Number(raw);
230
+ tailExplicit = true;
231
+ i += 1;
232
+ continue;
233
+ }
234
+ rest.push(token ?? "");
235
+ }
236
+ return { json, all, problems, tail, tailExplicit, rest };
237
+ }
238
+ //# sourceMappingURL=log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/operator/log.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bluewombat/runtime",
3
- "version": "0.1.2",
3
+ "version": "0.3.0",
4
4
  "type": "module",
5
5
  "description": "The mason process: listen, admit, run Conductor, report. Loads one FeatureManager plugin.",
6
6
  "keywords": [
@@ -46,21 +46,22 @@
46
46
  "build": "tsc -p tsconfig.build.json"
47
47
  },
48
48
  "dependencies": {
49
- "@bluewombat/conductor": "^0.1.2",
50
- "@bluewombat/feature-breakdown": "^0.1.2",
51
- "@bluewombat/manager-kit": "^0.1.2",
52
- "@bluewombat/implementer": "^0.1.2",
53
- "@bluewombat/integrator": "^0.1.2",
54
- "@bluewombat/isolation-copy": "^0.1.2",
55
- "@bluewombat/isolation-git": "^0.1.2",
56
- "@bluewombat/isolator": "^0.1.2",
57
- "@bluewombat/slots": "^0.1.2",
58
- "@bluewombat/work-ledger": "^0.1.2",
59
- "@bluewombat/persist-fs": "^0.1.2"
49
+ "@bluewombat/conductor": "^0.3.0",
50
+ "@bluewombat/feature-breakdown": "^0.3.0",
51
+ "@bluewombat/manager-kit": "^0.3.0",
52
+ "@bluewombat/implementer": "^0.3.0",
53
+ "@bluewombat/integrator": "^0.3.0",
54
+ "@bluewombat/isolation-copy": "^0.3.0",
55
+ "@bluewombat/isolation-git": "^0.3.0",
56
+ "@bluewombat/isolator": "^0.3.0",
57
+ "@bluewombat/slots": "^0.3.0",
58
+ "@bluewombat/work-ledger": "^0.3.0",
59
+ "@bluewombat/persist-fs": "^0.3.0",
60
+ "yaml": "^2.9.1"
60
61
  },
61
62
  "devDependencies": {
62
- "@bluewombat/manager-fake": "^0.1.2",
63
- "@bluewombat/manager-github": "^0.1.2",
64
- "@bluewombat/persist-sqlite": "^0.1.2"
63
+ "@bluewombat/manager-fake": "^0.3.0",
64
+ "@bluewombat/manager-github": "^0.3.0",
65
+ "@bluewombat/persist-sqlite": "^0.3.0"
65
66
  }
66
67
  }