loopforge 3.7.0 → 3.8.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 (151) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +171 -157
  3. package/dist/audit.d.ts +53 -1
  4. package/dist/audit.d.ts.map +1 -1
  5. package/dist/audit.js +106 -22
  6. package/dist/audit.js.map +1 -1
  7. package/dist/canonical-state.d.ts +75 -69
  8. package/dist/canonical-state.d.ts.map +1 -1
  9. package/dist/canonical-state.js +276 -168
  10. package/dist/canonical-state.js.map +1 -1
  11. package/dist/cli.d.ts.map +1 -1
  12. package/dist/cli.js +111 -12
  13. package/dist/cli.js.map +1 -1
  14. package/dist/cognitive-facts.d.ts +13 -0
  15. package/dist/cognitive-facts.d.ts.map +1 -1
  16. package/dist/cognitive-facts.js +30 -16
  17. package/dist/cognitive-facts.js.map +1 -1
  18. package/dist/cognitive-governance.d.ts +30 -6
  19. package/dist/cognitive-governance.d.ts.map +1 -1
  20. package/dist/cognitive-governance.js +74 -18
  21. package/dist/cognitive-governance.js.map +1 -1
  22. package/dist/committed-round.d.ts +109 -24
  23. package/dist/committed-round.d.ts.map +1 -1
  24. package/dist/committed-round.js +235 -52
  25. package/dist/committed-round.js.map +1 -1
  26. package/dist/contract-items.d.ts +55 -0
  27. package/dist/contract-items.d.ts.map +1 -0
  28. package/dist/contract-items.js +180 -0
  29. package/dist/contract-items.js.map +1 -0
  30. package/dist/enforcement-gate.d.ts +43 -20
  31. package/dist/enforcement-gate.d.ts.map +1 -1
  32. package/dist/enforcement-gate.js +269 -378
  33. package/dist/enforcement-gate.js.map +1 -1
  34. package/dist/engine.d.ts +11 -6
  35. package/dist/engine.d.ts.map +1 -1
  36. package/dist/engine.js +102 -67
  37. package/dist/engine.js.map +1 -1
  38. package/dist/evidence-claims.d.ts +4 -4
  39. package/dist/evidence-claims.d.ts.map +1 -1
  40. package/dist/evidence-claims.js +16 -14
  41. package/dist/evidence-claims.js.map +1 -1
  42. package/dist/evidence-provider.d.ts +91 -90
  43. package/dist/evidence-provider.d.ts.map +1 -1
  44. package/dist/evidence-provider.js +349 -160
  45. package/dist/evidence-provider.js.map +1 -1
  46. package/dist/explain.d.ts +76 -0
  47. package/dist/explain.d.ts.map +1 -0
  48. package/dist/explain.js +127 -0
  49. package/dist/explain.js.map +1 -0
  50. package/dist/generate-schema.js +250 -53
  51. package/dist/generate-schema.js.map +1 -1
  52. package/dist/index.d.ts +8 -7
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +7 -6
  55. package/dist/index.js.map +1 -1
  56. package/dist/loop-compiler.d.ts +41 -40
  57. package/dist/loop-compiler.d.ts.map +1 -1
  58. package/dist/loop-compiler.js +275 -515
  59. package/dist/loop-compiler.js.map +1 -1
  60. package/dist/loop-extras-parser.d.ts +0 -1
  61. package/dist/loop-extras-parser.d.ts.map +1 -1
  62. package/dist/loop-extras-parser.js +0 -4
  63. package/dist/loop-extras-parser.js.map +1 -1
  64. package/dist/loop-projection.d.ts.map +1 -1
  65. package/dist/loop-projection.js +3 -1
  66. package/dist/loop-projection.js.map +1 -1
  67. package/dist/mcp/round-lifecycle.d.ts +40 -21
  68. package/dist/mcp/round-lifecycle.d.ts.map +1 -1
  69. package/dist/mcp/round-lifecycle.js +173 -120
  70. package/dist/mcp/round-lifecycle.js.map +1 -1
  71. package/dist/mcp/server.d.ts.map +1 -1
  72. package/dist/mcp/server.js +63 -10
  73. package/dist/mcp/server.js.map +1 -1
  74. package/dist/mcp/session.d.ts +53 -7
  75. package/dist/mcp/session.d.ts.map +1 -1
  76. package/dist/mcp/session.js +240 -139
  77. package/dist/mcp/session.js.map +1 -1
  78. package/dist/mcp/submission-boundary.d.ts +89 -0
  79. package/dist/mcp/submission-boundary.d.ts.map +1 -0
  80. package/dist/mcp/submission-boundary.js +203 -0
  81. package/dist/mcp/submission-boundary.js.map +1 -0
  82. package/dist/mcp/tools.d.ts.map +1 -1
  83. package/dist/mcp/tools.js +377 -125
  84. package/dist/mcp/tools.js.map +1 -1
  85. package/dist/policy-metrics.js +2 -2
  86. package/dist/policy-metrics.js.map +1 -1
  87. package/dist/policy.d.ts +65 -95
  88. package/dist/policy.d.ts.map +1 -1
  89. package/dist/policy.js +151 -39
  90. package/dist/policy.js.map +1 -1
  91. package/dist/prompt-assembler.d.ts +7 -33
  92. package/dist/prompt-assembler.d.ts.map +1 -1
  93. package/dist/prompt-assembler.js +313 -473
  94. package/dist/prompt-assembler.js.map +1 -1
  95. package/dist/prompt-policy.d.ts +1 -4
  96. package/dist/prompt-policy.d.ts.map +1 -1
  97. package/dist/prompt-policy.js +6 -7
  98. package/dist/prompt-policy.js.map +1 -1
  99. package/dist/protocol.d.ts +411 -168
  100. package/dist/protocol.d.ts.map +1 -1
  101. package/dist/protocol.js +23 -69
  102. package/dist/protocol.js.map +1 -1
  103. package/dist/replay.js +2 -2
  104. package/dist/replay.js.map +1 -1
  105. package/dist/round-contract.d.ts +69 -57
  106. package/dist/round-contract.d.ts.map +1 -1
  107. package/dist/round-contract.js +104 -64
  108. package/dist/round-contract.js.map +1 -1
  109. package/dist/round-coordinator.d.ts +55 -16
  110. package/dist/round-coordinator.d.ts.map +1 -1
  111. package/dist/round-coordinator.js +179 -57
  112. package/dist/round-coordinator.js.map +1 -1
  113. package/dist/round-driver.d.ts +7 -5
  114. package/dist/round-driver.d.ts.map +1 -1
  115. package/dist/round-driver.js +2 -1
  116. package/dist/round-driver.js.map +1 -1
  117. package/dist/round-facts.d.ts +96 -0
  118. package/dist/round-facts.d.ts.map +1 -0
  119. package/dist/round-facts.js +216 -0
  120. package/dist/round-facts.js.map +1 -0
  121. package/dist/round-transaction.d.ts +23 -9
  122. package/dist/round-transaction.d.ts.map +1 -1
  123. package/dist/round-transaction.js +99 -22
  124. package/dist/round-transaction.js.map +1 -1
  125. package/dist/self-eval.d.ts +127 -11
  126. package/dist/self-eval.d.ts.map +1 -1
  127. package/dist/self-eval.js +517 -36
  128. package/dist/self-eval.js.map +1 -1
  129. package/dist/subgoal-state.d.ts +77 -0
  130. package/dist/subgoal-state.d.ts.map +1 -0
  131. package/dist/subgoal-state.js +198 -0
  132. package/dist/subgoal-state.js.map +1 -0
  133. package/dist/token-utils.d.ts +52 -19
  134. package/dist/token-utils.d.ts.map +1 -1
  135. package/dist/token-utils.js +83 -72
  136. package/dist/token-utils.js.map +1 -1
  137. package/dist/verification-gate.d.ts +27 -46
  138. package/dist/verification-gate.d.ts.map +1 -1
  139. package/dist/verification-gate.js +308 -557
  140. package/dist/verification-gate.js.map +1 -1
  141. package/dist/version.d.ts +5 -0
  142. package/dist/version.d.ts.map +1 -0
  143. package/dist/version.js +5 -0
  144. package/dist/version.js.map +1 -0
  145. package/dist/workspace.d.ts +9 -0
  146. package/dist/workspace.d.ts.map +1 -1
  147. package/dist/workspace.js +17 -0
  148. package/dist/workspace.js.map +1 -1
  149. package/loop_policy.json +17 -25
  150. package/package.json +7 -7
  151. package/skills/perception/SKILL.md +266 -64
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: "2",
10
+ version: POLICY_SCHEMA_VERSION,
8
11
  constraints: { retire_window: 3 },
9
- summary: { window: 5, health_check_interval: 1, milestone_interval: 20, max_milestones: 10, milestone_head_count: 3, milestone_tail_count: 3 },
10
- engine: { stall_lookback_rounds: 3, max_rounds: 20, enforcement_escalation_enabled: true, backtrack_enabled: true, backtrack_max_depth: 3, backtrack_preserve_discoveries: true, drift_clarification_max_streak: 3, backtrack_auto_restore: false },
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,28 +26,20 @@ 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
- constraint_match_threshold: 0.5,
42
- subgoal_drift_alignment_threshold: 0.3,
43
- constraint_id_enabled: true,
29
+ max_active_subgoals: 12,
44
30
  },
45
31
  checkpoint: { outcome_max_chars: 200 },
46
32
  state_file: {
47
33
  enabled: true,
48
34
  directory: ".loopforge/state",
49
35
  },
50
- evidence: { providers: ["git"], timeout_ms: 120_000, commands: [], machine_backed_success: "required" },
36
+ evidence: { providers: ["git"], timeout_ms: 120_000, commands: [] },
51
37
  mcp: {
52
38
  session_lease_ms: 30_000,
53
39
  session_lease_renew_interval_ms: 10_000,
54
40
  },
55
41
  gate: {
56
- enabled: true,
42
+ enabled: false,
57
43
  },
58
44
  };
59
45
  /** Write a full default `loop_policy.json` to the target directory.
@@ -72,39 +58,99 @@ export function writeDefaultPolicy(targetDir, force = false) {
72
58
  writeFileSync(target, JSON.stringify(DEFAULT_POLICY, null, 2) + "\n", "utf8");
73
59
  return { path: target, created: true };
74
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. */
75
78
  function deepMerge(defaults, overrides) {
76
79
  const result = { ...defaults };
77
80
  for (const key of Object.keys(overrides)) {
78
81
  const current = result[key];
79
82
  const incoming = overrides[key];
80
- if (key in result && current !== null && incoming !== null &&
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 &&
81
89
  typeof current === "object" && !Array.isArray(current) &&
82
90
  typeof incoming === "object" && !Array.isArray(incoming)) {
83
91
  result[key] = deepMerge(current, incoming);
84
92
  }
85
- else if (key in result) {
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
+ }
86
111
  result[key] = incoming;
87
112
  }
88
113
  else {
89
- // Warn on unknown keys — a typo like "max_round" instead of
90
- // "max_rounds" would otherwise be silently ignored.
91
- console.warn(`loopforge: ignoring unknown policy key "${key}". Check loop_policy.json for typos.`);
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.");
92
117
  }
93
118
  }
94
119
  return result;
95
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. */
96
135
  export function loadPolicy(path) {
97
136
  const candidates = [path, "loop_policy.json"].filter(Boolean);
98
137
  for (const candidate of candidates) {
138
+ let raw;
99
139
  try {
100
- const raw = JSON.parse(readFileSync(resolve(candidate), "utf8"));
101
- if (raw && typeof raw === "object" && !Array.isArray(raw)) {
102
- return deepMerge(DEFAULT_POLICY, raw);
103
- }
140
+ raw = JSON.parse(readFileSync(resolve(candidate), "utf8"));
104
141
  }
105
142
  catch {
106
- // Try the next candidate.
143
+ continue; // absent or unreadable — try the next candidate
107
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);
108
154
  }
109
155
  return structuredClone(DEFAULT_POLICY);
110
156
  }
@@ -121,16 +167,82 @@ export function resetPolicy() {
121
167
  policy = null;
122
168
  }
123
169
  /** v3.2: Test-only injection — mirrors resetPolicy so tests can exercise a
124
- * specific policy configuration (e.g. l1_collapse_enabled=false). */
170
+ * specific policy configuration (e.g. state_file.enabled=false). */
125
171
  export function setPolicyForTest(next) {
126
172
  policy = next;
127
173
  }
128
- /** v3.3: Whether a command name is configured AND enabled in the current
129
- * policy's evidence.commands. The machine-checkable predicate behind the
130
- * round_contract verification_plan (round_unverifiable otherwise). */
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. */
131
243
  export function isConfiguredCommand(name) {
132
244
  const commands = getPolicy().evidence?.commands ?? [];
133
- 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"));
134
246
  }
135
247
  const LOOP_ID_RE = /^[a-zA-Z0-9][-a-zA-Z0-9_:.]{0,127}$/;
136
248
  export function validateLoopId(loopId) {
@@ -1 +1 @@
1
- {"version":3,"file":"policy.js","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"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"}
@@ -2,13 +2,16 @@
2
2
  *
3
3
  * L0/L1/L2 control state density only. Reasoning strategy belongs to the
4
4
  * external Agent. Mandatory task, hard-constraint, and verification sections
5
- * are never truncated; budgets are soft and overflow is recorded.
5
+ * are never truncated and always render. Budgets are soft CEILINGS applied
6
+ * to optional sections: optional sections are appended in priority order
7
+ * while the rendered length stays under the level's budget, and the rest are
8
+ * dropped from the prompt (the dropped content stays derivable from the
9
+ * vault). Prompt length can exceed the ceiling when the mandatory sections
10
+ * alone are over it — truncation of mandatory content never happens.
6
11
  */
7
- import type { CanonicalLoopState, PresentedStateSnapshot } from "./canonical-state.js";
12
+ import type { CanonicalLoopState } from "./canonical-state.js";
8
13
  import type { PromptArtifact, PromptRequests } from "./protocol.js";
9
- import type { ConstraintMeta, MilestoneSummary, SubGoal } from "./protocol.js";
10
14
  import type { PromptLevel, PromptLevelReason } from "./prompt-policy.js";
11
- export declare const PROMPT_ARTIFACT_SCHEMA_VERSION: 1;
12
15
  export interface PromptBudgets {
13
16
  l0: number;
14
17
  l1: number;
@@ -25,38 +28,9 @@ export interface PromptAssemblyInput {
25
28
  fullStateMarkdown?: string;
26
29
  /** v2.9: Model's information needs for this prompt. L0: ignored. */
27
30
  promptRequests?: PromptRequests;
28
- /** v3.2: Previous round's L1 presentation (persisted diff baseline).
29
- * When present, L1 collapses unchanged content against it. */
30
- presentedBaseline?: PresentedStateSnapshot | null;
31
31
  }
32
32
  /** v3.2: The actionable instruction for a verification check. Exported for
33
33
  * the coverage test (which imports the CHECK_* constants). */
34
34
  export declare function verificationActionFor(check: string): string;
35
- /** v3.2: Collapse only when at least this many items are unchanged — a tiny
36
- * unchanged set renders in full (nothing worth saving). */
37
- export declare const COLLAPSE_MIN_UNCHANGED = 3;
38
- /** v3.2: Recent-rounds items kept in full when older ones collapse. */
39
- export declare const KEEP_RECENT_ROUNDS = 3;
40
- export interface ConstraintDiff {
41
- /** Constraint texts to render in full (new or violated this round). */
42
- changed: string[];
43
- /** Same-ID items unchanged since the baseline. */
44
- unchangedCount: number;
45
- /** Baseline items absent now, excluding emphasized items (they were moved
46
- * to Critical Context, not demoted). */
47
- removedCount: number;
48
- }
49
- export declare function diffConstraints(baseline: PresentedStateSnapshot | null, activeTexts: string[], metadata: ConstraintMeta[], round: number, emphasized: Set<string>): ConstraintDiff;
50
- export interface SubGoalDiff {
51
- /** Sub-goals to render in full (new or status transition). */
52
- changed: SubGoal[];
53
- unchangedCount: number;
54
- /** Baseline sub-goals no longer in the active set (done/canceled/blocked). */
55
- removedCount: number;
56
- }
57
- export declare function diffSubGoals(baseline: PresentedStateSnapshot | null, activeSubs: SubGoal[]): SubGoalDiff;
58
- /** v3.2: True when a milestone boundary was crossed since the baseline —
59
- * the Recent Rounds section then renders in full (a phase ended). */
60
- export declare function milestoneBoundaryChanged(baseline: PresentedStateSnapshot | null, milestones: MilestoneSummary[]): boolean;
61
35
  export declare function assemblePromptArtifact(input: PromptAssemblyInput): PromptArtifact;
62
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;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEvF,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EAClB,MAAM,oBAAoB,CAAC;AAI5B,eAAO,MAAM,8BAA8B,EAAG,CAAU,CAAC;AAEzD,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;IAChC;mEAC+D;IAC/D,iBAAiB,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAC;CACnD;AA6HD;+DAC+D;AAC/D,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3D;AAmCD;4DAC4D;AAC5D,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,uEAAuE;AACvE,eAAO,MAAM,kBAAkB,IAAI,CAAC;AASpC,MAAM,WAAW,cAAc;IAC7B,uEAAuE;IACvE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,kDAAkD;IAClD,cAAc,EAAE,MAAM,CAAC;IACvB;6CACyC;IACzC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,sBAAsB,GAAG,IAAI,EACvC,WAAW,EAAE,MAAM,EAAE,EACrB,QAAQ,EAAE,cAAc,EAAE,EAC1B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,GACtB,cAAc,CAyBhB;AAED,MAAM,WAAW,WAAW;IAC1B,8DAA8D;IAC9D,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,8EAA8E;IAC9E,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,sBAAsB,GAAG,IAAI,EACvC,UAAU,EAAE,OAAO,EAAE,GACpB,WAAW,CAgBb;AAED;sEACsE;AACtE,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,sBAAsB,GAAG,IAAI,EACvC,UAAU,EAAE,gBAAgB,EAAE,GAC7B,OAAO,CAQT;AAoqBD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,mBAAmB,GAAG,cAAc,CA0LjF"}
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"}