@lannguyensi/harness 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.
- package/CHANGELOG.md +26 -0
- package/dist/cli/apply/apply.js +52 -13
- package/dist/cli/apply/apply.js.map +1 -1
- package/dist/cli/apply/generate-codex-config.d.ts +7 -0
- package/dist/cli/apply/generate-codex-config.js +8 -1
- package/dist/cli/apply/generate-codex-config.js.map +1 -1
- package/dist/cli/approve/understanding.d.ts +54 -18
- package/dist/cli/approve/understanding.js +95 -30
- package/dist/cli/approve/understanding.js.map +1 -1
- package/dist/cli/index.js +47 -11
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/dependencies.js +7 -0
- package/dist/cli/init/dependencies.js.map +1 -1
- package/dist/cli/init/templates.d.ts +1 -1
- package/dist/cli/init/templates.js +12 -8
- package/dist/cli/init/templates.js.map +1 -1
- package/dist/policy-packs/builtin/understanding-before-execution-runtime.d.ts +25 -2
- package/dist/policy-packs/builtin/understanding-before-execution-runtime.js +17 -4
- package/dist/policy-packs/builtin/understanding-before-execution-runtime.js.map +1 -1
- package/package.json +1 -1
|
@@ -136,15 +136,48 @@ function findLatestParseError(dir, sessionId) {
|
|
|
136
136
|
}
|
|
137
137
|
return null;
|
|
138
138
|
}
|
|
139
|
-
function rewriteReportApproved(filePath, approvedAt, approvedBy) {
|
|
139
|
+
function rewriteReportApproved(filePath, approvedAt, approvedBy, sessionId) {
|
|
140
140
|
const raw = fs.readFileSync(filePath, "utf8");
|
|
141
141
|
const parsed = JSON.parse(raw);
|
|
142
142
|
const previousStatus = typeof parsed["approvalStatus"] === "string" ? parsed["approvalStatus"] : null;
|
|
143
143
|
parsed["approvalStatus"] = "approved";
|
|
144
144
|
parsed["approvedAt"] = approvedAt;
|
|
145
145
|
parsed["approvedBy"] = approvedBy;
|
|
146
|
+
// Stamp the session id when the report lacks one (older Stop-hook
|
|
147
|
+
// package versions write reports without a `sessionId` field). This
|
|
148
|
+
// binds the report to the session that approved it, so every later
|
|
149
|
+
// lookup strict-matches it and the sessionId-null tolerant fallback
|
|
150
|
+
// can never re-adopt it for a different session (harness/0dce3880
|
|
151
|
+
// friction #1). A report that already carries a sessionId is left
|
|
152
|
+
// untouched — it is not this command's place to rewrite identity.
|
|
153
|
+
let sessionIdStamped = false;
|
|
154
|
+
const existing = parsed["sessionId"];
|
|
155
|
+
if (typeof existing !== "string" || existing.length === 0) {
|
|
156
|
+
parsed["sessionId"] = sessionId;
|
|
157
|
+
sessionIdStamped = true;
|
|
158
|
+
}
|
|
146
159
|
atomicWriteFile(filePath, `${JSON.stringify(parsed, null, 2)}\n`);
|
|
147
|
-
return { previousStatus };
|
|
160
|
+
return { previousStatus, sessionIdStamped };
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Normalise a list of task ids supplied via `opts.tasks` (or the CLI's
|
|
164
|
+
* variadic `--task`). Each entry is comma-split (so `--task a,b` and
|
|
165
|
+
* `--task a b` are equivalent), trimmed, blank entries dropped, and the
|
|
166
|
+
* result de-duplicated while preserving first-seen order.
|
|
167
|
+
*/
|
|
168
|
+
export function dedupeTaskIds(raw) {
|
|
169
|
+
const seen = new Set();
|
|
170
|
+
const out = [];
|
|
171
|
+
for (const entry of raw) {
|
|
172
|
+
for (const part of entry.split(",")) {
|
|
173
|
+
const id = part.trim();
|
|
174
|
+
if (id.length === 0 || seen.has(id))
|
|
175
|
+
continue;
|
|
176
|
+
seen.add(id);
|
|
177
|
+
out.push(id);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return out;
|
|
148
181
|
}
|
|
149
182
|
export async function approveUnderstanding(opts = {}) {
|
|
150
183
|
// harness.generated/ holds the `.pending-approval` staging file (the
|
|
@@ -182,6 +215,7 @@ export async function approveUnderstanding(opts = {}) {
|
|
|
182
215
|
defaultReportsDir(path.dirname(resolvePaths(opts).base));
|
|
183
216
|
let sessionId = "";
|
|
184
217
|
let sessionSource = "flag";
|
|
218
|
+
let newestReportPath;
|
|
185
219
|
if (typeof opts.session === "string" && opts.session.length > 0) {
|
|
186
220
|
sessionId = opts.session;
|
|
187
221
|
sessionSource = "flag";
|
|
@@ -203,21 +237,36 @@ export async function approveUnderstanding(opts = {}) {
|
|
|
203
237
|
sessionSource = "pending-approval";
|
|
204
238
|
}
|
|
205
239
|
else {
|
|
206
|
-
|
|
240
|
+
// Tier 5: guess the session from the freshest persisted report.
|
|
241
|
+
// Restricted to `pending` reports. An `approved` / `expired`
|
|
242
|
+
// report belongs to a finished gate cycle (often a different
|
|
243
|
+
// session days ago); adopting its sessionId silently approves an
|
|
244
|
+
// unrelated session while the live one stays gated
|
|
245
|
+
// (harness/56f51f2b). A `pending` report is one the Stop hook
|
|
246
|
+
// just produced that no approval has consumed yet, so it is far
|
|
247
|
+
// more likely to be the current session's. This mirrors the
|
|
248
|
+
// `tolerantFallback: "uncompleted"` restriction PR #218 applied
|
|
249
|
+
// to the report-flip path below. The residual case — a stale
|
|
250
|
+
// session left a never-approved `pending` report — is caught by
|
|
251
|
+
// the loud tier-5 warning the CLI prints, which names the report
|
|
252
|
+
// file so the operator can verify before trusting the marker.
|
|
253
|
+
const newest = listPersistedReports(reportsDir).find((r) => r.sessionId !== null && r.approvalStatus === "pending");
|
|
207
254
|
if (newest && newest.sessionId !== null) {
|
|
208
255
|
sessionId = newest.sessionId;
|
|
209
256
|
sessionSource = "newest-report";
|
|
257
|
+
newestReportPath = newest.filePath;
|
|
210
258
|
}
|
|
211
259
|
}
|
|
212
260
|
}
|
|
213
261
|
if (sessionId === "") {
|
|
214
262
|
// Reaching here means: no --session flag, no $CLAUDE_SESSION_ID /
|
|
215
263
|
// $CODEX_SESSION_ID env, no staged `.pending-approval`, AND no
|
|
216
|
-
// persisted Understanding Report under <reportsDir>
|
|
217
|
-
// sessionId field.
|
|
218
|
-
// agent never produced a report
|
|
219
|
-
//
|
|
220
|
-
//
|
|
264
|
+
// `pending` persisted Understanding Report under <reportsDir>
|
|
265
|
+
// carries a sessionId field. Either the gate has never blocked this
|
|
266
|
+
// session and the agent never produced a report, or every report is
|
|
267
|
+
// already approved/expired or sessionId-null (tier 5 only adopts a
|
|
268
|
+
// fresh `pending` report). Spell out the retrieval paths so the
|
|
269
|
+
// operator does not have to dig through docs.
|
|
221
270
|
throw new HarnessExitError([
|
|
222
271
|
"no session id available. Pass --session <id>, or set $CLAUDE_SESSION_ID / $CODEX_SESSION_ID.",
|
|
223
272
|
"",
|
|
@@ -276,47 +325,54 @@ export async function approveUnderstanding(opts = {}) {
|
|
|
276
325
|
reason: `failed to write approval marker: ${err.message}`,
|
|
277
326
|
};
|
|
278
327
|
}
|
|
279
|
-
// Task-scoped
|
|
280
|
-
// harness/494fd1e5
|
|
281
|
-
//
|
|
282
|
-
// -
|
|
283
|
-
//
|
|
284
|
-
//
|
|
285
|
-
|
|
286
|
-
|
|
328
|
+
// Task-scoped markers (harness/1ee26e77 + v2 auto-resolve in
|
|
329
|
+
// harness/494fd1e5 + multi-task batch in harness/0dce3880). Written
|
|
330
|
+
// alongside the session marker. Resolution precedence:
|
|
331
|
+
// - opts.tasks (explicit, multi) — pre-approve a whole batch, OR
|
|
332
|
+
// - opts.task (explicit, single, back-compat), OR
|
|
333
|
+
// - the active-claim file (source: "active-claim").
|
|
334
|
+
// A failure on any one id is surfaced loudly but does not abort the
|
|
335
|
+
// approve flow; the session marker still satisfies the gate as a
|
|
336
|
+
// fallback, and the other ids still get their markers.
|
|
337
|
+
let resolvedTaskIds = [];
|
|
287
338
|
let taskSource = "flag";
|
|
288
|
-
if (
|
|
289
|
-
|
|
339
|
+
if (opts.tasks && opts.tasks.length > 0) {
|
|
340
|
+
resolvedTaskIds = dedupeTaskIds(opts.tasks);
|
|
341
|
+
taskSource = "flag";
|
|
342
|
+
}
|
|
343
|
+
else if (typeof opts.task === "string" && opts.task.length > 0) {
|
|
344
|
+
resolvedTaskIds = [opts.task];
|
|
290
345
|
taskSource = "flag";
|
|
291
346
|
}
|
|
292
347
|
else {
|
|
293
348
|
const fromFile = readActiveClaim(generatedDir);
|
|
294
349
|
if (fromFile !== null) {
|
|
295
|
-
|
|
350
|
+
resolvedTaskIds = [fromFile];
|
|
296
351
|
taskSource = "active-claim";
|
|
297
352
|
}
|
|
298
353
|
}
|
|
299
|
-
|
|
354
|
+
const taskMarkers = [];
|
|
355
|
+
for (const taskId of resolvedTaskIds) {
|
|
300
356
|
try {
|
|
301
|
-
const filePath = writeTaskApprovalMarker(generatedDir,
|
|
357
|
+
const filePath = writeTaskApprovalMarker(generatedDir, taskId, {
|
|
302
358
|
approvedAt: approvedAtMarker,
|
|
303
359
|
approvedBy: approvedByMarker,
|
|
304
360
|
});
|
|
305
|
-
|
|
361
|
+
taskMarkers.push({
|
|
306
362
|
ok: true,
|
|
307
|
-
taskId
|
|
363
|
+
taskId,
|
|
308
364
|
filePath,
|
|
309
365
|
approvedAt: approvedAtMarker,
|
|
310
366
|
source: taskSource,
|
|
311
|
-
};
|
|
367
|
+
});
|
|
312
368
|
}
|
|
313
369
|
catch (err) {
|
|
314
|
-
|
|
370
|
+
taskMarkers.push({
|
|
315
371
|
ok: false,
|
|
316
|
-
taskId
|
|
372
|
+
taskId,
|
|
317
373
|
reason: `failed to write task marker: ${err.message}`,
|
|
318
374
|
source: taskSource,
|
|
319
|
-
};
|
|
375
|
+
});
|
|
320
376
|
}
|
|
321
377
|
}
|
|
322
378
|
const tag = approvedLedgerTagFor(sessionId);
|
|
@@ -327,7 +383,14 @@ export async function approveUnderstanding(opts = {}) {
|
|
|
327
383
|
// resolved up front (alongside session-id tier-5 lookup) so both
|
|
328
384
|
// paths agree on the same directory.
|
|
329
385
|
const reports = listPersistedReports(reportsDir);
|
|
330
|
-
|
|
386
|
+
// `tolerantFallback: "uncompleted"` — never adopt a sessionId-null
|
|
387
|
+
// report that is already `approved` / `expired`. Such a report is
|
|
388
|
+
// from a prior, finished cycle (often a different task days ago);
|
|
389
|
+
// flipping it would bind the live session to a stale, unrelated
|
|
390
|
+
// Understanding Report (harness/0dce3880 friction #1).
|
|
391
|
+
const latest = findLatestReportForSession(reports, sessionId, {
|
|
392
|
+
tolerantFallback: "uncompleted",
|
|
393
|
+
});
|
|
331
394
|
let persistedReport;
|
|
332
395
|
if (!latest) {
|
|
333
396
|
// When no matching report exists, look at the sibling parse-errors
|
|
@@ -355,12 +418,13 @@ export async function approveUnderstanding(opts = {}) {
|
|
|
355
418
|
const approvedAt = (opts.now ?? new Date()).toISOString();
|
|
356
419
|
const approvedBy = opts.approvedBy ?? DEFAULT_APPROVED_BY;
|
|
357
420
|
try {
|
|
358
|
-
const { previousStatus } = rewriteReportApproved(latest.filePath, approvedAt, approvedBy);
|
|
421
|
+
const { previousStatus, sessionIdStamped } = rewriteReportApproved(latest.filePath, approvedAt, approvedBy, sessionId);
|
|
359
422
|
persistedReport = {
|
|
360
423
|
ok: true,
|
|
361
424
|
filePath: latest.filePath,
|
|
362
425
|
previousStatus,
|
|
363
426
|
approvedAt,
|
|
427
|
+
sessionIdStamped,
|
|
364
428
|
};
|
|
365
429
|
}
|
|
366
430
|
catch (err) {
|
|
@@ -380,8 +444,9 @@ export async function approveUnderstanding(opts = {}) {
|
|
|
380
444
|
return {
|
|
381
445
|
sessionId,
|
|
382
446
|
sessionSource,
|
|
447
|
+
...(newestReportPath !== undefined ? { newestReportPath } : {}),
|
|
383
448
|
marker: markerResult,
|
|
384
|
-
|
|
449
|
+
taskMarkers,
|
|
385
450
|
ledger: ledgerResult.ok
|
|
386
451
|
? { ok: true, tag }
|
|
387
452
|
: { ok: false, tag, reason: ledgerResult.reason },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"understanding.js","sourceRoot":"","sources":["../../../src/cli/approve/understanding.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"understanding.js","sourceRoot":"","sources":["../../../src/cli/approve/understanding.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -873,7 +873,7 @@ export function buildProgram(opts = {}) {
|
|
|
873
873
|
.option("--config <path>", "manifest path (default: ~/.harness/harness.yaml; legacy fallback ~/.claude/harness.yaml)")
|
|
874
874
|
.option("--project <name>", "apply per-project overrides")
|
|
875
875
|
.option("--session <id>", "explicit session id (default: $CLAUDE_SESSION_ID)")
|
|
876
|
-
.option("--task <
|
|
876
|
+
.option("--task <ids...>", "agent-tasks task id(s) — writes one task-scoped marker per id. Pass several (--task a b c, or --task a,b,c) to pre-approve a whole batch in a single operator action so a multi-task session does not re-prompt per task_finish (harness/1ee26e77, harness/0dce3880)")
|
|
877
877
|
.option("--reports-dir <path>", "override the persisted-report directory (default: ./.understanding-gate/reports)")
|
|
878
878
|
.option("--approved-by <actor>", "actor to record on the persisted report (default: harness-approve-cli)")
|
|
879
879
|
.action(async (options) => {
|
|
@@ -884,8 +884,10 @@ export function buildProgram(opts = {}) {
|
|
|
884
884
|
cliOpts.project = options.project;
|
|
885
885
|
if (options.session)
|
|
886
886
|
cliOpts.session = options.session;
|
|
887
|
-
|
|
888
|
-
|
|
887
|
+
// Commander's variadic `<ids...>` yields a string[]; comma-split
|
|
888
|
+
// and de-dup happen inside approveUnderstanding (dedupeTaskIds).
|
|
889
|
+
if (options.task && options.task.length > 0)
|
|
890
|
+
cliOpts.tasks = options.task;
|
|
889
891
|
if (options.reportsDir)
|
|
890
892
|
cliOpts.reportsDir = options.reportsDir;
|
|
891
893
|
if (options.approvedBy)
|
|
@@ -901,9 +903,29 @@ export function buildProgram(opts = {}) {
|
|
|
901
903
|
: result.sessionSource === "env-codex"
|
|
902
904
|
? " (from $CODEX_SESSION_ID)"
|
|
903
905
|
: result.sessionSource === "newest-report"
|
|
904
|
-
? " (
|
|
906
|
+
? " (GUESSED from the newest pending Understanding Report)"
|
|
905
907
|
: "";
|
|
906
908
|
lines.push(`session: ${result.sessionId}${sourceNote}`);
|
|
909
|
+
if (result.sessionSource === "newest-report") {
|
|
910
|
+
// Tier-5 is a guess: no --session, no env var, no gate-staged
|
|
911
|
+
// .pending-approval. It is restricted to `pending` reports
|
|
912
|
+
// (harness/56f51f2b), but a stale session that left a never-
|
|
913
|
+
// approved report can still be picked. Name the report file
|
|
914
|
+
// so the operator can open it and confirm the id before
|
|
915
|
+
// trusting a marker that may approve the wrong session.
|
|
916
|
+
lines.push("");
|
|
917
|
+
lines.push("⚠ WARNING: the session id was GUESSED, not confirmed. There was no");
|
|
918
|
+
lines.push(" --session flag, no $CLAUDE_SESSION_ID / $CODEX_SESSION_ID, and no");
|
|
919
|
+
lines.push(" gate-staged .pending-approval, so it was read from the newest pending");
|
|
920
|
+
lines.push(" Understanding Report:");
|
|
921
|
+
if (result.newestReportPath) {
|
|
922
|
+
lines.push(` ${result.newestReportPath}`);
|
|
923
|
+
}
|
|
924
|
+
lines.push(" If that is not your live session, the marker above approves the wrong");
|
|
925
|
+
lines.push(" session and the gate stays blocked. Confirm the id matches the running");
|
|
926
|
+
lines.push(" agent ($CLAUDE_SESSION_ID / $CODEX_SESSION_ID); if it differs, re-run");
|
|
927
|
+
lines.push(" with --session <live-id>.");
|
|
928
|
+
}
|
|
907
929
|
if (result.marker.ok) {
|
|
908
930
|
lines.push(`marker: ✓ ${result.marker.filePath} (canonical gate signal)`);
|
|
909
931
|
}
|
|
@@ -911,18 +933,22 @@ export function buildProgram(opts = {}) {
|
|
|
911
933
|
lines.push(`marker: ✗ FAILED (${result.marker.reason})`);
|
|
912
934
|
lines.push(" the gate WILL block the next tool call until the marker exists.");
|
|
913
935
|
}
|
|
914
|
-
|
|
915
|
-
const sourceNote =
|
|
936
|
+
for (const tm of result.taskMarkers) {
|
|
937
|
+
const sourceNote = tm.source === "active-claim"
|
|
916
938
|
? " (auto-resolved from active-claim file)"
|
|
917
939
|
: "";
|
|
918
|
-
if (
|
|
919
|
-
lines.push(`task: ✓ ${
|
|
940
|
+
if (tm.ok) {
|
|
941
|
+
lines.push(`task: ✓ ${tm.filePath} (task-scoped, expires when this task ends)${sourceNote}`);
|
|
920
942
|
}
|
|
921
943
|
else {
|
|
922
|
-
lines.push(`task: ✗ FAILED for task ${
|
|
944
|
+
lines.push(`task: ✗ FAILED for task ${tm.taskId}${sourceNote} (${tm.reason})`);
|
|
923
945
|
lines.push(" the session marker above is still in effect; the task-scoped path is degraded.");
|
|
924
946
|
}
|
|
925
947
|
}
|
|
948
|
+
if (result.taskMarkers.length > 1) {
|
|
949
|
+
const okCount = result.taskMarkers.filter((t) => t.ok).length;
|
|
950
|
+
lines.push(` (${okCount}/${result.taskMarkers.length} task markers written — the batch is pre-approved)`);
|
|
951
|
+
}
|
|
926
952
|
if (result.ledger.ok) {
|
|
927
953
|
lines.push(`ledger: ✓ wrote ${result.ledger.tag} (audit only)`);
|
|
928
954
|
}
|
|
@@ -931,7 +957,10 @@ export function buildProgram(opts = {}) {
|
|
|
931
957
|
}
|
|
932
958
|
if (result.persistedReport.ok) {
|
|
933
959
|
const prev = result.persistedReport.previousStatus ?? "<missing>";
|
|
934
|
-
|
|
960
|
+
const stampNote = result.persistedReport.sessionIdStamped
|
|
961
|
+
? "; stamped sessionId"
|
|
962
|
+
: "";
|
|
963
|
+
lines.push(`report: ✓ ${result.persistedReport.filePath} (approvalStatus: ${prev} → approved${stampNote})`);
|
|
935
964
|
}
|
|
936
965
|
else {
|
|
937
966
|
lines.push(`report: ⚠ skipped (${result.persistedReport.reason})`);
|
|
@@ -1453,7 +1482,14 @@ export function buildProgram(opts = {}) {
|
|
|
1453
1482
|
if (result.outcome === "target-conflict") {
|
|
1454
1483
|
throw new HarnessExitError("", EX_FAIL);
|
|
1455
1484
|
}
|
|
1456
|
-
})
|
|
1485
|
+
});
|
|
1486
|
+
// `harness pause` / `harness resume`: operator-only kill switch.
|
|
1487
|
+
// Sibling top-level commands: `pause` must start its own
|
|
1488
|
+
// `program.command(...)` statement. It was previously chained onto the
|
|
1489
|
+
// `migrate-home` block above, which (Commander's `.command()` returns
|
|
1490
|
+
// the new subcommand) registered it as `harness migrate-home pause`
|
|
1491
|
+
// and dropped it from top-level `harness --help`.
|
|
1492
|
+
program
|
|
1457
1493
|
.command("pause")
|
|
1458
1494
|
.description("Temporarily make all harness hooks dormant by writing a sentinel under harness.generated/. " +
|
|
1459
1495
|
"Operator-only (refuses when $CLAUDE_SESSION_ID is set or stdin is non-TTY). Intended for " +
|