erosolar-cli 2.0.5 → 2.1.1

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 (126) hide show
  1. package/agents/erosolar-security.rules.json +147 -0
  2. package/dist/capabilities/enhancedAnalysisCapability.d.ts +13 -0
  3. package/dist/capabilities/enhancedAnalysisCapability.d.ts.map +1 -0
  4. package/dist/capabilities/enhancedAnalysisCapability.js +20 -0
  5. package/dist/capabilities/enhancedAnalysisCapability.js.map +1 -0
  6. package/dist/capabilities/offsecOpsCapability.d.ts +6 -0
  7. package/dist/capabilities/offsecOpsCapability.d.ts.map +1 -0
  8. package/dist/capabilities/offsecOpsCapability.js +20 -0
  9. package/dist/capabilities/offsecOpsCapability.js.map +1 -0
  10. package/dist/capabilities/offsecSearchCapability.d.ts +12 -0
  11. package/dist/capabilities/offsecSearchCapability.d.ts.map +1 -0
  12. package/dist/capabilities/offsecSearchCapability.js +27 -0
  13. package/dist/capabilities/offsecSearchCapability.js.map +1 -0
  14. package/dist/capabilities/taoCapability.d.ts +6 -0
  15. package/dist/capabilities/taoCapability.d.ts.map +1 -0
  16. package/dist/capabilities/taoCapability.js +20 -0
  17. package/dist/capabilities/taoCapability.js.map +1 -0
  18. package/dist/capabilities/toolRegistry.d.ts +2 -1
  19. package/dist/capabilities/toolRegistry.d.ts.map +1 -1
  20. package/dist/capabilities/toolRegistry.js +6 -1
  21. package/dist/capabilities/toolRegistry.js.map +1 -1
  22. package/dist/contracts/agent-schemas.json +18 -19
  23. package/dist/contracts/tools.schema.json +38 -8
  24. package/dist/core/contextManager.d.ts +8 -2
  25. package/dist/core/contextManager.d.ts.map +1 -1
  26. package/dist/core/contextManager.js +15 -2
  27. package/dist/core/contextManager.js.map +1 -1
  28. package/dist/core/deepBugAnalyzer.d.ts +128 -0
  29. package/dist/core/deepBugAnalyzer.d.ts.map +1 -0
  30. package/dist/core/deepBugAnalyzer.js +406 -0
  31. package/dist/core/deepBugAnalyzer.js.map +1 -0
  32. package/dist/core/hypothesisEngine.d.ts +113 -0
  33. package/dist/core/hypothesisEngine.d.ts.map +1 -0
  34. package/dist/core/hypothesisEngine.js +264 -0
  35. package/dist/core/hypothesisEngine.js.map +1 -0
  36. package/dist/core/intelligentSummarizer.d.ts +79 -0
  37. package/dist/core/intelligentSummarizer.d.ts.map +1 -0
  38. package/dist/core/intelligentSummarizer.js +273 -0
  39. package/dist/core/intelligentSummarizer.js.map +1 -0
  40. package/dist/core/offsecAlphaZero.d.ts +3 -0
  41. package/dist/core/offsecAlphaZero.d.ts.map +1 -1
  42. package/dist/core/offsecAlphaZero.js +166 -5
  43. package/dist/core/offsecAlphaZero.js.map +1 -1
  44. package/dist/core/productTestHarness.d.ts +113 -0
  45. package/dist/core/productTestHarness.d.ts.map +1 -0
  46. package/dist/core/productTestHarness.js +345 -0
  47. package/dist/core/productTestHarness.js.map +1 -0
  48. package/dist/core/toolPatternAnalyzer.d.ts +87 -0
  49. package/dist/core/toolPatternAnalyzer.d.ts.map +1 -0
  50. package/dist/core/toolPatternAnalyzer.js +272 -0
  51. package/dist/core/toolPatternAnalyzer.js.map +1 -0
  52. package/dist/plugins/tools/enhancedAnalysis/enhancedAnalysisPlugin.d.ts +3 -0
  53. package/dist/plugins/tools/enhancedAnalysis/enhancedAnalysisPlugin.d.ts.map +1 -0
  54. package/dist/plugins/tools/enhancedAnalysis/enhancedAnalysisPlugin.js +14 -0
  55. package/dist/plugins/tools/enhancedAnalysis/enhancedAnalysisPlugin.js.map +1 -0
  56. package/dist/plugins/tools/enhancedCodeIntelligence/enhancedCodeIntelligencePlugin.d.ts +3 -0
  57. package/dist/plugins/tools/enhancedCodeIntelligence/enhancedCodeIntelligencePlugin.d.ts.map +1 -0
  58. package/dist/plugins/tools/enhancedCodeIntelligence/enhancedCodeIntelligencePlugin.js +12 -0
  59. package/dist/plugins/tools/enhancedCodeIntelligence/enhancedCodeIntelligencePlugin.js.map +1 -0
  60. package/dist/plugins/tools/enhancedDevWorkflow/enhancedDevWorkflowPlugin.d.ts +3 -0
  61. package/dist/plugins/tools/enhancedDevWorkflow/enhancedDevWorkflowPlugin.d.ts.map +1 -0
  62. package/dist/plugins/tools/enhancedDevWorkflow/enhancedDevWorkflowPlugin.js +12 -0
  63. package/dist/plugins/tools/enhancedDevWorkflow/enhancedDevWorkflowPlugin.js.map +1 -0
  64. package/dist/plugins/tools/nodeDefaults.d.ts.map +1 -1
  65. package/dist/plugins/tools/nodeDefaults.js +12 -0
  66. package/dist/plugins/tools/nodeDefaults.js.map +1 -1
  67. package/dist/plugins/tools/offsec/offsecOpsPlugin.d.ts +3 -0
  68. package/dist/plugins/tools/offsec/offsecOpsPlugin.d.ts.map +1 -0
  69. package/dist/plugins/tools/offsec/offsecOpsPlugin.js +10 -0
  70. package/dist/plugins/tools/offsec/offsecOpsPlugin.js.map +1 -0
  71. package/dist/plugins/tools/offsec/offsecSearchPlugin.d.ts +3 -0
  72. package/dist/plugins/tools/offsec/offsecSearchPlugin.d.ts.map +1 -0
  73. package/dist/plugins/tools/offsec/offsecSearchPlugin.js +12 -0
  74. package/dist/plugins/tools/offsec/offsecSearchPlugin.js.map +1 -0
  75. package/dist/plugins/tools/tao/taoPlugin.d.ts +3 -0
  76. package/dist/plugins/tools/tao/taoPlugin.d.ts.map +1 -0
  77. package/dist/plugins/tools/tao/taoPlugin.js +10 -0
  78. package/dist/plugins/tools/tao/taoPlugin.js.map +1 -0
  79. package/dist/shell/interactiveShell.d.ts +6 -0
  80. package/dist/shell/interactiveShell.d.ts.map +1 -1
  81. package/dist/shell/interactiveShell.js +50 -15
  82. package/dist/shell/interactiveShell.js.map +1 -1
  83. package/dist/shell/shellApp.js +1 -1
  84. package/dist/shell/shellApp.js.map +1 -1
  85. package/dist/shell/systemPrompt.d.ts.map +1 -1
  86. package/dist/shell/systemPrompt.js +3 -0
  87. package/dist/shell/systemPrompt.js.map +1 -1
  88. package/dist/tools/enhancedAnalysisTools.d.ts +9 -0
  89. package/dist/tools/enhancedAnalysisTools.d.ts.map +1 -0
  90. package/dist/tools/enhancedAnalysisTools.js +382 -0
  91. package/dist/tools/enhancedAnalysisTools.js.map +1 -0
  92. package/dist/tools/enhancedCodeIntelligenceTools.d.ts +1 -21
  93. package/dist/tools/enhancedCodeIntelligenceTools.d.ts.map +1 -1
  94. package/dist/tools/enhancedCodeIntelligenceTools.js +378 -256
  95. package/dist/tools/enhancedCodeIntelligenceTools.js.map +1 -1
  96. package/dist/tools/enhancedDevWorkflowTools.d.ts +2 -10
  97. package/dist/tools/enhancedDevWorkflowTools.d.ts.map +1 -1
  98. package/dist/tools/enhancedDevWorkflowTools.js +293 -165
  99. package/dist/tools/enhancedDevWorkflowTools.js.map +1 -1
  100. package/dist/tools/interactionTools.d.ts.map +1 -1
  101. package/dist/tools/interactionTools.js +55 -0
  102. package/dist/tools/interactionTools.js.map +1 -1
  103. package/dist/tools/offsec/offsecOperationsTools.d.ts +3 -0
  104. package/dist/tools/offsec/offsecOperationsTools.d.ts.map +1 -0
  105. package/dist/tools/offsec/offsecOperationsTools.js +333 -0
  106. package/dist/tools/offsec/offsecOperationsTools.js.map +1 -0
  107. package/dist/tools/offsecSearchTools.d.ts +3 -0
  108. package/dist/tools/offsecSearchTools.d.ts.map +1 -0
  109. package/dist/tools/offsecSearchTools.js +330 -0
  110. package/dist/tools/offsecSearchTools.js.map +1 -0
  111. package/dist/tools/taoOperations.d.ts +7 -0
  112. package/dist/tools/taoOperations.d.ts.map +1 -0
  113. package/dist/tools/taoOperations.js +744 -0
  114. package/dist/tools/taoOperations.js.map +1 -0
  115. package/dist/ui/ShellUIAdapter.d.ts +10 -6
  116. package/dist/ui/ShellUIAdapter.d.ts.map +1 -1
  117. package/dist/ui/ShellUIAdapter.js +68 -66
  118. package/dist/ui/ShellUIAdapter.js.map +1 -1
  119. package/dist/ui/globalWriteLock.d.ts.map +1 -1
  120. package/dist/ui/globalWriteLock.js +6 -0
  121. package/dist/ui/globalWriteLock.js.map +1 -1
  122. package/dist/ui/streamingFormatter.d.ts +11 -0
  123. package/dist/ui/streamingFormatter.d.ts.map +1 -1
  124. package/dist/ui/streamingFormatter.js +27 -1
  125. package/dist/ui/streamingFormatter.js.map +1 -1
  126. package/package.json +4 -13
@@ -0,0 +1,264 @@
1
+ /**
2
+ * Enhanced AI Reasoning Engine with Hypothesis Testing
3
+ *
4
+ * This module provides multi-hypothesis reasoning capabilities to ensure
5
+ * correct AI operations by testing multiple approaches before settling on
6
+ * a solution.
7
+ */
8
+ /**
9
+ * Engine for generating, testing, and validating hypotheses
10
+ */
11
+ export class HypothesisEngine {
12
+ hypotheses = new Map();
13
+ maxHypotheses;
14
+ constructor(maxHypotheses = 5) {
15
+ this.maxHypotheses = maxHypotheses;
16
+ }
17
+ /**
18
+ * Generate a new hypothesis
19
+ */
20
+ generateHypothesis(description, initialEvidence = []) {
21
+ const id = this.generateId();
22
+ const hypothesis = {
23
+ id,
24
+ description,
25
+ confidence: this.calculateInitialConfidence(initialEvidence),
26
+ evidence: initialEvidence,
27
+ status: 'pending',
28
+ };
29
+ this.hypotheses.set(id, hypothesis);
30
+ this.pruneHypotheses();
31
+ return hypothesis;
32
+ }
33
+ /**
34
+ * Add evidence to a hypothesis and update confidence
35
+ */
36
+ addEvidence(hypothesisId, evidence) {
37
+ const hypothesis = this.hypotheses.get(hypothesisId);
38
+ if (!hypothesis) {
39
+ throw new Error(`Hypothesis ${hypothesisId} not found`);
40
+ }
41
+ hypothesis.evidence.push(evidence);
42
+ hypothesis.confidence = this.recalculateConfidence(hypothesis);
43
+ }
44
+ /**
45
+ * Test a hypothesis with a set of tests
46
+ */
47
+ async testHypothesis(hypothesisId, tests) {
48
+ const hypothesis = this.hypotheses.get(hypothesisId);
49
+ if (!hypothesis) {
50
+ throw new Error(`Hypothesis ${hypothesisId} not found`);
51
+ }
52
+ hypothesis.status = 'testing';
53
+ const testResults = [];
54
+ for (const test of tests) {
55
+ const startTime = Date.now();
56
+ try {
57
+ const passed = await test.execute();
58
+ const duration = Date.now() - startTime;
59
+ const result = {
60
+ testName: test.name,
61
+ passed,
62
+ output: passed ? 'Test passed' : 'Test failed',
63
+ duration,
64
+ timestamp: new Date(),
65
+ };
66
+ testResults.push(result);
67
+ // Update hypothesis with test result as evidence
68
+ this.addEvidence(hypothesisId, {
69
+ type: 'test_result',
70
+ content: `${test.description}: ${passed ? 'PASS' : 'FAIL'}`,
71
+ weight: passed ? 0.8 : -0.8,
72
+ timestamp: new Date(),
73
+ });
74
+ }
75
+ catch (error) {
76
+ const duration = Date.now() - startTime;
77
+ const result = {
78
+ testName: test.name,
79
+ passed: false,
80
+ output: error instanceof Error ? error.message : String(error),
81
+ duration,
82
+ timestamp: new Date(),
83
+ };
84
+ testResults.push(result);
85
+ this.addEvidence(hypothesisId, {
86
+ type: 'test_result',
87
+ content: `${test.description}: ERROR - ${error instanceof Error ? error.message : String(error)}`,
88
+ weight: -0.9,
89
+ timestamp: new Date(),
90
+ });
91
+ }
92
+ }
93
+ hypothesis.testResults = testResults;
94
+ // Update status based on test results
95
+ const allPassed = testResults.every(r => r.passed);
96
+ hypothesis.status = allPassed ? 'validated' : 'rejected';
97
+ return testResults;
98
+ }
99
+ /**
100
+ * Get the most promising hypothesis based on confidence
101
+ */
102
+ getBestHypothesis() {
103
+ let best = null;
104
+ let highestConfidence = -Infinity;
105
+ for (const hypothesis of this.hypotheses.values()) {
106
+ if (hypothesis.status !== 'rejected' && hypothesis.confidence > highestConfidence) {
107
+ highestConfidence = hypothesis.confidence;
108
+ best = hypothesis;
109
+ }
110
+ }
111
+ return best;
112
+ }
113
+ /**
114
+ * Get all hypotheses sorted by confidence
115
+ */
116
+ getAllHypotheses() {
117
+ return Array.from(this.hypotheses.values())
118
+ .sort((a, b) => b.confidence - a.confidence);
119
+ }
120
+ /**
121
+ * Get hypothesis by ID
122
+ */
123
+ getHypothesis(id) {
124
+ return this.hypotheses.get(id);
125
+ }
126
+ /**
127
+ * Clear all hypotheses
128
+ */
129
+ clear() {
130
+ this.hypotheses.clear();
131
+ }
132
+ /**
133
+ * Calculate initial confidence based on evidence
134
+ */
135
+ calculateInitialConfidence(evidence) {
136
+ if (evidence.length === 0)
137
+ return 0.5; // Neutral confidence
138
+ const totalWeight = evidence.reduce((sum, e) => sum + Math.abs(e.weight), 0);
139
+ if (totalWeight === 0)
140
+ return 0.5;
141
+ const weightedSum = evidence.reduce((sum, e) => sum + e.weight, 0);
142
+ // Normalize to 0-1 range
143
+ return Math.max(0, Math.min(1, 0.5 + (weightedSum / totalWeight) * 0.5));
144
+ }
145
+ /**
146
+ * Recalculate confidence based on all evidence
147
+ */
148
+ recalculateConfidence(hypothesis) {
149
+ return this.calculateInitialConfidence(hypothesis.evidence);
150
+ }
151
+ /**
152
+ * Prune low-confidence hypotheses if we exceed max
153
+ */
154
+ pruneHypotheses() {
155
+ if (this.hypotheses.size <= this.maxHypotheses)
156
+ return;
157
+ const sorted = Array.from(this.hypotheses.entries())
158
+ .sort(([, a], [, b]) => a.confidence - b.confidence);
159
+ // Remove the lowest confidence hypothesis
160
+ const lowest = sorted[0];
161
+ if (lowest) {
162
+ const [idToRemove] = lowest;
163
+ this.hypotheses.delete(idToRemove);
164
+ }
165
+ }
166
+ /**
167
+ * Generate unique ID for hypothesis
168
+ */
169
+ generateId() {
170
+ return `hyp_${Date.now()}_${Math.random().toString(36).substring(7)}`;
171
+ }
172
+ }
173
+ /**
174
+ * Multi-hypothesis bug analyzer
175
+ */
176
+ export class BugHypothesisAnalyzer {
177
+ engine;
178
+ constructor() {
179
+ this.engine = new HypothesisEngine(10); // Allow more hypotheses for bug analysis
180
+ }
181
+ /**
182
+ * Analyze a bug by generating and testing multiple hypotheses
183
+ */
184
+ async analyzeBug(bugDescription, observations, testFunction) {
185
+ // Generate hypotheses based on observations
186
+ const hypotheses = this.generateBugHypotheses(bugDescription, observations);
187
+ // Test each hypothesis
188
+ for (const hypothesis of hypotheses) {
189
+ const tests = await testFunction(hypothesis);
190
+ await this.engine.testHypothesis(hypothesis.id, tests);
191
+ }
192
+ const mostLikely = this.engine.getBestHypothesis();
193
+ const allHypotheses = this.engine.getAllHypotheses();
194
+ const recommendation = this.generateRecommendation(mostLikely, allHypotheses);
195
+ return {
196
+ mostLikely,
197
+ allHypotheses,
198
+ recommendation,
199
+ };
200
+ }
201
+ /**
202
+ * Generate multiple hypotheses for a bug
203
+ */
204
+ generateBugHypotheses(bugDescription, observations) {
205
+ const hypotheses = [];
206
+ // Common bug hypothesis patterns
207
+ const patterns = [
208
+ 'Logic error in implementation',
209
+ 'Type mismatch or type coercion issue',
210
+ 'Async/timing issue',
211
+ 'State management problem',
212
+ 'Configuration or environment issue',
213
+ 'Dependency version conflict',
214
+ 'Edge case not handled',
215
+ 'Memory leak or resource management',
216
+ 'Concurrency or race condition',
217
+ 'Input validation failure',
218
+ ];
219
+ for (const pattern of patterns) {
220
+ const evidence = observations.map(obs => ({
221
+ type: 'observation',
222
+ content: obs,
223
+ weight: 0.3,
224
+ timestamp: new Date(),
225
+ }));
226
+ const hypothesis = this.engine.generateHypothesis(`${pattern}: ${bugDescription}`, evidence);
227
+ hypotheses.push(hypothesis);
228
+ }
229
+ return hypotheses;
230
+ }
231
+ /**
232
+ * Generate recommendation based on hypothesis analysis
233
+ */
234
+ generateRecommendation(mostLikely, allHypotheses) {
235
+ if (!mostLikely) {
236
+ return 'Unable to determine root cause. More investigation needed.';
237
+ }
238
+ const validated = allHypotheses.filter(h => h.status === 'validated');
239
+ const rejected = allHypotheses.filter(h => h.status === 'rejected');
240
+ let recommendation = `Most likely cause: ${mostLikely.description}\n`;
241
+ recommendation += `Confidence: ${(mostLikely.confidence * 100).toFixed(1)}%\n\n`;
242
+ if (validated.length > 1) {
243
+ recommendation += `Multiple hypotheses validated:\n`;
244
+ validated.forEach((h, i) => {
245
+ recommendation += `${i + 1}. ${h.description} (${(h.confidence * 100).toFixed(1)}%)\n`;
246
+ });
247
+ recommendation += '\nConsider addressing all validated causes.\n';
248
+ }
249
+ if (rejected.length > 0) {
250
+ recommendation += `\nRejected hypotheses:\n`;
251
+ rejected.slice(0, 3).forEach(h => {
252
+ recommendation += `- ${h.description}\n`;
253
+ });
254
+ }
255
+ return recommendation;
256
+ }
257
+ /**
258
+ * Clear analysis state
259
+ */
260
+ clear() {
261
+ this.engine.clear();
262
+ }
263
+ }
264
+ //# sourceMappingURL=hypothesisEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hypothesisEngine.js","sourceRoot":"","sources":["../../src/core/hypothesisEngine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Intelligent Tool Output Summarizer
3
+ *
4
+ * Critical for Claude Code operations: prevents context window overload while
5
+ * maintaining essential information. Based on analysis of real Claude Code behavior.
6
+ */
7
+ export interface SummarizationContext {
8
+ toolName: string;
9
+ args: Record<string, unknown>;
10
+ output: string;
11
+ outputSize: number;
12
+ previousToolCalls: string[];
13
+ sessionDuration: number;
14
+ }
15
+ export interface SummarizedOutput {
16
+ summary: string;
17
+ wasSummarized: boolean;
18
+ originalSize: number;
19
+ summarySize: number;
20
+ compressionRatio: number;
21
+ retainedKeyInfo: string[];
22
+ }
23
+ /**
24
+ * Intelligent summarizer that understands tool semantics
25
+ * and extracts only what the AI needs to continue effectively
26
+ */
27
+ export declare class IntelligentToolSummarizer {
28
+ private readonly ALWAYS_SUMMARIZE_THRESHOLD;
29
+ private readonly CONTEXT_AWARE_THRESHOLD;
30
+ /**
31
+ * Summarize tool output intelligently based on tool type and context
32
+ */
33
+ summarize(context: SummarizationContext): SummarizedOutput;
34
+ /**
35
+ * Determine if output should be summarized based on size and context
36
+ */
37
+ private shouldSummarize;
38
+ /**
39
+ * Apply tool-specific summarization strategies
40
+ */
41
+ private summarizeByToolType;
42
+ /**
43
+ * Summarize file content - show structure and important sections
44
+ */
45
+ private summarizeFileContent;
46
+ /**
47
+ * Extract code structure (imports, classes, functions)
48
+ */
49
+ private extractCodeStructure;
50
+ /**
51
+ * Summarize search results - show count and samples
52
+ */
53
+ private summarizeSearchResults;
54
+ /**
55
+ * Summarize path lists - show count and samples
56
+ */
57
+ private summarizePathList;
58
+ /**
59
+ * Summarize test/build output - focus on failures
60
+ */
61
+ private summarizeTestOutput;
62
+ /**
63
+ * Summarize bash command output - keep errors and key info
64
+ */
65
+ private summarizeBashOutput;
66
+ /**
67
+ * Default summarization for unknown tool types
68
+ */
69
+ private defaultSummarization;
70
+ /**
71
+ * Extract key information from output for tracking
72
+ */
73
+ private extractKeyInfo;
74
+ }
75
+ /**
76
+ * Global singleton instance
77
+ */
78
+ export declare const intelligentSummarizer: IntelligentToolSummarizer;
79
+ //# sourceMappingURL=intelligentSummarizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intelligentSummarizer.d.ts","sourceRoot":"","sources":["../../src/core/intelligentSummarizer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;;GAGG;AACH,qBAAa,yBAAyB;IAEpC,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAS;IACpD,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAQ;IAEhD;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,oBAAoB,GAAG,gBAAgB;IA0C1D;;OAEG;IACH,OAAO,CAAC,eAAe;IAmBvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAqC3B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAqB5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA2B5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAmB9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA4BzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAwB3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAqB3B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAc5B;;OAEG;IACH,OAAO,CAAC,cAAc;CAsBvB;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,2BAAkC,CAAC"}
@@ -0,0 +1,273 @@
1
+ /**
2
+ * Intelligent Tool Output Summarizer
3
+ *
4
+ * Critical for Claude Code operations: prevents context window overload while
5
+ * maintaining essential information. Based on analysis of real Claude Code behavior.
6
+ */
7
+ /**
8
+ * Intelligent summarizer that understands tool semantics
9
+ * and extracts only what the AI needs to continue effectively
10
+ */
11
+ export class IntelligentToolSummarizer {
12
+ // Thresholds for when to summarize (in characters)
13
+ ALWAYS_SUMMARIZE_THRESHOLD = 15000;
14
+ CONTEXT_AWARE_THRESHOLD = 8000;
15
+ /**
16
+ * Summarize tool output intelligently based on tool type and context
17
+ */
18
+ summarize(context) {
19
+ const { toolName, output, outputSize } = context;
20
+ // Never summarize if output is already small
21
+ if (outputSize < 1000) {
22
+ return {
23
+ summary: output,
24
+ wasSummarized: false,
25
+ originalSize: outputSize,
26
+ summarySize: outputSize,
27
+ compressionRatio: 1.0,
28
+ retainedKeyInfo: [],
29
+ };
30
+ }
31
+ // Determine if we should summarize based on context
32
+ const shouldSummarize = this.shouldSummarize(context);
33
+ if (!shouldSummarize) {
34
+ return {
35
+ summary: output,
36
+ wasSummarized: false,
37
+ originalSize: outputSize,
38
+ summarySize: outputSize,
39
+ compressionRatio: 1.0,
40
+ retainedKeyInfo: [],
41
+ };
42
+ }
43
+ // Apply tool-specific summarization
44
+ const summary = this.summarizeByToolType(toolName, output, context);
45
+ return {
46
+ summary,
47
+ wasSummarized: true,
48
+ originalSize: outputSize,
49
+ summarySize: summary.length,
50
+ compressionRatio: summary.length / outputSize,
51
+ retainedKeyInfo: this.extractKeyInfo(toolName, output),
52
+ };
53
+ }
54
+ /**
55
+ * Determine if output should be summarized based on size and context
56
+ */
57
+ shouldSummarize(context) {
58
+ const { outputSize, sessionDuration, previousToolCalls } = context;
59
+ // Always summarize huge outputs
60
+ if (outputSize > this.ALWAYS_SUMMARIZE_THRESHOLD) {
61
+ return true;
62
+ }
63
+ // Be more aggressive if session is long or many tools have been called
64
+ const isLongSession = sessionDuration > 300000; // 5 minutes
65
+ const manyToolCalls = previousToolCalls.length > 20;
66
+ if ((isLongSession || manyToolCalls) && outputSize > this.CONTEXT_AWARE_THRESHOLD) {
67
+ return true;
68
+ }
69
+ return false;
70
+ }
71
+ /**
72
+ * Apply tool-specific summarization strategies
73
+ */
74
+ summarizeByToolType(toolName, output, context) {
75
+ const lowerTool = toolName.toLowerCase();
76
+ // Read/file operations - show structure and key snippets
77
+ if (lowerTool.includes('read') || lowerTool.includes('file')) {
78
+ return this.summarizeFileContent(output, context);
79
+ }
80
+ // Search/grep operations - show match count and samples
81
+ if (lowerTool.includes('search') || lowerTool.includes('grep') || lowerTool.includes('find')) {
82
+ return this.summarizeSearchResults(output, context);
83
+ }
84
+ // Glob/list operations - show count and sample paths
85
+ if (lowerTool.includes('glob') || lowerTool.includes('list')) {
86
+ return this.summarizePathList(output);
87
+ }
88
+ // Test/build operations - show summary and failures
89
+ if (lowerTool.includes('test') || lowerTool.includes('build') || lowerTool.includes('validate')) {
90
+ return this.summarizeTestOutput(output);
91
+ }
92
+ // Bash/command execution - show key output and errors
93
+ if (lowerTool.includes('bash') || lowerTool.includes('exec') || lowerTool.includes('command')) {
94
+ return this.summarizeBashOutput(output);
95
+ }
96
+ // Analysis tools - keep full output for new tools
97
+ if (lowerTool.includes('analyze') || lowerTool.includes('hypothesis') || lowerTool.includes('bug')) {
98
+ return output; // Don't summarize our new analysis tools
99
+ }
100
+ // Default: intelligent truncation with key info extraction
101
+ return this.defaultSummarization(output);
102
+ }
103
+ /**
104
+ * Summarize file content - show structure and important sections
105
+ */
106
+ summarizeFileContent(output, context) {
107
+ const lines = output.split('\n');
108
+ const totalLines = lines.length;
109
+ // For code files, extract structure (imports, exports, function/class definitions)
110
+ const filePath = context.args['file_path'] || context.args['path'];
111
+ const isCodeFile = typeof filePath === 'string' && /\.(ts|js|tsx|jsx|py|java|cpp|rs)$/.test(filePath);
112
+ if (isCodeFile) {
113
+ const structure = this.extractCodeStructure(lines);
114
+ const filePathStr = typeof filePath === 'string' ? filePath : 'unknown';
115
+ return `File: ${filePathStr}\nLines: ${totalLines}\n\nStructure:\n${structure}\n\n[Content summarized - ${totalLines} lines total]`;
116
+ }
117
+ // For other files, show beginning and end
118
+ const preview = lines.slice(0, 30).join('\n');
119
+ const epilogue = totalLines > 50 ? `\n...\n[${totalLines - 30} more lines omitted]` : '';
120
+ return `${preview}${epilogue}`;
121
+ }
122
+ /**
123
+ * Extract code structure (imports, classes, functions)
124
+ */
125
+ extractCodeStructure(lines) {
126
+ const structure = [];
127
+ for (const line of lines) {
128
+ const trimmed = line.trim();
129
+ // Imports/requires
130
+ if (trimmed.startsWith('import ') || trimmed.startsWith('from ') ||
131
+ trimmed.startsWith('require(') || trimmed.startsWith('const ') && trimmed.includes('require(')) {
132
+ structure.push(trimmed);
133
+ }
134
+ // Class/interface/type definitions
135
+ else if (/^(export\s+)?(class|interface|type|enum)\s+\w+/.test(trimmed)) {
136
+ structure.push(trimmed.replace(/\{.*/, '{...}'));
137
+ }
138
+ // Function definitions
139
+ else if (/^(export\s+)?(async\s+)?function\s+\w+/.test(trimmed) ||
140
+ /^(export\s+)?const\s+\w+\s*=\s*(async\s*)?\(/.test(trimmed)) {
141
+ structure.push((trimmed.split('{')[0] ?? trimmed).trim() + ' {...}');
142
+ }
143
+ }
144
+ return structure.slice(0, 50).join('\n') || '[No significant structure found]';
145
+ }
146
+ /**
147
+ * Summarize search results - show count and samples
148
+ */
149
+ summarizeSearchResults(output, context) {
150
+ const lines = output.split('\n').filter(l => l.trim());
151
+ const totalMatches = lines.length;
152
+ if (totalMatches === 0) {
153
+ return 'No matches found';
154
+ }
155
+ // Show first few matches and last few
156
+ const sampleSize = 10;
157
+ const firstSamples = lines.slice(0, sampleSize).join('\n');
158
+ const lastSamples = totalMatches > sampleSize * 2
159
+ ? '\n...\n' + lines.slice(-5).join('\n')
160
+ : '';
161
+ const pattern = context.args['pattern'] || context.args['query'];
162
+ return `Found ${totalMatches} matches for "${pattern}"\n\n${firstSamples}${lastSamples}`;
163
+ }
164
+ /**
165
+ * Summarize path lists - show count and samples
166
+ */
167
+ summarizePathList(output) {
168
+ const paths = output.split('\n').filter(p => p.trim());
169
+ const total = paths.length;
170
+ if (total === 0) {
171
+ return 'No files found';
172
+ }
173
+ // Group by directory for better overview
174
+ const byDir = new Map();
175
+ for (const path of paths) {
176
+ const dir = path.substring(0, path.lastIndexOf('/')) || '.';
177
+ if (!byDir.has(dir))
178
+ byDir.set(dir, []);
179
+ const dirFiles = byDir.get(dir);
180
+ if (dirFiles)
181
+ dirFiles.push(path);
182
+ }
183
+ const dirSummary = Array.from(byDir.entries())
184
+ .slice(0, 15)
185
+ .map(([dir, files]) => `${dir}/ (${files.length} files)`)
186
+ .join('\n');
187
+ const samplePaths = paths.slice(0, 20).join('\n');
188
+ const remaining = total > 20 ? `\n... and ${total - 20} more files` : '';
189
+ return `Found ${total} files\n\nDirectory summary:\n${dirSummary}\n\nSample paths:\n${samplePaths}${remaining}`;
190
+ }
191
+ /**
192
+ * Summarize test/build output - focus on failures
193
+ */
194
+ summarizeTestOutput(output) {
195
+ const lines = output.split('\n');
196
+ // Extract key test info
197
+ const passed = (output.match(/(\d+) passed/i) || [])[1];
198
+ const failed = (output.match(/(\d+) failed/i) || [])[1];
199
+ const errors = lines.filter(l => /error|fail|✗|✕|×/i.test(l) && !l.includes('0 errors'));
200
+ let summary = 'Test Results:\n';
201
+ if (passed)
202
+ summary += `✓ ${passed} passed\n`;
203
+ if (failed)
204
+ summary += `✗ ${failed} failed\n`;
205
+ if (errors.length > 0) {
206
+ summary += '\nFailures:\n' + errors.slice(0, 20).join('\n');
207
+ if (errors.length > 20) {
208
+ summary += `\n... and ${errors.length - 20} more errors`;
209
+ }
210
+ }
211
+ return summary;
212
+ }
213
+ /**
214
+ * Summarize bash command output - keep errors and key info
215
+ */
216
+ summarizeBashOutput(output) {
217
+ const lines = output.split('\n');
218
+ // If output has errors, prioritize those
219
+ const errorLines = lines.filter(l => /error|fail|fatal|exception|warning/i.test(l));
220
+ if (errorLines.length > 0) {
221
+ return `Command output (${lines.length} lines):\n\nKey messages:\n${errorLines.slice(0, 30).join('\n')}`;
222
+ }
223
+ // Otherwise show beginning and end
224
+ const preview = lines.slice(0, 20).join('\n');
225
+ const epilogue = lines.length > 40
226
+ ? '\n...\n' + lines.slice(-10).join('\n')
227
+ : lines.slice(20, 40).join('\n');
228
+ return `${preview}${epilogue}`;
229
+ }
230
+ /**
231
+ * Default summarization for unknown tool types
232
+ */
233
+ defaultSummarization(output) {
234
+ const lines = output.split('\n');
235
+ const total = lines.length;
236
+ const preview = lines.slice(0, 50).join('\n');
237
+ const epilogue = total > 100
238
+ ? `\n...\n${lines.slice(-20).join('\n')}\n\n[${total - 70} lines omitted]`
239
+ : total > 50
240
+ ? `\n...\n${lines.slice(-10).join('\n')}`
241
+ : '';
242
+ return `${preview}${epilogue}`;
243
+ }
244
+ /**
245
+ * Extract key information from output for tracking
246
+ */
247
+ extractKeyInfo(toolName, output) {
248
+ const info = [];
249
+ const lowerTool = toolName.toLowerCase();
250
+ // For file operations, extract file paths
251
+ if (lowerTool.includes('read') || lowerTool.includes('write') || lowerTool.includes('edit')) {
252
+ const pathMatches = output.match(/(?:file|path):\s*([^\s\n]+)/gi);
253
+ if (pathMatches)
254
+ info.push(...pathMatches.slice(0, 5));
255
+ }
256
+ // For search, extract match counts
257
+ if (lowerTool.includes('search') || lowerTool.includes('grep')) {
258
+ const countMatch = output.match(/(\d+)\s+(matches|results|found)/i);
259
+ if (countMatch)
260
+ info.push(countMatch[0]);
261
+ }
262
+ // Extract error messages
263
+ const errors = output.match(/error:.*$/gim);
264
+ if (errors)
265
+ info.push(...errors.slice(0, 3));
266
+ return info;
267
+ }
268
+ }
269
+ /**
270
+ * Global singleton instance
271
+ */
272
+ export const intelligentSummarizer = new IntelligentToolSummarizer();
273
+ //# sourceMappingURL=intelligentSummarizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intelligentSummarizer.js","sourceRoot":"","sources":["../../src/core/intelligentSummarizer.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,9 @@ export interface OffsecActionNode {
15
15
  command: string;
16
16
  rationale: string;
17
17
  prior: number;
18
+ successPrior: number;
19
+ detectionRisk: number;
20
+ cost: number;
18
21
  parentId: string | null;
19
22
  children: string[];
20
23
  visits: number;