loopforge 3.9.4 → 4.0.7
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 +236 -112
- package/dist/audit.d.ts +73 -15
- package/dist/audit.d.ts.map +1 -1
- package/dist/audit.js +131 -61
- package/dist/audit.js.map +1 -1
- package/dist/canonical-state.d.ts +114 -40
- package/dist/canonical-state.d.ts.map +1 -1
- package/dist/canonical-state.js +276 -182
- package/dist/canonical-state.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +41 -12
- package/dist/cli.js.map +1 -1
- package/dist/cognitive-governance.d.ts +0 -2
- package/dist/cognitive-governance.d.ts.map +1 -1
- package/dist/cognitive-governance.js +0 -4
- package/dist/cognitive-governance.js.map +1 -1
- package/dist/committed-round.d.ts +97 -156
- package/dist/committed-round.d.ts.map +1 -1
- package/dist/committed-round.js +223 -419
- package/dist/committed-round.js.map +1 -1
- package/dist/constraint-lifecycle.d.ts +73 -0
- package/dist/constraint-lifecycle.d.ts.map +1 -0
- package/dist/constraint-lifecycle.js +174 -0
- package/dist/constraint-lifecycle.js.map +1 -0
- package/dist/context-boundary.d.ts +83 -0
- package/dist/context-boundary.d.ts.map +1 -0
- package/dist/context-boundary.js +101 -0
- package/dist/context-boundary.js.map +1 -0
- package/dist/contract-items.d.ts +12 -8
- package/dist/contract-items.d.ts.map +1 -1
- package/dist/contract-items.js +31 -26
- package/dist/contract-items.js.map +1 -1
- package/dist/contract-requirement.d.ts +47 -0
- package/dist/contract-requirement.d.ts.map +1 -0
- package/dist/contract-requirement.js +51 -0
- package/dist/contract-requirement.js.map +1 -0
- package/dist/criterion-status.d.ts +35 -0
- package/dist/criterion-status.d.ts.map +1 -0
- package/dist/criterion-status.js +89 -0
- package/dist/criterion-status.js.map +1 -0
- package/dist/enforcement-gate.d.ts +26 -38
- package/dist/enforcement-gate.d.ts.map +1 -1
- package/dist/enforcement-gate.js +196 -319
- package/dist/enforcement-gate.js.map +1 -1
- package/dist/engine.d.ts +9 -103
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +27 -897
- package/dist/engine.js.map +1 -1
- package/dist/errors.d.ts +41 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +69 -0
- package/dist/errors.js.map +1 -0
- package/dist/evidence-claims.d.ts +33 -31
- package/dist/evidence-claims.d.ts.map +1 -1
- package/dist/evidence-claims.js +58 -72
- package/dist/evidence-claims.js.map +1 -1
- package/dist/evidence-posture-view.d.ts +19 -0
- package/dist/evidence-posture-view.d.ts.map +1 -0
- package/dist/evidence-posture-view.js +116 -0
- package/dist/evidence-posture-view.js.map +1 -0
- package/dist/evidence-posture.d.ts +73 -0
- package/dist/evidence-posture.d.ts.map +1 -0
- package/dist/evidence-posture.js +281 -0
- package/dist/evidence-posture.js.map +1 -0
- package/dist/evidence-provider.d.ts +55 -37
- package/dist/evidence-provider.d.ts.map +1 -1
- package/dist/evidence-provider.js +182 -332
- package/dist/evidence-provider.js.map +1 -1
- package/dist/explain.d.ts +166 -27
- package/dist/explain.d.ts.map +1 -1
- package/dist/explain.js +372 -58
- package/dist/explain.js.map +1 -1
- package/dist/field-accounting.d.ts.map +1 -1
- package/dist/field-accounting.js +3 -22
- package/dist/field-accounting.js.map +1 -1
- package/dist/generate-schema.js +13 -8
- package/dist/generate-schema.js.map +1 -1
- package/dist/git-boundary.d.ts +128 -0
- package/dist/git-boundary.d.ts.map +1 -0
- package/dist/git-boundary.js +625 -0
- package/dist/git-boundary.js.map +1 -0
- package/dist/git-facts.d.ts +22 -0
- package/dist/git-facts.d.ts.map +1 -0
- package/dist/git-facts.js +29 -0
- package/dist/git-facts.js.map +1 -0
- package/dist/git-motion.d.ts +37 -0
- package/dist/git-motion.d.ts.map +1 -0
- package/dist/git-motion.js +59 -0
- package/dist/git-motion.js.map +1 -0
- package/dist/history.d.ts +44 -0
- package/dist/history.d.ts.map +1 -0
- package/dist/history.js +77 -0
- package/dist/history.js.map +1 -0
- package/dist/index.d.ts +19 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -4
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +16 -0
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +80 -14
- package/dist/init.js.map +1 -1
- package/dist/loop-compiler.d.ts +39 -23
- package/dist/loop-compiler.d.ts.map +1 -1
- package/dist/loop-compiler.js +368 -565
- package/dist/loop-compiler.js.map +1 -1
- package/dist/loop-store.d.ts +6 -5
- package/dist/loop-store.d.ts.map +1 -1
- package/dist/loop-store.js +153 -35
- package/dist/loop-store.js.map +1 -1
- package/dist/mcp/round-lifecycle.d.ts +255 -81
- package/dist/mcp/round-lifecycle.d.ts.map +1 -1
- package/dist/mcp/round-lifecycle.js +1552 -539
- package/dist/mcp/round-lifecycle.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +42 -18
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/session.d.ts +81 -39
- package/dist/mcp/session.d.ts.map +1 -1
- package/dist/mcp/session.js +956 -282
- package/dist/mcp/session.js.map +1 -1
- package/dist/mcp/submission-boundary.d.ts +23 -31
- package/dist/mcp/submission-boundary.d.ts.map +1 -1
- package/dist/mcp/submission-boundary.js +242 -92
- package/dist/mcp/submission-boundary.js.map +1 -1
- package/dist/mcp/submission-handle.d.ts +66 -0
- package/dist/mcp/submission-handle.d.ts.map +1 -0
- package/dist/mcp/submission-handle.js +173 -0
- package/dist/mcp/submission-handle.js.map +1 -0
- package/dist/mcp/tools.d.ts +17 -7
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +707 -244
- package/dist/mcp/tools.js.map +1 -1
- package/dist/open-question.d.ts +7 -0
- package/dist/open-question.d.ts.map +1 -0
- package/dist/open-question.js +14 -0
- package/dist/open-question.js.map +1 -0
- package/dist/policy-metrics.d.ts +31 -21
- package/dist/policy-metrics.d.ts.map +1 -1
- package/dist/policy-metrics.js +117 -64
- package/dist/policy-metrics.js.map +1 -1
- package/dist/policy.d.ts +11 -39
- package/dist/policy.d.ts.map +1 -1
- package/dist/policy.js +12 -12
- package/dist/policy.js.map +1 -1
- package/dist/progress.d.ts +45 -0
- package/dist/progress.d.ts.map +1 -0
- package/dist/progress.js +136 -0
- package/dist/progress.js.map +1 -0
- package/dist/prompt-assembler.d.ts +20 -6
- package/dist/prompt-assembler.d.ts.map +1 -1
- package/dist/prompt-assembler.js +475 -479
- package/dist/prompt-assembler.js.map +1 -1
- package/dist/prompt-coverage.d.ts +0 -6
- package/dist/prompt-coverage.d.ts.map +1 -1
- package/dist/prompt-coverage.js +4 -8
- package/dist/prompt-coverage.js.map +1 -1
- package/dist/prompt-freshness.d.ts +6 -17
- package/dist/prompt-freshness.d.ts.map +1 -1
- package/dist/prompt-freshness.js +27 -22
- package/dist/prompt-freshness.js.map +1 -1
- package/dist/prompt-policy.d.ts +14 -7
- package/dist/prompt-policy.d.ts.map +1 -1
- package/dist/prompt-policy.js +21 -5
- package/dist/prompt-policy.js.map +1 -1
- package/dist/protocol.d.ts +843 -424
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +73 -102
- package/dist/protocol.js.map +1 -1
- package/dist/recovery-guidance.d.ts +13 -0
- package/dist/recovery-guidance.d.ts.map +1 -0
- package/dist/recovery-guidance.js +15 -0
- package/dist/recovery-guidance.js.map +1 -0
- package/dist/recovery.d.ts +68 -0
- package/dist/recovery.d.ts.map +1 -0
- package/dist/recovery.js +234 -0
- package/dist/recovery.js.map +1 -0
- package/dist/replay.d.ts +42 -8
- package/dist/replay.d.ts.map +1 -1
- package/dist/replay.js +311 -84
- package/dist/replay.js.map +1 -1
- package/dist/result-facts.d.ts +45 -0
- package/dist/result-facts.d.ts.map +1 -0
- package/dist/result-facts.js +86 -0
- package/dist/result-facts.js.map +1 -0
- package/dist/round-contract.d.ts +38 -8
- package/dist/round-contract.d.ts.map +1 -1
- package/dist/round-contract.js +71 -31
- package/dist/round-contract.js.map +1 -1
- package/dist/round-coordinator.d.ts +41 -89
- package/dist/round-coordinator.d.ts.map +1 -1
- package/dist/round-coordinator.js +250 -267
- package/dist/round-coordinator.js.map +1 -1
- package/dist/round-driver.d.ts +56 -16
- package/dist/round-driver.d.ts.map +1 -1
- package/dist/round-driver.js +225 -39
- package/dist/round-driver.js.map +1 -1
- package/dist/round-facts.d.ts +33 -52
- package/dist/round-facts.d.ts.map +1 -1
- package/dist/round-facts.js +51 -160
- package/dist/round-facts.js.map +1 -1
- package/dist/round-guidance.d.ts +56 -0
- package/dist/round-guidance.d.ts.map +1 -0
- package/dist/round-guidance.js +161 -0
- package/dist/round-guidance.js.map +1 -0
- package/dist/round-outcome.d.ts +21 -0
- package/dist/round-outcome.d.ts.map +1 -0
- package/dist/round-outcome.js +31 -0
- package/dist/round-outcome.js.map +1 -0
- package/dist/round-transaction.d.ts +168 -21
- package/dist/round-transaction.d.ts.map +1 -1
- package/dist/round-transaction.js +837 -38
- package/dist/round-transaction.js.map +1 -1
- package/dist/self-eval.d.ts +37 -61
- package/dist/self-eval.d.ts.map +1 -1
- package/dist/self-eval.js +413 -392
- package/dist/self-eval.js.map +1 -1
- package/dist/storage.d.ts +16 -0
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +54 -4
- package/dist/storage.js.map +1 -1
- package/dist/subgoal-state.d.ts +2 -3
- package/dist/subgoal-state.d.ts.map +1 -1
- package/dist/subgoal-state.js +2 -3
- package/dist/subgoal-state.js.map +1 -1
- package/dist/submission-guidance.d.ts +29 -21
- package/dist/submission-guidance.d.ts.map +1 -1
- package/dist/submission-guidance.js +308 -260
- package/dist/submission-guidance.js.map +1 -1
- package/dist/submission-receipt.d.ts +16 -8
- package/dist/submission-receipt.d.ts.map +1 -1
- package/dist/submission-receipt.js +145 -51
- package/dist/submission-receipt.js.map +1 -1
- package/dist/token-utils.d.ts +28 -7
- package/dist/token-utils.d.ts.map +1 -1
- package/dist/token-utils.js +27 -11
- package/dist/token-utils.js.map +1 -1
- package/dist/transaction-identity.d.ts +9 -0
- package/dist/transaction-identity.d.ts.map +1 -0
- package/dist/transaction-identity.js +69 -0
- package/dist/transaction-identity.js.map +1 -0
- package/dist/verification-actions.d.ts.map +1 -1
- package/dist/verification-actions.js +10 -11
- package/dist/verification-actions.js.map +1 -1
- package/dist/verification-gate.d.ts +23 -47
- package/dist/verification-gate.d.ts.map +1 -1
- package/dist/verification-gate.js +202 -423
- package/dist/verification-gate.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/working-memory.d.ts +187 -0
- package/dist/working-memory.d.ts.map +1 -0
- package/dist/working-memory.js +767 -0
- package/dist/working-memory.js.map +1 -0
- package/dist/workspace-checkpoint.d.ts +88 -0
- package/dist/workspace-checkpoint.d.ts.map +1 -0
- package/dist/workspace-checkpoint.js +326 -0
- package/dist/workspace-checkpoint.js.map +1 -0
- package/dist/workspace-restore.d.ts +68 -0
- package/dist/workspace-restore.d.ts.map +1 -0
- package/dist/workspace-restore.js +604 -0
- package/dist/workspace-restore.js.map +1 -0
- package/dist/workspace.d.ts +0 -9
- package/dist/workspace.d.ts.map +1 -1
- package/dist/workspace.js +0 -17
- package/dist/workspace.js.map +1 -1
- package/loop_policy.json +4 -18
- package/package.json +68 -68
- package/skills/forge/SKILL.md +212 -0
- package/skills/forge/references/evidence-and-contracts.md +204 -0
- package/skills/forge/references/recovery-and-views.md +188 -0
- package/dist/cognitive-facts.d.ts +0 -30
- package/dist/cognitive-facts.d.ts.map +0 -1
- package/dist/cognitive-facts.js +0 -113
- package/dist/cognitive-facts.js.map +0 -1
- package/dist/loop-extras-parser.d.ts +0 -81
- package/dist/loop-extras-parser.d.ts.map +0 -1
- package/dist/loop-extras-parser.js +0 -213
- package/dist/loop-extras-parser.js.map +0 -1
- package/dist/loop-projection.d.ts +0 -6
- package/dist/loop-projection.d.ts.map +0 -1
- package/dist/loop-projection.js +0 -28
- package/dist/loop-projection.js.map +0 -1
- package/skills/perception/SKILL.md +0 -389
package/dist/recovery.js
ADDED
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
/** v3.9.7: checkpoint selection and committed rollback-directive facts.
|
|
2
|
+
*
|
|
3
|
+
* The Agent owns the decision to abandon a branch and the checkpoint it
|
|
4
|
+
* selects. This module only resolves a checkpoint reference against the
|
|
5
|
+
* current branch, validates the reference/manifest binding, and derives the
|
|
6
|
+
* rollback directive facts. It never chooses a target, never judges a reason,
|
|
7
|
+
* and never mutates the workspace. Restore execution lives in
|
|
8
|
+
* `workspace-restore.ts`.
|
|
9
|
+
*/
|
|
10
|
+
import { deriveFindingId } from "./token-utils.js";
|
|
11
|
+
import { branchRounds, } from "./committed-round.js";
|
|
12
|
+
function invalid(reason, detail) {
|
|
13
|
+
return { ok: false, code: "recovery_invalid", reason, detail };
|
|
14
|
+
}
|
|
15
|
+
function unavailable(reason, detail) {
|
|
16
|
+
return { ok: false, code: "recovery_unavailable", reason, detail };
|
|
17
|
+
}
|
|
18
|
+
function refsOfSnapshot(snapshot) {
|
|
19
|
+
if (!snapshot)
|
|
20
|
+
return [];
|
|
21
|
+
const refs = [];
|
|
22
|
+
if (snapshot.beforeCheckpoint)
|
|
23
|
+
refs.push(snapshot.beforeCheckpoint);
|
|
24
|
+
for (const ref of snapshot.checkpoints ?? [])
|
|
25
|
+
refs.push(ref);
|
|
26
|
+
return refs;
|
|
27
|
+
}
|
|
28
|
+
function sameTarget(refs) {
|
|
29
|
+
if (refs.length <= 1)
|
|
30
|
+
return true;
|
|
31
|
+
const first = refs[0];
|
|
32
|
+
return refs.every((ref) => ref.role === first.role &&
|
|
33
|
+
ref.round === first.round &&
|
|
34
|
+
ref.redoRound === first.redoRound &&
|
|
35
|
+
ref.contentHash === first.contentHash);
|
|
36
|
+
}
|
|
37
|
+
/** Resolve a checkpoint id against the held transaction and the current
|
|
38
|
+
* branch's committed evaluation transactions. The held reference wins when
|
|
39
|
+
* the same state also appears in committed history (retry re-binding).
|
|
40
|
+
*
|
|
41
|
+
* This function is pure: it only uses committed read models and the held
|
|
42
|
+
* snapshot. The caller loads and validates the manifest. */
|
|
43
|
+
export function findCheckpointRef(input) {
|
|
44
|
+
const { checkpointId } = input;
|
|
45
|
+
if (!/^ck-[a-f0-9]{24}$/.test(checkpointId)) {
|
|
46
|
+
return invalid("invalid_checkpoint_id", "checkpoint id must be ck-<24 hex>");
|
|
47
|
+
}
|
|
48
|
+
const heldRefs = refsOfSnapshot(input.held).filter((ref) => ref.checkpointId === checkpointId);
|
|
49
|
+
const committedRefs = [];
|
|
50
|
+
for (const view of branchRounds(input.entries)) {
|
|
51
|
+
if (view.kind !== "evaluation")
|
|
52
|
+
continue;
|
|
53
|
+
for (const ref of [
|
|
54
|
+
...(view.beforeCheckpoint ? [view.beforeCheckpoint] : []),
|
|
55
|
+
...view.checkpoints,
|
|
56
|
+
]) {
|
|
57
|
+
if (ref.checkpointId === checkpointId)
|
|
58
|
+
committedRefs.push(ref);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
const all = [...heldRefs, ...committedRefs];
|
|
62
|
+
if (all.length === 0) {
|
|
63
|
+
return invalid("target_not_visible", `checkpoint ${checkpointId} is not referenced by the held transaction or a committed evaluation on the current branch`);
|
|
64
|
+
}
|
|
65
|
+
if (!sameTarget(all)) {
|
|
66
|
+
return invalid("ambiguous_checkpoint", `checkpoint ${checkpointId} resolves to conflicting role/round/contentHash references`);
|
|
67
|
+
}
|
|
68
|
+
return { ok: true, ref: heldRefs[0] ?? committedRefs[0] };
|
|
69
|
+
}
|
|
70
|
+
/** Validate the manifest against its reference. Content/blob/HEAD checks
|
|
71
|
+
* belong to the restore preflight (they need the workspace and object store). */
|
|
72
|
+
export function validateCheckpointManifest(ref, manifest) {
|
|
73
|
+
if (!manifest) {
|
|
74
|
+
return unavailable("manifest_missing", `manifest for ${ref.checkpointId} is missing or unreadable`);
|
|
75
|
+
}
|
|
76
|
+
if (manifest.checkpointId !== ref.checkpointId ||
|
|
77
|
+
manifest.contentHash !== ref.contentHash ||
|
|
78
|
+
manifest.role !== ref.role ||
|
|
79
|
+
manifest.round !== ref.round ||
|
|
80
|
+
manifest.loopId.length === 0) {
|
|
81
|
+
return unavailable("manifest_mismatch", `manifest for ${ref.checkpointId} does not match its transaction reference`);
|
|
82
|
+
}
|
|
83
|
+
const fingerprintPaths = new Set(Object.keys(manifest.fingerprints));
|
|
84
|
+
for (const path of manifest.contents) {
|
|
85
|
+
if (!fingerprintPaths.has(path)) {
|
|
86
|
+
return unavailable("manifest_mismatch", `manifest content path ${path} has no boundary fingerprint`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return { ok: true, manifest };
|
|
90
|
+
}
|
|
91
|
+
/** The before-image that represents the state at the start of `redoRound`.
|
|
92
|
+
* Used by machine backtrack: the state after round T is the before-image of
|
|
93
|
+
* round T+1. Returns null when that image was never materialized. */
|
|
94
|
+
export function checkpointForRoundBoundary(input) {
|
|
95
|
+
const { redoRound } = input;
|
|
96
|
+
if (input.heldRound === redoRound && input.heldBeforeCheckpoint) {
|
|
97
|
+
return input.heldBeforeCheckpoint;
|
|
98
|
+
}
|
|
99
|
+
const view = branchRounds(input.entries).find((round) => round.round === redoRound && round.kind === "evaluation");
|
|
100
|
+
return view?.beforeCheckpoint ?? null;
|
|
101
|
+
}
|
|
102
|
+
function observationFingerprints(observation) {
|
|
103
|
+
if (!observation || observation.kind !== "git" || observation.status !== "observed") {
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
const data = observation.data;
|
|
107
|
+
return data && typeof data === "object" && data.fingerprints &&
|
|
108
|
+
typeof data.fingerprints === "object"
|
|
109
|
+
? data.fingerprints
|
|
110
|
+
: null;
|
|
111
|
+
}
|
|
112
|
+
function firstObservedGit(observations) {
|
|
113
|
+
return observations.find((observation) => observation.kind === "git" && observation.status === "observed");
|
|
114
|
+
}
|
|
115
|
+
function arrayStrings(value) {
|
|
116
|
+
return Array.isArray(value)
|
|
117
|
+
? value.filter((item) => typeof item === "string")
|
|
118
|
+
: [];
|
|
119
|
+
}
|
|
120
|
+
/** Union-key comparison against the target snapshot. Paths whose content or
|
|
121
|
+
* type differs — including additions and deletions — are the abandoned work
|
|
122
|
+
* seen since the checkpoint. A file changed and changed back is not a net
|
|
123
|
+
* difference, matching the round-delta semantics. */
|
|
124
|
+
function addBoundaryDiff(target, observation, into) {
|
|
125
|
+
const fingerprints = observationFingerprints(observation);
|
|
126
|
+
if (!fingerprints)
|
|
127
|
+
return;
|
|
128
|
+
const keys = new Set([...Object.keys(target), ...Object.keys(fingerprints)]);
|
|
129
|
+
for (const key of keys) {
|
|
130
|
+
if (target[key] !== fingerprints[key])
|
|
131
|
+
into.add(key);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/** Derive the committed directive. Pure: the caller has validated the target
|
|
135
|
+
* and collected the abandoned/current evidence. `skipped_files` is report
|
|
136
|
+
* data (never a restore gate); discoveries are preserved only from committed
|
|
137
|
+
* abandoned rounds, never from a rejected/in-flight trigger attempt. */
|
|
138
|
+
export function deriveRecoveryDirective(input) {
|
|
139
|
+
const observedSkippedFiles = new Set();
|
|
140
|
+
const reportedSkippedFiles = new Set();
|
|
141
|
+
const skippedDiscoveries = [];
|
|
142
|
+
const machineFailedRounds = [];
|
|
143
|
+
const approaches = [];
|
|
144
|
+
const wrongAssumptions = [];
|
|
145
|
+
const addDiscovery = (text) => {
|
|
146
|
+
if (text && !skippedDiscoveries.includes(text))
|
|
147
|
+
skippedDiscoveries.push(text);
|
|
148
|
+
};
|
|
149
|
+
const addAssumption = (text) => {
|
|
150
|
+
if (text && !wrongAssumptions.includes(text)) {
|
|
151
|
+
wrongAssumptions.push(text.slice(0, 500));
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
for (const view of input.abandonedRounds) {
|
|
155
|
+
addBoundaryDiff(input.targetManifest.fingerprints, firstObservedGit(view.afterEvidence), observedSkippedFiles);
|
|
156
|
+
for (const file of arrayStrings(view.executionReport?.files_changed)) {
|
|
157
|
+
reportedSkippedFiles.add(file);
|
|
158
|
+
}
|
|
159
|
+
// v4.0.3: only a MACHINE-detected failure is a failed round. An agent's
|
|
160
|
+
// output_summary is a report, even when the agent chose to abandon.
|
|
161
|
+
if (input.origin === "machine" &&
|
|
162
|
+
view.verificationFlags.some((flag) => flag.severity === "error")) {
|
|
163
|
+
machineFailedRounds.push(view.round);
|
|
164
|
+
}
|
|
165
|
+
if (view.outputSummary?.trim()) {
|
|
166
|
+
approaches.push(view.outputSummary.trim().slice(0, 200));
|
|
167
|
+
}
|
|
168
|
+
for (const assumption of arrayStrings(view.evaluation?.wrong_assumptions)) {
|
|
169
|
+
addAssumption(assumption);
|
|
170
|
+
}
|
|
171
|
+
for (const discovery of arrayStrings(view.evaluation?.discovered_constraints)) {
|
|
172
|
+
addDiscovery(discovery);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
// The current in-flight transaction is not committed history: it can
|
|
176
|
+
// contribute its machine net-diff and its trigger assumptions, but never a
|
|
177
|
+
// discovery that would become an active constraint.
|
|
178
|
+
addBoundaryDiff(input.targetManifest.fingerprints, firstObservedGit(input.currentAfterEvidence), observedSkippedFiles);
|
|
179
|
+
if (input.triggerEvaluation) {
|
|
180
|
+
for (const assumption of arrayStrings(input.triggerEvaluation.wrong_assumptions)) {
|
|
181
|
+
addAssumption(assumption);
|
|
182
|
+
}
|
|
183
|
+
const summary = input.triggerEvaluation.output_summary?.trim() ?? "";
|
|
184
|
+
if (summary && input.triggerRound !== undefined) {
|
|
185
|
+
const approach = summary.slice(0, 200);
|
|
186
|
+
if (!approaches.includes(approach))
|
|
187
|
+
approaches.push(approach);
|
|
188
|
+
if (input.origin === "machine" &&
|
|
189
|
+
!machineFailedRounds.includes(input.triggerRound)) {
|
|
190
|
+
machineFailedRounds.push(input.triggerRound);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
const findings = [];
|
|
195
|
+
const seenFindings = new Set();
|
|
196
|
+
for (const flag of input.triggerFindings ?? []) {
|
|
197
|
+
const id = deriveFindingId(flag);
|
|
198
|
+
if (seenFindings.has(id))
|
|
199
|
+
continue;
|
|
200
|
+
seenFindings.add(id);
|
|
201
|
+
findings.push({ ...flag, detail: flag.detail.slice(0, 500) });
|
|
202
|
+
if (findings.length >= 12)
|
|
203
|
+
break;
|
|
204
|
+
}
|
|
205
|
+
const target = {
|
|
206
|
+
checkpoint_id: input.targetRef.checkpointId,
|
|
207
|
+
content_hash: input.targetRef.contentHash,
|
|
208
|
+
role: input.targetRef.role,
|
|
209
|
+
round: input.targetRef.round,
|
|
210
|
+
round_id: input.targetRef.roundId,
|
|
211
|
+
transaction_id: input.targetRef.transactionId,
|
|
212
|
+
redo_round: input.targetRef.redoRound,
|
|
213
|
+
};
|
|
214
|
+
const observed = [...observedSkippedFiles].sort();
|
|
215
|
+
const reported = [...reportedSkippedFiles].sort();
|
|
216
|
+
const skipped = [...new Set([...observed, ...reported])].sort();
|
|
217
|
+
return {
|
|
218
|
+
origin: input.origin,
|
|
219
|
+
reason: input.reason.slice(0, 500),
|
|
220
|
+
...(input.triggerRule ? { trigger_rule: input.triggerRule } : {}),
|
|
221
|
+
target,
|
|
222
|
+
skipped_files: skipped,
|
|
223
|
+
observed_skipped_files: observed,
|
|
224
|
+
reported_skipped_files: reported,
|
|
225
|
+
abandoned_rounds: input.abandonedRounds.map((view) => view.round),
|
|
226
|
+
skipped_discoveries: skippedDiscoveries,
|
|
227
|
+
failed_rounds: machineFailedRounds,
|
|
228
|
+
approaches,
|
|
229
|
+
wrong_assumptions: wrongAssumptions,
|
|
230
|
+
...(findings.length > 0 ? { trigger_findings: findings } : {}),
|
|
231
|
+
transaction_id: input.transactionId,
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=recovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recovery.js","sourceRoot":"","sources":["../src/recovery.ts"],"names":[],"mappings":"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"}
|
package/dist/replay.d.ts
CHANGED
|
@@ -1,21 +1,55 @@
|
|
|
1
|
-
/** ReplayBackend — time-travel queries over
|
|
1
|
+
/** ReplayBackend — time-travel queries over committed rounds.
|
|
2
2
|
*
|
|
3
3
|
* Depends on LoopStore interface — no direct filesystem access.
|
|
4
|
-
*
|
|
4
|
+
* Every query loads the same committed history once and reads the branch's
|
|
5
|
+
* `CommittedRoundView`s; there is no second decode pass and no synthesized
|
|
6
|
+
* lineage-shaped entry.
|
|
5
7
|
*/
|
|
6
|
-
import type { LoopStore
|
|
7
|
-
import type { LegacyRound } from "./committed-round.js";
|
|
8
|
+
import type { LoopStore } from "./loop-store.js";
|
|
9
|
+
import type { CommittedRoundView, LegacyRound } from "./committed-round.js";
|
|
10
|
+
export declare const REPLAY_DEFAULT_ROUNDS = 10;
|
|
11
|
+
export declare const REPLAY_MAX_WINDOW_ROUNDS = 50;
|
|
12
|
+
/** Invalid explicit replay window. The MCP boundary maps this to
|
|
13
|
+
* `invalid_argument`. */
|
|
14
|
+
export declare class ReplayWindowError extends Error {
|
|
15
|
+
readonly code = "invalid_argument";
|
|
16
|
+
constructor(message: string);
|
|
17
|
+
}
|
|
18
|
+
export interface ReplayWindowOptions {
|
|
19
|
+
start?: number;
|
|
20
|
+
end?: number;
|
|
21
|
+
}
|
|
22
|
+
export interface ReplayWindow {
|
|
23
|
+
/** First round POSITION returned (legacy rows included); 0 when empty. */
|
|
24
|
+
start: number;
|
|
25
|
+
/** Last round POSITION returned (legacy rows included); 0 when empty. */
|
|
26
|
+
end: number;
|
|
27
|
+
/** Distinct committed round positions on the branch, INCLUDING legacy
|
|
28
|
+
* envelopes that are not parseable history. The loss stays counted. */
|
|
29
|
+
totalRounds: number;
|
|
30
|
+
/** Round positions exist before this window. */
|
|
31
|
+
hasBefore: boolean;
|
|
32
|
+
/** Round positions exist after this window. */
|
|
33
|
+
hasAfter: boolean;
|
|
34
|
+
}
|
|
35
|
+
export interface ReplayPage {
|
|
36
|
+
timeline: Record<string, unknown>[];
|
|
37
|
+
window: ReplayWindow;
|
|
38
|
+
}
|
|
8
39
|
export declare class ReplayBackend {
|
|
9
40
|
private readonly store;
|
|
10
41
|
constructor(store: LoopStore);
|
|
11
|
-
getRound(loopId: string, roundNum: number):
|
|
42
|
+
getRound(loopId: string, roundNum: number): CommittedRoundView | null;
|
|
12
43
|
replay(loopId: string, opts?: {
|
|
13
44
|
start?: number;
|
|
14
45
|
end?: number;
|
|
15
|
-
}):
|
|
16
|
-
|
|
46
|
+
}): CommittedRoundView[];
|
|
47
|
+
/** v4.0.2: the paged timeline. The returned `window` tells the Agent
|
|
48
|
+
* whether more committed rounds exist before/after this page. */
|
|
49
|
+
page(loopId: string, opts?: ReplayWindowOptions): ReplayPage;
|
|
50
|
+
/** Backwards-compatible array view. Defaults to the same bounded page. */
|
|
51
|
+
timeline(loopId: string, opts?: ReplayWindowOptions): Record<string, unknown>[];
|
|
17
52
|
/** v3.9.1: explicit legacy-envelope report for the tool envelope. */
|
|
18
53
|
legacyRounds(loopId: string): LegacyRound[];
|
|
19
|
-
private maxRound;
|
|
20
54
|
}
|
|
21
55
|
//# sourceMappingURL=replay.d.ts.map
|
package/dist/replay.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replay.d.ts","sourceRoot":"","sources":["../src/replay.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"replay.d.ts","sourceRoot":"","sources":["../src/replay.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAO5E,eAAO,MAAM,qBAAqB,KAAK,CAAC;AACxC,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAY3C;0BAC0B;AAC1B,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,IAAI,sBAAsB;gBACvB,OAAO,EAAE,MAAM;CAI5B;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,0EAA0E;IAC1E,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,GAAG,EAAE,MAAM,CAAC;IACZ;4EACwE;IACxE,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,SAAS,EAAE,OAAO,CAAC;IACnB,+CAA+C;IAC/C,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACpC,MAAM,EAAE,YAAY,CAAC;CACtB;AAsGD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;gBAEtB,KAAK,EAAE,SAAS;IAM5B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;IASrE,MAAM,CACJ,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GACtC,kBAAkB,EAAE;IAUvB;sEACkE;IAClE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,UAAU;IA0N5D,0EAA0E;IAC1E,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;IAI/E,qEAAqE;IACrE,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE;CAG5C"}
|