@wildorder/nightshift 0.13.0 → 0.15.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/README.md +64 -26
- package/dist/agent-probe.d.ts +21 -2
- package/dist/agent-probe.d.ts.map +1 -1
- package/dist/agent-probe.js +76 -22
- package/dist/agent-probe.js.map +1 -1
- package/dist/agent-runner.d.ts +90 -2
- package/dist/agent-runner.d.ts.map +1 -1
- package/dist/agent-runner.js +382 -24
- package/dist/agent-runner.js.map +1 -1
- package/dist/agent-summary.d.ts +15 -0
- package/dist/agent-summary.d.ts.map +1 -1
- package/dist/agent-summary.js +32 -2
- package/dist/agent-summary.js.map +1 -1
- package/dist/as-built.d.ts +6 -0
- package/dist/as-built.d.ts.map +1 -1
- package/dist/as-built.js +7 -0
- package/dist/as-built.js.map +1 -1
- package/dist/author.d.ts +13 -3
- package/dist/author.d.ts.map +1 -1
- package/dist/author.js +267 -30
- package/dist/author.js.map +1 -1
- package/dist/ci-init.d.ts.map +1 -1
- package/dist/ci-init.js +17 -12
- package/dist/ci-init.js.map +1 -1
- package/dist/cli.js +74 -15
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +11 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +13 -0
- package/dist/config.js.map +1 -1
- package/dist/crash-report.d.ts +58 -0
- package/dist/crash-report.d.ts.map +1 -0
- package/dist/crash-report.js +115 -0
- package/dist/crash-report.js.map +1 -0
- package/dist/decide.js +1 -1
- package/dist/decide.js.map +1 -1
- package/dist/decider-review.d.ts +33 -5
- package/dist/decider-review.d.ts.map +1 -1
- package/dist/decider-review.js +55 -9
- package/dist/decider-review.js.map +1 -1
- package/dist/decision-ledger.d.ts +44 -1
- package/dist/decision-ledger.d.ts.map +1 -1
- package/dist/decision-ledger.js +46 -1
- package/dist/decision-ledger.js.map +1 -1
- package/dist/decision-view.d.ts +10 -1
- package/dist/decision-view.d.ts.map +1 -1
- package/dist/decision-view.js +41 -0
- package/dist/decision-view.js.map +1 -1
- package/dist/manifest.d.ts +29 -1
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +236 -11
- package/dist/manifest.js.map +1 -1
- package/dist/permits.d.ts +135 -0
- package/dist/permits.d.ts.map +1 -0
- package/dist/permits.js +397 -0
- package/dist/permits.js.map +1 -0
- package/dist/publish.d.ts +35 -0
- package/dist/publish.d.ts.map +1 -1
- package/dist/publish.js +149 -16
- package/dist/publish.js.map +1 -1
- package/dist/run-program.d.ts +53 -2
- package/dist/run-program.d.ts.map +1 -1
- package/dist/run-program.js +539 -56
- package/dist/run-program.js.map +1 -1
- package/dist/whole-program-review.d.ts +4 -0
- package/dist/whole-program-review.d.ts.map +1 -1
- package/dist/whole-program-review.js +9 -1
- package/dist/whole-program-review.js.map +1 -1
- package/package.json +2 -2
- package/dist/verify-allowlist.d.ts +0 -23
- package/dist/verify-allowlist.d.ts.map +0 -1
- package/dist/verify-allowlist.js +0 -46
- package/dist/verify-allowlist.js.map +0 -1
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The process-level crash surface (SC-10, SC-11): formats a non-empty
|
|
3
|
+
* diagnosis for any throw shape, appends it to the run report on disk when a
|
|
4
|
+
* run's program id is known, and prints it to stderr via a synchronous write
|
|
5
|
+
* that cannot be truncated by an immediately following `process.exit(1)`.
|
|
6
|
+
* Installed only by `src/cli.ts` — this module installs no process handlers
|
|
7
|
+
* and is not exported from `src/index.ts` (it is not a library surface).
|
|
8
|
+
*/
|
|
9
|
+
interface FsSyncApi {
|
|
10
|
+
existsSync: (path: string) => boolean;
|
|
11
|
+
appendFileSync: (path: string, data: string, encoding: "utf8") => void;
|
|
12
|
+
writeFileSync: (path: string, data: string, encoding: "utf8") => void;
|
|
13
|
+
mkdirSync: (path: string, options: {
|
|
14
|
+
recursive: true;
|
|
15
|
+
}) => void;
|
|
16
|
+
}
|
|
17
|
+
/** A crash diagnosis with name, message, AND stack for ANY throw shape (SC-10). */
|
|
18
|
+
export declare function formatCrashDiagnosis(error: unknown): string;
|
|
19
|
+
export interface CrashNoteResult {
|
|
20
|
+
path: string;
|
|
21
|
+
written: boolean;
|
|
22
|
+
/** Set when the best-effort write failed. */
|
|
23
|
+
error?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Appends the diagnosis as a labelled crash section to the run report,
|
|
27
|
+
* creating a minimal report if absent. SYNCHRONOUS on purpose: this runs from
|
|
28
|
+
* an uncaughtException handler about to call process.exit(1), where an
|
|
29
|
+
* awaited async write may never flush before the process dies. Never throws
|
|
30
|
+
* — a write failure is returned for the caller to print (SC-11).
|
|
31
|
+
*/
|
|
32
|
+
export declare function writeCrashNote(args: {
|
|
33
|
+
root: string;
|
|
34
|
+
programId: string;
|
|
35
|
+
diagnosis: string;
|
|
36
|
+
now: Date;
|
|
37
|
+
/** Injected in tests; defaults to node:fs sync primitives. */
|
|
38
|
+
fs?: FsSyncApi;
|
|
39
|
+
}): CrashNoteResult;
|
|
40
|
+
/**
|
|
41
|
+
* Composes the two: prints the diagnosis to a stderr sink, and — only when a
|
|
42
|
+
* run context is known — writes the crash note and names (or fails to name)
|
|
43
|
+
* the path. Injectable `out` and `fs` make every branch unit-testable without
|
|
44
|
+
* a process. Never throws.
|
|
45
|
+
*/
|
|
46
|
+
export declare function reportCrash(args: {
|
|
47
|
+
error: unknown;
|
|
48
|
+
runContext?: {
|
|
49
|
+
root: string;
|
|
50
|
+
programId: string;
|
|
51
|
+
};
|
|
52
|
+
now: Date;
|
|
53
|
+
/** Default: SYNCHRONOUS fd-2 write, see writeStderrSync. */
|
|
54
|
+
out?: (line: string) => void;
|
|
55
|
+
fs?: FsSyncApi;
|
|
56
|
+
}): void;
|
|
57
|
+
export {};
|
|
58
|
+
//# sourceMappingURL=crash-report.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crash-report.d.ts","sourceRoot":"","sources":["../src/crash-report.ts"],"names":[],"mappings":"AAUA;;;;;;;GAOG;AAEH,UAAU,SAAS;IACjB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACvE,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACtE,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,SAAS,EAAE,IAAI,CAAA;KAAE,KAAK,IAAI,CAAC;CACjE;AAiBD,mFAAmF;AACnF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAwB3D;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,IAAI,CAAC;IACV,8DAA8D;IAC9D,EAAE,CAAC,EAAE,SAAS,CAAC;CAChB,GAAG,eAAe,CA2BlB;AAiBD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE;IAChC,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,GAAG,EAAE,IAAI,CAAC;IACV,4DAA4D;IAC5D,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,EAAE,CAAC,EAAE,SAAS,CAAC;CAChB,GAAG,IAAI,CAyBP"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { appendFileSync, existsSync, mkdirSync, writeFileSync, writeSync, } from "node:fs";
|
|
2
|
+
import { dirname } from "node:path";
|
|
3
|
+
import { runReportPath } from "./report-path.js";
|
|
4
|
+
const nodeFs = { existsSync, appendFileSync, writeFileSync, mkdirSync };
|
|
5
|
+
function renderDiagnosis(name, message, stack) {
|
|
6
|
+
const head = `${name}: ${message}`;
|
|
7
|
+
// error.stack usually begins with "Name: message"; prefer it when present,
|
|
8
|
+
// else fall back to head so the body is never blank even for a stackless
|
|
9
|
+
// Error.
|
|
10
|
+
const body = stack && stack.trim() !== "" ? stack : head;
|
|
11
|
+
return `nightshift: unexpected error\n${head}\n${body}`;
|
|
12
|
+
}
|
|
13
|
+
/** A crash diagnosis with name, message, AND stack for ANY throw shape (SC-10). */
|
|
14
|
+
export function formatCrashDiagnosis(error) {
|
|
15
|
+
if (error instanceof Error) {
|
|
16
|
+
return renderDiagnosis(error.name || "Error", error.message || "(no message)", error.stack);
|
|
17
|
+
}
|
|
18
|
+
// Non-Error throw: (error as Error).message would be undefined — the exact
|
|
19
|
+
// silent case. Render the value, then wrap it in a synthetic Error so the
|
|
20
|
+
// diagnosis carries a name, a message, AND a stack. SC-10 requires a stack
|
|
21
|
+
// for every listed throw shape; a bare value has none, so we synthesize one
|
|
22
|
+
// at the crash surface. The synthetic stack points at the handler, not the
|
|
23
|
+
// throw origin (a bare value has no origin frame to recover); the
|
|
24
|
+
// `NonError:` head makes that provenance explicit.
|
|
25
|
+
let rendered;
|
|
26
|
+
try {
|
|
27
|
+
rendered = typeof error === "string" ? error : JSON.stringify(error);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
rendered = Object.prototype.toString.call(error);
|
|
31
|
+
}
|
|
32
|
+
const synthetic = new Error(`Non-Error value thrown: ${rendered || "(empty)"}`);
|
|
33
|
+
synthetic.name = "NonError";
|
|
34
|
+
return renderDiagnosis(synthetic.name, synthetic.message, synthetic.stack);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Appends the diagnosis as a labelled crash section to the run report,
|
|
38
|
+
* creating a minimal report if absent. SYNCHRONOUS on purpose: this runs from
|
|
39
|
+
* an uncaughtException handler about to call process.exit(1), where an
|
|
40
|
+
* awaited async write may never flush before the process dies. Never throws
|
|
41
|
+
* — a write failure is returned for the caller to print (SC-11).
|
|
42
|
+
*/
|
|
43
|
+
export function writeCrashNote(args) {
|
|
44
|
+
const fs = args.fs ?? nodeFs;
|
|
45
|
+
const path = runReportPath(args.root, args.programId);
|
|
46
|
+
const section = `\n\n## Run crashed\n\n` +
|
|
47
|
+
`The run terminated with an unexpected error (exit 1) at ${args.now.toISOString()}.\n\n` +
|
|
48
|
+
"```\n" +
|
|
49
|
+
args.diagnosis +
|
|
50
|
+
"\n```\n";
|
|
51
|
+
try {
|
|
52
|
+
if (fs.existsSync(path)) {
|
|
53
|
+
fs.appendFileSync(path, section, "utf8");
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
fs.mkdirSync(dirname(path), { recursive: true });
|
|
57
|
+
fs.writeFileSync(path, `# Run report — ${args.programId}\n\n` +
|
|
58
|
+
"This report was created by the crash handler because the run " +
|
|
59
|
+
"terminated before its normal report was written." +
|
|
60
|
+
section, "utf8");
|
|
61
|
+
}
|
|
62
|
+
return { path, written: true };
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
return { path, written: false, error: error.message };
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* The default stderr sink is a SYNCHRONOUS write to fd 2, not
|
|
70
|
+
* process.stderr.write(). This is load-bearing: reportCrash runs from the
|
|
71
|
+
* last-resort handler immediately before process.exit(1), and process.stderr
|
|
72
|
+
* is a non-blocking async stream when stderr is a pipe or a redirected file
|
|
73
|
+
* (which is exactly the captured incident — a merged stdout+stderr capture
|
|
74
|
+
* under npx on Windows). An async write queued behind process.exit() may
|
|
75
|
+
* never flush, which would reproduce the very silent-exit signature WS-04
|
|
76
|
+
* exists to eliminate. fs.writeSync blocks until the bytes are handed to the
|
|
77
|
+
* OS, so the diagnosis is on stderr *before* the process is allowed to die.
|
|
78
|
+
*/
|
|
79
|
+
function writeStderrSync(line) {
|
|
80
|
+
writeSync(2, `${line}\n`);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Composes the two: prints the diagnosis to a stderr sink, and — only when a
|
|
84
|
+
* run context is known — writes the crash note and names (or fails to name)
|
|
85
|
+
* the path. Injectable `out` and `fs` make every branch unit-testable without
|
|
86
|
+
* a process. Never throws.
|
|
87
|
+
*/
|
|
88
|
+
export function reportCrash(args) {
|
|
89
|
+
const out = args.out ?? writeStderrSync;
|
|
90
|
+
const diagnosis = formatCrashDiagnosis(args.error);
|
|
91
|
+
try {
|
|
92
|
+
out(diagnosis);
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
// stderr itself failed; nothing more we can do.
|
|
96
|
+
}
|
|
97
|
+
if (!args.runContext)
|
|
98
|
+
return;
|
|
99
|
+
const note = writeCrashNote({
|
|
100
|
+
root: args.runContext.root,
|
|
101
|
+
programId: args.runContext.programId,
|
|
102
|
+
diagnosis,
|
|
103
|
+
now: args.now,
|
|
104
|
+
...(args.fs ? { fs: args.fs } : {}),
|
|
105
|
+
});
|
|
106
|
+
try {
|
|
107
|
+
out(note.written
|
|
108
|
+
? `crash note written to ${note.path}`
|
|
109
|
+
: `could not write crash note to ${note.path}: ${note.error}`);
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
// best effort
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=crash-report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crash-report.js","sourceRoot":"","sources":["../src/crash-report.ts"],"names":[],"mappings":"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"}
|
package/dist/decide.js
CHANGED
|
@@ -176,7 +176,7 @@ export async function decide(options) {
|
|
|
176
176
|
workstream.status = "not_started";
|
|
177
177
|
delete workstream.commit;
|
|
178
178
|
}
|
|
179
|
-
await saveManifest(root, options.programId, manifest);
|
|
179
|
+
await saveManifest(root, options.programId, manifest, { log });
|
|
180
180
|
const replayCommit = await git.commitPaths(root, `nightshift(${options.programId}): replay decision ${record.id}`, ["docs/programs"]);
|
|
181
181
|
const nextCommand = `npx --yes @wildorder/nightshift run ${options.programId}`;
|
|
182
182
|
return {
|
package/dist/decide.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decide.js","sourceRoot":"","sources":["../src/decide.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"decide.js","sourceRoot":"","sources":["../src/decide.ts"],"names":[],"mappings":"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"}
|
package/dist/decider-review.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { type AgentRunner } from "./agent-runner.js";
|
|
1
|
+
import { type AgentRunner, type AgentTranscript, type TranscriptSink } from "./agent-runner.js";
|
|
2
2
|
import type { AgentConfig } from "./config.js";
|
|
3
|
+
import { type PermitsContext } from "./permits.js";
|
|
3
4
|
import { type DecisionBlock, type DecisionOption } from "./decision.js";
|
|
4
5
|
import { type LedgerEvent } from "./decision-ledger.js";
|
|
5
6
|
import type { ProgramManifest } from "./manifest.js";
|
|
@@ -13,6 +14,9 @@ export interface ReviewDecisionsOptions {
|
|
|
13
14
|
baseCommit: string | undefined;
|
|
14
15
|
decider: AgentConfig | undefined;
|
|
15
16
|
agentRunner: AgentRunner;
|
|
17
|
+
/** Defaults to a no-op context; the caller (`runProgram`/`authorProgram`)
|
|
18
|
+
* threads the run's real `PermitsContext` through. */
|
|
19
|
+
permits?: PermitsContext;
|
|
16
20
|
git: GitOps;
|
|
17
21
|
isRepository: boolean;
|
|
18
22
|
/**
|
|
@@ -36,8 +40,23 @@ export interface ReviewDecisionsOptions {
|
|
|
36
40
|
triaged: Set<string>;
|
|
37
41
|
now: () => Date;
|
|
38
42
|
log: (line: string) => void;
|
|
43
|
+
/** Captures the decider's transcript to build-logs (WS-02); the decider's
|
|
44
|
+
* read-only spawns run only the verify commands, so this is for the log
|
|
45
|
+
* only and is never rolled into a `WorkstreamResult`'s report subsection. */
|
|
46
|
+
observe?: TranscriptSink;
|
|
47
|
+
/** Called with each successful invocation's transcript, when one was
|
|
48
|
+
* observed (WS-03) — the caller journals `permission-denied` events from
|
|
49
|
+
* it; this module has no ledger workstream/attempt context of its own.
|
|
50
|
+
* Awaited before the next decision's spawn starts. */
|
|
51
|
+
onTranscript?: (transcript: AgentTranscript) => void | Promise<void>;
|
|
39
52
|
}
|
|
40
|
-
|
|
53
|
+
/**
|
|
54
|
+
* Reviews every decision, fail-open throughout. Returns the spawn-error text
|
|
55
|
+
* for any decision the decider could not even be spawned for — distinct from
|
|
56
|
+
* an ordinary no-verdict fail-open, which is only logged — so the caller can
|
|
57
|
+
* record it durably in the owning `WorkstreamResult.stageErrors` (SC-12).
|
|
58
|
+
*/
|
|
59
|
+
export declare function reviewDecisions(options: ReviewDecisionsOptions): Promise<string[]>;
|
|
41
60
|
export type FindingRecordedEvent = Extract<LedgerEvent, {
|
|
42
61
|
kind: "finding-recorded";
|
|
43
62
|
}>;
|
|
@@ -69,6 +88,8 @@ export interface TriageFindingsOptions {
|
|
|
69
88
|
baseCommit: string | undefined;
|
|
70
89
|
decider: AgentConfig | undefined;
|
|
71
90
|
agentRunner: AgentRunner;
|
|
91
|
+
/** Shared with `reviewDecisions` — see that option's doc comment. */
|
|
92
|
+
permits?: PermitsContext;
|
|
72
93
|
git: GitOps;
|
|
73
94
|
isRepository: boolean;
|
|
74
95
|
/** Shared with `reviewDecisions` — see that option's doc comment. */
|
|
@@ -77,12 +98,19 @@ export interface TriageFindingsOptions {
|
|
|
77
98
|
triaged: Set<string>;
|
|
78
99
|
now: () => Date;
|
|
79
100
|
log: (line: string) => void;
|
|
101
|
+
/** Shared with `reviewDecisions` — see that option's doc comment. */
|
|
102
|
+
observe?: TranscriptSink;
|
|
103
|
+
/** Shared with `reviewDecisions` — see that option's doc comment. */
|
|
104
|
+
onTranscript?: (transcript: AgentTranscript) => void;
|
|
80
105
|
}
|
|
81
106
|
/**
|
|
82
107
|
* Triages each routed finding with the charter's three dispositions. This
|
|
83
108
|
* only records a `fix-now` triage — WS-06 acts on it. Fails open throughout:
|
|
84
|
-
* no decider, a non-zero exit, an unparseable verdict,
|
|
85
|
-
*
|
|
109
|
+
* no decider, a non-zero exit, an unparseable verdict, a hollow escalation,
|
|
110
|
+
* or a spawn error leaves the finding `open` and never blocks the run.
|
|
111
|
+
* Returns the spawn-error text for any finding the decider could not even be
|
|
112
|
+
* spawned for, so the caller can record it durably in the owning
|
|
113
|
+
* `WorkstreamResult.stageErrors` (SC-12).
|
|
86
114
|
*/
|
|
87
|
-
export declare function triageFindings(options: TriageFindingsOptions): Promise<
|
|
115
|
+
export declare function triageFindings(options: TriageFindingsOptions): Promise<string[]>;
|
|
88
116
|
//# sourceMappingURL=decider-review.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decider-review.d.ts","sourceRoot":"","sources":["../src/decider-review.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"decider-review.d.ts","sourceRoot":"","sources":["../src/decider-review.ts"],"names":[],"mappings":"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"}
|
package/dist/decider-review.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { invokeAgent } from "./agent-runner.js";
|
|
1
|
+
import { invokeAgent, } from "./agent-runner.js";
|
|
2
|
+
import { NOOP_PERMITS_CONTEXT } from "./permits.js";
|
|
2
3
|
import { decisionFingerprint } from "./decision.js";
|
|
3
4
|
import { appendLedgerEvents } from "./decision-ledger.js";
|
|
4
5
|
/**
|
|
@@ -75,20 +76,47 @@ function extractVerdict(output) {
|
|
|
75
76
|
}
|
|
76
77
|
return undefined;
|
|
77
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* Reviews every decision, fail-open throughout. Returns the spawn-error text
|
|
81
|
+
* for any decision the decider could not even be spawned for — distinct from
|
|
82
|
+
* an ordinary no-verdict fail-open, which is only logged — so the caller can
|
|
83
|
+
* record it durably in the owning `WorkstreamResult.stageErrors` (SC-12).
|
|
84
|
+
*/
|
|
78
85
|
export async function reviewDecisions(options) {
|
|
79
|
-
const { root, programId, manifest, workstreamId, decisions, baseCommit, decider, agentRunner, git, isRepository, reviewed, triaged, now, log, } = options;
|
|
86
|
+
const { root, programId, manifest, workstreamId, decisions, baseCommit, decider, agentRunner, permits = NOOP_PERMITS_CONTEXT, git, isRepository, reviewed, triaged, now, log, observe, onTranscript, } = options;
|
|
80
87
|
if (!decider || decisions.length === 0)
|
|
81
|
-
return;
|
|
88
|
+
return [];
|
|
82
89
|
const diff = isRepository && baseCommit !== undefined
|
|
83
90
|
? await git.diffSince(root, baseCommit)
|
|
84
91
|
: "";
|
|
92
|
+
const spawnErrors = [];
|
|
85
93
|
for (const decision of decisions) {
|
|
86
94
|
const id = decisionFingerprint(workstreamId, decision);
|
|
87
95
|
if (reviewed.has(id))
|
|
88
96
|
continue;
|
|
89
97
|
reviewed.add(id);
|
|
90
98
|
const brief = deciderBrief(manifest, { workstream: workstreamId, decision }, diff);
|
|
91
|
-
|
|
99
|
+
let invocation;
|
|
100
|
+
try {
|
|
101
|
+
invocation = await invokeAgent(agentRunner, decider, brief, root, permits, "deciderAgent", observe);
|
|
102
|
+
if (invocation.transcript)
|
|
103
|
+
await onTranscript?.(invocation.transcript);
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
const message = `the decider could not be spawned while reviewing decision ${id} ` +
|
|
107
|
+
`(${workstreamId}): ${error.message}; left unratified`;
|
|
108
|
+
spawnErrors.push(message);
|
|
109
|
+
log(`${workstreamId} decision ${id}: ${message}`);
|
|
110
|
+
const skipEvent = {
|
|
111
|
+
kind: "decision-review-skipped",
|
|
112
|
+
at: now().toISOString(),
|
|
113
|
+
id,
|
|
114
|
+
reason: "ratification did not run: the decider could not be spawned " +
|
|
115
|
+
`(${error.message})`,
|
|
116
|
+
};
|
|
117
|
+
await appendLedgerEvents(root, programId, [skipEvent]);
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
92
120
|
const verdict = extractVerdict(invocation.output);
|
|
93
121
|
if (invocation.exitCode !== 0 || verdict === undefined) {
|
|
94
122
|
// Fail open: an unreviewable decision stays unratified and the report
|
|
@@ -108,6 +136,7 @@ export async function reviewDecisions(options) {
|
|
|
108
136
|
triaged.add(id);
|
|
109
137
|
log(`${workstreamId} decision ${id}: ${verdict.verdict}`);
|
|
110
138
|
}
|
|
139
|
+
return spawnErrors;
|
|
111
140
|
}
|
|
112
141
|
function findingEvidenceLines(evidence) {
|
|
113
142
|
return evidence.map((item) => {
|
|
@@ -256,22 +285,38 @@ export function extractTriageVerdict(output) {
|
|
|
256
285
|
/**
|
|
257
286
|
* Triages each routed finding with the charter's three dispositions. This
|
|
258
287
|
* only records a `fix-now` triage — WS-06 acts on it. Fails open throughout:
|
|
259
|
-
* no decider, a non-zero exit, an unparseable verdict,
|
|
260
|
-
*
|
|
288
|
+
* no decider, a non-zero exit, an unparseable verdict, a hollow escalation,
|
|
289
|
+
* or a spawn error leaves the finding `open` and never blocks the run.
|
|
290
|
+
* Returns the spawn-error text for any finding the decider could not even be
|
|
291
|
+
* spawned for, so the caller can record it durably in the owning
|
|
292
|
+
* `WorkstreamResult.stageErrors` (SC-12).
|
|
261
293
|
*/
|
|
262
294
|
export async function triageFindings(options) {
|
|
263
|
-
const { root, programId, manifest, workstreamId, findings, baseCommit, decider, agentRunner, git, isRepository, reviewed, triaged, now, log, } = options;
|
|
295
|
+
const { root, programId, manifest, workstreamId, findings, baseCommit, decider, agentRunner, permits = NOOP_PERMITS_CONTEXT, git, isRepository, reviewed, triaged, now, log, observe, onTranscript, } = options;
|
|
264
296
|
if (!decider || findings.length === 0)
|
|
265
|
-
return;
|
|
297
|
+
return [];
|
|
266
298
|
const diff = isRepository && baseCommit !== undefined
|
|
267
299
|
? await git.diffSince(root, baseCommit)
|
|
268
300
|
: "";
|
|
301
|
+
const spawnErrors = [];
|
|
269
302
|
for (const event of findings) {
|
|
270
303
|
if (reviewed.has(event.id))
|
|
271
304
|
continue;
|
|
272
305
|
reviewed.add(event.id);
|
|
273
306
|
const brief = findingTriageBrief(manifest, workstreamId, event, diff);
|
|
274
|
-
|
|
307
|
+
let invocation;
|
|
308
|
+
try {
|
|
309
|
+
invocation = await invokeAgent(agentRunner, decider, brief, root, permits, "deciderAgent", observe);
|
|
310
|
+
if (invocation.transcript)
|
|
311
|
+
await onTranscript?.(invocation.transcript);
|
|
312
|
+
}
|
|
313
|
+
catch (error) {
|
|
314
|
+
const message = `the decider could not be spawned while triaging finding ${event.id} ` +
|
|
315
|
+
`(${workstreamId}): ${error.message}; left untriaged`;
|
|
316
|
+
spawnErrors.push(message);
|
|
317
|
+
log(`${workstreamId} finding ${event.id}: ${message}`);
|
|
318
|
+
continue;
|
|
319
|
+
}
|
|
275
320
|
const verdict = extractTriageVerdict(invocation.output);
|
|
276
321
|
if (invocation.exitCode !== 0 || verdict === undefined) {
|
|
277
322
|
// Fail open: an untriaged finding stays open and the report says so;
|
|
@@ -302,5 +347,6 @@ export async function triageFindings(options) {
|
|
|
302
347
|
triaged.add(event.id);
|
|
303
348
|
log(`${workstreamId} finding ${event.id}: ${verdict.disposition}`);
|
|
304
349
|
}
|
|
350
|
+
return spawnErrors;
|
|
305
351
|
}
|
|
306
352
|
//# sourceMappingURL=decider-review.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decider-review.js","sourceRoot":"","sources":["../src/decider-review.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"decider-review.js","sourceRoot":"","sources":["../src/decider-review.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,8 @@ import type { Evidence, FindingCategory, Severity } from "./findings.js";
|
|
|
15
15
|
export declare const LEDGER_SCHEMA_VERSION = 1;
|
|
16
16
|
interface EventBase {
|
|
17
17
|
at: string;
|
|
18
|
-
/** Stable
|
|
18
|
+
/** Stable identity from {@link decisionFingerprint} or, for a
|
|
19
|
+
* `permission-denied` event, {@link denialFingerprint}. */
|
|
19
20
|
id: string;
|
|
20
21
|
}
|
|
21
22
|
export type LedgerEvent = (EventBase & {
|
|
@@ -30,6 +31,11 @@ export type LedgerEvent = (EventBase & {
|
|
|
30
31
|
verdict: "ratify" | "escalate";
|
|
31
32
|
rationale: string;
|
|
32
33
|
reviewedBy: "decider";
|
|
34
|
+
}) | (EventBase & {
|
|
35
|
+
/** A decider spawn error left this decision unratified (SC-12 of
|
|
36
|
+
* WS-04) — never a verdict, just a durable note explaining the gap. */
|
|
37
|
+
kind: "decision-review-skipped";
|
|
38
|
+
reason: string;
|
|
33
39
|
}) | (EventBase & {
|
|
34
40
|
kind: "decision-human";
|
|
35
41
|
/** The option label the human settled on. */
|
|
@@ -85,6 +91,21 @@ export type LedgerEvent = (EventBase & {
|
|
|
85
91
|
runId: string;
|
|
86
92
|
/** The run's anchor commit, when in a repository; absent outside one. */
|
|
87
93
|
commit?: string;
|
|
94
|
+
}) | (EventBase & {
|
|
95
|
+
kind: "permission-denied";
|
|
96
|
+
workstream: string;
|
|
97
|
+
/** The attempt/spawn label the denial happened under: "implementer",
|
|
98
|
+
* "recovery", "informed retry", a critique-fix label, "reviewer", or
|
|
99
|
+
* "decider". */
|
|
100
|
+
attempt: string;
|
|
101
|
+
/** The exact command the CLI or the agent named. */
|
|
102
|
+
command: string;
|
|
103
|
+
/** Who refused it. */
|
|
104
|
+
source: "classifier" | "deny-rule" | "agent-report";
|
|
105
|
+
/** The CLI's own reason, when observed from the transcript. */
|
|
106
|
+
reason?: string;
|
|
107
|
+
/** The agent's `because:` reason, when it reported one. */
|
|
108
|
+
agentReason?: string;
|
|
88
109
|
});
|
|
89
110
|
export type DecisionStatus = "unratified" | "ratified" | "escalated" | "human-decided";
|
|
90
111
|
export interface DecisionRecord {
|
|
@@ -100,6 +121,9 @@ export interface DecisionRecord {
|
|
|
100
121
|
humanReason?: string;
|
|
101
122
|
/** True when the agent claimed the choice is costly to undo. */
|
|
102
123
|
oneWay: boolean;
|
|
124
|
+
/** Present when a decider spawn error left this decision unratified — the
|
|
125
|
+
* reason ratification did not run, for the report to explain the gap. */
|
|
126
|
+
reviewSkippedReason?: string;
|
|
103
127
|
}
|
|
104
128
|
export type FindingStatus = "open" | "fix-now" | "accepted" | "escalated" | "human-decided";
|
|
105
129
|
export interface FindingRecord {
|
|
@@ -137,12 +161,31 @@ export interface FindingRecord {
|
|
|
137
161
|
commit?: string;
|
|
138
162
|
};
|
|
139
163
|
}
|
|
164
|
+
export interface DenialRecord {
|
|
165
|
+
id: string;
|
|
166
|
+
workstream: string;
|
|
167
|
+
attempt: string;
|
|
168
|
+
command: string;
|
|
169
|
+
source: "classifier" | "deny-rule" | "agent-report";
|
|
170
|
+
reason?: string;
|
|
171
|
+
agentReason?: string;
|
|
172
|
+
}
|
|
140
173
|
export interface DecisionLedgerView {
|
|
141
174
|
decisions: DecisionRecord[];
|
|
142
175
|
findings: FindingRecord[];
|
|
176
|
+
denials: DenialRecord[];
|
|
143
177
|
/** Journal lines that could not be read; reported, never fatal. */
|
|
144
178
|
corrupt: number;
|
|
145
179
|
}
|
|
180
|
+
/**
|
|
181
|
+
* Stable identity for a denial: workstream + attempt + command, deliberately
|
|
182
|
+
* excluding `source`. This is what makes an observed denial and a
|
|
183
|
+
* same-attempt agent self-report of the same command collapse into one
|
|
184
|
+
* record instead of two half-populated ones — the caller correlates the two
|
|
185
|
+
* sources before writing (see run-program.ts), and the shared id is what
|
|
186
|
+
* lets a later write refine (not duplicate) the earlier one.
|
|
187
|
+
*/
|
|
188
|
+
export declare function denialFingerprint(workstream: string, attempt: string, command: string): string;
|
|
146
189
|
export declare function ledgerPath(root: string, programId: string): string;
|
|
147
190
|
export declare function appendLedgerEvents(root: string, programId: string, events: LedgerEvent[]): Promise<void>;
|
|
148
191
|
export declare function reduceLedgerEvents(events: LedgerEvent[]): DecisionLedgerView;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decision-ledger.d.ts","sourceRoot":"","sources":["../src/decision-ledger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"decision-ledger.d.ts","sourceRoot":"","sources":["../src/decision-ledger.ts"],"names":[],"mappings":"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"}
|