loopforge 3.7.1 → 3.8.2
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 +84 -130
- package/dist/audit.d.ts +53 -1
- package/dist/audit.d.ts.map +1 -1
- package/dist/audit.js +106 -22
- package/dist/audit.js.map +1 -1
- package/dist/canonical-state.d.ts +52 -67
- package/dist/canonical-state.d.ts.map +1 -1
- package/dist/canonical-state.js +134 -147
- package/dist/canonical-state.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +103 -4
- package/dist/cli.js.map +1 -1
- package/dist/cognitive-facts.d.ts +13 -0
- package/dist/cognitive-facts.d.ts.map +1 -1
- package/dist/cognitive-facts.js +28 -13
- package/dist/cognitive-facts.js.map +1 -1
- package/dist/committed-round.d.ts +103 -21
- package/dist/committed-round.d.ts.map +1 -1
- package/dist/committed-round.js +188 -45
- package/dist/committed-round.js.map +1 -1
- package/dist/contract-items.d.ts +55 -0
- package/dist/contract-items.d.ts.map +1 -0
- package/dist/contract-items.js +180 -0
- package/dist/contract-items.js.map +1 -0
- package/dist/enforcement-gate.d.ts +20 -2
- package/dist/enforcement-gate.d.ts.map +1 -1
- package/dist/enforcement-gate.js +197 -386
- package/dist/enforcement-gate.js.map +1 -1
- package/dist/engine.d.ts +1 -1
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +53 -38
- package/dist/engine.js.map +1 -1
- package/dist/evidence-claims.d.ts +4 -4
- package/dist/evidence-claims.d.ts.map +1 -1
- package/dist/evidence-claims.js +16 -14
- package/dist/evidence-claims.js.map +1 -1
- package/dist/evidence-provider.d.ts +85 -89
- package/dist/evidence-provider.d.ts.map +1 -1
- package/dist/evidence-provider.js +328 -184
- package/dist/evidence-provider.js.map +1 -1
- package/dist/explain.d.ts +76 -0
- package/dist/explain.d.ts.map +1 -0
- package/dist/explain.js +127 -0
- package/dist/explain.js.map +1 -0
- package/dist/generate-schema.js +152 -16
- package/dist/generate-schema.js.map +1 -1
- package/dist/index.d.ts +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/loop-compiler.d.ts +40 -53
- package/dist/loop-compiler.d.ts.map +1 -1
- package/dist/loop-compiler.js +229 -553
- package/dist/loop-compiler.js.map +1 -1
- package/dist/loop-extras-parser.d.ts +0 -1
- package/dist/loop-extras-parser.d.ts.map +1 -1
- package/dist/loop-extras-parser.js +0 -4
- package/dist/loop-extras-parser.js.map +1 -1
- package/dist/loop-projection.d.ts.map +1 -1
- package/dist/loop-projection.js +3 -1
- package/dist/loop-projection.js.map +1 -1
- package/dist/mcp/round-lifecycle.d.ts +30 -21
- package/dist/mcp/round-lifecycle.d.ts.map +1 -1
- package/dist/mcp/round-lifecycle.js +47 -103
- package/dist/mcp/round-lifecycle.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +51 -7
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/session.d.ts +39 -23
- package/dist/mcp/session.d.ts.map +1 -1
- package/dist/mcp/session.js +148 -163
- package/dist/mcp/session.js.map +1 -1
- package/dist/mcp/submission-boundary.d.ts +89 -0
- package/dist/mcp/submission-boundary.d.ts.map +1 -0
- package/dist/mcp/submission-boundary.js +203 -0
- package/dist/mcp/submission-boundary.js.map +1 -0
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +249 -128
- package/dist/mcp/tools.js.map +1 -1
- package/dist/policy-metrics.js +2 -2
- package/dist/policy-metrics.js.map +1 -1
- package/dist/policy.d.ts +55 -93
- package/dist/policy.d.ts.map +1 -1
- package/dist/policy.js +149 -38
- package/dist/policy.js.map +1 -1
- package/dist/prompt-assembler.d.ts +1 -32
- package/dist/prompt-assembler.d.ts.map +1 -1
- package/dist/prompt-assembler.js +282 -435
- package/dist/prompt-assembler.js.map +1 -1
- package/dist/prompt-policy.d.ts +1 -4
- package/dist/prompt-policy.d.ts.map +1 -1
- package/dist/prompt-policy.js +6 -7
- package/dist/prompt-policy.js.map +1 -1
- package/dist/protocol.d.ts +365 -142
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +21 -66
- package/dist/protocol.js.map +1 -1
- package/dist/replay.js +2 -2
- package/dist/replay.js.map +1 -1
- package/dist/round-contract.d.ts +69 -57
- package/dist/round-contract.d.ts.map +1 -1
- package/dist/round-contract.js +104 -64
- package/dist/round-contract.js.map +1 -1
- package/dist/round-coordinator.d.ts +36 -16
- package/dist/round-coordinator.d.ts.map +1 -1
- package/dist/round-coordinator.js +166 -102
- package/dist/round-coordinator.js.map +1 -1
- package/dist/round-driver.d.ts +3 -5
- package/dist/round-driver.d.ts.map +1 -1
- package/dist/round-driver.js +0 -1
- package/dist/round-driver.js.map +1 -1
- package/dist/round-facts.d.ts +96 -0
- package/dist/round-facts.d.ts.map +1 -0
- package/dist/round-facts.js +216 -0
- package/dist/round-facts.js.map +1 -0
- package/dist/round-transaction.d.ts +19 -9
- package/dist/round-transaction.d.ts.map +1 -1
- package/dist/round-transaction.js +90 -22
- package/dist/round-transaction.js.map +1 -1
- package/dist/self-eval.d.ts +87 -9
- package/dist/self-eval.d.ts.map +1 -1
- package/dist/self-eval.js +396 -27
- package/dist/self-eval.js.map +1 -1
- package/dist/subgoal-state.d.ts +77 -0
- package/dist/subgoal-state.d.ts.map +1 -0
- package/dist/subgoal-state.js +198 -0
- package/dist/subgoal-state.js.map +1 -0
- package/dist/token-utils.d.ts +52 -19
- package/dist/token-utils.d.ts.map +1 -1
- package/dist/token-utils.js +83 -72
- package/dist/token-utils.js.map +1 -1
- package/dist/verification-gate.d.ts +14 -31
- package/dist/verification-gate.d.ts.map +1 -1
- package/dist/verification-gate.js +178 -496
- package/dist/verification-gate.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/workspace.d.ts +9 -0
- package/dist/workspace.d.ts.map +1 -1
- package/dist/workspace.js +17 -0
- package/dist/workspace.js.map +1 -1
- package/loop_policy.json +59 -83
- package/package.json +67 -67
- package/skills/perception/SKILL.md +218 -204
package/dist/policy.js
CHANGED
|
@@ -1,30 +1,24 @@
|
|
|
1
1
|
/** Externalized LoopForge runtime policy. */
|
|
2
|
-
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { createHash, randomUUID } from "node:crypto";
|
|
3
3
|
import { existsSync, lstatSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync, } from "node:fs";
|
|
4
4
|
import { resolve } from "node:path";
|
|
5
5
|
import { containInWorkspace } from "./workspace.js";
|
|
6
|
+
/** v3.8.1: the policy schema version. A policy file that does not declare
|
|
7
|
+
* exactly this version is REJECTED — see loadPolicy. */
|
|
8
|
+
export const POLICY_SCHEMA_VERSION = "4";
|
|
6
9
|
export const DEFAULT_POLICY = {
|
|
7
|
-
version:
|
|
10
|
+
version: POLICY_SCHEMA_VERSION,
|
|
8
11
|
constraints: { retire_window: 3 },
|
|
9
|
-
summary: { window: 5,
|
|
10
|
-
engine: { stall_lookback_rounds: 3, max_rounds: 200, enforcement_escalation_enabled: true, backtrack_enabled: true, backtrack_max_depth: 3, backtrack_preserve_discoveries: true,
|
|
12
|
+
summary: { window: 5, milestone_interval: 20 },
|
|
13
|
+
engine: { stall_lookback_rounds: 3, max_rounds: 200, enforcement_escalation_enabled: true, backtrack_enabled: true, backtrack_max_depth: 3, backtrack_preserve_discoveries: true, unverified_claim_streak_limit: 3 },
|
|
11
14
|
prompt: {
|
|
12
|
-
full_refresh_interval: 0,
|
|
13
15
|
l0_max_chars: 3000,
|
|
14
16
|
l1_max_chars: 7000,
|
|
15
17
|
l2_max_chars: 18000,
|
|
16
|
-
l2_adaptive_enabled: true,
|
|
17
|
-
l2_adaptive_round_factor: 200,
|
|
18
|
-
l2_adaptive_milestone_factor: 1000,
|
|
19
|
-
l2_adaptive_max_chars: 40000,
|
|
20
|
-
l2_adaptive_subgoal_factor: 100,
|
|
21
18
|
l2_pointer_enabled: true,
|
|
22
|
-
l1_collapse_enabled: true,
|
|
23
|
-
contract_nudge_on_l2: true,
|
|
24
19
|
max_emphasize_l2: 5,
|
|
25
20
|
max_emphasize_l1: 3,
|
|
26
21
|
max_confusion_points: 3,
|
|
27
|
-
confusion_section_threshold: 0.15,
|
|
28
22
|
},
|
|
29
23
|
backend: { root_dir: ".loopforge" },
|
|
30
24
|
evolution: {
|
|
@@ -32,23 +26,14 @@ export const DEFAULT_POLICY = {
|
|
|
32
26
|
max_active_constraints: 15,
|
|
33
27
|
max_objective_versions: 10,
|
|
34
28
|
progress_stall_threshold: 0.05,
|
|
35
|
-
progress_mismatch_threshold: 0.3,
|
|
36
|
-
task_continuity_threshold: 0.2,
|
|
37
|
-
intent_drift_threshold: 0.15,
|
|
38
|
-
criteria_dedup_threshold: 0.45,
|
|
39
|
-
subgoal_dedup_threshold: 0.6,
|
|
40
|
-
subgoal_match_threshold: 0.5,
|
|
41
29
|
max_active_subgoals: 12,
|
|
42
|
-
constraint_match_threshold: 0.5,
|
|
43
|
-
subgoal_drift_alignment_threshold: 0.3,
|
|
44
|
-
constraint_id_enabled: true,
|
|
45
30
|
},
|
|
46
31
|
checkpoint: { outcome_max_chars: 200 },
|
|
47
32
|
state_file: {
|
|
48
33
|
enabled: true,
|
|
49
34
|
directory: ".loopforge/state",
|
|
50
35
|
},
|
|
51
|
-
evidence: { providers: ["git"], timeout_ms: 120_000, commands: []
|
|
36
|
+
evidence: { providers: ["git"], timeout_ms: 120_000, commands: [] },
|
|
52
37
|
mcp: {
|
|
53
38
|
session_lease_ms: 30_000,
|
|
54
39
|
session_lease_renew_interval_ms: 10_000,
|
|
@@ -73,39 +58,99 @@ export function writeDefaultPolicy(targetDir, force = false) {
|
|
|
73
58
|
writeFileSync(target, JSON.stringify(DEFAULT_POLICY, null, 2) + "\n", "utf8");
|
|
74
59
|
return { path: target, created: true };
|
|
75
60
|
}
|
|
61
|
+
/** Element keys of the policy's array-of-object fields. An incoming array
|
|
62
|
+
* REPLACES the default wholesale (the default list is empty), so element keys
|
|
63
|
+
* are not otherwise checked: a typo inside a command ("enable" for "enabled")
|
|
64
|
+
* was accepted, and the command then never registered — the loop ran on a
|
|
65
|
+
* configuration the operator never chose, which is exactly the outcome the
|
|
66
|
+
* version boundary of v3.8.1 exists to prevent. */
|
|
67
|
+
const ARRAY_ELEMENT_KEYS = {
|
|
68
|
+
commands: new Set([
|
|
69
|
+
"name", "enabled", "executable", "args", "cwd", "phase", "required",
|
|
70
|
+
"timeout_ms", "max_output_chars", "success_exit_codes",
|
|
71
|
+
]),
|
|
72
|
+
};
|
|
73
|
+
/** Merge a declared policy file over the defaults.
|
|
74
|
+
*
|
|
75
|
+
* v3.8.1: an unknown key is an ERROR, not a warning. A typo used to be
|
|
76
|
+
* announced and then ignored, so the loop ran on a value the operator never
|
|
77
|
+
* set — the one outcome a configuration defect must never produce. */
|
|
76
78
|
function deepMerge(defaults, overrides) {
|
|
77
79
|
const result = { ...defaults };
|
|
78
80
|
for (const key of Object.keys(overrides)) {
|
|
79
81
|
const current = result[key];
|
|
80
82
|
const incoming = overrides[key];
|
|
81
|
-
|
|
83
|
+
// `Object.hasOwn`, not `in`: the `in` operator also reports keys inherited
|
|
84
|
+
// from Object.prototype, so "constructor" / "__proto__" / "toString" were
|
|
85
|
+
// treated as known keys and merged (or, for "__proto__", replaced this
|
|
86
|
+
// object's prototype) instead of being rejected.
|
|
87
|
+
const known = Object.hasOwn(result, key);
|
|
88
|
+
if (known && current !== null && incoming !== null &&
|
|
82
89
|
typeof current === "object" && !Array.isArray(current) &&
|
|
83
90
|
typeof incoming === "object" && !Array.isArray(incoming)) {
|
|
84
91
|
result[key] = deepMerge(current, incoming);
|
|
85
92
|
}
|
|
86
|
-
else if (
|
|
93
|
+
else if (known) {
|
|
94
|
+
const elementKeys = Array.isArray(incoming) ? ARRAY_ELEMENT_KEYS[key] : undefined;
|
|
95
|
+
if (elementKeys) {
|
|
96
|
+
for (const item of incoming) {
|
|
97
|
+
if (typeof item !== "object" || item === null || Array.isArray(item)) {
|
|
98
|
+
throw new Error(`policy "${key}" entries must be objects — one entry is ` +
|
|
99
|
+
`${Array.isArray(item) ? "an array" : typeof item}.`);
|
|
100
|
+
}
|
|
101
|
+
for (const itemKey of Object.keys(item)) {
|
|
102
|
+
if (!elementKeys.has(itemKey)) {
|
|
103
|
+
throw new Error(`unknown policy key "${key}[].${itemKey}" — remove it, or fix ` +
|
|
104
|
+
"the typo. This release carries no compatibility layer: a " +
|
|
105
|
+
"config written for an older schema is not a valid config for " +
|
|
106
|
+
"this one.");
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
87
111
|
result[key] = incoming;
|
|
88
112
|
}
|
|
89
113
|
else {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
114
|
+
throw new Error(`unknown policy key "${key}" — remove it, or fix the typo. ` +
|
|
115
|
+
"This release carries no compatibility layer: a config written for an " +
|
|
116
|
+
"older schema is not a valid config for this one.");
|
|
93
117
|
}
|
|
94
118
|
}
|
|
95
119
|
return result;
|
|
96
120
|
}
|
|
121
|
+
/** Load the runtime policy, or fall back to the defaults when no file
|
|
122
|
+
* declares one.
|
|
123
|
+
*
|
|
124
|
+
* v3.8.1: the `version` field is load-bearing. Previously it was a
|
|
125
|
+
* declarative string that NOTHING read, so a policy written for an older
|
|
126
|
+
* schema was silently merged over the current defaults — options that no
|
|
127
|
+
* longer exist evaporated and options that changed meaning were applied
|
|
128
|
+
* under their old name. Now a file either declares the current schema
|
|
129
|
+
* version or the load fails, and the failure surfaces as `policy_invalid`
|
|
130
|
+
* rather than the loop running on a configuration nobody chose.
|
|
131
|
+
*
|
|
132
|
+
* A MISSING or unparseable file still falls through to the defaults (running
|
|
133
|
+
* with no policy file is normal). A file that exists and parses is a
|
|
134
|
+
* declaration, so its defects propagate instead of being swallowed. */
|
|
97
135
|
export function loadPolicy(path) {
|
|
98
136
|
const candidates = [path, "loop_policy.json"].filter(Boolean);
|
|
99
137
|
for (const candidate of candidates) {
|
|
138
|
+
let raw;
|
|
100
139
|
try {
|
|
101
|
-
|
|
102
|
-
if (raw && typeof raw === "object" && !Array.isArray(raw)) {
|
|
103
|
-
return deepMerge(DEFAULT_POLICY, raw);
|
|
104
|
-
}
|
|
140
|
+
raw = JSON.parse(readFileSync(resolve(candidate), "utf8"));
|
|
105
141
|
}
|
|
106
142
|
catch {
|
|
107
|
-
//
|
|
143
|
+
continue; // absent or unreadable — try the next candidate
|
|
108
144
|
}
|
|
145
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw))
|
|
146
|
+
continue;
|
|
147
|
+
const version = raw.version;
|
|
148
|
+
if (version !== POLICY_SCHEMA_VERSION) {
|
|
149
|
+
throw new Error(`policy version ${JSON.stringify(version)} does not match the current ` +
|
|
150
|
+
`schema version "${POLICY_SCHEMA_VERSION}". Update the file; there is ` +
|
|
151
|
+
"no migration path.");
|
|
152
|
+
}
|
|
153
|
+
return deepMerge(DEFAULT_POLICY, raw);
|
|
109
154
|
}
|
|
110
155
|
return structuredClone(DEFAULT_POLICY);
|
|
111
156
|
}
|
|
@@ -122,16 +167,82 @@ export function resetPolicy() {
|
|
|
122
167
|
policy = null;
|
|
123
168
|
}
|
|
124
169
|
/** v3.2: Test-only injection — mirrors resetPolicy so tests can exercise a
|
|
125
|
-
* specific policy configuration (e.g.
|
|
170
|
+
* specific policy configuration (e.g. state_file.enabled=false). */
|
|
126
171
|
export function setPolicyForTest(next) {
|
|
127
172
|
policy = next;
|
|
128
173
|
}
|
|
129
|
-
/** v3.
|
|
130
|
-
*
|
|
131
|
-
*
|
|
174
|
+
/** v3.8: Deterministic hash of a command's verification configuration. Used
|
|
175
|
+
* to prove that a contract's bound command did not change under the agent
|
|
176
|
+
* between declaration and closure. `args` order is preserved (semantically
|
|
177
|
+
* meaningful); `success_exit_codes` is sorted (an equivalent set must hash
|
|
178
|
+
* equal). Pure — no I/O, no probing. */
|
|
179
|
+
export function commandConfigHash(config) {
|
|
180
|
+
const normalized = {
|
|
181
|
+
name: config.name,
|
|
182
|
+
executable: config.executable,
|
|
183
|
+
args: [...config.args],
|
|
184
|
+
cwd: config.cwd ?? ".",
|
|
185
|
+
phase: config.phase,
|
|
186
|
+
required: config.required === true,
|
|
187
|
+
timeout_ms: config.timeout_ms,
|
|
188
|
+
max_output_chars: config.max_output_chars,
|
|
189
|
+
success_exit_codes: [...config.success_exit_codes].sort((a, b) => a - b),
|
|
190
|
+
};
|
|
191
|
+
return createHash("sha256").update(stableStringifyPolicy(normalized)).digest("hex");
|
|
192
|
+
}
|
|
193
|
+
/** Stable JSON: object keys sorted recursively, so a key-order change never
|
|
194
|
+
* changes the hash. Arrays keep their order. */
|
|
195
|
+
function stableStringifyPolicy(value) {
|
|
196
|
+
if (value === null || typeof value !== "object")
|
|
197
|
+
return JSON.stringify(value) ?? "null";
|
|
198
|
+
if (Array.isArray(value)) {
|
|
199
|
+
return `[${value.map((item) => stableStringifyPolicy(item)).join(",")}]`;
|
|
200
|
+
}
|
|
201
|
+
const entries = Object.entries(value)
|
|
202
|
+
.filter(([, item]) => item !== undefined)
|
|
203
|
+
.sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0));
|
|
204
|
+
return `{${entries.map(([key, item]) => `${JSON.stringify(key)}:${stableStringifyPolicy(item)}`).join(",")}}`;
|
|
205
|
+
}
|
|
206
|
+
/** v3.8: Static verification capability — a pure function of policy, so it is
|
|
207
|
+
* byte-identical across retries of the same round and reproducible by
|
|
208
|
+
* replay/audit from committed facts. It contains NO probing, no filesystem
|
|
209
|
+
* access, and no provider-registry state; readiness of the runtime
|
|
210
|
+
* environment is a `doctor` concern, not a hashed fact. */
|
|
211
|
+
export function deriveConfiguredCapability(policy) {
|
|
212
|
+
const providers = (Array.isArray(policy.evidence?.providers) ? policy.evidence.providers : [])
|
|
213
|
+
.filter((name) => typeof name === "string" && name.trim().length > 0)
|
|
214
|
+
.map((providerId) => ({ providerId }));
|
|
215
|
+
const commands = (Array.isArray(policy.evidence?.commands) ? policy.evidence.commands : [])
|
|
216
|
+
.map((command) => ({
|
|
217
|
+
commandId: command.name,
|
|
218
|
+
enabled: command.enabled === true,
|
|
219
|
+
phase: command.phase === "both" ? "both" : "after",
|
|
220
|
+
required: command.required === true,
|
|
221
|
+
configHash: commandConfigHash(command),
|
|
222
|
+
}));
|
|
223
|
+
return {
|
|
224
|
+
schemaVersion: 1,
|
|
225
|
+
providers,
|
|
226
|
+
commands,
|
|
227
|
+
observationConfigured: providers.length > 0,
|
|
228
|
+
// Every configured command runs in the after phase ("after" or "both"),
|
|
229
|
+
// so an enabled command is exactly what makes contract verification
|
|
230
|
+
// possible.
|
|
231
|
+
contractVerificationAvailable: commands.some((command) => command.enabled),
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
/** v3.3/v3.8: Whether a command name may back a Round Contract item. A
|
|
235
|
+
* contract item is verified by an AFTER-phase observation, so the predicate
|
|
236
|
+
* requires configured AND enabled AND after-capable — `verify_with` may only
|
|
237
|
+
* reference a command the runtime can actually observe at closure time.
|
|
238
|
+
*
|
|
239
|
+
* `CommandEvidencePolicy.phase` is `"after" | "both"` today, so the phase arm
|
|
240
|
+
* is currently self-satisfying; it is stated explicitly because it is the
|
|
241
|
+
* boundary the contract declaration is judged against, not an accident of
|
|
242
|
+
* the current phase enum. */
|
|
132
243
|
export function isConfiguredCommand(name) {
|
|
133
244
|
const commands = getPolicy().evidence?.commands ?? [];
|
|
134
|
-
return commands.some((c) => c.enabled && c.name === name);
|
|
245
|
+
return commands.some((c) => c.enabled && c.name === name && (c.phase === "after" || c.phase === "both"));
|
|
135
246
|
}
|
|
136
247
|
const LOOP_ID_RE = /^[a-zA-Z0-9][-a-zA-Z0-9_:.]{0,127}$/;
|
|
137
248
|
export function validateLoopId(loopId) {
|
package/dist/policy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAE7C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,11 +9,9 @@
|
|
|
9
9
|
* vault). Prompt length can exceed the ceiling when the mandatory sections
|
|
10
10
|
* alone are over it — truncation of mandatory content never happens.
|
|
11
11
|
*/
|
|
12
|
-
import type { CanonicalLoopState
|
|
12
|
+
import type { CanonicalLoopState } from "./canonical-state.js";
|
|
13
13
|
import type { PromptArtifact, PromptRequests } from "./protocol.js";
|
|
14
|
-
import type { ConstraintMeta, MilestoneSummary, SubGoal } from "./protocol.js";
|
|
15
14
|
import type { PromptLevel, PromptLevelReason } from "./prompt-policy.js";
|
|
16
|
-
export declare const PROMPT_ARTIFACT_SCHEMA_VERSION: 1;
|
|
17
15
|
export interface PromptBudgets {
|
|
18
16
|
l0: number;
|
|
19
17
|
l1: number;
|
|
@@ -30,38 +28,9 @@ export interface PromptAssemblyInput {
|
|
|
30
28
|
fullStateMarkdown?: string;
|
|
31
29
|
/** v2.9: Model's information needs for this prompt. L0: ignored. */
|
|
32
30
|
promptRequests?: PromptRequests;
|
|
33
|
-
/** v3.2: Previous round's L1 presentation (persisted diff baseline).
|
|
34
|
-
* When present, L1 collapses unchanged content against it. */
|
|
35
|
-
presentedBaseline?: PresentedStateSnapshot | null;
|
|
36
31
|
}
|
|
37
32
|
/** v3.2: The actionable instruction for a verification check. Exported for
|
|
38
33
|
* the coverage test (which imports the CHECK_* constants). */
|
|
39
34
|
export declare function verificationActionFor(check: string): string;
|
|
40
|
-
/** v3.2: Collapse only when at least this many items are unchanged — a tiny
|
|
41
|
-
* unchanged set renders in full (nothing worth saving). */
|
|
42
|
-
export declare const COLLAPSE_MIN_UNCHANGED = 3;
|
|
43
|
-
/** v3.2: Recent-rounds items kept in full when older ones collapse. */
|
|
44
|
-
export declare const KEEP_RECENT_ROUNDS = 3;
|
|
45
|
-
export interface ConstraintDiff {
|
|
46
|
-
/** Constraint texts to render in full (new or violated this round). */
|
|
47
|
-
changed: string[];
|
|
48
|
-
/** Same-ID items unchanged since the baseline. */
|
|
49
|
-
unchangedCount: number;
|
|
50
|
-
/** Baseline items absent now, excluding emphasized items (they were moved
|
|
51
|
-
* to Critical Context, not demoted). */
|
|
52
|
-
removedCount: number;
|
|
53
|
-
}
|
|
54
|
-
export declare function diffConstraints(baseline: PresentedStateSnapshot | null, activeTexts: string[], metadata: ConstraintMeta[], round: number, emphasized: Set<string>): ConstraintDiff;
|
|
55
|
-
export interface SubGoalDiff {
|
|
56
|
-
/** Sub-goals to render in full (new or status transition). */
|
|
57
|
-
changed: SubGoal[];
|
|
58
|
-
unchangedCount: number;
|
|
59
|
-
/** Baseline sub-goals no longer in the active set (done/canceled/blocked). */
|
|
60
|
-
removedCount: number;
|
|
61
|
-
}
|
|
62
|
-
export declare function diffSubGoals(baseline: PresentedStateSnapshot | null, activeSubs: SubGoal[]): SubGoalDiff;
|
|
63
|
-
/** v3.2: True when a milestone boundary was crossed since the baseline —
|
|
64
|
-
* the Recent Rounds section then renders in full (a phase ended). */
|
|
65
|
-
export declare function milestoneBoundaryChanged(baseline: PresentedStateSnapshot | null, milestones: MilestoneSummary[]): boolean;
|
|
66
35
|
export declare function assemblePromptArtifact(input: PromptAssemblyInput): PromptArtifact;
|
|
67
36
|
//# sourceMappingURL=prompt-assembler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-assembler.d.ts","sourceRoot":"","sources":["../src/prompt-assembler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"prompt-assembler.d.ts","sourceRoot":"","sources":["../src/prompt-assembler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAO/D,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAOpE,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EAClB,MAAM,oBAAoB,CAAC;AAK5B,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,eAAO,MAAM,sBAAsB,EAAE,aAIpC,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,kBAAkB,CAAC;IAC1B,KAAK,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oEAAoE;IACpE,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAmHD;+DAC+D;AAC/D,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3D;AA6mBD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,mBAAmB,GAAG,cAAc,CAiLjF"}
|