loopforge 2.0.0 → 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 (72) hide show
  1. package/dist/backends/interface.d.ts +4 -3
  2. package/dist/backends/interface.d.ts.map +1 -1
  3. package/dist/backends/interface.js +4 -1
  4. package/dist/backends/interface.js.map +1 -1
  5. package/dist/cli.js +1 -1
  6. package/dist/cli.js.map +1 -1
  7. package/dist/engine.d.ts +2 -24
  8. package/dist/engine.d.ts.map +1 -1
  9. package/dist/engine.js +72 -238
  10. package/dist/engine.js.map +1 -1
  11. package/dist/evidence-provider.d.ts +38 -5
  12. package/dist/evidence-provider.d.ts.map +1 -1
  13. package/dist/evidence-provider.js +131 -38
  14. package/dist/evidence-provider.js.map +1 -1
  15. package/dist/index.d.ts +3 -5
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +1 -4
  18. package/dist/index.js.map +1 -1
  19. package/dist/interop.d.ts +5 -0
  20. package/dist/interop.d.ts.map +1 -1
  21. package/dist/interop.js +5 -0
  22. package/dist/interop.js.map +1 -1
  23. package/dist/loop-compiler.d.ts.map +1 -1
  24. package/dist/loop-compiler.js +4 -2
  25. package/dist/loop-compiler.js.map +1 -1
  26. package/dist/loop-extras-parser.d.ts +82 -0
  27. package/dist/loop-extras-parser.d.ts.map +1 -0
  28. package/dist/loop-extras-parser.js +217 -0
  29. package/dist/loop-extras-parser.js.map +1 -0
  30. package/dist/loop-store.d.ts +26 -4
  31. package/dist/loop-store.d.ts.map +1 -1
  32. package/dist/loop-store.js +96 -7
  33. package/dist/loop-store.js.map +1 -1
  34. package/dist/mcp/server.js +1 -1
  35. package/dist/mcp/session.d.ts +27 -2
  36. package/dist/mcp/session.d.ts.map +1 -1
  37. package/dist/mcp/session.js +166 -117
  38. package/dist/mcp/session.js.map +1 -1
  39. package/dist/mcp/tools.d.ts.map +1 -1
  40. package/dist/mcp/tools.js +1 -0
  41. package/dist/mcp/tools.js.map +1 -1
  42. package/dist/policy.d.ts +0 -8
  43. package/dist/policy.d.ts.map +1 -1
  44. package/dist/policy.js +1 -9
  45. package/dist/policy.js.map +1 -1
  46. package/dist/prompt-assembler.d.ts.map +1 -1
  47. package/dist/prompt-assembler.js +25 -4
  48. package/dist/prompt-assembler.js.map +1 -1
  49. package/dist/protocol.d.ts +2 -74
  50. package/dist/protocol.d.ts.map +1 -1
  51. package/dist/protocol.js +0 -26
  52. package/dist/protocol.js.map +1 -1
  53. package/dist/round-coordinator.d.ts +4 -4
  54. package/dist/round-coordinator.js +4 -4
  55. package/dist/self-eval.d.ts +26 -0
  56. package/dist/self-eval.d.ts.map +1 -0
  57. package/dist/self-eval.js +154 -0
  58. package/dist/self-eval.js.map +1 -0
  59. package/dist/storage.d.ts +3 -2
  60. package/dist/storage.d.ts.map +1 -1
  61. package/dist/storage.js +57 -65
  62. package/dist/storage.js.map +1 -1
  63. package/dist/verification-gate.d.ts +16 -18
  64. package/dist/verification-gate.d.ts.map +1 -1
  65. package/dist/verification-gate.js +149 -94
  66. package/dist/verification-gate.js.map +1 -1
  67. package/loop_policy.json +1 -9
  68. package/package.json +1 -1
  69. package/dist/runtime.d.ts +0 -94
  70. package/dist/runtime.d.ts.map +0 -1
  71. package/dist/runtime.js +0 -718
  72. package/dist/runtime.js.map +0 -1
@@ -0,0 +1,82 @@
1
+ /** LoopExtrasParser — Typed extraction pipeline for LoopForgeRequest extras.
2
+ *
3
+ * invokeLoopCompile receives a LoopForgeRequest whose extra fields arrive as
4
+ * untyped `Record<string, unknown>`. Before this module, each field was
5
+ * extracted inline with ad-hoc `typeof` guards spread across ~80 lines of
6
+ * engine.ts — brittle, untestable, and error-prone.
7
+ *
8
+ * ExtractionContext provides a single-pass, type-safe extraction surface:
9
+ * - Every method returns a typed value or a sensible default.
10
+ * - Type mismatches and out-of-range values are collected in `errors[]`
11
+ * rather than thrown, so the caller can log them and continue with
12
+ * best-effort defaults.
13
+ * - All extraction is synchronous and pure (no I/O, no side effects).
14
+ *
15
+ * Design constraint: zero runtime dependencies (Node.js stdlib only).
16
+ */
17
+ import type { VerificationFlag } from "./protocol.js";
18
+ export interface FieldError {
19
+ field: string;
20
+ message: string;
21
+ received: unknown;
22
+ }
23
+ export declare class ExtractionContext {
24
+ /** Errors collected during extraction. The caller decides whether to
25
+ * log them, fail fast, or ignore them. Never populated for optional
26
+ * fields when the value is absent — only for present-but-invalid values. */
27
+ readonly errors: FieldError[];
28
+ private readonly source;
29
+ constructor(source: Record<string, unknown>);
30
+ /** Extract a required string field. Returns `fallback` (default `""`) when
31
+ * the key is missing or the value is not a string. */
32
+ string(key: string, fallback?: string): string;
33
+ /** Extract an optional string field. Returns `null` when absent,
34
+ * `fallback` when present-but-invalid. */
35
+ optionalString(key: string, fallback?: string | null): string | null;
36
+ /** Extract a number field. Returns `fallback` when missing or invalid.
37
+ * Applies optional `min`/`max` clamping and `truncate` (Math.trunc). */
38
+ number(key: string, fallback: number, opts?: {
39
+ min?: number;
40
+ max?: number;
41
+ truncate?: boolean;
42
+ }): number;
43
+ /** Extract a boolean field. Returns `fallback` when missing or invalid. */
44
+ boolean(key: string, fallback?: boolean): boolean;
45
+ /** Extract a string array. Returns `fallback` (default `[]`) when missing.
46
+ * Filters out non-string elements and records them as errors individually. */
47
+ stringArray(key: string, fallback?: string[]): string[];
48
+ /** Extract a plain object field. Returns `null` when missing or when the
49
+ * value is not a non-array object. Does not recurse into the value. */
50
+ object(key: string): Record<string, unknown> | null;
51
+ /** Check whether a key exists (is not undefined). Useful for gating
52
+ * optional structured fields — call object() only when present. */
53
+ has(key: string): boolean;
54
+ }
55
+ export interface ParsedLoopExtras {
56
+ loop_id: string;
57
+ round: number;
58
+ goal_id: string;
59
+ domain: string;
60
+ next_task_proposal: string;
61
+ plan_source: string | null;
62
+ constraints_from_plan: string[];
63
+ new_since_last_round: string;
64
+ force_level: string;
65
+ health_check_interval: number;
66
+ external_context: string;
67
+ max_rounds: number | undefined;
68
+ verification_flags: VerificationFlag[];
69
+ attempt: number;
70
+ consecutive_rejections: number;
71
+ rejection_notice: string;
72
+ last_round_result: Record<string, unknown> | null;
73
+ loop_objective: Record<string, unknown> | null;
74
+ }
75
+ /** Parse all extras fields from a LoopForgeRequest into a typed structure.
76
+ * Extraction errors are attached to the returned context for inspection.
77
+ * This function never throws — every field has a safe default. */
78
+ export declare function parseLoopExtras(extras: Record<string, unknown>, taskId: string): {
79
+ parsed: ParsedLoopExtras;
80
+ ctx: ExtractionContext;
81
+ };
82
+ //# sourceMappingURL=loop-extras-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop-extras-parser.d.ts","sourceRoot":"","sources":["../src/loop-extras-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAItD,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAID,qBAAa,iBAAiB;IAC5B;;iFAE6E;IAC7E,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,CAAM;IAEnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;gBAErC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAM3C;2DACuD;IACvD,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,SAAK,GAAG,MAAM;IAY1C;+CAC2C;IAC3C,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,GAAG,IAAW,GAAG,MAAM,GAAG,IAAI;IAY1E;6EACyE;IACzE,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAC3C,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,GAAG,MAAM;IAkBV,2EAA2E;IAC3E,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,UAAQ,GAAG,OAAO;IAc/C;mFAC+E;IAC/E,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,EAAO,GAAG,MAAM,EAAE;IA4B3D;4EACwE;IACxE,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAcnD;wEACoE;IACpE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;CAG1B;AAID,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,kBAAkB,EAAE,gBAAgB,EAAE,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAClD,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAChD;AAED;;mEAEmE;AACnE,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,EAAE,MAAM,GACb;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,GAAG,EAAE,iBAAiB,CAAA;CAAE,CAoCtD"}
@@ -0,0 +1,217 @@
1
+ /** LoopExtrasParser — Typed extraction pipeline for LoopForgeRequest extras.
2
+ *
3
+ * invokeLoopCompile receives a LoopForgeRequest whose extra fields arrive as
4
+ * untyped `Record<string, unknown>`. Before this module, each field was
5
+ * extracted inline with ad-hoc `typeof` guards spread across ~80 lines of
6
+ * engine.ts — brittle, untestable, and error-prone.
7
+ *
8
+ * ExtractionContext provides a single-pass, type-safe extraction surface:
9
+ * - Every method returns a typed value or a sensible default.
10
+ * - Type mismatches and out-of-range values are collected in `errors[]`
11
+ * rather than thrown, so the caller can log them and continue with
12
+ * best-effort defaults.
13
+ * - All extraction is synchronous and pure (no I/O, no side effects).
14
+ *
15
+ * Design constraint: zero runtime dependencies (Node.js stdlib only).
16
+ */
17
+ // ── ExtractionContext ──────────────────────────────────────────────────────
18
+ export class ExtractionContext {
19
+ /** Errors collected during extraction. The caller decides whether to
20
+ * log them, fail fast, or ignore them. Never populated for optional
21
+ * fields when the value is absent — only for present-but-invalid values. */
22
+ errors = [];
23
+ source;
24
+ constructor(source) {
25
+ this.source = source;
26
+ }
27
+ // ── Primitives ─────────────────────────────────────────────────────────
28
+ /** Extract a required string field. Returns `fallback` (default `""`) when
29
+ * the key is missing or the value is not a string. */
30
+ string(key, fallback = "") {
31
+ const raw = this.source[key];
32
+ if (raw === undefined || raw === null)
33
+ return fallback;
34
+ if (typeof raw === "string")
35
+ return raw;
36
+ this.errors.push({
37
+ field: key,
38
+ message: `expected string, got ${typeof raw}`,
39
+ received: raw,
40
+ });
41
+ return fallback;
42
+ }
43
+ /** Extract an optional string field. Returns `null` when absent,
44
+ * `fallback` when present-but-invalid. */
45
+ optionalString(key, fallback = null) {
46
+ const raw = this.source[key];
47
+ if (raw === undefined || raw === null)
48
+ return null;
49
+ if (typeof raw === "string")
50
+ return raw;
51
+ this.errors.push({
52
+ field: key,
53
+ message: `expected string or null, got ${typeof raw}`,
54
+ received: raw,
55
+ });
56
+ return fallback;
57
+ }
58
+ /** Extract a number field. Returns `fallback` when missing or invalid.
59
+ * Applies optional `min`/`max` clamping and `truncate` (Math.trunc). */
60
+ number(key, fallback, opts) {
61
+ const raw = this.source[key];
62
+ if (raw === undefined || raw === null)
63
+ return fallback;
64
+ if (typeof raw === "number" && !Number.isNaN(raw)) {
65
+ let value = raw;
66
+ if (opts?.truncate)
67
+ value = Math.trunc(value);
68
+ if (opts?.min !== undefined)
69
+ value = Math.max(opts.min, value);
70
+ if (opts?.max !== undefined)
71
+ value = Math.min(opts.max, value);
72
+ return value;
73
+ }
74
+ this.errors.push({
75
+ field: key,
76
+ message: `expected number, got ${typeof raw}`,
77
+ received: raw,
78
+ });
79
+ return fallback;
80
+ }
81
+ /** Extract a boolean field. Returns `fallback` when missing or invalid. */
82
+ boolean(key, fallback = false) {
83
+ const raw = this.source[key];
84
+ if (raw === undefined || raw === null)
85
+ return fallback;
86
+ if (typeof raw === "boolean")
87
+ return raw;
88
+ this.errors.push({
89
+ field: key,
90
+ message: `expected boolean, got ${typeof raw}`,
91
+ received: raw,
92
+ });
93
+ return fallback;
94
+ }
95
+ // ── Collections ────────────────────────────────────────────────────────
96
+ /** Extract a string array. Returns `fallback` (default `[]`) when missing.
97
+ * Filters out non-string elements and records them as errors individually. */
98
+ stringArray(key, fallback = []) {
99
+ const raw = this.source[key];
100
+ if (raw === undefined || raw === null)
101
+ return fallback;
102
+ if (!Array.isArray(raw)) {
103
+ this.errors.push({
104
+ field: key,
105
+ message: `expected array, got ${typeof raw}`,
106
+ received: raw,
107
+ });
108
+ return fallback;
109
+ }
110
+ const result = [];
111
+ for (let i = 0; i < raw.length; i++) {
112
+ if (typeof raw[i] === "string") {
113
+ result.push(raw[i]);
114
+ }
115
+ else {
116
+ this.errors.push({
117
+ field: `${key}[${i}]`,
118
+ message: `expected string in array, got ${typeof raw[i]}`,
119
+ received: raw[i],
120
+ });
121
+ }
122
+ }
123
+ return result;
124
+ }
125
+ // ── Structured ─────────────────────────────────────────────────────────
126
+ /** Extract a plain object field. Returns `null` when missing or when the
127
+ * value is not a non-array object. Does not recurse into the value. */
128
+ object(key) {
129
+ const raw = this.source[key];
130
+ if (raw === undefined || raw === null)
131
+ return null;
132
+ if (typeof raw === "object" && !Array.isArray(raw)) {
133
+ return raw;
134
+ }
135
+ this.errors.push({
136
+ field: key,
137
+ message: `expected object, got ${Array.isArray(raw) ? "array" : typeof raw}`,
138
+ received: raw,
139
+ });
140
+ return null;
141
+ }
142
+ /** Check whether a key exists (is not undefined). Useful for gating
143
+ * optional structured fields — call object() only when present. */
144
+ has(key) {
145
+ return this.source[key] !== undefined;
146
+ }
147
+ }
148
+ /** Parse all extras fields from a LoopForgeRequest into a typed structure.
149
+ * Extraction errors are attached to the returned context for inspection.
150
+ * This function never throws — every field has a safe default. */
151
+ export function parseLoopExtras(extras, taskId) {
152
+ const ctx = new ExtractionContext(extras);
153
+ const parsed = {
154
+ loop_id: ctx.string("loop_id") || taskId,
155
+ round: ctx.number("round", 1, { min: 1, truncate: true }),
156
+ goal_id: ctx.string("goal_id"),
157
+ domain: ctx.string("domain"),
158
+ next_task_proposal: ctx.string("next_task_proposal"),
159
+ plan_source: ctx.optionalString("plan_source"),
160
+ constraints_from_plan: ctx.stringArray("constraints_from_plan"),
161
+ new_since_last_round: ctx.string("new_since_last_round"),
162
+ force_level: ctx.string("force_level", "auto"),
163
+ health_check_interval: ctx.number("health_check_interval", 1, {
164
+ min: 1,
165
+ truncate: true,
166
+ }),
167
+ external_context: ctx.string("external_context"),
168
+ max_rounds: ctx.has("max_rounds")
169
+ ? ctx.number("max_rounds", 0, { min: 1, truncate: true }) || undefined
170
+ : undefined,
171
+ verification_flags: validateVerificationFlags(extras.verification_flags, ctx),
172
+ attempt: ctx.number("attempt", 1, { min: 1, truncate: true }),
173
+ consecutive_rejections: ctx.number("consecutive_rejections", 0, {
174
+ min: 0,
175
+ truncate: true,
176
+ }),
177
+ rejection_notice: ctx.string("rejection_notice"),
178
+ last_round_result: ctx.object("last_round_result"),
179
+ loop_objective: ctx.object("loop_objective"),
180
+ };
181
+ return { parsed, ctx };
182
+ }
183
+ // ── Specialized validators ────────────────────────────────────────────────
184
+ function validateVerificationFlags(raw, ctx) {
185
+ if (!Array.isArray(raw)) {
186
+ if (raw !== undefined && raw !== null) {
187
+ ctx.errors.push({
188
+ field: "verification_flags",
189
+ message: `expected array, got ${typeof raw}`,
190
+ received: raw,
191
+ });
192
+ }
193
+ return [];
194
+ }
195
+ const flags = [];
196
+ for (let i = 0; i < raw.length; i++) {
197
+ const item = raw[i];
198
+ if (item !== null &&
199
+ typeof item === "object" &&
200
+ !Array.isArray(item) &&
201
+ typeof item.severity === "string" &&
202
+ typeof item.field === "string" &&
203
+ typeof item.check === "string" &&
204
+ typeof item.detail === "string") {
205
+ flags.push(item);
206
+ }
207
+ else {
208
+ ctx.errors.push({
209
+ field: `verification_flags[${i}]`,
210
+ message: "expected VerificationFlag object",
211
+ received: item,
212
+ });
213
+ }
214
+ }
215
+ return flags;
216
+ }
217
+ //# sourceMappingURL=loop-extras-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop-extras-parser.js","sourceRoot":"","sources":["../src/loop-extras-parser.ts"],"names":[],"mappings":"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"}
@@ -42,6 +42,7 @@ export interface LoopStore {
42
42
  appendEntries(entries: VaultEntry[]): number;
43
43
  replaceEntries(entries: VaultEntry[]): void;
44
44
  readSession(loopId: string): LoopSessionDocument | null;
45
+ writeSession(loopId: string, document: LoopSessionDocument): void;
45
46
  readRound(loopId: string, round: number): LoopRoundDocument | null;
46
47
  migrateLegacyVault(path?: string): LoopStoreMigrationResult;
47
48
  }
@@ -52,6 +53,7 @@ export declare class FileLoopStore implements LoopStore {
52
53
  withLock<T>(fn: () => T): T;
53
54
  listLoopIds(): string[];
54
55
  readSession(loopId: string): LoopSessionDocument | null;
56
+ writeSession(loopId: string, document: LoopSessionDocument): void;
55
57
  readRound(loopId: string, round: number): LoopRoundDocument | null;
56
58
  listEntries(loopId?: string): VaultEntry[];
57
59
  appendEntry(entry: VaultEntry): void;
@@ -63,14 +65,15 @@ export declare class FileLoopStore implements LoopStore {
63
65
  private readJson;
64
66
  private atomicWrite;
65
67
  }
66
- /** Compatibility adapter for legacy internal query code. Persistent truth is
67
- * still the typed per-loop documents above; no Markdown lineage is written. */
68
+ /** @deprecated Use LoopStore directly.
69
+ *
70
+ * Compatibility adapter so modules that still accept VaultBackend can
71
+ * operate on a LoopStore. Persistent truth is the typed per-loop
72
+ * documents; no Markdown lineage is written. */
68
73
  export declare class LoopStoreBackend implements VaultBackend {
69
74
  readonly store: LoopStore;
70
75
  constructor(store?: LoopStore);
71
76
  withLock<T>(fn: () => T): T;
72
- readVault(): Record<string, unknown>;
73
- writeVault(data: Record<string, unknown>): void;
74
77
  queryEntries(opts?: {
75
78
  prefix?: string;
76
79
  taskIdPattern?: string;
@@ -79,4 +82,23 @@ export declare class LoopStoreBackend implements VaultBackend {
79
82
  appendEntry(entry: VaultEntry): void;
80
83
  appendEntries(entries: VaultEntry[]): number;
81
84
  }
85
+ /** Adapter that wraps a VaultBackend as a LoopStore for backward compat.
86
+ *
87
+ * SessionManager uses this when a VaultBackend is provided directly so
88
+ * VaultSessionStateStore can operate on typed session documents while
89
+ * the underlying storage remains VaultBackend entries. */
90
+ export declare class VaultBackendLoopStore implements LoopStore {
91
+ private readonly backend;
92
+ constructor(backend: VaultBackend);
93
+ withLock<T>(fn: () => T): T;
94
+ listLoopIds(): string[];
95
+ listEntries(loopId?: string): VaultEntry[];
96
+ appendEntry(entry: VaultEntry): void;
97
+ appendEntries(entries: VaultEntry[]): number;
98
+ replaceEntries(_entries: VaultEntry[]): void;
99
+ readSession(loopId: string): LoopSessionDocument | null;
100
+ writeSession(loopId: string, document: LoopSessionDocument): void;
101
+ readRound(loopId: string, round: number): LoopRoundDocument | null;
102
+ migrateLegacyVault(_path?: string): LoopStoreMigrationResult;
103
+ }
82
104
  //# sourceMappingURL=loop-store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loop-store.d.ts","sourceRoot":"","sources":["../src/loop-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loop-store.d.ts","sourceRoot":"","sources":["../src/loop-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAcH,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAIvE,eAAO,MAAM,yBAAyB,EAAG,CAAU,CAAC;AAEpD,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,OAAO,yBAAyB,CAAC;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,UAAU,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,OAAO,yBAAyB,CAAC;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,WAAW,CAAC,EAAE,wBAAwB,CAAC;IACvC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5B,WAAW,IAAI,MAAM,EAAE,CAAC;IACxB,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,EAAE,CAAC;IAC3C,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IACrC,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAC7C,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAC5C,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAAC;IACxD,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAClE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAAC;IACnE,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,wBAAwB,CAAC;CAC7D;AA6BD,qBAAa,aAAc,YAAW,SAAS;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,SAAS,CAAK;gBAEV,IAAI,SAAe;IAI/B,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IA6C3B,WAAW,IAAI,MAAM,EAAE;IAavB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI;IAQvD,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IAKjE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAuBlE,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,EAAE;IAwB1C,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAIpC,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM;IAO5C,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI;IAM3C,kBAAkB,CAAC,IAAI,SAAmC,GAAG,wBAAwB;IAiCrF,OAAO,CAAC,UAAU;IAmDlB,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,WAAW;CAMpB;AAED;;;;iDAIiD;AACjD,qBAAa,gBAAiB,YAAW,YAAY;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS;gBAAhB,KAAK,GAAE,SAA+B;IAE3D,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IAC3B,YAAY,CAAC,IAAI,CAAC,EAAE;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,GAAG,UAAU,EAAE;IAUhB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IACpC,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM;CAC7C;AAED;;;;2DAI2D;AAC3D,qBAAa,qBAAsB,YAAW,SAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,YAAY;IAElD,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IAM3B,WAAW,IAAI,MAAM,EAAE;IAQvB,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,EAAE;IAK1C,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IACpC,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM;IAC5C,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI;IAK5C,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI;IAcvD,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IA+BjE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAalE,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,wBAAwB;CAG7D"}
@@ -129,6 +129,10 @@ export class FileLoopStore {
129
129
  return null;
130
130
  return value;
131
131
  }
132
+ writeSession(loopId, document) {
133
+ validateLoopId(loopId);
134
+ this.atomicWrite(join(this.loopDir(loopId), "session.json"), document);
135
+ }
132
136
  readRound(loopId, round) {
133
137
  validateLoopId(loopId);
134
138
  if (!Number.isInteger(round) || round < 1)
@@ -299,19 +303,17 @@ export class FileLoopStore {
299
303
  renameSync(temporary, path);
300
304
  }
301
305
  }
302
- /** Compatibility adapter for legacy internal query code. Persistent truth is
303
- * still the typed per-loop documents above; no Markdown lineage is written. */
306
+ /** @deprecated Use LoopStore directly.
307
+ *
308
+ * Compatibility adapter so modules that still accept VaultBackend can
309
+ * operate on a LoopStore. Persistent truth is the typed per-loop
310
+ * documents; no Markdown lineage is written. */
304
311
  export class LoopStoreBackend {
305
312
  store;
306
313
  constructor(store = new FileLoopStore()) {
307
314
  this.store = store;
308
315
  }
309
316
  withLock(fn) { return this.store.withLock(fn); }
310
- readVault() { return { entries: this.store.listEntries() }; }
311
- writeVault(data) {
312
- const entries = Array.isArray(data.entries) ? data.entries.filter(isRecord) : [];
313
- this.store.replaceEntries(entries);
314
- }
315
317
  queryEntries(opts) {
316
318
  return this.store.listEntries().filter((entry) => {
317
319
  const taskId = String(entry.task_id ?? "");
@@ -329,4 +331,91 @@ export class LoopStoreBackend {
329
331
  appendEntry(entry) { this.store.appendEntry(entry); }
330
332
  appendEntries(entries) { return this.store.appendEntries(entries); }
331
333
  }
334
+ /** Adapter that wraps a VaultBackend as a LoopStore for backward compat.
335
+ *
336
+ * SessionManager uses this when a VaultBackend is provided directly so
337
+ * VaultSessionStateStore can operate on typed session documents while
338
+ * the underlying storage remains VaultBackend entries. */
339
+ export class VaultBackendLoopStore {
340
+ backend;
341
+ constructor(backend) {
342
+ this.backend = backend;
343
+ }
344
+ withLock(fn) {
345
+ return typeof this.backend.withLock === "function"
346
+ ? this.backend.withLock(fn)
347
+ : fn();
348
+ }
349
+ listLoopIds() {
350
+ return [...new Set(this.backend.queryEntries()
351
+ .filter((e) => typeof e.loop_id === "string")
352
+ .map((e) => e.loop_id))].sort();
353
+ }
354
+ listEntries(loopId) {
355
+ if (loopId)
356
+ return this.backend.queryEntries({ prefix: `loop:${loopId}` });
357
+ return this.backend.queryEntries();
358
+ }
359
+ appendEntry(entry) { this.backend.appendEntry(entry); }
360
+ appendEntries(entries) { return this.backend.appendEntries(entries); }
361
+ replaceEntries(_entries) {
362
+ // Best-effort: not all VaultBackend implementations support bulk replace.
363
+ // The typed session path bypasses this method.
364
+ }
365
+ readSession(loopId) {
366
+ const entry = this.backend.queryEntries({ prefix: `loop:${loopId}:session` })
367
+ .find((e) => e.task_type === "session_state" && e.loop_id === loopId);
368
+ if (!entry)
369
+ return null;
370
+ return {
371
+ schemaVersion: LOOP_STORE_SCHEMA_VERSION,
372
+ loopId,
373
+ updatedAt: typeof entry.timestamp === "string"
374
+ ? entry.timestamp
375
+ : new Date().toISOString(),
376
+ entry,
377
+ };
378
+ }
379
+ writeSession(loopId, document) {
380
+ const entry = document.entry;
381
+ // Ensure the entry carries identifying fields expected by queryEntries.
382
+ entry.task_type = "session_state";
383
+ entry.loop_id = loopId;
384
+ entry.task_id = `loop:${loopId}:session`;
385
+ // Session state lives in the vault entries list. The backend may
386
+ // provide readVault/writeVault as optional compat methods; if not,
387
+ // we fall back to appendEntry (which may create duplicates, but
388
+ // VaultSessionStateStore.load returns the first match).
389
+ const be = this.backend;
390
+ if (typeof be.readVault === "function" &&
391
+ typeof be.writeVault === "function") {
392
+ // Call via .call(be) so methods that reference `this` (e.g.
393
+ // MemoryBackend.readVault) keep their receiver.
394
+ const data = be.readVault.call(be);
395
+ const entries = Array.isArray(data.entries)
396
+ ? data.entries
397
+ : [];
398
+ const filtered = entries.filter((item) => !(item.task_type === "session_state" && item.loop_id === loopId));
399
+ be.writeVault.call(be, { entries: [...filtered, entry] });
400
+ return;
401
+ }
402
+ this.backend.appendEntry(entry);
403
+ }
404
+ readRound(loopId, round) {
405
+ const prefix = `loop:${loopId}:r${round}:`;
406
+ const entries = this.backend.queryEntries({ prefix });
407
+ if (entries.length === 0)
408
+ return null;
409
+ return {
410
+ schemaVersion: LOOP_STORE_SCHEMA_VERSION,
411
+ loopId,
412
+ round,
413
+ updatedAt: entries[0].timestamp ?? new Date().toISOString(),
414
+ events: entries,
415
+ };
416
+ }
417
+ migrateLegacyVault(_path) {
418
+ return { source: _path ?? "vault", imported: 0, skipped: 0, alreadyMigrated: true };
419
+ }
420
+ }
332
421
  //# sourceMappingURL=loop-store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loop-store.js","sourceRoot":"","sources":["../src/loop-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loop-store.js","sourceRoot":"","sources":["../src/loop-store.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@
6
6
  import { createInterface } from "node:readline";
7
7
  import { SessionManager } from "./session.js";
8
8
  import { TOOL_HANDLERS, TOOL_SCHEMAS, ToolInputValidationError, validateToolInput, } from "./tools.js";
9
- const SERVER_INFO = { name: "loopforge-mcp", version: "2.0.0" };
9
+ const SERVER_INFO = { name: "loopforge-mcp", version: "2.0.1" };
10
10
  class JsonRpcError extends Error {
11
11
  code;
12
12
  constructor(code, message) {
@@ -57,9 +57,11 @@ export interface AdvanceResult {
57
57
  roundId?: string;
58
58
  prompt: string | null;
59
59
  stopReason?: string;
60
+ /** v2.0.1: Human-readable context for why the loop stopped.
61
+ * Provides facts the agent can use to decide its next action,
62
+ * without LoopForge prescribing a specific behavior. */
63
+ stopDetail?: string;
60
64
  level?: string;
61
- /** @deprecated Use roundSuccess instead. Derived: roundSuccess ? 5 : 1 */
62
- quality?: number;
63
65
  roundSuccess?: boolean;
64
66
  warnings?: string[];
65
67
  /** v1.13: Enforcement action for this round. accept/reject/terminate.
@@ -144,6 +146,29 @@ export declare class SessionManager {
144
146
  * When provided (MCP path with evaluation parameter), skips regex extraction.
145
147
  * When undefined (runtime/CLI path), falls back to regex extraction from output. */
146
148
  advance(sessionId: string, output: string, preExtractedEval?: SelfEvaluation): Promise<AdvanceResult>;
149
+ /** Extract a SelfEvaluation from agent output.
150
+ * Structured param preferred → regex extraction → heuristic fallback.
151
+ * Returns null only when both regex and heuristic returned null. */
152
+ private extractEvaluation;
153
+ /** Execute the round transaction and apply per-rule rejection tracking.
154
+ * MUTATES: session.roundSnapshot, session.consecutiveRejections,
155
+ * session.lastRejectionCheck, session.lastSelfEval,
156
+ * session.successTrajectory */
157
+ private executeRoundTransaction;
158
+ /** Build a rejection result: compile a retry prompt, persist, return.
159
+ * MUTATES: session.roundSnapshot, session.currentPrompt, session.currentLevel */
160
+ private buildRejectionResult;
161
+ /** Build a termination result: persist stopped status, notify sinks.
162
+ * MUTATES: session.status, session.currentPrompt */
163
+ private buildTerminationResult;
164
+ /** Build a stop result: persist stopped/stalled status, notify sinks.
165
+ * MUTATES: session.status, session.currentPrompt */
166
+ private buildStopResult;
167
+ /** Compile the next round's prompt and advance the session.
168
+ * Includes the commit fence (pause/delete race guard) and context provider.
169
+ * MUTATES: session.currentRound, session.currentPrompt, session.currentLevel,
170
+ * session.evidenceBaseline, session.roundSnapshot */
171
+ private advanceToNextRound;
147
172
  private advanceUnlocked;
148
173
  /** Write back loop knowledge to long-term memory.
149
174
  * Uses shared base builder from policy.ts. Called when a loop terminates. */