erosolar-cli 1.7.27 → 1.7.29
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/browser/BrowserSessionManager.js +1 -1
- package/dist/browser/BrowserSessionManager.js.map +1 -1
- package/dist/core/agent.d.ts +3 -3
- package/dist/core/agent.d.ts.map +1 -1
- package/dist/core/agent.js +57 -4
- package/dist/core/agent.js.map +1 -1
- package/dist/core/agentRulebook.js +1 -1
- package/dist/core/agentRulebook.js.map +1 -1
- package/dist/core/contextManager.js +2 -2
- package/dist/core/contextManager.js.map +1 -1
- package/dist/core/designThoughtCheck.d.ts +196 -0
- package/dist/core/designThoughtCheck.d.ts.map +1 -0
- package/dist/core/designThoughtCheck.js +287 -0
- package/dist/core/designThoughtCheck.js.map +1 -0
- package/dist/core/designThoughtCheckEngine.d.ts +58 -0
- package/dist/core/designThoughtCheckEngine.d.ts.map +1 -0
- package/dist/core/designThoughtCheckEngine.js +358 -0
- package/dist/core/designThoughtCheckEngine.js.map +1 -0
- package/dist/core/designThoughtCheckIntegration.d.ts +103 -0
- package/dist/core/designThoughtCheckIntegration.d.ts.map +1 -0
- package/dist/core/designThoughtCheckIntegration.js +207 -0
- package/dist/core/designThoughtCheckIntegration.js.map +1 -0
- package/dist/core/isolatedVerifier.d.ts +18 -0
- package/dist/core/isolatedVerifier.d.ts.map +1 -0
- package/dist/core/isolatedVerifier.js +349 -0
- package/dist/core/isolatedVerifier.js.map +1 -0
- package/dist/core/responseVerifier.d.ts +11 -2
- package/dist/core/responseVerifier.d.ts.map +1 -1
- package/dist/core/responseVerifier.js +108 -73
- package/dist/core/responseVerifier.js.map +1 -1
- package/dist/intelligence/testGenerator.js +2 -2
- package/dist/intelligence/testGenerator.js.map +1 -1
- package/dist/providers/openaiChatCompletionsProvider.js +5 -5
- package/dist/providers/openaiChatCompletionsProvider.js.map +1 -1
- package/dist/security/active-stack-security.js +2 -2
- package/dist/security/active-stack-security.js.map +1 -1
- package/dist/shell/bracketedPasteManager.enhanced.d.ts +2 -0
- package/dist/shell/bracketedPasteManager.enhanced.d.ts.map +1 -0
- package/dist/shell/bracketedPasteManager.enhanced.js +4 -0
- package/dist/shell/bracketedPasteManager.enhanced.js.map +1 -0
- package/dist/shell/inputProcessor.js +2 -2
- package/dist/shell/inputProcessor.js.map +1 -1
- package/dist/shell/interactiveShell.d.ts +16 -2
- package/dist/shell/interactiveShell.d.ts.map +1 -1
- package/dist/shell/interactiveShell.js +81 -22
- package/dist/shell/interactiveShell.js.map +1 -1
- package/dist/tools/cloudTools.js +2 -2
- package/dist/tools/cloudTools.js.map +1 -1
- package/dist/tools/devTools.js +2 -2
- package/dist/tools/devTools.js.map +1 -1
- package/dist/tools/diffUtils.js +22 -2
- package/dist/tools/diffUtils.js.map +1 -1
- package/dist/tools/fileTools.d.ts.map +1 -1
- package/dist/tools/fileTools.js +20 -2
- package/dist/tools/fileTools.js.map +1 -1
- package/dist/tools/frontendTestingTools.js +1 -1
- package/dist/tools/frontendTestingTools.js.map +1 -1
- package/dist/tools/globTools.js +1 -1
- package/dist/tools/globTools.js.map +1 -1
- package/dist/tools/grepTools.js +1 -1
- package/dist/tools/grepTools.js.map +1 -1
- package/dist/tools/webTools.js +2 -2
- package/dist/tools/webTools.js.map +1 -1
- package/dist/ui/ShellUIAdapter.d.ts +5 -0
- package/dist/ui/ShellUIAdapter.d.ts.map +1 -1
- package/dist/ui/ShellUIAdapter.js +30 -7
- package/dist/ui/ShellUIAdapter.js.map +1 -1
- package/dist/ui/advancedTheme.js +1 -1
- package/dist/ui/advancedTheme.js.map +1 -1
- package/dist/ui/diffViewer.js +1 -1
- package/dist/ui/diffViewer.js.map +1 -1
- package/dist/ui/display.js +3 -3
- package/dist/ui/display.js.map +1 -1
- package/dist/ui/logFormatter.js +1 -1
- package/dist/ui/logFormatter.js.map +1 -1
- package/dist/ui/outputSummarizer.js +6 -7
- package/dist/ui/outputSummarizer.js.map +1 -1
- package/dist/ui/persistentPrompt.js +4 -4
- package/dist/ui/persistentPrompt.js.map +1 -1
- package/dist/ui/tableFormatter.js +4 -4
- package/dist/ui/tableFormatter.js.map +1 -1
- package/dist/ui/textHighlighter.js +2 -2
- package/dist/ui/textHighlighter.js.map +1 -1
- package/dist/ui/toolDisplay.d.ts +18 -0
- package/dist/ui/toolDisplay.d.ts.map +1 -1
- package/dist/ui/toolDisplay.js +922 -6
- package/dist/ui/toolDisplay.js.map +1 -1
- package/dist/ui/treeVisualizer.js +1 -1
- package/dist/ui/treeVisualizer.js.map +1 -1
- package/package.json +12 -3
- package/scripts/isolated-verification-runner.mjs +364 -0
- package/scripts/isolated-verification-wrapper.mjs +276 -0
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Design Thought Check Integration
|
|
3
|
+
*
|
|
4
|
+
* Integrates the design thought check system with the existing agent architecture
|
|
5
|
+
* to automatically validate implementation decisions before execution.
|
|
6
|
+
*
|
|
7
|
+
* @license MIT
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Design Thought Check Integration Manager
|
|
11
|
+
*
|
|
12
|
+
* Manages the integration of design thought checks with the agent system,
|
|
13
|
+
* automatically validating implementation decisions before execution.
|
|
14
|
+
*/
|
|
15
|
+
export class DesignThoughtCheckIntegration {
|
|
16
|
+
engine;
|
|
17
|
+
options;
|
|
18
|
+
constructor(engine, options = {
|
|
19
|
+
enabled: true,
|
|
20
|
+
minValidationScore: 70,
|
|
21
|
+
blockOnCriticalIssues: true,
|
|
22
|
+
logResults: true,
|
|
23
|
+
provideSuggestions: true
|
|
24
|
+
}) {
|
|
25
|
+
this.engine = engine;
|
|
26
|
+
this.options = {
|
|
27
|
+
enabled: options.enabled ?? true,
|
|
28
|
+
minValidationScore: options.minValidationScore ?? 70,
|
|
29
|
+
blockOnCriticalIssues: options.blockOnCriticalIssues ?? true,
|
|
30
|
+
logResults: options.logResults ?? true,
|
|
31
|
+
provideSuggestions: options.provideSuggestions ?? true
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Check if a set of tool calls should be executed based on design validation
|
|
36
|
+
*/
|
|
37
|
+
async shouldExecuteToolCalls(intent, approach, toolCalls, agent) {
|
|
38
|
+
if (!this.options.enabled) {
|
|
39
|
+
return { shouldExecute: true, reason: 'Design thought checks disabled' };
|
|
40
|
+
}
|
|
41
|
+
// Perform comprehensive design thought check
|
|
42
|
+
const thoughtCheck = await this.engine.check(intent, approach, toolCalls);
|
|
43
|
+
// Check for critical issues
|
|
44
|
+
if (this.options.blockOnCriticalIssues && thoughtCheck.validation.criticalIssues.length > 0) {
|
|
45
|
+
return {
|
|
46
|
+
shouldExecute: false,
|
|
47
|
+
reason: `Critical design issues detected: ${thoughtCheck.validation.criticalIssues.map(issue => issue.description).join(', ')}`,
|
|
48
|
+
improvements: thoughtCheck.recommendation.requiredChanges,
|
|
49
|
+
thoughtCheck
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
// Check validation score
|
|
53
|
+
if (thoughtCheck.validation.score < this.options.minValidationScore) {
|
|
54
|
+
return {
|
|
55
|
+
shouldExecute: false,
|
|
56
|
+
reason: `Design validation score too low: ${thoughtCheck.validation.score}/${this.options.minValidationScore}`,
|
|
57
|
+
improvements: thoughtCheck.recommendation.requiredChanges,
|
|
58
|
+
thoughtCheck
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
// Check production readiness
|
|
62
|
+
if (thoughtCheck.productionReadiness < this.options.minValidationScore) {
|
|
63
|
+
return {
|
|
64
|
+
shouldExecute: false,
|
|
65
|
+
reason: `Production readiness too low: ${thoughtCheck.productionReadiness}/${this.options.minValidationScore}`,
|
|
66
|
+
improvements: thoughtCheck.recommendation.recommendedImprovements,
|
|
67
|
+
thoughtCheck
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
// Log results if enabled
|
|
71
|
+
if (this.options.logResults) {
|
|
72
|
+
this.logThoughtCheckResults(thoughtCheck, agent);
|
|
73
|
+
}
|
|
74
|
+
return {
|
|
75
|
+
shouldExecute: true,
|
|
76
|
+
reason: `Design validation passed: ${thoughtCheck.validation.score}/100`,
|
|
77
|
+
improvements: this.options.provideSuggestions ? thoughtCheck.recommendation.recommendedImprovements : [],
|
|
78
|
+
thoughtCheck
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Get improvement suggestions for a set of tool calls
|
|
83
|
+
*/
|
|
84
|
+
async getImprovementSuggestions(intent, approach, toolCalls) {
|
|
85
|
+
const thoughtCheck = await this.engine.check(intent, approach, toolCalls, {
|
|
86
|
+
exploreAlternatives: true,
|
|
87
|
+
assessProductionReadiness: true
|
|
88
|
+
});
|
|
89
|
+
return {
|
|
90
|
+
suggestions: [
|
|
91
|
+
...thoughtCheck.recommendation.requiredChanges,
|
|
92
|
+
...thoughtCheck.recommendation.recommendedImprovements
|
|
93
|
+
],
|
|
94
|
+
alternatives: thoughtCheck.alternatives,
|
|
95
|
+
risks: thoughtCheck.risks
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Validate a specific implementation approach
|
|
100
|
+
*/
|
|
101
|
+
async validateApproach(intent, approach, toolCalls) {
|
|
102
|
+
const thoughtCheck = await this.engine.check(intent, approach, toolCalls);
|
|
103
|
+
return {
|
|
104
|
+
isValid: thoughtCheck.recommendation.verdict === 'approve' || thoughtCheck.recommendation.verdict === 'approve-with-changes',
|
|
105
|
+
score: thoughtCheck.validation.score,
|
|
106
|
+
criticalIssues: thoughtCheck.validation.criticalIssues.map(issue => issue.description),
|
|
107
|
+
warnings: thoughtCheck.validation.warnings.map(warning => warning.description),
|
|
108
|
+
suggestions: thoughtCheck.validation.suggestions.map(suggestion => suggestion.description)
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Compare multiple implementation approaches
|
|
113
|
+
*/
|
|
114
|
+
async compareApproaches(intent, approaches) {
|
|
115
|
+
const results = [];
|
|
116
|
+
for (const approach of approaches) {
|
|
117
|
+
const thoughtCheck = await this.engine.check(intent, approach.description, approach.toolCalls);
|
|
118
|
+
results.push({
|
|
119
|
+
name: approach.name,
|
|
120
|
+
description: approach.description,
|
|
121
|
+
validationScore: thoughtCheck.validation.score,
|
|
122
|
+
productionReadiness: thoughtCheck.productionReadiness,
|
|
123
|
+
criticalIssues: thoughtCheck.validation.criticalIssues.length,
|
|
124
|
+
recommendation: thoughtCheck.recommendation.verdict
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
// Sort by validation score (descending)
|
|
128
|
+
return results.sort((a, b) => b.validationScore - a.validationScore);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Log thought check results
|
|
132
|
+
*/
|
|
133
|
+
logThoughtCheckResults(thoughtCheck, agent) {
|
|
134
|
+
const logEntry = {
|
|
135
|
+
timestamp: new Date().toISOString(),
|
|
136
|
+
thoughtCheckId: thoughtCheck.id,
|
|
137
|
+
intent: thoughtCheck.originalIntent,
|
|
138
|
+
validationScore: thoughtCheck.validation.score,
|
|
139
|
+
productionReadiness: thoughtCheck.productionReadiness,
|
|
140
|
+
criticalIssues: thoughtCheck.validation.criticalIssues.length,
|
|
141
|
+
warnings: thoughtCheck.validation.warnings.length,
|
|
142
|
+
suggestions: thoughtCheck.validation.suggestions.length,
|
|
143
|
+
recommendation: thoughtCheck.recommendation.verdict,
|
|
144
|
+
confidence: thoughtCheck.recommendation.confidence
|
|
145
|
+
};
|
|
146
|
+
// Log to agent's logging system if available
|
|
147
|
+
if (agent.logger) {
|
|
148
|
+
agent.logger.info('Design thought check completed', logEntry);
|
|
149
|
+
}
|
|
150
|
+
// Also log to console for visibility
|
|
151
|
+
console.log(`🧠 Design Thought Check: ${thoughtCheck.validation.score}/100 | ${thoughtCheck.recommendation.verdict} | ${thoughtCheck.originalIntent.substring(0, 50)}...`);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Update integration options
|
|
155
|
+
*/
|
|
156
|
+
updateOptions(newOptions) {
|
|
157
|
+
this.options = { ...this.options, ...newOptions };
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Get current integration status
|
|
161
|
+
*/
|
|
162
|
+
getStatus() {
|
|
163
|
+
// This would track actual metrics in a real implementation
|
|
164
|
+
return {
|
|
165
|
+
enabled: this.options.enabled,
|
|
166
|
+
minValidationScore: this.options.minValidationScore,
|
|
167
|
+
blockOnCriticalIssues: this.options.blockOnCriticalIssues,
|
|
168
|
+
checksPerformed: 0, // Would be tracked in real implementation
|
|
169
|
+
averageScore: 0 // Would be tracked in real implementation
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Factory function to create design thought check integration
|
|
175
|
+
*/
|
|
176
|
+
export function createDesignThoughtCheckIntegration(options) {
|
|
177
|
+
// Import and create the engine
|
|
178
|
+
// In a real implementation, this would import the actual engine
|
|
179
|
+
const engine = {}; // Placeholder
|
|
180
|
+
return new DesignThoughtCheckIntegration(engine, options);
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Decorator for agent methods to automatically perform design thought checks
|
|
184
|
+
*/
|
|
185
|
+
export function withDesignThoughtCheck(integration) {
|
|
186
|
+
return function (target, propertyName, descriptor) {
|
|
187
|
+
const method = descriptor.value;
|
|
188
|
+
descriptor.value = async function (...args) {
|
|
189
|
+
// Extract intent, approach, and tool calls from arguments
|
|
190
|
+
// This would need to be adapted based on the actual method signature
|
|
191
|
+
const [intent, approach, toolCalls] = args;
|
|
192
|
+
if (toolCalls && Array.isArray(toolCalls)) {
|
|
193
|
+
const shouldExecute = await integration.shouldExecuteToolCalls(intent, approach, toolCalls, this);
|
|
194
|
+
if (!shouldExecute.shouldExecute) {
|
|
195
|
+
throw new Error(`Design validation failed: ${shouldExecute.reason}`);
|
|
196
|
+
}
|
|
197
|
+
// Log improvements if any
|
|
198
|
+
if (shouldExecute.improvements && shouldExecute.improvements.length > 0) {
|
|
199
|
+
console.log('💡 Design improvements suggested:', shouldExecute.improvements);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
return method.apply(this, args);
|
|
203
|
+
};
|
|
204
|
+
return descriptor;
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=designThoughtCheckIntegration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"designThoughtCheckIntegration.js","sourceRoot":"","sources":["../../src/core/designThoughtCheckIntegration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Isolated Verification Runner
|
|
4
|
+
*
|
|
5
|
+
* This script runs in a completely separate Node.js process to verify
|
|
6
|
+
* assistant responses. It receives verification requests via stdin and
|
|
7
|
+
* outputs results via stdout.
|
|
8
|
+
*
|
|
9
|
+
* This ensures verification is completely isolated from the main CLI process:
|
|
10
|
+
* - Separate memory space
|
|
11
|
+
* - Separate event loop
|
|
12
|
+
* - Independent error handling
|
|
13
|
+
* - No shared state with main process
|
|
14
|
+
*
|
|
15
|
+
* @license MIT
|
|
16
|
+
*/
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=isolatedVerifier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isolatedVerifier.d.ts","sourceRoot":"","sources":["../../src/core/isolatedVerifier.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;GAcG"}
|
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Isolated Verification Runner
|
|
4
|
+
*
|
|
5
|
+
* This script runs in a completely separate Node.js process to verify
|
|
6
|
+
* assistant responses. It receives verification requests via stdin and
|
|
7
|
+
* outputs results via stdout.
|
|
8
|
+
*
|
|
9
|
+
* This ensures verification is completely isolated from the main CLI process:
|
|
10
|
+
* - Separate memory space
|
|
11
|
+
* - Separate event loop
|
|
12
|
+
* - Independent error handling
|
|
13
|
+
* - No shared state with main process
|
|
14
|
+
*
|
|
15
|
+
* @license MIT
|
|
16
|
+
*/
|
|
17
|
+
import { createProvider } from '../providers/providerFactory.js';
|
|
18
|
+
import { exec } from 'node:child_process';
|
|
19
|
+
import { promisify } from 'node:util';
|
|
20
|
+
const execAsync = promisify(exec);
|
|
21
|
+
// ============================================================================
|
|
22
|
+
// CLAIM EXTRACTION
|
|
23
|
+
// ============================================================================
|
|
24
|
+
const EXTRACT_CLAIMS_PROMPT = `Extract ALL verifiable claims from this AI assistant response.
|
|
25
|
+
|
|
26
|
+
RESPONSE:
|
|
27
|
+
---
|
|
28
|
+
{RESPONSE}
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
CONTEXT: {CONTEXT}
|
|
32
|
+
WORKING_DIR: {WORKING_DIR}
|
|
33
|
+
|
|
34
|
+
For each claim, determine:
|
|
35
|
+
1. What specific assertion is being made
|
|
36
|
+
2. Category: file_op (created/modified/deleted files), code (compiles/tests pass), command (executed successfully), state (something changed), behavior (feature works), fact (verifiable truth)
|
|
37
|
+
3. How it can be verified (shell command, file check, etc.)
|
|
38
|
+
4. Priority: critical (must verify), high (should verify), medium (nice to verify), low (optional)
|
|
39
|
+
|
|
40
|
+
Return JSON array:
|
|
41
|
+
[{
|
|
42
|
+
"id": "c1",
|
|
43
|
+
"statement": "the specific claim",
|
|
44
|
+
"category": "file_op|code|command|state|behavior|fact",
|
|
45
|
+
"verifiable": true,
|
|
46
|
+
"priority": "critical|high|medium|low",
|
|
47
|
+
"context": {"path": "/path/if/relevant", "command": "if relevant"}
|
|
48
|
+
}]
|
|
49
|
+
|
|
50
|
+
Output ONLY valid JSON array.`;
|
|
51
|
+
async function extractClaims(response, workingDir, conversationHistory, llmQuery) {
|
|
52
|
+
try {
|
|
53
|
+
const prompt = EXTRACT_CLAIMS_PROMPT
|
|
54
|
+
.replace('{RESPONSE}', response.slice(0, 8000))
|
|
55
|
+
.replace('{CONTEXT}', conversationHistory.slice(-3).join('\n') || '')
|
|
56
|
+
.replace('{WORKING_DIR}', workingDir);
|
|
57
|
+
const result = await llmQuery(prompt);
|
|
58
|
+
const match = result.match(/\[[\s\S]*\]/);
|
|
59
|
+
if (match) {
|
|
60
|
+
return JSON.parse(match[0]);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
// Fall through
|
|
65
|
+
}
|
|
66
|
+
return [];
|
|
67
|
+
}
|
|
68
|
+
// ============================================================================
|
|
69
|
+
// TEST GENERATION
|
|
70
|
+
// ============================================================================
|
|
71
|
+
const GENERATE_TESTS_PROMPT = `Generate isolated runtime tests for these claims.
|
|
72
|
+
|
|
73
|
+
CLAIMS:
|
|
74
|
+
{CLAIMS}
|
|
75
|
+
|
|
76
|
+
WORKING_DIR: {WORKING_DIR}
|
|
77
|
+
PLATFORM: {PLATFORM}
|
|
78
|
+
|
|
79
|
+
For each claim, generate a test that verifies it using:
|
|
80
|
+
- Shell commands (for file checks, git status, etc.)
|
|
81
|
+
- Expected output patterns
|
|
82
|
+
|
|
83
|
+
Return JSON array:
|
|
84
|
+
[{
|
|
85
|
+
"id": "test-1",
|
|
86
|
+
"description": "what we're testing",
|
|
87
|
+
"shellCommands": ["ls -la path", "cat file"],
|
|
88
|
+
"expectedOutputs": ["pattern1", "pattern2"],
|
|
89
|
+
"expectedBehavior": "description for LLM assessment",
|
|
90
|
+
"timeout": 30000
|
|
91
|
+
}]
|
|
92
|
+
|
|
93
|
+
Use READ-ONLY commands only. No destructive operations.
|
|
94
|
+
Output ONLY valid JSON array.`;
|
|
95
|
+
async function generateTests(claims, workingDir, llmQuery) {
|
|
96
|
+
if (claims.length === 0)
|
|
97
|
+
return [];
|
|
98
|
+
try {
|
|
99
|
+
const prompt = GENERATE_TESTS_PROMPT
|
|
100
|
+
.replace('{CLAIMS}', JSON.stringify(claims.slice(0, 10)))
|
|
101
|
+
.replace('{WORKING_DIR}', workingDir)
|
|
102
|
+
.replace('{PLATFORM}', process.platform);
|
|
103
|
+
const result = await llmQuery(prompt);
|
|
104
|
+
const match = result.match(/\[[\s\S]*\]/);
|
|
105
|
+
if (match) {
|
|
106
|
+
return JSON.parse(match[0]);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
// Fall through to basic tests
|
|
111
|
+
}
|
|
112
|
+
// Fallback: generate basic tests
|
|
113
|
+
return claims.filter(c => c.verifiable && (c.priority === 'critical' || c.priority === 'high')).map((c, i) => {
|
|
114
|
+
const test = {
|
|
115
|
+
id: `test-${i}`,
|
|
116
|
+
description: c.statement,
|
|
117
|
+
shellCommands: [],
|
|
118
|
+
expectedBehavior: c.statement,
|
|
119
|
+
timeout: 30000
|
|
120
|
+
};
|
|
121
|
+
// Add basic verification based on category
|
|
122
|
+
if (c.category === 'file_op' && c.context['path']) {
|
|
123
|
+
test.shellCommands = [`test -f "${c.context['path']}" && echo "EXISTS" || echo "NOT_FOUND"`];
|
|
124
|
+
test.expectedOutputs = ['EXISTS'];
|
|
125
|
+
}
|
|
126
|
+
else if (c.category === 'code') {
|
|
127
|
+
test.shellCommands = ['npm run build 2>&1 | tail -5'];
|
|
128
|
+
}
|
|
129
|
+
return test;
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
// ============================================================================
|
|
133
|
+
// TEST EXECUTION
|
|
134
|
+
// ============================================================================
|
|
135
|
+
async function runShellCommand(cmd, cwd) {
|
|
136
|
+
// Safety check - block dangerous commands
|
|
137
|
+
const dangerous = [/\brm\s/i, /rmdir/i, /sudo/i, /chmod\s*7/i, /eval\s*\(/i, /DROP\s+TABLE/i, /DELETE\s+FROM/i];
|
|
138
|
+
for (const p of dangerous) {
|
|
139
|
+
if (p.test(cmd))
|
|
140
|
+
return { ok: false, out: `Blocked dangerous command: ${p.source}` };
|
|
141
|
+
}
|
|
142
|
+
try {
|
|
143
|
+
const { stdout, stderr } = await execAsync(cmd, { cwd, timeout: 30000 });
|
|
144
|
+
return { ok: true, out: stdout + stderr };
|
|
145
|
+
}
|
|
146
|
+
catch (e) {
|
|
147
|
+
return { ok: false, out: e instanceof Error ? e.message : 'Command failed' };
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
async function runTest(test, cwd, llmQuery) {
|
|
151
|
+
const result = {
|
|
152
|
+
test,
|
|
153
|
+
success: false,
|
|
154
|
+
output: '',
|
|
155
|
+
errors: '',
|
|
156
|
+
matchedPatterns: [],
|
|
157
|
+
unmatchedPatterns: []
|
|
158
|
+
};
|
|
159
|
+
try {
|
|
160
|
+
// Run shell commands
|
|
161
|
+
if (test.shellCommands && test.shellCommands.length > 0) {
|
|
162
|
+
for (const cmd of test.shellCommands) {
|
|
163
|
+
const shellResult = await runShellCommand(cmd, cwd);
|
|
164
|
+
result.output += `$ ${cmd}\n${shellResult.out}\n`;
|
|
165
|
+
if (!shellResult.ok) {
|
|
166
|
+
result.errors += `${shellResult.out}\n`;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
// Check expected output patterns
|
|
171
|
+
if (test.expectedOutputs) {
|
|
172
|
+
for (const pattern of test.expectedOutputs) {
|
|
173
|
+
if (result.output.includes(pattern) || new RegExp(pattern, 'i').test(result.output)) {
|
|
174
|
+
result.matchedPatterns.push(pattern);
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
result.unmatchedPatterns.push(pattern);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
// LLM assessment of behavior
|
|
182
|
+
if (test.expectedBehavior) {
|
|
183
|
+
const assessPrompt = `Assess if this output demonstrates the expected behavior.
|
|
184
|
+
|
|
185
|
+
EXPECTED: ${test.expectedBehavior}
|
|
186
|
+
|
|
187
|
+
OUTPUT:
|
|
188
|
+
---
|
|
189
|
+
${result.output.slice(0, 4000)}
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
Return JSON: {"matches": true/false, "confidence": 0-100, "reasoning": "explanation"}`;
|
|
193
|
+
try {
|
|
194
|
+
const assessment = await llmQuery(assessPrompt);
|
|
195
|
+
const match = assessment.match(/\{[\s\S]*\}/);
|
|
196
|
+
if (match) {
|
|
197
|
+
const parsed = JSON.parse(match[0]);
|
|
198
|
+
result.llmAssessment = `${parsed.matches ? '✅' : '❌'} [${parsed.confidence}%] ${parsed.reasoning}`;
|
|
199
|
+
if (!parsed.matches || parsed.confidence < 70) {
|
|
200
|
+
result.unmatchedPatterns.push(`behavior: ${test.expectedBehavior}`);
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
result.matchedPatterns.push(`behavior: ${test.expectedBehavior}`);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
result.llmAssessment = 'LLM assessment failed';
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
// Determine success
|
|
212
|
+
result.success = result.unmatchedPatterns.length === 0 &&
|
|
213
|
+
(result.matchedPatterns.length > 0 || (!test.expectedOutputs?.length && !test.expectedBehavior));
|
|
214
|
+
}
|
|
215
|
+
catch (err) {
|
|
216
|
+
result.errors = err instanceof Error ? err.message : 'Unknown error';
|
|
217
|
+
}
|
|
218
|
+
return result;
|
|
219
|
+
}
|
|
220
|
+
// ============================================================================
|
|
221
|
+
// MAIN VERIFICATION
|
|
222
|
+
// ============================================================================
|
|
223
|
+
async function verify(request) {
|
|
224
|
+
const timestamp = new Date().toISOString();
|
|
225
|
+
const id = `verify-${Date.now()}`;
|
|
226
|
+
// Create LLM query function using isolated provider
|
|
227
|
+
const provider = createProvider({
|
|
228
|
+
provider: request.provider,
|
|
229
|
+
model: request.model,
|
|
230
|
+
});
|
|
231
|
+
const llmQuery = async (prompt) => {
|
|
232
|
+
const response = await provider.generate([{ role: 'user', content: prompt }], [] // No tools for verification queries
|
|
233
|
+
);
|
|
234
|
+
if (response.type === 'message' && response.content) {
|
|
235
|
+
return response.content;
|
|
236
|
+
}
|
|
237
|
+
return '';
|
|
238
|
+
};
|
|
239
|
+
// Extract claims
|
|
240
|
+
const claims = await extractClaims(request.response, request.workingDirectory, request.conversationHistory, llmQuery);
|
|
241
|
+
if (claims.length === 0) {
|
|
242
|
+
return {
|
|
243
|
+
responseId: id,
|
|
244
|
+
timestamp,
|
|
245
|
+
claims: [],
|
|
246
|
+
results: [],
|
|
247
|
+
summary: { total: 0, verified: 0, failed: 0, inconclusive: 0 },
|
|
248
|
+
overallVerdict: 'unverified',
|
|
249
|
+
trustScore: 50
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
// Generate tests
|
|
253
|
+
const tests = await generateTests(claims, request.workingDirectory, llmQuery);
|
|
254
|
+
// Run tests
|
|
255
|
+
const testResults = [];
|
|
256
|
+
for (const test of tests) {
|
|
257
|
+
const result = await runTest(test, request.workingDirectory, llmQuery);
|
|
258
|
+
testResults.push(result);
|
|
259
|
+
}
|
|
260
|
+
// Map results to claims
|
|
261
|
+
const results = claims.map((claim, i) => {
|
|
262
|
+
const testResult = testResults[i];
|
|
263
|
+
if (!testResult) {
|
|
264
|
+
return {
|
|
265
|
+
claim,
|
|
266
|
+
verified: false,
|
|
267
|
+
confidence: 'low',
|
|
268
|
+
evidence: 'No test generated',
|
|
269
|
+
method: 'skip',
|
|
270
|
+
timestamp
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
return {
|
|
274
|
+
claim,
|
|
275
|
+
verified: testResult.success,
|
|
276
|
+
confidence: testResult.success ? 'high' : (testResult.matchedPatterns.length > 0 ? 'medium' : 'low'),
|
|
277
|
+
evidence: testResult.success
|
|
278
|
+
? `Verified: ${testResult.matchedPatterns.join(', ')}`
|
|
279
|
+
: `Failed: ${testResult.unmatchedPatterns.join(', ')}`,
|
|
280
|
+
method: 'isolated-process',
|
|
281
|
+
reasoning: testResult.llmAssessment,
|
|
282
|
+
executedCode: (testResult.test.shellCommands || []).join('\n'),
|
|
283
|
+
rawOutput: testResult.output.slice(0, 2000),
|
|
284
|
+
error: testResult.errors || undefined,
|
|
285
|
+
timestamp
|
|
286
|
+
};
|
|
287
|
+
});
|
|
288
|
+
// Calculate summary
|
|
289
|
+
const verified = results.filter(r => r.verified).length;
|
|
290
|
+
const failed = results.filter(r => !r.verified && r.confidence === 'high').length;
|
|
291
|
+
const inconclusive = results.filter(r => !r.verified && r.confidence !== 'high').length;
|
|
292
|
+
// Determine verdict
|
|
293
|
+
let overallVerdict;
|
|
294
|
+
if (failed > 0) {
|
|
295
|
+
overallVerdict = 'contradicted';
|
|
296
|
+
}
|
|
297
|
+
else if (verified === claims.length && claims.length > 0) {
|
|
298
|
+
overallVerdict = 'verified';
|
|
299
|
+
}
|
|
300
|
+
else if (verified > 0) {
|
|
301
|
+
overallVerdict = 'partially_verified';
|
|
302
|
+
}
|
|
303
|
+
else {
|
|
304
|
+
overallVerdict = 'unverified';
|
|
305
|
+
}
|
|
306
|
+
const trustScore = claims.length > 0
|
|
307
|
+
? Math.round((verified / claims.length) * 100)
|
|
308
|
+
: 50;
|
|
309
|
+
return {
|
|
310
|
+
responseId: id,
|
|
311
|
+
timestamp,
|
|
312
|
+
claims,
|
|
313
|
+
results,
|
|
314
|
+
summary: { total: claims.length, verified, failed, inconclusive },
|
|
315
|
+
overallVerdict,
|
|
316
|
+
trustScore
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
// ============================================================================
|
|
320
|
+
// PROCESS ENTRY POINT
|
|
321
|
+
// ============================================================================
|
|
322
|
+
async function main() {
|
|
323
|
+
// Read request from stdin
|
|
324
|
+
let input = '';
|
|
325
|
+
process.stdin.setEncoding('utf8');
|
|
326
|
+
for await (const chunk of process.stdin) {
|
|
327
|
+
input += chunk;
|
|
328
|
+
}
|
|
329
|
+
try {
|
|
330
|
+
const request = JSON.parse(input);
|
|
331
|
+
if (request.type !== 'verify') {
|
|
332
|
+
throw new Error(`Unknown request type: ${request.type}`);
|
|
333
|
+
}
|
|
334
|
+
const report = await verify(request);
|
|
335
|
+
// Output result as JSON to stdout
|
|
336
|
+
process.stdout.write(JSON.stringify(report));
|
|
337
|
+
process.exit(0);
|
|
338
|
+
}
|
|
339
|
+
catch (error) {
|
|
340
|
+
// Output error as JSON
|
|
341
|
+
process.stdout.write(JSON.stringify({
|
|
342
|
+
error: true,
|
|
343
|
+
message: error instanceof Error ? error.message : 'Unknown error'
|
|
344
|
+
}));
|
|
345
|
+
process.exit(1);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
main();
|
|
349
|
+
//# sourceMappingURL=isolatedVerifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isolatedVerifier.js","sourceRoot":"","sources":["../../src/core/isolatedVerifier.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AA6DlC,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;8BA0BA,CAAC;AAE/B,KAAK,UAAU,aAAa,CAC1B,QAAgB,EAChB,UAAkB,EAClB,mBAA6B,EAC7B,QAA6C;IAE7C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,qBAAqB;aACjC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;aAC9C,OAAO,CAAC,WAAW,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aACpE,OAAO,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;QAExC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC1C,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAY,CAAC;QACzC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;8BAuBA,CAAC;AAE/B,KAAK,UAAU,aAAa,CAC1B,MAAe,EACf,UAAkB,EAClB,QAA6C;IAE7C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEnC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,qBAAqB;aACjC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aACxD,OAAO,CAAC,eAAe,EAAE,UAAU,CAAC;aACpC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE3C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC1C,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAmB,CAAC;QAChD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,8BAA8B;IAChC,CAAC;IAED,iCAAiC;IACjC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC3G,MAAM,IAAI,GAAiB;YACzB,EAAE,EAAE,QAAQ,CAAC,EAAE;YACf,WAAW,EAAE,CAAC,CAAC,SAAS;YACxB,aAAa,EAAE,EAAE;YACjB,gBAAgB,EAAE,CAAC,CAAC,SAAS;YAC7B,OAAO,EAAE,KAAK;SACf,CAAC;QAEF,2CAA2C;QAC3C,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,aAAa,GAAG,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,wCAAwC,CAAC,CAAC;YAC7F,IAAI,CAAC,eAAe,GAAG,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC;aAAM,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;YACjC,IAAI,CAAC,aAAa,GAAG,CAAC,8BAA8B,CAAC,CAAC;QACxD,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,KAAK,UAAU,eAAe,CAAC,GAAW,EAAE,GAAW;IACrD,0CAA0C;IAC1C,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAC;IAChH,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,8BAA8B,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;IACvF,CAAC;IAED,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACzE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC/E,CAAC;AACH,CAAC;AAYD,KAAK,UAAU,OAAO,CACpB,IAAkB,EAClB,GAAW,EACX,QAA6C;IAE7C,MAAM,MAAM,GAAe;QACzB,IAAI;QACJ,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,EAAE;QACV,eAAe,EAAE,EAAE;QACnB,iBAAiB,EAAE,EAAE;KACtB,CAAC;IAEF,IAAI,CAAC;QACH,qBAAqB;QACrB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrC,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACpD,MAAM,CAAC,MAAM,IAAI,KAAK,GAAG,KAAK,WAAW,CAAC,GAAG,IAAI,CAAC;gBAClD,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;oBACpB,MAAM,CAAC,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC;gBAC1C,CAAC;YACH,CAAC;QACH,CAAC;QAED,iCAAiC;QACjC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC3C,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;oBACpF,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACvC,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;QACH,CAAC;QAED,6BAA6B;QAC7B,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,MAAM,YAAY,GAAG;;YAEf,IAAI,CAAC,gBAAgB;;;;EAI/B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;;;sFAGwD,CAAC;YAEjF,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAChD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;gBAC9C,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAgE,CAAC;oBACnG,MAAM,CAAC,aAAa,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,UAAU,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;oBACnG,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,UAAU,GAAG,EAAE,EAAE,CAAC;wBAC9C,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;oBACtE,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;oBACpE,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,CAAC,aAAa,GAAG,uBAAuB,CAAC;YACjD,CAAC;QACH,CAAC;QAED,oBAAoB;QACpB,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC;YACrC,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEpH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;IACvE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,KAAK,UAAU,MAAM,CAAC,OAA4B;IAChD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,EAAE,GAAG,UAAU,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IAElC,oDAAoD;IACpD,MAAM,QAAQ,GAAG,cAAc,CAAC;QAC9B,QAAQ,EAAE,OAAO,CAAC,QAAkF;QACpG,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,KAAK,EAAE,MAAc,EAAmB,EAAE;QACzD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,QAAQ,CACtC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EACnC,EAAE,CAAC,oCAAoC;SACxC,CAAC;QAEF,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACpD,OAAO,QAAQ,CAAC,OAAO,CAAC;QAC1B,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IAEF,iBAAiB;IACjB,MAAM,MAAM,GAAG,MAAM,aAAa,CAChC,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,gBAAgB,EACxB,OAAO,CAAC,mBAAmB,EAC3B,QAAQ,CACT,CAAC;IAEF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO;YACL,UAAU,EAAE,EAAE;YACd,SAAS;YACT,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE;YAC9D,cAAc,EAAE,YAAY;YAC5B,UAAU,EAAE,EAAE;SACf,CAAC;IACJ,CAAC;IAED,iBAAiB;IACjB,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IAE9E,YAAY;IACZ,MAAM,WAAW,GAAiB,EAAE,CAAC;IACrC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QACvE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAED,wBAAwB;IACxB,MAAM,OAAO,GAA8B,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QACjE,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO;gBACL,KAAK;gBACL,QAAQ,EAAE,KAAK;gBACf,UAAU,EAAE,KAAc;gBAC1B,QAAQ,EAAE,mBAAmB;gBAC7B,MAAM,EAAE,MAAM;gBACd,SAAS;aACV,CAAC;QACJ,CAAC;QAED,OAAO;YACL,KAAK;YACL,QAAQ,EAAE,UAAU,CAAC,OAAO;YAC5B,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,MAAe,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAiB,CAAC,CAAC,CAAC,KAAc,CAAC;YAC/H,QAAQ,EAAE,UAAU,CAAC,OAAO;gBAC1B,CAAC,CAAC,aAAa,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACtD,CAAC,CAAC,WAAW,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACxD,MAAM,EAAE,kBAAkB;YAC1B,SAAS,EAAE,UAAU,CAAC,aAAa;YACnC,YAAY,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9D,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;YAC3C,KAAK,EAAE,UAAU,CAAC,MAAM,IAAI,SAAS;YACrC,SAAS;SACV,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,oBAAoB;IACpB,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;IACxD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IAClF,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IAExF,oBAAoB;IACpB,IAAI,cAAoD,CAAC;IACzD,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACf,cAAc,GAAG,cAAc,CAAC;IAClC,CAAC;SAAM,IAAI,QAAQ,KAAK,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3D,cAAc,GAAG,UAAU,CAAC;IAC9B,CAAC;SAAM,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACxB,cAAc,GAAG,oBAAoB,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,cAAc,GAAG,YAAY,CAAC;IAChC,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;QAClC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;QAC9C,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO;QACL,UAAU,EAAE,EAAE;QACd,SAAS;QACT,MAAM;QACN,OAAO;QACP,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE;QACjE,cAAc;QACd,UAAU;KACX,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,KAAK,UAAU,IAAI;IACjB,0BAA0B;IAC1B,IAAI,KAAK,GAAG,EAAE,CAAC;IAEf,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAElC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACxC,KAAK,IAAI,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAwB,CAAC;QAEzD,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;QAErC,kCAAkC;QAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,uBAAuB;QACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;YAClC,KAAK,EAAE,IAAI;YACX,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;SAClE,CAAC,CAAC,CAAC;QACJ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
|
|
@@ -30,6 +30,8 @@ export interface IsolatedRuntimeResult {
|
|
|
30
30
|
export interface VerificationContext {
|
|
31
31
|
workingDirectory: string;
|
|
32
32
|
conversationHistory?: string[];
|
|
33
|
+
provider: string;
|
|
34
|
+
model: string;
|
|
33
35
|
llmVerifier?: (prompt: string) => Promise<string>;
|
|
34
36
|
}
|
|
35
37
|
export interface Claim {
|
|
@@ -71,8 +73,15 @@ export interface VerificationReport {
|
|
|
71
73
|
*/
|
|
72
74
|
export declare function runIsolatedTest(test: IsolatedRuntimeTest, cwd: string, llmVerifier?: (prompt: string) => Promise<string>): Promise<IsolatedRuntimeResult>;
|
|
73
75
|
/**
|
|
74
|
-
* Verify an assistant response using isolated
|
|
75
|
-
*
|
|
76
|
+
* Verify an assistant response using a completely isolated process.
|
|
77
|
+
*
|
|
78
|
+
* This spawns a separate Node.js process to run all verification:
|
|
79
|
+
* - Separate memory space from main CLI
|
|
80
|
+
* - Separate event loop
|
|
81
|
+
* - Independent error handling
|
|
82
|
+
* - No shared state
|
|
83
|
+
*
|
|
84
|
+
* This ensures verification cannot interfere with the main process and vice versa.
|
|
76
85
|
*/
|
|
77
86
|
export declare function verifyResponse(response: string, ctx: VerificationContext, responseId?: string): Promise<VerificationReport>;
|
|
78
87
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responseVerifier.d.ts","sourceRoot":"","sources":["../../src/core/responseVerifier.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAaH,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACjD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,OAAO,EAAE,uBAAuB,EAAE,CAAC;IACnC,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,cAAc,EAAE,UAAU,GAAG,oBAAoB,GAAG,cAAc,GAAG,YAAY,CAAC;IAClF,UAAU,EAAE,MAAM,CAAC;CACpB;AAgHD;;GAEG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,mBAAmB,EACzB,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAChD,OAAO,CAAC,qBAAqB,CAAC,CAwGhC;AA4ID
|
|
1
|
+
{"version":3,"file":"responseVerifier.d.ts","sourceRoot":"","sources":["../../src/core/responseVerifier.ts"],"names":[],"mappings":"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"}
|