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.
- package/dist/backends/interface.d.ts +4 -3
- package/dist/backends/interface.d.ts.map +1 -1
- package/dist/backends/interface.js +4 -1
- package/dist/backends/interface.js.map +1 -1
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/engine.d.ts +2 -24
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +72 -238
- package/dist/engine.js.map +1 -1
- package/dist/evidence-provider.d.ts +38 -5
- package/dist/evidence-provider.d.ts.map +1 -1
- package/dist/evidence-provider.js +131 -38
- package/dist/evidence-provider.js.map +1 -1
- package/dist/index.d.ts +3 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -4
- package/dist/index.js.map +1 -1
- package/dist/interop.d.ts +5 -0
- package/dist/interop.d.ts.map +1 -1
- package/dist/interop.js +5 -0
- package/dist/interop.js.map +1 -1
- package/dist/loop-compiler.d.ts.map +1 -1
- package/dist/loop-compiler.js +4 -2
- package/dist/loop-compiler.js.map +1 -1
- package/dist/loop-extras-parser.d.ts +82 -0
- package/dist/loop-extras-parser.d.ts.map +1 -0
- package/dist/loop-extras-parser.js +217 -0
- package/dist/loop-extras-parser.js.map +1 -0
- package/dist/loop-store.d.ts +26 -4
- package/dist/loop-store.d.ts.map +1 -1
- package/dist/loop-store.js +96 -7
- package/dist/loop-store.js.map +1 -1
- package/dist/mcp/server.js +1 -1
- package/dist/mcp/session.d.ts +27 -2
- package/dist/mcp/session.d.ts.map +1 -1
- package/dist/mcp/session.js +166 -117
- package/dist/mcp/session.js.map +1 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +1 -0
- package/dist/mcp/tools.js.map +1 -1
- package/dist/policy.d.ts +0 -8
- package/dist/policy.d.ts.map +1 -1
- package/dist/policy.js +1 -9
- package/dist/policy.js.map +1 -1
- package/dist/prompt-assembler.d.ts.map +1 -1
- package/dist/prompt-assembler.js +25 -4
- package/dist/prompt-assembler.js.map +1 -1
- package/dist/protocol.d.ts +2 -74
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +0 -26
- package/dist/protocol.js.map +1 -1
- package/dist/round-coordinator.d.ts +4 -4
- package/dist/round-coordinator.js +4 -4
- package/dist/self-eval.d.ts +26 -0
- package/dist/self-eval.d.ts.map +1 -0
- package/dist/self-eval.js +154 -0
- package/dist/self-eval.js.map +1 -0
- package/dist/storage.d.ts +3 -2
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +57 -65
- package/dist/storage.js.map +1 -1
- package/dist/verification-gate.d.ts +16 -18
- package/dist/verification-gate.d.ts.map +1 -1
- package/dist/verification-gate.js +149 -94
- package/dist/verification-gate.js.map +1 -1
- package/loop_policy.json +1 -9
- package/package.json +1 -1
- package/dist/runtime.d.ts +0 -94
- package/dist/runtime.d.ts.map +0 -1
- package/dist/runtime.js +0 -718
- 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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"}
|
package/dist/loop-store.d.ts
CHANGED
|
@@ -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
|
-
/**
|
|
67
|
-
*
|
|
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
|
package/dist/loop-store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,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,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
|
|
1
|
+
{"version":3,"file":"loop-store.d.ts","sourceRoot":"","sources":["../src/loop-store.ts"],"names":[],"mappings":"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"}
|
package/dist/loop-store.js
CHANGED
|
@@ -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
|
-
/**
|
|
303
|
-
*
|
|
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
|
package/dist/loop-store.js.map
CHANGED
|
@@ -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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"}
|
package/dist/mcp/server.js
CHANGED
|
@@ -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.
|
|
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) {
|
package/dist/mcp/session.d.ts
CHANGED
|
@@ -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. */
|