midas-mcp 2.3.0 → 2.5.0
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/analyzer.d.ts +14 -0
- package/dist/analyzer.d.ts.map +1 -1
- package/dist/analyzer.js +182 -67
- package/dist/analyzer.js.map +1 -1
- package/dist/context.d.ts +55 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +336 -0
- package/dist/context.js.map +1 -0
- package/dist/security.d.ts +29 -0
- package/dist/security.d.ts.map +1 -0
- package/dist/security.js +72 -0
- package/dist/security.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +13 -2
- package/dist/server.js.map +1 -1
- package/dist/tests/edge-cases.test.js +4 -2
- package/dist/tests/edge-cases.test.js.map +1 -1
- package/dist/tests/journal.test.js +4 -1
- package/dist/tests/journal.test.js.map +1 -1
- package/dist/tests/security.test.d.ts +2 -0
- package/dist/tests/security.test.d.ts.map +1 -0
- package/dist/tests/security.test.js +105 -0
- package/dist/tests/security.test.js.map +1 -0
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/journal.d.ts.map +1 -1
- package/dist/tools/journal.js +15 -10
- package/dist/tools/journal.js.map +1 -1
- package/dist/tools/phase.d.ts +1 -0
- package/dist/tools/phase.d.ts.map +1 -1
- package/dist/tools/phase.js +55 -16
- package/dist/tools/phase.js.map +1 -1
- package/dist/tools/tornado.d.ts +2 -2
- package/dist/tools/verify.d.ts +137 -0
- package/dist/tools/verify.d.ts.map +1 -0
- package/dist/tools/verify.js +151 -0
- package/dist/tools/verify.js.map +1 -0
- package/dist/tracker.d.ts +86 -0
- package/dist/tracker.d.ts.map +1 -1
- package/dist/tracker.js +493 -47
- package/dist/tracker.js.map +1 -1
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +118 -2
- package/dist/tui.js.map +1 -1
- package/package.json +2 -3
package/dist/analyzer.d.ts
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import type { Phase } from './state/phase.js';
|
|
2
|
+
/**
|
|
3
|
+
* Summarize long content using Claude (with caching for efficiency)
|
|
4
|
+
* Use for: journal entries, long error logs, large code files
|
|
5
|
+
*/
|
|
6
|
+
export declare function summarizeContent(content: string, purpose: string, targetTokens?: number): Promise<string>;
|
|
2
7
|
export interface ProjectAnalysis {
|
|
3
8
|
currentPhase: Phase;
|
|
4
9
|
summary: string;
|
|
@@ -9,4 +14,13 @@ export interface ProjectAnalysis {
|
|
|
9
14
|
techStack: string[];
|
|
10
15
|
}
|
|
11
16
|
export declare function analyzeProject(projectPath: string): Promise<ProjectAnalysis>;
|
|
17
|
+
/**
|
|
18
|
+
* Fast analysis using pre-compressed context
|
|
19
|
+
* Use this for file-change triggered re-analysis
|
|
20
|
+
*/
|
|
21
|
+
export declare function quickAnalyze(projectPath: string): Promise<{
|
|
22
|
+
suggestedPrompt: string;
|
|
23
|
+
priority: 'critical' | 'high' | 'normal' | 'low';
|
|
24
|
+
reason: string;
|
|
25
|
+
}>;
|
|
12
26
|
//# sourceMappingURL=analyzer.d.ts.map
|
package/dist/analyzer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAiD,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAiD,MAAM,kBAAkB,CAAC;AA0H7F;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,YAAY,GAAE,MAAY,GACzB,OAAO,CAAC,MAAM,CAAC,CAejB;AAiED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,KAAK,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CA8LlF;AAMD;;;GAGG;AACH,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/D,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACjD,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAkBD"}
|
package/dist/analyzer.js
CHANGED
|
@@ -1,12 +1,51 @@
|
|
|
1
1
|
import { getApiKey } from './config.js';
|
|
2
2
|
import { readdirSync, readFileSync, existsSync } from 'fs';
|
|
3
3
|
import { join, extname } from 'path';
|
|
4
|
-
import {
|
|
4
|
+
import { loadState } from './state/phase.js';
|
|
5
|
+
import { updateTracker, loadTracker, getGatesStatus, getUnresolvedErrors, markAnalysisComplete } from './tracker.js';
|
|
5
6
|
import { getJournalEntries } from './tools/journal.js';
|
|
6
|
-
|
|
7
|
+
import { sanitizePath, limitLength } from './security.js';
|
|
8
|
+
import { logger } from './logger.js';
|
|
9
|
+
import { buildCompressedContext, estimateTokens } from './context.js';
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// CLAUDE API WITH PROMPT CACHING
|
|
12
|
+
// ============================================================================
|
|
13
|
+
/**
|
|
14
|
+
* Call Claude with optional prompt caching
|
|
15
|
+
*
|
|
16
|
+
* Prompt caching saves 90% on repeated system prompts:
|
|
17
|
+
* - First call: Normal price for cache write
|
|
18
|
+
* - Subsequent calls: 90% cheaper for cached portion
|
|
19
|
+
*
|
|
20
|
+
* Requirements:
|
|
21
|
+
* - System prompt must be identical
|
|
22
|
+
* - Cache expires after ~5 minutes of inactivity
|
|
23
|
+
* - Minimum 1024 tokens for caching to activate
|
|
24
|
+
*/
|
|
25
|
+
async function callClaude(prompt, systemPrompt, options = {}) {
|
|
7
26
|
const apiKey = getApiKey();
|
|
8
27
|
if (!apiKey)
|
|
9
28
|
throw new Error('No API key');
|
|
29
|
+
const useCache = options.useCache ?? true;
|
|
30
|
+
const maxTokens = options.maxTokens ?? 2048;
|
|
31
|
+
// Build request body
|
|
32
|
+
const body = {
|
|
33
|
+
model: 'claude-sonnet-4-20250514',
|
|
34
|
+
max_tokens: maxTokens,
|
|
35
|
+
messages: [{ role: 'user', content: prompt }],
|
|
36
|
+
};
|
|
37
|
+
// Use prompt caching if enabled and system prompt is large enough
|
|
38
|
+
// Caching requires minimum 1024 tokens to be effective
|
|
39
|
+
if (useCache && estimateTokens(systemPrompt) >= 256) {
|
|
40
|
+
body.system = [{
|
|
41
|
+
type: 'text',
|
|
42
|
+
text: systemPrompt,
|
|
43
|
+
cache_control: { type: 'ephemeral' }, // Cache this system prompt
|
|
44
|
+
}];
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
body.system = systemPrompt;
|
|
48
|
+
}
|
|
10
49
|
const response = await fetch('https://api.anthropic.com/v1/messages', {
|
|
11
50
|
method: 'POST',
|
|
12
51
|
headers: {
|
|
@@ -14,17 +53,19 @@ async function callClaude(prompt, systemPrompt) {
|
|
|
14
53
|
'x-api-key': apiKey,
|
|
15
54
|
'anthropic-version': '2023-06-01',
|
|
16
55
|
},
|
|
17
|
-
body: JSON.stringify(
|
|
18
|
-
model: 'claude-sonnet-4-20250514',
|
|
19
|
-
max_tokens: 2048,
|
|
20
|
-
system: systemPrompt,
|
|
21
|
-
messages: [{ role: 'user', content: prompt }],
|
|
22
|
-
}),
|
|
56
|
+
body: JSON.stringify(body),
|
|
23
57
|
});
|
|
24
58
|
if (!response.ok) {
|
|
25
|
-
|
|
59
|
+
const errorText = await response.text().catch(() => 'Unknown error');
|
|
60
|
+
throw new Error(`API error: ${response.status} - ${errorText}`);
|
|
26
61
|
}
|
|
27
62
|
const data = await response.json();
|
|
63
|
+
// Log cache usage for debugging/monitoring
|
|
64
|
+
if (data.usage?.cache_read_input_tokens) {
|
|
65
|
+
logger.debug('Prompt cache hit', {
|
|
66
|
+
cached_tokens: data.usage.cache_read_input_tokens
|
|
67
|
+
});
|
|
68
|
+
}
|
|
28
69
|
return data.content[0]?.text || '';
|
|
29
70
|
}
|
|
30
71
|
function scanFiles(dir, maxFiles = 30) {
|
|
@@ -47,7 +88,9 @@ function scanFiles(dir, maxFiles = 30) {
|
|
|
47
88
|
files.push(path);
|
|
48
89
|
}
|
|
49
90
|
}
|
|
50
|
-
catch {
|
|
91
|
+
catch {
|
|
92
|
+
// Directory may be inaccessible
|
|
93
|
+
}
|
|
51
94
|
}
|
|
52
95
|
scan(dir);
|
|
53
96
|
return files;
|
|
@@ -60,9 +103,46 @@ function readFile(path, maxLines = 30) {
|
|
|
60
103
|
return '';
|
|
61
104
|
}
|
|
62
105
|
}
|
|
106
|
+
// ============================================================================
|
|
107
|
+
// CONTEXT SUMMARIZATION
|
|
108
|
+
// ============================================================================
|
|
109
|
+
/**
|
|
110
|
+
* Summarize long content using Claude (with caching for efficiency)
|
|
111
|
+
* Use for: journal entries, long error logs, large code files
|
|
112
|
+
*/
|
|
113
|
+
export async function summarizeContent(content, purpose, targetTokens = 200) {
|
|
114
|
+
// Don't summarize if already short enough
|
|
115
|
+
if (estimateTokens(content) <= targetTokens)
|
|
116
|
+
return content;
|
|
117
|
+
try {
|
|
118
|
+
const result = await callClaude(`Summarize this in ~${targetTokens} tokens. Preserve: key decisions, technical choices, errors, solutions.\n\n${content.slice(0, 4000)}`, 'You are a concise technical summarizer. Output only the summary, no preamble.', { maxTokens: targetTokens + 50, useCache: false } // Don't cache summaries
|
|
119
|
+
);
|
|
120
|
+
return result.trim();
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
// Fallback: truncate intelligently
|
|
124
|
+
return truncateIntelligently(content, targetTokens * 4);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Truncate text at sentence boundaries
|
|
129
|
+
*/
|
|
130
|
+
function truncateIntelligently(text, maxChars) {
|
|
131
|
+
if (text.length <= maxChars)
|
|
132
|
+
return text;
|
|
133
|
+
const truncated = text.slice(0, maxChars);
|
|
134
|
+
const lastPeriod = truncated.lastIndexOf('. ');
|
|
135
|
+
const lastNewline = truncated.lastIndexOf('\n');
|
|
136
|
+
const boundary = Math.max(lastPeriod, lastNewline);
|
|
137
|
+
if (boundary > maxChars * 0.7) {
|
|
138
|
+
return truncated.slice(0, boundary + 1) + '...';
|
|
139
|
+
}
|
|
140
|
+
return truncated + '...';
|
|
141
|
+
}
|
|
63
142
|
function getActivityContext(projectPath) {
|
|
143
|
+
const safePath = sanitizePath(projectPath);
|
|
64
144
|
try {
|
|
65
|
-
const tracker = updateTracker(
|
|
145
|
+
const tracker = updateTracker(safePath);
|
|
66
146
|
const lines = [];
|
|
67
147
|
// Recent file activity
|
|
68
148
|
if (tracker.recentFiles.length > 0) {
|
|
@@ -95,11 +175,13 @@ function getActivityContext(projectPath) {
|
|
|
95
175
|
lines.push(`- Docs complete: ${tracker.completionSignals.docsComplete ? 'yes' : 'no'}`);
|
|
96
176
|
return lines.join('\n');
|
|
97
177
|
}
|
|
98
|
-
catch {
|
|
178
|
+
catch (error) {
|
|
179
|
+
logger.error('Failed to get activity context', error);
|
|
99
180
|
return 'No activity data available';
|
|
100
181
|
}
|
|
101
182
|
}
|
|
102
183
|
export async function analyzeProject(projectPath) {
|
|
184
|
+
const safePath = sanitizePath(projectPath);
|
|
103
185
|
const apiKey = getApiKey();
|
|
104
186
|
if (!apiKey) {
|
|
105
187
|
return {
|
|
@@ -113,93 +195,101 @@ export async function analyzeProject(projectPath) {
|
|
|
113
195
|
};
|
|
114
196
|
}
|
|
115
197
|
// Gather context
|
|
116
|
-
const files = scanFiles(
|
|
117
|
-
const fileList = files.map(f => f.replace(
|
|
198
|
+
const files = scanFiles(safePath);
|
|
199
|
+
const fileList = files.map(f => f.replace(safePath + '/', '')).join('\n');
|
|
118
200
|
// Check for Eagle Sight docs
|
|
119
|
-
const hasbrainlift = existsSync(join(
|
|
120
|
-
const hasPrd = existsSync(join(
|
|
121
|
-
const hasGameplan = existsSync(join(
|
|
122
|
-
const brainliftContent = hasbrainlift ? readFile(join(
|
|
123
|
-
const prdContent = hasPrd ? readFile(join(
|
|
124
|
-
const gameplanContent = hasGameplan ? readFile(join(
|
|
201
|
+
const hasbrainlift = existsSync(join(safePath, 'docs', 'brainlift.md'));
|
|
202
|
+
const hasPrd = existsSync(join(safePath, 'docs', 'prd.md'));
|
|
203
|
+
const hasGameplan = existsSync(join(safePath, 'docs', 'gameplan.md'));
|
|
204
|
+
const brainliftContent = hasbrainlift ? readFile(join(safePath, 'docs', 'brainlift.md')) : '';
|
|
205
|
+
const prdContent = hasPrd ? readFile(join(safePath, 'docs', 'prd.md')) : '';
|
|
206
|
+
const gameplanContent = hasGameplan ? readFile(join(safePath, 'docs', 'gameplan.md')) : '';
|
|
125
207
|
// Check for deployment/monitoring
|
|
126
|
-
const hasDockerfile = existsSync(join(
|
|
127
|
-
const hasCI = existsSync(join(
|
|
208
|
+
const hasDockerfile = existsSync(join(safePath, 'Dockerfile')) || existsSync(join(safePath, 'docker-compose.yml'));
|
|
209
|
+
const hasCI = existsSync(join(safePath, '.github', 'workflows'));
|
|
128
210
|
const hasTests = files.some(f => f.includes('.test.') || f.includes('.spec.') || f.includes('__tests__'));
|
|
129
211
|
// Get activity context (replaces broken chat history)
|
|
130
|
-
const activityContext = getActivityContext(
|
|
212
|
+
const activityContext = getActivityContext(safePath);
|
|
131
213
|
// Get journal entries for conversation history
|
|
132
|
-
const journalEntries = getJournalEntries({ projectPath, limit: 5 });
|
|
214
|
+
const journalEntries = getJournalEntries({ projectPath: safePath, limit: 5 });
|
|
133
215
|
const journalContext = journalEntries.length > 0
|
|
134
|
-
? journalEntries.map(e => `### ${e.title} (${e.timestamp.slice(0, 10)})\n${e.conversation
|
|
216
|
+
? journalEntries.map(e => `### ${e.title} (${e.timestamp.slice(0, 10)})\n${limitLength(e.conversation, 500)}`).join('\n\n')
|
|
135
217
|
: 'No journal entries yet';
|
|
136
218
|
// Sample some code files
|
|
137
219
|
const codeSamples = files.slice(0, 5).map(f => {
|
|
138
220
|
const content = readFile(f, 20);
|
|
139
|
-
return `--- ${f.replace(
|
|
221
|
+
return `--- ${f.replace(safePath + '/', '')} ---\n${content}`;
|
|
140
222
|
}).join('\n\n');
|
|
141
|
-
|
|
223
|
+
// Get current state for context
|
|
224
|
+
const currentState = loadState(safePath);
|
|
225
|
+
const tracker = loadTracker(safePath);
|
|
226
|
+
const gatesStatus = getGatesStatus(safePath);
|
|
227
|
+
const unresolvedErrors = getUnresolvedErrors(safePath);
|
|
228
|
+
// Build error context
|
|
229
|
+
const errorContext = unresolvedErrors.length > 0
|
|
230
|
+
? unresolvedErrors.slice(0, 3).map(e => `- ${e.error.slice(0, 100)}${e.fixAttempts.length > 0 ? ` (tried ${e.fixAttempts.length}x)` : ''}`).join('\n')
|
|
231
|
+
: 'No unresolved errors';
|
|
232
|
+
// Context stacking: STABLE FIRST (high attention at beginning)
|
|
233
|
+
// Then PROJECT CONTEXT (middle, lower attention)
|
|
234
|
+
// Then RECENT ACTIVITY LAST (high attention at end)
|
|
235
|
+
const prompt = `# GOLDEN CODE METHODOLOGY (Stable Context - Beginning)
|
|
236
|
+
|
|
237
|
+
## The 4 Phases with Steps:
|
|
238
|
+
EAGLE_SIGHT (Planning): IDEA → RESEARCH → BRAINLIFT → PRD → GAMEPLAN
|
|
239
|
+
BUILD (7-step cycle): RULES → INDEX → READ → RESEARCH → IMPLEMENT → TEST → DEBUG
|
|
240
|
+
SHIP: REVIEW → DEPLOY → MONITOR
|
|
241
|
+
GROW: FEEDBACK → ANALYZE → ITERATE
|
|
242
|
+
|
|
243
|
+
## Current State (from Midas tracking):
|
|
244
|
+
- Phase: ${currentState.current.phase}${('step' in currentState.current) ? ` → ${currentState.current.step}` : ''}
|
|
245
|
+
- Confidence: ${tracker.confidence}%
|
|
246
|
+
- Gates: ${gatesStatus.allPass ? 'ALL PASS' : gatesStatus.failing.length > 0 ? `FAILING: ${gatesStatus.failing.join(', ')}` : 'Not yet run'}
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
# PROJECT CONTEXT (Middle - Architecture/Docs)
|
|
142
251
|
|
|
143
252
|
## Project Files (${files.length} total):
|
|
144
253
|
${fileList}
|
|
145
254
|
|
|
146
255
|
## Eagle Sight Docs:
|
|
147
256
|
- brainlift.md: ${hasbrainlift ? 'exists' : 'missing'}
|
|
148
|
-
${
|
|
149
|
-
|
|
150
|
-
- prd.md: ${hasPrd ? 'exists' : 'missing'}
|
|
151
|
-
${prdContent ? `Preview:\n${prdContent.slice(0, 400)}` : ''}
|
|
152
|
-
|
|
257
|
+
- prd.md: ${hasPrd ? 'exists' : 'missing'}
|
|
153
258
|
- gameplan.md: ${hasGameplan ? 'exists' : 'missing'}
|
|
154
|
-
|
|
259
|
+
|
|
260
|
+
${brainliftContent ? `brainlift.md preview:\n${brainliftContent.slice(0, 300)}` : ''}
|
|
155
261
|
|
|
156
262
|
## Infrastructure:
|
|
157
263
|
- Tests: ${hasTests ? 'yes' : 'no'}
|
|
158
264
|
- Dockerfile/compose: ${hasDockerfile ? 'yes' : 'no'}
|
|
159
|
-
- CI/CD
|
|
160
|
-
|
|
161
|
-
## Recent Activity:
|
|
162
|
-
${activityContext}
|
|
163
|
-
|
|
164
|
-
## Journal (Past Conversations):
|
|
165
|
-
${journalContext}
|
|
265
|
+
- CI/CD: ${hasCI ? 'yes' : 'no'}
|
|
166
266
|
|
|
167
267
|
## Code Samples:
|
|
168
268
|
${codeSamples || 'No code files yet'}
|
|
169
269
|
|
|
170
|
-
|
|
270
|
+
---
|
|
171
271
|
|
|
172
|
-
|
|
173
|
-
- IDEA: Define core idea, problem, audience
|
|
174
|
-
- RESEARCH: Landscape scan, competitors
|
|
175
|
-
- BRAINLIFT: Document unique insights
|
|
176
|
-
- PRD: Write requirements
|
|
177
|
-
- GAMEPLAN: Plan the build
|
|
272
|
+
# RECENT CONTEXT (End - High Attention)
|
|
178
273
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
- IMPLEMENT: Write code with tests
|
|
185
|
-
- TEST: Run tests, fix failures
|
|
186
|
-
- DEBUG: Tornado cycle (research + logs + tests)
|
|
274
|
+
## Unresolved Errors:
|
|
275
|
+
${errorContext}
|
|
276
|
+
|
|
277
|
+
## Recent Activity:
|
|
278
|
+
${activityContext}
|
|
187
279
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
- DEPLOY: CI/CD, production deploy
|
|
191
|
-
- MONITOR: Logs, alerts, health checks
|
|
280
|
+
## Journal (Most Recent Conversations):
|
|
281
|
+
${journalContext}
|
|
192
282
|
|
|
193
|
-
|
|
194
|
-
- FEEDBACK: Collect user feedback
|
|
195
|
-
- ANALYZE: Study metrics and behavior
|
|
196
|
-
- ITERATE: Plan next cycle (back to EAGLE_SIGHT)
|
|
283
|
+
---
|
|
197
284
|
|
|
198
|
-
Based on
|
|
199
|
-
1.
|
|
285
|
+
Based on ALL evidence above, determine:
|
|
286
|
+
1. Verify/adjust the current phase and step
|
|
200
287
|
2. What's completed
|
|
201
|
-
3. What's next
|
|
202
|
-
4. Specific prompt for Cursor
|
|
288
|
+
3. What's the single most important next action
|
|
289
|
+
4. Specific prompt for Cursor (actionable, one task)
|
|
290
|
+
|
|
291
|
+
CRITICAL: If gates are failing (build/tests/lint), the next action MUST be to fix them.
|
|
292
|
+
If there are unresolved errors with multiple fix attempts, suggest Tornado debugging.
|
|
203
293
|
|
|
204
294
|
Respond ONLY with valid JSON:
|
|
205
295
|
{
|
|
@@ -242,6 +332,8 @@ Respond ONLY with valid JSON:
|
|
|
242
332
|
else {
|
|
243
333
|
currentPhase = { phase: 'IDLE' };
|
|
244
334
|
}
|
|
335
|
+
// Mark analysis as complete for file change tracking
|
|
336
|
+
markAnalysisComplete(safePath);
|
|
245
337
|
return {
|
|
246
338
|
currentPhase,
|
|
247
339
|
summary: data.summary || 'Project analyzed',
|
|
@@ -253,6 +345,7 @@ Respond ONLY with valid JSON:
|
|
|
253
345
|
};
|
|
254
346
|
}
|
|
255
347
|
catch (error) {
|
|
348
|
+
logger.error('AI analysis failed', error);
|
|
256
349
|
return {
|
|
257
350
|
currentPhase: { phase: 'IDLE' },
|
|
258
351
|
summary: 'Analysis failed',
|
|
@@ -264,4 +357,26 @@ Respond ONLY with valid JSON:
|
|
|
264
357
|
};
|
|
265
358
|
}
|
|
266
359
|
}
|
|
360
|
+
// ============================================================================
|
|
361
|
+
// QUICK ANALYSIS (for frequent re-checks)
|
|
362
|
+
// ============================================================================
|
|
363
|
+
/**
|
|
364
|
+
* Fast analysis using pre-compressed context
|
|
365
|
+
* Use this for file-change triggered re-analysis
|
|
366
|
+
*/
|
|
367
|
+
export async function quickAnalyze(projectPath) {
|
|
368
|
+
const safePath = sanitizePath(projectPath);
|
|
369
|
+
// Build compressed context (fast, no AI needed)
|
|
370
|
+
buildCompressedContext(safePath, { maxTokens: 2000 });
|
|
371
|
+
// Get smart suggestion based on gates/errors
|
|
372
|
+
const { getSmartPromptSuggestion } = await import('./tracker.js');
|
|
373
|
+
const suggestion = getSmartPromptSuggestion(safePath);
|
|
374
|
+
// Mark analysis complete
|
|
375
|
+
markAnalysisComplete(safePath);
|
|
376
|
+
return {
|
|
377
|
+
suggestedPrompt: suggestion.prompt,
|
|
378
|
+
priority: suggestion.priority,
|
|
379
|
+
reason: suggestion.reason,
|
|
380
|
+
};
|
|
381
|
+
}
|
|
267
382
|
//# sourceMappingURL=analyzer.js.map
|
package/dist/analyzer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context Compression and Management for Midas
|
|
3
|
+
*
|
|
4
|
+
* Implements the "Lost in the Middle" principle:
|
|
5
|
+
* - BEGINNING: Stable context (methodology, current phase)
|
|
6
|
+
* - MIDDLE: Project context (summarized)
|
|
7
|
+
* - END: Recent context (full detail)
|
|
8
|
+
*/
|
|
9
|
+
export declare function estimateTokens(text: string): number;
|
|
10
|
+
export interface ContextLayer {
|
|
11
|
+
name: string;
|
|
12
|
+
priority: 'critical' | 'high' | 'medium' | 'low';
|
|
13
|
+
position: 'beginning' | 'middle' | 'end';
|
|
14
|
+
content: string;
|
|
15
|
+
tokens: number;
|
|
16
|
+
}
|
|
17
|
+
export interface CompressedContext {
|
|
18
|
+
layers: ContextLayer[];
|
|
19
|
+
totalTokens: number;
|
|
20
|
+
truncated: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Truncate text to approximate token limit, preferring sentence boundaries
|
|
24
|
+
*/
|
|
25
|
+
export declare function truncateToTokens(text: string, maxTokens: number): string;
|
|
26
|
+
/**
|
|
27
|
+
* Extract key points from text (simple keyword-based)
|
|
28
|
+
*/
|
|
29
|
+
export declare function extractKeyPoints(text: string, maxPoints?: number): string[];
|
|
30
|
+
/**
|
|
31
|
+
* Summarize journal entries to titles + key decisions
|
|
32
|
+
*/
|
|
33
|
+
export declare function summarizeJournalEntries(entries: Array<{
|
|
34
|
+
title: string;
|
|
35
|
+
conversation: string;
|
|
36
|
+
timestamp: string;
|
|
37
|
+
}>): string;
|
|
38
|
+
export declare function buildCompressedContext(projectPath: string, options?: {
|
|
39
|
+
maxTokens?: number;
|
|
40
|
+
includeCode?: boolean;
|
|
41
|
+
taskDescription?: string;
|
|
42
|
+
}): CompressedContext;
|
|
43
|
+
/**
|
|
44
|
+
* Convert compressed context to a single string for the API
|
|
45
|
+
*/
|
|
46
|
+
export declare function contextToString(context: CompressedContext): string;
|
|
47
|
+
/**
|
|
48
|
+
* Get context stats for debugging/monitoring
|
|
49
|
+
*/
|
|
50
|
+
export declare function getContextStats(projectPath: string): {
|
|
51
|
+
estimatedTokens: number;
|
|
52
|
+
layerBreakdown: Record<string, number>;
|
|
53
|
+
compressionRatio: number;
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAaH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAMD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACjD,QAAQ,EAAE,WAAW,GAAG,QAAQ,GAAG,KAAK,CAAC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACpB;AAuFD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAiBxE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,GAAE,MAAU,GAAG,MAAM,EAAE,CAwB9E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,MAAM,CAY1H;AAWD,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;IACP,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CACrB,GACL,iBAAiB,CAsKnB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAoBlE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG;IACpD,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAqBA"}
|