@hmbown/kytchen-reasoning 0.1.1 → 0.1.3
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/dist/coherence.d.ts +58 -0
- package/dist/coherence.d.ts.map +1 -1
- package/dist/coherence.js +112 -0
- package/dist/coherence.js.map +1 -1
- package/package.json +3 -2
- package/dist/autocode.test.d.ts +0 -2
- package/dist/autocode.test.d.ts.map +0 -1
- package/dist/autocode.test.js +0 -149
- package/dist/autocode.test.js.map +0 -1
- package/dist/coherence.test.d.ts +0 -2
- package/dist/coherence.test.d.ts.map +0 -1
- package/dist/coherence.test.js +0 -14
- package/dist/coherence.test.js.map +0 -1
- package/dist/recursive.test.d.ts +0 -2
- package/dist/recursive.test.d.ts.map +0 -1
- package/dist/recursive.test.js +0 -94
- package/dist/recursive.test.js.map +0 -1
- package/dist/router.golden.test.d.ts +0 -2
- package/dist/router.golden.test.d.ts.map +0 -1
- package/dist/router.golden.test.js +0 -84
- package/dist/router.golden.test.js.map +0 -1
- package/dist/router.test.d.ts +0 -2
- package/dist/router.test.d.ts.map +0 -1
- package/dist/router.test.js +0 -86
- package/dist/router.test.js.map +0 -1
package/dist/coherence.d.ts
CHANGED
|
@@ -94,6 +94,64 @@ export declare class CompactionOrchestrator {
|
|
|
94
94
|
*/
|
|
95
95
|
private deterministicTrim;
|
|
96
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* Strategy for pruning/summarizing conversation context to fit within
|
|
99
|
+
* model context windows. Inspired by qwen-code's ChatCompressionService.
|
|
100
|
+
*
|
|
101
|
+
* Triggers at a configurable threshold (default 70%) of context window.
|
|
102
|
+
* Preserves the most recent portion verbatim and summarizes older turns.
|
|
103
|
+
*/
|
|
104
|
+
export interface ContextSummarizationConfig {
|
|
105
|
+
/** Ratio of context window at which to trigger summarization (0-1). Default: 0.7. */
|
|
106
|
+
triggerRatio: number;
|
|
107
|
+
/** Ratio of recent messages to preserve verbatim (0-1). Default: 0.3. */
|
|
108
|
+
preserveRecentRatio: number;
|
|
109
|
+
/** Maximum summary length in tokens (approximate). Default: 2000. */
|
|
110
|
+
maxSummaryTokens: number;
|
|
111
|
+
/** If true, fall back to deterministic trim when LLM summarization fails. */
|
|
112
|
+
fallbackToDeterministic: boolean;
|
|
113
|
+
}
|
|
114
|
+
export declare const DEFAULT_SUMMARIZATION_CONFIG: ContextSummarizationConfig;
|
|
115
|
+
export interface ContextChunk {
|
|
116
|
+
role: "system" | "user" | "assistant" | "tool";
|
|
117
|
+
content: string;
|
|
118
|
+
turnId?: string;
|
|
119
|
+
/** Approximate token count. */
|
|
120
|
+
tokenEstimate: number;
|
|
121
|
+
}
|
|
122
|
+
export interface SummarizationResult {
|
|
123
|
+
/** The summarized older portion. */
|
|
124
|
+
summary: string;
|
|
125
|
+
/** The preserved recent messages (verbatim). */
|
|
126
|
+
preserved: ContextChunk[];
|
|
127
|
+
/** Total approximate tokens after summarization. */
|
|
128
|
+
estimatedTokens: number;
|
|
129
|
+
/** Whether LLM-assisted summarization was used (vs deterministic). */
|
|
130
|
+
usedLlm: boolean;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Context summarization engine.
|
|
134
|
+
* Call `shouldSummarize` to check, then `summarize` to execute.
|
|
135
|
+
*/
|
|
136
|
+
export declare class ContextSummarizer {
|
|
137
|
+
private readonly llmSummarize?;
|
|
138
|
+
private readonly config;
|
|
139
|
+
constructor(config?: Partial<ContextSummarizationConfig>, llmSummarize?: SummarizeCallback | undefined);
|
|
140
|
+
/** Check if summarization should be triggered given current token usage. */
|
|
141
|
+
shouldSummarize(usedTokens: number, maxTokens: number): boolean;
|
|
142
|
+
/**
|
|
143
|
+
* Summarize conversation context.
|
|
144
|
+
* Splits messages into "old" (to summarize) and "recent" (to preserve).
|
|
145
|
+
* Uses LLM if available, falls back to deterministic extraction.
|
|
146
|
+
*/
|
|
147
|
+
summarize(messages: ContextChunk[], maxTokens: number): Promise<SummarizationResult>;
|
|
148
|
+
/**
|
|
149
|
+
* Deterministic summarization: extract key sentences from each message.
|
|
150
|
+
* Takes the first sentence of each message, plus any lines containing
|
|
151
|
+
* code blocks or tool calls.
|
|
152
|
+
*/
|
|
153
|
+
private deterministicSummarize;
|
|
154
|
+
}
|
|
97
155
|
export declare class CapacityController {
|
|
98
156
|
private readonly coherenceConfig;
|
|
99
157
|
private readonly workingSet;
|
package/dist/coherence.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coherence.d.ts","sourceRoot":"","sources":["../src/coherence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAMnE,MAAM,WAAW,cAAc;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAQ1D;AAMD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,8CAA8C;IAC9C,mBAAmB,EAAE,MAAM,CAAC;IAC5B,2CAA2C;IAC3C,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAmEvD,CAAC;AAEF,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAE3D;AAMD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,mBAAmB,CAAC;IAChC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,iDAAiD;IACjD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4CAA4C;IAC5C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oCAAoC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,iBAAiB,GAAG,IAAI,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,CAAC;AAEzE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,cAAc,CA6ChB;AAMD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsC;IAC9D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,UAAU,SAAK;IAI3B,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAevC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI7B,cAAc,IAAI,MAAM,EAAE;IAI1B,UAAU,IAAI,eAAe,EAAE;IAI/B,KAAK,IAAI,IAAI;CAGd;AAMD;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAC9B,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EAAE,KACpB,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,8BAA8B;IAC9B,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAV,SAAS,CAAC,EAAE,iBAAiB,YAAA;IAGhD;;;OAGG;IACG,OAAO,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA8ChE;;;OAGG;IACG,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAezE;;;OAGG;IACH,OAAO,CAAC,iBAAiB;CAwB1B;AAMD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IACnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;gBAEhC,MAAM,EAAE;QAClB,SAAS,EAAE,eAAe,CAAC;QAC3B,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,iBAAiB,CAAC;QAC9B,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC7B;IAOD,wCAAwC;IACxC,QAAQ,CACN,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,cAAc;IAUjB,iEAAiE;IACjE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAIvC,0CAA0C;IAC1C,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIzB,kCAAkC;IAClC,cAAc,IAAI,MAAM,EAAE;IAI1B,yBAAyB;IACzB,eAAe,IAAI,YAAY;IAI/B,0BAA0B;IACpB,OAAO,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAUhE,oCAAoC;IAC9B,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAG1E"}
|
|
1
|
+
{"version":3,"file":"coherence.d.ts","sourceRoot":"","sources":["../src/coherence.ts"],"names":[],"mappings":"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"}
|
package/dist/coherence.js
CHANGED
|
@@ -237,6 +237,118 @@ export class CompactionOrchestrator {
|
|
|
237
237
|
return `[Compacted from ${lines.length} lines to ${result.length}]\n${result.join("\n")}`;
|
|
238
238
|
}
|
|
239
239
|
}
|
|
240
|
+
export const DEFAULT_SUMMARIZATION_CONFIG = {
|
|
241
|
+
triggerRatio: 0.7,
|
|
242
|
+
preserveRecentRatio: 0.3,
|
|
243
|
+
maxSummaryTokens: 2000,
|
|
244
|
+
fallbackToDeterministic: true,
|
|
245
|
+
};
|
|
246
|
+
/**
|
|
247
|
+
* Estimates token count from text (rough: 1 token ~= 4 chars).
|
|
248
|
+
*/
|
|
249
|
+
function estimateTokens(text) {
|
|
250
|
+
return Math.ceil(text.length / 4);
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Context summarization engine.
|
|
254
|
+
* Call `shouldSummarize` to check, then `summarize` to execute.
|
|
255
|
+
*/
|
|
256
|
+
export class ContextSummarizer {
|
|
257
|
+
llmSummarize;
|
|
258
|
+
config;
|
|
259
|
+
constructor(config = {}, llmSummarize) {
|
|
260
|
+
this.llmSummarize = llmSummarize;
|
|
261
|
+
this.config = { ...DEFAULT_SUMMARIZATION_CONFIG, ...config };
|
|
262
|
+
}
|
|
263
|
+
/** Check if summarization should be triggered given current token usage. */
|
|
264
|
+
shouldSummarize(usedTokens, maxTokens) {
|
|
265
|
+
if (maxTokens <= 0)
|
|
266
|
+
return false;
|
|
267
|
+
return usedTokens / maxTokens >= this.config.triggerRatio;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Summarize conversation context.
|
|
271
|
+
* Splits messages into "old" (to summarize) and "recent" (to preserve).
|
|
272
|
+
* Uses LLM if available, falls back to deterministic extraction.
|
|
273
|
+
*/
|
|
274
|
+
async summarize(messages, maxTokens) {
|
|
275
|
+
const totalTokens = messages.reduce((sum, m) => sum + m.tokenEstimate, 0);
|
|
276
|
+
// Determine split point: preserve the most recent N% of messages
|
|
277
|
+
const preserveTokenBudget = Math.floor(maxTokens * this.config.preserveRecentRatio);
|
|
278
|
+
let preserveFromIndex = messages.length;
|
|
279
|
+
let preserveTokens = 0;
|
|
280
|
+
for (let i = messages.length - 1; i >= 0; i--) {
|
|
281
|
+
const msg = messages[i];
|
|
282
|
+
if (preserveTokens + msg.tokenEstimate > preserveTokenBudget)
|
|
283
|
+
break;
|
|
284
|
+
preserveTokens += msg.tokenEstimate;
|
|
285
|
+
preserveFromIndex = i;
|
|
286
|
+
}
|
|
287
|
+
const oldMessages = messages.slice(0, preserveFromIndex);
|
|
288
|
+
const recentMessages = messages.slice(preserveFromIndex);
|
|
289
|
+
if (oldMessages.length === 0) {
|
|
290
|
+
return {
|
|
291
|
+
summary: "",
|
|
292
|
+
preserved: recentMessages,
|
|
293
|
+
estimatedTokens: totalTokens,
|
|
294
|
+
usedLlm: false,
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
const oldContent = oldMessages
|
|
298
|
+
.map((m) => `[${m.role}]: ${m.content}`)
|
|
299
|
+
.join("\n\n");
|
|
300
|
+
let summary;
|
|
301
|
+
let usedLlm = false;
|
|
302
|
+
if (this.llmSummarize) {
|
|
303
|
+
try {
|
|
304
|
+
summary = await this.llmSummarize(oldContent, []);
|
|
305
|
+
usedLlm = true;
|
|
306
|
+
}
|
|
307
|
+
catch {
|
|
308
|
+
if (this.config.fallbackToDeterministic) {
|
|
309
|
+
summary = this.deterministicSummarize(oldMessages);
|
|
310
|
+
}
|
|
311
|
+
else {
|
|
312
|
+
throw new Error("LLM summarization failed and fallback is disabled");
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
else {
|
|
317
|
+
summary = this.deterministicSummarize(oldMessages);
|
|
318
|
+
}
|
|
319
|
+
// Truncate summary if it exceeds budget
|
|
320
|
+
const summaryTokens = estimateTokens(summary);
|
|
321
|
+
if (summaryTokens > this.config.maxSummaryTokens) {
|
|
322
|
+
const charLimit = this.config.maxSummaryTokens * 4;
|
|
323
|
+
summary = summary.slice(0, charLimit) + "\n[truncated]";
|
|
324
|
+
}
|
|
325
|
+
return {
|
|
326
|
+
summary,
|
|
327
|
+
preserved: recentMessages,
|
|
328
|
+
estimatedTokens: estimateTokens(summary) + preserveTokens,
|
|
329
|
+
usedLlm,
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Deterministic summarization: extract key sentences from each message.
|
|
334
|
+
* Takes the first sentence of each message, plus any lines containing
|
|
335
|
+
* code blocks or tool calls.
|
|
336
|
+
*/
|
|
337
|
+
deterministicSummarize(messages) {
|
|
338
|
+
const sections = [`[Context summary of ${messages.length} messages]`];
|
|
339
|
+
for (const msg of messages) {
|
|
340
|
+
const lines = msg.content.split("\n");
|
|
341
|
+
const firstLine = lines[0]?.trim() ?? "";
|
|
342
|
+
const codeLines = lines.filter((l) => l.startsWith("```") || l.startsWith(" "));
|
|
343
|
+
let excerpt = `[${msg.role}]: ${firstLine}`;
|
|
344
|
+
if (codeLines.length > 0) {
|
|
345
|
+
excerpt += ` (+${codeLines.length} code lines)`;
|
|
346
|
+
}
|
|
347
|
+
sections.push(excerpt);
|
|
348
|
+
}
|
|
349
|
+
return sections.join("\n");
|
|
350
|
+
}
|
|
351
|
+
}
|
|
240
352
|
// ---------------------------------------------------------------------------
|
|
241
353
|
// Capacity controller (high-level orchestrator)
|
|
242
354
|
// ---------------------------------------------------------------------------
|
package/dist/coherence.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coherence.js","sourceRoot":"","sources":["../src/coherence.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"coherence.js","sourceRoot":"","sources":["../src/coherence.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hmbown/kytchen-reasoning",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "Reasoning engines for Kytchen: auto-router, dialectical critique, recursive decomposition, autocode, and coherence control.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -13,11 +13,12 @@
|
|
|
13
13
|
},
|
|
14
14
|
"files": [
|
|
15
15
|
"dist",
|
|
16
|
+
"!dist/**/*.test.*",
|
|
16
17
|
"LICENSE",
|
|
17
18
|
"README.md"
|
|
18
19
|
],
|
|
19
20
|
"dependencies": {
|
|
20
|
-
"@hmbown/kytchen-protocol": "0.1.
|
|
21
|
+
"@hmbown/kytchen-protocol": "0.1.3"
|
|
21
22
|
},
|
|
22
23
|
"keywords": [
|
|
23
24
|
"kytchen",
|
package/dist/autocode.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"autocode.test.d.ts","sourceRoot":"","sources":["../src/autocode.test.ts"],"names":[],"mappings":""}
|
package/dist/autocode.test.js
DELETED
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
import test from "node:test";
|
|
2
|
-
import assert from "node:assert/strict";
|
|
3
|
-
import { AutocodeEngine } from "./autocode.js";
|
|
4
|
-
test("autocode uses defensive fallback when coach response is not valid JSON", async () => {
|
|
5
|
-
const engine = new AutocodeEngine({
|
|
6
|
-
maxRounds: 1,
|
|
7
|
-
qualityThreshold: 0.8,
|
|
8
|
-
generate: async (systemPrompt) => {
|
|
9
|
-
if (systemPrompt.includes("COACH")) {
|
|
10
|
-
return "not-json";
|
|
11
|
-
}
|
|
12
|
-
return "function add(a, b) { return a + b; }";
|
|
13
|
-
},
|
|
14
|
-
});
|
|
15
|
-
const result = await engine.run({
|
|
16
|
-
goal: "Implement addition helper.",
|
|
17
|
-
context: "",
|
|
18
|
-
maxTurns: 1,
|
|
19
|
-
});
|
|
20
|
-
assert.equal(result.accepted, false);
|
|
21
|
-
assert.equal(result.iterations.length, 1);
|
|
22
|
-
assert.equal(result.artifact.accepted, false);
|
|
23
|
-
assert.equal(result.artifact.rounds.length, 1);
|
|
24
|
-
assert.equal(result.artifact.rounds[0]?.review.accept, false);
|
|
25
|
-
assert.equal(result.artifact.rounds[0]?.review.confidence, 0);
|
|
26
|
-
});
|
|
27
|
-
test("autocode rejects malformed coach JSON fields instead of coercing accept/score", async () => {
|
|
28
|
-
const engine = new AutocodeEngine({
|
|
29
|
-
maxIterations: 1,
|
|
30
|
-
acceptanceThreshold: 0.8,
|
|
31
|
-
generate: async (systemPrompt) => {
|
|
32
|
-
if (systemPrompt.includes("COACH")) {
|
|
33
|
-
return JSON.stringify({
|
|
34
|
-
confidence: "NaN",
|
|
35
|
-
accept: "true",
|
|
36
|
-
issues: [],
|
|
37
|
-
refinementNotes: "bad schema",
|
|
38
|
-
rationale: "bad schema",
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
return "export const value = 42;";
|
|
42
|
-
},
|
|
43
|
-
});
|
|
44
|
-
const result = await engine.run({
|
|
45
|
-
task: "Implement value export.",
|
|
46
|
-
maxIterations: 1,
|
|
47
|
-
});
|
|
48
|
-
assert.equal(result.accepted, false);
|
|
49
|
-
assert.equal(result.confidence, 0);
|
|
50
|
-
assert.equal(result.artifact.rounds[0]?.review.accept, false);
|
|
51
|
-
assert.equal(result.artifact.rounds[0]?.review.confidence, 0);
|
|
52
|
-
});
|
|
53
|
-
test("autocode accepts when modern config names meet acceptance threshold", async () => {
|
|
54
|
-
const engine = new AutocodeEngine({
|
|
55
|
-
maxIterations: 2,
|
|
56
|
-
acceptanceThreshold: 0.8,
|
|
57
|
-
generate: async (systemPrompt) => {
|
|
58
|
-
if (systemPrompt.includes("COACH")) {
|
|
59
|
-
return JSON.stringify({
|
|
60
|
-
confidence: 0.92,
|
|
61
|
-
accept: true,
|
|
62
|
-
issues: [],
|
|
63
|
-
refinementNotes: "Looks good.",
|
|
64
|
-
rationale: "Correct, safe, and complete.",
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
return "export function multiply(a: number, b: number) { return a * b; }";
|
|
68
|
-
},
|
|
69
|
-
});
|
|
70
|
-
const result = await engine.run({
|
|
71
|
-
task: "Implement a multiply helper.",
|
|
72
|
-
context: "TypeScript only.",
|
|
73
|
-
existingCode: "export const version = '1.0.0';",
|
|
74
|
-
constraints: ["Keep API stable", "No external dependencies"],
|
|
75
|
-
maxIterations: 2,
|
|
76
|
-
});
|
|
77
|
-
assert.equal(result.mode, "autocode");
|
|
78
|
-
assert.equal(result.accepted, true);
|
|
79
|
-
assert.equal(result.proposal.includes("multiply"), true);
|
|
80
|
-
assert.equal(result.confidence >= 0.8, true);
|
|
81
|
-
assert.equal(result.artifact.accepted, true);
|
|
82
|
-
});
|
|
83
|
-
test("autocode preserves legacy input aliases and artifact compatibility", async () => {
|
|
84
|
-
const engine = new AutocodeEngine({
|
|
85
|
-
maxRounds: 1,
|
|
86
|
-
qualityThreshold: 0.8,
|
|
87
|
-
generate: async (systemPrompt) => {
|
|
88
|
-
if (systemPrompt.includes("COACH")) {
|
|
89
|
-
return JSON.stringify({
|
|
90
|
-
confidence: 0.95,
|
|
91
|
-
accept: true,
|
|
92
|
-
issues: [],
|
|
93
|
-
refinementNotes: "ship it",
|
|
94
|
-
rationale: "Complete implementation.",
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
return "export function legacyPath() { return true; }";
|
|
98
|
-
},
|
|
99
|
-
});
|
|
100
|
-
const result = await engine.run({
|
|
101
|
-
goal: "Implement legacy path helper.",
|
|
102
|
-
context: "",
|
|
103
|
-
maxTurns: 1,
|
|
104
|
-
});
|
|
105
|
-
assert.equal(result.accepted, true);
|
|
106
|
-
assert.equal(result.artifact.draft.includes("legacyPath"), true);
|
|
107
|
-
assert.equal(result.iterations.length, 1);
|
|
108
|
-
});
|
|
109
|
-
test("autocode exposes pause/resume helpers via snapshots", async () => {
|
|
110
|
-
let coachRound = 0;
|
|
111
|
-
const engine = new AutocodeEngine({
|
|
112
|
-
maxIterations: 2,
|
|
113
|
-
acceptanceThreshold: 0.9,
|
|
114
|
-
generate: async (systemPrompt) => {
|
|
115
|
-
if (systemPrompt.includes("COACH")) {
|
|
116
|
-
coachRound += 1;
|
|
117
|
-
if (coachRound === 1) {
|
|
118
|
-
return JSON.stringify({
|
|
119
|
-
confidence: 0.6,
|
|
120
|
-
accept: false,
|
|
121
|
-
issues: ["Add tests"],
|
|
122
|
-
refinementNotes: "Improve validation coverage.",
|
|
123
|
-
rationale: "Coverage is insufficient for edge cases.",
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
return JSON.stringify({
|
|
127
|
-
confidence: 0.95,
|
|
128
|
-
accept: true,
|
|
129
|
-
issues: [],
|
|
130
|
-
refinementNotes: "Ready.",
|
|
131
|
-
rationale: "All criteria met.",
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
return coachRound === 0
|
|
135
|
-
? "export function draftOne() { return 1; }"
|
|
136
|
-
: "export function draftTwo() { return 2; }";
|
|
137
|
-
},
|
|
138
|
-
});
|
|
139
|
-
const snapshot = engine.createSnapshot({
|
|
140
|
-
task: "Iterate until accepted.",
|
|
141
|
-
maxIterations: 2,
|
|
142
|
-
});
|
|
143
|
-
const paused = engine.pause(snapshot);
|
|
144
|
-
const resumed = await engine.resume(paused);
|
|
145
|
-
assert.equal(resumed.accepted, true);
|
|
146
|
-
assert.equal(resumed.iterations.length, 2);
|
|
147
|
-
assert.equal(resumed.snapshot.state, "done");
|
|
148
|
-
});
|
|
149
|
-
//# sourceMappingURL=autocode.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"autocode.test.js","sourceRoot":"","sources":["../src/autocode.test.ts"],"names":[],"mappings":"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"}
|
package/dist/coherence.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"coherence.test.d.ts","sourceRoot":"","sources":["../src/coherence.test.ts"],"names":[],"mappings":""}
|
package/dist/coherence.test.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import assert from "node:assert/strict";
|
|
2
|
-
import test from "node:test";
|
|
3
|
-
import { getModelProfile, MODEL_PROFILES } from "./coherence.js";
|
|
4
|
-
test("MODEL_PROFILES includes gpt-5.3-codex and related codex entries", () => {
|
|
5
|
-
assert.ok(MODEL_PROFILES["gpt-5.3-codex"]);
|
|
6
|
-
assert.ok(MODEL_PROFILES["gpt-5.3-codex-spark"]);
|
|
7
|
-
assert.ok(MODEL_PROFILES["gpt-5.2-codex"]);
|
|
8
|
-
});
|
|
9
|
-
test("getModelProfile falls back to default profile for unknown models", () => {
|
|
10
|
-
const fallback = getModelProfile("unknown-model-name");
|
|
11
|
-
assert.equal(fallback.name, "default");
|
|
12
|
-
assert.equal(fallback.maxContextTokens, MODEL_PROFILES.default.maxContextTokens);
|
|
13
|
-
});
|
|
14
|
-
//# sourceMappingURL=coherence.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"coherence.test.js","sourceRoot":"","sources":["../src/coherence.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEjE,IAAI,CAAC,iEAAiE,EAAE,GAAG,EAAE;IAC3E,MAAM,CAAC,EAAE,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;IAC3C,MAAM,CAAC,EAAE,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC,CAAC;IACjD,MAAM,CAAC,EAAE,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,kEAAkE,EAAE,GAAG,EAAE;IAC5E,MAAM,QAAQ,GAAG,eAAe,CAAC,oBAAoB,CAAC,CAAC;IACvD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACvC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,EAAE,cAAc,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AACnF,CAAC,CAAC,CAAC"}
|
package/dist/recursive.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"recursive.test.d.ts","sourceRoot":"","sources":["../src/recursive.test.ts"],"names":[],"mappings":""}
|
package/dist/recursive.test.js
DELETED
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
import assert from "node:assert/strict";
|
|
2
|
-
import test from "node:test";
|
|
3
|
-
import { RecursiveOrchestrator, _resetIdCounter, } from "./recursive.js";
|
|
4
|
-
test("recursive orchestrator emits deterministic task ids and lifecycle events", async () => {
|
|
5
|
-
_resetIdCounter();
|
|
6
|
-
const lifecycle = [];
|
|
7
|
-
const orchestrator = new RecursiveOrchestrator({
|
|
8
|
-
maxDepth: 3,
|
|
9
|
-
maxIterations: 8,
|
|
10
|
-
maxBreadth: 2,
|
|
11
|
-
});
|
|
12
|
-
const trace = await orchestrator.run("root", async (task) => {
|
|
13
|
-
if (task.depth === 0) {
|
|
14
|
-
return {
|
|
15
|
-
summary: "root summary",
|
|
16
|
-
evidence: [],
|
|
17
|
-
subQueries: ["child A", "child B"],
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
return {
|
|
21
|
-
summary: `leaf ${task.prompt}`,
|
|
22
|
-
evidence: [],
|
|
23
|
-
};
|
|
24
|
-
}, {
|
|
25
|
-
onLifecycleEvent: (event) => {
|
|
26
|
-
lifecycle.push(event);
|
|
27
|
-
},
|
|
28
|
-
});
|
|
29
|
-
const taskIds = [...trace.taskMap.keys()];
|
|
30
|
-
assert.deepEqual(taskIds, ["rq-0001", "rq-0002", "rq-0003"]);
|
|
31
|
-
assert.equal(trace.rootOutcome.childOutcomes.length, 2);
|
|
32
|
-
assert.equal(lifecycle.some((event) => event.type === "task.spawned"), true);
|
|
33
|
-
assert.equal(lifecycle.some((event) => event.type === "task.merged"), true);
|
|
34
|
-
});
|
|
35
|
-
test("recursive orchestrator enforces wall-clock budget across children", async () => {
|
|
36
|
-
_resetIdCounter();
|
|
37
|
-
let nowMs = 0;
|
|
38
|
-
const orchestrator = new RecursiveOrchestrator({
|
|
39
|
-
maxDepth: 3,
|
|
40
|
-
maxIterations: 8,
|
|
41
|
-
maxBreadth: 3,
|
|
42
|
-
});
|
|
43
|
-
const trace = await orchestrator.run("root", async (task) => {
|
|
44
|
-
if (task.depth === 0) {
|
|
45
|
-
nowMs += 250;
|
|
46
|
-
return {
|
|
47
|
-
summary: "root summary",
|
|
48
|
-
evidence: [],
|
|
49
|
-
subQueries: ["child"],
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
return {
|
|
53
|
-
summary: "child summary",
|
|
54
|
-
evidence: [],
|
|
55
|
-
};
|
|
56
|
-
}, {
|
|
57
|
-
maxWallTimeMs: 100,
|
|
58
|
-
now: () => nowMs,
|
|
59
|
-
});
|
|
60
|
-
assert.equal(trace.rootOutcome.finalized, false);
|
|
61
|
-
assert.equal(trace.rootOutcome.finalizationStatus, "time_budget_exceeded");
|
|
62
|
-
});
|
|
63
|
-
test("recursive orchestrator surfaces interruption as explicit finalization state", async () => {
|
|
64
|
-
_resetIdCounter();
|
|
65
|
-
const controller = new AbortController();
|
|
66
|
-
const lifecycle = [];
|
|
67
|
-
const orchestrator = new RecursiveOrchestrator({
|
|
68
|
-
maxDepth: 3,
|
|
69
|
-
maxIterations: 8,
|
|
70
|
-
maxBreadth: 3,
|
|
71
|
-
});
|
|
72
|
-
const trace = await orchestrator.run("root", async (task) => {
|
|
73
|
-
if (task.depth === 0) {
|
|
74
|
-
controller.abort();
|
|
75
|
-
return {
|
|
76
|
-
summary: "root summary",
|
|
77
|
-
evidence: [],
|
|
78
|
-
subQueries: ["child"],
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
return {
|
|
82
|
-
summary: "child summary",
|
|
83
|
-
evidence: [],
|
|
84
|
-
};
|
|
85
|
-
}, {
|
|
86
|
-
signal: controller.signal,
|
|
87
|
-
onLifecycleEvent: (event) => {
|
|
88
|
-
lifecycle.push(event);
|
|
89
|
-
},
|
|
90
|
-
});
|
|
91
|
-
assert.equal(trace.rootOutcome.finalizationStatus, "interrupted");
|
|
92
|
-
assert.equal(lifecycle.some((event) => event.type === "task.interrupted"), true);
|
|
93
|
-
});
|
|
94
|
-
//# sourceMappingURL=recursive.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"recursive.test.js","sourceRoot":"","sources":["../src/recursive.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"router.golden.test.d.ts","sourceRoot":"","sources":["../src/router.golden.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import assert from "node:assert/strict";
|
|
2
|
-
import { access, readFile, writeFile } from "node:fs/promises";
|
|
3
|
-
import test from "node:test";
|
|
4
|
-
import { fileURLToPath } from "node:url";
|
|
5
|
-
import { ReasoningRouter } from "./router.js";
|
|
6
|
-
const UPDATE_ENV_VAR = "UPDATE_ROUTER_GOLDEN";
|
|
7
|
-
const UPDATE_REQUESTED = process.env[UPDATE_ENV_VAR] === "1";
|
|
8
|
-
const FIXTURE_CANDIDATES = [
|
|
9
|
-
new URL("./router.golden.fixtures.json", import.meta.url),
|
|
10
|
-
new URL("../src/router.golden.fixtures.json", import.meta.url),
|
|
11
|
-
];
|
|
12
|
-
async function resolveFixturePath() {
|
|
13
|
-
for (const candidate of FIXTURE_CANDIDATES) {
|
|
14
|
-
const candidatePath = fileURLToPath(candidate);
|
|
15
|
-
try {
|
|
16
|
-
await access(candidatePath);
|
|
17
|
-
return candidatePath;
|
|
18
|
-
}
|
|
19
|
-
catch {
|
|
20
|
-
// Continue searching.
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
throw new Error(`Unable to find router golden fixtures. Checked: ${FIXTURE_CANDIDATES.map((candidate) => fileURLToPath(candidate)).join(", ")}`);
|
|
24
|
-
}
|
|
25
|
-
async function loadFixtures() {
|
|
26
|
-
const path = await resolveFixturePath();
|
|
27
|
-
const raw = await readFile(path, "utf8");
|
|
28
|
-
return {
|
|
29
|
-
path,
|
|
30
|
-
fixtures: JSON.parse(raw),
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
function normalizeDecision(decision) {
|
|
34
|
-
return {
|
|
35
|
-
selectedMode: decision.selectedMode,
|
|
36
|
-
pipeline: [...decision.pipeline],
|
|
37
|
-
confidence: decision.confidence,
|
|
38
|
-
scores: { ...decision.scores },
|
|
39
|
-
signals: decision.signals.map((signal) => ({
|
|
40
|
-
name: signal.name,
|
|
41
|
-
kind: signal.kind,
|
|
42
|
-
matched: signal.matched,
|
|
43
|
-
...(signal.detail ? { detail: signal.detail } : {}),
|
|
44
|
-
score: signal.score,
|
|
45
|
-
weight: signal.weight,
|
|
46
|
-
weightedScore: signal.weightedScore,
|
|
47
|
-
evidence: [...signal.evidence],
|
|
48
|
-
})),
|
|
49
|
-
rationale: decision.rationale,
|
|
50
|
-
escalationAllowed: decision.escalationAllowed,
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
test("router acceptance matrix routes prompts to expected mode and pipeline", async () => {
|
|
54
|
-
const { fixtures } = await loadFixtures();
|
|
55
|
-
const router = new ReasoningRouter();
|
|
56
|
-
for (const fixture of fixtures.cases) {
|
|
57
|
-
const decision = router.route(fixture.input);
|
|
58
|
-
assert.equal(decision.selectedMode, fixture.acceptance.selectedMode, `Case "${fixture.id}" selectedMode mismatch`);
|
|
59
|
-
assert.deepEqual(decision.pipeline, fixture.acceptance.pipeline, `Case "${fixture.id}" pipeline mismatch`);
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
test("router golden fixtures remain deterministic", async () => {
|
|
63
|
-
const { path, fixtures } = await loadFixtures();
|
|
64
|
-
const router = new ReasoningRouter();
|
|
65
|
-
const refreshedCases = fixtures.cases.map((fixture) => ({
|
|
66
|
-
...fixture,
|
|
67
|
-
golden: normalizeDecision(router.route(fixture.input)),
|
|
68
|
-
}));
|
|
69
|
-
if (UPDATE_REQUESTED) {
|
|
70
|
-
const updated = {
|
|
71
|
-
...fixtures,
|
|
72
|
-
cases: refreshedCases,
|
|
73
|
-
};
|
|
74
|
-
await writeFile(path, `${JSON.stringify(updated, null, 2)}\n`, "utf8");
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
const missingGolden = fixtures.cases.filter((fixture) => fixture.golden == null);
|
|
78
|
-
assert.equal(missingGolden.length, 0, `Missing golden snapshots for: ${missingGolden.map((fixture) => fixture.id).join(", ")}. Run ${fixtures.updateWorkflow.command}`);
|
|
79
|
-
for (const fixture of fixtures.cases) {
|
|
80
|
-
const actual = normalizeDecision(router.route(fixture.input));
|
|
81
|
-
assert.deepEqual(actual, fixture.golden, `Golden mismatch for "${fixture.id}". Refresh with ${fixtures.updateWorkflow.command}`);
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
|
-
//# sourceMappingURL=router.golden.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"router.golden.test.js","sourceRoot":"","sources":["../src/router.golden.test.ts"],"names":[],"mappings":"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"}
|
package/dist/router.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"router.test.d.ts","sourceRoot":"","sources":["../src/router.test.ts"],"names":[],"mappings":""}
|
package/dist/router.test.js
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import test from "node:test";
|
|
2
|
-
import assert from "node:assert/strict";
|
|
3
|
-
import { ReasoningRouter } from "./router.js";
|
|
4
|
-
test("router scoring is deterministic for identical input (excluding timestamp)", () => {
|
|
5
|
-
const router = new ReasoningRouter();
|
|
6
|
-
const input = {
|
|
7
|
-
prompt: "Implement a TypeScript function for request signing, include tests, and fix failing auth regression.",
|
|
8
|
-
context: "Current build is red and stack trace points to auth middleware.",
|
|
9
|
-
allowAutocode: true,
|
|
10
|
-
};
|
|
11
|
-
const first = router.route(input);
|
|
12
|
-
const second = router.route(input);
|
|
13
|
-
assert.equal(typeof first.timestamp, "string");
|
|
14
|
-
assert.equal(typeof second.timestamp, "string");
|
|
15
|
-
assert.equal(first.selectedMode, second.selectedMode);
|
|
16
|
-
assert.deepStrictEqual(first.pipeline, second.pipeline);
|
|
17
|
-
assert.equal(first.confidence, second.confidence);
|
|
18
|
-
assert.deepStrictEqual(first.scores, second.scores);
|
|
19
|
-
assert.deepStrictEqual(first.signals, second.signals);
|
|
20
|
-
assert.equal(first.rationale, second.rationale);
|
|
21
|
-
});
|
|
22
|
-
test("router maps acceptance prompts to expected selected mode", () => {
|
|
23
|
-
const router = new ReasoningRouter();
|
|
24
|
-
const defaultDecision = router.route({
|
|
25
|
-
prompt: "explain what a closure is",
|
|
26
|
-
});
|
|
27
|
-
const autocodeDecision = router.route({
|
|
28
|
-
prompt: "implement a Redis cache layer with TTL support and write tests",
|
|
29
|
-
});
|
|
30
|
-
const dialecticalDecision = router.route({
|
|
31
|
-
prompt: "should we use PostgreSQL or MongoDB? Consider consistency and scalability",
|
|
32
|
-
});
|
|
33
|
-
const recursiveDecision = router.route({
|
|
34
|
-
prompt: "Build a complete auth system: 1) OAuth 2) Session mgmt 3) RBAC 4) Audit logging",
|
|
35
|
-
});
|
|
36
|
-
assert.equal(defaultDecision.selectedMode, "default");
|
|
37
|
-
assert.equal(autocodeDecision.selectedMode, "autocode");
|
|
38
|
-
assert.equal(dialecticalDecision.selectedMode, "dialectical");
|
|
39
|
-
assert.equal(recursiveDecision.selectedMode, "recursive");
|
|
40
|
-
});
|
|
41
|
-
test("router can compose dialectical+recursive pipeline for mixed prompts", () => {
|
|
42
|
-
const router = new ReasoningRouter();
|
|
43
|
-
const decision = router.route({
|
|
44
|
-
prompt: "Compare migration tradeoffs, then break rollout into phased subtasks with sequencing and risks.",
|
|
45
|
-
allowAutocode: false,
|
|
46
|
-
});
|
|
47
|
-
assert.equal(decision.pipeline.includes("dialectical"), true);
|
|
48
|
-
assert.equal(decision.pipeline.includes("recursive"), true);
|
|
49
|
-
});
|
|
50
|
-
test("router config supports SHA-1764 names and legacy aliases", () => {
|
|
51
|
-
const modernConfigRouter = new ReasoningRouter({
|
|
52
|
-
enableAutocode: false,
|
|
53
|
-
confidenceThreshold: 0.2,
|
|
54
|
-
signalWeights: { implementation_intent: 3.0 },
|
|
55
|
-
});
|
|
56
|
-
const legacyConfigRouter = new ReasoningRouter({
|
|
57
|
-
allowAutocodeByDefault: false,
|
|
58
|
-
composeThreshold: 0.2,
|
|
59
|
-
});
|
|
60
|
-
const modernDecision = modernConfigRouter.route({
|
|
61
|
-
prompt: "Implement and patch this bug with tests.",
|
|
62
|
-
});
|
|
63
|
-
const legacyDecision = legacyConfigRouter.route({
|
|
64
|
-
prompt: "Implement and patch this bug with tests.",
|
|
65
|
-
});
|
|
66
|
-
assert.equal(modernDecision.selectedMode === "autocode", false);
|
|
67
|
-
assert.equal(legacyDecision.selectedMode === "autocode", false);
|
|
68
|
-
});
|
|
69
|
-
test("router falls back to default when confidence is below threshold", () => {
|
|
70
|
-
const router = new ReasoningRouter({ confidenceThreshold: 0.99 });
|
|
71
|
-
const decision = router.route({
|
|
72
|
-
prompt: "Compare pros and cons of two deployment options.",
|
|
73
|
-
});
|
|
74
|
-
assert.equal(decision.selectedMode, "default");
|
|
75
|
-
assert.deepStrictEqual(decision.pipeline, ["default"]);
|
|
76
|
-
});
|
|
77
|
-
test("router can explicitly disable recursive stage eligibility", () => {
|
|
78
|
-
const router = new ReasoningRouter();
|
|
79
|
-
const decision = router.route({
|
|
80
|
-
prompt: "Break this system into milestones and phased subtasks with rollout sequence.",
|
|
81
|
-
allowRecursive: false,
|
|
82
|
-
});
|
|
83
|
-
assert.equal(decision.pipeline.includes("recursive"), false);
|
|
84
|
-
assert.equal(decision.selectedMode === "recursive", false);
|
|
85
|
-
});
|
|
86
|
-
//# sourceMappingURL=router.test.js.map
|
package/dist/router.test.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"router.test.js","sourceRoot":"","sources":["../src/router.test.ts"],"names":[],"mappings":"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"}
|