loopforge 2.11.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +145 -128
- package/dist/canonical-event-writer.d.ts +20 -0
- package/dist/canonical-event-writer.d.ts.map +1 -0
- package/dist/canonical-event-writer.js +131 -0
- package/dist/canonical-event-writer.js.map +1 -0
- package/dist/canonical-state.d.ts +20 -16
- package/dist/canonical-state.d.ts.map +1 -1
- package/dist/canonical-state.js +170 -61
- package/dist/canonical-state.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +11 -10
- package/dist/cli.js.map +1 -1
- package/dist/cognitive-governance.d.ts +48 -0
- package/dist/cognitive-governance.d.ts.map +1 -0
- package/dist/cognitive-governance.js +226 -0
- package/dist/cognitive-governance.js.map +1 -0
- package/dist/compiler-subgoals.d.ts +7 -0
- package/dist/compiler-subgoals.d.ts.map +1 -0
- package/dist/compiler-subgoals.js +93 -0
- package/dist/compiler-subgoals.js.map +1 -0
- package/dist/derive-id.d.ts +12 -0
- package/dist/derive-id.d.ts.map +1 -0
- package/dist/derive-id.js +31 -0
- package/dist/derive-id.js.map +1 -0
- package/dist/evidence-provider.d.ts +23 -21
- package/dist/evidence-provider.d.ts.map +1 -1
- package/dist/evidence-provider.js +34 -74
- package/dist/evidence-provider.js.map +1 -1
- package/dist/generate-schema.js +90 -2
- package/dist/generate-schema.js.map +1 -1
- package/dist/index.d.ts +22 -19
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -16
- package/dist/index.js.map +1 -1
- package/dist/loop-compiler.d.ts +1 -1
- package/dist/loop-compiler.d.ts.map +1 -1
- package/dist/loop-compiler.js +250 -337
- package/dist/loop-compiler.js.map +1 -1
- package/dist/loop-extras-parser.d.ts +2 -2
- package/dist/loop-extras-parser.d.ts.map +1 -1
- package/dist/loop-extras-parser.js +2 -2
- package/dist/loop-extras-parser.js.map +1 -1
- package/dist/loop-store.d.ts +20 -58
- package/dist/loop-store.d.ts.map +1 -1
- package/dist/loop-store.js +232 -309
- package/dist/loop-store.js.map +1 -1
- package/dist/mcp/server.d.ts +3 -3
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +83 -13
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/session-projection.d.ts +5 -0
- package/dist/mcp/session-projection.d.ts.map +1 -0
- package/dist/mcp/session-projection.js +18 -0
- package/dist/mcp/session-projection.js.map +1 -0
- package/dist/mcp/session-queue.d.ts +3 -0
- package/dist/mcp/session-queue.d.ts.map +1 -0
- package/dist/mcp/session-queue.js +18 -0
- package/dist/mcp/session-queue.js.map +1 -0
- package/dist/mcp/session-types.d.ts +72 -0
- package/dist/mcp/session-types.d.ts.map +1 -0
- package/dist/mcp/session-types.js +2 -0
- package/dist/mcp/session-types.js.map +1 -0
- package/dist/mcp/session.d.ts +49 -93
- package/dist/mcp/session.d.ts.map +1 -1
- package/dist/mcp/session.js +544 -245
- package/dist/mcp/session.js.map +1 -1
- package/dist/mcp/tools.d.ts +26 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +399 -274
- package/dist/mcp/tools.js.map +1 -1
- package/dist/policy-metrics.d.ts +17 -1
- package/dist/policy-metrics.d.ts.map +1 -1
- package/dist/policy-metrics.js +164 -1
- package/dist/policy-metrics.js.map +1 -1
- package/dist/policy.d.ts +34 -18
- package/dist/policy.d.ts.map +1 -1
- package/dist/policy.js +113 -18
- package/dist/policy.js.map +1 -1
- package/dist/prompt-assembler.d.ts +5 -3
- package/dist/prompt-assembler.d.ts.map +1 -1
- package/dist/prompt-assembler.js +126 -77
- package/dist/prompt-assembler.js.map +1 -1
- package/dist/prompt-policy.d.ts +8 -1
- package/dist/prompt-policy.d.ts.map +1 -1
- package/dist/prompt-policy.js +26 -8
- package/dist/prompt-policy.js.map +1 -1
- package/dist/protocol.d.ts +232 -192
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +15 -100
- package/dist/protocol.js.map +1 -1
- package/dist/replay.d.ts +11 -3
- package/dist/replay.d.ts.map +1 -1
- package/dist/replay.js +51 -14
- package/dist/replay.js.map +1 -1
- package/dist/round-commit-store.d.ts +12 -0
- package/dist/round-commit-store.d.ts.map +1 -0
- package/dist/round-commit-store.js +13 -0
- package/dist/round-commit-store.js.map +1 -0
- package/dist/round-coordinator.d.ts +25 -18
- package/dist/round-coordinator.d.ts.map +1 -1
- package/dist/round-coordinator.js +83 -71
- package/dist/round-coordinator.js.map +1 -1
- package/dist/round-driver.d.ts +14 -10
- package/dist/round-driver.d.ts.map +1 -1
- package/dist/round-driver.js +9 -13
- package/dist/round-driver.js.map +1 -1
- package/dist/round-gate.d.ts +31 -0
- package/dist/round-gate.d.ts.map +1 -0
- package/dist/round-gate.js +259 -0
- package/dist/round-gate.js.map +1 -0
- package/dist/round-recovery.d.ts +17 -0
- package/dist/round-recovery.d.ts.map +1 -0
- package/dist/round-recovery.js +117 -0
- package/dist/round-recovery.js.map +1 -0
- package/dist/round-report.d.ts +16 -0
- package/dist/round-report.d.ts.map +1 -0
- package/dist/round-report.js +401 -0
- package/dist/round-report.js.map +1 -0
- package/dist/round-transaction.d.ts +19 -12
- package/dist/round-transaction.d.ts.map +1 -1
- package/dist/round-transaction.js +102 -88
- package/dist/round-transaction.js.map +1 -1
- package/dist/runtime-services.d.ts +59 -0
- package/dist/runtime-services.d.ts.map +1 -0
- package/dist/runtime-services.js +460 -0
- package/dist/runtime-services.js.map +1 -0
- package/dist/storage.d.ts +3 -9
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +6 -17
- package/dist/storage.js.map +1 -1
- package/dist/token-utils.d.ts +9 -8
- package/dist/token-utils.d.ts.map +1 -1
- package/dist/token-utils.js +50 -10
- package/dist/token-utils.js.map +1 -1
- package/dist/vault-format.d.ts +4 -0
- package/dist/vault-format.d.ts.map +1 -0
- package/dist/vault-format.js +4 -0
- package/dist/vault-format.js.map +1 -0
- package/dist/vault-types.d.ts +24 -0
- package/dist/vault-types.d.ts.map +1 -0
- package/dist/vault-types.js +2 -0
- package/dist/vault-types.js.map +1 -0
- package/loop_policy.json +10 -12
- package/loopforge-policy.json +340 -0
- package/package.json +12 -6
- package/skills/perception/SKILL.md +199 -164
- package/dist/backends/interface.d.ts +0 -39
- package/dist/backends/interface.d.ts.map +0 -1
- package/dist/backends/interface.js +0 -6
- package/dist/backends/interface.js.map +0 -1
- package/dist/enforcement-gate.d.ts +0 -71
- package/dist/enforcement-gate.d.ts.map +0 -1
- package/dist/enforcement-gate.js +0 -744
- package/dist/enforcement-gate.js.map +0 -1
- package/dist/engine.d.ts +0 -59
- package/dist/engine.d.ts.map +0 -1
- package/dist/engine.js +0 -596
- package/dist/engine.js.map +0 -1
- package/dist/self-eval.d.ts +0 -23
- package/dist/self-eval.d.ts.map +0 -1
- package/dist/self-eval.js +0 -181
- package/dist/self-eval.js.map +0 -1
- package/dist/verification-gate.d.ts +0 -56
- package/dist/verification-gate.d.ts.map +0 -1
- package/dist/verification-gate.js +0 -563
- package/dist/verification-gate.js.map +0 -1
package/dist/mcp/session.d.ts
CHANGED
|
@@ -2,91 +2,21 @@
|
|
|
2
2
|
*
|
|
3
3
|
* Each McpSession = one complete multi-round loop.
|
|
4
4
|
* SessionManager holds Map<sessionId, McpSession> and drives
|
|
5
|
-
* the advance() cycle:
|
|
5
|
+
* the advance() cycle: validate report → commit round event → check stop → compile next.
|
|
6
6
|
*/
|
|
7
|
-
import { LoopForgeEngine } from "../engine.js";
|
|
8
|
-
import type { VaultBackend } from "../backends/interface.js";
|
|
9
7
|
import type { LoopStore } from "../loop-store.js";
|
|
10
|
-
import type {
|
|
11
|
-
import type
|
|
12
|
-
import type { RoundTransactionSnapshot } from "../round-transaction.js";
|
|
8
|
+
import type { ExternalContextProvider, LoopTerminalSink } from "../protocol.js";
|
|
9
|
+
import { type PolicyMetricsSnapshot } from "../policy-metrics.js";
|
|
13
10
|
import type { SessionStateStore } from "../storage.js";
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
task: string;
|
|
18
|
-
engine: LoopForgeEngine;
|
|
19
|
-
currentRound: number;
|
|
20
|
-
maxRounds: number;
|
|
21
|
-
successTrajectory: boolean[];
|
|
22
|
-
status: "running" | "stopped" | "stalled" | "paused";
|
|
23
|
-
createdAt: number;
|
|
24
|
-
/** Previous round's validated SelfEvaluation — used by verification gate. */
|
|
25
|
-
lastSelfEval?: SelfEvaluation;
|
|
26
|
-
consecutiveRejections: number;
|
|
27
|
-
/** Which enforcement check triggered the last rejection.
|
|
28
|
-
* Only same-check rejections accumulate toward the max. */
|
|
29
|
-
lastRejectionCheck: string;
|
|
30
|
-
/** v2.12: Consecutive rounds where the agent used drift_clarification
|
|
31
|
-
* to waive R7 rejection. Reset to 0 when a round has no intent_drift.
|
|
32
|
-
* Terminates the loop when exceeding policy.drift_clarification_max_streak. */
|
|
33
|
-
driftClarificationStreak: number;
|
|
34
|
-
/** v2.13: Files changed in skipped rounds during the last backtrack.
|
|
35
|
-
* The next round's verification gate checks that the agent did not
|
|
36
|
-
* continue working on stale files without restoring the workspace.
|
|
37
|
-
* Cleared after the first successful post-backtrack round. */
|
|
38
|
-
backtrackSkippedFiles: string[];
|
|
39
|
-
/** Evidence baseline captured immediately before the agent receives a prompt. */
|
|
40
|
-
evidenceBaseline?: ProviderSnapshot[];
|
|
41
|
-
/** Schema-versioned transaction for the prompt currently held by the agent. */
|
|
42
|
-
roundSnapshot?: RoundTransactionSnapshot;
|
|
43
|
-
/** Persisted prompt prevents resume from compiling the same round twice. */
|
|
44
|
-
currentPrompt?: string | null;
|
|
45
|
-
currentLevel?: string;
|
|
46
|
-
/** Structured warnings from the most recent compile — preferred over regex parsing. */
|
|
47
|
-
currentWarnings?: string[];
|
|
48
|
-
}
|
|
49
|
-
export interface McpSessionSummary {
|
|
50
|
-
sessionId: string;
|
|
51
|
-
loopId: string;
|
|
52
|
-
round: number;
|
|
53
|
-
status: "running" | "stopped" | "stalled" | "paused";
|
|
54
|
-
}
|
|
55
|
-
export interface StartInput {
|
|
56
|
-
task: string;
|
|
57
|
-
loopId?: string;
|
|
58
|
-
maxRounds?: number;
|
|
59
|
-
domain?: string;
|
|
60
|
-
planSource?: string;
|
|
61
|
-
constraints?: string[];
|
|
62
|
-
}
|
|
63
|
-
export interface AdvanceResult {
|
|
64
|
-
sessionId: string;
|
|
65
|
-
round: number;
|
|
66
|
-
/** Stable logical identity; unchanged when enforcement retries the round. */
|
|
67
|
-
roundId?: string;
|
|
68
|
-
prompt: string | null;
|
|
69
|
-
stopReason?: string;
|
|
70
|
-
/** v2.0.1: Human-readable context for why the loop stopped.
|
|
71
|
-
* Provides facts the agent can use to decide its next action,
|
|
72
|
-
* without LoopForge prescribing a specific behavior. */
|
|
73
|
-
stopDetail?: string;
|
|
74
|
-
level?: string;
|
|
75
|
-
roundSuccess?: boolean;
|
|
76
|
-
warnings?: string[];
|
|
77
|
-
/** v1.13: Enforcement action for this round. accept/reject/terminate.
|
|
78
|
-
* When "reject", the prompt contains a rejection notice and the agent
|
|
79
|
-
* must redo the same round. Round counter does NOT increment. */
|
|
80
|
-
enforcementAction?: "accept" | "reject" | "terminate" | "backtrack";
|
|
81
|
-
/** v1.13: When enforcementAction is "reject" or "terminate", the reason
|
|
82
|
-
* why the round was rejected or the loop was terminated. */
|
|
83
|
-
enforcementReason?: string;
|
|
84
|
-
}
|
|
11
|
+
import type { McpSession, McpSessionSummary, StartInput, AdvanceResult } from "./session-types.js";
|
|
12
|
+
import type { GateActionDescriptor, RoundReport } from "../protocol.js";
|
|
13
|
+
export type { McpSession, McpSessionSummary, StartInput, AdvanceResult } from "./session-types.js";
|
|
85
14
|
export declare class SessionManager {
|
|
86
15
|
private sessions;
|
|
87
16
|
/** Serializes state transitions for each session. */
|
|
88
17
|
private sessionQueues;
|
|
89
18
|
private backend;
|
|
19
|
+
private eventWriter;
|
|
90
20
|
private sessionStore;
|
|
91
21
|
private readonly ownerId;
|
|
92
22
|
private readonly leaseMs;
|
|
@@ -95,7 +25,12 @@ export declare class SessionManager {
|
|
|
95
25
|
/** Explicit context provider; never auto-discovered. */
|
|
96
26
|
contextProvider?: ExternalContextProvider;
|
|
97
27
|
private readonly terminalSinks;
|
|
98
|
-
|
|
28
|
+
/** Vault-replayed policy metrics, keyed by loop. The signature covers every
|
|
29
|
+
* entry's task_id/timestamp/sequence so both appends and idempotent
|
|
30
|
+
* replacements (same task_id) invalidate the cache. */
|
|
31
|
+
private derivedMetricsCache;
|
|
32
|
+
constructor(storeOrBackend?: LoopStore, sessionStore?: SessionStateStore);
|
|
33
|
+
private appendCanonicalEvent;
|
|
99
34
|
/** Stable process-local owner token used for cross-process session leases. */
|
|
100
35
|
getOwnerId(): string;
|
|
101
36
|
addTerminalSink(sink: LoopTerminalSink): () => void;
|
|
@@ -106,10 +41,16 @@ export declare class SessionManager {
|
|
|
106
41
|
private renewSessionLease;
|
|
107
42
|
private renewOwnedLeases;
|
|
108
43
|
private leaseConflictResult;
|
|
109
|
-
private withSessionQueue;
|
|
110
44
|
create(input: StartInput): Promise<AdvanceResult>;
|
|
111
45
|
get(sessionId: string): McpSession | undefined;
|
|
112
46
|
getLeaseStatus(loopId: string): Record<string, unknown> | null;
|
|
47
|
+
audit(loopId: string): Record<string, unknown>;
|
|
48
|
+
inspect(loopId: string, round: number): Record<string, unknown> | null;
|
|
49
|
+
retry(sessionId: string, report: RoundReport): Promise<AdvanceResult>;
|
|
50
|
+
backtrack(sessionId: string): Promise<AdvanceResult>;
|
|
51
|
+
cognitiveProjection(sessionId: string): Record<string, unknown> | null;
|
|
52
|
+
checkGate(action: GateActionDescriptor): Record<string, unknown>;
|
|
53
|
+
resolveGate(sessionId: string, gateId: string, action: GateActionDescriptor, approved: boolean, note: string): Record<string, unknown>;
|
|
113
54
|
delete(sessionId: string): boolean;
|
|
114
55
|
/** v1.18: Pause a running session. The session state is persisted to
|
|
115
56
|
* vault so it survives process restarts. Returns the session status.
|
|
@@ -120,7 +61,7 @@ export declare class SessionManager {
|
|
|
120
61
|
status: string;
|
|
121
62
|
};
|
|
122
63
|
private restoredPromptResult;
|
|
123
|
-
/** Reconcile the crash window where
|
|
64
|
+
/** Reconcile the crash window where a round event committed but session_state
|
|
124
65
|
* still points at the old prompt. Returns null when no commit is pending. */
|
|
125
66
|
private reconcileCommittedRound;
|
|
126
67
|
/** v1.18: Resume a paused session. Reconstructs from vault state and
|
|
@@ -138,28 +79,35 @@ export declare class SessionManager {
|
|
|
138
79
|
/** Resume a loop from vault state.
|
|
139
80
|
* Reconstructs the session and compiles the prompt for the next round.
|
|
140
81
|
* Returns null if no session_state entry exists for this loopId. */
|
|
141
|
-
resume(loopId: string): AdvanceResult | null
|
|
82
|
+
resume(loopId: string): Promise<AdvanceResult | null>;
|
|
142
83
|
/** Auto-resume all "running" sessions from vault on server startup.
|
|
143
84
|
* Scans vault for session_state entries, reconstructs each as an in-memory
|
|
144
85
|
* McpSession (without compiling — the next loopforge_next will do that).
|
|
145
86
|
* Returns the number of sessions resumed. */
|
|
146
87
|
autoResumeAll(): number;
|
|
147
88
|
list(): McpSessionSummary[];
|
|
89
|
+
/** Stable signature over the vault event list. A changed signature means the
|
|
90
|
+
* vault has grown or an idempotent replacement landed, so the cached
|
|
91
|
+
* snapshot must be recomputed. Physical order is stable: writeEntry appends,
|
|
92
|
+
* and replacements update in place. */
|
|
93
|
+
private metricsSignature;
|
|
94
|
+
/** Policy metrics that survive process restarts: durable events are
|
|
95
|
+
* replayed through derivePolicyMetrics and merged with live in-process
|
|
96
|
+
* observations (rejections never reach the vault). */
|
|
97
|
+
getLoopPolicyMetrics(loopId: string): PolicyMetricsSnapshot;
|
|
98
|
+
/** Append a durable session_end event for a terminal transition. Call after
|
|
99
|
+
* the session_state write so a failure here only loses a metric, never the
|
|
100
|
+
* stopped status. The fixed task_id makes repeated terminals idempotent. */
|
|
101
|
+
persistTerminalEvent(session: McpSession, stopReason: string, extra?: Record<string, unknown>): void;
|
|
148
102
|
/** Get loop health for a loop (in-memory or vault).
|
|
149
103
|
* Computes goal alignment, constraint integrity, drift, strategy stability. */
|
|
150
104
|
getHealth(loopId: string): Record<string, unknown> | null;
|
|
151
|
-
/** Core cycle
|
|
152
|
-
*
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
advance(sessionId: string, output: string, preExtractedEval?: SelfEvaluation): Promise<AdvanceResult>;
|
|
156
|
-
/** Extract a SelfEvaluation from agent output.
|
|
157
|
-
* Structured param preferred → regex extraction → heuristic fallback.
|
|
158
|
-
* Returns null only when both regex and heuristic returned null. */
|
|
159
|
-
private extractEvaluation;
|
|
160
|
-
/** Execute the round transaction and apply per-rule rejection tracking.
|
|
105
|
+
/** Core cycle for a canonical structured round report. Free-form output is
|
|
106
|
+
* intentionally ignored; the runtime never guesses state from text. */
|
|
107
|
+
advance(sessionId: string, report: RoundReport): Promise<AdvanceResult>;
|
|
108
|
+
/** Execute the round transaction and apply global rejection tracking.
|
|
161
109
|
* MUTATES: session.roundSnapshot, session.consecutiveRejections,
|
|
162
|
-
* session.
|
|
110
|
+
* session.escalatedRejectionChecks, session.lastRoundProjection,
|
|
163
111
|
* session.successTrajectory, session.driftClarificationStreak */
|
|
164
112
|
private executeRoundTransaction;
|
|
165
113
|
/** v2.12: Update the clarification streak based on the round result.
|
|
@@ -170,6 +118,10 @@ export declare class SessionManager {
|
|
|
170
118
|
* on the enforcement side. We sync the persisted counter for crash recovery.
|
|
171
119
|
* MUTATES: session.driftClarificationStreak */
|
|
172
120
|
private updateClarificationStreak;
|
|
121
|
+
/** Persist terminal-rule escalation independently for each enforcement
|
|
122
|
+
* check. A non-rejection ends the current rejection episode and clears the
|
|
123
|
+
* set; rejected rules retain their marker until the episode resolves. */
|
|
124
|
+
private updateEscalationChecks;
|
|
173
125
|
/** Build a rejection result: compile a retry prompt, persist, return.
|
|
174
126
|
* MUTATES: session.roundSnapshot, session.currentPrompt, session.currentLevel */
|
|
175
127
|
private buildRejectionResult;
|
|
@@ -179,7 +131,7 @@ export declare class SessionManager {
|
|
|
179
131
|
* backtrack prompt at the top.
|
|
180
132
|
* MUTATES: session.currentRound, session.roundSnapshot,
|
|
181
133
|
* session.currentPrompt, session.currentLevel,
|
|
182
|
-
* session.consecutiveRejections, session.
|
|
134
|
+
* session.consecutiveRejections, session.lastRoundProjection */
|
|
183
135
|
private buildBacktrackResult;
|
|
184
136
|
/** Build a termination result: persist stopped status, notify sinks.
|
|
185
137
|
* MUTATES: session.status, session.currentPrompt */
|
|
@@ -198,5 +150,9 @@ export declare class SessionManager {
|
|
|
198
150
|
private notifyTerminal;
|
|
199
151
|
/** Replay timeline for a session — creates ReplayBackend from the stored backend. */
|
|
200
152
|
replayTimeline(sessionId: string): Record<string, unknown>[] | null;
|
|
153
|
+
replayTimelineByLoop(loopId: string, fromSequence?: number, toSequence?: number, limit?: number): {
|
|
154
|
+
timeline: Record<string, unknown>[];
|
|
155
|
+
nextSequence: number | null;
|
|
156
|
+
};
|
|
201
157
|
}
|
|
202
158
|
//# sourceMappingURL=session.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/mcp/session.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/mcp/session.ts"],"names":[],"mappings":"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"}
|