loopforge 1.3.1 → 1.7.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 (73) hide show
  1. package/dist/backends/fs.d.ts +5 -0
  2. package/dist/backends/fs.d.ts.map +1 -1
  3. package/dist/backends/fs.js +66 -16
  4. package/dist/backends/fs.js.map +1 -1
  5. package/dist/builder.d.ts +0 -1
  6. package/dist/builder.d.ts.map +1 -1
  7. package/dist/builder.js +14 -25
  8. package/dist/builder.js.map +1 -1
  9. package/dist/engine.d.ts +14 -5
  10. package/dist/engine.d.ts.map +1 -1
  11. package/dist/engine.js +202 -105
  12. package/dist/engine.js.map +1 -1
  13. package/dist/index.d.ts +4 -8
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +4 -9
  16. package/dist/index.js.map +1 -1
  17. package/dist/loop-compiler.d.ts +5 -2
  18. package/dist/loop-compiler.d.ts.map +1 -1
  19. package/dist/loop-compiler.js +533 -19
  20. package/dist/loop-compiler.js.map +1 -1
  21. package/dist/mcp/session.d.ts +11 -3
  22. package/dist/mcp/session.d.ts.map +1 -1
  23. package/dist/mcp/session.js +106 -31
  24. package/dist/mcp/session.js.map +1 -1
  25. package/dist/mcp/tools.d.ts +133 -0
  26. package/dist/mcp/tools.d.ts.map +1 -1
  27. package/dist/mcp/tools.js +116 -6
  28. package/dist/mcp/tools.js.map +1 -1
  29. package/dist/observability.d.ts +23 -0
  30. package/dist/observability.d.ts.map +1 -0
  31. package/dist/observability.js +29 -0
  32. package/dist/observability.js.map +1 -0
  33. package/dist/policy.d.ts +15 -0
  34. package/dist/policy.d.ts.map +1 -1
  35. package/dist/policy.js +8 -0
  36. package/dist/policy.js.map +1 -1
  37. package/dist/protocol.d.ts +114 -5
  38. package/dist/protocol.d.ts.map +1 -1
  39. package/dist/protocol.js +44 -3
  40. package/dist/protocol.js.map +1 -1
  41. package/dist/runtime.d.ts +2 -0
  42. package/dist/runtime.d.ts.map +1 -1
  43. package/dist/runtime.js +51 -3
  44. package/dist/runtime.js.map +1 -1
  45. package/dist/tests/builder.test.js +1 -25
  46. package/dist/tests/builder.test.js.map +1 -1
  47. package/dist/tests/engine.test.js +213 -38
  48. package/dist/tests/engine.test.js.map +1 -1
  49. package/dist/tests/generate-schema.test.js +4 -4
  50. package/dist/tests/generate-schema.test.js.map +1 -1
  51. package/dist/tests/loop-compiler.test.js +191 -2
  52. package/dist/tests/loop-compiler.test.js.map +1 -1
  53. package/dist/tests/mcp.test.js +87 -0
  54. package/dist/tests/mcp.test.js.map +1 -1
  55. package/dist/tests/protocol.test.js +2 -4
  56. package/dist/tests/protocol.test.js.map +1 -1
  57. package/dist/tests/verification-gate.test.d.ts +2 -0
  58. package/dist/tests/verification-gate.test.d.ts.map +1 -0
  59. package/dist/tests/verification-gate.test.js +407 -0
  60. package/dist/tests/verification-gate.test.js.map +1 -0
  61. package/dist/verification-gate.d.ts +26 -0
  62. package/dist/verification-gate.d.ts.map +1 -0
  63. package/dist/verification-gate.js +232 -0
  64. package/dist/verification-gate.js.map +1 -0
  65. package/loop_policy.json +8 -0
  66. package/package.json +1 -2
  67. package/skills/perception/SKILL.md +95 -54
  68. package/dist/cli.d.ts +0 -7
  69. package/dist/cli.d.ts.map +0 -1
  70. package/dist/cli.js +0 -458
  71. package/dist/cli.js.map +0 -1
  72. package/dist/tests/adapter.test.js +0 -104
  73. package/dist/tests/adapter.test.js.map +0 -1
@@ -39,6 +39,7 @@ export declare const TOOL_SCHEMAS: ({
39
39
  };
40
40
  sessionId?: undefined;
41
41
  output?: undefined;
42
+ evaluation?: undefined;
42
43
  };
43
44
  required: string[];
44
45
  };
@@ -56,6 +57,135 @@ export declare const TOOL_SCHEMAS: ({
56
57
  type: "string";
57
58
  description: string;
58
59
  };
60
+ evaluation: {
61
+ type: "object";
62
+ description: string;
63
+ required: string[];
64
+ properties: {
65
+ success: {
66
+ type: "boolean";
67
+ description: string;
68
+ };
69
+ output_summary: {
70
+ type: "string";
71
+ description: string;
72
+ };
73
+ should_continue: {
74
+ type: "boolean";
75
+ description: string;
76
+ };
77
+ constraint_violations: {
78
+ type: "array";
79
+ items: {
80
+ type: "string";
81
+ };
82
+ description: string;
83
+ };
84
+ discovered_constraints: {
85
+ type: "array";
86
+ items: {
87
+ type: "string";
88
+ };
89
+ description: string;
90
+ };
91
+ objective_refinement: {
92
+ type: "string";
93
+ description: string;
94
+ };
95
+ emerged_subtasks: {
96
+ type: "array";
97
+ items: {
98
+ type: "string";
99
+ };
100
+ description: string;
101
+ };
102
+ execution_evidence: {
103
+ type: "object";
104
+ description: string;
105
+ properties: {
106
+ files_changed: {
107
+ type: "array";
108
+ items: {
109
+ type: "string";
110
+ };
111
+ description: string;
112
+ };
113
+ test_results: {
114
+ type: "object";
115
+ description: string;
116
+ properties: {
117
+ passed: {
118
+ type: "integer";
119
+ minimum: number;
120
+ description: string;
121
+ };
122
+ failed: {
123
+ type: "integer";
124
+ minimum: number;
125
+ description: string;
126
+ };
127
+ skipped: {
128
+ type: "integer";
129
+ minimum: number;
130
+ description: string;
131
+ };
132
+ };
133
+ };
134
+ success_criteria_met: {
135
+ type: "array";
136
+ items: {
137
+ type: "string";
138
+ };
139
+ description: string;
140
+ };
141
+ success_criteria_remaining: {
142
+ type: "array";
143
+ items: {
144
+ type: "string";
145
+ };
146
+ description: string;
147
+ };
148
+ progress_estimate: {
149
+ type: "number";
150
+ minimum: number;
151
+ maximum: number;
152
+ description: string;
153
+ };
154
+ };
155
+ };
156
+ retracted_constraints: {
157
+ type: "array";
158
+ items: {
159
+ type: "string";
160
+ };
161
+ description: string;
162
+ };
163
+ revised_success_criteria: {
164
+ type: "array";
165
+ description: string;
166
+ items: {
167
+ type: "object";
168
+ properties: {
169
+ old: {
170
+ type: "string";
171
+ description: string;
172
+ };
173
+ new: {
174
+ type: "string";
175
+ description: string;
176
+ };
177
+ };
178
+ };
179
+ };
180
+ wrong_assumptions: {
181
+ type: "array";
182
+ items: {
183
+ type: "string";
184
+ };
185
+ description: string;
186
+ };
187
+ };
188
+ };
59
189
  task?: undefined;
60
190
  loopId?: undefined;
61
191
  maxRounds?: undefined;
@@ -82,6 +212,7 @@ export declare const TOOL_SCHEMAS: ({
82
212
  planSource?: undefined;
83
213
  constraints?: undefined;
84
214
  output?: undefined;
215
+ evaluation?: undefined;
85
216
  };
86
217
  required: string[];
87
218
  };
@@ -99,6 +230,7 @@ export declare const TOOL_SCHEMAS: ({
99
230
  constraints?: undefined;
100
231
  sessionId?: undefined;
101
232
  output?: undefined;
233
+ evaluation?: undefined;
102
234
  };
103
235
  required: never[];
104
236
  };
@@ -119,6 +251,7 @@ export declare const TOOL_SCHEMAS: ({
119
251
  constraints?: undefined;
120
252
  sessionId?: undefined;
121
253
  output?: undefined;
254
+ evaluation?: undefined;
122
255
  };
123
256
  required: string[];
124
257
  };
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,cAAc,CAAC;AAM/D,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6IxB,CAAC;AAMF,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE3G,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAyGrD,CAAC"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,cAAc,CAAC;AAO/D,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA4OxB,CAAC;AAMF,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE3G,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CA0HrD,CAAC"}
package/dist/mcp/tools.js CHANGED
@@ -3,6 +3,7 @@
3
3
  * 6 tools: start, next, status, stop, list, replay.
4
4
  * Each handler receives SessionManager + parsed input, returns the output object.
5
5
  */
6
+ import { buildSelfEvaluation } from "../engine.js";
6
7
  // ═══════════════════════════════════════════════════════════════════════════
7
8
  // Tool schemas (MCP JSON Schema format)
8
9
  // ═══════════════════════════════════════════════════════════════════════════
@@ -44,7 +45,7 @@ export const TOOL_SCHEMAS = [
44
45
  },
45
46
  {
46
47
  name: "loopforge_next",
47
- description: "Submit the output from the current round and advance to the next. Returns the next-round prompt, or null with a stopReason when the loop ends.",
48
+ description: "Submit the output from the current round and advance to the next. Returns the next-round prompt, or null with a stopReason when the loop ends. The evaluation parameter provides structured self-assessment — prefer this over embedding a ---loopforge-eval block in the output text.",
48
49
  inputSchema: {
49
50
  type: "object",
50
51
  properties: {
@@ -54,10 +55,105 @@ export const TOOL_SCHEMAS = [
54
55
  },
55
56
  output: {
56
57
  type: "string",
57
- description: "The agent's full output from executing the current round's prompt.",
58
+ description: "Optional. The agent's full output from executing the current round's prompt. May be omitted if evaluation parameter is provided.",
59
+ },
60
+ evaluation: {
61
+ type: "object",
62
+ description: "Structured self-evaluation for this round. Required for the loop to continue. Preferred over embedding ---loopforge-eval blocks in output text.",
63
+ required: ["success", "output_summary", "should_continue", "constraint_violations"],
64
+ properties: {
65
+ success: {
66
+ type: "boolean",
67
+ description: "true ONLY if all hard constraints met AND the task goal achieved.",
68
+ },
69
+ output_summary: {
70
+ type: "string",
71
+ description: "Specific, actionable summary of what was DONE this round — not what was attempted.",
72
+ },
73
+ should_continue: {
74
+ type: "boolean",
75
+ description: "false ONLY when the ENTIRE task is complete. Partial progress = true.",
76
+ },
77
+ constraint_violations: {
78
+ type: "array",
79
+ items: { type: "string" },
80
+ description: "Constraints the agent actually violated this round. Be honest.",
81
+ },
82
+ discovered_constraints: {
83
+ type: "array",
84
+ items: { type: "string" },
85
+ description: "Optional. New constraints discovered this round.",
86
+ },
87
+ objective_refinement: {
88
+ type: "string",
89
+ description: "Optional. If this round deepened understanding of the task objective.",
90
+ },
91
+ emerged_subtasks: {
92
+ type: "array",
93
+ items: { type: "string" },
94
+ description: "Optional. Sub-problems that surfaced during execution.",
95
+ },
96
+ execution_evidence: {
97
+ type: "object",
98
+ description: "Optional. Structured record of what actually happened this round.",
99
+ properties: {
100
+ files_changed: {
101
+ type: "array",
102
+ items: { type: "string" },
103
+ description: "Files modified this round.",
104
+ },
105
+ test_results: {
106
+ type: "object",
107
+ description: "Test results from this round.",
108
+ properties: {
109
+ passed: { type: "integer", minimum: 0, description: "Number of passing tests." },
110
+ failed: { type: "integer", minimum: 0, description: "Number of failing tests." },
111
+ skipped: { type: "integer", minimum: 0, description: "Number of skipped tests." },
112
+ },
113
+ },
114
+ success_criteria_met: {
115
+ type: "array",
116
+ items: { type: "string" },
117
+ description: "Success criteria satisfied this round.",
118
+ },
119
+ success_criteria_remaining: {
120
+ type: "array",
121
+ items: { type: "string" },
122
+ description: "Success criteria still outstanding.",
123
+ },
124
+ progress_estimate: {
125
+ type: "number",
126
+ minimum: 0,
127
+ maximum: 1,
128
+ description: "Estimated progress toward task completion (0.0–1.0).",
129
+ },
130
+ },
131
+ },
132
+ retracted_constraints: {
133
+ type: "array",
134
+ items: { type: "string" },
135
+ description: "Optional. Constraints the agent now believes are wrong.",
136
+ },
137
+ revised_success_criteria: {
138
+ type: "array",
139
+ description: "Optional. Success criteria that need reformulation.",
140
+ items: {
141
+ type: "object",
142
+ properties: {
143
+ old: { type: "string", description: "Original criterion." },
144
+ new: { type: "string", description: "Revised criterion." },
145
+ },
146
+ },
147
+ },
148
+ wrong_assumptions: {
149
+ type: "array",
150
+ items: { type: "string" },
151
+ description: "Optional. Assumptions from earlier rounds that were incorrect.",
152
+ },
153
+ },
58
154
  },
59
155
  },
60
- required: ["sessionId", "output"],
156
+ required: ["sessionId", "evaluation"],
61
157
  },
62
158
  },
63
159
  {
@@ -161,11 +257,16 @@ export const TOOL_HANDLERS = {
161
257
  loopforge_next(mgr, input) {
162
258
  const sessionId = String(input.sessionId ?? "");
163
259
  const output = String(input.output ?? "");
260
+ const rawEval = input.evaluation;
164
261
  if (!sessionId)
165
262
  return { error: "sessionId is required" };
166
- if (!output.trim())
167
- return { error: "output is required and must be non-empty" };
168
- const result = mgr.advance(sessionId, output);
263
+ // Build SelfEvaluation from structured evaluation parameter
264
+ const preExtractedEval = rawEval ? buildSelfEvaluation(rawEval) : undefined;
265
+ // Require at least one of: evaluation parameter or output with embedded eval block
266
+ if (!preExtractedEval && !output.trim()) {
267
+ return { error: "Either evaluation parameter or output with ---loopforge-eval block is required" };
268
+ }
269
+ const result = mgr.advance(sessionId, output, preExtractedEval);
169
270
  // Clean up finished sessions
170
271
  if (result.prompt === null) {
171
272
  mgr.delete(sessionId);
@@ -179,6 +280,7 @@ export const TOOL_HANDLERS = {
179
280
  const session = mgr.get(sessionId);
180
281
  if (!session)
181
282
  return { error: `session not found: ${sessionId}` };
283
+ const metrics = session.engine.getMetrics();
182
284
  return {
183
285
  sessionId: session.sessionId,
184
286
  loopId: session.loopId,
@@ -187,6 +289,14 @@ export const TOOL_HANDLERS = {
187
289
  status: session.status,
188
290
  qualityTrajectory: session.qualityTrajectory,
189
291
  technique: session.engine.state?.last_technique ?? null,
292
+ metrics: {
293
+ vaultWriteErrors: metrics.vaultWriteErrors,
294
+ vaultWriteBytes: metrics.vaultWriteBytes,
295
+ feedbackBufferFlushes: metrics.feedbackBufferFlushes,
296
+ feedbackBufferMaxSize: metrics.feedbackBufferMaxSize,
297
+ hydrateCacheMisses: metrics.hydrateCacheMisses,
298
+ silentAnalysisErrors: metrics.silentAnalysisErrors,
299
+ },
190
300
  };
191
301
  },
192
302
  loopforge_stop(mgr, input) {
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /** LoopForge — Structured event logging (v1.7).
2
+ *
3
+ * JSON-line events to stderr for key lifecycle moments.
4
+ * Gated behind process.env.LOOPFORGE_LOG — silent by default.
5
+ *
6
+ * Events:
7
+ * round_complete — engine/runtime after feedback processed
8
+ * circuit_breaker — shouldBreak() returns true
9
+ * gate_contradicted — verification gate returns contradicted verdict
10
+ * strategy_rotated — adaptive technique routing rotates
11
+ * vault_write_error — any catch in vault write paths
12
+ * session_start / session_end — MCP session lifecycle
13
+ *
14
+ * Usage:
15
+ * LOOPFORGE_LOG=1 npm test
16
+ * LOOPFORGE_LOG=1 node my_script.js 2>&1 | grep '\[loopforge\]'
17
+ */
18
+ export interface LogEventData {
19
+ [key: string]: unknown;
20
+ }
21
+ /** Emit a structured JSON event to stderr when LOOPFORGE_LOG is set. */
22
+ export declare function logEvent(event: string, data?: LogEventData): void;
23
+ //# sourceMappingURL=observability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observability.d.ts","sourceRoot":"","sources":["../src/observability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,YAAY;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,wEAAwE;AACxE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,YAAiB,GAAG,IAAI,CAQrE"}
@@ -0,0 +1,29 @@
1
+ /** LoopForge — Structured event logging (v1.7).
2
+ *
3
+ * JSON-line events to stderr for key lifecycle moments.
4
+ * Gated behind process.env.LOOPFORGE_LOG — silent by default.
5
+ *
6
+ * Events:
7
+ * round_complete — engine/runtime after feedback processed
8
+ * circuit_breaker — shouldBreak() returns true
9
+ * gate_contradicted — verification gate returns contradicted verdict
10
+ * strategy_rotated — adaptive technique routing rotates
11
+ * vault_write_error — any catch in vault write paths
12
+ * session_start / session_end — MCP session lifecycle
13
+ *
14
+ * Usage:
15
+ * LOOPFORGE_LOG=1 npm test
16
+ * LOOPFORGE_LOG=1 node my_script.js 2>&1 | grep '\[loopforge\]'
17
+ */
18
+ /** Emit a structured JSON event to stderr when LOOPFORGE_LOG is set. */
19
+ export function logEvent(event, data = {}) {
20
+ if (!process.env.LOOPFORGE_LOG)
21
+ return;
22
+ const record = {
23
+ ts: new Date().toISOString(),
24
+ event,
25
+ ...data,
26
+ };
27
+ process.stderr.write(`[loopforge] ${JSON.stringify(record)}\n`);
28
+ }
29
+ //# sourceMappingURL=observability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observability.js","sourceRoot":"","sources":["../src/observability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH,wEAAwE;AACxE,MAAM,UAAU,QAAQ,CAAC,KAAa,EAAE,OAAqB,EAAE;IAC7D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa;QAAE,OAAO;IACvC,MAAM,MAAM,GAAG;QACb,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC5B,KAAK;QACL,GAAG,IAAI;KACR,CAAC;IACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAClE,CAAC"}
package/dist/policy.d.ts CHANGED
@@ -35,6 +35,20 @@ export interface BackendPolicy {
35
35
  vault_path: string;
36
36
  global_vault_path: string;
37
37
  }
38
+ export interface EvolutionPolicy {
39
+ /** P0: Max new constraints the agent can discover per round. */
40
+ max_discovered_constraints_per_round: number;
41
+ /** P0: Hard upper bound on total active constraints. */
42
+ max_active_constraints: number;
43
+ /** P1: Max versions of the loop objective to retain in history. */
44
+ max_objective_versions: number;
45
+ /** P4: Minimum progress delta to not be considered stalled. */
46
+ progress_stall_threshold: number;
47
+ /** P4: Consecutive rounds below stall threshold before warning. */
48
+ progress_stall_rounds: number;
49
+ /** P4: Max allowed difference between objective and subjective progress. */
50
+ progress_mismatch_threshold: number;
51
+ }
38
52
  export interface LoopPolicy {
39
53
  version: string;
40
54
  constraints: ConstraintsPolicy;
@@ -44,6 +58,7 @@ export interface LoopPolicy {
44
58
  engine: EnginePolicy;
45
59
  runtime: RuntimePolicy;
46
60
  backend: BackendPolicy;
61
+ evolution: EvolutionPolicy;
47
62
  }
48
63
  export declare const DEFAULT_POLICY: LoopPolicy;
49
64
  export declare function loadPolicy(path?: string): LoopPolicy;
@@ -1 +1 @@
1
- {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,EAAE,CAAC;IACb,EAAE,EAAE,MAAM,EAAE,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,0BAA0B,EAAE,MAAM,CAAC;IACnC,2BAA2B,EAAE,MAAM,CAAC;IACpC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,YAAY;IAC3B,uBAAuB,EAAE,MAAM,CAAC;IAChC,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IAEnB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,iBAAiB,CAAC;IAC/B,OAAO,EAAE,aAAa,CAAC;IACvB,kBAAkB,EAAE,uBAAuB,CAAC;IAC5C,SAAS,EAAE,eAAe,CAAC;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,aAAa,CAAC;IACvB,OAAO,EAAE,aAAa,CAAC;CACxB;AAMD,eAAO,MAAM,cAAc,EAAE,UAuD5B,CAAC;AAmCF,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAmBpD;AAQD,wBAAgB,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAKnD;AAED,wBAAgB,WAAW,IAAI,IAAI,CAElC"}
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,EAAE,CAAC;IACb,EAAE,EAAE,MAAM,EAAE,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,0BAA0B,EAAE,MAAM,CAAC;IACnC,2BAA2B,EAAE,MAAM,CAAC;IACpC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,YAAY;IAC3B,uBAAuB,EAAE,MAAM,CAAC;IAChC,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IAEnB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,gEAAgE;IAChE,oCAAoC,EAAE,MAAM,CAAC;IAC7C,wDAAwD;IACxD,sBAAsB,EAAE,MAAM,CAAC;IAC/B,mEAAmE;IACnE,sBAAsB,EAAE,MAAM,CAAC;IAC/B,+DAA+D;IAC/D,wBAAwB,EAAE,MAAM,CAAC;IACjC,mEAAmE;IACnE,qBAAqB,EAAE,MAAM,CAAC;IAC9B,4EAA4E;IAC5E,2BAA2B,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,iBAAiB,CAAC;IAC/B,OAAO,EAAE,aAAa,CAAC;IACvB,kBAAkB,EAAE,uBAAuB,CAAC;IAC5C,SAAS,EAAE,eAAe,CAAC;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,aAAa,CAAC;IACvB,OAAO,EAAE,aAAa,CAAC;IACvB,SAAS,EAAE,eAAe,CAAC;CAC5B;AAMD,eAAO,MAAM,cAAc,EAAE,UA+D5B,CAAC;AAmCF,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAmBpD;AAQD,wBAAgB,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAKnD;AAED,wBAAgB,WAAW,IAAI,IAAI,CAElC"}
package/dist/policy.js CHANGED
@@ -62,6 +62,14 @@ export const DEFAULT_POLICY = {
62
62
  vault_path: ".promptcraft/prompt_vault.json",
63
63
  global_vault_path: "~/.promptcraft/global_vault.json",
64
64
  },
65
+ evolution: {
66
+ max_discovered_constraints_per_round: 5,
67
+ max_active_constraints: 15,
68
+ max_objective_versions: 10,
69
+ progress_stall_threshold: 0.05,
70
+ progress_stall_rounds: 2,
71
+ progress_mismatch_threshold: 0.3,
72
+ },
65
73
  };
66
74
  // ═══════════════════════════════════════════════════════════════════════════
67
75
  // Deep merge — custom values override defaults, unset fields retain defaults
@@ -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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"}