loopforge 2.11.0 → 3.2.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 (117) hide show
  1. package/README.md +4 -4
  2. package/dist/audit.d.ts +50 -0
  3. package/dist/audit.d.ts.map +1 -0
  4. package/dist/audit.js +158 -0
  5. package/dist/audit.js.map +1 -0
  6. package/dist/canonical-state.d.ts +21 -9
  7. package/dist/canonical-state.d.ts.map +1 -1
  8. package/dist/canonical-state.js +34 -16
  9. package/dist/canonical-state.js.map +1 -1
  10. package/dist/cli.d.ts.map +1 -1
  11. package/dist/cli.js +16 -6
  12. package/dist/cli.js.map +1 -1
  13. package/dist/cognitive-governance.d.ts +40 -0
  14. package/dist/cognitive-governance.d.ts.map +1 -0
  15. package/dist/cognitive-governance.js +126 -0
  16. package/dist/cognitive-governance.js.map +1 -0
  17. package/dist/enforcement-gate.d.ts +8 -3
  18. package/dist/enforcement-gate.d.ts.map +1 -1
  19. package/dist/enforcement-gate.js +419 -92
  20. package/dist/enforcement-gate.js.map +1 -1
  21. package/dist/engine.d.ts +47 -7
  22. package/dist/engine.d.ts.map +1 -1
  23. package/dist/engine.js +303 -60
  24. package/dist/engine.js.map +1 -1
  25. package/dist/evidence-claims.d.ts +50 -0
  26. package/dist/evidence-claims.d.ts.map +1 -0
  27. package/dist/evidence-claims.js +134 -0
  28. package/dist/evidence-claims.js.map +1 -0
  29. package/dist/generate-schema.js +6 -1
  30. package/dist/generate-schema.js.map +1 -1
  31. package/dist/index.d.ts +3 -3
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +2 -2
  34. package/dist/index.js.map +1 -1
  35. package/dist/loop-compiler.d.ts +41 -3
  36. package/dist/loop-compiler.d.ts.map +1 -1
  37. package/dist/loop-compiler.js +310 -38
  38. package/dist/loop-compiler.js.map +1 -1
  39. package/dist/loop-projection.d.ts +26 -0
  40. package/dist/loop-projection.d.ts.map +1 -0
  41. package/dist/loop-projection.js +142 -0
  42. package/dist/loop-projection.js.map +1 -0
  43. package/dist/loop-store.d.ts +91 -41
  44. package/dist/loop-store.d.ts.map +1 -1
  45. package/dist/loop-store.js +243 -173
  46. package/dist/loop-store.js.map +1 -1
  47. package/dist/mcp/round-lifecycle.d.ts +216 -0
  48. package/dist/mcp/round-lifecycle.d.ts.map +1 -0
  49. package/dist/mcp/round-lifecycle.js +926 -0
  50. package/dist/mcp/round-lifecycle.js.map +1 -0
  51. package/dist/mcp/server.d.ts +3 -2
  52. package/dist/mcp/server.d.ts.map +1 -1
  53. package/dist/mcp/server.js +65 -9
  54. package/dist/mcp/server.js.map +1 -1
  55. package/dist/mcp/session.d.ts +47 -139
  56. package/dist/mcp/session.d.ts.map +1 -1
  57. package/dist/mcp/session.js +284 -784
  58. package/dist/mcp/session.js.map +1 -1
  59. package/dist/mcp/tools.d.ts +23 -1
  60. package/dist/mcp/tools.d.ts.map +1 -1
  61. package/dist/mcp/tools.js +270 -79
  62. package/dist/mcp/tools.js.map +1 -1
  63. package/dist/policy-metrics.d.ts +11 -0
  64. package/dist/policy-metrics.d.ts.map +1 -1
  65. package/dist/policy-metrics.js +118 -21
  66. package/dist/policy-metrics.js.map +1 -1
  67. package/dist/policy.d.ts +26 -1
  68. package/dist/policy.d.ts.map +1 -1
  69. package/dist/policy.js +13 -2
  70. package/dist/policy.js.map +1 -1
  71. package/dist/prompt-assembler.d.ts +34 -1
  72. package/dist/prompt-assembler.d.ts.map +1 -1
  73. package/dist/prompt-assembler.js +320 -42
  74. package/dist/prompt-assembler.js.map +1 -1
  75. package/dist/protocol.d.ts +169 -1
  76. package/dist/protocol.d.ts.map +1 -1
  77. package/dist/protocol.js +39 -0
  78. package/dist/protocol.js.map +1 -1
  79. package/dist/replay.d.ts +5 -5
  80. package/dist/replay.d.ts.map +1 -1
  81. package/dist/replay.js +9 -8
  82. package/dist/replay.js.map +1 -1
  83. package/dist/round-coordinator.d.ts +6 -3
  84. package/dist/round-coordinator.d.ts.map +1 -1
  85. package/dist/round-coordinator.js +38 -19
  86. package/dist/round-coordinator.js.map +1 -1
  87. package/dist/round-driver.d.ts +9 -4
  88. package/dist/round-driver.d.ts.map +1 -1
  89. package/dist/round-driver.js +15 -7
  90. package/dist/round-driver.js.map +1 -1
  91. package/dist/round-transaction.d.ts +7 -3
  92. package/dist/round-transaction.d.ts.map +1 -1
  93. package/dist/round-transaction.js +93 -88
  94. package/dist/round-transaction.js.map +1 -1
  95. package/dist/self-eval.d.ts +31 -1
  96. package/dist/self-eval.d.ts.map +1 -1
  97. package/dist/self-eval.js +115 -12
  98. package/dist/self-eval.js.map +1 -1
  99. package/dist/storage.d.ts +3 -4
  100. package/dist/storage.d.ts.map +1 -1
  101. package/dist/storage.js +5 -4
  102. package/dist/storage.js.map +1 -1
  103. package/dist/token-utils.d.ts +20 -7
  104. package/dist/token-utils.d.ts.map +1 -1
  105. package/dist/token-utils.js +68 -9
  106. package/dist/token-utils.js.map +1 -1
  107. package/dist/verification-gate.d.ts +54 -2
  108. package/dist/verification-gate.d.ts.map +1 -1
  109. package/dist/verification-gate.js +433 -25
  110. package/dist/verification-gate.js.map +1 -1
  111. package/loop_policy.json +35 -8
  112. package/package.json +3 -2
  113. package/skills/perception/SKILL.md +24 -6
  114. package/dist/backends/interface.d.ts +0 -39
  115. package/dist/backends/interface.d.ts.map +0 -1
  116. package/dist/backends/interface.js +0 -6
  117. package/dist/backends/interface.js.map +0 -1
package/dist/mcp/tools.js CHANGED
@@ -1,11 +1,14 @@
1
1
  /** LoopForge MCP — Tool definitions and handlers.
2
2
  *
3
- * 9 tools: start, next, status, stop, pause, list, replay, resume, health.
3
+ * 9 tools: start, next, status, stop, pause, resume, replay,
4
+ * gate_check, gate_resolve.
5
+ * status is the unified inspection tool (view=session|loop|all|audit).
4
6
  * Each handler receives SessionManager + parsed input, returns the output object.
5
7
  */
6
8
  import { buildSelfEvaluation } from "../engine.js";
7
- import { getPolicyMetrics } from "../policy-metrics.js";
9
+ import { collectSelfEvalGaps } from "../self-eval.js";
8
10
  import { isRecord } from "../token-utils.js";
11
+ import { validateLoopId } from "../policy.js";
9
12
  // ═══════════════════════════════════════════════════════════════════════════
10
13
  // Tool schemas (MCP JSON Schema format)
11
14
  // ═══════════════════════════════════════════════════════════════════════════
@@ -25,7 +28,8 @@ const TOOL_BASE_SCHEMAS = [
25
28
  description: "Optional loop ID. Generated automatically if not provided.",
26
29
  },
27
30
  maxRounds: {
28
- type: "number",
31
+ type: "integer",
32
+ minimum: 1,
29
33
  description: "Maximum rounds before auto-stop. Default: 20 from policy.",
30
34
  },
31
35
  domain: {
@@ -55,13 +59,17 @@ const TOOL_BASE_SCHEMAS = [
55
59
  type: "string",
56
60
  description: "Session ID returned by loopforge_start.",
57
61
  },
62
+ roundId: {
63
+ type: "string",
64
+ description: "The roundId from the most recent loopforge_start / loopforge_next / loopforge_resume / loopforge_status response. Anchors this submission to the exact round it reports on: a submission whose roundId no longer matches the current round (the round already committed) is not processed — the current held prompt is returned instead, so lost responses can be recovered without skipping or double-committing a round.",
65
+ },
58
66
  output: {
59
67
  type: "string",
60
68
  description: "Optional. The agent's full output from executing the current round's prompt. May be omitted if evaluation parameter is provided.",
61
69
  },
62
70
  evaluation: {
63
71
  type: "object",
64
- description: "Structured self-evaluation for this round. Required for the loop to continue. Preferred over embedding ---loopforge-eval blocks in output text.",
72
+ description: "Structured self-evaluation for this round. Either this or an output containing a ---loopforge-eval block is required for the loop to continue. Preferred over embedding ---loopforge-eval blocks in output text.",
65
73
  required: ["success", "output_summary", "should_continue", "constraint_violations"],
66
74
  properties: {
67
75
  success: {
@@ -163,6 +171,11 @@ const TOOL_BASE_SCHEMAS = [
163
171
  subTask: { type: "string" },
164
172
  resultSummary: { type: "string" },
165
173
  success: { type: "boolean" },
174
+ outcome: {
175
+ type: "string",
176
+ enum: ["success", "partial", "failed"],
177
+ description: "Optional. Worker outcome; derived from success when absent.",
178
+ },
166
179
  discoveredConstraints: {
167
180
  type: "array",
168
181
  items: { type: "string" },
@@ -203,6 +216,36 @@ const TOOL_BASE_SCHEMAS = [
203
216
  enum: ["gave_up", "blocked", "needs_human_input"],
204
217
  description: "Optional. Why the agent is stopping. Only meaningful when should_continue=false and success=false. 'blocked' means work cannot proceed under current constraints.",
205
218
  },
219
+ no_change_reason: {
220
+ type: "string",
221
+ description: "Optional. Declared reason for claiming success with no machine-verifiable evidence (e.g. documentation-only round). Downgrades the success_without_verified_evidence check from error to info. Max 200 chars.",
222
+ },
223
+ outcome: {
224
+ type: "string",
225
+ enum: ["success", "partial", "failed", "blocked"],
226
+ description: "Optional. Tri-state outcome. When absent, derived from success (true→success, false→failed). 'partial' and 'blocked' must be declared explicitly. A declared non-success outcome suppresses the success-class checks even when success=true.",
227
+ },
228
+ blocker: {
229
+ type: "string",
230
+ description: "Optional. Flat blocker description, required only when outcome=blocked. Also feeds the user/agent gate classification. Max 500 chars.",
231
+ },
232
+ retroactiveClaims: {
233
+ type: "array",
234
+ items: {
235
+ type: "object",
236
+ properties: {
237
+ round: { type: "integer", minimum: 1 },
238
+ claim: { type: "string" },
239
+ },
240
+ required: ["round", "claim"],
241
+ additionalProperties: false,
242
+ },
243
+ description: "Optional. Claims that a PRIOR round satisfied a criterion. The runtime verifies them against the prior round's git evidence. Max 20 entries.",
244
+ },
245
+ drift_clarification: {
246
+ type: "string",
247
+ description: "Optional. Explain why this round's actions diverged from your previous round's next_action. Only required when the previous round was flagged for intent_drift or subgoal_drift. Mention concrete anchors: sub-goal IDs (sg-XXXXXXXX), constraint IDs (c-XXXXXXXX), criterion IDs (cr-XXXXXXXX), or file paths.",
248
+ },
206
249
  prompt_requests: {
207
250
  type: "object",
208
251
  description: "Optional. Information needs for the next round's prompt. Use when you know what context you'll need to succeed in the next round.",
@@ -230,21 +273,34 @@ const TOOL_BASE_SCHEMAS = [
230
273
  },
231
274
  },
232
275
  },
233
- required: ["sessionId", "evaluation"],
276
+ // v3.2.1: evaluation is optional at the schema level — the handler
277
+ // requires EITHER the evaluation parameter OR output containing a
278
+ // ---loopforge-eval block. Requiring it here made the embedded-block
279
+ // path dead code (input validation rejected it before the handler).
280
+ required: ["sessionId", "roundId"],
234
281
  },
235
282
  },
236
283
  {
237
284
  name: "loopforge_status",
238
- description: "Get the current status of a loop session, including round identity and success trajectory.",
285
+ description: "Inspect loop state. view=session (default): session status, round identity, success trajectory and typed projection. view=loop: loop health (goal alignment, constraints, drift). view=all: summary of every persisted loop. view=audit: read-only end-of-loop verification audit (claims, gates, verdict, sequence integrity).",
239
286
  inputSchema: {
240
287
  type: "object",
241
288
  properties: {
242
289
  sessionId: {
243
290
  type: "string",
244
- description: "Session ID returned by loopforge_start.",
291
+ description: "Session ID returned by loopforge_start (views session/audit).",
292
+ },
293
+ loopId: {
294
+ type: "string",
295
+ description: "Loop ID (views loop/audit).",
296
+ },
297
+ view: {
298
+ type: "string",
299
+ enum: ["session", "loop", "all", "audit"],
300
+ description: "Which view to return. Defaults to session.",
245
301
  },
246
302
  },
247
- required: ["sessionId"],
303
+ required: [],
248
304
  },
249
305
  },
250
306
  {
@@ -275,15 +331,6 @@ const TOOL_BASE_SCHEMAS = [
275
331
  required: ["sessionId"],
276
332
  },
277
333
  },
278
- {
279
- name: "loopforge_list",
280
- description: "List all active loop sessions managed by this MCP server.",
281
- inputSchema: {
282
- type: "object",
283
- properties: {},
284
- required: [],
285
- },
286
- },
287
334
  {
288
335
  name: "loopforge_replay",
289
336
  description: "Replay a completed or running loop session as an auditable round timeline.",
@@ -313,17 +360,43 @@ const TOOL_BASE_SCHEMAS = [
313
360
  },
314
361
  },
315
362
  {
316
- name: "loopforge_health",
317
- description: "Check the health of a loop: goal alignment, constraint integrity, drift detection, strategy stability, and task continuity. Works for both active in-memory sessions and vault-persisted loops.",
363
+ name: "loopforge_gate_check",
364
+ description: "v2.12: Classify a high-risk action or blocker text as a user gate (needs human authorization) or an agent gate (resolvable with evidence). Read-only — nothing is recorded. Use the returned gate id with loopforge_gate_resolve after a human decision.",
318
365
  inputSchema: {
319
366
  type: "object",
320
367
  properties: {
321
- loopId: {
368
+ gateText: {
322
369
  type: "string",
323
- description: "Loop ID to check health for.",
370
+ description: "The action or blocker text to classify, e.g. 'Deploy to production'.",
324
371
  },
325
372
  },
326
- required: ["loopId"],
373
+ required: ["gateText"],
374
+ },
375
+ },
376
+ {
377
+ name: "loopforge_gate_resolve",
378
+ description: "v2.12: Record a human decision for a previously opened user gate. The gate id embeds the action hash — if the action text changed, the approval expires automatically. Read-only for agent gates (they are resolved by submitting evidence).",
379
+ inputSchema: {
380
+ type: "object",
381
+ properties: {
382
+ sessionId: {
383
+ type: "string",
384
+ description: "Session ID whose loop owns the gate.",
385
+ },
386
+ gateId: {
387
+ type: "string",
388
+ description: "Gate id returned by loopforge_gate_check or recorded from a blocked round.",
389
+ },
390
+ approved: {
391
+ type: "boolean",
392
+ description: "Whether the human authorizes the action.",
393
+ },
394
+ note: {
395
+ type: "string",
396
+ description: "Optional human note recorded with the decision.",
397
+ },
398
+ },
399
+ required: ["sessionId", "gateId", "approved"],
327
400
  },
328
401
  },
329
402
  ];
@@ -335,17 +408,31 @@ const ADVANCE_OUTPUT_SCHEMA = {
335
408
  round: { type: "number" },
336
409
  roundId: { type: ["string", "null"] },
337
410
  prompt: { type: ["string", "null"] },
338
- stopReason: { type: "string" },
339
- stopDetail: { type: "string", description: "Human-readable context for why the loop stopped. Provides facts without prescribing a specific agent action." },
340
- level: { type: "string" },
341
- roundSuccess: { type: "boolean" },
411
+ stopReason: { type: ["string", "null"] },
412
+ stopDetail: { type: ["string", "null"], description: "Human-readable context for why the loop stopped. Provides facts without prescribing a specific agent action." },
413
+ level: { type: ["string", "null"] },
414
+ roundSuccess: { type: ["boolean", "null"] },
342
415
  enforcementAction: { enum: ["accept", "reject", "terminate", "backtrack"] },
343
- enforcementReason: { type: "string" },
416
+ enforcementReason: { type: ["string", "null"] },
344
417
  warnings: { type: "array", items: { type: "string" } },
418
+ parseGaps: {
419
+ type: "array",
420
+ items: { type: "object", additionalProperties: true },
421
+ description: "v2.12: Field-level format diagnostics for tolerated evaluation issues.",
422
+ },
423
+ projection: {
424
+ type: "object",
425
+ additionalProperties: true,
426
+ description: "v2.12: Typed cognitive state projection (focus/todo/phase/delegation/handoff).",
427
+ },
345
428
  },
346
429
  additionalProperties: true,
347
430
  };
348
- const TOOL_OUTPUT_SCHEMAS = {
431
+ /** Declared structured-output contracts for every tool. The MCP server
432
+ * validates each handler's output against these before returning it —
433
+ * a mismatch is a contract bug, surfaced as a JSON-RPC error instead of
434
+ * silently shipping an output that violates the declared schema. */
435
+ export const TOOL_OUTPUT_SCHEMAS = {
349
436
  loopforge_start: ADVANCE_OUTPUT_SCHEMA,
350
437
  loopforge_next: ADVANCE_OUTPUT_SCHEMA,
351
438
  loopforge_resume: ADVANCE_OUTPUT_SCHEMA,
@@ -385,14 +472,6 @@ const TOOL_OUTPUT_SCHEMAS = {
385
472
  },
386
473
  additionalProperties: true,
387
474
  },
388
- loopforge_list: {
389
- type: "object",
390
- properties: {
391
- sessions: { type: "array", items: { type: "object", additionalProperties: true } },
392
- },
393
- required: ["sessions"],
394
- additionalProperties: false,
395
- },
396
475
  loopforge_replay: {
397
476
  type: "object",
398
477
  properties: {
@@ -403,17 +482,29 @@ const TOOL_OUTPUT_SCHEMAS = {
403
482
  },
404
483
  additionalProperties: true,
405
484
  },
406
- loopforge_health: {
485
+ loopforge_gate_check: {
407
486
  type: "object",
408
487
  properties: {
409
488
  error: { type: "string" },
489
+ id: { type: "string" },
490
+ kind: { type: "string" },
491
+ question: { type: "string" },
492
+ blockedScope: { type: "array", items: { type: "string" } },
493
+ allowedWork: { type: "array", items: { type: "string" } },
494
+ problem: { type: "string" },
495
+ requiredEvidence: { type: "array", items: { type: "string" } },
496
+ suggestedResolution: { type: "string" },
497
+ },
498
+ additionalProperties: true,
499
+ },
500
+ loopforge_gate_resolve: {
501
+ type: "object",
502
+ properties: {
503
+ error: { type: "string" },
504
+ sessionId: { type: "string" },
410
505
  loopId: { type: "string" },
411
- goal_alignment: { type: "object", additionalProperties: true },
412
- constraint_integrity: { type: "object", additionalProperties: true },
413
- drift_detected: { type: "boolean" },
414
- strategy_stability: { type: "object", additionalProperties: true },
415
- task_continuity: { type: "object", additionalProperties: true },
416
- policy_metrics: { type: "object", additionalProperties: true },
506
+ gateId: { type: "string" },
507
+ approved: { type: "boolean" },
417
508
  },
418
509
  additionalProperties: true,
419
510
  },
@@ -449,12 +540,28 @@ export class ToolInputValidationError extends Error {
449
540
  this.name = "ToolInputValidationError";
450
541
  }
451
542
  }
543
+ function typeMatches(value, type) {
544
+ switch (type) {
545
+ case "object": return isRecord(value);
546
+ case "array": return Array.isArray(value);
547
+ case "string": return typeof value === "string";
548
+ case "boolean": return typeof value === "boolean";
549
+ case "number": return typeof value === "number" && Number.isFinite(value);
550
+ case "integer": return typeof value === "number" && Number.isInteger(value);
551
+ case "null": return value === null;
552
+ default: return true; // undeclared type — no constraint
553
+ }
554
+ }
452
555
  function validateSchema(value, schema, path) {
453
- const type = schema.type;
454
- if (type === "object") {
455
- if (!isRecord(value)) {
456
- throw new ToolInputValidationError(`${path} must be an object`);
457
- }
556
+ // v2.14: an explicitly-undefined optional field is the same as absent —
557
+ // output objects carry `key: undefined` after spreads of optional fields.
558
+ if (value === undefined)
559
+ return;
560
+ const types = Array.isArray(schema.type) ? schema.type : [schema.type];
561
+ if (!types.some((type) => typeMatches(value, type))) {
562
+ throw new ToolInputValidationError(`${path} must be ${types.join(" or ")}`);
563
+ }
564
+ if (types.some((type) => type === "object") && isRecord(value)) {
458
565
  const properties = isRecord(schema.properties) ? schema.properties : {};
459
566
  const required = Array.isArray(schema.required)
460
567
  ? schema.required.filter((item) => typeof item === "string")
@@ -478,27 +585,23 @@ function validateSchema(value, schema, path) {
478
585
  }
479
586
  return;
480
587
  }
481
- if (type === "array") {
482
- if (!Array.isArray(value)) {
483
- throw new ToolInputValidationError(`${path} must be an array`);
484
- }
588
+ if (types.some((type) => type === "array") && Array.isArray(value)) {
485
589
  if (isRecord(schema.items)) {
486
590
  value.forEach((item, index) => validateSchema(item, schema.items, `${path}[${index}]`));
487
591
  }
488
592
  return;
489
593
  }
490
- if (type === "string" && typeof value !== "string") {
491
- throw new ToolInputValidationError(`${path} must be a string`);
492
- }
493
- if (type === "boolean" && typeof value !== "boolean") {
494
- throw new ToolInputValidationError(`${path} must be a boolean`);
495
- }
496
- if (type === "number" || type === "integer") {
497
- if (typeof value !== "number" ||
498
- !Number.isFinite(value) ||
499
- (type === "integer" && !Number.isInteger(value))) {
500
- throw new ToolInputValidationError(`${path} must be ${type === "integer" ? "an integer" : "a number"}`);
594
+ if (types.some((type) => type === "string") && typeof value === "string") {
595
+ // Enforce declared enums — the schemas advertise them, so validation
596
+ // must too (v2.12: view/gateText enums were previously unchecked).
597
+ if (Array.isArray(schema.enum) && !schema.enum.includes(value)) {
598
+ throw new ToolInputValidationError(`${path} must be one of: ${schema.enum.join(", ")}`);
501
599
  }
600
+ return;
601
+ }
602
+ if ((types.some((type) => type === "number") ||
603
+ types.some((type) => type === "integer")) &&
604
+ typeof value === "number") {
502
605
  if (typeof schema.minimum === "number" && value < schema.minimum) {
503
606
  throw new ToolInputValidationError(`${path} must be >= ${schema.minimum}`);
504
607
  }
@@ -513,6 +616,16 @@ export function validateToolInput(name, input) {
513
616
  throw new ToolInputValidationError(`Unknown tool: ${name}`);
514
617
  validateSchema(input, contract.inputSchema, "arguments");
515
618
  }
619
+ /** Validate a handler's output against the tool's declared output schema.
620
+ * v2.14: the schemas were advertised in tools/list but never enforced —
621
+ * a mismatched output silently violated the declared contract. Throws
622
+ * ToolInputValidationError on mismatch. */
623
+ export function validateToolOutput(name, output) {
624
+ const schema = TOOL_OUTPUT_SCHEMAS[name];
625
+ if (!schema)
626
+ return;
627
+ validateSchema(output, schema, `output.${name}`);
628
+ }
516
629
  export const TOOL_HANDLERS = {
517
630
  async loopforge_start(mgr, input) {
518
631
  const startInput = {
@@ -528,28 +641,103 @@ export const TOOL_HANDLERS = {
528
641
  if (!startInput.task.trim()) {
529
642
  return { error: "task is required and must be non-empty" };
530
643
  }
644
+ // v2.14: entry-point validation — a bad maxRounds previously passed
645
+ // through and stopped the loop on the first round; an invalid loopId
646
+ // exploded later as an internal storage error instead of a clean
647
+ // argument error.
648
+ if (startInput.maxRounds !== undefined &&
649
+ (!Number.isInteger(startInput.maxRounds) || startInput.maxRounds < 1)) {
650
+ return { error: "maxRounds must be a positive integer" };
651
+ }
652
+ if (startInput.loopId !== undefined) {
653
+ try {
654
+ validateLoopId(startInput.loopId);
655
+ }
656
+ catch (error) {
657
+ return { error: `invalid loopId: ${error.message}` };
658
+ }
659
+ }
531
660
  const result = await mgr.create(startInput);
661
+ // v2.14: a same-process duplicate loopId surfaces as a clean argument
662
+ // error instead of a prompt-less "success" the client cannot act on.
663
+ if (typeof result.stopReason === "string" &&
664
+ result.stopReason.startsWith("loop_already_running:")) {
665
+ return { error: result.stopDetail ?? "loop already running" };
666
+ }
532
667
  return { ...result };
533
668
  },
534
669
  async loopforge_next(mgr, input) {
535
670
  const sessionId = String(input.sessionId ?? "");
536
671
  const output = String(input.output ?? "");
537
672
  const rawEval = input.evaluation;
673
+ const roundId = input.roundId === undefined ? undefined : String(input.roundId);
538
674
  if (!sessionId)
539
675
  return { error: "sessionId is required" };
676
+ // v3.0.1: every submission is anchored to the round it reports on. A
677
+ // missing roundId would silently re-process a stale submission against a
678
+ // later round — reject it here so the contract is enforced even when the
679
+ // handler is invoked directly (bypassing schema validation).
680
+ if (!roundId || !roundId.trim()) {
681
+ return { error: "roundId is required — pass the roundId from the most recent loopforge_start / loopforge_next / loopforge_resume / loopforge_status response" };
682
+ }
540
683
  // Build SelfEvaluation from structured evaluation parameter
541
684
  const preExtractedEval = rawEval ? buildSelfEvaluation(rawEval) : undefined;
542
685
  // Require at least one of: evaluation parameter or output with embedded eval block
543
686
  if (!preExtractedEval && !output.trim()) {
544
687
  return { error: "Either evaluation parameter or output with ---loopforge-eval block is required" };
545
688
  }
546
- const result = await mgr.advance(sessionId, output, preExtractedEval);
547
- return { ...result };
689
+ const result = await mgr.advance(sessionId, output, preExtractedEval, roundId);
690
+ // v2.12: Typed projection — runtime facts for the main agent, attached
691
+ // on every accepted/continued round (not on errors).
692
+ let projection = null;
693
+ if (result.enforcementAction !== "reject" && result.enforcementAction !== "terminate" &&
694
+ result.stopReason !== "session_not_found" && result.stopReason !== "stalled") {
695
+ projection = mgr.getProjection(sessionId);
696
+ }
697
+ // v2.12: Field-level diagnostics for tolerated format issues. The
698
+ // lenient parser still accepts the evaluation — the gaps are surfaced
699
+ // as structured warnings so the agent can correct its template.
700
+ if (rawEval) {
701
+ const gaps = collectSelfEvalGaps(rawEval);
702
+ if (gaps.length > 0) {
703
+ return {
704
+ ...result,
705
+ projection,
706
+ warnings: [...(result.warnings ?? []), ...gaps.map((g) => `[${g.field}] ${g.issue}`)],
707
+ parseGaps: gaps,
708
+ };
709
+ }
710
+ }
711
+ return projection ? { ...result, projection } : { ...result };
548
712
  },
549
713
  async loopforge_status(mgr, input) {
714
+ const view = input.view === "loop" || input.view === "all" || input.view === "audit"
715
+ ? input.view
716
+ : "session";
550
717
  const sessionId = String(input.sessionId ?? "");
718
+ const loopId = String(input.loopId ?? "");
719
+ // v2.12: view=all — every persisted loop (formerly loopforge_list).
720
+ if (view === "all") {
721
+ return { sessions: mgr.list() };
722
+ }
723
+ // v2.12: view=audit — read-only verification audit.
724
+ if (view === "audit") {
725
+ if (!loopId)
726
+ return { error: "loopId is required for view=audit" };
727
+ const audit = mgr.getAudit(loopId);
728
+ if (!audit)
729
+ return { error: `no audit data found for loop "${loopId}"` };
730
+ return audit;
731
+ }
732
+ // v2.12: view=loop — loop health (formerly loopforge_health).
733
+ if (view === "loop") {
734
+ if (!loopId)
735
+ return { error: "loopId is required for view=loop" };
736
+ const health = mgr.getHealth(loopId);
737
+ return health ?? { error: `no health data for loop "${loopId}"` };
738
+ }
551
739
  if (!sessionId)
552
- return { error: "sessionId is required" };
740
+ return { error: "sessionId is required for view=session" };
553
741
  const session = mgr.get(sessionId);
554
742
  if (!session)
555
743
  return { error: `session not found: ${sessionId}` };
@@ -563,9 +751,10 @@ export const TOOL_HANDLERS = {
563
751
  status: session.status,
564
752
  successTrajectory: session.successTrajectory,
565
753
  lease: mgr.getLeaseStatus(session.loopId),
754
+ projection: mgr.getProjection(sessionId),
566
755
  metrics: {
567
756
  vaultWriteErrors: metrics.vaultWriteErrors,
568
- policy: getPolicyMetrics(session.loopId),
757
+ policy: mgr.getPolicyMetrics(session.loopId),
569
758
  },
570
759
  };
571
760
  },
@@ -588,10 +777,6 @@ export const TOOL_HANDLERS = {
588
777
  const result = mgr.pause(sessionId);
589
778
  return { ...result };
590
779
  },
591
- async loopforge_list(mgr, _input) {
592
- const sessions = mgr.list();
593
- return { sessions };
594
- },
595
780
  async loopforge_replay(mgr, input) {
596
781
  const sessionId = String(input.sessionId ?? "");
597
782
  if (!sessionId)
@@ -606,6 +791,12 @@ export const TOOL_HANDLERS = {
606
791
  const loopId = String(input.loopId ?? "");
607
792
  if (!loopId)
608
793
  return { error: "loopId is required" };
794
+ try {
795
+ validateLoopId(loopId);
796
+ }
797
+ catch (error) {
798
+ return { error: `invalid loopId: ${error.message}` };
799
+ }
609
800
  // Paused recovery must run first so the persisted status is atomically
610
801
  // changed back to running before a prompt is returned.
611
802
  let result = await mgr.unpause(loopId);
@@ -616,14 +807,14 @@ export const TOOL_HANDLERS = {
616
807
  return { error: `no saved session found for loop "${loopId}"` };
617
808
  return { ...result };
618
809
  },
619
- async loopforge_health(mgr, input) {
620
- const loopId = String(input.loopId ?? "");
621
- if (!loopId)
622
- return { error: "loopId is required" };
623
- const health = mgr.getHealth(loopId);
624
- if (!health)
625
- return { error: `no data found for loop "${loopId}"` };
626
- return health;
810
+ async loopforge_gate_check(mgr, input) {
811
+ const gateText = String(input.gateText ?? "");
812
+ if (!gateText.trim())
813
+ return { error: "gateText is required" };
814
+ return mgr.checkGate(gateText);
815
+ },
816
+ async loopforge_gate_resolve(mgr, input) {
817
+ return mgr.resolveGate(String(input.sessionId ?? ""), String(input.gateId ?? ""), input.approved === true, input.note === undefined ? undefined : String(input.note));
627
818
  },
628
819
  };
629
820
  //# sourceMappingURL=tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}