erosolar-cli 2.1.172 → 2.1.174
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/README.md +1 -1
- package/agents/erosolar-code.rules.json +2 -2
- package/agents/general.rules.json +21 -3
- package/dist/capabilities/statusCapability.js +2 -2
- package/dist/capabilities/statusCapability.js.map +1 -1
- package/dist/contracts/agent-schemas.json +5 -5
- package/dist/core/agent.d.ts +83 -24
- package/dist/core/agent.d.ts.map +1 -1
- package/dist/core/agent.js +499 -248
- package/dist/core/agent.js.map +1 -1
- package/dist/core/preferences.d.ts +1 -0
- package/dist/core/preferences.d.ts.map +1 -1
- package/dist/core/preferences.js +8 -1
- package/dist/core/preferences.js.map +1 -1
- package/dist/core/reliabilityPrompt.d.ts +9 -0
- package/dist/core/reliabilityPrompt.d.ts.map +1 -0
- package/dist/core/reliabilityPrompt.js +31 -0
- package/dist/core/reliabilityPrompt.js.map +1 -0
- package/dist/core/schemaValidator.js +3 -3
- package/dist/core/schemaValidator.js.map +1 -1
- package/dist/core/toolPreconditions.d.ts +0 -11
- package/dist/core/toolPreconditions.d.ts.map +1 -1
- package/dist/core/toolPreconditions.js +33 -164
- package/dist/core/toolPreconditions.js.map +1 -1
- package/dist/core/toolRuntime.d.ts.map +1 -1
- package/dist/core/toolRuntime.js +9 -114
- package/dist/core/toolRuntime.js.map +1 -1
- package/dist/core/updateChecker.d.ts +61 -1
- package/dist/core/updateChecker.d.ts.map +1 -1
- package/dist/core/updateChecker.js +147 -3
- package/dist/core/updateChecker.js.map +1 -1
- package/dist/headless/headlessApp.d.ts.map +1 -1
- package/dist/headless/headlessApp.js +0 -39
- package/dist/headless/headlessApp.js.map +1 -1
- package/dist/plugins/tools/nodeDefaults.d.ts.map +1 -1
- package/dist/plugins/tools/nodeDefaults.js +0 -2
- package/dist/plugins/tools/nodeDefaults.js.map +1 -1
- package/dist/providers/openaiResponsesProvider.d.ts.map +1 -1
- package/dist/providers/openaiResponsesProvider.js +79 -74
- package/dist/providers/openaiResponsesProvider.js.map +1 -1
- package/dist/runtime/agentController.d.ts.map +1 -1
- package/dist/runtime/agentController.js +6 -3
- package/dist/runtime/agentController.js.map +1 -1
- package/dist/runtime/agentSession.d.ts +0 -2
- package/dist/runtime/agentSession.d.ts.map +1 -1
- package/dist/runtime/agentSession.js +2 -2
- package/dist/runtime/agentSession.js.map +1 -1
- package/dist/shell/interactiveShell.d.ts +11 -18
- package/dist/shell/interactiveShell.d.ts.map +1 -1
- package/dist/shell/interactiveShell.js +273 -291
- package/dist/shell/interactiveShell.js.map +1 -1
- package/dist/shell/shellApp.d.ts.map +1 -1
- package/dist/shell/shellApp.js +7 -1
- package/dist/shell/shellApp.js.map +1 -1
- package/dist/shell/systemPrompt.d.ts.map +1 -1
- package/dist/shell/systemPrompt.js +4 -15
- package/dist/shell/systemPrompt.js.map +1 -1
- package/dist/subagents/taskRunner.js +2 -1
- package/dist/subagents/taskRunner.js.map +1 -1
- package/dist/tools/bashTools.d.ts.map +1 -1
- package/dist/tools/bashTools.js +101 -8
- package/dist/tools/bashTools.js.map +1 -1
- package/dist/tools/diffUtils.d.ts +8 -2
- package/dist/tools/diffUtils.d.ts.map +1 -1
- package/dist/tools/diffUtils.js +72 -13
- package/dist/tools/diffUtils.js.map +1 -1
- package/dist/tools/grepTools.d.ts.map +1 -1
- package/dist/tools/grepTools.js +10 -2
- package/dist/tools/grepTools.js.map +1 -1
- package/dist/tools/planningTools.d.ts +0 -10
- package/dist/tools/planningTools.d.ts.map +1 -1
- package/dist/tools/planningTools.js +0 -16
- package/dist/tools/planningTools.js.map +1 -1
- package/dist/tools/searchTools.d.ts.map +1 -1
- package/dist/tools/searchTools.js +4 -2
- package/dist/tools/searchTools.js.map +1 -1
- package/dist/ui/PromptController.d.ts +1 -4
- package/dist/ui/PromptController.d.ts.map +1 -1
- package/dist/ui/PromptController.js +1 -7
- package/dist/ui/PromptController.js.map +1 -1
- package/dist/ui/ShellUIAdapter.d.ts +292 -28
- package/dist/ui/ShellUIAdapter.d.ts.map +1 -1
- package/dist/ui/ShellUIAdapter.js +1513 -121
- package/dist/ui/ShellUIAdapter.js.map +1 -1
- package/dist/ui/UnifiedUIController.d.ts +81 -0
- package/dist/ui/UnifiedUIController.d.ts.map +1 -0
- package/dist/ui/UnifiedUIController.js +212 -0
- package/dist/ui/UnifiedUIController.js.map +1 -0
- package/dist/ui/UnifiedUIRenderer.d.ts +133 -30
- package/dist/ui/UnifiedUIRenderer.d.ts.map +1 -1
- package/dist/ui/UnifiedUIRenderer.js +939 -370
- package/dist/ui/UnifiedUIRenderer.js.map +1 -1
- package/dist/ui/animatedStatus.d.ts +128 -6
- package/dist/ui/animatedStatus.d.ts.map +1 -1
- package/dist/ui/animatedStatus.js +383 -50
- package/dist/ui/animatedStatus.js.map +1 -1
- package/dist/ui/animation/AnimationScheduler.d.ts +192 -0
- package/dist/ui/animation/AnimationScheduler.d.ts.map +1 -0
- package/dist/ui/animation/AnimationScheduler.js +432 -0
- package/dist/ui/animation/AnimationScheduler.js.map +1 -0
- package/dist/ui/display.d.ts +182 -26
- package/dist/ui/display.d.ts.map +1 -1
- package/dist/ui/display.js +678 -97
- package/dist/ui/display.js.map +1 -1
- package/dist/ui/inPlaceUpdater.d.ts +181 -0
- package/dist/ui/inPlaceUpdater.d.ts.map +1 -0
- package/dist/ui/inPlaceUpdater.js +515 -0
- package/dist/ui/inPlaceUpdater.js.map +1 -0
- package/dist/ui/interrupts/InterruptManager.d.ts +142 -0
- package/dist/ui/interrupts/InterruptManager.d.ts.map +1 -0
- package/dist/ui/interrupts/InterruptManager.js +439 -0
- package/dist/ui/interrupts/InterruptManager.js.map +1 -0
- package/dist/ui/layout.d.ts +0 -1
- package/dist/ui/layout.d.ts.map +1 -1
- package/dist/ui/layout.js +0 -12
- package/dist/ui/layout.js.map +1 -1
- package/dist/ui/orchestration/UIUpdateCoordinator.d.ts +61 -7
- package/dist/ui/orchestration/UIUpdateCoordinator.d.ts.map +1 -1
- package/dist/ui/orchestration/UIUpdateCoordinator.js +232 -20
- package/dist/ui/orchestration/UIUpdateCoordinator.js.map +1 -1
- package/dist/ui/shortcutsHelp.d.ts.map +1 -1
- package/dist/ui/shortcutsHelp.js +0 -1
- package/dist/ui/shortcutsHelp.js.map +1 -1
- package/dist/ui/telemetry/ResponseTracker.d.ts +22 -0
- package/dist/ui/telemetry/ResponseTracker.d.ts.map +1 -0
- package/dist/ui/telemetry/ResponseTracker.js +60 -0
- package/dist/ui/telemetry/ResponseTracker.js.map +1 -0
- package/dist/ui/telemetry/UITelemetry.d.ts +181 -0
- package/dist/ui/telemetry/UITelemetry.d.ts.map +1 -0
- package/dist/ui/telemetry/UITelemetry.js +446 -0
- package/dist/ui/telemetry/UITelemetry.js.map +1 -0
- package/dist/ui/unified/index.d.ts +30 -1
- package/dist/ui/unified/index.d.ts.map +1 -1
- package/dist/ui/unified/index.js +45 -2
- package/dist/ui/unified/index.js.map +1 -1
- package/dist/ui/unified/layout.d.ts +12 -0
- package/dist/ui/unified/layout.d.ts.map +1 -0
- package/dist/ui/unified/layout.js +96 -0
- package/dist/ui/unified/layout.js.map +1 -0
- package/package.json +2 -3
- package/dist/StringUtils.d.ts +0 -8
- package/dist/StringUtils.d.ts.map +0 -1
- package/dist/StringUtils.js +0 -11
- package/dist/StringUtils.js.map +0 -1
- package/dist/core/aiFlowSupervisor.d.ts +0 -44
- package/dist/core/aiFlowSupervisor.d.ts.map +0 -1
- package/dist/core/aiFlowSupervisor.js +0 -299
- package/dist/core/aiFlowSupervisor.js.map +0 -1
- package/dist/core/cliTestHarness.d.ts +0 -200
- package/dist/core/cliTestHarness.d.ts.map +0 -1
- package/dist/core/cliTestHarness.js +0 -549
- package/dist/core/cliTestHarness.js.map +0 -1
- package/dist/core/testUtils.d.ts +0 -121
- package/dist/core/testUtils.d.ts.map +0 -1
- package/dist/core/testUtils.js +0 -235
- package/dist/core/testUtils.js.map +0 -1
- package/dist/core/toolValidation.d.ts +0 -116
- package/dist/core/toolValidation.d.ts.map +0 -1
- package/dist/core/toolValidation.js +0 -282
- package/dist/core/toolValidation.js.map +0 -1
- package/dist/ui/planOverlay.d.ts +0 -28
- package/dist/ui/planOverlay.d.ts.map +0 -1
- package/dist/ui/planOverlay.js +0 -156
- package/dist/ui/planOverlay.js.map +0 -1
- package/dist/ui/streamingFormatter.d.ts +0 -30
- package/dist/ui/streamingFormatter.d.ts.map +0 -1
- package/dist/ui/streamingFormatter.js +0 -91
- package/dist/ui/streamingFormatter.js.map +0 -1
- package/dist/utils/errorUtils.d.ts +0 -16
- package/dist/utils/errorUtils.d.ts.map +0 -1
- package/dist/utils/errorUtils.js +0 -66
- package/dist/utils/errorUtils.js.map +0 -1
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { theme } from '../theme.js';
|
|
2
|
+
const ANSI_PATTERN = /\u001B\[[0-?]*[ -/]*[@-~]/g;
|
|
3
|
+
const clampWidth = (width, min = 42, max = 110) => {
|
|
4
|
+
if (!Number.isFinite(width) || !width) {
|
|
5
|
+
return max;
|
|
6
|
+
}
|
|
7
|
+
return Math.max(min, Math.min(max, Math.floor(width)));
|
|
8
|
+
};
|
|
9
|
+
const stripAnsi = (value) => value.replace(ANSI_PATTERN, '');
|
|
10
|
+
const visibleLength = (value) => stripAnsi(value).length;
|
|
11
|
+
export const renderDivider = (width, label) => {
|
|
12
|
+
const maxWidth = clampWidth(width, 16, 140);
|
|
13
|
+
if (!label) {
|
|
14
|
+
return theme.ui.muted('─'.repeat(maxWidth));
|
|
15
|
+
}
|
|
16
|
+
const cleanLabel = theme.ui.muted(`[${label}]`);
|
|
17
|
+
const labelLen = visibleLength(cleanLabel);
|
|
18
|
+
const side = Math.max(2, Math.floor((maxWidth - labelLen - 2) / 2));
|
|
19
|
+
const left = '─'.repeat(side);
|
|
20
|
+
const right = '─'.repeat(Math.max(0, maxWidth - side - labelLen - 2));
|
|
21
|
+
return theme.ui.muted(`${left} ${cleanLabel} ${right}`);
|
|
22
|
+
};
|
|
23
|
+
export const renderStatusLine = (parts, width) => {
|
|
24
|
+
const segments = parts
|
|
25
|
+
.filter((part) => part.text.trim())
|
|
26
|
+
.map((part) => colorize(part.text.trim(), part.tone));
|
|
27
|
+
const separator = theme.ui.muted(' · ');
|
|
28
|
+
const joined = segments.join(separator);
|
|
29
|
+
const maxLen = clampWidth(width, 8, 300);
|
|
30
|
+
if (visibleLength(joined) <= maxLen) {
|
|
31
|
+
return joined;
|
|
32
|
+
}
|
|
33
|
+
let result = '';
|
|
34
|
+
for (const segment of segments) {
|
|
35
|
+
const next = result ? `${result}${separator}${segment}` : segment;
|
|
36
|
+
if (visibleLength(next) > maxLen) {
|
|
37
|
+
break;
|
|
38
|
+
}
|
|
39
|
+
result = next;
|
|
40
|
+
}
|
|
41
|
+
return result || segments.slice(0, 1).join('');
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Render status parts into multiple lines, wrapping as needed.
|
|
45
|
+
* Unlike renderStatusLine, this never truncates - it wraps to new lines.
|
|
46
|
+
*/
|
|
47
|
+
export const renderStatusLines = (parts, width) => {
|
|
48
|
+
const segments = parts
|
|
49
|
+
.filter((part) => part.text.trim())
|
|
50
|
+
.map((part) => colorize(part.text.trim(), part.tone));
|
|
51
|
+
if (segments.length === 0) {
|
|
52
|
+
return [];
|
|
53
|
+
}
|
|
54
|
+
const separator = theme.ui.muted(' · ');
|
|
55
|
+
const separatorLen = visibleLength(separator);
|
|
56
|
+
const maxLen = Math.max(20, width);
|
|
57
|
+
const lines = [];
|
|
58
|
+
let currentLine = '';
|
|
59
|
+
let currentLen = 0;
|
|
60
|
+
for (const segment of segments) {
|
|
61
|
+
const segmentLen = visibleLength(segment);
|
|
62
|
+
if (currentLen === 0) {
|
|
63
|
+
currentLine = segment;
|
|
64
|
+
currentLen = segmentLen;
|
|
65
|
+
}
|
|
66
|
+
else if (currentLen + separatorLen + segmentLen <= maxLen) {
|
|
67
|
+
currentLine = `${currentLine}${separator}${segment}`;
|
|
68
|
+
currentLen += separatorLen + segmentLen;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
lines.push(currentLine);
|
|
72
|
+
currentLine = segment;
|
|
73
|
+
currentLen = segmentLen;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (currentLine) {
|
|
77
|
+
lines.push(currentLine);
|
|
78
|
+
}
|
|
79
|
+
return lines;
|
|
80
|
+
};
|
|
81
|
+
const colorize = (text, tone) => {
|
|
82
|
+
switch (tone) {
|
|
83
|
+
case 'info':
|
|
84
|
+
return theme.info(text);
|
|
85
|
+
case 'warn':
|
|
86
|
+
return theme.warning(text);
|
|
87
|
+
case 'error':
|
|
88
|
+
return theme.error(text);
|
|
89
|
+
case 'success':
|
|
90
|
+
return theme.success(text);
|
|
91
|
+
case 'muted':
|
|
92
|
+
default:
|
|
93
|
+
return theme.ui.muted(text);
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
//# sourceMappingURL=layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../src/ui/unified/layout.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "erosolar-cli",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.174",
|
|
4
4
|
"description": "Unified AI agent framework for the command line - Multi-provider support with schema-driven tools, code intelligence, and transparent reasoning",
|
|
5
5
|
"main": "dist/bin/erosolar.js",
|
|
6
6
|
"type": "module",
|
|
@@ -124,7 +124,6 @@
|
|
|
124
124
|
"boxen": "^5.1.2",
|
|
125
125
|
"chalk": "^4.1.2",
|
|
126
126
|
"cli-spinners": "^2.9.2",
|
|
127
|
-
"erosolar-cli": "^2.1.168",
|
|
128
127
|
"gradient-string": "^2.0.2",
|
|
129
128
|
"nanospinner": "^1.1.0",
|
|
130
129
|
"nodemailer": "^7.0.10",
|
|
@@ -132,6 +131,6 @@
|
|
|
132
131
|
"ora": "^5.4.1",
|
|
133
132
|
"playwright": "^1.57.0",
|
|
134
133
|
"tough-cookie": "^6.0.0",
|
|
135
|
-
"typescript": "^5.
|
|
134
|
+
"typescript": "^5.9.3"
|
|
136
135
|
}
|
|
137
136
|
}
|
package/dist/StringUtils.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StringUtils.d.ts","sourceRoot":"","sources":["../src/StringUtils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,WAAW,GAAI,OAAO,GAAG,KAAG,GAGxC,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
package/dist/StringUtils.js
DELETED
package/dist/StringUtils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StringUtils.js","sourceRoot":"","sources":["../src/StringUtils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAU,EAAO,EAAE;IAC7C,qBAAqB;IACrB,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import type { ToolHistoryEntry } from './toolRuntime.js';
|
|
2
|
-
export interface AiFlowContext {
|
|
3
|
-
prompt: string;
|
|
4
|
-
response: string;
|
|
5
|
-
startedAt: number;
|
|
6
|
-
toolHistory: readonly ToolHistoryEntry[];
|
|
7
|
-
/**
|
|
8
|
-
* Optional diff snapshots captured during the run (e.g., git diff output).
|
|
9
|
-
* This provides concrete evidence of changes for headless consumers.
|
|
10
|
-
*/
|
|
11
|
-
diffSnapshots?: DiffSnapshot[];
|
|
12
|
-
}
|
|
13
|
-
export interface DiffSnapshot {
|
|
14
|
-
command: string;
|
|
15
|
-
output: string;
|
|
16
|
-
}
|
|
17
|
-
export interface AiFlowRisk {
|
|
18
|
-
id: string;
|
|
19
|
-
severity: 'critical' | 'high' | 'medium' | 'low';
|
|
20
|
-
summary: string;
|
|
21
|
-
details?: string;
|
|
22
|
-
}
|
|
23
|
-
export interface AiFlowAssessment {
|
|
24
|
-
risks: AiFlowRisk[];
|
|
25
|
-
recommendations: string[];
|
|
26
|
-
stats: {
|
|
27
|
-
totalTools: number;
|
|
28
|
-
modifyingTools: number;
|
|
29
|
-
validationTools: number;
|
|
30
|
-
readTools: number;
|
|
31
|
-
gitDiffChecks: number;
|
|
32
|
-
gitStatusChecks: number;
|
|
33
|
-
};
|
|
34
|
-
evidence?: {
|
|
35
|
-
diffs?: DiffSnapshot[];
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Evaluate a single agent run for risk of "looks right but wrong" hallucinations.
|
|
40
|
-
* Uses heuristic signals: whether change work was requested, tool usage per run,
|
|
41
|
-
* claims in the final response, and absence of validation.
|
|
42
|
-
*/
|
|
43
|
-
export declare function assessAiFlow(context: AiFlowContext): AiFlowAssessment;
|
|
44
|
-
//# sourceMappingURL=aiFlowSupervisor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"aiFlowSupervisor.d.ts","sourceRoot":"","sources":["../../src/core/aiFlowSupervisor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACzC;;;OAGG;IACH,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,KAAK,EAAE;QACL,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;KACxB,CAAC;CACH;AAmFD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,gBAAgB,CAsHrE"}
|
|
@@ -1,299 +0,0 @@
|
|
|
1
|
-
const CHANGE_KEYWORDS = [
|
|
2
|
-
'fix',
|
|
3
|
-
'bug',
|
|
4
|
-
'issue',
|
|
5
|
-
'broken',
|
|
6
|
-
'error',
|
|
7
|
-
'implement',
|
|
8
|
-
'add ',
|
|
9
|
-
'update',
|
|
10
|
-
'upgrade',
|
|
11
|
-
'refactor',
|
|
12
|
-
'rewrite',
|
|
13
|
-
'optimize',
|
|
14
|
-
'support',
|
|
15
|
-
];
|
|
16
|
-
/**
|
|
17
|
-
* Keywords that indicate an informational/read-only query where no changes are expected.
|
|
18
|
-
* When these are detected, we skip most risk checks to avoid false positives.
|
|
19
|
-
*/
|
|
20
|
-
const INFORMATIONAL_KEYWORDS = [
|
|
21
|
-
'summarize',
|
|
22
|
-
'summary',
|
|
23
|
-
'explain',
|
|
24
|
-
'describe',
|
|
25
|
-
'what is',
|
|
26
|
-
'what are',
|
|
27
|
-
'how does',
|
|
28
|
-
'how do',
|
|
29
|
-
'show me',
|
|
30
|
-
'list ',
|
|
31
|
-
'tell me',
|
|
32
|
-
'analyze',
|
|
33
|
-
'review',
|
|
34
|
-
'understand',
|
|
35
|
-
'overview',
|
|
36
|
-
'structure',
|
|
37
|
-
'architecture',
|
|
38
|
-
'documentation',
|
|
39
|
-
'help me understand',
|
|
40
|
-
'walk me through',
|
|
41
|
-
'breakdown',
|
|
42
|
-
'highlights',
|
|
43
|
-
'key files',
|
|
44
|
-
'main files',
|
|
45
|
-
'codebase',
|
|
46
|
-
'repo structure',
|
|
47
|
-
'project structure',
|
|
48
|
-
'directory structure',
|
|
49
|
-
];
|
|
50
|
-
const COMPLETION_KEYWORDS = [
|
|
51
|
-
'fixed',
|
|
52
|
-
'implemented',
|
|
53
|
-
'added',
|
|
54
|
-
'updated',
|
|
55
|
-
'refactored',
|
|
56
|
-
'resolved',
|
|
57
|
-
'completed',
|
|
58
|
-
'done',
|
|
59
|
-
'working now',
|
|
60
|
-
'applied',
|
|
61
|
-
'addressed',
|
|
62
|
-
];
|
|
63
|
-
const VALIDATION_KEYWORDS = [
|
|
64
|
-
'test',
|
|
65
|
-
'tests',
|
|
66
|
-
'jest',
|
|
67
|
-
'vitest',
|
|
68
|
-
'mocha',
|
|
69
|
-
'ava',
|
|
70
|
-
'cypress',
|
|
71
|
-
'playwright',
|
|
72
|
-
'build',
|
|
73
|
-
'lint',
|
|
74
|
-
'typecheck',
|
|
75
|
-
'type-check',
|
|
76
|
-
'tsc',
|
|
77
|
-
];
|
|
78
|
-
/**
|
|
79
|
-
* Evaluate a single agent run for risk of "looks right but wrong" hallucinations.
|
|
80
|
-
* Uses heuristic signals: whether change work was requested, tool usage per run,
|
|
81
|
-
* claims in the final response, and absence of validation.
|
|
82
|
-
*/
|
|
83
|
-
export function assessAiFlow(context) {
|
|
84
|
-
const windowedTools = filterToolsForRun(context.toolHistory, context.startedAt);
|
|
85
|
-
const stats = classifyTools(windowedTools);
|
|
86
|
-
const diffEvidence = context.diffSnapshots?.length ? context.diffSnapshots : undefined;
|
|
87
|
-
// Check if this is an informational/read-only query first
|
|
88
|
-
const isInformationalQuery = containsKeyword(context.prompt, INFORMATIONAL_KEYWORDS);
|
|
89
|
-
// For informational queries, only flag issues if there's something truly problematic
|
|
90
|
-
// (e.g., claiming to have made changes when none were made)
|
|
91
|
-
if (isInformationalQuery && stats.modifyingTools === 0) {
|
|
92
|
-
// This is a read-only query handled with read-only tools - no risks
|
|
93
|
-
return {
|
|
94
|
-
risks: [],
|
|
95
|
-
recommendations: [],
|
|
96
|
-
stats: {
|
|
97
|
-
totalTools: windowedTools.length,
|
|
98
|
-
modifyingTools: stats.modifyingTools,
|
|
99
|
-
validationTools: stats.validationTools,
|
|
100
|
-
readTools: stats.readTools,
|
|
101
|
-
gitDiffChecks: stats.gitDiffChecks,
|
|
102
|
-
gitStatusChecks: stats.gitStatusChecks,
|
|
103
|
-
},
|
|
104
|
-
evidence: diffEvidence ? { diffs: diffEvidence } : undefined,
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
const requiresChange = containsKeyword(context.prompt, CHANGE_KEYWORDS) && !isInformationalQuery;
|
|
108
|
-
const isBugReport = /\b(bug|error|broken|fails?|failing|incorrect)\b/i.test(context.prompt) && !isInformationalQuery;
|
|
109
|
-
const claimsCompletion = containsKeyword(context.response, COMPLETION_KEYWORDS);
|
|
110
|
-
const claimsValidation = containsKeyword(context.response, VALIDATION_KEYWORDS);
|
|
111
|
-
const risks = [];
|
|
112
|
-
const recommendations = [];
|
|
113
|
-
if (requiresChange && windowedTools.length === 0) {
|
|
114
|
-
risks.push({
|
|
115
|
-
id: 'no-tools-executed',
|
|
116
|
-
severity: 'critical',
|
|
117
|
-
summary: 'Change-request with zero tool usage',
|
|
118
|
-
details: 'User asked for changes but no tools were executed in this run.',
|
|
119
|
-
});
|
|
120
|
-
recommendations.push('Re-run the request and actually inspect/modify files with the edit/write tools.');
|
|
121
|
-
}
|
|
122
|
-
if (requiresChange && stats.modifyingTools === 0 && windowedTools.length > 0) {
|
|
123
|
-
risks.push({
|
|
124
|
-
id: 'no-modifications-observed',
|
|
125
|
-
severity: 'high',
|
|
126
|
-
summary: 'Only read/analysis tools were used',
|
|
127
|
-
details: 'No modifying tools ran despite a change-focused request.',
|
|
128
|
-
});
|
|
129
|
-
recommendations.push('Apply edits using Edit/Write (or a bash patch) before claiming completion.');
|
|
130
|
-
}
|
|
131
|
-
if (claimsCompletion && stats.modifyingTools === 0) {
|
|
132
|
-
risks.push({
|
|
133
|
-
id: 'claims-completion-without-changes',
|
|
134
|
-
severity: 'high',
|
|
135
|
-
summary: 'Completion claimed with no evidence of edits',
|
|
136
|
-
details: 'Final message claims work is complete but no modifying tools ran.',
|
|
137
|
-
});
|
|
138
|
-
recommendations.push('Perform the actual changes and surface a diff before marking complete.');
|
|
139
|
-
}
|
|
140
|
-
if (claimsValidation && stats.validationTools === 0) {
|
|
141
|
-
risks.push({
|
|
142
|
-
id: 'claims-validation-without-evidence',
|
|
143
|
-
severity: 'medium',
|
|
144
|
-
summary: 'Tests/build claimed without running validation tools',
|
|
145
|
-
details: 'Response mentions tests/builds but none were observed.',
|
|
146
|
-
});
|
|
147
|
-
recommendations.push('Run tests/builds (npm test, npm run build, lint) to back the claim.');
|
|
148
|
-
}
|
|
149
|
-
if (stats.modifyingTools > 0 && stats.validationTools === 0) {
|
|
150
|
-
risks.push({
|
|
151
|
-
id: 'unvalidated-modifications',
|
|
152
|
-
severity: 'medium',
|
|
153
|
-
summary: 'Edits were made with no validation',
|
|
154
|
-
details: 'Changes were applied but no tests/builds were executed afterward.',
|
|
155
|
-
});
|
|
156
|
-
recommendations.push('Run a targeted validation command after edits to confirm behavior.');
|
|
157
|
-
}
|
|
158
|
-
if (isBugReport && stats.validationTools === 0) {
|
|
159
|
-
risks.push({
|
|
160
|
-
id: 'no-reproduction-attempt',
|
|
161
|
-
severity: 'medium',
|
|
162
|
-
summary: 'Bug report handled without reproduction',
|
|
163
|
-
details: 'No reproduction or failing command/test was attempted.',
|
|
164
|
-
});
|
|
165
|
-
recommendations.push('Attempt to reproduce the bug with a failing test or command before proposing a fix.');
|
|
166
|
-
}
|
|
167
|
-
if (stats.modifyingTools > 0 && stats.gitDiffChecks === 0) {
|
|
168
|
-
risks.push({
|
|
169
|
-
id: 'no-diff-captured',
|
|
170
|
-
severity: 'medium',
|
|
171
|
-
summary: 'Changes applied without capturing a git diff',
|
|
172
|
-
details: 'No git diff/show commands were observed after edits.',
|
|
173
|
-
});
|
|
174
|
-
recommendations.push('Capture `git diff` or `git show` after edits to provide evidence of changes.');
|
|
175
|
-
}
|
|
176
|
-
return {
|
|
177
|
-
risks,
|
|
178
|
-
recommendations,
|
|
179
|
-
stats: {
|
|
180
|
-
totalTools: windowedTools.length,
|
|
181
|
-
modifyingTools: stats.modifyingTools,
|
|
182
|
-
validationTools: stats.validationTools,
|
|
183
|
-
readTools: stats.readTools,
|
|
184
|
-
gitDiffChecks: stats.gitDiffChecks,
|
|
185
|
-
gitStatusChecks: stats.gitStatusChecks,
|
|
186
|
-
},
|
|
187
|
-
evidence: diffEvidence ? { diffs: diffEvidence } : undefined,
|
|
188
|
-
};
|
|
189
|
-
}
|
|
190
|
-
function filterToolsForRun(history, startedAt) {
|
|
191
|
-
const WINDOW_PADDING_MS = 200; // include slight overlap for pre-flight calls
|
|
192
|
-
const cutoff = Math.max(0, startedAt - WINDOW_PADDING_MS);
|
|
193
|
-
return history.filter((entry) => entry.timestamp >= cutoff);
|
|
194
|
-
}
|
|
195
|
-
function classifyTools(tools) {
|
|
196
|
-
let modifyingTools = 0;
|
|
197
|
-
let validationTools = 0;
|
|
198
|
-
let readTools = 0;
|
|
199
|
-
let gitDiffChecks = 0;
|
|
200
|
-
let gitStatusChecks = 0;
|
|
201
|
-
for (const entry of tools) {
|
|
202
|
-
const name = entry.toolName.toLowerCase();
|
|
203
|
-
const commands = extractCommands(entry);
|
|
204
|
-
if (isModificationTool(name, commands)) {
|
|
205
|
-
modifyingTools++;
|
|
206
|
-
}
|
|
207
|
-
else if (isValidationTool(name, commands)) {
|
|
208
|
-
validationTools++;
|
|
209
|
-
}
|
|
210
|
-
else if (isReadTool(name)) {
|
|
211
|
-
readTools++;
|
|
212
|
-
}
|
|
213
|
-
for (const cmd of commands) {
|
|
214
|
-
if (commandIsGitDiff(cmd)) {
|
|
215
|
-
gitDiffChecks++;
|
|
216
|
-
}
|
|
217
|
-
if (commandIsGitStatus(cmd)) {
|
|
218
|
-
gitStatusChecks++;
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
return { modifyingTools, validationTools, readTools, gitDiffChecks, gitStatusChecks };
|
|
223
|
-
}
|
|
224
|
-
function isModificationTool(name, commands) {
|
|
225
|
-
if (name.includes('edit') ||
|
|
226
|
-
name.includes('write') ||
|
|
227
|
-
name.includes('patch') ||
|
|
228
|
-
name.includes('apply_patch') ||
|
|
229
|
-
name.includes('replace') ||
|
|
230
|
-
name.includes('notebook_edit') ||
|
|
231
|
-
name.includes('codegen') ||
|
|
232
|
-
name.includes('update')) {
|
|
233
|
-
return true;
|
|
234
|
-
}
|
|
235
|
-
return commands.some(commandSuggestsWrite);
|
|
236
|
-
}
|
|
237
|
-
function isValidationTool(name, commands) {
|
|
238
|
-
if (name.includes('test') ||
|
|
239
|
-
name.includes('lint') ||
|
|
240
|
-
name.includes('build') ||
|
|
241
|
-
name.includes('check') ||
|
|
242
|
-
name.includes('validate')) {
|
|
243
|
-
return true;
|
|
244
|
-
}
|
|
245
|
-
return commands.some(commandSuggestsValidation);
|
|
246
|
-
}
|
|
247
|
-
function isReadTool(name) {
|
|
248
|
-
return (name.includes('read') ||
|
|
249
|
-
name.includes('list') ||
|
|
250
|
-
name.includes('search') ||
|
|
251
|
-
name.includes('glob') ||
|
|
252
|
-
name.includes('grep') ||
|
|
253
|
-
name.includes('find'));
|
|
254
|
-
}
|
|
255
|
-
function extractCommands(entry) {
|
|
256
|
-
const commands = [];
|
|
257
|
-
const args = entry.args;
|
|
258
|
-
const command = args['command'];
|
|
259
|
-
if (typeof command === 'string' && command.trim()) {
|
|
260
|
-
commands.push(command.trim());
|
|
261
|
-
}
|
|
262
|
-
const commandList = args['commands'];
|
|
263
|
-
if (Array.isArray(commandList)) {
|
|
264
|
-
for (const value of commandList) {
|
|
265
|
-
if (typeof value === 'string' && value.trim()) {
|
|
266
|
-
commands.push(value.trim());
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
return commands;
|
|
271
|
-
}
|
|
272
|
-
function commandSuggestsWrite(command) {
|
|
273
|
-
const normalized = command.toLowerCase();
|
|
274
|
-
return (normalized.includes('cat >') ||
|
|
275
|
-
normalized.includes('tee ') ||
|
|
276
|
-
normalized.includes('apply_patch') ||
|
|
277
|
-
normalized.includes('>>') ||
|
|
278
|
-
/\b(sed|perl|python)\s+-i\b/.test(normalized) ||
|
|
279
|
-
/\b(git\s+(apply|checkout|commit|push))\b/.test(normalized));
|
|
280
|
-
}
|
|
281
|
-
function commandSuggestsValidation(command) {
|
|
282
|
-
const normalized = command.toLowerCase();
|
|
283
|
-
return (/\b(npm|yarn|pnpm)\s+(run\s+)?(test|lint|build|typecheck|type-check)\b/.test(normalized) ||
|
|
284
|
-
/\b(jest|vitest|mocha|ava|pytest|go\s+test|cargo\s+test|pytest)\b/.test(normalized) ||
|
|
285
|
-
/\b(tsc|eslint|flake8|mypy|ruff)\b/.test(normalized));
|
|
286
|
-
}
|
|
287
|
-
function commandIsGitDiff(command) {
|
|
288
|
-
const normalized = command.toLowerCase();
|
|
289
|
-
return /\bgit\s+(diff|show)\b/.test(normalized);
|
|
290
|
-
}
|
|
291
|
-
function commandIsGitStatus(command) {
|
|
292
|
-
const normalized = command.toLowerCase();
|
|
293
|
-
return /\bgit\s+status\b/.test(normalized);
|
|
294
|
-
}
|
|
295
|
-
function containsKeyword(text, keywords) {
|
|
296
|
-
const lower = text.toLowerCase();
|
|
297
|
-
return keywords.some((keyword) => lower.includes(keyword));
|
|
298
|
-
}
|
|
299
|
-
//# sourceMappingURL=aiFlowSupervisor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"aiFlowSupervisor.js","sourceRoot":"","sources":["../../src/core/aiFlowSupervisor.ts"],"names":[],"mappings":"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"}
|