@nexus-cortex/core 4.124.62 → 4.124.64

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 (42) hide show
  1. package/.env.defaults +32 -0
  2. package/dist/config/RuntimeConfigRegistry.d.ts.map +1 -1
  3. package/dist/config/RuntimeConfigRegistry.js +7 -0
  4. package/dist/config/RuntimeConfigRegistry.js.map +1 -1
  5. package/dist/config/SettingsLoader.d.ts.map +1 -1
  6. package/dist/config/SettingsLoader.js +7 -0
  7. package/dist/config/SettingsLoader.js.map +1 -1
  8. package/dist/config/SettingsSchema.d.ts +7 -0
  9. package/dist/config/SettingsSchema.d.ts.map +1 -1
  10. package/dist/config/SettingsSchema.js +63 -0
  11. package/dist/config/SettingsSchema.js.map +1 -1
  12. package/dist/config/effectiveConfig.d.ts.map +1 -1
  13. package/dist/config/effectiveConfig.js +7 -0
  14. package/dist/config/effectiveConfig.js.map +1 -1
  15. package/dist/orchestrator/CortexOrchestrator.d.ts +20 -0
  16. package/dist/orchestrator/CortexOrchestrator.d.ts.map +1 -1
  17. package/dist/orchestrator/CortexOrchestrator.js +45 -7
  18. package/dist/orchestrator/CortexOrchestrator.js.map +1 -1
  19. package/dist/orchestrator/attemptController.d.ts +152 -0
  20. package/dist/orchestrator/attemptController.d.ts.map +1 -0
  21. package/dist/orchestrator/attemptController.js +395 -0
  22. package/dist/orchestrator/attemptController.js.map +1 -0
  23. package/dist/orchestrator/index.d.ts +1 -0
  24. package/dist/orchestrator/index.d.ts.map +1 -1
  25. package/dist/orchestrator/index.js +2 -0
  26. package/dist/orchestrator/index.js.map +1 -1
  27. package/dist/training/DecisionStore.d.ts +1 -1
  28. package/dist/training/DecisionStore.d.ts.map +1 -1
  29. package/dist/training/DecisionStore.js.map +1 -1
  30. package/dist/training/usageAccounting.d.ts +6 -0
  31. package/dist/training/usageAccounting.d.ts.map +1 -1
  32. package/dist/training/usageAccounting.js +32 -0
  33. package/dist/training/usageAccounting.js.map +1 -1
  34. package/dist/utils/index.d.ts +1 -0
  35. package/dist/utils/index.d.ts.map +1 -1
  36. package/dist/utils/index.js +1 -0
  37. package/dist/utils/index.js.map +1 -1
  38. package/dist/utils/workspaceSnapshot.d.ts +44 -0
  39. package/dist/utils/workspaceSnapshot.d.ts.map +1 -0
  40. package/dist/utils/workspaceSnapshot.js +139 -0
  41. package/dist/utils/workspaceSnapshot.js.map +1 -0
  42. package/package.json +3 -3
@@ -0,0 +1,152 @@
1
+ import type { CortexOrchestrator, OrchestratorResponse, SendMessageOptions } from './CortexOrchestrator.js';
2
+ /** The adapter's default trigger set: a finish the judge accepted WITH a recorded gap or at low confidence. */
3
+ export declare const SECOND_ATTEMPT_DEFAULT_TRIGGER: readonly ["accept-with-gap", "accept-low-confidence"];
4
+ /** Verdicts that rank between a confident accept and no finish (sa_pick's SA_GAP). */
5
+ export declare const SECOND_ATTEMPT_GAP_ACTIONS: Set<string>;
6
+ export interface SecondAttemptConfig {
7
+ /** CORTEX_SECOND_ATTEMPT = 1|true|on */
8
+ enabled: boolean;
9
+ /** CORTEX_SECOND_ATTEMPT_MAX — maximum number of EXTRA attempts (default 1; 0 = none; non-integer → 1) */
10
+ max: number;
11
+ /** CORTEX_SECOND_ATTEMPT_MIN_REMAINING — fraction of the ORIGINAL deadline that must remain (default 0.5) */
12
+ minRemaining: number;
13
+ /** CORTEX_SECOND_ATTEMPT_TRIGGER — resolver actions that open another attempt; the token `none` = a give-up (no verdict) */
14
+ trigger: string[];
15
+ /** CORTEX_SECOND_ATTEMPT_RESERVE_MS — wall-clock reserve subtracted from the next attempt's deadline (default 300000) */
16
+ reserveMs: number;
17
+ /** CORTEX_SECOND_ATTEMPT_FLOOR_MS — the next attempt must have at least this much after the reserve (default 900000) */
18
+ floorMs: number;
19
+ /** CORTEX_SECOND_ATTEMPT_OUT_DIR — where the per-attempt artifacts + second-attempt.json are written (default <stateDir>/attempts) */
20
+ outDir: string | null;
21
+ /** Wall-clock cap for one shipped-check run (the adapter's `timeout 300`). */
22
+ checkTimeoutMs: number;
23
+ }
24
+ export declare function resolveSecondAttemptConfig(env?: NodeJS.ProcessEnv): SecondAttemptConfig;
25
+ /** What the orchestrator remembers of the LAST endturn_resolver adjudication of a turn (CortexOrchestrator.getLastResolverDecision). */
26
+ export interface LastResolverDecision {
27
+ action: string | null;
28
+ confidence?: string;
29
+ namedPassed?: number;
30
+ checkPassed?: boolean | null;
31
+ remainingFrac?: number | null;
32
+ error?: string;
33
+ ts: number;
34
+ }
35
+ export interface AttemptDecisionInput {
36
+ /** the attempt that just finished (1-based) */
37
+ k: number;
38
+ /** the last resolver action of that attempt; null/undefined = no verdict (a give-up) */
39
+ action: string | null | undefined;
40
+ /** that attempt's own remainingFrac (relative to ITS deadline) — recorded, used only for attempt 1 when no start epoch is known */
41
+ eventRemainingFrac?: number | null;
42
+ namedPassed?: number | null;
43
+ checkPassed?: boolean | null;
44
+ /** task-start epoch (ms); null = unknown */
45
+ t0Ms?: number | null;
46
+ /** the ORIGINAL deadline (ms) */
47
+ deadlineMs: number;
48
+ nowMs: number;
49
+ cfg: SecondAttemptConfig;
50
+ }
51
+ export interface AttemptDecision {
52
+ k: number;
53
+ action: string | null;
54
+ remainingFrac: number | null;
55
+ eventRemainingFrac: number | null;
56
+ deadlineMs: number;
57
+ elapsedMs: number | null;
58
+ remainingMs: number;
59
+ nextDeadlineMs: number;
60
+ namedPassed: number;
61
+ checkPassed: boolean | null;
62
+ trigger: string[];
63
+ minRemaining: number;
64
+ max: number;
65
+ extraSoFar: number;
66
+ go: boolean;
67
+ why: string;
68
+ }
69
+ /** sa_go, verbatim: remaining time is measured on the WALL CLOCK against the ORIGINAL deadline (t0 + deadline − now); an attempt's own
70
+ * remainingFrac is relative to its shortened deadline and is never used for the decision (except attempt 1 with no start epoch, whose
71
+ * frac IS on the original basis). Conditions in order: trigger → frac ≥ min → floor after reserve → extra-attempt cap. Pure. */
72
+ export declare function decideNextAttempt(i: AttemptDecisionInput): AttemptDecision;
73
+ export type ShippedCheckResult = 'pass' | 'fail' | 'skipped' | 'none';
74
+ export interface AttemptRecord {
75
+ k: number;
76
+ action: string | null;
77
+ remainingFrac: number | null;
78
+ namedPassed: number;
79
+ check: ShippedCheckResult;
80
+ /** metadata.toolCallIterations of the attempt's response (null when absent) */
81
+ iterations: number | null;
82
+ /** tool-call assistant records in the attempt's session file (null when absent) */
83
+ sessionTurns: number | null;
84
+ /** attempt 1 always; k ≥ 2 only with a response, a verdict and a committed tree */
85
+ finished: boolean;
86
+ /** the attempt's request exit code as a string (null = unknown) */
87
+ rc: string | null;
88
+ /** filled by selectAttempt from `turnsSource` */
89
+ turns?: number | null;
90
+ }
91
+ export interface AttemptSelection {
92
+ pick: number;
93
+ why: string;
94
+ attempts: AttemptRecord[];
95
+ turnsSource: 'toolCallIterations' | 'session';
96
+ shippedCheck: string | null;
97
+ /** R194 v1 shape (attempt1 / attempt2 … keys) kept for existing readers (s2-read.py) */
98
+ [attemptKey: `attempt${number}`]: {
99
+ action: string | null;
100
+ remainingFrac: number | null;
101
+ namedPassed: number;
102
+ check: ShippedCheckResult;
103
+ rc: string | null;
104
+ turns: number | null | undefined;
105
+ } | undefined;
106
+ }
107
+ /** accept 2 > accept-with-gap / accept-low-confidence 1 > anything else 0 */
108
+ export declare function rankVerdict(action: string | null | undefined): number;
109
+ /** sa_pick, verbatim: (a) shipped check — when some candidates pass and others do not, keep the passing ones; (b) verdict rank;
110
+ * (c) FEWEST tool-call turns (r-selector 2026-09-28; promoted above namedPassed 2026-10-07); (d) more judge checks passed; (e) earliest.
111
+ * Candidates = attempt 1 always + every finished later attempt. Pure (mutates `turns` on the records it is given). */
112
+ export declare function selectAttempt(att: AttemptRecord[], shippedCheck: string | null): AttemptSelection;
113
+ /** The picked attempt's response with usage.session SUMMED over every attempt (+ usage/metadata.secondAttempt). A missing picked
114
+ * response falls back to the latest readable one. null when no attempt produced a response. */
115
+ export declare function mergeAttemptResponses(responses: Array<OrchestratorResponse | null | undefined>, selection: AttemptSelection): OrchestratorResponse | null;
116
+ /** ADP:165 verbatim: `make test` (a Makefile with a test target) → test.sh → run_tests.sh → pytest (pytest.ini or a tests/ or test/ dir). */
117
+ export declare function detectShippedCheck(workspace: string): string | null;
118
+ /** Run the shipped check in the workspace (sh -c, bounded); the output is returned for banking. */
119
+ export declare function runShippedCheck(cmd: string, workspace: string, timeoutMs: number): {
120
+ result: 'pass' | 'fail';
121
+ output: string;
122
+ };
123
+ /** Tool-call turns from a session record: assistant records carrying ≥ 1 tool_use block (null when the file is absent / unreadable). */
124
+ export declare function countSessionToolTurns(sessionPath: string | undefined): number | null;
125
+ export interface AttemptOrchestratorSpec {
126
+ /** per-attempt runtime state root (decisions.jsonl, …) — pass as OrchestratorConfig.stateDir */
127
+ stateDir: string;
128
+ /** per-attempt sessions dir — pass as OrchestratorConfig.storageDir */
129
+ storageDir: string;
130
+ /** the reduced wall-clock deadline for this attempt — pass as loopControl.turnDeadlineMs */
131
+ turnDeadlineMs: number;
132
+ }
133
+ export interface RunWithAttemptsOptions {
134
+ /** attempt 1 runs on this instance (the server's persistent orchestrator, or the request's ephemeral one) */
135
+ orchestrator: CortexOrchestrator;
136
+ turnContent: Parameters<CortexOrchestrator['sendMessage']>[0];
137
+ messageOptions?: SendMessageOptions;
138
+ /** the task workspace (snapshotted / restored) */
139
+ projectPath: string;
140
+ /** builds a FRESH orchestrator for attempt k ≥ 2 (createOrchestrator + createSession); the runner calls cleanup() on it */
141
+ createAttemptOrchestrator: (k: number, spec: AttemptOrchestratorSpec) => Promise<CortexOrchestrator>;
142
+ env?: NodeJS.ProcessEnv;
143
+ /** task-start epoch (ms); default = now at entry */
144
+ t0Ms?: number;
145
+ /** the ORIGINAL deadline (ms); default = CORTEX_TURN_DEADLINE_MS */
146
+ deadlineMs?: number;
147
+ now?: () => number;
148
+ log?: (line: string) => void;
149
+ }
150
+ /** The chain. Returns the merged response (or attempt 1's when no further attempt ran / anything failed). */
151
+ export declare function runWithAttempts(opts: RunWithAttemptsOptions): Promise<OrchestratorResponse>;
152
+ //# sourceMappingURL=attemptController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attemptController.d.ts","sourceRoot":"","sources":["../../src/orchestrator/attemptController.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,395 @@
1
+ /**
2
+ * AttemptController — the R194 SECOND-ATTEMPT CHAIN in the LIBRARY (R239 / unification plan P4, 2026-10-07).
3
+ *
4
+ * Operator rule (10-06): "the library IS the harness; the adapter must never decide." Until this module the chain lived in the bench
5
+ * adapter (nexus_cortex_agent.py `_SA_SNAPSHOT` / `_SA_CHAIN` / sa_go / sa_pick / sa_merge, commit 2bd888751): serverless and streaming
6
+ * callers could not get it, and its levers were absent from the library ledger. This file ports the decision (sa_go), the selection
7
+ * (sa_pick), the usage merge (sa_merge) and the shipped-check detection VERBATIM as pure functions, plus `runWithAttempts`, the runner that
8
+ * sits ABOVE the turn loop: snapshot → attempt 1 → decide from the last resolver verdict (in-process) → fresh orchestrator per extra
9
+ * attempt (own state dir + sessions dir + reduced deadline) → shipped check → select → restore → merged response.
10
+ *
11
+ * Levers (CORTEX_SECOND_ATTEMPT*, default off = byte-identical): see `resolveSecondAttemptConfig`.
12
+ * Artifacts (parity with the adapter's banked files, written to CORTEX_SECOND_ATTEMPT_OUT_DIR or <stateDir>/attempts):
13
+ * a<k>.json (the decision after attempt k), response.attempt<k>.json, decisions.attempt<k>.jsonl, session.attempt<k>.jsonl,
14
+ * check<k> (pass|fail|skipped), chk<k>.txt (the check output), second-attempt.json (the selection record, R194 v1 shape kept).
15
+ * Events: `second_attempt` rows in attempt 1's decision store {phase: decision|selection, ...}.
16
+ * Every failure at every step leaves attempt 1 (or the chosen finished attempt) in place — fail-open, like the adapter.
17
+ */
18
+ import { existsSync, mkdirSync, readFileSync, writeFileSync, copyFileSync, statSync } from 'fs';
19
+ import { join } from 'path';
20
+ import { spawnSync } from 'child_process';
21
+ import { resolveTurnDeadlineMs } from './timeBudget.js';
22
+ import { resolveCortexStateDir } from '../utils/stateDir.js';
23
+ import { WorkspaceSnapshot } from '../utils/workspaceSnapshot.js';
24
+ import { sumSessionUsage } from '../training/usageAccounting.js';
25
+ // ---------------------------------------------------------------------------------------------------------------------------------
26
+ // Levers
27
+ // ---------------------------------------------------------------------------------------------------------------------------------
28
+ /** The adapter's default trigger set: a finish the judge accepted WITH a recorded gap or at low confidence. */
29
+ export const SECOND_ATTEMPT_DEFAULT_TRIGGER = ['accept-with-gap', 'accept-low-confidence'];
30
+ /** Verdicts that rank between a confident accept and no finish (sa_pick's SA_GAP). */
31
+ export const SECOND_ATTEMPT_GAP_ACTIONS = new Set(['accept-with-gap', 'accept-low-confidence']);
32
+ export function resolveSecondAttemptConfig(env = process.env) {
33
+ const intOr = (v, d) => { const s = String(v ?? '').trim(); return /^-?\d+$/.test(s) ? parseInt(s, 10) : d; };
34
+ const minRaw = String(env.CORTEX_SECOND_ATTEMPT_MIN_REMAINING ?? '').trim();
35
+ const minRemaining = minRaw !== '' && Number.isFinite(Number(minRaw)) ? Number(minRaw) : 0.5;
36
+ const trigger = String(env.CORTEX_SECOND_ATTEMPT_TRIGGER || SECOND_ATTEMPT_DEFAULT_TRIGGER.join(',')).split(',').map((s) => s.trim()).filter(Boolean);
37
+ return {
38
+ enabled: /^(1|true|on)$/i.test(String(env.CORTEX_SECOND_ATTEMPT ?? '').trim()),
39
+ max: Math.max(0, intOr(env.CORTEX_SECOND_ATTEMPT_MAX || 1, 1)),
40
+ minRemaining,
41
+ trigger,
42
+ reserveMs: Math.max(0, intOr(env.CORTEX_SECOND_ATTEMPT_RESERVE_MS || 300_000, 300_000)),
43
+ floorMs: Math.max(0, intOr(env.CORTEX_SECOND_ATTEMPT_FLOOR_MS || 900_000, 900_000)),
44
+ outDir: String(env.CORTEX_SECOND_ATTEMPT_OUT_DIR ?? '').trim() || null,
45
+ checkTimeoutMs: 300_000,
46
+ };
47
+ }
48
+ /** sa_go, verbatim: remaining time is measured on the WALL CLOCK against the ORIGINAL deadline (t0 + deadline − now); an attempt's own
49
+ * remainingFrac is relative to its shortened deadline and is never used for the decision (except attempt 1 with no start epoch, whose
50
+ * frac IS on the original basis). Conditions in order: trigger → frac ≥ min → floor after reserve → extra-attempt cap. Pure. */
51
+ export function decideNextAttempt(i) {
52
+ const { cfg } = i;
53
+ const dl = Number.isFinite(i.deadlineMs) && i.deadlineMs > 0 ? Math.floor(i.deadlineMs) : 0;
54
+ const ev = typeof i.eventRemainingFrac === 'number' && Number.isFinite(i.eventRemainingFrac) ? i.eventRemainingFrac : null;
55
+ let elapsed = null;
56
+ let rem = 0;
57
+ if (typeof i.t0Ms === 'number' && Number.isFinite(i.t0Ms) && dl > 0) {
58
+ elapsed = Math.floor(i.nowMs - i.t0Ms);
59
+ rem = dl - elapsed;
60
+ }
61
+ else if (i.k === 1 && ev !== null && dl > 0)
62
+ rem = Math.floor(ev * dl); // no start epoch: attempt 1's own frac IS on the original basis
63
+ const frac = dl > 0 ? rem / dl : null;
64
+ const action = i.action ?? null;
65
+ const actKey = action ?? 'none'; // a give-up (no resolver verdict) matches the trigger token 'none'
66
+ let why;
67
+ if (!cfg.trigger.includes(actKey))
68
+ why = 'action not in trigger set';
69
+ else if (frac === null || frac < cfg.minRemaining)
70
+ why = 'remaining fraction of the original deadline below minimum';
71
+ else if (rem - cfg.reserveMs < cfg.floorMs)
72
+ why = `less than ${Math.round(cfg.floorMs / 60_000)} min would remain after the ${Math.round(cfg.reserveMs / 60_000)} min reserve`;
73
+ else if (i.k - 1 >= cfg.max)
74
+ why = 'extra-attempt cap reached';
75
+ else
76
+ why = 'continue';
77
+ return {
78
+ k: i.k, action, remainingFrac: frac === null ? null : Math.round(frac * 10_000) / 10_000, eventRemainingFrac: ev, deadlineMs: dl,
79
+ elapsedMs: elapsed, remainingMs: rem, nextDeadlineMs: Math.max(600_000, rem - cfg.reserveMs),
80
+ namedPassed: typeof i.namedPassed === 'number' ? i.namedPassed : 0, checkPassed: i.checkPassed ?? null,
81
+ trigger: [...cfg.trigger], minRemaining: cfg.minRemaining, max: cfg.max, extraSoFar: i.k - 1, go: why === 'continue', why,
82
+ };
83
+ }
84
+ /** accept 2 > accept-with-gap / accept-low-confidence 1 > anything else 0 */
85
+ export function rankVerdict(action) {
86
+ return action === 'accept' ? 2 : action && SECOND_ATTEMPT_GAP_ACTIONS.has(action) ? 1 : 0;
87
+ }
88
+ /** sa_pick, verbatim: (a) shipped check — when some candidates pass and others do not, keep the passing ones; (b) verdict rank;
89
+ * (c) FEWEST tool-call turns (r-selector 2026-09-28; promoted above namedPassed 2026-10-07); (d) more judge checks passed; (e) earliest.
90
+ * Candidates = attempt 1 always + every finished later attempt. Pure (mutates `turns` on the records it is given). */
91
+ export function selectAttempt(att, shippedCheck) {
92
+ let cands = att.filter((x) => x.finished);
93
+ // one turn measure for every candidate: toolCallIterations when all have it, else session tool-call turns
94
+ const src = cands.every((x) => x.iterations !== null) ? 'toolCallIterations' : 'session';
95
+ for (const x of att)
96
+ x.turns = src === 'toolCallIterations' ? x.iterations : x.sessionTurns;
97
+ const why = [];
98
+ const unfinished = att.filter((x) => !x.finished).map((x) => x.k);
99
+ if (unfinished.length)
100
+ why.push('no finish: attempt ' + unfinished.join(','));
101
+ const passing = cands.filter((x) => x.check === 'pass');
102
+ if (passing.length && passing.length < cands.length) {
103
+ cands = passing;
104
+ why.push('shipped check passes only on attempt ' + passing.map((x) => x.k).join(','));
105
+ }
106
+ const BIG = 1e9;
107
+ const steps = [
108
+ ['verdict', (x) => -rankVerdict(x.action)],
109
+ ['fewest tool-call turns', (x) => (typeof x.turns === 'number' ? x.turns : BIG)],
110
+ ['more judge checks passed', (x) => -x.namedPassed],
111
+ ['earliest attempt', (x) => x.k],
112
+ ];
113
+ let decided = why.length > 0 && why[why.length - 1].startsWith('shipped check');
114
+ for (const [label, key] of steps) {
115
+ if (cands.length <= 1)
116
+ break;
117
+ const best = Math.min(...cands.map(key));
118
+ const nxt = cands.filter((x) => key(x) === best);
119
+ if (nxt.length < cands.length) {
120
+ if (label === 'earliest attempt' && !decided)
121
+ why.push('no evidence separates the attempts; earliest');
122
+ else
123
+ why.push(`${label} (attempt ${nxt[0].k}` + (label === 'verdict' ? `, action ${nxt[0].action}` : '') + ')');
124
+ decided = true;
125
+ }
126
+ cands = nxt;
127
+ }
128
+ const pick = cands.length ? cands[0].k : 1;
129
+ if (!decided)
130
+ why.push('only candidate');
131
+ const out = { pick, why: why.join('; '), attempts: att, turnsSource: src, shippedCheck: shippedCheck || null };
132
+ for (const x of att)
133
+ out[`attempt${x.k}`] = { action: x.action, remainingFrac: x.remainingFrac, namedPassed: x.namedPassed, check: x.check, rc: x.rc, turns: x.turns };
134
+ return out;
135
+ }
136
+ // ---------------------------------------------------------------------------------------------------------------------------------
137
+ // Usage merge (sa_merge)
138
+ // ---------------------------------------------------------------------------------------------------------------------------------
139
+ /** The picked attempt's response with usage.session SUMMED over every attempt (+ usage/metadata.secondAttempt). A missing picked
140
+ * response falls back to the latest readable one. null when no attempt produced a response. */
141
+ export function mergeAttemptResponses(responses, selection) {
142
+ const n = responses.length;
143
+ const p = selection.pick;
144
+ const base = (p >= 1 && p <= n ? responses[p - 1] : null) ?? [...responses].reverse().find((r) => !!r) ?? null;
145
+ if (!base)
146
+ return null;
147
+ let tot;
148
+ for (const r of responses) {
149
+ const s = r?.usage?.session;
150
+ if (s)
151
+ tot = tot ? sumSessionUsage(tot, s) : sumSessionUsage(s, null);
152
+ }
153
+ return {
154
+ ...base,
155
+ usage: { ...base.usage, ...(tot ? { session: tot } : {}), secondAttempt: selection },
156
+ metadata: { ...base.metadata, ...(tot ? { sessionUsage: tot } : {}), secondAttempt: selection },
157
+ };
158
+ }
159
+ // ---------------------------------------------------------------------------------------------------------------------------------
160
+ // Shipped check (the workspace's own test entry point)
161
+ // ---------------------------------------------------------------------------------------------------------------------------------
162
+ /** ADP:165 verbatim: `make test` (a Makefile with a test target) → test.sh → run_tests.sh → pytest (pytest.ini or a tests/ or test/ dir). */
163
+ export function detectShippedCheck(workspace) {
164
+ const at = (p) => join(workspace, p);
165
+ try {
166
+ if (existsSync(at('Makefile')) && /^test\s*:/m.test(readFileSync(at('Makefile'), 'utf-8')))
167
+ return 'make test';
168
+ }
169
+ catch { /* unreadable Makefile = no make target */ }
170
+ if (existsSync(at('test.sh')))
171
+ return 'sh ./test.sh';
172
+ if (existsSync(at('run_tests.sh')))
173
+ return 'sh ./run_tests.sh';
174
+ const isDir = (p) => { try {
175
+ return statSync(at(p)).isDirectory();
176
+ }
177
+ catch {
178
+ return false;
179
+ } };
180
+ if (existsSync(at('pytest.ini')) || isDir('tests') || isDir('test'))
181
+ return 'python3 -m pytest -q -x --no-header -p no:cacheprovider';
182
+ return null;
183
+ }
184
+ /** Run the shipped check in the workspace (sh -c, bounded); the output is returned for banking. */
185
+ export function runShippedCheck(cmd, workspace, timeoutMs) {
186
+ try {
187
+ const r = spawnSync('sh', ['-c', cmd], { cwd: workspace, encoding: 'utf-8', timeout: timeoutMs, stdio: ['ignore', 'pipe', 'pipe'], maxBuffer: 16 * 1024 * 1024 });
188
+ const output = `${r.stdout ?? ''}${r.stderr ?? ''}`;
189
+ return { result: r.status === 0 ? 'pass' : 'fail', output: r.error ? `${output}\n[attempt-controller] ${r.error.message}` : output };
190
+ }
191
+ catch (e) {
192
+ return { result: 'fail', output: `[attempt-controller] ${String(e?.message ?? e)}` };
193
+ }
194
+ }
195
+ /** Tool-call turns from a session record: assistant records carrying ≥ 1 tool_use block (null when the file is absent / unreadable). */
196
+ export function countSessionToolTurns(sessionPath) {
197
+ if (!sessionPath || !existsSync(sessionPath))
198
+ return null;
199
+ try {
200
+ let n = 0;
201
+ for (const line of readFileSync(sessionPath, 'utf-8').split('\n')) {
202
+ if (!line.trim())
203
+ continue;
204
+ let r;
205
+ try {
206
+ r = JSON.parse(line);
207
+ }
208
+ catch {
209
+ continue;
210
+ }
211
+ const blocks = r?.message?.content;
212
+ if (Array.isArray(blocks) && blocks.some((b) => b && typeof b === 'object' && (b.type === 'tool_use' || b.toolUse)))
213
+ n++;
214
+ }
215
+ return n;
216
+ }
217
+ catch {
218
+ return null;
219
+ }
220
+ }
221
+ /** metadata.toolCallIterations of a response (the non-streaming turn loop always sets it; typed loosely on OrchestratorResponse). */
222
+ function toolCallIterationsOf(resp) {
223
+ const v = resp?.metadata?.toolCallIterations;
224
+ return typeof v === 'number' && Number.isFinite(v) ? v : null;
225
+ }
226
+ function writeJson(path, value) {
227
+ try {
228
+ mkdirSync(join(path, '..'), { recursive: true });
229
+ writeFileSync(path, JSON.stringify(value, null, 1), 'utf-8');
230
+ }
231
+ catch { /* banking is best-effort */ }
232
+ }
233
+ function copyIf(src, dst) {
234
+ try {
235
+ if (src && existsSync(src)) {
236
+ mkdirSync(join(dst, '..'), { recursive: true });
237
+ copyFileSync(src, dst);
238
+ return true;
239
+ }
240
+ }
241
+ catch { /* best-effort */ }
242
+ return false;
243
+ }
244
+ /** The chain. Returns the merged response (or attempt 1's when no further attempt ran / anything failed). */
245
+ export async function runWithAttempts(opts) {
246
+ const env = opts.env ?? process.env;
247
+ const now = opts.now ?? (() => Date.now());
248
+ const log = opts.log ?? ((line) => console.warn(line));
249
+ const cfg = resolveSecondAttemptConfig(env);
250
+ const t0 = opts.t0Ms ?? now();
251
+ const dl0 = opts.deadlineMs ?? resolveTurnDeadlineMs(undefined, env);
252
+ const stateRoot = resolveCortexStateDir(opts.projectPath, env).dir;
253
+ const attemptsDir = join(stateRoot, 'attempts');
254
+ const artifactsDir = cfg.outDir ?? attemptsDir;
255
+ const bank = (orch, k, response) => {
256
+ const paths = typeof orch.getAttemptArtifactPaths === 'function' ? orch.getAttemptArtifactPaths() : {};
257
+ if (response)
258
+ writeJson(join(artifactsDir, `response.attempt${k}.json`), response);
259
+ copyIf(paths.decisionsPath, join(artifactsDir, `decisions.attempt${k}.jsonl`));
260
+ copyIf(paths.sessionPath, join(artifactsDir, `session.attempt${k}.jsonl`));
261
+ return paths;
262
+ };
263
+ const verdictOf = (orch) => typeof orch.getLastResolverDecision === 'function' ? orch.getLastResolverDecision() : null;
264
+ const event = async (detail) => {
265
+ try {
266
+ await opts.orchestrator.bankSteeringEvent?.('second_attempt', detail);
267
+ }
268
+ catch { /* best-effort */ }
269
+ };
270
+ // 1. snapshot `lift` — any failure disables the chain for this task
271
+ const snap = new WorkspaceSnapshot({ workspace: opts.projectPath, gitDir: join(attemptsDir, 'shadow.git'), log });
272
+ const armed = cfg.enabled && snap.init() && snap.commit('lift');
273
+ if (cfg.enabled && !armed)
274
+ log('[AttemptController] R194 second-attempt: snapshot FAILED — disabled for this task');
275
+ else if (armed)
276
+ log(`[AttemptController] R194 second-attempt: workspace snapshot lift (${snap.fileCount()} files)`);
277
+ // 2. attempt 1 on the caller's orchestrator
278
+ const responses = [];
279
+ const r1 = await opts.orchestrator.sendMessage(opts.turnContent, opts.messageOptions);
280
+ responses.push(r1);
281
+ if (!armed)
282
+ return r1;
283
+ const records = [];
284
+ const tagged = new Set();
285
+ const extraOrchs = [];
286
+ let k = 1;
287
+ let lastOrch = opts.orchestrator;
288
+ try {
289
+ // 3. the chain: record + decide for attempt k; open attempt k+1 while the decision says so
290
+ for (;;) {
291
+ const v = verdictOf(lastOrch);
292
+ const resp = responses[k - 1] ?? null;
293
+ const paths = bank(lastOrch, k, resp);
294
+ const d = decideNextAttempt({ k, action: v?.action ?? null, eventRemainingFrac: v?.remainingFrac ?? null, namedPassed: v?.namedPassed ?? 0, checkPassed: v?.checkPassed ?? null, t0Ms: t0, deadlineMs: dl0, nowMs: now(), cfg });
295
+ writeJson(join(attemptsDir, `a${k}.json`), d);
296
+ log(`[AttemptController] R194 attempt-${k} verdict: ${JSON.stringify(d)}`);
297
+ await event({ phase: 'decision', ...d });
298
+ records.push({
299
+ k, action: v?.action ?? null, remainingFrac: d.remainingFrac, namedPassed: d.namedPassed, check: 'none',
300
+ iterations: toolCallIterationsOf(resp),
301
+ sessionTurns: countSessionToolTurns(paths.sessionPath),
302
+ finished: k === 1 || (!!resp && (v?.action ?? null) !== null && tagged.has(k)), rc: resp ? '0' : '1',
303
+ });
304
+ if (!d.go)
305
+ break;
306
+ if (k === 1) {
307
+ if (!snap.commit('attempt1')) {
308
+ log('[AttemptController] R194 commit of attempt 1 FAILED — keeping attempt 1, no further attempts');
309
+ break;
310
+ }
311
+ tagged.add(1);
312
+ }
313
+ const kn = k + 1;
314
+ if (!snap.restore('lift')) {
315
+ log(`[AttemptController] R194 reset to lift FAILED — stopping at attempt ${k}`);
316
+ snap.restore(`attempt${k}`);
317
+ break;
318
+ }
319
+ log(`[AttemptController] R194 tree reset to lift; starting attempt ${kn} (deadline ${d.nextDeadlineMs} ms)`);
320
+ const stateDir = join(attemptsDir, `state-${kn}`);
321
+ let orch = null;
322
+ let rn = null;
323
+ try {
324
+ orch = await opts.createAttemptOrchestrator(kn, { stateDir, storageDir: join(stateDir, 'sessions'), turnDeadlineMs: d.nextDeadlineMs });
325
+ extraOrchs.push(orch);
326
+ rn = await orch.sendMessage(opts.turnContent, opts.messageOptions);
327
+ }
328
+ catch (e) {
329
+ log(`[AttemptController] R194 attempt ${kn} failed: ${String(e?.message ?? e).slice(0, 300)}`);
330
+ }
331
+ responses.push(rn);
332
+ if (snap.commit(`attempt${kn}`))
333
+ tagged.add(kn);
334
+ k = kn;
335
+ if (!orch) { // no orchestrator at all: the attempt is dead; record it and stop
336
+ records.push({ k, action: null, remainingFrac: null, namedPassed: 0, check: 'none', iterations: null, sessionTurns: null, finished: false, rc: '1' });
337
+ break;
338
+ }
339
+ lastOrch = orch;
340
+ }
341
+ if (k < 2)
342
+ return r1;
343
+ // 4. shipped check on every committed tree, latest first (the tree on disk IS the latest); the latest and attempt 1 are always
344
+ // checked, middle attempts only while the original deadline has not passed. No check file = none.
345
+ const chk = detectShippedCheck(opts.projectPath);
346
+ if (chk) {
347
+ for (let j = k; j >= 1; j--) {
348
+ const rec = records.find((r) => r.k === j);
349
+ if (!rec || !tagged.has(j))
350
+ continue;
351
+ if (j !== k && j !== 1 && now() >= t0 + dl0) {
352
+ rec.check = 'skipped';
353
+ continue;
354
+ }
355
+ if (j !== k && !snap.restore(`attempt${j}`))
356
+ continue;
357
+ const { result, output } = runShippedCheck(chk, opts.projectPath, cfg.checkTimeoutMs);
358
+ rec.check = result;
359
+ try {
360
+ writeFileSync(join(attemptsDir, `chk${j}.txt`), output, 'utf-8');
361
+ writeFileSync(join(attemptsDir, `check${j}`), result + '\n', 'utf-8');
362
+ }
363
+ catch { /* best-effort */ }
364
+ }
365
+ }
366
+ // 5. select, restore, merge
367
+ const sel = selectAttempt(records.sort((a, b) => a.k - b.k), chk);
368
+ if (!snap.restore(`attempt${sel.pick}`)) {
369
+ log(`[AttemptController] R194 restore of attempt ${sel.pick} FAILED — restoring attempt 1`);
370
+ snap.restore('attempt1');
371
+ }
372
+ writeJson(join(artifactsDir, 'second-attempt.json'), sel);
373
+ log(`[AttemptController] R194 selection: ${JSON.stringify(sel).slice(0, 600)}`);
374
+ await event({ phase: 'selection', pick: sel.pick, why: sel.why, turnsSource: sel.turnsSource, shippedCheck: sel.shippedCheck, attempts: sel.attempts.map((a) => ({ k: a.k, action: a.action, check: a.check, turns: a.turns, namedPassed: a.namedPassed, finished: a.finished })) });
375
+ const merged = mergeAttemptResponses(responses, sel);
376
+ writeJson(join(artifactsDir, 'response.json'), merged ?? r1);
377
+ return merged ?? r1;
378
+ }
379
+ catch (e) {
380
+ log(`[AttemptController] R194 chain error: ${String(e?.message ?? e).slice(0, 300)} — restoring attempt 1`);
381
+ if (tagged.has(1))
382
+ snap.restore('attempt1');
383
+ return r1;
384
+ }
385
+ finally {
386
+ // attempt orchestrators (k >= 2) are released here, after their verdicts and artifacts were read; attempt 1's belongs to the caller
387
+ for (const o of extraOrchs) {
388
+ try {
389
+ await o.cleanup?.();
390
+ }
391
+ catch { /* best-effort */ }
392
+ }
393
+ }
394
+ }
395
+ //# sourceMappingURL=attemptController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attemptController.js","sourceRoot":"","sources":["../../src/orchestrator/attemptController.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ export * from './OrchestratorFactory.js';
7
7
  export * from './herdrReporter.js';
8
8
  export * from './HerdrSubAgentRunner.js';
9
9
  export * from './APIClient.js';
10
+ export * from './attemptController.js';
10
11
  export * from './structuredOutput.js';
11
12
  export * from './SubAgentTypes.js';
12
13
  export * from './SubAgentEventEmitter.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/orchestrator/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAI/B,cAAc,uBAAuB,CAAC;AAGtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AAGjC,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,OAAO,EACP,aAAa,EACb,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AAEjC,YAAY,EACV,WAAW,EACX,iBAAiB,EAClB,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EACV,eAAe,EACf,cAAc,EACd,eAAe,EACf,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EACV,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/orchestrator/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,wBAAwB,CAAC;AAIvC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AAGjC,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,OAAO,EACP,aAAa,EACb,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AAEjC,YAAY,EACV,WAAW,EACX,iBAAiB,EAClB,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EACV,eAAe,EACf,cAAc,EACd,eAAe,EACf,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EACV,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,kBAAkB,CAAC"}
@@ -7,6 +7,8 @@ export * from './OrchestratorFactory.js';
7
7
  export * from './herdrReporter.js';
8
8
  export * from './HerdrSubAgentRunner.js';
9
9
  export * from './APIClient.js';
10
+ // R239 / P4 (2026-10-07): the second-attempt chain (decision / selection / merge / runner) — the library owns it, the adapter only launches + banks
11
+ export * from './attemptController.js';
10
12
  // StructuredOutput (grok-build port): schema-constrained JSON output via a
11
13
  // request-scoped synthetic tool (pure module — no registry, no wire changes)
12
14
  export * from './structuredOutput.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/orchestrator/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAE/B,2EAA2E;AAC3E,6EAA6E;AAC7E,cAAc,uBAAuB,CAAC;AAEtC,yDAAyD;AACzD,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AAErC,kEAAkE;AAClE,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/orchestrator/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAE/B,oJAAoJ;AACpJ,cAAc,wBAAwB,CAAC;AAEvC,2EAA2E;AAC3E,6EAA6E;AAC7E,cAAc,uBAAuB,CAAC;AAEtC,yDAAyD;AACzD,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AAErC,kEAAkE;AAClE,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC"}