loopforge 2.7.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 +136 -182
- 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 +211 -64
- 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 +26 -26
- package/dist/evidence-provider.d.ts.map +1 -1
- package/dist/evidence-provider.js +45 -71
- 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 +23 -29
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -26
- package/dist/index.js.map +1 -1
- package/dist/loop-compiler.d.ts +2 -2
- package/dist/loop-compiler.d.ts.map +1 -1
- package/dist/loop-compiler.js +321 -315
- 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 -311
- 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 +123 -19
- 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 +65 -84
- package/dist/mcp/session.d.ts.map +1 -1
- package/dist/mcp/session.js +667 -224
- 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 +401 -254
- package/dist/mcp/tools.js.map +1 -1
- package/dist/policy-metrics.d.ts +24 -0
- package/dist/policy-metrics.d.ts.map +1 -1
- package/dist/policy-metrics.js +174 -0
- package/dist/policy-metrics.js.map +1 -1
- package/dist/policy.d.ts +74 -12
- package/dist/policy.d.ts.map +1 -1
- package/dist/policy.js +124 -19
- package/dist/policy.js.map +1 -1
- package/dist/prompt-assembler.d.ts +8 -4
- package/dist/prompt-assembler.d.ts.map +1 -1
- package/dist/prompt-assembler.js +533 -86
- 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 +259 -173
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +17 -96
- 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 +53 -22
- package/dist/round-coordinator.d.ts.map +1 -1
- package/dist/round-coordinator.js +140 -44
- package/dist/round-coordinator.js.map +1 -1
- package/dist/round-driver.d.ts +18 -10
- package/dist/round-driver.d.ts.map +1 -1
- package/dist/round-driver.js +11 -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 +23 -12
- package/dist/round-transaction.d.ts.map +1 -1
- package/dist/round-transaction.js +104 -91
- 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/{engine.js → runtime-services.js} +157 -275
- 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 +12 -8
- package/dist/token-utils.d.ts.map +1 -1
- package/dist/token-utils.js +56 -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 +13 -7
- package/skills/perception/SKILL.md +200 -90
- 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 -50
- package/dist/enforcement-gate.d.ts.map +0 -1
- package/dist/enforcement-gate.js +0 -501
- 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.map +0 -1
- package/dist/interop.d.ts +0 -35
- package/dist/interop.d.ts.map +0 -1
- package/dist/interop.js +0 -34
- package/dist/interop.js.map +0 -1
- package/dist/run.d.ts +0 -51
- package/dist/run.d.ts.map +0 -1
- package/dist/run.js +0 -200
- package/dist/run.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 -151
- package/dist/self-eval.js.map +0 -1
- package/dist/verification-gate.d.ts +0 -52
- package/dist/verification-gate.d.ts.map +0 -1
- package/dist/verification-gate.js +0 -527
- package/dist/verification-gate.js.map +0 -1
package/dist/mcp/session.d.ts
CHANGED
|
@@ -2,82 +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
|
-
/** Evidence baseline captured immediately before the agent receives a prompt. */
|
|
31
|
-
evidenceBaseline?: ProviderSnapshot[];
|
|
32
|
-
/** Schema-versioned transaction for the prompt currently held by the agent. */
|
|
33
|
-
roundSnapshot?: RoundTransactionSnapshot;
|
|
34
|
-
/** Persisted prompt prevents resume from compiling the same round twice. */
|
|
35
|
-
currentPrompt?: string | null;
|
|
36
|
-
currentLevel?: string;
|
|
37
|
-
/** Structured warnings from the most recent compile — preferred over regex parsing. */
|
|
38
|
-
currentWarnings?: string[];
|
|
39
|
-
}
|
|
40
|
-
export interface McpSessionSummary {
|
|
41
|
-
sessionId: string;
|
|
42
|
-
loopId: string;
|
|
43
|
-
round: number;
|
|
44
|
-
status: "running" | "stopped" | "stalled" | "paused";
|
|
45
|
-
}
|
|
46
|
-
export interface StartInput {
|
|
47
|
-
task: string;
|
|
48
|
-
loopId?: string;
|
|
49
|
-
maxRounds?: number;
|
|
50
|
-
domain?: string;
|
|
51
|
-
planSource?: string;
|
|
52
|
-
constraints?: string[];
|
|
53
|
-
}
|
|
54
|
-
export interface AdvanceResult {
|
|
55
|
-
sessionId: string;
|
|
56
|
-
round: number;
|
|
57
|
-
/** Stable logical identity; unchanged when enforcement retries the round. */
|
|
58
|
-
roundId?: string;
|
|
59
|
-
prompt: string | null;
|
|
60
|
-
stopReason?: string;
|
|
61
|
-
/** v2.0.1: Human-readable context for why the loop stopped.
|
|
62
|
-
* Provides facts the agent can use to decide its next action,
|
|
63
|
-
* without LoopForge prescribing a specific behavior. */
|
|
64
|
-
stopDetail?: string;
|
|
65
|
-
level?: string;
|
|
66
|
-
roundSuccess?: boolean;
|
|
67
|
-
warnings?: string[];
|
|
68
|
-
/** v1.13: Enforcement action for this round. accept/reject/terminate.
|
|
69
|
-
* When "reject", the prompt contains a rejection notice and the agent
|
|
70
|
-
* must redo the same round. Round counter does NOT increment. */
|
|
71
|
-
enforcementAction?: "accept" | "reject" | "terminate";
|
|
72
|
-
/** v1.13: When enforcementAction is "reject" or "terminate", the reason
|
|
73
|
-
* why the round was rejected or the loop was terminated. */
|
|
74
|
-
enforcementReason?: string;
|
|
75
|
-
}
|
|
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";
|
|
76
14
|
export declare class SessionManager {
|
|
77
15
|
private sessions;
|
|
78
16
|
/** Serializes state transitions for each session. */
|
|
79
17
|
private sessionQueues;
|
|
80
18
|
private backend;
|
|
19
|
+
private eventWriter;
|
|
81
20
|
private sessionStore;
|
|
82
21
|
private readonly ownerId;
|
|
83
22
|
private readonly leaseMs;
|
|
@@ -86,7 +25,12 @@ export declare class SessionManager {
|
|
|
86
25
|
/** Explicit context provider; never auto-discovered. */
|
|
87
26
|
contextProvider?: ExternalContextProvider;
|
|
88
27
|
private readonly terminalSinks;
|
|
89
|
-
|
|
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;
|
|
90
34
|
/** Stable process-local owner token used for cross-process session leases. */
|
|
91
35
|
getOwnerId(): string;
|
|
92
36
|
addTerminalSink(sink: LoopTerminalSink): () => void;
|
|
@@ -97,10 +41,16 @@ export declare class SessionManager {
|
|
|
97
41
|
private renewSessionLease;
|
|
98
42
|
private renewOwnedLeases;
|
|
99
43
|
private leaseConflictResult;
|
|
100
|
-
private withSessionQueue;
|
|
101
44
|
create(input: StartInput): Promise<AdvanceResult>;
|
|
102
45
|
get(sessionId: string): McpSession | undefined;
|
|
103
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>;
|
|
104
54
|
delete(sessionId: string): boolean;
|
|
105
55
|
/** v1.18: Pause a running session. The session state is persisted to
|
|
106
56
|
* vault so it survives process restarts. Returns the session status.
|
|
@@ -111,7 +61,7 @@ export declare class SessionManager {
|
|
|
111
61
|
status: string;
|
|
112
62
|
};
|
|
113
63
|
private restoredPromptResult;
|
|
114
|
-
/** Reconcile the crash window where
|
|
64
|
+
/** Reconcile the crash window where a round event committed but session_state
|
|
115
65
|
* still points at the old prompt. Returns null when no commit is pending. */
|
|
116
66
|
private reconcileCommittedRound;
|
|
117
67
|
/** v1.18: Resume a paused session. Reconstructs from vault state and
|
|
@@ -129,33 +79,60 @@ export declare class SessionManager {
|
|
|
129
79
|
/** Resume a loop from vault state.
|
|
130
80
|
* Reconstructs the session and compiles the prompt for the next round.
|
|
131
81
|
* Returns null if no session_state entry exists for this loopId. */
|
|
132
|
-
resume(loopId: string): AdvanceResult | null
|
|
82
|
+
resume(loopId: string): Promise<AdvanceResult | null>;
|
|
133
83
|
/** Auto-resume all "running" sessions from vault on server startup.
|
|
134
84
|
* Scans vault for session_state entries, reconstructs each as an in-memory
|
|
135
85
|
* McpSession (without compiling — the next loopforge_next will do that).
|
|
136
86
|
* Returns the number of sessions resumed. */
|
|
137
87
|
autoResumeAll(): number;
|
|
138
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;
|
|
139
102
|
/** Get loop health for a loop (in-memory or vault).
|
|
140
103
|
* Computes goal alignment, constraint integrity, drift, strategy stability. */
|
|
141
104
|
getHealth(loopId: string): Record<string, unknown> | null;
|
|
142
|
-
/** Core cycle
|
|
143
|
-
*
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
advance(sessionId: string, output: string, preExtractedEval?: SelfEvaluation): Promise<AdvanceResult>;
|
|
147
|
-
/** Extract a SelfEvaluation from agent output.
|
|
148
|
-
* Structured param preferred → regex extraction → heuristic fallback.
|
|
149
|
-
* Returns null only when both regex and heuristic returned null. */
|
|
150
|
-
private extractEvaluation;
|
|
151
|
-
/** 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.
|
|
152
109
|
* MUTATES: session.roundSnapshot, session.consecutiveRejections,
|
|
153
|
-
* session.
|
|
154
|
-
* session.successTrajectory */
|
|
110
|
+
* session.escalatedRejectionChecks, session.lastRoundProjection,
|
|
111
|
+
* session.successTrajectory, session.driftClarificationStreak */
|
|
155
112
|
private executeRoundTransaction;
|
|
113
|
+
/** v2.12: Update the clarification streak based on the round result.
|
|
114
|
+
* - Substantive clarification (anchors present): keep streak — genuine pivot.
|
|
115
|
+
* - No intent_drift this round: reset streak to 0.
|
|
116
|
+
* - Weak clarification rejected by R7: streak was already consumed by
|
|
117
|
+
* enforceIntentDrift to decide reject vs terminate; staleness is handled
|
|
118
|
+
* on the enforcement side. We sync the persisted counter for crash recovery.
|
|
119
|
+
* MUTATES: session.driftClarificationStreak */
|
|
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;
|
|
156
125
|
/** Build a rejection result: compile a retry prompt, persist, return.
|
|
157
126
|
* MUTATES: session.roundSnapshot, session.currentPrompt, session.currentLevel */
|
|
158
127
|
private buildRejectionResult;
|
|
128
|
+
/** v2.10: Build a backtrack result — roll back to last clean round.
|
|
129
|
+
* Resets the round counter to the restore target + 1, merges preserved
|
|
130
|
+
* discoveries, compiles from the restored state, and injects the
|
|
131
|
+
* backtrack prompt at the top.
|
|
132
|
+
* MUTATES: session.currentRound, session.roundSnapshot,
|
|
133
|
+
* session.currentPrompt, session.currentLevel,
|
|
134
|
+
* session.consecutiveRejections, session.lastRoundProjection */
|
|
135
|
+
private buildBacktrackResult;
|
|
159
136
|
/** Build a termination result: persist stopped status, notify sinks.
|
|
160
137
|
* MUTATES: session.status, session.currentPrompt */
|
|
161
138
|
private buildTerminationResult;
|
|
@@ -173,5 +150,9 @@ export declare class SessionManager {
|
|
|
173
150
|
private notifyTerminal;
|
|
174
151
|
/** Replay timeline for a session — creates ReplayBackend from the stored backend. */
|
|
175
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
|
+
};
|
|
176
157
|
}
|
|
177
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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"}
|