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
@@ -0,0 +1,126 @@
1
+ /** v2.12: User/Agent gate classification and governance helpers.
2
+ *
3
+ * Ported from the 3.x line with the V2 flat-contract adaptation: the MCP
4
+ * surface works with a flat gate text (the agent's blocker description),
5
+ * while the structured GateActionDescriptor stays an internal type for
6
+ * audit display. Only decisions are persisted — gate state is always
7
+ * re-derivable via deriveGate, so the vault never holds a second truth.
8
+ */
9
+ import { createHash } from "node:crypto";
10
+ import { computeGoalTextHash } from "./loop-compiler.js";
11
+ import { entryRound as sharedEntryRound } from "./token-utils.js";
12
+ export function entryRound(entry) {
13
+ return sharedEntryRound(entry);
14
+ }
15
+ /** Effects that always require human authorization. */
16
+ const USER_EFFECTS = new Set([
17
+ "production", "credentials", "data_migration", "public_api", "publish",
18
+ "payment", "external_communication",
19
+ ]);
20
+ /** High-risk markers, English + Chinese. */
21
+ const USER_RISK = /production|prod\b|credential|secret|permission|publish|release|database migration|schema migration|public api break|rm\s+-rf|reset\s+--hard|send email|payment|生产|上线|凭据|密钥|权限|发布|数据迁移|破坏性/i;
22
+ /** Stable gate ID from canonicalized gate text (gate- + sha256 slice 12). */
23
+ export function deriveGateId(text) {
24
+ return "gate-" + computeGoalTextHash(text).slice(0, 12);
25
+ }
26
+ /** Stable todo item ID (todo- + sha256 slice 8) for the LoopProjection. */
27
+ export function deriveTodoId(text) {
28
+ return "todo-" + computeGoalTextHash(text).slice(0, 8);
29
+ }
30
+ /** Canonical serialization — sorted scope/effects make the hash stable
31
+ * across field-order and whitespace differences. */
32
+ export function canonicalizeGateAction(action) {
33
+ return JSON.stringify({
34
+ description: action.description.trim(),
35
+ scope: [...action.scope].map((value) => value.trim()).filter(Boolean).sort(),
36
+ effects: [...action.effects].sort(),
37
+ reversibility: action.reversibility,
38
+ authorization: action.authorization,
39
+ });
40
+ }
41
+ /** 16-hex hash binding an approval to the exact action text — an edited
42
+ * action produces a different hash, so old approvals expire automatically. */
43
+ export function gateActionHash(action) {
44
+ return createHash("sha256").update(canonicalizeGateAction(action)).digest("hex").slice(0, 16);
45
+ }
46
+ /** Classify a structured action descriptor (internal use; audit display). */
47
+ export function deriveStructuredGate(action) {
48
+ const actionHash = gateActionHash(action);
49
+ const highRisk = action.authorization === "user_required" ||
50
+ action.reversibility === "irreversible" ||
51
+ action.reversibility === "unknown" ||
52
+ action.effects.some((effect) => USER_EFFECTS.has(effect));
53
+ const userGate = highRisk || action.authorization === "unknown" || action.effects.length === 0;
54
+ return {
55
+ id: `gate-${actionHash}`,
56
+ actionHash,
57
+ gate: userGate
58
+ ? {
59
+ kind: "user",
60
+ question: `Authorize this action: ${action.description}`,
61
+ blockedScope: action.scope.length ? action.scope : [action.description],
62
+ allowedWork: ["Read-only investigation", "Local dry-run", "Prepare verification and rollback evidence"],
63
+ }
64
+ : {
65
+ kind: "agent",
66
+ problem: action.description,
67
+ requiredEvidence: action.scope,
68
+ suggestedResolution: "Resolve the technical blocker and submit concrete evidence in RoundReport.",
69
+ },
70
+ };
71
+ }
72
+ /** Classify a flat gate text (MCP surface). The id embeds the canonicalized
73
+ * text hash, so a changed blocker text yields a different gate id and any
74
+ * previously recorded approval no longer matches. */
75
+ export function deriveGate(action, scope = []) {
76
+ if (typeof action !== "string")
77
+ return deriveStructuredGate(action);
78
+ const normalized = [action, ...scope].join("\n").trim();
79
+ const id = deriveGateId(normalized);
80
+ const gate = USER_RISK.test(normalized)
81
+ ? {
82
+ kind: "user",
83
+ question: `Authorize this high-risk action: ${action}`,
84
+ blockedScope: scope.length ? scope : [action],
85
+ allowedWork: ["Read-only investigation", "Local dry-run", "Prepare verification and rollback evidence"],
86
+ }
87
+ : {
88
+ kind: "agent",
89
+ problem: action,
90
+ requiredEvidence: scope,
91
+ suggestedResolution: "Resolve the technical blocker and submit concrete evidence in RoundReport.",
92
+ };
93
+ return { id, gate };
94
+ }
95
+ /** Deterministic replay order for audit — backends may return entries in
96
+ * different physical orders, so insertion order can never decide which
97
+ * gate decision or verification result wins. */
98
+ export function auditOrder(entries) {
99
+ return entries
100
+ .map((entry, index) => ({ entry, index }))
101
+ .sort((left, right) => {
102
+ // v2.14: the event_sequence sort layer was removed — no entry in the
103
+ // codebase ever writes that field, so the branch was unreachable.
104
+ const roundDiff = entryRound(left.entry) - entryRound(right.entry);
105
+ if (roundDiff !== 0)
106
+ return roundDiff;
107
+ const timeLeft = Date.parse(left.entry.timestamp ?? "");
108
+ const timeRight = Date.parse(right.entry.timestamp ?? "");
109
+ const validLeft = Number.isFinite(timeLeft);
110
+ const validRight = Number.isFinite(timeRight);
111
+ if (validLeft && validRight && timeLeft !== timeRight)
112
+ return timeLeft - timeRight;
113
+ if (validLeft !== validRight)
114
+ return validLeft ? -1 : 1;
115
+ const key = (entry) => [
116
+ entry.task_type ?? "",
117
+ entry.task_id ?? entry.id ?? "",
118
+ entry.gate_id ?? "",
119
+ entry.approved === true ? "1" : entry.approved === false ? "0" : "",
120
+ ].join("\0");
121
+ const keyDiff = key(left.entry).localeCompare(key(right.entry));
122
+ return keyDiff !== 0 ? keyDiff : left.index - right.index;
123
+ })
124
+ .map(({ entry }) => entry);
125
+ }
126
+ //# sourceMappingURL=cognitive-governance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cognitive-governance.js","sourceRoot":"","sources":["../src/cognitive-governance.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@
16
16
  * - terminate: loop has reached an unrecoverable state; stop immediately
17
17
  * with stopReason "enforcement_terminated".
18
18
  */
19
- import type { VaultEntry } from "./backends/interface.js";
19
+ import type { VaultEntry } from "./loop-store.js";
20
20
  import type { EnforcementResult, SelfEvaluation, VerificationFlag, VerificationResult } from "./protocol.js";
21
21
  /** Scan backwards from currentRound to find the most recent clean round.
22
22
  * Collects discovered_constraints from skipped rounds along the way.
@@ -25,6 +25,11 @@ export declare function findSafeRestorePoint(currentRound: number, vaultEntries:
25
25
  round: number;
26
26
  skippedDiscoveries: string[];
27
27
  } | null;
28
+ /** v2.12: Git HEAD commit hash at the restore point. Read from the restore
29
+ * round's committed transaction snapshot (after evidence preferred, before
30
+ * evidence as fallback). Returns null when the round has no git snapshot
31
+ * or no committed feedback entry. */
32
+ export declare function findBacktrackTargetGitHead(restoreRound: number, vaultEntries: VaultEntry[]): string | null;
28
33
  /** Build the backtrack prompt injected at the top of the restored round.
29
34
  *
30
35
  * v2.13: Includes concrete workspace restore instructions with affected
@@ -34,9 +39,9 @@ export declare function buildBacktrackPrompt(fromRound: number, toRound: number,
34
39
  /** v2.13: Files changed in the skipped rounds (from evidence snapshots).
35
40
  * Used to show the agent exactly what needs to be reverted. */
36
41
  skippedFiles?: string[],
37
- /** v2.13: Git HEAD commit hash at the backtrack point (current HEAD).
42
+ /** v2.12: Git HEAD commit hash at the backtrack point (current HEAD).
38
43
  * The agent must discard work back to the clean round's state. */
39
- _gitHead?: string): string;
44
+ gitHead?: string): string;
40
45
  /** Enforce round-boundary rules based on the verification gate's findings
41
46
  * and the agent's self-evaluation integrity.
42
47
  *
@@ -1 +1 @@
1
- {"version":3,"file":"enforcement-gate.d.ts","sourceRoot":"","sources":["../src/enforcement-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,eAAe,CAAC;AA6DvB;;iEAEiE;AACjE,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,UAAU,EAAE,EAC1B,QAAQ,EAAE,MAAM,GACf;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAsCxD;AAED;;;;oDAIoD;AACpD,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,kBAAkB,EAAE,MAAM,EAAE;AAC5B;gEACgE;AAChE,YAAY,GAAE,MAAM,EAAO;AAC3B;mEACmE;AACnE,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,CA0HR;AA4kBD;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,cAAc,EACxB,YAAY,EAAE,kBAAkB,EAChC,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,UAAU,EAAE,EAC1B,qBAAqB,GAAE,MAAU,EACjC,iBAAiB,UAAQ;AACzB,6DAA6D;AAC7D,wBAAwB,GAAE,MAAU,GACnC,iBAAiB,CA0BnB;AAED;;;;;;;;;;;;;;sEAcsE;AACtE,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,iBAAiB,EAChC,iBAAiB,GAAE,gBAAgB,EAAO,GACzC,MAAM,CA6CR"}
1
+ {"version":3,"file":"enforcement-gate.d.ts","sourceRoot":"","sources":["../src/enforcement-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,eAAe,CAAC;AAyHvB;;iEAEiE;AACjE,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,UAAU,EAAE,EAC1B,QAAQ,EAAE,MAAM,GACf;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CA6CxD;AAED;;;sCAGsC;AACtC,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,UAAU,EAAE,GACzB,MAAM,GAAG,IAAI,CAwBf;AAED;;;;oDAIoD;AACpD,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,kBAAkB,EAAE,MAAM,EAAE;AAC5B;gEACgE;AAChE,YAAY,GAAE,MAAM,EAAO;AAC3B;mEACmE;AACnE,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CA6IR;AAy0BD;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,cAAc,EACxB,YAAY,EAAE,kBAAkB,EAChC,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,UAAU,EAAE,EAC1B,qBAAqB,GAAE,MAAU,EACjC,iBAAiB,UAAQ;AACzB,6DAA6D;AAC7D,wBAAwB,GAAE,MAAU,GACnC,iBAAiB,CAiCnB;AAED;;;;;;;;;;;;;;sEAcsE;AACtE,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,iBAAiB,EAChC,iBAAiB,GAAE,gBAAgB,EAAO,GACzC,MAAM,CA6CR"}