loopforge 3.0.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.
- package/README.md +128 -145
- package/dist/audit.d.ts +50 -0
- package/dist/audit.d.ts.map +1 -0
- package/dist/audit.js +158 -0
- package/dist/audit.js.map +1 -0
- package/dist/canonical-state.d.ts +28 -20
- package/dist/canonical-state.d.ts.map +1 -1
- package/dist/canonical-state.js +82 -173
- package/dist/canonical-state.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +25 -16
- package/dist/cli.js.map +1 -1
- package/dist/cognitive-governance.d.ts +25 -33
- package/dist/cognitive-governance.d.ts.map +1 -1
- package/dist/cognitive-governance.js +38 -138
- package/dist/cognitive-governance.js.map +1 -1
- package/dist/enforcement-gate.d.ts +76 -0
- package/dist/enforcement-gate.d.ts.map +1 -0
- package/dist/enforcement-gate.js +1071 -0
- package/dist/enforcement-gate.js.map +1 -0
- package/dist/engine.d.ts +99 -0
- package/dist/engine.d.ts.map +1 -0
- package/dist/engine.js +839 -0
- package/dist/engine.js.map +1 -0
- package/dist/evidence-claims.d.ts +50 -0
- package/dist/evidence-claims.d.ts.map +1 -0
- package/dist/evidence-claims.js +134 -0
- package/dist/evidence-claims.js.map +1 -0
- package/dist/evidence-provider.d.ts +21 -23
- package/dist/evidence-provider.d.ts.map +1 -1
- package/dist/evidence-provider.js +74 -34
- package/dist/evidence-provider.js.map +1 -1
- package/dist/generate-schema.js +1 -84
- package/dist/generate-schema.js.map +1 -1
- package/dist/index.d.ts +19 -22
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -15
- package/dist/index.js.map +1 -1
- package/dist/loop-compiler.d.ts +41 -3
- package/dist/loop-compiler.d.ts.map +1 -1
- package/dist/loop-compiler.js +632 -273
- 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-projection.d.ts +26 -0
- package/dist/loop-projection.d.ts.map +1 -0
- package/dist/loop-projection.js +142 -0
- package/dist/loop-projection.js.map +1 -0
- package/dist/loop-store.d.ts +112 -24
- package/dist/loop-store.d.ts.map +1 -1
- package/dist/loop-store.js +365 -218
- package/dist/loop-store.js.map +1 -1
- package/dist/mcp/round-lifecycle.d.ts +216 -0
- package/dist/mcp/round-lifecycle.d.ts.map +1 -0
- package/dist/mcp/round-lifecycle.js +926 -0
- package/dist/mcp/round-lifecycle.js.map +1 -0
- package/dist/mcp/server.d.ts +2 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +28 -42
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/session.d.ts +53 -101
- package/dist/mcp/session.d.ts.map +1 -1
- package/dist/mcp/session.js +306 -1105
- package/dist/mcp/session.js.map +1 -1
- package/dist/mcp/tools.d.ts +13 -16
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +479 -413
- package/dist/mcp/tools.js.map +1 -1
- package/dist/policy-metrics.d.ts +12 -17
- package/dist/policy-metrics.d.ts.map +1 -1
- package/dist/policy-metrics.js +95 -161
- package/dist/policy-metrics.js.map +1 -1
- package/dist/policy.d.ts +44 -35
- package/dist/policy.d.ts.map +1 -1
- package/dist/policy.js +31 -115
- package/dist/policy.js.map +1 -1
- package/dist/prompt-assembler.d.ts +37 -6
- package/dist/prompt-assembler.d.ts.map +1 -1
- package/dist/prompt-assembler.js +389 -160
- package/dist/prompt-assembler.js.map +1 -1
- package/dist/prompt-policy.d.ts +1 -8
- package/dist/prompt-policy.d.ts.map +1 -1
- package/dist/prompt-policy.js +8 -26
- package/dist/prompt-policy.js.map +1 -1
- package/dist/protocol.d.ts +357 -229
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +139 -15
- package/dist/protocol.js.map +1 -1
- package/dist/replay.d.ts +5 -13
- package/dist/replay.d.ts.map +1 -1
- package/dist/replay.js +19 -55
- package/dist/replay.js.map +1 -1
- package/dist/round-coordinator.d.ts +20 -24
- package/dist/round-coordinator.d.ts.map +1 -1
- package/dist/round-coordinator.js +99 -92
- package/dist/round-coordinator.js.map +1 -1
- package/dist/round-driver.d.ts +14 -13
- package/dist/round-driver.d.ts.map +1 -1
- package/dist/round-driver.js +26 -14
- package/dist/round-driver.js.map +1 -1
- package/dist/round-transaction.d.ts +15 -18
- package/dist/round-transaction.d.ts.map +1 -1
- package/dist/round-transaction.js +38 -47
- package/dist/round-transaction.js.map +1 -1
- package/dist/self-eval.d.ts +53 -0
- package/dist/self-eval.d.ts.map +1 -0
- package/dist/self-eval.js +284 -0
- package/dist/self-eval.js.map +1 -0
- package/dist/storage.d.ts +9 -4
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +18 -6
- package/dist/storage.js.map +1 -1
- package/dist/token-utils.d.ts +15 -3
- package/dist/token-utils.d.ts.map +1 -1
- package/dist/token-utils.js +24 -5
- package/dist/token-utils.js.map +1 -1
- package/dist/verification-gate.d.ts +108 -0
- package/dist/verification-gate.d.ts.map +1 -0
- package/dist/verification-gate.js +971 -0
- package/dist/verification-gate.js.map +1 -0
- package/loop_policy.json +44 -15
- package/package.json +5 -10
- package/skills/perception/SKILL.md +182 -199
- package/dist/canonical-event-writer.d.ts +0 -20
- package/dist/canonical-event-writer.d.ts.map +0 -1
- package/dist/canonical-event-writer.js +0 -131
- package/dist/canonical-event-writer.js.map +0 -1
- package/dist/compiler-subgoals.d.ts +0 -7
- package/dist/compiler-subgoals.d.ts.map +0 -1
- package/dist/compiler-subgoals.js +0 -93
- package/dist/compiler-subgoals.js.map +0 -1
- package/dist/derive-id.d.ts +0 -12
- package/dist/derive-id.d.ts.map +0 -1
- package/dist/derive-id.js +0 -31
- package/dist/derive-id.js.map +0 -1
- package/dist/mcp/session-projection.d.ts +0 -5
- package/dist/mcp/session-projection.d.ts.map +0 -1
- package/dist/mcp/session-projection.js +0 -18
- package/dist/mcp/session-projection.js.map +0 -1
- package/dist/mcp/session-queue.d.ts +0 -3
- package/dist/mcp/session-queue.d.ts.map +0 -1
- package/dist/mcp/session-queue.js +0 -18
- package/dist/mcp/session-queue.js.map +0 -1
- package/dist/mcp/session-types.d.ts +0 -72
- package/dist/mcp/session-types.d.ts.map +0 -1
- package/dist/mcp/session-types.js +0 -2
- package/dist/mcp/session-types.js.map +0 -1
- package/dist/round-commit-store.d.ts +0 -12
- package/dist/round-commit-store.d.ts.map +0 -1
- package/dist/round-commit-store.js +0 -13
- package/dist/round-commit-store.js.map +0 -1
- package/dist/round-gate.d.ts +0 -31
- package/dist/round-gate.d.ts.map +0 -1
- package/dist/round-gate.js +0 -259
- package/dist/round-gate.js.map +0 -1
- package/dist/round-recovery.d.ts +0 -17
- package/dist/round-recovery.d.ts.map +0 -1
- package/dist/round-recovery.js +0 -117
- package/dist/round-recovery.js.map +0 -1
- package/dist/round-report.d.ts +0 -16
- package/dist/round-report.d.ts.map +0 -1
- package/dist/round-report.js +0 -401
- package/dist/round-report.js.map +0 -1
- package/dist/runtime-services.d.ts +0 -59
- package/dist/runtime-services.d.ts.map +0 -1
- package/dist/runtime-services.js +0 -460
- package/dist/runtime-services.js.map +0 -1
- package/dist/vault-format.d.ts +0 -4
- package/dist/vault-format.d.ts.map +0 -1
- package/dist/vault-format.js +0 -4
- package/dist/vault-format.js.map +0 -1
- package/dist/vault-types.d.ts +0 -24
- package/dist/vault-types.d.ts.map +0 -1
- package/dist/vault-types.js +0 -2
- package/dist/vault-types.js.map +0 -1
- package/loopforge-policy.json +0 -340
package/dist/loop-store.d.ts
CHANGED
|
@@ -1,47 +1,129 @@
|
|
|
1
|
+
/** Typed per-loop persistence.
|
|
2
|
+
*
|
|
3
|
+
* Layout:
|
|
4
|
+
* .loopforge/loops/<sha256(loopId)>/session.json
|
|
5
|
+
* .loopforge/loops/<sha256(loopId)>/rounds/<round>.json
|
|
6
|
+
*
|
|
7
|
+
* Markdown state files are derived views. These JSON documents are the only
|
|
8
|
+
* durable transaction truth.
|
|
9
|
+
*/
|
|
1
10
|
import type { PromptArtifact } from "./protocol.js";
|
|
2
11
|
import type { RoundTransactionSnapshot } from "./round-transaction.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
12
|
+
/** Loose per-loop entry shape shared by session documents, round documents,
|
|
13
|
+
* and the flat list views (listEntries/queryLoopEntries). The single
|
|
14
|
+
* durable truth is the typed per-loop documents; entries are what the
|
|
15
|
+
* runtime writes into them. */
|
|
16
|
+
export interface VaultEntry {
|
|
17
|
+
id?: string;
|
|
18
|
+
task_id?: string;
|
|
19
|
+
version_tag?: string;
|
|
20
|
+
is_active?: boolean;
|
|
21
|
+
timestamp?: string;
|
|
22
|
+
user_intent?: string;
|
|
23
|
+
task_type?: string;
|
|
24
|
+
/** @deprecated Use `success` field instead. Kept for reading old vault data. */
|
|
25
|
+
quality_score?: number;
|
|
26
|
+
success?: boolean;
|
|
27
|
+
skill_used?: string;
|
|
28
|
+
loop_id?: string;
|
|
29
|
+
loop_lineage?: Record<string, unknown>;
|
|
30
|
+
loop_objective?: Record<string, unknown> | null;
|
|
31
|
+
execution_feedback?: string;
|
|
32
|
+
task?: string;
|
|
33
|
+
output_summary?: string;
|
|
34
|
+
constraint_violations?: string[];
|
|
35
|
+
tags?: string[];
|
|
36
|
+
full_prompt?: string;
|
|
37
|
+
[key: string]: unknown;
|
|
38
|
+
}
|
|
39
|
+
export declare const LOOP_STORE_SCHEMA_VERSION: 1;
|
|
40
|
+
/** v2.12: Storage corruption taxonomy. Only sequence gaps/duplicates are
|
|
41
|
+
* recoverable (manual file deletion etc.); structural corruption is not. */
|
|
42
|
+
export type StorageCorruptionKind = "invalid_json" | "invalid_format" | "sequence_gap" | "sequence_duplicate" | "sequence_cross_loop" | "sequence_invalid";
|
|
43
|
+
export type StorageCorruptionSeverity = "recoverable" | "corrupted";
|
|
44
|
+
/** v2.12: Typed corruption error carrying a severity class. Callers may
|
|
45
|
+
* recover from `recoverable` errors (record and continue) but must surface
|
|
46
|
+
* `corrupted` errors — the runtime never silently repairs storage. */
|
|
47
|
+
export declare class StorageCorruptionError extends Error {
|
|
48
|
+
readonly code: "storage_corruption";
|
|
49
|
+
readonly kind: StorageCorruptionKind;
|
|
50
|
+
readonly severity: StorageCorruptionSeverity;
|
|
51
|
+
constructor(kind: StorageCorruptionKind, message: string);
|
|
52
|
+
get recoverable(): boolean;
|
|
53
|
+
}
|
|
6
54
|
export interface LoopSessionDocument {
|
|
7
|
-
|
|
55
|
+
schemaVersion: typeof LOOP_STORE_SCHEMA_VERSION;
|
|
8
56
|
loopId: string;
|
|
9
57
|
updatedAt: string;
|
|
10
58
|
entry: VaultEntry;
|
|
11
59
|
}
|
|
12
60
|
export interface LoopRoundDocument {
|
|
13
|
-
|
|
61
|
+
schemaVersion: typeof LOOP_STORE_SCHEMA_VERSION;
|
|
14
62
|
loopId: string;
|
|
15
63
|
round: number;
|
|
64
|
+
/** v2.12: Monotonic round stamp distinguishing new-format loops (strict
|
|
65
|
+
* continuity checked) from legacy loops (no stamp → exempt). */
|
|
66
|
+
sequence?: number;
|
|
16
67
|
updatedAt: string;
|
|
17
68
|
lineage?: VaultEntry;
|
|
18
|
-
|
|
69
|
+
feedback?: VaultEntry;
|
|
19
70
|
transaction?: RoundTransactionSnapshot;
|
|
20
71
|
promptArtifact?: PromptArtifact;
|
|
21
72
|
events: VaultEntry[];
|
|
22
73
|
}
|
|
74
|
+
export interface LoopStoreMigrationResult {
|
|
75
|
+
source: string;
|
|
76
|
+
imported: number;
|
|
77
|
+
skipped: number;
|
|
78
|
+
alreadyMigrated: boolean;
|
|
79
|
+
}
|
|
23
80
|
export interface LoopStore {
|
|
24
81
|
withLock<T>(fn: () => T): T;
|
|
25
82
|
listLoopIds(): string[];
|
|
26
|
-
|
|
27
|
-
|
|
83
|
+
/** Flat entry view over the durable documents. v3.0.1: `sinceRound` skips
|
|
84
|
+
* round documents older than the given round (the session document is
|
|
85
|
+
* always included) — used by incremental compile hydration. */
|
|
86
|
+
listEntries(loopId?: string, opts?: {
|
|
87
|
+
sinceRound?: number;
|
|
88
|
+
}): VaultEntry[];
|
|
28
89
|
appendEntry(entry: VaultEntry): void;
|
|
29
90
|
appendEntries(entries: VaultEntry[]): number;
|
|
30
|
-
replaceEntries(entries: VaultEntry[]): void;
|
|
31
91
|
readSession(loopId: string): LoopSessionDocument | null;
|
|
32
92
|
writeSession(loopId: string, document: LoopSessionDocument): void;
|
|
33
93
|
readRound(loopId: string, round: number): LoopRoundDocument | null;
|
|
94
|
+
/** v2.12: Per-round sequence stamps for continuity checking. Backends
|
|
95
|
+
* without round documents return [] (legacy → exempt from checks). */
|
|
96
|
+
listRoundSequences(loopId: string): Array<{
|
|
97
|
+
round: number;
|
|
98
|
+
sequence?: number;
|
|
99
|
+
}>;
|
|
100
|
+
migrateLegacyVault(path?: string): LoopStoreMigrationResult;
|
|
34
101
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
102
|
+
/** Filter a loop's flat entry view with the legacy VaultBackend query
|
|
103
|
+
* options. Derived read-only view over the single durable truth (typed
|
|
104
|
+
* session/round documents) — never a separate write path. Feedback
|
|
105
|
+
* entries are excluded by default, mirroring the historical
|
|
106
|
+
* queryEntries({ feedbackOnly }) semantics. */
|
|
107
|
+
export declare function queryLoopEntries(store: LoopStore, loopId: string, opts?: {
|
|
108
|
+
prefix?: string;
|
|
109
|
+
feedbackOnly?: boolean;
|
|
110
|
+
/** v3.0.1: only entries from round documents >= this round. Passed
|
|
111
|
+
* through to listEntries so incremental hydration skips old docs. */
|
|
112
|
+
sinceRound?: number;
|
|
113
|
+
}): VaultEntry[];
|
|
114
|
+
/** v2.12: Ordered round sequence for a loop. Throws StorageCorruptionError
|
|
115
|
+
* on gaps (recoverable) or mixed-format corruption; returns [] for loops
|
|
116
|
+
* with no rounds. Consumed by audit (sequenceComplete) and resume. */
|
|
117
|
+
export declare function eventSequence(store: LoopStore, loopId: string): number[];
|
|
118
|
+
/** v2.12: Validate that a loop's round documents form a contiguous sequence
|
|
119
|
+
* from 1 to max. Legacy loops (no sequence stamps at all) are exempt.
|
|
120
|
+
* Mixed stamping is allowed only monotonically: rounds below the first
|
|
121
|
+
* stamped round are treated as legacy; once stamping begins it must not
|
|
122
|
+
* stop. Throws StorageCorruptionError on violation. */
|
|
123
|
+
export declare function checkRoundSequence(store: LoopStore, loopId: string): {
|
|
124
|
+
complete: boolean;
|
|
125
|
+
legacy: boolean;
|
|
126
|
+
};
|
|
45
127
|
export declare class FileLoopStore implements LoopStore {
|
|
46
128
|
readonly root: string;
|
|
47
129
|
private lockDepth;
|
|
@@ -51,16 +133,22 @@ export declare class FileLoopStore implements LoopStore {
|
|
|
51
133
|
readSession(loopId: string): LoopSessionDocument | null;
|
|
52
134
|
writeSession(loopId: string, document: LoopSessionDocument): void;
|
|
53
135
|
readRound(loopId: string, round: number): LoopRoundDocument | null;
|
|
54
|
-
|
|
55
|
-
|
|
136
|
+
listRoundSequences(loopId: string): Array<{
|
|
137
|
+
round: number;
|
|
138
|
+
sequence?: number;
|
|
139
|
+
}>;
|
|
140
|
+
listEntries(loopId?: string, opts?: {
|
|
141
|
+
sinceRound?: number;
|
|
142
|
+
}): VaultEntry[];
|
|
56
143
|
appendEntry(entry: VaultEntry): void;
|
|
57
144
|
appendEntries(entries: VaultEntry[]): number;
|
|
58
|
-
|
|
145
|
+
migrateLegacyVault(path?: string): LoopStoreMigrationResult;
|
|
59
146
|
private writeEntry;
|
|
60
|
-
private withEventSequence;
|
|
61
147
|
private loopDir;
|
|
148
|
+
/** Read a JSON document, distinguishing missing from corrupt.
|
|
149
|
+
* ENOENT → null (missing); parse failure → StorageCorruptionError
|
|
150
|
+
* (corrupted) — the runtime never silently repairs storage. */
|
|
62
151
|
private readJson;
|
|
63
|
-
private assertSequence;
|
|
64
152
|
private atomicWrite;
|
|
65
153
|
}
|
|
66
154
|
//# 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":"
|
|
1
|
+
{"version":3,"file":"loop-store.d.ts","sourceRoot":"","sources":["../src/loop-store.ts"],"names":[],"mappings":"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"}
|