loopforge 1.15.1 → 2.0.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 (193) hide show
  1. package/README.md +172 -95
  2. package/dist/backends/interface.d.ts +5 -10
  3. package/dist/backends/interface.d.ts.map +1 -1
  4. package/dist/backends/interface.js +3 -4
  5. package/dist/backends/interface.js.map +1 -1
  6. package/dist/canonical-state.d.ts +53 -0
  7. package/dist/canonical-state.d.ts.map +1 -0
  8. package/dist/canonical-state.js +161 -0
  9. package/dist/canonical-state.js.map +1 -0
  10. package/dist/cli.d.ts +4 -0
  11. package/dist/cli.d.ts.map +1 -0
  12. package/dist/cli.js +227 -0
  13. package/dist/cli.js.map +1 -0
  14. package/dist/enforcement-gate.d.ts.map +1 -1
  15. package/dist/enforcement-gate.js +28 -10
  16. package/dist/enforcement-gate.js.map +1 -1
  17. package/dist/engine.d.ts +9 -28
  18. package/dist/engine.d.ts.map +1 -1
  19. package/dist/engine.js +135 -361
  20. package/dist/engine.js.map +1 -1
  21. package/dist/evidence-provider.d.ts +146 -0
  22. package/dist/evidence-provider.d.ts.map +1 -0
  23. package/dist/evidence-provider.js +512 -0
  24. package/dist/evidence-provider.js.map +1 -0
  25. package/dist/index.d.ts +19 -13
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +15 -12
  28. package/dist/index.js.map +1 -1
  29. package/dist/init.d.ts +15 -0
  30. package/dist/init.d.ts.map +1 -0
  31. package/dist/init.js +49 -0
  32. package/dist/init.js.map +1 -0
  33. package/dist/interop.d.ts +35 -0
  34. package/dist/interop.d.ts.map +1 -0
  35. package/dist/interop.js +34 -0
  36. package/dist/interop.js.map +1 -0
  37. package/dist/loop-compiler.d.ts +14 -64
  38. package/dist/loop-compiler.d.ts.map +1 -1
  39. package/dist/loop-compiler.js +305 -2206
  40. package/dist/loop-compiler.js.map +1 -1
  41. package/dist/loop-extras-parser.d.ts +82 -0
  42. package/dist/loop-extras-parser.d.ts.map +1 -0
  43. package/dist/loop-extras-parser.js +217 -0
  44. package/dist/loop-extras-parser.js.map +1 -0
  45. package/dist/loop-store.d.ts +104 -0
  46. package/dist/loop-store.d.ts.map +1 -0
  47. package/dist/loop-store.js +421 -0
  48. package/dist/loop-store.js.map +1 -0
  49. package/dist/mcp/server.d.ts +9 -6
  50. package/dist/mcp/server.d.ts.map +1 -1
  51. package/dist/mcp/server.js +109 -73
  52. package/dist/mcp/server.js.map +1 -1
  53. package/dist/mcp/session.d.ts +102 -21
  54. package/dist/mcp/session.d.ts.map +1 -1
  55. package/dist/mcp/session.js +795 -400
  56. package/dist/mcp/session.js.map +1 -1
  57. package/dist/mcp/tools.d.ts +18 -268
  58. package/dist/mcp/tools.d.ts.map +1 -1
  59. package/dist/mcp/tools.js +226 -12
  60. package/dist/mcp/tools.js.map +1 -1
  61. package/dist/observability.d.ts +36 -16
  62. package/dist/observability.d.ts.map +1 -1
  63. package/dist/observability.js +82 -23
  64. package/dist/observability.js.map +1 -1
  65. package/dist/policy-metrics.d.ts +46 -0
  66. package/dist/policy-metrics.d.ts.map +1 -0
  67. package/dist/policy-metrics.js +146 -0
  68. package/dist/policy-metrics.js.map +1 -0
  69. package/dist/policy.d.ts +52 -147
  70. package/dist/policy.d.ts.map +1 -1
  71. package/dist/policy.js +118 -191
  72. package/dist/policy.js.map +1 -1
  73. package/dist/prompt-assembler.d.ts +30 -0
  74. package/dist/prompt-assembler.d.ts.map +1 -0
  75. package/dist/prompt-assembler.js +278 -0
  76. package/dist/prompt-assembler.js.map +1 -0
  77. package/dist/prompt-policy.d.ts +29 -0
  78. package/dist/prompt-policy.d.ts.map +1 -0
  79. package/dist/prompt-policy.js +51 -0
  80. package/dist/prompt-policy.js.map +1 -0
  81. package/dist/protocol.d.ts +75 -152
  82. package/dist/protocol.d.ts.map +1 -1
  83. package/dist/protocol.js +11 -53
  84. package/dist/protocol.js.map +1 -1
  85. package/dist/replay.d.ts.map +1 -1
  86. package/dist/replay.js +1 -27
  87. package/dist/replay.js.map +1 -1
  88. package/dist/round-coordinator.d.ts +90 -0
  89. package/dist/round-coordinator.d.ts.map +1 -0
  90. package/dist/round-coordinator.js +186 -0
  91. package/dist/round-coordinator.js.map +1 -0
  92. package/dist/round-driver.d.ts +53 -0
  93. package/dist/round-driver.d.ts.map +1 -0
  94. package/dist/round-driver.js +101 -0
  95. package/dist/round-driver.js.map +1 -0
  96. package/dist/round-transaction.d.ts +70 -0
  97. package/dist/round-transaction.d.ts.map +1 -0
  98. package/dist/round-transaction.js +290 -0
  99. package/dist/round-transaction.js.map +1 -0
  100. package/dist/self-eval.d.ts +26 -0
  101. package/dist/self-eval.d.ts.map +1 -0
  102. package/dist/self-eval.js +154 -0
  103. package/dist/self-eval.js.map +1 -0
  104. package/dist/storage.d.ts +39 -0
  105. package/dist/storage.d.ts.map +1 -0
  106. package/dist/storage.js +193 -0
  107. package/dist/storage.js.map +1 -0
  108. package/dist/verification-gate.d.ts +31 -7
  109. package/dist/verification-gate.d.ts.map +1 -1
  110. package/dist/verification-gate.js +250 -7
  111. package/dist/verification-gate.js.map +1 -1
  112. package/loop_policy.json +19 -53
  113. package/package.json +13 -10
  114. package/skills/perception/SKILL.md +80 -267
  115. package/dist/backends/fs.d.ts +0 -36
  116. package/dist/backends/fs.d.ts.map +0 -1
  117. package/dist/backends/fs.js +0 -362
  118. package/dist/backends/fs.js.map +0 -1
  119. package/dist/builder.d.ts +0 -19
  120. package/dist/builder.d.ts.map +0 -1
  121. package/dist/builder.js +0 -215
  122. package/dist/builder.js.map +0 -1
  123. package/dist/mcp-server.d.ts +0 -12
  124. package/dist/mcp-server.d.ts.map +0 -1
  125. package/dist/mcp-server.js +0 -14
  126. package/dist/mcp-server.js.map +0 -1
  127. package/dist/memory-bridge.d.ts +0 -47
  128. package/dist/memory-bridge.d.ts.map +0 -1
  129. package/dist/memory-bridge.js +0 -290
  130. package/dist/memory-bridge.js.map +0 -1
  131. package/dist/runtime.d.ts +0 -80
  132. package/dist/runtime.d.ts.map +0 -1
  133. package/dist/runtime.js +0 -699
  134. package/dist/runtime.js.map +0 -1
  135. package/dist/tests/_helpers.d.ts +0 -25
  136. package/dist/tests/_helpers.d.ts.map +0 -1
  137. package/dist/tests/_helpers.js +0 -47
  138. package/dist/tests/_helpers.js.map +0 -1
  139. package/dist/tests/builder.test.d.ts +0 -2
  140. package/dist/tests/builder.test.d.ts.map +0 -1
  141. package/dist/tests/builder.test.js +0 -112
  142. package/dist/tests/builder.test.js.map +0 -1
  143. package/dist/tests/enforcement-gate.test.d.ts +0 -2
  144. package/dist/tests/enforcement-gate.test.d.ts.map +0 -1
  145. package/dist/tests/enforcement-gate.test.js +0 -328
  146. package/dist/tests/enforcement-gate.test.js.map +0 -1
  147. package/dist/tests/engine.test.d.ts +0 -2
  148. package/dist/tests/engine.test.d.ts.map +0 -1
  149. package/dist/tests/engine.test.js +0 -375
  150. package/dist/tests/engine.test.js.map +0 -1
  151. package/dist/tests/generate-schema.test.d.ts +0 -8
  152. package/dist/tests/generate-schema.test.d.ts.map +0 -1
  153. package/dist/tests/generate-schema.test.js +0 -199
  154. package/dist/tests/generate-schema.test.js.map +0 -1
  155. package/dist/tests/loop-compiler.test.d.ts +0 -2
  156. package/dist/tests/loop-compiler.test.d.ts.map +0 -1
  157. package/dist/tests/loop-compiler.test.js +0 -1059
  158. package/dist/tests/loop-compiler.test.js.map +0 -1
  159. package/dist/tests/mcp.test.d.ts +0 -7
  160. package/dist/tests/mcp.test.d.ts.map +0 -1
  161. package/dist/tests/mcp.test.js +0 -505
  162. package/dist/tests/mcp.test.js.map +0 -1
  163. package/dist/tests/memory-bridge.test.d.ts +0 -8
  164. package/dist/tests/memory-bridge.test.d.ts.map +0 -1
  165. package/dist/tests/memory-bridge.test.js +0 -383
  166. package/dist/tests/memory-bridge.test.js.map +0 -1
  167. package/dist/tests/policy.test.d.ts +0 -2
  168. package/dist/tests/policy.test.d.ts.map +0 -1
  169. package/dist/tests/policy.test.js +0 -49
  170. package/dist/tests/policy.test.js.map +0 -1
  171. package/dist/tests/protocol.test.d.ts +0 -2
  172. package/dist/tests/protocol.test.d.ts.map +0 -1
  173. package/dist/tests/protocol.test.js +0 -73
  174. package/dist/tests/protocol.test.js.map +0 -1
  175. package/dist/tests/replay.test.d.ts +0 -2
  176. package/dist/tests/replay.test.d.ts.map +0 -1
  177. package/dist/tests/replay.test.js +0 -222
  178. package/dist/tests/replay.test.js.map +0 -1
  179. package/dist/tests/runtime.test.d.ts +0 -7
  180. package/dist/tests/runtime.test.d.ts.map +0 -1
  181. package/dist/tests/runtime.test.js +0 -337
  182. package/dist/tests/runtime.test.js.map +0 -1
  183. package/dist/tests/verification-gate.test.d.ts +0 -2
  184. package/dist/tests/verification-gate.test.d.ts.map +0 -1
  185. package/dist/tests/verification-gate.test.js +0 -407
  186. package/dist/tests/verification-gate.test.js.map +0 -1
  187. package/skills/prompt-techniques/SKILL.md +0 -52
  188. package/skills/prompt-techniques/references/chain-of-thought.md +0 -207
  189. package/skills/prompt-techniques/references/few-shot.md +0 -174
  190. package/skills/prompt-techniques/references/least-to-most.md +0 -182
  191. package/skills/prompt-techniques/references/step-back.md +0 -160
  192. package/skills/prompt-techniques/references/tree-of-thought.md +0 -191
  193. package/skills/prompt-techniques/references/zero-shot.md +0 -97
@@ -0,0 +1,146 @@
1
+ /** In-process policy effectiveness metrics with no runtime dependency. */
2
+ function empty(loopId) {
3
+ return {
4
+ loopId,
5
+ roundAttempts: 0,
6
+ committedRounds: 0,
7
+ rejectedAttempts: 0,
8
+ terminatedRounds: 0,
9
+ stoppedRounds: 0,
10
+ replayedTransactions: 0,
11
+ successfulRounds: 0,
12
+ contradictedRounds: 0,
13
+ verificationFlags: {},
14
+ enforcementReasons: {},
15
+ evidenceOutcomesByProvider: {},
16
+ evidenceCaptures: 0,
17
+ evidenceAvailable: 0,
18
+ evidenceUnavailable: 0,
19
+ evidenceFailures: 0,
20
+ evidenceTimeouts: 0,
21
+ evidenceLatencyMs: 0,
22
+ levels: {},
23
+ strategyEffectiveness: {},
24
+ };
25
+ }
26
+ function increment(target, key) {
27
+ target[key] = (target[key] ?? 0) + 1;
28
+ }
29
+ export class PolicyMetricsCollector {
30
+ loops = new Map();
31
+ aggregate = empty();
32
+ targets(loopId) {
33
+ if (!loopId)
34
+ return [this.aggregate];
35
+ let metric = this.loops.get(loopId);
36
+ if (!metric) {
37
+ metric = empty(loopId);
38
+ this.loops.set(loopId, metric);
39
+ }
40
+ return [this.aggregate, metric];
41
+ }
42
+ recordRound(loopId, result, replayed = false) {
43
+ for (const metric of this.targets(loopId)) {
44
+ if (replayed) {
45
+ metric.replayedTransactions++;
46
+ continue;
47
+ }
48
+ metric.roundAttempts++;
49
+ if (result.action === "reject")
50
+ metric.rejectedAttempts++;
51
+ else
52
+ metric.committedRounds++;
53
+ if (result.action === "terminate")
54
+ metric.terminatedRounds++;
55
+ if (result.action === "stop")
56
+ metric.stoppedRounds++;
57
+ if (result.roundSuccess)
58
+ metric.successfulRounds++;
59
+ if (result.gateContradicted)
60
+ metric.contradictedRounds++;
61
+ for (const flag of result.verificationFlags) {
62
+ increment(metric.verificationFlags, flag.check);
63
+ }
64
+ if (result.enforcementReason) {
65
+ increment(metric.enforcementReasons, result.enforcementReason);
66
+ }
67
+ }
68
+ }
69
+ recordEvidence(provider, outcome, latencyMs, loopId) {
70
+ for (const metric of this.targets(loopId)) {
71
+ metric.evidenceCaptures++;
72
+ metric.evidenceLatencyMs += Math.max(0, latencyMs);
73
+ if (outcome === "available")
74
+ metric.evidenceAvailable++;
75
+ if (outcome === "unavailable")
76
+ metric.evidenceUnavailable++;
77
+ if (outcome === "failure")
78
+ metric.evidenceFailures++;
79
+ if (outcome === "timeout")
80
+ metric.evidenceTimeouts++;
81
+ increment(metric.evidenceOutcomesByProvider, `${provider}:${outcome}`);
82
+ }
83
+ }
84
+ recordStrategy(loopId, level) {
85
+ for (const metric of this.targets(loopId)) {
86
+ if (level)
87
+ increment(metric.levels, level);
88
+ }
89
+ }
90
+ recordStrategyOutcome(loopId, level, result, replayed = false) {
91
+ if (replayed)
92
+ return;
93
+ const key = level ?? "unknown";
94
+ for (const metric of this.targets(loopId)) {
95
+ const current = metric.strategyEffectiveness[key] ?? {
96
+ attempts: 0,
97
+ successes: 0,
98
+ rejections: 0,
99
+ };
100
+ current.attempts++;
101
+ if (result.roundSuccess && result.action !== "reject")
102
+ current.successes++;
103
+ if (result.action === "reject")
104
+ current.rejections++;
105
+ metric.strategyEffectiveness[key] = current;
106
+ }
107
+ }
108
+ snapshot(loopId) {
109
+ const source = loopId ? this.loops.get(loopId) ?? empty(loopId) : this.aggregate;
110
+ const attempts = source.roundAttempts;
111
+ const evidence = source.evidenceCaptures;
112
+ const strategyEffectiveness = {};
113
+ for (const [key, value] of Object.entries(source.strategyEffectiveness)) {
114
+ strategyEffectiveness[key] = {
115
+ ...value,
116
+ successRate: value.attempts === 0 ? 0 : value.successes / value.attempts,
117
+ };
118
+ }
119
+ return {
120
+ ...source,
121
+ verificationFlags: { ...source.verificationFlags },
122
+ enforcementReasons: { ...source.enforcementReasons },
123
+ evidenceOutcomesByProvider: { ...source.evidenceOutcomesByProvider },
124
+ levels: { ...source.levels },
125
+ strategyEffectiveness,
126
+ acceptanceRate: attempts === 0 ? 0 : source.committedRounds / attempts,
127
+ evidenceAvailabilityRate: evidence === 0 ? 0 : source.evidenceAvailable / evidence,
128
+ };
129
+ }
130
+ reset(loopId) {
131
+ if (loopId) {
132
+ this.loops.delete(loopId);
133
+ return;
134
+ }
135
+ this.loops.clear();
136
+ this.aggregate = empty();
137
+ }
138
+ }
139
+ export const policyMetrics = new PolicyMetricsCollector();
140
+ export function getPolicyMetrics(loopId) {
141
+ return policyMetrics.snapshot(loopId);
142
+ }
143
+ export function resetPolicyMetrics(loopId) {
144
+ policyMetrics.reset(loopId);
145
+ }
146
+ //# sourceMappingURL=policy-metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy-metrics.js","sourceRoot":"","sources":["../src/policy-metrics.ts"],"names":[],"mappings":"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"}
package/dist/policy.d.ts CHANGED
@@ -1,7 +1,4 @@
1
- /** Policy — externalised loop behaviour configuration.
2
- *
3
- * All tunable parameters live here instead of as module-level constants.
4
- */
1
+ /** Externalized LoopForge runtime policy. */
5
2
  export interface ConstraintsPolicy {
6
3
  retire_window: number;
7
4
  }
@@ -9,186 +6,94 @@ export interface SummaryPolicy {
9
6
  window: number;
10
7
  health_check_interval: number;
11
8
  }
12
- export interface TechniquePolicy {
13
- /** @deprecated v1.15 — Escalation (N failures → Tier 2) removed.
14
- * The Agent freely chooses techniques at L2; keyword routing stays
15
- * in Tier 1 at L1. This field is retained for config compatibility
16
- * but no longer consumed by the routing logic. */
17
- tier2_escalation_failures: number;
18
- }
19
9
  export interface EnginePolicy {
20
10
  feedback_flush_interval: number;
21
11
  max_circuit_breaker: number;
22
- }
23
- export interface RuntimePolicy {
24
12
  max_rounds: number;
25
- round_timeout_ms: number;
26
- heartbeat_interval_ms: number;
27
- stall_grace_ms: number;
28
- max_consecutive_errors: number;
13
+ }
14
+ /** Levels control state density only; reasoning strategy belongs to the Agent. */
15
+ export interface PromptPolicy {
16
+ injection_mode: "adaptive" | "full" | "pointer";
17
+ full_refresh_interval: number;
18
+ l0_max_chars: number;
19
+ l1_max_chars: number;
20
+ l2_max_chars: number;
21
+ base_prompt_version: string;
29
22
  }
30
23
  export interface BackendPolicy {
31
- vault_path: string;
32
- global_vault_path: string;
24
+ /** Root for typed per-loop documents. */
25
+ root_dir: string;
33
26
  }
34
27
  export interface EvolutionPolicy {
35
- /** P0: Max new constraints the agent can discover per round. */
36
28
  max_discovered_constraints_per_round: number;
37
- /** P0: Hard upper bound on total active constraints. */
38
29
  max_active_constraints: number;
39
- /** P1: Max versions of the loop objective to retain in history. */
40
30
  max_objective_versions: number;
41
- /** P4: Minimum progress delta to not be considered stalled. */
42
31
  progress_stall_threshold: number;
43
- /** P4: Consecutive rounds below stall threshold before warning. */
44
32
  progress_stall_rounds: number;
45
- /** P4: Max allowed difference between objective and subjective progress. */
46
33
  progress_mismatch_threshold: number;
47
34
  }
48
- /** A tier in the round-based injection strategy.
49
- * Each tier defines how many and which injection phases are allowed
50
- * based on the loop's maxRounds. */
51
- export interface MemoryInjectionTier {
52
- /** Upper bound of maxRounds for this tier (inclusive). */
53
- max_rounds: number;
54
- /** Which phases are allowed in this tier: [1], [1,3], or [1,2,3]. */
55
- allowed_phases: number[];
56
- }
57
- export interface MemoryInjectionPolicy {
58
- /** Master toggle for memory injection. */
59
- enabled: boolean;
60
- /** Minimum rounds between two consecutive injections. */
61
- min_rounds_between_injections: number;
62
- /** Phase trigger configuration. */
63
- phase_thresholds: {
64
- phase1: {
65
- trigger: "round_1";
66
- };
67
- phase2: {
68
- trigger: "progress";
69
- threshold: number;
70
- };
71
- phase3: {
72
- trigger: "progress";
73
- threshold: number;
74
- };
75
- };
76
- /** Round-based tiered injection strategy. Each tier defines which phases
77
- * are allowed based on maxRounds. The first matching tier wins.
78
- * Tiers should be ordered by max_rounds ascending. */
79
- round_tiers: MemoryInjectionTier[];
80
- /** Jaccard similarity threshold above which a new context is considered
81
- * duplicate and skipped. */
82
- dedup_threshold: number;
83
- /** Maximum characters of memory context to inject (truncated if longer). */
84
- max_context_length: number;
85
- /** Section header for the injected context block in the L2 prompt. */
86
- section_title: string;
87
- }
88
- /** Resolve which injection phases are allowed for a given maxRounds.
89
- * Uses the tiered strategy: finds the first tier where maxRounds ≤ tier.max_rounds,
90
- * and returns its allowed_phases. If maxRounds exceeds all tiers, returns the
91
- * last tier's phases. */
92
- export declare function resolveAllowedPhases(maxRounds: number, tiers: MemoryInjectionTier[]): number[];
93
- /** Resolve which memory injection phase (1/2/3) should fire this round.
94
- * Shared between LoopRuntime (runtime.ts) and SessionManager (mcp/session.ts).
95
- * Returns the phase number, or 0 if no injection should occur this round.
96
- *
97
- * @param currentRound Current round number (1-based).
98
- * @param injectionCount How many injections have already occurred.
99
- * @param allowedPhases Phases allowed by the round-tier policy.
100
- * @param progress Current progress estimate (-1 if unavailable).
101
- * @param phase2Triggered Whether phase 2 has already fired in this loop.
102
- * @param phase3Triggered Whether phase 3 has already fired in this loop.
103
- * @param thresholds Policy threshold config for phase2/phase3. */
104
- export declare function resolveInjectionPhase(currentRound: number, injectionCount: number, allowedPhases: Set<number>, progress: number, phase2Triggered: boolean, phase3Triggered: boolean, thresholds: {
105
- phase2: number;
106
- phase3: number;
107
- }): 0 | 1 | 2 | 3;
108
- /** Build accumulated context for a targeted memory query from a SelfEvaluation.
109
- * Extracts recurring issues, key lessons, and remaining criteria.
110
- * Shared between LoopRuntime (runtime.ts) and SessionManager (mcp/session.ts). */
111
- export declare function buildAccumulatedMemoryContext(selfEval: {
112
- constraint_violations: string[];
113
- execution_evidence?: {
114
- success_criteria_remaining?: string[];
115
- } | null;
116
- emerged_subtasks?: string[];
117
- wrong_assumptions?: string[];
118
- }): {
119
- recurringIssues: string[];
120
- failedPatterns: string[];
121
- keyLessons: string[];
122
- remainingCriteria: string[];
123
- };
124
- /** Build a base LoopMemoryWriteback payload from loop terminal state.
125
- * Shared between LoopRuntime (runtime.ts) and SessionManager (mcp/session.ts).
126
- * Callers may layer additional feedback entries on top of the returned payload. */
127
- export declare function buildBaseMemoryWriteback(params: {
128
- loopId: string;
129
- task: string;
130
- stopReason: string;
131
- roundsCompleted: number;
132
- discoveries: string[];
133
- }): {
134
- loopId: string;
135
- task: string;
136
- outcome: "completed" | "circuit_breaker" | "stalled" | "max_rounds" | "stopped";
137
- roundsCompleted: number;
138
- projectEntry: {
139
- title: string;
140
- objective: string;
141
- keyOutcome: string;
142
- keyDiscoveries: string[];
143
- date: string;
144
- };
145
- referenceEntry: {
146
- description: string;
147
- vaultLocation: string;
148
- };
149
- };
150
- export interface MemoryWritebackPolicy {
151
- /** Master toggle for memory writeback on loop end. */
152
- enabled: boolean;
153
- /** Maximum number of feedback entries to write back. */
154
- max_feedback_entries: number;
155
- /** Maximum number of discoveries in the project entry. */
156
- max_discoveries_in_project: number;
157
- /** Only write back for these stop reasons. */
158
- write_on_outcomes: string[];
159
- }
160
35
  export interface CheckpointPolicy {
161
- /** Maximum number of constraints carried forward in a checkpoint. */
162
36
  max_carried_constraints: number;
163
- /** Maximum character length of the outcome field in a checkpoint. */
164
37
  outcome_max_chars: number;
165
38
  }
39
+ /** Human-readable derived state view. JSON LoopStore documents remain truth. */
166
40
  export interface StateFilePolicy {
167
- /** Master toggle. false = fully disabled, state stays inlined in prompt. */
168
41
  enabled: boolean;
169
- /** Directory relative to project root where state files are written. */
170
42
  directory: string;
171
- /** Max checkpoints to carry in state file. */
172
43
  max_checkpoints: number;
173
- /** Max rounds in cross-round summary section. */
174
44
  max_summary_rounds: number;
175
45
  }
46
+ export interface EvidencePolicy {
47
+ providers: string[];
48
+ timeout_ms: number;
49
+ commands: CommandEvidencePolicy[];
50
+ }
51
+ export interface CommandEvidencePolicy {
52
+ name: string;
53
+ enabled: boolean;
54
+ executable: string;
55
+ args: string[];
56
+ cwd?: string;
57
+ phase: "after" | "both";
58
+ required: boolean;
59
+ timeout_ms: number;
60
+ max_output_chars: number;
61
+ success_exit_codes: number[];
62
+ }
63
+ export interface McpPolicy {
64
+ session_lease_ms: number;
65
+ session_lease_renew_interval_ms: number;
66
+ }
176
67
  export interface LoopPolicy {
177
68
  version: string;
178
69
  constraints: ConstraintsPolicy;
179
70
  summary: SummaryPolicy;
180
- technique: TechniquePolicy;
181
71
  engine: EnginePolicy;
182
- runtime: RuntimePolicy;
72
+ prompt: PromptPolicy;
183
73
  backend: BackendPolicy;
184
74
  evolution: EvolutionPolicy;
185
- memory_injection: MemoryInjectionPolicy;
186
- memory_writeback: MemoryWritebackPolicy;
187
75
  checkpoint: CheckpointPolicy;
188
76
  state_file: StateFilePolicy;
77
+ evidence: EvidencePolicy;
78
+ mcp: McpPolicy;
189
79
  }
190
80
  export declare const DEFAULT_POLICY: LoopPolicy;
81
+ /** Write a full default `loop_policy.json` to the target directory.
82
+ *
83
+ * The written file contains every configurable key and its default value
84
+ * so users can discover and tune the system without reading source code.
85
+ * Skip creation when the file already exists unless `force` is true.
86
+ *
87
+ * @returns The resolved file path and whether it was freshly created.
88
+ */
89
+ export declare function writeDefaultPolicy(targetDir: string, force?: boolean): {
90
+ path: string;
91
+ created: boolean;
92
+ };
191
93
  export declare function loadPolicy(path?: string): LoopPolicy;
192
94
  export declare function getPolicy(path?: string): LoopPolicy;
193
95
  export declare function resetPolicy(): void;
96
+ export declare function validateLoopId(loopId: string): void;
97
+ export declare function resolveStateDirectory(workspaceRoot: string, configuredDirectory: string): string;
98
+ export declare function writeStateFile(loopId: string, content: string | undefined): void;
194
99
  //# sourceMappingURL=policy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"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"}