loopforge 1.15.1 → 2.0.0

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 (185) hide show
  1. package/README.md +172 -95
  2. package/dist/backends/interface.d.ts +3 -9
  3. package/dist/backends/interface.d.ts.map +1 -1
  4. package/dist/backends/interface.js +1 -5
  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 +7 -4
  18. package/dist/engine.d.ts.map +1 -1
  19. package/dist/engine.js +78 -138
  20. package/dist/engine.js.map +1 -1
  21. package/dist/evidence-provider.d.ts +113 -0
  22. package/dist/evidence-provider.d.ts.map +1 -0
  23. package/dist/evidence-provider.js +419 -0
  24. package/dist/evidence-provider.js.map +1 -0
  25. package/dist/index.d.ts +18 -10
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +15 -9
  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 +30 -0
  34. package/dist/interop.d.ts.map +1 -0
  35. package/dist/interop.js +29 -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 +303 -2206
  40. package/dist/loop-compiler.js.map +1 -1
  41. package/dist/loop-store.d.ts +82 -0
  42. package/dist/loop-store.d.ts.map +1 -0
  43. package/dist/loop-store.js +332 -0
  44. package/dist/loop-store.js.map +1 -0
  45. package/dist/mcp/server.d.ts +9 -6
  46. package/dist/mcp/server.d.ts.map +1 -1
  47. package/dist/mcp/server.js +109 -73
  48. package/dist/mcp/server.js.map +1 -1
  49. package/dist/mcp/session.d.ts +75 -19
  50. package/dist/mcp/session.d.ts.map +1 -1
  51. package/dist/mcp/session.js +707 -361
  52. package/dist/mcp/session.js.map +1 -1
  53. package/dist/mcp/tools.d.ts +18 -268
  54. package/dist/mcp/tools.d.ts.map +1 -1
  55. package/dist/mcp/tools.js +225 -12
  56. package/dist/mcp/tools.js.map +1 -1
  57. package/dist/observability.d.ts +36 -16
  58. package/dist/observability.d.ts.map +1 -1
  59. package/dist/observability.js +82 -23
  60. package/dist/observability.js.map +1 -1
  61. package/dist/policy-metrics.d.ts +46 -0
  62. package/dist/policy-metrics.d.ts.map +1 -0
  63. package/dist/policy-metrics.js +146 -0
  64. package/dist/policy-metrics.js.map +1 -0
  65. package/dist/policy.d.ts +53 -140
  66. package/dist/policy.d.ts.map +1 -1
  67. package/dist/policy.js +119 -184
  68. package/dist/policy.js.map +1 -1
  69. package/dist/prompt-assembler.d.ts +30 -0
  70. package/dist/prompt-assembler.d.ts.map +1 -0
  71. package/dist/prompt-assembler.js +257 -0
  72. package/dist/prompt-assembler.js.map +1 -0
  73. package/dist/prompt-policy.d.ts +29 -0
  74. package/dist/prompt-policy.d.ts.map +1 -0
  75. package/dist/prompt-policy.js +51 -0
  76. package/dist/prompt-policy.js.map +1 -0
  77. package/dist/protocol.d.ts +88 -93
  78. package/dist/protocol.d.ts.map +1 -1
  79. package/dist/protocol.js +23 -39
  80. package/dist/protocol.js.map +1 -1
  81. package/dist/replay.d.ts.map +1 -1
  82. package/dist/replay.js +1 -27
  83. package/dist/replay.js.map +1 -1
  84. package/dist/round-coordinator.d.ts +90 -0
  85. package/dist/round-coordinator.d.ts.map +1 -0
  86. package/dist/round-coordinator.js +186 -0
  87. package/dist/round-coordinator.js.map +1 -0
  88. package/dist/round-driver.d.ts +53 -0
  89. package/dist/round-driver.d.ts.map +1 -0
  90. package/dist/round-driver.js +101 -0
  91. package/dist/round-driver.js.map +1 -0
  92. package/dist/round-transaction.d.ts +70 -0
  93. package/dist/round-transaction.d.ts.map +1 -0
  94. package/dist/round-transaction.js +290 -0
  95. package/dist/round-transaction.js.map +1 -0
  96. package/dist/runtime.d.ts +33 -19
  97. package/dist/runtime.d.ts.map +1 -1
  98. package/dist/runtime.js +355 -336
  99. package/dist/runtime.js.map +1 -1
  100. package/dist/storage.d.ts +38 -0
  101. package/dist/storage.d.ts.map +1 -0
  102. package/dist/storage.js +201 -0
  103. package/dist/storage.js.map +1 -0
  104. package/dist/verification-gate.d.ts +33 -7
  105. package/dist/verification-gate.d.ts.map +1 -1
  106. package/dist/verification-gate.js +195 -7
  107. package/dist/verification-gate.js.map +1 -1
  108. package/loop_policy.json +22 -48
  109. package/package.json +13 -10
  110. package/skills/perception/SKILL.md +80 -267
  111. package/dist/backends/fs.d.ts +0 -36
  112. package/dist/backends/fs.d.ts.map +0 -1
  113. package/dist/backends/fs.js +0 -362
  114. package/dist/backends/fs.js.map +0 -1
  115. package/dist/builder.d.ts +0 -19
  116. package/dist/builder.d.ts.map +0 -1
  117. package/dist/builder.js +0 -215
  118. package/dist/builder.js.map +0 -1
  119. package/dist/mcp-server.d.ts +0 -12
  120. package/dist/mcp-server.d.ts.map +0 -1
  121. package/dist/mcp-server.js +0 -14
  122. package/dist/mcp-server.js.map +0 -1
  123. package/dist/memory-bridge.d.ts +0 -47
  124. package/dist/memory-bridge.d.ts.map +0 -1
  125. package/dist/memory-bridge.js +0 -290
  126. package/dist/memory-bridge.js.map +0 -1
  127. package/dist/tests/_helpers.d.ts +0 -25
  128. package/dist/tests/_helpers.d.ts.map +0 -1
  129. package/dist/tests/_helpers.js +0 -47
  130. package/dist/tests/_helpers.js.map +0 -1
  131. package/dist/tests/builder.test.d.ts +0 -2
  132. package/dist/tests/builder.test.d.ts.map +0 -1
  133. package/dist/tests/builder.test.js +0 -112
  134. package/dist/tests/builder.test.js.map +0 -1
  135. package/dist/tests/enforcement-gate.test.d.ts +0 -2
  136. package/dist/tests/enforcement-gate.test.d.ts.map +0 -1
  137. package/dist/tests/enforcement-gate.test.js +0 -328
  138. package/dist/tests/enforcement-gate.test.js.map +0 -1
  139. package/dist/tests/engine.test.d.ts +0 -2
  140. package/dist/tests/engine.test.d.ts.map +0 -1
  141. package/dist/tests/engine.test.js +0 -375
  142. package/dist/tests/engine.test.js.map +0 -1
  143. package/dist/tests/generate-schema.test.d.ts +0 -8
  144. package/dist/tests/generate-schema.test.d.ts.map +0 -1
  145. package/dist/tests/generate-schema.test.js +0 -199
  146. package/dist/tests/generate-schema.test.js.map +0 -1
  147. package/dist/tests/loop-compiler.test.d.ts +0 -2
  148. package/dist/tests/loop-compiler.test.d.ts.map +0 -1
  149. package/dist/tests/loop-compiler.test.js +0 -1059
  150. package/dist/tests/loop-compiler.test.js.map +0 -1
  151. package/dist/tests/mcp.test.d.ts +0 -7
  152. package/dist/tests/mcp.test.d.ts.map +0 -1
  153. package/dist/tests/mcp.test.js +0 -505
  154. package/dist/tests/mcp.test.js.map +0 -1
  155. package/dist/tests/memory-bridge.test.d.ts +0 -8
  156. package/dist/tests/memory-bridge.test.d.ts.map +0 -1
  157. package/dist/tests/memory-bridge.test.js +0 -383
  158. package/dist/tests/memory-bridge.test.js.map +0 -1
  159. package/dist/tests/policy.test.d.ts +0 -2
  160. package/dist/tests/policy.test.d.ts.map +0 -1
  161. package/dist/tests/policy.test.js +0 -49
  162. package/dist/tests/policy.test.js.map +0 -1
  163. package/dist/tests/protocol.test.d.ts +0 -2
  164. package/dist/tests/protocol.test.d.ts.map +0 -1
  165. package/dist/tests/protocol.test.js +0 -73
  166. package/dist/tests/protocol.test.js.map +0 -1
  167. package/dist/tests/replay.test.d.ts +0 -2
  168. package/dist/tests/replay.test.d.ts.map +0 -1
  169. package/dist/tests/replay.test.js +0 -222
  170. package/dist/tests/replay.test.js.map +0 -1
  171. package/dist/tests/runtime.test.d.ts +0 -7
  172. package/dist/tests/runtime.test.d.ts.map +0 -1
  173. package/dist/tests/runtime.test.js +0 -337
  174. package/dist/tests/runtime.test.js.map +0 -1
  175. package/dist/tests/verification-gate.test.d.ts +0 -2
  176. package/dist/tests/verification-gate.test.d.ts.map +0 -1
  177. package/dist/tests/verification-gate.test.js +0 -407
  178. package/dist/tests/verification-gate.test.js.map +0 -1
  179. package/skills/prompt-techniques/SKILL.md +0 -52
  180. package/skills/prompt-techniques/references/chain-of-thought.md +0 -207
  181. package/skills/prompt-techniques/references/few-shot.md +0 -174
  182. package/skills/prompt-techniques/references/least-to-most.md +0 -182
  183. package/skills/prompt-techniques/references/step-back.md +0 -160
  184. package/skills/prompt-techniques/references/tree-of-thought.md +0 -191
  185. 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":"AAAA,0EAA0E;AA6C1E,SAAS,KAAK,CAAC,MAAe;IAC5B,OAAO;QACL,MAAM;QACN,aAAa,EAAE,CAAC;QAChB,eAAe,EAAE,CAAC;QAClB,gBAAgB,EAAE,CAAC;QACnB,gBAAgB,EAAE,CAAC;QACnB,aAAa,EAAE,CAAC;QAChB,oBAAoB,EAAE,CAAC;QACvB,gBAAgB,EAAE,CAAC;QACnB,kBAAkB,EAAE,CAAC;QACrB,iBAAiB,EAAE,EAAE;QACrB,kBAAkB,EAAE,EAAE;QACtB,0BAA0B,EAAE,EAAE;QAC9B,gBAAgB,EAAE,CAAC;QACnB,iBAAiB,EAAE,CAAC;QACpB,mBAAmB,EAAE,CAAC;QACtB,gBAAgB,EAAE,CAAC;QACnB,gBAAgB,EAAE,CAAC;QACnB,iBAAiB,EAAE,CAAC;QACpB,MAAM,EAAE,EAAE;QACV,qBAAqB,EAAE,EAAE;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,MAA8B,EAAE,GAAW;IAC5D,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,OAAO,sBAAsB;IAChB,KAAK,GAAG,IAAI,GAAG,EAA0B,CAAC;IACnD,SAAS,GAAG,KAAK,EAAE,CAAC;IAEpB,OAAO,CAAC,MAAe;QAC7B,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,WAAW,CAAC,MAAc,EAAE,MAA0B,EAAE,QAAQ,GAAG,KAAK;QACtE,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1C,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,CAAC,oBAAoB,EAAE,CAAC;gBAC9B,SAAS;YACX,CAAC;YACD,MAAM,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ;gBAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC;;gBACrD,MAAM,CAAC,eAAe,EAAE,CAAC;YAC9B,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW;gBAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC7D,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM;gBAAE,MAAM,CAAC,aAAa,EAAE,CAAC;YACrD,IAAI,MAAM,CAAC,YAAY;gBAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC;YACnD,IAAI,MAAM,CAAC,gBAAgB;gBAAE,MAAM,CAAC,kBAAkB,EAAE,CAAC;YACzD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBAC5C,SAAS,CAAC,MAAM,CAAC,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAClD,CAAC;YACD,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBAC7B,SAAS,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;IACH,CAAC;IAED,cAAc,CACZ,QAAgB,EAChB,OAA4D,EAC5D,SAAiB,EACjB,MAAe;QAEf,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1C,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC1B,MAAM,CAAC,iBAAiB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YACnD,IAAI,OAAO,KAAK,WAAW;gBAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC;YACxD,IAAI,OAAO,KAAK,aAAa;gBAAE,MAAM,CAAC,mBAAmB,EAAE,CAAC;YAC5D,IAAI,OAAO,KAAK,SAAS;gBAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC;YACrD,IAAI,OAAO,KAAK,SAAS;gBAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC;YACrD,SAAS,CAAC,MAAM,CAAC,0BAA0B,EAAE,GAAG,QAAQ,IAAI,OAAO,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED,cAAc,CAAC,MAAc,EAAE,KAAc;QAC3C,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1C,IAAI,KAAK;gBAAE,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,qBAAqB,CACnB,MAAc,EACd,KAAyB,EACzB,MAA0B,EAC1B,QAAQ,GAAG,KAAK;QAEhB,IAAI,QAAQ;YAAE,OAAO;QACrB,MAAM,GAAG,GAAG,KAAK,IAAI,SAAS,CAAC;QAC/B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI;gBACnD,QAAQ,EAAE,CAAC;gBACX,SAAS,EAAE,CAAC;gBACZ,UAAU,EAAE,CAAC;aACd,CAAC;YACF,OAAO,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ;gBAAE,OAAO,CAAC,SAAS,EAAE,CAAC;YAC3E,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ;gBAAE,OAAO,CAAC,UAAU,EAAE,CAAC;YACrD,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,MAAe;QACtB,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;QACjF,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAAC;QACzC,MAAM,qBAAqB,GAAmD,EAAE,CAAC;QACjF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAC,EAAE,CAAC;YACxE,qBAAqB,CAAC,GAAG,CAAC,GAAG;gBAC3B,GAAG,KAAK;gBACR,WAAW,EAAE,KAAK,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ;aACzE,CAAC;QACJ,CAAC;QACD,OAAO;YACL,GAAG,MAAM;YACT,iBAAiB,EAAE,EAAE,GAAG,MAAM,CAAC,iBAAiB,EAAE;YAClD,kBAAkB,EAAE,EAAE,GAAG,MAAM,CAAC,kBAAkB,EAAE;YACpD,0BAA0B,EAAE,EAAE,GAAG,MAAM,CAAC,0BAA0B,EAAE;YACpE,MAAM,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE;YAC5B,qBAAqB;YACrB,cAAc,EAAE,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,GAAG,QAAQ;YACtE,wBAAwB,EAAE,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,GAAG,QAAQ;SACnF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAe;QACnB,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC1B,OAAO;QACT,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,KAAK,EAAE,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,sBAAsB,EAAE,CAAC;AAE1D,MAAM,UAAU,gBAAgB,CAAC,MAAe;IAC9C,OAAO,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAe;IAChD,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC"}
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,13 +6,6 @@ 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;
@@ -26,169 +16,92 @@ export interface RuntimePolicy {
26
16
  heartbeat_interval_ms: number;
27
17
  stall_grace_ms: number;
28
18
  max_consecutive_errors: number;
19
+ pause_double_tap_ms: number;
20
+ }
21
+ /** Levels control state density only; reasoning strategy belongs to the Agent. */
22
+ export interface PromptPolicy {
23
+ injection_mode: "adaptive" | "full" | "pointer";
24
+ full_refresh_interval: number;
25
+ l0_max_chars: number;
26
+ l1_max_chars: number;
27
+ l2_max_chars: number;
28
+ base_prompt_version: string;
29
29
  }
30
30
  export interface BackendPolicy {
31
- vault_path: string;
32
- global_vault_path: string;
31
+ /** Root for typed per-loop documents. */
32
+ root_dir: string;
33
33
  }
34
34
  export interface EvolutionPolicy {
35
- /** P0: Max new constraints the agent can discover per round. */
36
35
  max_discovered_constraints_per_round: number;
37
- /** P0: Hard upper bound on total active constraints. */
38
36
  max_active_constraints: number;
39
- /** P1: Max versions of the loop objective to retain in history. */
40
37
  max_objective_versions: number;
41
- /** P4: Minimum progress delta to not be considered stalled. */
42
38
  progress_stall_threshold: number;
43
- /** P4: Consecutive rounds below stall threshold before warning. */
44
39
  progress_stall_rounds: number;
45
- /** P4: Max allowed difference between objective and subjective progress. */
46
40
  progress_mismatch_threshold: number;
47
41
  }
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
42
  export interface CheckpointPolicy {
161
- /** Maximum number of constraints carried forward in a checkpoint. */
162
43
  max_carried_constraints: number;
163
- /** Maximum character length of the outcome field in a checkpoint. */
164
44
  outcome_max_chars: number;
165
45
  }
46
+ /** Human-readable derived state view. JSON LoopStore documents remain truth. */
166
47
  export interface StateFilePolicy {
167
- /** Master toggle. false = fully disabled, state stays inlined in prompt. */
168
48
  enabled: boolean;
169
- /** Directory relative to project root where state files are written. */
170
49
  directory: string;
171
- /** Max checkpoints to carry in state file. */
172
50
  max_checkpoints: number;
173
- /** Max rounds in cross-round summary section. */
174
51
  max_summary_rounds: number;
175
52
  }
53
+ export interface EvidencePolicy {
54
+ providers: string[];
55
+ timeout_ms: number;
56
+ commands: CommandEvidencePolicy[];
57
+ }
58
+ export interface CommandEvidencePolicy {
59
+ name: string;
60
+ enabled: boolean;
61
+ executable: string;
62
+ args: string[];
63
+ cwd?: string;
64
+ phase: "after" | "both";
65
+ required: boolean;
66
+ timeout_ms: number;
67
+ max_output_chars: number;
68
+ success_exit_codes: number[];
69
+ }
70
+ export interface McpPolicy {
71
+ session_lease_ms: number;
72
+ session_lease_renew_interval_ms: number;
73
+ }
176
74
  export interface LoopPolicy {
177
75
  version: string;
178
76
  constraints: ConstraintsPolicy;
179
77
  summary: SummaryPolicy;
180
- technique: TechniquePolicy;
181
78
  engine: EnginePolicy;
182
79
  runtime: RuntimePolicy;
80
+ prompt: PromptPolicy;
183
81
  backend: BackendPolicy;
184
82
  evolution: EvolutionPolicy;
185
- memory_injection: MemoryInjectionPolicy;
186
- memory_writeback: MemoryWritebackPolicy;
187
83
  checkpoint: CheckpointPolicy;
188
84
  state_file: StateFilePolicy;
85
+ evidence: EvidencePolicy;
86
+ mcp: McpPolicy;
189
87
  }
190
88
  export declare const DEFAULT_POLICY: LoopPolicy;
89
+ /** Write a full default `loop_policy.json` to the target directory.
90
+ *
91
+ * The written file contains every configurable key and its default value
92
+ * so users can discover and tune the system without reading source code.
93
+ * Skip creation when the file already exists unless `force` is true.
94
+ *
95
+ * @returns The resolved file path and whether it was freshly created.
96
+ */
97
+ export declare function writeDefaultPolicy(targetDir: string, force?: boolean): {
98
+ path: string;
99
+ created: boolean;
100
+ };
191
101
  export declare function loadPolicy(path?: string): LoopPolicy;
192
102
  export declare function getPolicy(path?: string): LoopPolicy;
193
103
  export declare function resetPolicy(): void;
104
+ export declare function validateLoopId(loopId: string): void;
105
+ export declare function resolveStateDirectory(workspaceRoot: string, configuredDirectory: string): string;
106
+ export declare function writeStateFile(loopId: string, content: string | undefined): void;
194
107
  //# 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":"AAAA,6CAA6C;AAe7C,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,YAAY;IAC3B,uBAAuB,EAAE,MAAM,CAAC;IAChC,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,kFAAkF;AAClF,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;IAChD,qBAAqB,EAAE,MAAM,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,oCAAoC,EAAE,MAAM,CAAC;IAC7C,sBAAsB,EAAE,MAAM,CAAC;IAC/B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,wBAAwB,EAAE,MAAM,CAAC;IACjC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,2BAA2B,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,gBAAgB;IAC/B,uBAAuB,EAAE,MAAM,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,gFAAgF;AAChF,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,qBAAqB,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,SAAS;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,+BAA+B,EAAE,MAAM,CAAC;CACzC;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,iBAAiB,CAAC;IAC/B,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,aAAa,CAAC;IACvB,SAAS,EAAE,eAAe,CAAC;IAC3B,UAAU,EAAE,gBAAgB,CAAC;IAC7B,UAAU,EAAE,eAAe,CAAC;IAC5B,QAAQ,EAAE,cAAc,CAAC;IACzB,GAAG,EAAE,SAAS,CAAC;CAChB;AAED,eAAO,MAAM,cAAc,EAAE,UA0C5B,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,KAAK,UAAQ,GACZ;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAOpC;AAwBD,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAapD;AAID,wBAAgB,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAGnD;AAED,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAID,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAanD;AAED,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,MAAM,EACrB,mBAAmB,EAAE,MAAM,GAC1B,MAAM,CA2BR;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAsBhF"}