loopforge 1.12.0 → 2.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.
Files changed (182) hide show
  1. package/README.md +172 -95
  2. package/dist/backends/interface.d.ts +3 -9
  3. package/dist/backends/interface.d.ts.map +1 -1
  4. package/dist/backends/interface.js +1 -5
  5. package/dist/backends/interface.js.map +1 -1
  6. package/dist/canonical-state.d.ts +53 -0
  7. package/dist/canonical-state.d.ts.map +1 -0
  8. package/dist/canonical-state.js +161 -0
  9. package/dist/canonical-state.js.map +1 -0
  10. package/dist/cli.d.ts +4 -0
  11. package/dist/cli.d.ts.map +1 -0
  12. package/dist/cli.js +227 -0
  13. package/dist/cli.js.map +1 -0
  14. package/dist/enforcement-gate.d.ts +44 -0
  15. package/dist/enforcement-gate.d.ts.map +1 -0
  16. package/dist/enforcement-gate.js +271 -0
  17. package/dist/enforcement-gate.js.map +1 -0
  18. package/dist/engine.d.ts +17 -7
  19. package/dist/engine.d.ts.map +1 -1
  20. package/dist/engine.js +158 -249
  21. package/dist/engine.js.map +1 -1
  22. package/dist/evidence-provider.d.ts +113 -0
  23. package/dist/evidence-provider.d.ts.map +1 -0
  24. package/dist/evidence-provider.js +419 -0
  25. package/dist/evidence-provider.js.map +1 -0
  26. package/dist/index.d.ts +19 -11
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +16 -10
  29. package/dist/index.js.map +1 -1
  30. package/dist/init.d.ts +15 -0
  31. package/dist/init.d.ts.map +1 -0
  32. package/dist/init.js +49 -0
  33. package/dist/init.js.map +1 -0
  34. package/dist/interop.d.ts +30 -0
  35. package/dist/interop.d.ts.map +1 -0
  36. package/dist/interop.js +29 -0
  37. package/dist/interop.js.map +1 -0
  38. package/dist/loop-compiler.d.ts +14 -64
  39. package/dist/loop-compiler.d.ts.map +1 -1
  40. package/dist/loop-compiler.js +307 -2001
  41. package/dist/loop-compiler.js.map +1 -1
  42. package/dist/loop-store.d.ts +82 -0
  43. package/dist/loop-store.d.ts.map +1 -0
  44. package/dist/loop-store.js +332 -0
  45. package/dist/loop-store.js.map +1 -0
  46. package/dist/mcp/server.d.ts +9 -6
  47. package/dist/mcp/server.d.ts.map +1 -1
  48. package/dist/mcp/server.js +109 -73
  49. package/dist/mcp/server.js.map +1 -1
  50. package/dist/mcp/session.d.ts +84 -20
  51. package/dist/mcp/session.d.ts.map +1 -1
  52. package/dist/mcp/session.js +718 -316
  53. package/dist/mcp/session.js.map +1 -1
  54. package/dist/mcp/tools.d.ts +18 -268
  55. package/dist/mcp/tools.d.ts.map +1 -1
  56. package/dist/mcp/tools.js +225 -12
  57. package/dist/mcp/tools.js.map +1 -1
  58. package/dist/observability.d.ts +36 -16
  59. package/dist/observability.d.ts.map +1 -1
  60. package/dist/observability.js +82 -23
  61. package/dist/observability.js.map +1 -1
  62. package/dist/policy-metrics.d.ts +46 -0
  63. package/dist/policy-metrics.d.ts.map +1 -0
  64. package/dist/policy-metrics.js +146 -0
  65. package/dist/policy-metrics.js.map +1 -0
  66. package/dist/policy.d.ts +58 -75
  67. package/dist/policy.d.ts.map +1 -1
  68. package/dist/policy.js +122 -93
  69. package/dist/policy.js.map +1 -1
  70. package/dist/prompt-assembler.d.ts +30 -0
  71. package/dist/prompt-assembler.d.ts.map +1 -0
  72. package/dist/prompt-assembler.js +257 -0
  73. package/dist/prompt-assembler.js.map +1 -0
  74. package/dist/prompt-policy.d.ts +29 -0
  75. package/dist/prompt-policy.d.ts.map +1 -0
  76. package/dist/prompt-policy.js +51 -0
  77. package/dist/prompt-policy.js.map +1 -0
  78. package/dist/protocol.d.ts +117 -91
  79. package/dist/protocol.d.ts.map +1 -1
  80. package/dist/protocol.js +40 -36
  81. package/dist/protocol.js.map +1 -1
  82. package/dist/replay.d.ts.map +1 -1
  83. package/dist/replay.js +1 -27
  84. package/dist/replay.js.map +1 -1
  85. package/dist/round-coordinator.d.ts +90 -0
  86. package/dist/round-coordinator.d.ts.map +1 -0
  87. package/dist/round-coordinator.js +186 -0
  88. package/dist/round-coordinator.js.map +1 -0
  89. package/dist/round-driver.d.ts +53 -0
  90. package/dist/round-driver.d.ts.map +1 -0
  91. package/dist/round-driver.js +101 -0
  92. package/dist/round-driver.js.map +1 -0
  93. package/dist/round-transaction.d.ts +70 -0
  94. package/dist/round-transaction.d.ts.map +1 -0
  95. package/dist/round-transaction.js +290 -0
  96. package/dist/round-transaction.js.map +1 -0
  97. package/dist/runtime.d.ts +35 -17
  98. package/dist/runtime.d.ts.map +1 -1
  99. package/dist/runtime.js +357 -344
  100. package/dist/runtime.js.map +1 -1
  101. package/dist/storage.d.ts +38 -0
  102. package/dist/storage.d.ts.map +1 -0
  103. package/dist/storage.js +201 -0
  104. package/dist/storage.js.map +1 -0
  105. package/dist/verification-gate.d.ts +39 -7
  106. package/dist/verification-gate.d.ts.map +1 -1
  107. package/dist/verification-gate.js +198 -9
  108. package/dist/verification-gate.js.map +1 -1
  109. package/loop_policy.json +26 -47
  110. package/package.json +13 -10
  111. package/skills/perception/SKILL.md +80 -249
  112. package/dist/backends/fs.d.ts +0 -36
  113. package/dist/backends/fs.d.ts.map +0 -1
  114. package/dist/backends/fs.js +0 -358
  115. package/dist/backends/fs.js.map +0 -1
  116. package/dist/builder.d.ts +0 -12
  117. package/dist/builder.d.ts.map +0 -1
  118. package/dist/builder.js +0 -259
  119. package/dist/builder.js.map +0 -1
  120. package/dist/mcp-server.d.ts +0 -12
  121. package/dist/mcp-server.d.ts.map +0 -1
  122. package/dist/mcp-server.js +0 -14
  123. package/dist/mcp-server.js.map +0 -1
  124. package/dist/memory-bridge.d.ts +0 -47
  125. package/dist/memory-bridge.d.ts.map +0 -1
  126. package/dist/memory-bridge.js +0 -290
  127. package/dist/memory-bridge.js.map +0 -1
  128. package/dist/tests/_helpers.d.ts +0 -25
  129. package/dist/tests/_helpers.d.ts.map +0 -1
  130. package/dist/tests/_helpers.js +0 -47
  131. package/dist/tests/_helpers.js.map +0 -1
  132. package/dist/tests/builder.test.d.ts +0 -2
  133. package/dist/tests/builder.test.d.ts.map +0 -1
  134. package/dist/tests/builder.test.js +0 -110
  135. package/dist/tests/builder.test.js.map +0 -1
  136. package/dist/tests/engine.test.d.ts +0 -2
  137. package/dist/tests/engine.test.d.ts.map +0 -1
  138. package/dist/tests/engine.test.js +0 -371
  139. package/dist/tests/engine.test.js.map +0 -1
  140. package/dist/tests/generate-schema.test.d.ts +0 -8
  141. package/dist/tests/generate-schema.test.d.ts.map +0 -1
  142. package/dist/tests/generate-schema.test.js +0 -199
  143. package/dist/tests/generate-schema.test.js.map +0 -1
  144. package/dist/tests/loop-compiler.test.d.ts +0 -2
  145. package/dist/tests/loop-compiler.test.d.ts.map +0 -1
  146. package/dist/tests/loop-compiler.test.js +0 -1051
  147. package/dist/tests/loop-compiler.test.js.map +0 -1
  148. package/dist/tests/mcp.test.d.ts +0 -7
  149. package/dist/tests/mcp.test.d.ts.map +0 -1
  150. package/dist/tests/mcp.test.js +0 -485
  151. package/dist/tests/mcp.test.js.map +0 -1
  152. package/dist/tests/memory-bridge.test.d.ts +0 -8
  153. package/dist/tests/memory-bridge.test.d.ts.map +0 -1
  154. package/dist/tests/memory-bridge.test.js +0 -383
  155. package/dist/tests/memory-bridge.test.js.map +0 -1
  156. package/dist/tests/policy.test.d.ts +0 -2
  157. package/dist/tests/policy.test.d.ts.map +0 -1
  158. package/dist/tests/policy.test.js +0 -49
  159. package/dist/tests/policy.test.js.map +0 -1
  160. package/dist/tests/protocol.test.d.ts +0 -2
  161. package/dist/tests/protocol.test.d.ts.map +0 -1
  162. package/dist/tests/protocol.test.js +0 -73
  163. package/dist/tests/protocol.test.js.map +0 -1
  164. package/dist/tests/replay.test.d.ts +0 -2
  165. package/dist/tests/replay.test.d.ts.map +0 -1
  166. package/dist/tests/replay.test.js +0 -222
  167. package/dist/tests/replay.test.js.map +0 -1
  168. package/dist/tests/runtime.test.d.ts +0 -7
  169. package/dist/tests/runtime.test.d.ts.map +0 -1
  170. package/dist/tests/runtime.test.js +0 -323
  171. package/dist/tests/runtime.test.js.map +0 -1
  172. package/dist/tests/verification-gate.test.d.ts +0 -2
  173. package/dist/tests/verification-gate.test.d.ts.map +0 -1
  174. package/dist/tests/verification-gate.test.js +0 -407
  175. package/dist/tests/verification-gate.test.js.map +0 -1
  176. package/skills/prompt-techniques/SKILL.md +0 -52
  177. package/skills/prompt-techniques/references/chain-of-thought.md +0 -207
  178. package/skills/prompt-techniques/references/few-shot.md +0 -174
  179. package/skills/prompt-techniques/references/least-to-most.md +0 -182
  180. package/skills/prompt-techniques/references/step-back.md +0 -160
  181. package/skills/prompt-techniques/references/tree-of-thought.md +0 -191
  182. package/skills/prompt-techniques/references/zero-shot.md +0 -97
@@ -0,0 +1,30 @@
1
+ /** Single-pass prompt renderer for canonical LoopForge state.
2
+ *
3
+ * L0/L1/L2 control state density only. Reasoning strategy belongs to the
4
+ * external Agent. Mandatory task, hard-constraint, and verification sections
5
+ * are never truncated; budgets are soft and overflow is recorded.
6
+ */
7
+ import type { CanonicalLoopState } from "./canonical-state.js";
8
+ import type { PromptArtifact } from "./protocol.js";
9
+ import type { PromptLevel, PromptLevelReason } from "./prompt-policy.js";
10
+ export declare const PROMPT_ARTIFACT_SCHEMA_VERSION: 1;
11
+ export declare const BASE_PROMPT_VERSION = "2.0.0";
12
+ export type InjectionMode = "adaptive" | "full" | "pointer";
13
+ export interface PromptBudgets {
14
+ l0: number;
15
+ l1: number;
16
+ l2: number;
17
+ }
18
+ export declare const DEFAULT_PROMPT_BUDGETS: PromptBudgets;
19
+ export interface PromptAssemblyInput {
20
+ state: CanonicalLoopState;
21
+ level: PromptLevel;
22
+ reasons: PromptLevelReason[];
23
+ mode?: InjectionMode;
24
+ budgets?: Partial<PromptBudgets>;
25
+ attempt?: number;
26
+ selfEvaluationBlock: string;
27
+ fullStateMarkdown?: string;
28
+ }
29
+ export declare function assemblePromptArtifact(input: PromptAssemblyInput): PromptArtifact;
30
+ //# sourceMappingURL=prompt-assembler.d.ts.map
@@ -0,0 +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,MAAM,sBAAsB,CAAC;AAE/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EAClB,MAAM,oBAAoB,CAAC;AAE5B,eAAO,MAAM,8BAA8B,EAAG,CAAU,CAAC;AACzD,eAAO,MAAM,mBAAmB,UAAU,CAAC;AAE3C,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;AAE5D,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,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,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;CAC5B;AAuND,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,mBAAmB,GAAG,cAAc,CA2DjF"}
@@ -0,0 +1,257 @@
1
+ /** Single-pass prompt renderer for canonical LoopForge state.
2
+ *
3
+ * L0/L1/L2 control state density only. Reasoning strategy belongs to the
4
+ * external Agent. Mandatory task, hard-constraint, and verification sections
5
+ * are never truncated; budgets are soft and overflow is recorded.
6
+ */
7
+ import { createHash } from "node:crypto";
8
+ import { hashCanonicalState } from "./canonical-state.js";
9
+ export const PROMPT_ARTIFACT_SCHEMA_VERSION = 1;
10
+ export const BASE_PROMPT_VERSION = "2.0.0";
11
+ export const DEFAULT_PROMPT_BUDGETS = {
12
+ l0: 3000,
13
+ l1: 7000,
14
+ l2: 18000,
15
+ };
16
+ function section(title, body) {
17
+ return body.trim() ? `### ${title}\n${body.trim()}\n\n` : "";
18
+ }
19
+ function bullets(values, prefix = "- ") {
20
+ return values.map((value) => `${prefix}${value}`).join("\n");
21
+ }
22
+ function verificationText(state) {
23
+ const lines = state.verificationFlags.map((flag) => {
24
+ const icon = flag.severity === "error"
25
+ ? "🚫"
26
+ : flag.severity === "warn" ? "⚠️" : "ℹ️";
27
+ return `- ${icon} [${flag.check}] ${flag.detail}`;
28
+ });
29
+ if (state.verificationFlags.some((flag) => flag.severity === "error")) {
30
+ lines.push("- Gate Verdict: CONTRADICTED — resolve every error before claiming success.");
31
+ }
32
+ return lines.join("\n");
33
+ }
34
+ function activeNonHardConstraints(state) {
35
+ const hard = new Set(state.hardConstraints);
36
+ return state.activeConstraints.filter((value) => !hard.has(value));
37
+ }
38
+ function commonMandatorySections(state) {
39
+ const sections = [
40
+ {
41
+ id: "objective",
42
+ text: section("Objective", state.objective),
43
+ mandatory: true,
44
+ },
45
+ {
46
+ id: "current_task",
47
+ text: section("Current Task", state.currentTask),
48
+ mandatory: true,
49
+ },
50
+ ];
51
+ if (state.hardConstraints.length > 0) {
52
+ sections.push({
53
+ id: "hard_constraints",
54
+ text: section("Active Hard Constraints", bullets(state.hardConstraints)),
55
+ mandatory: true,
56
+ });
57
+ }
58
+ if (state.verificationFlags.length > 0) {
59
+ sections.push({
60
+ id: "verification",
61
+ text: section("Verification Gate", verificationText(state)),
62
+ mandatory: true,
63
+ });
64
+ }
65
+ return sections;
66
+ }
67
+ function l0Sections(state) {
68
+ const retryRequirements = [
69
+ ...state.blockers,
70
+ ...state.verificationFlags.map((flag) => flag.detail),
71
+ ];
72
+ const sections = commonMandatorySections(state);
73
+ if (retryRequirements.length > 0) {
74
+ sections.push({
75
+ id: "retry_requirements",
76
+ text: section("Retry Requirements", bullets(retryRequirements)),
77
+ mandatory: true,
78
+ });
79
+ }
80
+ if (state.changesSinceLastRound.length > 0) {
81
+ sections.push({
82
+ id: "changes",
83
+ text: section("New Evidence / Changes", bullets(state.changesSinceLastRound)),
84
+ mandatory: false,
85
+ });
86
+ }
87
+ return sections;
88
+ }
89
+ function l1Sections(state) {
90
+ const sections = commonMandatorySections(state);
91
+ const active = activeNonHardConstraints(state);
92
+ if (state.changesSinceLastRound.length > 0) {
93
+ sections.push({
94
+ id: "changes",
95
+ text: section("Changes Since Last Round", bullets(state.changesSinceLastRound)),
96
+ mandatory: false,
97
+ });
98
+ }
99
+ if (active.length > 0) {
100
+ sections.push({
101
+ id: "active_constraints",
102
+ text: section("Active Constraints / Success Criteria", bullets(active)),
103
+ mandatory: false,
104
+ });
105
+ }
106
+ if (state.remainingCriteria.length > 0) {
107
+ sections.push({
108
+ id: "remaining",
109
+ text: section("Remaining", bullets(state.remainingCriteria)),
110
+ mandatory: false,
111
+ });
112
+ }
113
+ if (state.blockers.length > 0) {
114
+ sections.push({
115
+ id: "blockers",
116
+ text: section("Blockers", bullets(state.blockers)),
117
+ mandatory: false,
118
+ });
119
+ }
120
+ if (state.discoveries.length > 0) {
121
+ sections.push({
122
+ id: "discoveries",
123
+ text: section("New Discoveries", bullets(state.discoveries)),
124
+ mandatory: false,
125
+ });
126
+ }
127
+ if (state.nextAction) {
128
+ sections.push({
129
+ id: "next_action",
130
+ text: section("Next Action", state.nextAction),
131
+ mandatory: false,
132
+ });
133
+ }
134
+ return sections;
135
+ }
136
+ function l2Sections(state, fullStateMarkdown) {
137
+ const sections = commonMandatorySections(state);
138
+ const fullState = fullStateMarkdown?.trim();
139
+ if (fullState) {
140
+ sections.push({
141
+ id: "full_state",
142
+ text: section("Full Rehydrated State", fullState),
143
+ mandatory: false,
144
+ });
145
+ return sections;
146
+ }
147
+ const groups = [
148
+ ["success_criteria", "Success Criteria", state.successCriteria],
149
+ ["active_constraints", "Active Constraints", activeNonHardConstraints(state)],
150
+ ["changes", "Changes Since Last Round", state.changesSinceLastRound],
151
+ ["remaining", "Remaining", state.remainingCriteria],
152
+ ["blockers", "Blockers", state.blockers],
153
+ ["discoveries", "Discoveries", state.discoveries],
154
+ ["rolling_outcomes", "Cross-Round Outcomes", state.rollingOutcomes],
155
+ ["recurring_issues", "Recurring Issues", state.recurringIssues],
156
+ ["failed_patterns", "Failed Patterns", state.failedPatterns],
157
+ ];
158
+ for (const [id, title, values] of groups) {
159
+ if (values.length > 0) {
160
+ sections.push({ id, text: section(title, bullets(values)), mandatory: false });
161
+ }
162
+ }
163
+ if (state.nextAction) {
164
+ sections.push({
165
+ id: "next_action",
166
+ text: section("Next Action", state.nextAction),
167
+ mandatory: false,
168
+ });
169
+ }
170
+ if (state.externalContext) {
171
+ sections.push({
172
+ id: "external_context",
173
+ text: section("External Context", state.externalContext),
174
+ mandatory: false,
175
+ });
176
+ }
177
+ return sections;
178
+ }
179
+ function selectSections(input) {
180
+ if (input.mode === "full") {
181
+ return l2Sections(input.state, input.fullStateMarkdown);
182
+ }
183
+ if (input.level === "l0")
184
+ return l0Sections(input.state);
185
+ if (input.level === "l1")
186
+ return l1Sections(input.state);
187
+ return l2Sections(input.state, input.fullStateMarkdown);
188
+ }
189
+ function renderWithinBudget(sections, fixedText, budget) {
190
+ const mandatory = sections.filter((item) => item.mandatory);
191
+ const optional = sections.filter((item) => !item.mandatory);
192
+ let rendered = fixedText + mandatory.map((item) => item.text).join("");
193
+ const included = mandatory.filter((item) => item.text).map((item) => item.id);
194
+ for (const item of optional) {
195
+ if (!item.text)
196
+ continue;
197
+ if (rendered.length + item.text.length <= budget) {
198
+ rendered += item.text;
199
+ included.push(item.id);
200
+ }
201
+ }
202
+ return { rendered, included };
203
+ }
204
+ export function assemblePromptArtifact(input) {
205
+ const mode = input.mode ?? "adaptive";
206
+ const budgets = { ...DEFAULT_PROMPT_BUDGETS, ...input.budgets };
207
+ const budget = budgets[input.level];
208
+ const stateHash = hashCanonicalState(input.state);
209
+ const attempt = Math.max(1, input.attempt ?? 1);
210
+ const header = [
211
+ `## LoopForge Round ${input.state.round}`,
212
+ `State: ${stateHash.slice(0, 12)} | Level: ${input.level.toUpperCase()} | Attempt: ${attempt}`,
213
+ "",
214
+ ].join("\n");
215
+ const sections = selectSections(input);
216
+ const pointer = input.state.stateFilePath
217
+ ? section("Full State", input.state.stateFilePath)
218
+ : "";
219
+ const evaluation = input.selfEvaluationBlock.trim()
220
+ ? `${input.selfEvaluationBlock.trim()}\n`
221
+ : "";
222
+ const footer = [
223
+ pointer,
224
+ "Execute the current task now. Do not generate another prompt.",
225
+ "When this attempt is finished, submit the structured LoopForge evaluation.",
226
+ "",
227
+ evaluation,
228
+ ].join("\n");
229
+ const fixedText = header;
230
+ const selected = mode === "pointer"
231
+ ? renderWithinBudget(sections.filter((item) => item.mandatory), fixedText, budget)
232
+ : renderWithinBudget(sections, fixedText, budget - footer.length);
233
+ const renderedPrompt = selected.rendered + footer;
234
+ const includedSections = [
235
+ ...selected.included,
236
+ ...(pointer ? ["state_pointer"] : []),
237
+ ...(evaluation ? ["self_evaluation"] : []),
238
+ ];
239
+ const promptHash = createHash("sha256").update(renderedPrompt).digest("hex");
240
+ return {
241
+ schemaVersion: PROMPT_ARTIFACT_SCHEMA_VERSION,
242
+ roundId: `loop:${input.state.loopId}:round:${input.state.round}`,
243
+ attempt,
244
+ level: input.level,
245
+ levelReasons: [...input.reasons],
246
+ renderedPrompt,
247
+ promptHash,
248
+ stateHash,
249
+ basePromptVersion: BASE_PROMPT_VERSION,
250
+ includedSections,
251
+ budgetChars: budget,
252
+ charCount: renderedPrompt.length,
253
+ budgetExceeded: renderedPrompt.length > budget,
254
+ generatedAt: Date.now(),
255
+ };
256
+ }
257
+ //# sourceMappingURL=prompt-assembler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-assembler.js","sourceRoot":"","sources":["../src/prompt-assembler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /** Pure L0/L1/L2 prompt-view policy.
2
+ *
3
+ * Levels describe how much canonical state is rendered. They do not select a
4
+ * reasoning technique; the external Agent owns its reasoning strategy.
5
+ */
6
+ export type PromptLevel = "l0" | "l1" | "l2";
7
+ export type PromptLevelReason = "explicit_override" | "first_round" | "plan_boundary" | "checkpoint_boundary" | "goal_changed" | "missing_previous_state" | "verification_contradicted" | "retry_delta" | "rejection_rehydrate" | "recovery_boundary" | "state_drift" | "periodic_refresh" | "state_capsule";
8
+ export interface PromptLevelInput {
9
+ round: number;
10
+ attempt?: number;
11
+ forceLevel?: string;
12
+ hasPlanSource: boolean;
13
+ checkpointBoundary: boolean;
14
+ goalChanged: boolean;
15
+ previousStateMissing: boolean;
16
+ previousFailedWithoutNewInformation: boolean;
17
+ verificationContradicted: boolean;
18
+ consecutiveRejections?: number;
19
+ recoveryBoundary?: boolean;
20
+ stateDrift?: boolean;
21
+ fullRefreshInterval: number;
22
+ lastFullRound?: number;
23
+ }
24
+ export interface PromptLevelDecision {
25
+ level: PromptLevel;
26
+ reasons: PromptLevelReason[];
27
+ }
28
+ export declare function decidePromptLevel(input: PromptLevelInput): PromptLevelDecision;
29
+ //# sourceMappingURL=prompt-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-policy.d.ts","sourceRoot":"","sources":["../src/prompt-policy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE7C,MAAM,MAAM,iBAAiB,GACzB,mBAAmB,GACnB,aAAa,GACb,eAAe,GACf,qBAAqB,GACrB,cAAc,GACd,wBAAwB,GACxB,2BAA2B,GAC3B,aAAa,GACb,qBAAqB,GACrB,mBAAmB,GACnB,aAAa,GACb,kBAAkB,GAClB,eAAe,CAAC;AAEpB,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,WAAW,EAAE,OAAO,CAAC;IACrB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,mCAAmC,EAAE,OAAO,CAAC;IAC7C,wBAAwB,EAAE,OAAO,CAAC;IAClC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,mBAAmB,CA8C9E"}
@@ -0,0 +1,51 @@
1
+ /** Pure L0/L1/L2 prompt-view policy.
2
+ *
3
+ * Levels describe how much canonical state is rendered. They do not select a
4
+ * reasoning technique; the external Agent owns its reasoning strategy.
5
+ */
6
+ export function decidePromptLevel(input) {
7
+ if ((input.consecutiveRejections ?? 0) >= 2) {
8
+ return { level: "l2", reasons: ["rejection_rehydrate"] };
9
+ }
10
+ if (input.recoveryBoundary) {
11
+ return { level: "l2", reasons: ["recovery_boundary"] };
12
+ }
13
+ if (input.stateDrift)
14
+ return { level: "l2", reasons: ["state_drift"] };
15
+ if ((input.attempt ?? 1) > 1) {
16
+ return { level: "l0", reasons: ["retry_delta"] };
17
+ }
18
+ if (input.verificationContradicted) {
19
+ return { level: "l2", reasons: ["verification_contradicted"] };
20
+ }
21
+ if (input.round === 1)
22
+ return { level: "l2", reasons: ["first_round"] };
23
+ if (input.hasPlanSource)
24
+ return { level: "l2", reasons: ["plan_boundary"] };
25
+ if (input.forceLevel &&
26
+ input.forceLevel !== "auto" &&
27
+ ["l0", "l1", "l2"].includes(input.forceLevel)) {
28
+ return {
29
+ level: input.forceLevel,
30
+ reasons: ["explicit_override"],
31
+ };
32
+ }
33
+ if (input.checkpointBoundary) {
34
+ return { level: "l2", reasons: ["checkpoint_boundary"] };
35
+ }
36
+ if (input.goalChanged)
37
+ return { level: "l2", reasons: ["goal_changed"] };
38
+ if (input.previousStateMissing) {
39
+ return { level: "l2", reasons: ["missing_previous_state"] };
40
+ }
41
+ if (input.previousFailedWithoutNewInformation) {
42
+ return { level: "l0", reasons: ["retry_delta"] };
43
+ }
44
+ const lastFullRound = input.lastFullRound ?? 1;
45
+ if (input.fullRefreshInterval > 0 &&
46
+ input.round - lastFullRound >= input.fullRefreshInterval) {
47
+ return { level: "l2", reasons: ["periodic_refresh"] };
48
+ }
49
+ return { level: "l1", reasons: ["state_capsule"] };
50
+ }
51
+ //# sourceMappingURL=prompt-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-policy.js","sourceRoot":"","sources":["../src/prompt-policy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAyCH,MAAM,UAAU,iBAAiB,CAAC,KAAuB;IACvD,IAAI,CAAC,KAAK,CAAC,qBAAqB,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,qBAAqB,CAAC,EAAE,CAAC;IAC3D,CAAC;IACD,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAC3B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC;IACzD,CAAC;IACD,IAAI,KAAK,CAAC,UAAU;QAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC;IACvE,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC;IACnD,CAAC;IACD,IAAI,KAAK,CAAC,wBAAwB,EAAE,CAAC;QACnC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,2BAA2B,CAAC,EAAE,CAAC;IACjE,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC;IACxE,IAAI,KAAK,CAAC,aAAa;QAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC;IAC5E,IACE,KAAK,CAAC,UAAU;QAChB,KAAK,CAAC,UAAU,KAAK,MAAM;QAC3B,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,EAC7C,CAAC;QACD,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,UAAyB;YACtC,OAAO,EAAE,CAAC,mBAAmB,CAAC;SAC/B,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC7B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,qBAAqB,CAAC,EAAE,CAAC;IAC3D,CAAC;IACD,IAAI,KAAK,CAAC,WAAW;QAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC;IACzE,IAAI,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC/B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,wBAAwB,CAAC,EAAE,CAAC;IAC9D,CAAC;IACD,IAAI,KAAK,CAAC,mCAAmC,EAAE,CAAC;QAC9C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC;IACnD,CAAC;IAED,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC;IAC/C,IACE,KAAK,CAAC,mBAAmB,GAAG,CAAC;QAC7B,KAAK,CAAC,KAAK,GAAG,aAAa,IAAI,KAAK,CAAC,mBAAmB,EACxD,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC;IACxD,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC;AACrD,CAAC"}