midas-mcp 3.0.0 → 3.3.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/LICENSE +21 -0
- package/dist/ai.d.ts +2 -0
- package/dist/ai.d.ts.map +1 -1
- package/dist/ai.js +28 -45
- package/dist/ai.js.map +1 -1
- package/dist/analyzer.d.ts.map +1 -1
- package/dist/analyzer.js +129 -135
- package/dist/analyzer.js.map +1 -1
- package/dist/config.d.ts +16 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +109 -15
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts +8 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +76 -7
- package/dist/context.js.map +1 -1
- package/dist/docs/DEPLOYMENT.md +190 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/monitoring.d.ts +97 -0
- package/dist/monitoring.d.ts.map +1 -0
- package/dist/monitoring.js +258 -0
- package/dist/monitoring.js.map +1 -0
- package/dist/prompts/grow.d.ts.map +1 -1
- package/dist/prompts/grow.js +155 -47
- package/dist/prompts/grow.js.map +1 -1
- package/dist/providers.d.ts +46 -0
- package/dist/providers.d.ts.map +1 -0
- package/dist/providers.js +349 -0
- package/dist/providers.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +28 -3
- package/dist/server.js.map +1 -1
- package/dist/state/phase.d.ts +19 -4
- package/dist/state/phase.d.ts.map +1 -1
- package/dist/state/phase.js +19 -10
- package/dist/state/phase.js.map +1 -1
- package/dist/tools/analyze.d.ts.map +1 -1
- package/dist/tools/analyze.js +21 -9
- package/dist/tools/analyze.js.map +1 -1
- package/dist/tools/completeness.d.ts +36 -0
- package/dist/tools/completeness.d.ts.map +1 -0
- package/dist/tools/completeness.js +838 -0
- package/dist/tools/completeness.js.map +1 -0
- package/dist/tools/config.d.ts +73 -0
- package/dist/tools/config.d.ts.map +1 -0
- package/dist/tools/config.js +94 -0
- package/dist/tools/config.js.map +1 -0
- package/dist/tools/grow.d.ts +157 -0
- package/dist/tools/grow.d.ts.map +1 -0
- package/dist/tools/grow.js +532 -0
- package/dist/tools/grow.js.map +1 -0
- package/dist/tools/index.d.ts +4 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +8 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/validate.d.ts +60 -0
- package/dist/tools/validate.d.ts.map +1 -0
- package/dist/tools/validate.js +234 -0
- package/dist/tools/validate.js.map +1 -0
- package/dist/tools/verify.d.ts +4 -4
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +302 -180
- package/dist/tui.js.map +1 -1
- package/docs/DEPLOYMENT.md +190 -0
- package/package.json +17 -5
- package/dist/tests/analyze.test.d.ts +0 -2
- package/dist/tests/analyze.test.d.ts.map +0 -1
- package/dist/tests/analyze.test.js +0 -120
- package/dist/tests/analyze.test.js.map +0 -1
- package/dist/tests/context.test.d.ts +0 -2
- package/dist/tests/context.test.d.ts.map +0 -1
- package/dist/tests/context.test.js +0 -213
- package/dist/tests/context.test.js.map +0 -1
- package/dist/tests/edge-cases.test.d.ts +0 -2
- package/dist/tests/edge-cases.test.d.ts.map +0 -1
- package/dist/tests/edge-cases.test.js +0 -234
- package/dist/tests/edge-cases.test.js.map +0 -1
- package/dist/tests/journal.test.d.ts +0 -2
- package/dist/tests/journal.test.d.ts.map +0 -1
- package/dist/tests/journal.test.js +0 -184
- package/dist/tests/journal.test.js.map +0 -1
- package/dist/tests/metrics.test.d.ts +0 -2
- package/dist/tests/metrics.test.d.ts.map +0 -1
- package/dist/tests/metrics.test.js +0 -178
- package/dist/tests/metrics.test.js.map +0 -1
- package/dist/tests/phase.test.d.ts +0 -2
- package/dist/tests/phase.test.d.ts.map +0 -1
- package/dist/tests/phase.test.js +0 -110
- package/dist/tests/phase.test.js.map +0 -1
- package/dist/tests/prompts.test.d.ts +0 -2
- package/dist/tests/prompts.test.d.ts.map +0 -1
- package/dist/tests/prompts.test.js +0 -157
- package/dist/tests/prompts.test.js.map +0 -1
- package/dist/tests/search.test.d.ts +0 -2
- package/dist/tests/search.test.d.ts.map +0 -1
- package/dist/tests/search.test.js +0 -228
- package/dist/tests/search.test.js.map +0 -1
- package/dist/tests/security.test.d.ts +0 -2
- package/dist/tests/security.test.d.ts.map +0 -1
- package/dist/tests/security.test.js +0 -105
- package/dist/tests/security.test.js.map +0 -1
- package/dist/tests/server.test.d.ts +0 -2
- package/dist/tests/server.test.d.ts.map +0 -1
- package/dist/tests/server.test.js +0 -93
- package/dist/tests/server.test.js.map +0 -1
- package/dist/tests/techstack.test.d.ts +0 -2
- package/dist/tests/techstack.test.d.ts.map +0 -1
- package/dist/tests/techstack.test.js +0 -187
- package/dist/tests/techstack.test.js.map +0 -1
- package/dist/tests/tools.test.d.ts +0 -2
- package/dist/tests/tools.test.d.ts.map +0 -1
- package/dist/tests/tools.test.js +0 -137
- package/dist/tests/tools.test.js.map +0 -1
- package/dist/tests/tracker.test.d.ts +0 -2
- package/dist/tests/tracker.test.d.ts.map +0 -1
- package/dist/tests/tracker.test.js +0 -197
- package/dist/tests/tracker.test.js.map +0 -1
|
@@ -1,213 +0,0 @@
|
|
|
1
|
-
import { describe, it, beforeEach, afterEach } from 'node:test';
|
|
2
|
-
import assert from 'node:assert';
|
|
3
|
-
import { mkdirSync, rmSync } from 'fs';
|
|
4
|
-
import { join } from 'path';
|
|
5
|
-
import { tmpdir } from 'os';
|
|
6
|
-
import { estimateTokens, truncateToTokens, extractKeyPoints, summarizeJournalEntries, buildCompressedContext, contextToString, getContextStats, getCachedSummary, setCachedSummary, getCacheStats, } from '../context.js';
|
|
7
|
-
import { saveToJournal } from '../tools/journal.js';
|
|
8
|
-
describe('Context Compression Module', () => {
|
|
9
|
-
const testDir = join(tmpdir(), 'midas-context-test-' + Date.now());
|
|
10
|
-
beforeEach(() => {
|
|
11
|
-
mkdirSync(testDir, { recursive: true });
|
|
12
|
-
});
|
|
13
|
-
afterEach(() => {
|
|
14
|
-
rmSync(testDir, { recursive: true, force: true });
|
|
15
|
-
});
|
|
16
|
-
describe('estimateTokens', () => {
|
|
17
|
-
it('estimates tokens correctly for short text', () => {
|
|
18
|
-
const text = 'Hello world';
|
|
19
|
-
const tokens = estimateTokens(text);
|
|
20
|
-
// 11 chars / 4 = ~3 tokens
|
|
21
|
-
assert.strictEqual(tokens >= 2 && tokens <= 4, true);
|
|
22
|
-
});
|
|
23
|
-
it('estimates tokens correctly for longer text', () => {
|
|
24
|
-
const text = 'This is a longer piece of text that should have more tokens.';
|
|
25
|
-
const tokens = estimateTokens(text);
|
|
26
|
-
// 60 chars / 4 = 15 tokens
|
|
27
|
-
assert.strictEqual(tokens >= 12 && tokens <= 18, true);
|
|
28
|
-
});
|
|
29
|
-
it('handles empty string', () => {
|
|
30
|
-
assert.strictEqual(estimateTokens(''), 0);
|
|
31
|
-
});
|
|
32
|
-
});
|
|
33
|
-
describe('truncateToTokens', () => {
|
|
34
|
-
it('returns original if under limit', () => {
|
|
35
|
-
const text = 'Short text';
|
|
36
|
-
const result = truncateToTokens(text, 100);
|
|
37
|
-
assert.strictEqual(result, text);
|
|
38
|
-
});
|
|
39
|
-
it('truncates long text', () => {
|
|
40
|
-
const text = 'A'.repeat(1000);
|
|
41
|
-
const result = truncateToTokens(text, 50);
|
|
42
|
-
assert.strictEqual(result.length < text.length, true);
|
|
43
|
-
assert.strictEqual(result.endsWith('...'), true);
|
|
44
|
-
});
|
|
45
|
-
it('tries to end at sentence boundary', () => {
|
|
46
|
-
const text = 'First sentence. Second sentence. Third sentence. Fourth sentence.';
|
|
47
|
-
const result = truncateToTokens(text, 10);
|
|
48
|
-
// Should try to end at a period
|
|
49
|
-
assert.strictEqual(result.includes('.'), true);
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
describe('extractKeyPoints', () => {
|
|
53
|
-
it('extracts key points from text', () => {
|
|
54
|
-
const text = `We implemented the feature.
|
|
55
|
-
Then we tested it thoroughly.
|
|
56
|
-
The build passed successfully.
|
|
57
|
-
All errors were fixed.`;
|
|
58
|
-
const points = extractKeyPoints(text, 3);
|
|
59
|
-
assert.strictEqual(points.length, 3);
|
|
60
|
-
});
|
|
61
|
-
it('prioritizes lines with key indicators', () => {
|
|
62
|
-
const text = `Random line here.
|
|
63
|
-
We implemented the new feature.
|
|
64
|
-
Another random line.
|
|
65
|
-
Then we fixed the error.`;
|
|
66
|
-
const points = extractKeyPoints(text, 2);
|
|
67
|
-
// Should prioritize lines with "implement" and "fix"
|
|
68
|
-
assert.strictEqual(points.some(p => p.includes('implement')), true);
|
|
69
|
-
});
|
|
70
|
-
it('limits line length', () => {
|
|
71
|
-
const text = 'A'.repeat(200);
|
|
72
|
-
const points = extractKeyPoints(text, 1);
|
|
73
|
-
assert.strictEqual(points[0].length <= 100, true);
|
|
74
|
-
});
|
|
75
|
-
it('returns empty for empty text', () => {
|
|
76
|
-
const points = extractKeyPoints('', 5);
|
|
77
|
-
assert.strictEqual(points.length, 0);
|
|
78
|
-
});
|
|
79
|
-
});
|
|
80
|
-
describe('summarizeJournalEntries', () => {
|
|
81
|
-
it('summarizes entries with dates', () => {
|
|
82
|
-
const entries = [
|
|
83
|
-
{ title: 'First entry', conversation: 'Content one', timestamp: '2024-01-15T10:00:00Z' },
|
|
84
|
-
{ title: 'Second entry', conversation: 'Content two', timestamp: '2024-01-16T10:00:00Z' },
|
|
85
|
-
];
|
|
86
|
-
const summary = summarizeJournalEntries(entries);
|
|
87
|
-
assert.strictEqual(summary.includes('2024-01-15'), true);
|
|
88
|
-
assert.strictEqual(summary.includes('First entry'), true);
|
|
89
|
-
});
|
|
90
|
-
it('returns message for empty entries', () => {
|
|
91
|
-
const summary = summarizeJournalEntries([]);
|
|
92
|
-
assert.strictEqual(summary, 'No journal entries.');
|
|
93
|
-
});
|
|
94
|
-
it('limits to 5 entries', () => {
|
|
95
|
-
const entries = Array(10).fill(null).map((_, i) => ({
|
|
96
|
-
title: `Entry ${i}`,
|
|
97
|
-
conversation: `Content ${i}`,
|
|
98
|
-
timestamp: `2024-01-${10 + i}T10:00:00Z`,
|
|
99
|
-
}));
|
|
100
|
-
const summary = summarizeJournalEntries(entries);
|
|
101
|
-
// Should not include all 10
|
|
102
|
-
assert.strictEqual(summary.includes('Entry 6'), false);
|
|
103
|
-
});
|
|
104
|
-
});
|
|
105
|
-
describe('buildCompressedContext', () => {
|
|
106
|
-
it('builds context with methodology layer', () => {
|
|
107
|
-
const context = buildCompressedContext(testDir);
|
|
108
|
-
assert.strictEqual(context.layers.some(l => l.name === 'methodology'), true);
|
|
109
|
-
});
|
|
110
|
-
it('includes current state layer', () => {
|
|
111
|
-
const context = buildCompressedContext(testDir);
|
|
112
|
-
assert.strictEqual(context.layers.some(l => l.name === 'current_state'), true);
|
|
113
|
-
});
|
|
114
|
-
it('calculates total tokens', () => {
|
|
115
|
-
const context = buildCompressedContext(testDir);
|
|
116
|
-
assert.strictEqual(context.totalTokens > 0, true);
|
|
117
|
-
assert.strictEqual(typeof context.totalTokens, 'number');
|
|
118
|
-
});
|
|
119
|
-
it('respects maxTokens option', () => {
|
|
120
|
-
const context = buildCompressedContext(testDir, { maxTokens: 500 });
|
|
121
|
-
assert.strictEqual(context.totalTokens <= 500, true);
|
|
122
|
-
});
|
|
123
|
-
it('includes journal summary when entries exist', () => {
|
|
124
|
-
saveToJournal({
|
|
125
|
-
projectPath: testDir,
|
|
126
|
-
title: 'Test entry',
|
|
127
|
-
conversation: 'Test content',
|
|
128
|
-
});
|
|
129
|
-
const context = buildCompressedContext(testDir);
|
|
130
|
-
assert.strictEqual(context.layers.some(l => l.name === 'journal_summary'), true);
|
|
131
|
-
});
|
|
132
|
-
it('includes task description when provided', () => {
|
|
133
|
-
const context = buildCompressedContext(testDir, {
|
|
134
|
-
taskDescription: 'Fix the authentication bug'
|
|
135
|
-
});
|
|
136
|
-
assert.strictEqual(context.layers.some(l => l.name === 'current_task'), true);
|
|
137
|
-
const taskLayer = context.layers.find(l => l.name === 'current_task');
|
|
138
|
-
assert.strictEqual(taskLayer?.content.includes('authentication bug'), true);
|
|
139
|
-
});
|
|
140
|
-
it('sets truncated flag when content exceeds budget', () => {
|
|
141
|
-
// Add a lot of journal entries
|
|
142
|
-
for (let i = 0; i < 20; i++) {
|
|
143
|
-
saveToJournal({
|
|
144
|
-
projectPath: testDir,
|
|
145
|
-
title: `Entry ${i}`,
|
|
146
|
-
conversation: 'A'.repeat(500),
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
const context = buildCompressedContext(testDir, { maxTokens: 200 });
|
|
150
|
-
// Might be truncated due to low token budget
|
|
151
|
-
assert.strictEqual(typeof context.truncated, 'boolean');
|
|
152
|
-
});
|
|
153
|
-
});
|
|
154
|
-
describe('contextToString', () => {
|
|
155
|
-
it('converts context to string with sections', () => {
|
|
156
|
-
const context = buildCompressedContext(testDir);
|
|
157
|
-
const str = contextToString(context);
|
|
158
|
-
assert.strictEqual(str.includes('# METHODOLOGY & STATE'), true);
|
|
159
|
-
});
|
|
160
|
-
it('groups layers by position', () => {
|
|
161
|
-
const context = buildCompressedContext(testDir);
|
|
162
|
-
const str = contextToString(context);
|
|
163
|
-
// Check structure
|
|
164
|
-
assert.strictEqual(typeof str, 'string');
|
|
165
|
-
assert.strictEqual(str.length > 0, true);
|
|
166
|
-
});
|
|
167
|
-
});
|
|
168
|
-
describe('getContextStats', () => {
|
|
169
|
-
it('returns token statistics', () => {
|
|
170
|
-
const stats = getContextStats(testDir);
|
|
171
|
-
assert.strictEqual(typeof stats.estimatedTokens, 'number');
|
|
172
|
-
assert.strictEqual(typeof stats.compressionRatio, 'number');
|
|
173
|
-
});
|
|
174
|
-
it('provides layer breakdown', () => {
|
|
175
|
-
const stats = getContextStats(testDir);
|
|
176
|
-
assert.strictEqual(typeof stats.layerBreakdown, 'object');
|
|
177
|
-
assert.strictEqual('methodology' in stats.layerBreakdown, true);
|
|
178
|
-
});
|
|
179
|
-
});
|
|
180
|
-
describe('Summary Caching', () => {
|
|
181
|
-
it('setCachedSummary stores summary', () => {
|
|
182
|
-
const content = 'This is the original content that would be summarized.';
|
|
183
|
-
const summary = 'Original summarized.';
|
|
184
|
-
setCachedSummary(testDir, content, 50, summary);
|
|
185
|
-
const cached = getCachedSummary(testDir, content, 50);
|
|
186
|
-
assert.strictEqual(cached, summary);
|
|
187
|
-
});
|
|
188
|
-
it('getCachedSummary returns null for uncached content', () => {
|
|
189
|
-
const cached = getCachedSummary(testDir, 'uncached content', 50);
|
|
190
|
-
assert.strictEqual(cached, null);
|
|
191
|
-
});
|
|
192
|
-
it('getCachedSummary returns null for different maxTokens', () => {
|
|
193
|
-
const content = 'Same content';
|
|
194
|
-
setCachedSummary(testDir, content, 50, 'summary for 50');
|
|
195
|
-
const cached = getCachedSummary(testDir, content, 100);
|
|
196
|
-
assert.strictEqual(cached, null);
|
|
197
|
-
});
|
|
198
|
-
it('getCacheStats tracks entries', () => {
|
|
199
|
-
setCachedSummary(testDir, 'Content 1', 50, 'Summary 1');
|
|
200
|
-
setCachedSummary(testDir, 'Content 2', 50, 'Summary 2');
|
|
201
|
-
const stats = getCacheStats(testDir);
|
|
202
|
-
assert.strictEqual(stats.entries, 2);
|
|
203
|
-
});
|
|
204
|
-
it('getCacheStats calculates token savings', () => {
|
|
205
|
-
const longContent = 'A'.repeat(1000); // ~250 tokens
|
|
206
|
-
const shortSummary = 'Short summary'; // ~3 tokens
|
|
207
|
-
setCachedSummary(testDir, longContent, 50, shortSummary);
|
|
208
|
-
const stats = getCacheStats(testDir);
|
|
209
|
-
assert.strictEqual(stats.tokensSaved > 200, true);
|
|
210
|
-
});
|
|
211
|
-
});
|
|
212
|
-
});
|
|
213
|
-
//# sourceMappingURL=context.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context.test.js","sourceRoot":"","sources":["../../src/tests/context.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"edge-cases.test.d.ts","sourceRoot":"","sources":["../../src/tests/edge-cases.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,234 +0,0 @@
|
|
|
1
|
-
import { describe, it, beforeEach, afterEach } from 'node:test';
|
|
2
|
-
import assert from 'node:assert';
|
|
3
|
-
import { mkdirSync, rmSync, writeFileSync, existsSync } from 'fs';
|
|
4
|
-
import { join } from 'path';
|
|
5
|
-
import { tmpdir } from 'os';
|
|
6
|
-
import { loadState, saveState, setPhase, getDefaultState } from '../state/phase.js';
|
|
7
|
-
import { startProject, getPhase, setPhaseManually } from '../tools/phase.js';
|
|
8
|
-
import { audit } from '../tools/audit.js';
|
|
9
|
-
import { checkDocs } from '../tools/docs.js';
|
|
10
|
-
import { loadTracker } from '../tracker.js';
|
|
11
|
-
import { loadMetrics } from '../metrics.js';
|
|
12
|
-
import { saveToJournal, getJournalEntries } from '../tools/journal.js';
|
|
13
|
-
describe('Edge Cases and Error Handling', () => {
|
|
14
|
-
const testDir = join(tmpdir(), 'midas-edge-test-' + Date.now());
|
|
15
|
-
beforeEach(() => {
|
|
16
|
-
mkdirSync(testDir, { recursive: true });
|
|
17
|
-
});
|
|
18
|
-
afterEach(() => {
|
|
19
|
-
rmSync(testDir, { recursive: true, force: true });
|
|
20
|
-
});
|
|
21
|
-
describe('Corrupted State Files', () => {
|
|
22
|
-
it('handles corrupted state.json gracefully', () => {
|
|
23
|
-
mkdirSync(join(testDir, '.midas'), { recursive: true });
|
|
24
|
-
writeFileSync(join(testDir, '.midas', 'state.json'), 'not valid json{{{');
|
|
25
|
-
// Should return default state instead of crashing
|
|
26
|
-
const state = loadState(testDir);
|
|
27
|
-
assert.deepStrictEqual(state.current, { phase: 'IDLE' });
|
|
28
|
-
});
|
|
29
|
-
it('handles corrupted tracker.json gracefully', () => {
|
|
30
|
-
mkdirSync(join(testDir, '.midas'), { recursive: true });
|
|
31
|
-
writeFileSync(join(testDir, '.midas', 'tracker.json'), '{ broken');
|
|
32
|
-
const tracker = loadTracker(testDir);
|
|
33
|
-
assert.deepStrictEqual(tracker.inferredPhase, { phase: 'IDLE' });
|
|
34
|
-
});
|
|
35
|
-
it('handles corrupted metrics.json gracefully', () => {
|
|
36
|
-
mkdirSync(join(testDir, '.midas'), { recursive: true });
|
|
37
|
-
writeFileSync(join(testDir, '.midas', 'metrics.json'), '[[invalid]]');
|
|
38
|
-
const metrics = loadMetrics(testDir);
|
|
39
|
-
assert.strictEqual(metrics.totalSessions, 0);
|
|
40
|
-
});
|
|
41
|
-
it('handles empty state file', () => {
|
|
42
|
-
mkdirSync(join(testDir, '.midas'), { recursive: true });
|
|
43
|
-
writeFileSync(join(testDir, '.midas', 'state.json'), '');
|
|
44
|
-
const state = loadState(testDir);
|
|
45
|
-
assert.deepStrictEqual(state.current, { phase: 'IDLE' });
|
|
46
|
-
});
|
|
47
|
-
});
|
|
48
|
-
describe('Missing Directories', () => {
|
|
49
|
-
it('creates .midas directory on save', () => {
|
|
50
|
-
const state = getDefaultState();
|
|
51
|
-
saveState(testDir, state);
|
|
52
|
-
assert.strictEqual(existsSync(join(testDir, '.midas')), true);
|
|
53
|
-
});
|
|
54
|
-
it('creates nested directory for journal', () => {
|
|
55
|
-
saveToJournal({
|
|
56
|
-
projectPath: testDir,
|
|
57
|
-
title: 'Test',
|
|
58
|
-
conversation: 'Content',
|
|
59
|
-
});
|
|
60
|
-
assert.strictEqual(existsSync(join(testDir, '.midas', 'journal')), true);
|
|
61
|
-
});
|
|
62
|
-
it('handles non-existent docs directory', () => {
|
|
63
|
-
const result = checkDocs({ projectPath: testDir });
|
|
64
|
-
assert.strictEqual(result.brainlift.exists, false);
|
|
65
|
-
assert.strictEqual(result.prd.exists, false);
|
|
66
|
-
assert.strictEqual(result.gameplan.exists, false);
|
|
67
|
-
assert.strictEqual(result.ready, false);
|
|
68
|
-
});
|
|
69
|
-
});
|
|
70
|
-
describe('Empty and Minimal Content', () => {
|
|
71
|
-
it('handles project with no files', () => {
|
|
72
|
-
const result = audit({ projectPath: testDir });
|
|
73
|
-
assert.strictEqual(result.overall < 30, true);
|
|
74
|
-
});
|
|
75
|
-
it('handles empty package.json', () => {
|
|
76
|
-
writeFileSync(join(testDir, 'package.json'), '{}');
|
|
77
|
-
const result = audit({ projectPath: testDir });
|
|
78
|
-
// Should not crash
|
|
79
|
-
assert.strictEqual(typeof result.overall, 'number');
|
|
80
|
-
});
|
|
81
|
-
it('handles empty docs files', () => {
|
|
82
|
-
mkdirSync(join(testDir, 'docs'), { recursive: true });
|
|
83
|
-
writeFileSync(join(testDir, 'docs', 'brainlift.md'), '');
|
|
84
|
-
const result = checkDocs({ projectPath: testDir });
|
|
85
|
-
assert.strictEqual(result.brainlift.exists, true);
|
|
86
|
-
assert.strictEqual(result.brainlift.complete, false);
|
|
87
|
-
});
|
|
88
|
-
it('handles journal with no entries', () => {
|
|
89
|
-
const entries = getJournalEntries({ projectPath: testDir });
|
|
90
|
-
assert.deepStrictEqual(entries, []);
|
|
91
|
-
});
|
|
92
|
-
});
|
|
93
|
-
describe('Invalid Input Handling', () => {
|
|
94
|
-
it('setPhaseManually handles invalid phase', () => {
|
|
95
|
-
const result = setPhaseManually({
|
|
96
|
-
projectPath: testDir,
|
|
97
|
-
phase: 'INVALID_PHASE' // Type cast to simulate bad input
|
|
98
|
-
});
|
|
99
|
-
// Should handle gracefully - will set to provided value
|
|
100
|
-
assert.strictEqual(result.success, true);
|
|
101
|
-
});
|
|
102
|
-
it('startProject with empty name still works', () => {
|
|
103
|
-
const result = startProject({
|
|
104
|
-
projectName: '',
|
|
105
|
-
projectPath: testDir
|
|
106
|
-
});
|
|
107
|
-
assert.strictEqual(result.success, true);
|
|
108
|
-
});
|
|
109
|
-
it('audit with malformed package.json dependencies', () => {
|
|
110
|
-
writeFileSync(join(testDir, 'package.json'), JSON.stringify({
|
|
111
|
-
dependencies: 'not an object',
|
|
112
|
-
}));
|
|
113
|
-
const result = audit({ projectPath: testDir });
|
|
114
|
-
// Should not crash
|
|
115
|
-
assert.strictEqual(typeof result.level, 'string');
|
|
116
|
-
});
|
|
117
|
-
});
|
|
118
|
-
describe('Concurrent Access Patterns', () => {
|
|
119
|
-
it('handles rapid consecutive saves', () => {
|
|
120
|
-
const state = getDefaultState();
|
|
121
|
-
// Rapid saves should not corrupt state
|
|
122
|
-
for (let i = 0; i < 10; i++) {
|
|
123
|
-
state.current = { phase: 'EAGLE_SIGHT', step: 'IDEA' };
|
|
124
|
-
saveState(testDir, state);
|
|
125
|
-
}
|
|
126
|
-
const loaded = loadState(testDir);
|
|
127
|
-
assert.strictEqual(loaded.current.phase, 'EAGLE_SIGHT');
|
|
128
|
-
});
|
|
129
|
-
it('handles rapid phase changes', () => {
|
|
130
|
-
setPhase(testDir, { phase: 'EAGLE_SIGHT', step: 'IDEA' });
|
|
131
|
-
setPhase(testDir, { phase: 'EAGLE_SIGHT', step: 'RESEARCH' });
|
|
132
|
-
setPhase(testDir, { phase: 'EAGLE_SIGHT', step: 'BRAINLIFT' });
|
|
133
|
-
const state = loadState(testDir);
|
|
134
|
-
assert.strictEqual(state.current.step, 'BRAINLIFT');
|
|
135
|
-
assert.strictEqual(state.history.length, 3);
|
|
136
|
-
});
|
|
137
|
-
it('handles multiple journal entries quickly', () => {
|
|
138
|
-
for (let i = 0; i < 5; i++) {
|
|
139
|
-
saveToJournal({
|
|
140
|
-
projectPath: testDir,
|
|
141
|
-
title: `Entry ${i}`,
|
|
142
|
-
conversation: `Content ${i}`,
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
const entries = getJournalEntries({ projectPath: testDir });
|
|
146
|
-
assert.strictEqual(entries.length, 5);
|
|
147
|
-
});
|
|
148
|
-
});
|
|
149
|
-
describe('Special Characters in Content', () => {
|
|
150
|
-
it('handles special characters in project name', () => {
|
|
151
|
-
const result = startProject({
|
|
152
|
-
projectName: 'my-project_v2.0 (beta)',
|
|
153
|
-
projectPath: testDir,
|
|
154
|
-
});
|
|
155
|
-
assert.strictEqual(result.success, true);
|
|
156
|
-
});
|
|
157
|
-
it('handles markdown in journal entries', () => {
|
|
158
|
-
const mdContent = '# Header\n```typescript\nconst x = 1;\n```\n- List item';
|
|
159
|
-
saveToJournal({
|
|
160
|
-
projectPath: testDir,
|
|
161
|
-
title: 'Markdown Test',
|
|
162
|
-
conversation: mdContent,
|
|
163
|
-
});
|
|
164
|
-
const entries = getJournalEntries({ projectPath: testDir });
|
|
165
|
-
assert.strictEqual(entries[0].conversation.includes('```typescript'), true);
|
|
166
|
-
});
|
|
167
|
-
it('handles unicode in journal entries', () => {
|
|
168
|
-
saveToJournal({
|
|
169
|
-
projectPath: testDir,
|
|
170
|
-
title: 'Unicode Test',
|
|
171
|
-
conversation: 'Tested with emojis and symbols',
|
|
172
|
-
});
|
|
173
|
-
const entries = getJournalEntries({ projectPath: testDir });
|
|
174
|
-
assert.strictEqual(entries.length, 1);
|
|
175
|
-
});
|
|
176
|
-
it('handles newlines in conversation content', () => {
|
|
177
|
-
const multiline = 'Line 1\nLine 2\n\nLine 4';
|
|
178
|
-
saveToJournal({
|
|
179
|
-
projectPath: testDir,
|
|
180
|
-
title: 'Multiline',
|
|
181
|
-
conversation: multiline,
|
|
182
|
-
});
|
|
183
|
-
const entries = getJournalEntries({ projectPath: testDir });
|
|
184
|
-
assert.strictEqual(entries[0].conversation.includes('\n'), true);
|
|
185
|
-
});
|
|
186
|
-
});
|
|
187
|
-
describe('Path Edge Cases', () => {
|
|
188
|
-
it('handles path with spaces', () => {
|
|
189
|
-
const spacePath = join(testDir, 'path with spaces');
|
|
190
|
-
mkdirSync(spacePath, { recursive: true });
|
|
191
|
-
const state = getDefaultState();
|
|
192
|
-
saveState(spacePath, state);
|
|
193
|
-
const loaded = loadState(spacePath);
|
|
194
|
-
assert.deepStrictEqual(loaded.current, { phase: 'IDLE' });
|
|
195
|
-
});
|
|
196
|
-
it('uses cwd when projectPath not provided', () => {
|
|
197
|
-
const result = getPhase({});
|
|
198
|
-
// Should not crash - uses process.cwd()
|
|
199
|
-
assert.strictEqual(typeof result.current.phase, 'string');
|
|
200
|
-
});
|
|
201
|
-
});
|
|
202
|
-
describe('Boundary Conditions', () => {
|
|
203
|
-
it('handles very long journal entry', () => {
|
|
204
|
-
const longContent = 'A'.repeat(100000);
|
|
205
|
-
const result = saveToJournal({
|
|
206
|
-
projectPath: testDir,
|
|
207
|
-
title: 'Long Entry',
|
|
208
|
-
conversation: longContent,
|
|
209
|
-
});
|
|
210
|
-
assert.strictEqual(result.success, true);
|
|
211
|
-
});
|
|
212
|
-
it('handles many tags with security limit', () => {
|
|
213
|
-
// Security: Tags are limited to 20 max (LIMITS.MAX_TAGS)
|
|
214
|
-
const manyTags = Array.from({ length: 50 }, (_, i) => `tag${i}`);
|
|
215
|
-
const result = saveToJournal({
|
|
216
|
-
projectPath: testDir,
|
|
217
|
-
title: 'Many Tags',
|
|
218
|
-
conversation: 'Content',
|
|
219
|
-
tags: manyTags,
|
|
220
|
-
});
|
|
221
|
-
// Only first 20 tags should be stored (security limit)
|
|
222
|
-
assert.strictEqual(result.entry.tags?.length, 20);
|
|
223
|
-
});
|
|
224
|
-
it('handles deep history', () => {
|
|
225
|
-
// Create many phase transitions
|
|
226
|
-
for (let i = 0; i < 100; i++) {
|
|
227
|
-
setPhase(testDir, { phase: 'EAGLE_SIGHT', step: 'IDEA' });
|
|
228
|
-
}
|
|
229
|
-
const state = loadState(testDir);
|
|
230
|
-
assert.strictEqual(state.history.length, 100);
|
|
231
|
-
});
|
|
232
|
-
});
|
|
233
|
-
});
|
|
234
|
-
//# sourceMappingURL=edge-cases.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"edge-cases.test.js","sourceRoot":"","sources":["../../src/tests/edge-cases.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"journal.test.d.ts","sourceRoot":"","sources":["../../src/tests/journal.test.ts"],"names":[],"mappings":""}
|