loopforge 3.7.0 → 3.8.1
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/LICENSE +21 -21
- package/README.md +171 -157
- package/dist/audit.d.ts +53 -1
- package/dist/audit.d.ts.map +1 -1
- package/dist/audit.js +106 -22
- package/dist/audit.js.map +1 -1
- package/dist/canonical-state.d.ts +75 -69
- package/dist/canonical-state.d.ts.map +1 -1
- package/dist/canonical-state.js +276 -168
- package/dist/canonical-state.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +111 -12
- package/dist/cli.js.map +1 -1
- package/dist/cognitive-facts.d.ts +13 -0
- package/dist/cognitive-facts.d.ts.map +1 -1
- package/dist/cognitive-facts.js +30 -16
- package/dist/cognitive-facts.js.map +1 -1
- package/dist/cognitive-governance.d.ts +30 -6
- package/dist/cognitive-governance.d.ts.map +1 -1
- package/dist/cognitive-governance.js +74 -18
- package/dist/cognitive-governance.js.map +1 -1
- package/dist/committed-round.d.ts +109 -24
- package/dist/committed-round.d.ts.map +1 -1
- package/dist/committed-round.js +235 -52
- package/dist/committed-round.js.map +1 -1
- package/dist/contract-items.d.ts +55 -0
- package/dist/contract-items.d.ts.map +1 -0
- package/dist/contract-items.js +180 -0
- package/dist/contract-items.js.map +1 -0
- package/dist/enforcement-gate.d.ts +43 -20
- package/dist/enforcement-gate.d.ts.map +1 -1
- package/dist/enforcement-gate.js +269 -378
- package/dist/enforcement-gate.js.map +1 -1
- package/dist/engine.d.ts +11 -6
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +102 -67
- package/dist/engine.js.map +1 -1
- package/dist/evidence-claims.d.ts +4 -4
- package/dist/evidence-claims.d.ts.map +1 -1
- package/dist/evidence-claims.js +16 -14
- package/dist/evidence-claims.js.map +1 -1
- package/dist/evidence-provider.d.ts +91 -90
- package/dist/evidence-provider.d.ts.map +1 -1
- package/dist/evidence-provider.js +349 -160
- package/dist/evidence-provider.js.map +1 -1
- package/dist/explain.d.ts +76 -0
- package/dist/explain.d.ts.map +1 -0
- package/dist/explain.js +127 -0
- package/dist/explain.js.map +1 -0
- package/dist/generate-schema.js +250 -53
- package/dist/generate-schema.js.map +1 -1
- package/dist/index.d.ts +8 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -6
- package/dist/index.js.map +1 -1
- package/dist/loop-compiler.d.ts +41 -40
- package/dist/loop-compiler.d.ts.map +1 -1
- package/dist/loop-compiler.js +275 -515
- package/dist/loop-compiler.js.map +1 -1
- package/dist/loop-extras-parser.d.ts +0 -1
- package/dist/loop-extras-parser.d.ts.map +1 -1
- package/dist/loop-extras-parser.js +0 -4
- package/dist/loop-extras-parser.js.map +1 -1
- package/dist/loop-projection.d.ts.map +1 -1
- package/dist/loop-projection.js +3 -1
- package/dist/loop-projection.js.map +1 -1
- package/dist/mcp/round-lifecycle.d.ts +40 -21
- package/dist/mcp/round-lifecycle.d.ts.map +1 -1
- package/dist/mcp/round-lifecycle.js +173 -120
- package/dist/mcp/round-lifecycle.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +63 -10
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/session.d.ts +53 -7
- package/dist/mcp/session.d.ts.map +1 -1
- package/dist/mcp/session.js +240 -139
- package/dist/mcp/session.js.map +1 -1
- package/dist/mcp/submission-boundary.d.ts +89 -0
- package/dist/mcp/submission-boundary.d.ts.map +1 -0
- package/dist/mcp/submission-boundary.js +203 -0
- package/dist/mcp/submission-boundary.js.map +1 -0
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +377 -125
- package/dist/mcp/tools.js.map +1 -1
- package/dist/policy-metrics.js +2 -2
- package/dist/policy-metrics.js.map +1 -1
- package/dist/policy.d.ts +65 -95
- package/dist/policy.d.ts.map +1 -1
- package/dist/policy.js +151 -39
- package/dist/policy.js.map +1 -1
- package/dist/prompt-assembler.d.ts +7 -33
- package/dist/prompt-assembler.d.ts.map +1 -1
- package/dist/prompt-assembler.js +313 -473
- package/dist/prompt-assembler.js.map +1 -1
- package/dist/prompt-policy.d.ts +1 -4
- package/dist/prompt-policy.d.ts.map +1 -1
- package/dist/prompt-policy.js +6 -7
- package/dist/prompt-policy.js.map +1 -1
- package/dist/protocol.d.ts +411 -168
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +23 -69
- package/dist/protocol.js.map +1 -1
- package/dist/replay.js +2 -2
- package/dist/replay.js.map +1 -1
- package/dist/round-contract.d.ts +69 -57
- package/dist/round-contract.d.ts.map +1 -1
- package/dist/round-contract.js +104 -64
- package/dist/round-contract.js.map +1 -1
- package/dist/round-coordinator.d.ts +55 -16
- package/dist/round-coordinator.d.ts.map +1 -1
- package/dist/round-coordinator.js +179 -57
- package/dist/round-coordinator.js.map +1 -1
- package/dist/round-driver.d.ts +7 -5
- package/dist/round-driver.d.ts.map +1 -1
- package/dist/round-driver.js +2 -1
- package/dist/round-driver.js.map +1 -1
- package/dist/round-facts.d.ts +96 -0
- package/dist/round-facts.d.ts.map +1 -0
- package/dist/round-facts.js +216 -0
- package/dist/round-facts.js.map +1 -0
- package/dist/round-transaction.d.ts +23 -9
- package/dist/round-transaction.d.ts.map +1 -1
- package/dist/round-transaction.js +99 -22
- package/dist/round-transaction.js.map +1 -1
- package/dist/self-eval.d.ts +127 -11
- package/dist/self-eval.d.ts.map +1 -1
- package/dist/self-eval.js +517 -36
- package/dist/self-eval.js.map +1 -1
- package/dist/subgoal-state.d.ts +77 -0
- package/dist/subgoal-state.d.ts.map +1 -0
- package/dist/subgoal-state.js +198 -0
- package/dist/subgoal-state.js.map +1 -0
- package/dist/token-utils.d.ts +52 -19
- package/dist/token-utils.d.ts.map +1 -1
- package/dist/token-utils.js +83 -72
- package/dist/token-utils.js.map +1 -1
- package/dist/verification-gate.d.ts +27 -46
- package/dist/verification-gate.d.ts.map +1 -1
- package/dist/verification-gate.js +308 -557
- package/dist/verification-gate.js.map +1 -1
- package/dist/version.d.ts +5 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +5 -0
- package/dist/version.js.map +1 -0
- package/dist/workspace.d.ts +9 -0
- package/dist/workspace.d.ts.map +1 -1
- package/dist/workspace.js +17 -0
- package/dist/workspace.js.map +1 -1
- package/loop_policy.json +17 -25
- package/package.json +7 -7
- package/skills/perception/SKILL.md +266 -64
package/dist/self-eval.d.ts
CHANGED
|
@@ -1,12 +1,50 @@
|
|
|
1
1
|
/** Structured self-evaluation parsing and normalization — pure functions.
|
|
2
2
|
* The MCP boundary validates required fields before these helpers run.
|
|
3
3
|
*/
|
|
4
|
-
import { type CriterionRevision, type
|
|
5
|
-
/**
|
|
6
|
-
|
|
4
|
+
import { type CriterionRevision, type ExecutionReport, type PromptRequests, type RoundContractProposal, type RoundOutcome, type SelfEvaluation, type SubGoalUpdate } from "./protocol.js";
|
|
5
|
+
/** v3.8.1: the emerged-subtask intake bound — ONE constant, because the
|
|
6
|
+
* sub-goal ids are derived by ORDINAL over this list. The strict submission
|
|
7
|
+
* boundary builds the reference space the agent may transition from, and the
|
|
8
|
+
* lenient normalizer builds the committed list every prompt compiles from;
|
|
9
|
+
* bounding them differently let the boundary accept a transition to a
|
|
10
|
+
* sub-goal the prompt could never carry, and the migration was then dropped
|
|
11
|
+
* by the compile path without a word. */
|
|
12
|
+
export declare const EMERGED_LIMITS: {
|
|
13
|
+
readonly items: 50;
|
|
14
|
+
readonly chars: 500;
|
|
15
|
+
};
|
|
16
|
+
/** THE emerged-list normalization. Both the boundary and the committed
|
|
17
|
+
* evaluation call this, so the two sets cannot disagree. */
|
|
18
|
+
export declare function boundedEmergedSubtasks(value: unknown): string[];
|
|
19
|
+
/** Parse ExecutionReport from a raw JSON object. */
|
|
20
|
+
export declare function parseExecutionReport(raw: Record<string, unknown> | undefined | null): ExecutionReport | undefined;
|
|
21
|
+
/** v3.8: The criterion ids the agent claims met this round. */
|
|
22
|
+
export declare function claimedMetCriteria(report: {
|
|
23
|
+
criterion_claims?: Array<{
|
|
24
|
+
criterion_id: string;
|
|
25
|
+
outcome: string;
|
|
26
|
+
}>;
|
|
27
|
+
} | undefined | null): string[];
|
|
28
|
+
/** v3.8: The criterion ids the agent declares still outstanding. */
|
|
29
|
+
export declare function claimedRemainingCriteria(report: {
|
|
30
|
+
criterion_claims?: Array<{
|
|
31
|
+
criterion_id: string;
|
|
32
|
+
outcome: string;
|
|
33
|
+
}>;
|
|
34
|
+
} | undefined | null): string[];
|
|
7
35
|
/** Parse CriterionRevision[] from a raw JSON array. */
|
|
8
36
|
export declare function parseCriterionRevisions(raw: unknown): CriterionRevision[];
|
|
9
|
-
/** Parse
|
|
37
|
+
/** Parse SubGoalUpdate[] from a raw JSON array.
|
|
38
|
+
* v3.7.1: lenient per-entry filtering (id/status shape) with fixed caps
|
|
39
|
+
* (20 entries, id ≤ 64, note ≤ 300). Referential validity — unknown IDs
|
|
40
|
+
* and illegal migrations — is NOT checked here: that needs the committed
|
|
41
|
+
* sub-goal set and runs as a pre-advance validation (evaluation_invalid). */
|
|
42
|
+
export declare function parseSubGoalUpdates(raw: unknown): SubGoalUpdate[];
|
|
43
|
+
/** Parse WorkerResult[] from a raw JSON array.
|
|
44
|
+
* v3.7.1: `outcome` is the single fact. An entry without a valid outcome
|
|
45
|
+
* is dropped (not derived, not defaulted) — the array stays informational:
|
|
46
|
+
* absent/empty arrays are accepted unchanged, so a round without any
|
|
47
|
+
* delegation can never be rejected over worker fields. */
|
|
10
48
|
export declare function parseWorkerResults(raw: unknown): import("./protocol.js").WorkerResult[];
|
|
11
49
|
/** v2.12: The effective round outcome — declared outcome wins, otherwise
|
|
12
50
|
* derived from `success`. "partial" can only be declared explicitly (never
|
|
@@ -18,24 +56,102 @@ export declare function effectiveOutcome(selfEval: SelfEvaluation): RoundOutcome
|
|
|
18
56
|
export declare function effectiveSuccess(selfEval: SelfEvaluation): boolean;
|
|
19
57
|
/** Required evaluation fields are the only format boundary. Optional fields
|
|
20
58
|
* are deliberately normalized by buildSelfEvaluation instead of rejecting a
|
|
21
|
-
* round for a non-authoritative reporting detail.
|
|
59
|
+
* round for a non-authoritative reporting detail.
|
|
60
|
+
*
|
|
61
|
+
* v3.7.1: subgoal_updates is one documented exception — it is a strict
|
|
62
|
+
* STRUCTURAL boundary (machine-processable state transitions). Its shape
|
|
63
|
+
* and referential errors ride here as `subgoal_errors` and return
|
|
64
|
+
* evaluation_invalid with the same guarantees: no state change, no gates,
|
|
65
|
+
* no rejection counters, same-roundId retry. */
|
|
22
66
|
export interface EvaluationValidation {
|
|
23
67
|
missing: string[];
|
|
24
68
|
invalid: Array<{
|
|
25
69
|
field: string;
|
|
26
70
|
expected: string;
|
|
27
71
|
}>;
|
|
72
|
+
subgoal_errors?: Array<{
|
|
73
|
+
field: string;
|
|
74
|
+
reason: string;
|
|
75
|
+
detail: string;
|
|
76
|
+
}>;
|
|
28
77
|
}
|
|
29
78
|
export declare function validateCoreSelfEvaluation(raw: Record<string, unknown>): EvaluationValidation;
|
|
79
|
+
/** v3.7.1: Strict structural checks for the sub-goal protocol fields
|
|
80
|
+
* (subgoal_updates / emerged_subtasks). Runs in the same pre-advance
|
|
81
|
+
* evaluation_invalid boundary as the four core fields: an error here is a
|
|
82
|
+
* payload defect, never a work-quality rejection — no session state, no
|
|
83
|
+
* gates, no rejection counters, retry with the same roundId.
|
|
84
|
+
*
|
|
85
|
+
* Shape-only (no vault): entry shape, id pattern, status enum, caps, and
|
|
86
|
+
* the sg-XXXXXXXX creation prohibition on emerged_subtasks. Referential
|
|
87
|
+
* validity (unknown IDs / terminal references / illegal migrations) needs
|
|
88
|
+
* the committed sub-goal set and is checked against the compiled
|
|
89
|
+
* sub_goals right before advance (validateSubGoalUpdates in
|
|
90
|
+
* loop-compiler.ts). */
|
|
91
|
+
export declare function validateSubGoalUpdatesShape(raw: Record<string, unknown>): Array<{
|
|
92
|
+
field: string;
|
|
93
|
+
reason: string;
|
|
94
|
+
detail: string;
|
|
95
|
+
}>;
|
|
96
|
+
export interface ContractValidationError {
|
|
97
|
+
field: string;
|
|
98
|
+
reason: string;
|
|
99
|
+
detail: string;
|
|
100
|
+
}
|
|
101
|
+
/** v3.8: Everything the strict contract boundary needs to judge a declaration
|
|
102
|
+
* against the SAME derived state the agent saw in its prompt. Injected rather
|
|
103
|
+
* than imported so the validator stays a pure, unit-testable function. */
|
|
104
|
+
export interface ContractValidationContext {
|
|
105
|
+
/** rci- ids of the ACTIVE contract; null when it cannot be observed (fail
|
|
106
|
+
* open — shape checks stay strict either way). */
|
|
107
|
+
activeItemIds: ReadonlySet<string> | null;
|
|
108
|
+
/** sg- ids the agent may legitimately reference: the compiled set plus the
|
|
109
|
+
* submission's own same-round `emerged_subtasks`; null when it cannot be
|
|
110
|
+
* observed (fail open). */
|
|
111
|
+
knownSubGoalIds: ReadonlySet<string> | null;
|
|
112
|
+
/** Configured AND enabled AND after-capable evidence command. */
|
|
113
|
+
isConfiguredCommand: (name: string) => boolean;
|
|
114
|
+
/** Returns a detail string when a declared scope entry leaves the
|
|
115
|
+
* workspace, or null when it is contained. */
|
|
116
|
+
checkScopeEntry: (entry: string) => string | null;
|
|
117
|
+
}
|
|
118
|
+
/** v3.8: Strict STRUCTURAL boundary for the Round Contract declaration and
|
|
119
|
+
* the contract item claims — the same pre-advance contract as
|
|
120
|
+
* subgoal_updates: an error here is a payload defect, never a work-quality
|
|
121
|
+
* rejection (no session state, no gates, no rejection counters, retry with
|
|
122
|
+
* the same roundId as `contract_invalid`).
|
|
123
|
+
*
|
|
124
|
+
* Declaration strictness: items must exist and stay within CONTRACT_LIMITS;
|
|
125
|
+
* every item must bind at least one configured, enabled, after-capable
|
|
126
|
+
* command; scope entries must stay inside the workspace; criterion and
|
|
127
|
+
* sub-goal references must be well-formed, and sub-goal references must name
|
|
128
|
+
* a sub-goal that actually exists. The limits are enforced HERE rather than
|
|
129
|
+
* by silently truncating in the lenient parser — a declaration is a
|
|
130
|
+
* boundary, not a suggestion.
|
|
131
|
+
*
|
|
132
|
+
* Claim strictness: item ids must be well formed, unique, and — when the
|
|
133
|
+
* active contract is known — reference an item of the ACTIVE contract. */
|
|
134
|
+
export declare function validateContractShape(raw: Record<string, unknown>, context: ContractValidationContext): ContractValidationError[];
|
|
30
135
|
/** Build a SelfEvaluation from a parsed JSON object.
|
|
31
136
|
* Lenient parsing: missing optional fields get sensible defaults. */
|
|
32
137
|
export declare function buildSelfEvaluation(raw: Record<string, unknown>): SelfEvaluation;
|
|
33
|
-
/**
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
|
|
38
|
-
|
|
138
|
+
/** v3.8: The ONE set of contract-declaration limits. `validateContractShape`
|
|
139
|
+
* (the strict boundary) rejects a declaration over these; `parseRoundContract`
|
|
140
|
+
* (the lenient path, reached only after the strict boundary passed) truncates
|
|
141
|
+
* to the same numbers. One source, so the two can never drift. */
|
|
142
|
+
export declare const CONTRACT_LIMITS: {
|
|
143
|
+
readonly items: 20;
|
|
144
|
+
readonly scope: 50;
|
|
145
|
+
readonly criterionRefs: 20;
|
|
146
|
+
readonly subgoalRefs: 20;
|
|
147
|
+
readonly verifyWith: 20;
|
|
148
|
+
};
|
|
149
|
+
/** Parse a Round Contract PROPOSAL from raw JSON input. Lenient on shapes
|
|
150
|
+
* the strict declaration boundary already rejected: strings are trimmed and
|
|
151
|
+
* capped, non-string array entries are dropped. Item ORDER and COUNT are
|
|
152
|
+
* preserved — the derived rci- ids depend on them. Returns undefined only
|
|
153
|
+
* when the raw value is absent or not an object. */
|
|
154
|
+
export declare function parseRoundContract(raw: unknown): RoundContractProposal | undefined;
|
|
39
155
|
/** Parse a PromptRequests object from raw JSON input.
|
|
40
156
|
* Lenient: missing or invalid fields get sensible defaults.
|
|
41
157
|
* Returns undefined if the raw value is absent or not an object,
|
package/dist/self-eval.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"self-eval.d.ts","sourceRoot":"","sources":["../src/self-eval.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"self-eval.d.ts","sourceRoot":"","sources":["../src/self-eval.ts"],"names":[],"mappings":"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"}
|