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.
Files changed (151) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +171 -157
  3. package/dist/audit.d.ts +53 -1
  4. package/dist/audit.d.ts.map +1 -1
  5. package/dist/audit.js +106 -22
  6. package/dist/audit.js.map +1 -1
  7. package/dist/canonical-state.d.ts +75 -69
  8. package/dist/canonical-state.d.ts.map +1 -1
  9. package/dist/canonical-state.js +276 -168
  10. package/dist/canonical-state.js.map +1 -1
  11. package/dist/cli.d.ts.map +1 -1
  12. package/dist/cli.js +111 -12
  13. package/dist/cli.js.map +1 -1
  14. package/dist/cognitive-facts.d.ts +13 -0
  15. package/dist/cognitive-facts.d.ts.map +1 -1
  16. package/dist/cognitive-facts.js +30 -16
  17. package/dist/cognitive-facts.js.map +1 -1
  18. package/dist/cognitive-governance.d.ts +30 -6
  19. package/dist/cognitive-governance.d.ts.map +1 -1
  20. package/dist/cognitive-governance.js +74 -18
  21. package/dist/cognitive-governance.js.map +1 -1
  22. package/dist/committed-round.d.ts +109 -24
  23. package/dist/committed-round.d.ts.map +1 -1
  24. package/dist/committed-round.js +235 -52
  25. package/dist/committed-round.js.map +1 -1
  26. package/dist/contract-items.d.ts +55 -0
  27. package/dist/contract-items.d.ts.map +1 -0
  28. package/dist/contract-items.js +180 -0
  29. package/dist/contract-items.js.map +1 -0
  30. package/dist/enforcement-gate.d.ts +43 -20
  31. package/dist/enforcement-gate.d.ts.map +1 -1
  32. package/dist/enforcement-gate.js +269 -378
  33. package/dist/enforcement-gate.js.map +1 -1
  34. package/dist/engine.d.ts +11 -6
  35. package/dist/engine.d.ts.map +1 -1
  36. package/dist/engine.js +102 -67
  37. package/dist/engine.js.map +1 -1
  38. package/dist/evidence-claims.d.ts +4 -4
  39. package/dist/evidence-claims.d.ts.map +1 -1
  40. package/dist/evidence-claims.js +16 -14
  41. package/dist/evidence-claims.js.map +1 -1
  42. package/dist/evidence-provider.d.ts +91 -90
  43. package/dist/evidence-provider.d.ts.map +1 -1
  44. package/dist/evidence-provider.js +349 -160
  45. package/dist/evidence-provider.js.map +1 -1
  46. package/dist/explain.d.ts +76 -0
  47. package/dist/explain.d.ts.map +1 -0
  48. package/dist/explain.js +127 -0
  49. package/dist/explain.js.map +1 -0
  50. package/dist/generate-schema.js +250 -53
  51. package/dist/generate-schema.js.map +1 -1
  52. package/dist/index.d.ts +8 -7
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +7 -6
  55. package/dist/index.js.map +1 -1
  56. package/dist/loop-compiler.d.ts +41 -40
  57. package/dist/loop-compiler.d.ts.map +1 -1
  58. package/dist/loop-compiler.js +275 -515
  59. package/dist/loop-compiler.js.map +1 -1
  60. package/dist/loop-extras-parser.d.ts +0 -1
  61. package/dist/loop-extras-parser.d.ts.map +1 -1
  62. package/dist/loop-extras-parser.js +0 -4
  63. package/dist/loop-extras-parser.js.map +1 -1
  64. package/dist/loop-projection.d.ts.map +1 -1
  65. package/dist/loop-projection.js +3 -1
  66. package/dist/loop-projection.js.map +1 -1
  67. package/dist/mcp/round-lifecycle.d.ts +40 -21
  68. package/dist/mcp/round-lifecycle.d.ts.map +1 -1
  69. package/dist/mcp/round-lifecycle.js +173 -120
  70. package/dist/mcp/round-lifecycle.js.map +1 -1
  71. package/dist/mcp/server.d.ts.map +1 -1
  72. package/dist/mcp/server.js +63 -10
  73. package/dist/mcp/server.js.map +1 -1
  74. package/dist/mcp/session.d.ts +53 -7
  75. package/dist/mcp/session.d.ts.map +1 -1
  76. package/dist/mcp/session.js +240 -139
  77. package/dist/mcp/session.js.map +1 -1
  78. package/dist/mcp/submission-boundary.d.ts +89 -0
  79. package/dist/mcp/submission-boundary.d.ts.map +1 -0
  80. package/dist/mcp/submission-boundary.js +203 -0
  81. package/dist/mcp/submission-boundary.js.map +1 -0
  82. package/dist/mcp/tools.d.ts.map +1 -1
  83. package/dist/mcp/tools.js +377 -125
  84. package/dist/mcp/tools.js.map +1 -1
  85. package/dist/policy-metrics.js +2 -2
  86. package/dist/policy-metrics.js.map +1 -1
  87. package/dist/policy.d.ts +65 -95
  88. package/dist/policy.d.ts.map +1 -1
  89. package/dist/policy.js +151 -39
  90. package/dist/policy.js.map +1 -1
  91. package/dist/prompt-assembler.d.ts +7 -33
  92. package/dist/prompt-assembler.d.ts.map +1 -1
  93. package/dist/prompt-assembler.js +313 -473
  94. package/dist/prompt-assembler.js.map +1 -1
  95. package/dist/prompt-policy.d.ts +1 -4
  96. package/dist/prompt-policy.d.ts.map +1 -1
  97. package/dist/prompt-policy.js +6 -7
  98. package/dist/prompt-policy.js.map +1 -1
  99. package/dist/protocol.d.ts +411 -168
  100. package/dist/protocol.d.ts.map +1 -1
  101. package/dist/protocol.js +23 -69
  102. package/dist/protocol.js.map +1 -1
  103. package/dist/replay.js +2 -2
  104. package/dist/replay.js.map +1 -1
  105. package/dist/round-contract.d.ts +69 -57
  106. package/dist/round-contract.d.ts.map +1 -1
  107. package/dist/round-contract.js +104 -64
  108. package/dist/round-contract.js.map +1 -1
  109. package/dist/round-coordinator.d.ts +55 -16
  110. package/dist/round-coordinator.d.ts.map +1 -1
  111. package/dist/round-coordinator.js +179 -57
  112. package/dist/round-coordinator.js.map +1 -1
  113. package/dist/round-driver.d.ts +7 -5
  114. package/dist/round-driver.d.ts.map +1 -1
  115. package/dist/round-driver.js +2 -1
  116. package/dist/round-driver.js.map +1 -1
  117. package/dist/round-facts.d.ts +96 -0
  118. package/dist/round-facts.d.ts.map +1 -0
  119. package/dist/round-facts.js +216 -0
  120. package/dist/round-facts.js.map +1 -0
  121. package/dist/round-transaction.d.ts +23 -9
  122. package/dist/round-transaction.d.ts.map +1 -1
  123. package/dist/round-transaction.js +99 -22
  124. package/dist/round-transaction.js.map +1 -1
  125. package/dist/self-eval.d.ts +127 -11
  126. package/dist/self-eval.d.ts.map +1 -1
  127. package/dist/self-eval.js +517 -36
  128. package/dist/self-eval.js.map +1 -1
  129. package/dist/subgoal-state.d.ts +77 -0
  130. package/dist/subgoal-state.d.ts.map +1 -0
  131. package/dist/subgoal-state.js +198 -0
  132. package/dist/subgoal-state.js.map +1 -0
  133. package/dist/token-utils.d.ts +52 -19
  134. package/dist/token-utils.d.ts.map +1 -1
  135. package/dist/token-utils.js +83 -72
  136. package/dist/token-utils.js.map +1 -1
  137. package/dist/verification-gate.d.ts +27 -46
  138. package/dist/verification-gate.d.ts.map +1 -1
  139. package/dist/verification-gate.js +308 -557
  140. package/dist/verification-gate.js.map +1 -1
  141. package/dist/version.d.ts +5 -0
  142. package/dist/version.d.ts.map +1 -0
  143. package/dist/version.js +5 -0
  144. package/dist/version.js.map +1 -0
  145. package/dist/workspace.d.ts +9 -0
  146. package/dist/workspace.d.ts.map +1 -1
  147. package/dist/workspace.js +17 -0
  148. package/dist/workspace.js.map +1 -1
  149. package/loop_policy.json +17 -25
  150. package/package.json +7 -7
  151. package/skills/perception/SKILL.md +266 -64
@@ -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 ExecutionEvidence, type PromptRequests, type RoundContract, type RoundOutcome, type SelfEvaluation } from "./protocol.js";
5
- /** Parse ExecutionEvidence from a raw JSON object. */
6
- export declare function parseExecutionEvidence(raw: Record<string, unknown> | undefined | null): ExecutionEvidence | undefined;
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 WorkerResult[] from a raw JSON array. */
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
- /** Parse a RoundContract object from raw JSON input. Lenient: non-string
34
- * entries are dropped, strings are trimmed and capped. An object that IS
35
- * present is returned even with empty arrays — an empty contract is a
36
- * real declaration the round_underspecified check must see. Returns
37
- * undefined only when the raw value is absent or not an object. */
38
- export declare function parseRoundContract(raw: unknown): RoundContract | undefined;
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,
@@ -1 +1 @@
1
- {"version":3,"file":"self-eval.d.ts","sourceRoot":"","sources":["../src/self-eval.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AA8CvB,sDAAsD;AACtD,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,GAC9C,iBAAiB,GAAG,SAAS,CAuB/B;AAED,uDAAuD;AACvD,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,OAAO,GACX,iBAAiB,EAAE,CAYrB;AAED,kDAAkD;AAClD,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,OAAO,GACX,OAAO,eAAe,EAAE,YAAY,EAAE,CA0BxC;AAED;;;0CAG0C;AAC1C,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,cAAc,GAAG,YAAY,CAMvE;AAED;0EAC0E;AAC1E,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAElE;AAED;;qDAEqD;AACrD,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrD;AAED,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,oBAAoB,CAsBtB;AAED;sEACsE;AACtE,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,cAAc,CAsDhB;AAED;;;;oEAIoE;AACpE,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,OAAO,GACX,aAAa,GAAG,SAAS,CAoB3B;AAED;;;;;;;iEAOiE;AACjE,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,OAAO,GACX,cAAc,GAAG,SAAS,CAW5B"}
1
+ {"version":3,"file":"self-eval.d.ts","sourceRoot":"","sources":["../src/self-eval.ts"],"names":[],"mappings":"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"}