@lannguyensi/harness 0.60.0 → 0.62.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 +64 -0
- package/README.md +1 -1
- package/dist/cli/apply/install-codex-config.d.ts +24 -7
- package/dist/cli/apply/install-codex-config.js +353 -81
- package/dist/cli/apply/install-codex-config.js.map +1 -1
- package/dist/cli/approve/understanding.d.ts +31 -6
- package/dist/cli/approve/understanding.js +197 -56
- package/dist/cli/approve/understanding.js.map +1 -1
- package/dist/cli/bounded-stdin.d.ts +40 -0
- package/dist/cli/bounded-stdin.js +111 -0
- package/dist/cli/bounded-stdin.js.map +1 -0
- package/dist/cli/doctor/settings-drift.js +12 -2
- package/dist/cli/doctor/settings-drift.js.map +1 -1
- package/dist/cli/gc/index.d.ts +6 -2
- package/dist/cli/gc/index.js +22 -7
- package/dist/cli/gc/index.js.map +1 -1
- package/dist/cli/index.js +15 -14
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/pack/auto-approve-path.js +39 -4
- package/dist/cli/pack/auto-approve-path.js.map +1 -1
- package/dist/cli/pack/hook-bootstrap.d.ts +59 -5
- package/dist/cli/pack/hook-bootstrap.js +67 -19
- package/dist/cli/pack/hook-bootstrap.js.map +1 -1
- package/dist/cli/pack/hook-branch-protection.d.ts +6 -0
- package/dist/cli/pack/hook-branch-protection.js +11 -2
- package/dist/cli/pack/hook-branch-protection.js.map +1 -1
- package/dist/cli/pack/hook-codex-pre-tool-use.d.ts +6 -0
- package/dist/cli/pack/hook-codex-pre-tool-use.js +20 -2
- package/dist/cli/pack/hook-codex-pre-tool-use.js.map +1 -1
- package/dist/cli/pack/hook-post-merge-gate.d.ts +6 -0
- package/dist/cli/pack/hook-post-merge-gate.js +17 -2
- package/dist/cli/pack/hook-post-merge-gate.js.map +1 -1
- package/dist/cli/pack/hook-pre-tool-use.d.ts +7 -0
- package/dist/cli/pack/hook-pre-tool-use.js +26 -4
- package/dist/cli/pack/hook-pre-tool-use.js.map +1 -1
- package/dist/cli/pack/hook-runtime-reality.d.ts +2 -0
- package/dist/cli/pack/hook-runtime-reality.js +48 -8
- package/dist/cli/pack/hook-runtime-reality.js.map +1 -1
- package/dist/cli/pack/hook-solution-acceptance-writeguard.d.ts +6 -0
- package/dist/cli/pack/hook-solution-acceptance-writeguard.js +11 -2
- package/dist/cli/pack/hook-solution-acceptance-writeguard.js.map +1 -1
- package/dist/cli/pack/hook-solution-acceptance.d.ts +6 -0
- package/dist/cli/pack/hook-solution-acceptance.js +11 -2
- package/dist/cli/pack/hook-solution-acceptance.js.map +1 -1
- package/dist/cli/pack/hook-subagent-start.d.ts +2 -0
- package/dist/cli/pack/hook-subagent-start.js +21 -4
- package/dist/cli/pack/hook-subagent-start.js.map +1 -1
- package/dist/cli/policy/intercept.d.ts +2 -0
- package/dist/cli/policy/intercept.js +57 -21
- package/dist/cli/policy/intercept.js.map +1 -1
- package/dist/cli/record/index.js +97 -21
- package/dist/cli/record/index.js.map +1 -1
- package/dist/cli/session-start/branch-check.js +4 -1
- package/dist/cli/session-start/branch-check.js.map +1 -1
- package/dist/cli/session-start/index.d.ts +0 -15
- package/dist/cli/session-start/index.js +4 -62
- package/dist/cli/session-start/index.js.map +1 -1
- package/dist/cli/session-start/shared-options.d.ts +15 -4
- package/dist/cli/session-start/shared-options.js +13 -15
- package/dist/cli/session-start/shared-options.js.map +1 -1
- package/dist/cli/session-start/stale-base-check.js +4 -1
- package/dist/cli/session-start/stale-base-check.js.map +1 -1
- package/dist/cli/session-start/toolchain-parity.js +4 -1
- package/dist/cli/session-start/toolchain-parity.js.map +1 -1
- package/dist/io/atomic-write.d.ts +37 -1
- package/dist/io/atomic-write.js +61 -8
- package/dist/io/atomic-write.js.map +1 -1
- package/dist/io/display-path.d.ts +11 -0
- package/dist/io/display-path.js +29 -0
- package/dist/io/display-path.js.map +1 -0
- package/dist/policy-packs/builtin/post-merge-gate.js +5 -2
- package/dist/policy-packs/builtin/post-merge-gate.js.map +1 -1
- package/dist/policy-packs/builtin/understanding-before-execution/index.d.ts +1 -1
- package/dist/policy-packs/builtin/understanding-before-execution/index.js +1 -1
- package/dist/policy-packs/builtin/understanding-before-execution/index.js.map +1 -1
- package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.d.ts +127 -16
- package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.js +192 -45
- package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.js.map +1 -1
- package/dist/policy-packs/builtin/understanding-before-execution.d.ts +3 -2
- package/dist/policy-packs/builtin/understanding-before-execution.js +4 -1
- package/dist/policy-packs/builtin/understanding-before-execution.js.map +1 -1
- package/dist/runtime/deletion-target-resolve.js +24 -1
- package/dist/runtime/deletion-target-resolve.js.map +1 -1
- package/dist/runtime/destructive-shell-floor.js +15 -1
- package/dist/runtime/destructive-shell-floor.js.map +1 -1
- package/dist/runtime/shell-word.d.ts +26 -0
- package/dist/runtime/shell-word.js +94 -7
- package/dist/runtime/shell-word.js.map +1 -1
- package/package.json +1 -1
|
@@ -17,7 +17,8 @@ import * as fs from "node:fs";
|
|
|
17
17
|
import * as os from "node:os";
|
|
18
18
|
import * as path from "node:path";
|
|
19
19
|
import { atomicWriteFile } from "../../io/atomic-write.js";
|
|
20
|
-
import {
|
|
20
|
+
import { escapeForDisplay } from "../../io/display-path.js";
|
|
21
|
+
import { approvedLedgerTagFor, defaultReportsDir, hashReportFile, listPersistedReportsBoundedWithSkips, MAX_HASHED_REPORT_BYTES, readReportFileBounded, readActiveClaim, selectReportForSession, TOLERANT_FALLBACK_MAX_AGE_MS, writeApprovalMarker, writeTaskApprovalMarker, } from "../../policy-packs/builtin/understanding-before-execution-runtime.js";
|
|
21
22
|
import { PACK_NAME as UNDERSTANDING_PACK_NAME, resolveMode, toPackageMode, } from "../../policy-packs/builtin/understanding-before-execution.js";
|
|
22
23
|
import { addLedgerFact } from "../../runtime/ledger-add.js";
|
|
23
24
|
import { clearPendingApproval, resolveGeneratedDir, } from "../../runtime/pending-approval.js";
|
|
@@ -152,19 +153,18 @@ export function findLatestParseError(dir, sessionId) {
|
|
|
152
153
|
catch {
|
|
153
154
|
continue;
|
|
154
155
|
}
|
|
155
|
-
if (!stat.isFile())
|
|
156
|
-
continue;
|
|
157
156
|
candidates.push({ filePath: full, mtimeMs: stat.mtimeMs });
|
|
158
157
|
}
|
|
159
158
|
candidates.sort((a, b) => b.mtimeMs - a.mtimeMs);
|
|
160
159
|
for (const cand of candidates) {
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
160
|
+
// Agent-writable dir, reached by both hooks on the no-marker path: the stat
|
|
161
|
+
// above only orders the candidates; the bounded reader's descriptor decides
|
|
162
|
+
// type and size, so a FIFO, a huge or a growing log is skipped like an
|
|
163
|
+
// unreadable one.
|
|
164
|
+
const bounded = readReportFileBounded(cand.filePath);
|
|
165
|
+
if (!bounded.ok)
|
|
166
166
|
continue;
|
|
167
|
-
|
|
167
|
+
const raw = bounded.raw;
|
|
168
168
|
// The standalone package writes a JSON header followed by `--- raw ---`
|
|
169
169
|
// and the original assistant text. Read the header for a `message`,
|
|
170
170
|
// `reason`, or `missing` field; fall back to the first line if the
|
|
@@ -291,14 +291,54 @@ export function validatePersistedReport(parsed) {
|
|
|
291
291
|
return { ok: true, mode };
|
|
292
292
|
}
|
|
293
293
|
/**
|
|
294
|
-
* Exported (agent-tasks/74b4b17d) so the PreToolUse hook's auto-approval
|
|
295
|
-
*
|
|
296
|
-
*
|
|
297
|
-
*
|
|
298
|
-
*
|
|
294
|
+
* Exported (agent-tasks/74b4b17d) so the PreToolUse hook's auto-approval path
|
|
295
|
+
* CONSUMES the report it used through the identical rewrite this CLI performs
|
|
296
|
+
* (ADR Option A condition 5). `boundedRaw`: the text that path already read
|
|
297
|
+
* through the bounded reader, so the consume never re-reads the agent-writable
|
|
298
|
+
* path (a retargeted symlink); `harness approve understanding` reads by path
|
|
299
|
+
* through the same bounded reader.
|
|
300
|
+
*/
|
|
301
|
+
export function rewriteReportApproved(filePath, approvedAt, approvedBy, sessionId, boundedRaw) {
|
|
302
|
+
let raw = boundedRaw;
|
|
303
|
+
if (raw === undefined) {
|
|
304
|
+
// Bounded like every other read of this agent-writable directory: the path
|
|
305
|
+
// can be swapped for an oversized file or a FIFO after the listing.
|
|
306
|
+
const read = readReportFileBounded(filePath, { noFollow: true });
|
|
307
|
+
if (!read.ok)
|
|
308
|
+
throw new Error(`report ${read.detail}`);
|
|
309
|
+
raw = read.raw;
|
|
310
|
+
}
|
|
311
|
+
const { text, previousStatus, sessionIdStamped } = renderApprovedReport(raw, approvedAt, approvedBy, sessionId);
|
|
312
|
+
// Temp file plus rename: the rename replaces the directory entry (a symlink
|
|
313
|
+
// included) and never opens whatever a retargeted symlink points at.
|
|
314
|
+
atomicWriteFile(filePath, text);
|
|
315
|
+
return { previousStatus, sessionIdStamped };
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Thrown by {@link renderApprovedReport} when the approved report, once
|
|
319
|
+
* pretty-printed with its approval fields, is over `MAX_HASHED_REPORT_BYTES`.
|
|
320
|
+
* The gate-read scan reads no file over that cap, so a marker signed for such
|
|
321
|
+
* a report would deny on every call and neither re-approval nor `--force`
|
|
322
|
+
* could clear it.
|
|
299
323
|
*/
|
|
300
|
-
export
|
|
301
|
-
|
|
324
|
+
export class ApprovedReportTooLargeError extends Error {
|
|
325
|
+
bytes;
|
|
326
|
+
constructor(bytes) {
|
|
327
|
+
super(`the approved report would be ${bytes} bytes, over the ${MAX_HASHED_REPORT_BYTES}-byte cap ` +
|
|
328
|
+
"for hashing its content, so the gate could not match it");
|
|
329
|
+
this.bytes = bytes;
|
|
330
|
+
this.name = "ApprovedReportTooLargeError";
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* The text `rewriteReportApproved` writes: the report with its approval
|
|
335
|
+
* fields stamped and pretty-printed. Pure, so a producer can check the size
|
|
336
|
+
* of the rewritten bytes before it signs a marker or changes any file. Throws
|
|
337
|
+
* {@link ApprovedReportTooLargeError} when those bytes exceed
|
|
338
|
+
* `MAX_HASHED_REPORT_BYTES`: a report accepted just under the cap can cross
|
|
339
|
+
* it through the pretty-print and the added fields.
|
|
340
|
+
*/
|
|
341
|
+
export function renderApprovedReport(raw, approvedAt, approvedBy, sessionId) {
|
|
302
342
|
const parsed = JSON.parse(raw);
|
|
303
343
|
const previousStatus = typeof parsed["approvalStatus"] === "string" ? parsed["approvalStatus"] : null;
|
|
304
344
|
parsed["approvalStatus"] = "approved";
|
|
@@ -307,31 +347,31 @@ export function rewriteReportApproved(filePath, approvedAt, approvedBy, sessionI
|
|
|
307
347
|
// `expiredAt` and `expiredBy` are `expirePersistedReport`'s stamp for how a
|
|
308
348
|
// report reached "expired" (understanding-before-execution-runtime.ts); they
|
|
309
349
|
// describe that specific past state, not the report's current one.
|
|
310
|
-
// Approving a report that was previously expired must not let that
|
|
311
|
-
//
|
|
312
|
-
//
|
|
313
|
-
//
|
|
314
|
-
//
|
|
315
|
-
//
|
|
316
|
-
//
|
|
317
|
-
// adjacent noise.
|
|
350
|
+
// Approving a report that was previously expired must not let that stale
|
|
351
|
+
// timestamp survive into the new snapshot, or the persisted record becomes
|
|
352
|
+
// self-contradictory: {approvalStatus: "approved", expiredAt: ...}. Mirrors
|
|
353
|
+
// the same idiom in the standalone package's `withApprovalStatus`
|
|
354
|
+
// (agent-grounding PR #173, from the 5120938c review). `delete` (not
|
|
355
|
+
// `= undefined`) so `JSON.stringify` below drops the key entirely instead
|
|
356
|
+
// of serializing `"expiredAt": null`-adjacent noise.
|
|
318
357
|
delete parsed["expiredAt"];
|
|
319
358
|
delete parsed["expiredBy"];
|
|
320
|
-
// Stamp the session id when the report lacks one (older Stop-hook
|
|
321
|
-
//
|
|
322
|
-
//
|
|
323
|
-
//
|
|
324
|
-
//
|
|
325
|
-
// friction #1). A report that already carries a sessionId is left
|
|
326
|
-
// untouched — it is not this command's place to rewrite identity.
|
|
359
|
+
// Stamp the session id when the report lacks one (older Stop-hook package
|
|
360
|
+
// versions write reports without a `sessionId` field). This binds the report
|
|
361
|
+
// to the session that approved it, so every later lookup strict-matches it and
|
|
362
|
+
// the sessionId-null fallback can never re-adopt it for a different session
|
|
363
|
+
// (harness/0dce3880 friction #1). An existing sessionId is left untouched.
|
|
327
364
|
let sessionIdStamped = false;
|
|
328
365
|
const existing = parsed["sessionId"];
|
|
329
366
|
if (typeof existing !== "string" || existing.length === 0) {
|
|
330
367
|
parsed["sessionId"] = sessionId;
|
|
331
368
|
sessionIdStamped = true;
|
|
332
369
|
}
|
|
333
|
-
|
|
334
|
-
|
|
370
|
+
const text = `${JSON.stringify(parsed, null, 2)}\n`;
|
|
371
|
+
const bytes = Buffer.byteLength(text);
|
|
372
|
+
if (bytes > MAX_HASHED_REPORT_BYTES)
|
|
373
|
+
throw new ApprovedReportTooLargeError(bytes);
|
|
374
|
+
return { text, previousStatus, sessionIdStamped };
|
|
335
375
|
}
|
|
336
376
|
/**
|
|
337
377
|
* Normalise a list of task ids supplied via `opts.tasks` (or the CLI's
|
|
@@ -353,6 +393,40 @@ export function dedupeTaskIds(raw) {
|
|
|
353
393
|
}
|
|
354
394
|
return out;
|
|
355
395
|
}
|
|
396
|
+
/**
|
|
397
|
+
* A reason `hashReportFile` gives for a report whose CONTENT cannot be hashed
|
|
398
|
+
* (`--force` may sign a marker without a content binding over it), as opposed
|
|
399
|
+
* to one that could not be read within the bound (oversized, not a regular
|
|
400
|
+
* file, a link, unreadable, growing), which `--force` never overrides.
|
|
401
|
+
*/
|
|
402
|
+
function isContentReason(reason) {
|
|
403
|
+
return reason === "too-deep" || reason === "not-json-object";
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* The reports directory is writable by the gated agent, so `harness approve
|
|
407
|
+
* understanding` lists it through the bounded reader (one `O_NOFOLLOW` open
|
|
408
|
+
* and `fstat` per entry, never a read past the size cap) and refuses while any `*.json`
|
|
409
|
+
* entry cannot be read as a report: oversized, a FIFO or other non-regular
|
|
410
|
+
* file, a symbolic link, unreadable, or growing. Refusing, rather than
|
|
411
|
+
* leaving the entry out, keeps the approval from binding an older report
|
|
412
|
+
* while a newer one is hidden from it. Thrown before any side effect, so
|
|
413
|
+
* no marker, ledger tag or report flip is written; `--force` does not
|
|
414
|
+
* override it (it overrides report content validation only).
|
|
415
|
+
*/
|
|
416
|
+
function refuseSkippedReports(skipped, reportsDir) {
|
|
417
|
+
if (skipped.length === 0)
|
|
418
|
+
return;
|
|
419
|
+
const lines = skipped.map((s) => ` ${escapeForDisplay(s.filePath)}: ${s.detail}`);
|
|
420
|
+
throw new HarnessExitError([
|
|
421
|
+
`refusing to approve: ${skipped.length === 1 ? "an entry" : `${skipped.length} entries`} in the reports directory ` +
|
|
422
|
+
`cannot be read as a report, so approval cannot tell which report it would bind:`,
|
|
423
|
+
...lines,
|
|
424
|
+
"",
|
|
425
|
+
`Remove or move ${skipped.length === 1 ? "that file" : "those files"} out of ${reportsDir}, then re-run ` +
|
|
426
|
+
"`harness approve understanding`. No approval marker, ledger tag or report change was written.",
|
|
427
|
+
"(`harness gc` lists such entries too and leaves them in place.)",
|
|
428
|
+
].join("\n"), EX_FAIL);
|
|
429
|
+
}
|
|
356
430
|
export async function approveUnderstanding(opts = {}) {
|
|
357
431
|
// harness.generated/ holds the `.pending-approval` staging file (the
|
|
358
432
|
// third resolution tier below) and is the directory this command cleans
|
|
@@ -393,6 +467,9 @@ export async function approveUnderstanding(opts = {}) {
|
|
|
393
467
|
// HARNESS_ALLOW_REAL_GENERATED_DIR loader guard.
|
|
394
468
|
const reportsDir = opts.reportsDir ??
|
|
395
469
|
defaultReportsDir(path.dirname(resolvePaths(opts).base));
|
|
470
|
+
// Refuse a planted entry before anything else: the session-id fallback
|
|
471
|
+
// below and the report lookup further down both list this directory.
|
|
472
|
+
refuseSkippedReports(listPersistedReportsBoundedWithSkips(reportsDir, { refuseSymlinks: true }).skipped, reportsDir);
|
|
396
473
|
const resolved = resolveApprovalSessionId({
|
|
397
474
|
session: opts.session,
|
|
398
475
|
generatedDir,
|
|
@@ -410,7 +487,9 @@ export async function approveUnderstanding(opts = {}) {
|
|
|
410
487
|
// the loud newest-report warning the CLI prints, which names the report
|
|
411
488
|
// file so the operator can verify before trusting the marker.
|
|
412
489
|
newestReportFallback: () => {
|
|
413
|
-
const newest =
|
|
490
|
+
const newest = listPersistedReportsBoundedWithSkips(reportsDir, {
|
|
491
|
+
refuseSymlinks: true,
|
|
492
|
+
}).reports.find((r) => r.sessionId !== null && r.approvalStatus === "pending");
|
|
414
493
|
if (newest && newest.sessionId !== null) {
|
|
415
494
|
return { sessionId: newest.sessionId, filePath: newest.filePath };
|
|
416
495
|
}
|
|
@@ -523,7 +602,11 @@ export async function approveUnderstanding(opts = {}) {
|
|
|
523
602
|
// weeks-old sessionId-less leftover from being adopted, validated,
|
|
524
603
|
// and stamped as if it were the live session's report when the
|
|
525
604
|
// producer Stop hook silently failed (harness-discovery C1).
|
|
526
|
-
|
|
605
|
+
// Listed again here (the stdin capture above may have written a report);
|
|
606
|
+
// a planted entry that appeared since the first listing is refused too.
|
|
607
|
+
const listing = listPersistedReportsBoundedWithSkips(reportsDir, { refuseSymlinks: true });
|
|
608
|
+
refuseSkippedReports(listing.skipped, reportsDir);
|
|
609
|
+
const reports = listing.reports;
|
|
527
610
|
const selection = selectReportForSession(reports, sessionId, {
|
|
528
611
|
tolerantFallback: "uncompleted",
|
|
529
612
|
maxFallbackAgeMs: TOLERANT_FALLBACK_MAX_AGE_MS,
|
|
@@ -536,13 +619,30 @@ export async function approveUnderstanding(opts = {}) {
|
|
|
536
619
|
}
|
|
537
620
|
else {
|
|
538
621
|
let parsed = null;
|
|
539
|
-
|
|
540
|
-
|
|
622
|
+
// Bounded read, not following a symbolic link: the listing above saw the
|
|
623
|
+
// file within the cap, but the path can be swapped for an oversized file,
|
|
624
|
+
// a FIFO or a link since.
|
|
625
|
+
const reread = readReportFileBounded(latest.filePath, { noFollow: true });
|
|
626
|
+
if (reread.ok) {
|
|
627
|
+
try {
|
|
628
|
+
parsed = JSON.parse(reread.raw);
|
|
629
|
+
}
|
|
630
|
+
catch {
|
|
631
|
+
parsed = null;
|
|
632
|
+
}
|
|
541
633
|
}
|
|
542
|
-
|
|
543
|
-
|
|
634
|
+
if (!reread.ok) {
|
|
635
|
+
// Enforced even under --force: a report that cannot be read within the
|
|
636
|
+
// bound has no content to bind, and --force never signs a marker over
|
|
637
|
+
// one (it overrides content validation only).
|
|
638
|
+
validation = {
|
|
639
|
+
ok: false,
|
|
640
|
+
field: "report",
|
|
641
|
+
reason: `${reread.detail}, so the approval could not bind it`,
|
|
642
|
+
enforced: true,
|
|
643
|
+
};
|
|
544
644
|
}
|
|
545
|
-
if (!parsed) {
|
|
645
|
+
else if (!parsed) {
|
|
546
646
|
validation = { skipped: true };
|
|
547
647
|
}
|
|
548
648
|
else {
|
|
@@ -551,17 +651,19 @@ export async function approveUnderstanding(opts = {}) {
|
|
|
551
651
|
// A report the canonical hash cannot cover (larger than the size cap
|
|
552
652
|
// the gate reads, not a regular file, nested too deeply) would sign a
|
|
553
653
|
// marker whose `reportContentHash` is null, i.e. one the gate-read
|
|
554
|
-
// content check never applies to, so it fails validation instead
|
|
555
|
-
//
|
|
556
|
-
//
|
|
654
|
+
// content check never applies to, so it fails validation instead.
|
|
655
|
+
// `--force` overrides only a content reason (too deep, not a JSON
|
|
656
|
+
// object); a size, type or read failure is enforced whatever the flag
|
|
657
|
+
// says. `hashReportFile` reads the file exactly as the gate-read scan
|
|
658
|
+
// does, except that it does not follow a symbolic link.
|
|
557
659
|
if (validation.ok) {
|
|
558
|
-
const hashed = hashReportFile(latest.filePath);
|
|
660
|
+
const hashed = hashReportFile(latest.filePath, { noFollow: true });
|
|
559
661
|
if (!hashed.ok) {
|
|
560
662
|
validation = {
|
|
561
663
|
ok: false,
|
|
562
664
|
field: "report",
|
|
563
665
|
reason: `${hashed.detail}, so the approval could not bind it`,
|
|
564
|
-
enforced: !opts.force,
|
|
666
|
+
enforced: !isContentReason(hashed.reason) || !opts.force,
|
|
565
667
|
};
|
|
566
668
|
}
|
|
567
669
|
}
|
|
@@ -658,16 +760,55 @@ export async function approveUnderstanding(opts = {}) {
|
|
|
658
760
|
// time (`verifyApprovedReportHash`, task fa423e9b) and refuse the marker
|
|
659
761
|
// when none is left. null when no persisted report was resolved or it
|
|
660
762
|
// cannot be read as a JSON object (validation skipped above, nothing to
|
|
661
|
-
// bind), or when
|
|
662
|
-
//
|
|
663
|
-
//
|
|
664
|
-
|
|
763
|
+
// bind), or when its content cannot be hashed: nested too deeply or not a
|
|
764
|
+
// JSON object (reachable only under --force: the validation above refuses
|
|
765
|
+
// the first otherwise). A report larger than the size cap, not a regular
|
|
766
|
+
// file or a link never gets here: the validation above enforces that
|
|
767
|
+
// refusal under --force too, and the check below repeats it for a swap
|
|
768
|
+
// since.
|
|
769
|
+
let reportContentHash = null;
|
|
770
|
+
if (latest) {
|
|
771
|
+
const hashed = hashReportFile(latest.filePath, { noFollow: true });
|
|
772
|
+
if (hashed.ok) {
|
|
773
|
+
reportContentHash = hashed.hash;
|
|
774
|
+
}
|
|
775
|
+
else if (!isContentReason(hashed.reason)) {
|
|
776
|
+
// Swapped for an oversized file, a FIFO or a link after the validation
|
|
777
|
+
// above read it: refuse before any marker, ledger tag or report flip is
|
|
778
|
+
// written, `--force` or not (the validation above enforces the same).
|
|
779
|
+
throw new HarnessExitError(`refusing to approve: report ${escapeForDisplay(latest.filePath)} ${hashed.detail} ` +
|
|
780
|
+
"since it was validated, so the approval cannot bind it. No approval marker, " +
|
|
781
|
+
"ledger tag or report change was written; re-run `harness approve understanding`.", EX_FAIL);
|
|
782
|
+
}
|
|
783
|
+
}
|
|
665
784
|
// Write the canonical approval marker first. The gate consults this
|
|
666
785
|
// file (not the ledger) since agent-tasks/88ca4bb3 closed the self-
|
|
667
786
|
// approval backdoor: the agent has direct MCP access to the ledger,
|
|
668
787
|
// but no path to write a file under harness.generated/.
|
|
669
788
|
const approvedAtMarker = (opts.now ?? new Date()).toISOString();
|
|
670
789
|
const approvedByMarker = opts.approvedBy ?? DEFAULT_APPROVED_BY;
|
|
790
|
+
// The rewrite below pretty-prints the report and adds its approval fields,
|
|
791
|
+
// which can carry a report accepted just under the size cap over it. The
|
|
792
|
+
// gate-read scan reads no file over the cap, so the marker signed here would
|
|
793
|
+
// deny on every call, and neither re-approval nor --force could clear it.
|
|
794
|
+
// Render the rewrite first and refuse on its bytes, before any marker,
|
|
795
|
+
// ledger tag or report change is written, `--force` or not.
|
|
796
|
+
if (latest) {
|
|
797
|
+
const current = readReportFileBounded(latest.filePath, { noFollow: true });
|
|
798
|
+
if (current.ok) {
|
|
799
|
+
try {
|
|
800
|
+
renderApprovedReport(current.raw, approvedAtMarker, approvedByMarker, sessionId);
|
|
801
|
+
}
|
|
802
|
+
catch (err) {
|
|
803
|
+
if (err instanceof ApprovedReportTooLargeError) {
|
|
804
|
+
throw new HarnessExitError(`refusing to approve: report ${escapeForDisplay(latest.filePath)}: ${err.message}. ` +
|
|
805
|
+
"Shorten the report and re-run `harness approve understanding`. No approval marker, " +
|
|
806
|
+
"ledger tag or report change was written.", EX_FAIL);
|
|
807
|
+
}
|
|
808
|
+
// Any other failure (unparseable text) keeps its existing handling below.
|
|
809
|
+
}
|
|
810
|
+
}
|
|
811
|
+
}
|
|
671
812
|
let markerResult;
|
|
672
813
|
try {
|
|
673
814
|
const filePath = writeApprovalMarker(generatedDir, sessionId, {
|
|
@@ -769,7 +910,7 @@ export async function approveUnderstanding(opts = {}) {
|
|
|
769
910
|
if (reports.length === 0) {
|
|
770
911
|
reason = `no reports found at ${reportsDir}`;
|
|
771
912
|
if (latestParseError) {
|
|
772
|
-
reason += `; latest parse-error at ${latestParseError.filePath}: ${latestParseError.summary}`;
|
|
913
|
+
reason += `; latest parse-error at ${escapeForDisplay(latestParseError.filePath)}: ${escapeForDisplay(latestParseError.summary)}`;
|
|
773
914
|
}
|
|
774
915
|
}
|
|
775
916
|
else if (selection.staleRejected.length > 0) {
|
|
@@ -782,17 +923,17 @@ export async function approveUnderstanding(opts = {}) {
|
|
|
782
923
|
const age = formatAge((opts.now ?? new Date()).getTime() - newest.createdAtMs);
|
|
783
924
|
const maxMin = Math.round(TOLERANT_FALLBACK_MAX_AGE_MS / 60_000);
|
|
784
925
|
reason =
|
|
785
|
-
`no report matched session_id=${sessionId}; rejected ${selection.staleRejected.length} ` +
|
|
786
|
-
`stale sessionId-less candidate(s) for age (newest: ${newest.filePath}, ` +
|
|
787
|
-
`created ${newest.createdAt ?? "<unknown>"}, age ${age} > max ${maxMin}m). ` +
|
|
926
|
+
`no report matched session_id=${escapeForDisplay(sessionId)}; rejected ${selection.staleRejected.length} ` +
|
|
927
|
+
`stale sessionId-less candidate(s) for age (newest: ${escapeForDisplay(newest.filePath)}, ` +
|
|
928
|
+
`created ${escapeForDisplay(newest.createdAt ?? "<unknown>")}, age ${age} > max ${maxMin}m). ` +
|
|
788
929
|
`If the agent just wrote an Understanding Report, the Stop hook likely failed to ` +
|
|
789
930
|
`persist it; check ${parseErrorsDir}`;
|
|
790
931
|
if (latestParseError) {
|
|
791
|
-
reason += `; latest parse-error at ${latestParseError.filePath}: ${latestParseError.summary}`;
|
|
932
|
+
reason += `; latest parse-error at ${escapeForDisplay(latestParseError.filePath)}: ${escapeForDisplay(latestParseError.summary)}`;
|
|
792
933
|
}
|
|
793
934
|
}
|
|
794
935
|
else {
|
|
795
|
-
reason = `no report matched session_id=${sessionId} (${reports.length} report(s) for other sessions)`;
|
|
936
|
+
reason = `no report matched session_id=${escapeForDisplay(sessionId)} (${reports.length} report(s) for other sessions)`;
|
|
796
937
|
}
|
|
797
938
|
persistedReport = { ok: false, reason };
|
|
798
939
|
}
|
|
@@ -820,7 +961,7 @@ export async function approveUnderstanding(opts = {}) {
|
|
|
820
961
|
catch (err) {
|
|
821
962
|
persistedReport = {
|
|
822
963
|
ok: false,
|
|
823
|
-
reason: `failed to rewrite ${latest.filePath}: ${err.message}`,
|
|
964
|
+
reason: `failed to rewrite ${escapeForDisplay(latest.filePath)}: ${escapeForDisplay(err.message)}`,
|
|
824
965
|
};
|
|
825
966
|
}
|
|
826
967
|
}
|
|
@@ -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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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Idle bound for the stdin read. The timer restarts on every chunk, so a slow
|
|
3
|
+
* but live pipe is never cut off mid-write; it stays well under the 60 s
|
|
4
|
+
* preflight timeout so the fallback costs little.
|
|
5
|
+
*/
|
|
6
|
+
export declare const STDIN_IDLE_TIMEOUT_MS = 3000;
|
|
7
|
+
export interface StdinRead {
|
|
8
|
+
text: string;
|
|
9
|
+
/** True when the idle bound fired before `end`. */
|
|
10
|
+
timedOut: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Read a stream as UTF-8 text until `end`, or until no chunk has arrived for
|
|
14
|
+
* `idleTimeoutMs`. After a timeout the stream is paused and a no-op error
|
|
15
|
+
* handler stays attached, so a late `error` is not an unhandled event.
|
|
16
|
+
*/
|
|
17
|
+
export declare function readStdinBounded(stream: NodeJS.ReadableStream, idleTimeoutMs?: number): Promise<StdinRead>;
|
|
18
|
+
/** Tail of the empty-read note used by the session-start producers. */
|
|
19
|
+
export declare const DEFAULT_EMPTY_READ_TAIL = "falling back to the default session resolution";
|
|
20
|
+
/**
|
|
21
|
+
* The stderr note for a read the idle bound cut off (no trailing newline).
|
|
22
|
+
* `emptyReadTail` says what the caller does when nothing was read; it defaults
|
|
23
|
+
* to the session-start wording, and a caller with a different fallback (the pack
|
|
24
|
+
* hook readers continue as an empty event) passes its own. The partial-data note
|
|
25
|
+
* is the same for every caller.
|
|
26
|
+
*/
|
|
27
|
+
export declare function stdinTimeoutNote(read: StdinRead, idleTimeoutMs: number, emptyReadTail?: string): string;
|
|
28
|
+
/**
|
|
29
|
+
* The block reason a PreToolUse gate gives when its stdin read timed out. It
|
|
30
|
+
* names the stdin timeout and the bound; the gate fails closed because an
|
|
31
|
+
* event that did not finish arriving cannot be judged.
|
|
32
|
+
*/
|
|
33
|
+
export declare function stdinTimeoutBlockReason(idleTimeoutMs: number): string;
|
|
34
|
+
/**
|
|
35
|
+
* The Claude Code block envelope for a stdin-timeout refusal: `decision:
|
|
36
|
+
* "block"` for legacy CLIs plus the 2.1+ `hookSpecificOutput` PreToolUse deny.
|
|
37
|
+
* Same shape every PreToolUse gate under src/cli/pack/ and `harness policy
|
|
38
|
+
* intercept` emit for a block.
|
|
39
|
+
*/
|
|
40
|
+
export declare function stdinTimeoutBlockJson(reason: string): string;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
// One idle-bounded stdin reader shared by every hook-style CLI entry that
|
|
2
|
+
// parses an event JSON from stdin (session-start preflight, branch-check,
|
|
3
|
+
// stale-base-check, toolchain-parity, policy intercept, and the pack hook
|
|
4
|
+
// readers: `readStdin` / `readStdinChecked` in pack/hook-bootstrap.ts and the
|
|
5
|
+
// runtime-reality reader in pack/hook-runtime-reality.ts). It also holds the
|
|
6
|
+
// shared stdin-timeout refusal reason and block envelope those PreToolUse
|
|
7
|
+
// gates emit when the read timed out.
|
|
8
|
+
//
|
|
9
|
+
// A hook pipes the event JSON and closes stdin at once, so a real pipe never
|
|
10
|
+
// gets near the bound; it only bites when stdin is an open pipe or a TTY that
|
|
11
|
+
// never produces `end` (a backgrounded compound command with no controlling
|
|
12
|
+
// terminal), where an end-only read hangs the process forever.
|
|
13
|
+
/**
|
|
14
|
+
* Idle bound for the stdin read. The timer restarts on every chunk, so a slow
|
|
15
|
+
* but live pipe is never cut off mid-write; it stays well under the 60 s
|
|
16
|
+
* preflight timeout so the fallback costs little.
|
|
17
|
+
*/
|
|
18
|
+
export const STDIN_IDLE_TIMEOUT_MS = 3000;
|
|
19
|
+
function ignoreLateError() {
|
|
20
|
+
// Deliberately empty: the read already resolved, see readStdinBounded.
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Read a stream as UTF-8 text until `end`, or until no chunk has arrived for
|
|
24
|
+
* `idleTimeoutMs`. After a timeout the stream is paused and a no-op error
|
|
25
|
+
* handler stays attached, so a late `error` is not an unhandled event.
|
|
26
|
+
*/
|
|
27
|
+
export async function readStdinBounded(stream, idleTimeoutMs = STDIN_IDLE_TIMEOUT_MS) {
|
|
28
|
+
return new Promise((resolve, reject) => {
|
|
29
|
+
let data = "";
|
|
30
|
+
let timer;
|
|
31
|
+
const arm = () => {
|
|
32
|
+
if (timer !== undefined)
|
|
33
|
+
clearTimeout(timer);
|
|
34
|
+
timer = setTimeout(() => {
|
|
35
|
+
stream.removeListener("data", onData);
|
|
36
|
+
stream.removeListener("end", onEnd);
|
|
37
|
+
stream.removeListener("error", onError);
|
|
38
|
+
// A later 'error' on a stream nobody listens to any more would be an
|
|
39
|
+
// unhandled event and throw, so keep a no-op handler attached.
|
|
40
|
+
stream.on("error", ignoreLateError);
|
|
41
|
+
// Stop reading so a caller that passed a live stream is not left with
|
|
42
|
+
// a flowing one (the CLI itself exits through process.exit regardless).
|
|
43
|
+
stream.pause();
|
|
44
|
+
resolve({ text: data, timedOut: true });
|
|
45
|
+
}, idleTimeoutMs);
|
|
46
|
+
};
|
|
47
|
+
const onData = (chunk) => {
|
|
48
|
+
data += chunk;
|
|
49
|
+
arm();
|
|
50
|
+
};
|
|
51
|
+
const onEnd = () => {
|
|
52
|
+
if (timer !== undefined)
|
|
53
|
+
clearTimeout(timer);
|
|
54
|
+
resolve({ text: data, timedOut: false });
|
|
55
|
+
};
|
|
56
|
+
const onError = (err) => {
|
|
57
|
+
if (timer !== undefined)
|
|
58
|
+
clearTimeout(timer);
|
|
59
|
+
reject(err);
|
|
60
|
+
};
|
|
61
|
+
stream.setEncoding("utf8");
|
|
62
|
+
stream.on("data", onData);
|
|
63
|
+
stream.on("end", onEnd);
|
|
64
|
+
stream.on("error", onError);
|
|
65
|
+
arm();
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
/** Tail of the empty-read note used by the session-start producers. */
|
|
69
|
+
export const DEFAULT_EMPTY_READ_TAIL = "falling back to the default session resolution";
|
|
70
|
+
/**
|
|
71
|
+
* The stderr note for a read the idle bound cut off (no trailing newline).
|
|
72
|
+
* `emptyReadTail` says what the caller does when nothing was read; it defaults
|
|
73
|
+
* to the session-start wording, and a caller with a different fallback (the pack
|
|
74
|
+
* hook readers continue as an empty event) passes its own. The partial-data note
|
|
75
|
+
* is the same for every caller.
|
|
76
|
+
*/
|
|
77
|
+
export function stdinTimeoutNote(read, idleTimeoutMs, emptyReadTail = DEFAULT_EMPTY_READ_TAIL) {
|
|
78
|
+
return read.text.length === 0
|
|
79
|
+
? `no complete event JSON on stdin within ${idleTimeoutMs} ms (stdin never closed); ` +
|
|
80
|
+
emptyReadTail
|
|
81
|
+
: `stdin did not close within ${idleTimeoutMs} ms of the last data; ` +
|
|
82
|
+
`using the ${Buffer.byteLength(read.text)} bytes read`;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* The block reason a PreToolUse gate gives when its stdin read timed out. It
|
|
86
|
+
* names the stdin timeout and the bound; the gate fails closed because an
|
|
87
|
+
* event that did not finish arriving cannot be judged.
|
|
88
|
+
*/
|
|
89
|
+
export function stdinTimeoutBlockReason(idleTimeoutMs) {
|
|
90
|
+
return (`stdin timeout: no complete event arrived and closed on stdin within ${idleTimeoutMs} ms, ` +
|
|
91
|
+
`so this gate cannot judge the tool call and refuses it (fail closed). ` +
|
|
92
|
+
`Retry the tool call. Operator override: \`harness pause\`.`);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* The Claude Code block envelope for a stdin-timeout refusal: `decision:
|
|
96
|
+
* "block"` for legacy CLIs plus the 2.1+ `hookSpecificOutput` PreToolUse deny.
|
|
97
|
+
* Same shape every PreToolUse gate under src/cli/pack/ and `harness policy
|
|
98
|
+
* intercept` emit for a block.
|
|
99
|
+
*/
|
|
100
|
+
export function stdinTimeoutBlockJson(reason) {
|
|
101
|
+
return JSON.stringify({
|
|
102
|
+
decision: "block",
|
|
103
|
+
reason,
|
|
104
|
+
hookSpecificOutput: {
|
|
105
|
+
hookEventName: "PreToolUse",
|
|
106
|
+
permissionDecision: "deny",
|
|
107
|
+
permissionDecisionReason: reason,
|
|
108
|
+
},
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=bounded-stdin.js.map
|