@rsaglobaltech/specgate 0.24.0 → 0.25.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 (39) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/dist/packages/core/src/domain/Clarification.js +173 -0
  3. package/dist/packages/core/src/domain/Clarification.js.map +1 -0
  4. package/dist/packages/core/src/domain/DraftChecklist.js +16 -16
  5. package/dist/packages/core/src/domain/DraftChecklist.js.map +1 -1
  6. package/dist/packages/core/src/domain/HarnessRun.js.map +1 -1
  7. package/dist/packages/core/test/unit/clarification.test.js +161 -0
  8. package/dist/packages/core/test/unit/clarification.test.js.map +1 -0
  9. package/dist/scripts/answer.js +10 -0
  10. package/dist/scripts/answer.js.map +1 -0
  11. package/dist/scripts/ask.js +10 -0
  12. package/dist/scripts/ask.js.map +1 -0
  13. package/dist/scripts/brief_add.js +10 -0
  14. package/dist/scripts/brief_add.js.map +1 -0
  15. package/dist/scripts/cli/commands/change/ChangeCommand.js +87 -1
  16. package/dist/scripts/cli/commands/change/ChangeCommand.js.map +1 -1
  17. package/dist/scripts/cli/commands/harness/RunCommand.js +78 -3
  18. package/dist/scripts/cli/commands/harness/RunCommand.js.map +1 -1
  19. package/dist/scripts/cli/commands/spec/ClarifyCommands.js +275 -0
  20. package/dist/scripts/cli/commands/spec/ClarifyCommands.js.map +1 -0
  21. package/dist/scripts/harness/prompt.js +2 -0
  22. package/dist/scripts/harness/prompt.js.map +1 -1
  23. package/dist/scripts/lib/brief-add.js +197 -0
  24. package/dist/scripts/lib/brief-add.js.map +1 -0
  25. package/dist/scripts/lib/change-impact.js +156 -0
  26. package/dist/scripts/lib/change-impact.js.map +1 -0
  27. package/dist/scripts/lib/clarification.js +300 -0
  28. package/dist/scripts/lib/clarification.js.map +1 -0
  29. package/dist/scripts/lib/live-detail.js +3 -2
  30. package/dist/scripts/lib/live-detail.js.map +1 -1
  31. package/dist/scripts/lib/live-model.js +28 -3
  32. package/dist/scripts/lib/live-model.js.map +1 -1
  33. package/dist/scripts/lib/live-page.js +10 -6
  34. package/dist/scripts/lib/live-page.js.map +1 -1
  35. package/dist/scripts/lib/surface.js +52 -0
  36. package/dist/scripts/lib/surface.js.map +1 -1
  37. package/dist/scripts/questions.js +10 -0
  38. package/dist/scripts/questions.js.map +1 -0
  39. package/package.json +1 -1
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.requirementImpact = requirementImpact;
37
+ exports.changedBy = changedBy;
38
+ exports.impactOf = impactOf;
39
+ const fs = __importStar(require("node:fs"));
40
+ const path = __importStar(require("node:path"));
41
+ const node_child_process_1 = require("node:child_process");
42
+ const live_detail_1 = require("./live-detail");
43
+ const ChangeWorkspace_1 = require("../../packages/core/src/infrastructure/ChangeWorkspace");
44
+ const HEADING = /^(?:###\s+Requirement:|#{2,3})\s+(REQ-\d+)\b/;
45
+ function specFiles(projectDir) {
46
+ const out = [];
47
+ const spec = path.join(projectDir, "spec.md");
48
+ if (fs.existsSync(spec))
49
+ out.push(spec);
50
+ const walk = (dir) => {
51
+ let entries = [];
52
+ try {
53
+ entries = fs.readdirSync(dir, { withFileTypes: true });
54
+ }
55
+ catch {
56
+ return;
57
+ }
58
+ for (const e of entries) {
59
+ const full = path.join(dir, e.name);
60
+ if (e.isDirectory() && e.name !== "archive")
61
+ walk(full);
62
+ else if (e.name === "spec.md")
63
+ out.push(full);
64
+ }
65
+ };
66
+ walk(path.join(projectDir, "docs", "specs"));
67
+ return out;
68
+ }
69
+ /** The requirements whose statement or scenarios name `id`, other than itself. */
70
+ function namedBy(projectDir, id) {
71
+ const found = new Set();
72
+ const named = new RegExp(`(^|[^\\w-])${id}(?!\\d)`);
73
+ for (const file of specFiles(projectDir)) {
74
+ let current = null;
75
+ for (const line of fs.readFileSync(file, "utf8").split(/\r?\n/)) {
76
+ const h = HEADING.exec(line);
77
+ if (h) {
78
+ current = h[1];
79
+ continue;
80
+ }
81
+ if (current && current !== id && !line.includes("specgate:trace") && named.test(line)) {
82
+ found.add(current);
83
+ }
84
+ }
85
+ }
86
+ return [...found].sort();
87
+ }
88
+ /** The files the commits naming `id` changed, outside the specification. */
89
+ function filesOf(projectDir, id) {
90
+ const r = (0, node_child_process_1.spawnSync)("git", ["log", "-E", `--grep=${id}([^0-9]|$)`, "--name-only", "--format="], {
91
+ cwd: projectDir,
92
+ encoding: "utf8",
93
+ maxBuffer: 64 * 1024 * 1024,
94
+ });
95
+ if (r.status !== 0)
96
+ return [];
97
+ return [
98
+ ...new Set(r.stdout
99
+ .split("\n")
100
+ .map((l) => l.trim())
101
+ .filter(Boolean)
102
+ .filter((f) => !/^(docs\/specs\/|features\/|spec\.md$)/.test(f))),
103
+ ].sort();
104
+ }
105
+ /** Feature files named after the requirement, as `archive` writes them: features/<area>/<REQ>.feature. */
106
+ function featuresNamed(projectDir, id) {
107
+ const out = [];
108
+ const root = path.join(projectDir, "features");
109
+ let areas = [];
110
+ try {
111
+ areas = fs.readdirSync(root, { withFileTypes: true });
112
+ }
113
+ catch {
114
+ return out;
115
+ }
116
+ for (const a of areas) {
117
+ if (a.isDirectory() && fs.existsSync(path.join(root, a.name, `${id}.feature`))) {
118
+ out.push(`features/${a.name}/${id}.feature`);
119
+ }
120
+ }
121
+ return out;
122
+ }
123
+ function requirementImpact(projectDir, id) {
124
+ const d = (0, live_detail_1.requirementDetail)(projectDir, id);
125
+ return {
126
+ requirement: id,
127
+ spec: d.source || null,
128
+ features: [...new Set([...(d.features || []), ...featuresNamed(projectDir, id)])].sort(),
129
+ tests: d.tests || [],
130
+ files: filesOf(projectDir, id),
131
+ namedBy: namedBy(projectDir, id),
132
+ };
133
+ }
134
+ /** The requirements a change modifies or removes, in id order. */
135
+ function changedBy(projectDir, change) {
136
+ const ids = new Set();
137
+ for (const d of (0, ChangeWorkspace_1.listDeltas)(projectDir, change)) {
138
+ const text = fs.readFileSync(d.file, "utf8");
139
+ for (const section of text.split(/^## /m)) {
140
+ if (!/^(MODIFIED|REMOVED|RENAMED) Requirements/.test(section))
141
+ continue;
142
+ for (const m of section.matchAll(/^###\s+Requirement:\s+(REQ-\d+)/gm))
143
+ ids.add(m[1]);
144
+ }
145
+ }
146
+ return [...ids].sort();
147
+ }
148
+ /** The impact of a requirement, or of each requirement a change modifies or removes. */
149
+ function impactOf(projectDir, target) {
150
+ if (/^REQ-\d+$/.test(target))
151
+ return [requirementImpact(projectDir, target)];
152
+ if (!(0, ChangeWorkspace_1.listChangeIds)(projectDir).includes(target))
153
+ return null;
154
+ return changedBy(projectDir, target).map((id) => requirementImpact(projectDir, id));
155
+ }
156
+ //# sourceMappingURL=change-impact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"change-impact.js","sourceRoot":"","sources":["../../../scripts/lib/change-impact.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,300 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.PROJECT = void 0;
37
+ exports.allQuestions = allQuestions;
38
+ exports.waiting = waiting;
39
+ exports.answer = answer;
40
+ exports.reviewed = reviewed;
41
+ exports.definedIn = definedIn;
42
+ exports.setWaiting = setWaiting;
43
+ exports.ask = ask;
44
+ const fs = __importStar(require("node:fs"));
45
+ const path = __importStar(require("node:path"));
46
+ const Clarification_1 = require("../../packages/core/src/domain/Clarification");
47
+ const ChangeWorkspace_1 = require("../../packages/core/src/infrastructure/ChangeWorkspace");
48
+ const live_detail_1 = require("./live-detail");
49
+ const MatrixCommand_1 = require("../cli/commands/spec/MatrixCommand");
50
+ /**
51
+ * Questions and answers on disk (REQ-187..189): each open change's
52
+ * `questions.md` and `assumptions.md`, and the project's own
53
+ * `docs/specs/questions.md` for requirements a capability already defines.
54
+ */
55
+ /** The change a project-level question belongs to, as `questions` prints it. */
56
+ exports.PROJECT = "project";
57
+ const PROJECT_QUESTIONS = path.join("docs", "specs", "questions.md");
58
+ const PROJECT_ASSUMPTIONS = path.join("docs", "specs", "assumptions.md");
59
+ function changeDir(projectDir, change) {
60
+ return path.join(projectDir, "docs", "specs", "changes", change);
61
+ }
62
+ function questionsFile(projectDir, change) {
63
+ return change === exports.PROJECT
64
+ ? path.join(projectDir, PROJECT_QUESTIONS)
65
+ : path.join(changeDir(projectDir, change), "questions.md");
66
+ }
67
+ function assumptionsFile(projectDir, change) {
68
+ return change === exports.PROJECT
69
+ ? path.join(projectDir, PROJECT_ASSUMPTIONS)
70
+ : path.join(changeDir(projectDir, change), "assumptions.md");
71
+ }
72
+ function read(file) {
73
+ try {
74
+ return fs.readFileSync(file, "utf8");
75
+ }
76
+ catch {
77
+ return undefined;
78
+ }
79
+ }
80
+ function write(file, text) {
81
+ fs.mkdirSync(path.dirname(file), { recursive: true });
82
+ fs.writeFileSync(file, text.endsWith("\n") ? text : `${text}\n`, "utf8");
83
+ }
84
+ /** Every question of every open change, and of the project. */
85
+ function allQuestions(projectDir) {
86
+ const out = [];
87
+ for (const change of [...(0, ChangeWorkspace_1.listChangeIds)(projectDir), exports.PROJECT]) {
88
+ const file = questionsFile(projectDir, change);
89
+ const md = read(file);
90
+ if (!md)
91
+ continue;
92
+ for (const q of (0, Clarification_1.questionTable)(md)) {
93
+ out.push({ ...q, change, file: path.relative(projectDir, file).split(path.sep).join("/") });
94
+ }
95
+ }
96
+ return out;
97
+ }
98
+ /** What waits for an answer: open questions, and requirements in Needs Clarification no open question names. */
99
+ function waiting(projectDir) {
100
+ const questions = allQuestions(projectDir).filter((q) => !q.answered);
101
+ const named = new Set(questions.flatMap((q) => q.blocks));
102
+ const seen = new Set();
103
+ const requirements = [];
104
+ for (const row of (0, live_detail_1.liveMatrix)(projectDir)) {
105
+ if (row.status !== "Needs Clarification" || named.has(row.requirement))
106
+ continue;
107
+ if (seen.has(row.requirement))
108
+ continue;
109
+ seen.add(row.requirement);
110
+ requirements.push({ requirement: row.requirement, title: row.title });
111
+ }
112
+ return { questions, requirements };
113
+ }
114
+ /** The changes that have a question with this id. */
115
+ function changesWith(projectDir, id) {
116
+ return [
117
+ ...new Set(allQuestions(projectDir)
118
+ .filter((q) => q.id === id)
119
+ .map((q) => q.change)),
120
+ ];
121
+ }
122
+ function pickChange(projectDir, id, change) {
123
+ const found = changesWith(projectDir, id);
124
+ if (change) {
125
+ if (!found.includes(change)) {
126
+ return {
127
+ ok: false,
128
+ code: "question_not_found",
129
+ message: `${change} has no question ${id}.`,
130
+ changes: found,
131
+ };
132
+ }
133
+ return change;
134
+ }
135
+ if (found.length === 0) {
136
+ return {
137
+ ok: false,
138
+ code: "question_not_found",
139
+ message: `No open change has a question ${id}.`,
140
+ };
141
+ }
142
+ if (found.length > 1) {
143
+ return {
144
+ ok: false,
145
+ code: "question_ambiguous",
146
+ message: `${found.length} changes have a question ${id}: ${found.join(", ")}. Say which with --change.`,
147
+ changes: found,
148
+ };
149
+ }
150
+ return found[0];
151
+ }
152
+ /** Write the answer, add its assumption to review, and say which requirements to revise (REQ-188). */
153
+ function answer(projectDir, id, text, change) {
154
+ const picked = pickChange(projectDir, id, change);
155
+ if (typeof picked !== "string")
156
+ return picked;
157
+ const qFile = questionsFile(projectDir, picked);
158
+ const written = (0, Clarification_1.answerQuestion)(read(qFile) || "", id, text);
159
+ if (!written.ok) {
160
+ return {
161
+ ok: false,
162
+ code: written.code,
163
+ message: written.code === "answer_deferred"
164
+ ? `"${text}" puts the decision off; an answer decides. Answer when it is decided.`
165
+ : `${picked} has no question ${id}.`,
166
+ };
167
+ }
168
+ const aFile = assumptionsFile(projectDir, picked);
169
+ const added = (0, Clarification_1.addAssumption)(read(aFile), picked, {
170
+ text,
171
+ usedIn: written.blocks,
172
+ why: id,
173
+ });
174
+ write(qFile, written.md);
175
+ write(aFile, added.md);
176
+ return { ok: true, change: picked, question: id, assumption: added.id, revise: written.blocks };
177
+ }
178
+ /** Mark the question's assumptions reviewed: the spec reflects the answer (REQ-188). */
179
+ function reviewed(projectDir, id, change) {
180
+ const picked = pickChange(projectDir, id, change);
181
+ if (typeof picked !== "string")
182
+ return picked;
183
+ const aFile = assumptionsFile(projectDir, picked);
184
+ const r = (0, Clarification_1.reviewAssumptions)(read(aFile) || "", id);
185
+ if (r.ids.length === 0) {
186
+ return {
187
+ ok: false,
188
+ code: "nothing_to_review",
189
+ message: `No assumption from ${id} is waiting for review in ${picked}.`,
190
+ };
191
+ }
192
+ write(aFile, r.md);
193
+ return { ok: true, change: picked, ids: r.ids };
194
+ }
195
+ /** Where a requirement is defined: the open change that adds or modifies it, or the capability spec. */
196
+ function definedIn(projectDir, req) {
197
+ const heading = new RegExp(`^###\\s+Requirement:\\s+${req}\\b`, "m");
198
+ for (const change of (0, ChangeWorkspace_1.listChangeIds)(projectDir)) {
199
+ const specs = path.join(changeDir(projectDir, change), "specs");
200
+ for (const cap of safeDirs(specs)) {
201
+ const file = path.join(specs, cap, "spec.md");
202
+ if (heading.test(read(file) || ""))
203
+ return { change, file };
204
+ }
205
+ }
206
+ const caps = path.join(projectDir, "docs", "specs", "capabilities");
207
+ for (const cap of safeDirs(caps)) {
208
+ const file = path.join(caps, cap, "spec.md");
209
+ if (heading.test(read(file) || ""))
210
+ return { change: exports.PROJECT, file };
211
+ }
212
+ const spec = path.join(projectDir, "spec.md");
213
+ if (new RegExp(`^#{2,3}\\s+${req}\\b`, "m").test(read(spec) || ""))
214
+ return { change: exports.PROJECT, file: spec };
215
+ return null;
216
+ }
217
+ /**
218
+ * A requirement of `spec.md` keeps its status in tables — the summary in
219
+ * `spec.md` and the matrix — whose last cell is the status: set both.
220
+ */
221
+ function setWaitingInTables(projectDir, req) {
222
+ let done = false;
223
+ for (const rel of ["spec.md", path.join("docs", "specs", "traceability.md")]) {
224
+ const file = path.join(projectDir, rel);
225
+ const text = read(file);
226
+ if (!text)
227
+ continue;
228
+ const row = new RegExp(`^(\\|\\s*${req}\\s*\\|.*\\|)\\s*[^|]+?\\s*\\|\\s*$`, "gm");
229
+ const next = text.replace(row, (_m, head) => `${head} Needs Clarification |`);
230
+ if (next !== text) {
231
+ write(file, next);
232
+ done = true;
233
+ }
234
+ }
235
+ return done;
236
+ }
237
+ function safeDirs(dir) {
238
+ try {
239
+ return fs
240
+ .readdirSync(dir, { withFileTypes: true })
241
+ .filter((e) => e.isDirectory())
242
+ .map((e) => e.name);
243
+ }
244
+ catch {
245
+ return [];
246
+ }
247
+ }
248
+ /**
249
+ * The requirement's trace status set to Needs Clarification in the file that
250
+ * defines it, and the derived matrix refreshed. `apply` writes only the
251
+ * statuses a delivery moves through, and this one is not.
252
+ */
253
+ function setWaiting(file, projectDir, req) {
254
+ if (path.basename(file) === "spec.md" && path.dirname(file) === projectDir) {
255
+ return setWaitingInTables(projectDir, req);
256
+ }
257
+ const lines = (read(file) || "").split("\n");
258
+ const head = new RegExp(`^(?:###\\s+Requirement:|##)\\s+${req}\\b`);
259
+ const start = lines.findIndex((l) => head.test(l));
260
+ if (start === -1)
261
+ return false;
262
+ for (let i = start + 1; i < lines.length && !/^#{2,3}\s(?!#)/.test(lines[i]); i += 1) {
263
+ if (!/<!--\s*specgate:trace\b/.test(lines[i]))
264
+ continue;
265
+ lines[i] = /\bstatus=/.test(lines[i])
266
+ ? lines[i].replace(/\bstatus=(?:"[^"]*"|[^\s"]+?)(?=\s|-->)/, 'status="Needs Clarification"')
267
+ : lines[i].replace(/<!--\s*specgate:trace/, '<!-- specgate:trace status="Needs Clarification"');
268
+ write(file, lines.join("\n"));
269
+ try {
270
+ (0, MatrixCommand_1.refreshDerivedMatrix)(projectDir);
271
+ }
272
+ catch {
273
+ /* the next validate refreshes it */
274
+ }
275
+ return true;
276
+ }
277
+ return false;
278
+ }
279
+ /** Add the question to where the requirement is defined, and set it waiting (REQ-189). */
280
+ function ask(projectDir, req, text) {
281
+ const where = definedIn(projectDir, req);
282
+ if (!where) {
283
+ return {
284
+ ok: false,
285
+ code: "requirement_not_found",
286
+ message: `${req} is not defined by an open change or a capability spec.`,
287
+ };
288
+ }
289
+ const qFile = questionsFile(projectDir, where.change);
290
+ const added = (0, Clarification_1.addQuestion)(read(qFile), where.change, text, [req]);
291
+ write(qFile, added.md);
292
+ setWaiting(where.file, projectDir, req);
293
+ return {
294
+ ok: true,
295
+ change: where.change,
296
+ question: added.id,
297
+ file: path.relative(projectDir, qFile).split(path.sep).join("/"),
298
+ };
299
+ }
300
+ //# sourceMappingURL=clarification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clarification.js","sourceRoot":"","sources":["../../../scripts/lib/clarification.ts"],"names":[],"mappings":"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"}
@@ -330,9 +330,10 @@ function liveMatrix(projectDir) {
330
330
  if (!current)
331
331
  continue;
332
332
  if (l.includes("specgate:trace")) {
333
- const st = /status="?([A-Za-z ]+?)"?(\s|-->)/.exec(l);
333
+ // A quoted status keeps its spaces: "Needs Clarification" was read as "Needs".
334
+ const st = /status=(?:"([^"]*)"|([^\s"]+?))(?=\s|-->)/.exec(l);
334
335
  if (st)
335
- current.status = st[1];
336
+ current.status = st[1] || st[2];
336
337
  }
337
338
  const s = /^#{3,4}\s+Scenario:\s+(SCN-[\w.]+)/.exec(l);
338
339
  if (s)
@@ -1 +1 @@
1
- {"version":3,"file":"live-detail.js","sourceRoot":"","sources":["../../../scripts/lib/live-detail.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"live-detail.js","sourceRoot":"","sources":["../../../scripts/lib/live-detail.ts"],"names":[],"mappings":"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"}
@@ -42,8 +42,9 @@ exports.liveSignature = liveSignature;
42
42
  const fs = __importStar(require("node:fs"));
43
43
  const path = __importStar(require("node:path"));
44
44
  const harness_events_1 = require("./harness-events");
45
+ const clarification_1 = require("./clarification");
45
46
  /** Events about the agent's session rather than its work: not steps. */
46
- const SESSION = new Set(["agent", "usage", "prompt"]);
47
+ const SESSION = new Set(["agent", "usage", "prompt", "question"]);
47
48
  const num = (v) => Number(v) || 0;
48
49
  /** The usage lines of one attempt, folded. */
49
50
  function foldUsage(events) {
@@ -107,10 +108,13 @@ function foldRequirement(req, events) {
107
108
  const agentEv = [...mine].reverse().find((e) => e.type === "agent");
108
109
  const promptEv = [...mine].reverse().find((e) => e.type === "prompt");
109
110
  const lastStep = [...steps].reverse().find((e) => e.type === "step" || e.type === "gate");
111
+ const asked = [...mine].reverse().find((e) => e.type === "question");
110
112
  const phase = end
111
113
  ? end.result === "pass"
112
114
  ? "pass"
113
- : "fail"
115
+ : end.result === "question"
116
+ ? "question"
117
+ : "fail"
114
118
  : lastStep
115
119
  ? lastStep.type === "gate"
116
120
  ? "gate"
@@ -130,7 +134,13 @@ function foldRequirement(req, events) {
130
134
  group: "",
131
135
  attempt,
132
136
  phase,
133
- state: end ? (end.result === "pass" ? "pass" : "fail") : "running",
137
+ state: end
138
+ ? end.result === "pass"
139
+ ? "pass"
140
+ : end.result === "question"
141
+ ? "question"
142
+ : "fail"
143
+ : "running",
134
144
  started,
135
145
  updated,
136
146
  elapsed: Math.max(0, updated - started),
@@ -146,6 +156,7 @@ function foldRequirement(req, events) {
146
156
  }
147
157
  : null,
148
158
  usage: foldUsage(mine),
159
+ question: asked ? { text: String(asked.text || ""), answer: "specgate questions" } : null,
149
160
  prompt: promptEv
150
161
  ? {
151
162
  role: String(promptEv.role || "agent"),
@@ -218,6 +229,19 @@ function requirementTitles(projectDir) {
218
229
  walk(path.join(projectDir, "docs", "specs"));
219
230
  return titles;
220
231
  }
232
+ /**
233
+ * The command that answers what the agent asked: the open question the
234
+ * harness recorded for it, or `specgate questions` until it has (REQ-189).
235
+ */
236
+ function withAnswer(projectDir, req, text) {
237
+ const q = (0, clarification_1.waiting)(projectDir).questions.find((x) => x.blocks.includes(req) && x.text === text);
238
+ return {
239
+ text,
240
+ answer: q
241
+ ? `specgate answer ${q.id} "…"${q.change !== "project" ? ` --change ${q.change}` : ""}`
242
+ : "specgate questions",
243
+ };
244
+ }
221
245
  /** The run's queue and when it started, as the harness wrote it; empty when there is none. */
222
246
  function readQueue(projectDir) {
223
247
  try {
@@ -271,6 +295,7 @@ function readLive(projectDir) {
271
295
  ...folded,
272
296
  title: known ? known.title : "",
273
297
  group: known ? known.group : "",
298
+ question: folded.question ? withAnswer(projectDir, folded.req, folded.question.text) : null,
274
299
  });
275
300
  }
276
301
  }