loopforge 3.9.2 → 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 +152 -40
- package/dist/canonical-state.d.ts.map +1 -1
- package/dist/canonical-state.js +382 -206
- 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 +105 -141
- package/dist/committed-round.d.ts.map +1 -1
- package/dist/committed-round.js +249 -372
- 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 +32 -67
- package/dist/enforcement-gate.d.ts.map +1 -1
- package/dist/enforcement-gate.js +203 -439
- 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 +28 -887
- 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 +167 -27
- package/dist/explain.d.ts.map +1 -1
- package/dist/explain.js +373 -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 +51 -19
- package/dist/loop-compiler.d.ts.map +1 -1
- package/dist/loop-compiler.js +423 -507
- 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 +285 -81
- package/dist/mcp/round-lifecycle.d.ts.map +1 -1
- package/dist/mcp/round-lifecycle.js +1629 -574
- package/dist/mcp/round-lifecycle.js.map +1 -1
- package/dist/mcp/server.d.ts +5 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +61 -19
- 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 +963 -271
- 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 -82
- 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 +763 -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 +15 -40
- package/dist/policy.d.ts.map +1 -1
- package/dist/policy.js +13 -13
- 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 +28 -9
- package/dist/prompt-assembler.d.ts.map +1 -1
- package/dist/prompt-assembler.js +592 -603
- package/dist/prompt-assembler.js.map +1 -1
- package/dist/prompt-coverage.d.ts +39 -0
- package/dist/prompt-coverage.d.ts.map +1 -0
- package/dist/prompt-coverage.js +80 -0
- package/dist/prompt-coverage.js.map +1 -0
- package/dist/prompt-freshness.d.ts +25 -0
- package/dist/prompt-freshness.d.ts.map +1 -0
- package/dist/prompt-freshness.js +88 -0
- package/dist/prompt-freshness.js.map +1 -0
- package/dist/prompt-policy.d.ts +14 -4
- package/dist/prompt-policy.d.ts.map +1 -1
- package/dist/prompt-policy.js +29 -10
- package/dist/prompt-policy.js.map +1 -1
- package/dist/protocol.d.ts +875 -419
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +73 -99
- 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 +45 -91
- package/dist/round-coordinator.d.ts.map +1 -1
- package/dist/round-coordinator.js +254 -271
- 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 +54 -157
- 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 +856 -39
- package/dist/round-transaction.js.map +1 -1
- package/dist/self-eval.d.ts +40 -60
- package/dist/self-eval.d.ts.map +1 -1
- package/dist/self-eval.js +455 -384
- 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 +43 -21
- package/dist/submission-guidance.d.ts.map +1 -1
- package/dist/submission-guidance.js +368 -262
- 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 +146 -51
- package/dist/submission-receipt.js.map +1 -1
- package/dist/token-utils.d.ts +47 -7
- package/dist/token-utils.d.ts.map +1 -1
- package/dist/token-utils.js +66 -15
- 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 +13 -0
- package/dist/verification-actions.d.ts.map +1 -0
- package/dist/verification-actions.js +44 -0
- package/dist/verification-actions.js.map +1 -0
- package/dist/verification-gate.d.ts +26 -46
- package/dist/verification-gate.d.ts.map +1 -1
- package/dist/verification-gate.js +218 -427
- 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 +5 -19
- package/package.json +2 -2
- 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 -370
|
@@ -7,71 +7,107 @@
|
|
|
7
7
|
* future CLI command, or any direct `mgr.advance()` got NONE of it. The
|
|
8
8
|
* handler now only maps the result onto its tool envelope.
|
|
9
9
|
*
|
|
10
|
-
* The placement is also what makes the ordering invariants hold.
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* agent after the wrong problem.
|
|
10
|
+
* The placement is also what makes the ordering invariants hold. v4.0.0:
|
|
11
|
+
* `SessionManager` validates the `submissionHandle` (shape, session, exact
|
|
12
|
+
* held snapshot) BEFORE this boundary and before its queue/lease heartbeat.
|
|
13
|
+
* A stale handle short-circuits; only a matching handle's payload is judged
|
|
14
|
+
* here. AGENTS.md's durable-effect invariant is unchanged: an invalid
|
|
15
|
+
* evaluation must not save session state, write the Vault, run verification
|
|
16
|
+
* or enforcement gates, increment rejection state, or record metrics. The
|
|
17
|
+
* whole boundary still runs before the session queue and before the lease
|
|
18
|
+
* heartbeat.
|
|
20
19
|
*
|
|
21
|
-
* This module
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* disagree about it.
|
|
20
|
+
* This module derives the reference spaces the boundary reads from the same
|
|
21
|
+
* committed history window the prompt was compiled from, so the prompt, the
|
|
22
|
+
* boundary and `submission_guidance` cannot disagree about them.
|
|
25
23
|
*/
|
|
26
|
-
import { queryLoopEntries } from "../loop-store.js";
|
|
27
|
-
import { Mode } from "../protocol.js";
|
|
28
24
|
import { deriveActiveRoundContract } from "../round-contract.js";
|
|
29
|
-
import {
|
|
25
|
+
import { deriveContractRequirement } from "../contract-requirement.js";
|
|
26
|
+
import { historyWindow, loadCommittedHistory } from "../history.js";
|
|
30
27
|
import { boundedEmergedSubtasks, normalizeSelfEvaluation, parseSubGoalUpdates, validateContractShape, validateCoreSelfEvaluation, validateSubGoalUpdatesShape, } from "../self-eval.js";
|
|
31
|
-
import { deriveEmergedItems, validateSubGoalUpdates } from "../subgoal-state.js";
|
|
32
|
-
import { isConfiguredCommand } from "../policy.js";
|
|
33
|
-
import {
|
|
34
|
-
import {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
* stale reuse), recompiled otherwise with `persistLineage: false` so it never
|
|
39
|
-
* writes the Vault, and null when it cannot be observed. Callers fail OPEN:
|
|
40
|
-
* an unobservable reference space must not become a rejection. */
|
|
41
|
-
export function compileSessionContext(session) {
|
|
42
|
-
const cached = session.lastCompileResponse;
|
|
43
|
-
const expectedRoundId = session.roundSnapshot?.roundId
|
|
44
|
-
?? `loop:${session.loopId}:round:${session.currentRound}`;
|
|
45
|
-
if (cached?.prompt_artifact && cached.prompt_artifact.roundId === expectedRoundId) {
|
|
46
|
-
return cached;
|
|
47
|
-
}
|
|
28
|
+
import { deriveEmergedItems, deriveSubGoals, validateSubGoalUpdates, } from "../subgoal-state.js";
|
|
29
|
+
import { deriveConfiguredCapability, isConfiguredCommand } from "../policy.js";
|
|
30
|
+
import { canonicalContractItemText, deriveCriterionId, isRecord, uniqueNormalized, } from "../token-utils.js";
|
|
31
|
+
import { latestObjective } from "../loop-compiler.js";
|
|
32
|
+
import { deriveConstraintProvenance, resolveConstraintRetractions, } from "../constraint-lifecycle.js";
|
|
33
|
+
import { getPolicy } from "../policy.js";
|
|
34
|
+
function referenceFactsFor(store, session) {
|
|
48
35
|
try {
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
const
|
|
61
|
-
|
|
36
|
+
const history = loadCommittedHistory(store, session.loopId);
|
|
37
|
+
const entries = history.entries;
|
|
38
|
+
const windowRounds = historyWindow(history, session.currentRound);
|
|
39
|
+
const subGoals = deriveSubGoals({
|
|
40
|
+
loopId: session.loopId,
|
|
41
|
+
currentRound: session.currentRound,
|
|
42
|
+
rounds: windowRounds,
|
|
43
|
+
});
|
|
44
|
+
// v3.9.6: the held acceptance is the operator fact. Committed objective
|
|
45
|
+
// lineage is the fallback for a snapshot that predates it — never a
|
|
46
|
+
// second compile of mutable session state.
|
|
47
|
+
const objective = session.roundSnapshot?.operatorAcceptance
|
|
48
|
+
? {
|
|
49
|
+
objective: session.roundSnapshot.operatorAcceptance.task,
|
|
50
|
+
success_criteria: session.roundSnapshot.operatorAcceptance.success_criteria,
|
|
51
|
+
hard_constraints: session.roundSnapshot.operatorAcceptance.hard_constraints,
|
|
52
|
+
created_at_round: 1,
|
|
53
|
+
loop_id: session.loopId,
|
|
54
|
+
}
|
|
55
|
+
: latestObjective(session.loopId, { results: entries });
|
|
56
|
+
const criteriaTexts = objective?.success_criteria ?? null;
|
|
57
|
+
const criteria = criteriaTexts === null
|
|
58
|
+
? null
|
|
59
|
+
: uniqueNormalized([...criteriaTexts]).map((text) => ({
|
|
60
|
+
id: deriveCriterionId(text),
|
|
61
|
+
text,
|
|
62
|
+
}));
|
|
63
|
+
// The held prompt's compile stamped the exact active set it rendered.
|
|
64
|
+
// This is the same text set the prompt carried; provenance is re-derived
|
|
65
|
+
// from the committed window, never from a second ledger.
|
|
66
|
+
const rawActive = session.roundSnapshot?.compiled?.constraintsActive ?? null;
|
|
67
|
+
const pending = history.pendingDirective?.recovery?.target.redo_round ===
|
|
68
|
+
session.currentRound
|
|
69
|
+
? history.pendingDirective
|
|
70
|
+
: null;
|
|
71
|
+
const preservedDiscoveries = pending?.recovery &&
|
|
72
|
+
getPolicy().engine.backtrack_preserve_discoveries
|
|
73
|
+
? pending.recovery.skipped_discoveries
|
|
74
|
+
: [];
|
|
75
|
+
const roundOnePlan = session.currentRound === 1
|
|
76
|
+
? objective?.hard_constraints ?? []
|
|
77
|
+
: [];
|
|
78
|
+
const constraints = rawActive === null
|
|
79
|
+
? null
|
|
80
|
+
: uniqueNormalized(rawActive).map((text) => ({
|
|
81
|
+
text,
|
|
82
|
+
provenance: deriveConstraintProvenance({
|
|
83
|
+
text,
|
|
84
|
+
objective,
|
|
85
|
+
windowRounds,
|
|
86
|
+
roundOnePlan,
|
|
87
|
+
preservedDiscoveries,
|
|
88
|
+
preservedRound: pending?.round,
|
|
89
|
+
}),
|
|
90
|
+
}));
|
|
91
|
+
const previouslyRetired = uniqueNormalized(windowRounds.flatMap((round) => round.compiledRetirements ?? round.retractedConstraints ?? []));
|
|
92
|
+
return { subGoals, criteria, constraints, previouslyRetired };
|
|
62
93
|
}
|
|
63
94
|
catch {
|
|
64
|
-
return
|
|
95
|
+
return {
|
|
96
|
+
subGoals: null,
|
|
97
|
+
criteria: null,
|
|
98
|
+
constraints: null,
|
|
99
|
+
previouslyRetired: [],
|
|
100
|
+
}; // projection degrades gracefully
|
|
65
101
|
}
|
|
66
102
|
}
|
|
67
|
-
/** The sub-goal set an agent may legitimately reference: the
|
|
103
|
+
/** The sub-goal set an agent may legitimately reference: the committed set the
|
|
68
104
|
* prompt carried, PLUS this submission's own `emerged_subtasks` — a sub-goal
|
|
69
105
|
* may be created and referenced (or transitioned) in one round. Null when it
|
|
70
106
|
* cannot be observed. */
|
|
71
|
-
export function knownSubGoalsFor(session, emerged,
|
|
72
|
-
if (!
|
|
107
|
+
export function knownSubGoalsFor(session, emerged, knownSubGoals) {
|
|
108
|
+
if (!knownSubGoals)
|
|
73
109
|
return null;
|
|
74
|
-
const known = [...
|
|
110
|
+
const known = [...knownSubGoals];
|
|
75
111
|
for (const item of deriveEmergedItems(session.loopId, session.currentRound, emerged)) {
|
|
76
112
|
if (!known.some((subGoal) => subGoal.id === item.id)) {
|
|
77
113
|
known.push({
|
|
@@ -89,20 +125,33 @@ export function knownSubGoalsFor(session, emerged, response = compileSessionCont
|
|
|
89
125
|
/** The ACTIVE Round Contract governing a session's next round — ONE
|
|
90
126
|
* derivation, shared by the session's public view and the boundary. */
|
|
91
127
|
export function activeContractOf(store, session) {
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
...queryLoopEntries(store, session.loopId, { prefix }),
|
|
95
|
-
...queryLoopEntries(store, session.loopId, { prefix, feedbackOnly: true }),
|
|
96
|
-
];
|
|
97
|
-
return deriveActiveRoundContract(derivationRounds(entries, session.currentRound));
|
|
128
|
+
const history = loadCommittedHistory(store, session.loopId);
|
|
129
|
+
return deriveActiveRoundContract(historyWindow(history, session.currentRound));
|
|
98
130
|
}
|
|
99
131
|
/** Map a strict boundary error onto the same diagnostic vocabulary, without
|
|
100
132
|
* persisting it. Strict failures are returned only for that attempt. */
|
|
101
133
|
function rejectedDiagnostic(path, code, detail) {
|
|
102
134
|
return { path, code, handling: "rejected", detail };
|
|
103
135
|
}
|
|
104
|
-
const EVALUATION_REQUIRED = "A structured evaluation object is required. Resubmit the same
|
|
105
|
-
"with
|
|
136
|
+
const EVALUATION_REQUIRED = "A structured evaluation object is required. Resubmit the same submissionHandle " +
|
|
137
|
+
"with outcome, output_summary, constraint_violations, and should_continue.";
|
|
138
|
+
/** A contract refusal is either a malformed declaration or a coverage/stop
|
|
139
|
+
* rule. The detailed reason is always in `contract_errors`; this top-level
|
|
140
|
+
* sentence must not call a coverage refusal "malformed". */
|
|
141
|
+
function contractRefusalDetail(errors) {
|
|
142
|
+
if (errors.some((error) => error.reason === "contract_on_stop")) {
|
|
143
|
+
return "A stopping or blocked round cannot leave a round_contract for the " +
|
|
144
|
+
"next round. Remove it and resubmit the same submissionHandle.";
|
|
145
|
+
}
|
|
146
|
+
if (errors.some((error) => error.reason === "contract_required")) {
|
|
147
|
+
return "This continuing round must leave an active Round Contract for the " +
|
|
148
|
+
"next round. Submit round_contract with a work_item and at least one " +
|
|
149
|
+
"item bound to a configured command, then resubmit the same " +
|
|
150
|
+
"submissionHandle.";
|
|
151
|
+
}
|
|
152
|
+
return "The Round Contract declaration or its item claims are malformed. " +
|
|
153
|
+
"Fix them and resubmit the same submissionHandle.";
|
|
154
|
+
}
|
|
106
155
|
/** THE submission boundary. Five checks, in this order, all of them before
|
|
107
156
|
* anything durable happens.
|
|
108
157
|
*
|
|
@@ -161,7 +210,7 @@ export function validateSubmission(store, session, submission) {
|
|
|
161
210
|
if (subgoalShapeErrors.length > 0) {
|
|
162
211
|
return {
|
|
163
212
|
ok: false,
|
|
164
|
-
stopDetail: "subgoal_updates is malformed. Fix the entries and resubmit the same
|
|
213
|
+
stopDetail: "subgoal_updates is malformed. Fix the entries and resubmit the same submissionHandle.",
|
|
165
214
|
submissionError: {
|
|
166
215
|
code: "evaluation_invalid",
|
|
167
216
|
details: {
|
|
@@ -173,8 +222,8 @@ export function validateSubmission(store, session, submission) {
|
|
|
173
222
|
},
|
|
174
223
|
};
|
|
175
224
|
}
|
|
176
|
-
const
|
|
177
|
-
const known = session ? knownSubGoalsFor(session, emerged,
|
|
225
|
+
const facts = session ? referenceFactsFor(store, session) : null;
|
|
226
|
+
const known = session ? knownSubGoalsFor(session, emerged, facts?.subGoals ?? null) : null;
|
|
178
227
|
const updates = parseSubGoalUpdates(submission.subgoal_updates);
|
|
179
228
|
if (updates.length > 0 && known) {
|
|
180
229
|
const referentialErrors = validateSubGoalUpdates(known, updates).map((error) => ({
|
|
@@ -187,7 +236,7 @@ export function validateSubmission(store, session, submission) {
|
|
|
187
236
|
ok: false,
|
|
188
237
|
stopDetail: "subgoal_updates references a sub-goal this loop does not have, a " +
|
|
189
238
|
"terminal one, or an illegal transition. Fix the entries and " +
|
|
190
|
-
"resubmit the same
|
|
239
|
+
"resubmit the same submissionHandle.",
|
|
191
240
|
submissionError: {
|
|
192
241
|
code: "evaluation_invalid",
|
|
193
242
|
details: {
|
|
@@ -200,12 +249,29 @@ export function validateSubmission(store, session, submission) {
|
|
|
200
249
|
};
|
|
201
250
|
}
|
|
202
251
|
}
|
|
203
|
-
const
|
|
252
|
+
const retraction = resolveSubmissionRetractions(facts, submission);
|
|
253
|
+
if (retraction.errors.length > 0) {
|
|
254
|
+
return {
|
|
255
|
+
ok: false,
|
|
256
|
+
stopDetail: "retracted_constraints may only name active Agent-discovered constraints; " +
|
|
257
|
+
"operator criteria/hard constraints and plan constraints are not retractable. " +
|
|
258
|
+
"Remove them and resubmit the same submissionHandle.",
|
|
259
|
+
submissionError: {
|
|
260
|
+
code: "evaluation_invalid",
|
|
261
|
+
details: {
|
|
262
|
+
missing: [],
|
|
263
|
+
invalid: [],
|
|
264
|
+
retraction_errors: retraction.errors,
|
|
265
|
+
diagnostics: retraction.errors.map((error) => rejectedDiagnostic(error.field, error.reason, error.detail)),
|
|
266
|
+
},
|
|
267
|
+
},
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
const contractErrors = contractShapeErrors(store, session, submission, facts?.criteria ?? null);
|
|
204
271
|
if (contractErrors.length > 0) {
|
|
205
272
|
return {
|
|
206
273
|
ok: false,
|
|
207
|
-
stopDetail:
|
|
208
|
-
"Fix them and resubmit the same roundId.",
|
|
274
|
+
stopDetail: contractRefusalDetail(contractErrors),
|
|
209
275
|
submissionError: {
|
|
210
276
|
code: "contract_invalid",
|
|
211
277
|
details: {
|
|
@@ -217,32 +283,126 @@ export function validateSubmission(store, session, submission) {
|
|
|
217
283
|
},
|
|
218
284
|
};
|
|
219
285
|
}
|
|
286
|
+
const normalized = normalizeSelfEvaluation(submission, {
|
|
287
|
+
knownCriterionRefs: facts?.criteria ?? null,
|
|
288
|
+
maxDiscoveredConstraints: getPolicy().evolution.max_discovered_constraints_per_round,
|
|
289
|
+
});
|
|
220
290
|
return {
|
|
221
291
|
ok: true,
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
292
|
+
evaluation: normalized.evaluation,
|
|
293
|
+
// No-op retractions are visible as diagnostics; they never reject and
|
|
294
|
+
// never appear as effective effects.
|
|
295
|
+
diagnostics: [
|
|
296
|
+
...retraction.noopDiagnostics,
|
|
297
|
+
...normalized.diagnostics,
|
|
298
|
+
],
|
|
299
|
+
submittedFields: normalized.submittedFields,
|
|
225
300
|
};
|
|
226
301
|
}
|
|
227
|
-
function
|
|
228
|
-
|
|
229
|
-
?
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
}
|
|
233
|
-
|
|
302
|
+
function resolveSubmissionRetractions(facts, submission) {
|
|
303
|
+
const targets = Array.isArray(submission.retracted_constraints)
|
|
304
|
+
? submission.retracted_constraints.filter((item) => typeof item === "string")
|
|
305
|
+
: [];
|
|
306
|
+
if (targets.length === 0 || !facts?.constraints) {
|
|
307
|
+
return { errors: [], noopDiagnostics: [] };
|
|
308
|
+
}
|
|
309
|
+
const newDiscoveries = Array.isArray(submission.discovered_constraints)
|
|
310
|
+
? submission.discovered_constraints.filter((item) => typeof item === "string")
|
|
311
|
+
: [];
|
|
312
|
+
const resolved = resolveConstraintRetractions({
|
|
313
|
+
targets,
|
|
314
|
+
active: facts.constraints,
|
|
315
|
+
newDiscoveries,
|
|
316
|
+
previouslyRetired: facts.previouslyRetired,
|
|
317
|
+
});
|
|
318
|
+
return {
|
|
319
|
+
errors: resolved.errors.map((error) => ({
|
|
320
|
+
field: "retracted_constraints",
|
|
321
|
+
reason: error.reason,
|
|
322
|
+
detail: error.detail,
|
|
323
|
+
})),
|
|
324
|
+
noopDiagnostics: resolved.noops.map((noop) => ({
|
|
325
|
+
path: "retracted_constraints",
|
|
326
|
+
code: noop.reason,
|
|
327
|
+
handling: "dropped",
|
|
328
|
+
detail: `${noop.target}: ${noop.reason.replace(/_/g, " ")}`,
|
|
329
|
+
})),
|
|
330
|
+
};
|
|
234
331
|
}
|
|
235
|
-
function contractShapeErrors(store, session, submission,
|
|
332
|
+
function contractShapeErrors(store, session, submission, criteria) {
|
|
236
333
|
const active = session ? activeContractOf(store, session) : null;
|
|
237
|
-
|
|
334
|
+
const shapeErrors = validateContractShape(submission, {
|
|
238
335
|
activeItemIds: session
|
|
239
336
|
? new Set((active?.items ?? []).map((item) => item.id))
|
|
240
337
|
: null,
|
|
241
|
-
|
|
242
|
-
|
|
338
|
+
// v4.0.6: the `supersedes` modifier is a STRUCTURAL boundary like the
|
|
339
|
+
// contract itself. Target identity and "successor acceptance content
|
|
340
|
+
// actually changed" are checked only when the active contract was
|
|
341
|
+
// observable; structure stays strict either way.
|
|
342
|
+
observed: session !== undefined,
|
|
343
|
+
activeContractId: session ? active?.id ?? null : null,
|
|
344
|
+
activeItemIdentities: active
|
|
345
|
+
? new Set(active.items.map((item) => canonicalContractItemText(item)))
|
|
346
|
+
: null,
|
|
347
|
+
knownCriterionIds: criteria
|
|
348
|
+
? new Set(criteria.map((criterion) => criterion.id))
|
|
243
349
|
: null,
|
|
244
350
|
isConfiguredCommand,
|
|
245
|
-
checkScopeEntry: scopeEntryDetail,
|
|
246
351
|
});
|
|
352
|
+
if (!session)
|
|
353
|
+
return shapeErrors;
|
|
354
|
+
// v4.0.6: contract coverage BEFORE round advancement, always with
|
|
355
|
+
// closure="open" — this attempt's evidence cannot be assumed to close the
|
|
356
|
+
// active contract. `contract_required` uses the SAME derivation as the
|
|
357
|
+
// post-evidence gate.
|
|
358
|
+
const errors = [...shapeErrors];
|
|
359
|
+
const proposalPresent = submission.round_contract !== undefined;
|
|
360
|
+
const shouldContinue = submission.should_continue !== false;
|
|
361
|
+
const blocked = submission.outcome === "blocked";
|
|
362
|
+
const requirement = deriveContractRequirement({
|
|
363
|
+
shouldContinue,
|
|
364
|
+
blocked,
|
|
365
|
+
proposalPresent,
|
|
366
|
+
activeContract: active,
|
|
367
|
+
closure: "open",
|
|
368
|
+
contractCapability: deriveConfiguredCapability(getPolicy()).contractVerificationAvailable,
|
|
369
|
+
successorRoundAvailable: session.maxRounds === undefined || session.currentRound < session.maxRounds,
|
|
370
|
+
});
|
|
371
|
+
if (requirement.required) {
|
|
372
|
+
errors.push({
|
|
373
|
+
field: "round_contract",
|
|
374
|
+
reason: "contract_required",
|
|
375
|
+
detail: requirement.reason === "no_active_contract"
|
|
376
|
+
? "an after-capable verification command is configured and this round " +
|
|
377
|
+
"continues, but no Round Contract is active for the next round and " +
|
|
378
|
+
"none was proposed; submit round_contract (work_item + items with " +
|
|
379
|
+
"verify_with)"
|
|
380
|
+
: "the active Round Contract closed and this round continues, but no " +
|
|
381
|
+
"successor round_contract was proposed; submit the next slice's " +
|
|
382
|
+
"contract",
|
|
383
|
+
});
|
|
384
|
+
}
|
|
385
|
+
if (proposalPresent && (!shouldContinue || blocked)) {
|
|
386
|
+
errors.push({
|
|
387
|
+
field: "round_contract",
|
|
388
|
+
reason: "contract_on_stop",
|
|
389
|
+
detail: !shouldContinue
|
|
390
|
+
? "round_contract activates a NEXT-round contract; it cannot be submitted " +
|
|
391
|
+
"with should_continue=false — a stopping round must not leave an " +
|
|
392
|
+
"unused contract"
|
|
393
|
+
: "round_contract cannot be submitted with outcome=blocked — a blocked " +
|
|
394
|
+
"round closes the contract and must not leave an unused successor",
|
|
395
|
+
});
|
|
396
|
+
}
|
|
397
|
+
if (proposalPresent && shouldContinue && !blocked &&
|
|
398
|
+
session.maxRounds !== undefined && session.currentRound >= session.maxRounds) {
|
|
399
|
+
errors.push({
|
|
400
|
+
field: "round_contract",
|
|
401
|
+
reason: "contract_on_stop",
|
|
402
|
+
detail: "This is the final configured round and has no successor consumer; " +
|
|
403
|
+
"remove round_contract and resubmit the same submissionHandle.",
|
|
404
|
+
});
|
|
405
|
+
}
|
|
406
|
+
return errors;
|
|
247
407
|
}
|
|
248
408
|
//# sourceMappingURL=submission-boundary.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submission-boundary.js","sourceRoot":"","sources":["../../src/mcp/submission-boundary.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"submission-boundary.js","sourceRoot":"","sources":["../../src/mcp/submission-boundary.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/** v4.0.0: the ONE submission-handle projection and validator.
|
|
2
|
+
*
|
|
3
|
+
* A handle bundles the three identities a held-round call needs. It is derived
|
|
4
|
+
* from the persisted session snapshot on every response and is never written
|
|
5
|
+
* to durable state. This module is deliberately free of I/O and of the
|
|
6
|
+
* `McpSession` import: `round-lifecycle.ts` needs the factory, so importing
|
|
7
|
+
* that module here would create a cycle.
|
|
8
|
+
*/
|
|
9
|
+
import type { SubmissionHandle } from "../protocol.js";
|
|
10
|
+
import type { RoundTransactionSnapshot } from "../round-transaction.js";
|
|
11
|
+
/** The structural session view the handle predicate needs. */
|
|
12
|
+
export interface HeldSessionView {
|
|
13
|
+
sessionId: string;
|
|
14
|
+
currentRound: number;
|
|
15
|
+
status: "running" | "stopped" | "stalled" | "paused";
|
|
16
|
+
roundSnapshot?: RoundTransactionSnapshot | null;
|
|
17
|
+
}
|
|
18
|
+
/** THE held-prompt predicate. A snapshot is held only when it names the current
|
|
19
|
+
* round and the exact prompted attempt the artifact was rendered for. A
|
|
20
|
+
* committed/terminated/stopped/retrying snapshot must never expose a handle:
|
|
21
|
+
* returning a stale prompt as "held" is the failure mode this predicate
|
|
22
|
+
* closes. */
|
|
23
|
+
export declare function heldPromptSnapshot(session: HeldSessionView | undefined): RoundTransactionSnapshot | null;
|
|
24
|
+
/** Derive the handle from the held snapshot. Never recomputes the transaction
|
|
25
|
+
* id (the snapshot's identity is the authority), never reads the vault, and
|
|
26
|
+
* never mutates the session. */
|
|
27
|
+
export declare function makeSubmissionHandle(session: HeldSessionView | undefined): SubmissionHandle | null;
|
|
28
|
+
/** Strict shape parsing: a plain object with exactly the three non-empty
|
|
29
|
+
* string fields. No trimming, case folding, prefix matching, or defaults. */
|
|
30
|
+
export declare function parseSubmissionHandle(raw: unknown): SubmissionHandle | null;
|
|
31
|
+
export type SubmissionHandleMismatchReason = "no_held_prompt" | "session" | "round" | "transaction" | "attempt";
|
|
32
|
+
export type SubmissionHandleFailure = {
|
|
33
|
+
ok: false;
|
|
34
|
+
code: "submission_handle_required";
|
|
35
|
+
reason: "shape";
|
|
36
|
+
mismatched: [];
|
|
37
|
+
current: null;
|
|
38
|
+
detail: string;
|
|
39
|
+
} | {
|
|
40
|
+
ok: false;
|
|
41
|
+
code: "session_not_found";
|
|
42
|
+
reason: "session";
|
|
43
|
+
mismatched: [];
|
|
44
|
+
current: null;
|
|
45
|
+
detail: string;
|
|
46
|
+
} | {
|
|
47
|
+
ok: false;
|
|
48
|
+
code: "submission_handle_mismatch";
|
|
49
|
+
reason: SubmissionHandleMismatchReason;
|
|
50
|
+
mismatched: string[];
|
|
51
|
+
current: SubmissionHandle | null;
|
|
52
|
+
detail: string;
|
|
53
|
+
};
|
|
54
|
+
export type SubmissionHandleCheck = {
|
|
55
|
+
ok: true;
|
|
56
|
+
handle: SubmissionHandle;
|
|
57
|
+
snapshot: RoundTransactionSnapshot;
|
|
58
|
+
} | SubmissionHandleFailure;
|
|
59
|
+
/** Exact comparison against the held snapshot. The caller resolves the session
|
|
60
|
+
* by `handle.sessionId`; this function owns every field comparison so no
|
|
61
|
+
* second anchor rule can appear in the lifecycle or transport. */
|
|
62
|
+
export declare function validateSubmissionHandle(raw: unknown, session: HeldSessionView | undefined): SubmissionHandleCheck;
|
|
63
|
+
/** The one deterministic warning used whenever a stale handle returns the
|
|
64
|
+
* held prompt. It names no ids and never changes with the attempt. */
|
|
65
|
+
export declare function staleHandleWarning(): string;
|
|
66
|
+
//# sourceMappingURL=submission-handle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submission-handle.d.ts","sourceRoot":"","sources":["../../src/mcp/submission-handle.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAExE,8DAA8D;AAC9D,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;IACrD,aAAa,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAC;CACjD;AAED;;;;cAIc;AACd,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,eAAe,GAAG,SAAS,GACnC,wBAAwB,GAAG,IAAI,CAgBjC;AAED;;iCAEiC;AACjC,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,eAAe,GAAG,SAAS,GACnC,gBAAgB,GAAG,IAAI,CAYzB;AAED;8EAC8E;AAC9E,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,gBAAgB,GAAG,IAAI,CAc3E;AAED,MAAM,MAAM,8BAA8B,GACtC,gBAAgB,GAChB,SAAS,GACT,OAAO,GACP,aAAa,GACb,SAAS,CAAC;AAEd,MAAM,MAAM,uBAAuB,GAC/B;IACE,EAAE,EAAE,KAAK,CAAC;IACV,IAAI,EAAE,4BAA4B,CAAC;IACnC,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,EAAE,CAAC;IACf,OAAO,EAAE,IAAI,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,GACD;IACE,EAAE,EAAE,KAAK,CAAC;IACV,IAAI,EAAE,mBAAmB,CAAC;IAC1B,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,EAAE,EAAE,CAAC;IACf,OAAO,EAAE,IAAI,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,GACD;IACE,EAAE,EAAE,KAAK,CAAC;IACV,IAAI,EAAE,4BAA4B,CAAC;IACnC,MAAM,EAAE,8BAA8B,CAAC;IACvC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEN,MAAM,MAAM,qBAAqB,GAC7B;IACE,EAAE,EAAE,IAAI,CAAC;IACT,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,EAAE,wBAAwB,CAAC;CACpC,GACD,uBAAuB,CAAC;AAE5B;;mEAEmE;AACnE,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,OAAO,EACZ,OAAO,EAAE,eAAe,GAAG,SAAS,GACnC,qBAAqB,CAuFvB;AAED;uEACuE;AACvE,wBAAgB,kBAAkB,IAAI,MAAM,CAK3C"}
|