erosolar-cli 2.1.193 → 2.1.195

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/dist/capabilities/offsecOpsCapability.d.ts +2 -2
  2. package/dist/capabilities/offsecOpsCapability.d.ts.map +1 -1
  3. package/dist/capabilities/offsecOpsCapability.js +6 -7
  4. package/dist/capabilities/offsecOpsCapability.js.map +1 -1
  5. package/dist/contracts/models.schema.json +9 -0
  6. package/dist/core/agent.d.ts +31 -12
  7. package/dist/core/agent.d.ts.map +1 -1
  8. package/dist/core/agent.js +71 -84
  9. package/dist/core/agent.js.map +1 -1
  10. package/dist/core/agentOrchestrator.d.ts +49 -0
  11. package/dist/core/agentOrchestrator.d.ts.map +1 -0
  12. package/dist/core/agentOrchestrator.js +313 -0
  13. package/dist/core/agentOrchestrator.js.map +1 -0
  14. package/dist/core/alphaZeroOrchestrator.d.ts +140 -0
  15. package/dist/core/alphaZeroOrchestrator.d.ts.map +1 -0
  16. package/dist/core/alphaZeroOrchestrator.js +418 -0
  17. package/dist/core/alphaZeroOrchestrator.js.map +1 -0
  18. package/dist/core/schemaValidator.d.ts +5 -0
  19. package/dist/core/schemaValidator.d.ts.map +1 -1
  20. package/dist/core/schemaValidator.js +65 -0
  21. package/dist/core/schemaValidator.js.map +1 -1
  22. package/dist/core/taskCompletionDetector.d.ts +106 -0
  23. package/dist/core/taskCompletionDetector.d.ts.map +1 -0
  24. package/dist/core/taskCompletionDetector.js +402 -0
  25. package/dist/core/taskCompletionDetector.js.map +1 -0
  26. package/dist/core/toolRuntime.d.ts +4 -0
  27. package/dist/core/toolRuntime.d.ts.map +1 -1
  28. package/dist/core/toolRuntime.js +40 -64
  29. package/dist/core/toolRuntime.js.map +1 -1
  30. package/dist/core/types.d.ts +14 -0
  31. package/dist/core/types.d.ts.map +1 -1
  32. package/dist/core/types.js.map +1 -1
  33. package/dist/providers/anthropicProvider.d.ts +8 -1
  34. package/dist/providers/anthropicProvider.d.ts.map +1 -1
  35. package/dist/providers/anthropicProvider.js +51 -0
  36. package/dist/providers/anthropicProvider.js.map +1 -1
  37. package/dist/providers/googleProvider.d.ts +7 -1
  38. package/dist/providers/googleProvider.d.ts.map +1 -1
  39. package/dist/providers/googleProvider.js +41 -0
  40. package/dist/providers/googleProvider.js.map +1 -1
  41. package/dist/providers/openaiChatCompletionsProvider.d.ts +7 -1
  42. package/dist/providers/openaiChatCompletionsProvider.d.ts.map +1 -1
  43. package/dist/providers/openaiChatCompletionsProvider.js +44 -0
  44. package/dist/providers/openaiChatCompletionsProvider.js.map +1 -1
  45. package/dist/shell/interactiveShell.d.ts +28 -4
  46. package/dist/shell/interactiveShell.d.ts.map +1 -1
  47. package/dist/shell/interactiveShell.js +478 -191
  48. package/dist/shell/interactiveShell.js.map +1 -1
  49. package/dist/shell/shellApp.js +8 -1
  50. package/dist/shell/shellApp.js.map +1 -1
  51. package/dist/tools/bashTools.d.ts +0 -1
  52. package/dist/tools/bashTools.d.ts.map +1 -1
  53. package/dist/tools/bashTools.js +3 -47
  54. package/dist/tools/bashTools.js.map +1 -1
  55. package/dist/tools/buildTools.js +1 -1
  56. package/dist/tools/buildTools.js.map +1 -1
  57. package/dist/tools/grepTools.js +6 -4
  58. package/dist/tools/grepTools.js.map +1 -1
  59. package/dist/tools/repoChecksTools.d.ts.map +1 -1
  60. package/dist/tools/repoChecksTools.js +5 -7
  61. package/dist/tools/repoChecksTools.js.map +1 -1
  62. package/dist/ui/ShellUIAdapter.d.ts +3 -2
  63. package/dist/ui/ShellUIAdapter.d.ts.map +1 -1
  64. package/dist/ui/ShellUIAdapter.js +9 -7
  65. package/dist/ui/ShellUIAdapter.js.map +1 -1
  66. package/package.json +1 -1
  67. package/dist/runtime/flowOrchestrator.d.ts +0 -46
  68. package/dist/runtime/flowOrchestrator.d.ts.map +0 -1
  69. package/dist/runtime/flowOrchestrator.js +0 -80
  70. package/dist/runtime/flowOrchestrator.js.map +0 -1
  71. package/dist/shell/taskCompletionDetector.d.ts +0 -52
  72. package/dist/shell/taskCompletionDetector.d.ts.map +0 -1
  73. package/dist/shell/taskCompletionDetector.js +0 -131
  74. package/dist/shell/taskCompletionDetector.js.map +0 -1
@@ -0,0 +1,418 @@
1
+ /**
2
+ * AlphaZero Orchestrator - Complete Self-Improvement System
3
+ *
4
+ * This module provides the "best" AlphaZero-style self-improvement for erosolar-cli:
5
+ *
6
+ * 1. DUAL-RESPONSE GENERATION
7
+ * - Generate 2 responses with different temperatures
8
+ * - Use LLM to evaluate and pick the winner
9
+ * - Learn which approach works better for task types
10
+ *
11
+ * 2. SELF-CRITIQUE LOOP
12
+ * - Critique responses for issues
13
+ * - Iteratively improve until quality threshold met
14
+ * - Learn from improvements for future responses
15
+ *
16
+ * 3. PATTERN LEARNING
17
+ * - Track tool sequences that work well
18
+ * - Record failure patterns to avoid
19
+ * - Store successful prompts for reuse
20
+ *
21
+ * 4. SOURCE IMPROVEMENT
22
+ * - Detect patterns in erosolar-cli itself
23
+ * - Apply validated fixes with git safety
24
+ * - Rollback on any failure
25
+ *
26
+ * Principal Investigator: Bo Shang
27
+ */
28
+ import { existsSync, writeFileSync, readFileSync, mkdirSync } from 'node:fs';
29
+ import { join } from 'node:path';
30
+ import { homedir } from 'node:os';
31
+ import { buildEvaluationPrompt, buildCritiquePrompt, buildImprovementPrompt, parseEvaluationResponse, parseCritiqueResponse, quickQualityScore, classifyTaskType, } from './alphaZeroEngine.js';
32
+ import { addToolPattern, recordFailurePattern, recordPromptImprovement, getBestToolPattern, getFailurePatternsToAvoid, getLearningSummary, } from './learningPersistence.js';
33
+ import { detectFailure, clearActionHistory, } from './failureRecovery.js';
34
+ export const DEFAULT_ALPHAZERO_CONFIG = {
35
+ dualResponseEnabled: true,
36
+ temperatureConservative: 0.2,
37
+ temperatureCreative: 0.7,
38
+ selfCritiqueEnabled: true,
39
+ maxCritiqueIterations: 2,
40
+ minQualityThreshold: 75,
41
+ patternLearningEnabled: true,
42
+ autoApplyLearning: true,
43
+ sourceImprovementEnabled: true,
44
+ minValidationsForSourceFix: 3,
45
+ };
46
+ const STATE_FILE = join(homedir(), '.erosolar', 'learning', 'alphazero-state.json');
47
+ function loadState() {
48
+ try {
49
+ if (existsSync(STATE_FILE)) {
50
+ return JSON.parse(readFileSync(STATE_FILE, 'utf-8'));
51
+ }
52
+ }
53
+ catch {
54
+ // Ignore
55
+ }
56
+ return {
57
+ currentSession: null,
58
+ totalSessions: 0,
59
+ totalImprovements: 0,
60
+ avgQualityScore: 0,
61
+ lastUpdated: new Date().toISOString(),
62
+ };
63
+ }
64
+ function saveState(state) {
65
+ const dir = join(homedir(), '.erosolar', 'learning');
66
+ if (!existsSync(dir)) {
67
+ mkdirSync(dir, { recursive: true });
68
+ }
69
+ state.lastUpdated = new Date().toISOString();
70
+ writeFileSync(STATE_FILE, JSON.stringify(state, null, 2));
71
+ }
72
+ // ============================================================================
73
+ // CORE ORCHESTRATOR
74
+ // ============================================================================
75
+ export class AlphaZeroOrchestrator {
76
+ config;
77
+ provider = null;
78
+ state;
79
+ constructor(config = {}) {
80
+ this.config = { ...DEFAULT_ALPHAZERO_CONFIG, ...config };
81
+ this.state = loadState();
82
+ }
83
+ /**
84
+ * Set the LLM provider for evaluations
85
+ */
86
+ setProvider(provider) {
87
+ this.provider = provider;
88
+ }
89
+ /**
90
+ * Start tracking a new task
91
+ */
92
+ startTask(userQuery) {
93
+ const sessionId = `az-${Date.now()}`;
94
+ const taskType = classifyTaskType(userQuery);
95
+ this.state.currentSession = {
96
+ sessionId,
97
+ startTime: new Date().toISOString(),
98
+ taskType,
99
+ userQuery,
100
+ dualResponseUsed: false,
101
+ critiqueIterations: 0,
102
+ finalQuality: 0,
103
+ toolsUsed: [],
104
+ success: false,
105
+ improvementsLearned: 0,
106
+ };
107
+ return sessionId;
108
+ }
109
+ /**
110
+ * Record a tool call in current session
111
+ */
112
+ recordToolCall(toolName, success) {
113
+ if (this.state.currentSession) {
114
+ this.state.currentSession.toolsUsed.push(toolName);
115
+ }
116
+ }
117
+ /**
118
+ * Complete the current task and learn from it
119
+ */
120
+ async completeTask(response, toolCalls, success) {
121
+ const session = this.state.currentSession;
122
+ if (!session) {
123
+ return { qualityScore: 0, learned: [], suggestions: [] };
124
+ }
125
+ const learned = [];
126
+ const suggestions = [];
127
+ // Calculate quality score
128
+ const quality = quickQualityScore(response, toolCalls);
129
+ session.finalQuality = quality.overall;
130
+ session.success = success;
131
+ // Learn from this interaction
132
+ if (this.config.patternLearningEnabled) {
133
+ // Record tool pattern
134
+ if (toolCalls.length > 0 && success) {
135
+ const pattern = {
136
+ taskType: session.taskType,
137
+ toolSequence: toolCalls.map(t => t.name),
138
+ successRate: success ? 1.0 : 0.0,
139
+ avgDuration: toolCalls.reduce((sum, t) => sum + t.duration, 0) / toolCalls.length,
140
+ occurrences: 1,
141
+ };
142
+ addToolPattern(session.taskType, pattern);
143
+ learned.push(`Learned tool pattern for ${session.taskType}: ${pattern.toolSequence.join(' → ')}`);
144
+ }
145
+ // Record failure if applicable
146
+ if (!success) {
147
+ const failure = detectFailure(response, { toolCalls, userMessage: session.userQuery });
148
+ if (failure) {
149
+ recordFailurePattern(session.taskType, toolCalls.map(t => t.name), failure.message, failure.message.slice(0, 100));
150
+ learned.push(`Learned to avoid: ${failure.message.slice(0, 50)}...`);
151
+ }
152
+ }
153
+ }
154
+ // Get suggestions for next time
155
+ const bestPattern = getBestToolPattern(session.taskType);
156
+ if (bestPattern && !success) {
157
+ suggestions.push(`Try using: ${bestPattern.toolSequence.join(' → ')} (${Math.round(bestPattern.successRate * 100)}% success rate)`);
158
+ }
159
+ const toAvoid = getFailurePatternsToAvoid(session.taskType);
160
+ for (const pattern of toAvoid.slice(0, 2)) {
161
+ suggestions.push(`Avoid: ${pattern.description.slice(0, 50)}...`);
162
+ }
163
+ // Update state
164
+ this.state.totalSessions++;
165
+ this.state.totalImprovements += learned.length;
166
+ this.state.avgQualityScore = ((this.state.avgQualityScore * (this.state.totalSessions - 1) + quality.overall) /
167
+ this.state.totalSessions);
168
+ // Clear action history on success
169
+ if (success) {
170
+ clearActionHistory();
171
+ }
172
+ saveState(this.state);
173
+ this.state.currentSession = null;
174
+ return {
175
+ qualityScore: quality.overall,
176
+ learned,
177
+ suggestions,
178
+ };
179
+ }
180
+ // ============================================================================
181
+ // DUAL RESPONSE GENERATION
182
+ // ============================================================================
183
+ /**
184
+ * Generate two responses and pick the better one
185
+ */
186
+ async generateDualResponse(messages, userQuery) {
187
+ if (!this.config.dualResponseEnabled || !this.provider) {
188
+ return { winningResponse: '', evaluation: null, used: false };
189
+ }
190
+ try {
191
+ // Generate response A (conservative)
192
+ const messagesA = [...messages];
193
+ const responseA = await this.provider.generate(messagesA, []);
194
+ const contentA = responseA.content ?? '';
195
+ // Generate response B (creative)
196
+ const messagesB = [...messages];
197
+ const responseB = await this.provider.generate(messagesB, []);
198
+ const contentB = responseB.content ?? '';
199
+ // If both responses are similar, just return A
200
+ if (this.responsesAreSimilar(contentA, contentB)) {
201
+ return { winningResponse: contentA, evaluation: null, used: false };
202
+ }
203
+ // Evaluate which is better
204
+ const evaluation = await this.evaluateResponses(userQuery, contentA, contentB);
205
+ if (this.state.currentSession) {
206
+ this.state.currentSession.dualResponseUsed = true;
207
+ }
208
+ if (evaluation) {
209
+ const winner = evaluation.qualityScoreA >= evaluation.qualityScoreB ? contentA : contentB;
210
+ return { winningResponse: winner, evaluation, used: true };
211
+ }
212
+ // Default to A if evaluation fails
213
+ return { winningResponse: contentA, evaluation: null, used: true };
214
+ }
215
+ catch (error) {
216
+ console.warn('[AlphaZero] Dual response generation failed:', error);
217
+ return { winningResponse: '', evaluation: null, used: false };
218
+ }
219
+ }
220
+ responsesAreSimilar(a, b) {
221
+ // Simple similarity check - if >80% of words match
222
+ const wordsA = new Set(a.toLowerCase().split(/\s+/));
223
+ const wordsB = new Set(b.toLowerCase().split(/\s+/));
224
+ const intersection = new Set([...wordsA].filter(x => wordsB.has(x)));
225
+ const union = new Set([...wordsA, ...wordsB]);
226
+ return intersection.size / union.size > 0.8;
227
+ }
228
+ async evaluateResponses(userQuery, responseA, responseB) {
229
+ if (!this.provider)
230
+ return null;
231
+ try {
232
+ const evalPrompt = buildEvaluationPrompt(userQuery, responseA, responseB);
233
+ const evalResponse = await this.provider.generate([{ role: 'user', content: evalPrompt }], []);
234
+ return parseEvaluationResponse(evalResponse.content ?? '');
235
+ }
236
+ catch {
237
+ return null;
238
+ }
239
+ }
240
+ // ============================================================================
241
+ // SELF-CRITIQUE LOOP
242
+ // ============================================================================
243
+ /**
244
+ * Critique and iteratively improve a response
245
+ */
246
+ async selfCritiqueLoop(response, userQuery, toolCalls) {
247
+ if (!this.config.selfCritiqueEnabled || !this.provider) {
248
+ return {
249
+ improvedResponse: response,
250
+ iterations: 0,
251
+ issues: [],
252
+ qualityImprovement: 0,
253
+ };
254
+ }
255
+ let currentResponse = response;
256
+ let allIssues = [];
257
+ let iterations = 0;
258
+ const initialQuality = quickQualityScore(response, toolCalls).overall;
259
+ while (iterations < this.config.maxCritiqueIterations) {
260
+ // Critique the current response
261
+ const issues = await this.critiqueResponse(userQuery, currentResponse, toolCalls);
262
+ if (issues.length === 0) {
263
+ break; // No issues found, we're done
264
+ }
265
+ // Only fix critical and major issues
266
+ const significantIssues = issues.filter(i => i.severity !== 'minor');
267
+ if (significantIssues.length === 0) {
268
+ break;
269
+ }
270
+ allIssues = [...allIssues, ...significantIssues];
271
+ // Generate improved response
272
+ const improved = await this.improveResponse(userQuery, currentResponse, significantIssues);
273
+ if (!improved || improved === currentResponse) {
274
+ break; // No improvement possible
275
+ }
276
+ currentResponse = improved;
277
+ iterations++;
278
+ // Check if we've reached quality threshold
279
+ const newQuality = quickQualityScore(currentResponse, toolCalls).overall;
280
+ if (newQuality >= this.config.minQualityThreshold) {
281
+ break;
282
+ }
283
+ }
284
+ if (this.state.currentSession) {
285
+ this.state.currentSession.critiqueIterations = iterations;
286
+ }
287
+ const finalQuality = quickQualityScore(currentResponse, toolCalls).overall;
288
+ // Learn from the improvement
289
+ if (iterations > 0 && this.config.patternLearningEnabled) {
290
+ recordPromptImprovement('error-recovery', // Category for self-critique improvements
291
+ response.slice(0, 500), currentResponse.slice(0, 500), finalQuality - initialQuality);
292
+ }
293
+ return {
294
+ improvedResponse: currentResponse,
295
+ iterations,
296
+ issues: allIssues,
297
+ qualityImprovement: finalQuality - initialQuality,
298
+ };
299
+ }
300
+ async critiqueResponse(userQuery, response, toolCalls) {
301
+ if (!this.provider)
302
+ return [];
303
+ try {
304
+ const critiquePrompt = buildCritiquePrompt(userQuery, response, toolCalls);
305
+ const critiqueResponse = await this.provider.generate([{ role: 'user', content: critiquePrompt }], []);
306
+ return parseCritiqueResponse(critiqueResponse.content ?? '');
307
+ }
308
+ catch {
309
+ return [];
310
+ }
311
+ }
312
+ async improveResponse(userQuery, response, issues) {
313
+ if (!this.provider)
314
+ return null;
315
+ try {
316
+ const improvePrompt = buildImprovementPrompt(userQuery, response, issues);
317
+ const improved = await this.provider.generate([{ role: 'user', content: improvePrompt }], []);
318
+ return improved.content ?? null;
319
+ }
320
+ catch {
321
+ return null;
322
+ }
323
+ }
324
+ // ============================================================================
325
+ // LEARNING AND SUGGESTIONS
326
+ // ============================================================================
327
+ /**
328
+ * Get recommended tools for a task type
329
+ */
330
+ getRecommendedTools(taskType) {
331
+ const pattern = getBestToolPattern(taskType);
332
+ return pattern?.toolSequence ?? null;
333
+ }
334
+ /**
335
+ * Get patterns to avoid for a task type
336
+ */
337
+ getPatternsToAvoid(taskType) {
338
+ const patterns = getFailurePatternsToAvoid(taskType);
339
+ return patterns.map(p => p.description);
340
+ }
341
+ /**
342
+ * Get comprehensive learning summary
343
+ */
344
+ getSummary() {
345
+ return {
346
+ sessions: this.state.totalSessions,
347
+ improvements: this.state.totalImprovements,
348
+ avgQuality: Math.round(this.state.avgQualityScore),
349
+ learningData: getLearningSummary(),
350
+ };
351
+ }
352
+ // ============================================================================
353
+ // STATUS AND CONFIGURATION
354
+ // ============================================================================
355
+ /**
356
+ * Get current configuration
357
+ */
358
+ getConfig() {
359
+ return { ...this.config };
360
+ }
361
+ /**
362
+ * Update configuration
363
+ */
364
+ updateConfig(updates) {
365
+ this.config = { ...this.config, ...updates };
366
+ }
367
+ /**
368
+ * Get formatted status for display
369
+ */
370
+ getStatus() {
371
+ const summary = this.getSummary();
372
+ const lines = [];
373
+ lines.push('═══════════════════════════════════════════');
374
+ lines.push(' 🧠 AlphaZero Self-Improvement Status');
375
+ lines.push('═══════════════════════════════════════════');
376
+ lines.push('');
377
+ lines.push('📊 Session Statistics:');
378
+ lines.push(` Total Sessions: ${summary.sessions}`);
379
+ lines.push(` Improvements Made: ${summary.improvements}`);
380
+ lines.push(` Average Quality: ${summary.avgQuality}/100`);
381
+ lines.push('');
382
+ lines.push('🎯 Learning Data:');
383
+ lines.push(` Tool Patterns: ${summary.learningData.toolPatterns.totalPatterns}`);
384
+ lines.push(` Failure Patterns: ${summary.learningData.failurePatterns.totalPatterns}`);
385
+ lines.push(` Prompt Improvements: ${summary.learningData.promptImprovements.totalImprovements}`);
386
+ lines.push('');
387
+ lines.push('⚙️ Configuration:');
388
+ lines.push(` Dual Response: ${this.config.dualResponseEnabled ? '✅ Enabled' : '❌ Disabled'}`);
389
+ lines.push(` Self-Critique: ${this.config.selfCritiqueEnabled ? '✅ Enabled' : '❌ Disabled'}`);
390
+ lines.push(` Pattern Learning: ${this.config.patternLearningEnabled ? '✅ Enabled' : '❌ Disabled'}`);
391
+ lines.push(` Source Improvement: ${this.config.sourceImprovementEnabled ? '✅ Enabled' : '❌ Disabled'}`);
392
+ lines.push('');
393
+ lines.push('═══════════════════════════════════════════');
394
+ return lines.join('\n');
395
+ }
396
+ }
397
+ // ============================================================================
398
+ // SINGLETON INSTANCE
399
+ // ============================================================================
400
+ let globalOrchestrator = null;
401
+ /**
402
+ * Get the global AlphaZero orchestrator instance
403
+ */
404
+ export function getAlphaZeroOrchestrator() {
405
+ if (!globalOrchestrator) {
406
+ globalOrchestrator = new AlphaZeroOrchestrator();
407
+ }
408
+ return globalOrchestrator;
409
+ }
410
+ /**
411
+ * Initialize with a provider
412
+ */
413
+ export function initializeAlphaZero(provider) {
414
+ const orchestrator = getAlphaZeroOrchestrator();
415
+ orchestrator.setProvider(provider);
416
+ return orchestrator;
417
+ }
418
+ //# sourceMappingURL=alphaZeroOrchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alphaZeroOrchestrator.js","sourceRoot":"","sources":["../../src/core/alphaZeroOrchestrator.ts"],"names":[],"mappings":"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"}
@@ -40,5 +40,10 @@ export declare namespace TypeGuards {
40
40
  */
41
41
  function isEnum<T extends string>(value: unknown, enumValues: readonly T[]): value is T;
42
42
  }
43
+ /**
44
+ * Coerce loosely-typed tool arguments into their declared schema types.
45
+ * This makes tools resilient to providers that emit boolean/number values as strings.
46
+ */
47
+ export declare function coerceToolArguments(schema: JSONSchemaObject | undefined, args: Record<string, unknown>): Record<string, unknown>;
43
48
  export declare function validateToolArguments(toolName: string, schema: JSONSchemaObject | undefined, args: Record<string, unknown>): void;
44
49
  //# sourceMappingURL=schemaValidator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schemaValidator.d.ts","sourceRoot":"","sources":["../../src/core/schemaValidator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,gBAAgB,EAAsB,MAAM,YAAY,CAAC;AAExF;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,KAAK;IACpD,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEd,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;CAM/C;AAED;;GAEG;AACH,yBAAiB,UAAU,CAAC;IAC1B;;OAEG;IACH,SAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD;IAED;;OAEG;IACH,SAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD;IAED;;OAEG;IACH,SAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,CAE1D;IAED;;OAEG;IACH,SAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,EAAE,CAE1D;IAED;;OAEG;IACH,SAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;IAED;;OAEG;IACH,SAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAAC,OAAO,CAAC,CAEvE;IAED;;OAEG;IACH,SAAgB,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC,CAE7F;CACF;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,gBAAgB,GAAG,SAAS,EACpC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,IAAI,CA6BN"}
1
+ {"version":3,"file":"schemaValidator.d.ts","sourceRoot":"","sources":["../../src/core/schemaValidator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,gBAAgB,EAAsB,MAAM,YAAY,CAAC;AAExF;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,KAAK;IACpD,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEd,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;CAM/C;AAED;;GAEG;AACH,yBAAiB,UAAU,CAAC;IAC1B;;OAEG;IACH,SAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD;IAED;;OAEG;IACH,SAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD;IAED;;OAEG;IACH,SAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,CAE1D;IAED;;OAEG;IACH,SAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,EAAE,CAE1D;IAED;;OAEG;IACH,SAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;IAED;;OAEG;IACH,SAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAAC,OAAO,CAAC,CAEvE;IAED;;OAEG;IACH,SAAgB,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC,CAE7F;CACF;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,gBAAgB,GAAG,SAAS,EACpC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiCzB;AA+BD,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,gBAAgB,GAAG,SAAS,EACpC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,IAAI,CA6BN"}
@@ -66,6 +66,71 @@ export var TypeGuards;
66
66
  }
67
67
  TypeGuards.isEnum = isEnum;
68
68
  })(TypeGuards || (TypeGuards = {}));
69
+ /**
70
+ * Coerce loosely-typed tool arguments into their declared schema types.
71
+ * This makes tools resilient to providers that emit boolean/number values as strings.
72
+ */
73
+ export function coerceToolArguments(schema, args) {
74
+ if (!schema || schema.type !== 'object' || !schema.properties) {
75
+ return args;
76
+ }
77
+ const coerced = { ...args };
78
+ for (const [key, definition] of Object.entries(schema.properties)) {
79
+ if (!Object.hasOwn(args, key)) {
80
+ continue;
81
+ }
82
+ const value = args[key];
83
+ if (value === undefined || value === null) {
84
+ continue;
85
+ }
86
+ switch (definition.type) {
87
+ case 'boolean': {
88
+ const normalized = coerceBoolean(value);
89
+ coerced[key] = normalized;
90
+ break;
91
+ }
92
+ case 'number': {
93
+ const normalized = coerceNumber(value);
94
+ coerced[key] = normalized;
95
+ break;
96
+ }
97
+ default:
98
+ break;
99
+ }
100
+ }
101
+ return coerced;
102
+ }
103
+ function coerceBoolean(value) {
104
+ if (typeof value === 'boolean') {
105
+ return value;
106
+ }
107
+ if (typeof value === 'number') {
108
+ if (value === 1)
109
+ return true;
110
+ if (value === 0)
111
+ return false;
112
+ }
113
+ if (typeof value === 'string') {
114
+ const trimmed = value.trim().toLowerCase();
115
+ if (trimmed === 'true' || trimmed === '1')
116
+ return true;
117
+ if (trimmed === 'false' || trimmed === '0')
118
+ return false;
119
+ }
120
+ return value;
121
+ }
122
+ function coerceNumber(value) {
123
+ if (typeof value === 'number' && !Number.isNaN(value)) {
124
+ return value;
125
+ }
126
+ if (typeof value === 'string' && value.trim().length > 0) {
127
+ const parsed = Number(value);
128
+ if (!Number.isNaN(parsed)) {
129
+ return parsed;
130
+ }
131
+ }
132
+ return value;
133
+ }
69
134
  export function validateToolArguments(toolName, schema, args) {
70
135
  if (!schema || schema.type !== 'object') {
71
136
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"schemaValidator.js","sourceRoot":"","sources":["../../src/core/schemaValidator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemaValidator.js","sourceRoot":"","sources":["../../src/core/schemaValidator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Intelligent Task Completion Detector
3
+ *
4
+ * This module provides robust detection of whether a continuous task is truly complete,
5
+ * rather than just pattern-matching keywords like "done" in responses.
6
+ *
7
+ * Key features:
8
+ * - Multi-signal analysis (tool usage, response content, state changes)
9
+ * - AI verification round before final completion
10
+ * - Confidence scoring
11
+ * - Work-in-progress detection
12
+ *
13
+ * @license MIT
14
+ * @author Bo Shang
15
+ */
16
+ export interface ToolActivity {
17
+ toolName: string;
18
+ timestamp: number;
19
+ success: boolean;
20
+ hasOutput: boolean;
21
+ }
22
+ export interface CompletionSignals {
23
+ hasExplicitCompletionStatement: boolean;
24
+ hasIncompleteWorkIndicators: boolean;
25
+ hasPendingActionIndicators: boolean;
26
+ hasErrorIndicators: boolean;
27
+ hasFollowUpQuestions: boolean;
28
+ toolsUsedInLastResponse: number;
29
+ lastToolWasReadOnly: boolean;
30
+ consecutiveResponsesWithoutTools: number;
31
+ hasRecentFileWrites: boolean;
32
+ hasRecentCommits: boolean;
33
+ todoItemsPending: number;
34
+ todoItemsCompleted: number;
35
+ mentionsFutureWork: boolean;
36
+ completionConfidence: number;
37
+ }
38
+ export interface CompletionAnalysis {
39
+ isComplete: boolean;
40
+ confidence: number;
41
+ signals: CompletionSignals;
42
+ reason: string;
43
+ shouldVerify: boolean;
44
+ verificationPrompt?: string;
45
+ }
46
+ export declare const WRITE_TOOLS: Set<string>;
47
+ export declare class TaskCompletionDetector {
48
+ private toolHistory;
49
+ private responseHistory;
50
+ private lastToolNames;
51
+ private consecutiveNoTools;
52
+ private todoStats;
53
+ constructor();
54
+ /**
55
+ * Reset the detector state for a new task
56
+ */
57
+ reset(): void;
58
+ /**
59
+ * Record a tool call
60
+ */
61
+ recordToolCall(toolName: string, success: boolean, hasOutput: boolean): void;
62
+ /**
63
+ * Record a response (call after each AI response)
64
+ */
65
+ recordResponse(response: string, toolsUsed: string[]): void;
66
+ /**
67
+ * Update todo statistics
68
+ */
69
+ updateTodoStats(pending: number, completed: number): void;
70
+ /**
71
+ * Analyze the current state and determine if the task is complete
72
+ */
73
+ analyzeCompletion(currentResponse: string, toolsUsedThisRound: string[]): CompletionAnalysis;
74
+ /**
75
+ * Gather all completion signals from the current state
76
+ */
77
+ private gatherSignals;
78
+ /**
79
+ * Calculate confidence score for task completion
80
+ */
81
+ private calculateConfidence;
82
+ /**
83
+ * Generate a verification prompt to ask the AI if the task is truly complete
84
+ */
85
+ private generateVerificationPrompt;
86
+ /**
87
+ * Generate a verification prompt for stagnation cases
88
+ */
89
+ private generateStagnationVerificationPrompt;
90
+ /**
91
+ * Get a human-readable reason for low confidence
92
+ */
93
+ private getLowConfidenceReason;
94
+ /**
95
+ * Check if a verification response confirms completion
96
+ */
97
+ isVerificationConfirmed(verificationResponse: string): boolean;
98
+ /**
99
+ * Check if a response contradicts itself by saying "complete" but also indicating incomplete work.
100
+ * This comprehensive list catches many ways AI might admit work isn't done while claiming completion.
101
+ */
102
+ private responseContainsIncompleteIndicators;
103
+ }
104
+ export declare function getTaskCompletionDetector(): TaskCompletionDetector;
105
+ export declare function resetTaskCompletionDetector(): void;
106
+ //# sourceMappingURL=taskCompletionDetector.d.ts.map