@claude-flow/cli 3.10.10 → 3.10.12
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/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +10 -8
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/mcp.d.ts.map +1 -1
- package/dist/src/commands/mcp.js +14 -0
- package/dist/src/commands/mcp.js.map +1 -1
- package/dist/src/init/settings-generator.js +1 -1
- package/dist/src/init/statusline-generator.js +2 -2
- package/dist/src/mcp-tools/agent-execute-core.d.ts +2 -2
- package/dist/src/mcp-tools/agent-execute-core.d.ts.map +1 -1
- package/dist/src/mcp-tools/agent-execute-core.js +8 -5
- package/dist/src/mcp-tools/agent-execute-core.js.map +1 -1
- package/dist/src/mcp-tools/agent-tools.js +14 -14
- package/dist/src/mcp-tools/agent-tools.js.map +1 -1
- package/dist/src/mcp-tools/hooks-tools.d.ts +1 -0
- package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/hooks-tools.js +176 -7
- package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
- package/dist/src/mcp-tools/system-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/system-tools.js +5 -2
- package/dist/src/mcp-tools/system-tools.js.map +1 -1
- package/dist/src/runtime/parent-death-watchdog.d.ts +42 -0
- package/dist/src/runtime/parent-death-watchdog.d.ts.map +1 -0
- package/dist/src/runtime/parent-death-watchdog.js +70 -0
- package/dist/src/runtime/parent-death-watchdog.js.map +1 -0
- package/dist/src/ruvector/codemods/engine.d.ts +45 -0
- package/dist/src/ruvector/codemods/engine.d.ts.map +1 -0
- package/dist/src/ruvector/codemods/engine.js +291 -0
- package/dist/src/ruvector/codemods/engine.js.map +1 -0
- package/dist/src/ruvector/codemods/scope-analysis.d.ts +29 -0
- package/dist/src/ruvector/codemods/scope-analysis.d.ts.map +1 -0
- package/dist/src/ruvector/codemods/scope-analysis.js +162 -0
- package/dist/src/ruvector/codemods/scope-analysis.js.map +1 -0
- package/dist/src/ruvector/enhanced-model-router.d.ts +29 -8
- package/dist/src/ruvector/enhanced-model-router.d.ts.map +1 -1
- package/dist/src/ruvector/enhanced-model-router.js +104 -81
- package/dist/src/ruvector/enhanced-model-router.js.map +1 -1
- package/dist/src/ruvector/q-learning-router.d.ts +14 -1
- package/dist/src/ruvector/q-learning-router.d.ts.map +1 -1
- package/dist/src/ruvector/q-learning-router.js +36 -8
- package/dist/src/ruvector/q-learning-router.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/scripts/benchmark-codemods.mjs +127 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-analysis.d.ts","sourceRoot":"","sources":["../../../../src/ruvector/codemods/scope-analysis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAuD5B,MAAM,WAAW,oBAAoB;IACnC,2GAA2G;IAC3G,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE,CAAC,uBAAuB,GAAG,OAAO,CAAC;CAClF;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,GAAG,oBAAoB,CAoFjF"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scope-aware reassignment analysis for the `var-to-const` codemod (ADR-143).
|
|
3
|
+
*
|
|
4
|
+
* The naive version marks a `var` as reassigned if its name is assigned to
|
|
5
|
+
* *anywhere* in the file. That is correct but over-conservative: a `var x` in
|
|
6
|
+
* one function is forced to `let` just because an unrelated function also has
|
|
7
|
+
* an `x = …`. This module resolves each assignment to the binding it actually
|
|
8
|
+
* mutates (function-scope hoisting semantics), so a `var` becomes `const`
|
|
9
|
+
* unless *its own* binding is reassigned.
|
|
10
|
+
*
|
|
11
|
+
* Soundness: resolution only ever attributes a reassignment to a scope that
|
|
12
|
+
* actually hoists the name (i.e. genuinely declares that binding). It therefore
|
|
13
|
+
* never marks a truly-reassigned binding as un-reassigned — so a `var` is only
|
|
14
|
+
* promoted to `const` when it is provably never reassigned. Block-scoped
|
|
15
|
+
* shadowing (let/const) is ignored for resolution, which can only make us *more*
|
|
16
|
+
* conservative (fall back to `let`), never wrong.
|
|
17
|
+
*
|
|
18
|
+
* @module ruvector/codemods/scope-analysis
|
|
19
|
+
*/
|
|
20
|
+
import ts from 'typescript';
|
|
21
|
+
/** A scope is a function-like node or the SourceFile (the var-hoist boundaries). */
|
|
22
|
+
function isScopeNode(node) {
|
|
23
|
+
return (ts.isSourceFile(node) ||
|
|
24
|
+
ts.isFunctionDeclaration(node) ||
|
|
25
|
+
ts.isFunctionExpression(node) ||
|
|
26
|
+
ts.isArrowFunction(node) ||
|
|
27
|
+
ts.isMethodDeclaration(node) ||
|
|
28
|
+
ts.isConstructorDeclaration(node) ||
|
|
29
|
+
ts.isGetAccessorDeclaration(node) ||
|
|
30
|
+
ts.isSetAccessorDeclaration(node));
|
|
31
|
+
}
|
|
32
|
+
function enclosingScope(node) {
|
|
33
|
+
let cur = node.parent;
|
|
34
|
+
while (cur && !isScopeNode(cur))
|
|
35
|
+
cur = cur.parent;
|
|
36
|
+
return cur ?? node.getSourceFile();
|
|
37
|
+
}
|
|
38
|
+
function parentScope(scope) {
|
|
39
|
+
if (ts.isSourceFile(scope))
|
|
40
|
+
return undefined;
|
|
41
|
+
return enclosingScope(scope);
|
|
42
|
+
}
|
|
43
|
+
function collectIdentifierNames(target, out) {
|
|
44
|
+
if (ts.isIdentifier(target)) {
|
|
45
|
+
out(target.text);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
// Destructuring assignment target (object/array literal on the LHS of `=`).
|
|
49
|
+
ts.forEachChild(target, (child) => collectIdentifierNames(child, out));
|
|
50
|
+
}
|
|
51
|
+
const ASSIGNMENT_OPERATORS = new Set([
|
|
52
|
+
ts.SyntaxKind.EqualsToken,
|
|
53
|
+
ts.SyntaxKind.PlusEqualsToken,
|
|
54
|
+
ts.SyntaxKind.MinusEqualsToken,
|
|
55
|
+
ts.SyntaxKind.AsteriskEqualsToken,
|
|
56
|
+
ts.SyntaxKind.AsteriskAsteriskEqualsToken,
|
|
57
|
+
ts.SyntaxKind.SlashEqualsToken,
|
|
58
|
+
ts.SyntaxKind.PercentEqualsToken,
|
|
59
|
+
ts.SyntaxKind.LessThanLessThanEqualsToken,
|
|
60
|
+
ts.SyntaxKind.GreaterThanGreaterThanEqualsToken,
|
|
61
|
+
ts.SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken,
|
|
62
|
+
ts.SyntaxKind.AmpersandEqualsToken,
|
|
63
|
+
ts.SyntaxKind.BarEqualsToken,
|
|
64
|
+
ts.SyntaxKind.CaretEqualsToken,
|
|
65
|
+
ts.SyntaxKind.BarBarEqualsToken,
|
|
66
|
+
ts.SyntaxKind.AmpersandAmpersandEqualsToken,
|
|
67
|
+
ts.SyntaxKind.QuestionQuestionEqualsToken,
|
|
68
|
+
]);
|
|
69
|
+
/**
|
|
70
|
+
* Build a scope-aware resolver: which `var` bindings are actually reassigned.
|
|
71
|
+
*/
|
|
72
|
+
export function buildReassignmentResolver(sf) {
|
|
73
|
+
// Names hoisted into each scope: var-declared names, function declarations,
|
|
74
|
+
// and parameters. (Collected per scope, not crossing nested function scopes.)
|
|
75
|
+
const hoisted = new Map();
|
|
76
|
+
const ensure = (scope) => {
|
|
77
|
+
let s = hoisted.get(scope);
|
|
78
|
+
if (!s) {
|
|
79
|
+
s = new Set();
|
|
80
|
+
hoisted.set(scope, s);
|
|
81
|
+
}
|
|
82
|
+
return s;
|
|
83
|
+
};
|
|
84
|
+
ensure(sf);
|
|
85
|
+
const addBinding = (name, scope) => {
|
|
86
|
+
if (ts.isIdentifier(name)) {
|
|
87
|
+
ensure(scope).add(name.text);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
for (const el of name.elements) {
|
|
91
|
+
if (ts.isBindingElement(el))
|
|
92
|
+
addBinding(el.name, scope);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
// Pass 1 — record hoisted names per scope.
|
|
97
|
+
const collectHoisted = (node) => {
|
|
98
|
+
if (isScopeNode(node) && !ts.isSourceFile(node)) {
|
|
99
|
+
ensure(node);
|
|
100
|
+
// Parameters belong to the function's own scope.
|
|
101
|
+
const params = node.parameters;
|
|
102
|
+
if (params)
|
|
103
|
+
for (const p of params)
|
|
104
|
+
addBinding(p.name, node);
|
|
105
|
+
}
|
|
106
|
+
if (ts.isVariableDeclarationList(node) && !(node.flags & (ts.NodeFlags.Let | ts.NodeFlags.Const))) {
|
|
107
|
+
const scope = enclosingScope(node); // var hoists to the nearest function/source scope
|
|
108
|
+
for (const decl of node.declarations)
|
|
109
|
+
addBinding(decl.name, scope);
|
|
110
|
+
}
|
|
111
|
+
if (ts.isFunctionDeclaration(node) && node.name) {
|
|
112
|
+
ensure(enclosingScope(node)).add(node.name.text);
|
|
113
|
+
}
|
|
114
|
+
ts.forEachChild(node, collectHoisted);
|
|
115
|
+
};
|
|
116
|
+
collectHoisted(sf);
|
|
117
|
+
const resolveScope = (name, from) => {
|
|
118
|
+
let scope = from;
|
|
119
|
+
while (scope) {
|
|
120
|
+
if (hoisted.get(scope)?.has(name))
|
|
121
|
+
return scope;
|
|
122
|
+
scope = parentScope(scope);
|
|
123
|
+
}
|
|
124
|
+
return undefined;
|
|
125
|
+
};
|
|
126
|
+
// Pass 2 — attribute each reassignment to the binding (scope) it mutates.
|
|
127
|
+
const reassigned = new Set(); // key: `${scopeId}::${name}`
|
|
128
|
+
const scopeIds = new Map();
|
|
129
|
+
let nextId = 0;
|
|
130
|
+
const scopeId = (scope) => {
|
|
131
|
+
let id = scopeIds.get(scope);
|
|
132
|
+
if (id === undefined) {
|
|
133
|
+
id = nextId++;
|
|
134
|
+
scopeIds.set(scope, id);
|
|
135
|
+
}
|
|
136
|
+
return id;
|
|
137
|
+
};
|
|
138
|
+
const markReassigned = (name, at) => {
|
|
139
|
+
const declScope = resolveScope(name, enclosingScope(at));
|
|
140
|
+
if (declScope)
|
|
141
|
+
reassigned.add(`${scopeId(declScope)}::${name}`);
|
|
142
|
+
};
|
|
143
|
+
const collectReassignments = (node) => {
|
|
144
|
+
if (ts.isBinaryExpression(node) && ASSIGNMENT_OPERATORS.has(node.operatorToken.kind)) {
|
|
145
|
+
collectIdentifierNames(node.left, (n) => markReassigned(n, node));
|
|
146
|
+
}
|
|
147
|
+
else if ((ts.isPostfixUnaryExpression(node) || ts.isPrefixUnaryExpression(node)) &&
|
|
148
|
+
(node.operator === ts.SyntaxKind.PlusPlusToken || node.operator === ts.SyntaxKind.MinusMinusToken) &&
|
|
149
|
+
ts.isIdentifier(node.operand)) {
|
|
150
|
+
markReassigned(node.operand.text, node);
|
|
151
|
+
}
|
|
152
|
+
ts.forEachChild(node, collectReassignments);
|
|
153
|
+
};
|
|
154
|
+
collectReassignments(sf);
|
|
155
|
+
return {
|
|
156
|
+
isReassigned(name, declarationList) {
|
|
157
|
+
const declScope = enclosingScope(declarationList);
|
|
158
|
+
return reassigned.has(`${scopeId(declScope)}::${name}`);
|
|
159
|
+
},
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=scope-analysis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-analysis.js","sourceRoot":"","sources":["../../../../src/ruvector/codemods/scope-analysis.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,12 +28,20 @@ export interface EditIntent {
|
|
|
28
28
|
*/
|
|
29
29
|
export interface EnhancedRouteResult {
|
|
30
30
|
tier: 1 | 2 | 3;
|
|
31
|
-
handler: 'agent-booster' | 'haiku' | 'sonnet' | 'opus';
|
|
31
|
+
handler: 'codemod' | 'agent-booster' | 'haiku' | 'sonnet' | 'opus';
|
|
32
32
|
model?: ClaudeModel;
|
|
33
33
|
confidence: number;
|
|
34
34
|
complexity?: number;
|
|
35
35
|
reasoning: string;
|
|
36
|
+
/** The detected edit intent (Tier 1 only). */
|
|
37
|
+
codemodIntent?: EditIntent;
|
|
38
|
+
/**
|
|
39
|
+
* Back-compat alias for {@link codemodIntent}. Older callers read this field.
|
|
40
|
+
* @deprecated use {@link codemodIntent}
|
|
41
|
+
*/
|
|
36
42
|
agentBoosterIntent?: EditIntent;
|
|
43
|
+
/** true when a deterministic, $0 codemod can fully apply this edit (no LLM). */
|
|
44
|
+
deterministic?: boolean;
|
|
37
45
|
canSkipLLM?: boolean;
|
|
38
46
|
estimatedLatencyMs: number;
|
|
39
47
|
estimatedCost: number;
|
|
@@ -93,8 +101,11 @@ export declare class EnhancedModelRouter {
|
|
|
93
101
|
*/
|
|
94
102
|
private analyzeASTComplexity;
|
|
95
103
|
/**
|
|
96
|
-
* Execute task using the appropriate tier
|
|
97
|
-
*
|
|
104
|
+
* Execute task using the appropriate tier.
|
|
105
|
+
*
|
|
106
|
+
* For Tier-1 deterministic intents this applies the codemod directly (writing
|
|
107
|
+
* the file back when a path is given) — $0, no LLM. Otherwise it returns the
|
|
108
|
+
* routing result and the caller invokes the recommended model.
|
|
98
109
|
*/
|
|
99
110
|
execute(task: string, context?: {
|
|
100
111
|
filePath?: string;
|
|
@@ -102,14 +113,19 @@ export declare class EnhancedModelRouter {
|
|
|
102
113
|
}): Promise<{
|
|
103
114
|
result: string | {
|
|
104
115
|
applied: boolean;
|
|
105
|
-
|
|
116
|
+
changed: boolean;
|
|
117
|
+
edits: number;
|
|
106
118
|
};
|
|
107
119
|
routeResult: EnhancedRouteResult;
|
|
108
120
|
}>;
|
|
109
121
|
/**
|
|
110
|
-
*
|
|
122
|
+
* Apply a deterministic codemod to the intent's target file.
|
|
123
|
+
*
|
|
124
|
+
* This is the real Tier-1 execution path (ADR-143). It uses the in-process
|
|
125
|
+
* TypeScript-compiler codemod engine — no `agent-booster` import, no subprocess,
|
|
126
|
+
* no LLM. Writes the transformed source back to disk when it changes.
|
|
111
127
|
*/
|
|
112
|
-
private
|
|
128
|
+
private tryCodemod;
|
|
113
129
|
/**
|
|
114
130
|
* Get router statistics
|
|
115
131
|
*/
|
|
@@ -137,10 +153,15 @@ export declare function enhancedRouteToModel(task: string, context?: {
|
|
|
137
153
|
filePath?: string;
|
|
138
154
|
}): Promise<EnhancedRouteResult>;
|
|
139
155
|
/**
|
|
140
|
-
* Detect if a task can be
|
|
156
|
+
* Detect if a task can be applied by a deterministic, $0 codemod (ADR-143).
|
|
157
|
+
* Only the deterministic intents qualify — others need a model.
|
|
141
158
|
*/
|
|
142
|
-
export declare function
|
|
159
|
+
export declare function canUseCodemod(task: string): {
|
|
143
160
|
canUse: boolean;
|
|
144
161
|
intent?: EditIntent;
|
|
145
162
|
};
|
|
163
|
+
/**
|
|
164
|
+
* @deprecated Agent Booster never performed these transforms. Use {@link canUseCodemod}.
|
|
165
|
+
*/
|
|
166
|
+
export declare const canUseAgentBooster: typeof canUseCodemod;
|
|
146
167
|
//# sourceMappingURL=enhanced-model-router.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enhanced-model-router.d.ts","sourceRoot":"","sources":["../../../src/ruvector/enhanced-model-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,WAAW,EAAkB,WAAW,EAAsB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"enhanced-model-router.d.ts","sourceRoot":"","sources":["../../../src/ruvector/enhanced-model-router.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,9 +8,23 @@
|
|
|
8
8
|
*
|
|
9
9
|
* @module enhanced-model-router
|
|
10
10
|
*/
|
|
11
|
-
import { existsSync, readFileSync } from 'fs';
|
|
12
|
-
import { extname } from 'path';
|
|
11
|
+
import { existsSync, readFileSync, writeFileSync } from 'fs';
|
|
12
|
+
import { extname, isAbsolute, resolve as resolvePath } from 'path';
|
|
13
13
|
import { getModelRouter } from './model-router.js';
|
|
14
|
+
import { applyCodemod, isDeterministicCodemod } from './codemods/engine.js';
|
|
15
|
+
/** Map a file path to the codemod engine's language, falling back to a hint. */
|
|
16
|
+
function codemodLanguageFor(filePath, fallback) {
|
|
17
|
+
const ext = extname(filePath).toLowerCase();
|
|
18
|
+
if (ext === '.tsx')
|
|
19
|
+
return 'tsx';
|
|
20
|
+
if (ext === '.jsx')
|
|
21
|
+
return 'jsx';
|
|
22
|
+
if (ext === '.ts' || ext === '.mts' || ext === '.cts')
|
|
23
|
+
return 'typescript';
|
|
24
|
+
if (ext === '.js' || ext === '.mjs' || ext === '.cjs')
|
|
25
|
+
return 'javascript';
|
|
26
|
+
return fallback === 'typescript' ? 'typescript' : 'javascript';
|
|
27
|
+
}
|
|
14
28
|
// ============================================================================
|
|
15
29
|
// Intent Detection Patterns
|
|
16
30
|
// ============================================================================
|
|
@@ -261,20 +275,57 @@ export class EnhancedModelRouter {
|
|
|
261
275
|
* Route a task to the optimal tier and handler
|
|
262
276
|
*/
|
|
263
277
|
async route(task, context) {
|
|
264
|
-
// Step 1:
|
|
278
|
+
// Step 1: Deterministic codemod detection (ADR-143).
|
|
279
|
+
// Only intents that a codemod can apply *deterministically and safely* skip
|
|
280
|
+
// the LLM. Intents that need inference (add-types, add-error-handling,
|
|
281
|
+
// async-await) are detected but fall through to model routing below.
|
|
265
282
|
if (this.config.agentBoosterEnabled) {
|
|
266
283
|
const intent = this.detectIntent(task);
|
|
267
|
-
if (intent &&
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
284
|
+
if (intent &&
|
|
285
|
+
intent.confidence >= this.config.agentBoosterConfidenceThreshold &&
|
|
286
|
+
isDeterministicCodemod(intent.type)) {
|
|
287
|
+
// Route-time dry-run (ADR-143 #3): when a target file is known, only
|
|
288
|
+
// claim Tier-1 if the codemod actually changes something. This avoids
|
|
289
|
+
// recommending [CODEMOD_AVAILABLE] for no-ops (e.g. "remove console" on
|
|
290
|
+
// a file with no console calls). With no file to check, recommend Tier-1
|
|
291
|
+
// best-effort — the executor (hooks_codemod) verifies before writing.
|
|
292
|
+
// Prefer the caller-provided path (authoritative, usually absolute) over
|
|
293
|
+
// the path heuristically extracted from the task text; resolve relatives.
|
|
294
|
+
const fpRaw = context?.filePath || intent.filePath;
|
|
295
|
+
const fp = fpRaw ? (isAbsolute(fpRaw) ? fpRaw : resolvePath(process.cwd(), fpRaw)) : undefined;
|
|
296
|
+
let tier1 = true;
|
|
297
|
+
let edits;
|
|
298
|
+
if (fp && existsSync(fp)) {
|
|
299
|
+
try {
|
|
300
|
+
const code = readFileSync(fp, 'utf-8');
|
|
301
|
+
const res = applyCodemod(intent.type, code, { language: codemodLanguageFor(fp, intent.language) });
|
|
302
|
+
if (res.success && res.changed) {
|
|
303
|
+
edits = res.edits;
|
|
304
|
+
}
|
|
305
|
+
else {
|
|
306
|
+
tier1 = false; // verified no-op / can't apply → fall through to model routing
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
catch {
|
|
310
|
+
// read error → leave best-effort Tier-1 (executor will verify)
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
if (tier1) {
|
|
314
|
+
const editsNote = edits !== undefined ? ` (${edits} edit${edits === 1 ? '' : 's'})` : '';
|
|
315
|
+
return {
|
|
316
|
+
tier: 1,
|
|
317
|
+
handler: 'codemod',
|
|
318
|
+
confidence: intent.confidence,
|
|
319
|
+
reasoning: `Deterministic codemod can apply "${intent.type}" with ${(intent.confidence * 100).toFixed(0)}% confidence — $0, no LLM${editsNote}`,
|
|
320
|
+
codemodIntent: intent,
|
|
321
|
+
agentBoosterIntent: intent,
|
|
322
|
+
deterministic: true,
|
|
323
|
+
canSkipLLM: true,
|
|
324
|
+
estimatedLatencyMs: 1,
|
|
325
|
+
estimatedCost: 0,
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
// verified no-op: fall through to model routing below
|
|
278
329
|
}
|
|
279
330
|
}
|
|
280
331
|
// Step 2: Check for Tier 3 keywords (architecture, security, distributed)
|
|
@@ -386,89 +437,56 @@ export class EnhancedModelRouter {
|
|
|
386
437
|
}
|
|
387
438
|
}
|
|
388
439
|
/**
|
|
389
|
-
* Execute task using the appropriate tier
|
|
390
|
-
*
|
|
440
|
+
* Execute task using the appropriate tier.
|
|
441
|
+
*
|
|
442
|
+
* For Tier-1 deterministic intents this applies the codemod directly (writing
|
|
443
|
+
* the file back when a path is given) — $0, no LLM. Otherwise it returns the
|
|
444
|
+
* routing result and the caller invokes the recommended model.
|
|
391
445
|
*/
|
|
392
446
|
async execute(task, context) {
|
|
393
447
|
const routeResult = await this.route(task, context);
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
const
|
|
397
|
-
if (
|
|
448
|
+
const intent = routeResult.codemodIntent ?? routeResult.agentBoosterIntent;
|
|
449
|
+
if (routeResult.tier === 1 && routeResult.deterministic && intent) {
|
|
450
|
+
const cm = this.tryCodemod(intent, context);
|
|
451
|
+
if (cm.success) {
|
|
398
452
|
return {
|
|
399
|
-
result: { applied: true,
|
|
453
|
+
result: { applied: true, changed: cm.changed, edits: cm.edits },
|
|
400
454
|
routeResult,
|
|
401
455
|
};
|
|
402
456
|
}
|
|
403
|
-
//
|
|
457
|
+
// Codemod could not apply (no file / parse issue) — fall back to a model.
|
|
404
458
|
routeResult.tier = 2;
|
|
405
459
|
routeResult.handler = 'sonnet';
|
|
406
460
|
routeResult.model = 'sonnet';
|
|
461
|
+
routeResult.deterministic = false;
|
|
407
462
|
routeResult.canSkipLLM = false;
|
|
408
|
-
routeResult.reasoning += ' (
|
|
463
|
+
routeResult.reasoning += ' (codemod fallback to LLM)';
|
|
409
464
|
}
|
|
410
465
|
// Return routing result - caller handles LLM invocation
|
|
411
466
|
return { result: routeResult.reasoning, routeResult };
|
|
412
467
|
}
|
|
413
468
|
/**
|
|
414
|
-
*
|
|
469
|
+
* Apply a deterministic codemod to the intent's target file.
|
|
470
|
+
*
|
|
471
|
+
* This is the real Tier-1 execution path (ADR-143). It uses the in-process
|
|
472
|
+
* TypeScript-compiler codemod engine — no `agent-booster` import, no subprocess,
|
|
473
|
+
* no LLM. Writes the transformed source back to disk when it changes.
|
|
415
474
|
*/
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
return { success: false, confidence: 0 };
|
|
421
|
-
}
|
|
422
|
-
const originalCode = context?.originalCode || readFileSync(filePath, 'utf-8');
|
|
423
|
-
const intentToInstruction = {
|
|
424
|
-
'var-to-const': 'Convert all var declarations to const',
|
|
425
|
-
'add-types': 'Add TypeScript type annotations',
|
|
426
|
-
'add-error-handling': 'Wrap in try/catch blocks',
|
|
427
|
-
'async-await': 'Convert to async/await',
|
|
428
|
-
'add-logging': 'Add console.log statements',
|
|
429
|
-
'remove-console': 'Remove all console.* statements',
|
|
430
|
-
};
|
|
431
|
-
const instruction = intentToInstruction[intent.type];
|
|
432
|
-
const language = intent.language || 'javascript';
|
|
433
|
-
// Try local agentic-flow agent-booster (v3 — no npx needed)
|
|
434
|
-
// Note: agent-booster export declared but dist missing in alpha.1; use intelligence path as fallback
|
|
435
|
-
const boosterModule = await import('agentic-flow/agent-booster')
|
|
436
|
-
.catch(() => import(/* @vite-ignore */ 'agentic-flow/intelligence/agent-booster-enhanced'))
|
|
437
|
-
.catch(() => null);
|
|
438
|
-
if (boosterModule?.enhancedApply) {
|
|
439
|
-
const result = await boosterModule.enhancedApply({
|
|
440
|
-
code: originalCode,
|
|
441
|
-
edit: instruction,
|
|
442
|
-
language,
|
|
443
|
-
});
|
|
444
|
-
if (result && result.confidence >= this.config.agentBoosterConfidenceThreshold) {
|
|
445
|
-
return { success: true, confidence: result.confidence, output: result.output };
|
|
446
|
-
}
|
|
447
|
-
return { success: false, confidence: result?.confidence ?? 0 };
|
|
448
|
-
}
|
|
449
|
-
// Fallback: shell out to npx agent-booster
|
|
450
|
-
// Sanitize language to prevent command injection (whitelist only)
|
|
451
|
-
const SAFE_LANGUAGES = ['javascript', 'typescript', 'python', 'rust', 'go', 'java', 'c', 'cpp', 'ruby', 'swift', 'kotlin'];
|
|
452
|
-
const safeLang = SAFE_LANGUAGES.includes(language) ? language : 'javascript';
|
|
453
|
-
const { execSync } = await import('child_process');
|
|
454
|
-
const cmd = `npx --yes agent-booster@0.2.2 apply --language ${safeLang}`;
|
|
455
|
-
const result = execSync(cmd, {
|
|
456
|
-
encoding: 'utf-8',
|
|
457
|
-
input: JSON.stringify({ code: originalCode, edit: instruction }),
|
|
458
|
-
maxBuffer: 10 * 1024 * 1024,
|
|
459
|
-
timeout: 5000,
|
|
460
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
461
|
-
});
|
|
462
|
-
const parsed = JSON.parse(result);
|
|
463
|
-
if (parsed.confidence >= this.config.agentBoosterConfidenceThreshold) {
|
|
464
|
-
return { success: true, confidence: parsed.confidence, output: parsed.output };
|
|
465
|
-
}
|
|
466
|
-
return { success: false, confidence: parsed.confidence ?? 0 };
|
|
475
|
+
tryCodemod(intent, context) {
|
|
476
|
+
const filePath = intent.filePath || context?.filePath;
|
|
477
|
+
if (!filePath || !existsSync(filePath)) {
|
|
478
|
+
return { success: false, changed: false, edits: 0 };
|
|
467
479
|
}
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
480
|
+
const originalCode = context?.originalCode ?? readFileSync(filePath, 'utf-8');
|
|
481
|
+
const language = codemodLanguageFor(filePath, intent.language);
|
|
482
|
+
const result = applyCodemod(intent.type, originalCode, { language });
|
|
483
|
+
if (!result.success) {
|
|
484
|
+
return { success: false, changed: false, edits: 0 };
|
|
485
|
+
}
|
|
486
|
+
if (result.changed && !context?.originalCode) {
|
|
487
|
+
writeFileSync(filePath, result.output, 'utf-8');
|
|
471
488
|
}
|
|
489
|
+
return { success: true, changed: result.changed, edits: result.edits };
|
|
472
490
|
}
|
|
473
491
|
/**
|
|
474
492
|
* Get router statistics
|
|
@@ -516,14 +534,19 @@ export async function enhancedRouteToModel(task, context) {
|
|
|
516
534
|
return router.route(task, context);
|
|
517
535
|
}
|
|
518
536
|
/**
|
|
519
|
-
* Detect if a task can be
|
|
537
|
+
* Detect if a task can be applied by a deterministic, $0 codemod (ADR-143).
|
|
538
|
+
* Only the deterministic intents qualify — others need a model.
|
|
520
539
|
*/
|
|
521
|
-
export function
|
|
540
|
+
export function canUseCodemod(task) {
|
|
522
541
|
const router = getEnhancedModelRouter();
|
|
523
542
|
const intent = router.detectIntent(task);
|
|
524
|
-
if (intent && intent.confidence >= 0.7) {
|
|
543
|
+
if (intent && intent.confidence >= 0.7 && isDeterministicCodemod(intent.type)) {
|
|
525
544
|
return { canUse: true, intent };
|
|
526
545
|
}
|
|
527
546
|
return { canUse: false };
|
|
528
547
|
}
|
|
548
|
+
/**
|
|
549
|
+
* @deprecated Agent Booster never performed these transforms. Use {@link canUseCodemod}.
|
|
550
|
+
*/
|
|
551
|
+
export const canUseAgentBooster = canUseCodemod;
|
|
529
552
|
//# sourceMappingURL=enhanced-model-router.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enhanced-model-router.js","sourceRoot":"","sources":["../../../src/ruvector/enhanced-model-router.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"enhanced-model-router.js","sourceRoot":"","sources":["../../../src/ruvector/enhanced-model-router.ts"],"names":[],"mappings":"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"}
|
|
@@ -182,6 +182,12 @@ export declare class QLearningRouter {
|
|
|
182
182
|
* Legacy hash function (kept for backward compatibility)
|
|
183
183
|
*/
|
|
184
184
|
private hashState;
|
|
185
|
+
/**
|
|
186
|
+
* Public state-key encoder (#2239). This is exactly what `route()` uses
|
|
187
|
+
* to look up Q-values, so testing it directly is testing the binding the
|
|
188
|
+
* Q-learner actually sees.
|
|
189
|
+
*/
|
|
190
|
+
getStateKey(context: string): string;
|
|
185
191
|
/**
|
|
186
192
|
* Optimized state hashing using feature extraction
|
|
187
193
|
* Creates a more semantic representation of the task context
|
|
@@ -194,7 +200,14 @@ export declare class QLearningRouter {
|
|
|
194
200
|
private extractFeatures;
|
|
195
201
|
/**
|
|
196
202
|
* Convert feature vector to state key
|
|
197
|
-
* Uses locality-sensitive hashing for similar contexts
|
|
203
|
+
* Uses locality-sensitive hashing for similar contexts.
|
|
204
|
+
*
|
|
205
|
+
* #2239 — the previous fold was `((hash << 4) ^ q[i]) & 0x7fffffff` over 16
|
|
206
|
+
* 4-bit groups: each group i landed at bit 4·(15−i), so groups 0–7 (= the
|
|
207
|
+
* entire keyword block, features 0–31) shifted past the 31-bit mask and were
|
|
208
|
+
* discarded. Keyword-distinct tasks collapsed to one Q-state. We now use a
|
|
209
|
+
* 32-bit FNV-1a hash, which mixes every quantized group losslessly into the
|
|
210
|
+
* state key. Encoder version bumped to 2; see PersistedModel.encoderVersion.
|
|
198
211
|
*/
|
|
199
212
|
private featureVectorToKey;
|
|
200
213
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"q-learning-router.d.ts","sourceRoot":"","sources":["../../../src/ruvector/q-learning-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,mCAAmC;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,6CAA6C;IAC7C,gBAAgB,EAAE,MAAM,CAAC;IACzB,+CAA+C;IAC/C,gBAAgB,EAAE,MAAM,CAAC;IACzB,sDAAsD;IACtD,oBAAoB,EAAE,QAAQ,GAAG,aAAa,GAAG,QAAQ,CAAC;IAC1D,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,gBAAgB,EAAE,MAAM,CAAC;IACzB,+CAA+C;IAC/C,eAAe,EAAE,MAAM,CAAC;IACxB,+CAA+C;IAC/C,YAAY,EAAE,OAAO,CAAC;IACtB,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,SAAS,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,gBAAgB,EAAE,MAAM,CAAC;IACzB,mEAAmE;IACnE,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,8BAA8B;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,2BAA2B;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,yBAAyB;IACzB,YAAY,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACvD;
|
|
1
|
+
{"version":3,"file":"q-learning-router.d.ts","sourceRoot":"","sources":["../../../src/ruvector/q-learning-router.ts"],"names":[],"mappings":"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"}
|